macros for DAs

This commit is contained in:
Joshua Bell 2018-02-06 18:42:00 -08:00
parent 4b0669bf25
commit 77bda904ab
7 changed files with 147 additions and 341 deletions

View File

@ -8,6 +8,7 @@
.include "../mgtk.inc"
.include "../desktop.inc" ; redraw icons after window move; font
.include "../macros.inc"
.org $800
@ -34,26 +35,14 @@ save_stack: .byte 0
;; Copy the DA to AUX memory.
lda ROMIN2
lda #<start
sta STARTLO
lda #>start
sta STARTHI
lda #<end
sta ENDLO
lda #>end
sta ENDHI
lda #<dest
sta DESTINATIONLO
lda #>dest
sta DESTINATIONHI
copy16 #start, STARTLO
copy16 #end, ENDLO
copy16 #dest, DESTINATIONLO
sec ; main>aux
jsr AUXMOVE
;; Invoke it.
lda #<start
sta XFERSTARTLO
lda #>start
sta XFERSTARTHI
copy16 #start, XFERSTARTLO
php
pla
ora #$40 ; set overflow: use aux zp/stack
@ -761,15 +750,11 @@ loop: lda adjust_txtptr_copied-1,x
lda #0 ; Turn off errors
sta ERRFLG
lda #<error_hook ; set up FP error handler
sta COUT_HOOK
lda #>error_hook
sta COUT_HOOK+1
copy16 #error_hook, COUT_HOOK ; set up FP error handler
lda #1
jsr CALL_FLOAT
ldx #<farg
ldy #>farg
ldxy #farg
jsr CALL_ROUND
lda #0 ; set FAC to 0
jsr CALL_FLOAT
@ -779,8 +764,7 @@ loop: lda adjust_txtptr_copied-1,x
jsr CALL_FMULT
lda #$00
jsr CALL_FLOAT
ldx #<farg
ldy #>farg
ldxy #farg
jsr CALL_ROUND
tsx
@ -1035,14 +1019,12 @@ miss: clc
.proc process_key
cmp #'C' ; Clear?
bne :+
ldx #<btn_c::port
ldy #>btn_c::port
ldxy #btn_c::port
lda #'c'
jsr depress_button
lda #$00
jsr CALL_FLOAT
ldx #<farg
ldy #>farg
ldxy #farg
jsr CALL_ROUND
lda #'='
sta calc_op
@ -1056,8 +1038,7 @@ miss: clc
: cmp #'E' ; Exponential?
bne try_eq
ldx #<btn_e::port
ldy #>btn_e::port
ldxy #btn_e::port
lda #'e'
jsr depress_button
ldy calc_e
@ -1077,21 +1058,18 @@ rts1: rts
try_eq: cmp #'=' ; Equals?
bne :+
pha
ldx #<btn_eq::port
ldy #>btn_eq::port
ldxy #btn_eq::port
jmp do_op_click
: cmp #'*' ; Multiply?
bne :+
pha
ldx #<btn_mul::port
ldy #>btn_mul::port
ldxy #btn_mul::port
jmp do_op_click
: cmp #'.' ; Decimal?
bne try_add
ldx #<btn_dec::port
ldy #>btn_dec::port
ldxy #btn_dec::port
jsr depress_button
lda calc_d
ora calc_e
@ -1108,16 +1086,14 @@ rts2: rts
try_add:cmp #'+' ; Add?
bne :+
pha
ldx #<btn_add::port
ldy #>btn_add::port
ldxy #btn_add::port
jmp do_op_click
: cmp #'-' ; Subtract?
bne trydiv
pha
ldx #<btn_sub::port
ldy #>btn_sub::port
lda calc_e ; negate vs. subtract
ldxy #btn_sub::port
lda calc_e ; negate vs. subtract
beq :+
lda calc_n
bne :+
@ -1134,78 +1110,67 @@ try_add:cmp #'+' ; Add?
trydiv: cmp #'/' ; Divide?
bne :+
pha
ldx #<btn_div::port
ldy #>btn_div::port
ldxy #btn_div::port
jmp do_op_click
: cmp #'0' ; Digit 0?
bne :+
pha
ldx #<btn_0::port
ldy #>btn_0::port
ldxy #btn_0::port
jmp do_digit_click
: cmp #'1' ; Digit 1?
bne :+
pha
ldx #<btn_1::port
ldy #>btn_1::port
ldxy #btn_1::port
jmp do_digit_click
: cmp #'2' ; Digit 2?
bne :+
pha
ldx #<btn_2::port
ldy #>btn_2::port
ldxy #btn_2::port
jmp do_digit_click
: cmp #'3' ; Digit 3?
bne :+
pha
ldx #<btn_3::port
ldy #>btn_3::port
ldxy #btn_3::port
jmp do_digit_click
: cmp #'4' ; Digit 4?
bne :+
pha
ldx #<btn_4::port
ldy #>btn_4::port
ldxy #btn_4::port
jmp do_digit_click
: cmp #'5' ; Digit 5?
bne :+
pha
ldx #<btn_5::port
ldy #>btn_5::port
ldxy #btn_5::port
jmp do_digit_click
: cmp #'6' ; Digit 6?
bne :+
pha
ldx #<btn_6::port
ldy #>btn_6::port
ldxy #btn_6::port
jmp do_digit_click
: cmp #'7' ; Digit 7?
bne :+
pha
ldx #<btn_7::port
ldy #>btn_7::port
ldxy #btn_7::port
jmp do_digit_click
: cmp #'8' ; Digit 8?
bne :+
pha
ldx #<btn_8::port
ldy #>btn_8::port
ldxy #btn_8::port
jmp do_digit_click
: cmp #'9' ; Digit 9?
bne :+
pha
ldx #<btn_9::port
ldy #>btn_9::port
ldxy #btn_9::port
jmp do_digit_click
: cmp #$7F ; Delete?
@ -1308,10 +1273,7 @@ rts3: rts
sta calc_op
jmp reset_buffer1_and_state
reparse:lda #<text_buffer1
sta TXTPTR
lda #>text_buffer1
sta TXTPTR+1
reparse:copy16 #text_buffer1, TXTPTR
jsr adjust_txtptr
jsr CALL_FIN
@ -1349,8 +1311,7 @@ do_op: pla
.endproc
.proc post_op
ldx #<farg ; after the FP operation is done
ldy #>farg
ldxy #farg ; after the FP operation is done
jsr CALL_ROUND
jsr CALL_FOUT ; output as null-terminated string to FBUFFR
@ -1473,8 +1434,7 @@ loop: lda #' '
.proc display_buffer1
bit offscreen_flag
bmi end
ldx #<text_buffer1
ldy #>text_buffer1
ldxy #text_buffer1
jsr pre_display_buffer
MGTK_CALL MGTK::DrawText, drawtext_params1
end: rts
@ -1483,8 +1443,7 @@ end: rts
.proc display_buffer2
bit offscreen_flag
bmi end
ldx #<text_buffer2
ldy #>text_buffer2
ldxy #text_buffer2
jsr pre_display_buffer
MGTK_CALL MGTK::DrawText, drawtext_params2
end: rts
@ -1524,10 +1483,7 @@ end: rts
;; Buttons
ptr := $FA
lda #<btn_c
sta ptr
lda #>btn_c
sta ptr+1
copy16 #btn_c, ptr
loop: ldy #0
lda (ptr),y
beq draw_title_bar ; done!

