Sei sulla pagina 1di 45

********* Welcome to iDOC= - the international CBM documentation project!

The goal of iDOC= is to preserve (non-English) Commodore related documents in electronic text format that might otherwise cease to exist with the rapid advancement of computer technology and declining interest in 8-bit computers on the part of the general population. If you would like to help by converting Commodore related hardcopy documents to electronic texts please contact the manager of iDOC=, Peter Karlsson, at pk@abc.se. Extensive efforts were made to preserve the contents of the original document. However, certain portions, such as diagrams, program listings, and indexes may have been either altered or sacrificed due to the limitations of plain vanilla text. Diagrams may have been eliminated where ASCII-art was not feasible. Program listings may be missing display codes where substitutions were not possible. Tables of contents and indexes may have been changed from page number references to section number references. Please accept our apologies for these limitations, alterations, and possible omissions. Document names consists of a reasonably short unique title, followed by the document language. Two optional fields follow; first the document version (0 for incomplete texts, version 1 is usually unnumbered), and then the document source, if there are more than one. Finally, the document is given a .txt extension. The author(s) of the original document and members of iDOC= make no representations about the accuracy or suitability of this material for any purpose. This etext is provided "as-is". Please refer to the warranty of the original document, if any, that may included in this etext. No other warranties, express or implied, are made to you as to the etext or any medium it may be on. Neither the author(s) nor the members of iDOC= will assume liability for damages either from the direct or indirect use of this etext or from the distribution of or modification to this etext. Therefore if you read this document or use the information herein you do so at your own risk. ********* The iDOC= etext of the German VC1541 manual, converted to text by Andre Fachat <a.fachat@physik.tu-chemnitz.de> vc1541_de.txt, June 1999, etext #49. Note from the etexter: This is the German "VC1541 Floppy Disk Bedienungshandbuch" I got with my first VC1541. It basically is a VC1540 manual, with a new cover and an additional page explaining the UI+/- commands. It has been scanned, OCRd and post-edited by yours truely in June 1999. The file "handbuch.txt" is a plain text version. Some figures had to be left out because ASCII-graphics was not appropriate. The file "handbook.html" is an html version, with inline graphics (from the imgs subdirectory") and links to the test files (in the files subdirectory) as listed in the manual. Those programs should be run on a VIC-20, not on a C64. Andre Fachat Note from the iDOC= maintainer:

The HTML version is not included in this archive, but can be found at the iDOC= website. ********* Dieses Handbuch habe ich ca. 1983/84 mit meiner VC1541 bekommen. Die VC541 hat ein weies Gehuse wie der VC-20. Ich habe is 1999 gescannt und elektronisch aufbereitet. An manchen Stellen fehlt der Klammeraffe. Im Original ist der Klammeraffe von Hand geschrieben und wurde dort offensichtlich vergessen. Ich habe versucht, das Format so weit wie mglich wiederzugeben. Der Normale Text ist im Blocksatz gesetzt. Teile, die in dieser HTML-Datei als code erscheinen, sind CBM Drucker-Ausgabe. Die Programmlistings sind nicht gescannt, stattdessen habe ich die Test/Demo Programme von der Demodiskette genommen, das Programm dem Listing angepasst, und dann mit Hilfe des petcat Utilities ausgedruckt. Als Basis habe ich 1541-demo.1540024-02.d64.gz von ftp.funet.fi/pub/cbm benutzt. Meistens bestanden die nderungen aus Farbcodes, die in diesen Listings drin sind, in dem Archiv aber nicht. Die Farbcodes wurden wohl entfernt, da sie die Zeichenfarbe auf dunkelblau setzen - was auf dem VC-20 geht, auf dem C64 nicht, da dessen Hintergrund auch dunkelblau ist. Auch einige Zahlen in der Routine am Ende von RANDOM FILE sind anders. Chemnitz, den 5.6.1999, A. Fachat _________________________________________________________________ VC 1541 Floppy Disk Bedienungshandbuch [1]Frontcover _________________________________________________________________

VC-1541 Floppy Disk Bedienungshandbuch Commodore Computer _________________________________________________________________ VC-1540/VC-1541 Die Bedienung der Floppy VC-1541 stimmt mit derjenigen der VC-1540 in allen Punkten berein. Das Betriebssystem der VC-1541 enthlt jedoch zwei zustzliche Befehle, mit denen die Datenbertragungsrate verndert werden kann. In diesem Punkt unterscheidet sich nmlich der VC-20 vom C-64. Mit Hilfe der neuen Befehle ist es mglich, die Floppy wahlweise an einen der beiden Rechner anzupassen. Nach dem Einschalten ist die Floppy im "C-64-Modus". Um sie auf den VC-20 umzustellen, geben Sie bitte folgende Zeile ein (und drcken dann die RETURN-Taste): OPEN 15,8,15, "UI-": CLOSE 15 Um den"C-64-Modus" wiederherzustellen benutzen Sie folgende Sequenz: OPEN 15,8,15, "UI+": CLOSE 15 _________________________________________________________________

I N H A L T S V E R Z E I C H N I S

SEITE KAPITEL 1 Einleitung Allgemeine Informationen Gertebeschreibung Frontplatte Rckseite Die Diskette Aufstellungsort Diskettenbehandlung Auspacken der Floppy VC-1540 KAPITEL 2 Inbetriebnahme Anschlu der Floppy Einschalttest Das Einlegen der Diskette Funktionstest KAPITEL 3 Arbeiten mit dem Diskettenlaufwerk Die Block-Availability-Map (BAM) Das Disk-Operating-System (DOS) Floppy System-Befehle NEW INITIALIZE Die Directory VALIDATE COPY RENAME SCRATCH KAPITEL 4 Das Abspeichern und Laden von Programmen und Daten SAVE VERIFY LOAD OPEN CLOSE PRINT# INPUT# GET# 1 1 1 1 1 1 1 4 4

5 5 5 7 7

10 10 10 11 11 12 13 13 14 15 15

16 16 16 17 17 18 18 19 19

KAPITEL 5 Fortgeschrittenes Programmieren mit der Floppy 21 Das COMMODORE-Disk-Operating-System (DOS) 21 Die Direkt-Zugriffs-Befehle 21 BLOCK-READ 22 BLOCK-WRITE 22 BLOCK-EXECUTE 23 BUFFER-POINTER 23 BLOCK-ALLOCATE 23 BLOCK-FREE 24 _________________________________________________________________

"MEMORY"-Befehle Memory-Write Memory-Read Memory-Execute USER Die Datenstruktur auf der Diskette KAPITEL 6

24 24 24 24 25 26

Sequentielle Files Programmbeispiel: Sequentielle Files, KAPITEL 7 Der Direkt-Zugriff Progrann-Beispiel: Direkt-Zugriffs-Datei KAPITEL 8 Fehlermeldungen-Der "Joker" Lesen des Fehlerkanals Liste der Bedeutungen der Fehlernummern Liste der Fehlermeldungen und Beschreibung Der "Joker" ANHANG Gelistete Programme : DIR VIEW BAM DISPLAY T&S CHECK DISK PERFORMANCE TEST ABBILDUNGEN Abb.1 Frontplatte Abb.2 Rckseite Abb.3 Anschluschema der Floppy 1540 an den VC-20 und den Drucker VC-1515 Abb.4 Einlegen der Diskette Abb.5 Aufbau eines Diskettensektors Abb.6 Datenflu zwischen Rechner, Puffer und Floppy bei Direktzugriff

29 30

32 33

36 36 36 37 39 41 42 43 44 46 47

2 2 6 6 28 32

TABELLEN Tab.1 Technische Daten 3 Tab.2 Sprungtabelle 25 Tab.3 Belegung der Spuren mit Sektoren 26 Tab.4 Format der VC-1540-BAM 26 Tab.5 Vorspann (Header) der Directory 26 Tab.6 Format der Directory 27 Tab.7 Format eines Directory-Eintrags 27 Tab.8 Format eines sequentiellen Files 27 Tab.9 Format. eines Pogrammfiles 27 Tab.10 Zuordnung der Recordnmmern zu den Diskettenspuren 33 _________________________________________________________________

KAPITEL 1 : E I N L E I T U N G

ALLGEMEINE INFORMATION Durch den Erwerb der VC-1540 Single-Floppy haben Sie die Leistungsfhigkeit Ihres VC-Systems wesentlich erhht. Um dieses System voll ausnutzen zu knnen, sollten Sie die Programmiersprache BASIC hinreichend beherrschen und mit der Bedienung der VC-20Zentraleinheit vertraut sein.

GERTEBESCHREIBUNG Die VC-1540 ist ein intelligentes Einzeldiskettenlaufwerk, das zum Abspeichern groer Datenmengen geeignet ist. Es besteht zur

Hauptsache aus einem elektronisch geregelten Antrieb, SchreibLesekopf mit Steuerung und der Elektronik, die die Schreib- und Leseroutinen berwacht. Das Laufwerk wird an den seriellen Bus des VC-20 angeschlossen, der auch vom Drucker VC-1515 benutzt wird. Da es sich bei der VC-1540 um ein "intelligentes " Peripheriegert handelt, wird beim Betrieb der Floppy kein Arbeitsspeicher in der VC-20-Zentraleinheit belegt.

F r o n t p l a t t e Auf der Frontplatte des Gerts befindet sich ein Schlitz, in den die Diskette eingefhrt wird. Durch das Herunterdrcken der am Schlitz angebrachten Klappe wird die Diskette an die Laufwerksachse angekoppelt. Weiterhin sind zwei LEDS (LED = Light-Emitting-Diode = Leuchtdiode) auf der Prontplatte angebracht. Die grne LED auf der linken Seite zeigt an, da das Gert eingeschaltet ist. Die rote LED unter dem Diskettenschlitz leuchtet kontinuierlich, wenn die Floppy aktiv ist und blinkt bei Fehlfunktion.

R c k s e i t e Auf der Rckseite der Floppy befinden sich zwei parallel geschaltete serielle Ein/Ausgnge. Weiterhin ist dort der Netzschalter und die Sicherung angebracht.

D i e

D i s k e t t e

Als Diskette (auch. Floppy Disk o..) wird die Standard 5-1/4-Inch Diskette verwendet. Es mssen Disketten verwendet werden, die das SOFT-SEKTOR-FORMAT aufweisen.

A u f s t e l l u n g s o r t Das Diskettenlaufwerk sollte auf einer flachen vibrationsfreien Unterlage aufgestellt werden. Wichtig ist weiterhin eine staubfreie Umgebung, da eine Ansammlung von Staubpartikeln die Funktion des Gerts empfindlich stren kann.

1 _________________________________________________________________

[2] Frontplatte [3] Rckseite 2 _________________________________________________________________

TABELLE 1. Technische Daten der VC-1540 Single Floppy

SPEICHERUNG Totale Speicherkapazitt Sequentielle Files Relative Files (*) 174848 Bytes pro Diskette 168656 Bytes pro Diskette 167132 Bytes pro Diskette

Eintrge in die Directory Sektoren pro Spur Bytes pro Sektor Spuren Blcke

65535 Records pro File 144 pro Diskette 17 bis 21 256 35 683 (664 Blcke frei)

IC's: 6502 6522 (2) Puffer : Mikroprozessor I/O, Timer 2K RAM

2114 (4)

ABMESSUNGEN Hhe Breite Tiefe 97 mm 200 mm 374 mm

STROMVERSORGUNG Spannung Frequenz Leistungsaufnahme 100,120,220 oder 240 V 50 oder 60 Hz 25 Watt

SPEICHERMEDIUM Disketten Standard 5-1/4", einfache Schreibdichte

(*) Obwohl die VC-1540 relative Files verwalten kann, ist dies im Zusammenhang mit der VC-20-Zentraleinheit nicht ohne weiteres mglich. 3 _________________________________________________________________

B e h a n d l u n g

d e r

D i s k e t t e n

Gehen Sie mit den Disketten vorsichtig um. Wenn Sie die nachstehend aufgefhrten Regeln befolgen, schonen Sie Ihre Disketten und knnen sich jederseits auf Ihre gespeicherten Daten verlassen : 1. Stecken Sie die Diskette nach der Entnahme aus dem Laufwerk sofort in die Papierhlle. Bringen Sie die Diskette nicht in die Nhe starker magnetischer Felder, da hierdurch die Daten zerstrt werden knnen. Lassen Sie nie eine Diskette auf der Floppy oder auf Ihrem Computer liegen. Bentzen Sie zum Ausfllen des Etiketts auf Diskettenschutzhlle keinen Bleistift oder Kugelschreiber, sondern einen Filzschreiber. der

2.

3.

4.

5.

Setzen Sie die Disketten nie hohen Temperaturen oder der Sonne aus. Berhren Sie keinesfalls die Diskettenoberflche und versuchen Sie diese auch nicht zu reinigen. Schon der Verlust kleinster Oberflchenpartikel kann zm Verlust von Daten fhren. Vergewissern Sie sich beim Ein- und Ausschalten der Floppy, da sich keine Diskette im Laufwerk befindet.

6.

7.

D a s

A u s p a c k e n

d e r

V C - 1 5 4 0

berprfen Sie beim Auspacken des Gerts, ob die folgenden Teile in der Verpackung enthalten sind. 1. VC-1540 Single Floppy 2. TEST/DEMO-Diskette 3. Garantiekarte Sollten Sie ein Teil vermissen, so verstndigen Sie bitte unverzglich Ihren COMMODORE-Fachhndler. 4 _________________________________________________________________

