+------------------------------------------------------------------------ | | DISK-DRIVE 1581: ROM-LISTING | +------------------------------------------------------------------------ | | Comments done by Peter Steiner, used with permission. | | $8000/32768 Checksumme | $8004/32772 Befehlsstring vom Computer auswerten ($c146) | $804C/32844 Abschluss eines Befehls ($c194) | $8071/32881 INPUT-Puffer loeschen ($c1bd) | $807C/32892 Fehler ausgeben mit T&S = 00 ($c1c8) | $8085/32901 Sucht Drivenummer in der Befehlszeile ($c1d1) | $8099/32921 Eingabezeile bis zum ':' auswerten ($c1e5) | $80A2/32930 Eingabezeile pruefen bei Copy, Rename, New ($c1ee) | $811C/33052 Eingabezeile bis zu einem bestimmten Zeichen auswerten ($c268) | $8165/33125 Kommandozeilenende feststellen (CR (/LF) entfernen) ($c2b3) | $81E5/33253 LED-Routinen ($c100) | $81FD/33277 Laufwerksnummer holen und setzen ($c312) | $820B/33291 Alle Parameter auf Laufwerksnummer pruefen und diese ggf. loeschen ($c320) | $8224/33316 Laufwerksnummer testen und entfernen ($c33c) | $8251/33361 Drivenummer setzen, LED einschalten ($c368) | $8270/33392 Dateityp feststellen ('s,p,u,r,c') (z.B. '$*=s') ($c398) | $8295/33429 Laufwerksnummer pruefen ($c3bd) | $82A2/33442 Drive initialisieren, LED einschalten ($c3ca) | $82B9/33465 alle angegebenen Dateien im Directory suchen ($c44f) | $82E6/33510 Dateien einzeln suchen ($c48b) | $8327/33575 Eintrag im Directory mit gesuchten Eintraegen vergleichen ($c4d8) | $83D7/33751 Prueft, ob alle Dateien gefunden worden sind ($c617) | $83FA/33786 1581: Zeichen hinter '*' vergleichen | $8424/33828 naechsten Eintrag im Directory suchen : ($c5ac) | $84AE/33966 Testet auf Diskettenwechsel und initialisiert ggf. ($c63d) | $84EE/34030 Parameter aus dem INPUT-Puffer in Disk-Puffer kopieren ($c66e) | $8526/34086 Laenge eines Parameters ermitteln ($c6a6) | $854D/34125 Directory-Zeile im Zwischenpuffer erzeugen ($c6ce) | $8688/34440 Scratch ($c823) | $8746/34630 Partition formatieren | $876E/34670 Copy ($c8f0) | $8841/34881 aktuelles File oeffnen ($c9fa) | $8876/34934 Byte aus aktueller Datei holen und auf Dateiende pruefen ($ca35) | $8895/34965 REL-File zum Kopieren vorbereiten ($ca53) | $88C5/35013 RENAME ($ca88) | $8903/35075 aktuellen Filetyp ermitteln und | $891E/35102 pruefen, ob alle Files vor dem '=' nicht existieren | $892F/35119 Memory-Befehle ($caf8) | $898F/35215 User-Befehle ($cb5c) | $89E4/35300 '#', oeffnen eines Direktzugriffkanals ($cb84) | $8A5D/35421 Block-Befehle ($cc1b) | $8A9F/35487 Parameter der Block-Befehle holen ($cc7c) | $8AD0/35536 ASCII-Werte aus dem Input-Puffer in HEX-Werte umwandeln | $8B23/35619 Block-Free ($ccf5) | $8B2F/35631 Block-Allocate ($cd03) | $8B65/35685 Block-Read-Parameter pruefen und Block lesen ($cd36) | $8B6B/35691 Byte aus Puffer holen ($cd3c) | $8B71/35697 Block lesen und Pufferzeiger setzen ($cd42) | $8B85/35717 Block-Read ($cd56) | $8B8E/35726 Super-Read | $8B9A/35738 u1 ($cd5f) | $8BAE/35758 Block-Write ($cd73) | $8BD1/35793 Super-Write | $8BD7/35799 u2 ($cd97) | $8BE3/35811 Block-Execute ($cda3) | $8BFA/35834 Block-Pointer ($cdbd) | $8C0F/35855 Kanal oeffnen ($cdd2) | $8C2F/35887 Kanal oeffnen, Blockparameter holen und testen ($cdf2) | $8C44/35908 Kanal oeffnen, Blockparameter holen und NICHT testen | $8C5C/35932 Puffer allokieren | $8C61/35937 Block-Befehle und Adressen ($cc5d) | $8C89/35977 Position des Records berechnen ($ce0e) | $8CC1/36033 Zahl der Bytes bis zum gesuchten Record berechnen ($ce2c) | $8CE6/36070 24*8-Bit-Multiplikationsroutine ($ce4e) | $8D06/36102 24/8-Bit-Divisionsroutine ($ce71) | $8D38/36152 Rechenregister 1 loeschen ($ced9) | $8D41/36161 Rechenregister 2 *2 bzw. *4 ($cee2) | $8D4C/36172 Rechenregister addieren ($ceed) | $8D59/36185 Feststellen, welcher Kanal schon am laengsten inaktiv ist | $8D7D/36221 Puffer wechseln im Zwei-Puffer-Betrieb ($cf1e) | $8E37/36407 Falls dem Kanal ein Puffer fehlt, einen neuen zuordnen ($cf7b) | $8E4D/36429 Aktiven Puffer wechseln ($cf8c) | $8E5C/36444 Byte ueber internen Schreibkanal in Puffer schreiben ($cf9b) | $8E78/36472 Byte in aktuelle Datei schreiben ($cfb7) | $8EB1/36529 Byte in Puffer schreiben, Pufferzeiger erhoehen ($cff1) | $8EC5/36549 Initialize ($d005) | $8EDC/36572 Blockheader des Verzeichnisheaders suchen | $8F03/36611 Partition initialisieren ($d042) | $8FD6/36822 Block einlesen und Folgeblock merken ($d09b) | $8FEA/36842 Block (und ggf. Folgeblock) im 2-Puffer-Modus lesen ($d0af) | $8FFE/36862 ??? | $9027/36903 Kanal zum Lesen holen und pruefen ($d0eb) | $9042/36930 Kanal zum Schreiben holen und pruefen ($d107) | $905F/36959 Aktuellen Filetyp holen ($d125) | $9069/36969 Kanal- und Puffernummer holen ($d12f) | $9071/36977 Byte aus aktuellem Puffer holen ($d137) | $909B/37019 Byte aus aktueller Datei holen ($d156) | $9112/37138 Schreiben eines Bytes in eine Datei im 2-Puffer Modus. ($d19d) | $9138/37176 Erhoehen des aktuellen Pufferzeigers ($d1c6) | $9145/37189 Autoboot bei Warmstart ein/aus | $9157/37207 Kanal oeffnen und entsprechende Zahl Puffer zuordnen ($d1df) | $919E/37278 Freigeben einer SA ausser der des Kommandokanals; Puffer freigeben ($d227) | $91CE/37326 Puffer und dessen Kanalzuordnung freigeben ($d25a) | $9204/37380 Suchen eines freien oder inaktiven Puffers ($d28e) | $9228/37416 Suchen und belegen eines freien Puffers ($d2ba) | $923E/37438 einen inaktiven Puffer eines Kanals freigeben ($d2da) | $9252/37458 Puffer freigeben <-- Einsprung | $9262/37474 Kanaele der Sekundaeradressen 1-14 freigeben ($d307) | $926E/37486 Die SA 0-14 des Laufwerks 0 freigeben | $9291/37521 'Stehlen' eines inaktiven Puffers ($d339) | $92DB/37595 Freien Kanal suchen ($d37f) | $92F4/37620 Byte fuer beliebige SA holen ($d39b) | $9303/37635 Byte aus beliebigem Kanal holen ($d3aa) | $9370/37744 Fehlerkanal auslesen bzw M-R-Befehl ($d414) | $93AA/37802 Lesen des naechsten Blocks ($d44d) | $93BD/37821 Lesen/Schreiben des aktuellen Puffers ($d460) | $93CF/37839 Datei auf internem Lesekanal oeffnen, | $93E0/37856 Datei auf internem Schreibkanal oeffnen, | $93E7/37863 Neuen Block an das Directory anhaengen ($d48d) | $9422/37922 Pufferzeiger auf bestimmten Wert setzen ($d4c8) | $9434/37940 interne Schreib-/Lesekanaele freigeben ($d4da) | $9450/37968 Holt Byte aus aktuellem Puffer ($d4f6) | $9460/37984 Prueft auf Diskettenwechsel | $9471/38001 T&S auf Gueltigkeit pruefen ($d506) | $94A8/38056 Track und Sektor aus Jobpuffer holen und als aktuelle T&S merken ($d552) | $94B5/38069 Auf gueltigen Block (T&S) pruefen ($d55f) | $94CB/38091 Meldung fuer falsches Formatkennzeichen ausgeben ($d572) | $94D3/38099 Job setzen und Controller aufrufen ($d57a) | $94DE/38110 Schreib-/Lesejobs pruefen und Durchfuehrung abwarten ($d586) | $94F8/38136 Job auf fehlerfreie Durchfuehrung pruefen ($d5a6) | $9585/38277 T&S an DC uebergeben ($d6d0) | $9598/38296 Aufruf des Controllers | $95AB/38315 Neue Datei im Directory eintragen ($d6e4) | $9678/38520 Datei mit SA 0-14 oeffnen ($d7b4) | $9773/38771 File zum Schreiben oeffnen ($d8c6) | $97A2/38818 Oeffnen eines Files mit Ueberschreiben ($d8f5) | $97ED/38893 Zugriffsart feststellen und File zum Lesen oeffnen ($d940) | $984D/38989 Oeffnen eines Files zum Lesen ($d9a0) | $9890/39056 neues File anlegen und zum Schreiben oeffnen ($d9e3) | $9896/39062 T&S eines Files holen und fuer 'LOAD "*",8' merken ($d9ef) | $98AB/39083 File-Modus oder File-Typ aus Kommandozeile holen ($da09) | $98CC/39116 APPEND: Fileende suchen und auf Schreiben umschalten ($da2a) | $98F7/39159 Oeffnen des Directory als Basicprogramm ($da55) | $995C/39260 CLOSE-Routine: aktuelle Sekundaeradresse schliessen ($dac0) | $9986/39302 Alle Dateien schliessen ($daec) | $999F/39327 Datei schliessen ($db02) | $9A2A/39466 letzten Dateiblock abspeichern ($db62) | $9A72/39538 Eintrag im Directory nach dem Schreiben updaten ($dba5) | $9B0D/39693 Kanal zum Lesen suchen | $9B9B/39835 Pufferzeiger initialisieren ($dcb6) | $9BC3/39875 File zum Schreiben oeffnen ($dcda) | $9CCA/40138 Byte in aktuellen Side-Sektor schreiben ($dd8d) | $9CD3/40147 Dateistatus setzen/loeschen ($dd95) | $9CE9/40169 Prueft den Jobcode des aktuellen Puffers auf 'Schreiben' ($ddab) | $9CF5/40181 prueft, ob gesuchtes File durch eine SA angesprochen wird ($ddb7) | $9D2E/40238 Puffer schreiben, wenn er veraendert wurde ($ddf1) | $9D3A/40250 Folgeblock im aktuellen Block eintragen ($ddfd) | $9D49/40265 T&S des Folgeblocks holen ($de0c) | $9D56/40278 Blocklaenge des letzten Datenblocks setzen ($de19) | $9D69/40297 Zeiger auf Anfang des aktiven Puffers setzen ($de2b) | $9D79/40313 T&S der aktuellen Datei holen ($de3b) | $9D8E/40334 Schreib-Lesejobs aufrufen ($de50) | $9DCE/40398 T&S des Folgeblocks des aktiven Kanals holen | $9DDE/40414 Pufferinhalte kopieren ($dea5) | $9DFA/40442 Puffer mit $00 fuellen ($dec1) | $9E0B/40459 Nummer des aktuellen Side-Sektors holen ($ded2) | $9E15/40469 Side-Sektor-Pufferzeiger auf beliebigen Wert setzen ($dedc) | $9E23/40483 Pufferzeiger des aktuellen Side-Sektors auf beliebigen | $9E32/40498 Gruppe anwaehlen, ggf. Side-Sektor laden ($def8) | $9E56/40534 Side-Sektor lesen/schreiben ($df1b) | $9E75/40565 Pufferzeiger des Side-Sektors nach $64-$65 holen ($df45) | $9E7D/40573 Anzahl der benoetigten Blocks einer REL-Datei berechnen ($df4c) | $9E97/40599 Anzahl der benoetigten Blocks einer REL-Datei berechnen | $9ED3/40659 Feststellen, ob Record existiert und ggf. richtige Gruppe anwaehlen ($df66) | $9F11/40721 Nummer des aktiven Puffers holen ($df93) | $9F1C/40732 Aktiven Puffer pruefen und holen ($df9e) | $9F33/40755 Pruefen, ob ein Puffer des Kanals nicht belegt ist ($dfb7) | $9F3E/40766 einem Kanal einen neuen Puffer zuordnen ($dfc2) | $9F4C/40780 naechsten Record holen ($dfd0) | $9FBF/40895 ggf. alten Puffer speichern, dann Folgeblock(s) einlesen ($e03c) | $9FFC/40956 Ein Byte in Record-Puffer schreiben ($e07c) | $A033/41011 Empfangene Daten in Record schreiben ($e0ab) | $A07B/41083 Rest eines Records mit $00 auffuellen ($e0f3) | $A08D/41101 Flag fuer 'Puffer geaendert' setzen ($e105) | $A09C/41116 Flag fuer 'Puffer geaendert' loeschen ($e115) | $A0A6/41126 Byte aus Record-Puffer holen ($e120) | $A0E1/41185 Naechsten Record lesen ($e153) | $A0EC/41196 Abbruch bei Fehler ($e15e) | $A0FD/41213 Letztes benutzte Zeichen im Record suchen ($e16e) | $A15C/41308 Letzten Datenblock einer REL-Datei | $A1A1/41377 Position-Befehl ($e207) | $A20D/41485 gesuchten Record zur Ausgabe bereitstellen ($e275) | $A235/41525 benoetigte Datenbloecke ggf. einlesen ($e29c) | $A298/41624 Puffer mit leeren Records fuellen ($e2e2) | $A2BC/41660 Position des naechsten Records berechnen ($e304) | $A2D6/41686 Bloecke zu REL-File hinzufuegen ($e31c) | $A438/42040 Parameter des letzten Records der Datei merken | $A459/42073 Neuen Side-Sektor zur relativen Datei hinzufuegen ($e31c) | $A547/42311 Wenn Gruppe voll, dann neue Gruppe anlegen | $A56E/42350 Prueft, ob Super-Side-Sektoren verwendet werden, oder nicht | $A574/42356 Super-Side-Sektor laden | $A5A9/42409 letzte existierende Gruppe ermitteln | $A5C0/42432 Gruppe anwaehlen | $A602/42498 Fehlermeldungen ($e4fc) | $A7AE/42926 Error-Routine des Controllers ($e60a) | $A7F1/42993 CmdError: Error-Routine des DOS ($e645) | $A83E/43070 Byte in Ziffernstring umwandeln ($e69b) | $A862/43106 Fehlermeldung bereitstellen ($e6bc) | $A8AD/43181 Fehlertext in Puffer schreiben ($e706) | $A926/43302 Autoboot-Routine | $A938/43320 JCBMBOOT: Autoboot-Programm aufrufen | $A94C/43340 JCBMBOOTRTN: Ruecksprung aus Autoboot-Programm | $A956/43350 Utility-Loader (&) ($e7a3) | $AA0F/43535 Sprungadressen der Error-Routinen merken | $AA27/43559 Sektorversatz einstellen | $AA2D/43565 Anzahl Leseversuche einstellen | $AA33/43571 Cache-Verzoegerung einstellen | $AA39/43577 ROM-Test | $AA3C/43580 Burst-Befehl $1e: CHGUTL (bei der 1571: $8fe5) | $AAA8/43688 Burst-Memory-Read/Write | $AB09/43785 Parameter '0' und '1' auswerten (CHGUTL-Parameter) | $AB1D/43805 ROM-Signatur pruefen (CRC-Test) (bei der 1571: $924e) | | BUS-Routinen | [Ein grosses Problem bei der Kommentierung der Bus-Routinen ist, dass die | Leitungen zwischen dem Computer und den Laufwerken low-aktiv sind und | im Computer sogar die Eingangs-Signale nicht wieder zurueckgekippt werden. | Zwischen den verschiedenen ROM-Listings gehen daher die Meinungen | auseiander, was nun unter einem High- und einem Low-Signal zu verstehen | ist. Weil selbst ein im Computer abgeschicktes Hi wieder als Lo empfangen | wird, wird dort deshalb haeufig der am Bus messbare Pegel benutzt. Dagegen | bezeichnen die mir bekannten DOS-Listings ein 1-Bit im Register als Hi | (bei dem die entsprechende Bus-Leitung dann aber Lo ist), weil dann der | 'aktive' Pegel mit Hi bezeichnet wird. Wenn also die Ausgaberegister Lo | sind, sind die entsprechenden Treiber inaktiv und stoeren andere Geraete | nicht bei der Datenuebertragung. Das bedeutet aber auch, dass das DATA OUT- | auf Lo gesetzt werden muss, wenn ein 1-Datenbit uebertragen werden soll. | Ich habe mich bei der Kommentierung der BUS-Routinen an das System der | mir bekannten DOS-Listings gehalten und bezeichne ein Signal als Hi, wenn | das entsprechende Register-Bit 1 ist.] | | $ABCF/43983 ATN-bearbeiten ($e85b; bei der 1571: $80ce) | $AC9D/44189 FSM: DRF (Device Request Fast) Signal senden (bei der 1571: $8199) | $ACB6/44214 FSM auf Eingang schalten | $ACCF/44239 FSM auf Ausgabe schalten | $ACE8/44264 DATA OUT auf Lo (die Busleitung wird dadurch Hi) | $ACF1/44273 DATA OUT auf Hi (die Busleitung wird dadurch Lo) | $ACFA/44282 CLOCK OUT auf Hi (die Busleitung wird dadurch Lo) | $AD03/44291 CLOCK OUT auf Lo (die Busleitung wird dadurch Hi) | $AD0C/44300 Bus auslesen und entprellen | $AD15/44309 ATN-Modus testen ($ea59; bei der 1571: $ea59) | $AD2F/44335 Kurze Zeit warten (bei der 1571: $a47e) | $AD3C/44348 NMI-Routine ($ff01) | $AD5C/44380 Daten auf seriellen Bus ausgeben ($e909; bei der 1571: $823d) | $AE42/44610 Byte vom seriellen Bus holen ($e9c9; bei der 1571: $82c7) | $AEB8/44728 Daten vom seriellem Bus holen ($ea2e; bei der 1571: $8342) | $AED9/44761 Ende bei Uebertragungsfehler | $AEDF/44767 Busbetrieb beenden | $AEEA/44778 JSPINOUT: FSM-Datenrichtung festlegen | $AEF2/44786 Fehlerblinken nach Selbsttest ($ea6e) | $AF24/44836 Reset-Routine ($eaa0) | $AFCA/45002 Warmstart ($eb22) | $AFE9/45033 Dos-Tabellen initialisieren ($eb3a) | $B0B3/45235 Ganze Diskette als Partition setzen | $B0CF/45263 Physikalisches 1581-Diskettenformat festlegen | $B0F0/45296 JIDLE - Hauptleerschleife ($ebe7) | $B15B/45403 Cache am Ende der Verzoegerungszeit auf Diskette schreiben | $B17C/45436 Directory formatieren und in Ausgabepuffer schreiben ($ec9e) | $B237/45623 Directoryzeile in Ausgabepuffer kopieren ($ed59) | $B245/45637 Byte aus Directory holen und zur Ausgabe bereitstellen ($ed67) | $B262/45666 Validate-Befehl ($ed84) | $B2C7/45767 Blocks eines Files in BAM belegen ($ede5) | $B2EF/45807 naechsten Block einer Partition holen | $B323/45859 Partition-Parameter aus Verzeichniseintrag holen | $B33C/45884 Partition in Bam belegen | $B348/45896 NEW-Befehl ($ee0d) | $B380/45952 ??? | $B390/45968 Verzeichnis-Header und BAM anlegen ($ee56) | $B43D/46141 BAM-Puffer loeschen ($f005) | $B44A/46154 neue BAM erzeugen ($eeb7) | $B515/46357 Wenn die BAM geaendert wurde, dann | $B546/46406 Block in Bam freigeben ($ef5f) | $B572/46450 Block in BAM belegen ($ef93) | $B5B4/46516 BAM-Zeiger auf Eintrag fuer aktuellen Track setzen ($f011) | $B5D8/46552 Pruefen, ob Block $4e im aktuellen Track frei ist ($efd2) | $B5F2/46578 Wenn BAM-Puffer leer, dann BAM einlesen ($f0df) | $B612/46610 BAM auf Diskette schreiben | $B633/46643 Verzeichnis-Header in aktuellen Puffer lesen, ggf. BAM lesen | $B643/46659 T&S und Puffernummer eines Dir-Sektors an DC uebergeben | $B64F/46671 BAM-Zeiger auf 1. BAM-Puffer setzen ($ef3a) | $B65B/46683 Anzahl freier Blocks zur Ausgabe bereitstellen ($ef4d) | $B668/46696 Folgeblock fuer Datei suchen ($f11e) | $B6ED/46829 Startblock einer neuen Datei suchen ($f1a9) | $B746/46918 naechsten freien Block im aktuellen Track suchen ($f1fa) | $B75E/46942 Prueft, ob im aktuellen Track die Anzahl freier Blocks stimmt. ($f220) | $B781/46977 Partition-Befehl | $B811/47121 Pruefen, ob alle Blocks der Partition vor dem Anlegen noch frei sind | $B851/47185 Partition-Namen holen | $B85F/47199 Parameter fuer die Partitionerstellung holen | $B88D/47245 Neuen Bereich anlegen | $B8D2/47314 Burst-Befehl $1f: Fastload (bei der 1571: $9080) | $B9D3/47571 ERROR: Controller-Error-Routine des Burst-Fastloads | $B9DF/47583 CMDERR: Fehler-Routine des Burst-Fastloads | $B9EC/47596 Fehlermeldung ausgeben (bei der 1571: $91ad) | $B9FB/47611 #$02 auf FSM-Bus ausgeben (File not found), TXA | $BA06/47622 Filenamen nach Drivenummer durchsuchen | $BA40/47680 Byte auf FSM-Bus ausgeben (bei der 1571: $9228) | $BA64/47716 Fehlerbehandlung fuer Burst-Fastload setzen | $BA7C/47740 Sprungvektoren der Fehlerbehandlung retten | $BA95/47765 Sprungvektoren der Fehlerbehandlung zurueckschreiben | $BAAE/47790 Burst-Befehl: Read mit logischen Blockangaben (bei der 1571: $83a4) | $BAF7/47863 Burst-Status uebermitteln (bei der 1571: $837c) | $BAFC/47868 Status in a setzen und uebermitteln (bei der 1571: $8381) | $BB11/47889 Burst-Befehle $00,$10: Read (bei der 1571: $8371) | $BB74/47988 Burst-Befehl: Write mit logischen Blockangaben | $BBF6/48118 Burststatus bei Schreibfehlern ausgeben | $BC01/48129 Burst-Befehle $02,$12: Write (bei der 1571: $83ec) | $BCB2/48306 Burst-Befehle $04,$14: Inquire Disk (bei der 1571: $848b) | $BD0A/48394 ??? | $BD12/48402 Burst-Befehle $06,$07,$16,$17: Format (bei der 1571: $84b7) | $BDFC/48636 Burst-Befehle $08,$09: (n.v.) (bei der 1571: $85a5) | $BE06/48646 Burst-Befehle $0a,$1a: Query Disk Format (bei der 1571: $8517) | $BEBB/48827 Burst-Befehl $0c: Inquire Status (bei der 1571: $856b) | $BEF8/48888 Burst-Befehle $0e,$0f: (n.v.) | $BF02/48898 Burst-Befehle $1c,$1d: Dump Cache | $BF44/48964 Kopf ggf. auf die angegebene Spur setzen (bei der 1571: $891b) | $BF5A/48986 Burst-Status senden, wenn gerade Daten vom Computer empfangen werden | $BF66/48998 Burst-Status setzen | $BF83/49027 FSM: Byte ausgeben (bei der 1571: $9228) | $BFAB/49067 Statusbyte ausgeben | $BFB0/49072 Job ausfuehren und ggf. bei Fehlern mehrmals versuchen (bei der 1571: $864b) | $BFE3/49123 Cachepuffer auf Diskette schreiben | $C026/49190 FSM: Wartet, bis naechstes Byte gesendet werden soll (bei der 1571: $86a0) | $C040/49216 physikalischen Folgesektor holen (bei der 1571: $886c) | $C07A/49274 logischen Folgesektor holen (bei der 1571: $886c) | $C097/49303 Groesste/kleinste Sektornummer suchen (bei der 1571: $8961) | $C0BE/49342 JLCC: Controller-Routine | $C163/49507 Tabellen des Controller-Programms | $C390/50064 JOB $84: MOTON_DV | $C393/50067 JOB $86: MOTOFF_DV | $C396/50070 JOB $88: MOTONI_DV | $C3A9/50089 JOB $8a: MOTOFFI_DV | $C3AF/50095 JOB $8c: SEEK_DV | $C3BB/50107 JOB $8e: FORMAT_DV | $C3D6/50134 Spur formatieren | $C546/50502 LED-Routinen des Controller-Programms | $C56A/50538 JOB $9c: SIDE_DV | $C589/50569 JOB $9e: BUFMOVE_DV | $C5AC/50604 JOB $a2: TRKWRT_DV | $C5AF/50607 Patches | $C600/50688 Cachepuffer auf Diskette schreiben | $C6D7/50903 JOBs $92, $a8: DISKIN_DV, PSEEK_DV | $C700/50944 JOB $a6: SP_WRITE | $C800/51200 JOB $a4: SP_READ | $C900/51456 JOBs $80, $90: READ_DV, WRITE_DV | $C9E1/51681 Job $a0: WRTVER_DV | $CA00/51712 Spur mit Cachedaten vergleichen | $CADC/51932 Verify-Error ausgeben | $CAE4/51940 JOB $b8: SEEKPHD_DV | $CB0F/51983 JOB $c0: RESTORE_DV | $CB26/52006 JOBs $d0, $e0: JUMPC_DV, EXBUF_DV: Programm im Jobpuffer ausfuehren | $CB35/52021 JOB $f0: FORMATDK_DV | $CB76/52086 JOB $b6: DETWP_DV | $CB85/52101 Job-Fehlermeldungen | $CB8D/52109 Prueft, ob Sektor in Cachepuffer passt, Cachezeiger setzen | $CB9F/52127 Timer setzen und starten | $CBB1/52145 Laufwerksmotor ein-/ausschalten | $CBC3/52163 Drive LED ein-/ausschalten | $CBD5/52181 Warten ... . . .zzz . .z .. | $CBEC/52204 Auf Controller-Ready warten | $CBF4/52212 Kommandobyte in Controller schreiben | $CD00/52480 Blockheader lesen | $CD3F/52543 Controller-Status pruefen | $CD63/52579 Wenn der Motor aus war, Motor einschalten und Verzoegerungszeit einstellen | $CD7B/52603 Anlaufvorgang ueberwachen | $CDBC/52668 Abfragen, ob Diskette eingelegt ist | $CDCC/52684 Jobauftrag beenden, alle Jobs nochmal pruefen | $CDE2/52706 Ruecksprung von Jobroutine, den selben Job nochmal pruefen | $CE00/52736 Hauptsteuerroutine des Controllers | $CE71/52849 Schrittmotor ansteuern | $CEA4/52900 Daten zwischen Cache und Puffer transferieren | $CEDC/52956 JTRANS_TS: logisches in physikalisches Format umwandeln | $CF51/53073 Schreiben/Lesen mit Cache-Daten | $CFA6/53158 Blockheader lesen | $CFB7/53175 Copy-Zeiger auf Cachepuffer-Anfang setzen | $CFC0/53184 Seite auswaehlen | $CFD1/53201 Controller initialisieren | $CFE3/53219 Precompensation ein/ausschalten | $D00D/53261 Daten vom Puffer in den Cache kopieren | $D549/54601 Daten vom Cache in den Puffer kopieren | $DA63/55907 CRC-Pruefsumme des Blockheaders testen | $DAFD/56061 IRQ-Routine | $DBC7/56263 Patches | $FF00/65280 Sprungvektoren | $FF75/65397 Tabelle der DOS-Funktionen | +------------------------------------------------------------------------ |