View File

@ -8,6 +8,7 @@
.include "../mgtk.inc"
.include "../desktop.inc" ; redraw icons after window move, font
.include "../macros.inc"
.org $800
@ -34,26 +35,14 @@ save_stack: .byte 0
;; Copy the DA to AUX memory.
lda ROMIN2
lda #<start
sta STARTLO
lda #>start
sta STARTHI
lda #<end
sta ENDLO
lda #>end
sta ENDHI
lda #<dest
sta DESTINATIONLO
lda #>dest
sta DESTINATIONHI
copy16 #start, STARTLO
copy16 #end, ENDLO
copy16 #dest, DESTINATIONLO
sec ; main>aux
jsr AUXMOVE
;; Invoke it.
lda #<start
sta XFERSTARTLO
lda #>start
sta XFERSTARTHI
copy16 #start, XFERSTARTLO
php
pla
ora #$40 ; set overflow: use aux zp/stack
@ -800,15 +789,11 @@ loop: lda adjust_txtptr_copied-1,x
lda #0 ; Turn off errors
sta ERRFLG
lda #<error_hook ; set up FP error handler
sta COUT_HOOK
lda #>error_hook
sta COUT_HOOK+1
copy16 #error_hook, COUT_HOOK ; set up FP error handler
lda #1
jsr FLOAT
ldx #<farg
ldy #>farg
ldxy #farg
jsr ROUND
lda #0 ; set FAC to 0
jsr FLOAT
@ -818,8 +803,7 @@ loop: lda adjust_txtptr_copied-1,x
jsr FMULT
lda #$00
jsr FLOAT
ldx #<farg
ldy #>farg
ldxy #farg
jsr ROUND
tsx
@ -1086,14 +1070,12 @@ miss: clc
.proc process_key
cmp #'C' ; Clear?
bne :+
ldx #<btn_c::port
ldy #>btn_c::port
ldxy #btn_c::port
lda #'c'
jsr depress_button
lda #$00
jsr FLOAT
ldx #<farg
ldy #>farg
ldxy #farg
jsr ROUND
lda #'='
sta calc_op
@ -1107,8 +1089,7 @@ miss: clc
: cmp #'E' ; Exponential?
bne try_eq
ldx #<btn_e::port
ldy #>btn_e::port
ldxy #btn_e::port
lda #'e'
jsr depress_button
ldy calc_e
@ -1128,21 +1109,18 @@ rts1: rts
try_eq: cmp #'=' ; Equals?
bne :+
pha
ldx #<btn_eq::port
ldy #>btn_eq::port
ldxy #btn_eq::port
jmp do_op_click
: cmp #'*' ; Multiply?
bne :+
pha
ldx #<btn_mul::port
ldy #>btn_mul::port
ldxy #btn_mul::port
jmp do_op_click
: cmp #'.' ; Decimal?
bne try_add
ldx #<btn_dec::port
ldy #>btn_dec::port
ldxy #btn_dec::port
jsr depress_button
lda calc_d
ora calc_e
@ -1159,16 +1137,14 @@ rts2: rts
try_add:cmp #'+' ; Add?
bne :+
pha
ldx #<btn_add::port
ldy #>btn_add::port
ldxy #btn_add::port
jmp do_op_click
: cmp #'-' ; Subtract?
bne trydiv
pha
ldx #<btn_sub::port
ldy #>btn_sub::port
lda calc_e ; negate vs. subtract
ldxy #btn_sub::port
lda calc_e ; negate vs. subtract
beq :+
lda calc_n
bne :+
@ -1185,78 +1161,67 @@ try_add:cmp #'+' ; Add?
trydiv: cmp #'/' ; Divide?
bne :+
pha
ldx #<btn_div::port
ldy #>btn_div::port
ldxy #btn_div::port
jmp do_op_click
: cmp #'0' ; Digit 0?
bne :+
pha
ldx #<btn_0::port
ldy #>btn_0::port
ldxy #btn_0::port
jmp do_digit_click
: cmp #'1' ; Digit 1?
bne :+
pha
ldx #<btn_1::port
ldy #>btn_1::port
ldxy #btn_1::port
jmp do_digit_click
: cmp #'2' ; Digit 2?
bne :+
pha
ldx #<btn_2::port
ldy #>btn_2::port
ldxy #btn_2::port
jmp do_digit_click
: cmp #'3' ; Digit 3?
bne :+
pha
ldx #<btn_3::port
ldy #>btn_3::port
ldxy #btn_3::port
jmp do_digit_click
: cmp #'4' ; Digit 4?
bne :+
pha
ldx #<btn_4::port
ldy #>btn_4::port
ldxy #btn_4::port
jmp do_digit_click
: cmp #'5' ; Digit 5?
bne :+
pha
ldx #<btn_5::port
ldy #>btn_5::port
ldxy #btn_5::port
jmp do_digit_click
: cmp #'6' ; Digit 6?
bne :+
pha
ldx #<btn_6::port
ldy #>btn_6::port
ldxy #btn_6::port
jmp do_digit_click
: cmp #'7' ; Digit 7?
bne :+
pha
ldx #<btn_7::port
ldy #>btn_7::port
ldxy #btn_7::port
jmp do_digit_click
: cmp #'8' ; Digit 8?
bne :+
pha
ldx #<btn_8::port
ldy #>btn_8::port
ldxy #btn_8::port
jmp do_digit_click
: cmp #'9' ; Digit 9?
bne :+
pha
ldx #<btn_9::port
ldy #>btn_9::port
ldxy #btn_9::port
jmp do_digit_click
: cmp #$7F ; Delete?
@ -1359,10 +1324,7 @@ rts3: rts
sta calc_op
jmp reset_buffer1_and_state
reparse:lda #<text_buffer1
sta TXTPTR
lda #>text_buffer1
sta TXTPTR+1
reparse:copy16 #text_buffer1, TXTPTR
jsr adjust_txtptr
jsr FIN
@ -1400,8 +1362,7 @@ do_op: pla
.endproc
.proc post_op
ldx #<farg ; after the FP operation is done
ldy #>farg
ldxy #farg ; after the FP operation is done
jsr ROUND
jsr FOUT ; output as null-terminated string to FBUFFR
@ -1522,16 +1483,14 @@ loop: lda #' '
; fall through
.endproc
.proc display_buffer1
ldx #<text_buffer1
ldy #>text_buffer1
ldxy #text_buffer1
jsr pre_display_buffer
MGTK_CALL MGTK::DrawText, drawtext_params1
rts
.endproc
.proc display_buffer2
ldx #<text_buffer2
ldy #>text_buffer2
ldxy #text_buffer2
jsr pre_display_buffer
MGTK_CALL MGTK::DrawText, drawtext_params2
rts
@ -1571,10 +1530,7 @@ loop: lda #' '
;; Buttons
ptr := $FA
lda #<btn_c
sta ptr
lda #>btn_c
sta ptr+1
copy16 #btn_c, ptr
loop: ldy #0
lda (ptr),y
beq draw_title_bar ; done!