KAPITEL 2 : I N B E T R I E B N A H M E

Bevor Sie mit der Floppy zu arbeiten affangen, sollten Sie sich vergewissern, da sich diese in einem einwandfreien Zustand befindet. Dazu mu nach dem Initialisieren der Funktionstest mit der beigefgten TEST/DEMO-Diskette durchgefhrt werden.

A n s c h l u

d e r

F l o p p y

a n

d e n

V C - 2 0

Das Kabel mit dem die Floppy an den VC-20 angeschlossen wird, ist dem Diskettenlaufwerk beigelegt. BEMERKUNG: Werden an den seriellen Bus des VC-20 durch "Verkettung" mehrere Gerte angeschlossen, so sollte die Floppy das erste Gert hinter dem Computer sein. Befolgen Sie beim Anschlu der Floppy an den Computer bitte Schritt fr Schritt die folgenden Anordnungen : 1. SCHRITT 2. SCHRITT Schalten Sie Thren Computer (und gegebenenfalls Ihre Modulbox) AUS. Stellen Sie das Diskettenlaufwerk mglichst nahe am Computer auf. Schlieen Sie die Floppy NOCH NICHT an das Netz an. Verbinden Sie den seriellen Ausgang am VC-20 und einen Ein/Ausgang der VC-1540 durch das beiliegende Kabel. Schlieen Sie Ihre Floppy an das Netz an, aber schalten Sie NOCH NICHT ein.

3. SCHRITT 4. SCHRITT

E i n s c h a l t t e s t

1. SCHRITT

ffnen Sie die Klappe des Diskettenlaufwerks und vergewissern Sie sich da keine Diskette darin ist.

2. SCHRITT 3. SCHRITT 4. SCHRITT

Schalten Sie die Mgdulbox EIN. Schalten Sie den VC-20 EIN. Schalten Sie die VC-1540 EIN. Zuerst werden beide LEDs auf der Frontplatte aufleuchten. Nach etwa 1 sec sollte die rote LED an der Verschluklappe ausgehen, whrend die grne LFD weiterhin leuchtet und damit anzeigt, da die Floppy betriebsbereit ist. Sollte die rote LED blinken, so schalten Sie bitte das Gert aus, warten etwa eine Minute und schalten wieder ein. Wenn sich auch daraufhin nicht der Nomalzustand (rote LED: AUS ; grne LED: AN) einstellt, wenden Sie sich bitte an Ihren COMMODORE--Hndler.

BEMERKUNG. Un auszuschlieen, da die Fehlfunktion der Floppy auf eine Wechselwirkung mit anderen Gerten zurckzufhren ist, die ebenfalls an den seriellen Bus angeschlossen sind (z.B. der Drucker VC-1515), schlieen Sie bitte diese Gerte whrend des Tests nicht an. 5 _________________________________________________________________

[4] Abb. 3 [5] Abb. 4 6 _________________________________________________________________

D a s

E i n l e g e n

d e r

D i s k e t t e

VORSICHT : SCHALTEN SIE DAS DISKETTENLAUFWERK NIE EIN (ODER AUS), WENN SICH EINE DISKETTE DARIN BEFINDET. 1. SCHRITT : Halten Sie die Diskette so, da sich der Schreibschutz (siehe Abb.4) auf der linken Seite befindet und schieben Sie sie in dieser Orientierung in den Schlitz des Laufwerks. Schieben Sie solange weiter, bis Sie einen deutlichen Widerstand spren und die Diskette einen festen Sitz hat. Drcken Sie nun die Klappe an der Laufwerksffnung nach unten, bis sie mit einem hrbaren Klicken einrastet. Die Diskette ist nun fest an das Laufwerk angekoppelt. Um die Diskette wieder zu entnehmen, drcken Sie die Klappe leicht nach hinten (Richtung Laufwerk) und schieben sie gleichzeitig nach oben. Die Diskette wird dann automatisch aus dem Laufwerk herausgeschoben, so da Sie sie leicht entnehmen knnen.

2. SCHRITT :

3. SCHRITT :

4. SCHRITT :

F u n k t i o n s t e s t

Wenn sich beim Einschalttest keine Fehler gezeigt haben, so knnen Sie jetzt mit dem Funktionstest weitermachen. Die Befehle die in diesem Abschnitt benutzt werden, werden spter detailliert erklrt. Alle Befehle mssen durch ein RETURN (Drcken der RFTURN-TASTE) abgeschlossen werden. BEMERKUNG: Die Befehle mssen genau in der Form eingetippt werden,

in der sie unten aufgefhrt sind. Ein "Space" ( = Leertaste ) zuviel oder zuwenig kann dazu fhren, da ein Befehl nicht interpretiert werden kann. Wenn durch Blinken der roten LED ein Fehler angezeigt wird, tippen Sie den letzten Befehl noch einmal ein. Wenn die LED daraufhin erlischt, haben Sie den Fehler erfolgreich korrigiert und knnen im Test fortfahren. 1. SCHRITT : 2. SCHRITT : Schieben Sie die DEMO-Diskette wie oben beschrieben in das Laufwerk ein. Tippen Sie ein : LOAD"PERFORMANCE TEST",8 (dann RETURN-Taste) Auf dem Bildschirm erscheint daraufhin-

SEARCHING FOR PERFORMANCE TEST LOADING READY. 7 _________________________________________________________________

3. SCHRITT : Tippen Sie ein : RUN (dann RETURN-Taste) Auf dem Bildschirm erscheint daraufhin:

---------------------PERFORMANCE TEST ---------------------INSERT SCRATCH DISKETTE IN DRIVE PRESS {REV}RETURN{RVO} WHEN READY DISK NEW COMMAND WAIT ABOUT 80 SECONDS

Die Floppy fordert Sie auf, eine andere Diskette in das Laufwerk einzuschieben. Benutzen Sie eine neue Diskette, bzw. eine, die keine fr Sie wertvollen Informationen enthlt, da sie durch das Funktionstest-Programm "reformatiert" wird. Alle Daten, die auf einer Diskette gespeichert sind gehen durch einen solchen Proze verloren. Das Funktionstest-Programm gibt der Diskette den Namen "TEST DISK". Sie karm mit Programmen oder Daten beschrieben werden. Sie legen also die neue Diskette in das Laufwerk ein und drcken die RETURN-Taste. Als erstes wird die Diskette "formatiert". Eine fehlerfreie Durchfhrung der Formatierung wird angezeigt durch:

0 OK 0 0 DRIVE PASS MECANICAL TEST

Der Test wird nun automatisch weiter durchgefhrt und der fehlerfreie Verlauf wird an ezeigt durch:

0 OK 0 0 WRITING DATA 0 OK 0 CLOSE WRITE DATA 0 OK 0 OPEN READ FILE 0 OK 0 READING DATA 0 OK 0 SCRATCH FILE 1 FILE CRATCHED 1 0 0 0 0 0 S

WRITE TRACK 35 0 OK 0 0

8 _________________________________________________________________

WRITE TRACK 1 0 OK 0 0 READ TRACK 35 0 OK 0 0 READ TRACK 1 O OK 0 0 UNIT HAS PASSED PEFORMANCE TEST! PULL DISKETTE FROM DRIVE BEFORE TURNING POWER OFF

4. SCHRITT : Entnehmen Sie nun die Diskette und stecken Sie sie zurck in die Staubschutzhlle. 5. SCHRITT : Wenn in der letzten Phase des Tests irgendwelche Probleme aufgetreten sind, so gehen Sie zurck zum 1.Schritt und wiederholen den gesamten Vorgang. Sollten mehrere Versuche nicht zum Erfolg fhren, so setzen Sie sich bitte mit Ihrem COMMODORE-Hndler in Verbindung. 9 _________________________________________________________________

KAPITEL 3 : ARBEITEN MIT DEM DISKETTENLAUFWERK

Die Steuerung der Floppy erfolgt ber den VC-20 in folgender Weise: * BASIC-Kommandos von der Tastatur des VC-20 * BASIC-Kommandos in Programmen * Spezielle Disketten-Kommandos

Alle drei Methoden sollen in diesem Kapitel beschrieben werden. Zun besseren Verstndnis dieses Kapitels sollten Sie ber folgende Punkte Bescheid wissen: 1. Bedienung der VC-20-Zentraleinheit 2. Elementares Programmieren in BASIC 3. ffnen und schlieen von Files Als erstes sollen zwei Begriffe erlutert werden, die wichtig fr das Verstndnis der Methode sind, mit der von Commodore-Diskettenlaufwerke Daten verwalten. Es handelt sich hierbei un die "BlockAvailability-Map" (BAM = Verzeichnis der verfgbaren Blcke) und das "Disk Operating System" (DOS = Betriebssystem).

D i e

B l o c k

A v a i l a b i l i t y

M a p

( B A M )

Die BAM enthlt ein Verzeichnis des freien und belegten Speicherplatzes der Diskette. Wenn das System Information auf einer Diskette speichern will, so wird automatisch die BAM vom DOS abgefragt, ob und wieviel Speicherplatz noch frei ist. Im Falle einer Speicherung wird die BAM anhand der neuen Werte korrigiert, d.h. der von den neuen Daten bentigte Speicherplatz wird als belegt gekennzeichnet. Wird jedoch bei der Abfrage festgestellt, da die zur Speicherung vorgesehene Datenmenge zu gro ist, so wird eine Fehlermeldung ausgegeben. Die BAM wird beim Formatieren einer Diskette erstellt und beim Initialisieren der Diskette in den DOS-Speicher geschrieben. Die BAM ist auf der Diskette auf Spur 18, Sektor 0 gespeichert und belegt einen Speicherplatz von 128 Bytes. Alle die BAM betreffenden nderungen werden zuerst im DOS-Speicher (in, der Floppy) registriert und beim SAVEen (Abspeichern) eines Programms bzw. beim CLOSEn (Schlieen) eines SEQentiellen Files auf die Disketten-BAM geschrieben.

D a s D i s k 0 p e r a t i n g S y s t e m ( D 0 S Das DOS verwaltet den Austausch von Informationen zwischen den Kontrollorganen der Floppy und dem Computer. So whlt das DOS z.B. die Kanle bei Ein/Ausgabeoperationen, sucht auf den entsprecheneden Befehl hin die Directory (das "Inhaltsverzeichnis" der Diskette), lscht und kopiert Files. 10 _________________________________________________________________

F l o p p y

S y s t e m b e f e h l e

Die folgenden Befehle werden beim File-"Handling" und der Verwaltung der Diskette verwendet BEFEHL FUNKTION

NEW INITIALIZE Disketten-Ebene LOAD"$"

Formatiert die Diskette Initialisiert die Diskette Liest die Directory

VALIDATE

Rekonstruiert die BAM

COPY

Kopiert Files (ermglicht auch das Verknpfen von Files) Umbenennung eines Files Lschen eines Files

File-Ebene

RENAME SCRATCH

N E W Bevor Sie mit einer neuen Diskette arbeiten knnen, mssen Sie sie erst mit NEW formatieren. Dazu wird die Struktur, in der die Daten auf die Diskette gespeichert werden, sowie der Name und der IDCode, mit dem die Diskette von der Floppy identifiziert wird, auf die Diskette geschrieben. NEW organisiert die Diskette in Spuren (Tracks) und Sektoren und legt die BAM an. Der Befehl NEW kann durch N abgekrzt werden. BEMERKUNG: Alle in diesem Kapitel behandelten Befehle werden der Floppy unter Verwendung eines PRINT#-Befehls bermittelt. Vor der Ausgabe dieses Befehls mu mit OPEN1,8,15 ein File (in diesem Fall das File Nr.1) erffnet werden. Sie knnen dann mit PRINT#1,"Befehlsstring" den Systembefehl an die Floppy bermitteln ( 1: logische Filenummer, die innerhalb der Grenzen 1 bis 127 frei gewhlt werden kann, 8: Gerteadresse der Floppy, 15: Sekundradresse). Sollte beim ffnen des Files die Fehlermeldung ? FILE OPEN ERROR erscheinen, so wurde vorher das File Numer 1 nicht ordnungsgem geschlossen, was durch die Eingabe CLOSE 1 nachgeholt werden mu. Der NEW-Befehl hat lfn dn xx das Format: PRINT#lfn,"N:dn,xx"

Logische Filenummer Name der Diskette (max. 16 Zeichen) Ein zwei Zeichen langes Identifizierungsmerkmal (ID)

11 _________________________________________________________________

Der NEW-Befehl (mit ID) wird bei neuen Disketten, oder solchen, die reformatiert werden sollen, angewendet. Bei bereits formatierten Disketten kann der NEW-Befehl ohne ID angewendet werden. Hierbei wird nur die Directory gelscht und in der BAM alle Blocks als nicht belegt gekennzeichnet. Der NEW-Befehl ohne ID braucht erheblich weniger Zeit als der mit Angabe der ID. 1. BEISPIEL : OPEN15,8,15 PRINT#15,"N:TESTDISK, 88" Diese Befehle ffnen mit der Sekundradresse 15 den Befehls- und Fehlerkanal zum Diskettenlaufwerk. Eine Diskette wird formatiert, und mit dem Namen TESTDISK und der Identifikation 88 versehen. Man kann die beiden Befehle auch in einem zusamenfassen : 2. BEISPIEL : OPEN15,8,15,"N:TESTDISK,88"

Soll beim reformatieren einer Diskette nur der Name, nicht aber die ID gendert werden, so lt man die die ID einfach weg: 3. BEISPIEL : OPEN15,8,15,"N:NEUE TESTDISK" Die Diskette bekommt den Namen NEUE TESTDISK zugeordnet und die Directory und die BAM werden gelscht. Dieses abgekrzte Verfahren funktioniert jedoch nur bei einer bereits formatierten Diskette.

I N I T I A L I Z E

Bei der Initialisierung wird die Disketten-BAM in den Speicher des Diskettenlaufwerks geschrieben. Eine fehlerhafte Initialisierung fhrt zu der Fehlermeldung DISK ID MISMATCH ERROR und unter Umstnden zu Datenverlust. Die Floppy initialisiert die neu eingelegte Diskette selbstttig, wenn sie sich in der ID von der vorhergehenden Diskette unterscheidet, da die Disketten an Hand der ID von der Floppy identifiziert werden. Wenn alle Disketten eine unterschiedliche ID besitzen brauchen Sie also nie "von Hand" zu initialisieren. Der Befehl INITIALIZE kann durch I abgekrzt werden. Das Format des Initialisierungbefehls ist PRINT#lfn,"INITIALIZE" lfn : logische Filenummer BEISPIEL : OPEN15,8,15 PRINT15,"I"

Sie knnen beide Befehle zu einem zusammenfassen: OPEN15,8,15, "I" 12 _________________________________________________________________

D i e

D i r e c t o r y

Die Directory einer Diskette enthlt folgende Informationen1.) Diskettennamen 4.) Belegte Blocks 7.) Freie Blocks 2.) Disketten ID 5.) Filenamen 3.) Nr. der DOS Version 6.) Filetyp

