Directory formatieren und in Ausgabepuffer schreiben ($ec9e)
[Der Directory-Zeilen-Puffer wird in den Ausgabepuffer kopiert, dann wird
eine neue Zeile formatiert. Dieser Vorgang wiederholt sich, bis der
Ausgabepuffer voll ist. Beim ersten Aufruf muss sich der Diskname in dem
Dir-Zeilen-Puffer befinden (s. $8627) und der erste Filename mit JSR $82ed
gefunden worden sein. 8-Basiczeilen muessen den Ausgabepuffer genau fuellen,
deshalb ist jede Zeile 32-Bytes lang, bis auf den Disknamen: Er ist nur 30
Bytes lang, damit noch 2 Bytes Basic-Startadresse in den Puffer passen.
Ist der ganze Puffer ausgegeben worden, kann die Formatierung mit
JSR $b1c8 fortgesetzt werden.]
Einsprung von $9948:
B17C: A9 00 LDA #$00
B17E: 85 52 STA $52 Aktuelle SA=0
B180: A9 01 LDA #$01
B182: 20 5A 91 JSR $915A Lesekanal suchen 1 Puffer belegen
B185: A9 00 LDA #$00 Pufferzeiger auf 0 setzen
B187: 20 22 94 JSR $9422
B18A: A6 50 LDX $50 Kanalnummer holen
B18C: A9 00 LDA #$00
B18E: 9D 42 02 STA $0242,X EOI-Flag loeschen
B191: 20 11 9F JSR $9F11 Pufferzeiger auf 0 setzen
B194: AA TAX [alle 256 Bytes werden genutzt]
B195: A9 00 LDA #$00 letzten Jobcode loeschen
B197: 9D 72 02 STA $0272,X (Drivenummer 0 )
B19A: A9 01 LDA #$01 Startadersse = $0401
B19C: 20 B1 8E JSR $8EB1 Byte in Puffer schreiben
B19F: A9 04 LDA #$04 [diese Adresse stammt noch aus der Zeit der
B1A1: 20 B1 8E JSR $8EB1 alten CBM-Rechner / VC-20.]
B1A4: A9 01 LDA #$01 Platzhalter fuer den Basic-Verkettungszeiger
B1A6: 20 B1 8E JSR $8EB1 in den Puffer schreiben
B1A9: 20 B1 8E JSR $8EB1
B1AC: AD 8D 02 LDA $028D Drivenummer als Basiczeilennummer
B1AF: 20 B1 8E JSR $8EB1 in Puffer schreiben (Lo)
B1B2: A9 00 LDA #$00
B1B4: 20 B1 8E JSR $8EB1 (Hi)
B1B7: 20 37 B2 JSR $B237 Disk-Namen in den Puffer kopieren
B1BA: 20 11 9F JSR $9F11 aktiven Puffer holen
B1BD: 0A ASL
B1BE: AA TAX
B1BF: D6 BB DEC $BB,X Pufferzeiger -2 (=32)
B1C1: D6 BB DEC $BB,X
B1C3: A9 00 LDA #$00 Basic-Zeilenende-Kennzeichen in Puffer
B1C5: 20 B1 8E JSR $8EB1 schreiben
Puffer mit Directoryzeilen fuellen
Einsprung von $B1E9, $B25D:
B1C8: A9 01 LDA #$01 <-- (Einsprung)
B1CA: 20 B1 8E JSR $8EB1 Platzhalter fuer den Basic-Verkettungszeiger
B1CD: 20 B1 8E JSR $8EB1
B1D0: 20 4D 85 JSR $854D Directory-Zeile erzeugen
B1D3: 90 2C BCC $B201 kein File mehr auszugeben ?, ==>
B1D5: AD 8D 02 LDA $028D Programmlaenge als Basic-Zeilennummer
B1D8: 20 B1 8E JSR $8EB1 verwenden (LO)
B1DB: AD 8E 02 LDA $028E (Hi)
B1DE: 20 B1 8E JSR $8EB1
B1E1: 20 37 B2 JSR $B237 Directoryzeile in Puffer kopieren
B1E4: A9 00 LDA #$00 Basic-Zeilenende-Kennzeichen
B1E6: 20 B1 8E JSR $8EB1 in Puffer schreiben
B1E9: D0 DD BNE $B1C8 Puffer noch nicht voll, ==>
Einsprung von $B234:
B1EB: 20 11 9F JSR $9F11 aktiven Puffer holen
B1EE: 0A ASL
B1EF: AA TAX
B1F0: A9 00 LDA #$00 Pufferzeiger auf 0 setzen
B1F2: 95 BB STA $BB,X
B1F4: A9 88 LDA #$88
B1F6: A4 50 LDY $50 Flag:
B1F8: 8D 6E 02 STA $026E 'Directory wird auf SA 0 ausgegeben' setzen
B1FB: 99 34 02 STA $0234,Y b7=1: 'Daten ausgeben'; b3=1: kein EOI
B1FE: A5 54 LDA $54 aktuelles Datenbyte zurueckholen
B200: 60 RTS
'Blocks free'-Meldung in den Puffer schreiben
Einsprung von $B1D3:
B201: AD 8D 02 LDA $028D 'Blocks free' als Basic-Zeilennummer merken
B204: 20 B1 8E JSR $8EB1 (Lo)
B207: AD 8E 02 LDA $028E
B20A: 20 B1 8E JSR $8EB1 (Hi)
B20D: 20 37 B2 JSR $B237 Directoryzeile in Puffer kopieren
B210: 20 11 9F JSR $9F11
B213: 0A ASL Pufferzeiger -2
B214: AA TAX [Die Zeile darf incl. Basic-Ende-Zeichen
B215: D6 BB DEC $BB,X nicht laenger als 32 Bytes sein.]
B217: D6 BB DEC $BB,X
B219: A9 00 LDA #$00 Zeichen fuer Basic-Ende in Puffer schreiben
B21B: 20 B1 8E JSR $8EB1 (3 x $00)
B21E: 20 B1 8E JSR $8EB1
B221: 20 B1 8E JSR $8EB1
B224: 20 11 9F JSR $9F11 aktuellen Pufferzeiger holen
B227: 0A ASL
B228: A8 TAY
B229: B9 BB 00 LDA $00BB,Y
B22C: A6 50 LDX $50
B22E: 9D 42 02 STA $0242,X und als Puffer-Ende merken
B231: DE 42 02 DEC $0242,X -1 (letztes benutztes Zeichen merken)
B234: 4C EB B1 JMP $B1EB
Previous Page / Next Page