mirror of
https://github.com/mi57730/a2d.git
synced 2025-02-20 02:29:11 +00:00
Startup flow
This commit is contained in:
parent
2f2ae6827c
commit
4be2197da9
@ -175,40 +175,42 @@ Current file: stf.s
|
|||||||
000800 2 .endmacro
|
000800 2 .endmacro
|
||||||
000800 2
|
000800 2
|
||||||
000800 1
|
000800 1
|
||||||
000800 1 zp_code_stash := $0020 ; Scratch space used for "call 100 main" trampoline
|
000800 1 zp_code_stash := $0020 ; Scratch space used for "call 1000 main" trampoline
|
||||||
000800 1
|
000800 1
|
||||||
000800 1 4C 04 08 start: jmp copy2aux
|
000800 1 4C 04 08 start: jmp copy2aux
|
||||||
000803 1
|
000803 1
|
||||||
000803 1 00 stash_x:.byte $00
|
000803 1 00 save_stack:.byte 0
|
||||||
|
000804 1
|
||||||
|
000804 1 ;;; Copy $800 through $13FF (the DA) to aux
|
||||||
000804 1 .proc copy2aux
|
000804 1 .proc copy2aux
|
||||||
000804 1 BA tsx
|
000804 1 BA tsx
|
||||||
000805 1 8E 03 08 stx stash_x
|
000805 1 8E 03 08 stx save_stack
|
||||||
000808 1 8D 05 C0 sta RAMWRTON
|
000808 1 8D 05 C0 sta RAMWRTON
|
||||||
00080B 1 A0 00 ldy #$00
|
00080B 1 A0 00 ldy #0
|
||||||
00080D 1 copy_src:
|
00080D 1 B9 00 08 src: lda start,y ; self-modified
|
||||||
00080D 1 B9 00 08 lda start,y
|
000810 1 99 00 08 dst: sta start,y ; self-modified
|
||||||
000810 1 copy_dst:
|
|
||||||
000810 1 99 00 08 sta start,y
|
|
||||||
000813 1 88 dey
|
000813 1 88 dey
|
||||||
000814 1 D0 F7 bne copy_src
|
000814 1 D0 F7 bne src
|
||||||
000816 1 8D 04 C0 sta RAMWRTOFF
|
000816 1 8D 04 C0 sta RAMWRTOFF
|
||||||
000819 1 EE 0F 08 inc copy_src+2
|
000819 1 EE 0F 08 inc src+2
|
||||||
00081C 1 EE 12 08 inc copy_dst+2
|
00081C 1 EE 12 08 inc dst+2
|
||||||
00081F 1 8D 05 C0 sta RAMWRTON
|
00081F 1 8D 05 C0 sta RAMWRTON
|
||||||
000822 1 AD 12 08 lda copy_dst+2
|
000822 1 AD 12 08 lda dst+2
|
||||||
000825 1 C9 14 cmp #$14
|
000825 1 C9 14 cmp #$14
|
||||||
000827 1 D0 E4 bne copy_src
|
000827 1 D0 E4 bne src
|
||||||
000829 1 .endproc
|
000829 1 .endproc
|
||||||
000829 1
|
000829 1
|
||||||
000829 1 ;;; Copy "call_1000_main" routine to $20
|
000829 1 ;;; Copy the following "call_1000_main" routine to $20
|
||||||
|
000829 1 .scope
|
||||||
000829 1 8D 05 C0 sta RAMWRTON
|
000829 1 8D 05 C0 sta RAMWRTON
|
||||||
00082C 1 8D 03 C0 sta RAMRDON
|
00082C 1 8D 03 C0 sta RAMRDON
|
||||||
00082F 1 A2 10 ldx #(call_1000_main_end - call_1000_main)
|
00082F 1 A2 10 ldx #(call_1000_main_end - call_1000_main)
|
||||||
000831 1 BD 3C 08 L0831: lda call_1000_main,x
|
000831 1 BD 3C 08 loop: lda call_1000_main,x
|
||||||
000834 1 95 20 sta zp_code_stash,x
|
000834 1 95 20 sta zp_code_stash,x
|
||||||
000836 1 CA dex
|
000836 1 CA dex
|
||||||
000837 1 10 F8 bpl L0831
|
000837 1 10 F8 bpl loop
|
||||||
000839 1 4C 4C 08 jmp L084C
|
000839 1 4C 4C 08 jmp call_init
|
||||||
|
00083C 1 .endscope
|
||||||
00083C 1
|
00083C 1
|
||||||
00083C 1 .proc call_1000_main
|
00083C 1 .proc call_1000_main
|
||||||
00083C 1 8D 02 C0 sta RAMRDOFF
|
00083C 1 8D 02 C0 sta RAMRDOFF
|
||||||
@ -220,15 +222,23 @@ Current file: stf.s
|
|||||||
00084C 1 .endproc
|
00084C 1 .endproc
|
||||||
00084C 1 call_1000_main_end:
|
00084C 1 call_1000_main_end:
|
||||||
00084C 1
|
00084C 1
|
||||||
00084C 1 20 DE 09 L084C: jsr L09DE
|
00084C 1 .proc call_init
|
||||||
|
00084C 1 ;; run the DA
|
||||||
|
00084C 1 20 DE 09 jsr init
|
||||||
|
00084F 1
|
||||||
|
00084F 1 ;; tear down/exit
|
||||||
00084F 1 8D 09 C0 sta ALTZPON
|
00084F 1 8D 09 C0 sta ALTZPON
|
||||||
000852 1 AD 8B C0 lda LCBANK1
|
000852 1 AD 8B C0 lda LCBANK1
|
||||||
000855 1 AD 8B C0 lda LCBANK1
|
000855 1 AD 8B C0 lda LCBANK1
|
||||||
000858 1 8D 02 C0 sta RAMRDOFF
|
000858 1 8D 02 C0 sta RAMRDOFF
|
||||||
00085B 1 8D 04 C0 sta RAMWRTOFF
|
00085B 1 8D 04 C0 sta RAMWRTOFF
|
||||||
00085E 1 AE 03 08 ldx stash_x
|
00085E 1 AE 03 08 ldx save_stack
|
||||||
000861 1 9A txs
|
000861 1 9A txs
|
||||||
000862 1 60 rts ; DA exit
|
000862 1 60 rts
|
||||||
|
000863 1 .endproc
|
||||||
|
000863 1
|
||||||
|
000863 1 ;;; ==================================================
|
||||||
|
000863 1 ;;; ProDOS MLI calls
|
||||||
000863 1
|
000863 1
|
||||||
000863 1 .proc open_file
|
000863 1 .proc open_file
|
||||||
000863 1 20 C2 08 jsr copy_params_aux_to_main
|
000863 1 20 C2 08 jsr copy_params_aux_to_main
|
||||||
@ -280,6 +290,8 @@ Current file: stf.s
|
|||||||
0008C1 1 60 rts
|
0008C1 1 60 rts
|
||||||
0008C2 1 .endproc
|
0008C2 1 .endproc
|
||||||
0008C2 1
|
0008C2 1
|
||||||
|
0008C2 1 ;;; ==================================================
|
||||||
|
0008C2 1
|
||||||
0008C2 1 ;;; Copies param blocks from Aux to Main
|
0008C2 1 ;;; Copies param blocks from Aux to Main
|
||||||
0008C2 1 .proc copy_params_aux_to_main
|
0008C2 1 .proc copy_params_aux_to_main
|
||||||
0008C2 1 A0 65 ldy #(params_end - params_start + 1)
|
0008C2 1 A0 65 ldy #(params_end - params_start + 1)
|
||||||
@ -313,6 +325,8 @@ Current file: stf.s
|
|||||||
0008EA 1 params_start:
|
0008EA 1 params_start:
|
||||||
0008EA 1 ;;; This block gets copied between main/aux
|
0008EA 1 ;;; This block gets copied between main/aux
|
||||||
0008EA 1
|
0008EA 1
|
||||||
|
0008EA 1 ;;; ProDOS MLI param blocks
|
||||||
|
0008EA 1
|
||||||
0008EA 1 .proc open_params
|
0008EA 1 .proc open_params
|
||||||
0008EA 1 03 .byte 3 ; param_count
|
0008EA 1 03 .byte 3 ; param_count
|
||||||
0008EB 1 04 09 .addr pathname ; pathname
|
0008EB 1 04 09 .addr pathname ; pathname
|
||||||
@ -496,6 +510,7 @@ Current file: stf.s
|
|||||||
0009D6 1 00 00 00 00 .byte $00,$00,$00,$00,$00,$02,$96,$00
|
0009D6 1 00 00 00 00 .byte $00,$00,$00,$00,$00,$02,$96,$00
|
||||||
0009DA 1 00 02 96 00
|
0009DA 1 00 02 96 00
|
||||||
0009DE 1
|
0009DE 1
|
||||||
|
0009DE 1 .proc init
|
||||||
0009DE 1 8D 09 C0 L09DE: sta ALTZPON
|
0009DE 1 8D 09 C0 L09DE: sta ALTZPON
|
||||||
0009E1 1 AD 8B C0 lda LCBANK1
|
0009E1 1 AD 8B C0 lda LCBANK1
|
||||||
0009E4 1 AD 8B C0 lda LCBANK1
|
0009E4 1 AD 8B C0 lda LCBANK1
|
||||||
@ -569,6 +584,7 @@ Current file: stf.s
|
|||||||
000A6A 1 85 28 sta $28
|
000A6A 1 85 28 sta $28
|
||||||
000A6C 1 20 20 00 jsr zp_code_stash
|
000A6C 1 20 20 00 jsr zp_code_stash
|
||||||
000A6F 1 4C 8A 0A jmp open_file_and_init_window
|
000A6F 1 4C 8A 0A jmp open_file_and_init_window
|
||||||
|
000A72 1 .endproc
|
||||||
000A72 1
|
000A72 1
|
||||||
000A72 1 .proc L0A72 ; ???
|
000A72 1 .proc L0A72 ; ???
|
||||||
000A72 1 A0 00 ldy #$00
|
000A72 1 A0 00 ldy #$00
|
||||||
@ -1285,7 +1301,7 @@ Current file: stf.s
|
|||||||
000FFE 1 F0 0B beq L100B
|
000FFE 1 F0 0B beq L100B
|
||||||
001000 1 20 00 40 19 L1000: A2D_CALL A2D_DRAW_TEXT, text_string
|
001000 1 20 00 40 19 L1000: A2D_CALL A2D_DRAW_TEXT, text_string
|
||||||
001004 1 91 09
|
001004 1 91 09
|
||||||
001006 1 A9 01 lda #$01
|
001006 1 A9 01 lda #1
|
||||||
001008 1 8D 49 09 sta L0949
|
001008 1 8D 49 09 sta L0949
|
||||||
00100B 1 60 L100B: rts
|
00100B 1 60 L100B: rts
|
||||||
00100C 1
|
00100C 1
|
||||||
|
Binary file not shown.
@ -5,40 +5,42 @@
|
|||||||
.include "auxmem.inc"
|
.include "auxmem.inc"
|
||||||
.include "a2d.inc"
|
.include "a2d.inc"
|
||||||
|
|
||||||
zp_code_stash := $0020 ; Scratch space used for "call 100 main" trampoline
|
zp_code_stash := $0020 ; Scratch space used for "call 1000 main" trampoline
|
||||||
|
|
||||||
start: jmp copy2aux
|
start: jmp copy2aux
|
||||||
|
|
||||||
stash_x:.byte $00
|
save_stack:.byte 0
|
||||||
|
|
||||||
|
;;; Copy $800 through $13FF (the DA) to aux
|
||||||
.proc copy2aux
|
.proc copy2aux
|
||||||
tsx
|
tsx
|
||||||
stx stash_x
|
stx save_stack
|
||||||
sta RAMWRTON
|
sta RAMWRTON
|
||||||
ldy #$00
|
ldy #0
|
||||||
copy_src:
|
src: lda start,y ; self-modified
|
||||||
lda start,y
|
dst: sta start,y ; self-modified
|
||||||
copy_dst:
|
|
||||||
sta start,y
|
|
||||||
dey
|
dey
|
||||||
bne copy_src
|
bne src
|
||||||
sta RAMWRTOFF
|
sta RAMWRTOFF
|
||||||
inc copy_src+2
|
inc src+2
|
||||||
inc copy_dst+2
|
inc dst+2
|
||||||
sta RAMWRTON
|
sta RAMWRTON
|
||||||
lda copy_dst+2
|
lda dst+2
|
||||||
cmp #$14
|
cmp #$14
|
||||||
bne copy_src
|
bne src
|
||||||
.endproc
|
.endproc
|
||||||
|
|
||||||
;;; Copy "call_1000_main" routine to $20
|
;;; Copy the following "call_1000_main" routine to $20
|
||||||
|
.scope
|
||||||
sta RAMWRTON
|
sta RAMWRTON
|
||||||
sta RAMRDON
|
sta RAMRDON
|
||||||
ldx #(call_1000_main_end - call_1000_main)
|
ldx #(call_1000_main_end - call_1000_main)
|
||||||
L0831: lda call_1000_main,x
|
loop: lda call_1000_main,x
|
||||||
sta zp_code_stash,x
|
sta zp_code_stash,x
|
||||||
dex
|
dex
|
||||||
bpl L0831
|
bpl loop
|
||||||
jmp L084C
|
jmp call_init
|
||||||
|
.endscope
|
||||||
|
|
||||||
.proc call_1000_main
|
.proc call_1000_main
|
||||||
sta RAMRDOFF
|
sta RAMRDOFF
|
||||||
@ -50,15 +52,23 @@ L0831: lda call_1000_main,x
|
|||||||
.endproc
|
.endproc
|
||||||
call_1000_main_end:
|
call_1000_main_end:
|
||||||
|
|
||||||
L084C: jsr L09DE
|
.proc call_init
|
||||||
|
;; run the DA
|
||||||
|
jsr init
|
||||||
|
|
||||||
|
;; tear down/exit
|
||||||
sta ALTZPON
|
sta ALTZPON
|
||||||
lda LCBANK1
|
lda LCBANK1
|
||||||
lda LCBANK1
|
lda LCBANK1
|
||||||
sta RAMRDOFF
|
sta RAMRDOFF
|
||||||
sta RAMWRTOFF
|
sta RAMWRTOFF
|
||||||
ldx stash_x
|
ldx save_stack
|
||||||
txs
|
txs
|
||||||
rts ; DA exit
|
rts
|
||||||
|
.endproc
|
||||||
|
|
||||||
|
;;; ==================================================
|
||||||
|
;;; ProDOS MLI calls
|
||||||
|
|
||||||
.proc open_file
|
.proc open_file
|
||||||
jsr copy_params_aux_to_main
|
jsr copy_params_aux_to_main
|
||||||
@ -105,6 +115,8 @@ L084C: jsr L09DE
|
|||||||
rts
|
rts
|
||||||
.endproc
|
.endproc
|
||||||
|
|
||||||
|
;;; ==================================================
|
||||||
|
|
||||||
;;; Copies param blocks from Aux to Main
|
;;; Copies param blocks from Aux to Main
|
||||||
.proc copy_params_aux_to_main
|
.proc copy_params_aux_to_main
|
||||||
ldy #(params_end - params_start + 1)
|
ldy #(params_end - params_start + 1)
|
||||||
@ -138,6 +150,8 @@ loop: lda params_start - 1,y
|
|||||||
params_start:
|
params_start:
|
||||||
;;; This block gets copied between main/aux
|
;;; This block gets copied between main/aux
|
||||||
|
|
||||||
|
;;; ProDOS MLI param blocks
|
||||||
|
|
||||||
.proc open_params
|
.proc open_params
|
||||||
.byte 3 ; param_count
|
.byte 3 ; param_count
|
||||||
.addr pathname ; pathname
|
.addr pathname ; pathname
|
||||||
@ -305,6 +319,7 @@ L09B7: .byte $00,$00,$00,$00,$00,$00,$00,$00
|
|||||||
L09CE: .byte $0A,$00,$1C,$00,$00,$20,$80,$00
|
L09CE: .byte $0A,$00,$1C,$00,$00,$20,$80,$00
|
||||||
.byte $00,$00,$00,$00,$00,$02,$96,$00
|
.byte $00,$00,$00,$00,$00,$02,$96,$00
|
||||||
|
|
||||||
|
.proc init
|
||||||
L09DE: sta ALTZPON
|
L09DE: sta ALTZPON
|
||||||
lda LCBANK1
|
lda LCBANK1
|
||||||
lda LCBANK1
|
lda LCBANK1
|
||||||
@ -378,6 +393,7 @@ L0A61: jsr L0A72
|
|||||||
sta $28
|
sta $28
|
||||||
jsr zp_code_stash
|
jsr zp_code_stash
|
||||||
jmp open_file_and_init_window
|
jmp open_file_and_init_window
|
||||||
|
.endproc
|
||||||
|
|
||||||
.proc L0A72 ; ???
|
.proc L0A72 ; ???
|
||||||
ldy #$00
|
ldy #$00
|
||||||
@ -1074,7 +1090,7 @@ L0FF6: lda L0948
|
|||||||
lda text_string::len
|
lda text_string::len
|
||||||
beq L100B
|
beq L100B
|
||||||
L1000: A2D_CALL A2D_DRAW_TEXT, text_string
|
L1000: A2D_CALL A2D_DRAW_TEXT, text_string
|
||||||
lda #$01
|
lda #1
|
||||||
sta L0949
|
sta L0949
|
||||||
L100B: rts
|
L100B: rts
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user