mirror of
https://github.com/a2-4am/4cade.git
synced 2024-06-10 08:29:34 +00:00
55 lines
1.4 KiB
Plaintext
55 lines
1.4 KiB
Plaintext
|
;license:MIT
|
||
|
;(c) 2024 by 4am
|
||
|
;
|
||
|
|
||
|
;
|
||
|
; Ensure ProDOS has a current prefix, otherwise opening any file will fail,
|
||
|
; which is bad. If launched from Bitsy Bye, there will be no current prefix.
|
||
|
; In that case, we get the boot volume name, then set the prefix to that.
|
||
|
; PREFIX_BUFFER ($40 bytes) is clobbered but may be reused after.
|
||
|
;
|
||
|
prefix_loop
|
||
|
jsr PRODOS_MLI
|
||
|
op_prefix
|
||
|
!byte CMD_GETPREFIX ; self-modified
|
||
|
!word parm_prefix
|
||
|
ldx PREFIX_BUFFER
|
||
|
bne clear_memory_map
|
||
|
; get boot volume name
|
||
|
lda PRODOS_BOOT_UNIT
|
||
|
sta parm_online_unit
|
||
|
jsr PRODOS_MLI
|
||
|
!byte CMD_ONLINE
|
||
|
!word parm_online
|
||
|
|
||
|
lda PREFIX_BUFFER+1
|
||
|
and #$0F
|
||
|
tax
|
||
|
inx
|
||
|
stx PREFIX_BUFFER
|
||
|
lda #$2F
|
||
|
sta PREFIX_BUFFER+1
|
||
|
; PREFIX_BUFFER is now a length-prefixed string
|
||
|
; of '/' + the boot volume name
|
||
|
|
||
|
dec op_prefix ; -> CMD_SETPREFIX
|
||
|
bne prefix_loop ; always branches
|
||
|
|
||
|
parm_prefix
|
||
|
!byte 1
|
||
|
!word PREFIX_BUFFER
|
||
|
|
||
|
parm_online
|
||
|
!byte 2
|
||
|
parm_online_unit
|
||
|
!byte SELF_MODIFIED_BYTE
|
||
|
!word PREFIX_BUFFER+1
|
||
|
|
||
|
clear_memory_map
|
||
|
; clear ProDOS memory bitmap
|
||
|
ldx #$17
|
||
|
lda #$00
|
||
|
- sta PRODOS_MEMORY_MAP, x
|
||
|
dex
|
||
|
bpl -
|