    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