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 |