View File

@ -7,6 +7,7 @@
.include "../mgtk.inc"
.include "../desktop.inc" ; redraw icons after window move; font; glyphs
.include "../macros.inc"
.org $800
@ -68,25 +69,14 @@ write_buffer:
sta datelo
lda DATEHI
sta datehi
lda #<start
sta STARTLO
lda #>start
sta STARTHI
lda #<end
sta ENDLO
lda #>end
sta ENDHI
lda #<start
sta DESTINATIONLO
lda #>start
sta DESTINATIONHI
copy16 #start, STARTLO
copy16 #end, ENDLO
copy16 #start, DESTINATIONLO
sec
jsr AUXMOVE
lda #<start
sta XFERSTARTLO
lda #>start
sta XFERSTARTHI
copy16 #start, XFERSTARTLO
php
pla
ora #$40 ; set overflow: aux zp/stack
@ -108,9 +98,9 @@ write_buffer:
lda write_buffer ; Dialog committed?
beq skip
ldy #OPEN ; open the file
lda #<open_params
ldx #>open_params
ldax #open_params
jsr JUMP_TABLE_MLI
bne skip
@ -120,19 +110,16 @@ write_buffer:
sta close_params::ref_num
ldy #SET_MARK ; seek
lda #<set_mark_params
ldx #>set_mark_params
ldax #set_mark_params
jsr JUMP_TABLE_MLI
bne close
ldy #WRITE ; write the date
lda #<write_params
ldx #>write_params
ldax #write_params
jsr JUMP_TABLE_MLI
close: ldy #CLOSE ; close the file
lda #<close_params
ldx #>close_params
ldax #close_params
jsr JUMP_TABLE_MLI
skip: ldx stash_stack ; exit the DA
@ -417,10 +404,7 @@ hit: cmp #MGTK::area_content
sbc #1
asl a
tay
lda hit_target_jump_table,y
sta jump+1
lda hit_target_jump_table+1,y
sta jump+2
copy16 hit_target_jump_table,y, jump+1
jump: jmp $1000 ; self modified
hit_target_jump_table:
@ -511,16 +495,10 @@ loop: MGTK_CALL MGTK::GetEvent, event_params ; Repeat while mouse is down
cmp #up_rect_index
beq incr
decr: lda #<decrement_table
sta ptr
lda #>decrement_table
sta ptr+1
decr: copy16 #decrement_table, ptr
jmp go
incr: lda #<increment_table
sta ptr
lda #>increment_table
sta ptr+1
incr: copy16 #increment_table, ptr
go: lda selected_field
asl a
@ -627,10 +605,7 @@ decrement_year:
str := month_string + 3
len := 3
lda #<str
sta ptr
lda #>str
sta ptr+1
copy16 #str, ptr
ldy #len - 1
loop: lda month_name_table,x
@ -703,21 +678,12 @@ skip: jmp dest
;;; Index returned in X.
.proc find_hit_target
lda event_params::xcoord
sta screentowindow_params::screenx
lda event_params::xcoord+1
sta screentowindow_params::screenx+1
lda event_params::ycoord
sta screentowindow_params::screeny
lda event_params::ycoord+1
sta screentowindow_params::screeny+1
copy16 event_params::xcoord, screentowindow_params::screenx
copy16 event_params::ycoord, screentowindow_params::screeny
MGTK_CALL MGTK::ScreenToWindow, screentowindow_params
MGTK_CALL MGTK::MoveTo, screentowindow_params::window
ldx #1
lda #<first_hit_rect
sta test_addr
lda #>first_hit_rect
sta test_addr+1
copy16 #first_hit_rect, test_addr
loop: txa
pha

