2 3 . ausgabi

Transcription

2 3 . ausgabi
CLUB
C
I
u
b
l
n
f
o
der
T
G
u
n
f
E
d
R
N
23.
KONTAKTADRESSE :
t
N
N
D
I
Y
~
E
~
K
O
H
T
E
K
H
E
N
D
E
R
-
AUSGABI:
CLUB ÄO / HARTMUT OBERMANN / SCHWAIBACHER STRAßE ß / 62Cfl HEIDENROD 1
POSTFACH 57
/
TEi..: 0612*. / ^ 1 3
'
l
i
l
H
B
L
T
S
Ü
C
H
n
I
Neues vom Vorstand ...............
1- 4
Hartmut Obermann
Geburtstagskinder ................
5
Jutta Obermann
Vorstellungen ....................
4
Michel, Werner
Club-Emblem ......................
7 - 8
Matthias, Gerald, KaJot
In eigener Sache .................
7
Redaktion
Termine / Messen .................
9
Redaktion
-
3 & o i ^ < l w c i / r - e .
Maus mit sieben Beinen ...........
49 - 70
Arnulf Sopp
Noch ein Druckerpatch .........
71 - 72
Manfred Held
Wieder mal: 40/80 Trackumschaltung .
72
Hartmut Obermann
Anmerkung zum CIub-80-ECB-Bus-Projekt
73
Gepufferter DMA- und IM2-fähiger ECB 74 - 84
Helmut Bernhardt
PD für M 4 /4P ..................
97
Klaus Hermann
CP/M Soft ....................... 98 - 99
Andreas Rychlik
Club-89
- Bücherei .............
100
Hartmut Obermann
______j a i w v L r e .____________________
Wer hat was — wer will was .......
85 - 87
l U y e .
--€ > e / t > g y t e y n
Impressum .......................
Schluß ..........................
_____ X o ^ ^ b w q / r - e . _______________
Kleines Textprogramm.............
10 - 14
TRS 80: Sortieren .................
12
TRS 80 erstellt Hardcopy .........
17
Zeichengenerator -für Nadeldrucker ..
18
Artikel aus MC
Wer sucht soll finden ............
19 - 21
Was TSCRIPS nicht kann ........... 20 - 23
Korrigieren und Steuern innerhalb VC 24 - 24
Klaus-Jürgen Mühlenbein
Kleine Hexen bevorzugt ........... 27 - 2?
Arnulf Sopp
Datenübertragung / M4P als Terminal
30 - 32
Klaus Hermann
Druckausgabe -für COBOL-Programme ...
32
Werner Förster
Vergleichstest ................... 33 - 48
Hartmut, Kurt, Gerald
CP/M intern - kurz und Kompakt ..... 49 - 43
Gerald Schröder
dBase II ......................... 45 - 48
Harald Mand
Seite:
und Autor:
Seite:
und Autor:
Seite:
und Autor:
1& ^ * J ^ i / T v lb e / iv r > e ^ L __________
S
Z80 Hochintegrations CPUs ........
88
Heinrich Betz
Testbericht KX 1883 .............. 89 - 90
Harald Mand
Reingefallen mit Rheintec .........
90
Paul-Jürgen Schmitz
Echte Programmierer meiden PASCAL .. 91 - 97
DATAMON
101
102
Redaktion
Sonderausgaben ....... ........... am INFO-Ende
KaJot, Hartmut
N
e
u
Das
e
s
v o m
erste
V o r s
t
a
n
d
Mitglied
F a l s c h g e t ippt, nicht das er s t e N e u m i t g l i e d im Jah r 19B8, sondern
das erste Mitglied des CLUB BO überhaupt,
welches keinen
TRS 80
oder auch nur einen kompatiblen sein eigen nennt! Matthias Homann
h e i ß t d e r K n a b e , w o h n h a f t i n S e e v e t a l (bei G e r a l d S c h r ö d e r g l e i c h
um die Ecke) und stolzer Besitzer eines modifizierten
N D R —Klein­
c o m p u t e r s m i t 6 4 1 8 0 — C P U , G D P 6 4 4 — H R G u n d .. . u n d .. . u n d ... A b e r
das
soll ja we d e r e i n e k o m p l e t t e V o r s t e l l u n g vo n M a t t h i a s ,
noch
e i n e W e r b e a k t i o n f ü r N D R — Kl e i n — C o m p u t e r w e r d e n .
Vielmehr
wollte
ich
e u e r A u g e n m e r k auf den U m s t a n d ric h t e n ,
daß man nicht unbe­
dingt
Besitzer eines TRS 80 oder kompatiblen sein muß,
um
Mit­
glied im C L U B 80 zu werden.
Ich h o f f e fü r M a t t h i a s (und a u c h für
eventuell noch folg e n d e N i c h t — TRS 80-Besitzer) daß unser Info und
die sonstigen Leistungen des CLUB 80 (Bücherei,
Programmsammlung
usw.) auch für ihn so interessant sind,
daß er s ein en Entschluß,
bei
uns
einzusteigen nicht bereut und noch lange
Zeit
zu
uns
gehört’
S t r i n g y — F l o p p y
Ebenfalls
e i n U n i k u m in u n s e r e n R e i h e n s t e l l t W e r n e r H e n t z
dar.
E r i s t z w a r B e s i t z e r e i n e s T R S 0 0 M o d e l 1,
arbeitet aber, meinen
Informationen
nach
als e i n z i g e r im C L U B 80,
nur
mit
StringyF l o p p y s . W e r n o c h s o l c h e D i n g e r i r g e n d w o r u m l i e g e n 4iat o d e r s o g a r
d a m i t a r b e i t e t , k a n n s i c h ja mal m i t W e r n e r in V e r b i n d u n g s e t z e n !
MS-DOS
Die
vor e i n iger Zeit recht h e f t i g e D i s k u s s i o n über ein e
MS-DOSE c k e im Info ist zwar e t w a s abgefl a u t , z u e i n e m E n d e ist sie aber
immer
noch nicht gekommen.
Nachdem ich jetzt selbst auch
einen
PC— kompatiblen mein Eigen nenne,
würde ich g e r n e wissen,
welche
Mitglieder des Clubs ebenfalls zweigleisig fahren. Wer also neben
d e m T R S 8 0 a u c h n o c h e i n e n a n d e r e n C o m p u t e r (ob P C ,
Amiga, Atari
oder sonst etwas) beackert,
m ö g e s i c h bei m i r m e l d e n .
Ein Anruf
oder
eine Postkarte genügen,
wer mich gleich mit einem längeren
B r i e f b e e h r e n m ö c h t e , k a n n d a s a u c h tun. E i n e A n t w o r t b e k o m m t ihr
auf a l l e F ä l 1e !
C l u b t r e f f e n
88
Nach mehreren erfolglosen Versuchen habe ich (stimmt nicht, Jutta
hat)
endlich
ein g e e i g n e t e s Hotel für
unser
jährliches
ClubTreffen
gefunden.
E s h a n d e l t s i c h u m d a s H o t e l I d s t e i n e r Hof in
Idstein.
U r s p r ü n g l i c h w o l l t e n w i r j a in d e n R a u m D a r m s t a d t / B e r g —
straße,
hatten
a b e r bei u n s e r e r S u c h e d o r t k e i n e n
Erfolg.
Auf
I d s t e i n f i e l d i e Wahl, weil e s d i r e k t an e i n e r N o r d — S ü d - A u t o b a h n verbindung
(A 3 / E 5 ) ,
e t w a 3 0 k m n ö r d l i c h v o n W i e s b a d e n u n d ca.
50 km n o r d w e s t l i c h von F r a n k f u r t liegt.
Damit ist wieder gewähr­
leistet,
daß
die Anfahrstrecke weder für die
Nordlichter
(ich
halte
mich
z u d i e s e r Zeit ü b r i g e n s in R e n d s b u r g / S c h l e s w i g
auf)
n o c h f ü r d i e S ü d l ä n d e r z u l a n g ist.
Idstein ist ein sehr sch ö n e s kle i n e s S t ä d t c h e n ,
dessen Altstadt­
kern gera d e neu renoviert wurde.
Auch die nähere Umgebung (Wies­
baden,
Limburg,
Diez,
F e l d b e r g usw.) b i e t e n e i n i g e s , so daß es
auch
für e ventuell mit a n r e i s e n d e " b e s s e r e H ä l f t e n ” nicht
lang­
weilig wer d e n dürfte.
Das Hotel liegt d i r e k t an der S t raße,
die
von
der
Autobahn
in d i e S t a d t f ü h r t u n d i st
damit
leicht
zu
finden.
Die Zimmer sind zwar teilweise recht spartanisch, jedoch
sehr orde n d l i c h und sauber eingerichtet.
Die Preise für
Doppel­
zimmer liegen zwischen 20,—
und 30,—
DM p r o P e r s o n incl.
Früh­
stück.
Die
Tagungsräume,
die
sehr gemütlich ausgestattet
und
recht
groß
sind,
werden uns wieder
kostenfrei
zur
Verfügung
g e s t e l 1t .
W o viel Licht ist,
findet sich leider immer wieder auch der eine
oder andere Schatten.
B e i m Idsteiner Hof ist es di e leider recht
b e s c h r ä n k t e U n t e r b r i n g u n g s k a p a z i t ä t v o n 18 B e t t e n ,
so daß e v e n ­
tuell einige Mitglieder andersweitig untergebracht werden müssen.
Aber
a u c h d a s ist k e i n B e i n b r u c h ,
da die sehr h i l f s b e r e i t e
und
f r e u n d l i c h e W i r t i n v e r s p r o c h e n hat, bei der S u c h e n a c h Q u a r t i e r e n
in H o t e l s in d er N a h e t a t k r ä f t i g e U n t e r s t ü t z u n g z u
leisten.
Da
ich nicht weiß,
w i e l a n g e e s bei d i e s e m I n f o v o m R e d a k t i o n s ­
termin
bis
zur Auslieferung dauert,
werde
ich
die
Einladung
gesondert
verschicken.
Eigentlich müßte sie euch schon erreicht
haben!?
W enn d i e s n i c h t der Fall ist (grande Malheur) und ihr am
12.
bis
15.
Mai
am Clubtreffen teilnehmen
wollt,
ruft
mich
schleunigst
an,
damit
ich
euch noch eine
Einladung
zukommen
1assen k a n n !
Eine
Tagesordnung für d a s Clubtreffen besteht,
wie jedes
Jahr,
noch
nicht.
T r o t z d e m b i n ich sicher,
daß auch
dieses
Treffen
w i e d e r ein voller E r f o l g wird. Der Rahm e n w ird u n g e f ä h r wie folgt
a u s s e h e n : Do. 1 2 . 0 5 - A n r e i s e
der
Computersüchtigen,
die
das
seltene
Ereignis
voll
auskosten
wollen.
Zeit
zum Meinungs— , Erfahrungs- und
Pro—
grammaustauch
Fr. 1 3 . 0 5 — A n r e i s e
für
die
nicht
Abergläubischen,
Gelegenheitshacker
und diejenigen,
di e es
nicht
geschafft
haben,
für
diesen
Tag
U r l a u b (beim Chef o der der Frau) zu
bekom­
men.
Nach
dem Mittagessen eventuell erste
Vorträge
(wenn
sich
jemand
findet,
der
etwas wissenswertes und interessantes
vor­
z u t r a g e n hat) u nd n o c h m eh r Zeit z u m H a c k e n
Sa. 1 4 . 0 5 - V o r - u n d
Nachmittags weitere Vorträge
und
viel
Zeit zum M e i n u n g s — und E r f a h r u n g s a u s ­
tausch.
Nach
d e m F ü n f u h r t e e soll es
dann
etwas
offizieller
werden,
sprich
die
Jahreshauptversammlung steigt.
So. 1 5 . 0 5 - D a
auch das schönste Clubtreffen
mal
ein
E n d e haben muß,
wird d i e s wohl der Tag des
Abschiednehmens
werden.
Die einen
werden
früher, die anderen später das Weite suchen
und
wie
in
jedem Jahr
bleibt
es
jedem
selbst
überlassen,
w a n n er den
Tagungort
v e r 1a ß t .
Damit
dieser Rahmen sich mit Leben füllt,
sind
natürlich
alle
Teilnehmer aufgerufen,
sich möglichst akti v am Treffen zu be t e i ­
ligen.
Gefragt
sind vor allem Vorträge über die v e r s c h i edensten
A s p e k t e d e r H a r d - u n d S o f t w a r e (z.B.
wird sich Rüdiger
Sörensen
über
Turbo-Pascal
auslassen).
Aber auch der
Gedankenaustausch
über d i e Z ukunft des C L U B 80 sollte nicht zu kurz kommen.
Themen
wie
*’
M S - D 0 S - E c k e j a o d e r n e i n “,
"V e r b e s s e r u n g d e s
Infos
durch
ansprechendere
Gestaltung"
oder ’
’
Ö f f n u n g de s C L U B 80 für
nicht
T R S 8 0 - k o m p a t i b l e C o m p u t e r " s t e h e n bei der J a h r e s h a u p t v e r s a m m l u n g
mit
Sicherheit
auf der T agesordnung.
Auf a l l e F ä l l e
gilt
das
Mottos
je
v i e l f ä l 1t i g e r d as Angebot,
desto
Interessanter
das
Treffen!
Damit
will ich für d i e smal Schluß machen.
Ich f r e u e mi c h
jetzt
schon,
euch
m ö g l i c h s t v o l l z ä h l i g in I d s t e i n b e g r ü ß e n z u
dürfen
und
wünsche
e uch in d i e s e m Sinne alles G u t e und
viel
Spaß
am
C o m p u t e r h o b b y , euer
HEFT
£3
Februar
1988
02
-
03
v \ \ _ i ‘^ ' “'Gelsen-'
kchn,
Hotel - Restaurant- Bierstube
ID STEIN ER H O F
Inh. Maria Keil
Wiesbadener Straße 43
6270 IDSTEIN/TAUNUS
Telefon 06126/3227
Wir empfehlen uns fü r Tagungen, Geschäfts- und Familienfeiern
Der
Idsteiner
Hof
ist
- Autobahn
A3
Abfahrt
- Richtung
Innenstadt
sehr
Idstein
nach
- Parkplätze
Gute
Fahrt
der
gibt
und
zu
finden:
abfahren
-fahren
- d i r e k t an d er S t r a ß e ,
T e x a c o - T a n k s t e l le
- direkt
leicht
die
in
die
Stadt
Tankstelle
liegt
es
Rückseite
auf
sicheres
Hartmut
der
Ankommen
der
-führt,
Idsteiner
des
kommt
links
ei n e
Ho-f
Gebäudes!
wünscht
Obermann
\m»A\ /
-
-V i —
lllm rtll’ ■
Hallo Clubfreunde.
als neues Mitglied im Club möchte ich
mich kurz vorstellen.
G
e
b
u
r
t
s
t
a
g
s k i
Ich heiße Werner Hentz. geb. 3.11.42,
wohnhaft in Maintal - einer Stadt zwischen
Frankfurt und Hanau. Beruflich bin ich in
Sachen EDV schon seit gut 20 Jahren tätig
und hoffe von Euch noch einiges dazulernen
zu können. Es war reiner Zufall, daß über
eine CHIP-Anzeige mich ein Frankfurter Arzt
auf den CLUB 80 aufmerksam gemacht hatte.
n d e r ~
tfallo F r e u n d e ,
heute
ist
es
wieder soweit.
Es weilen wieder
viele
Geb u r t s t a g s " k i n d e r " u n t e r uns.
Im l e t z t e n I n f o k a m e n z w a r e i n i g e G e b u r t s t a g s w ü n s c h e
reich­
lich spät, aber ihr könnt versichert sein, sie waren g e n a u s o
h e r r l i c h , w i e es d i e s e sind.
Meine TRS-80/Model1 I Anlage besitze
ich seit Sommer 1979. die nach und nach in
Stufen erweitert bzw. ausgebaut wurde. Als
absolute Besonderheit werden meine Program­
me über STRINGY FLOPPY - einer Alternative
zwischen Kassette und Diskette - geladen
und gespeichert. Das Modell I arbeitet mit
48 kRAM, erhöhter Taktfrequenz und Klein­
schreibung (incl. Zeichengenerator mit Un­
terlängen) . Seit Herbst letzten Jahres kam
der Thermo-Transferdrucker TPX-80 von C.
ITOH dazu, der über das TANDY-Bufferkabel
26-1411 am Bus angeschlossen ist.
Da
sich b i s jetzt n o c h kein im letzten Info b e i t r a g
verges­
s e n e s M i t g l i e d bei mir g e m e l d e t hat,
n e h m e ich an, d a ß s i c h
n i e m a n d ü b e r g a n g e n -fühlteT r o t z d e m m ö c h t e i c h all d i e j e n i ­
gen,
von denen ich kein Geburtstagsdatum habe,
bitten, mir
dieses mitzuteilen.
So,
nun
Im Mo n a t
a m 2.
a m 4.
a m 9.
am
am
17.
26.
endlich
geht
es
los.
Februar hatten Geburtstags
: Spieß Peter
s E m m r i c h H e l m u t (der u n s e r e n
k u r z e m v e r l a s s e n hat)
: Schmitz Paul-Jürgen und
Rensch Richard
s Schröder Gerald
: Wucherer Jürgen
Im M o n a t
a m 30.
März gibt es nur einen
: Sörensen Rüdiger
Im M o n a t
a m 7.
April s i n d e s wied e r e i n i g e mehr:
: T r a p p H a r a l d und
Schmid Alexander
: Loose Gerhard
: Pi 11 e r W a l t e r
: Böckling Ulrich
a m 26.
a m 28.
a m 30.
(reichlich
Club
leider
vor
Von meinem Clubbeitritt im November
letzten Jahres erhoffe ich mir jn erster
Linie gute Kontakte zu den übriggebliebenen
Z80-Freaks.
schwacher
Wie
ihr
seht,
./[/lCc A-VUl-T
<Kst'
Liebe Clubfreunde,
gab
und
gibt
es
Im
Namen d e s V o r s t a n d s w ü n s c h e ich den G e b u r t s t a g s " k i n d e r n "
u n d a l l e n a n d e r e n , d i e e t w a s zu f e i e r n h a b e n , viel G l ü c k u n d
hoffe,
daß
w i r u n s z u m C l u b t r e f f e n in I d s t e i n
W ie d e r s e h e n
(12.05.-15.05.).
da ich ni c h t sehr stark in deut s c h e r
mich hier nur kurz vorstellen.
Eigentlich
bin
1935 geboren.
ich
ein Franzose
S p r a c h e bin,
aus Bordeaux
möchte
<6 i r o n d e )
ich
und
Vor ungefähr 6 Jahren habe ich mit ei n e m Model 1 mit K a s s e t ­
ten
begonnen.
Dann
h a b e ich mich an den TRS 80
Club
von
Yverdon
angeschlossen.
Um
mich weiterzubilden,
habe
ich
viele Bücher gekauft, um Software in Basic besser zu verste­
hen. D a f ü r h a b e ich in H a r d w a r e k e i n e E r f a hrung.
Um CP/M kennenzulernen, habe ich mir einen Commodore 128 und
e i n G e n i e III g e k a u f t ,
sodaß ich die zahlreichen Unterlagen
über ZBO—A s s e m b l e r und Pascal a n w e n d e n kann.
Soweit meine Vorstellung.
Auf
Eure
>
Mit freundlichen Grüßen
Weiterhin
g r a t u l i e r e n wir zwei ’
frischgebackenen Vätern
und
den
dazugeh ö r i g e n Müttern und wünschen beiden wenig
durch­
w a c h t e N ä c h t e (wegen des Babys). Klaus H e r m a n n (Monat D e z e m ­
ber
'87)
und
M a n f r e d H e l d ( J a n u a r '8 8 ) h a b e n
trotz
der
v i e l e n C o m p u t e r e i n och Zeit für a n d e r e D i n g e
gefunden.
Sie
w u r d e n b e i d e V ä t e r e i n e r T o c h t e r . J u h u u !!!
So,
das
w a r ' s mal wieder.
w i e d e r viel zu feiern.
Auf gute Zusammenarbeit
Werner Hentz
Monat):
Gute
Clubmaus
Michel
Zusammenarbeit
mit
euch freue
ich mich
HEFT
£13
_ ,
Februar
1983
06
JE>e-fcr. •■ ( D I la. b S O -
07,
*)
A
T K ~ ß j2
2 m
£ v ^ ß «c A
/ f
A O L ^ t^
.
.
x
&>
/
V
< o c&
3
J)'<
b*V<K_
A^ß^lt^tlre^
[c*y*>fcöfr^ Q ]
08
l\'*ltS -h Veckis S,'v\d klar-
’f '^ A A jz ^ jf
2-) S)ev Mfitc.ltc.il
£ c z ^ k -
a )
c / o ^ r - y ^ j2 ^
d tn
2 .
•r^y^boh'jif/i :
sou
^©vv.
& S T < ^ r v ^ ix y v { £ ^
cj
3-
tm ile w i-
cke
B - <fD
Cl<\\p
o loti* iaw(/ ny\te*—
2 \ckka.clc-
» ta i^ w c ^ /o a .^ i^ 'i/ö .^ e /j
^
l~> i t . i . / t
4 < 9 &
t
C U ic A ^ n X
'*sü6t ctu/>4j2-^a~^ /*** ^
o ^ c X 'vi.rf.cx^ £ o w - ^ . ( b Q u ^
ß s -r 'c z ^ c o ■& ( *
CD
CJ □
□
D
D
P
O
In e ig e n e r S ic h e :
W ir haben k e in ? D ru ck e re i fü r das CJMbin+o m ehr !1
P e te r Spieß h ö rt aus b e ru flic h e n Gründen a u f.
Da e r s ic h nun nur noch m it 1E 1-P C 's b e s c h ä ftig t,
i s t e r g le ic h z e it ig auch aus unserem Club a u s g e tre te n .
Aus diesem Grunde suchen w ir einen neuer. U e r v ie lfä l tic j; fr
f ü r unsere kommenden C lu b - In fo 's . V ie lle ic h t h at e in e r v o n
Euch
e in e gut? Adresse b e i der der ijlu b 88 w e ite r h in
k o s te n g ü n s tig
das C lu b -In fo H e rs te lle n lassen kann?
Meldungen dazu b it t e an d ie C lu b - 80-R e d a k tio n .
D
C
j
keranwelsungen in diesem Bereich an­
gepaßt werden.
Frank Sandlos
Kleines
Textprogramm
Für T R S - 8 0
Hier ein kleines Text-Verarbeitungsprogramm für das TRS-80Modell 1. Mit wenig Aufwand kann man damit ganz schön Texte
erstellen. Vielleicht auch als Beispiel geeignet, wie Besitzer ande­
rer Computermodelle sich so ein Text-System anlegen könnten.
Umlaute und Groß-Kleinschreibung sind möglich.
Das Programmllsting (Bild 1 ) enthält in
den Zeilen 51000...51020 eine BasicRoutine, die ein Maschinenprogramm ln
den Speicher ab 32603 (dez.) schreibt
(Speicher: 16 KByte), das Großbuchsta­
ben mit einem Grafik-Block zur Unter­
scheidung von den Kleinbuchstaben
versieht. Ferner sind die Kleinbuchsta­
ben direkt wie bei einer normalen
Schreibm aschine erreichbar, Großbuch*
staben nur mit ..Shift". Besitzer eines
T R S-80 mit 16-KByte-Spelcher und ein­
gebauter Kleinschrift (und möglicher­
w eise Umlauten) lassen die Zeilen
5 .51000...51020 weg und benutzen Zelle
104 aus dem Listing in Bild 4. Ist ein
Umlautsatz ebenfalls schon eingebaut,
so kann auch die Sondertastenbelegung
in Zeile 132 wegfallen. Man sollte dann
auch die in den Zeilen 355...357 unter­
strichenen Druckercodes experimentell
überprüfen, die eventuell modifiziert
werden müssen. Bei Benutzung der
Kleinschreibroutine muß „MEM SIZE?"
m it 32683 beantwortet werden. Selbst­
verständlich kann dieses Programm
auch mit einem anderen Druckermodell
als dem MX-BO von Epson benutzt wer*
den, es müssen dann die Druckercodes
in den Zeilen 132,355...357 geändert
werden. Ist bei der Eingabe des Program­
m es das Programmzeilenende erreicht,
d. h. der Computer nimmt keine Zeichen
m ehr für die betreffende Zeile an, ob­
w ohl im Listing noch Zeichen stehen, so
gehe man in den Edit-Modus. Nur im
Edit-Modus des TRS-60 läßt sich die im
Handbuch angegebene Zeilen!fnge von
max. 255 Zeichen erreichen!
Dieses Programm addiert bei der Drukkerausgabe zum ASCII-Wert des betreff
fenden Zeichens 32 hinzu, wenn er Im
Bereich von 64...90 lieg t Liegt dieser
Wert zwischen 96 und 122, so wird 32
subtrahiert. Deshalb müssen die Druk-
Die Bedienung des Program m s
Nach Eingabe und Start des Programms
wählt man die Hauptzeilenlänge, entwe­
der 122 oder 72 Zeichen/Zelle. Diese
Zellenlänge wird dann beim Programm*
ablauf und bei der Druckerausgabe beibehalten. Bei 122 Zeichen/Zeile wird der
Drucker auf die Schriftart „Sl“ program­
miert, ansonsten wird die Normalgröße
beibehalten. Der T ext wird m it einem
genügend breiten Abstand vom linken
PapierTand ausgedruckt (zum Abheften).
Um eine optimale Ausnutzung des DINA4-Blattes zu erreichen, muß die ober«
Kante des Jeweiligen Blattes mit dem
anliegenden RAnd der klappbaren Ska­
leneinteilung des M X-80 bündig ab­
schließen. Nach der W ahl der Hauptzeilenlänge wählt man entweder die
Schriftart der nächsten einzugebenden
Z elle oder man unterbricht den Eingabe­
modul durch Drücken der Taste „Pfeil
untenM. Folgende Eingaben zur Schrift* auswahl sind möglich:
.ENTER*
JE'
4 )’
&
- Normalschrlft (N)
- „Emphaslzed“-Schrift (E)
- „Double Prlnted“Schrift (D)
- „Shift O u r-S ch rift (S), da­
bei autom. Begrenzung der
Zeilenlänge auf 36 Zeichen.
Nun erscheint eine Skala, unter der ein
Leuchtbalken die Länge der Textzelle
markiert. Dahinter befindet sich die Zel­
lennummer sowie nach einem GrafikBlock eine Abkürzung der Schriftart.
Jetzt kann man den Text eingeben, mit
Benutzung der in Bild 2 beschriebenen
Sondertasten. W ill man die Eingabe be­
enden und die Textzeile speichern, ein­
fach „Enter“ drücken. Drückt man „En*
ter” ohne Zeicheneingabe, so wird die
Zeile beim Ausdrucken des Textes Igno­
riert, es entsteht keine Leerzeile. Leer­
Zum automatischen Sichten: Nach Be­
endigung dieses Vorgangs entweder
,»Enter" zum Verlassen dieses Pro­
grammteiles oder „A“ zur erneuten
Durchsicht drücken.
Zum manuellen Sichten: „Enter“ be­
wirkt Verlassen dieses Programmteiles,
„KMbewirkt anschließende Korrektur
der zuletzt angezeigten Zeile.
Einfügen einer Z eile, „P fe il rechts*1
Nach Tastendruck der „Pfeil rechtsM*Ta*
ste muß die Zeilennummer der neu ein­
zufügenden Zeile eingegeben werden.
Diese muß genau in der Mitte zwischen
den Nummern zweier schon eingegebe­
ner Zeilen liegen, also z. B. 1.5 oder 2.5,
wenn die Zeilen 1 und 2 bzw. 2 und 3
schon eingegeben sind (möglich ist auch
eine Oberschreibung einer schon einge*
gebenen Zeile). Danach entweder „N'\
„E*\ „S“ oder J 3 “ zur Schrifttypauswahl
drücken (Beantwortung der Frage
„Typ?“). Nach Eingabe der Z e lle ,»Enter“
drücken, wie im Eingabemodus. Bitte
beachten: Die vorgesehene Zeilenzahl
pro DIN-A4-Seite beträgt 67 Zeilen. Des­
halb nicht mehr als zwei Zeilen zusätz­
lich einfügen, wenn die volle Zeilenzahl
in Anspruch genommen wird.
Korrektur einer Z eile, ,JCM
Hier gibt man entweder die Zeilennum­
mer an oder drückt „Enter“, wodurch
die erste Zelle des Textes korrigiert wer­
den kann. Auf dem Bildschirm wird
nicht nur die Korrekturzeile, sondern
zur besseren Obersicht auch die vorher*
zeilen werden erst aufgedruckt, wenn
man vor „Enter“ mindestens ein Leerzei­
chen eingibt. Drückt man, anstatt die
Schriftart der Folgezeile auszuwählen,
die Taste „Pfeil unten“, so erscheint eine
Auswahltafel auf dem Monitor. Diese er­
klärt sich weitgehend von selbst, einige
Punkte sollen jedoch näher erläutert
werden.
Sichten der Textzeilen,
„P fe il unten“
Nach Drücken dieser Taste fragt das Pro­
gramm nach der Anfangszeilennummer,
ab der der Text gesichtet werden soll.
„A“ + „Enter" bewirkt automatischen
Durchlauf des ganzen Textes.
„Enter" bewirkt Anzeige der ersten Zel­
le. Danach manuelles Weiterschalten
durch „Pfeil unten".
„xx" + „Enter“, die Zeile Nr. xx wird
angezeigt, manuelles Weiterschalten
durch „Pfeil unten“.
HEFT
£3
Februar
1988
10
11
gehende und nachfolgende Zeile ange­
zeigt. Die besonderen Tastenfunktionen
bei der Korrektur einer Zeile zeigt Bild 3.
1000 P»VARPTR(A$(1).-Q
*VARPTR(AS(2))
1010 P l-P E E K (P ):P 2 -P E E K (P + 1 ):
P*l»PFFK7P4-2l
A u fb a u d e s P ro g ra m m s
1020 Q l-PEEK (Q ):Q 2=P EEK (Q +1):
Q 3«PEEK (Q +2)
1030 P O K E Q ,P l:P O K E Q + l‘P2:POKE
Q +2.P 3
1040 POKE P,Ql:POKE P+l,Q 2J>O K E
P+2.Q 3
Zeilen:
10...90
T itel, Eingabe der Hauptzellenlänge
09
Beginn der Hauptschleife
103
Eingabe der Schriftart
131...143 Eingabemodus
150...155 Auswahltafel
160...169 Sich ten der Textzeilen
175
Einfügen einer Textzelle
190...230 Korrektur
300...305 Speichern des T ex tei auf
Kassette
310...315 Lesen des Textes von Kas­
sette
350...359 T ext Ausdruck
ab 51000 Basic-Loader
T IP: Zur besseren Orientierung kann
man die Umlaute m it einem Prägegerat
in Spezialfolie stanzen und vor die ent­
sprechenden Tastenkappen kleben.
B ild 1 zeigt, w ie gesagt, das komplette
Programm für den TRS-80, Modell 1,
16 KByte, ohne Modifikationen. In
Bild 4 ist das Programm ln einer Version
für den T R S-80 mit 48-KByte-Speicher
sowie Klelnschriftmodifikatlon und
eventuell deutschem Zeichensatz zu se­
hen (verwendet wird der Kleinschrifttreiberaus m c 12/1982). In dieser Ver­
sion sind einige Bedienungstasten geän­
dert worden, näheres klärt sich beim
Programmlauf von selbst. Besonders viel
Arger bereitete der Aufbau von Zeichenkettendateien in der Form PR IN T+-1,
AS JB S ,... Die so aufgebaute Datei wird
vom TR S-80 nur unvollständig eingele­
sen. A lle Versuche, diesen Fehler durch
geschickte Programmierung zu umge-
0
Ü
Cursor 5 Zeichen vor
C irso f 1 Zeichen zurück
Cursor 5 Zeichen zurück
Bild 2. Die Sondertasten des Eingabe­
modus
*
TRS-80: Sortieren
ln mc 1982, Heft 2, wurde eine Verbesse­
rung der Stringsortierung für Verfahren
wie z. B. Quicksort vorgestellt. Die Me­
thode der Sortierung der Ordnungsnum­
mer anstelle der eigentlichen Strings
verbraucht aber zusätzlichen Speicher­
platz, der dann an Aufnahmekapazität
verlorengeht.
jedem String eine Ordnungsnummer zu­
zuweisen (ein Integer-Array belegt
2 n + m Speicherplätze, wobei n die Anzahl der Strings bzw. Ordnungsnum­
mern ist und m die Anzahl der Bytes der
internen Arraybeschreibung), ver­
braucht also bei großen Text-Arrays zu­
sätzlich 2 x n Bytes. Nun ist es aber beim
TR S-80 oder beim Video-Genie so, daß
sich Vertauschung von String-Inhalten
ohne eigentliche Basic-Zuweisung aus­
führen läßt.
W ie schon in mc geschildert, wird bei
einer Zuweisung an eine String-Variable
freier Speicherplatz beschrieben und der
alte Platz im Textspeicher einfach ver­
gessen. Das kann dann bis zur völligen
Belegung des Textspeichers und dem
damit verbundenen Aufruf der GarbageKollektion führen.
Ist eine Textvariable eingerichtet, das ist
bei Komponenten eines Arrays immer
der Fall, so besteht diese Variable zu­
nächst nur aus einem Deskriptor, der die
Länge des Strings und die Startadresse
enthält. Wird nun der Variablen ein
(Text-)W ert zugewiesen, so wird dieser
Wert im freien Textspeicher abgelegt
und der Anfangszeiger des Deskriptors
auf die entsprechende Stelle gesetzt. Des
weiteren wird der Längenzähler auf den
neuen Wert (Länge des zugewiesenen
Wertes) gesetzt. Bei einer erneuten Zu­
weisung wird der alte Deskriptor auf ei­
nen neueingerichteten String im Text­
speicher gesetzt usw. Die Belegung
freien Speicherplatzes läßt sich vermel­
den, wenn man nicht einfach eine Zu­
weisung wie etwa
C $-A S(1):A ${1)«A $(2):A $(2)«C $
vomimmt, sondern gleich die entspre­
chenden Deskriptoren verändert. Fol­
gende Fragen tauchen dabei auf:
1. Wo findet man den Deskriptor?
2. An welcher Stelle steht der Längen­
zähler oder der Zeiger?
Beim TRS-80 liefert die Funktion
VARPTR («Variable»), „Variablen-Pointer", die Stelle, an der im Speicher der
Wert einer Variablen zu finden ist. Bei
Textvariablen wird die Adresse des De­
skriptors geliefert. Sei AS eine Textva­
riable, so liefert
P**VARPTR(AS)
die Adresse des Deskriptors vom mo­
mentanen Stand von AS. Die Speicher­
stelle (P) enthält nun die Länge des
Strings. ( P + l) (L S B ), (P + 2 ) (MSB) ent­
halten den Zeiger auf den Textspeicher.
Diese drei Parameter braucht man nur
gegen andere auszutauschen, um der
Textvariable AS einen neuen Wert zuzu­
weisen, ohne dabei neuen Textspeicher­
platz zu belegen. Folgendes Programm
bietet sich daher zum „Swapping* (Aus­
tausch) von Texten an:
100 DIM AS(200)
200 A $ = „ T e x tr
210 A $»„T ext2"
Nach Durchlauf der Zellen 1000 bis
1040 sind die Inhalte der Variablen
A $(l) und AS(2) ausgetauscht.
Bei anderen Systemen erfolgt die Ver­
waltung von Strings ähnlich.
Auf eine weitere Möglichkeit der Aus­
nutzung der Deskriptoren sei an dieser
Stelle noch hingewiesen.
Will man etwa direkt auf den VideoSpeicher des TRS-80 zugreifen, so kann
dies „peek by peek" (Byte für Byte) oder
abschnittweise erfolgen. Die erstere Me­
thode, bei der jedes Byte einzeln „gepeekt" wird und in die entsprechenden
Buchstaben umgewandelt werden muß,
verbraucht viel Zeit und auch wieder
viel Textspeicherplatz, da jeder Buchsta­
be im Textspeicher (unnützerweise) ab­
gelegt wird.
Folgendes Programmstück bildet den In­
halt des Video-RAM auf einem Text-Array ZS(16) ab, wobei nach dieser Abbil­
dung eine Zuweisung an andere Textva­
riable vom m ehm en ist, da beim Schrei­
ben auf den Bildschirm unmittelbar in
die Variableninhalte geschrieben wird.
Man kann natürlich auch zu Anfang des
Programms diese Variablen entspre­
chend präparieren, und dann deren In­
halte abfragen.
100 DIM Z$(16)
1000 P«15360:FO R N « 0 TO 15
1010 Q«VARPTR(Z$(N+1)):
.
P l- N e 6 4 + P
1020 Q 1«IN T (P1/256):Q 2-P 1-256*Q 1
1030 PO KEQ ,64:POKEQ+l,Q2:POKE
Q+2.Q 1
1040 NEXT N
Alle Variablen sollten bereits eingerich­
tet sein, um eine Verschiebung ihrer
Adressen beim Einrichten neuer Varia­
blen zu vermelden.
Nach Abarbeitung des Programmstücks
1000...1040 zeigen die Pointer der Varia­
blen ZS(1)...ZS(16) genau auf das VideoRAM. Man braucht also nicht mehr byteweise abzufragen, sondern nur noch zei­
lenweise.
Heinrich Seebauer
3 G0SUB51020
10 CLS*CLEAR9400iDIMA*(133),Z (40)»DEF1NTA-YiPRINT186,"T E X T 8 Y S T E M"*PRINT
STRING*<64,42)*F0RZ-0T0200*NEXT*G*-STRING*(4,176U H*-CHR* (143)II*-CHR*(140)lK*-C
HR*(191)iM*-CHR*<131)
20 N*-H--- "♦««+"----1— — "+H*+M----2--- "+H*+"----3-- ---------- 4--- "+H*+"---5--- ••♦H*+M----6-- 4"*P*-"— r 8CHRXFT8TAERKE (Nj Dj Ej S ) ----- ' H+CHR* (92) ♦« *8C
HREIBMODUS BEENDEN -- "
23 ST*-" >>>>>>>> START <<<<<<<<"»KA*-"** KASSETTENRECORDER BEREIT "
30 PRINT1211, G*" "ßl" "G*" "CHR*(176)" "Gl" "G*CHR*<176)»273,H*I*I*CHR*<188>" "K
*"
"K*I* I*CHR* (183) M "K*" "K*I*I*H*M
"K*»339pM*M*f1*M*" "M*M*M*M*" "Mt" "M*
" "M*" "MI"
*’M*
60 F0RZ-0T0630*NEXT*PRINT»143,STRING*(34,176)1207,K*1240,K*I271,K*»304,K*»333,K*
»368,KM399,STRING*(34,131)
70 FORZ-OT0500*NEXTlPRINT»194,"EIN"»260,"PROGRAMM"»331,"VON“»309,"F R A N K"»37i
,"3 A N D L 0 S"iF0RZ-0T0400» NEXT» PRINTiPRINT"HAUPTZEILENLAENGEi"»PRINT»PRINT"
72 ZEICHEN/ZEILE ---------- N(ORMAL)"
80 PRINT"
122 ZEICHEN/ZEILE---------- E (NG) "»PRINT* PfclNT* PRINT**
BIT
TE ANFANGSBUCHSTABEN DRUECKEN !"
90 W*-INKEY*»IFW*-"",90ELSEIFW*-"N",ZH-72ELäEIFW*-"E",ZH-122ELSE90
99 F0RZ-0T0132STEP2
100 0*-STR*(-<Z/2-H) )»0*-8TRING*(4-LEN(0*> ,43) «-O*«-"-" *fr>-832» ZL-ZH»CLS»PRINTI768,
P*|iE*»""
103 R*-INKEY*iIFR*-"M,103ELSEIFASC(R*)»13,R*-"N"iG0T0104ELBEIFR*-"D",104EL3EIFR*
-"E",104ELSEIFR*-"S",ZL-36ELSEIFASC(R*)-10,150ELSE103
/
104 CLSiZZ-0*F0RZ1-Z-1T0Z-24STEP-1»IFZKO,110ELSEZ2-LEN(A*(Z1)>»IFZ2>0,Z3-INT(Z2
/64)♦ 1»ZZ-ZZ+Z3+1»IFZZM2,110ELSEPRINT»(768-ZZt64),A*(ZI)|tNEXTZ1EL8ENEXTZ1
110 PRINT»(P-64),N*E*STRING*(ZL-LEN(E*>,143)0*R*j
131 A*-INKEY*iIFA*»"",131ELSEA-ASC<A*)»IFA-91,E*-E*+CHR*(123)IG0T0133ELSEIF64<AA
NDA<123,E*-E*+A* tPRINT»P,E*|1IFLEN <E«)<ZL,131ELSEE-LEN(E*)»G0T0140ELSEE-LEN(E*)•
IFA-8ANDE>0,E*-LEFT*<E*,E-t>»G0T0133ELSEIFA-24ANDE>4,E*-LEFT* (E*, E**5)»G0T0133
132 JFA-32,E*-E*+" "»G0T0133ELSEIFA-31,E*-E*+CHR*(126)*G0T0133EL8EIFA-39,E*-E*+C
HR*(92)iG0T0i33ELSEIFA<64ANDA>32,E*-E*+A«iG0T0133EL6EIFA-27,E*-E*^CHR*(91)ELSEIF
A-64,E*-E*+CHR*(93>ELSEIFA-9ANDE+3<ZL,E*-E*+"
"ELSE IFA-13ANDV-0,143EL8E140
133 E-LEN<E*)»PRINT»P,E*STRING*<ZL-E,143)0*R*|iIFE<ZL,131
140 IF<V-0ANDE>-ZL)0R(V-2ANDE->ZL),141ELSEIFV-10RV-2,A*(ZA)-E*+0*+R*»G0T0203ELSE
131
141 W*-INKEY*iIFW*-"",141ELSEW-ASC<W*)iIFW-B,E*-LEFT*(E*,E-l)»G0T0133ELSEIFW-24,
E*-LEFT*(E*,E-3) »GOTO133ELSEIFW-13ANDV-0,143ELSEIFW-13ANDV-2,A*(ZA)-E*+0*+R*»GOT
0205ELSE141
143 A*(Z)-E*+0*+R*»NEXTZ»GOTO130
130 PRINTCHR*(13)iCLS»PRINT»64,“KORREKTUR»
’"CHR*(92)M XX' - SICHTEN DER
ZEILEN AB XX"»146,.. CHR*(94)M XX» - EINFUEGEN EINER ZEILEH»210,"’K XX» - KOR
REKTUR ZEILE XX"»3B4,"TEXT AUSDRUCKEN»
•A»"»376,"AUF CASSETTE SPEICHER
Ni
’C'"
131 PRINT»768,"VON CASSETTE LESEN*
*L’"»913,"'ENTER* - SCHREIBMODUS"|»98
0,"E
- PROGRAMMENDE"!
133 W*-INKEY*»1FW*-"M,133ELSEW-ASC(W*)»IFW-10,160ELSEIFW-9,173ELBEIFW-l3,CLS*©OT
0 100ELSEIFW*-"K",190EL6EIFW*-"A",350ELSEIFW*-"C",300ELSEIFW*-"L",310ELSEIFW*-"E"
,400ELSE133
160 ZA*-"0"tPRINT»114,"NR*" } »INPUTZA*»IFZA*-"A",16BEL6EZA-VAL(ZA*>*2-21IFZA>Z,16
OELSEIFZA— 2, ZA-Oi CLSELSECLS
Bild 1. Das Programmlisting für die 16-KByte-Version mit Kassettenspeicherung
(MEM SIZE? 32683)
161 PRINTA*(ZA)
163 W*-INKEY*iIFW*-M",163ELSEIFW*-"K",191ELSEW-ASC(W*)»IFW-13,130ELSEIFW-10, ZA-Z
A+l»IFZA-Z,ZA-O» G0T0161ELSEIFA*<Z A ) ,163ELSEPRINTA*(ZA)»GOTO163ELSE165
16B CLS»FORZV-OTOZiIFA*<Z V ) ",NEXTZVEUSEPRINTA*<ZV)»NEXTZV
169 W*-INKEY*iIFW*-"",169ELSEIFW*-"A",168ELSEIFASC(W*)-13,130EL8E169
173 PRINT»178,"NR.M|»INPUTZA»PR INT»17B,CHR*(201)|»PRINT»178,”TYP"pIINPUTR*»U*-"E
I N F U E G E N"*0-1 *K*-STR*(-ZA)»IFLEN(K*)>4,K*-STR*(ZA)EL8EK*-8TRING*(4-LEN(K
*),43)+K*
176 K*-K* + “-"4-R*»ZA«ZA*2-2iZ<T)-ZAiT-T + l»GOT0200
190 ZA-1»PRINT»236,"NR."|iINPUTZA* ZA-ZAJ2-2
191 U*-MK 0 R R E K T U R"
200 WW-O*IFZA-O,203ELSEIFA*(ZA-l)-""tZE-ZA-2ELSEZE-ZA-1
203 1FA*<ZA*1)-"", ZF-ZA+2ELSEZF-ZA+1
203 V-OiCLS»PRINT»19,U*" NR."ZA/2+1»64,A*(ZE)|»236,A*(ZA)j»448,N*LEFT*(K»,WW)CH
R*(93)|»768,A*(ZF)|»IFQ-1,230
210 W*-INKEY*»IFW*-"",210ELSEW-ASC <W*)»K*-A* <ZA)»K-LEN<K*>IIFW-13,130ELSEIFW-32A
NDK>WW+1,WW-WW*1ELSEIFW-8ANDWW>0,WW-WW-lELBEIFW-9ANDK>WW+5,WW-WW+5ELSEIFW-27,A* (
ZA)—LEFT*(K*,WW)BRIGHT * (K*,K-WW-l>»G0T0203
211 IFW-91,220ELSEIFW-31,230ELSEIFW-25,K-K+l»G0T0220EL8EPRINTS512,LEFT*(K*,WW) CH
R*(93)STRING*(K-WW,32)|»G0T0210
220 ZL-WW+1»E*-LEFT*(K*,WW)*0*-RIGHT*(K*,K-WW-1)IR*-""* P-312» V-l»GOT0131
230 ZL-ZH» E*-LEFT*(K*,WW)*0*-RIGHT*(K*,6)» R*-""»P-312* V-2» Q-0*IFRIGHT*(K*,1)-"S"
,ZL-36»G0T0110ELSE110
300 CLS» PR INT»279,"S P E I C H E R N"»PRINT»390,KA*|»INPUTS*PRINT»78B,ST*iPRINT#
-1,ZH,Z,T» TN-O» F0RGV-0T0Z-2STEP2*GW-GV
301 W-LEN<A*(GW))»B*-"A"+A*(GW)»IFW-O,305
303 F0RGG-1T0W*1» X-ASC(MID*(B*,GG,1))* Y-LEN(B*)»T*-STR*(GG)*IF(X>32ANDX<48)OR(X>
37ANDX<65),B*-LEFT*(B*,GG-1)+" "+RIGHT*(B*,Y-GG)«-STRING*(4-LEN(T*>,32)♦T*+6TR*(X
)INE XTGGELSENE XTGG
305 B-LEN<B*)-W-l»C-W»PRINT#-!,TN,B,C,B*»NEXTGViIFT-OORGV-T,130EL8EFORGV-OTOT-1*
TN-Z(GV)*GW-TN» GOT0301
310 CLS*PRINT»282,"U E 8 E N"»PRINT»390,KA*|IINPUTS* PRINT»788,ST*»INPUT#-1,ZH, Z,
TiF0RGV-0T0Z-2STEP2» GW-GV»INPUT#-1,TN,B,C,B*
313 IFB-O,A*(GW)-" •'»NEXTGViG0T0130ELSEX*-RIGHT*(B*,B)»FORGG-1T0B8TEP7»Q-VAL(MID*
(X*,GG, 3))*IFN0TQ-0,B*-LEFT*<B*,Q-l)4-CHR*<VAL(MID*(X*,GG+4,3>))+MID*(B*,Q+l,C+1~
0)INEXTGG
313 A*(GW)-RIGHT*(B*,C)»NEXTGViIFT-OORGV-T,15QELSEFORGV-OTOT-1»1NPUT#-1,TN, B, C, B
*» GW-TN» G0T0313
350 CLS»PRINT»472,"DRUCKER ON-LINE "|»INPUTS*PRINT»788,ST*»IFZH-122,N-10»8-3»LPR
INTCHR*(13)CHR*(24)ELSEN-5»S-5»LPRINTCHR*(24)
333 C-20» FORGX—OTOZ — 1» R*-RIGHT*(A * (GX),1)»A-LEN(A*(GX))»IFA-OORA-6,NEXTGXELSEA*LEFT*(A*(GX),A-6)»IFR*-MN",LPRINTTAB(N)CHR*(27)CHR*(C)A*»C-20*NEXTGXELSEIFR*-"SM
,LPRINTTAB(S)CHR*(27)CHR*(C)CHR*(14)CHR*(27)CHR*(101)A**C-102* NEXTGXELSE357
336 G0T03S8
337 1FR*-"E",LPRINTTAB(N)CHR*(27)CHR*(C)CHR*(27)CHR*(101)A*»C-102»NEXTGXELSEIFR*
-"D",LPRINTTAB(N)CHR*(27)CHR*(C)CHR*(27)CHR*(103)A*»C-104»NEXTGX
338 LPRINTCHR*(27)CHR*(C)|*IFZH-122,LPRINTCHR*<18)|
339 GOTO130
400 CLS» PR INT" 8 - LOESCHEN/NEUSTART"*PRINT" E - ENDE"
401 W*-INKEY**IFW*-"",401ELSEIFW*-"S",RUNtOELSEIFW*-"E",END
31000 DATA 42,30,64,34,213,127,33,198,127,34,30,64,42,38,64,34,242, 127,33,233, 12
7,34,38,64, 193,25,26,245,121,205,244,127,56,5,62,130,205,51,0,241,197,205,0,0, 19
3,79,254,8,192,42,32,64,43,126,254,130,192,62,8,195,51,0,245,121,246,32,205,244
51010 DATA 127,241,195,0,0,234,123,63,216,254,97,216,121,238,32,79,201
51020 IFPEEK(16526)-17IANDPEEK(16527)-127,RETURNELSEA-326B3*F0RX-AT032767*READB»
POKEX,BiNEXTiPOKE16326,171iPOKE16327,127»A-USR(O)
HEFT
23
Februar
1938
14
1 Zeichen gelöscht, duich nachfolgend
eingegebenes Zeichen ersetzt.
■1 Zeichen ohne Ersatz gelöscht.
- Cursor 5 Zeichen vor
gäwiH
SCU^l
1 Zeichen wird eingefügt
’ (nachfolgend einzugeben)
Zeile w ird ab Cursor bis Ende
- gelöscht.
Neueingabe dieses Teiles.
Bild 3. Die Sondcrtaslen des Korrektur­
modus
5 G0SUB51000
10 C L S : C L E A R 1 5 0 0 0 : D I M A * ( 1 3 3 ) , Z ( 4 0 ) : D E F I N T A - Y : P R I N T 5 8 6 , "T E X T S Y S T E
M":PRIN
T S T R I N G * ( 6 4 , 4 5 ) : F 0 R Z - 0 T 0 2 0 0 : N E X T : G * * S T R I N G * ( 4 , 176> «H * - C H R * ( 1 4 3 ) » I * - C H R * ( 1 4 0 ) iK * CHR*<191)iM*-CHR*(131)
2 0 N * - " ---- "*-H*+"-----1----- " ♦ H * + " -----2 -----" + H * + " -----3 — — •♦H*+**-H + C H R * (127) ♦ " — 4 --- " ♦ H * ^ “-----5 -----•■►Ht-*-"-----6 --- 4": P * - M--- S c h r i f t a t A r k e ( n j d j * j s ) ---- — —
* t 'Sc
h r e i b * o 4 u s b t i n d e n — -•*
25 ST*-“ > » » > > > START <<<<<<<<“ :KA*-"** Kassettenrekorder bereit "
»
3 0 P R I N T » 2 1 1,G* " "G*" "G*" " C H R * ( 1 7 6 ) " “G*** " G * C H R * (176) 1275, H * I * I * C H R * (188) " "K
**
“K * I * I * C H R * < 1 8 3 > M . "K*" “* * 1 * 1 * « * "
"K*»339,H*rt*M*rt*" "M*fl*H*M*" "« * "
“M *
- "M*** "M***
MM
6 0 F Q R Z - 0 T 0 6 5 0 * N E X T : P R I N T » 1 4 3 , S T R I N G * (34 , 1 7 6 ) *207, K * » 2 4 0 , K * » 2 7 1 ,K * » 3 0 4 , K * » 3 3 5 , K *
f3 6 8 , K * » 3 9 9 , S T R I N G * (34,131)
7 0 F O R Z - O T 0 5 0 0 : N E X T j P R I N T » 1 9 4 , " E i n " » 2 6 0 , **Programm"S331, " v o n " » 3 0 9 , "F R A N K " » 3 7 1
, "S A N D L 0 S " «F 0 R Z - 0 T 0 4 0 0 : N E X T * P R I N T :P R I N T '*Haupt 2 e i l e n l ä n g e i ": P R I N T <P R I N T "
7 2 Z e i c h e n / Z e i 1 e ------------- n ( o r m a l ) "
80 PRINT*
1 2 2 Z e i c h e n / Z e l l e ------------- e ( n g )":P R I N T i P R I N T : PRINT**
Bit
te A n f a n g s b u c h s t a b e n d r ü c k e n !"
9 0 W * - I N K E Y * s I F W * — m “ ,9 0 E L S E I F W * — " n “ , Z H - 7 2 E L S E I F W * - " e " , Z H - 1 2 2 E L S E 9 0
99 F 0 R Z -OTO132STEP2
100 0 * » S T R * ( - ( Z / 2 + 1 ) ) : 0 * - S T R I N G * ( 4 - L E N ( 0 * > , 4 5 ) + 0 * + " - " « P - * 8 3 2 : Z L - Z H » C L S i P R I N T I 7 6 8 ,
P*j:E*-""
103 R * « I N K E Y * s I F R * - " “ , 1 0 3 E L S E I F A S C (R*> -13, R * - " n " «G 0 T 0 1 0 4 E L S E I F R * - " d " , 1 0 4 E L S E I F R *
-"e", 1 0 4 E L S E I F R * « Ms “ , Z L - 3 6 E L S E I F R * - " *", 1 5 0 E L S E 1 0 3
104 C L S * Z Z - 0 « F 0 R Z 1 “ Z - 1 T 0 Z - 2 4 S T E P - 1 i I F Z K O , 1 1 0 E L S E Z 2 - L E N (A * <Z 1) ) i IF Z 2 > 0 , Z 3 - I N T (Z2
/64)+l» Z Z - Z Z + Z 3 * I F Z Z > 1 2 , 1 1O E L S E P R I N T 1 ( 7 6 0 - Z Z * 6 4 ) ,A * ( Z t ) | i N E X T Z l E L S E N E X T Z l
110 P R I N T i ( P - 6 4 ) , N * E * S T R I N G * ( Z L - L E N ( E * > , 1 4 3 ) 0 * R * |
131 A * - I N K E Y * : I F A * - " * * , 1 3 1 E L S E A - A S C (A « ) i I F 6 4 < A A N D A < 12 7 , E * - E * + A * : P R I N T » P , E * j « IF L E N
( E * ) < Z L , 1 3 1 E L S E E - L E N (E * ) *G O T O 14 0 E L S E E - L E N <E * ) i I F A - 8 A N D E > 0 , E * - L E F T * ( E * , E - l ) * G O T O 1
33ELSEIFA-24ANDE>4,E*-LEFT*(E*,E-5)«G0T0133
132 I F A - 3 2 , E * - E * + " - » G 0 T 0 1 3 3 E L S E I F A < 6 4 A N D A > 3 2 , E » « E * + A * i G 0 T 0 1 3 3 E L S E I F A - 9 A N D E + 5 < Z L
,£*-£*♦"
"ELSEIFA-13ANDV-0,143ELSE140
133 E - L E N ( E * ) « P R I N T » P , E * S T R I N G * ( Z L - E , 1 4 3 ) 0 * R * | i I F E < Z L , 131
140 I F ( V - O A N D E > - Z L ) O R ( V - 2 A N D E - > Z L ) , 1 4 1 E L S E I F V - 1 0 R V - 2 , A * ( Z A ) - E * + 0 * + R * « G 0 T 0 2 0 5 E L S E
131
141 W * - I N K E Y * i I F W * - " " , 1 4 1 E L S E W - A S C ( W * > i I F W - 8 , E * - L E F T * ( E * , E - l ) i G 0 T 0 1 3 3 E L S E I F W - 2 4 ,
E * - L E F T * ( E * , E - 5 ) * G O T O ! 3 3 E L S E I F W - 1 3 A N D V - 0 , 1 4 3 E L S E I F W - 1 3 A N D V - 2 , A * (Z A ) - E * + 0 * + R * i G O T
0205EUSE141
143 ’A » ( Z > - E « + 0 « + R t s N E X T Z s G Q T 0 1 5 0
1 5 0 P R I N T C H R * ( 1 5 ) : C L S : P R I N T § 6 4 , “K o r r e k t u r *
XX*
- Sich t e n de r Z e i l e n a
b X X " » 1 4 6 , " C H R * ( 9 4 ) " XX*
- E i n f ü g e n e i n e r Z e i l e " » 2 l O , k X X ’ - K o r r e k t u r Zex
le X X " 1384, "Tex t a u s d r u c k e n r
v a* " 1576. "Auf C a s s e t t e speichern:
151 P R I N T 4 7 6 8 , "V o n C a s s e t t e lesen:
* 1' **1913, " * ENTER*
— S e h r e i b m o d u s " ;198
0, “e
- Programmenda";
1 55 W * - I N K E Y * i IFW * - " ", 1 5 5 E L S E W - A S C (W*) i IFW-35, 1 6 0 E L S E I F W - 1 2 3 , 17 S E L S E I F W - 1 3 , C L S : G
O T 0 1 0 0 E L S E I F W » - ,*k*', 1 90E L S E I F W * - " a “ , 3 5 0 E L S E I F W * - " c " , 3 0 0 E L S E I F W * - " l ", 3 1 0 E L S E I F W * - "
e “ ,4 0 0 E L S E 1 5 5
1 6 0 Z A * - " 0 H »P R I N T » 114, " N r . : INPUTZA*: I F Z A * - " a " , 1 6 8 E L S E Z A - V A L (ZA*) *2-2: IFZA>Z, 16
O E L S E I F Z A — 2, Z A - O : C L S E L S E C L S
161 P R I N T A * ( Z A )
1 65 W * - I N K E Y * : 1 F W * - " ", 165E L S E IFW*- " K " , 1 9 1 E L S E W - A S C (W*) : IFW-13, 1 5 0 E L S E I F W - 1 0 , Z A - Z
A + l : I F Z A - Z , Z A - 0 : G 0 T 0 1 6 1 E L S E I F A * ( Z A ) - " M , 1 6 5 E L S E P R I N T A * (Z A ) :G O T O 1 6 5 E L S E 165
1 6 8 C L S : F O R Z V » O T O Z : I F A * ( Z V ) * " " , N E X T Z V E U S E P R I N T A * ( Z V ) :N E X T Z V
169 W * » I N K E Y * : I F W * - " " , t 6 9 E L S E I F W * - " a " , 1 6 8 E L S E I F A S C ( W * > » 1 3 , 150ELSE169
1 7 5 P R I N T » 178, "Nr. " j « INPUTZA: P R I N T » 178, C H R * (201)
P R INT» 178, “T y p " ; : I N P U T R * : U * « " E
I N F U E G E N " : Q - 1 »K*«S T R * (-ZA) : I F L EN(K») >4, K * - S T R * (ZA) E L S E K * » S T R ING» (4-LEN (K
* ) ,45)+K*
176 K*-K*-*-"-"-*-R*i Z A - Z A * 2 - 2 : Z <T) -ZAt T - T + l :G 0 T 0 2 0 0
19 0 Z A - 1 : P R I N T » 2 3 6 , " N r . " j * I N P U T Z A : Z A - Z A * 2 - 2
191 U * - “K O R R E K T U R "
200 WW-O:IFZA-0,203ELSEIFA*(ZA“ 1)-M",ZE-ZA-2ELSEZE-ZA-1
2 0 3 IF A * (ZA+1 )■**", ZF"ZA-*-2ELSEZF*ZA*l
2 0 5 V - 0 : C L S : P R I N T S 19 ,U * “ N r . " Z A / 2 + 1 » 6 4 , A * (Z E ) ; 5 2 5 6 , A* (ZA)j 5 4 4 8 , N * L E F T * ( K * , W W ) C H
R * (95 ) j»76 8 , A * ( Z F ) ; : IFQ-1,230
2 1 0 W * « I N K E Y * : I F W * - " " ,2 1 0 E L S E W - A S C (W*) :K * - A * (Z A ) :K - L E N (K*) : IFW-13, 1 5 0 E L S E I F W - 3 2 A
N D K > W W + 1, W W - W W + 1 E L S E I F W —8 A N D W W > 0 , W W - W W — 1 E L S E IFW«9ANDK>WW-*-5, W W - W W + 5 E L S E I F W — 27, A * (
ZA)- L E F T * (K*,WW)+RIGHT*(K*,K-WW-1) *G0T0205
2 1 2 I F W — 123, 2 2 0 E L S E I F W - 3 1 , 2 3 0 E L S E I F W - 2 5 , K - K + l :G 0 T 0 2 2 0 E L S E P R I N T J 5 1 2 , L E F T * (K*, WW) C
H R * (9 5 ) S T R I N G * ( K - W W , 3 2 ) | : G 0 T 0 2 1 0
2 2 0 Z L - W W + l : E * - L E F T * ( K * , W W ) :0 * - R I G H T * ( K * , K - W W - 1 ):R * - " " : P —5 1 2 : V - 1:G O T O 131
2 3 0 Z L - Z H i E * - L E F T * ( K * , W W ) : 0 * - R I G H T * ( K * , 6 ) :R*-**" t P-512: V-2: Q»0* IF R I G H T * (K*, l)-"s"
,Z L - 3 6 i G 0 T 0 1 1 0 E L S E 1 1 0
3 0 0 CLSi P R INT »279, "S P E I C H E R N" iP R INT »390, KA*j I INPUTS: P R INT »788, ST*: P R I N T #
-1', Z H , Z , T i T N - 0 »F O R G V - O T O Z - 2 S T E P 2 1 G W - G V
30 1 W - L E N ( A * (GW) )» B * — **A " * A * ( G W ) : I F W - 0 , 3 0 5
3 0 3 F O R G G - l T O W + 1 : X - A S C (MID* (B*, GG, l)) * Y - L E N (B*) : T * - S T R * ( G G ) : IF (X>32ANDX<48) O R (X>
5 7 A N D X < 6 5 ) , B * - L E F T * ( B * ,GG-1)+" " ♦ R I G H T * (B*, Y-GG) + S T R I N G * (4-LEN (T*> ,32) ♦ T * + S T R * ( X
)* N E X T G G E L S E N E X T G G
3 0 5 B — L E N (B*) — W — 1: C-W* FORINT#— 1, TN, B, C, B*: N E X T G V : IFT—O O R G V — T,.150ELSEF0RGV-0T0T— 1:
T N - Z ( G V ) :G W - T N : G 0 T 0 3 0 1
3 1 0 CLS: P R I N T » 2 8 2 , "L E S E N" :P R I N T 5 3 9 0 , KA*; : INPUTS: P R I N T 5 7 8 8 , ST*s I N P U T # - l , ZH, Z,
T: F O R G V - O T O Z - 2 S T E P 2 : G W - G V j I N P U T # - 1 ,T N , B , C , B *
3 1 3 I F B - 0 , A * (GW) -"** sNEXTGV: G O T O 1 5 0 E L S E X * - R I G H T * (B*, B ) :F 0 R G G - 1 T 0 B S T E P 7 : Q - V A L (MID*
(X*, GG, 5) ) I I F N O T Q — 0, B * — L E F T * (B*, Q — 1) + C H R * <VAL (MID* (X*, G G + 4 , 3) ) )♦MID* (B*, Q + l ,C'**lQ ) jN E X T G G
3 1 5 A * ( G W ) - R I G H T * (B*,C) sNEXTGV: I F T - O O R G V - T , 1 5 0 E L S E F 0 R G V - 0 T 0 T - 1 * I N P U T # - 1, TN, B,C, B
* : G W - T N » G 0 T 0 3 13
3 5 0 CL S « P R I N T S 4 7 2 , " D r u c k e r O N - L I N E " j : INPUTS: P R I N T 5 7 8 8 , ST** I F Z H - 1 2 2 , N - 1 0 : S » 5 j L P R
IN T C H R * (15)C H R * (24)E L S E N - 5 :S - 5 *L P R IN T C H R * (24)
3 5 5 C — 20: F O R G X - O T O Z - 1 :R * « R I G H T * (A * (GX ) , 1) : A - L E N (A* (GX) ) i I F A - O O R A - 6 , N E X T G X E L S E A * L E F T * (A* (GX) , A — 6) i I F R * - " n " ,L P R 1 N T T A B (N) C H R * (27) C H R * <C) A*: C-20: N E X T G X E L S E I F R * - " ® "
,L P R I N T T A B ( S ) C H R * (27)C H R * ( C ) C H R * (14)C H R * (27)C H R * (69)A * i C - 7 0 « N E X T G X E L S E 3 5 7
356 G0TQ358
3 5 7 I F R * - He", L P R I N T T A B (N) C H R * (27) C H R * (C) C H R * (27) C H R * (69) A * : C - 7 0 : N E X T G X E L S E I F R * - "
d ", L P R I N T T A B (N )C H R * (27)C H R * (C ) C H R * (27)C H R * (71)A * i C - 7 2 :N E X T G X
3 5 8 L P R I N T C H R * (27)C H R * ( C ) j i I F Z H - 1 2 2 , L P R I N T C H R * ( 1 8 ) j
3 5 9 G O T O 150
40 0 C LSiPRINT" s - L ö s c h e n / N e u s t a r t " i P R I N T “ e - Ende"
4 0 1 W * - I N K E Y * : I F W * - " ",4 0 1 E L S E I F W * — " s " ,R U N 1 0 E L S E T F W * — " e “ ,E N D
5 1 0 0 0 D A T A 3 3 , 2 2 6 , 2 5 5 , 3 4 , 3 0 , 6 4 , 33, 1 3 2 , 2 5 5 , 3 4 , 2 2 , 6 4 , 2 0 5 , 2 2 7 , 3 , 1 9 7 , 2 1 3 , 8 7 , 2 5 4 , 3 2 , 3 2
, 17,58, 1 2 8 , 5 6 , 1 8 3 , 40,11,58, 2 0 9 , 2 5 5 , 238, 32, 50, 209, 255, 175,24,47, 1 2 2 , 2 5 4 , 3 1 , 4 0 , 2 4 8
, 5 8 , 6 4 , 5 6 , 2 5 4 , 2 , 3 2 , 1 6 , 1 2 2 , 3 3 , 2 1 0 , 2 5 5 , 1,8 , 0 , 2 3 7 , 177, 32,5 , 1 , 7,0,9, 8 6 , 1 2 2 , 2 3 0 , 2 2 3
5 1 0 0 2 D A T A 2 5 4 , 6 3 , 5 6 , 1 1 , 2 5 4 , 9 4 , 4 8 , 7 , 1 2 2 , 3 3 , 2 0 9 , 2 5 5 , 174, 24,1,122, 2 0 9 , 1 9 3 , 2 0 1 , 0 , 6 5 ,
7 9,85,97,111,117,83,67,91,92,93,123,124,125,126 ,31,221,110,3,221,102, 4,218,154,4
, 2 2 1 , 1 2 6 , 5 , 1 8 3 , 4 0 , 1 , 1 1 9,121,254,32,218,6,5,254, 128,210, 166,4,195,125,4
5 1 0 0 4 I F P E E K (16526) - 1 1 9 A N D P E E K (16527) - 2 5 5 R E T U R N E L S E F 0 R X — 13 6 T 0 - 11 R E A D B «P O K E X , B* N
E X T X s P O K E 1 6 5 2 6 , I 19«P 0 K E 1 6 5 2 7 , 2 5 5 « A - U S R (0)
Bild 4. Hier die 48-KByte-Version für TRS-80 mit Kleinschrift und deutschem Zeichensatz (MEM SIZE? 65399)
Zeichengenerator
für Nadeldrucher
TRS-80 erstellt Hardcopy
Eine Hardcopy vom Bildschirm erstellt
die kleine Maschinenroutine von Bild 1.
tooo
FOR J - 133*0 TO 14320 « T E P *4:
FOR 1 - J TO 4*631 I F PCCK ( I ) >122
THEN L P ftlK T 0 « * < 4 2 > M t F P E t K t I )
-< 1 2 2 T fC H L P « I N T C M R « < P C E X ( I» I
1010 NEXT i s l p r i m t * *:» C K T J
Bild 1. Eine Bildschirm-Hardcopy erstellt
d i e « « TR5-80-Programm
Dazu ist der im Level-Ü und Level-IüBasic nicht benutzte Befehl „NAME“ im
Direktmodus oder von einem Programm
aus aufzurufen. Dadurch bleibt der Be*
FFC0
FFC3
FFC6
FFC?
FFCC
FFCF
FFD1
FFD3
FFD7
FFDfl
FFDC
FFDD
FFE0
FFE1
FFE3
FFES
21
22
22
22
CD
16
DD
06
DD
DD
CS
CD
CI
DD
DD
10
CO
8E
Bl
BF
94
00
21
3F
4E
ES
FF
40
40
4t
03 .
00 3C
00
-5F 30
El
23
F0
FFE7 DD ES
FFE9 cs
FFEfl DS
FFEB CD 94 03
f f e e Dl
FFEF CI
FFF0 DD El
FFF2 DD 23
FFF4 14
FFF5 3E 0F
FFF7 BR
FFF8 20 DB
FFFfl C3 CC 06
0009
0001
0002
0003
0004
000S
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
O017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
fehl USR(O) für andere Zwecke frei. Je
nach Speicherumfang muß die Starta- i 1
dresse geändert werden. Zu ändern ist
eventuell auch die Dnickertreiberadres- •
se (037E6H).
Eine Hardcopy in Basic ermöglicht das
Programm von Bild 2. Dabei kann ln
begrenztem Umfang auf nicht graÜkf&higen Druckern Grafik ausgegeben wer«
den. Alle Zeichen, deren Code größer als
122 ist, werden näm lich als Sternchen CHR.(42) - gedruckt Natürlich kann man
an seiner Stelle Jedes andere Zeichen
verwenden.
W olfgang Bethmarui
ORG
0FFC0H
; HARDCOPY FITER TRS-80'VG^KOMTEK
; W.BETHPWHH 11.1989
HL »0FFC0H
LD
Stirtsdresse
< 408EH >/HL SytteM tertedress«
LD
<40BIH>,HL MEN-SIZE ««tz «n
LD
<418FH>,HL* Zsig«r*lises*vertoiegen
LD
UP: CR euf Drucker CflLL 394H
D «u f P setzen
LD
D, 0
IX,3C00H
1. Bilds cM replatx
LD
LD
B.3FH
PRINT
noch 63 Zaichen/Zeile
C,<XX>
*. S ild sc h ir« nsch C laden
LD
LOOP
SpeicherInhalt« retten
PUSH IK
PUSH BC
CALL 38SFH
Druckertrelberadr. rfolen
BC
POP
zurück voe Stack
POP
IX
INC
IX
nächster B ild sch iiap lstz
DJNZ LOOP
S ch leife noch 63 H l ,
jl.S C H L E IF E
Speicherinhalte r * tt«n
PUSH IX
PUSH BC
PUSH DE
CflLL 394H
UP: CH «u f Orvcker
DE
POP
zurück voe Stack
POP
BC
POP
IX
IX
INC
nächster B ild sch irep lati
INC
D
Zähler für CR
A.0FH
LD
noch 15 Zeilen
CP
D
fe r t ig ?
NZ,PRINT
JR
sonst S ch lsife 15 aal
6CCH
JP
zurück ins Bsaic
END
Bild 2. Sogar begrenzt« GrafikmögUchkelten
dieses Buic-Progrmmm
Selbst die einfachsten Nadeldrucker
können Punktgrafiken drucken. Damit
setzt nur die eigene Phantasie dem Zeichenvorrat des Druckers Grenzen.
Braucht man ein mathematisches Son­
derzeichen oder ein sonstiges Symbol,
beginnt die Gestaltungsarbeit mit Papier
und Bleistift. Vor jedem Versuch müs­
sen die Punkte dann noch in ein Bitmu­
ster umgesetzt werden. Diese Arbeit
kann das abgedruckte Basic-Programm
(Bild 1j erleichtern. Mit den Tasten des
Zahlenfeldes steuert man die Punkte an,
die gesetzt oder gelöscht werden sollen.
Leider sind die Grafikpunkte des TRS-80
nicht quadratisch - die auf dem Bild­
schirm gemalte Figur wirkt also leicht
verzerrt. Ein Tastendruck genügt, um
das Resultat aufs Papier zu bringen. Im
übrigen erklärt sich das Programm sel­
ber. Es wurde auf einem TRS-80. Model I
geschrieben, dürfte aber nach Anpas­
sung der Grafikbefehle (set (x, y)/reset
(x,y)/point (x, y): Koordinate(x, y) set­
zen/löschen/prüfen) auch auf den m ei­
sten anderen Rechnern laufen. Bei ein i­
gen Druckern (Star DP-510 u. a.) können
nur sieben Bit direkt angesteuert wer­
den. Der oberste Punkt muß dann über
eine zusätzliche Abfrage (IF P (I)>127
THEN ...) angesteuert werden.
Von Drucker zu Drucker verschieden
sind auch die Befehle zum Aufruf der
Grafik. Sie sind in der DATA-Zeile abge­
legt.
Als Beispiele für nützliche Sonderzei­
chen mögen Sum m enzeichen, Alpha,
das Integralzeichen und das Zeichen für
Unendlich genügen (Bild 2).
Henning Schulz-Rinne
16 40 6B 68
195
129
165
0 0 2
1 1
28 34
34 34
40
129
126
20
VO CLEAR lOOiCL6lD6FINT X, V , I , J , H ,P,CiDEFBTR E
100 N X -lO iD lM P (M X ). C ( 3 ) iREN MX - Z *h l d mr S p a lte n
110 FOR 1-0 TO SiREÄD C (I)iN E X T
120 PRINT "B ed ien u n g Ober n u m e r is c h «« T a s t e n f e l d ! "
130 PRINT " ♦
«u * (91
(7 )
140 PRINT - I
ISO PRINT " I
H ä r t«
140 PRINT
Punkt
170 PRINT " I
180 PRINT " I
15 «c h «n
190 PRINT
200 PRINT “ I
210 PRINT - I
220 PRINT
230 PRINT - I
au sI
Punkt
I (ENTER)
d ru cken t
•e tze n
240 PRINT *1
I"
230 PRINT ■«A l l » « 1 6 «c h «n i r / * - T « « t « l E n d «i
260 PRINT
270 PRINT
Zua A nfängen T a a te d rü c k e n "!
200 E-INKEYSi IF E - “
THEN 280
290 CLS
300 FOR X-0 TO MXtSET ( X, B )t NEXT '
310 FOR Y -0 TO 8iBET (NX+1, V ) * NEXT
320 X-O iY-O
330 S E T (X ,9 H S E T (M X + 2 ,Y )
340 E «*IN K E Y »tIF E -" " THEN 340
350 IF <ASC(E)<44> 'OR CASC(E>>56) THEN E - “ MiGOTO 340
360 R ESET(X.9 ) iRESET(MX* 2 , Y)
370 ON A S C (E )-4 4 GOTO 6 4 0 .3 8 0 ,3 2 0 ,5 3 0 ,5 1 0 ,4 0 0 ,3 3 0 ,4 2 0 ,4 4 0 ,4 7 0 ,3 3 0 ,4 9 0
380 IF PO IN T<X , Y )« 0 THEN P (X >- P (X > * 2 A (7 —Y > » S E T (X , Y )
390 60T0 470
400 IF Y<7 THEN Y -Y + l ELSE Y -0
410 60T0 330
420 IF X>0 THEN X -X -l ELSE X-HX
430 GOTO 330
440 IF X>0 THEN X -X -l ELSE X-NX
450 IF POI NT ( Xt Y ) THEN P ( X ) - P ( X ) - 2 * (7 - Y )iR E S E T (X ,Y )
460 GOTO 330
470 IF X<MX THEN X-fc + 1 ELSE X-0
480 GOTO 330
490 IF Y>0 1>CN Y -Y ~ l ELSE Y-7
BUd 1.
500 GOTO 330
Das Programm hilft
510 P (X >-OlFOR 1-0 TO 7 1RESET (X , I >1NEXT*GOTO 330
Sonderzeichen
520 FOR 1-0 TO N X iP ( I >-OlNEXTiCL߻GOTO 300
530 PRINT 1 5 1 2 ,I»FOR 1-0 TO N XiLPRINT P X ( I ) 11NEXT
zu entwerfen
540 FOR 1-0 TO 3
550 IF PEEK(1 4 3 1 2 )—63 THEN POKE 1 4312,C<I> ELBE 550
560 NEXT I
570 FOR !«*0 TO NX
5B0 IF PEEK (1 4312) -6 3 THEN POKE 14312, P U ) EL8E 580
590 NEXT I
600 LPRINTILPRINTiGOTO 330
610 REH E « f o l g e n d i e t u r .I n l t l « 1 1 « 1 eru n g d e « D ru ckers n f i t i g «
620 REN O sten (NX-BO, G raph ik d o p p e lt e r D ic h t e , 11 p l x e l « )
630 DATA 2 7 ,7 6 ,1 1 ,1 2 6
640 END
16 40 68 68 40
16 •
153
129
129
129
129 129
12B
128 64 0 O /
8 20 34 0 0 O e
HEFT
S3
Februar
1988
18
0 £
BUd 2. Eingaben und Ergebnisse
W e r -
s
u
c
h
e
t
,
d e r *
s o l
X
-f i n d
e
n
(angebli c h )
Zunächst einmal:
All d e n e n , d i e d i e s e s B i b e l z i t a t
G l ü c k l i c h e s
(welches, wie ich hoffe,
20
lesen,
wünsche
ich
noch
N e u e s
J « ih r inzwischen noch nicht zu alt
ein
1 *988 ,
g
ew
or
den i st).
Denjenigen, die dies hier
nicht lesen, brauche ich
mehr
zu
wünschen
—
d e n n s i e haben b e r e i t s G l ü c k !
Nur
f ü r d i e U n g l ü c k l i c h e n , d i e bei E m p f a n g f r e m d e r
sich mit den sogenannten
das
nicht
Disketten
P D R IV E s
herumquälen, dürfte das
folgende vielleicht
interessant sein
<v o r a u s g e s e t z t ,
sie besitzen noch so
einen antiquierten Com­
puter wie ich, der mit NEWDOS oder G — resp. H —DOS arbeitet!)
"Als ich
noch — der
'W a l d b a u e r n b u b ' w a r . . . " h ä t t e
ich fast
mit
Peter
Rosegger
(kein
Club m i t g l i e d ! ) gesagt; also:
" A l s i c h n o c h e i n D i s k o t h e k a r w a r w (in L a u f f e n e r
Originalton:
e i n D i s k e t t o t h e k a r ), h a b e i c h m i c h
oft genug
damit
herumge­
quält, eine
Diskette,
deren PDRIVEs nicht
angegeben
waren,
z u m L a u f e n ( d i e s m a l m i t n u r e i n e m ' f ') z u b r i n g e n .
(1.A n m . : D i e s wa r
aber nicht der G r u n d
für
die
Aufgäbe
dieser
Aufgabe;
ich habe dabei
manches gelernt,
u.a.
eben
das, worüber ich hier
zu b e r i c h t e n mic h anschicke. * E n d e der
1.A n m . )
Heute plagt mich
d a s P r o b l e m (das ü b r i g e n s
auch von "ID/CMD"
keineswegs
immer
gelöst wird!)
nur noch
selten.
Zum
Bei­
spiel,
wenn ich versuche,
eine
Diskette zu lesen,
auf
der
überhaupt nichts drauf
i s t •.• 0 G o t t , i s t d a s e i n K r a m p f ! W i e
erkennt man die
Leere einer Diskette??
Ich
b e d anke mich für
die
Lehre,
die
mir
hoffentlich jemand darüber
erteilt! Es
geht kaum etwas über eine solche Leerelehre!
Ein lieber
C l u b k a m e r a d s c h i c k t e mir 5 0 D i s ketten, die ich mir
ansehen durfte,
bevor
er s ie
seiner neuen
W A A übergab. Ich
entschloß
mich
prompt zu einer Sitzblockade
und saß etwa
3
Tage (ohne weggetragen
zu
werden!
Nicht
einmal von
meiner
F r a u . ..>
Als sich die
Leseproblematik
bei
diesem Unternehmen
wieder
einmal häufte, erinnerte
ich
mich des
hervorragenden Buches
von
GROSSER
(;■
RöCKRATH-Verlag) , u n d s t u d i e r t e d o r t
die
S e i t e 4 — 3 (was soviel wie S e i t e 3
von Kapitel 4 heißen
soll,
nicht
etwa
Seite
4
bis
3!
Anscheinend
h a t t e GROSSER
Nachträge
v o r g e s e h e n (sind s i e
e r s c h i e n e n ? ) . D ort ist
nach­
z u l esen, wo auf
einer ("normalen") Diskette diese
verdammten
“
^ D R I V E - P a r a m e t e r " stehen.
(2. A n m . : I c h h a l t e
diese
Bezeichnung für unsinnig. Was
soll
"PDRIVE" anderes sein als die Abkürzung für
"Parameters
of D r i v e " ? A l s o
ist ' P D R I V E - P a r a m e t e r ' ein schwarzer Rappe.
Ich ü b e r s e t z e das g r u n d s ä t z l i c h mit
" D r i v e - P a r a m e t e r * Ende
der 2.A n m . )
Mit
diesem
Erwerb
unumstößlicher
W a h r h e i t e n (danke, großer
GROS S E R ! ) g e l a n g es mir
dann
doch, sämtliche 50 Disks zu le­
sen — a l l e r d i n g s
mit Ausnahme jener, auf denen vermutlich gar
nichts stand. SUPERZAP zeigte
dennoch einen
S e k t o r i n h a l t an,
d e n GROSSER o f f e n s i c h t l i c h n i c h t e r f a ß t h a t . . .
Da mir r.Z. kein besserer
jenen, d ie ebenso hilflos
ich,
das Orakel
verraten
e r h e b e n ) C W o Pr&ut***.
INFO-Beitrag
einfällt,
vor ihrer Sphinx sitzen,
(ohne einen A n s p r u c h auf
Qar
:
m ö c h t e ich
wie einst
DELPHI zu
Die Drive-Parameter
e i n e r D i s k e t t e s i n d im 3 . S e ktor, d.i. der
relative
Sektor 2
( D R S 2)
gespeichert,
and
zwar
in j e d e r
16-Eyte-Zeile
eine
Parameter— Bruppe,
jeweils
für die L a u f ­
w e r k e 0 b i s 3 s o w i e d i e P s e u d o - L a u ^ e r k e A b i s 9.
Dieser Sektor
läßt
sich
"mit
Hülfe von
SUPERZAP" (jawohl,
mir wird
gan z -feyerlich z u m u t e ) bei e i n e r
normalen
Diskette
st e t s lesen.
Ich
Qebe hier
immer vor, daß d i e D i s k e t t e "normal" sein muß.
Es
gibt
andere,
z.B.
GENIETEXT,
wo
das
nicht
geht.
IZENDER h a t
sie
weitgehend
kopiergeschützt durch
Umfunk­
tionierung wichtiger Strukturen.)
Was
die
einzelnen
B y t e s b e s a g e n , i n t e r e s s i e r t in d i e s e m Z u ­
sammenhang nur
insoweit,
als es
A u s k u n f t über die gesu c h t e n
verfl-, verzwickten Parameter
gibt.
Und das habe
i c h in d e r
nachstehenden
Tabelle
in d e r
Reihenfolge
zusammengestellt,
d i e f ü r d e n f o r s c h e n F o r s c h e r r e l e v a n t ist.
daß
ei n
jeder- schnei 1erDer>n Zei tvergeudung
ist
'ne
*
Was
TSCRIPS
ni cht
(Ein V e x i e r r ä t s e l
finde,
Sünde !
kann
?)
W e n n d i e s e s INFO erscheint, steht D s t e r n vor der Haustür.
Das
ist die Zeit,
in
der das Suchen
allgemeine
Fröhlichkeit
verbreitet; nicht nur unter Kindern.
Drum laßt uns den
Kindern gleich
tun! (Denn
“. . . d e r s o l l f i n ­
d e n . . . ")
Es
geht um Zeichen g e s t a l t u n g . Aber diesmal heißt der Hase,
der
die
Eier
legt,
nicht
TSCRIPS,
auch
nicht
NEUSCRIPT o d e r
a n d e r s w i e.
kann
viel.
Die
Tastenfolge
"eP“ erlaubt
ein
sofortiges Umschalten
in den Z e i c h e n m o d u s ,
in
dem man Zeichen
in e i n e r
Bxl2—Matrix
entwerfen
oder
vorhandene »ehr
schnell
ändern
kann — sogar während «an einen Text
schreibt —
so
daß
auch für den
in A r b e i t b e f i n d l i c h e n T e x t in a l l e r K ü r z e
belie­
bige F a n t a s i e g e b i l d e zur Verfügung
stehen,
die
man,
wenn sie
ni c h t m ehr b e n ö t i g t werden, auch s o f o r t wieder löschen kann.
Ich
halte
dies
für
einen besonderen
Vorzug
von
TSCRIPS ,
weil ich für
Mathe-Texte, manchmal aber
auch für Briefe, viele
So n d e r z e i c h e n (manchmal
auch "Spaßvögel")
brauche,
die
e s im
i n t e g r i e r t e n Z e i c h e n v o r r a t n a t ü r l i c h n i c h t gibt.
TSCRIPS
(Anmerkung:
GEHIETEXT b e s i t z t
diesen
Mo d u s auch|
der ist aber sehr viel u m s t ä n d l i c h e r anzuwenden und
z e r s t ö r t m e i s t e n s den laufenden Text. A nder* Te x t s y s t e m e
m i t d i e s e r “f a c i l i t y “ - d e u t s c h : " F a z i l i t ä t “ sind mir nicht bekannt.)
Identifizierung
Die
Drive—Parameter
TI / TD / TC / SPT / TSR / GPL
PD's
(bzw.
der
für
GENIE«
/ DDSL / DDGA
TI / TD / SP / SEK / SUZ / E1B /
/ AEIVi
s t e h e n in D R S 2 in d e r d e r J e w e i l i g e n r e l . L a u f w e r k — N r . e n t s p r e c h e n d e n
Zeile; für das S y s t e m l a u f w e r k O in Z e i l e O usw.
Es gilti
Ii.
“ > Byte 2
in b i n ä r e r
Bit
"
"
Darstellung
7 gesetzt
6
5
entspricht!
"
"
TI - H
TI - K
TI - M
001
011
entspricht!
“
TI
TI
« A
- B
JI
- C
Bittriade 4-3-2 «
<
I
101
OOO
Bit
1 + O «
B y t e Ei
interpretieren!
Wenn
Bit
“
TI - E
"
ERROR
Track Stepping Rate
3 gesetzt,
dann
TD
bs y
B y t e F - O O Ol
TD - A
B
IE
-->
Byte 3 gibt
die Anzahl
Tracks
SPT
■**>
Byte 4 gibt
die Anzahl
Sektoren
TSR
“ *>
Byte C gibt
die
GPL
—
Byte 5 gibt
die Anzahl
BPSL =•>
Byte O gibt
den
PP5A
Byte 9 gibt
die Anzahl der de«
zugeteilten
>
“ >
D i s k - -Typ:
Byte 7
l* t g .? g ibt
Track
Stepping
(Spuren)
Pro
Rate
Track
an
(Spurwechselgeschw
Granules Pro Lump
an
Darstellung
Bit! 7
I 8"
i 5"
&
DS
SS
Directory
G r a n u l e s an
interpretieren:
4
<)
«)
g e s e t z t , d a n n TI-I, S e k t o r z ä h l u n g
«
,
TI-L,
,
TI-K, Spurzählung
der
an
‘
'Lump“ (Block) an, in d e m d a s
Directory beginnt
in b i n ä r e r
die Anzahl
» L
02 03 04 05 0 6 07
C
D
E
F
B
H
wenn
dann Disktyp
sonst
*) w e n n
2>
*)
TI
Lumps
auf
der
2
*)
*)
i
•)
»)
a b i.
n
i,
M
i.
Diskette
0
gesetzt,
DD
SD
sonst
ab 0
" 0
ii
> o
an.
In
TSCRIPS
kann
man
die
selbst
gebauten
Zeichen
auch
schnell nach
links, rechts, oben, unten verschieben.
Rotieren,
Dehnen und Spiegeln
geht nicht. W o l l t e nan Zeichen z.B.
ua ei­
nen
Winkel drehen
oder vergrößern/verkleinern, so «uß
«an sie
mit
D0THR1TER
entwerfen
und
mit
" MAHIPULATE “
einem
Zusatzprogramm
manipulieren.
DOTURITER
und
D0TPR1HT
erfordern
jedoch viel Zeitaufwand. Will
man mehr
produzieren,
als
die
genannte
Fertig-Software
hervorbringt
(pro-duz i e r t = "vor— f ü h r t * } , s o b e s i n n e m a n
s ich auf
das
eigentliche
Werkzeug, daß
- o Gott, KaJott, jetzt
erliegst
Du auch
schon
TSCRIPS 's w u n d e r v o l l e r
dem
Trend;
aber
ich
lasse es trotz
E d i t i e r k u n s t mal so s t ehen — a l s o noc h
einmal! man besinne sich
auf
das Werkzeug, das solche
Kunstwerke
ermöglicht!
d e n Hei —
reß-fähigen liatrix-Nadeldrucker
(so m a n
hat!)
Auch der Meißel
des Bildhauers gehorcht
nicht nur dem schöpferischen
Künstler,
Bondern j e d e « L a u s b u b e n , d e r i h n s c h w i n g t
und den
geduldigen
Stein damit verunstaltet...
V e r u n s t a l t e n wir!
Bedienen wir
uns also
der Bitaustet— D r u c k r o u t i n e selbst, statt
sie eine« geklauften Textprograma preiszugeben!
Ich h a b e d e n E P S O N RX80. Wer e i n e n a nderen
Drucker
h a t (natüi—
lieh nur einen
HR6— fähigen, s.o.),
kennt sicher
sein entspre­
chendes Kommando
und
ändert
mein nachstehendes
Program« ent­
sprechend
(Zeile 3&0)
Die
Bilder werden aus aufeinander
f o l g e n d e n P u n k t s p a l t e n .(bei«
RX80
zu je 9
senkrecht übereinander liegenden Punkten)
zusam­
mengesetzt. Jeder
Punkt repräsentiert
ei n Bit; d i e
Bitzählung
beginnt
unten.
Der
unterste
Punkt ist
vom U S E R
(Unsereiner
Spricht Englisch,
Right?)
nicht ansprechbar;
der nächste e n t ­
spricht
B i t O, d e r
o b e r s t e B i t 7.
Jede
Punktspalte
wird als
Byte
codifiziert,
ifäß
das
sich
aus der Addition der
gesetzten
B i t s e r g i b t . E i n "!" ist
also eine Spalte, in der
von ganz
unten
gezählt
— d e r d r i t t e P u n k t ( B i t 1)
sowie
die
b
bis
9 ( B i t s 4 b i s 7>
g e s e t z t sind.
Das
ergibt das
Punkte
“B i t m u s t e r " 1 1 1 1 O O I O ; u n d d i e s
ist g l e i c h F2Hex
=
2 4 2 d e z . So
erhält
jede Spalte ihren
Code, und da wir die Spaltencodes für
unsere Bilder
s e l b s t k o n s t r u i e r e n , können wir ihre A b f o l g e auch
selbst manipulieren. Denn
jede
S p a l t e w i r d in u n s e r e m P r o g r a m m
durch
eine
hierdurch
definierte
Variable
repräsentiert.
Es
empfiehlt sich, hierfür e i n — oder noch
besser
zweidimensionale
Feldvariable zu
verwenden, denn diese lassen
sich am elegante­
sten "manipulieren".
Mit
nachstehendem Programm wird
das Vorgehen verdeutlicht, und
zwar
an
einem
Beispiel, das
euch etwas
e r — B O E T Z — 1 i c h e s vor
führt, wenn ihr es
ausdruckt. Wer es nicht gleich erkennt, gehe
i n s B a d e z i m m e r . (Es b r a u c h t
übrigens weder eine
Badewanne noch
eine Dusche
darin zu
sein. Aber
d i e H a r d w a r e , d i e d a s Vexier
b i l d v o n S a i s e n t s c h l e i e r t , i s t b e s t i m m t d r i n . . . *)
HEFT
A n m e r k u n g : D a d e r E P S O N d i e " C h a r a c t e r s “ 0 , IO, 11 u n d 1 2
v o m T R S S O n i c h t w u n s c h g e m ä ß a k z e p t i e r t , w u r d e e i n Druckei—
Hilfstreiber
e i n g e b a u t . C.ARHULF h a t
einen besseren.
A b e r d i e s e r t u t 's a u c h . )
Ich b i n
*)
Für
sicher,
das
"
ihr
s p i e g e l t e u c h in e u r e n T e x t e n wie d e r !
* * * Ka - Jot * * *
i" g e n ü g t e
TSCRIPS1
.
(
H. .
O
nn
Februar
1999
O
23
Das Arbeiten mit BIT-Muster-Codes
'
'
DATA
DATA
DATA
DATA
220
230
240
250
260
270
280
290
300
310
320
330
340
350
360
365
370
375
380
390
400
405
410
420
430
440
450
460
470
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
o.
0,
O,
O,
0,
O,
o,
O,
0,
O,
O,
o, o , 129, 255, 129, O, O, O
255, 16, 40, 68, 130, 129, 1, O
255, 1»
^t 1 ®
255, 64, 48, 8, 4, 2, 255, O
255, 132, 132, 132, 132, 72, 48, O
255, 136, 136, 140, 138, 81, 33, 0
98, 145, 145, 145, 137, 137, 70, O
128, 128, 128, 255, 128, 128, 128, 0
252, 2, 1, 1, 1, 2, 252, O
192, 48, 12, 3, 12, 48, 192, O
0, o
T E X T :
A
B
D
E
’
'
'
'
•
•
■
•
'
•
I
K
L
N
P
R
S
T
U
V
Zwischnraum
•
DATA1,7,7,4,8,15,5,11,12,15,3,1,11,15
DAT A3,4,8,6,4,8,15,4,10,7,1,13,2,12,15
D A T A 14,5,4,7,4,8,15,2,7,4,5,2,12,15
DAT A 4 , 11,15,4,10,11,9,1,10,12
zum Drucker—Hi 1fstreiber
G0SUB410
CLSs CLEAR400: DEFSTRA—Z« DIMX (15) ,XX(15> ,CX(53)
' Konstruktion der Buchstaben
F0RJX=lT015sF0RIX«lT09
READCX:X(JX)=X(JX)+CHR*(CX)
NEXT 17.
' Spiegelung
FORKX=9TO1STEP— 1
XX(JX)=XX(JX)+MID*(X(JX),KX,1>
NEXTKX,JX
LPRINTCHR*(27>;“K ,,sCHR*(221> j C H R * (1) i ' Bitmuster— Modus ein
'
' Text aus DATA-Zeilen 220-250 einiesen und drucken t
'
F0RIX=lT053t R E A D C X (IX)INEXT
F D R IX=53T01STEP-1:L P RINTXX(CX(IX)) 5 :NEXT
END
Drucke*— Hi 1 f strei ber -fuer EPS O N s
B * = M21E837CB7E20FC211100397E32E837C9"
A*=16571 sF0RP= 1TQ32STEP2
B=ASC(MID*(B*,P,1)>-48:IFB>9THENB*=B— 7
T=ASC(MID*(B*,P+1,1))-4B:IFT>9THENT«T-7
POKEA,B*16+T:A=A+l::NEXTP
P O K E 16422,1871P OK E 16423,64
RETURN
o
lOO
110
120
130
140
150
160
170
180
190
200
210
Bitmustei— Codes (Punktspal ten)
0, 255, 136, 136, 136, 136, 136, 255,
0, 255, 145, 145, 145, 145, 145, H O ,
O, 255, 129, 129, 129, 129, 6 6 , 60, O
O, 255, 145, 145, 145, 145, 129, 129,
©
30
40
50
60
70
80
90
Ein “erBOETZlicher" Ausspruch
(nicht von KaJot liuehlenbein,
aber widergespiegelt im Februar 1988 in Meinheim)
o
•
o
'
*O
o
10
20
[EP50N KX80 &Ce.)
r
K o 1— 1— i g i
i n n e
e ? i—
r h
e r t
u n d
a l b
V I S
S t e u e
I C A L C
i
24
Die
"80 MICRO" hat
uns
Tandianern
ja nicht mehr
viel
zu
bieten. Deshalb greift man
gern auf ältere Ausgaben zurück und
schaut nach, was dort noch auszuschöpfen ist.
Da
ist z.B. in der Apri 1 —Nummer von 19B3 auf Seite 210 ein Ar—
tikel
von
Arne R o h d e , welcher beschreibt, wie man innerhalb
von
VISICALC bequem sowohl Eingabekorrekturen vornehmen als
auch Drucker— Steuersequenzen eingeben kann.
Während
ersteres eine nicht
allzu wichtige facility ist, über
deren
Wert man streiten kann — denn oft ist es nicht weniger
bequem, die Eingabe in ein Feld schlicht
zu wiederholen, als
eine Korrektur an der
fehlerhaften Eingabe mit dieser trickreichen Methode durchzuführen — bietet
die zweite die häufig
erwünschte Möglichkeit,
den Ausdruck eines VISICALC-Rechenblattes individuell zu formatieren, z.B.
durch Unterstreichen,
Kursivschrift,
Fettschrift etc. Besonders häufig benutze
ich
diese "facility",
um den Drucker
von VISICALC aus
auf ELITE—Schrift
oder
Schmalschrift einzustellen, wenn es sich wegen
unvorhergesehen größerer Spaltenanzahl, die mit PICA nicht in
die Zeile
paßt, als notwendig
herausstellt oder wenn
ich vor
dem Laden
von VISICALC vergessen hatte,
den Drucker auf ir—
gendeinen erwünschten besonderen Modus einzustellen.
Auch Grafik— Zeichen
können mit dieser Utility ausgegeben werden
(falls der Drucker dazu fähig ist).
Bei der Eingabe von Drucker— Steuersequenzen bedient das Pro­
gramm
sich
eines Trickess
Da
Zeichen wie E S C f
FF (Form
Feed) f SI
(Schmalschr ift ein),
DC2
(Schmalschr ift aus),
SO
(Breitschrift
ein),
DC4
(Breitschrift
aus),
BEL usw.
nicht
von
der Tastatur aus direkt
eingegeben
werden können,
wurde
eine
Umleitung
programmiert:
Auf
f- (Linkspfeil)
wird das
eingegebene Zeichen
in der ASCII—Tabel1e um zwei Spalten nach
links
verschoben,
auf -> (Rechtspfeil)
um acht Spalten nach
rechts.
Ein Beispiel für den EPSON RX 80 und Verwandte:
Wenn einem erst unmittelbar vor
dem Ausdruck des Rechenblattes
einfällt,
daß der Druck
fett
sein soll, kann man die ent­
sprechende Steuersequenz wie folgt an den Drucker ausgeben:
Nachdem die bekannte
Zeichenfolge
/ P P
eingegeben
wurde, erscheint in der Menue-Zeile:
LOWER RIGHT,
"SETUP,
&,
+
Statt
nun die "untere rechte Ecke" einzugeben, drückt man zu­
nächst
die Anführungsstriche ("). Dadurch gelangt man in den
Modus
der
Druckersteuerung.
Die Fettdruck-Einstellung
lautet
ESC CHR$(69)
bzw.
CHRS (27)
.
Gibt
man
nun
den
Linkspfeil
fein, so wird der ASCII—Wert des nächsten Zei­
chens
um
32
vermindert. Um das Zeichen ESC = CHR$(27) zu
erhalten,
lautet
also die Eingabe <f- ;>. Denn der ASCII-Wert
des
Semikolons ist 59. Da 59-32=27,
empfängt der Drucker durch
diese Eingabe das richtige Signal,
das ihn
"hellhörig '1 macht,
nämlich 'ESC* (ESCAPE = 'Fluchtsequenz').
Gibt man anschließend
*E' ein,
so reagiert er dann entsprechend durch Fettdruck, so­
bald der
Druckbefehl
durch
'ENTER'
und Eingabe der
"unteren
rechten
Ecke" abgeschlossen ist. Stattdessen kann man aber be­
liebig
oft
wieder das Anführungszeichen eingeben,
um weitere
Steuersequenzen anzuschließen.
Will man z.B. die drei Effekte :
■
ELITE
(ESC M ) , Kursivschrift (ESC 4) und
Unterstreichung, so
lautet die Tastenfolge:
/ P P “ f- 5 M ENTER " t- ; 4 ENTER “ <- ; - 1 ENTER
Danach weiter wie gehabt: "Untere rechte Ecke" usw.
* Die Auf­
hebung cjieser Befehle erfolgt entsprechend.
Mit
dem Rechtspfeil <-t) kann man zu anderen Zeichen gelangen,
die der Drucker zwar bereithält, die von der Tastatur aus aber
sonst nicht erreichbar sind. Er bewirkt die Addition von 12B zum
ASCII—Wert des eingegebenen Zeichens.
(Ein
sehr
ähnliches
"Umlenkungsverfahren“ verwendet ZEHDER
in seinem GENIETEXT.)
Man lasse sich
nicht beirren
(be-irren; nicht beir— r e n ) ,
wenn auf
Drücken
des Linkspfeils ein 'H' und statt des Rechts—
pfeils ein 'I' erscheint. Diese Buchstaben werden
durch
die
anschließende Einqab^ajfg 8 schp:_jt>en.
Mas sie bedeuten, habe ich
nicht herausgefunden. Wahrscheinlich dienen
sie nur als Bestä­
tigung, daß man den richtigen Pfeil
gedrückt hat. Dder als Ge­
lächter
über
den
User,
wenn er zuviele
(— H- ) ohne weitere
Eingaben hintereinander
drückt. Denn
dann antwortet
sein Dia—
logpartner eben 'HIHI'!
Eine Kurzanleitung findet sich unt e n Co^sr nebenan).
Ich hätte auch
das Source—Listing
assemhliert ausdrucken kön­
nen. Doch da das sowie niemand abtippt%ind ich das Programm
gern jedem Einsender
einer Diskette mit Rückporto und Parame­
terangabe (möglich sind alle)
zur Verfügung stelle,
unterläl^jt^
dies:
Euer
*K*a-J*o*t*
.. .
>0 3 (dtti) S < ü i e ^
K u r z a n l e i t u n g
-Für-
V C M O D / C M D
ACHTUNG: VCMOD/CMD lauft nur, wenn auf VC/CMD zugegriffen werden kann!
1) EDIT-liode
Replace—Mode etnstfiO-lten. • _
Insert-Mode und zurück
(durch Vorsetzen von “ kann aus einer numerischen
Eingabe ein Label gemacht werden)
lcufB /)
CLEAR
Zeichen löschen
(durch Löschen von " kann aus einem Label
ein numerischer Eintrag gemacht werden)
BREAK
EDIT-Mode ohne Änderung verlassen
ENTER
Rückkehr in den normalen Eingabe-Modus.
(Danach ENTER oder Pfeiltaste drücken)
2 ) Druckersteueruno
Tastenfolge:
/ P P
- 1
4
E
M
e
ESC (Prefix)
Schmal sehr i -ft
Breitschrift
Unterstreichg.
Kursi vschri ft
Fettdruck
ELITE
Drucker RESET
ein
ei n
ein
ei n
ein
ein
2
aus
4
aus
- 0 aus
aus
5
F
aus
aus
P
HEFT
Anm.l:
f- schiebt das eingegebene Zeichen in der
ASCII-Tabelle zwei Spalten nach links;
-) schiebt
das
eingegebene Zeichen 8 Spalten nach rechts
Anm.2: Mehrere Steuerbefehle können, durch ENTER getrennt,
hintereinander eingegeben werden.
Sie werden durch Anführungszeichen < ”> eingeleitet.
Februar
1988
26
K l e i n e
^
f
H e x e n
b e v o r z u g t ;
Nur noch unverbesserliche Nostalgiker im Club benutzen in selbstquälerischer Mühwaltung D1SASSEM. um für EDTASM eine Source zu erzeugen. Nun ja,
ein Indianer kennt keinen Schmerz. Allgemein hat aber sich die Einsicht
verbreitet, daß man das mit DSMBLR für ZEUS tun sollte.
DSMBLR erzeugt 16 Bit-Labels, die mit M beginnen, gefolgt vom Zahlen­
wert ln Hex. Bei 8 Bit-Werten wird entweder die ASCII-Entsprechung zwischen
Hochkommata gesetzt oder die Hexzahl mit einem H dahinter. Schönere Labels
und Zahlenoperanden kann man sich nicht wünschen.
Der Haken: DSMBLR kennt nur Großbuchstaben. So kann eine Zeile z. B. so
aussehen:
MFFOO
LD
A ,0A4H
Natürlich macht es wenig Spaß, mit ZEUS die entsprechenden Labels mit dau­
erhaft niedergehaltener Shift-Taste für die Majuskeln einzutippen. Deshalb
ist die erste Aktion nach einer Disassembly immer, mit der C-Funktion von
ZEUS Kleinbuchstaben zu erzeugen:
cA,a - cB,b - c C ,c - ... - cH,h - cM,m
Wozu ist ein Computer da, wenn nicht *um Automatisieren solch stumpfsinniger
Vorgänge?
Zuvor hatte ich in DSMBLR nach ^ien Stellen gespürt, wo die Großbuch­
staben erzeugt werden. M und H konnten bereits dort in m und h verwandelt
werden (s. u.). Aber die Hex-Ziffern «erden leider auf die gleiche undurch­
sichtige Weise erzeugt wie durch dass DOS ln der Routine an 4068h. Hier
konnte ich nichts manipulieren, weil Ich den äußerst krausen (aber kurzen
und schnellen) Algorithmus nicht durchfcchaue.
Das hier vorzustellende Programm! erledigt das. Es geht ziemlich simpel;
da wird bei den Hexziffern einfach nur* das Bit 5 gesetzt. Daher verweise ich
zur nicht allzu komplizierten Programmlogik nur auf die reichlichen Kommen­
tare. Etwas schwieriger war, das Programm herausfinden zu lassen, was eine
Hex-Ziffer ist und was z. B. ein Zeichen aus einem Mnemonic.
Eine DSMBLR-Source hat als mögliche Zeichen oberhalb ASCII 30h nur die
Ziffern (bis F), H, M und die Großbuchstaben, aus denen sich die Mnemonics
zusammensetzen. Daher konnten die nunmehr kleinen Buchstaben m und h für die
Suche nach einem Label oder einer Hex-Zahl herhalten. Eine Verwechslung mit
dem M aus dem Befehl JP M.nn oder dem H von PUSH qq war nun nicht mehr mög­
lich.
Arnulf Sopp
3E34
00030
0 0 03 1
00332 loorl
00033
00034
00035
00036
1o o p 2
00037
00038
00039
00040 cipher*
00041
0D042
00043
00044
CI
00045
00C46
00047
00048
00049
Q005G
3E68
EDB«
2019
06C4
7E
FE30
3004
OiOO
1SEF
FE41
3SC2
cm
2E
oc
00052
00053
00354
00055 loop4
00056
00057
00056
00059
0006C heiciph
C0061
00062
00063 cioherh
C006ft
F65C
C3C9U
25
synterr
erreiit
extensr
seekh
a
Wenn keine Typbezeichnung folgt, wird automatisch /SRC angenommen. Das ist
die Extension, die DSMBLR generiert, und die ZEUS als gegeben unterstellt,
wenn nichts anderes eingegeben wurde.
00
280E
10F3
1BE9
Io o d O
00025
00026
00027
03D2E
00029 seeka
©
o
C O N V E R T ,S O U R C E < C R >
23
00024
w>
Um die Konversion von Groß- in Kleinbuchstaben abzufahren, wird das
Programm (bei mir heißt es CONVERT/CMD) mit seinem Namen, gefolgt vom Namen
des zu modifizierenden Source-Files aufgerufen:
CD054C
2644
EB
215C52
C07344
EE
118044
CD1C44
2036
210053
CD2444
202E
EB
23
CBF6
26
EB
CD3644
2605
FE1C
CS
181E
E5
010001
C5
3E6D
EDB1
20ie
0604
7E
FE41
3802
CBEE
o
U m dies zu erreichen, müssen in DSMBLR/CMD folgende Änderungen durch­
geführt werden: Im filerelativen Sektor 7 wird das sektorrelative Byte 01h
von 4Dh (M) ln 6 Dh (m) geändert. Im Sektor 6 wird das Byte A4h und im Sektor
8 das Byte 6 Ah von 48h (H) auf 68 h (h) gesetzt. Möglicherweise sind durch
fleißiges Patchen nicht bei allen ln Umlauf befindlichen Versionen die
Diskadressen dieselben. Dennoch lassen sich die zu ändernden Stellen leicht
finden; es sind die einzigen, die LD A,'M' (3E-4Dh) und LD A,'H' (3E-48h)
lauten. Daher sind sie leicht zu finden, z. B. mit FED.
5200
5200
5203
5205
5206
5209
520C
520D
5210
5213
5215
5218
5216
521D
521E
521F
5221
5222
5223
5226
522£
522A
522B
522D
522E
5231
5232
5234
5236
5238
523A
523B
5230
523F
5241
5242
5243
5245
5247
5249
5246
524D
5250
5253
5254
5255
5257
5259
5256
5250
525E
5260
5262
5264
5266
526S
526A
526C
526D
00001 ;
00002 ;
00003 ;
00004 ;
00005
00006
00007 Start
D000£
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
Prograa* zur Kenversion von GrcS- in Kleinbuchstaben
in Sourccs, die vor, DSPBLR erzeugt wurden
(notwendige Änoerung in OSMBLF: fl -) ■ uno H -) h)
Arr.ulf Sopp 198S
0RCCAIL
JR
EX
LD
CALL
EX
L0
CALL
JR
L0
CALL
JR
EX
INC
SET
DEC
EX
CALL
JR
CP
RET
JR
PUSH
L0
PUSH
LD
CPIR
JR
LD
L0
CP
JR
SET
INC
DEC
JR
DJNZ
JR
LD
0R
JP
DH
DEC
POP
LD
CPDR
JR
LD
LD
CP
JR
LD
JR
CF
JR
SET
DEC
OEC
5200h
4cd5h
Z,synterr
DE,HL
Hi.eitensn
4473h
DE,HL
0E,4450h
441ch
NZ,erreiit
HL.5300h
4424h
NZ,erreilt
DE,HL
HL
6,(HL)
HL
DE,HL
4436h
Z.seeki
Ich
Z
erreiit
HL
BC,0100h
BC
A,V
NZ,seekh
B,4
A,(HL)
V
C.ciohen
5,(HL)
HL
C
2 , seekh
1ooo2
loopl
A,34h
80h
4409h
'SRC'
HL
BC
A,V
NZ.wrsect
B,4
A,(HL)
'0'
NC.heicioh
5,00h
1o o p 3
V
C.cipherh
5,(HL)
Hl
C
;HL auf Dateinamen ii Befehlsstring
{falls keine Datei angegeben
;DE <- Dateiname
{Default-Eitension /SRC
:anhängen, falls keine Ent. angegeben
:NL <- Dateiname
{Adresse des 00S-PCB
:Naien in den FCE übertragen
{falls Fehler (z. B. kein gültiger Naae)
{Sektorpuffer
;Fi1e eröffnen
{falls Fehler aufgetreten
;HL (- FCB-Adresse
;FCB +1. Bit 6: EOF-Uert nicht nach jede»
;Sehreibzugriff auf den NEXT-Wert setzen!
{zurück auf FCB +C
{Register zurücktauschen
;einen Sektor einiesen
{falls kein Fehler eufgetreten ist
{Fehlercode ‘Ende der Datei angetrofftn*?
{fertig, falls ja
;sonst anderer Fehler: anzeigen und raus
{Pufferadresse retten
;Zähler für CPIR
{brauchen wir noch für C?DR
jSuchbyte für Labels
finden
{falls Suche erfolglos beendet
;4 Stellen des Labels
{Zeichen laden
;Hei-Ziffer?
{falls Dez-Ziffer
{Klein- aus Großbuchstaben lachen
;auf nächste Ziffer stellen
{Bytezähler für CPIR nachstellen
{dort weiter, falls Sektor überschritten
{bis gegf. 4 Zeichen uigewandelt
;das nächste Label ait V suchen
{Fehlercode ’Syntax o. Trennzeichen ...*
{Bit 7 setzen für RQcksorung aus 4409
{Fehler anz., evtl. zui Aufrufer zurück
lOefault-Extension für Source-Files
{Zeiger auf Ende des Sektorpuffers 53FF
{Zähler 0100 für CPDR
•.Kenner von Mex-Zahlen
;nach V suchen
;Skt. zurückschr., falls Suche erfolglos
;aai. 4 Stellen der Zahl
{Zeichen laden
;eine Ziffer?
{weiter, falls nicht TAB, CR oder Koiaa
{für restlichen CPDR-ZShler 00u~
{nächstes ’h’ suchen
;Hex-Ziffer?
{falls Oez-Ziffer
{Klein- aus Grofibuchsteben lachen
;eine Stelle zurück auf nächste Ziffer
{Sektorpuffer schon unterschritten?
526E
5270
5272
5274
5275
5278
527A
527D
527F
5200
2804
10EB
18E1
El
CD4544
20D1
C03944
20CC
18A2
00065
JR
00066
DJNZ
00067
JR
00068 wrsect POP
00069
CALL
00070
JR
00071
CALL
00072
JR
00073
JR
00074
END
Z.wrsect
loop4
loooj
HL
4445h
NZ.erreilt
4439h
NZ.erreilt
loopO
start
:fa11s ja
:bis segf. 4 Zeichen utgevandelt
-.nächstes V suchen
;Pufferadresse
;FCß auf alten Sektor zuröckposifcionieren
; fa 11s Fehler aufyetreten
;Sektor zurOckschreiben
;falls Fehler
;sonst nlchsten Sektor bearbeiten
;dort Einsprung
ooooo Fehler
cioherh 526C
Io o d I
5232
start 5200
cipher* 5241
1o o p 2
523A
synterr 5249
erreiit 524B
5255
vrsect 5274
1o o d 3
eitensn 5250
loop4 525D
heiciph 5266
seekh 5253
IoopO
seek*
5223
522D
Datenübertragung / Model 4P als Terminal
Durch die bereits serienmäßig in das Model 4P (Model 4 nachrüstbar)
eingebaute RS 232 Schnittstelle und dem unter TRSDOS 6 .x mitgelieferten
Kommunikationsprogramm COMM ist das Model 4 gut gerüstet für
Daten(fern)Übertragung.
Datenfernübertragung mittels Akustikkoppler war mir bereits bekannt.
Durch einen mir kürzlich zugelegten frei steckbaren RS 232-Stecker war
es mir nun aber möglich, einen Null-Modem-Stecker herzustellen und so
die Möglichkeiten einer Direktverbindung zwischen zwei Computern zu
testen. Der Null-Modem-Stecker läßt sich auch mit wenig Aufwand selbst
hersteilen. Allgemein üblich ist nachstehende Verbindung:
DTR 20
Verbindet man nun die beiden Geräte, so lassen sich nicht nur Daten
übertragen, was bei zwei verschiedenen Systemen oft die einzige
Möglichkeit darstellt, einen Datenaustausch vorzunehmen. Eine weitere
Möglichkeit ergibt sich auch durch die Benutzung des einen Geräts als
Hauptcomputer und des anderen als Ein- oder Ausgabeterminal. Auf diese
Art und Weise müßte man ein für uns nicht kompatibles System (z.B.
MS-DOS) mit einem Model 4 bedienen können. Odet man setzt das Model 4
einfach für einen nicht vorhanden Monitor/Tastatur eines Fremdsystems
ein.
Nachfolgend nun einige Verbindungsmöglichkeiten, die ich mal versucht
habe. Als zweites Gerät hatte ich ebenfalls ein Model 4, was natürlich
eine einfache Installierung zuließ. Große Schwierigkeiten dürften sich
jedoch bei anderen Systemen ebenfalls nicht ergeben.
Zunächst muß bei beiden Geräten der Treiber für die RS 232
Schnittstelle installiert werden. Dies geschieht durch den Befehl
SET *CL TO COM/DVR
Anschließend werden die Parameter für die Datenübertragung eingegeben
(Baud, Word, Par i t y ) . Gute Erfolge hatte ich mit folgender
Einstellung:
SETCOM (B AUD=9600,W O R D = 8 ,PARITY=NO)
29
Tut mir leid. Papi - Dein Computer istzu primitiv
fürmeine Hausaufgaben.
Bei einem Versuch, die Übertragung mit 19200 Baud vorzunehmen, stieg
das System aus.
HEFT
Nun noch kurz der Unterschied zwischen den zu benutzenden Befehlen LINK
und ROUTE. LINK koppelt ein Gerät an das andere an, während ROUTE ein
*^3
Gerät auf ein Ersatzgerät umleitet.
Februar
Der Monitor wird als "DO", die Tastatur als "KI" und die RS 232
<Qqq
Schnittstelle als "CL" bezeichnet.
Durch COMM *CL wird das Kommunikationsprogramm von TRSDOS aus
Q A
aufgerufen.
O U
Bei den nachstehenden Beispielen ist davon auszugehen, daß es sich bei
Gerät 2 um das Model 4/4P handelt. Gerät 1 stellt das evtl. Fremdsystem
dar.
Bsp.
1:
Gerät 1:
Gerät 2:
LINK *D0 »CL
COMM *CL
Mit diesem Aufbau wird Gerät 2 im Prinzip nur als Zweit- oder
Ersatzmonitor benutzt. Das Gerät 1 dient als Hauptcomputer, während
Gerät 2 nur die Daten von Gerät 1 empfängt, jedoch keine Daten an Gerät
1 senden kann.
Bsp. 2
Gerät 1:
Gerät 2:
LINK *KI «CL
COMM »CL
Gerät 1 ist wieder der Hauptcomputer. Dieses Mal ist anstatt des
Monitors jedoch die Tastatur angekoppelt. Die Befehle für Gerät 1
können nun noch zusätzlich/ersatzweise über Gerät 2 eingegeben werden.
Sollen die eingegebenen Befehle auch auf Gerät 2 angezeigt werden, sind
innerhalb COMM noch die Anweisungen DUPLX ON und ECHO ON einzugeben.
Befehle an Gerät 1 können von beiden Geräten eingegeben werden.
Bsp.
Es wäre interessant zu wissen, bei welchen Systemen sich das Model 4
als Terminal einsetzen läßt. An einem Erfahrungsaustausch wäre ich
interessiert.
' " 2t u
(Den oben erwähnten RS-232-Stecker gibt es für DM 18,25 DM bei
Westfalia Technica, 5800 Hagen. Die Signale sind durch Brücken beliebig
zu vertauschen).
Klaus Hermann
Druckausgabe für COBOL—Programme
Der Schreibaufwand für COBOL-Druckausgaben
ohne Report-Generator ist
auf Grund der
fehlenden expliziten Adressierung und Längenangaben sehr
groI3. Jede Druckzeile muss in der Form
01
Gerät 1:
Gerät 2:
LINK »KI »CL
LINK »DO »CL
COMM »CL
Wie Bsp. 2, nur daß jetzt das Ergebnis des an Gerät 1 gesandten Befehls
auch auf Gerät 2 angezeigt wird.
Gerät 2:
PIC
PIC
PIC
PIC
PIC
PIC
PIC
X.
X (5) .
X.
X (20)
X.
X (20)
X.
definiert
werden.
Müssen
AB
viele
unterschiedliche Druckzeilen
programmiert werden, so ist der Schreibaufwand nicht unerheblich.
Bsp. 4
Gerät 1:
Druckzeilel.
FILLER
LAUFENDE-NR
FILLER
NAME
FILLER
VORNAME
FILLER
02
02
02
02
02
02
02
3
LINK »KI »CL
ROUTE »DO »CL
COMM »CL (evtl. HNDSHK ON)
Auf
folgende Weise
läßt
sich hier Abhilfe schaffen.
Man schreibt
nachstehendes COPY-Element
ab und
speichert sich dieses unter einem
beliebigen Namen (z.B. DRUCK).
Hier wird die Bildschirmausgabe auf Gerät 1 unterdrückt und direkt an
Gerät 2 geleitet. Gerät 1 wird nun direkt von Gerät 2 aus bedient.
Dieser Aufbau läßt ein Arbeiten mit Gerät 1 zu, wenn dort z.B. Tastatur
und Monitor nicht vorhanden sind. Voraussetzung wäre dann allerdings,
daß beim Booten von Gerät 1 die o.a. Einstellung automatisch
vorgenommen wird.
Bei der Bildschirmausgabe auf Gerät 2 ist zu beachten, daß die Daten
seriell, also Zeile für Zeile, ausgegeben werden. Ursprünglich direkt
adressierte Bildschirmpositionen werden also auf Gerät 2 direkt
hintereinander ausgegeben.
Weiterhin ist noch zu beachten, daß die Datenausgabe von Gerät 1 über
das Betriebssystem erfolgen muß. Teilweise werden die auszugebenden
Daten unter Umgehung des Betriebssystem durch direkte Adressierung
ausgegeben bzw. eingegeben, öfters findet man dies bei MS-DOS unter
8088-Proz., um so das System etwas schneller zu machen. Auch bei der
Grafikausgabe kann es zu Problemen führen.
Hauptsächlich einsetzen lassen sich diese Verbi n g u n g e n , um
Betriebssysteme zu bedienen. Für die Bedienung von Anwenderprogrammen
ist diese Verfahrensweise nur bedingt geeignet.
01
01
01
01
DRUBER
DOOl REDEFINES DRUBER
D002 REDEFINES DRUBER
D003 REDEFINES DRUBER
PIC
PIC
PIC
PIC
X(8 0 ).
X(01) JUSTIFIED RIGHT.
X (02) JUSTIFIED RIGHT.
X (03) JUSTIFIED RIGHT.
01
DOBO REDEFINES DRUBER
PIC
X(80) JUSTIFIED RIGHT.
Dieses COPY-Element
kann nun mit
der COBOL-Anweisung ’COPY DRUCK' für
alle zukünftigen Programme benutzt werden. Die Cangweilige Definition
des oben stehenden Ausgabebereichs ist somit nur eine einmalige Sach».
Das Füllen des Druckbereichs erfolgt nun
von RECHTS nach LINKS.
Vor
Bearbeitung
des Ausgabebereichs wird dieser
gelöscht.
Wenn als ein
auszugebender
Wert auf die Schreibposition 60-63 plaziert werden soll,
so
erfolgt
die Übertragung
mit
(es muß
der Name der
höchsten
Druckstelle angegeben werden)
z .B .
MOVE SPACE TO DRUBER.
MOVE "TEXT" TO D063.
MOVE "UEBERSCHRIF T " TO D037.
WRITE ZEILE FROM DRUBER AFTER 1.
Viel Spaß
Werner Förster
*»
V e r - g
V
o
r
g
1 e
e
s
c
*
h
i
c
i
h
c
h
s
t
t e
s
t
e
Wie ihr im letzten
Info lesen konntet, habe ich ein Model
100
In
Besitz,
auf dem viele meiner
Briefe
und Texte
(so z.B.
dieser) entstehen. Zum Erstellen der Texte kann man den 100'ter
gut
verwenden,
zum Drucken
derselben taugt das Computerchen
allerdings nicht.
Daher schiebe ich die Geistesergüsse nach dem
tippen
über die RS232—Schnittstel1e auf das Model
4p.
Hier
werden sie mittels TSCRIPS formatiert und gedruckt.
Störend wirkt sich dabei
aus,
daß die
Umlaute des Model
100
(selbstverständlich)
an einer
anderen
Stelle
im Zeichensatz
liegen,
als die des 4p. Dieses Problemchen ist
aber mit einem
kleinen Konvertierungsprogramm sehr
leicht
zu
lösen.
Dieses
Programm entstand zunächst in BASIC und glänzte vor allem durch
seine Lahmheit. Aus diesem Grunde schrieb ich, in einer ruhigen
Minute, ein Programm in Pascal.
Unter NewDDS laufen auf dem TRS BO mehrere Pascal-Dialekte. Den
ersten Versuch startete ich mit PASCAL
BO.
Nachdem das relativ
gut
klappte,
kam ich auf
die wahnwitzige Idee, das Programm
auch
in PASCAL 4.5 und Al cor— PASCAL zu
realisieren und das
ganze als eine Art Vergleichstest zu gestalten.
Als
nach
mehreren
Stunden
(teilweise hatte
ich keine
Dokumentation zu den PASCAL-Compi1e r n ) alle drei
Programme
liefen,
wollte ich das Problem auch noch in RPNL umschreiben.
Dazu hatte
ich zwar eine wirklich
gute Dokumentation, war aber
trotz mehrstündiger verzweifelter Versuche nicht in der Lage,
ein funktionsfähiges Programm zu erstellen. Als
ich dann auf
dem Nordlichtertreffen
Kurt Müller
traf, der
ja RPNL unter
NewDOS nutzbar machte,
verdonnerte
ich ihn sofort dazu,
ein
entsprechenden Programm in
"seiner" Sprache zu erstellen. Last
but
not
least wurde Gerald Schröder
damit
beauftragt,
das
Umlauteproblem in Assembler zu lösen.
Im Anschluß könnt ihr also zunächst einmal den Vergleichstest
zwischen
den drei PASCAL—Compilern
und
im Anschluß daran die
Erläuterung der Problemlösung in RPNL und Assembler lesen.
Ich
wünsche euch
viel Spaß bei der Lektüre und hoffe,
ihr werdet
dadurch
dazu angeregt, einmal
ein eigenes
Problem in PASCAL,
RPNL oder Assembler statt in BASIC zu lösen.
P a s c a l
8 0
Pascal 80 erinnerte mich bei der
ersten
Benutzung an Turbo—
Pascal, weil
es,
genau wie
dieser
wohl
bekanntest
PascalCompiler
unter CP/M,
Editor,
Compiler
und Runtimelibary
in
einem Programm vereint. Nach
dem Start
erscheint ein Menü mit
den Optionen: E — Editor
Q — Quit to DOS
K - Kill (Clear) Editor
C — Compile Program in Editor
R - Run Program in Editor
S — Save Program in Editor
L - Load Program to Editor
A — Append Text to Editor
W - Write Object Code to Disk
X — Execute Program from Disk.
Der Editor
ist zwar bei weitem nicht so
komfortabel
wie der,
den man von
Turbo gewohnt ist, aber
im wesentlichen läßt sich
gut damit
arbeiten.
Das Compilieren geht
recht flott vonstat­
ten.
Dabei wird der Quelltext auf
dem Bildschirm gelistet und,
falls aufgetreten,
ein Fehler angezeigt.
Wenn man nach einem
Fehler wieder
in den Editor geht, befindet sich
der Cursor in
der Zeile, in der der Fehler aufgetreten ist!
Wurde ein
Quell text fehlerfrei übersetzt,
kann man das ent­
standene Programm mit 'R' direkt vom Menü aus starten. Will man
es als /CMD—File
abspeichern, tritt eine deutliche Schwäche des
Sprachsystems zutage.
Um das zu tun, muß man nämlich folgende
Schritte durchlaufen:
Quelltext compilieren und Objectcode abspeichern
PASCAL verlassen
AUTHCODE/CMD starten
PASCAL starten
AUTH0R/SRC laden, compilieren und starten
mit der
Option 'X' wird dann
das gewünschte Programm als /CMDFile auf Diskette geschrieben.
Diese
Procedur ist recht umständlich und ziemlich zeitaufwen­
dig.
Die Programme AUTHCODE/CMD und AUTH0R/SRC dienen
hier
dazu, den
Objectcode, zusammen
mit der Runtimelibary (getrennt
von Editor und Compiler)
abzuspeichern. Einen richtigen Linker,
wie
er bei anderen PASCAL-Systemen
üblich
ist,
gibt es hier
nicht. Das erklärt auch die ungewöhnliche Größe des entstehen­
den Programms, in dem immer das gesamte Laufzeitsystem vorhan­
den ist, unabhängig davon, was gebraucht wird und was nicht!
Auffällig an Pascal
80 ist die Möglichkeit
der Verwendung von
INCLUDE— und CHAIN—Files, wobei auch diese beiden Funktionen an
Turbo-Pascal
erinnern.
Mit INCLUDE kann man Quelltexte, die in
einer Diskettendatei stehen, whärend des Compilierens in den
im
Editor
befindlichen
Sourcecode einbinden.
CHAIN
ähnelt den
Overlays von
T.—P. und erlaubt es, separat compilierte Object—
dateien aus einem laufenden Programm heraus aufzurufen.
Abschließend wär& zu sagen, daß man Pascal
80 sein Alter (1981)
nicht
ansieht und nur manchmal, vor allem bei Diskoperationen,
daran erinnert wird,
daß es urspünglich für TRSDOS geschrieben
war (aber unter
NewDOS sowohl auf dem Model 1 als auch
auf dem
3/4/4p lauffähig ist). Das mit
&0 Seiten
n i c h t 1 allzu umfang­
reiche
Handbuch
erklärt
die
Möglichkeiten,
Erweiterungen
(gegenüber
Standard—Pascal) und
auch die Einschränkungen des
Systems sehr gut.
P a s c a l
4 - 5
Pascal
4.5 besteht,
im Gegensatz zu Pascal
80
oder
TurboPascal , aus drei Komponenten: Editor
— > PASEDIT/CMD
Comp i1er
-> PASCT/CMD
Laufzeitsystem -> PASCAL/CMD.
Das mag den
BASIC—Freak zunächst einmal
abschrecken, ist aber
bei
näherem hinsehen
(und einigen
Testläufen)
gar nicht
so
schlimm.
PASEDIT
ist
ein sehr komfortabler Editor, der mich allerdings
beim ersten
Diskfehler (Schreibversuch auf
schreibgeschützte
Diskette) fürchterlich erschreckt
hat.
Nach Auftreten
eines
DOS—Fehlers landet man nämlich grundsätzlich im Betriebssystem.
Welch ein Glück, daß dabei der
soeben erstellte Quelltext nicht
zerstört wird, sondern bei
erneutem Aufruf von PASEDIT restau­
riert
werden
kann. Statt des systemeigenen
Editors kann man
übrigens jederzeit
auch ein Textverarbeitungssystem benutzen,
solange es in der Lage ist, ASCII-Files auf Diskette abzulegen.
Im Prinzip ist also von SCRIPSIT bis LESCRIPT jeder Editor ver­
wendbar !
Nachdem man den
Quell text erstellt
hat,
steht
man
vor
dem
Problem,
den
Compiler
aufrufen zu müssen.
Manchem,
der sich
noch nie
mit
einem Compiler herumgeschlagen hat,
wird
diese
Formulierung
seltsam Vorkommen, aber
der Compileraufruf
ist
tatsächlich ein nicht zu unterschätzendes Problem.
Schließlich
muß
man dem Compiler
(ebenso wie manchen Linkern)
zusätzlich zum Namen des zu übersetzenden
Programms
auch noch
allerhand
weitere Informationen
geben
(wer
sich
einmal
mit
BASCOM herumgeschlagen hat, wir ein
Lied davon singen können).
PASCT
geht mit dem
Programmierer da
sehr viel san-fter um- Er
'fragt nicht
nur nach
dem Namen
für
Ein— und Ausgabedatei
sondern auch nach den
gewünschten Optionen,
und davon gibt
es
immerhin sieben.
Weniger gut -finde ich
die Art, wie der Compiler Fehler anzeigt.
Statt Klartextfehlermeldüngen, wie es sich in der heutigen Zeit
wohl gehört, bekommt
man
einen
Fehlercode (z.B. Error 104) an
den Kopf
geworfen und muß sich aus einer Liste den Fehlergrund
heraussuchen.
Und dann
beginnt
das Spielchen, das
einem
die
Freude an Pascal (und auch an anderen C o m p i 1ersprachen) vermie­
sen kann: 1. Quelltext erstellt und abgespeichert
2. Compiler aufrufen
3. Fehlercode notieren (dabei vergißt man mit an
Sicherheit grenzender Wahrscheinlichkeit, sich die
Zeile zu notieren, in der der Fehler au-fgetreten
i st !)
4. Editor au-fru-fen und Fehler beheben
und auf ein neues!
Auch Pascal
4.5 hat keinen Linker, vielmehr
kann
man
mit dem
Programm PASCAL/CMD
die
als Objectcode abgespeicherten
Pro­
gramme starten. Um eigenständige
/CMD—Files zu erzeugen, muß
man den com p i 1 ierten
Objectcode mittels des DOS— Befehls APPEND
an die Datei PASCAL/OBJ anhängen. Zuvor
sollte man sich natür—
lieh von PASCAL/OBJ ein
Backup angefertigt haben!!! Obwohl sich
Pascal 4.5
in diesem
Punkt
nur in der
Verfahrensweise, nicht
aber im Prinzip von
Pascal 80 unterscheidet, entstehen erstaun­
lich kleine /CMD—Programme. Weiterhin
hilft einem das Programm
PASJCL/CMD, welches
auch im Quellcode
vorliegt, beim Erstellen
von lauffähigen Programmen, indem es nach
verschiedenen
Abfra­
gen
(Name
des zu übersetzenden
Quelltextes,
Compileroptionen
etc.)
eine
/JCL—Datei anlegt und mit ihr
sowohl
den Compiler
startet als auch das "Binden" zum fertigen Programm erledigt!
Die Möglichkeiten
von
INCLUDE— und
CHAIN—Dateien
fehlen bei
Pascal 4.5, dafür glänzt
es aber durch eine sehr gute Zusammen­
arbeit
mit NewDOS und ein paar sehr brauchbare Sonderbefehle.
So
kann man
mit MOVEDN und MOVEUP Speicherbereiche verschieben
(ähnlich
dem Z80— Befehlen LDDR und L D I R ) , PEEKen und POKEn und,
was sich
bei
meinem Problem
als besonders nützlich
erwiesen
hat,
mit
TITLE(file) Dateinamen direkt von der Tastatur einie­
sen !
Die Anleitung
zu
Pascal 4.5
ist noch spärlicher ausgefallen,
als die Pascal
80-Anleitung, durch
die
klarere
Gliederung
findet man sich
aber sehr schnell zurecht.
Etwas schwach finde
ich die Erklärung der Befehle,
die nicht
zum Pascal—Standard
gehören
(z.B. TITLE usw.). Hier
hilft nur das Studium der mit­
gelieferten Quelltexte (PASJCL/PAS) und viel probieren!
A l c o r -- F* a s c
ä
1
Eigentlich dürfte ich mich
über
dieses Sprachsystem gar^nicht
äußern, da
ich
zu meinen
Versuchen damit keinerlei Anleitung
vorliegen hatte. Daraus resultierten
natürlich viele Fehlschlä­
ge und eine gewisse Antipathie gegen
diesen
Compiler. Trotzdem
möchte ich wenigstens einige Worte darüber
verlieren, jedoch an
dieser Stelle schon bemerken, daß
meine Aussagen rein subjektiv
si nd '
Im Gegensatz
zu den Editoren von Pascal 80 und 4.5 kann man mit
ED/CMD, dem Alcor— Editor,
ohne Anleitung
überhaupt nichts an­
fangen. Selbst heftigem und langwierigen Herumprobieren wieder—
setzt er
sich erfolgreich!
Einziger Vorteil
ist der Umstand,
daß
der
Compiler
Quellcodes im ASCII—Format verarbeitet und
damit
praktisch wieder
jeder
Texteditor
zum Erstellen der
Pascal programme nutzbar ist. Ich benutze auch hier PASEDIT/CMD,
der mir unter Pascal 4.5 ans Herz gewachsen ist!
Der
Compiler fragt nach dem Start nach Ein— und Ausgabe-, sowie
nach der
Listdatei, in die
er das Compi1erprotokol1 ablegen
soll. Auch hier werden
leider nur Fehlernummern angegeben,
den
Klartext muß man sich aus
einer
Fehlerliste holen. Und natür­
lich kommt dann auch hier die, beim Pascal
4.5 schon beschrie­
bene,
umständliche und langwierige
Entwanzung des Quelltextes,
über
die Übersetzungsgeschwindigkeit
an sich
kann man sich
nicht beschweren.
Nach dem Compilieren
kann man
sein Programm, inzwischen liegt
es als /OBJ—File vor,
mit Hilfe
des Laufzeitsystems starten
(RUN progname/obj). Um ein eigenständiges Programm zu erhalten
muß man den Linker zu Hilfe rufen, der die benötigten Routinen
aus den verschiedenen Dateien
zusammensucht und bindet. Natür­
lich muß
auch hier
die
komplette Runtimelibary mitgeschleppt
werden und die
/CMD—Files sind entsprechend groß,
dafür kann
man aber (so man
kann!) von anderen Compilern
(z.B. Alcor— C)
erzeugte /REL-Dateien in die Pascal programme einbinden.
Etwas was mich an Alcor— Pascal sehr stört ist die Tatsache,
daß
jedes damit
erstellte Programm nach
seinem Start erst einmal
fragt,
welches _die normalen
Wege für
INPUT und OUTPUT sein
sollen.
Sicher ist es manchmal sehr angenehm, an dieser Stelle
z.B. den Printer
als Ausgabemedium angeben zu können, trotzdem
nervt
nach mehreren
Programmstarts die ständige Fragerei
beträchtli c h .
Leider kann ich hier nichts über das Handbuch zu diesem System
aussagen,
denn es wäre
sicher ein Pluspunkt
für Alcor!
Auch
scheint der
Sprachumfang
recht beachtlich zu sein, was ich aus
den
mir vorliegenden Quelltexten ersehen kann. Was mir weniger
gefällt ist das Filehandling,
das mir etwas umständlich er—
scheint. Zu bemerken wäre
noch, daß es Alcor—Pascal sowohl
für
das Model 1 als auch für
die Modelle 3/4/4p gibt. Im Gegensatz
zu Pascal 80 und 4.5, von denen es nur
eine Version für alle
TRS 80—Modelle gibt, ist
aber der
Compiler für das M. 1 nicht
auf den anderen Maschinen lauffähig und umgekehrt.
P r o b l e m
und
Pr~oQr~ammablaut'fpletn
Schon im Vorwort habe ich
kurz
das Problem angesprochen,
wel­
ches zu lösen gilt. Hier nun die genaue Problemdefinition:
aus einer Datei
unbestimmter Länge soll der gesamte
Inhalt
in
eine zweite Datei übertragen
werden, dabei sollen
verschiedene
Zeichen durch andere ersetzt werden.
Aus dieser Aufgabenstellung ergibt sich folgender Ablaufplan:
(in den sich
übrigens
ein
Fehler
eingeschlichen hat!
Die
Abfrage "EOF Eingabe-Datei?"
muß natürlich am Ende der Schleife
"Buchst.
einiesen
/ Buchst.
kritisch?
/ Buchst.
ausgeben"
stehen. Da
ich aber
zu faul
bin, das Flußdiagramm noch einmal
zu zeichnen, lasse ich es bei dieser Anmerkung!)
#
P r o g r a m m
Ohne größere Umschweife möchte ich euch jetzt auch
Lösung des Problems in Pascal 4.5 präsentieren.
PROGRAM M 1OOTSC
gleich die
(IN P U T ,O U T P U T ,FILEA,FILEB);
VAR C
CIN
CHAR;
INTEGER;
PROCEDURE U M L A U T (C IN :INTE G E R );
BEGIN
CASE CIN OF
182s CIN:=123;
183: CIN:=124;
184: CIN:=125;
185: CIN:=126;
177: CIN:=91;
178: CIN:=92;
179: CIN:=93;
END;
C:=CHR(CIN);
END;
(«Variable deklarieren«)
(«Unterprogramm UMLAUT*)
(«je nach Wert von CIN
eine der folgenden
Aktionen ausführen!*)
(«Wieder in Buchstaben
umwandeln*)
BEGIN
WRITE(CHR(28),CHR(31));
(«Bildschirm löschen«)
W R I T E L N ('U M L A U T ');
(«Startmeldung ausg.«)
WRITELN;
W R I T E L N ('Model lOO — > TSCrips Umlaute—U m w a n d l e r ');
W R I T E L N ('C by H. O b e r m a n n ') :
WRITELN;
W R I T E ( Eingabe-Datei? ');
(«Eingabe—Datei abfr.«)
TITLE(FILEA);
W R I T E ('Ausgabe—Datei? ');
TITLE(FILEB);
(«Ausgabe-Datei abf r .*)
RESET(FILEA);
(«Eingabe—Datei
eröffnen«)
WRITELN;
REWRITE(FILEB) ;
(«Ausgabe—Datei eröffnen
sollte eine Datei
gleichen Namens schon
einmal bestehen, wird
diese zuvor gelöscht!«)
REPEAT
(«wiederhole folgendes —*)
READ(FILEA,C);
(«Buchstabe ei niesen«)
CIN:=ORD(C);
(«in Integer umwandeln*)
IF (CIN > 176) AND (CIN < 186) THEN UMLAUT(CIN);
(«im kritischen Bereich?
Wenn ja, dann Umwandeln!«)
(«Buchstabe schreiben«)
WRITE(FILEB,C) ;
UNTIL EOF(FILEA);
(«bis EOF erreicht!*)
WRITE(FILEB,CHR(0));
(«EOF für TSCRIPS«)
CLOSE(FILEA);
(«Dateien schließen«)
CLOSE(FILEB);
WRITELN('Umlaute—Umw a n d 1ung beendet!');
END.
HEFT
E3
Selbstverständlich weiß
ich, daß das Programm noch nicht ganz
sauber
programmiert
ist
und daß sich
die
eingefleischten
Pascal —Programmierer
die Haare raufen
werden!
Trotzdem zeigt
das Progrämmchen meiner Meinung nach, daß der Umstieg von BASIC
zu Pascal gar nicht so schwer ist! Vor allein die Lesbarkeit des
Programms ist um Welten besser als die des, von mir an zunächst
erstellten, BASIC-Programms. Ganz
zu schweigen,
von der erheb1ichen Geschwindi gkei tsstei gerung!
Februar
1933
38
V e r g l
ei a h
An dieser Stelle möchte ich einen kurzen
Vergleich zwischen den
verschiedenen Programmen
machen, die, in verschiedenen Sprachen
bzw.
Dialekten, zur
Lösung
des Problems
inzwischen erstellt
wur d e n .
Größe in Grans
Geschwindi gkeit
Sprache/Di alekt
in Sekunden
Quel 1 text CMD-File
Alcor-Pascal
Pascal 80
Pascal 4.5
RPNL
Assembler
1
1
1
3
3
9
10
3
1
11.7
11.0
B.5
10.5
7.5
- 13.0
- 15.0
- 9.2
-
Die Geschwindigkeit
wurde mit einem Text
gemessen, den
ich
gerade auf dem Model 100 erstellt
hatte und der durch Zufall
vorlag. Der Text war ca.
1.5 kByte lang und die Tests erfolgten
unter NewDOS auf dem Model 4p mit einer
Taktfrequenz von 4 MHz.
Die Zeitendifferenzen bei den
einzelnen Programmen ergeben sich
daraus,
daß
einmal
die
Programmnamen
mit und einmal
ohne
Drivenummer angegeben wurden.
a
Das Programm basiert auf einer Tabelle, in der die fragl ichen
ASCII-Codes und ihr Ersatz aufgelistet sind:
8.5
Die Größe der Dateien habe ich in Grans angegeben, weil ich
es
(zumindest
bei
einer
solchen
Anwendung)
-für uninteressant
halte,
ob ein
Programm 196 oder
248
Byte
lang istBeide
Programme benötigen auf der Diskette auf alle Fälle 1 Granule!
F
Nachdem Hart aut- sich nun ausgiebig zu den FASCAL-Versionen in
seinem Test geäußert hat, folgt nun
mein
bescheidener Beitrag
dazu.
Da
das zu
lösende Problem bereits ausgiebig beleuchtet
wurde, kann ich mich auf eine Beschreibung des Programmaufbaus
beschränken.
s i -t
Eigentlich sollte
sich jeder
Leser das Fazit
aus den obrigen
Angaben selbst
herauslesen
können. Trotzdem hier noch ein paar
zusammenfassende Sätze:
1. Wer
Wert auf
Geschwindigkeit legt und sich von BASIC (auch
da gibt es ja Compiler) trennen
möchte,
dem stehen vor
allem
die Sprachen PASCAL, RPNL und Assembler zur Verfügung. Ich weiß
natürlich,
daß ich
mir
mit
dieser
Behauptung
alle Anhänger
anderer Sprachen
wie COBOL,
Forth
usw.
zum Feind
mache, bin
aber
erst dann
von
dieser Behauptung
abzubringen,
wenn eine
Problemlösung in der entsprechenden Sprache im Info erscheint!
2. Am schnellsten ist
sicherlich die
Assemblerlösung, aber nur
Freaks wie Gerald
Schröder und Arnulf
Sopp schütteln ein
sol —
ches Assemblerprogramm (so einfach
es
auch, gegenüber den Pro­
grammen, die wir von den
beiden sonst gewohnt sind,
auch
sein
mag) innerhalb von ein paar Minuten aus dem Ärmel.
3. Am wenigsten
zu Schreiben hat man in Pascal (die Quelltexte
in allen drei Dialekten umfassen nur ein Granual, die RPNL— und
die Assembler1ösung
bringen je 3 Grans auf die Waage!). Hat man
die Qual der Wahl zwischen den Pascal-Compilern, weil man
alle
drei zur Verfügung hat, würde ich folgende Wahl treffen:
Pascal 80
- für Einsteiger und zum Lernen!
Pascal 4.5
- für normale Anwendungen, für Anfänger geeignet!
Alcor Pascal - für den Fortgeschrittenen (und nur mit Handbuch
4. Wer sich gerne einer
sehr guten (schließlich vereinigt
RPNL
die Vorzüge von
Forth mit denen von Pascal), leider
aber sehr
seltenen
(besser vielleicht
exotischen) Sprache zuwenden'möch­
te, die noch dazu
sehr maschinennahes Programmieren erlaubt und
außergewöhnlich gut dokumentiert
ist (sie liegt sogar im Quell—
text vor!), kann sich auf RPNL stürzen!
Egal für welche Sprache und welchen
Dialekt ihr euch entschei­
det, ich wünsche euch
auf
jeden Fall viel Spaß und Erfolg beim
Programmi e r e n , euer
*
itcvrAmu/1 QA>e/T'i*cvTVTi
*
CALL ASCII, TAB
Bö 7B
B7 70
Bö 7D
B9 7E
Bl 5B
B2 5C
B3 5D
00
00
Kon ver t i er ungs-Tabelle
Erster Eintrag altes Zeichen,
. . .zweiter Eintag neues Zeichen
■Tabellenende.
CEND
CODE TABELLE
21 A S C H . TAB
E5
CEND
( -> adrl > Jabellenzeiger auf den Stack
LD
HL, ASCII. TAB
PUSH
HL
Da RPNL keine. DATA-Anweisung kennt, muß, um derartiges zu errei­
chen, ein Trick angewandt werden. Die Daten-Tabelle wird einfach
mit Hilte der CALL-Definition erstellt (s. CALL ASCII. TAB).
Auf
dieser Definitionsstufe ist es dem Compile nämlich egal, was für
Daten
vom Anwender vorliegen. Es muß nicht notwendigerweise ein
Unterprogramm sein ! Venn wir schon freie Hand haben,
dann
ist
es leider auch
'unser Bier', dafür zu sorgen, daß wir auch an
die Daten kommen. Dazu muß eine Ebene höher ein
weiteres
Wort
definiert
werden,
welches eben diesen Zeiger heranschafft Cs.
CODE TABELLE*. Damit wäre der Zugriff auf das
Wesentl iche
vor­
erst sichergestel 1 1..
Da
die Losung
’Austausch von Unerwünschtem gegen wichtigeres'
lautet, ist natürlich noch ein Programm von Nöten, welches sol­
ches zu
leisten
im Stande ist. Als erstes der Gegenstand der
Diskusion:
PROGRAM 7C0NVERT
; (charl adrl -> char2 adrl flag)
OVER OVER ?<B) =
; TOS = Tabelleneintrag ?
IF
COUNT ? INC COUNT :=
DUF INC ?(B)
;Ersatzzeichen holen und...
SWAP ROT DROP
; . . .altes Zeichen ersetzen
TRUE
;Setze Erfolgs-Flag
ELSE
FALSE
;Keine Konvertierung
END IF
END
‘i
PROGRAM
DUP
177
185
IF
TEST. ASCI I
DUP
< SWAP
> OR NOT
; (charl -> char2)
iprüfe ob Zeichen in der Tabelle
;Diese Bereichseingrenzung 1st
;Problemabhängig !!!
TABELLE
;Tabellen-Zelger auf den Stack
REPEA T
7C0NVERT
;Zeichen ersetzen
OVER ?(B) 0= OR
; Tabellenende ?
UNTIL
IHC INC
;Nein !, nächster Eintrag
LOOP
DROP
;Nur das Zeichen selbst bleibt. . .
ENDIF
; . . . auf dem Stack
CHARACTERS ? INC. CHARACTERS :=
BND
D a s Wart 7CONVERT prüft das Zeichen auf dem Stack, ob es in der
Tabelle
enthalten 1st. Venn Ja, wird es gegen das Ersatzzeichen
ausgetauscht, über den Erfolg oder Mißerfolgt gibt
ein Flag
auskunft,
welches alt auf dem Stack
übergeben
wird. Damit
TEST. ASCII nicht an Informationen erstickt,
ist
es
unbedingt
notwendig,
daß die Menge der Daten nicht zu groß wird. Mehr wie
vier Zahlen sind auf dem Stack einfach nicht zu verwalten,
ohne
daß man
ln unvermutete Probleme gerät. Deshalb 1st es wichtig,
das 7CONVERT Im Erfolgsfall das alte Zeichen vom Stack entfernt.
Wer das nicht
elnsehen kann,
versuche
das Problem im
Wort
TEST. A S C I I zu lösen.
Da nur einige wenige Zeichen zu Prüfen sind, wird durch eine Be ­
reichsabfrage eine Vorauswahl durchgeführt. Liegt ein Zeichen im
interessierenden Bereich,
wird weiter geprüft und die Tabelle
d u rchsucht. Am Ende der Routine
wird noch
etwas mitgezählt,
damit
am Schluß die Anzahl der durchgeleierten Zeichen bekannt
gegeben
werden
kann.
Das Gleiche passiert
ln der Routine
7CONVERT, hier wird die Anzahl der Ersetzungen mitgezählt.
Damit
ist der Job für ein einzelnes Zeichen bereits erle d i g t .
Fehlt nur noch das Prinzip auf eine
beliebige Menge auszudeh­
nen. Im Grunde nichts leichter als das: Man programmiert ein wei­
teres
Wort
! Womit wir beim Hauptprogramm wären. Damit bei der
Eingabe der Filenamen kein Murks passieren kann, sorgt das
Wort
GET.NAMES für saubere
Verhältnisse. Hier wird geprüft, ob der
Quellfile existiert und das Quelle
und Ziel
nicht
Identisch
sind.
Sind diese Dinge OK, kann die eigentliche Arbeit starten
und die Hatz nach den falschen Bytes beginnen.
Ein weiterer Höhepunkt der Byteschaufelei
findet
sich
ln der
Hauptschleife
im Haupt programm.
Als Ende-Kennung sind drei
Zustände vorgesehen:
1. Ein Fehler wird bei READF oder WRITEF erkannt
2. Das Fileende wird erkannt,
3. Die NULL für SCRIPSIT File-Ende wird erkannt.
Damit beides richtig zur Geltung kommt,
wird ein eifriges
Bäumchen-Wechsle-Dlch-Spiel
auf dem Stack getrieben. Damit die
Sache beim ersten gelesenen Byte nicht außer Tritt gerät muß die
D u m m y - ’0' auf den Stack gelegt werden. Damit verständlich
wird.
was sich
da
so abspielt, einige Momente im Leben eines Daten­
stacks zu m mitschreiben: 0 = Dummy, d = Databyte, f = Flag
READF
0
d
TOS-> f
ROT
OR
OVER
0=
OR
d
f
0
-
d
fl
d
fl
d
d
fl
f2
d
f3
-
Wie Jeder unschwer erkennen kann, fehlt eine NULL
Die
wird
von dem
WRITEF im zweiten Teil der REPEAT/UNTIL/LOOF Schleife
erzeugt (das ist deren Flag über die saubere Abwicklung des ln
den Zielfile geschriebenen Bytes).
Tritt also beim Schreiben
oder beim Lesen ein Fehler auf, so bleibt das nicht
unbeachtet.
Ebenso
wie
das SCRIPSIT- oder File-Ende nicht übersehen werden
kann.
;Dummy '0'
REPE A T
FILE1 READF
R O T OR
OVER 0= OR
UNTIL
TEST. ASCI I
FILES WRITEF
LOO P
DROP
0 FIL E 2 WRITEF DROP
;hole ein Byte
; (Dummy ~ ' 0 ’> OR (flag)
;etwa Tscript Fileende 7
;nur weiter, kein Fehler
;schreibe ein Byte
;vernichte Stop-Flag
;File-Ende markieren
Bel diesem Hürdenlauf der Flags war bis nach Hartmuts Test noch
einen Fehler
im Programm, den ich nicht bemerkt hatte: Nachdem
der File gelesen war, blieb die SCRIPSIT—NULL auf dem Stack.
Kein
'Fatal Error', aber unschön. Die hier abgelichtete Version
ist Jetzt korrekt. An den Testergebnissen ändert
sich
dadurch
nichts
! Da
für die Konvertierung eine Tabelle benutzt wird,
wäre es natürlich auch denkbar, diese nicht fest im Programm zu
verankern,
sondern
extern zu
verwaren und Je nach bedarf von
Diskette nachzuladen. Dazu müßte das Wort ASCII. TAB das Einlesen
der Daten übernehmen und Im Wort
TABELLE der Zeiger auf die
Tabelle
im R A M bereitgestellt werden. Im Wort GET.NAMES 1st die
Abfrage au f den Namen der externen ASCII-Tabelle einzubauen.
Im
Anschluß folgt nun das vollständige Programm.
** =
»*
**
*-*■
r# =
=**
**
ASCII Flltei— Programm
Vers.
1. 0
END
12. 87
; (charl adrl
char2 adrl fl a g )
PROGRAM 7C-ONVERT
; TOS = Tabelleneintrag 7
OVER OVER ?(B> =
IF
COUNT ? INC- COUNT
Ersatzzeichen holen und.■.
DUP INC ?<B>
. . .altes Zeichen ersetzen
SVAP ROT DROP
Setze Erfolgs-Flag
TRUE
ELSE
:Keine Konvertierung
FALSE
ENDIF
END
=*»•
DECLARE
VARF
VARF
VAR
VAR
VAR
VAR
DEND
FI LEI
FILE2
FILE. NAKE1
FILE. NAME2
COUNT
CHARACTERS
Konvertierungs-Tabelle
Erster Eintrag altes Zeichen,
. . .zweiter Eintag neues Zeichen
CALL ASCII. TAB
B6 7B
B7 7C
B8 7D
B9 ?E
Bl 5B
B2 5C
B3 5D
00 00
CEND
Tabellenende. Doppel-Null für den Fall,
daß jemand unbedingt die Null ln eine
Null konvertieren moechte
( -> adrl) Tabellenzeiger auf den Stack
LD
HL,ASCII. TAB
PUSH
HL
CODE TABELLE
21 ASCII. TAB
E5
CEND
PROGRAM GET. NAM E S
SYSFIELD ?
;( -> f l a g )
;holt FILENAMEN
;RAM-Pointer retten
Hole die Filenamen
14 OUTCHAR
VR1TE 'Fi lei:
VRITE 'Fl 1 e 2 :
15 OUTCHAR
CR
FILE.NAME1 READ<CH)
FILE. NAME2 READ (CH)
;Beide Namen müssen ungleich sein
;Cursor ON
;erster FILE
;zweiter FILE
;Cursor OFF
!
FILE. NAME1 7 FILE.NAME2 7 = <S> NOT
IF
;neue Filenamen. . ■
FILE. NAME1 ? FILE1 FILESPEC
;...einsetzen
FILE. NAME2 7 F1LE2 FILESPEC
;ERROR-Flags zusammenfassen
O R 0=
ELSE
’ CR
VRITE '*** ERROR: Input-File = Output-File
;Eingabefehl er !
FALSE
ENDIF
;Restore RAM-Pointer
SVAP SYSFIELD :=
; (charl
char2)
PROGRAM TEST. ASCII
;prüfe ob Zeichen in der Tabelle
DUP DUP
;Diese Bereichseingrenzung ist
177 < SVAP
iProblemabhängig .'! !
185 > OR NOT
IF
; Tabellen-Zeiger auf den S t a d
TABELLE
REPEA T
;Zeichen ersetzen ?
7CONVERT
;Tabellenende ?
OVER 7(B) 0= OR
UNTIL
,-Nein !, nächster Eintrag
INC INC
LOOP
;Nur das Zeichen bleibt. . ■
DROP
; . . . auf dem Stack
ENDIF
CHARACTERS ? INC CHARACTERS :
END
PROGRAM FILTER
;>>>> Hauptprogramm \<<<
CLS
0 COUNT :=
0 CHARACTERS
VRITE '**======================================**' CR
VRITE ’**
ASCI I-Filter
* * ’ CR
VRITE ’**======================================**' CR
CR
GET. NAMES
;Liefert bei OK TRUE-Flag
IF
;Fllespec's OK 7
Fl LEI O P E N (I >
0=
;Quell-File vorhanden 7
IF
FILE2 OPEN(0>
0=
IF
;Abbruch bei FILE-ERROR
VRITE 'Vriting data to file'
0
;Dummy '0'
REPEA T
FI LEI READF
;hole ein Byte
ROT OR
; (Dummy - ’0 ’) OR (flag)
OVER 0- OR
;etwa Tscript Flleende ?
UNTIL
;nur welter, kein Fehler
TEST. ASCII
FILE2 VRITEF
;schreibe ein Byte
LOOP
yernichte stop-Flag
D0 FILE2 VRITEF DROP ;FI le-Ende nsrtieren
ENDIF
F1LE2 CLOSE
ENDIF
FI LEI CLOSE
ENDIF
COUNT ? 0 >
U M L A U T .M
1F CR VRITE 'Number of
CR VRITE 'Total * of characters
- CHARACTERS PRINT CR
CR
BLSCR VRITE 'Nosubstitutions
CR VRITE 'File length is
VRITE ' Byte' CR CR
ENDIF
END
!'^
CHARACTERS PRINT
Hartmuts Artikel über die Umlaut-Konvertierung in Pascal habt
cherlich schon gelesen (wenn nicht, tut es am besten jetzt!).
bat mich, ein paar Zeilen zu der Assembler-Lösung zu sagen,
hinter diesem Artikel abgedruckt findet. Eigentlich ist das
fast "selbstdokumentierend", wenn auch in ganz anderem Sinne
Pascal-Lösung: in Assembler sind die Kommentare wichtiger als
fehle .
Ihr si­
Hartmut
die Ihr
Programm
als die
die Be­
Der Anfang mit den Abfragen der beiden Filenamen dürfte recht klar
sein. Ich will nicht näher darauf eingehen. Nur der Ablauf sei kurz
dargestellt: Zuerst wird ein Einleitungstext angezeigt, der hier sehr
kurz ausfällt. Dann fragt das Programm nach dem Namen des Files, der
die fehlerhaften Umlaute enthält. Falls dieser File nicht existiert,
kommt eine Fehlermeldung und die Eingabe muß wiederholt werden, bis
der Filename korrekt ist oder mit BREAK abgebrochen wird. Der zweite
File soll die korrigierte Version des ersten auf nehmen. Es wird nur
einmal gefragt; falls ein Fehler auftritt, bricht das Programm ab (mit
einer DOS-Fehlermeldung).
Nun kommt der interessante Teil, den ich mit
markiert habe.
Ihn will ich näher erläutern: Zuerst wird ein Byte aus dem ersten File
gelesen. Dabei muß DE auf den FCB des ersten Files zeigen! Zurückgege­
ben wird das gelesene Byte in A und ein Fehlerstatus. Bei Z (Zero-Flag
gesetzt) war das Lesen erfolgreich, bei NZ (Zero-Flag gelöscht) ist
ein Fehler aufgetreten, wobei jetzt die Nummer des Fehlers in A steht;
in diesem Fall wird die Schleife abgebrochen, wobei noch nicht klar
ist, ob dieses Ende - erzwungen (Disk-Fehler) oder gewollt (Ende von
File 1 * ich bin fertig) wurde. Falls das Lesen erfolgreich war, stel­
len die beiden ComPare-Befehle fest, ob es sich um einen Umlaut han­
delt. Falls nicht, kann das Byte sofort in den zweiten File geschrie­
ben werden. Falls es sich um einen Umlaut handelt, wird 177 von seinem
ASCII-Code abgezogen, so daß der erste Umlaut jetzt zur 0 wird, der
zweite zur 1 usw. Diese Zahl gibt an, um welchen Umlaut es sich han­
delt. Nachdem H und L gesetzt wurden, hole ich durch LD A, (HL) den
neuen Umlaut aus einer Tabelle. Dabei zeigt HL genau auf den richtigen
Umlaut, weil der Anfang der Tabelle immer bei xxOOh liegt. Also steht
der erste Umlaut (der zu dem mit der Nusimer 0 gehörende) in (xxOOh) ,
der zweite (der zu Nummer 1 gehört) in (xxOlh) usw. Das Gleiche hätte
ich erreicht, wenn ich die Nummer auf den Tabellenanfang tab addieren
würde, aber das dauert länger (ein paar Micro-, Nano- oder sonstwasSekunden). Zuletzt wird der neue Umlaut (bzw. ein normaler Buchstabe,
der kein Umlaut ist) in den zweiten File geschrieben. Dabei ist zu be­
achten, daß DE diesmal auf den zweiten FCB zeigen muß. Falls beim
Schreiben ein Fehler auftritt, bricht das Programm ab und zeigt den
Fehler an. Ansonsten (im Normalfall) wird die Schleife hier nie ver- HEFT
lassen.
Die Stadt istnichtgroß genug füruns beide!
Bevor das Programm endet, werden alle beiden Dateien geschlossen (was Februar
bei der Lese-Datei evtl. nicht nötig ist, aber es sieht schöner aus),
Je nachdem, ob ein "ordentlicher" Abbruch mit dem "richtigen" Fehler,
nämlich "Dateiende erreicht", erfolgt ist oder nicht, wird eine “Alles i ^
roger"oder
eine
Fehlermeldung
(vom DOS)
a n g e z e i g t .Z f Q '
Gerald Schröder
00001
00002
47
00003
00004
00005
00006
00007
00008
00009
0013
00 IB
05D9
402D
4409
441C
4420
4424
4428
4467
00010
00011
00012
U M L A U T .M
1 etzte inderung:
.
konvert i ert File mi t Umlaut en
;
DOS- und ROM-Routinen :
readbyt
wri tbyt
i nbuf
dos
derror
ex f i 1
in it
open
cl ose
scrmes
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
00013
00014
00015
00016
00017
00018
00019 ;
00020
00021
00022
OOIC
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
5200
5200
5203
210953
CD6744
5206
5209
520C
520F
521 1
5214
5217
521fi
521D
5220
5222
5225
5227
522A
522D
213A53
CD6744
218F53
060F
CDD905
DA2D40
11AD53
CD1C44
21ED53
0600
CD2444
2808
214A53
CD6744
18D7
5^2F
5232
5235
5238
523A
523D
5240
5243
5246
5249
524B
524E
216953
CD6744
219E53
060F
CDD905
DA2D40
11CD53
CD1C44
21ED54
0600
CD2044
2034
5250
11 AD53
CD1300
2016
FEB1
3B0A
FEFA
3006
B6 F 1
5256
5258
525A
525C
525E
5260
j
j
*
8 .2 .8 8
0013h
OOlbh
05d9h
402dh
4409h
44 Ich
4420h
4424h
4428h
4467h
von Gerald Schröder
;ein Byte lesen
{ein Bvte schreiben
;B Zeichen eingeben
;Abgang ins DOS
:D0S-Error ausgeben
;Filenamen in FCB
:File neu öffnen
{exist. File öffnen
;File schließen
;Meldung ausgeben
Konstante:
: "Dateiende gefunden"
EQU
Ich
ORG
5200h
Start
LD
CALL
HL, anfana
scrmes
;Anfangsmel dung
;an:ei gen
nochmal
LD
CALL
LD
LD
CALL
JP
LD
CALL
LD
LD
CALL
JR
LD
CALL
JR
HL. f ragel
scrmes
HL.buf1
B, 15
inbu-f
C. dos
DE.-fcbl
ex f i 1
HL.sekbuf1
B, 0
open
Z,z wei ter
H L ,-fehl er
scrmes
nochmal
:Abfrage 1. Filename
;ausgeben
;3uffer für Eingabe
;Länge 15
:B Zeichen nach HL
;at. falls BREAK-Taste
:Zeiger auf FCB—Buffer
{Name übertragen ir. FCB
:Sek toi— Buffer
{Seitor-Länge 256
:Fi 1 e öffnen
:kein Fehler, weiter
:Zeiger auf Fehlermeldung
;ausoeben
:nochmal eingeben
zwei ter LD
CALL
LD
LD
CALL
JP
LD
CALL
LD
LD
CALL
JR
HL.frage?
scrmes
HL,buf2
B, 15
inbuf
C, dos
DE,fcb2
ex f i 1
HL.sekbuf2
B,0
ini t
N Z ,error
{ebenso für 2. File
okerr
; ttttttttttttttttttttttittttttt
DE, f cb 1
LD
1OOp
readbyt
CALL
N Z ,ende
JR
i-J-?
CP
C. ol.
JR
186
CP
N C ,ol
JR
l?”
SUE
9t
48
5262
5264
5265
5266
5269
526C
2653
6F
7E
11CD53
CD1B00
28E2
526E
526F
5272
5275
527E
527B
527C
527E
5281
F5
1 1AD53
CD2844
1ICD53
CD2844
Fl
FE 1C
217C53
CA6744
5284
5286
F6C0
C30944
0077
5300
5309
5320
533A
534A
5369
537C
SB
IC
OA
OA
OA
OA
OA
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
nrirtOT
UUVTO
00094
00095
00096
00097
00098
00099
tab
DB
00100
00101
00102
:
Texte
anfana
fracel
feh 1 er
frage 2
endmel
DM
DM
DM
DM
DM
DM
;
Buffer
00103
00104
00105
00106
00107
00108
00109
LD
;MSB der Umw.tsbelle
K, tab.'1 0 0 h
LD
L. A
{Code als Tab-Dffset
LD
fi, (HL)
{geändertes Zeichen holen
ok
LD
DE.fcb2
:Zeiger auf 2. FCB
wr itbyt
CALL
{Byte in File 2 schreiben
JR
Z ,1 oop
;kein Fehler: nächstes Z.
■.itttitttttttJtttttttttltttittttttttttttttttttttttttttttt
Status NZ erreicht: irgendein Diskfehler trat auf
Bei "Dateiende erreicht " ist das OK, ansonsten
hat was nicht geklappt’
ende
PUSH
LD
CALL
LD
CALL
POP
CP
LD
JP
AF
DE,fcb1
cl ose
DE,fcb2
cl ose
AF
okerr
HL,endmel
Z .scrmes
error
OR
JP
OcOh
derror
:
Tabel1e zur Umwandlung der kritischen Zeichen
DS
;Fehlercode retten
{File 1
;schli eßen
:ebenso File 2
;Fehl ercode zurück
:Datei ende gefunden"
{Zeiger auf OK-Meldung
:falls ja: ausoeben und
;Abgang ins DOS
;Bit 7 für Fehl er-Ausgab.
ssetzen und Ausgahe u. at
S+lOOh&Off00h-S {Anfang auf "gerader“
{Adresse <LSB=00>
91.92,93.180,181,123.124,125,126
Ich,Ifh,’UMLAUT .M ’,Oah,Oah, ’Al 1es klar"'’
O a h , ’Sonst ist es auch e g a l O a h .Odh
O a h .’Weleher Fi le? ’,03
Oa h , ’So n i c h t ! Bleich noch einmal’’.Odh
O a h , ’In welchen File? ’,03
Oa h , ’Alles roger, bye'’,0dh
001 10
001 11
00112
:diesen neu schreiben
•■falls Disl;-Fehler
;Zeioer auf 1. FCB
{Byte aus File 1 lesen
{Ende oder Fehler
{Buchstabe •; 177?
ol., kein Umlaut
{Buchstabe
185?
; ji.. Gl., kein Umlaut
: ‘-T~ = 0 lisw.
00113
00114
00115
00116
00117
0 0 1 18
00119
0100
buf 1
buf 2
f cbl
f cb 2
sekbuf 1
0 0 1 2 0 sekbuf 2
DS
DS
DS
DS
DS
DS
15
15
TO
32
256
256
5200
00121
00122
END
Start
OOOF
OOOF
0020
0020
OlOO
00000 Fehler
{Eingabe Filename 1
{ebenso Filename 2
;FCB File 1
{ebenso File 2
{Sektorbuffer File 1
{ebenso File 2
CF/M
intern
—
kurz
und
kompakt
1.
0. Vonwort
Der C C P wir d direkt unter d as
BDOS
in d i e T P A g e l a d e n .
Er kann
mit
einem
laufenden
Programm
überschrieben werden. Allerdings
muß
das
Programm
d a n n m it e i n e m W a r m B o o t <JP 0000) b e e n d e t werden. A n s o n s t e n
kann
man den
CCP wieder direkt
ans p r i n g e n (wenn die Adresse bekannt
i s t ) . E r e r w a r t e t d a s D e f a u l t - L a u f w e r k i n R e g i s t e r C.
1. C C P
1.1 W i e s i e h t e i n
1.2 CCP-Kommandos
1.3 CTRL-Codes
2.
3.
4.
5.
Filename
1.1
ein
Filename aus?
’E R A u f i l e ’
'DIR’
• DIR 1h ’
• DIR ufi l e ’
' R E N bfi le=bfi l e ’
'SAVE n b fi l e ’
’T Y P E b f i l e ’
’U S E R n ’
TVV50
für
BDOS-Aufrufe
1.3 C T R L - C o d e s
CTRL-C:
C T R L — Pt
CTRL-R:
CTRL-S:
CTRL-Z:
Vorwort
N a c h d e m ich a n g e f a n g e n hatte,
mich mit C P / M zu
beschäftigen,
wurmte
mich gleich eine Sache
ungemein: wie
beim alten
N e wdos b r a u c h t e ich
aus
den dicken
Anleitungsbüchern wieder
nur
ein
paar Seiten,
die
wiederum nicht
v o l lständig oder zu ausführlich waren. Also woll t e ich
mir
eine
kurze
Zusammenfassung
der Sachen schreiben,
die ich
oft
b rauchen würde. Daher auch der Titel
"Kurz und kompakt*. Leider mußte
ich
feststellen,
daß die Kürze das
Verständnis
erschwerte
und
es
wieder nötig machte, die
dicken Mälzer
heranzuziehen. Also habe
ich
einen
Kompromiß beschlossen: die
Kapitel sin d kurz gehalten
und mit
m a s s e n h a f t A b k ü r z u n g e n v ersehen. Im
Anhang dagegen
werden einige Be­
griffe
und
Themen nochmal ausführlicher
erläutert, damit
auch
ein
Neuling
damit besser
zurechtkommt.
Klassischerweise müßte die
Auf­
t e i lung a n d e r s sein, aber das war nicht der Sinn der Sache.
Die Informationen
habe ich
mir aus dem "Handbuch zum CP/M"
gital Research und dem CP/M-Buch von Plate z u s a m m e n g e s u c h t .
von
Di­
Leider
bin
ich mir bei
v i e l e n S a c h e n n i c h t sicher, ob
sie stimmen,
und
wäre sehr
froh, wenn das
jemand korrigieren würde
und Enweiterungen
vorschlüge. Vor
allem fehlen mir Infos
über Terminal-Steuer—
Codes.
Gerald Schröder
sieht
Buchstabe,
’* ’= R e s t
1.2 C C P - K o m m a n d o s
Genie IIs-CP/M
4.1 DPB-Anhängsel
4 .2 Tastatur— C o d e s
Vielen Dank an
formationen und
Rechners.
Wie
a) b f i l e = b e s t i m m t e r F i l e , z . B . T U R B 0 . C 0 M
b) u f i l e = u n b e s t i m m t e r F i l e , ’? ’= b e l i e b i g e r
b e l i e b i g , z.B. T U R B O . ? ? ? o d e r T U R B O . »
Disk-Parameter— Tabellen
3.1 DPH
3.2 DPB
Anhang:
A) E i n P r o g r a m m b e i s p i el
B) B e g r i f f s e r k l ä r u n g e n
C) D i e S p e i c h e r b e l e g u n g
0.
aus?
Programmierung
2.1 Z e r o - P a g e
2 . 2 Parametei— Ü b e r g a b e
2.3 Der FCB
2.4 BDOS-Funktionen
2.5 BIOS—Funktionen
Terminals
5.1 A D M - 3 A
5.2 VT—52
5.3 TeleVideo
CCP
Hartmut Obermann für das Korrektur 1esen
und viele In­
an
Helmut
Bernhardt
für die CP/M-Fähigkeit
meines
2.
2.1
:
:
:
:
:
löscht Files
I n h a l t s v e r z e i c h n i s akt. L a u f w e r k a n z e i g e n
Inhaltsverzeichnis eines bestimmten Laufwerks
anzeigen
nur bestimmte Files anzeigen
F i l e u m b e n n e n (1. N a m e n i n 2. u m ä n d e r n )
n S e k t o r e n (n d e z . ) j e 1 0 0 h a b l O O h s i c h e r n
File anzeigen
auf a n d e r e n U s e r b e r e i c h (für a l l e L a u f w e r k e
gültig) umschalten, n<16
(wichtige)
W a r m - B o o t (nur a m Z e i l e n a n f a n g )
Druckei— L i s t i n g a n / a u s
Zeile nochmal anzeigen
List—Pause, bis irgendeine Taste
E n d e e i n e r A k t i o n , a u c h : E O F (Iah)
Programmierung
Zerp-P»qe
0000: Ansprung W a r m —Boot
0001/2: Zeiger auf Warm-Boot-Routine
0003:
00
01
10
11
I/O-Byte:
Bits:
7/b
LIST
Zuordnung:
LIST (LSTi)
TTYl
CRT:
LPT:
ULI:
5/4
PUNCH
PUNCH
TTYs
PTP:
UPI:
UP2:
(PUNr)
(»BIOS+3)
3/2
READER
READER
TTY:
PTRs
URI:
UR2:
1/0
CONSOLE
(RDR:)
CONSOLE
TTY:
CRT:
BAT:
UC1:
0004t B i t s 7-4: USER-Nr.} B i t s 3-0: D e f ault-Lw.
0005: Ansprung BDOS (-Funktionen)
0006/0007: Zeiger auf BD O S (bis h i e r h i n kann jedes Programm den
S p e i c h e r benutzen, w e n n es mit JP 0 0 0 0 endet)
005ch-007fh: FCB für Benutzer
0 0 8 0 h - 0 0 f f h : Sektor— Buf f e r für B e n u t z e r
(C0N:)
HEFT
23
Februar
1938
50
Z.2 Parameter-überoafae
getstr
Übergabe von Parametern beim Aufruf von COM-Programmen
am Beispiel von: ’turbo a:abc.pas xyz. c o m ’
1. FCB:
2. FCB:
(005ch) -ff.: 0 1 . 'ABC
(006 c h ) ff.: 0 0 , ’XYZ
P A S ’ ,0,0,0,0
C O M ’,0,0,0,0 «muß gerettet werden!)
getver
Rest der Zeile: (OOBOh) ff.: 18,’ A:ABC.PAS XYZ.COM’
(vom CCP in Großbuchstaben umgewandelt, (0080h)=Länge)
das Anwender— Programm wird vom CCP geCALLt: es steht ein Stack
Ebenen zur Vefügung; also lieber eigenen Stack e inrichten 1
bconst
mit
open
Format des FCB:
DR Fl F2 .. FS TI T2 T3 EX S1 S2 RC DO .. DN CR RO RI R2
+ 00 01 01
OB 09 10 11 12 13 14 15 16
31 32 33 34 35
close
Erklärung FCB-Bytes
(bzw. -Felder):
search 1
DR: Lw. für Zugriff:
00=Default-Lw.
01=Lw. A
16=Lw. P
F1..F8: Filename in Großbuchstaben
T1..T3: Extension in Großbuchstaben
Bit 7 von TI gesetzt: File kann nur gelesen werden (R/0)
Bit 7 von T2 gesetzt: SYS-File (bei DIR nicht angezeigt)
EX: akt. Extent-Nr., vom Benutzer auf O zu setzen, bei File E/A 0-31
Sl: reserviert
S2: reserviert, bei OPEN/SEARCH/MAKE auf 0 setzen (oder gesetzt???)
RC: Record-Nr. im Extent , 0-127
DO..DN: reserviert
CR: akt. Record-Nr. bei seq. File, vom Benutzer auf 0 zu setzen
R0..R2: Record—Nr. bei Random—File, LSB=R0, MSB=R1, 0verflow=R2
searchn
delete
readseq
wri tseq
2.4 BDOS-Funktionen
make
BDOS-Funkti onen:
(die Funktionsnr. ist jeweils nach C zu laden: es werden keine Register gerettet; s. auch Anhang A)
rename
0 0 : sysres
01:
bconi n
02 : bconout
03: breader
04: bpunch
05: bl ist
06: condir
07: getio
08: setio
09: prstr
ä
System-Reset, wie Warm-Boot (zurück zum CCP, Lw. auf A)
OUT: A=Tasten-Code
IN:
E=auszugebendes Zeichen
OUT: A=gelesenes Zeichen
auf READER-Eingabe warten
IN:
E=auszugebendes Zeichen
auf PUNCH ausgeben
IN:
E=auszugebendes Zeichen
IN: E=0ffh: CONSOLE-Eingabe (Tastatur)
<0ffh: CONSOLE-Ausgabe (Bildschirm)
OUT: (nur bei E=0ffh) A=00: keine Taste
>00: Tastencode
OUT: A=I/0-Byte
IN:
E=I/0-Byte
IN:
DE=Zeiger auf String, der mit
endet
String-Ausgabe auf den Bildschirm
DE=Zeiger auf Buffer
(DE)=max. einzugebende Zeichen (1—255)
OUT: (buffer+1): Anzahl eingebene Zeichen
(buffer+2) ff.: eingebene Zeichen
OUT: A=0ffh: Taste gedrückt
=00h: keine Taste gedrückt
OUT: H=00: CP/M
=01: MP/M
L=Versions-Nr. (z.B. 20h=2.0, 22h=2.2)
resdsk
bseldsk
2.3 Der FCB
IN:
getlog
getdsk
setdma
getalc
wpdsk
getro
Disk zurücksetzen (bei Diskettenwechsel), DMA auf 0080h
Laufwerk A anwählen
IN:
E=Lw. (00h=A)
das angewählte Lw. wird Default-Lw.
IN:
DE=Zeiger auf FCB
OUT: A=0—3: alles OK
Offh: Fehler
im Filenamen auch ’? ’ erlaubt
IN:
DE=Zeiger auf FCB
OUT: A=Fehlerstatus (s. 15)
IN:
DE=Zeiger auf FCB
OUT: A=Fehlerstatus (s. 15)
DMA mit entsprechenden DIR-Sektor geladen, File-Eintrag
bei DMA + At32
wenn D R = ’? ’ wird das Default-Lw. auf allen USER-Ebenen
durchsucht
IN:
DE=Zeiger auf FCB
OUT: A=Fehlerstatus (s. 15)
nächsten passenden Eintrag suchen, ansonsten siehe 17
IN:
DE=Zeiger auf FCB
OUT: A=Fehlerstatus (Offh: nicht gefunden)
Filename darf '?’ enthalten, aber DR nicht, alle pas­
senden Files werden gelöscht
IN:
DE=Zeiger auf FCB
OUT: A=00: OK
>00: Fehler
128-Byte-Sektor wird gelesen, CR und evtl. EX +1
IN:
DE=Zeiger auf FCB
OUT: A=Fehlerstatus (s. 20)
IN:
DE=Zei ger auf FCB
OUT: A=0ffh: Disk ist voll
=0/l/2/3: OK
neuen File öffnen
IN: DE=Zeiger auf FCB 1 und 2
0LTT: A=0ffh: File nicht gefunden
COffh: OK
erste
16 Bytes vom FCB: vorhandener Filename
zweite 16 Bytes vom FCB: neuer Filename, DR muß 00 sein
OUT: HL=Login-Vektor
welche Laufwerke wurden bisher angesprDChen? (Bit 0 von
L = Lw. A)
OUT: A=akt. Default-Lw. (00h=Lw. A)
IN:
DE=DMA-Adresse
OUT: HL=Zeiger auf ALLOCation-Vektor
akt. Lw. schreibschützen (R/0)
OUT: HL=R/0—Vektor
welche Laufwerke sind schreibgeschützt? (Bit 0 von
L = Lw. A)
30: setatt
31: getdpb
32: user
33: readrnd
54: writrnd
35: getsiz
36: setrnd
37: resdrv
40: writeO
IN:
DE=Zeiger auf FCB
OUT: A=Fehler— Status (s. 15)
R/0 bzw. SYS eines Files neu setzen im Directory
OUT: HL=Zei ger auf DPB
IN:
E=0ffh: hole akt. USER-Nr.
=0-15: USER neu setzen
OUT: (nur bei E=0ffh)i A=*akt. USER-Nr.
IN:
DE=Zeiger auf FCB
OUT: A=00: OK
0 1 : nicht geschriebene Daten gelesen
03: Extent kann nicht geschlossen werden
04: Versuch, ungeschriebenen Extent zu finden
06: hinter Ende der Diskette <R2>0)
bei Fehler 3: nochmal Extent 0 lesen
Record—Nr. wird nicht inkrementiert
IN:
DE=Zeiger auf FCB
OUT: Fehlet— Status, s. 33
A=5: neuer Extent kann nicht geöffnet werden
(Inhaltsverzeichnis voll)
Record-Nr. wird nicht inkrementiert
IN:
DE=Zei ger auf FCB
OUT: R0/R1/R2: File-Größe
R0/R1/R2 werden auf letzte Record-Nr.+1 gesetzt
IN:
DE=Zeiger auf FCB
OUT: RO/R1/R2
R0/R1/R2 hei einem File setzen, auf den bis jetzt seq.
zugegriffen wurde; nun Random-Zugriff möglich
IN:
DE=Lw.-Vektor
OUT: A=00
Laufwerke zurücksetzen, wenn Bits im Vektor gesetzt
IN:
DE=Zeiger auf FCB
OUT: Fehl erstatus wie bei 34
Block wird vor dem Schreiben mit Nullen gefüllt, wenn er
vorher unbelegt war, ansonsten wie 34
2.5 BIOS-Funktionen
so erhält man die Startadresse:
folgende Tabelle:
+00:
+03:
+06:
+09:
+12:
+15:
+18:
+21:
+24:
+27:
+30:
+33:
+36:
+39:
+42:
53
+45:
+48:
jeweils BIOS
(0001/2)=Zeiger auf BIOS+3
(Basisadresse) + Offset
boot
Kaltstart
wboot Warmstart
const
Tastatur— Status, OUT: A“ 0ffh: Taste grdückt
conin auf Tastendruck warten, OUT: A=Tastencode
conout auf den Bildschirm ausgeben, IN: C=Zeichen
list
auf den Drucker ausgeben, IN: Ce Zeichen
punch auf den PUNCH ausgeben, IN: C=Zeichen
reader auf Eingabe vom READER warten, OUT: A=Zeichen (lah=E0F>
home
angewähltes Laufwerk auf Track 0
seldsk Laufwerk anwählen, IN: C=Lw. (00h“A ) ; OUT: HL-Adresse
der Sektor-übersetzungs-Tabel1e, HL=0000: Fehler
settrk Track anwählen, IN: BC=Track—Nr.
setsec Sektor anwählen, INi BC=Sefctor-Nr.
setdma DMA-Adresse setzen, IN: BC=DMA-Adresse
read
Sektor lesen, OUT: A=00i OK, A«01: Fehler
write Sektor schreiben, IN: C=0r normales Schreiben; C=li DIRSektor schreiben (sofort ausgeführt); C=2: 1. Sektor eines neuen
Blocks; OUT: A=00: OK, A=01: Fehler
listst Status des Druckers abfragen, OUT: A=0ffh: READY
sectrn Übersetzung der Sektoi— Nr., IN: BC=Sektor— Nr., D E ^ d r e s s e
der übersetzungs-Tabel1e; OUT: HL=übersetzte Sektor—Nr.
3. Disk-Parameter-Tabel 1en
3.1 DPH
(Disk Parameter Header)
Format:
XLT
Bytes: + 0
0000
2
0000
4
0000
6
DIRBUF DPB
8
10
CSV
12
ALV
14
Bedeutung:
XLT:
Zeiger auf Sektor— Übersetzungs-Tabelle
0000:
für BD0S reserviert
DIRBUF: Zeiger auf einen 128-Byte-Buffer für Directory-Zugriffe
kann für alle DPHs gleich sein
DPB:
Zeiger auf den DPB für dieses Lw.
CSV:
Zeiger auf einen Prüfsummenblock, mit dem festgestellt werden
kann, ob die Diskette gewechselt wurde; muß für jeden DPH ein
anderer sein; Länge: s. DPB
ALV:
Zeiger auf einen Block, in dem BD0S die Diskettenbelegung
feethält (Allocation-Vektor); muß für jeden DPH ein anderer
sein; Länge: (DSM/ 8 )+ l (DSU: s. DPB; evtl. auch: (DSM+l>/ 8 >
3.2 DPB
(Pisk Paramater Block)
Format:
SPT
Bytes: + O
Achtung:
BSH
+2
BLM
+3
EXfl
+4
DSM
+5
DRM
+7
AL0
+9
ALI
+10
CKS
+11
OFF
+13
indirekt festgelegt: BLS (Blockgröße in Bytes): 1024 *
2 hoch x, wobei x von 0 bis 4 gehen darf (BLS von 1024 bis
16384)
Bedeutung:
SPT: Anzahl 128-Byte-Sektoren per Track
BSH: x+3 (x aus BLS, s. oben), d.h.: wenn BSH=3, ist BLS=1024 usw.
BLM: 2 hoch BSH - 1, d.h. wenn BSH=3, ist BLM=7 usw.
EXM: hängt von DSM ab; wenn DSM<256: EXM=2 hoch x - 1, d.h.: x=0:
EXM=0 usw.; wenn DSM>255: EXM=2 hoch (x-1) - 1; (x=l: EXM=0)
DSM: größte Blocknummer (in BLS gemessen); (DSM+1)*BLS ergibt die
totale Speicherkapazität der Diskette in Bytes, ohne die System­
tracks; also: DSH=(Tracks—OFF)»SPT*128/BLS - 1
DRM: Anzahl der Directory-Einträge-1 (d.h.: DRM=127: 128 Dir— Eintr.)
AL0/AL1: Bytes
AL0
ALI
Bits
7 6 5 4 3 2 1 0
7 6 5 4 3 2 1 0
belegt:
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
es sind (DSM+1)»32/BLS Bits zu belegen, angefangen von AL0,
Bit 7, üt^er AL0, Bit 0, und ALI, Bit 7, bis ALI, Bit 0; bei
BLS*= 1024 und DRM=128 sind AL0=0f0h und ALl=OOh (4 Bits belegt)
CKS: Länge des Prüfblockes CSV (s. DPH); CKS= (DRM+1)/4; nur bei Disketten, nicht bei festen Speichern (RAM-Disk oder Festplatte:
CKS«=0)
E3
O F F : Anzahl der System-Tracks; werden am Disk-Anfang ignoriert
Februar
1988
4. Genie IIs-CP/M: Besonderheiten
Beim
Genie IIs—CP/M handelt es sich um eine
CP/M—Version, die stark
an das Montezuma—CP/M für
das Model IV angelehnt
wurde. Allerdings
wurden
nicht
alle Features
übernommen.
Hier
nur die für die
Programmierung wichtigen Einzelheiten.
54
4. 1 D P B - A n h ä n g s e l
DPB+15:
DPB+17:
5.1
Z e i g e r auf D C B
Hardware—Byte
Der DCB enthält nur
momentaner
Track
S e i t e n a n w a h l ).
-für d a s
Laufwerk
(MORD)
Name
drei
Byte-Einträge: Select—Bits für das Laufwerk,
(Offh=keiner),
momentane
Select—Maske
(mit
D as H a r d w a r e - B y t e sorgt für
korrektes
Lesen von Fremd-Formaten.
Bedeutung der Bits:
7-5: noc h u n b e l e g t
4: S c h r e i b d i c h t e ( 0 = e i n f a c h e , l = d o p p e l t e )
3: D o p p e l s t e p ( 0 = n e i n , l = ja, f ü r 4 0 e r - D i s k s i n 8 0 e r — L a u f w e r k e n )
2: T r a c k - Z ä h l u n g ( 0 = g l e i c h e T r a c k - N r . a u f V o r d e r - u n d R ü c k s e i t e ,
l=ungerade T r a c k - N u m m e r n auf der Rückseite)
1/0: p h y s . S e k t o r g r ö ß e (00=128, 0 1 = 2 5 6 , 1 0 =512, 1 1 = 1 0 2 4 B y t e je
Sektor)
4.2
Die
Tastatur— Codes
Beim IIs
übernimmt die
T a s t e "PI"
die
Funktion
der Control-Taste.
S h i f t PI
s t e l l t G r o ß - / K l e i n s c h r e i b u n g um. D i e a n d e r e n F u n k t i o n s t a s t e n
liefern f o l g e n d e Codes:
Taste
entspricht
Hochpfei 1
Senkr.pfeil
ENTER
EOF
Linkspfei 1
Rechtspfei I
CLEAR
BREAK
ß
P2
C T R L — K (Obh)
C T R L — J (LF, O a h )
C T R L — M (CR, O d h )
7fh, DEL
C T R L — H (BS, 0 8 h )
C T R L — I (TAB, 0 9 h )
C T R L — Q (11h)
C T R L — C (03h>
7 eh , "ß"
5.
ohne
Shift
mit
Shift
CTRL-Ä
CTRL—Z
C T R L — li
5fh, "
CTRL—X
CTRL—V
CTRL—R
CTRL—C
5 e h , "-
ADM-3A
(ESC, lbh)
(EOF, Iah)
(CR, O d h )
«I
(18h)
(TAB,
(12h)
(03h)
Code
BELL
BS
TAB
LF
VT
CRT
CR
INVOFF
INVON
EOL
INVT0S
EOS
CLS
ESC
HOME
7
8
9
10
11
12
13
14
15
21
22
25
26
27
30
Funktion
Ton ausgeben
Backspace
zu r n ä c h s t e n Tabulator— Pos.
in d i e n ä c h s t e Z e i l e
in d i e v o r h e r i g e Zeile
ein Zeichen nach rechts
an den Zeilenanfang
Invers aus
I n v e r s an
lösche bis Zeilenende
Invers umschalten
lösche bis Bildschirmende
l ö s c h e B i l d s c h i r m u. H O M E
E S C - S e q u e n z e i n l e i t e n (s.u.)
Cursor an Bildschirm anfa ng
Mit der Escape—Sequenz
kann
der
Cursor beliebig
auf
dem Bildchirm
positioniert
werden. Nach
dem ESC—Code
(27) m u ß e i n
(61)
zum
Bildschirm
geschickt werden; dieses
Zeichen
wird
nicht ausgegeben.
D ann f o l g e n zwei
Angaben: zuerst
die
Zeile und dann die
S p a l t e , in
die der Cursor
positioniert
w e r d e n soll. Dabei bedeutet
jeweils ein
B l a n k (32) d e n W e r t 0.
Also wird durch die
S e q u e n z “2 7 , 6 1 , 3 5 , 4 0 “ d e r
Cursor
i n d e r 4. Z e i l e ( Z e i l e 3 v o n N u l l a n g e z ä h l t ) a n d e r 9. S t e l l e
(Spalte 8 von Null an gezählt) ausgegeben.
5.2
VT-52
Alle
Steuercodes
werden
durch
ein
ESC
(27)
eingeleitet.
19h)
Terminals
CP/M
war ursprünglich ein
Terminal-Betriebssystem,
d.h. es lief auf
einem
H a u p t r e c h n e r , an den ein oder meh r e r e Terminal(s) ang e s c h l o s s e n
war(en).
Je nach
Terminal wurden verschiedene Tastatur— Codes
gelie­
f e r t u n d ( w a s w i c h t i g e r ist) v e r s c h i e d e n e R e a k t i o n e n
auf
Bildschirmsteuer-Codes
bei der A u s g a b e verursacht.
Das macht es
für
Program­
mierer
schwer, Programme
zu
schreiben, die
auf j e d e m
CP/M-Rechner
lauffähig sind
(z.B. m i t w e l c h e m C o d e w i r d d e r B i l d s c h i r m g e l ö s c h t ? ) .
Daher
bieten die
meisten
Programme
eine
Anpassung an verschiedene
Terminals,
z.B. durch
Installations-Programme
w i e T I N S T bei
TurboP a s c a l . Bei
h e u t i g e n R e c h n e r n ist
die
Bi 1 d s c h i r m a n s t e u e r u n g u n d d i e
Tastatur
zwar meist direkt integriert,
aber
es
werden
immer
noch
v e r schiedene Terminals simuliert, um CP/M
gerecht zu
werden. Deshalb
muß
auch heute
der Programmierer
die Term i n a l —Codes kennen,
wenig­
stens
die
seines Rechners.
Deshalb
hier
eine
Auflistung gängiger
T e r m i n a l — Codes. Ergänzung und Korrektur dringend erwünscht.
Code
Funktion
’A ’
’B ’
’C ’
’D ’
’E ’
’H'
’I ’
*J’
Cursor eine Zeile hoch
Cursor eine Zeile runter
Cursor rechts
Cursor links
B i l d s c h i r m l ö s c h e n Sc H O M E
HOME
Cursor hoch; scrollen, wenn nötig
B i l d s c h i r m ab Cursor löschen
’
K’
Zeile ab C ursor löschen
*L’
Zeile einfügen
’M ’
Z e i l e l ö s c h e n ( R e s t h o c h s c r o l 1 en)
’Y ’ ( y - 3 2 ) ( x - 3 2 ) C u r s o r a n P o s i t i o n x / y s e t z e n
’b ’ F a r b e
Schriftfarbe neu wählen
’c ’ F a r b e
Hintergrundfarbe neu wählen
’d ’
Bildschirm bis Cursor löschen
’e ’
Cursor einschalten
’f ’
Cursor ausschalten
•j’
Cursorposition speichern
’k'
Cursor auf gespeicherte Position setzen
’1 ’
Zeileiöschen
’o ’
Zeile bis Cursor löschen
’p ’
Invers ein
’q ’
Invers aus
’v ’
Ü b e rlauf an (Cursor geht über Zeilenende)
’w ’
Ü b e r l a u f a u s (Cursor bleibt a m Zeilenende stehen)
(aus:
Data-Becker-Führer
für
Atari-ST)
TeleVideo
TV950
ASCII
Hex
-G
~H
07
08
09
0a
Ob
0c
0d
16
la
le
lb
lb
lb
lb
~L
~M
~Z
AA
ESC
ESC
ESC
ESC
’(’
’) ’
’. ’ n
ESC
ESC
ESC
’? ’
■D’ X
ESC
ESC
’E ’
’G ’ X
s z
lb
lb
lb
lb
lb
Fu n k t ion
28
29
2a
2e n
3d
3f
44
s z
X
45
47
X
ESC
ESC
ESC
ESC
ESC
’I ’
■GT
’R ’
T’
’U ’
lb
lb
lb
lb
lb
49
51
52
54
55
ESC
ESC
ESC
ESC
ESC
ESC
ESC
W’
’ Y’
b’
’d ’
't*
’y ’
z’
lb
lb
lb
lb
lb
lb
lb
57
59
62
64
74
79
7a n
ESC
(aus:
Anhänge
lb 7 b
c ’t - A r t i k e l
über
Ton ausgeben
Backspace
TAB
Cursor runter
Cursor hoch
Cursor rechts
CR
wie
aber ohne Scroll
Bildschirm löschen & HOME
HOME
normale Leuchtstärke
halbe
"
.» 9 * *
■* \
C L S *. H O M E ( a u c h
*
C u r s o r — A t t r i b u t e s e t z e n , rn =
' O ’ (30h): C u r s o r a u s
’1 ’ ( 3 1 h ) : C u r s o r a l s B l o c k ( b l i n k e n d )
’2 ’ ( 3 2 h ) :
"
(nicht bl.)
’3 ’ ( 3 3 h ) : C u r s o r a l s U n t e r s t r i c h ( b l i n k e n d )
’4 ’ ( 3 4 h ) :
"
(nicht bl.)
C u r s o r auf S p a l t e s-20h, Zeile z-20h
C u r s o r — Pos. a b f r a g e n
M o d u s s e t z e n : ’L ’= l o k a l , ’H ’= h a l b - d u p l e x ,
alles andere: voll-duplex
Zeile einfügen
Z e i c h e n — A t t r i b u t e s e t z e n (x— 3 0 h ) , B i t s :
6: G r a f i k - M o d u s ( Z e i c h e n a l s G r a f i k )
5: d o p p e l t h o c h
4: d o p p e l t b r e i t
3: u n t e r s t r i c h e n
2: i n v e r s
1: b l i n k e n d
0: u n s i c h t b a r
zurück zum letzten Tabulator
Z e i c h e n bei C u r s o r e i n f ü g e n
Zeile löschen
Zeile ab C ursor l ö s chen
Control-Modus ein (alle Steuerzeichen als
Buchstaben mit halber Leuchtstärke)
Zeichen löschen
b i s Bi 1 d s c h i r m e n d e l ö s c h e n
Bildschirm invertieren
B ild s c h i r m normal
Zeile ab Cursor löschen
bis Bildschirmende löschen
Z e i c h e n s a t z w ä h l e n v o n ’0 ’ ( 3 0 h ) : U S A ü b e r
Frankreich, Deutschland, England, Dänemark,
S c h w e d e n , I t a l i e n b i s ’7 ’ ( 3 7 h ) : S p a n i e n
Schnittstelle initalisieren
1. P a r a m e t e r : B a u d r a t e ( ’? ’= 1 9 2 0 0 , ’0 ’ o d e r
’> ’= 9 6 0 0 , ’< ’= 4 8 0 0 , ’: ’= 2 4 0 0 , ’B ’= 1 2 0 0 ,
’7 ’= 6 0 0 , ’6 ’= 3 0 0 , ’5 ’= 1 5 0 , ’3 ’= U 0 )
2. P a r a m e t e r : ’0 ’= e i n , ’1 ’= z w e i S t o p b i t s
3. P a r a m e t e r : P a r i t y ( ’0 ’= a u s , ’1 ’= u n g e r a d e ,
’3 ’= g e r a d e )
4. P a r a m e t e r : ’0 ’= 8 - , ’1 ’= 7 - B i t - W o r t l ä n g e
c ’t - T e x t - T e r m i n a l )
A)
B e i s p i el P r o g r a m m
-für B D O S
Auf ruf e
wboot
EQU
bdos
EQU
bconi n
EQU
bconout EQU
prstr
EQU
getstr
EQU
0000h
0005h
1
2
9
10
;W a r m - B o o t - A n s p r u n g
;B D O S - A u f r u f - A n s p r u n g
;hole Zeichen
:gib Zeichen aus
;gib String aus
shole String
start
LD
LD
CALL
LD
CALL
LD
LD
CALL
LD
LD
CALL
LD
0R
JR
LD
LD
LD
ADD
LD
LD
CALL
JP
RET
DE,string
C,prstr
bdos
C,bconi n
bdos
E,A
C,bconout
bdos
DE,buffer
C,getstr
bdos
A,(buffer+1)
A
Z,ab
L, A
H, 0
DE,buffer+2
HL,DE (HL),
C,prstr
bdos
wboot
;Zeiger auf Str i n g
; B D O S — F k t .— N r .
;S t r i n g a u s g e b e n
; B D O S — F k t .— N r .
;Zeichen holen
;Zeichen nach E
; B D O S — F k t .— N r .
;Zeichen ausgeben
;Zeiger auf Buf f e r
:B D O S — F k t .-Nr.
DM
DB
DB
DS
O d h , O a h , ’Di e
5
0
6
ab
;o d e r :
string
buffer
B)
:L ä n g e
holen
;=0 ?
; ja, ab
;L ä n g e n a c h
HL
:Zeiger setzen
;Zeiger auf B u f f e r - E n d e
;Ende-Zeichen setzen
;B D O S — F k t .— N r .
;E i n g a b e n o c h m a l a n z e i g e n
;A b g a n g
;direkt zum CCP
i s t e i n T e s t ’, ’* ’
:L ä n g e d e s B u f f e r s
;t a t s ä c h l i c h e i n g e g e b e n
:Buffer für Zeichen
Beariffserklärunoen
In d e r A n l e i t u n g h a b e
ich einige Begriffe und Abkürzungen
verwendet,
die nicht jedermann geläufig
sein könnten.
Deshalb
hier
e i n i g e Er—
läuterungen.
A u ß erdem habe ich noch einige Begriffe aufgenommen,
die
im Z u s a m m e n h a n g mit
C P / M (bzw. C o m p u t e r n a l l g e m e i n ) v e r w e n d e t w e r d e n .
Viele Informationen
stammen
aus der englischen Ausgabe des "Handbuch
zum CP/M" von Digital Research.
BAT:,
BDOS
HEFT
Batch
Batch nennt man das Hintereinanderablaufen von mehreren
Programmen, ohne daß eine Person eingreift, wobei die Aktionen (Ein-/Ausgaben> auf einem Drucker p r o tokol1iert werden:
FebrUiP
BAT: b e z e i c h n e t im C P / M e i n e n Z u s t a n d , in d e m a l l e E i n g a b e n
von Reader kommen und d i e Ausg a b e n auf List gehen; ->I/D-BytE
B a s i c D i s k O p e r a t i n g S y s t e m ; d a s B D O S ist d er Teil d e s B e ­
t r i e b s s y s t e m s CP/M, der d i e D i s k e t t e n - E i n - / A u s g a b e für alle
C P / M - R e c h n e r s t a n d a r d i s i e r t ; e s ist d e s h a l b bei a l l e n C P / M Rechnern gleich und wird von Programmierern intensiv genutzt;
das BDOS benutzt das BIOS; -> Anhang C
68
DMA
B a s i c I n p u t / O u t p u t S y s t e m : d a s B I O S ist d er " u n t e r s t e ” Teil
v o n C P / M ; e s r e g e l t d i e E i n - / A u s g a b e s p e z i e l l -für d e n R e c h ­
ner, auf d e m ein C P / M läuft: es m u ß für jeden R e c h n e r neu
•
p r o g r a m m i e r t werden; auf das BI D S s o l l t e man m ö g l i c h s t nicht
direkt zugreifen; -> Anhang C
Block
ein e O r g a n i s a t i o n s o r ö ß e auf der Diskette; d ie G r ö ß e wird im
DPB
D P B f e s t g e l e g t u n d k a n n 1K, 2 K , 4 K , 8 K o d e r 1 6 K b e t r a g e n
Blocking
ein V e r f a h r e n , da s hilft, auf D i s k e t t e n s c h n e l l e r z u z u g r e i ­
fen; da C P / M nur 1 2 8 - B y t e - S e k t o r e n kennt, d i e D i s k e t t e n — S y ­
s t e m e a b e r oft g r ö ß e r e S e k t o r e n (256, 512, 102 4 B yte) u n t e r ­
s t ü t z e n , w e r d e n m e h r e r e l o g i s c h e S e k t o r e n in e i n e n p h y s i k a ­
lischen Sektor gepackt; dieses Packen wird Blocking genannt;
-> Deblocking
BIOS
59
CCP
C o n s o l e C o m m a n d Processor; dieser Teil d e s B e t r i e b s s y s t e m s
ist e i g e n t l i c h ei n P rogramm, d a s n ur d a z u dient, d e m B e n u t z e r
e i n e B e n u t z e r o b e r f 1 ä c h e zur V e r f ü g u n g z u s t e l l e n , m i t d e r er
leicht die Disketten verwalten kann; es interpretiert die Be­
n u t z e r k o m m a n d o s ( E R A , DIR' u s w . > u n d s e t z t s i e i n k o n k r e t e
A k t i o n e n um; d e r C C P r u f t A n w e n d e r p r o g r a m m e a u f u n d d i e s e
k ö n n e n , n a c h d e m s i e a b g e l a u f e n s i n d , in d e n C C P z u r ü c k k e h r e n ,
f a l l s sie ihn nicht ü b e r s c h r i e b e n haben; f a l l s s i e ihn ü b e r —
schrieben haben, müssen sie mit e i n e m W a r m Boot enden, der
den C C P neu lädt; es gibt v e r s c h i e d e n e C C P — Versionen, d ie
al l e das Merkmal haben, daß sie direkt unter dem BDOS im
S p e i c h e r s t e h e n und laufen; -> A n h a n g C
Checksum
-> Prüfsumme
CLS
Clear Screen; den Bildschirm löschen
Cold Boot
K a l t s t a r t heißt, daß d as G e r ä t n o c h n i c h t "warm" ist bzw.
erst gerade eingeschaltet wurde und jetzt erstmal die gr u n d ­
s ä t z l i c h e n I n i t i a l i s i e r u n g e n d u r c h z u f ü h r e n sind; normale)—
we i s e s o llen d a n a c h nur noch W a r m s t a r t s (Warm Boot) d u r c h g e ­
führt werden; wenn Sie RESET geben, entspricht dies einem
Kaltstart
COM
E x t e n s i o n (z.B. T U R B O . C O M ) v o n d i r e k t a u f r u f b a r e n P r o g r a m m e n ,
d.h. m a n m u ß in d e r B e n u t z e r o b e r f l ä c h e (CCP) n u r d e n N a m e n
des Programms eingeben, um es zu starten; COMmand—Programme
w e r d e n immer n ach 100h g e l a d e n u n d d ort g e s t a r t e t
Con s o l e , CON: T a s t a t u r und B i l d s c h i r m in m o d e r n e n C P / M - S y s t e m e n , T e ­
l e t y p e ( F e r n s c h r e i b e r ) o d e r s o n s t w a s bei ä l t e r e n ; ü b e r d i e
C o n s o l e w e r d e n E i n g a b e n bzw. B e f e h l e g e h o l t und A u s g a b e n g e ­
macht; über CON: kann d i e E i n - / A u s g a b e auf a n d e r e G e r ä t e u m ­
gele i t e t werden; -> I/O— Byte
CP/M
Control P r o gram for Microcomputers; unser Thema
CR
C a r r i a g e Return; an den A n f a n g der Z e i l e gehen; b e i m N e w d o s
g l e i c h z e i t i g a u c h “i n d i e n ä c h s t e Z e i l e " , w a s t o t a l e r Q u a t s c h
ist (aber s e h r e f f i z i e n t )
CRT:
C a t h o d e Ray Tube; ein Bildschirm, w i e ihn he u t e jeder b e n utzt
DCB
Device Control Block; ein Datenblock, der direkt die E i g e n ­
s c h a f t e n e i n e s p h y s i k a l i s c h e n G e r ä t s b e s c h r e i b t bzw. b e e i n ­
flußt; unter dem DPB anzusiedeln und oft auch für Tastatur
etc. v o r h a n d e n ; nu r in b e s t i m m t e n B l O S - V e r s i o n e n v o r k o m m e n d
Deblocking
das Umgekehrte des Blocking: aus einem großen physika­
l i s c h e n S e k t o r d e n v o m C P / M a n g e f o r d e r t e n 12 3 - B y t e - S e k t o r
raussuchen; wird im BIOS erledigt
Default
bez e i c h n e t einen Wert, der a n g e n o m m e n wird, f a l l s n i c h t *
a n d e r e s a n - / e i n g e g e b e n wurde: z.B. ist d a s D e f a u l t - L a u f w e r k
bei D i s k e t t e n z u g r i f f e n (wie bei "DI R " ) i m m e r d a s e i n g e l o g g t e
Laufwerk, dessen Kennung als Prompt vom CCP ausgegeben wird
(" A > " )
DPH
EOF
E0L
EOS
ESC
Extent
FCB
Flag
HOME
D i r e c t M e m o r y A c c e s s ; im C P / M d i e Adresse, an der ein 128
B y t e l a n g e r B u f f e r e x i s t i e r t , in d e n D a t e n v o n d e r D i s k e t t e
e i n g e l e s e n bzw. von d e m D a t e n auf die D iskette g e s c h r i e b e n
werden; im and e r e n Z u s a m m e n h a n g ein Baustein, der L D I R - ä h n —
l i e h e B e f e h l e über den 6 4 K - S p e i c h e r hinaus ausführt
Disk Parameter Block; der DPB gibt die Charakteristika eines
b e s t i m m t e n S p e i c h e r m e d i u m s (z.B. D i s k e t t e n l a u f w e r k ) w i e d e r ;
f a l l s m e h r e r e D i s k e t t e n l a u f w e r k e g l e i c h e n Ty p s in e i n e m S y ­
s t e m v o r h a n d e n sind, mu ß für a lle zusammen nur ein DP B e x i ­
stieren, auf den d ann m e h r e r e D PHs zeigen; da die DPB-Einträge nicht für alle Formate ausreichende Informationen ent­
halten, w erden s ie je nach CP/M-BIOS-Version durch z usätz­
l i c h e E i n t r ä g e e r g ä n z t , d i e l e i d e r k e i n e r l e i N o r m u n g unter—
1iegen
Dis k Par a m e t e r Header; ein e Datenstruktur, die über dem DPB
a n g e s i e d e l t is t (d.h. e i n e n Z e i g e r au f e i n e n D P B e n t h ä l t ) ;
d e r D P H b e s t e h t u.a. a u s Z e i g e r n auf v e r s c h i e d e n e Buff e r , d i e
d a s B D O S b e n u t z t ; f ü r j e d e s l o g i s c h e L a u f w e r k i m S y s t e m (A:,
B: u s w . ) m u ß e i n e i g e n e r D P H e x i s t i e r e n
E n d Of F i l e ; e i n r e s e r v i e r t e r Steuer— C o d e (Iah), d e r a n z e i g t ,
daß ein ASCI I - F i l e hier endet; oft auch die Tastenkombination
Ctrl— Z oder Fehlermeldung
E n d Of L i n e ; E n d e d e r Z e i l e ; w i e E O S v e r w e n d e t
En d Of Screen; E n d e d e s B i ldschirms; oft im Zusamm e n h a n g "to
EO S " , z.B. bei " l ö s c h e n b i s B i l d s c h i r m e n d e "
E s c a p e ; b e s o n d e r T a s t e b z w . b e s o n d e r e r Steuer— C o d e (lbh);
wird benutzt, um eine Folge von Zeichen anzukündigen, die zur
S t e u e r u n g ei n e s G e r ä t e s (Bildschirm, Drucker) dienen und
nicht ausgegeben werden sollen
D i r e c t o r y - E i n t r a g a u s 3 2 Byte; Byte 0-15: Angaben zu m File
(Nam e , User— B e r e i c h , E x t e n s i o n u s w . ) : B y t e 1 6 - 3 1 : v o m F i l e
b e l e g t e B l ö c k e (Nummern je 2 Byte); falls mehr als 8 B l öcke
belegt werden, wird ein zweiter Directory-Eintrag für den
F i l e a n g e l e g t ; n a c h D i g i t a l R e s e a r c h ”1 6 K a u f e i n a n d e r f o l ­
g e n d e B y t e in e i n e m F i l e "
F i l e Control Block; D a t e n - B l o c k , über den der P r o g r a m m i e r e r
auf e i n e n F i l e z u g r e i f t ; im F C B s t e h e n u.a. Name, E x t e n s i o n
u n d L a u f w e r k , m o m e n t a n e R e c o r d - N r . usw.
F l a g g e ; e i n B i t , d a s e t w a s a n z e i g t , z . B . “d e r e b e n b e r e c h n e t e
W e r t w a r N u l l “; - > O v e r f l o w
n a c h H a u s e ( t e l e f o n i e r e n , s. E T ) ; C u r s o r i n d i e l i n k e o b e r e
E c k e d e s B i l d s c h i r m s s e t z e n bzw. S c h r e i b - / L e s e k o p f d e s D i s ­
k e t t e n l a u f w e r k s über Track 0 positionieren
Interleave
-> Skew-Faktor
I/0-Byte
I n p u t / O u t p u t - B y t e ; ein B y t e in der Zero-Page, mit de m lo­
gis c h e Geräte auf verschiedene physikalische umgeleitet wer­
d e n k ö n n e n , f a l l s d i e s Ihr C P / M - B I 0 S u n t e r s t ü t z t ; z.B. kan n
d a s l o g i s c h e Gerät CON: (Console) die Eingaben von u n t e r ­
s c h i e d l i c h e n p h y s i k a l i s c h e n Geräten erhalten; läßt sich am
besten per STAT ändern
K
Kilobyte; 1024 Byte
Kaltstart
-> Cold Boot
LF
LIST,
L i n e f e e d ; e i n e Z e i l e w e i t e r gehen (Cursor oder Druckkopf);
m e i s t n a c h C R z u f i n d e n , u m e i n e n Z e i l e n v o r s c h u b z u gewähi—
leisten
LST:
d a s G e r ä t L I S T bzw. LST: ist eines der logischen Geräte,
die C P / M kennt und ist norma l e r w e i s e ein Drucker
9
loggen
meist: ein-/dusloggen; im CP/M: eine neu eingelegte Diskette
zum ersten Mal ansprechen bzw. sie dem System bekanntmachen;
bei Großrechnern: die Eingabe von Benutzername und —paßwort,
bevor man anfangen da r f v zu arbeiten
logisch alles, was nicht physikalisch ist; für das CP/M existieren
nur logische Geräte, die je nachdem unterschiedlichen phy­
sikalischen Geräten zugeordnet sein können; eine ConsoleAusgabe, die normalerweise auf einen Bildschirm gelangen wür—
de, kann so auf einem Drucker erscheinen; außerdem: logische
Sektoren sind Sektoren mit 128 Byte, die CP/M als einzige
kennt; das Spei ehermedium "dahinter" (z.B. ein Laufwerk) kann
ruhig mit größeren Sektoren arbeiten
LFT:
Line Printer; das physikalische Gerät, das meist LST: zuge­
ordnet wird
LSB
Lowest Signifikant Byte; die unteren 8 Bit eines 16-BitWortes; manchmal auch: Lowest Signifikant Bit, Bit 0 eines
Bytes
MP/M
Multi-Programming Monitor Control Program; der große Bruder
des CP/M; für den Betrieb mehrerer Terminals an einem Haupt—
Rechner
MSB
Most Signifikant Byte; obere 8 Bit in einem 16—Bit—Wort;
manchmal: Most Signifikant Bit, Bit 7 eines Bytes
Nibble
obere oder untere 4 Bit in einem Byte
Offset
fester Wert, der zu jeder Variable (z.B. Adresse oder TrackNr.) addiert wird
Overflow Überlauf; falls eine Rechnung oder ein Wert eine gesetzte
Grenze überschreitet; meist durch ein Flag angezeigt
Page
Seite; 256 Byte im Speicher, die allein durch Änderung eines
Bytes, des LSB, adressiert werden können (OO-ffh)
P T P : , PTR:
irgendwelche physikalischen Geräte; P*Punch, R«Reader;
-> I/O-Byte
Prüfsumme
eine Quersumme oder ähnliches von mehreren Bytes; wird
beim CP/M vom Directory gebildet, um festzustellen, ob die
Diskette gewechselt wurde
Punch, PUN:
Lochkartenstanzer; früher gebräuchliches Gerät aus der
Steinzeit der Rechenanlagen; im CP/M ein logisches Gerät, an
dem z.B. physikalisch eine serielle Schnittstelle (mit Modem
oder so) hängen kann; -> I/O-Byte
Random
Zufall; Random-Files sind Daten-Files, bei denen man die Da­
tensätze (Records) direkt adressieren (lesen/schreiben) kann;
-> sequentiell
Reader, RDR:
Lochkartenleser; s. Steinzeit der Rechenanlagen; logi­
sches Gerät des CP/M; zum Lesen einer seriellen Schnittstelle
nicht schlecht; -> I/O-Byte
Record
Diskettenorganisationseinheit; je nachdem mal (physikalisch)
ein Sektor von 128 Byte oder (logisch) ein voa Benutzer defi­
nierter Datensatz anderer Länge
R/W, R/0 Read/Write, Read/Only; Attribut eines Files oder einer Dis­
kette; je nachdem darf nur gelesen oder auch geschrieben
werden; -> SYS
61
Sector Translation Table Sektoi— Übersetzungs-Tabelle; oft XLT abge­
kürzt; eine Tabelle, die logische Sektornummern in phsyikalische übersetzt; wird benutzt, um die Drehung der Disketten
auszunutzen beim Lesen von hintereinander1iegenden Sektoren;
dabei heißt "logisch" hier manchmal auch, daß es sich schon
um physikalische (256, 512 ... Byte-) Sektoren handelt;
— > Skew— Faktor
Select
hier: Anwahl(-Bits): eine Bit-Maske, in der 1 Bit gesetzt
ist, um ein bestimmtes Laufwerk anzuwählen; manchmal wird
noch ein zweites Bit gesetzt, um bei diesem Laufwerk die
Rückseite anzuwählen; unterste Ebene des Disketten-Zugriffs;
allein dem BIOS überlassen
sequentiell
hintereinander; Zugriffsform auf Files, bei der nur der
jeweils nächste Datensatz (Record) gelesen werden kann;
— > Random
Skew-Faktor
Konstante, die auf die zuletzt adressierte physikalische
Sektof— Nummer addiert wird, um den nächsten logischen Sektor
zu erhalten; mit diesem Faktor wird die Sector Translation
Table aufgebaut, um den Diskettenzugriff zu beschleunigen
String
Ansammlung von Zeichen; beim CP/M komischerweise immer mit
einem "t” abgeschlossen (Zusammenhang mit Turing-Maschine?)
SYS
Attribut von Files, die unsichtbar und nur für den systeminternen Gebrauch bestimmt sind; SYS-Files auf User 0 können
nach Digital-Research-Informationen von jeder User-Nummer aus
aufgerufen werden; -> R/W, R/0
System-Tracks eine bestimmte Anzahl Tracks (oft 2) am Anfang einer
Diskette, auf denen das CP/M (Boot-Sektor, BIOS, BDOS, CCP)
steht, das beim Booten von dort geladen wird; diese Tracks
werden nicht als Diskettenplatz gerechnet, sondern per Off­
set übersprungen; dieser Offset kann auch benutzt werden, um
aus einer physikalischen Diskette zwei logische zu machen
(eine aus den ersten 40 Tracks und eine mit Offset 40 aus den
oberen 40 Tracks oder so)
TAB
TPA
TTY:
Tabulator; ein Steuercode (09), der Cursor oder Druckkopf
veranlaßt, zur'nächsten durch 8 teilbaren Position zu sprin­
gen
1
Transient Program Area; Bereich von lOOh bis zum Anfang des
BDOS, in den die Anwenderprogramme geladen und ausgeführt
werden; der CCP steht auch in diesem Bereich; -> Anhang C
Teletype; Fernschreiber; uraltes Gerät, das als Console zur
Ein— /Ausgabe benutzt wurde
U C : , UL:, UP:, URs
physikaliche Geräte, die "U"ser-definiert sind;
nicht mit "USER-Bereich" zu verwechseln!; C=Console; L=List;
P=Punch; R=Reader
User
Benutzer; hieri es gibt im Directory verschiedene Bereiche
(0— 15), die jeweils nur zugänglich sind, wenn vorher der ent­
sprechende Userbereich (z.B. per Kommando "USER 1") angewählt
wurde; zur Benutzung bei Mehrplatzsystemen bzw. als Urform
des Sub-Directory gedacht
Warm Boot
soll heißen: jetzt ist das Gerät schon warm (länger am
Laufen) und muß nicht mehr voll initialisiert werden; die
meisten Programme enden mit einem Warm Boot, der dann CCP und
evtl. auch BDOS lädt und den CCP startet
Warmstart
— > Warm Boot
Wildcard
ein Platzhalter in einem String (z.B. Filenamen) für einen
beliebigen Buchstaben oder Teil; im CP/M
und
Word, Wort
16-Bit-Datum bzw. "Informationseinheit aus 16 Bit"
HEFT
Zero—Page Seite 0; die ersten 100h im Speicherbereich; ursprünglich
Februar
von Rechnern stammend, bei denen sich dieser Bereich leichter 1938
oder schneller adressieren läßt (6502); im CP/M als Schnitt­
stelle von Anwenderprogramm zu BDOS benutzt; -> Anhang C
62
C) Der Soeieheraufbau
OOOOh ---Zero-Page
0 1 0 0 h ----
TPA
ccpbase “ *
(CCP)
bdosbase *•
BDOS
biosbase-■
BIOS
ifffh
---
Zero-Paae
0000h
0003h
0004h
0005h
OOOBh- 0027h
0030h- ■0037h
0038h- -003ah
003bh- 003fh
0040h -004-f h
0050h- ■OOSbh
005c h -006bh
OOtch
0080h
Maral Boot
I/O-Byte
User/Default-Lw.
BDOS-Ansprung
RST-Vektoren 1-5 (unbenutzt)
RST 6 (reserviert)'
RST 7 (bei Debug über DDT oder SIDs Breakpoint-Entry)
reserviert (unbenutzt)
■für BIOS reserviert (je nach BlOS-Version benutzt)
reserviert (unbenutzt)
1. Filename bei Aufruf "t.COM filel file2";
bis 007fhs FCB zur freien Benutzung
2. Filenamö
- " Def ault-DMA-Buf f er
Mein Programm sagt, wir werden hier nie Öl entdecken .
j
Eine kurze E i n l e i t u n g in da s D a t e n b a n k s y s t e a
Hit dea Befehl " L O C A T E "
einer Datenbank auffinden.
v. H a r a l d H a n d
.
L o c a t e a r b e i t e t a a s c h n e l l s t e n a u f n i c h t i n d i z i e r t e n bezw.
Schlüsseldateien aktivierten Datenbanken.
Suaaieren von Feldern :
Beispiel
Nit d e a Befehl
S U N " l a s s e n s i c h n u m e r i s c h e D a t e n f e l d e r von
D a t e n s ä t z e n ü b er a e h r e r e S i t z e h i n w e g a u f s u a a i e r e n .
Beispiel
: Berechnung
*
USE B : ADRESSEN
LOCATE FOR "MÜLLER"»NAHE
SATZ : XX
DISPLAY
— —
> E r ö f f n u n g d. D a t e n b a n k
■*” «> A u f s a a a i e r a n g a l l e r
Datensitze
oder es sollen die Adressen herausgefunden
d e r e n P L Z g r ö ß e r a l s 5 0 0 0 ist.
Bis zu 5 D a t e n f e l d e r bezw.
A u s d r ü c k e las s e n sich jeweils
Satz
für S a t z a d d i e r e n u n d d a s E r g e b n i s g e t r e n n t in j e w e i l s e i n e r
S p e i c h e r v a r i a b l e n ablegen.
Beispiel
:
SUN MENGE, EK:Preis,
VK:PREIS. DIFFERENZ, B:PREIS
Speicher Inhalte werden alt Hilfe des Befehls
■ D I S P L A Y
S. S u c h e n e i n e s D a t e n s a t z e s
:
De r B e f e h l " C O N T I N U E "
B e f e h l s dar.
Beispiel
Es l a s s e n s i c h b e s t i a a t e S i t z e a l t H i l f e d e r
auffinden :
folgenden
Befehle
" F I N D "
Hi t
diesea Befehl
l&Bt sich
indizierten Datenbank auffinden.
*
ein
bestiaater
Satz
in
werden,
L O C A T E F O R P L Z >5 0 0 0
S A T Z : XX
DISPLAY
stellt die Fortsetzung des LOCATE-
* Z w i s c h e n d e n B e f e h l e n " L O C A T E " u n d "C O N T I N U E " k ö n n e n
a n d e r e B e f e h l e zur A u s f ü h r u n g g e b r a c h t werden.
H E H O R Y " angezeigt.
ohne
: A u s d e r D a t e n b a n k A D R E S S E N soll die A d r e s s e v o n Frau
M ü l l e r g e f u n d e n wer d e n .
der Suaae aller Einkaufspreise
USE INVENTUR
SUN EX:PREIS
in
* I s t d e r " L O C A T E " - B e f e h l e r f o l g r e i c h , e r s c h e i n t d e r H i n w e i s "Satz
n" a u f d e a B i l d s c h i r a .
F o l g e II :
4
l & B t s i c h e i n b e s t i a a t e r Satz
:
ggf.
auch
USE B : ADRESSEN
LOCATE FOR PLZ>5000
SATZ t XXXX
DISPLAY
CONTINUE
SATZ : XXXX
DISPLAY
CONTINUE
einer
Der
"FIND"-Befehl l&Bt sich nur anwenden,
wenn der
Schlüssel
(z.B. N a a e ) , n a c h d e a a a n s u c h e n w i l l , a k t u e l l e r H a u p t s c h l ü s s e l
d e r a k t i v i e r t e n D a t e n b a n k ist.
DATEIENDE ERREICHT
E s g e n ü g t ggf. n u r d e n A n f a n g s b u c h s t a b e n d e s N a a e n s e i n z u g e b e n .
Positionieren auf einen Datensatz
D e r Satz,
d e r d u r c h e i n e n " F I N D ' - B e f e h l l o k a l i s e r t w u r d e , wird
a u t o a a t i s c h z u a a k t u e l l e n Satz.
Er litt sich alt Hilfe des Be­
fehls "DISPLAY" anzeigen.
Mit dea Befehl " G O " o der " G O
T O " läBt s i c h d e r dbaseinterne Zeiger a uf ei ne n b e s t i a a t e n Datensatz neu positionieren.
23
Beispiel
:
Der Naae " Neier” soll aus einer indizierten
b a n k d a t e i " A D R E S S E ! " l o k a l i s i e r t w e rden.
U S E B: A D R E S S E N I N D E X A D R E S S E 1
FIND NEIER
DISPLAY
Daten­
:
* D e r B e f e h l " D I S P L A Y " z e i g t d e n n e u e n D a t e n s a t z an.
FebrJar
l'?öö
Beispiel
: USE B : ADRESSEN
G O TO RECORD 6
DISPLAY
od.
G O TO
■••>
erster Daten- a «
«atz
h K
od.
G O B O T T O M « “«> l e t z t e r D a t e n - 1
satz
Einfügen von neuen Datensitzen
10. S o r t i e r e n d e r D a t e n b a n k d a t e i
Der Befehl ■ I N S E R T ”ermöglicht das Ein f ü g e n eines Satzes an
einer lieblgen Position der aktivierten Datenbank.
Der Be f e h l
Datenbank.
* Es k a n n a l t j e d e « B e f e h l n u r e i n D a t e n s a t z i n d i e D a t e n b a n k e i n ­
g e b e n wer d e n .
Bei g r oBen nicht indizierten D a t e n b a n k e n ist der " I N S E R T "
Befehl sehr zeitaufwendig.
* Sortiert wird nach dea angegebenen Datenfeld
A u s g a b e d a t e i ist e i n e n e u e a n z u g e b e n d e Datei
D i e a k t i v i e r t e D a t e n b a n k w i r d n i c h t g e i n d e r t u n d b l e i b t weiter
ia Z u g r i f f .
Beispiel 1 : Einfügen hinter d e a aktue l l e n Datensatz
" S O R T
" be wirkt die Sortierung
der
aktivierten
. S O R T O N f e l d TO d a t e l n a a e
Beispiel
Beispiel 2 : Einfügen vor den aktuellen Datensatz
Beispiel 3 : Einfügen eines leeren Datensatzes
: . USE B :A D R E S S E N
.SORT O N POSTLZ TO A D R E S S E 1
.USE B : A D R E S S E 1
.LIST
11. ( M b e n e n n u n g v o n D a t e n b a n k d a t e i e n :
Zihlen von Oatensitzen :
B e l i e b i g e D a t e i e n in d b a s e l a s s e n s i c h a l t d e a Befehl
" R E N A M E " umbenennen.
Die Anzahl der Sitze in einer Datenbank w e r d e n alt d e a Befehl
■ C O U N T " gezihlt.
* D i e V o r e i n s t e l l u n g für d e n D a t e i t y p 1st ".DBF" .
E i n e u m z u b e n e n n e n d e D a t e i d a r f n i c h t g e ö f f n e t ( U S E - Befehl)
sein.
* d b a s e z e i g t d a s E r g e b n i s in f o l g e n d e r F o r a a n
■ Anzahl der Sitze - xxxxx"
RENAME B:alter Naae TO Bsneuer Naae
B e i s p i e l 1 : D i e A n z a h l d e r S i t z e i n d e r D a t e n b a n k " A D R E S S E N " soll
g e z i h l t w e rden.
2 :
E s s o l l e n in d e r D a t e n b a n k " A D R E S S E N " n u r d i e S i t z e
ge z i h l t werden,
d e r e n P o s t l e i t z a h l e n g r ö B e r als
2300 sind.
.USE B : A DRESSEN
.COUNT FOR POSTLZ >2300
ANZAHL DER SATZE • 00012
Nit Hilfe dieses Befehls " D I S P L A Y
F I L E S
" lassen
s i c h a l l e a u f d e a a n g e g e b e n e n L a u f w e r k v o r h a n d e n e n D a t e i e n von
Typ ".DBF" anzeigen.
B e i s p i e l 1 : a l l e "DBF" - D a t e i e n v o n L a u f w e r k B s o l l e n a n g e z e i g t
werden.
:D I S P L A Y F I L E S O N B:
B e i s p i e l 2 : a l l e D a t e i e n v o n L a u f w e r k B s o l l e n a n g e z e i g t werden.
Oberspringen von Datensitzen :
Hit Hilfe des " S K I P " Befehls k a n n der Zeiger,
d e r ln
a u f d e n a k t u e l l e n D a t e n s a t z zeigt,
a u f v o r h e r g e h e n d e bezw.
f o l g e n d e S i t z e g e s e t z t werden.
B e i s p i e l 1 : .USE B : A D R E S S E N
. LIST
.5
.DISPLAY
.SKIP 3
.DI SP
.S K I P - 6
•DI SP
. S K I P 2*2
. DISP
: .RENAME B:ADRESSEN TO B:ANSCHRIFT
12. A n z e i g e v o n D a t e n b a n k e n i
. USE B:ADRESSEN
. COUNT
ANZAHL DER SATZE - 00008
Beispiel
Beispiel
D I S P L A Y F I L E S O N B: L I K E *:•
dbase
nach­
weitere Möglichkeiten :
nur Indexdateien
: ...... L I K E
n u r R e p o r t d a t e i e n : ..... L I K E
*.NDX
*.FRN
D a s w a r d e r 2. A b s c h n i t t über d b a s e II . Er b e f a S t e sich a l t d e n n o t ­
w e n d i g e n B e f e h l e n zu V e r i n d e r u n g e n u n d S o r t i e r u n g e n v o n D a t e n banken.
B e i a n i c h s t e n I n f o g e h t es d a n n w e i t e r a l t d e r E r s t e l l u n g v o n kpl.
P r o g r a a a e n , s o w i e n o c h w e i t e r e n n o t w e n d i g e n Befehlen.
Ich w ünsche E u c h viel Erfolg bei der Anwendung.
Harald
M a u s
m i t
s i e b e n
B e i n e n
ln der 2 2 . A usgabe des Clubinfos s t e l l t Hartm ut ein e k le in e P la tin e
vor, m it deren Hilfe sic h ein e n ich t se r ie ll a rb e ite n d e Maus an u n sere Com­
p u te r a n s c h lie ß e n lä ß t. Wer nur einen Funken Moral im L eib e und ein en Hunni
übrig h a t, b a u t das Ding n a tü rlich nach, so auch ich . Die h u n d ert Mark g e l­
te n in k lu s iv e der Maus und a lle r T e ile , v e r s te h t sich .
CLU»
80
HORB
Der e le k tr o n is c h e S c h a lte r 4066 war bei meinem D ealer n ic h t v o rrä tig .
S t a t t d e sse n gab e r mir zwei Exem plare des 4 0 1 6 , der l t . B esch reib u n g p ra k ­
t is c h id e n tis c h is t. Damit l ie f die Sch altu n g a b e r n ic h t. D aher m öchte ich
em p feh len , fü r die von Hartm ut vo rg esch lag en en T e lle k e in e E rsa tz ty p e n zu
nehm en.
Wir seh en Im In fo, daß Hartmut zwei T a s te r s e in e r Maus b e n u tz t. Meine
h a t a u ch zw ei, die Jedoch ein fa ch m iteinan der k u rz g e sch lo ssen w aren. H art­
m uts a u ch , a b e r er h a t die Verbindung a u fg e tre n n t und e in e noch u n g e n u tz te
L eitu n g des K abels dam it bedröhn t. Nach d ieser A nregung s u c h te und fand ich
so g ar noch zwei fre ie L eitu n g en , so d B ß ein w e ite re r T a s t e r a n g e s c h lo sse n
w erden k on n te.
H ier war B a s te le i in d er Maus nötig: Z u n äch st m ußte H artm uts O p eration
d u rch g e fü h rt w erden, um die beiden b e re its v o rh an d en en T a s te n e in z e ln n u tz ­
b a r zu m achen. Fü r ein en d ritte n Knopf fand sic h P la tz a u f d er k le in e n Zu­
s a t z p la t in e , a u f d er die beiden D ru ck tasten sitz e n . Die d a fü r notw endige
Bohrung tr e n n te ein e L eitu n g au f, die Jedoch m it einem S tü ck D rah t w ieder
g e sc h lo ss e n w erden k o n n te. E s h an d e lt »ich dabei um die C om m on-L eltu ng a lle r
T a s te n und der R o lle n e le k tro n ik . Daher m ußte s ie au ch an d ie n eu e T a s te a n ­
g e sc h lo ss e n w erden. Die le tz t e fre ie Leitung des K ab els kam an ih re n zw eiten
Pin.
E le k tro n isc h g ab es a lso k ein e Sch w ierig k eiten . M ech an isch i s t d ie G e­
s c h ic h te Jedoch etw as h e ik e l. Der einzubauende neue T a s t e r b ra u c h t n a tü r lic h
Raum. G lü ck lich erw eise fand sich ein er, d essen u n ten a u s d er T a s te n p la tin e
h e ra u s ra g e n d e r T e il m it knapp er Not noch n ich t die d a ru n te r lie g en d e n B au ­
t e ile d er H au p tp latin e b e rü h rte. Es m ußte d afü r a b e r b e r e its ein w enig g e ­
s c h liffe n w erden. S e in D ruckknopf s te h t so hoch ü b er, daß e r durch ein e
n ie d erz u b rin g en d e Bohrung im G ehäusedeckel g erad e etw a 3 mm h e ra u s ra g t. Das
i s t e in e op tim ale A rb eitsh ö h e.
Wer da6 n ach b au en m öchte, s o llte sich u n b ed in g t ln s e in e r Maus se h r
s o r g fä ltig nach p assen d en P lätzen um sehen. Es i s t au ch n ic h t v e r k e h r t, v o r ­
s ic h ts h a lb e r zwei od er d rei v ersch ied en e k lein e T a s t e r zu r A usw ahl b e r e it ­
lie g e n zu hab en . Wenn ein e so glü ck lich e Anordnung w ie in meinem E xem p lar
n ic h t m öglich i s t , g e h t a b e r auch die e in fa c h s te Lösung: Die T a s te wird ü b er
einem genügend großen Hohlraum, wovon es ln a lle n M äusen genug g ib t, d ir e k t
in den G eh ä u sed eck el g e sch ra u b t. Um den D eckel ganz vom Boden tre n n e n zu
k ön n en , em p fieh lt s ic h dann ein e Steck v erb in d u n g zu r ü b rig en E le k tro n ik .
L eid er m ußte nun au ch ein e neue O b e rm a n n -P la tin e h e r, denn fü r sie b e n
A n s ch lü sse h a t d er 7 4 0 4 ein en In v e rte r zuwenig. E in z w e ite r Chip m ußte se in .
A ußerdem m ußte die S teck v erb in d u n g von d ieser P la tin e zur T a s t a tu r um zwei
P in s v e r b r e it e r t w erden, die auch n ich t mehr a u f die s e h r k le in e a l t e P la ­
t in e p a ß te n . Im P rinzip h a t sich a b e r n ich ts an dem von H artm ut v o r g e s t e ll­
t e n S c h a ltu n g s v o rs c h la g g eän d ert, so daß die neu e S c h a ltu n g h ie r n ic h t v o r ­
g e s t e llt w erden muß.
F r e ilic h k ann Ich nur fü r meine eig en e Maus (Ml von Noris D a ta ) v e r s i ­
ch e rn , daß die Um bauten problem los m achbar sin d . H artm uts Maus s ie h t In w en ­
dig g en a u so au s, w a h rsch ein lich a lle anderen au ch . Man k ann a u f d er L ad en ­
t h e k e s c h le c h t dem T e il m it dem Sch rau b en zieh er z u le ib e g eh en , um d as zu
ü b e rp rü fe n , a b e r die C h ance, ein g eeig n etes Modell zu erw isch e n , d ü rfte bei
100% lie g e n .
Möchte jem and m eine a l t e P la tin e h a b en ? S ie t r e ib t die R o lle n e lek tro n ik
und e in e T a s t e . A uf dem 7 4 0 4 i s t noch ein In v e rte r, und a u f dem zw eiten 4 0 6 6
sind noch d rei R e la is f r e i, so daß H artm uts T rick m it d er g e tre n n te n V e r­
bindung zw ischen den b e id en v o rh an d en en T a s te n ohne A nbauten noch d u rch ­
fü h rb ar is t . Ich m öchte die P la tin e a b e r nur u n b e s tü ck t h erg eben , denn ln
Lübeck k rieg e ich k ein e n 4 0 6 6 . B itte m eiden!
In d er P ra x is s t e l l t e s ic h h e ra u s, daß die Im pulse von d er R olle seh r
ra sch a u fe in a n d e r fo lg en . Die Maus d a rf d a h e r nu r se h r langsam bew egt w er­
den. V ie lle ic h t s o llt e man je d e s zw eite Loch in den beid en B len d en sch eib en
d er R ollen m echan ik v e rs to p fe n , so daß nu r noch h a lb so o ft ein Impuls e r ­
fo lg t. Dann w äre d ie G a ra n tie fü r die Maus en d g ü ltig v erw irk t. A ber das h a t
den b e g e is te r te n Fum mler no ch s e lte n a b g e s c h re c k t.
Es i s t ein e Wonne, m it d er Maus zu a rb e ite n . G erade eben beim K o rre k t u rle s e n d ie s e s T e x te s k a rriö k e re ich dam it im B ildschirm kreu z und quer,
Maus in d er R e ch ten , B ie r ln d er L in k en, Augen nur noch a u f dem T e x t, n ic h t
m ehr a u f d er T a s t a tu r . Das T e il a r b e ite t näm lich n ic h t nur m it G raph ikp ro­
grammen zusam m en, so n d ern m it allem , w as die P fe ilta s te n und die and eren
T a s te n au s d er K e y b o a rd -R e ih e 3 8 4 0 h b e s p itz e lt. A lso auch m it TSCRIPS.
Hartm ut, D eine Idee w ar S a h n e !
A rn u lf Sopp
HEFT
23
F eb ru a r
l?8 o
70
M c o h
i ri
vor. Manfred Held
D r u c k e r p a t o
}~i
Nein,nein
keine
Angst.
nicht
noch »in ü'dci' Pätch im Syeteir.
gendwelche Steuerzeichen oder Grafikzeichen darzustellen.
Dieses-mal ein Hardpatch ????!
um
ir­
Folgendes Problem:
Bei Neudos,
Gdos ect. wird CP in LF umgewandsit. Es wird an den Drucker
also
nur CR <ODh) ausgegeben.
Der Drucker 3iuss so eingestellt
werden,
dass nach einem CR automatisch ein Zeilenvorschub gemacht wird. Man kann
dem Betriebssystem zwar beibringen,
dass CR und LF getrennt zum Drucker
gebracht wird, dies wurde auch schon oeffter getan, aber eit Programmen,
die eigene Druckertreiber haben, steht man wieder vor demselben Problem.
Ditr bt-ssere Lc-esung ist.
i3ii s'JtNt
ein freies Fort 'j.nd ein
TreierPin
an dem Port und verbindet das Pin mit den Eingang am Drucker,
es
muss nur beachtet werden,
dass die Ruhelage des P o r t s nach einem Reset,
L-Pegel ist.
Der Rest ist Software.
Ich habe
im Bootsector des CP/M's ein freies Plaetzchen gefunden
und
vier
Byte eingepflanzt.
die jetzt bei Arbeiten mit CP/M den Drucker
u m sch alt en.
Somit
stehen mir alle Moeglichkeiten des Druckers unter Newdos und CP/K
voll zur Verfuegung.
Anders beim Betriebssystem CP/M. CP/M sendet CR und LF getrennt. Es wird
keine Umwandlung vorgenommen. Auch die Programme behandeln CR und LF als
zwei getrennte Zeichen.
Im Betriebssystem CP/M unseres Computers gibt es einen Softschalter, der
wahlweise
LF zu 00h umwandelt.
Somit koennen wenigstens die Programme
unter CP/M, in begrenztem Umfang genutzt werden.
Damit
die Programme in CP/M die Faehigkeiten des Druckers
voll
nutzen
koennen,
ber.oetigt der Drucker ein getrennter CR und L F . Das steht aber
im Wiederspruch mit dem Drucker, der eben andes eingestellt werden muss.
Die Loesung:
Laut
Druckerhandbuch
gibt es einen Schalter oder Jumper
(Autolinefeed
oder
CR(AUTO
FEED XT) oder sonst irgendwie) damit
der Drucker
nach
Empfang des CR einen Zeilenvorschub ausfuehrt.
Wichtiger ist aber der Anschluss am Drucker.
Laut meinen Handbuch hat
der
Drucker
am Pin 14 dps Centronics-Steckers einen
Eingang mit der
Bezeichnung "AUTO FEED X T " . In der Beschreibung zu den Anschlusspins des
Steckers heisst es
Empfaengt der
Drucker einen CR-Code.
wenn
dieses Signal
L
ist, schiebt er das Papier
nach Druckende automatisch um eine Zeile vor.
Das heisst,
wenn L-Pegel an diesem Pin anliegt,
und CR empfangen wird,
fuehrt der Drucker einen Zeilenvorschub aus.
Liegt H-Pegel ar.. wird CR
und LF getrennt behandelt. Der Drucker fuehrt keiner. Zei.envorschub auE .
wenn CF alleine empfangen wird sondern wartet bis I.F empfanger. wird.
Wichtig
dabei ist , dass der Schalter
CP. (AUTO FEED XT? auf
"Drucken
ohne LF" steht.
Fuer unser Problem heisst das,
von Pin 14 auf L-Pegel liegen,
unter N e w d o s , Gdos ect. muss der Eingang
fuer CP/M auf H-Pegel.
Man
koennte jetzt einen Schalter in den Anschlusstecker einbauen,
mit
dem
Pin 14 einmal auf Masse geschaltet wird oder auf +5V.
Das hat aber
den Nachteil,
vergisst man den Schalter bei Betriebssystemwechsel umzuschalten, gibt es Schrott am Drucker.
W i e d e r
d i e s m a
m
1s
a l s
T E A K
-40
/
P D —
B O
55P R
—
T r - a c k u im s c r h a l t u n g
—&
—U —L a u f w e r k e
11
Oie
Firma
TEAK scheint ständig bemüht ihre
Laufwerksproduktion
auf d e m n e u e s t e n t e c h n i s c h e n S t a n d z u halten.
Dadurch kommt aber
mancher
K ä u f e r e i n e s BO-Spui— T E A K —L a u f w e r k s ,
von dem
behauptet
wird,
d a ß e s auf 4 0 — S p u r b e t r i e b u n s c h a l t b a r ist,
ganz schön
in
Schwierigkeiten.
Immerhin
erschienen
allein
im
CLUB
BO-Info
schon zwei v e r s c h i e d e n e A n l e i t u n g e n für d i e Umschaltung von T E A K —
Laufwerken.
Vor k u r z e m l i efen m i r zwei L a u f w e r k e über den Weg,
die man einem
B e k a n n t e n a l s 4 0 — S p ü r e r v e r k a u f t hatte. Bei genauerer Betr a c h t u n g
s t e llte sich heraus, d aß e s si c h u m L a u f w e r k e mit der Bezeichnung
FD-55FR-611-U
handelte,
die
von
einem
anderen
Anbieter
als
umschaltbare
BO'er
verkauft werden.
Nach kurzer Suche war
die
Stelle gefunden, an der ein einfacher Ein/Aus-Schalter eingelötet
we r d e n muß, u m sowohl 4 0 a l s a u c h 8 0 T r a c k s b e nutzen z u können.
Viel
Spaß und Glück
beim Löten,
euer
H a r t m Lt t
Obermann
Gepufferter
Anmerkungen
DMA-
und
IM2-fähioer
ECB-Bus
für
GENIE
I und
II
z u m CI u b - 8 0 - E C B - B u s - P r o . i e k t
Helmut Bernhardt
Liebe Cl ub-Freunde, die Ihr den M ut g ehabt habt, Euch an die Löterei
B us- P ro je kt e s heranzuwagen, Euch speziell gilt der -folgende Artikel zu
ma . Vo rher m öc ht e
ich aber noch e inige B e me r k u n g e n
loswerden, die
lichen sollen, war um ich me ine e t wa s a bw e ic he nd e n V o r s t e l l u n g e n e ines
Interfaces den en Eures Pro je kt e s e n t g e g e n s t e 11en muß.
des ECBdem T h e ­
v e r de u t­
EC B-Bus-
Die G ru nd v or st el l un g des E C B - Bu s
ist nicht mur d as U m so r t i e r e n einer w ilden
P in an or d nu ng auf den S ys t e m b u s - S t e c k e r n unserer Co mp u t e r auf die noch un ü b e r ­
sichtlichere des ECB-Bus sondern noch eine Rei he w e i t e r e r Srtrukt ur en , die s p e ­
ziell auf die besonderen F ä h i g ke it en
der Z 8 0 - C P U a bg e st i m m t si nd und auch von
ei nem v ol ls t ändigen ECB-Bus u n te r s t ü t z t werden.
Dazu gehört zunächst der Interrupt M o d e 2 <IM2), der vo r au ss et z t, daß die Inte r rupt-auslösende Karte der C PU be i m I n t e r r u p t - A c k n o w l e d g e einen 8Bit-Vektor
über den Da t enbus mitteilt. D ieser V e k t o r m u ß vom E C B - B u s üb er den Da tenbuffer
auch zur CPU gelangen können, w e n n IORQ* und M l * g l e i c h z e i t i g low sind.
A u ß e r d e m m ü s se n die Buffer aller B u s s i g n a l e b i d ir e kt io na l sein, weil bei DMAZugriff auf Ko m ponenten des C P U - B o a r d s der D M A - C o n t r o l l e r auf dem ECB - Bu s auch
die e nt s prechenden Baugru pp en des C P U - B o a r d s a d r e s s i e r e n mu ß. Das bedeutet e i ­
nen sehr viel größeren A u f w a n d bei
der S te u e r u n g der T r e i b e r r i c h t u n g dieser
Buffer.
Und schließlich soll der E C B - B u s nicht nur s e l b s t g e s t r i c k t e Karten aufnehmen
sondern ha u pt sächlich den Einsatz der bre it en P a l et te
kä u f l i c h e r Karten für
EC B -Systeme ermöglichen. Daher v e rb i et et
sich auch die p r in zipiell geniale L ö­
sung, der Ri c ht un gs s t e u e r u n g des D a t e n b u f f e r s über
F r e i g a b e s i g n a l e , die die
E C B - B us -K ar t en liefern. Ko m m e r z i e l l e
Karten w i s s e n nicht,
daß Euer Bus solche
Signale voraussetzt.
Das Konze pt Eures EC B-Bus baut
auf den M ö g l i c h k e i t e n des T R S - 8 0 - S y s t e m b u s auf,
die leider w i rk l i c h recht be s c h e i d e n
sind. IM2- und D M A - F ä h i g k e i t
sind dort
nicht vorha nden. Beim GE NIE u nd b e i m K omtek 1 lassen sich
aber alle E i g e n ­
schaften des ECB- B us v er wi rk l ic he n, ohne intern gro ße Ei n g r i f f e m a c h e n zu m ü s ­
sen .
l*n aber auch beim T R S- 8 0 z u m in de st 90V. der k o m m e r z i e l l e n Karten, die ohne IM2
u nd DMA arbeiten, nut zen zu können,
ist es un u m g ä n g l i c h , von der R i c h t u n g s ­
s t e u er un g des Da te n bu ff er s durch die K ar t en selbst abzuko ranen. Da ist dann auch
die bei mir e in g eschlagene O c h s e n t o u r
nötig, die
R i c h t u n g s s t e u e r u n g aus den
Fr e ig ab e s i g n a l e n der Baugruppen in n e r h a l b d es C o m p u t e r s h er z ul ei te n .
Die im folg en d en Artike l be s c h r i e b e n e E C B - B u s - E i n g a n g k a r t e b e r ü c k s i c h t i g t nicht
nur die o.a. Gesicht sp u nk te s o n d er n br in gt no ch ein paar z u s ä t z l i c h e L e i s t u n ­
gen, die nic ht unbedingt an den E C B - B u s g eb u n d e n
sind, s o n d e r n .einige andere
H ar An ar e - E r u e i t e r u n g e n u n te rs t üt ze n. D iese F e a t u r e s
si nd aber nicht unbedingt
w i c h t i g und können auch ausges pa r t w e r d e n .
73
Es ist be im GEN I E und Komtek ohne w e i t e r e s mö g l i c h , den E C B - B u s mit diese r E i n ­
g an gs k ar te ans telle der alten zu b e t r e i b e n .
B e im T R S - 8 0 s i n d noc h zusätzliche
M a ß n a h m e n nötig, die einen voll f u n k t i o n s f ä h i g e n E C B - B u s e rm ö gl ic he n .
He lm ut Be rnhardt
W ä h r e n d bei Ve rz ic h t auf DM A- und IM2-Fähigkeit die S te u e r u n g des Da tenb u f f er s zwischen Computer und ex ternem ECB-Bus r e la ti v
einfach zu r e a l i ­
sier en ist (der Buffer darf nur in Ri chtung CPU treiben, w en n Daten von B a u ­
gruppen gelesen werden, die nicht auf der C P U - Se i te des Buff e rs - also auf
dem ECB - Bu s - sitzen), sin d bei der E in bi n du ng d ieser Fe at u r e s einige z u ­
sätz liche A s p ek te zu berücks ic ht i ge n.
Der I n te rr up t -M od e2 der 2 8 0 - C P U setzt voraus,
daß der Interrupt -L i ef er an t
b ei m Interrupt- Acknowl edge (Ml* und IORQ* beide low) ein 8Bit-Ulort auf den
Da t e n b u s legt, das die CPU als LSB einer A d re ss e in der I n t e r ru p t- Ve kt o r- Ta belle interpretiert. D ie se s Byte m u ß von einer In t er ru p t - Q u e l l e vom ECB- B us
durch den Dat en bu f fe r auch zur CPU gelangen. Der B uffer m u ß beim I nterruptA c k n o w l e d g e also auch in Ri c ht u n g CPU treiben.
Bei Übernahme der Daten-, A d r e ß - und St eu erbusse dur ch einen D M A - C o n t r o l 1 er
(DMAC) auf dem ECB- Bu s m u ß dieser auch Zugriff
auf RAM, EP R O M und alle CPUseitig des Bu ffers liegenden Baugruppen haben. Für A d r e ß - und S t e u e r l e i t u n ­
gen ge staltet sich diese
R ic h t u n g s s t e u e r u n g recht einfach.
Hier genügt es,
w en n dur ch das low aktive CPU-SIgnal BUSA K* (nur dann darf der DMAC a r b e i ­
ten) die Buffer dieser Signale in Richt un g zur CPU treiben, so daß der DMAC
dort e n t s p r ec he n d adre s si er en kann.
Für die S t e u e r u n g des D at e nb uf fe r s sind
noch w e i te re Umstände zu b er üc ksichtigen.
W en n die CPU den Bus kont ro ll i er t, kann beim S c h r e i b e n der Buffer immer in
R ic ht u ng ECB-Bus treiben. Be im Lesen darf er nur dann nicht in R ic h t u n g CPU
treiben, w en n interne B a u g ru p pe n (C PU -seitig des Bu f fers) a dressiert werden.
Sonst wür de ein von außen g e l es e ne s FFH gegen ein von der intern a d r e s s i e r ­
ten B augruppe a u s g e g e be ne s D a tenwort
arbeiten. A b g e s e h e n davon, daß die g e ­
gene i na nd er arbeitenden K o mp on e nt en sich irgendwann g e g e n s e i t i g zerstören,
w ü r d e die CPU F e hl in f o r m a t i o n e n lesen.
W e n n der D M A C ^ 5 ) d e n B us steuert, ist Lesen und S c h r e i b e n für die T r e i b e r ­
r ic h t u n g des Buf f er s das ganze Gegenteil. Wenn der D M A C Daten einer CP U- s ei tigen S ys te mk o mp on en t e liest, wobei er dann auch die L e i t u n g RD* low zieht,
m u ß der Buffer in R i ch t u n g ECB- Bu s treiben. Das darf er aber nur dann, wenn
er auf CPU -s ei t ig e K om p o n e n t e n zugreift. We nn er von ein er B a ugruppe auf dem
ECB- Bu s liest, m u ß der B u ff er in Ri ch tu n g CPU treiben, um dann nicht auf dem
E C B - Bu s zwei Dat e nw ör te r g e g e ne i na nd er arbeiten zu lassen.
Für die T r e i b e r r i c h t u n g d es Buff e rs m u ß also b e r ü c k s i c h t i g t werden, ob der
DMAC oder die CPU den Bus kont r ol li er t , ob die a dr e s s i e r t e Ba ugruppe auf dem
ECB- Bu s oder C PU -s e i t i g d es Buff e rs
liegt u nd ob g e l e se n oder ge s chrieben
wird.
In Tab el le 1 sind die für versch ie d en e B e t r i e b s z u s t ä n d e aus obigen Ü b e r l e ­
gung en a b geleiteten T r e i b e r r i c h u n g e n (von der CPU aus ge sehen) zusam me ng e stellt. Dabei ist zu b e r ü c ks ic ht i ge n, daß z u s ä t z l i c h auch noch beim Interr u p t -A c kn ow le d ge die R i c h t u n g ’rein* sein muß, weil der GENI E keine eigenen
v ek to r i s i e r t e n IN T-Quellen hat. Diese Tabelle ist G ru n d l a g e der Sch al tu ng in
A bb.l. Die R i c h t u n g s s t e u e r u n g soll aussch l ie ßl ic h aus Sig n al en , die von CPUse itigen Baugrup p en zu be z ie he n sind, erfo lgen. N u r da nn ist auch g e w ä h r ­
l e i s t e t , daß auf dem E C B - B u s jede ha n de ls üb l ic he Kar te funk ti on i er t. K o m ­
m er z i e l l e EC B- Bu s -K ar te n legen kein aktives Signal auf den Bus, das in die
B uf f e r s t e u e r u n g ei nb ez o ge n w e r d e n kann.
-Tabelle 1: Treiberrlchtuno des ECB-Bus Databuffers
BusSteuerung
durch
CPU
DMAC
interne Baugruppe
adressiert
Read
Write
externe Baugruppe
adressiert
Read
Urite
raus
raus
rein
rein
raus
rein
raus
rein
Der Aufwand dafür ist aber nicht unerheblich und der Anwender dieser Bus­
steuerung muß sein System genau kennen, um die nötigen Steuersignale an die
Schaltung legen zu können. Einen Anhaltspunkt dafür, welche Freigabesignale
Vorkommen können, mag die Tabelle 2 geben. Darin sind die prinzipiell vor­
handenen Baugruppen und einige häufig benutzte Hardware-Erweiterungen und
die Punkte, wo deren Freigabesignale abzugreifen sind, zusamnengestel 11.
Diese Punkte sind mit jeweils einem der Punkte A bis H auf der Eingangskarte
zu verbinden.
Tabelle 2; Interne Freioabesionale
CPU-Board
RAM
R0M1
R0M2
R0M3
R0M4
Tastatur
Video-RAM
IC
Adresse
4000-FFFF
(3900-3BFF)
<7>
OOOO-OFFF
1000-lFFF
2000-2FFF
3000-34FF(37DF) <7>
3800-3BFF(38FF) <7>
3C00-3FFF
Vi deo-Board
Cassette 1
Cassette 2
Port FF
Por,t FE
Expansi on-Interface
RAMI
RAM2
Floppy
Drucker
RS 232 EG3020
EG3014
8000-BFFF
C000-FFFF
37E0-37FF
37E8 u.Port FD
Ports F8 , F9
Typ Pin
37 347
10
11
12
13
7
35
3001
3002
3003
2714
348
32
15
20
20
20
20
1
3
20
20
10
139
154
12
20
10
9
37E0-37FF
Port FD
Ports 80-88
II dilti Baugruppen werden nicht gelesen und brauchen deshalb nicht in dii
Buffirsteuerung niteinbezogen zu werdent dis IN A,(0DFH) dis EGMMBA
dimt nicht der Datenaquisition, es setit nur dis 74LS259-Latch zurict,
ein Ditenwort wird nicht ausgegebtn
Die DMA-Fähigkeit der ECB-Busbuffer alleine reicht nicht aus. Es muß durch
Verbinden der Systembus-Leitung BUSAK* mit CCDBS/STADBS* und DODBS/ADDBS*
auch dafür gesorgt werden, daß beim DMA-Zugriff die Buffer der CPU-Signale
in den hochohmigen Zustand versetzt werden. Das kann entweder auf der Ein­
gangskarte durch Querverdrahtung der entsprechenden Pins von CN2 bzw. CN3 oder durch feste Verdrahtung auf dem CPU-Board gemäß Abb.11 erreicht werden.
Die direkte Verbindung des INT»-Signals (im Schaltplan INTEXP») von der
Floppy-Baugruppe zur CPU ist dafür aufzutrennen. Das Signal INTEXP* ist
stattdessen an den entsprechend bezeichneten Punkt der Schaltung und an den
freien Triggereingang des CTC-Kanals zu legen. Die 1NT*-Leitung des ECB-Bus
ist an den Punkt INTECB* zu legen und der Ausgang 1NTCPU* ist mit dem INTEingang der CPU (ZBO, Pinl4) zu verbinden.
Damit ist gewährleistet, daß nach dem Einschalten oder Drücken des RESETKnopfes immer der Interrupt vom FDC-Board direkt zur CPU durchgeschaltet
wird und das Betriebssystem im IM1 arbeiten kann. Wenn allerdings andere
Baugruppen auf dem ECB-Bus in Echtzeit im IM2 betrieben werden sollen,
müssen auch die systemeigenen Interrupts dieses Spiel mitmachen können und
das geht nur dann, wenn ihnen der CTC-Kanal beim INT-Acknowledge einen
Vektor zur Verfügung stellt. Die Schaltung leistet es, daß ein LD A,xxxx
xxlxB; OUT (0EDH),A das INT* Signal des FDC-Boards über den CTC umleitet.
9
18 155 2,14
14
32
3
Z80-CTC 14
RB.V24
Z80 -DART 35
? 155 2,14
Ports 00-7F
HRG1B von RB
? 245
19
Schmidtke 80Z.Karte BOOO-BFFF
? 138
15
Ports DO, Dl
Port DF
bleibt unberücksichtigt
EG44MBA
■
Ports DE, DF
EG44MBA+ <4)
■
Port EC
254K-Banker <10)
■
(u. ED mi t dieser Karte) ‘
■
Ports 50-5F
CP/M-Banker <4>
EXP1 von RB
Durch Vorschalten weiterer AND-Gatter vor die Eingänge des 74LS30-ICs <z.B.
74LS08, 74LS11, 74LS21) kann die Anzahl der verwendbaren Eingänge für Frei­
gabesignale beliebig erhöht werden (Abb.10).
Da für die Richtungssteuerung des Datenbuffers ohnehin einige ICs nötig wa­
ren, und der ECB-Bus auch IM2-fähig ist, ließ sich mit etwas Mehraufwand
auch gleich eine Vektorisierung der Interrupts des 25ms-Timers und des Floppy-Controllers realisieren. Dafür ist Voraussetzung, daß auf dem ECB-Bus auf
einer Karte ein freier Z80-CTC-Kanal <2> vorhanden ist, über den durch
Software das gemeinsame 1NT*-Signa1 des Systems umgeleitet werden kann. Der
CTC-Kanal ist dann im Zähler-Modus mit der Zählkonstanten 1 und Triggern
durch eine negative Flanke zu programmieren.
20
11
32
bleibt unberücksichtigt «1
37
37
29
31
37
Im Normalfall liegen alle memory-mapped (mm) Baugruppen CPU-seitig des Trei­
bers, so daß dann einzig MERQ* <IC1<4, 74LS347, Pin5) an die Schaltung ge­
führt werden muß. Wenn aber auch nur eine im Baugruppe auf dem ECB-Bus
steckt, müssen alle anderen mn Freigabesignale einzeln an die Schaltung ge­
führt werden.
Die Software muß dann aber Rücksicht auf diesen Umstand nehmen. In der 1NTVektor-Tabelle darf nicht einfach 4012H stehen (INT-Vektor des DOS), da die
Serviceroutine des DOS nicht mit RETI sondern mit RET endet und der Z80-CTC
dann nicht weiß, wann er seinen 1E0-Ausgang wieder auf High zurücknehmen
soll. Es muß folgender Umweg eingeschlagen werden;
«1
■
■
■
■
1NTAB
CTCN
DEFW
DEFU
DEFU
SERV1
SERV2
....
{Anfang 1NT-Tabelle
(nächster Vektor
ju.s.w.
DEFU
CTCN
DEFU
LETZT
jVektor für Serviceroutine des INT vom CTC-Kanal
;N, über den die System-Interrupts laufen
(Ende der Vektor-Tabelle
CALL
EI
RETI
4012H
jServiceroutine des DOS
Signale gel ie fe rt wer de n. Der EC B-Bus braucht
se i n .
’
A u ß e r d e m bleibt es d em An we n d e r offen, w ä h r e n d d es IM2- Betriebes anderer
Baugru pp e n den 25ms INT v er hu n ge rn zu lassen. W e n n b e i m Lable CTCN einfach
ein El, RETI steht, w i r d 37E0H nicht mehr gel es en u n d da ra ufhin erfolgt kein
we i t e r e r Interrupt des T i m e r s mehr.
Eine R e i n i t i a l i s i e r u n g des T i m e r - I N T s
g eschieht durch U m p r o g r a mm ie r en des V e k t o r s auf ein anderes Lable, das w i e ­
der den CALL 4Q12H enthält, und e in ma li g es Lesen von 37E0H.
Durch Zurücksetzen von Dl in Port EDH w i r d w i e d e r der INT des F DC - Bo ar ds d i ­
rekt an die CPU d ur ch g es c h a l t e t und alle In te r r u p t s des ECB- Bus w er d en u n ­
terbunden .
Mit der für die I nt e r r u p t - S t e u e r u n g be n öt ig te n P o r t d e c o d l e r u n g und m it dem
Latch w urden noch einige
zusä tz l ic he Funkti o ne n r e a li si e rt . Zunäc hst w u r d e n
auch die Port fr e ig ab es i gn al e OUTECH*, OUTEEH* und O U T E F H * hergeleitet. Davon
kann OUTE CH » zur Freigabe des 74LS 2 73 Lat ch auf
dem 256K-Ba nker <10> b e ­
nutzt werden. Dieses Signal w i r d direkt an den Pinll des 74LS273 geführt,
wobei dann aber die bisher dahin führende L e i tu n g zu durcht re nn en ist. Damit
ist dann das 74LS30 IC auf dem Banker ü b e r f l ü s s i g u nd auch die Leit un g en AO
bis A 5 sowie 10RQ* und UIR* b ra uchen nicht m eh r dort hi n geführt zu we rd en <A6
und A 7 w erden dort nicht
nur zur P o r t d e c o d i e r u n g sondern auch noch zur
E rz e u g u n g der 8 Bi t- Re f r e s h a d r e s s e
b en ötigt u nd m ü s s e n deshalb w e i t e r h i n
an g es chlossen bleiben).
Mit Bit 0 in Port EDH w u r de ein so f t g e s t e u e r t e s
In ve rtieren des zum 256 KBanker führenden S i gn a ls A 1 5 re alisiert. Damit läßt sich mit D0=0 an Port
EDH (Einschaltzustand)
v orgeben, daß die unt er en
32K A d r e ßb e re ic h des Z80
g ebankt werden können, w ä h r e n d D0=1
an Port EDH das B a nk in g der ober en 32K
f e s t 1e g t .
Und sc hließlich kann m it D2=l an Port EDH ein g e m e i n s a m e s Invertieren der A dres se n A M und A 1 5 er re ic h t werde n. Die dabei g e w o n n e n e n Signa le A14' und
AIS' k önnen anstelle der Signale A 1 4 und A I S an die De c o d e r s c h a l t u n g für die
löK (ROMs und nun I/O), IC25, 74LS139,
Pins 14 und 13 geführt w erden und g e ­
statten dadurch ein V e r l e g e n dieser Komp on e nt en
an d as obere Speich er e nd e
48-64K. In diesem Bereich f un k ti o n i e r e n dann zwar die ROMs nicht mehr, we nn
man aber dann noch ein 7 4 L S 3 2
IC spendiert und m i t d e m Signal E D , 3 (D3 von
Port EDH) ein pr o g r a m m i e r b a r e s A b s c h a l t e n der ROMs e i nb au t (Ab b .10), hat man
auch noch die Funkti on e n des Omikr on M a p p e r s ( ko m p a t i b l e r Selbstbau in <9>)
für den Betrieb von CP /M rea li s ie rt . Dieser leistet (wenn auch mit ei nem a n ­
deren 0UT-6efehl) e b e nf al l s d as Einstel le n der Sy st e mk on fi g u r a t i o n :
0 0 0 0 H- F7 DF H
F 7 E 0H - F7 FF H
F 8 0 0 H- FB FF H
F C 0 0 H- FF FF H
RAM <7>
ttl
Floppy, Drucker
T a s t a t u r <7>
Video-RAM
II dtr (hikroo Hipptr fir den TRS BO leistet selbst eine vollständige
Decodierung des Bereichs des Sonder-RtHs des 6ENIE
77
Ein Patc he n der CP/M S y s t e m d i s k e t t e ist sehr e i nf ac h. Auf den S y s t e ms p ur en
läßt sich relativ ein fa c h die Sp ru n gl ei st e des Lo ad er B i os finden, die aus
ein er Reihe von J umps b e s te h t (C9 nn nn C9 nn ...). D a r an schließen sich die
Di sk Pa rameter T a b e l l e n m it sehr v ielen 00H an un d u n m i tt el b ar danach st eh en
die Befehle LD A,40H;
OUT (50H),A.
Diese b ei d en Befehle sind durch die
B ef eh le LD A,xxxx llxxB;
OUT ( 0E DH),A zu e r s et ze n . Damit
läuft das CP/M
des Omikron M a p p er s dann auch ohne de nselben.
Ulenn diese Eingriffe auf dem C P U - B o a r d gemacht w e r d e n , ist der C om puter aber
von der E CB - Bu s- Ei n g a n g s k a r t e abhä ngig, weil von d i e s e r dann le benswichtige
selbst nicht ange s ch lo ss e n zu
V on dieser A b h ä n g i g k e i t kann m an sich dur ch einen M e h r f a c h - (oder mehrere
Ueni gf a ch -)
Um sc ha l te r
lösen. A b b . 9 zeigt, wie man damit entweder die
u rs pr ün g li ch en Si gnale des CPU-Bo a rd s oder die s t e u er b ar en Signale dieser
S ch al tu ng an die en ts p re ch en d en Stellen des C PU - Bo a r d s führt, u n d damit das
Gerät entweder wie b i s l an g ohne E C B -E i ng an gs k ar te oder mit ders e lb en und
allen ihren M e h r l e i s t u n g e n laufen lassen kann.
Um den Um fa ng der ( zu s ätzlich zu denen des S ystembus)
an die E ingangskarte
gefü hrten Lei tu ng en etw a s zu reduzieren,
bietet es sich an, IC7, 74LS30 auf
der Eing an g sk ar te nicht zu bestücken und di e se s IC im C om pu t er an geeigneter
Stelle hucke pa c k mit den Pins 7 und 14 auf ein anderes Dil l4 IC zu löten und
die internen F re i g a b e s i g n a l e fest do rthin zu v er legen
(Pins 1-6,
11-12).
Dann braucht nur noch das Signal
INTERN von Pin8 des 74LS30 an die
E in ga ngskarte (CN2, Pin25c) geführt zu werden.
U en n die z u s ä t z li ch en F ea tures der E i ng an gs k ar te voll genutzt w e r d e n sollen,
können alle b e n ö t i g t e n Signale (SYSRES*
AIS*
A14' A15'
E D , 3 OUTECH«)
über freie V e r d r a h t u n g an unbelegte Pins von CN2 gelötet w e r de n. Im Layout
sind nur die Sinale INTCPU*
INTEXP* 1NTECB* und INTERN über CN2 geführt.
Dadurch k önnen alle V er b i n d u n g e n mit dem C om puter (nicht nur der Systembus)
über CN2 laufen.
U er diese V a r i a n t e des ECB- Bu s bauen möcht e, kann bei m i r für 10 DM (incl.
Rückporto) eine geätzte aber ungeboh rt e Karte im E u r o p a fo rm at
bekommen.
Sollte
irgend je m an d die Karte am K omtek
1 b e tr ei b en w o l le n, kann ich
e ntsprechende I n fo r ma ti on e n zur V e r f ü g u n g stellen,
die eine N u t z u n g auch
dort er möglichen. Der A n s c h l u ß an den T R S 80 ist nicht ohne S o n d e r m a ßn ah me n
möglich, weil die
internen Datentreiber
1 M 2- B et ri eb ver hi nd e rn .
Ein Hardw ar e- Pa tc h , der dage ge n hilft, ist in <8> be schrieben. Eine H e r l e i t u n g der
Signale 10RQ* M E R Q * RD* und U R* aus den da ra us gewon ne n en S ig n al en IN* OUT*
M UR * und MR D* des T R S 80 S ystembus mit Gat te r n erzeugt Signale mit nicht
ganz rich ti g em T i m in g, die eventuell S c hw i e r i g k e i t e n b er eiten könn en; hier
ist das A b g r e i f e n der original en S ig na le eine bessere Lösung.
Aufbau
und Anschiie^en
der
Karte
Entgegen der ü bl i c h e n Te chnik, solche K arten d o p p e l s e i t i g geätzt zu e n t ­
werfen, wurd e hier ein ei nseitiges Layo ut mit einer un v e r s c h ä m t e n Menge
Drahtb rü ck e n bevorz ug t, wa s das D ur ch k o n t a k t i e r e n an I C - S o ck e l- Pi ns v e r m e i ­
det. Damit w i r d be im A uf ba u aber viel
Fummelei und be im Te s t e n viel Arger
erspart.
Der Stecker CN1
(VG64, a,c, Stifte, gewink el t) w i r d auf den E C B - B u s g e ­
steckt. Für den A n s c h l u ß an den S y s t e m b u s w u r d e n 2 V a r i a n t e n vo rgesehen.
Durch Einbau einer V G 6 4 a,c-6uchs en 1e i st e
bei CN2 von der Lö ts ei t e ( A bb .8)
m u ß durch einen en t sp r e c h e n d e n Draht ve rh a u z um Gegens tü ck für den 50poligen
P Ia ti ne n r a n d s t e c k e r des CP U -B oa rd s die A n o r d n u n g der Signale u ms o rt ie rt w e r ­
den. Uer a l l e r di n gs ein ästheti s ch es 50 p o l i g e s Flachkabel bevorz ug t , kann
CN2 unbestückt lassen und stattdessen in die nicht a n g e s c h l os se n en Lötaugen
von CN3 von der L öt s e i t e einen ge ei g ne te n 50po l ig en Stecker einl ö te n. Dann
w i r d aber der z um U m s o rt ie r en der Sig na le nötige Dra ht ve r ha u nur auf die
Karte zwischen CN2 u nd CN3 verlagert.
A ußer den reinen B u s - Si gn a le n des C o mp ut e rs m ü s s e n bei Bedarf auch noch die
aktiven S t e ue r si gn al e der Eingangskarte an den Computer zu r üc k g e f ü h r t werden
und die im Co m pu te r
abzugr ei f en de n F e ig a b e s i g n a l e an die E in ga n g s k a r t e g e ­
führt werden. Daf ür sind am obe ren P l a t i n e n r a n d ent sp re c he nd e L ö t pu nk t e vor-
"handen.
Die w i c h t i g e r e n Signale si nd aber auch an Lötpu nk t e von CN2 g e ­
führt, w o m it dann alle Signale Ober CN2 (und bei
entsprechender Querver­
d ra h t u n g auch CN3) mit d em Computer v e r b u n d e n w er de n können. Dafü r re ic ht
dann aber der 5 0p ol ig e P Ia t i n e n r a n d s t e c k e r des C PU -B o a r d s m it s ei ne n 3 f r e i ­
en Pins nicht m e h r
aus. Da m u B dann noch eine zu sä tzliche f l i e g e n d e S t e c k ­
v e r b i n d u n g he rh al t en , die diese zu s ä t z l i c h e n Signale übergibt.
Stick Iist*
Seckerbetegiiagen
041 (ECS-Bts)
Reihe a NR. Reihe c
6ND
BUSAK«
A»
Al3
RFSHi
IORQi
II
II
II
II
- I W 12
11
HU
11
AM
11
II
32
31
30
»
28
27
2i
25
24
23
22
21
20
1?
18
17
li
15
II 14
♦12V 13
II 12
BUSRQ« 11
Wiiti
11
Ai
*
AS
8
A4
7
A2
i
D4
5
D3
4
Di
3
05
2
♦SV
1
END
RESET*
HEROi
CLOCK
AIS
A12
11
HALT»
RDi
11
URi
INT«
Mil
11
AID
All
IE0
11
Dl
11
A14
1EI
II
A7
A8
Al
A3
AO
D2
D7
DO
♦SV
042 (»ca Srsteabu)
Reihe a Nr. Reihe c
END
BUSAK«
CLOCK
HER0>
10R0«
Hl*
HALT«
nc
nc
Mil«
All
A10
Al 3
A12
nc
nc
nc
nc
A7
A5
,A3
Al
BUSRQ«
nc
nc
D5
Di
D3
D4
nc
nc
(♦»/)
32
31
30
2»
28
27
2i
25
24
23
22
21
20
1?
18
17
li
15
14
13
12
11
10
?
e
7
i
5
4
3
2
1
lCs:
4 I 74LS245
I x 74LS174
1 x 74LS13J
I I 74LSI25
1 x 74LS8i
1 x 74LS32
1 I 74LS30
1 I 74LS11
1 x 74LS08
1 x 74LSOO
GND
RESET«
nc
RFSH«
RD<
URi
nc
INTERN
INTEXPi
1NTECB*
A8
A14
<5> 280 DMA - Schnell, aber kompl iz ie r t / Rolf Keller / c't 12/85, 7 6 -7 9
<4> H a r d w a r e- Um sc h al tu ng für den B e t r i e b von CP /M bei den Computern TRS 80,
GENIE 1 und II u n d Komtek
1 / H. B e r nh ar dt / Info des GENIE/TRS 80-User-Club
Bremerhaven, H a r dw ar e -S on de r he ft 11/85, 1-5
<7> GENIE I und II: Voll d e c o di er te r Sondei— ROMj RAM
im Bereich 3900H bis
3BFFFH / H. B ernhardt / Info d es G E N 1 E / T R S 80-Usei— Cl ub Bremerhaven 11/8 5 .....?
<8> Interrupt Yo u r 80 - With ou t a h ar dw a re mod, your 80 is iranune to rude in­
terruptions / Dougl as C. Fisher / 80 m i cr o, J a n u ar y 1983, 258-264
<9> CP/M Ha rdware für T R S - 8 0 , G E N IE 1 u nd II und Komtek
c.Ueberschaar, Info des T R S 80/GENIE-Usei— C l ub s Br e merhaven
1 / H. Bernhardt,
<10> 256K- ( 1M-) RAM für 280-S ys te m e / H. Be rnhardt / Info des Club 80 ,Nr.l4,
4 ■
Widerstände:
2 x 10k
M
AIS
nc
nc
nc
nc
Ai
A4
A2
AO
nc
UAITi
nc
DO
D7
02
01
1NTCPU«
nc
(♦W)
Sonstiges:
1 x W M »,c Stift*
gewinnet
I x V6i4 i,c Buchsen
gerade
1 x Leiterplatt*
jede Hinge Draht
•ill Btduld
MHIN
y0HTEC
11 diese Pins sind im Tii 1 nicht
belegt oder fibreo Signale, die
hier nicht benutzt «erden
12 die Lage «on -12V «ird nicht
einheitlich gehandiibt, diese
Spannung kann aoeh Minders
liegen (auf bei jeder gekauften
Karte geprift «erden)
ffSrtt
tHkrte
3—t Surer
Litl
DO
Lite r at ur
n
13
P4
<1> V e r b i n d e n d - Der E C B - Bu s / Jo hannes A s s e n b a u m / c't 12/85, 40-61
>
<1 LS
4) -17t
I) «
(
m.
<2> ZBO CTC - Eins a tz u nd P r o g r a m m i e r u n g / Rolf Keller / c't 4/85, 92-94
C PU -
So a rb eiten DMA-Con
riKTtps
E 5 £ f * - -----1
<3> In t e r r u p t - P r i o r i t y - E n c o d e r und V e k t o r g e n e r a t o r für 1M2 mit dem 280 CTC
H. Be rnhardt / Info des G E N1 E/ TR S 80- U s e r - C l u b Br emerhaven 12/85, 1Q-11
<4> Di rekter S p e i c h e r z u g r i f f ; Schneller als die
tr o ller-ICs / Rolf Keller / c't 8/85, 80- 83
UR
ouftF*-
n S T «—
l)
l/Ltot
S te u e r u n g de»
TOT*c*
Databu-ffers,
von A l 5 so wie A14 UND A I S ,
P ortdecodieru ng,
U h is cha lt en
der
pr og r am m ie rb a re s I n v e r t i e r e n
Interrupts
M
taim
4) Dr ah tb r ü c k e n p l a n , die Drahtbr üc ke n
Bautei le zu legen
si nd vor der B e s t ü c k u n g aller anderen
J
3) La y ou t der E i n g an gs ka r te
CNI
A
.
RÄ — St
u
Ü3.' J L
m Rm-
M
■ .«!»
±
Die.
1
i_
ß A H
13-
(C M )
C
• » <••
•
O
interne
, Fhcij»V*-Sl'tjnalc
5
US
S
t_
2_
<(
■ff
\4i
C M-StiU
HEFT
ECB-Bus
iNfexp
iu r ftj
Tun Pu
81
C CM /STA MS
Februar
1933
82
DofßJTÄfiÜ
2) P u - H e r u n g des ECB-Bus
ES
5) Be s tü ck u n g s p l a n , J1
ist nur dann zu legen, w en n
im GE NIE ein s t ä rk e re s
Ne tzteil e i n ge b au t wu r d e , das den E C B - B us m it v e r s o r g e n soll
ftOM-i
E U , P'*>« 9,*e
*-»
RÖni tu, n»t 41,41
ROM
—
ZU, Ti*t (,?
R o m
41
4* - >
ROM«
WM3«
ROM»
P « » 2<J*1
->
r ö m
84
----*■k»nii
pfitiji
*• — -+• P o w
y.
MO' f
T'
.—
T M Li II
des H u c k e p a c k
74 L S 3 2 auf
222 , 74LS1M, Pits 9,10
1
+f K
?<», i<r-t< t f,\ i o
6) B e s c h a l t u n g
R QM s
MH2*
‘
""jb
E43-
—» R0M37
■ &
—
m s 32
t---s,
fLO tlV
lfttiOoitt,ni 10,ti
W S , ie) ffi2K< e «
ED/3
___
9.0Hi>
tlff, 10011 P'mt L°, H
*
dem CPU-Board
z u m A u s b l e n d e n der
MH'«
* 11,12
210, 3001, Pias 20,21
211, 3002, Pits 20,21
R0H3'«
212, 3003, Pits 20,21
RtH4'*
213, 2714, Pit 20
diese Signale sind an die m s
der Fassung gtbogetea Pins zu
MH2'»
■ 4,7
R1S, Seite zu PU 2 4 «oo 213 (RDM)
8) V e r b i n d e n von B US AK * mi t C C D B S / S T A D B S « und DODBS/A DD B S*
mLlil"HiA.ckei>*ck~ M
iütexr
IC5
- C M ) , Pi»
, Pi k Z,*,*0/ 13
( IAir^
West.
-*
\IVS ( M U
4*9) t
A rt
\C, IS C w U <31), Pi* 43
I S I K - BanketA4S
sysies ■
IS i K - &**!*e r CS>**es)
RBSET ■
9) Unsch a lt en zw is c h e n
der Eingin gk a rt e
7) V e r b i n d e n
Eingangskarte
des
EC8~Bus
m it
de m
Systembus
d es
Computers
üb er
die
o r i g i n a l e n 6 E N I E “Si gn al e n
und steuerbaren Signalen
__
S
Her
hat
hat
ein
^
schreiben» <»»s
kann e'neS
U » 9 e keh
Proqr» »» ‘°*'r IU » • ' • • » * ! « «
» BS,C' inS
deutsche
*
-ra * t o
,n . , . r h k e i t , u
^
m
t » u<
yönnen.
ka b e\n
____
Bör se
ist,
in d«>r L » 9 e auch
, uB
dl«*
sei n
h -0 eich«rb *r e i 0 1
ich *»lb,,r
110 *
B
bö r se
ö r s e
gebe
veT
da
Z u
diese
*«*
‘ r k au-f e n :
_______ _ _ _ _
Maus»
und
TRS
80
hl.
. -------
1 O O
Im
Zuge
der Mode r n i s i e r u n g meines Geräteparks habe ich mir
vor
Kurzem
einen IBM-kompatiblen Portable (Toshiba
T2100)
zugelegt
(keine
Angst,
ich b l e i b e w e i t e r h i n voll auf T a n d y e i n g e s t e l l t ) .
Leider
arbeitet
die Atari-Maus,
die ich mi r vor
einiger
Zeit
zugelegt habe,
nicht mit dem Toshiba zusammen.
Aus diesem Grund
h a b e i c h -folgende z w e i P r o b l e m e z u lösen:
1. I c h
benötige
e i n e R S 2 3 2 — M a u s -für d e n P C .
2. M e i n e B e s s e r e H ä l f t e ,
zugleich Finanzminister im Hause
Ober­
mann,
bewilligt
d i e n ö t i g e n M i t t e l -für e i n e s o l c h e s G r a u t i e r
nur, wenn ich zuvor die Ata r i —Maus verkaufe!
Gratl*
a tl*
Sowohl
d i e M a u s a l s a u c h d a s M o d e l 1 O O s i n d 1 0 0 7.'ig i n
Ordnung
und
i c h g e b e e i n e Ü b e r n a h m e g a r a n t i e v on 14 T a g e n .
Wer sich
für
eines oder beide Geräte interessiert,
kann mich entweder anrufen
(ab
Mitte
April
b i s E n d e Juni nur
an
Wochenenden)
oder
mir
schreiben.
Hartmut
85
Obermann
e ii'etn
U >ero
sie ,u,
.
n 0 <*.
eV
-
«° :r>
W
— ,
SOT-
/
C,
roe1'nleS
Aus
diesem
G r u n d e mu ß (will) ich mich von de r im
letzten
Info
beschriebenen
Maus
incl.
Inter-face
trennen.
Die
Schaltung
funktioniert
n a t ü r l i c h n i c h t n u r a m 4p,
sondern auch mit
allen
anderen
TRS
80— und Video Genie—Geräten.
Wer
also
mal
seine
Grafikprogramme mit Maus fahren, oder auch nur
mit einem solchen
P e r i p h e r i e g e r ä t e x p e r i m e n t i e r e n will, s o l l t e sic h bei mir melden.
Meine
P r e i s v o r s t e l 1u n g
l i e g t s o bei ca.
60 bis 70 Märkern
für
Ma u s incl. Interface, V e r p a c k u n g und Porto.
E b e n f a l l s i m l e t z t e n I n f o e r w ä h n t e ich,
daß ich vor einiger Zeit
ein Model lOO von T a n d y e r s t a n d e n habe.
Da ich für diesen Compu­
ter ,
jetzt,
nachdem ich den portablen PC habe, keine Verwendung
mehr sehe,
m ö c h t e ich a u c h d i e s e s Gerät v e r ä u ß e r n . D a s Model 100
hat 24k RAM- und 32k ROM-Speicher, eingebaute Pro g r a m m e für TextVerarbeitung,
Adressen— und Terminverwaltung sowie Kommunikation
über die e i n g e b a u t e RS 232-Schnittstelle. Natürlich ist auch eine
Kassetten— sowie eine Druckerschnittstel1e vorhanden. Das lOO'ter
wird
komplett mit 4 Akkus sowie einem englischen und einem deut­
sc h e n H a n d b u c h g e l i e f e r t . M e i n e P r e i s v o r s t e l 1u n g für d i e s e s w i r k ­
l i c h s e h r s c h ö n e G e r ä t l i e g t bei ca. 4 5 0 , —
D M (ev. 5 0 0 , —
DM mit
K a s s e t t e n r e c o r d e r ).
är“
;,
z uu ssaa mm wm e n :,
m
V
s ' 8,!i U
4‘
*
5 3
i,»»"4
“
e r " * 0
*5.i
awl*"’ I
r-r:‘
‘
°
t)M
£ 2 , U B *
„
n
40 T r ,
°”
ss/
. 0 »
„ i W
•
1
8<"
"
s " ‘*
« X “ ?” A
« t s0 »s
Bas Pirst BOO» l aster
andt eries
HEFT
Basi'
f eSt; 80! 2 0 .DM
fc o w p l e t x
-rl'58 ,
Tr,-truroen t s ■
- TeX3
_ -rwn* Mod
«
Klaus Hermann,
»rcl
•
» a « ® * * 7^
Februar
1938
86
87
R SE
~~
Bö* s e
—
B ö rse
Betr.
Computer
für DDR
Ich habe
kostenlos
folgende Gerate abzuqcben :
Sharp PC 1211
-
versch
- J u n i.o rLiteratur.
-Computer
in
»it Drucker
der
und Kassettenspeicher,
Sasisausführung
S o llte dafür Bedarf bestehen,
so bin
mit
Betriebsanleitung
Net*teil und Handbücher ,
ich gerne bereit
die Geräte de» Club zur
weiteren Verwendung zuzusenden.
und
Z80 Hochintegrations CPUs in CMOS
nutzen bestehende Entwicklungs­
system e und Software
C
Unter den B ezeichnungen TM P Z84C 011/013/015 bietet
T O S H IB A Hochintegrationsprodukte mit Z80-Kern an. Die
Produkte sind in 4 und 6 MHz-Version lieferbar und v o n —4 0 °C
bis + 8 5 ° C spezifiziert. TM PZ84C011/015 haben ein 100-Pin
Flat-Pack-G ehäuse, w ährend TM P Z84C 013 im 84-Pin PLCC
gefertigt wird. G em einsam ist allen 3 Produkten neben der CPU
ein O n-C hip-C lock G enerator und Controller.
TM PZ84C011 ist durch Ausstattung mit 5 Ports für l/O-intensive
A ufgaben ausgelegt, w ährend T M P Z84C 013/014 mit 4 bzw. 2
USART-Kanälen für kom m unikationsintensive Applikationen
entwickelt wurden. Beide Produkte verfügen über einen inte­
grierten W atch Dog Timer, T M P Z84C 015 d arüber hinaus über 2
Tim er/Counter.
Bei der Entwicklung der Produkte w urde besonders Wert dar­
auf gelegt, daß vorhandene Entwicklungssystem e für die Em u­
lation verw endet w erden können.
Für den A nw ender bedeutet dies, daß der Einsatz dieser Pro­
dukte ohne größere Investitionen in H ard- und Software erfol­
gen kann.
Das wöre alles -für heute.
Mit freundlichen Grüßen,
txh*Ut:l~ick
Mit ihrem sicheren Gespür für Produkte, die der Markt in großen
Stückzahlen braucht, haben die Japaner unseren bewährten Z80 um
mehrere integrierte Zusatzfunktionen erweitert. Gedacht sind
die neuen Schaltkreise für Controller-Anwendungen, bei denen
der Mikroprozessor für fest vorgegebene Steuerungaufgaben mit
Programmen aus dem ROM betrieben wird. Automaten,
Hausgeräte
und Verpackungsmaschinen sind Beispiele für den ControllerEinsatz.
Werden größere Stückzahlen gefertigt, muß der Her­
steller mit dem Pfennig rechnen. Sockel,
Lötverbindungen und
der Platz auf der Leiterplatte kosten Geld. Je mehr mechanische
Verbindungen eine elektronische Schaltung hat, desto größer ist
ihre Fehleranfälligkeit und um so schwieriger ist das Testen.
/
J> e * ttlL u (+ T o rtv )
Ks^~
( his «*/'
wtUzf&J
Achtung ! !*
An
a l l e
/
C 1u b n i t g l i
Nürnberg besuchen,
und
e t e r
, die
am
23.
April
den
Flohmarkt
in
ich habe einer» Tisch reservieren l a s s e n
wenn Jemani von euch elr. Gerat 2u ver aujber n h a t , k a n n
m it b r i n g e r .
Ich habe außerdem ein Strirtgy-Floppy zu verkau-fen mit 1/0
Program und vielen K a s s e t t e n . Preis Verband 1ungssache.
es
Eckehard
Unverständlich ist, daß Zilog die Entwicklung hochintegrier­
ter Contoller-CPU’s nicht schon längst betrieben hat.
Andere
Halbleiterhersteller,
wie z.B.
Intel mit seiner 8051-Serie,
haben einen großen Marktanteil erobert,
ohne daß Zilog die
Chance mit seinem weltweit eingeführten Z80-uP und den dafür
vorhandenen Entwicklungssystemen genutzt hätte.
Der für ein­
fachere Anwendungen vorgesehene Z8 ist nie so recht zum Zug
gekommen und stand im Schatten seines erfolgreichen älteren
Bruders. Nachdem der Z80 immer noch der in der größten Stück­
zahl verkaufte Mikroprozessor ist,
kann man erwarten,
daß
Toshiba mit seinen hochintegrierten Schaltkreisen am Markt
offene Türen einläuft. Hätte man diese Produkte schon vor drei
oder vier Jahren (von Zilog) bekommen können, wäre heute wahr­
scheinlich der Z80 mit seinen Abkömmlingen der Industrie­
standard auch bei den Low Cost Controllern.
Kuhn
Heinrich Betz
< > >
•
Testbericht
Dru cke r
PEACOCK
D
10 18
(B a u g l e l c h
mit
Panasonic
KX
1083)
N a d
e
l d r u c k e r
Kopf Lebensdauer : 100 Hillion Zeichen bei Entwurfs-Qualität
Farbband : Kassette mit nahtlosem Farbband
Ende des vergangenen Jahres habe Ich mich entschlossen meinen
Drucker gegen ein besseres Exemplar einzutauschen.
alten
Bei der Firma Computer-Service (W .Grundmann) konnte ich meinen alten
Nadeldrucker ln Zahlung geben und erstand ein Vorführmodell der Firma
PEACOCK, den D 1018, der bauglelch mit dem Panasonic KX 1083 Ist. Mit
diesem Gerät bin ich sehr zufrieden und die Testergebnisse der Zeit­
schrift "Warentest von Januar 1988" gaben dem Drucker die Note "GUT".
Schwierigkeiten gab es zuerst mit den Farbandkassetten, aber mittler­
weile habe
Ich ohne Schwierigkeiten vom Händler genügend Ersatz
bekommen.
Wie geagt das war ein kurzer Steckbrief der technischen Daten.
Obrlngs lassen sich die einzelnen Schriftarten per Tastendruck von
vorne bequem einstellen, ebenso die Länge des Blattformates.
Für meine Wordstar-Version habe ich mir eine eigene Druckeranpassung
gemacht und so verfüge ich über zusätzlich weitere Schriftarten.
Hier eine kurze Obersicht der Druckarten per Softwareansteuerung :
P E A C O C K —D r u c k e r a n p a s s uxna
Technische Daten des Nadeldruckers mit 9 Nadeln : (Epson kompatiball
Zeichenarten :
Entwurf,
Pica-Schönschrift, komprimierte Schrift,
Elite Schönschrift, Proportional-Schönschrift.
Zeichensatz
96 ASCII-Zeichen, 96 ASCII-Kursivzeichen, 32
Internationale Zeichen, 64 Block-Grafik-Zeichen,
132 IBM-PC-Sonderzeichen.
:
Worte und Leerzeichen unterstreichen
Schmalschrift
Kursiv
Riesenbreitschrift
fuer diverse Funktionen:
Epson-Fettdruck
Epson-Doppeldruck
Epson-Elite; Epson-Pica-Schrift
Proportionalschrift fuers Auge
Punktmatrix : Punktdurchmesser 3/254 Zoll (0.3 mm)
Größe der Zeichen : Standardzeichen : 0.078(B)*0.095(H)Zoll
Hoch-/tlefgestellte Zeichen :
0.078(B)*0.053(H)Zoll
Anzahl der Zeichen pro Zeile :
Pica (Entwurf, Schönschrift) 80 Zeichen/Zeile (10 Zeichen/Zoll
Ellte(Entwurf, Schönschrift) 96 Zeichen/Zeile (12 Zeichen/Zoll
Komprimiert
137 Zeichen/Zelle (17 Zeichen/Zoll
Pica gedehnt
40 Zeichen/Zeile ( 5 Zeichen/Zoll
Elite gedehnt
48 Zeichen/Zelle ( 6 Zeichen/Zoll
Kompimiert und gedehnt
68 Zeichen/Zeile (8.5Zeichen/Zoll
Druckgeschwindigkeit :
Entwurf Pica
180 Zeichen/s
Entwurf Elite 180 Zeichen/s
Schönschrift
33 Zeichen/s
Druckrichtung : Ausdruck von Text : bidirektional
Bitmuster : eine Richtung (links ==>rechts)
Zeit für einen Zeilenvorschub : ca 100 ms
89
Papierzufuhr : Traktorantrieb für Endlospapier
Friktionsantrieb für Enzelblattpapler
schmale Breitschrift
kursiv Breitschrift
fette Breitschrift
kursiv schmale Breitschrift
Das war es wieder einmal in Kürze.
Für interessierte,
kostet im Handes Zwischen 948,- und 1100,- DH.
Harald
der
Drucker
Hand
Reingefallen mit Rheintec
L i e b e Cl ubfreunde.
s i c h c r s e i t auc h I hr h i e r und d o r t d a r a u f a n g e w i e s e n , e i n ma l Z ub e hö r bei ei nem
Här i dl or z u k a u f e n . Si. A a r d i e s he i mi r a uc h im l e t z t e n Ja hr , a l s i ch nach e i n e r
S p e i c h e r e r w e i t e r u n g f ür me i n e n R e c h n e r ( P l . A \ T R 0 \ X T 20 d i e s ma l ; mei n GENI E
steht
im s e l b e n Zi mme r )
suchte
und mi ch an e i n e
D ü s s e l d o r f e r Fi r ma
v e r t r a u e n s v o l l g e w e n d e t h a b e . Im E r g e b n i s i s t j e t z t me i n A r g e r groß, wei i ni c ht s
k l a p p t e und di e Fi r ma am Sc hl uß s i c h u n f ä h i g z e i g t e , w i r k l i c h zu h e l f e n und
u n v e r s c h ä m t e r Wei se a uc h d i e d e f e k t e n K a r t e n ni c ht z u r ü c k ne hmen wo l l t e .
I c h muß f ü r mi ch f e s t s t e l l c n . d:iß i ch be i d i e s e r Fi r ma n i c h t me hr k a u f e n wer de.
P a u l-J ü rg e n Schm ilz
7. .März 1988
HEFT
23
Februar
1988
90
Echte Programmierer neiden PASCAL
(Aus DATAMQN 7/83, uebersetzt von Bernd Leeds)
Vor langer Zeit, in der goldenen Aera der Computer, war es noch ein­
fach, die Maenner von den Memmen zu trennen (mitunter auch "Echte
Maenner" und “Muesli-Fresser■ genannt). Echte Haenner programmierten
Computer und Huesli-Fresser Hessen es bleiben. Ein echter Computerprograamierer sagte Dinge nie "DO 10 1*1,10“ oder “ABF1D“, und der
Rest der Welt quengelte “Computer sind mir zu kompliziert* oder “Ich
kann 2 u Computern keine gefuehlsmaessige Bindung aufbauen - sie sind zu
unpersoenlich“. Dabei zeigt schon Remy Eyssen’s Buch "Echte Maenner
moegen kein Müesli“ (Heyne TB 6290), dass Echte Maenner zu nichts und
niemanden eine gefuehlsmassige Bindung' aufbauen, und dass sie auch
keine Angst haben, unpersoenlich zu sein.
Aber die Zeiten aendern sich. Heute stehen wir einer Welt gegenueber,
in der kleine alte Damen vol1computerisierte Hikrowel1enherde kaufen
koennen, in der 12 Jahre alte Dreikaesehochs gestandene Haenner bei
ASTRDIDS und PACHAN sattmachen, und in der jeder seinen eigenen
Homecomputer kaufen und sogar verstehen kann. Der Echte Programmierer
ist gefaehrdet, von Studenten mit einem igITT 2020 (deutsche Version
des ABFALL-II, Anm. d. Uebers.) im Gepaeck ersetzt zu werden!
Es gibt allerdings einige Unterschiede zwischen dem typischen,
PAC MAN-spi elenden Gymnasiasten und einem Echten Programm!erer. Die
Kenntnis dieser Unterschiede wird den Heranwachsenden ein Ziel geben
nach dem sie streben koennen - ein Vorbild, eine Vaterfigur. Ausserdem
schuetzt sie die Echten Programmierer vor Arbeitslosigkeit.
Der einfachste Weg, um einen Echten Programmierer zu erkennen, fuehrt
ueber die von ihm benutzte‘Programmiersprache. Echte Programmierer
benutzen FORTRAN. Muesli-Fresser benutzen PASCAL. Niklaus Wirth, der
Schoepfer von PASCAL wurde einmal gefragt, wie man seinen Namen aus­
spreche. “You can either call me by name, pronouncing it ’Veert' or
call me by value, wor t h “, antwortete er. Diese Bemerkung zeigt
sofort, dass Wirth ein Muesli-Fresser ist. Der einzige ParameterUebergabe-Mechanismus, den Echte Programmierer akzeptieren, ist callby-value-return (cal1-by-result, Anm. de. Uebers.), wie er in den
IBM/370 FORTRAN-G- und -H-Compilern implementiert ist. Echte
Programmierer brauchen schliesslich keine abstrakten Konzepte, um
ihre Arbeit zu erledigen; sie sind vollkommen gluecklich mit einem
Lochkarten-Stanzer, einem FORTRAN-IV-Compi1er und einem Bier. Echte
Programmierer erledigen Listenverarbeitung, Zeichenketten-Hanipulation, Graphikdarstellungen (wenn ueberhaupt) und kuenstliche
Intelligenz in FORTRAN. Was sie mit FORTRAN nicht machen koennen,
machen sie in Assembler, was sie in Assembler nicht machen koennen,
lassen sie veraechtlich liegen.
Akademische Computerspezialisten sind in den letzten Jahren aufs
Abstellgleis der Strukturierten Programmierung geraten. Sie be­
haupten, dass Programme verstaendlicher werden, wenn bestimmte
Sprachkonstrukte und Programmiertechniken benutzt werden. Sie koennen
sich natuerlich nicht einigen, welche Konstrukte am besten geeignet
sind, und die Beispiele, an denen sie ihren speziellen Standpunkt
aufzeigen wollen, passen ausnahmenslos auf eine einzige Seite irgend
eines obskuren Journals.
Als ich aus der Schule kam, dachte ich, ich sei der beste Programm­
ierer der Welt. Ich konnte ein unschlagbares TIC-TAC-TOE-Spiel (Vierin-einer-Reihe, Anm. d. Uebers.) schreiben, beherrschte 5 verschiedene
Programmiersprachen und schrieb fehlerfreie 1000-Zei1en-Programme
Dann kam ich in die Wirklichkeit. Meine erste Aufgabe bestand darin,
ein 200.000-Zeilen-FDRTRAN-Programm zu lesen, zu verstehen und um den
Faktor 2 zu beschleunigen. Jeder Echte Programmierer wird einem ver­
sichern, dass die gesamte strukturierte Programmierung der Welt in
einem solchen Fall nicht hilft - hier braucht man wirklich Talent.
Einige Beobachtungen zum Thema “Echte Programmierer und
Strukturierte Programmierung“:
-
-
Echte Programmierer haben keine Angst vor GOTO's.
Echte Programmierer schreiben 5 Seiten lange DO-Schleifen, ohne
durcheinander zu geraten.
Echte Programmierer lieben das arithmetische IF-Statement (das
mit den 3 Ausgaengen, Anm. d. Uebers.), weil e & den Code int­
eressanter mach{pEchte Programmierer schreiben seibstmodifizierende Programme,
speziell, wenn sie da.it in einer kleinen Schleife 20ns ein­
sparen koennen.
Echte Progra.aierer brauchen keine Kommentare; das Program, ist
schliesslich selbstdokuaentierend.
Da FORTRAN strukturierte IF-, REPEAT UNTIL-oder CASE Anweisungen
nicht kennt, braucht sich der Echte Prograaaierer nicht zu sorgen,
dass er sie nicht benutzt. Ausserdea kann man sie noetigenfal1s ueber
"ASSIGNED GOTO 's" simulieren.
Datenstrukturen sind in letzter Zeit in gewissen Kreisen populaer ge«orden. Wirth, der Muesli-Fresser, verfasste sogar ein ganzes Buch
(Algorithmen und Datenstrukturen’, Teubner 1975), in dea er be­
hauptete, dass aan Programme schreiben koenne, die auf Datenstrukturen
aufbauen, statt es uagekehrt zu machen. Wie jeder Echte Programaierer weiss, gibt es nur eine wirklich nuetzliche Datenstruktur, das
Array. Zeichenketten, Listen, Records und Mengen sind allesamt
Sonderfaelle von Arrays und koennen auch so behandelt werden, ohne
dadurch die Spräche zu verkomplizieren. Das Schlimmste an den ganzen
schoenen Typen ist ausserdem, dass man sie deklarieren muss, waehrend
Echte Prograamier5 prachen, wie man weiss, den Typ anhand des ersten
Buchstabens eines maximal 6 Zeichen langen Bezeichners implizit
festlegt.
Welches Betriebssystem der Echte Programmierer benutzt? CP/M?
Gott bewahre! Das ist doch im Grunde ein Spielzeug-Betriebssystem.
Selbst kleine alte Damen und Hauptschueler koennen CP/M benutzen und
verstehen.
UNIX ist natuerlich schon viel komplizierter - der typische UNIXHacker weiss nie, wie das PRINT-Kommando diese Woche heisst - aber
wenn aan es genau niaat, ist UNIX auch nur ein verherrlichtes
Telespiel. Niemand arbeitet auf UNIX-Systemen an ernstzunehmenden
Dingen - man schickt kleine Witzchen ueber USENET rund ua die Heit,
oder man schreibt ein neues Adventure-Spiel oder Forschungsberichte.
Nein, der Echte Prograamierer benutzt OS/370. Ein guter Programm­
ierer kann die Beschreibung des Fehlers IJK3031 in seinem JCL-Manual
(Job Control Language, Batch-Kommandosprache, Ana. d. Uebers.) finden
und interpretieren. Ein sehr guter Prograaaierer erkennt die Fehler,
ohne in sein Manual zu sehen. Ein wahrhaft ausserordentlicher Pro­
graaaierer kann Fehler in einea 6 -Megabyte-Hexduap finden, ohne
hierfuer einen Taschenrechner zu benutzen.
OS/370 ist ein wirklich beaerkenswertes Betriebssystea. Mit einem
einzigen falsch plazierten Leerzeichen kann aan die gesaate Arbeit
mehrer Tage zerstoeren, was die Wachsaakeit ia Prograaaiertea. ungeaein foerdert. Der beste Weg zum System ist der Kartenstanzer.
Zwar behaupten einige Leute, es gaebe ein Tiaesharing-Systeo unter
OS/370, aber nach sorgfaeltigen Nachforschungen bin ich zu de» Schluss
gekommen, dass sie sich irren.
Welche Werkzeuge ein Echter Programmierer benutzt? Nun, theoretisch
koennte er seine Programme ueber die Maschinenkonsole eingeben und
1aufen1assen. In den fuehen Tagen der Cofliputerei, als Computer noch
Maschinenkonsolen hatten, wurde dies auch gelegentlich getan.
Der typische Programmeerer wusste den System-Urlader Bit fuer Bit
auswendig und tastete ihn ein, sobald er von seines Programm zerstoert worden war. Daaals war Speicher auch noch Speicher - der war
nicht einfach leer, wenn der Stro« ausfiel. Hauptspeicher von heute
hingegen vergessen entweder Dinge, die sie behalten sollten, oder
halten Informationen, die schon lange weg sein sollten. Aber zurueck
zu« Thema. Die Legende sagt, dass Seymour Cray, der Erfinder des
Cray-I-Supercomputers und der «eisten anderen Rechner von Control
Data, selbst das erste Betriebssystem fuer die CDC 7600 an der
Maschinenkonsole eingetastet hat, als sie das erste Mal einge­
schaltet wurde. Cray ist seibstverstaendlich ein Echter Programmierer.
Einer der Echten Programmierer, die ich am meisten bewundere,
arbeitete als Sytem-Programmierer fuer Texas Instruments. Eines Tages
erhielt er ein Ferngespraech von einem Benutzer, dessen System mitten
in einer wichtigen Arbeit abgestuertzt war. Der Typ reparierte dann
den Schaden ueber's Telefon. Er brachte den Benutzer dazu, SystemTabellen in Hexadezimal zu reparieren und Registerinhalte uebers
Telefon durchzugeben. Die Moral von der Geschichte: obwohl ein
Echter Programmierer normalerweise Kartenlocher und Schnei 1drucker
benutzt, kommt er im Notfall auch mit Maschinenkonsole und Telefon
aus.
In einigen Firmen besteht die Programmeingabe allerdings nicht nur
aus 10 schlangestehenden Ingenieuren, die auf einem 029-Locher
warten. In meiner Firma z.B. steht kein einziger Kartenstanzer. Der
Echte Programmierer muss in diesem Falle seine Arbeit mit einem Text
Editor erledigen. Auf den meisten Rechnern stehen verschiedene
Editoren zur Verfuegung, und der Echte Programmierer muss aufpassen,
dass er einen erwischt, der seinen persoenlichen Stil wiedergibt.
Viele Leute glauben, dass die besten Editoren der Welt am Xerox Pablo
Alto Research Center geschrieben wurden und auf Alto- oder DoradoComputern laufen. Ungluecklicherweise wuerde jedoch kein Echter Pro­
grammierer einen Computer mit einem Betriebssystem benutzen, das
SmallTalk heisst, und sicherlich auch nicht ueber eine Maus mit einem
Rechner kommunizieren.
Einige Konzepte der Xerox-Editoren sind mittlerweile in Editoren
eingeflossen, die unter sinnvoller benannten Betriebssystemen
arbeiten, so wie EMACS oder VI. Das Problem mit diesen Editoren ist,
dass Echte Programmierer das Konzept des "Du kriegst, was Du siehst”
fuer schlecht halten. Der Echte Programmierer will einen "Du hast es
so gewollt, da hast Du ’s"-Editor, einen der kompliziert ist,
skeptisch, leistungsfaehig, gnadenlos und gefaehrlich. TECO, um genau
zu sein.
So wurde beobachtet, dass TECO-Kommandofolgen dem Leitungsrauschen
aehnlicher sind als lesbarer Text. Eins der unterhaltsameren Spiele,
die mit TECO moeglich sind, besteht darin, den eigenen Namen als
Kommando einzugeben und zu raten, was dann passiert. So ungefaehr
jeder moegliche Tippfehler kann dank TECO das gerade editierte Pro­
gramm zerstoeren, oder schlimmer noch, kann kleine mysterioese Fehler
in einstmals funktionierende Unterprogramme einbringen.
Aus diesem Grunde editieren Echte Programmierer nur sehr widerwillig
Programme, die schon fast laufen. Sie finden es viel einfacher, den
binaeren Objektcode direkt zu aendern, fuer gewoehnlich mit einem
wundervollen Programm, das SUPERZAP heisst tauf Nicht-IBM-ftechnern
entsprechend anders). Dies funktioniert so gut, dass viele laufende
Programme auf IBM-Systemen keine Aehniichkeit mit den urspruenglichen
FORTRAN-Quellprogrammen haben. In einigen Fallen ist nicht einmal
mehr das urspruengliche Quellprogramm vorhanden. Wenn dann der Zeit­
punkt gekommen ist, so ein Programm zu aendern, wuerde kein Manager
auch nur daran denken, einem geringeren als eine« Echten Programm­
ierer diese Arbeit zu uebertragen - kein Hueslifressender struktur­
ierter Programmier er wuesste auch nur, wo er mit der Arbeit anfangen
soll. Man nennt das Arbeitssieherungsmassnahme.
Hier eine Liste der wichtigsten Programmierhi1fen, die der Echte
Programmierer nicht benutzt:
-
FORTRAN-Praeprozessoren wie MORTRAN oder RATFOR. Diese Haute
Cuisine der Programmierung eignet sich hervorragend, um Muesli
zu produzieren.
Quellcode-orientierte Debugger. Echte Programmierer lesen Hex­
dumps.
Compiler, die Code fuer Array-Indexpruefungen zur Laufzeit
erzeugen. Sie ersticken jede Kreativitaet, zerstoeren die meisten
der interessantesten Anwendungen der EQUIVALENCE-Vereinbarungen,
und machen Aenderungen des Betriebssystems mit Hilfe negativer
Indizes unmoeglich. Und schlimmer noch, solcher Code ist
ineffizient.
Programm-Pf1ege-Systeme. Ein Echter Programmierer haelt seine
Software als Kartonstapel unter Verschluss, denn dies zeigt, dass
der Besitzer seine wichtigsten Programme nicht unbewacht lassen
kann.
Wo der typische Echte Programmierer arbeitet? Welche Art von Programmen
derart talentierter Individuen wuerdig ist? Nun, man kann sicher sein,
dass man nie einen Echten Programmierer beim Schreiben von Buch­
haltungsprogrammen in COBOL erwischen wird, oder gar beim Sortieren
der Abonnentenadressen des'Spiegel^. Nein, ein Echter Programmierer
braucht Aufgaben von weltbewegender Bedeutung.
Echte Programmierer arbeiten fuer das Los Alamos National Laboratory
und schreiben do/rt Atomkriegs-Simulationen auf Cray-I-Supercomputern,
oder sie arbeiten bei der National Security Agency und entschluesseln
russische Funksprueche. Nur weil tausende Echte Programmierer fuer die
NASA gearbeitet haben, waren 'unsere' Jungs eher auf dem Mond als
die Kosmonauten. Die Computer im Space Shuttle wurden von Echten
Programmierern programmiert, und auch die Betriebssysteme der Cruise
Missiles der Firma BOEING wurden von diesen echten Professionals
entworfen.
Einige der ehrfurchteinfloessendsten Echten Programmierer kennen das
gesamte Betriebssystem der Pioneer- und Voyager-Sonden auswendig.
Mit einer Kombination aus grossen, bodengebundenen FORTRAN-Programmen
und kleinen, von Sonden mitgefuehrten Assemblerprogrammen vollbringen
sie unglaubliche Kunststuecke der Navigation und Improvisation. So
treffen sie nur 10 Kilometer grosse Fenster nahe Saturn nach 6 Jahren
Flug durch den Weltraum, oder reparieren bzw. umgehen defekte
Sensoren, Sender oder Batterien. Angeblich soll es einem Echten Pro­
grammierer sogar gelungen sein, in ein paar Hundert Byte ungenutzten
Speichers innerhalb der Voyager-Sonde ein Mustererkennungsprogramm
zu pressen, das einen neuen Mond des Jupiters suchte, fand und fotograf ierte.
Fuer die Galileo-Sonde ist vorgesehen, dass sie auf ihrem Weg zum
Jupiter entlang einer schwerkraftgelenkten Bahn am Mars vorbeizieht.
Diese Bahn fuehrt in einer Entfernung von BB ♦/- 3 km an der Marsoberflaeche vorbei. Kein Mensch wuerde diese Art von Navigation einem
PASCAL-Programm oder gar -Programmierer anvertrauen.
Viele Echte Programmierer dieser Welt arbeiten fuer die amerikanische
Regierung, meist fuer das Verteidigungsministeriue. So soll es sein.
In letzter Zeit allerdings erscheinen dunkle Wolken am Horizont der
Echten Programmierer. Es scheint, als haetten einige einflussreiche
Muesli-Fresser im Verteidigungsministerium entschieden, dass in Zukunft
alle Verteidigungsprogramme in so einer Art von grösser vereinheitlichter Programmiersprache naciens ADA geschrieben werden muessten.
Lange Zeit schien es, als laege ADA's Bestimmung im Verstoss gegen alle
Regeln der Echten Programmierung. Es ist eine Sprache mit Strukturen,
Datentypen, strenger Typenbindung und Semikoli. Kurz, sie ist wie
geschaffen um die Kreativitaet de typischen Echten Programmierers zu
verkrueppeln.
/
Gl uecklicherweise hat die jetzt vom DoD (Department of Defence).noch
genuegend interessante Eigenschaften, um dem Echten Programmierer eine
Annaeherung zu eraoeglichen: sie ist unglaublich komplex, sie enthaelt
Moegl ichkei ten, um mit dem Betriebssystem heruazumachen und Speicher­
bereiche neu zu verteilen, und Edgar Dijkstra mag sie nicht.
Dijkstra ist wie man wissen sollte, der Autor von "GDTD's considered
harmful", eines Meilenstein der Programmiermethodologie, der von
PASCAL-Prograaaierern und Huesli-Fressern gleichermassen bewundert wird.
- Und ausserdeo, ein zu allem entschlossener Echter Programmierer kann
in jeder Sprache FORTRAN-Programme schreiben -
Der Echte Programmierer ist in der Lage, 30, 40, ja sogar 50 Stunden
in einem Rutsch zu arbeiten, unf das unter hohem 2eitdruck.
Genaugenommen mag er es so am liebsten. Schlechte Antwortzeiten
regen den Echten Programmierer nicht auf - sie geben iha die Chance,
zwischen 2 Kommandos ein bisschen Schlaf zu ergattern. Wenn die
Planung nicht genug Zeitdruck bereithaelt, dann tendiert der Echte
Prograaaierer dazu, seine Arbeit herausfordernder zu machen, indem
er sich die ersten'neun Wochen mit einem kleinen, aber sehr inter­
essanten Teil des Problems befasst, um dann in der letzten Woche
seine Aufgabe in zwei oder drei 50-Stunden-Marathonsitzungen zu
beenden. Dies beeindruckt nicht nur den Manager, sondern schafft
gleichzeitig eine hervorragende Entschuldigung fuer das Fehlen einer
Dokumentation.
Der Anteil der Echten Programmierern im Bereich der Computer-Graphics
ist etwas niedriger als anderswo, was wahrscheinlich daran liegt,
dass noch niemand irgendeinen Nutzen der Computer-Graphics entdeckt
hat. Andererseits werden Computer-6 raphics ueberwiegend in FORTRAN
abgehandelt, daher gibt es einige Leute, die so das Schreiben von
COBOL-Prograamen vermeiden.
I* Allgemeinen spielt der Echte Programmierer wie er arbeitet mit Computern. Er ist staendig darueber erheitert, dass sein Arbeit­
geber ihn tatsaechlich fuer etwas bezahlt, was er nur so zum Spass
sowieso tun wuerde - allerdings achtet er darauf, dieser Meinung
nicht zu laut zu aeussern. Gelegentlich kommt der Echte Programm­
ierer auch aus seinem Buero heraus, um sich ein wenig frische Luft
und/oder zwei Bierchen zu genehmigen.
Und ueberhaupt: kein Echter Programmierer arbeitet von 9 bis 5, ausser
denen von der Nachtschicht. Echte Programmierer tragen keine
Schlipse. Echte Programmierer tragen keine hochhackigen Schuhe.
Echte Programmierer kommen zur Arbeit, wenn andere zum Mittagessen
gehen. Ein Echter Programmierer vergisst vielleicht den Vornamen
seiner Angetrauten, aber niemals den Inhalt der gesamten ASCII—
(oder EBCDIC-) Tabelle. Echte ProQrammierPr koennen nicht kochen. Da
Supermaerkte um 3 Uhr morgens selten geoeffnet sind, muessen sie
sowieso von Kaffee und Keksen leben.
Hier daher einige Hinweise, wie man Echte Programmierer ausserhalb
des Coaputerrauaes erkennt:
-
-
«
Die 2ukunft betrachtend machen sich eine ganze Reihe von Echten
Programmierern Sorgen, dass die juengsts P^ograamierergeneration nicht
mehr mit der gleichen Lebensperspektive aufwaechst wie sie selbst.
Viele der Juengeren haben noch nie eine Computer mit einer Maschinen­
konsole gesehen. Kaum ein Schulafcgaenger kann heute noch hexadezimal
rechnen, ohne einen Taschenrechner zu benutzen. Die Programmierunc
durch symbolische Debugger oder Texteditoren, die Klammern zaehlen.
und benutzerfreundliche Betriebssvsteme. Und das Schlimmste ist,
einige von ihnen werden auf die Menschheit losgelassen ohne je
FORTRAN zu lernen! Sind wir dazu verdammt, eine Industrie von UNIXHackern und PASCAL-Programmierern zu werden9
Auf Parties stehen Echte Programmierer in einer Ecke und
diskutieren ueber Sicherheitsaassnahmen von Betriebssystemen und
wie man um sie heruaprograaaiert.
Bei Fussbal1spielen vergleicht der Echte Programmierer die
Ergebnisse mit seinem auf gruenliniertem Leporello-Papier
gedruckten Conputer-Simulations-Ergebnissen.
Am Strand zeichnet der Echte Programmierer Flussdiagramme in den
Sand.
Ein Echter Programmierer geht in die Disco, ua sich die Lichtorael anzusehen.
Bei Begraebnissen sagt der Echte Programmierer typischerweise:
"Armer Hans-Helmut. Er war mit seinem Sortierprooramm schon fast
fertig, als ihn der Herzinfarkt erwischt hat."
Ia Supermarkt besteht der Echte Programmierer darauf, seine
Bierdosen selber ueber das Fenster des Barcodelesers zu schieben,
weil er keinem Kassierer zutraut, dies beim ersten Versuch
richtig zu machen.
« •
>
«
Der typische Echte Programmierer lebt vor einem Computerterminal.
Rund um dieses Terminal liegen Ausdrucke von jedem Programm, an dee
er je gearbeitet hat, sie stapeln sich grob chronologisch geordnet
auf jeder ebenen Flaeche des Bueros. Im Zimmer verteilt finden sich
ueber ein Dutzend mit kalte» Kaffee mehr oder weniger gefuellte
Tassen. Gelegentlich schwimmen Zigarettenkippen darin herum, in
einigen Faellen auch Reste von Orangenschalen. Irgendwo liegen Kopien
des OS JCL-Manuals und der “Princicles of Operation" herum. Ueber den
Boden verteilt liegen Reste der Verpackungen von gefuellten Keksen
(der Typ, der schon in der Fabrik so furztrocken gebacken wird, dass
er auch bei laengerem Liegen iffi Automaten nicht schlechter wird).
Schliesslich, in der linken oberen Schublade des Schreibtisches, unter
der Schachtel mit Muntermachern, liegt eine Schablone fuer Flussdiagramme, die sein Vorgaenger dort vergessen hat. Echte Programmierer
schreiben Programme und keine Dokumentation; das ueberlaesst man den
Typen von der Wartung.
Der Echte Programmierer kann allerdings auch Kompromisse in Bezug auf
seine Prinzipien eingehen und an etwas geringeren Aufgaben als der
Vernichtung des Lebens arbeiten, sofern er dafuer entsprechend bezahlt
wird. Viele Echte Programmierer schreiben z.B. Videospiele fuer ATARI,
allerdings spielen sie nicht damit. Ein Echter Programmierer weiss,
wie er die Maschine jedesmal schlagen kann, und damit ist es keine
Herausforderung mehr. Jeder bei Lucas-Film ist ein Echter Programm­
ierer, denn es waere doch verrueckt, das Geld von 50 Millionen STARSWARS-Fans auszuschlagen.
-
In welcher Umgebung der Echte Programmierer am besten funktioniert?
Nun. dies ist eine sehr wichtige Frage fuer die Manager von Echten
Programmierern. Wenn man bedenkt, wie teuer es ist, einen von ihnen
ihn Betrieb zu halten, dann sollte man ihn oder sie in eine optimale
Arbeitsumgebung versetzen.
Nun, aus meiner Erfahrung heraus glaube ich behaupten zu duerfen, dass
das Schicksal den Echten Programmiere^n wohl gesonnen ist. Weder
OS/370 noch FORTRAN zeigen irgendwelche Syu^ome des Aussterbens,
trotz aller Anstrengungen der PASCAL-rrogrammierer. Selbst subtilere
Tricks wie das Hmzufuegen st ruf'tu' ier ter 5:hleifen zu FORTRAN sir.d
fehlceschlagefi. Sicher, einige Cceputerherstel ler liefern FORTRAN«
c
<
• •
♦
77-Compiler, aber jeder einzelne von ihnen laesst sich ueber eine
einzige Comp1 1er-Option in einen FORTRAN-66 -Compi1er verwandeln Alt DO-Schleifen Hie von Gott geschaffen.
Selbst UNIX scheint fuer den Echten Prograaaierer nicht sehr so
schlecht zu sein Hie frueher. Die neueste UNIX-Version hat das
Potential eines Betriebssystems, das eines Echten Programmierers
Huerdig ist. Sie hat zwei verschiedene, leicht inkompatible BenutzerSchnittstellen, einen geheianisvol1en und koaplizier ten TeletypeTreiber und virtuellen Speicher. Und Nenn der Echte Program»!erer
die Strukturierung ignoriert, kann er sich sogar ait C anfreunden.
Schliesslich gibt es keine Typenbindung, Bezeichner sind sieben
(zehn? acht?) Zeichen lang und aan hat Zeiger als Bonus. Das ist,
als haette man die besten Teile von FORTRAN und Assembler vereint,
von den kreativeren Moeglichkeiten des^KIdefine ganz zu schweigen.
Hallo liebe Clubkameraden !
Wie im letztem Club-Info schon beschrieben, haben wir jetzt auch
eine große CP/M 2.2-Software Bibliothek !
Ich habe bislang nur drei Zuschriften bekommen !!! Ist denn die
CP/M 2.2-Software nicht gefragt ?
Damit Ihr einen kleinen Eindruck von der ganzen Biblothek bekommt,
habe ich das Inhaltsverzeichnis der CP/M-USER-GROUP ausgedruckt:
Nein, die Zukunft ist nicht voellig schlecht. So hat sich in den
vergangenen Jahren die populaere Presse sogar ueber clevere neue
Brut von Computer-Schraten und -Hackern geaeussert, die Plaetze wie
Stanford oder das MIT zugunsten der Wirklichkeit verlassen haben.
Allen Anzeichen nach lebt der Geist der Echten Programmierer weiter
in diesen jungen ilaennern und Frauen. Und solange es schlecht
beschriebene Ziele, bizarre Fehler und unrealistische Zeitplaene
gibt, solange wird es Echte Programmierer geben, die bereit sind
einzuspringen und das Problem zu loesen, und die sich die
Dokumentation fuer spaeter aufheben.
Disk-Nr.:
LANG LEBE FORTRAN !
ED POST, WILSONVILLE
d»s
09 d»*> ®
. ti<3eT!' t . X*
-\i
-vi.
Vetrs.io*-
‘1 a ti9e
; r St e ^ Se ^ igeT1 _ , S?^
o<3r
97
t)aS
fLlaUS
/C
US
01 02 03 ~
04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 23B24 25 2G =
27 28 29 30 31 32 33 34 35 36 -
"Various CP/M Utilities - 0"
— > see CPMUG Vol. 10 11
"BASIC-E Games and Programs"
"ACTOR. ML80 and Examples of FORTRAN-80 Code"
"BASIC-E Programs and Microsoft BASIC programs"
"Maillist Program and CP/M Utilities"
"PILOT - Programmed Enquiry Learning Teaching"
"Various CP/M Utilities - 1"
"General Ledger from Interface Age Vol.2 No.10"
"LLBASIC: Lawrence Livermore BASIC interfaced to CP/M"
"TINIBASIC and Processor Technology BASIC/5"
"PILOT Interpreters interfaced to CP/M"
"BASIC-E. CBASIC Microsoft BASIC Programs"
"Various CP/M Utilities - 2"
"Utilities and non-BASIC Games"
"Assemblers. Other Utilities and FOCAL"
"Utilities. Denver Tiny BASIC non-BASIC Games"
"Maths Routines, Monitors and CASUAL (no CP/M I/O yet)"
"Various CP/M Utilities - 3"
"BASIC-E, CBASIC Programs Pictures"
"Microsoft BASIC Games Programs"
"Monsterous StarTrek Games in BASIC"
"STOIC - Stack Oriented Interactive Compiler"
"STOIC - Overflow Programs From Vol 23" (in CPMUG 25)
"CP/M Utilities, Macro Libraries RATFOR"
"Various Assembler Utilites"
"Microsoft BASIC FORTRAN Games and Utilities"
"Microsoft BASIC Games"
"BASIC-E Games Utilities. ALGOL-M"
"Assembler Games Utilities. BASIC-E Source"
"BASIC-E Ver 1.4 Source Code in PL/M"
"Tarbell BASIC - 1"
"Tarbell BASIC - 2"
"Search and Rescue Programs"
"SAM-76 Language"
"FELIX - Graphics Animation System"
"Assemblers. Editors and Utilities"
C L U
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
- "CBASIC2 Games. Utilities and CAI Programs"
- "Speed Up and Tarbell Disk Controller Utilities"
- "Music Programs for SOL CP/M"
- "Various Utilities, Disk Catalog System"
- "Ham Radio, Chess and FORTRAN programs"
- "Disassemblers, Diablo Clock Routines"
- "OSBORNE A/P.A/R Business Software I"
- "OSBORNE G.Ledger, Budget,R0B0, Business Software II"
- "OSBORNE Payroll Business Software III"
- "CP/M utilities, CPM LABEL. DU, DIR, REASM"
- "CP/M Utilities, MODEM, Copy, BMAP, PROM"
- "BDS C Sampler Disk, Comp, by Leor Zolman"
- "Rational FORTRAN (RATFOR), precompiler"
- "PASCAL PASCAL Compiler , Prgs. for UNIX"
- "STAGE2 Macro Processor by Dick Curtiss"
— "Copyfast vers. 3.5, BATCH/VARBATCH"
- "BDS-C Adventure disk"
- "BASIC Games, CAI Programs"
- "Adventure run-time disk”
_ "Adventure source code implemented for CP/M"
- "Expanded Adventure supercedes CPMUG 56"
•• "Miscellaneous CP/M Utilities"
- "8080 8085 memory and ICOM Controller diagnostics"
- "6502 Simulator. 6502 Zapple Monitor"
- "Bulletin Board, File Transfer CP/M Utilieties"
- "PASCAL Comunication programs"
- "Misc. CP/M Utilities"
- "Games, Disassembler, North Star Basic, CDOS simulator"
- “MITS-CP/M file conversion, PHELP. Utilities, FIG-Forth"
- "HELP File system for MBASIC, M80, CBASIC other"
- "CPMUG CATALOG disk vol. 01 - 42 with comments"
“ "Miscellaneous CP/M Utilities"
- "Miscellaneous CP/M Utilities"
- "Miscellaneous CP/M Utilities"
- "Miscellaneous PASCAL-Z Programs - 1”
- "Miscellaneous PASCAL-Z Programs - 2"
- "Miscellaneous PASCAL-Z Utilities - 3"
- "Miscellaneous PASCAL-Z Utilities - 4"
- "PASCAL-Z Programs - 5, MBASIC Disassembler, Date routines"
- "Miscellaneous PASCAL-Z Utilities - 6"
- "PASCAL-Z Utilities - 7, Datebase System, Disk sort Program"
- "Miscellaneous CP/M Utilities"
- "MODEM Programs for MMI SMARTMODEM"
- "CROMENCO structured BASIC Programs, Mail list. Spelling"
- "Miscellaneous CP/M Utilities, Submit, Editor, Hard Disk"
- "North Star BIOS Routines"
Wie Ihr seht, gibt es eine ganz schöne Auswahl !
Wenn Ihr wollt, dann könnt Ihr noch mehr Informationen auf Disketten
anfordern. Das Diskettenformat müßt Ihr allerdings mit angeben !
Bis Bald
B
S O
1
Hallo Freunde,
viel
er-freuliches gibt, es wieder von der Bücherfront zu berich­
ten.
Zunächst wäre da zu vermelden, daß es Jens endlich gelungen
ist,
zwei Sammelordner mit den "alten" Infos Nr. 1 bis 15 zusam­
menzustellen.
Die In-fos sind auf Karton vervielfältigt,
so daß
sie
(hoffentlich) auch mehrere Einsätze auf dem Kopierer überle­
ben.
Die Ordner
werden wohl vornehmlich für Neuzugänge interessant
sein,
die sich noch nicht die älteren Ausgaben des CLUB 80— Info
besorgt
haben (oder besorgen konnten).
Die Ausleihzeit beträgt,
da eine rege Nachfrage zu erwarten ist,
maximal drei Wochen. Die
Besteller
werden,
wenn beide Ordner unterwegs sind,
in eine
Warteliste aufgenommen,
so daß zuerst malt,
wer zuerst
kommt!
Selbstverständlich geht das Porto zu Lasten des Ausleihers,
so
daß der
Bestellung gleich drei DM
(ev.
auch in Briefmarken)
beigelegt werden sollten.
Die
Infos
16 bis 21 werden demnächst als Sammelband verfügbar
sein,
so daß
Neuzugänge
immer auch das schon dagewesene zur
Verfügung haben.
Ich möchte die Ausleiher an dieser Stelle bit­
ten,
die Ordner möglichst schonend zu behandeln,
damit sie noch
möglichst
lange den Neuen zeigen können,
wie aktiv ein Club mit
nur ca. 60 Mitgliedern sein kann (und hoffentlich noch lange sein
wi r d ) !
Ebenfalls erfreulich ist die Tatsache,
daß der Heise-Verlag wie­
der mal seine l_ager räumt und der CLUB 80 dadurch sehr hochwerti­
ge Bücher zu äußerst günstigen Preisen erwerben kann.
Welche der
bestellten
Bücher
tatsächlich geliefert
werden
("nur solange
Vorrat
rei c h t ” stand auf dem Angebot), werde ich euch erst
im
nächsten Info mitteilen können. Wenn aber alles von einer solchen
Qualität ist wie das Buch,
das schon jetzt als Neuanschaffung in
der Bibliothek auzuleihen ist, können wir sehr zufrieden sein.
Erst gestern habe ich,
ganz kurzfristig und durch Zufall,
eine
Neuerwerbung
für die CLUB 80—Bücherei einkaufen können.
Es han­
delt
sich
dabei (Model— 1 und III— sowie Video Genie—Besitzer
bitte
nicht neidisch werden) um das Model 4/4p Technical
Refei—
ence Manual.
Dieses Buch vereint technische Informationen
über
das Gerät und über das Betriebssystem TRSDOS 6 .x. Von "Model 4/4p
Theory of Operation" über die genaue Beschreibung der verwendeten
Spezial— IC's (CRT—Controller MC6835,
Baud Rate Generator BR1941,
Floppy Disk
Controller FD 179x—02 usw.) bis zur detaillierten
Erläuterung der Diskettenorganisation und den,
für Assemblerpro—
grammierer
sehr wichtigen,
SVC's (Supervisor Calls)
ist alles
vorhanden, was das Herz begehrt.
Wieder
einmal ans Tageslicht befördern,
und euch in Erinnerung
rufen,
will
ich die Sammelmappen, die Günter Wagner in seiner
Zeit
als Vorsitzender einmal zusammengestellt hat.
Es handelt
sich dabei um Kopieen von Artikeln aus verschiedenen Computer—
Zeitschriften (von ELCOMP bis Computer persönlich), die sich alle
mit dem TRS 80 bzw. Video Genie beschäftigen. Die Sammlung dürfte
vor
allem für
die Mitglieder interessant sein,
die sich zur
Erscheinungszeit
der
Artikel
(1980 bis 1983)
noch nicht mit
Computern beschäftigt haben.
Damit genug zu diesem Thema. Bestellen könnt ihr die Sammelmapoen
und Bücher direkt bei mir (Rückporto nicht vergessen)
Hartmut
Obermann1
*
*
S
» =
M
I—
U
Hallo Club-89er,
-
i
m
p
R
E
s
s
u
m
I. Vorsitzende
H a r tm u t
2. Vorsitzende
G erald
HardMretoordinator
E ckehard
Diskotheftar_______
W erner
RgdaKtion________
Jens
Autoren___________
Die Redaktion bedangt sich bei
den ia IWttLTSVERZEICMIS genannten
Autoren für die Mitarbeit an der
Club-INFO.
Druck____________
P e te r
Bankverbindung
OBERMANN
SCHRÖDER
KUHN
FÖ RSTER
NEUEDER
des C L U B
zum Abschluß des ersten 1988'er Info's darf ich mich wieder zu Wort melden. Diesmal
bin ich mit dem INFO -fast termingerecht -fertig geworden. Leider habe ich auch eine
negative Nachricht für Euch. Dazu gleich, zuerst aber meinen Dank an die fleisigen
Autoren unserer INFO.
- Wieder sind wir um die hundert Seiten stark geworden.
- Macht wei ter so!
Wie Ihr im Info schon habt lesen können, hat der Peter Spies seine Offsetdruckerei
aus beruflichen Gründen aufgegeben. Ich hoffe, daß es mir gelingt rechtzeitig Ersatz
für Ihn zu finden, so daß Ihr weiterhin Euer INFO bekommen könnt. Gleichzeitig bitte
ich Euch um eure Mithilfe. Vielleicht hat jemand von Euch einen "Drucker1 in der
Hinterhand? -Offset natürlich!- Wer mir helfen kann melde sich bitte bei mir.
Wobei ich auch schon beim nächsten Thema bin.
Die Redaktionsadresse ändert sich I!
Ich bin zwar noch nicht “
körperlich* umgezogen aber 'postmäsig'. Der Nachsendeantrag
läuft für ein halbes Jahr. Trozdetti bitte ich Euch alle, meine neue Adresse in Eure
Listen aufzunehmen und ab sofort an den neuen (Redaktions-)ßriefkasten zu schreiben:
Jens NEUEDER
S r iie ß
80
So, das war nun einmal wieder. Als Beilage findet Ihr in diesem INFO ein
Infoinhaltsverzeichnis bis 1. 3. 1988 von KaJot.
Als weiterer Anhang ist noch ein Kartenauszug dabei. Ich bin sicher, daß Ihr damit
die beste 'Anflugschneise’nach Idstein finden werdet.
Eine neue Adressenliste habe ich diesmal nicht mit beigefügt. Es gibt noch einige
säumige Zahler unter uns. Bis zum nächsten mal ist das sicher geklärt. Dann kommt
auch eine neue Liste.
HEFT
Bis zum Clubtreffen oder nächsten INFO grüßt Euch
Das INFO erscheint zveiiionatlich.
Es erfolgt keine Zensur oder Kontrolle
der jeweiligen eingeschickten Infobeiträge
durch die Redaktion.
23
Februar
1938
102
TITEL
VERFASSER
A S C I I-TABELLE IMMER ZUR HAND
KLEINSC HRIFT fuer den EDTASM+
SCHUETZEN VON ASSE M BL ER PR O GR AM ME N
HALBAUTOMATISCHE FESTLE GU NG VON ORB
MEIN DRITTES ASSEMBLER PR OG R AM M
MEIN ERSTES ASSEMBLER PR O GR AM M
■INPUT"
ASSEMBLER CONTRA LISP
DIE WERKZEUGE DES A S S E M B L. PR OG R AM MI ER E RS
EINIGE A SS E MB LE R-ROUTINEN
LMOFFSET with DISABLE DOS
NERKZEUGE DES A S S E MB L ER -P RO G RA MM IE R ER S
LPRINT ALLES einfacher! (Teil 3)
SCHOENER LISTEN MIT ZEUS
WER HAT ANGST VOR ASSEMBLER?
ZEUS MIT 64 UND 80 ZEICHEN
BASIC RUFT ASSEMBLER
TIP FUER SC H NELLERES ARBEITEN MIT EDTASM
SYSC0PY1 und RAMDISK f .H E L M U T '5 BANKER
2 56K -RAM fuer ZBO-SYSTEME
EXTENDED B A SI C(RESTOREn u. LPRIN T alles)
EIN MYS TERIOESER BASIC-B EFEHL: IsA
GENIE IIs - E rf a hrungsbericht
FUTTER fuer GENIE Ills CRTC
B ILDSCHIRMAUSGABE Bit INVERSEN ZEICHEN
BIN ICH STR AH LE N GE FA EH R DE T?
DAS PROJEKT (FERNSEHER — > MONITOR)
NOCH EIN BILDSCHIR MS CH O NE R
SCHWIMMENDE BILDER
8 0- ZEICHENKARTE XBO, SEDIT und TSCR IPS
DIE 80 -ZEICHEN-KARTE
EIN SCHONER fuer die BILDROEHRE
EIN WEITERER BILDSCHIRM SC HO N ER
FUTTER fuer den CRTC
MEHR FERN SEHEN fuer's GELD (f.GENIE Ills
NOCH MEHR FERNSEHN fuers GELD
VIDHEX - HEXANZEIGE d . B I L DS CH IR M S m.HRG
BEI SIEMENS HEISST ES: CHIP CHIP HURRA!
ERSTER MEGABI T- CH I P IN SERIE
DER LEIDENSWEG DER CMOS-CHIPS
NANO HENRY BLOCKI ER E N DEN F OR TSCHRITT
BAS ICODE-INTERFACE
BASICODE-2
MEIN ZWEITES A S S E M B L E R PR OG RA M M
UN T ERSCHIEDE <2 W. MODEL 1 und 3 bzw. 4)
B A S C O M - K U R Z A N L E ITUNG
RPNL - DIE ANDE RE ART ZU PROG RA M MI ER EN
RPNL-BES CH RE IB U NG
CALL ait BASCOM
MODEL 4p R O M - 1M AG E-LOADER
TA N D Y < — > SCHNEIDER
CP/MAC-eine BRUECK E Z W. G -/ NE WD O S u.CP/M
WIE PHOENIX AUS DER ASCHE (4 COMP.in 1)
DEIN 6 1 1 1 s . . . (NACHTRAG)
TRS- 80 MODELL 4p, DER SCHOENSTE PORTABLE
TANDY - BETTER AGAIN
32 BIT zu« N I E D R IG P RE IS (TANDY 4000)
F L O P P Y C O N T R O L L E R- KO MP A TI BI LI T AE T
WAS HABT IHR GEGEN CP/M ?
GENIE, CP/M UND 80 ZEICHEN UND HRG???
CMD ==> COM ohne CPMac
F.HEIMWERKER: WIE BAUE ICH MIR EIN CP/M?
SOPP
HEIDENREICH
KONRAD J.
KONRAD, J.
MUEHLENBEIN
MU EHLENBEIN
SCHROEDER
SCHROEDER
SCHR OEDER
SCHROEDER
SCHR OEDER
SCHROEDER
SOPP
SOPP
SOPP
SOPP
WOLLS CHLAEGER
ZWICKEL
SCHROEDER
BERNHARDT
OBERMANN
SOPP
SCHROEDER
HE IDENREICH
?
BOIKAT, Ute
MUELLER, K.
SCHMID, A.
SCHMID, A.
SCHROEDER
SCHROEDER
SOPP
SOPP
SOPP
SOPP
SOPP
SOPP
ZEITSC HRIFT
aus Zeitschrift
aus c't
aus c 't
? ( aus ELEKTOR)
?(aus Elektor)
MUEHLENBEIN
OBERMANN
MU EH LENBEIN
MUELLER, KURT
MUELLEF, KURT
OBERMANN
OBERMANN
OBERMANN
RENSCH
SCH ROEDER
SOPP/BERNHARDT
W OLLSCHLAEGER
ZEITSCHRIFT
aus - ? RETZLAFF
BERNHARDT
HELD
SCHROEDER
SCHROEDER
INFO-#/SE
STICHWORT
ASCI I
ASSEMBLER
BANKER
BANKING
BASIC
BERICHT
BILDFORMAT
BILDSCHIRM
CHIP
CODE
CO MP.-MUSIK
CO MP .WECHSEL
COMPILER
COMPUTER
CONTR OLLER
CP/M
19/19
20/37
5
9/3
lt/33
14/9
11/5
17/19
21/9
14/17
9/9
21/9
9/11
18/41
CP/M
DATEI
DATENBANK
D ATENUEBERTR
DDE
D EF.FU NC T IO N
D ENKAUFGABEN
DFUe WDR
DOS
s
18/36
21/11
6/67
16/32
14/91
11/33
DOS-FEHLER
DOUBLER
DRUCKEN
5
9/67
20/22
12/79
20/109
18/61
22/26
22/66
13/17
12/63
20/20
22/28
19/40
14/21
19/39
9/13
18/76
18/18
19/67
19/70
3
3
15/15
14/55
13/3B
15/57
16/37
12/33
15/43
17/49
18/44
17/9
17/54
12/69
16/40
22/79
19/47
21/53
21/43
21/23
21/25
DRUCKER
DRUCKERGRAF.
D RUCKZEICHEN
ECB-BUS
EC HTZEITUHR
ERFAHRUNG
ERROR
F ILEVERGLCH
FLOPPY
F ORMAT IE R UN G
GENAUIGKEIT
GRAFIK
GRAF1K-JKL
HAENDLER
HARDCOPY
H ARD WARE
I N H A L T S V E R Z E I C H N I S D ER INFOS E I S 1 . 3.88
TITEL
== = = = = == = = =r == === == = = == == == == = i = == == =
Wie baue ich mir ein CP/M ?
INDE X-DATEIEN
BDBS - BAS IC DATENBANK SYSTEM (MODEL 4)
dBASE II - eine Einfuehrung
VIDEODAT 300
DDE fuer das GENIE Ills
BAS I C- PROGRAMMIERBARE FUNKTIONEN
MATHEM AT IK fuer FEINSCHMECKER
DATE N UE BE RT R AG UN G p.FERNSEHB IL D/ W DR -C LU B
R-BEFEHL MSDOS -LIKE (ein Editor f. DOS)
LS-DOS 6.3 - KOPIERSCHUTZ
EXTENDED NEWD OS 80
NEWD0S /8 0+ 10 VERSION 2.4 (26.10.85)
SUPERDOS
DIR/SYS ODER INHALT/SYS?
FILTER UNT ER TRSDOS 6.x
MDOS in INFO???????
DOS - (FAST) OHNE FLOPPY
FEHLER IM NE WDOS-BEFEHL 'BOOT'
SELBSTBA U- DO UB L ER fuer EXP1
DREI S PA LT IG DRUCKEN
EIN F EHLER IM SYS2B/SYS
LPRINT MIT MO DERNEN GENIES
SPEED WRITING (fuer EPSON MX-DRUCKER)
.. .WEIL; KUERZE SO WUERZIG IST...
DIE DRUCKER AB FR A GE
VON 8 AUF 24 PINS ( - DRUCKNADELN)
6 R A P H I K - J K L , TSCRIPS UND DER NEC P6
AM BILDSC HI R M DEFINIERT/EDITOR f .DRUCKER
ECB-ADAPT E R- PL AT I NE
V ERBINDEND
DIE EINGANGS PL AT I NE
ECB-BUS- GR UN DE I NH EI TS A UF BA U
ECB- B US -P RO J EK T
E CB -B US - TRS80-PR0JEKT
ECB-BUS fuer MODEL 3/4!???
ACH DU LIEBE ZEIT!
REAL TIME BLACK BOX?
PC STATT GENIE? (Ueber »eitere FC's)
" PR UE FZAHLFEHLER BEIM L E S E N “
VERG LE I CH ZWEIER DISK-DATEIEN
V ERGLEICH ZWEIER PROGRAMME: noch'n TOOL
F L OP PY-TRICKS
40 TRACKS? WARUM NICHT 42?
MA TH EM A TI SC HE R UEBERFLUSS
ERGAEN ZU N G ZU GRAFIK-SHORTY
TRS80 Ml/3 SCHNELLE GRAFIK IN BASIC
H R 6 - BI L DU EB ER T RA GU NG OHNE HRG (WDR-FILES
SCHNELL BEWEGTE GRAFIK AUF DEM TRS80
GR AFIK-STANDARD: ALLEIN G E H T ’
S AUCH
EI NF.GRAFIKPROGRAMM: PLOT/BAS
L IN IE NMODELLE IN 3 DIMENSIONEN
GRAFIK-CLS fuer das 6ENIE Ills
S TR IN GANZEIGE MIT VOLLDAMPF
GRAFIK-JKL fuer das GENIE Ills
TANDY-VE RT AG SH A EN DL ER
TANDY SC HL IESST COMPUTER-CENTER
HARDCOPY AUCH OHNE INTERRUPT
FLOPCOPY AUCH OHNE INTERRUPT
DATENFER N UE BE RT R AG UN G
R EL AI S- INTERFACE
AU SLESEN DES GRAFIKSPEICHERS
VERFASSER
SCHROEDER
H ERMANN
HERMANN
MAND
?
SDPP
HERMANN
WEBER
EDDE u. HERIBERT
HEIDENREICH
HERMANN
OBERMANN
OBERMANN
OBERMANN
RENSCH
SOERENSEN, R.
SOERENSEN, R.
SOPP
RETZLAFF
SOPP
SOPP
SOPP
LINDSEY
MUEHLENBEIN
SCHMITZ
SOPP
SOPP
KLUGE
?
ASSENBAUM
DROWAELDER
NEU EDER
NEUEDER
NEUEDER
OBERMANN
SOPP
SOPP
SCHMITZ
BERNHARDT
SOPP
SOPP
OBERMANN
OBSCHERNINGKAT
MUEHLENBEIN
HER MANN
H0RNUN6
OBERMANN
ROECKRATH
SCHROEDER
SCHROEDER /ARPS
SCHROEDER/ ARPS
SOPP
SOPP
SOPP
ZEITSCHRIFT
RYCHLIK
SOPP
T
BER NH./SEELMANN
INFO-Ü/SEITE
II
II
II
II
II
II
II
II
II
II
II
PAGE 2 -
11
INF O S B IS 1 . 3 . 8 8
II
II
II
II
II
II
It
II
II
II
II
tt
STICHWORT
I N H A L T S V E R Z E I C H N I S DE R
II
II
II
II
II
It
It
It
II
II
It
II
II
It
II
PAGE 1 -
21/25
19/15
22/37
21/33
13/51
12/17
19/26
20/101
12/62
20/44
21/55
10/5
11/25
2
15/21
18/29
20/11
14/69
11/21
17/45
21/15
22/33
18/19
12/65
20/35
18/12
22/20
16/27
9/19
15/65
11/39
15/73
15/71
14/101
13/39
15/84
15/32
15/53
20/99
22/71
22/53
22/57
13/41
18/11
20/17
19/32
2
15/11
2
19/U
14/29
14/35
13/35
6/41
13/32
19/79
18/75
20/15
21/14
6/19
9/47
20/65
H AR DW AR E
HRG
JKL
KASSETTE
KOPI ERSCHUTZ
LAUFWERK
L IBR ARY
LI TE RATUR
LOGIK
M 4/4p-ECKE
M ATH.STATIST
KATHE-SPIEL
TITEL
VERFASSER
1NF0-I / SE IT E
s x x s z s s £ s s s s e s s s s K e e s s s K C S K K s s s e s s s s s s s 3
i n i E s s r i n : : : :
c c c s s o E s s s :
DAS B O - Z E I C H E N K A R T E - P R O B L E H u.d. LOESUNG
SICHERES, E I N - ,
PLAETZ C HE N
WA CH HUND, Der-, b . u n k o n t r .Schaltlustand
BILLIG ES CP/H
T AK TFREQUENZ GENIE I/II - VERDOPPLUNG
FLOPPYDI S K - C O NT R OL LE RK A RT E
T AS TA TU R- UND DR U CK ER PL A TI NE
T R S 8 0 , DER-, UND DIE AUS SENHELT
INTE RF A CE -A DA P TE R 8255, P RO GR A MHIERBARER
P OR TB EL E GU NG
M O D E R NI SI E RU NG STATT NEUKAUF
H R6 -lb-KARTE
J OY ST IC KS FUER DEN TRS BO Ml
DIE MAUS AM T R S - 8 0 !
E C B - BU S- P RO JE KT
EXT RA RAM (“Ein si cheres P I a e t z c h e n . ..")
FLOPPY TR I CK S
T A K T UH SC H AL TU N6 FUE R VIDEOGENIE
T ES TADAPTER
S Y N C HR ON I SI ER TE TAKTUHSCH AL TU N G
UM BAU EINES TR S80 MOD.I 16K AUF 48K
KLEI N BU CH ST A BE N FUER DEN TRS 80
J OY ST IC K -A NS CH L US S
INDIKATORKARTE fuer ECB-BUS
AKUSTI KK O PP LE R
F UN KT IO N SW EI SE DES DR U CK ERPUFFERS
E P R O H - P R OG RA M MI ER GE R AE T
HARDWARETIP: NEUE I C s
INTERFACE MIT B251 UND B255 FUER Z80
AN SC HLUSS GESUCHT
Z BO -B U SANSCHLUSS
SI CHERER PLATZ fuer DATEN? (DISKETTEN)
DI GITALTECHNIK, GRUNDL AG EN DER HR6 vom BASIC aus (DEMO)
H RG-PIXELS aus den BASIC!
HRG: 3 B 4 x 192 oder 192x192
H R6 -B IL D UE BE RT R A6 UN G per DFUe
UMKEHR!
GEN IE Ills,
DIE HRG DES HRG lb PROGRAMMIEREN, BESSER ER KLAERT
HRG UND BAS IC NETTO
H RG-HARDCOPY fuer das G Ills
H RG-SPEICHER LOE SCHEN, DEN JKL - ABER DRUCK ERSCHONEND!
C AS S ET TE NV E RZ EI CH N IS ERSTELLEN
LS-DOS 6.3 - KOPIERS CHUTZ
LWT fuer GENIE I und TRS-80 MODELL I
WAS TUN BEI VOLLER LIBRAR Y?
BUECHERLISTE: DIE ER STEN KURZKRITIKEN
HEITERE KU RZKRITIKEN
BOOLE XOR ABEL
STEN0-L06IK
LO GISCHE O PE RATIONEN 2
LOGISCHE O P ER ATIONEN IN BASIC
L OGISCHES ZU L06IK
L OG IKSIMULATION *it BASIC
AUF RUF DER S UP E RV ISOR-CALLS in BASIC
DAS BOOT -ROM des 4p
HRG fuer MODEL 3/4/4p
A UF G E S T I E G E N ’
B IVA RANA (2fache Varian:an alyse)
WAS IST MIT DER PRIMZAHL ’
37' LO S ”
B ERNHARDT
BERNHARDT
BETZ
BREWER
DRE YER
DROWAELDER
DROWAELDER
KLEIN, WILFRIED
KUHN
KUHN
M AT THAEI/H.COMP
MUELLER, KURT
NEUEDER
OBER MANN
OBERMANN
OBERMANN
OBERMANN
OBERMANN
RE8GE
RETZLAFF
RETZLAFF
ROEC KRATH
SOPP
SPIESS
TRAPP
TRAPP
WOLF (aus HC)
ZEITSCHRIFT
ZWICKEL
aus c 't
aus c't
aus test 9/87
gesäuselt: KUHN
NEUEDER
NEUEDER
NEUEDER
OBERMANN
O BER MANN
SOPP
SOPP
SOPP
SOPP
SOPP
SOPP
W A G N E R , G.
HERHANN
RETZLAFF
SOPP
SCHROEDER
VERSCH.
MUEHLENBEIN
HUEHLENBEIN
OBERHANN
OBERMANN
SOPP
ZEITSCHRIFT
HERMANN
OBERHANN
OBERHANN
WAGNER, G.
MUEHLENBEIN
MUEHLENBEIN
22/63
7/43
20/63
9/53
3
IB/49
20/71
4
13/47
21/44
5
14/89
5
22/60
9/42
9/63
14/87
8/25
9/45
10/49
10/45
5
6/29
19/45
4
6/lfi
5
17/38
2
20/81
19/51
22/ 73
SOND ER
10/31
10/23
13/14
14/24
20/58
12/21
10/25
10/27
13/25
10/29
12/13
10/33
21/55
13/40
12/15
21/67
22/DIV
17/16
16/24
16/9
15/9
16/14
16/11
14/62
14/63
14/67
14/59
19/21
11/23
I N H A L T S V E R Z E I C H N I S D ER IN F O S B I S
1 . 3.88
STICHWORT
TITEL
MATHE/GRAFIK
MATHEHATIK
R ECH N EN (ZEICHNEN) HIT DEH CO HPUTER...
WIE der NA T. LOG.die RECHEN ZE I T VERKUERZT
P R I M Z A H L B E RE C HN UN GE N (3 P R O G R A M H E )
S P L I N E - I NT ER PO L AT ION (KUBISCH)
CRAMER UND DIE D ETERMINANTEN
DAS CART ES I SC HE BLATT
DER S CHNELLSTE ZAHNARZT (WURZELZIEHEN)
6 0L DENER FIBONACCI
RESE T- FE S TE HEHDISK H4-CP/H
B O O T -R O H- VE RS I ON und DATUH M4
TURBO TIP
KLEINE ZIPPERLEIN RASCH KURIERT
DA CAPO... (WIE HAN TOENE ERZEUGT)
SCHWERE KAVALLERIE ("DAS CLUBLIED")
A P F E L HA EN NC H EN auf der 6DP64
GENIE, CP/H und 80 ZEICHEN und HRG ???
PASC A L- PR OB L EH E
TURBO PATCH
TURBO PATCH (FEHLERKORREKTUR)
TURBO T IP
TU RBO-TIP
K U R Z K R I TI KE N und B U ECHERLISTE
PA S CA L- VO R S T E L L U N G TEIL 2
PASCAL fuer INTERESSIERTE
P A S S WO RT -B Y PA SS BEI TRSDOS 6.2
GR O SZ BU CH S T A B E N H O D U S AB SYST EH ST A RT (H4)
P D R I V E - ID E NT IF IK A TI ON fuer NEWDOS BO
KREIS OHNE T R1G0N0HETRIE
P OK E +P EE K- E CK E
PO R TB EL EG U NG von C O H PU TE R KO NF IG U RA TI ON E N
OUT,PORT«,x x , y y , . . .
VERBESSERT: I O , P O R T # < , x x , y y , . . >
S T R UK TU RI E RT E P RO G RAHHIERUNG
KEINE HEINUNG ZUR STRUKTUR?
E DI T-BEFEHLE
BASI C- L AU FE N DE P ROGRAMHE E RWEITERN
LOKALE VARIABLE BEIH TRS 80
P LA NVOLL P R 06 RA HHIEREN
D IRECTORY LESEN
EDITOR
P R O G RA HH IE R EN HEISST *. DATEIEN ARBEITEN
TRICKS HIT STRIN6S
DEH INTERPRETER aufs BIT GESCHAUT
DIE R IC HTIGE DIMENSION
Z80, HD6 41 B0 UND ILLEGALS
T A V s ZBO-T UNING
5 1 2 K - R A M- A DR ES SE N «. FLEXIBLER MMU
H I N I - R A H- F LO PP Y 1« "SICHEREN PLAETZCHEN"
C O H P UT ER KR I MI NA LI T AE T
URHE B ER RE CH T SS CH UT Z fuer PROG RAHME
ZU GERALDS ARTIKEL ueber LMOFFSET
CALLERLEI
KLEI NE S LOG IK - LE XI KO N
TRAU - SCHAU, WEH! Ein Bitchen Englisch
RAH-DISK KOST ENLOS
SUPE R TA PE FUER TRS 80
422 NEUE Z80-BEFEHLE
HONI TO R IH GENIE
ERWE IT E RU NG FU ER TASMON (NEWDOS-BEFEHLE)
ALLERLEI N U E TZ L IC HE S FUER DEN TRS 80
BASI C- PA T CH FUER RESTORE N
DER GEKNACKTE TRS BO
HEHDISK
HODEL 4
HUSIK
PASCAL
PASSWORT
PATCH
PDRIVE
PLOTTER
POKEPEEK
PORT
PROGRAMHIERG
PROZESSOR
RAH
RAHFLOPPY
RECHT
RECORDORGAN.
ROH-ROUTINEN
SCHALTALGEBR
SEHANTIK
SICHERHEIT
SOFTWARE
VERFASSER
INFO-f/SEITE
II
II
II
II
II
II
II
II
II
II
II
II
tl
II
II
P AGE 4 -
n
M
II
II
II
II
II
H
II
II
H
II
II
It
It
It
II
II
II
N
N
N
II
II
II
II
I N F O S B IS 1 . 3 . 8 6
11
STIC HW OR T
I N HA LT SV E RZ E IC H NI S DER
H
II
II
H
H
It
It
(I
U
It
II
II
II
PAGE 3 -
SCHROEDER
GUA6LIAN0
KASPER
KASPER
HUEHLENBEIN
HUEHLENBEIN
HUEHLENBEIN
HUEHLENBEIN
OBERMANN
HERHANN
OBERMANN
WOLLSCHLAEGER
MUEHLENBEIN
HUEHLENBEIN
BERNHARDT
HELD
KONRAD, J.
OBERMANN
OBERMANN
OBERMANN
OBERHANN
SCHROEDER
SOERENSEN
SOERENSEN, R.
OBERHANN
HERH£NN
OBERHANN
SCHROEDER
HANS - ? KUHN
SOPP
SOPP
•>
GRELL
HERHANN
KRENZKE
PAULO
SACHSE
WAGNER, 6 .
WA6NER, G.
WOLLSCHLAEGER
W0LLSCHLAE6ER
ZEITSCHRIFT
Zeitschri ft
SCHROEDER
ZEITSCHRIFT
BERNHARDT
SOPP
KAHLEN
SOPP
HUEHLENBEIN
aus c ’
t
HUEHLENBEIN
WOLLSCHLAEGER
BURGWITZ/STILLR
HASSELBERG (HC)
KASPER
KONRAD J.
LICHTERMANN /MC
OBERMANN
ROECKRATH
10/53
14/77
5
16/19
19/13
18/5
22/11
16/21
19/43
19/42
21/31
12/57
22/13
22/17
21/37
21/43
9/73
21/32
21/32
21/31
21/31
21/71
22/40
20/12
19/42
21/30
10/17
15/8
4
21/44
11/29
12/11
7/17
7/28
14/6
16/1B
7/7
7/23
9/4
9/5
7/29
6/65
12/37
18/26
17/27
17/33
18/67
10/37
19/81
10/55
10/3
20/27
19/61
18/47
2
7/44
4
6/23
6/25
4
5
6/33
PAGE 5 -
SP RACHE
SPURANZAHL
TAKT
T AS TA TU R
TELEFON
TEXT -G R AF IK
T EX TS YS T EM
T ON E R Z E U G U N G
UHR
U T I L IT Y
VERTRETUNGEN
VIDEO
VERwpuue&fw
Z BO
Z AP PE N
Z EI CH E N S A T Z
ZEITMESSUNG
EIN NEUER 8 0 ZEICHEN-TREIBER
COBOL - EINE EI NFUEHRUNG
DATENVERLUSTE
S ONDERTASTEN DIVERSER GENIES
S ONDER TA S TE N DIVERSER GENIES (NACHTRAG)
CALL UH DIE ECKE (MEM-BEREICHE ERRE I CH EN
J OY ST IC K AN MODEL 4/4p
T APE-GAMES AUF MODEL III/4/4p
ADVEN-SO
DAS PIRATE ADVENTURE
A DVENTURE GEHEIMAGENT XP-05
COBOL-EI NF U EH RU NG
D ER -DIE-DAS MACHT MIR SPASZ
CP/M AC - NA UND?
80/40- TR AC K UN SC HA L TU NG
TAKT U MS CH AL T UN G - DIE ALLERLETZTE L0ES6.
UMLAUTE IM NEWDOS? ABER NATUERLICH!
KNOEPFE
ES BEHT NOCH SCHNELLER (TAST.ABSCHALTEN)
U NIVER SA L GE NI E
TELE FO N BU CH MIT PFIFF
(TELEFON) - EIN UD-ZEI CHEN auf d.D RU C KE R
UMDE FI NI E RU NG v.SCR I PS IT -K O MM AN DO T AS TE N
KEINE ANGST VOR... (TRENNEN IN TSCRIPS)
SCRIPS IT AUF DEM ALTEN GENIE
FREIRAEtlME IN TSCRIPS
SCRI P SI T- TA B EL LE N
T EX TU MLEITUNG fuer TSCRIPS
TSCRIP S- V ER SC HL U ES SE LU N G
S CONTRA @
KEINE ANGST VOR PR OPORTIONALSCHRIFT
NEUES ZUR PROPORTIONALSCHRIFT
TIPS fuer SCRIPS
T SCR I PS i> DIE l-CODES
TSCR IP S UND DIE 24 NADELN
VON DER UIEGE BIS ZUR BAHRE (ADR.AUTOMAT)
DAS T S C RI PS - DR AM A - EIN LEHRSTUECK
T ON GE NE R AT OR FUER TRS BO
U HR UN TE N fuer MODEL 4p
THE TIMES, THEY ARE A-CHANGING
NE NN DIE UHR MAL STOERT
EINGAB ER OU TI N E MIT KOMFORT
TR A CE-ON
A US GA BE U M S C H A L T U N G IN BASIC
DIRE CT O RY LESEN UND KO MMENTARE SPEIC HE R N
FILES WIE SAND AM MEER...
IN VI SICALC SORTIEREN
F IL EV ER 6 L E I C H (s.auch P r o g r .- B i b l i o t h e k )
DDE t< LWT
LPRINT ALLES einfacher
ZAP IM SU PERZAP/Zappen i« Zeich en be re i ch
LPRINT ALLES
B IL DS CH I RM A U S D R U C K BEIM T RS 80 + VI DE OG E N IE
SMARTSCREEN, SMARTKEY und SMARTPRINT
PA G EL IS T/ C MD
TRACE od.DIE 6ESCHI CHTE EINER ZEITSCHR.
VIDE OD AT - SY ST EM
UM WANDLUNG: ROEMISCHE IN A RABISCHE ZAHL
A RB EI T S T I E R MIT GESUNDEM HERZEN
EIN BYTE UND SEINE FOLGEN
NEUE Z EI C HE NSAETZE fuer das GENIE Ills
ETW AS fuer LEUTE, die NIE ZEIT haben
II
S PE ICHER
SPIEL
VERFASSER
U
H
SO NDER TA ST EN
TITEL
II
II
II
II
H
II
H
It
It
II
II
H
ST IC HWORT
= == == == = == ==
SOFTWARE
I N H A L T S V E R Z E I C H N I S DER INFOS B IS 1 . 3 . 8 8
SCHROEDER
TRAPP
aus c't
SOPP
SOPP
SOPP
OBERMANN
OBERMANN
SCARGILL
SCHROEDER
WAGNER, ALEX.
MUEHLENBEIN
SOPP
KUHN
MUELLER, KURT
NEUEDEER
OBERMANN
SCHMID, A.
aus c't
FRISCH
SOPP
KONRAD
MUEHLENBEIN
OBERMANN
SCHROEDER
SCHROEDER
SCHROEDER
SCHROEDER
SOPP
SOPP
SOPP
SOPP
SOPP
SOPP
SOPP
SO P P/MÖHLENBEIN
PLUMHOFF
OBERMANN
SOPP
SOPP
BULLING
HOEH (COMP.PERS
KONRAD J.
MUEHLENBEIN
MU EHLENBEIN
MU EHLENBEIN
NEUEDER
OBERMANN
OBERMANN
OBERMANN
SOPP
UEBERSCHAAR
Z EITSCHRIFT
aus Zeitschrift
OBSCHERNINGKAT
MUEHLENBEIN
BETZ
OBERMANN
SOPP
SCHMID, A.
INFO-#/SEITE
========*===
19/77
5
19/80
13/23
14/53
15/49
19/50
20/57
11/9
11/15
3
8/5
19/75
19/78
19/49
li/45
10/41
14/57
22/32
19/57
2
16/29
8/14
20/61
14/43
14/47
14/45
14/49
15/29
19/27
18/13
18/15
13/19
19/16
22/23
19/33
21/56
8/ 19
15/47
22/35
14/39
7/13
4
6/24
13/15
11/7
20/93
10/43
10/19
8/3
8/13
6/31
5
12/45
18/21
18/75
18/57
16/7
21/52
10/21
12/2B
22/31