mirror of
https://github.com/mi57730/a2d.git
synced 2025-01-05 18:29:21 +00:00
macros for DAs
This commit is contained in:
parent
4b0669bf25
commit
77bda904ab
@ -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!
|
||||
|
@ -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!
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
Loading…
Reference in New Issue
Block a user