Partition initialisieren ($d042) Einsprung von $84E0, $8ECE, $96DB, $A7EA, $B265, $B383, $B42F, $B7FD, $BCCB, $BEEA: 8F03: AD FB 01 LDA $01FB Autoboot aus 8F06: 29 BF AND #$BF 8F08: 8D FB 01 STA $01FB 8F0B: A5 8A LDA $8A OR-Maske fuer Burststatus 8F0D: 09 80 ORA #$80 b7=1: Fremdformat 8F0F: 85 8A STA $8A 8F11: 20 6E 92 JSR $926E SA 0-14 freigeben 8F14: 20 DC 8E JSR $8EDC Blockheader des Verzeichnis-Headers suchen 8F17: C9 02 CMP #$02 8F19: B0 06 BCS $8F21 Fehler, ==> 8F1B: A5 91 LDA $91 Sektorengroesse 8F1D: C9 02 CMP #$02 =2 (512 Bytes) ? 8F1F: F0 03 BEQ $8F24 ja, ==> Einsprung von $8F19: 8F21: 4C B9 8F JMP $8FB9 Fehler bzw. kein 1581-Format Einsprung von $8F1F: 8F24: 20 DE 94 JSR $94DE Block lesen 8F27: A5 6C LDA $6C Puffernummer holen 8F29: 0A ASL 8F2A: AA TAX 8F2B: A9 01 LDA #$01 Folgesektor holen 8F2D: 95 BB STA $BB,X 8F2F: A1 BB LDA ($BB,X) als 1. Sektor des Verzeichnisses merken 8F31: 8D E5 01 STA $01E5 8F34: A9 02 LDA #$02 Diskettenversionsnummer 8F36: 95 BB STA $BB,X (Formatkennzeichen) merken 8F38: A1 BB LDA ($BB,X) 8F3A: 85 6F STA $6F 8F3C: A9 00 LDA #$00 BAM-Puffer als leer kennzeichnen 8F3E: 8D 00 0A STA $0A00 8F41: 20 4F B6 JSR $B64F BAM einlesen 8F44: A9 00 LDA #$00 8F46: 85 25 STA $25 Flag 'Diskettenwechsel' loeschen 8F48: 85 6E STA $6E Drivestatus loeschen 8F4A: A0 02 LDY #$02 8F4C: B1 31 LDA ($31),Y Diskettenversionsnummer in Byte 2 der BAM 8F4E: CD EB 01 CMP $01EB = 1581-Nummer (normalerweise 'd') ? 8F51: D0 66 BNE $8FB9 nein, ==> 8F53: C8 INY 8F54: B1 31 LDA ($31),Y und steht in Byte 3 ihr Komplement ? 8F56: 49 FF EOR #$FF 8F58: CD EB 01 CMP $01EB 8F5B: D0 5C BNE $8FB9 nein, ==> 8F5D: A5 8A LDA $8A Flag fuer Fremdformat in der Burst-OR-Maske 8F5F: 29 7F AND #$7F loeschen 8F61: 85 8A STA $8A 8F63: A0 04 LDY #$04 8F65: B1 31 LDA ($31),Y ID1 8F67: 85 1D STA $1D 8F69: C8 INY 8F6A: B1 31 LDA ($31),Y ID2 8F6C: 85 1E STA $1E 8F6E: C8 INY 8F6F: B1 31 LDA ($31),Y E/A-Byte 8F71: 85 8D STA $8D 8F73: 29 20 AND #$20 Flag 'Superside-Sektor verwenden' 8F75: 8D 01 01 STA $0101 (b5=0) merken 8F78: C8 INY 8F79: B1 31 LDA ($31),Y Autoboot-Byte 8F7B: 10 08 BPL $8F85 aus, ==> 8F7D: AD FB 01 LDA $01FB Autoboot einschalten 8F80: 09 40 ORA #$40 8F82: 8D FB 01 STA $01FB Anzahl freier Blocks in Partition berechnen Einsprung von $8F7B, $B512: 8F85: A5 4D LDA $4D Aktuelle Tracknummer merken 8F87: 48 PHA 8F88: A2 00 LDX #$00 Anfangen mit 0 Blocks frei 8F8A: 8E A9 02 STX $02A9 8F8D: 8E AA 02 STX $02AA 8F90: A6 90 LDX $90 Starttrack der Partition 8F92: 24 B $24 Einsprung von $8F99, $8FAC, $8FB1: 8F93: E8 INX 8F94: 86 4D STX $4D 8F96: EC 2B 02 CPX $022B Dir-Track ? 8F99: F0 F8 BEQ $8F93 ja, ==> 8F9B: EC 2C 02 CPX $022C letzter Track + 1 ? 8F9E: B0 13 BCS $8FB3 ja, ==> 8FA0: 20 BD B5 JSR $B5BD BAM-Zeiger auf aktuelles Bitmuster setzen 8FA3: B1 31 LDA ($31),Y Freie Blocks des Tracks 8FA5: 18 CLC 8FA6: 6D A9 02 ADC $02A9 addieren 8FA9: 8D A9 02 STA $02A9 8FAC: 90 E5 BCC $8F93 kein Uebertrag, ==> 8FAE: EE AA 02 INC $02AA 8FB1: D0 E0 BNE $8F93 immer ==> Einsprung von $8F9E: 8FB3: 68 PLA Aktuelle Tracknummer zurueckholen 8FB4: 85 4D STA $4D 8FB6: A2 00 LDX #$00 8FB8: 60 RTS kein 1581-Diskettenformat Einsprung von $8F21, $8F51, $8F5B: 8FB9: A2 03 LDX #$03 Verzeichnis-Folgesektor 8FBB: 8E E5 01 STX $01E5 8FBE: A2 C0 LDX #$C0 E/A-Byte: b6: CRC-Test ein; b7:Verify ein 8FC0: 86 8D STX $8D b5=0: Super-Side-Sektoren verwenden 8FC2: A2 00 LDX #$00 Flags fuer REL-Datei loeschen 8FC4: 8E 01 01 STX $0101 8FC7: 86 25 STX $25 Flag fuer Diskettenwechsel loeschen 8FC9: 86 6E STX $6E Drivestatus loeschen 8FCB: 8E A9 02 STX $02A9 keine freien Blocks 8FCE: 8E AA 02 STX $02AA 8FD1: 86 1D STX $1D ID loeschen 8FD3: 86 1E STX $1E 8FD5: 60 RTS DOS 3 Previous Page / Next Page |