allow launching

This commit is contained in:
Peter Ferrie 2019-01-10 09:42:50 -08:00
parent 80e91f73da
commit 75e93634cd
3 changed files with 116 additions and 26 deletions

View File

@ -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

View File

@ -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

View File

@ -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