mirror of https://github.com/a2-4am/passport.git
137 lines
3.6 KiB
Plaintext
Executable File
137 lines
3.6 KiB
Plaintext
Executable File
;-------------------------------
|
|
; #NIBTABLE
|
|
; detect and fix non-standard
|
|
; nibble-to-byte translation
|
|
; e.g. Travels with Za-Zoom
|
|
;-------------------------------
|
|
_nibtable
|
|
jmp checkread
|
|
|
|
readdata
|
|
!byte 00,01
|
|
!byte $98,$99,02,03,$9C,04,05,06
|
|
!byte $A0,$A1,$A2,$A3,$A4,$A5,07,08
|
|
!byte $A8,$A9,$AA,09,$0A,$0B,$0C,$0D
|
|
!byte $B0,$B1,$0E,$0F,$10,$11,$12,$13
|
|
!byte $B8,$14,$15,$16,$17,$18,$19,$1A
|
|
!byte $C0,$C1,$C2,$C3,$C4,$C5,$C6,$C7
|
|
!byte $C8,$C9,$CA,$1B,$CC,$1C,$1D,$1E
|
|
!byte $D0,$D1,$D2,$1F,$D4,$D5,$20,$21
|
|
!byte $D8,$22,$23,$24,$25,$26,$27,$28
|
|
!byte $E0,$E1,$E2,$E3,$E4,$29,$2A,$2B
|
|
!byte $E8,$2C,$2D,$2E,$2F,$30,$31,$32
|
|
!byte $F0,$F1,$33,$34,$35,$36,$37,$38
|
|
!byte $F8,$39,$3A,$3B,$3C,$3D,$3E,$3F
|
|
|
|
writedata
|
|
!byte $96,$97,$9A,$9B,$9D,$9E,$9F,$A6
|
|
!byte $A7,$AB,$AC,$AD,$AE,$AF,$B2,$B3
|
|
!byte $B4,$B5,$B6,$B7,$B9,$BA,$BB,$BC
|
|
!byte $BD,$BE,$BF,$CB,$CD,$CE,$CF,$D3
|
|
!byte $D6,$D7,$D9,$DA,$DB,$DC,$DD,$DE
|
|
!byte $DF,$E5,$E6,$E7,$E9,$EA,$EB,$EC
|
|
!byte $ED,$EE,$EF,$F2,$F3,$F4,$F5,$F6
|
|
!byte $F7,$F9,$FA,$FB,$FC,$FD,$FE,$FF
|
|
|
|
checkread
|
|
lda gIsRWTS ; if DOS 3.3 RWTS
|
|
bne nibtable_exit
|
|
lda #$02
|
|
ldx #$6D
|
|
ldy #$03
|
|
jsr compare ; and T00,S02,$6D ==
|
|
!byte $BD,$29,$BA
|
|
bcs checkwrite
|
|
lda #$02
|
|
ldx #$82
|
|
ldy #$03
|
|
jsr compare ; and T00,S02,$82 ==
|
|
!byte $BD,$29,$BA
|
|
bcs checkwrite
|
|
lda #$02
|
|
ldx #$95
|
|
ldy #$03
|
|
jsr compare ; and T00,S02,$95 ==
|
|
!byte $BD,$29,$BA
|
|
bcs checkwrite
|
|
jsr fixwrite
|
|
checkwrite
|
|
lda #$03
|
|
ldx #$09
|
|
ldy #$03
|
|
jsr compare ; if T00,S03,$09 ==
|
|
!byte $59,00,$BA
|
|
bcs nibtable_exit
|
|
lda #$03
|
|
ldx #$1A
|
|
ldy #$03
|
|
jsr compare ; and T00,S03,$1A ==
|
|
!byte $59,00,$BA
|
|
bcs nibtable_exit
|
|
lda #$03
|
|
ldx #$2A
|
|
ldy #$03
|
|
jsr compare ; and T00,S03,$2A ==
|
|
!byte $D9,00,$BA
|
|
bcs nibtable_exit
|
|
jsr fixread
|
|
nibtable_exit
|
|
jmp nibtable_exit2
|
|
|
|
fixread
|
|
lda #$00
|
|
sta nibsrcindex
|
|
lda #$96
|
|
sta nibdestindex
|
|
nibtable_read
|
|
ldx nibsrcindex
|
|
lda readdata,x
|
|
sta nibcmpr
|
|
sta nibmodr
|
|
lda #$04
|
|
ldx nibdestindex
|
|
ldy #$01
|
|
jsr compare
|
|
nibcmpr !byte $FF
|
|
bcc nomodr
|
|
lda #$04
|
|
ldx nibdestindex
|
|
ldy #$01
|
|
jsr modify
|
|
nibmodr !byte $FF
|
|
nomodr
|
|
inc nibsrcindex
|
|
inc nibdestindex
|
|
bne nibtable_read
|
|
rts
|
|
|
|
fixwrite
|
|
lda #$00
|
|
sta nibsrcindex
|
|
lda #$29
|
|
sta nibdestindex
|
|
nibtable_write
|
|
ldx nibsrcindex
|
|
lda writedata,x
|
|
sta nibcmpw
|
|
sta nibmodw
|
|
lda #$04
|
|
ldx nibdestindex
|
|
ldy #$01
|
|
jsr compare
|
|
nibcmpw !byte $FF
|
|
bcc nomodw
|
|
lda #$04
|
|
ldx nibdestindex
|
|
ldy #$01
|
|
jsr modify
|
|
nibmodw !byte $FF
|
|
nomodw
|
|
inc nibsrcindex
|
|
inc nibdestindex
|
|
lda nibsrcindex
|
|
cmp #$40
|
|
bne nibtable_write
|
|
rts
|
|
nibtable_exit2
|