28.01.2013 Aufrufe

download PDF (41MB) - Mike Schilli

download PDF (41MB) - Mike Schilli

download PDF (41MB) - Mike Schilli

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!