View File

@ -7,6 +7,7 @@
.include "../mgtk.inc"
.include "../desktop.inc" ; redraw icons after window move, font
.include "../macros.inc"
.org $800
@ -27,25 +28,13 @@ stash_stack: .byte 0
sta ALTZPOFF
lda ROMIN2
lda #<start
sta STARTLO
lda #>start
sta STARTHI
lda #<end
sta ENDLO
lda #>end
sta ENDHI
lda #<start
sta DESTINATIONLO
lda #>start
sta DESTINATIONHI
copy16 #start, STARTLO
copy16 #end, ENDLO
copy16 #start, DESTINATIONLO
sec ; main>aux
jsr AUXMOVE
lda #<enter_da
sta XFERSTARTLO
lda #>enter_da
sta XFERSTARTHI
copy16 #enter_da, XFERSTARTLO
php
pla
ora #$40 ; set overflow: use aux zp/stack
@ -1075,21 +1064,12 @@ loop: tya
asl a
asl a
tax
lda space_positions,x
sta paintbits_params::left
lda space_positions+1,x
sta paintbits_params::left+1
lda space_positions+2,x
sta paintbits_params::top
lda space_positions+3,x
sta paintbits_params::top+1
copy16 space_positions,x, paintbits_params::left
copy16 space_positions+2,x, paintbits_params::top
lda position_table,y
asl a
tax
lda bitmap_table,x
sta paintbits_params::mapbits
lda bitmap_table+1,x
sta paintbits_params::mapbits+1
copy16 bitmap_table,x, paintbits_params::mapbits
MGTK_CALL MGTK::PaintBits, paintbits_params
pla
clc

