download PDF (41MB) - Mike Schilli
download PDF (41MB) - Mike Schilli
download PDF (41MB) - Mike Schilli
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
CCDUTIL<br />
CCD LEX-File fiir den HP-71<br />
Teil 3<br />
Die aktuelle Version von CCDUTIL ist<br />
CCD:2A. Ich bin dazu iibergegangen, bei<br />
funktionellen Anderungen (neue Befeh<br />
le) die Versions-NUMMER zu erhohen<br />
und beianderen Anderungen (Fehlerkorrekturen)<br />
den Buchstaben, wobei ich die<br />
Version "A" als "1A" betrachte (es gab<br />
auch eine Version 1B).<br />
Bereits in der Version 1B sind zwei Bugs<br />
beseitigt worden: die "-1", die DSP, RPT<br />
und KBD zuruckgeben konnten sah nur<br />
so aus; ein Vergleich wie"DSP=-1" lieferte<br />
immer Null als Ergebnis. AuBerdem<br />
war es doch nicht der Weisheit letzter<br />
SchluB, wie von mir in Heft 5/88, Seite 5<br />
vorgeschlagen wurde, zum Loschen der<br />
Anzeige in das Nibble an Adresse #2F442<br />
einen Wert ungleich Null zu schreiben:<br />
beim nachsten INPUT-Befehl wird die<br />
Programmausfiihrung unterbrochen.<br />
Wenn man beim Studium der IDS mal<br />
genauer hinsieht, findet man eine mit<br />
NEEDSC bezeichnete Adresse (#2F94A).<br />
Ein Wert von Null bedeutet, daB keine<br />
Zeichen zum Display geschickt wurden,<br />
seit die ENDLINE-Taste das letzte mal<br />
gedruckt wurde. Dort schreibt SETSTS<br />
nun Null hinein, wenn die Option "Anzei<br />
ge loschen" bei STS$ gesetzt war.<br />
Die Funktion FILE$ ist (mal wieder) erweitert<br />
worden: ist die Lange des Stringparameters<br />
genau 32 Zeichen, so wird er<br />
nicht als Filename sondern als Massenspeicherkatalogeintrag<br />
interpretiert. Nun<br />
kann man z.B. das gesamte Directory<br />
einer Diskette mit einer ENTER-Anweisung<br />
einlesen, mit der FILE$-Funktion<br />
die Katalogeintrage auswerten lassen und<br />
das ganze sortiert ausgeben.<br />
Dieses Feature gab es auch schon in der<br />
letzten Versbn, jedoch war diese Erweiterung<br />
so kurzfristig, daB sie nicht mehr<br />
im Artikel in Heft 3/89 beruckschtigt werden<br />
konnte, da dieser bereits gesetzt wurde.<br />
Neu ist allerdings, daB nun bei exakter<br />
Schreibweise (nur Kleinbuchstaben und<br />
keine Leerzeichen) auch "workfile" und<br />
"keys" gef unden werden. Und jetzt - tataaaaa...<br />
- ist es erstmals moglich, herauszufinden,<br />
welcher File einer Kanalnummerzugeordnet<br />
ist, wenn man FILE$<br />
keinen String sondern eine Zahl -eben<br />
die Kanalnummer- ubergibt.<br />
Und weil es billig zu haben war (etwa 100<br />
Bytes), habe ich auch die Funktion FTY-<br />
PE$ aus dem DATACOMM-Modul iiber<br />
nommen. FTYPE$ wird -genau wie FILE$ein<br />
Filename oder eine Kanalnummer<br />
iibergeben und man erhalt einen fiinf<br />
Zeichen langen String, der den Filetyp<br />
reprasentiert (zB. "TEXT", "BASIC" oder<br />
"KEY "). Kennt der HP71 den Filetyp<br />
nicht, so wird, genau wie bei CAT$ eine<br />
bis zu fiinfstellige Zahl in Stringform zu<br />
riickgegeben. Wird der angegebene File<br />
nicht gefunden, erzeugt FTYPE$ nicht<br />
wie FILE$ einen Fehler, sondern gibt<br />
einen Nullstring zuriick; das ist niitzlich,<br />
wenn man herausfinden will, ob ein File<br />
bereits existiert.<br />
Im Gegensatz zur Funktion im DATA<br />
COMM-Modul findet dieses FTYPE$ auch<br />
"workfile" und "keys". Es benutzt die gleiche<br />
LEX-ID und Tokennummer wie die<br />
Original-Funktion, sodaB CCDUTIL im<br />
Speicher vor DCLEX liegen muB (siehe<br />
HP71-Benutzerhandbuch Seite 112 -<br />
Suchordnung fiir Files) um in den GenuB<br />
der erweiterten Funktionalitat zu kom<br />
men.<br />
Wirklich neu sind die Funktionen REC#<br />
und RECLEN#. Eigentlich sollten sie REC<br />
und RECLEN heiBen, aber daB muB HP<br />
wohl nicht gefallen haben: als ich die<br />
Antwort auf mein "permanent resource<br />
allocation request" erhielt, waren die beiden<br />
Funktionen einfach umbenannt.<br />
Mit REC# kann man erfahren, wieviele<br />
Records in einem File sind und welches<br />
die momentane Recordnummer ist. Im<br />
Gegensatz zu den Funktionen FILESZR<br />
und DRECORDS von HP kann REC#<br />
nicht nur auf einen Filetyp angewandt<br />
werden, sondern auf TEXT, DATA und<br />
SDATA-Files und REC# ist etwa dreimal<br />
so schnell wie FILESZR.<br />
RECLEN# kann ebenfalls auf diese Filetypen<br />
angewandt werden und liefert die<br />
Lange des langsten Records (bei TEXT-<br />
Files), die Lange des momentanen Re<br />
cords bzw. den im momentanen Record<br />
verbleibenden Platz (DATA-Files) und<br />
wenn man am Ende des Files angekommen<br />
ist "-1". Eine genaue Parameterbeschreibung<br />
ist der untenstehenden Ta<br />
belle zu entnehmen.<br />
I n der folgenden Tabelle sind alle Befehle<br />
ausCCDUTILaufgefiihrt. Beiden bereits<br />
an anderer Stelle beschriebenen Befehlen<br />
steht nureinHinweis auf denentsprechenden<br />
Artikel. Vor jedem Befehl sind in<br />
hexadezimaler Schreibweise die LEX-<br />
ID/Tokennummerdes Befehls aufgefuhrt.<br />
Optionale Parameter sind in eckigen<br />
Klammern aufgefuhrt. Numerische Para<br />
meter werden durch "#" und Stringparameter<br />
durch "$" dargestellt. Ist wahlweise<br />
beides moglich, so. ist dieses durch "#/<br />
SERIE 70<br />
$" dargestellt. Ich iiberlasse es dem<br />
geneigten Leser, sich Gedanken iiber<br />
die nicht benutzten Tokennummern zu<br />
machen.<br />
CCDUTIL ist jetzt 2842 Bytes groB. Ich<br />
habe deshalb darauf verzichtet, den<br />
Hexdump mit abzudrucken; wer ist denn<br />
schon so wahnsinnig, 6000 Ziffern abzutippen<br />
? Zusammen mit KEYPOLL ist<br />
unser LEX-File nun immerhin schon fast<br />
4k Bytes groB, etwa ein siebentel der<br />
GroBes des J PC-ROM's (hatten wir sieben<br />
aktive LEX-File-Programmierer, dann<br />
... - tja, wer weiB ?).<br />
Bei vielen Leuten sehe ich ein LEX-File<br />
namens CCDGP auf alien moglichen<br />
Disketten rumgeistern. Dieses ist eine<br />
uralte Vorversion von CCDUTIL, die ich<br />
auf der Mitgliedervollversammlung '86<br />
unter's Volkgebracht habe. Sie hat noch<br />
tausend Bugs (konnen auch zwei Oder<br />
drei mehr sein), verkehrte LEX-ID und<br />
Tokennummern und teilweise gleiche<br />
Befehle wie CCDUTIL, jedoch mit ande<br />
ren Namen. VergeBt am besten diesen<br />
File.<br />
F6/01 FTYPE$(#/$) (Kanalnummer/<br />
Filename)gibt den Filetyp eines Files in<br />
Stringform zuriick. Wird der angegebene<br />
File nicht gefunden, so wird ein Nullstring<br />
zuriickgegeben. Als Parameter wird eine<br />
Kanalnummer oder ein Filename erwartet.<br />
E1/D0DDELAY<br />
Siehe Prisma 4/88, Seite 7<br />
E1/D1 PDELAY<br />
Siehe Prisma 4/88, Seite 7<br />
E1/D2 SWDSP AEON/OFFUE<br />
Siehe Prisma 4/88, Seite 7<br />
E1/D3 SWPRT AEON/OFFUE<br />
Siehe Prisma 4/88, Seite 7<br />
E1/D4 DSP Siehe Prisma 4/88, Seite 7<br />
E1/D5 KBD Siehe Prisma 4/88, Seite 7<br />
E1/D6PRT Siehe Prisma 4/88, Seite 7<br />
E1/D7 SETSTS $ (Status)<br />
Siehe Prisma 3/89, Seite 24<br />
E1/D8 STS$(#) (Statusoption)<br />
Siehe Prisma 3/89, Seite 24<br />
E1/D9 FlLE$(#/$) (Kanalnummer/Filename/Massenspeicherkatalogeintrag)gibt<br />
den Katalogeintrag eines Files zuriick<br />
(ahnlich CAT$). Wird ein numerischer<br />
Parameter iibergeben, so wird dieser als<br />
Kanalnummer aufgef aBt. Ein Stringparameter<br />
wird, solange er nicht genau 32<br />
nnmnutprnlnh Deutsnhland e.V PRISMA 6/89 15