From 0a721739f830048eed27b0f994080f3f53ab5208 Mon Sep 17 00:00:00 2001 From: Joshua Bell Date: Fri, 1 Sep 2017 19:06:14 -0700 Subject: [PATCH] sort out zp trampoline --- desk.acc/show.text.file/stf.list | 43 +++++++++++++++++-------------- desk.acc/show.text.file/stf.o | Bin 21432 -> 21458 bytes desk.acc/show.text.file/stf.s | 43 +++++++++++++++++-------------- 3 files changed, 46 insertions(+), 40 deletions(-) diff --git a/desk.acc/show.text.file/stf.list b/desk.acc/show.text.file/stf.list index 2f6f6f5..74e5d4c 100644 --- a/desk.acc/show.text.file/stf.list +++ b/desk.acc/show.text.file/stf.list @@ -184,8 +184,8 @@ Current file: stf.s 000800 2 .endmacro 000800 2 000800 1 -000800 1 zp_code_stash := $0020 ; Scratch space used for "call 1000 main" trampoline -000800 1 zp_code_mod := $0027 ; self-modified address in stash +000800 1 call_main_trampoline := $0020 ; installed on ZP, turns off auxmem and calls... +000800 1 call_main_addr := $0027 ; address patched in here 000800 1 000800 1 4C 04 08 start: jmp copy2aux 000803 1 @@ -210,27 +210,27 @@ Current file: stf.s 000827 1 D0 E4 bne src 000829 1 .endproc 000829 1 -000829 1 ;;; Copy the following "call_1000_main" routine to $20 +000829 1 ;;; Copy the following "call_main_template" routine to $20 000829 1 .scope 000829 1 8D 05 C0 sta RAMWRTON 00082C 1 8D 03 C0 sta RAMRDON -00082F 1 A2 10 ldx #(call_1000_main_end - call_1000_main) -000831 1 BD 3C 08 loop: lda call_1000_main,x -000834 1 95 20 sta zp_code_stash,x +00082F 1 A2 10 ldx #(call_main_template_end - call_main_template) +000831 1 BD 3C 08 loop: lda call_main_template,x +000834 1 95 20 sta call_main_trampoline,x 000836 1 CA dex 000837 1 10 F8 bpl loop 000839 1 4C 4C 08 jmp call_init 00083C 1 .endscope 00083C 1 -00083C 1 .proc call_1000_main +00083C 1 .proc call_main_template 00083C 1 8D 02 C0 sta RAMRDOFF 00083F 1 8D 04 C0 sta RAMWRTOFF -000842 1 20 00 10 jsr L1000 +000842 1 20 00 10 jsr $1000 ; overwritten (in zp version) 000845 1 8D 03 C0 sta RAMRDON 000848 1 8D 05 C0 sta RAMWRTON 00084B 1 60 rts 00084C 1 .endproc -00084C 1 call_1000_main_end: +00084C 1 call_main_template_end: 00084C 1 00084C 1 .proc call_init 00084C 1 ;; run the DA @@ -623,10 +623,10 @@ Current file: stf.s 000A64 1 000A64 1 addr := $401E 000A64 1 A9 1E lda #addr -000A6A 1 85 28 sta zp_code_mod+1 -000A6C 1 20 20 00 jsr zp_code_stash +000A6A 1 85 28 sta call_main_addr+1 +000A6C 1 20 20 00 jsr call_main_trampoline 000A6F 1 000A6F 1 4C 8A 0A jmp open_file_and_init_window 000A72 1 @@ -657,7 +657,7 @@ Current file: stf.s 000A8F 1 AE 01 88 ldx $8801 000A92 1 8D 04 C0 sta RAMWRTOFF 000A95 1 BD 02 88 loop: lda $8802,x -000A98 1 9D FF 10 sta L10FF,x +000A98 1 9D FF 10 sta L10FD+2,x 000A9B 1 CA dex 000A9C 1 D0 F7 bne loop 000A9E 1 8D 05 C0 sta RAMWRTON @@ -739,7 +739,7 @@ Current file: stf.s 000B3C 1 .proc maybe_dead_code ; window move routine, maybe? 000B3C 1 20 00 40 45 A2D_CALL $45, L0977 ; run resize loop? 000B40 1 77 09 -000B42 1 20 FD 10 jsr L10FD +000B42 1 20 FD 10 jsr L10FD ; call $4015 on main 000B45 1 20 88 10 jsr L1088 000B48 1 000B48 1 max_width := 512 @@ -1348,7 +1348,7 @@ Current file: stf.s 000FF9 1 F0 10 beq L100B 000FFB 1 AD 93 09 lda text_string::len 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 A2D_CALL A2D_DRAW_TEXT, text_string 001004 1 91 09 001006 1 A9 01 lda #1 001008 1 8D 49 09 sta L0949 @@ -1470,12 +1470,15 @@ Current file: stf.s 0010FA 1 D0 F8 bne L10F4 0010FC 1 60 rts 0010FD 1 -0010FD 1 A9 15 L10FD: lda #$15 -0010FF 1 85 27 L10FF: sta $27 -001101 1 A9 40 lda #$40 -001103 1 85 28 sta $28 -001105 1 20 20 00 jsr zp_code_stash +0010FD 1 .proc L10FD +0010FD 1 addr := $4015 +0010FD 1 A9 15 lda #addr +001103 1 85 28 sta call_main_addr+1 +001105 1 20 20 00 jsr call_main_trampoline 001108 1 60 rts +001109 1 .endproc 001109 1 001109 1 ;;; if fixed mode, do a main->aux copy of a code block ??? 001109 1 .proc L1109 diff --git a/desk.acc/show.text.file/stf.o b/desk.acc/show.text.file/stf.o index 4484205eb385af13a2b9cec8eac8b1c6c0b66c91..77d899c6d4ba9a4d076fc1a055f7d830baba38a5 100644 GIT binary patch literal 21458 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 literal 21432 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 SHgD13iHwA1Z89^1;Qs)5D!X?8 diff --git a/desk.acc/show.text.file/stf.s b/desk.acc/show.text.file/stf.s index 3ab28ad..47ac852 100644 --- a/desk.acc/show.text.file/stf.s +++ b/desk.acc/show.text.file/stf.s @@ -5,8 +5,8 @@ .include "auxmem.inc" .include "a2d.inc" -zp_code_stash := $0020 ; Scratch space used for "call 1000 main" trampoline -zp_code_mod := $0027 ; self-modified address in stash +call_main_trampoline := $0020 ; installed on ZP, turns off auxmem and calls... +call_main_addr := $0027 ; address patched in here start: jmp copy2aux @@ -31,27 +31,27 @@ dst: sta start,y ; self-modified bne src .endproc -;;; Copy the following "call_1000_main" routine to $20 +;;; Copy the following "call_main_template" routine to $20 .scope sta RAMWRTON sta RAMRDON - ldx #(call_1000_main_end - call_1000_main) -loop: lda call_1000_main,x - sta zp_code_stash,x + ldx #(call_main_template_end - call_main_template) +loop: lda call_main_template,x + sta call_main_trampoline,x dex bpl loop jmp call_init .endscope -.proc call_1000_main +.proc call_main_template sta RAMRDOFF sta RAMWRTOFF - jsr L1000 + jsr $1000 ; overwritten (in zp version) sta RAMRDON sta RAMWRTON rts .endproc -call_1000_main_end: +call_main_template_end: .proc call_init ;; run the DA @@ -426,10 +426,10 @@ continue: addr := $401E lda #addr - sta zp_code_mod+1 - jsr zp_code_stash + sta call_main_addr+1 + jsr call_main_trampoline jmp open_file_and_init_window @@ -460,7 +460,7 @@ end: rts ldx $8801 sta RAMWRTOFF loop: lda $8802,x - sta L10FF,x + sta L10FD+2,x dex bne loop sta RAMWRTON @@ -534,7 +534,7 @@ title: jsr on_title_bar_click ;;; How would control get here???? Dead code??? .proc maybe_dead_code ; window move routine, maybe? A2D_CALL $45, L0977 ; run resize loop? - jsr L10FD + jsr L10FD ; call $4015 on main jsr L1088 max_width := 512 @@ -1132,7 +1132,7 @@ L0FF6: lda L0948 beq L100B lda text_string::len beq L100B -L1000: A2D_CALL A2D_DRAW_TEXT, text_string + A2D_CALL A2D_DRAW_TEXT, text_string lda #1 sta L0949 L100B: rts @@ -1253,12 +1253,15 @@ L10F4: clc bne L10F4 rts -L10FD: lda #$15 -L10FF: sta $27 - lda #$40 - sta $28 - jsr zp_code_stash +.proc L10FD + addr := $4015 + lda #addr + sta call_main_addr+1 + jsr call_main_trampoline rts +.endproc ;;; if fixed mode, do a main->aux copy of a code block ??? .proc L1109