View File

@ -7,6 +7,7 @@
.include "../mgtk.inc"
.include "../desktop.inc" ; get selection, font
.include "../macros.inc"
.org $800
@ -277,20 +278,14 @@ abort: rts
asl a ; (since address table is 2 bytes wide)
tax
lda path_table,x ; pathname ???
sta src
lda path_table+1,x
sta src+1
copy16 path_table,x, src
ldy #0
lda (src),y
tax
inc src
bne :+
inc src+1
: lda #<(pathname::data)
sta dst
lda #>(pathname::data)
sta dst+1
: copy16 #(pathname::data), dst
jsr copy_pathname ; copy x bytes (src) to (dst)
;; Append separator.
@ -306,10 +301,7 @@ abort: rts
: lda file_index ; file index in table
asl a ; (since table is 2 bytes wide)
tax
lda file_table,x
sta src
lda file_table+1,x
sta src+1
copy16 file_table,x, src
;; Exit if a directory.
ldy #2 ; 2nd byte of entry
@ -536,10 +528,7 @@ done: sta PAGE2OFF
.proc stash_menu
src := $08
dst := $06
lda #<stash
sta dst
lda #>stash
sta dst+1
copy16 #stash, dst
sta PAGE2ON
jsr inner
@ -586,10 +575,7 @@ cloop: lda (src),y
.proc unstash_menu
src := $08
dst := $06
lda #<stash
sta src
lda #>stash
sta src+1
copy16 #stash, src
sta PAGE2ON
jsr inner

View File

