From 5e1027b8e5956c03f84f68ff71d4aec97b7bdcd5 Mon Sep 17 00:00:00 2001 From: Joshua Bell Date: Wed, 30 Aug 2017 19:42:31 -0700 Subject: [PATCH] Use scopes (procs) for structure definitions --- desk.acc/show.text.file/stf.list | 113 +++++++++++++++---------------- desk.acc/show.text.file/stf.o | Bin 19432 -> 19337 bytes desk.acc/show.text.file/stf.s | 113 +++++++++++++++---------------- 3 files changed, 112 insertions(+), 114 deletions(-) diff --git a/desk.acc/show.text.file/stf.list b/desk.acc/show.text.file/stf.list index 4c84191..c6896ca 100644 --- a/desk.acc/show.text.file/stf.list +++ b/desk.acc/show.text.file/stf.list @@ -138,7 +138,7 @@ Current file: stf.s 000837 1 10 F8 bpl L0831 000839 1 4C 4C 08 jmp L084C 00083C 1 -00083C 1 .proc call_1000_main +00083C 1 .proc call_1000_main 00083C 1 8D 02 C0 sta RAMRDOFF 00083F 1 8D 04 C0 sta RAMWRTOFF 000842 1 20 00 10 jsr L1000 @@ -158,7 +158,7 @@ Current file: stf.s 000861 1 9A txs 000862 1 60 rts ; DA exit 000863 1 -000863 1 .proc open_file +000863 1 .proc open_file 000863 1 20 C2 08 jsr copy_params_aux_to_main 000866 1 8D 08 C0 sta ALTZPOFF 000869 1 20 00 BF C8 MLI_CALL OPEN, open_params @@ -168,7 +168,7 @@ Current file: stf.s 000875 1 60 rts 000876 1 .endproc 000876 1 -000876 1 .proc read_file +000876 1 .proc read_file 000876 1 20 C2 08 jsr copy_params_aux_to_main 000879 1 8D 08 C0 sta ALTZPOFF 00087C 1 20 00 BF CA MLI_CALL READ, read_params @@ -178,7 +178,7 @@ Current file: stf.s 000888 1 60 rts 000889 1 .endproc 000889 1 -000889 1 .proc get_file_eof +000889 1 .proc get_file_eof 000889 1 20 C2 08 jsr copy_params_aux_to_main 00088C 1 8D 08 C0 sta ALTZPOFF 00088F 1 20 00 BF D1 MLI_CALL GET_EOF, get_eof_params @@ -209,7 +209,7 @@ Current file: stf.s 0008C2 1 .endproc 0008C2 1 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) 0008C4 1 8D 04 C0 sta RAMWRTOFF 0008C7 1 B9 E9 08 loop: lda params_start - 1,y @@ -221,7 +221,7 @@ Current file: stf.s 0008D4 1 .endproc 0008D4 1 0008D4 1 ;;; Copies param blocks from Main to Aux -0008D4 1 .proc copy_params_main_to_aux +0008D4 1 .proc copy_params_main_to_aux 0008D4 1 48 pha 0008D5 1 08 php 0008D6 1 8D 05 C0 sta RAMWRTON @@ -241,38 +241,37 @@ Current file: stf.s 0008EA 1 params_start: 0008EA 1 ;;; This block gets copied between main/aux 0008EA 1 -0008EA 1 open_params: +0008EA 1 .proc open_params 0008EA 1 03 .byte 3 ; param_count 0008EB 1 04 09 .addr L0904 ; pathname 0008ED 1 00 0C .addr $0C00 ; io_buffer -0008EF 1 00 open_ref_num:.byte 0 ; ref_num +0008EF 1 00 ref_num:.byte 0 ; ref_num +0008F0 1 .endproc 0008F0 1 -0008F0 1 -0008F0 1 read_params: +0008F0 1 .proc read_params 0008F0 1 04 .byte 4 ; param_count -0008F1 1 read_ref_num: -0008F1 1 00 .byte 0 ; ref_num -0008F2 1 00 12 read_db:.addr $1200 ; data_buffer +0008F1 1 00 ref_num:.byte 0 ; ref_num +0008F2 1 00 12 db: .addr $1200 ; data_buffer 0008F4 1 00 01 .word $100 ; request_count 0008F6 1 00 00 .word 0 ; trans_count +0008F8 1 .endproc 0008F8 1 -0008F8 1 get_eof_params: +0008F8 1 .proc get_eof_params 0008F8 1 02 .byte 2 ; param_count -0008F9 1 get_eof_ref_num: -0008F9 1 00 .byte 0 ; ref_num +0008F9 1 00 ref_num:.byte 0 ; ref_num 0008FA 1 00 00 00 .byte 0,0,0 ; EOF (lo, mid, hi) +0008FD 1 .endproc 0008FD 1 -0008FD 1 set_mark_params: +0008FD 1 .proc set_mark_params 0008FD 1 02 .byte 2 ; param_count -0008FE 1 set_mark_ref_num: -0008FE 1 00 .byte 0 ; ref_num +0008FE 1 00 ref_num:.byte 0 ; ref_num 0008FF 1 00 00 00 .byte 0,0,0 ; position (lo, mid, hi) +000902 1 .endproc 000902 1 -000902 1 close_params: +000902 1 .proc close_params 000902 1 01 .byte 1 ; param_count -000903 1 close_ref_num: -000903 1 00 .byte 0 ; ref_num -000904 1 +000903 1 00 ref_num:.byte 0 ; ref_num +000904 1 .endproc 000904 1 000904 1 00 00 00 00 L0904: .byte $00,$00,$00,$00,$00,$00,$00,$00 000908 1 00 00 00 00 @@ -331,12 +330,12 @@ Current file: stf.s 000970 1 button_state: 000970 1 00 .byte $00 000971 1 -000971 1 mouse_data: -000971 1 00 00 mouse_x:.word 0 ; lo/hi of mouse x position -000973 1 00 00 mouse_y:.word 0 ; lo of mouse y position (hi = unused?) ????? -000975 1 00 mouse_elem: .byte $00 ; 3 = title, 4 = ???, 5 = close -000976 1 00 mouse_win: .byte $00 ; $64 = mouse in window -000977 1 +000971 1 .proc mouse_data +000971 1 00 00 xcoord: .word 0 ; lo/hi of mouse x position +000973 1 00 00 ycoord: .word 0 ; lo of mouse y position (hi = unused?) ????? +000975 1 00 elem: .byte $00 ; 3 = title, 4 = ???, 5 = close +000976 1 00 win: .byte $00 ; $64 = mouse in window +000977 1 .endproc 000977 1 000977 1 64 L0977: .byte $64 000978 1 00 L0978: .byte $00 @@ -498,18 +497,18 @@ Current file: stf.s 000A9C 1 D0 F7 bne L0A95 000A9E 1 8D 05 C0 sta RAMWRTON 000AA1 1 20 63 08 jsr open_file -000AA4 1 AD EF 08 lda open_ref_num -000AA7 1 8D F1 08 sta read_ref_num -000AAA 1 8D FE 08 sta set_mark_ref_num -000AAD 1 8D F9 08 sta get_eof_ref_num -000AB0 1 8D 03 09 sta close_ref_num +000AA4 1 AD EF 08 lda open_params::ref_num +000AA7 1 8D F1 08 sta read_params::ref_num +000AAA 1 8D FE 08 sta set_mark_params::ref_num +000AAD 1 8D F9 08 sta get_eof_params::ref_num +000AB0 1 8D 03 09 sta close_params::ref_num 000AB3 1 20 89 08 jsr get_file_eof 000AB6 1 20 00 40 38 A2D_CALL $38, L0994 000ABA 1 94 09 000ABC 1 20 00 40 04 A2D_CALL $04, L09A8 000AC0 1 A8 09 000AC2 1 20 88 10 jsr L1088 -000AC5 1 20 98 11 jsr draw_mode +000AC5 1 20 98 11 jsr calc_and_draw_mode 000AC8 1 20 30 0E jsr L0E30 000ACB 1 20 00 40 2B A2D_CALL $2B, NULL 000ACF 1 00 00 @@ -523,19 +522,19 @@ Current file: stf.s 000ADE 1 000ADE 1 20 00 40 40 A2D_CALL A2D_GET_MOUSE, mouse_data 000AE2 1 71 09 -000AE4 1 AD 76 09 lda mouse_win ; click target?? +000AE4 1 AD 76 09 lda mouse_data::win ; click target?? 000AE7 1 C9 64 cmp #$64 ; is in window?? 000AE9 1 D0 E6 bne input_loop -000AEB 1 AD 75 09 lda mouse_elem ; which UI element? +000AEB 1 AD 75 09 lda mouse_data::elem ; which UI element? 000AEE 1 C9 05 cmp #$05 ; 5 = close btn 000AF0 1 F0 2F beq on_close_btn_down -000AF2 1 AE 71 09 ldx mouse_x ; stash mouse location +000AF2 1 AE 71 09 ldx mouse_data::xcoord ; stash mouse location 000AF5 1 8E 78 09 stx L0978 000AF8 1 8E 80 09 stx L0980 -000AFB 1 AE 72 09 ldx mouse_x+1 +000AFB 1 AE 72 09 ldx mouse_data::xcoord+1 000AFE 1 8E 79 09 stx L0979 000B01 1 8E 81 09 stx L0981 -000B04 1 AE 73 09 ldx mouse_y +000B04 1 AE 73 09 ldx mouse_data::ycoord 000B07 1 8E 7A 09 stx L097A 000B0A 1 8E 82 09 stx L0982 000B0D 1 C9 03 cmp #$03 ; 3 = title bar @@ -609,7 +608,7 @@ Current file: stf.s 000BA5 1 8D 86 09 sta L0986 000BA8 1 20 00 40 49 A2D_CALL $49, L0986 000BAC 1 86 09 -000BAE 1 20 98 11 jsr draw_mode +000BAE 1 20 98 11 jsr calc_and_draw_mode 000BB1 1 4C F9 0D jmp L0DF9 000BB4 1 000BB4 1 20 00 40 48 L0BB4: A2D_CALL $48, L0980 @@ -801,11 +800,11 @@ Current file: stf.s 000D36 1 D0 D0 bne L0D08 000D38 1 60 rts 000D39 1 -000D39 1 AD 71 09 L0D39: lda mouse_x +000D39 1 AD 71 09 L0D39: lda mouse_data::xcoord 000D3C 1 8D 8B 09 sta L098B -000D3F 1 AD 72 09 lda mouse_x+1 +000D3F 1 AD 72 09 lda mouse_data::xcoord+1 000D42 1 8D 8C 09 sta L098C -000D45 1 AD 73 09 lda mouse_y +000D45 1 AD 73 09 lda mouse_data::ycoord 000D48 1 8D 8D 09 sta L098D 000D4B 1 20 00 40 4A A2D_CALL $4A, L098A 000D4F 1 8A 09 @@ -914,10 +913,10 @@ Current file: stf.s 000E35 1 20 29 11 jsr L1129 000E38 1 20 9C 08 jsr set_file_mark 000E3B 1 A9 00 lda #$00 -000E3D 1 8D F2 08 sta read_db +000E3D 1 8D F2 08 sta read_params::db 000E40 1 85 06 sta $06 000E42 1 A9 12 lda #$12 -000E44 1 8D F3 08 sta read_db+1 +000E44 1 8D F3 08 sta read_params::db+1 000E47 1 85 07 sta $07 000E49 1 A9 00 lda #$00 000E4B 1 8D 45 09 sta L0945 @@ -1129,17 +1128,17 @@ Current file: stf.s 00102B 1 A9 00 L102B: lda #$00 00102D 1 8D 45 09 sta L0945 001030 1 20 3E 10 jsr L103E -001033 1 AD F3 08 lda read_db+1 +001033 1 AD F3 08 lda read_params::db+1 001036 1 C9 12 cmp #$12 001038 1 D0 03 bne L103D -00103A 1 EE F3 08 inc read_db+1 +00103A 1 EE F3 08 inc read_params::db+1 00103D 1 60 L103D: rts 00103E 1 00103E 1 L103E: 00103E 1 .scope -00103E 1 AD F2 08 lda read_db +00103E 1 AD F2 08 lda read_params::db 001041 1 8D 52 10 sta store+1 -001044 1 AD F3 08 lda read_db+1 +001044 1 AD F3 08 lda read_params::db+1 001047 1 8D 53 10 sta store+2 00104A 1 A9 20 lda #$20 00104C 1 A2 00 ldx #$00 @@ -1157,7 +1156,7 @@ Current file: stf.s 001067 1 85 42 sta $42 001069 1 A9 FF lda #$FF 00106B 1 85 3E sta $3E -00106D 1 AD F3 08 lda read_db+1 +00106D 1 AD F3 08 lda read_params::db+1 001070 1 85 43 sta $43 001072 1 85 3D sta $3D 001074 1 85 3F sta $3F @@ -1263,11 +1262,11 @@ Current file: stf.s 001139 1 60 L1139: rts 00113A 1 00113A 1 ;;; On Title Bar Click - is it on the Fixed/Proportional label? -00113A 1 .proc on_title_bar_click -00113A 1 AD 72 09 lda mouse_x+1 ; mouse x high byte? +00113A 1 .proc on_title_bar_click +00113A 1 AD 72 09 lda mouse_data::xcoord+1 ; mouse x high byte? 00113D 1 CD 85 11 cmp label_left+1 001140 1 D0 06 bne :+ -001142 1 AD 71 09 lda mouse_x +001142 1 AD 71 09 lda mouse_data::xcoord 001145 1 CD 84 11 cmp label_left 001148 1 90 19 : bcc ignore 00114A 1 AD 6F 09 lda fixed_mode_flag @@ -1278,7 +1277,7 @@ Current file: stf.s 001158 1 001158 1 set_flag: 001158 1 EE 6F 09 inc fixed_mode_flag ; set flag (mode = fixed) -00115B 1 20 BD 11 redraw: jsr draw_mode2 +00115B 1 20 BD 11 redraw: jsr draw_mode 00115E 1 20 30 0E jsr L0E30 001161 1 38 sec ; Click consumed 001162 1 60 rts @@ -1302,7 +1301,7 @@ Current file: stf.s 001192 1 0A 00 001194 1 00 00 0A 00 L1194: .byte $00,$00,$0A,$00 001198 1 -001198 1 .proc draw_mode ; guess: this is computing draw location +001198 1 .proc calc_and_draw_mode 001198 1 38 sec 001199 1 AD AA 09 lda L09AA 00119C 1 E9 0C sbc #$0C @@ -1322,7 +1321,7 @@ Current file: stf.s 0011B8 1 E9 00 sbc #$00 0011BA 1 8D 85 11 sta label_left+1 0011BD 1 .endproc -0011BD 1 .proc draw_mode2 +0011BD 1 .proc draw_mode 0011BD 1 20 00 40 06 A2D_CALL $06, label_left ; guess: setting up draw location 0011C1 1 84 11 0011C3 1 20 00 40 0E A2D_CALL $0E, L1194 diff --git a/desk.acc/show.text.file/stf.o b/desk.acc/show.text.file/stf.o index f348169eb5859c111a6a0170e5baf478785637e5..3c78178c7b319b8a0cb3b0184b32a8b4a676bd40 100644 GIT binary patch literal 19337 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 X!r9H5C3z?E^LW!HFJ}EX9t8gdIkbv_ literal 19432 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 S-iiD?-lF-F*^kD9;C};N^sf8> diff --git a/desk.acc/show.text.file/stf.s b/desk.acc/show.text.file/stf.s index 05131fd..8fa3d0d 100644 --- a/desk.acc/show.text.file/stf.s +++ b/desk.acc/show.text.file/stf.s @@ -47,7 +47,7 @@ L0831: lda call_1000_main,x bpl L0831 jmp L084C -.proc call_1000_main +.proc call_1000_main sta RAMRDOFF sta RAMWRTOFF jsr L1000 @@ -67,7 +67,7 @@ L084C: jsr L09DE txs rts ; DA exit -.proc open_file +.proc open_file jsr copy_params_aux_to_main sta ALTZPOFF MLI_CALL OPEN, open_params @@ -76,7 +76,7 @@ L084C: jsr L09DE rts .endproc -.proc read_file +.proc read_file jsr copy_params_aux_to_main sta ALTZPOFF MLI_CALL READ, read_params @@ -85,7 +85,7 @@ L084C: jsr L09DE rts .endproc -.proc get_file_eof +.proc get_file_eof jsr copy_params_aux_to_main sta ALTZPOFF MLI_CALL GET_EOF, get_eof_params @@ -113,7 +113,7 @@ L084C: jsr L09DE .endproc ;;; 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) sta RAMWRTOFF loop: lda params_start - 1,y @@ -125,7 +125,7 @@ loop: lda params_start - 1,y .endproc ;;; Copies param blocks from Main to Aux -.proc copy_params_main_to_aux +.proc copy_params_main_to_aux pha php sta RAMWRTON @@ -145,38 +145,37 @@ loop: lda params_start - 1,y params_start: ;;; This block gets copied between main/aux -open_params: +.proc open_params .byte 3 ; param_count .addr L0904 ; pathname .addr $0C00 ; io_buffer -open_ref_num:.byte 0 ; ref_num +ref_num:.byte 0 ; ref_num +.endproc - -read_params: +.proc read_params .byte 4 ; param_count -read_ref_num: - .byte 0 ; ref_num -read_db:.addr $1200 ; data_buffer +ref_num:.byte 0 ; ref_num +db: .addr $1200 ; data_buffer .word $100 ; request_count .word 0 ; trans_count +.endproc -get_eof_params: +.proc get_eof_params .byte 2 ; param_count -get_eof_ref_num: - .byte 0 ; ref_num +ref_num:.byte 0 ; ref_num .byte 0,0,0 ; EOF (lo, mid, hi) +.endproc -set_mark_params: +.proc set_mark_params .byte 2 ; param_count -set_mark_ref_num: - .byte 0 ; ref_num +ref_num:.byte 0 ; ref_num .byte 0,0,0 ; position (lo, mid, hi) +.endproc -close_params: +.proc close_params .byte 1 ; param_count -close_ref_num: - .byte 0 ; ref_num - +ref_num:.byte 0 ; ref_num +.endproc L0904: .byte $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00 @@ -226,12 +225,12 @@ fixed_mode_flag: button_state: .byte $00 -mouse_data: -mouse_x:.word 0 ; lo/hi of mouse x position -mouse_y:.word 0 ; lo of mouse y position (hi = unused?) ????? -mouse_elem: .byte $00 ; 3 = title, 4 = ???, 5 = close -mouse_win: .byte $00 ; $64 = mouse in window - +.proc mouse_data +xcoord: .word 0 ; lo/hi of mouse x position +ycoord: .word 0 ; lo of mouse y position (hi = unused?) ????? +elem: .byte $00 ; 3 = title, 4 = ???, 5 = close +win: .byte $00 ; $64 = mouse in window +.endproc L0977: .byte $64 L0978: .byte $00 @@ -386,16 +385,16 @@ L0A95: lda $8802,x bne L0A95 sta RAMWRTON jsr open_file - lda open_ref_num - sta read_ref_num - sta set_mark_ref_num - sta get_eof_ref_num - sta close_ref_num + lda open_params::ref_num + sta read_params::ref_num + sta set_mark_params::ref_num + sta get_eof_params::ref_num + sta close_params::ref_num jsr get_file_eof A2D_CALL $38, L0994 A2D_CALL $04, L09A8 jsr L1088 - jsr draw_mode + jsr calc_and_draw_mode jsr L0E30 A2D_CALL $2B, NULL @@ -406,19 +405,19 @@ input_loop: bne input_loop ; nope, keep waiting A2D_CALL A2D_GET_MOUSE, mouse_data - lda mouse_win ; click target?? + lda mouse_data::win ; click target?? cmp #$64 ; is in window?? bne input_loop - lda mouse_elem ; which UI element? + lda mouse_data::elem ; which UI element? cmp #$05 ; 5 = close btn beq on_close_btn_down - ldx mouse_x ; stash mouse location + ldx mouse_data::xcoord ; stash mouse location stx L0978 stx L0980 - ldx mouse_x+1 + ldx mouse_data::xcoord+1 stx L0979 stx L0981 - ldx mouse_y + ldx mouse_data::ycoord stx L097A stx L0982 cmp #$03 ; 3 = title bar @@ -488,7 +487,7 @@ L0B8B: sta L0998 lda #$02 sta L0986 A2D_CALL $49, L0986 - jsr draw_mode + jsr calc_and_draw_mode jmp L0DF9 L0BB4: A2D_CALL $48, L0980 @@ -679,11 +678,11 @@ L0D27: sta L099B bne L0D08 rts -L0D39: lda mouse_x +L0D39: lda mouse_data::xcoord sta L098B - lda mouse_x+1 + lda mouse_data::xcoord+1 sta L098C - lda mouse_y + lda mouse_data::ycoord sta L098D A2D_CALL $4A, L098A rts @@ -784,10 +783,10 @@ L0E30: lda #$00 jsr L1129 jsr set_file_mark lda #$00 - sta read_db + sta read_params::db sta $06 lda #$12 - sta read_db+1 + sta read_params::db+1 sta $07 lda #$00 sta L0945 @@ -995,17 +994,17 @@ L1015: lda $1300,y L102B: lda #$00 sta L0945 jsr L103E - lda read_db+1 + lda read_params::db+1 cmp #$12 bne L103D - inc read_db+1 + inc read_params::db+1 L103D: rts L103E: .scope - lda read_db + lda read_params::db sta store+1 - lda read_db+1 + lda read_params::db+1 sta store+2 lda #$20 ldx #$00 @@ -1023,7 +1022,7 @@ store: sta $1200,x ; self-modified sta $42 lda #$FF sta $3E - lda read_db+1 + lda read_params::db+1 sta $43 sta $3D sta $3F @@ -1129,11 +1128,11 @@ L1133: sta $8802,x L1139: rts ;;; On Title Bar Click - is it on the Fixed/Proportional label? -.proc on_title_bar_click - lda mouse_x+1 ; mouse x high byte? +.proc on_title_bar_click + lda mouse_data::xcoord+1 ; mouse x high byte? cmp label_left+1 bne :+ - lda mouse_x + lda mouse_data::xcoord cmp label_left : bcc ignore lda fixed_mode_flag @@ -1144,7 +1143,7 @@ L1139: rts set_flag: inc fixed_mode_flag ; set flag (mode = fixed) -redraw: jsr draw_mode2 +redraw: jsr draw_mode jsr L0E30 sec ; Click consumed rts @@ -1162,7 +1161,7 @@ L1186: .byte $00,$00,$00,$20,$80,$00,$00,$00 .byte $00,$00,$50,$00,$0A,$00 L1194: .byte $00,$00,$0A,$00 -.proc draw_mode ; guess: this is computing draw location +.proc calc_and_draw_mode sec lda L09AA sbc #$0C @@ -1182,7 +1181,7 @@ L1194: .byte $00,$00,$0A,$00 sbc #$00 sta label_left+1 .endproc -.proc draw_mode2 +.proc draw_mode A2D_CALL $06, label_left ; guess: setting up draw location A2D_CALL $0E, L1194 lda fixed_mode_flag