;------------------------------- ; Passport maintains a table of codes for each sector on the disk. ; One byte per sector, arranged in increasing logical sector order ; from T00,S00 to T22,S0F. Some sectors have their own individual ; labels for convenience, but you can use math to find any specific ; sector. ; e.g. ; LDA #kSectorOptional ; STA T00S0A ; will mark T00,S0A as optional ; ; LDA #kSectorOptional ; LDY #$0A ; STA T00,Y ; will also mark T00,S0A as optional ; ; The sector map is reset for each disk (to #kSectorRequired for ; all sectors), then modified based on boot sector identification ; and other factors. ; ; Codes are opaque values, not bit flags. ; Some codes are grouped into ranges that are compared as integers. ; Always use labels for comparison. ; kSectorIgnore = $00 ; ignore this sector (don't even read it) kSectorOptional = $01 ; sector is optional (read, but errors are non-fatal) kSectorSwitchToBuiltinRWTS = $FE ; sector is required, and switch to built-in RWTS before reading it kSectorRequired = $FF ; sector is required (errors are fatal) ; range of codes that trigger various custom routines before reading a sector kSectorCustomFirst = $C0 kSectorCustomLast = $D0 ; specific codes kSectorResetAdaptiveRWTS = $C0 ; will accept any epilogue on next sector, then remember it kSectorIgnoreAddressChecksum = $C1 ; will ignore address field checksum kSectorCustomDOS32B4BB = $C2 ; DOS 3.2 / JMP B4BB RWTS swapper ;------------------------------- !zone { InitSectorMapWithIgnore lda #kSectorOptional !byte $2C InitSectorMap lda #kSectorRequired ldx #sectormap stx .B+2 ldx #$22 .A ldy #$0F .B sta $FFFF inc .B+1 bne + inc .B+2 + dey bpl .B dex bpl .A rts } sectormap T00S00 T00 !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T00S08 !byte $FF T00S09 !byte $FF T00S0A !byte $FF T00S0B !byte $FF T00S0C !byte $FF T00S0D !byte $FF T00S0E !byte $FF T00S0F !byte $FF T01 !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T01S0F !byte $FF T02 !byte $FF,$FF,$FF,$FF T02S04 !byte $FF T02S05 !byte $FF !byte $FF,$FF,$FF,$FF T02S0A !byte $FF,$FF T02S0C !byte $FF !byte $FF,$FF T02S0F !byte $FF T03 !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T04 !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T05 !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T06 !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T07 !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T08 !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T09 !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T0A !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T0B !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T0C !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T0D !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T0E !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T0F !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T10 !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T11 !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T11S0F !byte $FF T12 !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T13 !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T14 !byte $FF,$FF,$FF,$FF,$FF,$FF T14S06 !byte $FF !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T15 !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T16 !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T17 !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T18 !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T19 !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T1A !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T1B !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T1C !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T1D !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T1E !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T1F !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T20 !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T21 !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T22 !byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF T22S0F !byte $FF