mirror of
https://github.com/a2-4am/4cade.git
synced 2025-02-26 22:31:11 +00:00
allow launching
This commit is contained in:
parent
80e91f73da
commit
75e93634cd
@ -66,6 +66,10 @@ OneTimeSetup
|
||||
ldy hddopendir+3
|
||||
+STAY gRootDirectory
|
||||
|
||||
lda $43
|
||||
sta promote + ProDOS_unit - $bf00
|
||||
; save unit while overriding !pseudopc
|
||||
|
||||
jsr LoadFile ; load preferences file into $8000
|
||||
!word kGlobalPrefsFilename
|
||||
|
||||
|
@ -261,14 +261,12 @@ promote
|
||||
rts ;clock interface, must be RTS on real ProDOS if program uses $20x
|
||||
|
||||
lda $c011
|
||||
jmp ProDOS_enable
|
||||
!text "q4!"
|
||||
bit $c08b
|
||||
bit $c08b
|
||||
;$bf10
|
||||
!word $c1d1, $c2d1, $c3d1, $c4d1, $c5d1, $c6d1, $c7d1
|
||||
ProDOS_enable
|
||||
bit $c08b
|
||||
bit $c08b
|
||||
jmp ProDOS_enter
|
||||
!byte $c1
|
||||
!word $c2d1, $c3d1, $c4d1, $c5d1, $c6d1, $c7d1
|
||||
ProDOS_exit
|
||||
sta $c082, x
|
||||
ProDOS_savedX
|
||||
@ -276,10 +274,17 @@ ProDOS_savedX
|
||||
ProDOS_savedY
|
||||
ldy #$d1
|
||||
rts
|
||||
|
||||
ProDOS_fatal ;only for debugging, will be removed
|
||||
pha
|
||||
lda $c081
|
||||
jsr $fe89
|
||||
|
||||
!byte $24
|
||||
ProDOS_unit
|
||||
;$bf30
|
||||
!byte $d1
|
||||
|
||||
jsr $fe93
|
||||
pla
|
||||
jsr $fdda
|
||||
@ -377,6 +382,10 @@ ProDOS_enter
|
||||
pha
|
||||
@request
|
||||
lda #$d1
|
||||
cmp #$80
|
||||
beq @do_readblock
|
||||
cmp #$81 ;I don't remember if I used this, but it's cheap to add
|
||||
beq @do_writeblock
|
||||
cmp #$c4
|
||||
beq @do_getattrib
|
||||
cmp #$c7
|
||||
@ -395,6 +404,9 @@ ProDOS_enter
|
||||
beq @do_eof
|
||||
;;any others??
|
||||
jmp ProDOS_fatal
|
||||
@do_readblock
|
||||
@do_writeblock
|
||||
jmp @imp_rdwrblock
|
||||
@do_getattrib
|
||||
jmp @imp_getattrib
|
||||
@do_prefix
|
||||
@ -413,6 +425,24 @@ ProDOS_enter
|
||||
@do_eof
|
||||
jmp @imp_eof
|
||||
|
||||
@imp_rdwrblock
|
||||
and #$7f
|
||||
tay
|
||||
iny
|
||||
sty @rdwrop+1
|
||||
ldx #$44
|
||||
ldy #2
|
||||
jsr @setbuffer
|
||||
iny
|
||||
lda (packet), y
|
||||
tax
|
||||
iny
|
||||
lda (packet), y
|
||||
@rdwrop
|
||||
ldy #$d1 ; SMC
|
||||
jsr hddseekrdwr
|
||||
bcc @jmp_zp2 ;always
|
||||
|
||||
@imp_getattrib
|
||||
lda packet+1
|
||||
pha
|
||||
@ -435,18 +465,44 @@ ProDOS_enter
|
||||
iny
|
||||
lda ldrlo2+1
|
||||
sta (packet), y
|
||||
ldy #$13
|
||||
lda (bloklo), y
|
||||
tax
|
||||
iny
|
||||
lda (bloklo), y
|
||||
ldy #9
|
||||
sta (packet), y
|
||||
txa
|
||||
dey
|
||||
sta (packet), y
|
||||
@jmp_zp2
|
||||
jmp @restore_zp
|
||||
|
||||
@imp_prefix
|
||||
ldx #buffer
|
||||
jsr @setbuffer1
|
||||
ldy ProDOS_prefix
|
||||
iny
|
||||
lda #'/'
|
||||
bne @append_slash
|
||||
@copy_prefix
|
||||
lda ProDOS_prefix, y
|
||||
@append_slash
|
||||
iny
|
||||
sta (buffer), y
|
||||
dey
|
||||
dey
|
||||
bpl @copy_prefix
|
||||
jmp @restore_zp
|
||||
tax
|
||||
inx
|
||||
inx
|
||||
txa
|
||||
iny
|
||||
sta (buffer), y
|
||||
iny
|
||||
lda #'/'
|
||||
sta (buffer), y
|
||||
bne @jmp_zp2
|
||||
|
||||
@imp_open
|
||||
ldx #namlo
|
||||
|
@ -105,32 +105,16 @@ gAttractIndex
|
||||
; to avoid seeing executable code load into the HGR page
|
||||
+LOAD_PATH kDemoDirectory
|
||||
ldy gPathname
|
||||
iny
|
||||
iny
|
||||
sty ProDOS_prefix
|
||||
- lda gPathname-2, y
|
||||
- lda gPathname, y
|
||||
sta ProDOS_prefix, y
|
||||
dey
|
||||
bne -
|
||||
lda #'/'
|
||||
sta ProDOS_prefix+1
|
||||
lda #'X'
|
||||
sta ProDOS_prefix+2
|
||||
|
||||
+LOAD_FILE_IMM @key
|
||||
|
||||
jsr SaveScreenHoles ; save screen hole contents in case game changes them
|
||||
ldx #(End_Prelaunch-Prelaunch-1)
|
||||
- lda Prelaunch,x ; copy pre-launch code to main memory
|
||||
sta $100,x
|
||||
dex
|
||||
bpl -
|
||||
ldx #(end_promote-promote-1)
|
||||
- lda promote,x ; copy ProDOS shim to main memory
|
||||
sta $bf00,x
|
||||
dex
|
||||
bpl -
|
||||
jmp $106 ; jump to pre-launch code
|
||||
jmp copy_prelaunch
|
||||
|
||||
@Slideshow ; HGR or DHGR slideshow
|
||||
pha ; save module type (1=HGR title, 2=HGR action, 3=DHGR title)
|
||||
@ -232,8 +216,54 @@ gCurrentlyVisibleSlideshowIndex
|
||||
rts
|
||||
Go
|
||||
+STAY PTR
|
||||
bit $C010 ; forget the key that was pressed
|
||||
ldx #1
|
||||
sec
|
||||
!byte $24
|
||||
-- clc
|
||||
php
|
||||
ldy #0
|
||||
lda (PTR), y
|
||||
tay
|
||||
iny
|
||||
sty @runlength+1
|
||||
ldy #0
|
||||
lda #'X'
|
||||
sta ProDOS_prefix+1
|
||||
lda #'/'
|
||||
- inx
|
||||
sta ProDOS_prefix, x
|
||||
iny
|
||||
lda (PTR), y
|
||||
@runlength
|
||||
cpy #$D1 ; SMC
|
||||
bne -
|
||||
plp
|
||||
bcs --
|
||||
stx ProDOS_prefix
|
||||
|
||||
brk
|
||||
jsr LoadFile
|
||||
!word ProDOS_prefix
|
||||
|
||||
ldy #0
|
||||
lda (namlo), y
|
||||
tay
|
||||
iny
|
||||
iny
|
||||
sty ProDOS_prefix
|
||||
|
||||
copy_prelaunch
|
||||
ldx #(End_Prelaunch-Prelaunch-1)
|
||||
- lda Prelaunch,x ; copy pre-launch code to main memory
|
||||
sta $100,x
|
||||
dex
|
||||
bpl -
|
||||
ldx #(end_promote-promote-1)
|
||||
- lda promote,x ; copy ProDOS shim to main memory
|
||||
sta $bf00,x
|
||||
dex
|
||||
bpl -
|
||||
jmp $106 ; jump to pre-launch code
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; internal functions
|
||||
|
Loading…
x
Reference in New Issue
Block a user