mirror of
https://github.com/a2-4am/passport.git
synced 2024-11-12 18:04:43 +00:00
Merge pull request #73 from peterferrie/master
support Choplifter copying
This commit is contained in:
commit
578365f80e
@ -7,7 +7,8 @@
|
||||
SkipTrack
|
||||
; don't look for whole-track protections on track 0, that's silly
|
||||
lda gTrack
|
||||
beq .donotskip
|
||||
sec
|
||||
beq .linknoskip
|
||||
;
|
||||
; Electronic Arts protection track?
|
||||
;
|
||||
@ -24,6 +25,7 @@ SkipTrack
|
||||
; Unformatted track?
|
||||
;
|
||||
jsr IsUnformatted
|
||||
.linknoskip
|
||||
bcs .donotskip
|
||||
;
|
||||
; $F7F6EFEAAB protection track?
|
||||
@ -52,15 +54,12 @@ SkipTrack
|
||||
;
|
||||
lda gTrack
|
||||
cmp #$22
|
||||
bne +
|
||||
clc
|
||||
bne .donotskip
|
||||
lda gIsProDOS
|
||||
bne +
|
||||
lda #TRUE
|
||||
bne .donotskip
|
||||
sta gPossibleGamco
|
||||
+ clc
|
||||
!byte $24 ; hides next SEC
|
||||
.donotskip
|
||||
sec
|
||||
rts
|
||||
}
|
||||
|
||||
@ -79,40 +78,40 @@ IsF7F6
|
||||
lda $C0E9
|
||||
lda #$00
|
||||
jsr WAIT
|
||||
tay
|
||||
lda #$19
|
||||
sta nibcount
|
||||
ldy #$00
|
||||
- lda $C0EC
|
||||
bpl -
|
||||
jsr .readnib
|
||||
cmp #$F7
|
||||
beq +
|
||||
.restart iny
|
||||
bne -
|
||||
dec nibcount
|
||||
bne -
|
||||
beq .fail
|
||||
sec
|
||||
beq .driveoff
|
||||
+
|
||||
- lda $C0EC
|
||||
bpl -
|
||||
jsr .readnib
|
||||
cmp #$F6
|
||||
bne .restart
|
||||
- lda $C0EC
|
||||
bpl -
|
||||
jsr .readnib
|
||||
cmp #$EF
|
||||
bne .restart
|
||||
- lda $C0EC
|
||||
bpl -
|
||||
jsr .readnib
|
||||
cmp #$EE
|
||||
bne .restart
|
||||
- lda $C0EC
|
||||
bpl -
|
||||
jsr .readnib
|
||||
cmp #$AB
|
||||
bne .restart
|
||||
clc
|
||||
!byte $24 ; hides SEC
|
||||
.fail sec
|
||||
.driveoff
|
||||
lda $C0E8
|
||||
rts
|
||||
|
||||
.readnib
|
||||
- lda $C0EC
|
||||
bpl -
|
||||
rts
|
||||
}
|
||||
|
||||
;-------------------------------
|
||||
@ -250,7 +249,6 @@ xHeredityDog
|
||||
lda $08FE
|
||||
clc
|
||||
adc #$04
|
||||
pha
|
||||
ldx #$16
|
||||
ldy #$4A
|
||||
jsr CompareMemory
|
||||
@ -259,7 +257,6 @@ xHeredityDog
|
||||
!byte $C0,$10,$FB,$C9,$D5,$D0,$EE,$BD,$8C,$C0,$10,$FB,$C9,$AA,$D0,$E5
|
||||
!byte $A9,$4C,$A0,$00,$99,$00,$95,$88,$D0,$FA,$CE,$46,$BB,$AD,$46,$BB
|
||||
!byte $C9,$07,$D0,$EC,$A9,$18,$8D,$42,$B9,$A9,$0A,$8D,$ED,$B7,$D0,$05
|
||||
pla
|
||||
bcs .exit
|
||||
lda #kSectorOptional
|
||||
sta T00S0A
|
||||
@ -351,9 +348,8 @@ b4bbcompare
|
||||
!byte $08,$85,$3D,$85,$43,$A9,$BF,$85
|
||||
!byte $3F,$A9,$00,$85,$3C,$85,$42,$E6
|
||||
!byte $42,$A9,$FE,$85,$3E,$A0,$00,$AD
|
||||
bcc +
|
||||
jmp _b4bbexit
|
||||
+ lda gIsDOS32
|
||||
bcs _b4bbexit
|
||||
ldy gIsDOS32
|
||||
beq .dos32
|
||||
lda #$55 ; low byte of address that checks address prologue 1
|
||||
sta b4bbmodify+1
|
||||
@ -368,14 +364,13 @@ b4bbcompare
|
||||
lda #$B2 ; low byte of address that checks address epilogue 1
|
||||
sta b4bbmodify2+1
|
||||
ldx #$01 ; track
|
||||
ldy #$00 ; sector
|
||||
;;ldy #$00 ; sector
|
||||
.all
|
||||
stx gTrack
|
||||
sty gSector
|
||||
lda #$00
|
||||
sta gAddress
|
||||
lda #$0C
|
||||
clc
|
||||
adc #BASEPAGE
|
||||
sta gAddress+1
|
||||
jsr ReadSector ; read sector so we can look for 'JMP $B4BB' marker
|
||||
@ -386,13 +381,11 @@ b4bbcompare
|
||||
jsr compare
|
||||
!byte $4C,$BB,$B4
|
||||
bcs _b4bbexit
|
||||
lda gIsDOS32
|
||||
beq .dos32b
|
||||
ldx #$02 ; track
|
||||
ldy #$02 ; sector
|
||||
bne .allb ; always branches
|
||||
lda gIsDOS32
|
||||
bne .allb
|
||||
.dos32b
|
||||
ldx #$02 ; track
|
||||
ldy #$09 ; sector
|
||||
.allb
|
||||
stx gTrack
|
||||
@ -400,7 +393,6 @@ b4bbcompare
|
||||
jsr ReadSector ; read sector to get address prologue 3 for rest of disk
|
||||
bcs _b4bbexit
|
||||
lda #$0C
|
||||
clc
|
||||
adc #BASEPAGE
|
||||
sta x0+2
|
||||
x0 lda $FFC2 ; high byte modified at runtime (above)
|
||||
|
@ -48,7 +48,7 @@ flag = $FF ; byte
|
||||
RELBASE = $2000 ; dummy assignment for first build
|
||||
; to allow calculation of proper value
|
||||
}
|
||||
LOWPOINT = $4300 ; lowest available address for code
|
||||
LOWPOINT = $4000 ; lowest available address for code
|
||||
HIGHPOINT = $B200 ; highest available address+1 for code
|
||||
BASEPAGE = $10 ; Special Delivery tracer assumes
|
||||
; this is $10, so don't change it!
|
||||
|
@ -10,7 +10,7 @@
|
||||
;-------------------------------
|
||||
IDDatasoft
|
||||
lda #$00
|
||||
ldx #$00
|
||||
tax
|
||||
ldy #$7E
|
||||
jsr compare
|
||||
!byte $01,$4C,$7E,$08,$04,$8A,$0C,$B8
|
||||
|
@ -17,7 +17,7 @@ IDDavidson
|
||||
bne .no ; no, give up
|
||||
lda gSector ; sector $00?
|
||||
bne .no ; no, give up
|
||||
lda #$00 ; try re-reading the sector but
|
||||
;;lda #$00 ; try re-reading the sector but
|
||||
sta $B92E ; ignore data field checksum failure
|
||||
jsr ReadSector
|
||||
lda #$13
|
||||
|
@ -32,7 +32,7 @@ IDDOS33
|
||||
; Code at $0801 must be standard (with one exception)
|
||||
;
|
||||
++ lda #$00
|
||||
ldx #$00
|
||||
tax
|
||||
ldy #$3F
|
||||
jsr compare ; if T00,S00,$00 ==
|
||||
!byte $01
|
||||
|
@ -26,16 +26,16 @@ IDBootloader
|
||||
dex
|
||||
bpl -
|
||||
|
||||
lda gIsInfocom18
|
||||
bne .check13
|
||||
lda #s_infocom18
|
||||
jsr PrintByID
|
||||
jmp UseUniversal
|
||||
ldx gIsInfocom18
|
||||
beq .printinfo
|
||||
|
||||
.check13
|
||||
lda gIs13Sector
|
||||
bne .sanity
|
||||
lda #s_13sector
|
||||
|
||||
.printinfo
|
||||
jsr PrintByID
|
||||
jmp UseUniversal
|
||||
|
||||
@ -74,16 +74,14 @@ IDBootloader
|
||||
lda #TRUE
|
||||
sta gPossibleD5D5F7
|
||||
+ jsr IDDiversi
|
||||
bcc .diversi
|
||||
jsr IDPronto
|
||||
bcc .pronto
|
||||
lda #s_dosb0
|
||||
!byte $2c
|
||||
.diversi
|
||||
lda #s_diversidos
|
||||
!byte $2c
|
||||
.pronto
|
||||
bcc .printdos
|
||||
jsr IDPronto
|
||||
lda #s_prontodos
|
||||
bcc .printdos
|
||||
lda #s_dosb0
|
||||
|
||||
.printdos
|
||||
jsr PrintByID
|
||||
jmp TraceDOS33
|
||||
;
|
||||
@ -217,18 +215,16 @@ IDBootloader
|
||||
lda #TRUE
|
||||
sta gIsProDOS
|
||||
jsr IDVolumeName
|
||||
bcc +
|
||||
jmp .useuniv
|
||||
+
|
||||
bcs .useuniv
|
||||
|
||||
;
|
||||
; Dinkey-DOS (ProDOS file structure with DOS 3.3-ish RWTS in language card)
|
||||
; detectable now because IDVolumeName just read the first sector of the
|
||||
; volume directory into memory so we can look for a unique filename
|
||||
;
|
||||
jsr IDDinkeyDOS
|
||||
bcc +
|
||||
jmp .useuniv
|
||||
+ lda #s_dinkeydos
|
||||
bcs .useuniv
|
||||
lda #s_dinkeydos
|
||||
jsr PrintByID
|
||||
lda #TRUE
|
||||
sta gIsDinkeyDOS
|
||||
|
@ -13,7 +13,7 @@
|
||||
!zone {
|
||||
ID8b3
|
||||
lda #$00
|
||||
ldx #$00
|
||||
tax
|
||||
ldy #$5A
|
||||
jsr compare
|
||||
!byte $01,$20,$B3,$08,$D0,$19,$EA,$A5
|
||||
|
@ -16,7 +16,7 @@
|
||||
!zone {
|
||||
IDMECC
|
||||
lda #$00
|
||||
ldx #$00
|
||||
tax
|
||||
ldy #$17
|
||||
jsr compare
|
||||
!byte $01,$4C,$1A,$08,$17,$0F,$00,$00
|
||||
|
@ -17,7 +17,7 @@ IDPascal
|
||||
; addresses (e.g. Wizardry I, Sundog Frozen Legacy)
|
||||
;
|
||||
lda #$00
|
||||
ldx #$00
|
||||
tax
|
||||
ldy #$08
|
||||
jsr compare ; if T00,S00,$00 ==
|
||||
!byte $01
|
||||
|
@ -17,7 +17,7 @@ IDProDOS
|
||||
; Dazzle Draw, SuperPrint II). All of these variants
|
||||
; will match.
|
||||
lda #$00
|
||||
ldx #$00
|
||||
tax
|
||||
ldy #$05
|
||||
jsr compare ; if T00,S00,$00 ==
|
||||
!byte $01
|
||||
|
@ -12,7 +12,7 @@
|
||||
!zone {
|
||||
IDRDOS
|
||||
lda #$00
|
||||
ldx #$00
|
||||
tax
|
||||
ldy #$0E
|
||||
jsr compare ; if T00,S00,$00 ==
|
||||
!byte $01
|
||||
|
@ -15,24 +15,21 @@ Trace
|
||||
ldy #$01
|
||||
jsr CopyMemory
|
||||
pla
|
||||
tax
|
||||
pla
|
||||
ldx #0
|
||||
ldy $B6F8
|
||||
cpy #$4C
|
||||
bne +
|
||||
sty $B6F8 ; JMP for Disk II controller
|
||||
sta $B6F9 ; lo byte of callback
|
||||
stx $B6FA ; hi byte of callback
|
||||
jmp $B600
|
||||
+ ldy $B6FB
|
||||
beq +
|
||||
ldx #3
|
||||
ldy $B6FB
|
||||
cpy #$4C
|
||||
bne +
|
||||
sty $B6FB ; JMP for IIgs smart controller
|
||||
sta $B6FC ; lo byte of callback
|
||||
stx $B6FD ; hi byte of callback
|
||||
bne ++
|
||||
+ sta $B6FA,x ; hi byte of callback
|
||||
pla
|
||||
sta $B6F9,x ; lo byte of callback
|
||||
jmp $B600
|
||||
|
||||
+ lda #s_canttrace ; unknown disk controller
|
||||
++ pla
|
||||
lda #s_canttrace ; unknown disk controller
|
||||
jsr PrintByID
|
||||
jmp UseUniversal
|
||||
}
|
||||
|
@ -10,7 +10,7 @@
|
||||
!zone {
|
||||
IDDOS32
|
||||
lda #$00
|
||||
ldx #$00
|
||||
tax
|
||||
ldy #$0F
|
||||
jsr compare
|
||||
!byte $01
|
||||
@ -52,7 +52,7 @@ IDDOS32
|
||||
!zone {
|
||||
IDDOS32LO
|
||||
lda #$00
|
||||
ldx #$00
|
||||
tax
|
||||
ldy #$0F
|
||||
jsr compare
|
||||
!byte $01
|
||||
@ -74,6 +74,11 @@ IDDOS32LO
|
||||
ldy #$03
|
||||
jsr compare
|
||||
!byte $4C,$01,$03; JMP $0301
|
||||
bcc .exit
|
||||
ldx #$37
|
||||
ldy #$03
|
||||
jsr compare
|
||||
!byte $4C,$01,$03; JMP $0301
|
||||
.exit rts
|
||||
}
|
||||
|
||||
@ -85,10 +90,11 @@ IDDOS32LO
|
||||
TraceDOS32
|
||||
lda #<.TraceDOS32b
|
||||
ldx #>.TraceDOS32b
|
||||
jmp Trace
|
||||
bne .linktrace
|
||||
TraceDOS32LO
|
||||
lda #<.TraceDOS32LOb
|
||||
ldx #>.TraceDOS32LOb
|
||||
.linktrace
|
||||
jmp Trace
|
||||
|
||||
.TraceDOS32b
|
||||
@ -96,13 +102,19 @@ TraceDOS32LO
|
||||
sta $0846
|
||||
lda #>.TraceDOS32c
|
||||
sta $0847
|
||||
jmp $0801
|
||||
bne .linkjmp
|
||||
|
||||
.TraceDOS32LOb
|
||||
lda #<.TraceDOS32c
|
||||
sta $0842
|
||||
ldy #$00
|
||||
lda $0837
|
||||
cmp #$4C
|
||||
beq +
|
||||
ldy #$0A
|
||||
+ lda #<.TraceDOS32c
|
||||
sta $0838,y
|
||||
lda #>.TraceDOS32c
|
||||
sta $0843
|
||||
sta $0839,y
|
||||
.linkjmp
|
||||
jmp $0801
|
||||
|
||||
.TraceDOS32c
|
||||
@ -138,7 +150,7 @@ TraceDOS32LO
|
||||
!byte $85,$3F
|
||||
!byte $E6,$3F
|
||||
!byte $6C,$3E,$00
|
||||
bcs .fail
|
||||
bcs .tryChoplifter
|
||||
lda $03CC
|
||||
cmp #$B6
|
||||
beq +
|
||||
@ -174,6 +186,24 @@ TraceDOS32LO
|
||||
ldy $0300
|
||||
jmp $0301
|
||||
|
||||
.tryChoplifter
|
||||
lda #$03
|
||||
ldx #$01
|
||||
ldy #$10
|
||||
jsr CompareMemory
|
||||
!byte $A2,$2E ;LDX #$2E
|
||||
!byte $9A ;TXS
|
||||
!byte $84,$48 ;STY $48
|
||||
!byte $A2,$00 ;LDX #$00
|
||||
!byte $BC,$00,$03 ;LDY $0300,X
|
||||
!byte $88 ;DEY
|
||||
!byte $A9,$EA ;LDA #$EA
|
||||
!byte $20,$26,$03 ;JSR $0326
|
||||
bcs .fail
|
||||
lda #s_choplifter
|
||||
jsr PrintByID
|
||||
jmp Choplifter
|
||||
|
||||
; something did not match, not comfortable tracing,
|
||||
; but we know enough to know that the universal RWTS won't work,
|
||||
; so we're done
|
||||
@ -308,13 +338,13 @@ FFer
|
||||
bne +
|
||||
iny
|
||||
bne -
|
||||
tya
|
||||
ldy jCallRWTS+2
|
||||
dey
|
||||
sty .G+2
|
||||
dey
|
||||
sty .F+2
|
||||
ldy #$00
|
||||
tya
|
||||
tay
|
||||
.F sta $FF00,y
|
||||
iny
|
||||
bne .F
|
||||
|
@ -9,7 +9,7 @@
|
||||
;-------------------------------
|
||||
IDSpecDel
|
||||
lda #$00
|
||||
ldx #$00
|
||||
tax
|
||||
ldy #$58
|
||||
jsr compare
|
||||
!byte $02,$90,$4A,$C6,$27,$BD,$31,$09
|
||||
@ -35,7 +35,7 @@ TraceSpecDel
|
||||
jsr ClearTSBuffer
|
||||
lda #$00 ; set a marker to see if entire
|
||||
sta $3FFF ; RWTS loads successfully later
|
||||
lda #$00 ; save zero page before trace
|
||||
;; lda #$00 ; save zero page before trace
|
||||
ldx #$0A
|
||||
ldy #$01
|
||||
jsr CopyMemory
|
||||
@ -164,9 +164,10 @@ SDsuccess
|
||||
|
||||
jsr IncProgress
|
||||
inc gTrack
|
||||
lda #$20
|
||||
ldx #$10
|
||||
ldy #$10
|
||||
lda #$10
|
||||
tax
|
||||
tay
|
||||
asl
|
||||
jsr CopyMemory
|
||||
jsr WriteTrackNA ; doesn't really write anything in verify-only mode
|
||||
|
||||
|
205
src/initscan.a
Normal file
205
src/initscan.a
Normal file
@ -0,0 +1,205 @@
|
||||
;-------------------------------
|
||||
; ScanForDiskII
|
||||
; scan all slots for things that
|
||||
; look like Disk II cards
|
||||
;
|
||||
; out: all registers clobbered
|
||||
; all flags clobbered
|
||||
; DiskIIArray filled with 00 or FF
|
||||
;-------------------------------
|
||||
!zone {
|
||||
ScanForDiskII
|
||||
lda #$00
|
||||
sta cmp1
|
||||
ldx #$07
|
||||
.fingerprint
|
||||
txa
|
||||
ora #$C0
|
||||
sta cmp1+1
|
||||
ldy #$01
|
||||
lda (cmp1),y
|
||||
cmp #$20
|
||||
bne .next
|
||||
ldy #$03
|
||||
lda (cmp1),y
|
||||
bne .next
|
||||
ldy #$05
|
||||
lda (cmp1),y
|
||||
cmp #$03
|
||||
bne .next
|
||||
ldy #$FF
|
||||
lda (cmp1),y
|
||||
bne .next
|
||||
tya
|
||||
sta DiskIIArray-1,x
|
||||
.next
|
||||
dex
|
||||
bne .fingerprint
|
||||
rts
|
||||
}
|
||||
|
||||
!zone {
|
||||
ScanForRAMDisk
|
||||
lda #$00
|
||||
sta iunit
|
||||
- lda iunit
|
||||
clc
|
||||
adc #$10
|
||||
sta iunit
|
||||
beq .done
|
||||
cmp #$80
|
||||
beq -
|
||||
pha
|
||||
and #$70
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
tay
|
||||
pla
|
||||
ldx DiskIIArray-1,y
|
||||
bne -
|
||||
jsr GetVolumeName
|
||||
bcs -
|
||||
lda OnlineReturn
|
||||
beq -
|
||||
jsr GetVolumeInfo
|
||||
|
||||
;watch for RAM disk type
|
||||
|
||||
lda filetype
|
||||
and #$0F
|
||||
cmp #$0F
|
||||
bne -
|
||||
|
||||
;check for RAM[x] by name
|
||||
|
||||
ldy OnlineReturn
|
||||
cpy #4
|
||||
beq +
|
||||
cpy #5
|
||||
bne -
|
||||
dey
|
||||
+
|
||||
-- lda SlashRAM-1,y
|
||||
cmp VolumeName-1,y
|
||||
bne -
|
||||
dey
|
||||
bne --
|
||||
|
||||
;check free space
|
||||
;need at least $118 blocks
|
||||
|
||||
sec
|
||||
lda auxtype
|
||||
sbc blocks
|
||||
tax
|
||||
lda auxtype+1
|
||||
sbc blocks+1
|
||||
cmp #1
|
||||
bcc -
|
||||
bne +
|
||||
cpx #$18
|
||||
bcc -
|
||||
+ lda #TRUE
|
||||
sta gUsingRAMDisk
|
||||
.done
|
||||
rts
|
||||
|
||||
SlashRAM !byte $2F, $52, $41, $4D
|
||||
}
|
||||
|
||||
;-------------------------------
|
||||
; LoadPrefs
|
||||
; load preferences from file
|
||||
;
|
||||
; in: ProDOS must be in memory
|
||||
;-------------------------------
|
||||
LoadPrefs
|
||||
lda #$FF
|
||||
sta PREFSVER
|
||||
jsr LoadFile1Shot
|
||||
!word PREFSFILE
|
||||
!word PREFSVER
|
||||
!word PREFSREADLEN
|
||||
!word PREFSBUFFER
|
||||
jsr ValidatePrefs
|
||||
bcc .goodprefs
|
||||
jmp SavePrefs
|
||||
|
||||
.goodprefs
|
||||
rts
|
||||
|
||||
;-------------------------------
|
||||
; LoadFile1Shot
|
||||
; load a file into memory all at once,
|
||||
; using ProDOS MLI calls
|
||||
;
|
||||
; in: stack contains 8 bytes of parameters:
|
||||
; +1 address of pathname
|
||||
; +3 address of data buffer (to receive file contents)
|
||||
; +5 [word] maximum length of data to read
|
||||
; +7 address of ProDOS file buffer
|
||||
; out: if C set, load failed and A contains error code
|
||||
; from open or read
|
||||
; if C clear, load succeeded and ($02) contains
|
||||
; data loaded from file
|
||||
; all other flags clobbered
|
||||
; all registers clobbered
|
||||
; stack set to next instruction after parameters
|
||||
;-------------------------------
|
||||
!zone {
|
||||
LoadFile1Shot
|
||||
clc
|
||||
pla
|
||||
adc #$08
|
||||
sta $00
|
||||
tax
|
||||
pla
|
||||
adc #$00
|
||||
sta $01
|
||||
pha
|
||||
txa
|
||||
pha
|
||||
|
||||
ldy #$01
|
||||
lda ($00),y ; lo byte of pathname
|
||||
sta mliparam+1
|
||||
iny
|
||||
lda ($00),y ; hi byte of pathname
|
||||
sta mliparam+2
|
||||
ldy #$07
|
||||
lda ($00),y ; lo byte of ProDOS file buffer
|
||||
sta mliparam+3
|
||||
iny
|
||||
lda ($00),y ; hi byte of ProDOS file buffer
|
||||
sta mliparam+4
|
||||
|
||||
jsr OpenFile
|
||||
bcs .loadfile1s ; C set on error
|
||||
|
||||
pha ; push file reference number
|
||||
ldy #$03
|
||||
lda ($00),y ; lo address of data buffer
|
||||
sta mliparam+2
|
||||
iny
|
||||
lda ($00),y ; hi address of data buffer
|
||||
sta mliparam+3
|
||||
iny
|
||||
lda ($00),y ; lo data length
|
||||
sta mliparam+4
|
||||
iny
|
||||
lda ($00),y ; hi data length
|
||||
sta mliparam+5
|
||||
pla ; pull file reference number
|
||||
jsr ReadFile
|
||||
php ; save flags from readfile
|
||||
pha
|
||||
jsr CloseFile ; always close whether read worked or not
|
||||
pla
|
||||
plp ; restore flags from readfile
|
||||
; (so caller gets codes from read attempt,
|
||||
; not close)
|
||||
.loadfile1s
|
||||
rts
|
||||
}
|
167
src/memory.a
167
src/memory.a
@ -7,16 +7,32 @@
|
||||
; 0A00..0AFF - backup of zero page during Special Delivery tracer, used by RAM disk
|
||||
; 0B00..0BFF - used by RAM disk
|
||||
; 0C00..0CFF - clobbered by Special Delivery tracer
|
||||
; 0D00..0FFF - unused
|
||||
; 0D00..0EFF - unused
|
||||
; 0F00..0FFF - backup of page $BF (SaveProDOS, SwapProDOS)
|
||||
; 1000..1FFF - data buffer for current track
|
||||
; 2000..35FF - clobbered by Special Delivery tracer
|
||||
; 3600..3FFF - clobbered by lomem DOS 3.3 / Special Delivery tracers
|
||||
; 4000..42FF - backup of zero page, page 3, page $BF (SaveProDOS, SwapProDOS)
|
||||
; 4300..B1FF - program code
|
||||
; 4000..B1FF - program code
|
||||
; B200..BFFF - clobbered by DOS boot tracer (RDOS is B200+, DOS 3.x is B600+)
|
||||
;-------------------------------
|
||||
|
||||
|
||||
;-------------------------------
|
||||
; SaveProDOS
|
||||
; saves memory pages used by ProDOS
|
||||
; pages $BF
|
||||
; in: none
|
||||
; out: all flags and registers clobbered
|
||||
;-------------------------------
|
||||
!zone {
|
||||
SaveProDOS
|
||||
SaveGlobal
|
||||
lda #$BF
|
||||
ldx #$0F
|
||||
ldy #$01
|
||||
;;jsr CopyMemory ; fall through
|
||||
}
|
||||
|
||||
;-------------------------------
|
||||
; CopyMemory
|
||||
; in: A = source address (high)
|
||||
@ -40,27 +56,6 @@ CopyMemory
|
||||
rts
|
||||
}
|
||||
|
||||
;-------------------------------
|
||||
; ClearMemory
|
||||
; in: A = source address (high)
|
||||
; X = value to set
|
||||
; Y = number of pages
|
||||
; out: all flags and registers clobbered
|
||||
;-------------------------------
|
||||
!zone {
|
||||
ClearMemory
|
||||
sta .dest+2
|
||||
txa
|
||||
ldx #$00
|
||||
.dest sta $FF00,x
|
||||
inx
|
||||
bne .dest
|
||||
inc .dest+2
|
||||
dey
|
||||
bne .dest
|
||||
rts
|
||||
}
|
||||
|
||||
;-------------------------------
|
||||
; ClearTSBuffer
|
||||
; clear the $1000 byte memory buffer
|
||||
@ -72,7 +67,59 @@ ClearTSBuffer
|
||||
lda #BASEPAGE
|
||||
ldx #$00
|
||||
ldy #$10
|
||||
jmp ClearMemory
|
||||
;; jmp ClearMemory ; fall through
|
||||
|
||||
;-------------------------------
|
||||
; ClearMemory
|
||||
; in: A = source address (high)
|
||||
; X = value to set
|
||||
; Y = number of pages
|
||||
; out: all flags and registers clobbered
|
||||
;-------------------------------
|
||||
!zone {
|
||||
ClearMemory
|
||||
sta .dest+2
|
||||
.dest stx $FF00
|
||||
inc .dest+1
|
||||
bne .dest
|
||||
inc .dest+2
|
||||
dey
|
||||
bne .dest
|
||||
rts
|
||||
}
|
||||
|
||||
;-------------------------------
|
||||
; ReorderBuffer - convert data
|
||||
; buffer between ProDOS and
|
||||
; DOS 3.3 ordering (use after
|
||||
; read or before write under
|
||||
; ProDOS)
|
||||
; in: none
|
||||
; out: all flags clobbered
|
||||
; all registers clobbered
|
||||
;-------------------------------
|
||||
!zone {
|
||||
ReorderBuffer
|
||||
lda #BASEPAGE+1
|
||||
ldx #BASEPAGE+$0E
|
||||
ldy #$07
|
||||
clc
|
||||
bcc SwapMemory ; branch always
|
||||
}
|
||||
|
||||
;-------------------------------
|
||||
; SwapProDOS
|
||||
; saves/restores memory pages used by ProDOS
|
||||
; pages $BF
|
||||
; in: none
|
||||
; out: all flags and registers clobbered
|
||||
;-------------------------------
|
||||
SwapProDOS
|
||||
lda #$BF
|
||||
ldx #$0F
|
||||
ldy #$01
|
||||
sec
|
||||
;;jsr SwapMemory ; fall through
|
||||
|
||||
;-------------------------------
|
||||
; SwapMemory
|
||||
@ -114,76 +161,6 @@ SwapMemory
|
||||
rts
|
||||
}
|
||||
|
||||
;-------------------------------
|
||||
; ReorderBuffer - convert data
|
||||
; buffer between ProDOS and
|
||||
; DOS 3.3 ordering (use after
|
||||
; read or before write under
|
||||
; ProDOS)
|
||||
; in: none
|
||||
; out: all flags clobbered
|
||||
; all registers clobbered
|
||||
;-------------------------------
|
||||
!zone {
|
||||
ReorderBuffer
|
||||
lda #BASEPAGE+1
|
||||
ldx #BASEPAGE+$0E
|
||||
ldy #$07
|
||||
clc
|
||||
jmp SwapMemory
|
||||
}
|
||||
|
||||
;-------------------------------
|
||||
; SaveProDOS
|
||||
; saves memory pages used by ProDOS
|
||||
; pages $00, $03, $BF
|
||||
; in: none
|
||||
; out: all flags and registers clobbered
|
||||
;-------------------------------
|
||||
!zone {
|
||||
SaveProDOS
|
||||
lda #$00
|
||||
ldx #$40
|
||||
ldy #$01
|
||||
jsr CopyMemory
|
||||
lda #$03
|
||||
ldx #$41
|
||||
ldy #$01
|
||||
jsr CopyMemory
|
||||
SaveGlobal
|
||||
lda #$BF
|
||||
ldx #$42
|
||||
ldy #$01
|
||||
jsr CopyMemory
|
||||
.exit
|
||||
rts
|
||||
}
|
||||
|
||||
;-------------------------------
|
||||
; SwapProDOS
|
||||
; saves/restores memory pages used by ProDOS
|
||||
; pages $00, $03, $BF
|
||||
; in: none
|
||||
; out: all flags and registers clobbered
|
||||
;-------------------------------
|
||||
SwapProDOS
|
||||
lda #$00
|
||||
ldx #$40
|
||||
ldy #$01
|
||||
sec
|
||||
jsr SwapMemory
|
||||
lda #$03
|
||||
ldx #$41
|
||||
ldy #$01
|
||||
sec
|
||||
jsr SwapMemory
|
||||
lda #$BF
|
||||
ldx #$42
|
||||
ldy #$01
|
||||
sec
|
||||
jsr SwapMemory
|
||||
rts
|
||||
|
||||
;-------------------------------
|
||||
; ReorderLogicalToPhysical - reorder pages in
|
||||
; track data buffer for disks that expect
|
||||
|
100
src/mli.a
100
src/mli.a
@ -139,21 +139,16 @@ WriteTrackMLI
|
||||
;-------------------------------
|
||||
!zone {
|
||||
SaveFile1Shot
|
||||
pla
|
||||
sta $00
|
||||
pla
|
||||
sta $01
|
||||
tax
|
||||
lda #$0B
|
||||
clc
|
||||
adc $00
|
||||
bcc .noinc
|
||||
inx
|
||||
.noinc
|
||||
tay
|
||||
txa
|
||||
pla
|
||||
adc #$0B
|
||||
sta $00
|
||||
tax
|
||||
pla
|
||||
adc #$00
|
||||
sta $01
|
||||
pha
|
||||
tya
|
||||
txa
|
||||
pha
|
||||
|
||||
ldy #$01
|
||||
@ -211,85 +206,6 @@ SaveFile1Shot
|
||||
rts
|
||||
}
|
||||
|
||||
;-------------------------------
|
||||
; LoadFile1Shot
|
||||
; load a file into memory all at once,
|
||||
; using ProDOS MLI calls
|
||||
;
|
||||
; in: stack contains 8 bytes of parameters:
|
||||
; +1 address of pathname
|
||||
; +3 address of data buffer (to receive file contents)
|
||||
; +5 [word] maximum length of data to read
|
||||
; +7 address of ProDOS file buffer
|
||||
; out: if C set, load failed and A contains error code
|
||||
; from open or read
|
||||
; if C clear, load succeeded and ($02) contains
|
||||
; data loaded from file
|
||||
; all other flags clobbered
|
||||
; all registers clobbered
|
||||
; stack set to next instruction after parameters
|
||||
;-------------------------------
|
||||
!zone {
|
||||
LoadFile1Shot
|
||||
pla
|
||||
sta $00
|
||||
pla
|
||||
sta $01
|
||||
tax
|
||||
lda #$08
|
||||
clc
|
||||
adc $00
|
||||
bcc .noinc
|
||||
inx
|
||||
.noinc
|
||||
tay
|
||||
txa
|
||||
pha
|
||||
tya
|
||||
pha
|
||||
|
||||
ldy #$01
|
||||
lda ($00),y ; lo byte of pathname
|
||||
sta mliparam+1
|
||||
iny
|
||||
lda ($00),y ; hi byte of pathname
|
||||
sta mliparam+2
|
||||
ldy #$07
|
||||
lda ($00),y ; lo byte of ProDOS file buffer
|
||||
sta mliparam+3
|
||||
iny
|
||||
lda ($00),y ; hi byte of ProDOS file buffer
|
||||
sta mliparam+4
|
||||
|
||||
jsr OpenFile
|
||||
bcs .loadfile1s ; C set on error
|
||||
|
||||
pha ; push file reference number
|
||||
ldy #$03
|
||||
lda ($00),y ; lo address of data buffer
|
||||
sta mliparam+2
|
||||
iny
|
||||
lda ($00),y ; hi address of data buffer
|
||||
sta mliparam+3
|
||||
iny
|
||||
lda ($00),y ; lo data length
|
||||
sta mliparam+4
|
||||
iny
|
||||
lda ($00),y ; hi data length
|
||||
sta mliparam+5
|
||||
pla ; pull file reference number
|
||||
jsr ReadFile
|
||||
php ; save flags from readfile
|
||||
pha
|
||||
jsr CloseFile ; always close whether read worked or not
|
||||
pla
|
||||
plp ; restore flags from readfile
|
||||
; (so caller gets codes from read attempt,
|
||||
; not close)
|
||||
.loadfile1s
|
||||
rts
|
||||
}
|
||||
|
||||
;-------------------------------
|
||||
; open file via ProDOS MLI
|
||||
;
|
||||
|
111
src/passport.a
111
src/passport.a
@ -96,7 +96,26 @@ FM lda LastMover - 256,x
|
||||
lda FM+5
|
||||
cmp #(>RELBASE)-((>(RELBASE+255))->RELBASE)-1
|
||||
bne FM
|
||||
jmp OneTimeSetup
|
||||
|
||||
OneTimeSetup
|
||||
lda $C0E8
|
||||
jsr SaveProDOS
|
||||
ldx MACHINEID
|
||||
cpx #$EA
|
||||
bne .slotscan
|
||||
lda #$DF
|
||||
sta kForceLower
|
||||
.slotscan
|
||||
jsr ScanForDiskII
|
||||
lda DiskIIArray+5
|
||||
bne .founds6
|
||||
jmp FatalNoSlot6
|
||||
.founds6
|
||||
jsr ScanForRAMDisk
|
||||
jsr LoadPrefs ; load preferences (if available)
|
||||
jmp ResetVector
|
||||
|
||||
!source "initscan.a"
|
||||
|
||||
FirstMover
|
||||
!pseudopc RELBASE {
|
||||
@ -165,24 +184,6 @@ FirstMover
|
||||
!source "rwts.a"
|
||||
!source "standarddelivery.a"
|
||||
|
||||
OneTimeSetup
|
||||
lda $C0E8
|
||||
jsr SaveProDOS
|
||||
ldx MACHINEID
|
||||
cpx #$EA
|
||||
bne .slotscan
|
||||
lda #$DF
|
||||
sta kForceLower
|
||||
.slotscan
|
||||
jsr ScanForDiskII
|
||||
lda DiskIIArray+5
|
||||
bne .founds6
|
||||
jmp FatalNoSlot6
|
||||
.founds6
|
||||
jsr ScanForRAMDisk
|
||||
jsr LoadPrefs ; load preferences (if available)
|
||||
bcc ResetVector
|
||||
jsr SavePrefs ; save preferences (if possible)
|
||||
ResetVector
|
||||
lda #<ResetVector
|
||||
sta $03F2
|
||||
@ -411,17 +412,15 @@ ReadWithRWTS
|
||||
|
||||
checksector
|
||||
lda $FFFF ; status of current sector in sector map (modified above)
|
||||
pha
|
||||
cmp #kSectorCustomFirst ; call a custom routine before deciding what to do with this sector?
|
||||
bcc +
|
||||
cmp #kSectorCustomLast
|
||||
bcs +
|
||||
pla
|
||||
jsr PreReadSector
|
||||
pha ; replace status (on stack) with new status returned from PreReadSector
|
||||
+ cmp #kSectorIgnore ; skip this sector?
|
||||
+ pha ; replace status (on stack) with new status returned from PreReadSector
|
||||
cmp #kSectorIgnore ; skip this sector?
|
||||
beq nextsector
|
||||
+ cmp #kSectorSwitchToBuiltinRWTS ; switch to built-in RWTS before reading this sector?
|
||||
cmp #kSectorSwitchToBuiltinRWTS ; switch to built-in RWTS before reading this sector?
|
||||
bne +
|
||||
lda gTriedUniv
|
||||
beq +
|
||||
@ -499,18 +498,18 @@ checksector
|
||||
|
||||
nextsector
|
||||
pla
|
||||
dec checksector+1
|
||||
lda checksector+1
|
||||
cmp #$FF
|
||||
bne .nodec
|
||||
dec checksector+2
|
||||
.nodec
|
||||
lda gSector
|
||||
sec
|
||||
sbc #$01
|
||||
dec checksector+1
|
||||
ldy gSector
|
||||
dey
|
||||
tya
|
||||
jsr ChangeSector
|
||||
lda gSector
|
||||
bmi .prevtrack
|
||||
.linkread
|
||||
jmp .read
|
||||
.prevtrack
|
||||
lda #$0F
|
||||
@ -518,17 +517,16 @@ nextsector
|
||||
bne +
|
||||
lda #$0C
|
||||
+ jsr ChangeSector
|
||||
lda gTrack
|
||||
sec
|
||||
sbc #$01
|
||||
ldy gTrack
|
||||
dey
|
||||
tya
|
||||
jsr ChangeTrack
|
||||
jsr IncProgress
|
||||
lda gTrack
|
||||
bmi .pass
|
||||
bmi Pass
|
||||
cmp gLastTrack
|
||||
bcc .pass
|
||||
jmp .read
|
||||
.pass
|
||||
bcs .linkread
|
||||
Pass
|
||||
bit gMode
|
||||
bmi .passwrite
|
||||
lda #s_pass
|
||||
@ -545,12 +543,10 @@ nextsector
|
||||
jsr WriteRAMToDisk
|
||||
bcc +
|
||||
jmp FatalWriteError
|
||||
+ lda gPatchCount
|
||||
beq .passcrack0
|
||||
+ lda #s_passcrack0
|
||||
ldx gPatchCount
|
||||
beq .passprint
|
||||
lda #s_passcrack
|
||||
!byte $2C ; hide next LDA
|
||||
.passcrack0
|
||||
lda #s_passcrack0
|
||||
.passprint
|
||||
jsr PrintByID
|
||||
jmp TheEnd
|
||||
@ -602,17 +598,15 @@ FatalError
|
||||
jsr PrintByID
|
||||
lda gTrack
|
||||
cmp #$22
|
||||
beq .failont22
|
||||
jmp TheEnd
|
||||
bne TheEnd
|
||||
.failont22
|
||||
lda gSector
|
||||
cmp #$0F
|
||||
beq .failont22s0f
|
||||
ldx gIsDOS32
|
||||
bne +
|
||||
bne TheEnd
|
||||
cmp #$0C
|
||||
beq .failont22s0f
|
||||
+ jmp TheEnd
|
||||
bne TheEnd
|
||||
.failont22s0f
|
||||
lda #s_fatal220f
|
||||
jsr PrintByID
|
||||
@ -708,22 +702,18 @@ WriteTrackNA ; entry point used by Special Delivery tracer
|
||||
;-------------------------------
|
||||
FatalWriteError
|
||||
sta gDisplayBytes ; for use in error messages, if any
|
||||
cmp #MLI_IOERR
|
||||
beq .ioerr
|
||||
cmp #MLI_NODEV
|
||||
beq .nodev
|
||||
cmp #MLI_WRITEPROT
|
||||
beq .writeprot
|
||||
lda #s_othermli
|
||||
!byte $2C ; hide next LDA
|
||||
.ioerr
|
||||
tax
|
||||
lda #s_writeioerr
|
||||
!byte $2C ; hide next LDA
|
||||
.nodev
|
||||
cpx #MLI_IOERR
|
||||
beq .printerr
|
||||
lda #s_writenodev
|
||||
!byte $2C ; hide next LDA
|
||||
.writeprot
|
||||
cpx #MLI_NODEV
|
||||
beq .printerr
|
||||
lda #s_writeprot
|
||||
cpx #MLI_WRITEPROT
|
||||
beq .printerr
|
||||
lda #s_othermli
|
||||
.printerr
|
||||
pha
|
||||
lda #s_writeerr
|
||||
jsr PrintByID
|
||||
@ -847,6 +837,7 @@ _applyToAll
|
||||
!source "patchers/holle.a" ; gIsHolle only
|
||||
!source "patchers/zoomgrafix.a" ; gIsPhoenix only
|
||||
!source "patchers/e7everywhere.a" ; gIsBoot0 || gIsProDOS only
|
||||
!source "patchers/choplifter.a" ; gIsChoplifter only
|
||||
|
||||
lda gPatchCount
|
||||
beq .nopatches
|
||||
@ -873,6 +864,6 @@ LastMover
|
||||
}
|
||||
} else {
|
||||
!if (HIGHPOINT - (LastMover - FirstMover)) < LOWPOINT {
|
||||
!serious "code is too large to fit in available space!"
|
||||
!serious "code end (", HIGHPOINT - (LastMover - FirstMover), ") is below minimum (", LOWPOINT, ")!"
|
||||
}
|
||||
}
|
||||
|
@ -7,11 +7,10 @@
|
||||
!zone {
|
||||
bit gMode ; nothing to do here in verify-only mode
|
||||
bpl .exit
|
||||
lda gTrack
|
||||
cmp #$01
|
||||
ldx gTrack
|
||||
dex
|
||||
bne .exit
|
||||
lda #$00
|
||||
ldx #$00
|
||||
txa
|
||||
ldy #$23
|
||||
jsr compare ; if T01,S00,$00 !=
|
||||
!byte $AD,$F3,$03,$8D,$F4,$03,$20,$2F
|
||||
|
@ -10,8 +10,7 @@
|
||||
bit gMode ; nothing to do here in verify-only mode
|
||||
bpl .exit
|
||||
lda gIsBoot0 ; if DOS 3.3 boot0 loader
|
||||
bne .exit
|
||||
lda gIsBoot1 ; and DOS 3.3 boot1 loader
|
||||
ora gIsBoot1 ; and DOS 3.3 boot1 loader
|
||||
bne .exit
|
||||
lda #$08
|
||||
ldx #$5A
|
||||
|
443
src/patchers/choplifter.a
Normal file
443
src/patchers/choplifter.a
Normal file
@ -0,0 +1,443 @@
|
||||
;-------------------------------
|
||||
; #Choplifter
|
||||
; insane protection by Roland Gustafsson
|
||||
; licensed by Broderbund, Gebelli, and others
|
||||
;
|
||||
; module by qkumba
|
||||
;-------------------------------
|
||||
!zone {
|
||||
rts ; reachable only via inspect
|
||||
|
||||
Choplifter
|
||||
lda #$00
|
||||
sta gCommand
|
||||
sta dct+1
|
||||
jsr ChangeTrackNW
|
||||
jsr IncProgress
|
||||
|
||||
.read
|
||||
asl gTrack
|
||||
jsr ReadChoplifter
|
||||
lsr gTrack
|
||||
jsr WriteTrackNA
|
||||
ldx gTrack
|
||||
inx
|
||||
txa
|
||||
pha
|
||||
jsr ChangeTrackNW
|
||||
jsr IncProgress
|
||||
pla
|
||||
cmp #$23
|
||||
bne .read
|
||||
|
||||
bit gMode ; done if in verify-only mode
|
||||
bpl .exit
|
||||
|
||||
; start with RDOS as a minimal SD base
|
||||
; and copy SD code for free
|
||||
|
||||
ldx #ID_RDOS13
|
||||
jsr ConstructStandardDelivery
|
||||
ldx #$B0
|
||||
stx $104E ; exit address
|
||||
stx $1050 ; next-stage addressing
|
||||
inx
|
||||
stx $104F ; next-stage addressing
|
||||
inx
|
||||
stx $105D ; next-stage addressing
|
||||
|
||||
lda #$10
|
||||
sta modsrc+1
|
||||
lda #$5E
|
||||
sta modsrc
|
||||
ldx #$27
|
||||
lda #$67
|
||||
jsr .inittable
|
||||
|
||||
lda #$1F
|
||||
sta modsrc+1
|
||||
lda #$00
|
||||
sta modsrc
|
||||
ldx #$87
|
||||
lda #$C7
|
||||
jsr .inittable
|
||||
|
||||
dec modsrc+1
|
||||
ldx #$0F
|
||||
lda #$27
|
||||
jsr .inittable
|
||||
ldx #$47
|
||||
lda #$87
|
||||
jsr .inittable2
|
||||
|
||||
dec $1E00
|
||||
lda #$C0
|
||||
sta $10DD
|
||||
sta $1EAF
|
||||
sta $1F7F
|
||||
|
||||
ldy #0
|
||||
- lda .stage2,y
|
||||
sta $1D00,y
|
||||
iny
|
||||
bne -
|
||||
|
||||
lda #s_bootwrite
|
||||
jsr PrintByID
|
||||
lda #$00
|
||||
sta gTrack
|
||||
jsr WriteTrackNA
|
||||
inc gPatchCount
|
||||
|
||||
.exit
|
||||
jsr .cleanup
|
||||
jmp Pass
|
||||
|
||||
.cleanup
|
||||
lda $C0E8
|
||||
lda #$01
|
||||
sta gCommand
|
||||
sta dct+1
|
||||
rts
|
||||
|
||||
ReadChoplifter
|
||||
lda #BASEPAGE
|
||||
sta modsrc+1
|
||||
lda #$00
|
||||
sta modsrc
|
||||
- jsr ReadSector ; really just seek
|
||||
lda $C0E9 ; turn the drive back on
|
||||
; no need for spin-up because we are fast enough
|
||||
ldx #$04
|
||||
lda gTrack
|
||||
beq .settrack00
|
||||
cmp #$12
|
||||
bcc .settrack01
|
||||
cmp #$16
|
||||
bcc .ignore
|
||||
beq .readtrack0B
|
||||
cmp #$3E
|
||||
bcs .checktrack1E
|
||||
jsr .readtrack
|
||||
inc gTrack
|
||||
lda gTrack
|
||||
lsr
|
||||
bcs -
|
||||
dec gTrack
|
||||
.ignore
|
||||
rts
|
||||
|
||||
.readtrack0B
|
||||
|
||||
.checkkey1
|
||||
lda KEY
|
||||
bmi .cancel
|
||||
jsr .readnib
|
||||
- cmp #$DD
|
||||
bne .checkkey1
|
||||
jsr .readnib
|
||||
cmp #$F5
|
||||
bne -
|
||||
jsr .readnib
|
||||
cmp #$D5
|
||||
bne - ; this had the same bug (see below)
|
||||
ldx #$03
|
||||
- jsr .read4x4
|
||||
jsr .read4x4
|
||||
jsr .read4x4
|
||||
sta cmp1+0,x
|
||||
dex
|
||||
bpl -
|
||||
rts
|
||||
|
||||
.checktrack1E
|
||||
cmp #$40
|
||||
bcs .checktrack20
|
||||
rts
|
||||
|
||||
.cancel
|
||||
jsr .cleanup
|
||||
jmp Cancel
|
||||
|
||||
.settrack00
|
||||
lda #$D5
|
||||
sta cmp1+1
|
||||
sta cmp2+1
|
||||
lda #$DD
|
||||
sta cmp1+0
|
||||
sta cmp2+0
|
||||
!byte $2C
|
||||
.settrack01
|
||||
ldx #$08
|
||||
|
||||
.readtrack
|
||||
stx tmpx
|
||||
ldx #3
|
||||
|
||||
.retry0
|
||||
dex
|
||||
beq .fatal
|
||||
|
||||
.checkkey0
|
||||
lda KEY
|
||||
.linkcancel2
|
||||
bmi .cancel
|
||||
jsr .readnib
|
||||
- cmp cmp2+1
|
||||
bne .checkkey0
|
||||
jsr .readnib
|
||||
cmp cmp2+0
|
||||
bne -
|
||||
jsr .readnib
|
||||
eor cmp1+1
|
||||
bne - ; this had a bug
|
||||
; it branched to the middle nibble instead of the first one
|
||||
; it allowed PR0 PR1 [any] PR1 PR2 instead of requiring PR0 PR1 PR2
|
||||
tay
|
||||
-- jsr .read4x4
|
||||
sta (modsrc), y
|
||||
iny
|
||||
bne --
|
||||
- lda $C0EC
|
||||
bpl -
|
||||
cmp cmp1+0
|
||||
bne .retry0
|
||||
inc modsrc+1
|
||||
dec tmpx
|
||||
bne --
|
||||
jsr .readnib
|
||||
sta cmp1+1 ; prologue 3
|
||||
jsr .readnib
|
||||
sta cmp2+0 ; prologue 2
|
||||
jsr .readnib
|
||||
sta cmp2+1 ; prologue 1
|
||||
jsr .readnib
|
||||
sta cmp1+0 ; epilog
|
||||
rts
|
||||
|
||||
.fatal
|
||||
jsr .cleanup
|
||||
; if we get to here, we've
|
||||
jmp FatalError ; decided the read error is fatal
|
||||
|
||||
.checktrack20
|
||||
beq .readtrack20
|
||||
cmp #$44
|
||||
beq .readtrack22
|
||||
rts
|
||||
|
||||
.readtrack20
|
||||
ldx #1
|
||||
jsr .readtrack
|
||||
lda (BASEPAGE<<8)+$C5
|
||||
sta .prolog1+1
|
||||
lda (BASEPAGE<<8)+$CC
|
||||
sta .prolog2+1
|
||||
lda (BASEPAGE<<8)+$D3
|
||||
sta .prolog3+1
|
||||
|
||||
.checkkey2
|
||||
lda KEY
|
||||
bmi .linkcancel2
|
||||
jsr .readnib
|
||||
|
||||
.prolog1
|
||||
- cmp #$D1 ; SMC
|
||||
bne .checkkey2
|
||||
jsr .readnib
|
||||
.prolog2
|
||||
cmp #$D1 ; SMC
|
||||
bne -
|
||||
jsr .readnib
|
||||
.prolog3
|
||||
eor #$D1 ; SMC
|
||||
bne - ; this had the same bug
|
||||
tax
|
||||
-- lda $C0EC ; timing issue requires unrolling part of this
|
||||
bpl --
|
||||
sec
|
||||
rol
|
||||
sta tmp
|
||||
jsr .readnib
|
||||
and tmp
|
||||
sta (BASEPAGE+8)<<8,x
|
||||
inx
|
||||
jsr .read4x4
|
||||
sta (BASEPAGE+8)<<8,x
|
||||
inx
|
||||
jsr .readnib
|
||||
sec
|
||||
rol
|
||||
sta tmp
|
||||
- lda $C0EC
|
||||
bpl -
|
||||
and tmp
|
||||
sta (BASEPAGE+8)<<8,x
|
||||
inx
|
||||
cmp #$EA
|
||||
bne --
|
||||
rts
|
||||
|
||||
.readtrack22
|
||||
ldx #$40
|
||||
ldy #0
|
||||
-- dey
|
||||
bne +
|
||||
dex
|
||||
beq ++
|
||||
+ jsr .readnib
|
||||
- cmp #$D5
|
||||
bne --
|
||||
jsr .readnib
|
||||
cmp #$FF
|
||||
bne -
|
||||
jsr .readnib
|
||||
cmp #$DD
|
||||
bne - ; this had the same bug
|
||||
ldx #$00
|
||||
- jsr .read4x4
|
||||
sta BASEPAGE<<8,x
|
||||
inx
|
||||
bne -
|
||||
++ rts
|
||||
|
||||
.read4x4
|
||||
- lda $C0EC
|
||||
bpl -
|
||||
sec
|
||||
rol
|
||||
sta tmp
|
||||
- lda $C0EC
|
||||
bpl -
|
||||
and tmp
|
||||
rts
|
||||
|
||||
.readnib
|
||||
- lda $C0EC
|
||||
bpl -
|
||||
rts
|
||||
|
||||
.inittable
|
||||
ldy #$08
|
||||
|
||||
.inittable2
|
||||
sta tmp
|
||||
|
||||
.buildtable
|
||||
txa
|
||||
sta (modsrc),y
|
||||
dex
|
||||
iny
|
||||
tya
|
||||
and #$0F
|
||||
cmp #$0F
|
||||
bne .buildtable
|
||||
tya
|
||||
sbc #$0F
|
||||
tay
|
||||
txa
|
||||
sta (modsrc),y
|
||||
tya
|
||||
adc #$18-1 ; carry set by sbc
|
||||
tay
|
||||
txa
|
||||
adc #$0F
|
||||
tax
|
||||
cmp tmp
|
||||
bne .buildtable
|
||||
rts
|
||||
|
||||
.stage2 !pseudopc $B000 { ; high address that won't be hit on the first round of SD
|
||||
lda $c057
|
||||
lda $c054
|
||||
lda $c052
|
||||
lda $c050
|
||||
ldx #$42
|
||||
txs
|
||||
lda #>(.resume-1)
|
||||
pha
|
||||
lda #<(.resume-1)
|
||||
pha
|
||||
jmp $4000
|
||||
|
||||
.resume
|
||||
ldx #0
|
||||
- lda .stager,x
|
||||
sta $500,x
|
||||
lda (*+$ff) and $ff00,x
|
||||
sta $200,x
|
||||
lda (*+$1ff) and $ff00,x
|
||||
sta $400,x
|
||||
txs
|
||||
inx
|
||||
bne -
|
||||
jsr .dostep4
|
||||
ldy #2 ; pagehi, first table
|
||||
sty $807
|
||||
ldy #$60 ; rts
|
||||
sty $84c
|
||||
ldx $2b
|
||||
jsr .callSD ; including original $8xx to $7xx
|
||||
asl $807 ; 4xx, second table
|
||||
jmp $500
|
||||
|
||||
.stager !pseudopc $500 {
|
||||
jsr .callSD
|
||||
jsr .step
|
||||
lda #$60 ; rts
|
||||
sta $801
|
||||
|
||||
; to enable writing requires finding three spare pages
|
||||
; that is common to all games. I did not succeed.
|
||||
; for that reason, auto-crack is read-only.
|
||||
|
||||
sta $207
|
||||
|
||||
lda #4
|
||||
sta $27
|
||||
jsr $823 ; read patch table to $400
|
||||
ldy #0 ; avoid CFFA bug (Y is not zero on return)
|
||||
- lda $400,y
|
||||
sta .patcher+1
|
||||
lda $401,y
|
||||
sta .patcher+2
|
||||
lda $402,y
|
||||
iny
|
||||
iny
|
||||
iny
|
||||
|
||||
.patcher
|
||||
sta $d1d1
|
||||
cmp #$ea
|
||||
bne -
|
||||
jsr .dostep2 ; reach track $22
|
||||
sta $3d
|
||||
dec $27
|
||||
jsr $823 ; read high scores to $400
|
||||
ldy #0 ; avoid CFFA bug (Y is not zero on return)
|
||||
- lda $700,y
|
||||
sta $800,y
|
||||
iny
|
||||
bne -
|
||||
lda $C088,x
|
||||
jmp ($20)
|
||||
|
||||
.callSD
|
||||
sta $806 ; pagelo
|
||||
ldy #$ff
|
||||
jsr $805
|
||||
beq .step
|
||||
|
||||
.dostep4
|
||||
jsr .dostep2
|
||||
|
||||
.dostep2
|
||||
jsr .step
|
||||
|
||||
.step
|
||||
jsr $82F
|
||||
lsr $40
|
||||
rts
|
||||
} ;$5xx
|
||||
} ;$Bxxx
|
||||
}
|
@ -29,8 +29,7 @@
|
||||
; additional samples.)
|
||||
;
|
||||
lda gIsBoot0
|
||||
bne .exit
|
||||
lda gPossibleD5D5F7
|
||||
ora gPossibleD5D5F7
|
||||
bne .exit
|
||||
|
||||
+ ldy #$20
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
lda #$01
|
||||
ldx #$EE
|
||||
ldy #$01
|
||||
tay
|
||||
jsr compare ; and T00,S01,$EE ==
|
||||
!byte $FB
|
||||
bcs .exit
|
||||
@ -27,8 +27,7 @@
|
||||
beq .yes
|
||||
|
||||
lda gIsPanglosDOS
|
||||
bne +
|
||||
lda gCapturedDiskVolumeNumber
|
||||
ora gCapturedDiskVolumeNumber
|
||||
bne +
|
||||
lda gDiskVolumeNumber
|
||||
cmp #$FE
|
||||
|
@ -10,8 +10,8 @@
|
||||
bpl .exit
|
||||
lda gIsDOS32
|
||||
bne .exit
|
||||
lda gTrack
|
||||
cmp #$01
|
||||
ldx gTrack
|
||||
dex
|
||||
bne .exit
|
||||
lda #$08
|
||||
ldx #$D6
|
||||
|
@ -11,8 +11,8 @@
|
||||
bpl .exit
|
||||
lda gIsBoot0
|
||||
bne .exit
|
||||
lda gTrack
|
||||
cmp #$01
|
||||
ldx gTrack
|
||||
dex
|
||||
bne .exit
|
||||
|
||||
ldy #(@search1end-@search1start)
|
||||
|
@ -18,8 +18,7 @@
|
||||
- jmp .exit
|
||||
+ bvc - ; nothing to do here in demuffin mode
|
||||
lda gIsHolle
|
||||
beq +
|
||||
jmp .exit
|
||||
bne -
|
||||
+ lda gTrack
|
||||
bne +
|
||||
jmp .DecryptBootloader
|
||||
@ -246,11 +245,11 @@
|
||||
EOR $01
|
||||
AND #$01
|
||||
.alternatingTrackEnd
|
||||
bcs +
|
||||
bcs .exit
|
||||
ldy #$01
|
||||
jsr modify
|
||||
!byte $A9 ; EOR -> LDA so alternating track check always passes
|
||||
+
|
||||
|
||||
jmp .exit
|
||||
.reorderAndExit
|
||||
jsr ReorderBuffer
|
||||
|
@ -8,8 +8,7 @@
|
||||
bit gMode ; nothing to do here in verify-only mode
|
||||
bpl .exit
|
||||
lda gIsBoot0 ; if DOS 3.3 boot0 loader
|
||||
bne .exit
|
||||
lda gIsBoot1 ; and DOS 3.3 boot1 loader
|
||||
ora gIsBoot1 ; and DOS 3.3 boot1 loader
|
||||
bne .exit
|
||||
lda #$0D
|
||||
ldx #$4D
|
||||
|
@ -52,7 +52,7 @@
|
||||
jsr PrintByID
|
||||
lda #$03
|
||||
ldx #$00
|
||||
ldy #$03
|
||||
tay
|
||||
jsr modify ; then set T02,S03,$00 =
|
||||
!byte $4C,$84,$9D
|
||||
.exit
|
||||
|
@ -10,12 +10,11 @@
|
||||
lda gTrack
|
||||
cmp #$02
|
||||
bne .exit
|
||||
lda gIsDOS32
|
||||
lda #$03
|
||||
ldx gIsDOS32
|
||||
bne +
|
||||
lda #$0A
|
||||
!byte $2C ; hide next LDA
|
||||
+ lda #$03
|
||||
sta gDisplayBytes
|
||||
+ sta gDisplayBytes
|
||||
ldx #$D7
|
||||
ldy #$04
|
||||
jsr compare ; and T02,S0x,$D7 ==
|
||||
|
@ -10,7 +10,6 @@ _jmpbbfe
|
||||
bpl .exit
|
||||
lda gIsBoot0 ; if DOS 3.3 boot0 loader
|
||||
bne .exit
|
||||
lda #$00
|
||||
ldx #$4A
|
||||
ldy #$03
|
||||
jsr compare ; and T00,S00,$4A ==
|
||||
|
@ -19,14 +19,11 @@
|
||||
!byte $C9,$BE
|
||||
!byte $D0,$E5
|
||||
bcs .exit
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
tay
|
||||
txa
|
||||
adc #8
|
||||
tax
|
||||
tya
|
||||
ldy #$01
|
||||
jsr modify ; change BNE to continue instead
|
||||
!byte $00
|
||||
|
@ -18,17 +18,11 @@
|
||||
!byte $20,$10,$30,WILDCARD,$AA,$EB
|
||||
bcs +
|
||||
sta gDisplayBytes
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
tay
|
||||
txa
|
||||
adc #$0B
|
||||
tax
|
||||
tya
|
||||
ldy #$01
|
||||
jsr compare
|
||||
!byte $DE
|
||||
@ -44,25 +38,11 @@
|
||||
!byte $02,$18,$24,$38,$60
|
||||
bcs +
|
||||
sta gDisplayBytes
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
tay
|
||||
txa
|
||||
adc #$13
|
||||
tax
|
||||
tya
|
||||
ldy #$01
|
||||
jsr compare
|
||||
!byte $38
|
||||
@ -81,28 +61,11 @@
|
||||
!byte $C9,$DE,$F0,$02,$18,$24,$38,$60
|
||||
bcs +
|
||||
sta gDisplayBytes
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
tay
|
||||
txa
|
||||
adc #$16
|
||||
tax
|
||||
tya
|
||||
ldy #$01
|
||||
jsr compare
|
||||
!byte $38
|
||||
@ -121,16 +84,11 @@
|
||||
!byte $38
|
||||
!byte $60
|
||||
bcs +
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
tay
|
||||
txa
|
||||
adc #$0A
|
||||
tax
|
||||
tya
|
||||
ldy #$01
|
||||
jsr compare
|
||||
!byte $38
|
||||
|
@ -23,21 +23,11 @@ _prodosrwts
|
||||
!byte $38
|
||||
bcs .exit
|
||||
sta gDisplayBytes
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
tay
|
||||
txa
|
||||
adc #$0F
|
||||
tax
|
||||
tya
|
||||
ldy #$01
|
||||
jsr compare
|
||||
!byte $DE
|
||||
|
@ -152,7 +152,7 @@
|
||||
;
|
||||
lda #$01
|
||||
ldx #$07
|
||||
ldy #$01
|
||||
tay
|
||||
jsr modify ; set T00,S01,$07 =
|
||||
!byte $2C
|
||||
|
||||
|
@ -10,8 +10,7 @@
|
||||
bit gMode ; nothing to do here in verify-only mode
|
||||
bpl .exit
|
||||
lda gIsBoot0 ; if DOS 3.3 boot0 loader
|
||||
bne .exit
|
||||
lda gIsBoot1 ; and DOS 3.3 boot1 loader
|
||||
ora gIsBoot1 ; and DOS 3.3 boot1 loader
|
||||
bne .exit
|
||||
lda #$04
|
||||
ldx #$69
|
||||
|
@ -12,8 +12,8 @@
|
||||
!zone {
|
||||
bit gMode ; nothing to do here in verify-only mode
|
||||
bpl .exit
|
||||
lda gTrack ; and track 1
|
||||
cmp #$01
|
||||
ldx gTrack ; and track 1
|
||||
dex
|
||||
bne .exit
|
||||
lda #$04
|
||||
ldx #$52
|
||||
|
@ -54,9 +54,8 @@ universale7
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
bcc +
|
||||
jmp .nextsector
|
||||
+
|
||||
bcs .nextsector
|
||||
|
||||
lda .sector+1
|
||||
sta gDisplayBytes
|
||||
lda #s_e7
|
||||
|
16
src/prefs.a
16
src/prefs.a
@ -20,22 +20,6 @@ DRIVE !byte $FF
|
||||
!text "+---PREFS VERSION (DO NOT CHANGE)",$8D
|
||||
PREFSWRITELEN = *-PREFSVER
|
||||
|
||||
;-------------------------------
|
||||
; LoadPrefs
|
||||
; load preferences from file
|
||||
;
|
||||
; in: ProDOS must be in memory
|
||||
;-------------------------------
|
||||
LoadPrefs
|
||||
lda #$FF
|
||||
sta PREFSVER
|
||||
jsr LoadFile1Shot
|
||||
!word PREFSFILE
|
||||
!word PREFSVER
|
||||
!word PREFSREADLEN
|
||||
!word PREFSBUFFER
|
||||
jmp ValidatePrefs
|
||||
|
||||
;-------------------------------
|
||||
; SavePrefs
|
||||
; save preferences to file
|
||||
|
43
src/print.a
43
src/print.a
@ -14,15 +14,14 @@ kForceLower !byte $FF ; AND mask for lowercase letters
|
||||
;-------------------------------
|
||||
!zone {
|
||||
PrintByID
|
||||
stx .x
|
||||
stx .x+1
|
||||
ldy #0 ; substitution mode flag
|
||||
cmp #STRINGCOUNT
|
||||
bcs .error
|
||||
asl
|
||||
tax
|
||||
lda StringTable,x
|
||||
lda StringTableLow,x
|
||||
sta .print+1
|
||||
lda StringTable+1,x
|
||||
lda StringTableHigh,x
|
||||
sta .print+2
|
||||
.print
|
||||
lda $FFFF ; modified at runtime
|
||||
@ -83,9 +82,8 @@ PrintByID
|
||||
.done
|
||||
clc
|
||||
.error
|
||||
ldx .x
|
||||
.x ldx #$d1
|
||||
rts
|
||||
.x !byte 00
|
||||
|
||||
;-------------------------------
|
||||
; PrintByte
|
||||
@ -98,15 +96,9 @@ PrintByID
|
||||
; @tmpy clobbered
|
||||
;-------------------------------
|
||||
PrintByte
|
||||
sta tmpa
|
||||
stx tmpx
|
||||
sty tmpy
|
||||
jsr .saveAXY
|
||||
jsr PRBYTE
|
||||
lda tmpa
|
||||
ldx tmpx
|
||||
ldy tmpy
|
||||
clv
|
||||
rts
|
||||
jmp .loadAXY
|
||||
|
||||
;-------------------------------
|
||||
; PrintA
|
||||
@ -119,16 +111,22 @@ PrintByte
|
||||
; @tmpy clobbered
|
||||
;-------------------------------
|
||||
PrintA
|
||||
sta tmpa
|
||||
stx tmpx
|
||||
sty tmpy
|
||||
jsr .saveAXY
|
||||
jsr COUT
|
||||
|
||||
.loadAXY
|
||||
lda tmpa
|
||||
ldx tmpx
|
||||
ldy tmpy
|
||||
clv
|
||||
rts
|
||||
|
||||
.saveAXY
|
||||
sta tmpa
|
||||
stx tmpx
|
||||
sty tmpy
|
||||
rts
|
||||
|
||||
;-------------------------------
|
||||
; ClearScreen
|
||||
;-------------------------------
|
||||
@ -146,17 +144,16 @@ ClearScreen
|
||||
ldy #$00
|
||||
sty flag
|
||||
.loop
|
||||
lda $FF00,y ; modified at runtime
|
||||
cmp #$A0
|
||||
ldx $FF00,y ; modified at runtime
|
||||
cpx #$A0
|
||||
beq .nochange
|
||||
bcs .down
|
||||
clc
|
||||
adc #$01
|
||||
inx
|
||||
bne .change
|
||||
.down
|
||||
sec
|
||||
sbc #$01
|
||||
dex
|
||||
.change
|
||||
txa
|
||||
sta $FF00,y ; modified at runtime
|
||||
sta flag
|
||||
.nochange
|
||||
|
@ -199,5 +199,6 @@ _track !byte $00
|
||||
_sector !byte $00
|
||||
!word dct
|
||||
gAddress !word $1F00
|
||||
!byte $00,$00,$01,$00,$FE,$60,$01,$00,$00
|
||||
!byte $00,$00
|
||||
gCommand !byte $01,$00,$FE,$60,$01,$00,$00
|
||||
dct !byte $00,$01,$EF,$D8,$00
|
||||
|
111
src/slots.a
111
src/slots.a
@ -1,46 +1,6 @@
|
||||
DiskIIArray
|
||||
!byte 00,00,00,00,00,00,00
|
||||
|
||||
;-------------------------------
|
||||
; ScanForDiskII
|
||||
; scan all slots for things that
|
||||
; look like Disk II cards
|
||||
;
|
||||
; out: all registers clobbered
|
||||
; all flags clobbered
|
||||
; DiskIIArray filled with 00 or FF
|
||||
;-------------------------------
|
||||
!zone {
|
||||
ScanForDiskII
|
||||
lda #$00
|
||||
sta cmp1
|
||||
ldx #$07
|
||||
.fingerprint
|
||||
txa
|
||||
ora #$C0
|
||||
sta cmp1+1
|
||||
ldy #$01
|
||||
lda (cmp1),y
|
||||
cmp #$20
|
||||
bne .next
|
||||
ldy #$03
|
||||
lda (cmp1),y
|
||||
bne .next
|
||||
ldy #$05
|
||||
lda (cmp1),y
|
||||
cmp #$03
|
||||
bne .next
|
||||
ldy #$FF
|
||||
lda (cmp1),y
|
||||
bne .next
|
||||
tya
|
||||
sta DiskIIArray-1,x
|
||||
.next
|
||||
dex
|
||||
bne .fingerprint
|
||||
rts
|
||||
}
|
||||
|
||||
;-------------------------------
|
||||
; NextSlot
|
||||
;-------------------------------
|
||||
@ -76,74 +36,3 @@ NextSlot
|
||||
.reallydone
|
||||
rts
|
||||
}
|
||||
|
||||
!zone {
|
||||
ScanForRAMDisk
|
||||
lda #$00
|
||||
sta iunit
|
||||
- lda iunit
|
||||
clc
|
||||
adc #$10
|
||||
sta iunit
|
||||
beq .done
|
||||
cmp #$80
|
||||
beq -
|
||||
pha
|
||||
and #$70
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
tay
|
||||
pla
|
||||
ldx DiskIIArray-1,y
|
||||
bne -
|
||||
jsr GetVolumeName
|
||||
bcs -
|
||||
lda OnlineReturn
|
||||
beq -
|
||||
jsr GetVolumeInfo
|
||||
|
||||
;watch for RAM disk type
|
||||
|
||||
lda filetype
|
||||
and #$0F
|
||||
cmp #$0F
|
||||
bne -
|
||||
|
||||
;check for RAM[x] by name
|
||||
|
||||
ldy OnlineReturn
|
||||
cpy #4
|
||||
beq +
|
||||
cpy #5
|
||||
bne -
|
||||
dey
|
||||
+
|
||||
-- lda SlashRAM-1,y
|
||||
cmp VolumeName-1,y
|
||||
bne -
|
||||
dey
|
||||
bne --
|
||||
|
||||
;check free space
|
||||
;need at least $118 blocks
|
||||
|
||||
sec
|
||||
lda auxtype
|
||||
sbc blocks
|
||||
tax
|
||||
lda auxtype+1
|
||||
sbc blocks+1
|
||||
cmp #1
|
||||
bcc -
|
||||
bne +
|
||||
cpx #$18
|
||||
bcc -
|
||||
+ lda #TRUE
|
||||
sta gUsingRAMDisk
|
||||
.done
|
||||
rts
|
||||
|
||||
SlashRAM !byte $2F, $52, $41, $4D
|
||||
}
|
||||
|
362
src/strings/en.a
362
src/strings/en.a
@ -15,124 +15,246 @@ k_redo_with_ignore = $92; <Ctrl-R>
|
||||
|
||||
!source "strings/enid.a"
|
||||
!zone {
|
||||
StringTable
|
||||
!word .header
|
||||
!word .mainmenu
|
||||
!word .progbar
|
||||
!word .reading
|
||||
!word .diskrwts
|
||||
!word .bb00
|
||||
!word .sunburst
|
||||
!word .optimum
|
||||
!word .builtin
|
||||
!word .switch
|
||||
!word .writing
|
||||
!word .unformat
|
||||
!word .f7
|
||||
!word .sync
|
||||
!word .optbad
|
||||
!word .passver
|
||||
!word .passdemuf
|
||||
!word .passcrack
|
||||
!word .passcrack0
|
||||
!word .fail
|
||||
!word .fatal0000
|
||||
!word .fatal220f
|
||||
!word .done
|
||||
!word .noslot6
|
||||
!word .writeerr
|
||||
!word .writeioerr
|
||||
!word .writenodev
|
||||
!word .writeprot
|
||||
!word .othermli
|
||||
!word .canttrace
|
||||
!word .canceled
|
||||
!word .bademu
|
||||
!word .reset
|
||||
!word .modify
|
||||
!word .modifyto
|
||||
!word .dos33boot0
|
||||
!word .prodosboot0
|
||||
!word .pascalboot0
|
||||
!word .mecc
|
||||
!word .sierra
|
||||
!word .a6bc95
|
||||
!word .jmpbcf0
|
||||
!word .rol1e
|
||||
!word .runhello
|
||||
!word .e7
|
||||
!word .jmpb4bb
|
||||
!word .jmpb400
|
||||
!word .jmpbeca
|
||||
!word .bb03
|
||||
!word .thunder
|
||||
!word .jmpae8e
|
||||
!word .diskvol
|
||||
!word .d5d5f7
|
||||
!word .construct
|
||||
!word .datasoftb0
|
||||
!word .datasoft
|
||||
!word .lsr6a
|
||||
!word .bcs08
|
||||
!word .jmpb660
|
||||
!word .protdos
|
||||
!word .decryptrwts
|
||||
!word .protserial
|
||||
!word .fbff
|
||||
!word .encoded44
|
||||
!word .encoded53
|
||||
!word .specdel
|
||||
!word .bytrack
|
||||
!word .a5count
|
||||
!word .restart
|
||||
!word .corrupter
|
||||
!word .eaboot0
|
||||
!word .eatrk6
|
||||
!word .eeef
|
||||
!word .poke
|
||||
!word .bootcounter
|
||||
!word .milliken
|
||||
!word .jsr8b3
|
||||
!word .daviddos
|
||||
!word .quickdos
|
||||
!word .diversidos
|
||||
!word .prontodos
|
||||
!word .jmpb412
|
||||
!word .laureate
|
||||
!word .bbf9
|
||||
!word .micrograms
|
||||
!word .cmpbne0
|
||||
!word .writeram
|
||||
!word .d5timing
|
||||
!word .advint
|
||||
!word .dos32boot0
|
||||
!word .bootwrite
|
||||
!word .rwtswrite
|
||||
!word .rdos
|
||||
!word .sra
|
||||
!word .muse
|
||||
!word .origin
|
||||
!word .volumename
|
||||
!word .dinkeydos
|
||||
!word .trillium
|
||||
!word .tamper
|
||||
!word .microfun
|
||||
!word .advent
|
||||
!word .gathering
|
||||
!word .davidson
|
||||
!word .rdos13
|
||||
!word .ssi
|
||||
!word .aacount
|
||||
!word .infocom18
|
||||
!word .toverify
|
||||
!word .sector13
|
||||
!word .dakin5
|
||||
!word .springboard
|
||||
!word .hallabs
|
||||
!word .holle
|
||||
!word .hoffman
|
||||
!word .diskvol0
|
||||
!word .e7everywhere
|
||||
StringTableLow
|
||||
!byte <.header
|
||||
!byte <.mainmenu
|
||||
!byte <.progbar
|
||||
!byte <.reading
|
||||
!byte <.diskrwts
|
||||
!byte <.bb00
|
||||
!byte <.sunburst
|
||||
!byte <.optimum
|
||||
!byte <.builtin
|
||||
!byte <.switch
|
||||
!byte <.writing
|
||||
!byte <.unformat
|
||||
!byte <.f7
|
||||
!byte <.sync
|
||||
!byte <.optbad
|
||||
!byte <.passver
|
||||
!byte <.passdemuf
|
||||
!byte <.passcrack
|
||||
!byte <.passcrack0
|
||||
!byte <.fail
|
||||
!byte <.fatal0000
|
||||
!byte <.fatal220f
|
||||
!byte <.done
|
||||
!byte <.noslot6
|
||||
!byte <.writeerr
|
||||
!byte <.writeioerr
|
||||
!byte <.writenodev
|
||||
!byte <.writeprot
|
||||
!byte <.othermli
|
||||
!byte <.canttrace
|
||||
!byte <.canceled
|
||||
!byte <.bademu
|
||||
!byte <.reset
|
||||
!byte <.modify
|
||||
!byte <.modifyto
|
||||
!byte <.dos33boot0
|
||||
!byte <.prodosboot0
|
||||
!byte <.pascalboot0
|
||||
!byte <.mecc
|
||||
!byte <.sierra
|
||||
!byte <.a6bc95
|
||||
!byte <.jmpbcf0
|
||||
!byte <.rol1e
|
||||
!byte <.runhello
|
||||
!byte <.e7
|
||||
!byte <.jmpb4bb
|
||||
!byte <.jmpb400
|
||||
!byte <.jmpbeca
|
||||
!byte <.bb03
|
||||
!byte <.thunder
|
||||
!byte <.jmpae8e
|
||||
!byte <.diskvol
|
||||
!byte <.d5d5f7
|
||||
!byte <.construct
|
||||
!byte <.datasoftb0
|
||||
!byte <.datasoft
|
||||
!byte <.lsr6a
|
||||
!byte <.bcs08
|
||||
!byte <.jmpb660
|
||||
!byte <.protdos
|
||||
!byte <.decryptrwts
|
||||
!byte <.protserial
|
||||
!byte <.fbff
|
||||
!byte <.encoded44
|
||||
!byte <.encoded53
|
||||
!byte <.specdel
|
||||
!byte <.bytrack
|
||||
!byte <.a5count
|
||||
!byte <.restart
|
||||
!byte <.corrupter
|
||||
!byte <.eaboot0
|
||||
!byte <.eatrk6
|
||||
!byte <.eeef
|
||||
!byte <.poke
|
||||
!byte <.bootcounter
|
||||
!byte <.milliken
|
||||
!byte <.jsr8b3
|
||||
!byte <.daviddos
|
||||
!byte <.quickdos
|
||||
!byte <.diversidos
|
||||
!byte <.prontodos
|
||||
!byte <.jmpb412
|
||||
!byte <.laureate
|
||||
!byte <.bbf9
|
||||
!byte <.micrograms
|
||||
!byte <.cmpbne0
|
||||
!byte <.writeram
|
||||
!byte <.d5timing
|
||||
!byte <.advint
|
||||
!byte <.dos32boot0
|
||||
!byte <.bootwrite
|
||||
!byte <.rwtswrite
|
||||
!byte <.rdos
|
||||
!byte <.sra
|
||||
!byte <.muse
|
||||
!byte <.origin
|
||||
!byte <.volumename
|
||||
!byte <.dinkeydos
|
||||
!byte <.trillium
|
||||
!byte <.tamper
|
||||
!byte <.microfun
|
||||
!byte <.advent
|
||||
!byte <.gathering
|
||||
!byte <.davidson
|
||||
!byte <.rdos13
|
||||
!byte <.ssi
|
||||
!byte <.aacount
|
||||
!byte <.infocom18
|
||||
!byte <.toverify
|
||||
!byte <.sector13
|
||||
!byte <.dakin5
|
||||
!byte <.springboard
|
||||
!byte <.hallabs
|
||||
!byte <.holle
|
||||
!byte <.hoffman
|
||||
!byte <.diskvol0
|
||||
!byte <.e7everywhere
|
||||
!byte <.choplifter
|
||||
|
||||
StringTableHigh
|
||||
!byte >.header
|
||||
!byte >.mainmenu
|
||||
!byte >.progbar
|
||||
!byte >.reading
|
||||
!byte >.diskrwts
|
||||
!byte >.bb00
|
||||
!byte >.sunburst
|
||||
!byte >.optimum
|
||||
!byte >.builtin
|
||||
!byte >.switch
|
||||
!byte >.writing
|
||||
!byte >.unformat
|
||||
!byte >.f7
|
||||
!byte >.sync
|
||||
!byte >.optbad
|
||||
!byte >.passver
|
||||
!byte >.passdemuf
|
||||
!byte >.passcrack
|
||||
!byte >.passcrack0
|
||||
!byte >.fail
|
||||
!byte >.fatal0000
|
||||
!byte >.fatal220f
|
||||
!byte >.done
|
||||
!byte >.noslot6
|
||||
!byte >.writeerr
|
||||
!byte >.writeioerr
|
||||
!byte >.writenodev
|
||||
!byte >.writeprot
|
||||
!byte >.othermli
|
||||
!byte >.canttrace
|
||||
!byte >.canceled
|
||||
!byte >.bademu
|
||||
!byte >.reset
|
||||
!byte >.modify
|
||||
!byte >.modifyto
|
||||
!byte >.dos33boot0
|
||||
!byte >.prodosboot0
|
||||
!byte >.pascalboot0
|
||||
!byte >.mecc
|
||||
!byte >.sierra
|
||||
!byte >.a6bc95
|
||||
!byte >.jmpbcf0
|
||||
!byte >.rol1e
|
||||
!byte >.runhello
|
||||
!byte >.e7
|
||||
!byte >.jmpb4bb
|
||||
!byte >.jmpb400
|
||||
!byte >.jmpbeca
|
||||
!byte >.bb03
|
||||
!byte >.thunder
|
||||
!byte >.jmpae8e
|
||||
!byte >.diskvol
|
||||
!byte >.d5d5f7
|
||||
!byte >.construct
|
||||
!byte >.datasoftb0
|
||||
!byte >.datasoft
|
||||
!byte >.lsr6a
|
||||
!byte >.bcs08
|
||||
!byte >.jmpb660
|
||||
!byte >.protdos
|
||||
!byte >.decryptrwts
|
||||
!byte >.protserial
|
||||
!byte >.fbff
|
||||
!byte >.encoded44
|
||||
!byte >.encoded53
|
||||
!byte >.specdel
|
||||
!byte >.bytrack
|
||||
!byte >.a5count
|
||||
!byte >.restart
|
||||
!byte >.corrupter
|
||||
!byte >.eaboot0
|
||||
!byte >.eatrk6
|
||||
!byte >.eeef
|
||||
!byte >.poke
|
||||
!byte >.bootcounter
|
||||
!byte >.milliken
|
||||
!byte >.jsr8b3
|
||||
!byte >.daviddos
|
||||
!byte >.quickdos
|
||||
!byte >.diversidos
|
||||
!byte >.prontodos
|
||||
!byte >.jmpb412
|
||||
!byte >.laureate
|
||||
!byte >.bbf9
|
||||
!byte >.micrograms
|
||||
!byte >.cmpbne0
|
||||
!byte >.writeram
|
||||
!byte >.d5timing
|
||||
!byte >.advint
|
||||
!byte >.dos32boot0
|
||||
!byte >.bootwrite
|
||||
!byte >.rwtswrite
|
||||
!byte >.rdos
|
||||
!byte >.sra
|
||||
!byte >.muse
|
||||
!byte >.origin
|
||||
!byte >.volumename
|
||||
!byte >.dinkeydos
|
||||
!byte >.trillium
|
||||
!byte >.tamper
|
||||
!byte >.microfun
|
||||
!byte >.advent
|
||||
!byte >.gathering
|
||||
!byte >.davidson
|
||||
!byte >.rdos13
|
||||
!byte >.ssi
|
||||
!byte >.aacount
|
||||
!byte >.infocom18
|
||||
!byte >.toverify
|
||||
!byte >.sector13
|
||||
!byte >.dakin5
|
||||
!byte >.springboard
|
||||
!byte >.hallabs
|
||||
!byte >.holle
|
||||
!byte >.hoffman
|
||||
!byte >.diskvol0
|
||||
!byte >.e7everywhere
|
||||
!byte >.choplifter
|
||||
|
||||
;
|
||||
; Text can contain substitution strings, which
|
||||
; are replaced by current values at runtime. Each
|
||||
@ -158,7 +280,7 @@ StringTable
|
||||
; can be set directly before calling PrintByID.
|
||||
;
|
||||
.header
|
||||
!text "Passport by 4am 2019-04-13",$00
|
||||
!text "Passport by 4am 2019-04-15",$00
|
||||
.mainmenu
|
||||
!text "________________________________________",$8D,$8D,$8D,$8D,$8D,$8D,$8D
|
||||
!text " "
|
||||
@ -486,4 +608,6 @@ StringTable
|
||||
!text "T%t,S%0 Disk requires volume number 000",$8D,$00
|
||||
.e7everywhere
|
||||
!text "T%t,S%0 Found E7 Everywhere protection",$8D,$00
|
||||
.choplifter
|
||||
!text "T00,S01 Found Choplifter protection",$8D,$00
|
||||
}
|
||||
|
@ -119,4 +119,5 @@ s_holle = $71
|
||||
s_hoffman = $72
|
||||
s_diskvol0 = $73
|
||||
s_e7everywhere=$74
|
||||
STRINGCOUNT = $75
|
||||
s_choplifter = $75
|
||||
STRINGCOUNT = $76
|
||||
|
Loading…
Reference in New Issue
Block a user