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