Das Laden der Directory in den Rechner geschieht durch die Eingabe von LOAD"$",8 mit nachfolgendem (RETURN). Beachten Sie bitte, da hierdurch ein im Rechnerspeicher befindliches Programm zerstrt wird. Der Inhalt der Directory wird nach Eingabe des Befehls LIST

mit nachfolgendem (RETURN) auf dem Bildschirm sichtbar gemacht. Es ist sinnvoll, die Diskette zusammen mit der ausgedruckten Directory aufzubewahren. Die Ausgabe der Directory auf einen Drucker geschieht am bequemsten mit der untenstehenden Befehlsfolge: LOAD"$",8 Die Directory wird in den Arbeitsspeicher des Rechners geladen Ein File mit der Filenummer 4 wird erffnet und der Gertenumer 4 zugeordnet (in den meisten Fllen besitzt der Drucker diese Gertenumer) Alle Daten, die normalerweise auf den Bildschirm ausgegeben werden, werden nun auf das Peripheriegert umgelenkt, das der Filenummer 4 zugeordnet ist (in unserem Fall also auf den Drucker) Die Directory wird ausgedruckt Der CMD-Befehl wird aufgehoben Das File 4 wird geschlossen

OPEN4,4

CMD4

LIST PRINT#4 CLOSE4

V A L I D A T E

Bei der Ausfhrung des VALIDATE-Befehls werden die Inhalte aller auf einer Diskette gespeicherten Files Block fr Block gelesen. Blocks, die als belegt gekennzeichnet, aber nicht mit einem Filenamen verknpft sind, werden fr das Abspeichern neuer Daten freigegeben. Weiterhin werden Files, die nicht ordnungsgem geschlossen wurden aus der Directory gelscht. Wird der VALIDATE-Befehl ordnungsgem durchgefhrt, so wird eine 13 _________________________________________________________________

neue BAM erzeugt und auf der Diskette abgespeichert. Bei Anzeige eines READ ERROR wird der Vorgang abgebrochen und die Diskettebleibt unverndert. Wird in einem solchen Fall mit der Diskette weitergearbeitet, so mu sie neu initialisiert werden. Der VALIDATE-Befehl hat das Format: PRINT#fn,"VALIDATE" Bemerkung: VALIDATE kann durch V abgekrzt werden. BEISPIEL: OPEN1,8,15 PRINT#1, "V" Sie knnen die beiden Befehle zu einem zusammenfassen und verkrzt schreiben: OPEN1,8,15,"V"

C O P Y

Mit Hilfe des COPY-Befehls knnen Sie ein File (unter einem beliebigen Nanen) innerhalb einer Diskette kopieren. Sie knnen den Befehl auch benutzen, un aus mehreren sequentiellen Datenfiles (maximale Anzahl: 4) ein neues zu erzeugen. Der COPY-Befehl kann durch C abgekrzt werden. Das Format des COPY-Befehls lautet beim kopieren eines Files: PRINT#lfn, "C:nfn=afn" Mchte man mehrere Files zu einem zusammenfassen, so benutzt man das Format PRINT#lfn,"C:nfn=afn1,afn2,..." lfn logische Filenumer nfn neuer Filename afn alter Filename afn1, afn2 .... : alte Filenamen BEISPIEL : BEISPIEL : PRINT#1,"C:NEUFILE=ALTFILE" PRINT#1,"C:SUMMENFILE=FILE1,FILE2,FILE3"

Hat man vor, mehrere Filles zu einem zusamenzufassen, so mu man kurze Filenamen whlen, da ein Befehlsstring maximal 40 Zeichen lang sein darf. 14 _________________________________________________________________

R E N A M E

Der RENAME-Befehl belegt ein bereits existierendes File mit einem neuen Namen. RENAME kann im Befehlsstring durch R abgekrzt werden. Der Befehl hat das Format: PRINT#lfn,"R:nfn=afn" lfn : logische Filenummer nfn : neuer Filename fn : alter Filename Bemerkung: Ein File, das mit dem RENAME-Befehl umbenannt wird, mu vorher mit dem CLOSE-Befehl geschlossen werden.

S C R A T C H Mit dem SCRATCH-Befehl lassen sich Files lschen. Man kann einzelne, einige, oder alle Files einer Diskette in einem Arbeitsgang lschen. Die Abkrzung von SCRATCH ist S. Der Befehl hat das Format: PRINT#lfn,"S:fn1,fn2,..." lfn : logische Filenumer fn1,fn2,... : Namen der zu lschenden Files

BEISPIEL: PRINT#1,"S:FILE1,FILE2,FILE3" Die 3 Files: FILE1, FILE2 und FILE3 werden gelscht. Sie knnen dasselbe erreichen, wenn Sie eingeben: BEISPIEL: PRINT#1,"S:FILE*" Wenn Sie alle Files einer Diskette lschen wollen, so mssen Sie folgenden Befehlsstring verwenden: BEISPIEL: PRINT#1,"S:*"

Bemerkung: Nheres ber die Verwendung des Zeichens "*" des sogenannten "Jokers" erfahren Sie im Kapitel 8. 15 _________________________________________________________________

4.KAPITEL : DAS ABSPEICHERN UND LADEN VON PROGRAMMEN UND DATEN Folgende BASIC-Befehle sind wichtig fr den Austausch von Programmen und Daten zwischen dem VC-20 und der Floppy: OPENlfn, 8, sa, "fn,ft,mode" CLOSElfn LOAD"fn",8 SAVE"fn",8 lfn : fn : 8 : sa : ft : mode: VERIFY"fn",8 PRINTlfn GET#lfn INPUT#lfn

logische Filenumner (Zahl zwischen 1 und 255) (*) Filename (maximal 16 Zeichen lang) Gerteadresse der Floppy (**) Sekundradresse Filetyp ( SEQ, USR oder PRG ) READ (Abk.:R) Lesen ; WRITE (Abk.:W) Schreiben APPEND (Abk.:A) Anhngen

(*) : Bei der Anwendung des PRINT#-Befehls ist darauf zu achten, ob die logische Filenummer grer oder kleiner als 128 ist. Siehe dazu den Abschnitt ber den PRINT#-Befehl. (**): Die Gerteadresse der Floppy wurde werksseitig auf 8 eingestellt; sie kann durch Ihren COMMODORE-Vertragshndler in 9, 10 oder 11 umgendert werden.

S A V E

Anwendung: Abspeichern (Saven) eines Programms vom Arbeitsspeicher des Rechners auf die Diskette. BEISPIEL : SAVE"TESTPROGRAMM",8 Das im Arbeitsspeicher des Rechners stehende Programm wird unter dem Namen TESTPROGRAMM auf die Diskette geschrieben. Haben Sie ein Programm abgendert und wollen das alte Programm unter Beibehaltung des Namens berschreiben, so mssen Sie vor den Filenamen das Zeichen "@" ( engl. "at sign" aber auch "Klammeraffe" genannt) setzen. BEISPIEL : SAVE"@:TESTPROGRAMM",8

V E R I F Y

Anwendung: Das im Arbeitsspeicher des Rechners stehende Programm wird Byte fr Byte mit dem im VERIFY-Befehl angefhrten Progrmmfile verglichen. Jedesmal nach dem Abspeichern eines Programms sollte ein VERIFY durchgefhrt werden. BEISPIEL : VFRIFY"TESTPROGRAMM",8 16 _________________________________________________________________

Geben Sie statt des Filenamens das Zeichen "*" ein, so wird das zuletzt abgespeicherte Programm berprft.

LOAD Mit dem LOAD-Befehl kann man Programme von der Diskette in den Rechnerspeicher laden. Der LOAD-Befehl hat das Format: LOAD"fn",8 fn : Filename 8 : Gerteadresse BEISPIEL : LOAD"TESTPROGRAMM",8

OPEN

Sie haben im letzten Kapitel den OPEN-Befehl schon im Zusammenhang mit anderen Anweisungen kennengelernt, die insbesondere der Behandlung von Programmfiles dienen. Im vorliegenden Abschnitt geht es in der Hauptsache un Datenfiles, d.h. an das Schreiben von Daten auf Diskette und das Wiedereinlesen in den Rechnerspeicher. Der OPEN-Befehl stellt den Zusammenhang zwischen einer logischen Filenummer und einer Gerteadresse her. Weiterhin werden Sekundradressen spezifiziert und Filenamen, Filetyp und Modus (Schreiben oder Lesen) festgelegt. Der OPEN-Befehl hat das Format: OPENlfn,8,sa,"fn,ft,modus" lfn : Logische Filenammer 8 : Gerteadresse sa : Sekundradresse (eine Zahl zwischen 2 und 14) (*) fn : Filename ft : Filetyp SEQ bzw.S (Sequentiell); USR bzw.U-(User) mode: READ bzw. R (lesen) ; WRITE bzw. W (schreiben) APPEND bzw. A (anhngen von Daten)

(*)

Die Sekundradresse 15 ffnet den Befehls- und Fehlerkanal.

Das fhrt dazu, da der String, der einem solchen OPEN-Befehl folgt, bzw. dem zugehrigen PRINT#-Befehl, als Befehl interpretiert wird. Die Sekundradressen 0 und 1 sind fr das Laden (LOAD) und Speichern (SAVE) von Programmen bestimmt. BEISPIELE : OPEN2,8,2,"TEXTFILE,S,W" OPEN2,8,6,"DATEN,S,A" OPEN3,8,5,"DATENFILE,U,R" 17 _________________________________________________________________

Wollen Sie den Inhalt eines Files berschreiben, den Filenamen jedoch beibehalten, so mssen Sie den "Klammeraffen" ( ) verwenden: BEISPIEL : OPEN4,8,7," :NEUFILE,S,R" Es kann manchmal von Vorteil sein, den Stringausdruck im OPENBefehl bzw. Teile davon durch eine Stringvariable darzustellen. BEISPIELE : BS$="MESSDATEN,S,W" OPEN,1,8,14,BS$ BS$="MITGLIEDER" OPEN,3,8,9,BS$+",S,R"

CLOSE

Der CLOSE-Befehl schliet Files, die mit OPEN geffnet wurden. Sein Format ist: CLOSElfn lfn : Logische Filenummer Um Datenverlust zu vermeiden, und um stets die grtmgliche Anzahl von Files zur Verfgung zu haben (max. 10 Files drfen gleichzeitig geffnet sein), sollte man Files schlieen, nachdem sie nicht mehrbentigt werden. Bemerkung : Eine spezielle Bedeutung hat das Schlieen eines mit der Sekundradresse 15 erffneten Files. Hierdurch werden nmlich alle Datenkanle einer Floppy auf einen Schlag geschlossen.

PRINT#

Mit dem PRINT#-Befehl lassen sich Daten (siehe auch den Abschnitt ber SEQuentielle Files) oder Systembefehle bermitteln. Der PRINT#-Befehl hat das Format: PRINT#lfn, "Daten" lfn : logische Filenunner (*) Daten : Befehle, Variablen (numerisch oder Strings)

(*)

Bei Verwendung des PRINF#-Befehls zur Datenbertragung ist zu bercksichtigen, da bei Verwendung einer logischen Filenummer zwischen 1 und 127 ein "carriage return" (CR) und bei Verwendung einer Filenunmer zwischen 128 und 255 ein CR zusammen mit einem "line feed" (LF) gesendet wird. Da bereits ein CR als Beendigung des PRINT#-Befehls interpretiert wird, wird das LF flschlicherweise in den nchsten Datensatz bernommen.Abhilfe lt sich dadurch schaffen, da man den Befehl mit einem Semikolon (;) abschliet, dadurch das CRLF unter18 _________________________________________________________________

drckt und in Form eines CHR$(13) ein "knstliches" CR hinterherschickt. BEISPIEL : PRINT#137,"PER ASPERA AD ASTRA";CHR$(13);

INPUT#

