neue BAM erzeugen ($eeb7)
Einsprung von $B268, $B40B:
B44A: A9 00 LDA #$00 beim Erzeugen der Bam mit der
B44C: 85 4D STA $4D ersten Spur beginnen
B44E: AD 2B 02 LDA $022B Link-Zeiger der BAM-Bloecke setzen
B451: 8D 00 0A STA $0A00 im 1. BAM-Puffer: tt, $02
B454: A9 00 LDA #$00
B456: 8D 00 0B STA $0B00 im 2. BAM-Puffer: $00, $ff
B459: A9 02 LDA #$02
B45B: 8D 01 0A STA $0A01
B45E: A9 FF LDA #$FF
B460: 8D 01 0B STA $0B01
B463: AD EB 01 LDA $01EB 1581-Formatkennzeichen abspeichern
B466: 8D 02 0A STA $0A02
B469: 8D 02 0B STA $0B02
B46C: 49 FF EOR #$FF negiert
B46E: 8D 03 0A STA $0A03 ergibt das ergaenzende Formatkennzeichen
B471: 8D 03 0B STA $0B03
B474: A5 1D LDA $1D ID1 und
B476: 8D 04 0A STA $0A04
B479: 8D 04 0B STA $0B04
B47C: A5 1E LDA $1E ID2 abspeichern
B47E: 8D 05 0A STA $0A05
B481: 8D 05 0B STA $0B05
B484: A5 8D LDA $8D E/A-Byte
B486: 8D 06 0A STA $0A06
B489: 8D 06 0B STA $0B06
B48C: A9 00 LDA #$00 Auto-Boot ausschalten
B48E: 8D 07 0A STA $0A07
B491: 8D 07 0B STA $0B07
Bloecke, die zur Partition gehoeren, freigeben
alle anderen als belegt kennzeichnen
B494: 20 52 B6 JSR $B652 Zeiger auf 1. BAM-Eintrag setzen ($4d = 0)
Einsprung von $B4E9:
B497: A0 10 LDY #$10 $10: Start der BAM im BAM-Block
Einsprung von $B4DF:
B499: E6 4D INC $4D naechsten Track waehlen
B49B: A5 4D LDA $4D aktuelle Tracknummer
B49D: C5 90 CMP $90 mit Start der Partition vergleichen
B49F: F0 0B BEQ $B4AC = : Blocks freigeben ==>
B4A1: 90 07 BCC $B4AA < : Blocks belegen ==>
B4A3: CD 2C 02 CMP $022C >= Ende der Partition ?
B4A6: F0 02 BEQ $B4AA
B4A8: 90 02 BCC $B4AC nein, (Blocks freigeben) ==>
Einsprung von $B4A1, $B4A6:
B4AA: 18 CLC ja: Blocks belegen
B4AB: 24 B $24
Einsprung von $B49F, $B4A8:
B4AC: 38 SEC Blocks freigeben
B4AD: 08 PHP
B4AE: A9 00 LDA #$00 Bam-Muster: 'Alle Blocks belegt'
B4B0: 85 40 STA $40
B4B2: 85 41 STA $41
B4B4: 85 42 STA $42
B4B6: 85 43 STA $43
B4B8: 85 44 STA $44
B4BA: A6 75 LDX $75 Anzahl Sektoren pro Track holen
B4BC: 8A TXA
B4BD: B0 02 BCS $B4C1 c=1, ==>
B4BF: A9 00 LDA #$00 c=0: 0 Blocks frei
Einsprung von $B4BD:
B4C1: 91 31 STA ($31),Y Anzahl der freien Blocks
B4C3: C8 INY
Einsprung von $B4D1:
B4C4: 28 PLP [Diese Routine ist fuer Disketten gedacht,
B4C5: 08 PHP die eine flexible Zahl Blocks/Track haben
B4C6: 26 40 ROL $40 haben und bei denen die Blockzahl kein
B4C8: 26 41 ROL $41 Vielfaches von 8 ist (1541: 17-21 Blocks).
B4CA: 26 42 ROL $42 Bei der 1581 (40 Blocks / Track) werden:
B4CC: 26 43 ROL $43 bei c=1 alle Bytes = $ff,
B4CE: 26 44 ROL $44 bei c=0 alle Bytes = $00]
B4D0: CA DEX Anzahl zu belegender Sektoren -1
B4D1: D0 F1 BNE $B4C4 naechsten Sektor belegen, ==>
B4D3: 28 PLP
Einsprung von $B4DC:
B4D4: B5 40 LDA $40,X Bitmuster in BAM kopieren
B4D6: 91 31 STA ($31),Y
B4D8: C8 INY
B4D9: E8 INX
B4DA: E0 05 CPX #$05 (5 Bytes)
B4DC: 90 F6 BCC $B4D4
B4DE: 98 TYA Ende des BAM-Puffers erreicht ?
B4DF: D0 B8 BNE $B499 nein, ==>
B4E1: A5 32 LDA $32 War es bereits der 2. Puffer ?
B4E3: C9 0B CMP #$0B
B4E5: F0 04 BEQ $B4EB ja, ==>
B4E7: E6 32 INC $32 naechsten BAM-Puffer waehlen
B4E9: D0 AC BNE $B497 immer ==>
Directory-Bloecke in BAM belegen und 'Blocks free' berechnen
Einsprung von $B4E5:
B4EB: A9 01 LDA #$01 Flag 'BAM abspeichern' setzen
B4ED: 85 35 STA $35
B4EF: A9 00 LDA #$00 'Blocks Free' Lo =0 (wozu ?)
B4F1: 8D A9 02 STA $02A9
B4F4: AD 2B 02 LDA $022B Directory-Track holen
B4F7: 85 4D STA $4D
B4F9: A9 00 LDA #$00 Verzeichnis-Header
B4FB: 85 4E STA $4E
B4FD: 20 72 B5 JSR $B572 belegen
B500: E6 4E INC $4E 1. BAM-Block
B502: 20 72 B5 JSR $B572 belegen
B505: E6 4E INC $4E 2. BAM-Block
B507: 20 72 B5 JSR $B572 belegen
B50A: AD E5 01 LDA $01E5 1. Verzeichnis-Block
B50D: 85 4E STA $4E
B50F: 20 72 B5 JSR $B572 belegen
B512: 4C 85 8F JMP $8F85 Anzahl 'Blocks free' berechnen
Previous Page / Next Page