mirror of
https://github.com/a2-4am/passport.git
synced 2024-11-04 12:05:53 +00:00
refactor rwtslog and add RDOS support
This commit is contained in:
parent
bdda0f89ea
commit
4278a70f23
@ -221,6 +221,7 @@ IDBootloader
|
||||
bcs +
|
||||
lda #s_micrograms
|
||||
jsr PrintByID
|
||||
bcc .useuniv ; always branches
|
||||
;
|
||||
; Quick-DOS
|
||||
;
|
||||
@ -228,6 +229,14 @@ IDBootloader
|
||||
bcs +
|
||||
lda #s_quickdos
|
||||
jsr PrintByID
|
||||
bcc .useuniv ; always branches
|
||||
;
|
||||
; RDOS
|
||||
;
|
||||
+ jsr IDRDOS
|
||||
bcs +
|
||||
lda #s_rdos
|
||||
jsr PrintByID
|
||||
|
||||
+
|
||||
.useuniv
|
||||
|
26
src/id/rdos.a
Normal file
26
src/id/rdos.a
Normal file
@ -0,0 +1,26 @@
|
||||
;-------------------------------
|
||||
; IDRDOS
|
||||
; identify RDOS 16-sector bootloader
|
||||
;
|
||||
; in: $0800..$08FF contains T00,S00
|
||||
; first page of track buffer also contains T00,S00
|
||||
; out: C clear if RDOS 16-sector bootloader found
|
||||
; C set otherwise
|
||||
; all registers clobbered
|
||||
; all other flags clobbered
|
||||
;-------------------------------
|
||||
!zone {
|
||||
IDRDOS
|
||||
lda #$00
|
||||
ldx #$00
|
||||
ldy #$0E
|
||||
jsr compare ; if T00,S00,$00 ==
|
||||
!byte $01
|
||||
!byte $A9,$60 ; LDA #$60
|
||||
!byte $8D,$01,$08; STA $0801
|
||||
!byte $A2,$00 ; LDX #$00
|
||||
!byte $A0,$1F ; LDY #$1F
|
||||
!byte $B9,$00,$08; LDA $0800,Y
|
||||
!byte $49 ; EOR
|
||||
rts
|
||||
}
|
@ -155,6 +155,7 @@ FirstMover
|
||||
!source "id/dos33.a"
|
||||
!source "id/prodos.a"
|
||||
!source "id/pascal.a"
|
||||
!source "id/rdos.a"
|
||||
!source "id/jsr8b3.a"
|
||||
!source "id/mecc.a"
|
||||
!source "id/datasoft.a"
|
||||
|
@ -11,36 +11,45 @@
|
||||
; disk allows either $D4 or $D5 for the
|
||||
; first address prologue nibble
|
||||
;-------------------------------
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne +
|
||||
; DOS 3.3 variant
|
||||
lda #$03
|
||||
sta gDisplayBytes
|
||||
ldx #$4F
|
||||
ldy #$0A
|
||||
jsr compare ; and T00,S03,$4F ==
|
||||
jsr compare ; if T00,S03,$4F ==
|
||||
!byte $BD,$8C,$C0
|
||||
!byte $10,$FB
|
||||
!byte $4A
|
||||
!byte WILDCARD,$6A
|
||||
!byte $D0,$EF
|
||||
bcs +
|
||||
bcc .yeslsr
|
||||
; RDOS variant
|
||||
ldx #$4D
|
||||
ldy #$0A
|
||||
jsr compare ; or T00,S03,$4D ==
|
||||
!byte $BD,$8C,$C0
|
||||
!byte $10,$FB
|
||||
!byte $4A
|
||||
!byte WILDCARD,$6A
|
||||
!byte $D0,$EF
|
||||
bcs .endlsr
|
||||
.yeslsr
|
||||
lda #s_lsr6a
|
||||
jsr PrintByID
|
||||
inc gPatchCount
|
||||
+
|
||||
.endlsr
|
||||
|
||||
;-------------------------------
|
||||
; RWTS "CMP #$08 / BCS" identification
|
||||
; disk allows either $DE or a timing bit
|
||||
; for the first address epilogue nibble
|
||||
;-------------------------------
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne +
|
||||
; DOS 3.3 variant
|
||||
lda #$03
|
||||
sta gDisplayBytes
|
||||
ldx #$8B
|
||||
ldy #$15
|
||||
jsr compare ; and T00,S03,$8B ==
|
||||
jsr compare ; if T00,S03,$8B ==
|
||||
!byte $BD,$8C,$C0
|
||||
!byte $10,$FB
|
||||
!byte $C9,$DE
|
||||
@ -53,53 +62,57 @@
|
||||
!byte $EA
|
||||
!byte $18
|
||||
!byte $60
|
||||
bcs +
|
||||
bcc .yesbcs
|
||||
; RDOS variant
|
||||
ldx #$89
|
||||
ldy #$11
|
||||
jsr compare ; or T00,S03,$89 ==
|
||||
!byte $BD,$8C,$C0
|
||||
!byte $10,$FB
|
||||
!byte $C9,$DE
|
||||
!byte $F0,$09
|
||||
!byte $48
|
||||
!byte $68
|
||||
!byte $BD,$8C,$C0
|
||||
!byte $C9,$80
|
||||
!byte $B0
|
||||
bcs .endbcs
|
||||
.yesbcs
|
||||
lda #s_bcs08
|
||||
jsr PrintByID
|
||||
inc gPatchCount
|
||||
+
|
||||
.endbcs
|
||||
|
||||
;-------------------------------
|
||||
; RWTS "CMP / BNE 0" identification
|
||||
; disk allows any value for
|
||||
; for the first address epilogue nibble
|
||||
;-------------------------------
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne +
|
||||
; DOS 3.3 variant
|
||||
lda #$03
|
||||
sta gDisplayBytes
|
||||
ldx #$8B
|
||||
ldy #$09
|
||||
jsr compare ; and T00,S03,$8B ==
|
||||
jsr compare ; if T00,S03,$8B ==
|
||||
!byte $BD,$8C,$C0
|
||||
!byte $10,$FB
|
||||
!byte $C9,WILDCARD
|
||||
!byte $D0,$00
|
||||
bcs +
|
||||
lda #s_cmpbne0
|
||||
jsr PrintByID
|
||||
inc gPatchCount
|
||||
+
|
||||
|
||||
;-------------------------------
|
||||
; RWTS "CMP / BNE 0" identification (David-DOS variant)
|
||||
; disk allows any value for
|
||||
; for the first address epilogue nibble
|
||||
;-------------------------------
|
||||
lda gIsDavidDOS ; if David-DOS bootloader
|
||||
bne +
|
||||
bcc .yesbne0
|
||||
; David-DOS variant
|
||||
lda #$05
|
||||
sta gDisplayBytes
|
||||
ldx #$8B
|
||||
ldy #$09
|
||||
jsr compare ; and T00,S05,$8B ==
|
||||
jsr compare ; or T00,S05,$8B ==
|
||||
!byte $BD,$8C,$C0
|
||||
!byte $10,$FB
|
||||
!byte $C9,WILDCARD
|
||||
!byte $D0,$00
|
||||
bcs +
|
||||
bcs .endbne0
|
||||
.yesbne0
|
||||
lda #s_cmpbne0
|
||||
jsr PrintByID
|
||||
inc gPatchCount
|
||||
+
|
||||
.endbne0
|
||||
}
|
||||
|
@ -107,7 +107,8 @@ s_advint = $58
|
||||
s_dos32b0 = $59
|
||||
s_bootwrite = $5A
|
||||
s_rwtswrite = $5B
|
||||
STRINGCOUNT = $5C
|
||||
s_rdos = $5C
|
||||
STRINGCOUNT = $5D
|
||||
|
||||
!zone {
|
||||
StringTable
|
||||
@ -203,6 +204,7 @@ StringTable
|
||||
!word .dos32boot0
|
||||
!word .bootwrite
|
||||
!word .rwtswrite
|
||||
!word .rdos
|
||||
;
|
||||
; Text can contain substitution strings, which
|
||||
; are replaced by current values at runtime. Each
|
||||
@ -228,7 +230,7 @@ StringTable
|
||||
; can be set directly before calling PrintByID.
|
||||
;
|
||||
.header
|
||||
!text "Passport by 4am 2017-09-05",$00
|
||||
!text "Passport by 4am 2017-09-07",$00
|
||||
.mainmenu
|
||||
!text "________________________________________",$8D,$8D,$8D,$8D,$8D,$8D,$8D
|
||||
!text " "
|
||||
@ -506,4 +508,6 @@ StringTable
|
||||
!text "bootloader",$8D,$00
|
||||
.rwtswrite
|
||||
!text "T00,S02 Writing built-in RWTS",$8D,$00
|
||||
.rdos
|
||||
!text "T00,S00 Found RDOS bootloader",$8D,$00
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user