@ -7,6 +7,7 @@
.include "../mgtk.inc"
.include "../desktop.inc" ; get/clear selection, font
.include "../macros.inc"
.org $800
@ -215,8 +216,7 @@ white_pattern:
da_window_id := 100
L095A: .byte $00
L095B: .byte $FA
L095C: .byte $01
L095B: .word $1FA
.proc line_pos
left: .word 0
@ -226,14 +226,11 @@ base: .word 0
window_width: .word 0
window_height: .word 0
L0965: .byte $00
L0966: .byte $00,$00
L0968: .byte $00
L0969: .byte $00
L096A: .byte $00
L096B: .byte $00
L096C: .byte $00
L096D: .byte $00
L0965: .byte 0
L0966: .word 0
L0968: .word 0
L096A: .word 0
L096C: .word 0
track_scroll_delta:
.byte $00
@ -369,20 +366,14 @@ abort: rts
asl a ; (since address table is 2 bytes wide)
tax
lda path_table,x ; pathname ???
sta src
lda path_table+1,x
sta src+1
copy16 path_table,x, src
ldy #0
lda (src),y
tax
inc src
bne :+
inc src+1
: lda #<(pathname::data)
sta dst
lda #>(pathname::data)
sta dst+1
: copy16 #(pathname::data), dst
jsr copy_pathname ; copy x bytes (src) to (dst)
;; Append separator.
@ -398,10 +389,7 @@ abort: rts
: lda file_index ; file index in table
asl a ; (since table is 2 bytes wide)
tax
lda file_table,x
sta src
lda file_table+1,x
sta src+1
copy16 file_table,x, src
;; Exit if a directory.
ldy #2 ; 2nd byte of entry
@ -438,10 +426,7 @@ abort: rts
: jsr copy_pathname ; copy x bytes (src) to (dst)
;; Clear selection (why???)
lda #<JUMP_TABLE_CLEAR_SEL
sta call_main_addr
lda #>JUMP_TABLE_CLEAR_SEL
sta call_main_addr+1
copy16 #JUMP_TABLE_CLEAR_SEL, call_main_addr
jsr call_main_trampoline
jmp open_file_and_init_window
@ -569,10 +554,7 @@ title: jsr on_title_bar_click
cmp winfo::maprect::x2
: bcs wider
lda #<max_width
sta winfo::maprect::x2
lda #>max_width
sta winfo::maprect::x2+1
copy16 #max_width, winfo::maprect::x2
sec
lda winfo::maprect::x2
sbc window_width
@ -599,7 +581,7 @@ enable: ora #MGTK::scroll_option_active ; enable scroll
sta $06
lda #>max_width
sbc window_width+1
sta $07
sta $06+1
jsr div_by_16
sta setctlmax_params::ctlmax
lda #MGTK::ctl_horizontal_scroll_bar
@ -774,10 +756,7 @@ loop: inx
beq end
lda trackthumb_params::thumbpos
jsr mul_by_16
lda $06
sta winfo::maprect::x1
lda $07
sta winfo::maprect::x1+1
copy16 $06, winfo::maprect::x1
clc
lda winfo::maprect::x1
adc window_width
@ -847,10 +826,7 @@ store: sta winfo::hthumbpos
;; Used at start of thumb event_kind_drag
.proc do_trackthumb
lda event_params::mousex
sta trackthumb_params::mousex
lda event_params::mousex+1
sta trackthumb_params::mousex+1
copy16 event_params::mousex, trackthumb_params::mousex
lda event_params::mousey
sta trackthumb_params::mousey
MGTK_CALL MGTK::TrackThumb, trackthumb_params
@ -908,7 +884,7 @@ loop: beq adjust_box_height
jsr calc_line_position
lda #0
sta L096A
sta L096B
sta L096A+1
ldx updatethumb_params::thumbpos
loop: beq end
clc
@ -916,7 +892,7 @@ loop: beq end
adc #5
sta L096A
bcc :+
inc L096B
inc L096A+1
: dex
jmp loop
end: rts
@ -925,10 +901,7 @@ end: rts
.proc update_hscroll
lda #2
sta updatethumb_params::which_ctl
lda winfo::maprect::x1
sta $06
lda winfo::maprect::x1+1
sta $07
copy16 winfo::maprect::x1, $06
jsr div_by_16
sta updatethumb_params::thumbpos
MGTK_CALL MGTK::UpdateThumb, updatethumb_params
@ -983,15 +956,15 @@ end: rts
sta L0947
sta line_pos::base+1
sta L096C
sta L096D
sta L096C+1
sta L0948
lda #$0A ; line spacing = 10
sta line_pos::base
jsr L0EDB
do_line:
lda L096D
cmp L096B
lda L096C+1
cmp L096A+1
bne :+
lda L096C
cmp L096A
@ -1005,7 +978,7 @@ do_line:
sta L095B
lda #1
sbc line_pos::left+1
sta L095C
sta L095B+1
jsr find_text_run
bcs L0ED7
clc
@ -1026,12 +999,12 @@ do_line:
lda L096C
cmp L0968
bne :+
lda L096D
cmp L0969
lda L096C+1
cmp L0968+1
beq L0ED7
: inc L096C
bne :+
inc L096D
inc L096C+1
: jmp do_line
L0ED7: jsr restore_proportional_font_table_if_needed
@ -1041,14 +1014,8 @@ L0ED7: jsr restore_proportional_font_table_if_needed
;;; ==================================================
.proc L0EDB ; ???
lda #250
sta L095B
lda #1
sta L095C
lda #3
sta line_pos::left
lda #0
sta line_pos::left+1
copy16 #506, L095B
copy16 #3, line_pos::left
sta L095A
rts
.endproc
@ -1063,10 +1030,7 @@ L0ED7: jsr restore_proportional_font_table_if_needed
sta run_width+1
sta L095A
sta drawtext_params::textlen
lda $06
sta drawtext_params::textptr
lda $07
sta drawtext_params::textptr+1
copy16 $06, drawtext_params::textptr
loop: lda L0945
bne more
@ -1102,7 +1066,7 @@ more: ldy drawtext_params::textlen
sta run_width
bcc :+
inc run_width+1
: lda L095C
: lda L095B+1
cmp run_width+1
bne :+
lda L095B
@ -1161,10 +1125,7 @@ loop: lda times70+1,x
cpx #14
beq done
jmp loop
: lda times70,x
sta line_pos::left
lda times70+1,x
sta line_pos::left+1
: copy16 times70,x, line_pos::left
jmp finish_text_run
done: lda #0
sta L095A
@ -1208,10 +1169,7 @@ loop: lda $1300,y
bne loop
dec drawtext_params::textptr+1
lda drawtext_params::textptr
sta $06
lda drawtext_params::textptr+1
sta $07
copy16 drawtext_params::textptr, $06
read: lda #0
sta L0945
@ -1226,10 +1184,7 @@ read: lda #0
;;; ==================================================
.proc read_file_page
lda read_params::buffer
sta store+1
lda read_params::buffer+1
sta store+2
copy16 read_params::buffer, store+1
lda #' ' ; fill buffer with spaces
ldx #0
@ -1285,14 +1240,11 @@ end: rts
;;; ==================================================
.proc calc_line_position
lda winfo::maprect::y2
sta L0965
lda winfo::maprect::y2+1
sta L0966
copy16 winfo::maprect::y2, L0965
lda #0
sta L0968
sta L0969
sta L0968+1
loop: lda L0966
bne :+
lda L0965
@ -1306,7 +1258,7 @@ loop: lda L0966
dec L0966
: inc L0968
bne loop
inc L0969
inc L0968+1
jmp loop
end: rts
.endproc
@ -1338,10 +1290,7 @@ loop: clc
.endproc
.proc redraw_screen
lda #<JUMP_TABLE_REDRAW_ALL
sta call_main_addr
lda #>JUMP_TABLE_REDRAW_ALL
sta call_main_addr+1
copy16 #JUMP_TABLE_REDRAW_ALL, call_main_addr
jsr call_main_trampoline
rts
.endproc

View File

@ -75,6 +75,19 @@
.endif
.endmacro
;;; Load X,Y
;;; ldxy #$1234 ; immediate
;;; ldxy $1234 ; absolute
.macro ldxy arg
.if is_immediate {arg}
ldx #<(.right (.tcount ({arg})-1, {arg}))
ldy #>(.right (.tcount ({arg})-1, {arg}))
.else
ldx arg
ldy arg+1
.endif
.endmacro
;;; Store A,X
;;; stax $1234 ; absolute
.macro stax arg