Mit dem INPUP#-Befehl lt sich Information von einem Peripheriegert, wie z.B. der Floppy in den Speicher des Rechners bermitteln. Er ist nur im Rahmen eines Programms (nicht im DirektModus) verwendbar. Der INPUT#-Befehl hat das Format: INPUT#lfn,A$ oder lfn A$ A INPUT#lfn,A

: logische Filenumer : Stringvariable : numerische Variable

Mit dem INPUT#-Befehl knnen auch mehrere Variable zugleich in den Rechnerspeicher eingelesen werden: INPUT#Ifn,A$,B$,...,A,B,.. Strings bzw. numerische Variable, die mit Hilfe dieses Befehls von der Floppy gelesen werden, knnen nur dann als getrennt erkannt werden, wenn sie auf der Floppy durch "carriage returns" getrennt sind. BEISPIEL : 50 INPUT#2,A Liest das nchste Datum (das numerisch sein mu) und ordnet es der Variablen A zu. BEISPIEL : 10 INPUT#7,A$ Liest das nchste Datum und ordnet es der Stringvariablen A$ zu BEISPIEL : 40 INPUT#3,B,C$ Liest die nchsten beiden Daten und ordnet sie der numerischen Variablen B und dem String C$ zu. Der INPUT-Befehl akzeptiert nur Strings, die eine Lnge von maximal 88 Zeichen aufweisen. Im Falle lngerer Strings mu der GET#-Befehl angewendet werden.

GET#

Der GET#-Befehl dient dazu, Strings Byte fr Byte von einem Peripheriegert wie z.B. der Floppy in den Rechnerspeicher einzulegen. GET# kann nur im Rahmen eines Programms angewendet werden. Der Befehl hat das Format: 19 _________________________________________________________________

GET#lfn,A$ GET#Ifn,A lfn : logische Filenunner A$ : Stringvariable A : numerische Variable GET# kann benutzt werden, um Strings, die lngerals 88 Zeichen und damit zu lang fr den INPUF#-Befehl sind, einzulesen. Der folgende Programteil ist ein Beispiel fr eine Unterroutine, mit der es mglich ist, einen String mit einer Lnge von 254 Zeichen in den Rechnerspeicher einzulegen, wo er der Stringvariablen AA$ zugeordnet wird:

10 20 30 40 50 60 70

OPEN1,8,5, "FILE,S,R" AA$="" FORI=1to254 GET#1,A$:IFA$=""THENA$=CMR$(0) AA$=AA$+A$ NEXT CWSE1

20 _________________________________________________________________

KAPITEL 5 : FORTGESCHRITTENES PROGRAMMIEREN MIT DER FLOPPY

D a s

C O M M O D O R E

D i s k

O p e r a t i n g

S y s t e m

( D O S ) Das File-System wird durch Kanle organisiert, die mit Hilfe des OPEN-Statements geffnet werden. Das DOS reserviert je nach Filetyp ein oder zwei Pufferspeicher fr jeden Kanal. Steht kein Pufferbereich mehr zur Verfgung, so wird die Fehlermeldung: NO CHANNEL ausgegeben. Drei der acht Pufferspeicher werden vom DOS von vornherein belegt fr die Block Availability Map (BAM), die Befehlskanal Ein/Ausgabe und die "Job-Schlange" des Disk-Controllers, die fr eine optimale Abwicklung der verschiedenen Ein/Ausgabeoperationen sorgt. Die im OPEN-Befehl angegebene Sekundradresse wird vom DOS zur Kennzeichnung der Kanle verwendet. Die Gre der Sekundradresse wird jedoch nur als Identifizierungsmerkmal eines bestimmten Kanals verwendet und mu nicht mit der internen Kanalnummer identisch sein. Bei Eingabe des LOAD- bzw. SAVE-Befehls werden als Sekundradressen automatisch 0 bzw. 1 gewhlt. Die verbleibenden Sekundradressen 2 bis 14 knnen dazu verwendet werden, bis zu 5 weitere Datenkanle zu ffnen.

D i e

D i r e k t - Z u g r i f f s - B e f e h l e

Bei den nun folgenden Befehlen wird die Organisation der Daten auf der Diskette nicht vom DOS bernamen, sondern kann vom Anwender selbst bestimmt werden. Voraussetzung fr eine sachgeme Anwendung dieser Befehle ist die Kenntnis des Diskettenaufbaus, der am Ende dieses Kapitels detailliert besprochen wird. Alle nachstehend aufgefhrten Befehle werden nach Erffnung eines Files mit der Sekundradresse 15 durch einen PRINT#-Befehl bermittelt: Befehl BLOCK-READ BLOCK-WRITE BLOCK-EXECUIE BUFFER-POINTER BLOCK-ALLOCATE BLOCK-FREE memory-Write (*) memory-read (*) memory-execute(*) USER Abkrzung B-R B-W B-E B-P B-A B-F M-W M-R M-E U Format "B-R:"ch,0,t,s "B-W:"ch,0,t,s "B-E:"ch,0,t,s "B-P:"ch,p "B-A:"0,t,s "B-F:"0,t,s "M-W"adl/adh/nc/data 'M-R"adl/adh "M-E"adl/adh "Ui:param"

(*): Whrend die drei 'memory"-Befehle n u r in der abgekrzten Form verwendet werden drfen, kann man bei allen anderen Befehlen sowohl die abgekrzte wie auch die in der Spalte "Befehl" angegebene ausgeschriebene Form verwenden. 21 _________________________________________________________________

Die Parameter in den Formatanweisungen haben folgende Bedeutungen: ch : Kanalnummer im DOS, die identisch mit der Sekundradresse im OPEN-Befehl ist 0 : Nummer des Floppy-Laufwerks t : Nummer der Spur ("track") auf der Diskette (eine Zahl zwischen 1 und 35) s : Nummer des Sektors auf der Diskette (je nach Spur eine Zahl zwischen 0 und 20; siehe dazu Tabelle 4) p : Position des Buffer-Pointers adl : Low Byte der Adresse adh : High Byte der Adresse nc : Anzahl der Zeichen (zwischen 1 und 34) data : Daten in hexadezimaler Darstellung. Die Daten werden byteweise mit Hilfe der CHR$Funktion dargestellt, d.h.mit CHR$(160) wird hexadezimal AO bermittelt. i : Index der User-Sprung-Tabelle param: Parameter, die mit dem USER-Befehl verknpft sind. Die Parameter knnen wahlweise durch ein Komma (,) oder ein Semikolon (;) getrennt werden. In den nachfolgenden Beispielen wird das Semikolon benutzt.

BLOCK-READ

