JOB $a6: SP_WRITE
C700: 20 A6 CF JSR $CFA6 Blockheader lesen
C703: A5 88 LDA $88 Solltrack
C705: C5 1F CMP $1F = aktueller Track ?
C707: F0 03 BEQ $C70C ja, ==>
C709: 4C 88 CB JMP $CB88 Error $02 (Header nicht gefunden)
Einsprung von $C707:
C70C: A6 83 LDX $83 Jobnummer holen und als Index in eine
C70E: B5 0B LDA $0B,X 2 (!) Byte Tabelle verwenden
C710: 8D 01 60 STA $6001 physikalische T&S des Sektors holen
C713: B5 0C LDA $0C,X [Das funktioniert nur bei Job 0 !
C715: 8D 02 60 STA $6002 Da aber der verwendete Puffer immer $0300
C718: A9 00 LDA #$00 ist, besteht kein Grund, einen anderen
C71A: 85 4A STA $4A Jobpuffer zu verwenden.]
C71C: A9 03 LDA #$03 Zeiger auf Pufferanfang ($0300) setzen
C71E: 85 4B STA $4B
C720: EA .... NOP [19 NOPS]
C732: .... EA NOP
C733: AD E0 01 LDA $01E0 Controller-Befehl 'Write Sector'
C736: 20 F4 CB JSR $CBF4 an Controller uebergeben
C739: A4 91 LDY $91 Blockgroesse holen
C73B: C0 03 CPY #$03 Anzahl der zu schreibenden Seiten berechnen
C73D: D0 02 BNE $C741
C73F: C8 INY 128-Byte-Sektoren werden nicht
C740: EA NOP unterstuetzt)
Einsprung von $C73D, $C749, $C758, $C75D:
C741: AD 00 60 LDA $6000 Controller-Status holen
C744: 29 03 AND #$03
C746: 4A LSR
C747: 90 16 BCC $C75F 'Controller ready', ==>
C749: F0 F6 BEQ $C741 noch nicht 'Byte ready', ==>
C74B: 84 82 STY $82
C74D: A0 00 LDY #$00
C74F: B1 4A LDA ($4A),Y Byte auf Diskette schreiben
C751: 8D 03 60 STA $6003
C754: A4 82 LDY $82
C756: E6 4A INC $4A Pufferzeiger erhoehen
C758: D0 E7 BNE $C741
C75A: E6 4B INC $4B
C75C: 88 DEY noch eine Speicherseite zu schreiben ?
C75D: D0 E2 BNE $C741 ja, ==>
Einsprung von $C747:
C75F: 20 3F CD JSR $CD3F Controller-Status pruefen
C762: 4C CC CD JMP $CDCC Jobauftrag beenden
C765: FF ....
C7FF: .... FF
Controller-Programm 2
Previous Page / Next Page