;------------------------------- ; IDLaureate ; identify custom bootloader seen on disks from ; Laureate Learning Systems ; loads RWTS directly into language card ; ; in: track buffer contains T00,S00 ; A = 0 ; out: C clear if Laureate bootloader was found ; C set if not found ; A = 0 ; all other registers & flags clobbered ;------------------------------- !macro IDLaureate { ldx #$2E ldy #$08 jsr compare ; if T00,S00,$2E == !byte $AE,$FF,$08; LDX $08FF !byte $30,$1E ; BMI +$1E !byte $E0,$02 ; CPX #$02 !byte $D0 ; BNE bcs + ldx #$F8 jsr compare ; and T00,S00,$F8 == !byte $4C,$00,$B7; JMP $B700 !byte $00,$00,$00 !byte $FF,$0B ; passport-test-suite/Sound Ideas- Word Attack - Disk 1 - Ending Consonants.woz [C=0] matches + } ;------------------------------- ; TraceLaureate ; Create an RWTS that can read the disk (T01+). ; The original RWTS lives at $F800, which is ; inconvenient. So, starting with our built-in RWTS, ; we copy bits and pieces to create a similar RWTS ; that lives at $B800. ;; ; in: track buffer contains all of track 0 ; exits via ADStyle ;------------------------------- !zone { TraceLaureate lda #$00 sta modsrc lda #$04 clc adc #BASEPAGE sta modsrc+1 ldy #$E7 lda (modsrc),y sta UNIV_D1 ldy #$F1 lda (modsrc),y sta UNIV_D2 ldy #$FC lda (modsrc),y sta UNIV_D3 inc modsrc+1 ldy #$44 - lda (modsrc),y sta $b900,y iny cpy #$A0 bne - inc modsrc+1 ldy #$29 - lda (modsrc),y sta $BA00,y iny bne - ; ; use built-in RWTS for track 0 ; lda #$FE sta T00S0B ; ; don't read track 0 sectors $0C-$0F ; (never read, some disks have intentionally bad sectors there) ; (seen on Sound Ideas) ; lda #kSectorIgnore sta T00S0C sta T00S0D sta T00S0E sta T00S0F ; ; read the rest of the disk with this constructed RWTS ; jmp ADStyle }