Dieser Befehl erlaubt direkten Zugriff zu jedem Datenblock auf der Diskette. Zusammen mit anderen Direkt-Zugriffs-Befehlen kam so ein File-System aufgebaut werden, in dem jeder beliebige Block direkt angesprochen wird. Der B-R-Befehl liest einen Zeiger (Pointer), der in der 0-Position eines jeden Blocks steht und der auf das letzte zu lesende Zeichen zeigt. Nachdem der Block bis zu dieser Position (durch einen GET#- oder INPUT#-Befehl) gelesen wurde, wird ein "End-Or-Identify" (EOI) an den Rechner gesendet. Hierdurch wird der INPUT#-Befehl abgeschlossen und die Status-Variable auf 64 gesetzt. BEISPIEL : "B-R: "5;0;18;0 Der Datenblock von Spur 18, Sektor 0 wird in den zu Kanal 5 gehrenden Puffer eingelesen. Erffnet man nun ein File unter Verwendung der Sekundradresse 5, so kann man die Daten mit GET# oder INPUT# in den Rechnerspeicher einlesen.

BLOCK-WRITE Bei der Ausfhrung dieses Befehls wird der momentane Puffer-Zeiger (Buffer-Pointer) als Zeiger auf das letzte Zeichen interpretiert und in die 0-Position des Puffers geschrieben. Daraufhin wird der Pufferinhalt in den spezifizierten Block auf die Diskette geschrieben. Der Puffer-Zeiger zeigt nach Ausfhrung des Befehls wieder auf die Position 1. 22 _________________________________________________________________

BEISPIEL :

"B-W:"7;0;35;10 Der Inhalt des zu Kanal 7 gehrenden Pufferspeichers wird in den Block von Spur 35, Sektor 10 geschrieben.

BLOCK-EXECUTE Dieser Befehl ldt Programm-Routinen von der Diskette in den Floppy-Speicher und fhrt sie nach Abschlu des Ladens aus. Das Programm mu mit einer RTS-Anweisung (Return-From-Subroutine) abgeschlossen werden. BEISPIEL : "B-E:"6;0;1;10 Ldt den Datenblock von Spur 1, Sektor 10 in den zu Kanal 6 gehrenden Puffer und fhrt die in den Daten enthaltenen Anweisungen aus.

BUFFER-POINTER Mit diesem Befehl lsst sich der Wert des Puffer-Zeigers (BufferPointers) verndern. Auf diese Weise ist es mglich, einen Block in Bereiche zu unterteilen, auf die beliebig zugegriffen werden kann. BEISPIEL : "B-P-"2,1 Der Zeiger des zu Kanal 2 gehrenden Puffers wird auf den Beginn des Speicherbereichs gesetzt.

BLOCK-ALLOCATE Mit diesem Befehl knnen in der BAM (im DOS-Speicher) Blocks als belegt gekennzeichnet werden. Beim Schlieen eines Schreib-Files wird dieser Eintrag in die Disketten-BAM bernommen. BEISPIEL : "B-A:"0;10;0 Der Block auf Spur 10, Sektor 0 soll als belegt gekennzeichnet werden. Wenn ein Block markiert werden soll, der schon vorher als belegt gekennzeichnet wurde, so wird durch Erhhen von Spur- und Sektornummer der nchste freie Block aufgesucht. Die Position des so gefundenen Blocks kann zusammen mit der Fehlermeldung: NO BLOCK ber den Fehlerkanal 15 ausgelesen werden. Zu diesem Zweck mu bei Anwendung des B-A-Befehls stets ein File mit der Sekundradresse 15 geffnet werden. Mit INPUT#lfn,FN,FM$,FT,FS knnen dann Spur (FT) und Sektor (FS) des nchsten frei verfgbaren Blocks ausgelesen werden. Ist kein freier Block mehr verfgbar, so werden FT, FS als 0,0 ausgegeben. 23 _________________________________________________________________

BLOCK-FREE Dieser Befehl hat den entgegengesetzten Effekt wie der B-A-Befehl. Ein vorher in der BAM als belegt gekennzeichneter Block wird freigegeben. BEISPIEL : "B-F:"0;9;20 Der Block in Spur 9, Sektor 20 wird als frei gekennzeichnet.

"MEMORY"-Befehle Die drei MEMORY-Befehle arbeiten byte-orientiert, so da man sie im Zusammenhang mit Maschinenprogrammen verwenden kann. Wenn man im Rahmen eines BASIC-Prograuns mit den MEMORY-Befehlen arbeiten will, mu man die einzelnen Bytes mit Hilfe der CHR$-Funktion bertragen. Es drfen nur die Abkrzungen M-R, M-W und M-E benutzt werden; weder das Ausschreiben der Befehlsnamen noch die Verwendung des Doppelpunkts (:) ist zugelassen.

Memory-Write Der M-W-Befehl erlaubt direkten Zugriff zum DOS-Speicher. ProgrammRoutinen knnen geladen und mit dem M-E oder dem USER-Befehl gestartet werden. Bei jeder Anwendung des Befehl knnen bis zu 34 Bytes bertragen werden. BEISPIEL : "M-W"CHR$(00)CHR$(7)CHR$(3)CHR$(32)CHR$(0)CHR$(17) Drei Bytes werden in die Speicheradressen $0700, $0701, $0702 (hexadezimal) (dezimal 1792, 1793, 1794) geschrieben.

Memory-Read Mit diesem Befehl kann das Byte gelesen werden, dessen Adresse im Befehlsstring steht. Es knnen sowohl Variable aus dem DOS, wie auch aus den Puffern ausgelesen werden. Der M-R-Befehl ndert den Inhalt des Fehlerkanals, da er diesen benutzt, um Information an den Rechner zu bermitteln. Der nachste GET#-Befehl, der den Fehlerkanal anspricht (Sekundradresse 15) liest das Byte aus. BEISPIEL : "M-R"CHR$(128);CHR$(0) Liest das Byte, das unter der Adresse $0080 (dezimal: 128) gespeichert ist.

Memory-Execute Startet die Ausfhrung einer Subroutine im DOS-Speicher. Die Subroutine mu mit RTS ($60) abgeschlossen werden. 24 _________________________________________________________________

BEISPIEL : "M-E"CHR$(128);CHR$(49) Startet die (dezimal :12672) Programmausfhrung bei $3180

USER Mit dieser Befehlsgruppe kann man unter Benutzung einer Sprungtabelle (Tabelle 3) die Verbindung zur Maschinensprache des 6502 herstellen. Der Index n im Befehl Un definiert nach Tabelle 3 die Sprungadresse. Statt der Zahlen 1 bis 9 und dem Doppelpunkt knnen auch die Buchstaben A bis J als Indizes benutzt werden. Die Bef ehle Ul und U2 sind nahezu identisch (*) mit den B-R und BW-Befehlen und haben deshalb auch das gleiche Format: "Ul:"ch;dr;t;s "U2:"ch;dr;tr;s ber die Befehle U1 bis U9 kann vom Anwender frei verfgt werden. (*) U1 setzt den Pufferzeiger auf 255 und liest stets den gesamten Block in den Speicher ein. U2 schreibt den Speicherinhalt in einen Block, ohne den Wert des Bytes in Position 0 zu ndern.

Tabelle 2 : Sprungtabelle 1.BEZEICHNUNG U1 U2 U3 U4 U5 U6 2.BEZEICHNUNG UA UB UC UD UE UF FUNKTION Ersatz Ersatz Sprung Sprung Sprung Sprung fr BLOCK-READ fr BLOCK-WRITE nach $0500 nach $0503 nach $0506 nach $0509

U7 U8 U9 U:

UG UH UI UJ

Sprung Sprung Sprung

nach nach nach

$050C $050F $FFFA

Power-up Vektor

25 _________________________________________________________________

DIE DATENSTRUKTUR AUF DER DISKETTE Die einzelnen Datenblocks der Diskette knnen mit Hilfe des Programms. "DISPLAY T&S" ( = Anzeige von Spur Sektor), das sich auf der TEST/DEMO-Diskette befindet, gelesen werden. Die Tabelle 4 zeigt Anzahl und Nummerierung der Sektoren (Blocks) auf den verschiedenen Spuren. Tabelle 3 SPUR 1 bis 17 18 bis 24 25 bis 30 31 bis 35 Die Belegung der Spuren mit Sektoren SEKTORNUMMER 0 bis 20 0 bis 18 0 bis 17 0 bis 16 ANZAHL DER SEKTOREN 21 19 18 17

Tabelle 4

Format der

VC-1540-BAM 18; Sektor 0

Gespeichert auf : Spur BYTE 0,1 2 3 4-143 INHALT 18,01 65 0

BEDEUTUNG Spur und Sektor des ersten Blocks der Directory ASCII-Zeichen "A"; zeigt 1540-Fonnat an 0-Flag Bitmuster der belegten bzw. nicht belegten Blocks (0: belegt; 1: nicht belegt)

Tabelle 5 : Vorspann (Header) der Directory Gespeichert auf BYTE 144-161 162,163 164 165,166 166,167 177-255 INHALT : Spur 18; Sektor 0 BEDEUTUNG Name der Diskette (ergnzt mit"geshifteten Spaces") ID-Kennzeichnung der Diskette "Geshifteter Space" ASCII-Darstellung von 2A (gibt DOS-Version und Format an) "Geshiftete Spaces" Nicht benutzt, aufgefllt mit Nullen

160 50,65 160 0

Bem: Die Positionen 180 bis 191 knnen mit ASCII-Zeichen belegt sein. 26 _________________________________________________________________

Tabelle 6 : Format der Directory Gespeichert auf : Spur 18, Sektor 1 BYIE 0,1 2-31 34-63 66-95 98-128 130-159 162-191 194-223 226-255 INHALT Spur und Eintrag Eintrag Eintrag Eintrag Eintrag Eintrag Eintrag Eintrag Sektor des nchsten Blocks der Directory des 1. Files des 2. Files des 3. Files des 4. Files des 5. Files des 6. Files des 7. Files des 8. Files

Tabelle 7 : Format eines Directory-Eintrags BYTE 0 1,2 3-18 19,20 21 22-25 26,27 28,29 INHALT Filetyp (*) oder-verknpft ("geort") mit $80 Spur und Sektor des ersten Datenblocks Filename (ergnzt mit "geshifteten Spaces") Nur bei relativen Files benutzt Nur bei relativen Files benutzt Nicht benutzt Spur und Sektor des neuen Files beim Oberschreiben mit dem (@) ("Klarmeraffe") Anzahl der Blocks im File (Low Byte, High Byte) = = = = = DELeted SEQuential PROGram USeR RELative

(*) Filetypen : 0 1 2 3 4

Tabelle 8 : Format eines sequentiellen Files BYTE 0,1 2-255 INHALT Spur und Sektor des nchsten sequentiellen Datenblocks 254 Bytes Daten

Tabelle 9 BYIE 0,1 2-255

Format eines Programmfiles INHALT Spur und Sektor des nchsten Programmblocks 254 Bytes Program im VC-Speicherformat (BASIC-Befehle als "Tokens"). Das Fileende ist durch 3 Nullen markiert.

27 _________________________________________________________________

Abb.5 zeigt den Aufbau eines Sektors auf einer Diskette, die fr die VC-1540 formatiert wurde. Jeder Sektor enthlt einen Datenblock von 254 Zeichen Daten bzw. Program. Zwei zustzliche Bytes bilden einen Zeiger zum nchsten Block; dadurch wird es mglich, mit Files zu arbeiten, die lnger als ein Block sind. Dieser Aufbau ist bei

PRG, SEQ und USER-Files der gleiche. Ein Datenblock wird durch die Angabe von Block und Sektor adressiert. Eine VC-1540-Diskette enthlt 35 Spuren (Ringe), die von 1 bis 35 durchnummeriert sind. Da die Spuren verschieden lang sind, enthalten sie eine verschiedene Anzahl von Sektoren (Tabelle 4.). Die Gesamtheit der Daten, die in einem Sektor enthalten sind, zeigt die Abb.5. [6] Abb. 5 28 _________________________________________________________________

KAPITEL 6 : SEQUENTIELLE FILES Die Daten, aus denen ein sequentielles File auf gebaut ist, knnen nur in der Reihenfolge gelesen werden, in der sie geschrieben wurden. Ein sequentielles File kann nicht teilweise abgendert werden, es besteht lediglich die Mglichkeit (durch Wahl des "modes" A) neue Daten an das Fileende anzuhngen. Anlegen und lasen eines sequentiellen Files (Siehe dazu auch die Beschreibung des OPEN- und des PRINT#-Befehls in Kapitel 4) 1. SCHRITT : Erffnen eines Schreibfiles OPEN2,8,2,"DATEN,S,W" DATEN : Filename S : Sequentiell W : Schreiben (Virite) 2. SCHRITT Schreiben in das File PRINT#2,A$,B$,C$ Die Inhalte der drei Stringvariablen werden in das File geschrieben 3. SCHRITT Das File wird geschlossen CLOSE2 4. SCHRITT Das File mit dem Namen DATEN wird geffnet OPEN2,8,2,"DATEN,S,R" R 5. Schritt : Lesen (Read)

Die Daten werden in den Rechnerspeicher eingelesen INPUT#2,X$,Y$,Z$ Die Werte von A$, B$ und C$ werden jetzt den Variablen X$, Y$ und Z$ zugeordnet.

6. SCHRITT

Die Statusvariable, die am Fileende den Wert 64 annimmt,wird abgefragt. IF ST=64 THEN CLOSE2

29 _________________________________________________________________

Beispiel eines Programs, das mit sequentiellen Files arbeitet Dieses Programm befindet sich unter dem Namen "SEQUENTIAL FILE" auf der TEST/DEMO-Diskette.

1 2 3 4 5 6 10 20 30 40 60 70 80 90 95 100 101 102 103 104 105 110 115 120 130 140 145 150 160 200 201 202 203 204 205 206 207 208 210 215 220 224 225 230 240 250 260 270 300 310

REM *************** REM * EXAMPLE REM * READ & WRITE REM * A SEQUENTIAL REM * DATA FILE REM *************** PRINT"(CLR)(DOWN)(DOWN)(RGHT)(RGHT)(RGHT)INITIALIZE DISK" DIMA$(25) DIMB(25) OPEN15,8,15,"I0" GOSUB 1000 CR$=CHR$(13) PRINT PRINT" (DOWN)(GRN)WRITE SEQ TEST FILE(BLU)" PRINT REM ************* REM * REM * WRITE SEQ REM * TEST FILE REM * REM ************* OPEN2,8,2,"@0:SEQ TEST FILE ,S,W" GOSUB 1000 INPUT"A$,B";A$,B IFA$="END"THEN 160 PRINT#2,A$","STR$(B)CR$; GOSUB 1000 GOTO 120 CLOSE 2 REM ************* REM * REM * READ SEQ REM * TEST FILE REM * REM ************* PRINT PRINT" (GRN)READ SEQ TEST FILE(BLU)" PRINT OPEN2,8,2,"0:SEQ TEST FILE ,S,R" GOSUB 1000 INPUT#2,A$(I),B(I) RS=ST GOSUB 1000 PRINTA$(I),B(I) IFR S=64 THEN 300 IF RS&LT;&GT;0 THEN 400 I=I+1 GOTO 220 CLOSE 2 END

29 _________________________________________________________________

400 PRINT"(PUR)BAD(RGHT)DISK(RGHT)STATUS(RGHT)IS(RGHT)"RS"(BLU)"

410 420 1000 1001 1002 1003 1004 1005 1006 1010 1020 1030 1040 1050 1060

CLOSE 2 END REM ************ REM * REM * READ REM * THE ERROR REM * CHANNEL REM * REM ************ INPUT#15,EN,EM$,ET,ES IF EN=0 THEN RETURN PRINT"(RGHT)(RGHT)(RGHT)(RGHT)ERROR ON DISK" PRINTEN;EM$;ET;ES CLOSE 2 END

31 _________________________________________________________________

KAPITEL 7 : DER DIREKT-ZUGRIFF Ein Direkt-Zugriffs-File wird mit Hilfe der in Kapitel 5 besprochenen BLOCK- und USER-Befehle angelegt. Um diese Befehle richtig anwenden zu knnen, ist es wichtig, den Datenflu zwischen Rechner, Pufferspeicher und Diskette zu verstehen. In Abbildung 6. werden diese Zusammenhnge illustriert: KANAL 5 OPEN5,8,15 PRINT#5, "B-W";3;0;6;4 Datentransfer Puffer - Diskette -----------I I I DISKETTE I I I -----------PRINT#5,"B-P"3;1 Pufferzeiger wird gesetzt -----------I I I PUFFER I I I -----------KANAL 3 OPEN4,8,3, PRINT#4,A$;CHR$(13);I Schreibt Daten vom Rechner in den Puffer -----------I I I RECHNER I I I -----------INPUT#4,A$,I Einlesen der Daten vom Puffer in den Rechner

<----------->

<--------->

PRINT#5,"B-R";3;0;6;4 Datentransfer Diskette - Puffer

PRINT#5,"B-P"3;1 Pufferzeiger wird gesetzt

[7]Abb. 6. Datenflu zwischen Rechner, Puffer und Diskette 32 _________________________________________________________________

Programmbeispiel : Fileverwaltung mit Direkt-Zugriffs-Befehlen

Das folgende Programm verwaltet Files mit Hilfe von "Block"- und "USER"-Befehlen und kann z.B. zum Aufbau einer Adress-Datei verwendet werden. Unter dem Namen "RANDOM FILE" ist dieses Programm auf der TFST/DEMO-Diskette gespeichert. Die verschiedenen Programmteile und ihre Funktion sind der folgenden Aufstellung zu ennehmen (ZN = Zeilennummer)

ZN ZN ZN ZN ZN ZN ZN ZN

501002003005100520052605322-

76 190 280 390 5190 5260 5320 5390

Menu Erzeugen eines Files Lschen eines Files Suchroutine Dateneingabe Datenausgabe Fehlerausgabe Umrechnung der Recordnumer in Spur und Sektor

Un die Handhabung der Datenblocks zu vereinfachen, wurde das Konzept der Record-Nummer eingefhrt. Aus dieser Nummer errechnet der letzte Programmteil (ab ZN 5322) Spur und Sektor des gesuchten Datensatzes. Die Spur 18 wird bei dieser Progrmnroutine automatisch ausgespart, so da die an dieser Stelle abgespeicherte Directory nicht berschrieben werden kann. Die Aufteilung der Record-Nummern auf die Spuren der Diskette zeigt Tabelle 11.

Tabelle 10 :

Zuordnung der Record-Nummern zu den Diskettenspuren (Program : RANDOM FILE) SEKTOR SEKTOREN PRO SPUR 21 19 18 16 RECORD NUMMERN 1-357 358-471 478-579 586-664

SPUR

1 18 25 31

bis bis bis bis

17 24 30 35

0 0 0 0

bis bis bis bis

20 18 17 16

10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42

REM *********************** REM * RANDOM FILE EXAMPLE * REM *********************** DIMI$(664):FD=0:FX=5:CH=2:FP=1 PRINT"(CLR)(DOWN)(DOWN)ffffffffffffffffffffff" PRINT" (GRN)INSERT DATA SHEET(BLU)" PRINT"ddddddddddddddddddddd" PRINT"(DOWN)(DOWN) START PRESS (PUR)'S'(BLU)" GETP$:IFP$&LT;&GT;"S"THEN26 OPEN15,8,15,"I0":OPEN2,8,2,"#" PRINT"(CLR)(DOWN)ffffffffffffffffffffff" PRINT"INDEX FILE OPERATION" PRINT"dddddddddddddddddddddd" INPUT"(DOWN) (GRN)NEW SHEET? N(LEFT)(LEFT)(LEFT)";O$:PRINT"(BLU)" IFO$="N"THEN46 IFO$&LT;&GT;"Y"THEN36 PRINT:PRINT" WAIT!":FORI=1TO664

33 _________________________________________________________________

44 PRINT"(HOME)(RGHT)(RGHT)(RGHT)(RGHT)(RGHT)(RGHT)(RGHT)(RGHT)(RGHT)(RGHT)( DOWN)(DOWN)(DOWN)(DOWN)(DOWN)(DOWN)(DOWN)(DOWN)(DOWN) (LEFT)(LEFT)(LEFT)(LEF T)(LEFT)"I;:I$(I)="/" 45 PRINTI$(I):NEXT:GOTO50 46 OPEN5,8,5,"0:INDEX,S,R" 47 FORI=1TO664:INPUT#5,I$(I) 48 PRINT"(HOME)(DOWN)(DOWN)(DOWN)(DOWN)(DOWN)(DOWN)(DOWN)(DOWN)(RGHT)(RGHT)( RGHT)(RGHT)(RGHT)(RGHT)WAIT! (LEFT)(LEFT)(LEFT)(LEFT)(LEFT)"I;I$(I) 49 NEXTI:CLOSE5 50 PRINT"(CLR)(DOWN)ffffffffffffffffffffff"

52 PRINT" JOB MENU " 54 PRINT"dddddddddddddddddddddd" 56 PRINT 58 PRINT" 1=CREATE" 60 PRINT" 2=DELETE" 62 PRINT" 3=SEARCH" 64 PRINT" 0=END" 65 PRINT 66 INPUT"1 , 2 , 3 , 0 1(LEFT)(LEFT)(LEFT)";O$ 68 IFO$="0"THENCLOSE15:CLOSE5:CLOSE2:END 70 IFO$="1"THEN104 72 IFO$="3"THEN300 74 IFO$&LT;&GT;2"THEN50 76 GOTO200 100 REM *********************** 102 REM * MASTER FILE CREATE * 103 REM *********************** 104 PRINT"(CLR)(DOWN)(DOWN)ffffffffffffffffffffff" 105 PRINT" ($A0)MASTER FILE CREATE" 106 PRINT"dddddddddddddddddddddd" 107 INPUT"(GRN)RECORD NO. = 0(LEFT)(LEFT)(LEFT)(BLU)";F 109 IF F=0THEN170 110 INPUT"NAME =.(LEFT)(LEFT)(LEFT)";FB$(1) 120 INPUT"ADDRESS =.(LEFT)(LEFT)(LEFT)";FB$(2) 130 INPUT"ZIP =.(LEFT)(LEFT)(LEFT)";FB$(3) 132 INPUT"TEL =.(LEFT)(LEFT)(LEFT)";FB$(4) 134 INPUT"COMMENT =.(LEFT)(LEFT)(LEFT)";FB$(5) 140 GOSUB5200 150 I$(F)="1" 160 GOTO104 170 OPEN5,8,5,"@0:INDEX,S,W" 175 FORI=1TO664:PRINT#5,I$(I);CHR$(13); 180 PRINT"(HOME)(DOWN)(DOWN)(DOWN)(DOWN)(DOWN)(DOWN)(DOWN)(DOWN)(RGHT)(RGHT)( RGHT)(RGHT)(RGHT)(RGHT)WAIT! (LEFT)(LEFT)(LEFT)(LEFT)(LEFT)"I;I$(I) 185 NEXT:CLOSE5 190 GOTO74 200 REM *********************** 201 REM * MASTER FILE DELETE * 202 REM *********************** 210 PRINT"(CLR)(DOWN)(DOWN)ffffffffffffffffffffff" 212 PRINT" MASTER FILE DELETE" 214 PRINT"dddddddddddddddddddddd":PRINT 220 INPUT"(GRN)RECORD NO. = 0(LEFT)(LEFT)(LEFT)(BLU)";F 230 IFF=0THEN260 235 IFI$(F)&LT;&GT;1"THEN220 240 I$(F)="/":PRINT"(DOWN)(PUR)RECORD NO."F;"DELETE(BLU)" 250 GOTO220 260 OPEN5,8,5,"`0:INDEX,S,W" 265 FORI=1TO664:PRINT#5,I$(I);CHR$(13); 270 PRINT"(HOME)(DOWN)(DOWN)(DOWN)(DOWN)(DOWN)(DOWN)(RGHT)(RGHT)(RGHT)(RGHT)( RGHT)(RGHT)WAIT! (LEFT)(LEFT)(LEFT)(LEFT)(LEFT)"I;I$(I) 275 NEXT:CLOSE5 280 GOTO50 34 _________________________________________________________________

300 301 302 310 312

REM *********************** REM * FILE SEARCH * REM *********************** PRINT"(CLR)(DOWN)(DOWN)ffffffffffffffffffffff" PRINT" SEARCH "

314 320 321 322 325 360 370 380 382 383 385 390 5100 5105 5108 5110 5120 5130 5140 5150 5160 5180 5190 5200 5201 5202 5210 5220 5230 5240 5250 5260 5270 5275 5278 5280 5290 5300 5310 5320 5322 5324 5326 5330 5340 5350 5360 5370 5380 5390

PRINT"dddddddddddddddddddddd":PRINT INPUT"(GRN)RECORD NO. = 0(LEFT)(LEFT)(LEFT)(BLU)";F IFF=0THEN50 IFI$(F)&LT;&GT;1"THEN320 GOSUB5100 PRINT"NAME ($A0)($A0) = ";FB$(1) PRINT"ADDRESS = ";FB$(2) PRINT"ZIP ($A0)($A0) = ";FB$(3) PRINT"TEL ($A0)($A0) = ";FB$(4) PRINT"COMMENT($A0) = ";FB$(5) PRINT"---------------------" GOTO320 REM *********************** REM * FDD BLOCK READ * REM *********************** GOSUB5330 PRINT#15,"U1:";CH;FD;FT;FS PRINT#15,"B-P:";CH;FP GOSUB5270 FORFI=1TOFX INPUT#CH,FB$(FI): NEXT RETURN REM *********************** REM * FDD BLOCK WRITE * REM *********************** GOSUB5330 PRINT#15,"B-P:";CH;FP FORFI=1TOFX:PRINT#CH,FB$(FI);CHR$(13);:NEXT PRINT#15,"U2:";CH;FD;FT;FS GOSUB5270 RETURN REM *********************** REM * ERROR CHECK * REM *********************** INPUT#15,EN,EM$,ET,ES IFEN=0THENRETURN PRINT"ERROR STATUS:";EN;EM$;ET;ES INPUT"CONTINUE?";Y$:IFY$="Y"THENRETURN STOP REM *********************** REM * SET TRACK & SECTOR * REM *********************** IFF&LT;358THENF1=0:F2=22:F3=1:GOTO5370 IFF&GT;357ANDF&LT;471THENF1=357:F2=20:F3=19:GOTO5370 IFF&GT;471ANDF&LT;580THENF1=471:F2=19:F3=25:GOTO5370 IFF&GT;580THENF1=580:F2=18:F3=31 FT=INT(((F-F1)-1)/(F2-1))+F3 FS=F-F1-(FT-F3)*F2+(FT-F3-1) RETURN

35 _________________________________________________________________

KAPITEL 8 - FEHLERMELDUNGEN - DER "JOKER" LESEN DES FEHLERKANALS Das Blinken der roten LED der Floppy zeigt das Auftreten eines Fehlers an. Mit Hilfe des folgenden kleinen Programms knnen sie ermitteln, an welchen Fehler es sich handelt, und, wenn dies nach Art des Fehlers mglich ist, wo er lokalisiert ist.

10 OPEN1,8,15 20 INPUF#1,A,B$,C,D 30 PRINTA,B$,C,D A B$ C D : : : : Numer des Fehlers F;ehlerbezeichnung im Spur Sektor

artext

LISTE DER BEDEUTUNGEN DER FEHLERMELDUNGEN 0 1 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 39 50 51 52 60 61 62 63 64 65 66 67 70 71 72 73 74 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : Kein Fehler Rckmeldung fr Filelschung (keine Fehlermeldung) Block-Header nicht gefunden SYNC-Zeichen nicht gefunden Datenblock nicht vorhanden Fehler in der Prfsumme Byte falsch decodiert Fehlerhaftes Verify beim Schreiben Schreibversuch auf Diskette mit Schreibschutz Prfsummenfehler im Header Datenblock ist zu lang ID der Diskette fehlerhaft Allgemeiner Syntax-Fehler Ungltiger Befehl Befehl ist zu lang Ungltiger Filename File existiert nicht Befehl kann nicht interpretiert werden Record existiert nicht Recordlnge zu klein Recordnumer ist zu hoch File bereits zum Schreiben geffnet File nicht offen File nicht gefunden File existiert bereits Falscher Filetyp Kein Block mehr frei Falsche Spur- oder Sektornummer Falsche Spur- oder Sektornumer Kein Kanal mehr frei Fehler in der BAM Diskette oder Directory voll Angabe der DOS-Version Keine Diskette im Laufwerk 36 _________________________________________________________________

LISTE DER FEHLERMELDUNGEN UND BESCHREIBUNG 20 : READ ERROR Header des gesuchten Datenblocks wird nicht gefunden. 21 : READ ERROR SYNC-Markierung wird nicht gefunden. Grnde dafr knnen schlechte Justierung des Schreib/Lesekopfes, nicht formatierte Disketten oder schlechter Sitz der Diskette sein. Kann auch Hardware-Defekt anzeigen. 22 : READ ERROR Dieser Fehler tritt im Zusammenhang mit den BLOCK-Befehlen

auf und zeigt an, da ein Block gelesen oder geprft (verified) werden sollte, der nicht ordnungsgem geschrieben wurde. 23 : READ ERROR Die Daten, die in den DOS-Speicher geschrieben wurden enthalten einen Prfsumenfehler, d.h. ein Datenbyte oder mehrere sind fehlerhaft. Dieser Fehler kann auch Erdungsprobleme anzeigen. 24 : READ ERROR Die Daten oder der Header wurden in den DOS-Speicher eingelesen, aber in den Datenbytes existieren fehlerhafte Bitmuster. Dieser Fehler kann auch Erdungsproblem anzeigen. 25 : WRITE ERROR Fehlende bereinstimmung zwischen den Daten im DOS-Memory und den Daten auf der Diskette. 26 : WRITE PROTECT ON Es wird versucht, auf eine einem Schreibschutz versehen

Diskette zu schreiben, die mit ist.

27 : READ ERROR Es liegt ein Fehler im Header des zu lesenden Datenblocks vor (Prfsume stimmt nicht). Dieser Fehler kann auch Erdungsprobleme anzeigen. 28 : WRITE ERROR Nach dem schreiben eines Datenblocks sucht der Controller die SYNC-Zeichenfolge des nchsten Datenblocks. Wenn er diese Synchronisationsmarkierung nicht innerhalb eines bestimmtem Zeitraums findet, wird diese Fehlermeldung ausgegeben. Grund dafr kann z.B. ein zu langer Datenblock oder ein Hardwarefehler sein. 29 : DISK ID MISMATCH Die im DOS-Speicher vorhandene ID stimmt nicht mit der ID auf der Diskette berein. Die Diskette wurde nicht initialisiert, oder der Header ist fehlerhaft. 30 : SYNTAX ERROR Das DOS kann den ber den Befehlskanal geschickten Befehl nicht interpretieren. 37 _________________________________________________________________

31 : SYNTAX ERROR Befehl wird nicht erkannt. 32 : SYNTAX ERROR Befehl ist lnger als 58 Zeichen. 33 : SYNTAX ERROR Falsche Verwendung des "Jokers" in OPEN- oder SAVE-Befehl. 34 : SYNTAY ERROR Filename fehlt, oder kann vom DOS nicht erkannt werden. Typischer Fehler: Ein Doppelpunkt (:) fehlt. 39 : SYNTAX ERROR Befehl wird nicht erkannt.

50 : RECORD NOT PRESENT Die Fehlermeldung wird ausgegeben, wenn versucht wird, nach den letzten aufgezeichneten Daten mit INPUT# oder GET# weiter zu lesen. 51 : OVERFLOW IN RECORD Die Anzahl der Zeichen (inklusive CR) ist grer als die vorgegebene Recordlnge 52 : FILE TOO LARGE Recordnummer (in einem relativen File) ist zu gro; das Fassungsvemgen der Diskette wird berschritten. 60 : WRITE FILE OPEN Ein Schreibfile, das nicht geschlossen wurde, soll geffnet werden. 61 : FILE NOT OPEN Es soll ein File angesprochen werden, das nicht geffnet wurde. 62 : FILE NOT FOUND File existiert nicht. 63 : FILE EXISTS Ein File soll einen Namen erhalten, der bereits auf der Diskette existiert. 64 : FILE TYPE MISMATCH File-Typ stimmt nicht mit Directory-Eintrag berein 65 : NO BLOCK Diese Fehlermeldung steht im Zusammenhang mit dem B-A-Befehl. Der Block, der als belegt gekennzeichnet werden soll, ist bereits belegt. Die PA@rameter die ausgegeben werden, geben Spur und Sektor des nchsten frei verfgbaren Blocks an. Werden zwei Nullen ausgegeben, so sind alle Blocks mit hheren Nummern belegt. 66 : ILLEGAL TRACK AND SECTOR Das DOS findet nicht den Zeiger zum nchsten Block 38 _________________________________________________________________

67 : ILLEGAL T OR S Ungltige Spur- oder Sektornummer 70 : NO CHANNEL AVAILABLE Ein direkt angesprochener Kanal ist bereits belegt oder (falls kein bestimmter Kanal angesprochen wurde) kein Kanal ist mehr frei. 71 : DIR ERROR Die BAM kann nicht gelesen werden, was eventuell seinen Grund darin haben kann, da sie im DOS-Speicher berschrieben wurde. Ein Reinitialisieren der Diskette kam diesen Fehler in manchen Fllen beheben. 72 : DISK FULL Alle 664 Blocks der Diskette sind belegt, oder die Directory hat die maximale Anzahl von 144 Eintrgen.

73 : CBM DOS V2.6 V170 Diese Meldung erscheint direkt nach dem Einschalten bzw. dann, wenn sie mit der VC-1540 auf eine Diskette schreiben wollen, die mit einer anderen DOS-Version formatiert wurde. Auf COMMODORE-Rechnern existieren vier verschiedene DOSVersionen: DOS 1.0 : CBM 2040/3040 DOS 2.0 : CBM 4040 DOS 2.5 : CBM 8050 DOS 2.6 : CBM 1540 Voll kompatibel sind die Versionen 2.0 und 2.6. Mit DOS 1.0 und 2.0 bzw. 1.0 und 2.6 formatierte Disketten knnen wechselseitig gelesen, aber nicht beschrieben werden. Bei einem Schreibversuch erscheint die obige Fehlermeldung. Die DOSVersion 2.5 ist mit allen anderen Versionen weder schreibnoch lesekcmpatibel. 74 : DRIVE NOT READY Es wurde versucht die Floppy anzusprechen, ohne eine Diskette in das Laufwerk einzulegen.

DER JOKER Jokerzeichen werden benutzt, um bei einigen Floppy-Befehlen den Filenamen in verkrzter Form einzugeben. Man gibt nur den Teil des Namens ein, in dem er sich von den anderen Filenamen auf der Diskette unterscheidet. Der Rest wird durch einen Stern (*) oder ein Fragezeichen (?) ersetzt. Der Stern wird benutzt, un nichtsignifikante Zeichen a m E n d e des Filenamens zu ersetzen. BEISPIEL : DAT* DATEI DATUM DATENFILE d.h., fr alle Filenamen, die mit den Buchstabe DAT beginnen 39 _________________________________________________________________ kann fr folgende Filenamen stehen :

Das Fragezeichen wird benutzt, um e i n bestimmten Stelle zu ersetzen. BEISPIEL : ????FILE TESTFILE DIAGFILE DATAFILE aber n i c h t fr ABFILE oder FILEPROG kann stehen fr

Z e i c h e n

an einer

Kombinationen von Stern und Fragezeichen mssen mit Vorsicht gehandhabt werden. So ist z.B. die Kombination *ABC???? identisch mit *

Der Grund dafr ist, da alle Stellen hinter dem Stern als nicht signifikant angesehen werden. Ein Stern kann aber fr jeden beliebigen Filenamen stehen, so da z.B. bei Verwendung dieser Jokerkombination in Verbindung mit dem SCRATCH-Befehl alle auf der Diskette befindlichen Files gelscht wrden. Eine sinnvolle Kombination von Stern und Fragezeichen wre z.B.. A?????DAT* , die stehen kann fr ADRESSDATEN ALTERSDATEI ABCDE DATEIEN

(ein Leerzeichen ist auch ein Zeichen)

Bei den einzelnen Floppy-Befehlen wirkt sich das Arbeiten mit den Joker-Symbolen verschieden aus. Der SCRATCH-Befehl lscht alle Namen, die durch die eingegebe Joker-Kombination abgedeckt werden. Bei Ausfhrung des LOAD-Befehls wird das erste File mit "passendem" Namen geladen. Dasselbe gilt fr den OPEN-Befehl; hier kann jedoch nur ein File mit bereits existierendem Namen erffnet werden. Die Befehle RENAME, SAVE oder COPY drfen prinzipiell nicht in Verbindung mit Jokersymbolen verwendet werden. 40 _________________________________________________________________

ANHANG Folgende Programme sind auf der beigelegten TEST/DEMO-Diskette enthalten. Das "Listing" dieser Programme ist auf den nchsten Seiten abgedruckt.

0 "1540TEST/DEMO " ZZ 2A 4 "DIR" PRG 6 "VIEW BAM" PRG 14 "DISPLAY T&S" PRG 4 "CHECK DISK" PRG 9 "PERFORMANCE TEST" PRG 13 "SEQUENTIAL FILE" PRG 13 "RANDOM FILE" PRG 609 BLOCKS FREE.

DIR Vereinfacht einige Floppyoperationen, wie z.B. das Anzeigen der Directory. VIEW BAM Liest die BAM von der Diskette und zeigt sie auf dem Bildschirm an. Hier bei werden die Sektornummern vertikal und die Spurnummern horizontal gezhlt. Die leeren Blocks erscheinen hell und die belegten Blocks dunkel. DISPLAY T&S Gibt den Inhalt jedes gewnschten Blocks (einschlielich BAM und Directory ) auf den Bildschirm oder den Drucker aus. Die Daten werden im ASCII-Code oder als Hexadezimalzahlen dargestellt.

CHECK DISK Fhrt den Befehl VALIDATE aus und gibt an, welche Blocks nicht gelesen werden knnen. Erlaubt festustellen, inwieweit eine Diskette zerstrt ist. PERFORMANCE TEST Allgemeiner Floppy-Punktionstest. SEQUENTIAL FILE Programbeispiel, an dem das Schreiben und Lesen sequentiellen Files gezeigt wird. RANDOM FILE Programmbeispiel, an dem das Schreiben und Lesen von Files mit Direkt-Zugriffs-Befehlen (BLOCK und USER-Befehle) gezeigt wird. 41 _________________________________________________________________ eines

D I R

4 OPEN2,8,15 5 PRINT"(CLR)(BLU)":GOTO 10000 10 OPEN1,8,0,"$0" 20 GET#1,A$,B$ 30 GET#1,A$,B$ 40 GET#1,A$,B$ 50 C=0 60 IF A$&LT;&GT;"" THEN C=ASC(A$) 70 IF B$&LT;&GT;"" THEN C=C+ASC(B$)*256 80 PRINT"(RED)(RVON)"MID$(STR$(C),2);TAB(3);"(RVOF)(BLU)"; 90 GET#1,B$:IF ST&LT;&GT;0 THEN 1000 100 IF B$&LT;&GT;CHR$(34) THEN 90 110 GET#1,B$:IF B$&LT;&GT;CHR$(34)THEN PRINTB$;:GOTO110 120 GET#1,B$:IF B$=CHR$(32) THEN 120 130 PRINT TAB(18);:C$="" 140 C$=C$+B$:GET#1,B$:IF B$&LT;&GT;"" THEN 140 150 PRINT"(GRN)(RVON)"LEFT$(C$,3) 160 GET T$:IF T$&LT;&GT;"" THEN GOSUB 2000 170 IF ST=0 THEN 30 1000 PRINT" BLOCKS FREE(BLU)" 1010 CLOSE1:GOTO 10000 2000 IF T$="Q" THEN CLOSE1:END 2010 GET T$:IF T$="" THEN 2000 2020 RETURN 4000 REM DISK COMMAND 4010 C$="":PRINT"&GT;"; 4011 GETB$:IFB$="" THEN4011 4012 PRINTB$;:IF B$=CHR$(13) THEN 4020 4013 C$=C$+B$:GOTO 4011 4020 PRINT#2,C$ 5000 PRINT"(RVON)"; 5010 GET#2,A$:PRINTA$;:IF A$&LT;&GT;CHR$(13)GOTO5010 5020 PRINT"(RVOF)" 10000 PRINT "D-DIRECTORY" 10010 PRINT "&GT;-DISK COMMAND" 10020 PRINT "Q-QUIT PROGRAM" 10030 PRINT "S-DISK STATUS "

10100 10200 10300 10310 10320 10999

GETA$:IFA$=""THEN10100 IF A$="D" THEN 10 IF A$="." OR A$="&GT;" OR A$="&GT;" THEN 4000 IF A$="Q" THEN END IF A$="S" THEN 5000 GOTO 10100

42 _________________________________________________________________

V I E W

B A M

100 REM *************************** 101 REM * VIEW BAM FOR VIC-1540 * 102 REM *************************** 105 OPEN15,8,15 110 PRINT#15,"I0":NU$="N/A N/A N/A N/A N/A":Z4=1 120 OPEN2,8,2,"#" 130 Y$="(HOME)(DOWN)(DOWN)(DOWN)(DOWN)(DOWN)(DOWN)(DOWN)(DOWN)(DOWN)(DOWN)(DO WN)(DOWN)(DOWN)(DOWN)(DOWN)(DOWN)(DOWN)(DOWN)(DOWN)(DOWN)(DOWN)(DOWN)(DOWN)(DOW N)" 140 X$="(RGHT)(RGHT)(RGHT)(RGHT)(RGHT)(RGHT)(RGHT)(RGHT)(RGHT)(RGHT)(RGHT)(RG HT)(RGHT)(RGHT)(RGHT)(RGHT)(RGHT)(RGHT)(RGHT)(RGHT)(RGHT)(RGHT)(RGHT)" 150 DEF FNS(Z) = 2^(S-INT(S/8)*8) AND (SB(INT(S/8))) 160 PRINT#15,"U1:";2;0;18;0 170 PRINT#15,"B-P";2;1 180 PRINT"(CLR)"; 190 Y=22:X=1:GOSUB430 200 FORI=0TO20:PRINT:PRINT"(UP)(UP)"RIGHT$(STR$(I)+" ",3);:NEXT 210 GET#2,A$ 220 GET#2,A$ 230 GET#2,A$ 240 TS=0 250 FORT=1TO17:GOSUB450 260 Y=22:X=T+4:GOSUB430:GOSUB540:NEXT 270 FORI=1TO2000:NEXT:PRINT"(CLR)" 280 Y=22:X=1:GOSUB430 290 FORI=0TO20:PRINT:PRINT"(UP)(UP)"RIGHT$(STR$(I)+" ",3);:NEXT 300 FORT=18TO35 310 GOSUB450 320 Y=22:X=T-13:GOSUB430:GOSUB540:NEXT 330 FORI=1TO1000:NEXT 340 PRINT"(CLR)(DOWN)(DOWN)(DOWN)(DOWN)(DOWN)" 350 PRINT#15,"B-P";2;144 360 N$="":FORI=1TO20:GET#2,A$:N$=N$+A$:NEXT 370 PRINT" "N$" "TS-17;"BLOCKS FREE" 380 FORI=1TO4000:NEXT 390 PRINT"(CLR)" 400 INPUT"(DOWN)(DOWN)(DOWN)(RGHT)(RGHT)(GRN)ANOTHER DISKETTE N(LEFT)(LEFT)(L EFT)(BLU)";A$ 410 IFA$="Y"THENRUN 420 IFA$&LT;&GT;"Y"THENEND 430 PRINTLEFT$(Y$,Y)LEFT$(X$,X)"(LEFT)"; 440 RETURN 450 GET#2,SC$:SC=ASC(RIGHT$(CHR$(0)+SC$,1)) 460 TS=TS+SC 470 GET#2,A$:IFA$=""THENA$=CHR$(0) 480 SB(0)=ASC(A$) 490 GET#2,A$:IFA$=""THENA$=CHR$(0) 500 SB(1)=ASC(A$) 510 GET#2,A$:IFA$=""THENA$=CHR$(0)

520 530 540 550 560 570 580 590 600 610 620 630 640 650 660 670 680

SB(2)=ASC(A$) RETURN PRINT"(DOWN)(LEFT)"RIGHT$(STR$(T),1);"(LEFT)(UP)(UP)"; REM PRINTT" "SC" "SB(0)" "SB(1)" "SB(2)=CHR$(0) IFT&GT;24ANDS=18THEN:PRINTMID$(NU$,Z4,1);:GOTO660 FORS=0TO20 IFT&LT;18THEN620 IFT&GT;30ANDS=17THEN:PRINTMID$(NU$,Z4,1);:GOTO660 IFT&GT;24ANDS=18THEN:PRINTMID$(NU$,Z4,1);:GOTO660 IFT&GT;24ANDS=19THENPRINTMID$(NU$,Z4,1);:GOTO660 IFT&GT;17ANDS=20THENPRINTMID$(NU$,Z4,1);:Z4=Z4+1:GOTO660 PRINT"(RVON)"; IF FNS(S)=0 THEN PRINT"[";:GOTO660 PRINT"(RVOF)[";:REMRIGHT$(STR$(S),1);Z4,1);:GOTO72 PRINT"(UP)(LEFT)(RVOF)"; NEXT RETURN

43 _________________________________________________________________

D I S P L A Y

T & S

100 REM****************************** 110 REM* DISPLAY ANY TRACK $ SECTOR * 120 REM* ON THE VIC TO THE SCREEN * 130 REM* OR THE VIC PRINTER * 140 REM****************************** 150 PRINT"(CLR)(DOWN)(DOWN)rrrrrrrrrrrrrrrrrrrrrr" 160 PRINT"DISPLAY BLOCK CONTENTS" 165 PRINT"eeeeeeeeeeeeeeeeeeeeee": 170 REM****************************** 180 REM* SET PROGRAM CONSTANT * 190 REM****************************** 200 SP$=" ":NL$=CHR$(0):HX$="0123456789ABCDEF" 210 FS$="":FORI=64 TO 95:FS$=FS$+"(RVON)"+CHR$(I)+"(RVOF)":NEXT I 220 SS$=" ":FOR I=192 TO 223:SS$=SS$+"(RVON)"+CHR$(I)+"(RVOF)":NEXT I 240 DIM A$(15),NB(2) 251 D$="0" 253 PRINT" (RVON)S(RVOF)CREEN(DOWN)(LEFT)(LEFT)(LEFT)(LEFT)(LEFT)(LEFT )(LEFT)(LEFT)OR (DOWN)(LEFT)(RVON)P(RVOF)RINTER" 254 GETJJ$:IF JJ$="" THEN254 255 IF JJ$="S"THENPRINT" (DOWN)(RVON)(GRN)SCREEN(RVOF)(BLU)" 256 IF JJ$="P"THENPRINT" (DOWN)(RVON)(GRN)PRINTER(RVOF)(BLU)" 260 OPEN15,8,15,"I"+D$:GOSUB 650 265 OPEN4,4 270 OPEN 2,8,2,"#":GOSUB 650 280 REM****************************** 290 REM* LOAD TRACK AND SECTOR * 300 REM* INTO DISK BUFFER * 310 REM****************************** 320 INPUT"(DOWN)(RGHT)(RGHT)TRACK, SECTOR";T,S 330 IF T=0 OR T&GT;35 THEN PRINT#15,"I"D$:CLOSE2:CLOSE4:CLOSE15:PRINT"END":EN D 340 IF JJ$="S" THEN PRINT"(DOWN)(RGHT)(RGHT)TRACK"T" SECTOR"S"(DOWN)" 341 IF JJ$="P" THEN PRINT#4:PRINT#4,"TRACK"T" SECTOR"S:PRINT#4 350 PRINT#15,"U1:2,"D$;T;S:GOSUB650 360 REM****************************** 370 REM* READ BYTE 0 OF DISK BUFFER * 390 REM****************************** 400 PRINT#15,"B-P:2,1" 410 PRINT#15,"M-R"CHR$(0)CHR$(5)

420 428 430 431 432 433 434 436 438 440 442 444 446 448 450 452 454 458

GET#15,A$(0):IFA$(0)=""THENA$(0)=NL$ IF JJ$="S"THEN430 IF JJ$="P"THEN460 REM****************************** REM* READ & CRT DISPLAY * REM* REST OF THE DISK BUFFER * REM****************************** K=1:NB(1)=ASC(A$(0)) FOR J=0 TO 63:IF J=32 THEN GOSUB 710:IF Z$="N"THEN J=80:GOTO 458 FOR I=K TO 3 GET#2,A$(I):IF A$(I)="" THEN A$(I)=NL$ IF K=1 AND I&LT;2 THEN NB(2)=ASC(A$(I)) NEXT I:K=0 A$="":B$=":":N=J*4:GOSUB 790:A$=A$+":" FOR I=0 TO 3:N=ASC(A$(I)):GOSUB 790 C$=A$(I):GOSUB 850:B$=B$+C$ NEXT I:IF JJ$="S" THEN PRINTA$B$ NEXT J:GOTO571

44 _________________________________________________________________

460 462 464 466 468 470 472 474 476 478 480 482 484 486 488 571 572 573 575 580 590 600 610 620 630 640 650 660 670 680 690 700 710 720 730 740 750 760 770 780

REM****************************** REM* READ & PRINTER DISPLAY * REM****************************** K=1:NB(1)=ASC(A$(0)) FOR J=0 TO 15 FOR I=K TO 15 GET#2,A$(I):IF A$(I)="" THEN A$(I)=NL$ IF K=1 AND I&LT;2 THEN NB(2)=ASC(A$(I)) NEXT I:K=0 A$="":B$=":":N=J*16:GOSUB 790:A$=A$+":" FOR I=0 TO 15:N=ASC(A$(I)):GOSUB 790:IF Z$="N"THEN J=40:GOTO 571 C$=A$(I):GOSUB 850:B$=B$+C$ NEXT I IF JJ$="P" THEN PRINT#4,A$B$ NEXT J:GOTO571 REM****************************** REM* NEXT TRACK AND SECTOR * REM****************************** PRINT"NEXT TRACK AND SECTOR"NB(1)NB(2) "(DOWN)" PRINT"DO YOU WANT NEXT TRACK AND SECTOR" GET Z$:IF Z$="" THEN590 IF Z$="Y" THEN T=NB(1):S=NB(2):GOTO330 IF Z$="N" THEN 320 GOTO 590 REM****************************** REM* SUBROUTINES * REM****************************** REM* ERROR ROUTINE * REM****************************** INPUT#15,EN,EM$,ET,ES:IF EN=0 THEN RETURN PRINT"(RVON)DISK ERROR(RVOF)"EN,EM$,ET,ES END REM****************************** REM* SCREEN CONTINUE MSSG * REM****************************** PRINT"(DOWN)(RGHT)(RGHT)(RGHT)(RGHT)(GRN)CONTINUE(Y/N)(BLU)" GETZ$:IF Z$="" THEN 750 IF Z$="N" THEN RETURN IF Z$&LT;&GT;"Y" THEN 750 PRINT"(CLR)TRACK" T " SECTOR"S "(CLR)":RETURN

790 800 810 820 830 840 850 860 870 880 890 910 920

REM****************************** REM* DISK BYTE TO HEX PRINT * REM****************************** A1=INT(N/16):A$=A$+MID$(HX$,A1+1,1) A2=INT(N-16*A1):A$=A$+MID$(HX$,A2+1,1) A$=A$+SP$:RETURN REM****************************** REM* DISK BYTE TO ASC DISPLAY * REM* CHARACTER * REM****************************** IF ASC(C$)&LT;32 THEN C$=" ":RETURN IF ASC(C$)&LT;128 OR ASC(C$)&GT;159 THEN RETURN C$=MID$(SS$,3*(ASC(C$)-127),3):RETURN

45 _________________________________________________________________

C H E C K D I S K

1 REM CHECK DISK -- VER 1.4 2 DN=8:REM FLOPPY DEVICE NUMBER 5 DIMT(100):DIMS(100):REM BAD TRACK, SECTOR ARRAY 9 PRINT"(CLR)(DOWN)(DOWN)(DOWN)fffffffffffffffffffff" 10 PRINT" CHECK DISK PROGRAM" 12 PRINT"ddddddddddddddddddddd" 20 D$="0" 30 OPEN15,DN,15 35 PRINT#15,"V"D$ 45 N%=RND(TI)*255 50 A$="":FORI=1TO255:A$=A$+CHR$(255AND(I+N%)):NEXT 60 GOSUB900 70 OPEN2,DN,2,"#" 80 PRINT:PRINT#2,A$; 85 T=1:S=0 90 PRINT#15,"B-A:"D$;T;S 100 INPUT#15,EN,EM$,ET,ES 110 IFEN=0THEN130 115 IFET=0THEN200:REM END 120 PRINT#15,"B-A:"D$;ET;ES:T=ET:S=ES 130 PRINT#15,"U2:2,"D$;T;S 134 NB=NB+1:PRINT" CHECKED BLOCKS"NB 135 PRINT" TRACK (LEFT)(LEFT)(LEFT)(LEFT)"T;" SECTOR (LEFT)(LEFT)(LEFT) (LEFT)"S"(UP)(UP)" 140 INPUT#15,EN,EM$,ES,ET 150 IF EN=0THEN85 160 T(J)=T:S(J)=S:J=J+1 165 PRINT"(DOWN)(DOWN)(PUR)BAD BLOCK:(LEFT)(LEFT)",T;S"(BLU)" 170 GOTO85 200 PRINT#15,"I"D$ 210 GOSUB900 212 CLOSE2 215 IFJ=0THENPRINT"(DOWN)(DOWN)(DOWN)(RGHT)(RGHT)(RGHT)NO BAD BLOCKS!":END 217 OPEN2,DN,2,"#" 218 PRINT"(DOWN)(DOWN)(PUR)BAD BLOCKS","TRACK","SECTOR(BLU)" 220 FORI=0TOJ-1 230 PRINT#15,"B-A:";D$,T(I);S(I) 240 PRINT,,T(I),S(I) 250 NEXT 260 PRINT"(DOWN)"J"BAD BLOCKS HAVE BEEN ALLOCATED" 270 CLOSE2:END 900 INPUT#15,EN,EM$,ET,ES 910 IF EN=0 THEN RETURN

920 PRINT"(DOWN)(DOWN)(PUR)ERROR #"EN,EM$;ET;ES"(BLU)" 930 PRINT#15,"I"D$ 46 _________________________________________________________________

P E R F O R M A N C E

T E S T

1000 1010 1020 1030 1040 1050 1060 1070 1080 1090 1100 1110 1120 1130 1140 1150 1160 1170 1180 1190 1200 1210 1220 1230 1240 1250 1260 1270 1280 1290 1300 1310 1320 1330 1340 1350 1360 1370 1380 1390 1400 1410 1420 1430 1440 1450 1460 1470 1480 1490 1500

REM PERFORMANCE TEST 1.1 : REM VIC-1540 SINGLE FLOPPY DRIVE : : OPEN 1,8,15:OPEN15,8,15 LT=35 LT$=STR$(LT) NT=30 PRINT"(CLR)(DOWN)ffffffffffffffffffffff" PRINT" PERFORMANCE TEST" PRINT"dddddddddddddddddddddd" PRINT PRINT" (PUR)INSERT SCRATCH" PRINT PRINT" DISKETTE IN DRIVE" PRINT PRINT"(DOWN) PRESS (RVON)RETURN(RVOF)" PRINT PRINT" WHEN READY(DOWN)" FOR I=0 TO 50:GET A$:NEXT GET A$:IF A$&LT;&GT;CHR$(13) THEN 1210 : : TI$="000000" TT=18 PRINT#1,"N0:TEST DISK,00" C1$="(GRN) DISK NEW COMMAND "+CHR$(13) C2$="(BLU)(DOWN) WAIT ABOUT 80 SECONDS" CC$=C1$+C2$:GOSUB 1840 IF TI&LT;NTTHEN1370 PRINT"(DOWN)SYSTEM IS" PRINT"(DOWN) NOT RESPONDING" PRINT" CORRECTLY TO COMMANDS" GOSUB 1880 : : PRINT"(DOWN)DRIVE PASS" PRINT" MECHANICAL TEST(DOWN)" TT=21 OPEN 2,8,2,"0:TEST FILE,S,W" CC$="OPEN WRITE FILE" :GOSUB 1840 CH=2:CC$="WRITE DATA" :GOSUB 1930 CC$="CLOSE "+CC$ :GOSUB 1840 OPEN 2,8,2,"0:TEST FILE,S,R" CC$="OPEN READ FILE" :GOSUB 1840 CH=2:GOSUB 1990 PRINT#1,"S0:TEST FILE" CC$="SCRATCH FILE(DOWN)":TT=1 :GOSUB 1840 : :

47 _________________________________________________________________

1510 1520 1530 1540 1550 1560 1570 1580 1590 1600 1610 1620 1630 1640 1650 1660 1670 1680 1690 1700 1710 1720 1730 1740 1750 1760 1770 1780 1790 1800 1810 1820 1830 1840 1850 1860 1870 1880 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980 1990 2000 2010 2020 2030 2040 2050 2060

TT=21 OPEN 4,8,4,"#" NN%=(1+RND(TI)*254+NN%)AND255:PRINT#1,"B-P";4;NN% NN$="":FOR I=1 TO 255:NN$=NN$+CHR$(I):NEXT PRINT# 4,NN$; PRINT# 1,"U2:";4;0;LT;0 CC$="WRITE TRACK"+LT$:GOSUB 1840 PRINT#1,"U2:";4;0;1;0 CC$="WRITE TRACK 1" :GOSUB 1840 PRINT#1,"U1:";4;0;LT;0 CC$="READ TRACK"+LT$ :GOSUB 1840 PRINT#1,"U1:";4;0;1;0 CC$="READ TRACK 1" :GOSUB 1840 CLOSE 4 : : PRINT"(DOWN)(GRN) UNIT HAS PASSED" PRINT" PERFORMANCE TEST!" PRINT"(DOWN) PULL DISKETTE FROM" PRINT"(DOWN) DRIVE BEFORE TURNING" PRINT" POWER OFF." END : : PRINT" (DOWN)(GRN)CONTINUE (Y/N)?(BLU)"; FOR I=0 TO 50:GET A$:NEXT GET A$:IF A$="" THEN 1770 PRINT A$"(DOWN)" IF A$="N" THEN END IF A$="Y" THEN RETURN GOTO 1760 : : PRINT CC$ INPUT# 1,EN,EM$,ET,ES PRINTTAB(12)"(PUR)"EN;EM$;ET;ES;"(BLU)" IF EN&LT;2 THEN RETURN PRINT"(DOWN) UNIT IS FAILING" PRINT"(DOWN) PERFORMANCE TEST" TM$=TI$:GOSUB 1750:TI$=TM$:RETURN : : PRINT"WRITING DATA" FOR I=1000 TO 2000:PRINT#CH,I:NEXT GOSUB1850 CLOSE CH:RETURN : : PRINT"READING DATA" GETA$ FOR I=1000 TO 2000 INPUT# CH,J IF J&LT;&GT;I THEN PRINT"(RVON)READ ERROR:(RVOF)":GOSUB 1850 NEXT GOSUB 1850 CLOSE CH:RETURN

48 _________________________________________________________________ _________________________________________________________________

Nachdruck, auch auszugsweise, nur mit schriftlicher Genehmigung von Commodore. Commodore GmbH Lyoner Strae 38 D-6000 Frankfurt/M. 71 nderungen vorbehalten [8]Artikel-Nr. 580041/6-83 ********* End of the iDOC= etext of the German VC1541 manual. ********* Commodore AG Aeschenvorstadt 57 CH-4010 Basel Commodore GmbH Fleschgasse 2 A-1130 Wien Stand Juni 1983

Potrebbero piacerti anche