enable address checksum verification by default to simplify code and so converted DOS 3.2 disks get it

This commit is contained in:
4am 2017-11-10 13:38:31 -05:00
parent 586cfb9473
commit 62917dfec9
4 changed files with 10 additions and 18 deletions

View File

@ -6,20 +6,19 @@
;-------------------------------
; Universal RWTS
; a modified DOS 3.3-style RWTS that reads 16-sector (6-and-2 encoded) disks
; - address prologue "D4 AA 96" or "D5 AA 96"
; - address prologue $D4 $AA $96 or $D5 $AA $96
; - verifies address field checksum
; - any address epilogue
; - data prologue "D5 AA AD"
; - data prologue $D5 $AA $AD
; - verifies data field checksum
; - any data epilogue
;
; It verifies the data field checksum byte, but it ignores the address field
; checksum. It waits longer than a normal RWTS to find an address prologue --
; long enough that it will find the prologue even if there is only one sector
; on a track.
; - waits longer than a normal RWTS to find an address prologue (long enough
; that it will find the prologue even if there is only one sector on a track)
;
; It must be loaded at $B800. It uses the standard RWTS entry point at $BD00.
;
; Write support has been disabled. Any attempt to pass $02 or $04 RWTS commands
; will crash.
; will crash. See note below on how to re-enable.
;-------------------------------
universalrwts
@ -47,7 +46,7 @@ universalrwts
!byte $8C,$C0,$10,$FB,$4A,$C9,$6A,$D0,$EF,$BD,$8C,$C0,$10,$FB,$C9,$AA
!byte $D0,$F2,$BD,$8C,$C0,$10,$FB,$C9,$96,$D0,$E7,$A0,$03,$A9,$00,$85
!byte $27,$BD,$8C,$C0,$10,$FB,$2A,$85,$26,$BD,$8C,$C0,$10,$FB,$25,$26
!byte $99,$2C,$00,$45,$27,$88,$10,$E7,$A8,$D0,$00,$BD,$8C,$C0,$10,$FB
!byte $99,$2C,$00,$45,$27,$88,$10,$E7,$A8,$D0,$B7,$BD,$8C,$C0,$10,$FB
!byte $C9,$00,$D0,$00,$EA,$BD,$8C,$C0,$10,$FB,$C9,$00,$D0,$00,$18,$60
!byte $86,$2B,$85,$2A,$CD,$78,$04,$F0,$53,$A9,$00,$85,$26,$AD,$78,$04
!byte $85,$27,$38,$E5,$2A,$F0,$33,$B0,$07,$49,$FF,$EE,$78,$04,$90,$05

View File

@ -244,7 +244,6 @@ Action
jsr CreateRAMFile
+ jsr ResetProgress
jsr InitSectorMap
jsr CopyUniversal
lda #FALSE
sta gTriedUniv
sta gSaidWriting
@ -265,6 +264,7 @@ Action
sta TEXTTOP
lda #s_reading
jsr PrintByID
jsr CopyUniversal
jsr IgnoreAddressChecksum
jsr ReadSector
bcc +
@ -485,10 +485,6 @@ StartWithUniv
; note: execution falls through here
CopyUniversal
lda #>EnforceAddressChecksum-1
pha
lda #<EnforceAddressChecksum-1
pha
lda #$B8
CopyUniversalAnywhere
sta universalrwts

View File

@ -106,9 +106,6 @@ PreReadSector
IgnoreAddressChecksum
lda #$00
!byte $2C ; hide next LDA
EnforceAddressChecksum
lda #$B7
sta $B98A
rts

View File

@ -134,7 +134,7 @@ StringTable
; can be set directly before calling PrintByID.
;
.header
!text "Passport by 4am 2017-11-08",$00
!text "Passport by 4am 2017-11-10",$00
.mainmenu
!text "________________________________________",$8D,$8D,$8D,$8D,$8D,$8D,$8D
!text " "