›    ›    ›   WIR SCHREIBEN UNSER EIGENES  ›    ›   C O P Y P R O G R A M  ›   in Speed-Basic › Š                                    ˆ››››Heute heisst es also:››Wir schreiben unser eigenes Copy Pro-›gramm.››Das Programm soll wie ober schon er-›waehnt in Basic sein. Man hat sicher›schon oft erlebt, dass man mal schnell›ein Programm kopieren moechte. Dazu›moechte man das eingeladene Speed/Turbo›Basic aber nicht mit DOS verlassen,›da sich der Interpreter vom Dos nicht ›ohne Neuladen aufrufen laesst.›Deshalb ist es sinnvoll, eine "COPY"›in Basic zu haben.›Das Programm ist unter >SCOPY.WSB<›auf der Diskette gespeichert und ist›LISTbar.›Zur Bedienung:››Man muss fuer Source-Filespec den›Geraetenamen+filename angeben.›z.B.: "D:FILE.EXT"››Oder man tippt "*"+RETURN dann erhaelt›man die Directory von Laufwerk #1.››Hat man dann das Filespec eingegeben,›so versucht der Computer das Programm›in den Speicher zu laden.(Fehler-›meldungen werden entsprechend ausge-›geben.)››Nach erfolgreichem Laden kann man›entweder nur RETURN druecken, dann›wird das File unter demselben Filespec›gespeichert(hier sollte aber die DISK›gewechselt werden)›Oder man tippt ein neues Filespec ein.›Auch hier kann man mit "*" wieder die›Directory listen. ››Kommen wir aber nun zum eigentlichen›Programm:››Zunaechst wird ein moeglichst langer›String dimensioniert.(hier 32000 bytes)›Dann kommt der ganze Kram mit der Ein-›gabe des Filespec u.s.w.›Dann wird Kanal #3 fuer diesen filespec›geoeffnet.›Und nun kommt uns der BGET Befehl sehr›zu Hilfe:››Mit BGET #3,ADR(D$),MAX wird das File›in D-String geladen(Variable MAX ist›32000).››Nun muss man sich bewusst machen, dass›das File nicht groesser laenger als ›32000 bytes sein kann. Ist dies der ›Fall , so wird nach BGET kein Fehler›ausgegeben. Ist das File aber kleiner›(und das soll es ja sein), so wird›Error 136 ausgegeben. (136 bedeutet›End of File...heisst ja,dass das File›zuende ist)›Dieser Fehler wird natuerlich mit›dem TRAP Befehl abgefangen.›Ist der Fehler 136 ,so muss man jetzt›nur noch wissen, wie lang das File›ueberhaupt ist, das man geladen hat.››Die Ein-/Ausgabe erfolgt ueber sog.›IOCB's (Input/Output Control Block)›In diesen Blocks wird auch die Laenge›des zu ladenden, bzw. zu speichernden›Files angegeben. Der BGET Befehl hat›hier die Laenge 32000 angegeben.›Ist nun aber ein File kuerzer als›die angegebene Laenge ,wird der›Error 136 zurueckgegeben(an Basic) und›in den Addressen fuer die Laenge steht›nun, wieviel Bytes geladen wurden.›Die Addresse fuer Kanal 0 ist $348›(ICBLEN). Jeder Kanal hat 16 solcher›Control Bytes. Also muessen fuer Kanal3›zu $348 noch 3*16 Bytes addiert werden,›was am Anfang des Programms ja auch ›passiert.›››Dies ist nur eine kleine Demonstration,›wozu man die IOCB's benutzen kann. Wer›darueber mehr wissen moechte, der›moege dies dem Club irgendwie mitteilen.›››****************************************››