2017-09-06 01:41:13 +00:00
|
|
|
.setcpu "65C02"
|
|
|
|
.org $800
|
|
|
|
|
2017-09-06 05:19:45 +00:00
|
|
|
.include "apple2.inc"
|
2017-09-06 01:41:13 +00:00
|
|
|
.include "../inc/prodos.inc"
|
|
|
|
.include "../inc/auxmem.inc"
|
|
|
|
.include "../inc/applesoft.inc"
|
2017-09-06 05:19:45 +00:00
|
|
|
|
2017-09-06 01:41:13 +00:00
|
|
|
.include "a2d.inc"
|
|
|
|
|
|
|
|
L0020 := $0020
|
|
|
|
L00B1 := $00B1
|
|
|
|
|
2017-09-06 05:19:45 +00:00
|
|
|
ROMIN2 := $C082
|
2017-09-06 02:08:11 +00:00
|
|
|
|
2017-09-06 01:41:13 +00:00
|
|
|
|
2017-09-06 05:19:45 +00:00
|
|
|
start: jmp copy2aux
|
2017-09-06 01:41:13 +00:00
|
|
|
|
2017-09-06 05:19:45 +00:00
|
|
|
save_stack: .byte 0
|
|
|
|
|
|
|
|
.proc copy2aux
|
|
|
|
tsx
|
|
|
|
stx save_stack
|
|
|
|
|
|
|
|
start := call_init
|
|
|
|
end := da_end
|
|
|
|
dest := start
|
|
|
|
|
|
|
|
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
|
|
|
|
sec ; main>aux
|
2017-09-06 01:41:13 +00:00
|
|
|
jsr AUXMOVE
|
2017-09-06 02:08:11 +00:00
|
|
|
|
2017-09-06 05:19:45 +00:00
|
|
|
lda #<start
|
|
|
|
sta XFERSTARTLO
|
|
|
|
lda #>start
|
|
|
|
sta XFERSTARTHI
|
2017-09-06 01:41:13 +00:00
|
|
|
php
|
|
|
|
pla
|
2017-09-06 05:19:45 +00:00
|
|
|
ora #$40 ; set overflow: use aux zp/stack
|
2017-09-06 01:41:13 +00:00
|
|
|
pha
|
|
|
|
plp
|
2017-09-06 05:19:45 +00:00
|
|
|
sec ; control main>aux
|
2017-09-06 01:41:13 +00:00
|
|
|
jmp XFER
|
2017-09-06 05:19:45 +00:00
|
|
|
.endproc
|
2017-09-06 01:41:13 +00:00
|
|
|
|
2017-09-06 05:19:45 +00:00
|
|
|
.proc exit_da
|
2017-09-06 01:41:13 +00:00
|
|
|
lda LCBANK1
|
2017-09-06 05:19:45 +00:00
|
|
|
lda LCBANK1
|
|
|
|
ldx save_stack
|
2017-09-06 01:41:13 +00:00
|
|
|
txs
|
|
|
|
rts
|
2017-09-06 05:19:45 +00:00
|
|
|
.endproc
|
2017-09-06 01:41:13 +00:00
|
|
|
|
2017-09-06 05:19:45 +00:00
|
|
|
call_init:
|
|
|
|
lda ROMIN2
|
2017-09-06 01:41:13 +00:00
|
|
|
jmp L0D18
|
|
|
|
|
|
|
|
L084C: lda LCBANK1
|
|
|
|
lda LCBANK1
|
|
|
|
ldx #$10
|
|
|
|
L0854: lda L088D,x
|
|
|
|
sta L0020,x
|
|
|
|
dex
|
|
|
|
bpl L0854
|
|
|
|
jsr L0020
|
2017-09-06 05:19:45 +00:00
|
|
|
lda ROMIN2
|
2017-09-06 01:41:13 +00:00
|
|
|
lda #$34
|
|
|
|
jsr L089E
|
|
|
|
lda LCBANK1
|
|
|
|
lda LCBANK1
|
|
|
|
bit L089D
|
|
|
|
bmi L0878
|
|
|
|
jsr UNKNOWN_CALL
|
|
|
|
.byte $0C
|
|
|
|
.addr 0
|
2017-09-06 05:19:45 +00:00
|
|
|
|
2017-09-06 01:41:13 +00:00
|
|
|
L0878: lda #$00
|
|
|
|
sta L089D
|
2017-09-06 05:19:45 +00:00
|
|
|
lda ROMIN2
|
2017-09-06 02:08:11 +00:00
|
|
|
A2D_CALL $3C, L08D1
|
|
|
|
A2D_CALL A2D_TEXT_BOX1, L0C6E
|
2017-09-06 01:41:13 +00:00
|
|
|
rts
|
|
|
|
|
|
|
|
L088D: sta RAMRDOFF
|
|
|
|
sta RAMWRTOFF
|
2017-09-06 05:19:45 +00:00
|
|
|
jsr JUMP_TABLE_15
|
2017-09-06 01:41:13 +00:00
|
|
|
sta RAMRDON
|
|
|
|
sta RAMWRTON
|
|
|
|
rts
|
|
|
|
|
2017-09-08 04:42:58 +00:00
|
|
|
L089D: .byte 0
|
2017-09-06 01:41:13 +00:00
|
|
|
L089E: sta L08D1
|
|
|
|
lda L0CBD
|
|
|
|
cmp #$BF
|
|
|
|
bcc L08AE
|
|
|
|
lda #$80
|
|
|
|
sta L089D
|
|
|
|
rts
|
|
|
|
|
2017-09-06 02:08:11 +00:00
|
|
|
L08AE: A2D_CALL $3C, L08D1
|
|
|
|
A2D_CALL A2D_TEXT_BOX1, L0C6E
|
2017-09-06 01:41:13 +00:00
|
|
|
lda L08D1
|
|
|
|
cmp #$34
|
|
|
|
bne L08C4
|
2017-09-07 06:43:40 +00:00
|
|
|
jmp draw_window
|
2017-09-06 01:41:13 +00:00
|
|
|
|
|
|
|
L08C4: rts
|
|
|
|
|
2017-09-06 06:24:21 +00:00
|
|
|
.proc button_state_params
|
2017-09-08 04:42:58 +00:00
|
|
|
state: .byte 0
|
2017-09-06 06:24:21 +00:00
|
|
|
.endproc
|
2017-09-08 04:42:58 +00:00
|
|
|
;; falls through?
|
2017-09-06 05:59:02 +00:00
|
|
|
|
2017-09-08 03:59:38 +00:00
|
|
|
keychar: ; this params block is getting reused "creatively"
|
|
|
|
keydown := * + 1
|
2017-09-08 04:42:58 +00:00
|
|
|
tpp := * + 4
|
|
|
|
clickx := * + 4
|
|
|
|
clicky := * + 6
|
2017-09-08 03:59:38 +00:00
|
|
|
.proc get_mouse_params
|
|
|
|
xcoord: .word 0
|
|
|
|
ycoord: .word 0
|
|
|
|
elem: .byte 0
|
|
|
|
id: .byte 0
|
|
|
|
.word 0 ; ???
|
2017-09-06 05:59:02 +00:00
|
|
|
.endproc
|
|
|
|
|
|
|
|
.byte $00,$00
|
2017-09-06 06:24:21 +00:00
|
|
|
|
|
|
|
.proc button_click_params
|
2017-09-08 04:42:58 +00:00
|
|
|
state: .byte 0
|
2017-09-06 06:24:21 +00:00
|
|
|
.endproc
|
|
|
|
|
2017-09-08 04:42:58 +00:00
|
|
|
L08D1: .byte $00
|
|
|
|
.addr $0C6E
|
|
|
|
|
2017-09-06 01:41:13 +00:00
|
|
|
L08D4: .byte $80
|
2017-09-08 04:42:58 +00:00
|
|
|
|
2017-09-06 15:23:23 +00:00
|
|
|
;; button definitions
|
2017-09-06 15:42:33 +00:00
|
|
|
|
|
|
|
button_width := 17
|
|
|
|
button_height := 9
|
|
|
|
|
|
|
|
col1_left := 13
|
2017-09-07 02:05:49 +00:00
|
|
|
col1_right := col1_left+button_width ; 30
|
2017-09-06 15:42:33 +00:00
|
|
|
col2_left := 42
|
2017-09-07 02:05:49 +00:00
|
|
|
col2_right := col2_left+button_width ; 59
|
2017-09-06 15:42:33 +00:00
|
|
|
col3_left := 70
|
2017-09-07 02:05:49 +00:00
|
|
|
col3_right := col3_left+button_width ; 87
|
2017-09-06 15:42:33 +00:00
|
|
|
col4_left := 98
|
2017-09-07 02:05:49 +00:00
|
|
|
col4_right := col4_left+button_width ; 115
|
2017-09-06 15:42:33 +00:00
|
|
|
|
|
|
|
row1_top := 22
|
2017-09-07 02:05:49 +00:00
|
|
|
row1_bot := row1_top+button_height ; 31
|
2017-09-06 15:42:33 +00:00
|
|
|
row2_top := 38
|
2017-09-07 02:05:49 +00:00
|
|
|
row2_bot := row2_top+button_height ; 47
|
2017-09-06 15:42:33 +00:00
|
|
|
row3_top := 53
|
2017-09-07 02:05:49 +00:00
|
|
|
row3_bot := row3_top+button_height ; 62
|
2017-09-06 15:42:33 +00:00
|
|
|
row4_top := 68
|
2017-09-07 02:05:49 +00:00
|
|
|
row4_bot := row4_top+button_height ; 77
|
2017-09-06 15:42:33 +00:00
|
|
|
row5_top := 83
|
2017-09-07 02:05:49 +00:00
|
|
|
row5_bot := row5_top+button_height ; 92
|
2017-09-06 15:42:33 +00:00
|
|
|
|
|
|
|
|
2017-09-07 06:43:40 +00:00
|
|
|
L08D5: .byte $00
|
2017-09-08 04:42:58 +00:00
|
|
|
|
|
|
|
.proc btn_c
|
|
|
|
.byte $0C,$00,$15,$00,$E1,$0A,$03
|
2017-09-06 01:41:13 +00:00
|
|
|
.byte $00,$00,$00,$00,$00,$14,$00,$0C
|
2017-09-08 04:42:58 +00:00
|
|
|
.byte $00
|
|
|
|
label: .byte 'c'
|
|
|
|
.byte $13,$00
|
2017-09-06 15:42:33 +00:00
|
|
|
.word row1_bot
|
2017-09-08 04:42:58 +00:00
|
|
|
box: .word col1_left,row1_top,col1_right,row1_bot
|
|
|
|
.endproc
|
2017-09-06 15:23:23 +00:00
|
|
|
|
2017-09-08 04:42:58 +00:00
|
|
|
.proc btn_e
|
2017-09-06 15:42:33 +00:00
|
|
|
.byte $29,$00
|
2017-09-06 01:41:13 +00:00
|
|
|
.byte $15,$00,$E1,$0A,$03,$00,$00,$00
|
2017-09-08 04:47:27 +00:00
|
|
|
.byte $00,$00,$14,$00,$0C,$00,'e',$30
|
2017-09-06 15:42:33 +00:00
|
|
|
.byte $00
|
|
|
|
.word row1_bot
|
2017-09-08 04:42:58 +00:00
|
|
|
box: .word col2_left,row1_top,col2_right,row1_bot
|
|
|
|
.endproc
|
2017-09-06 15:23:23 +00:00
|
|
|
|
2017-09-08 04:42:58 +00:00
|
|
|
.proc btn_eq
|
2017-09-06 15:23:23 +00:00
|
|
|
.byte $45,$00,$15,$00,$E1
|
2017-09-06 01:41:13 +00:00
|
|
|
.byte $0A,$03,$00,$00,$00,$00,$00,$14
|
2017-09-08 04:47:27 +00:00
|
|
|
.byte $00,$0C,$00,'=',$4C,$00
|
2017-09-06 15:42:33 +00:00
|
|
|
.word row1_bot
|
2017-09-08 04:42:58 +00:00
|
|
|
box: .word col3_left,row1_top,col3_right,row1_bot
|
|
|
|
.endproc
|
2017-09-06 15:23:23 +00:00
|
|
|
|
2017-09-08 04:42:58 +00:00
|
|
|
.proc btn_mul
|
2017-09-06 01:41:13 +00:00
|
|
|
.byte $61,$00,$15,$00,$E1,$0A,$03,$00
|
|
|
|
.byte $00,$00,$00,$00,$14,$00,$0C,$00
|
2017-09-08 04:47:27 +00:00
|
|
|
.byte '*',$68,$00
|
2017-09-06 15:42:33 +00:00
|
|
|
.word row1_bot
|
2017-09-08 04:42:58 +00:00
|
|
|
box: .word col4_left,row1_top,col4_right,row1_bot
|
|
|
|
.endproc
|
2017-09-06 15:23:23 +00:00
|
|
|
|
2017-09-08 04:42:58 +00:00
|
|
|
.proc btn_7
|
2017-09-06 15:23:23 +00:00
|
|
|
.byte $0C,$00,$25
|
2017-09-06 01:41:13 +00:00
|
|
|
.byte $00,$E1,$0A,$03,$00,$00,$00,$00
|
2017-09-08 04:47:27 +00:00
|
|
|
.byte $00,$14,$00,$0C,$00,'7',$13,$00
|
2017-09-06 15:42:33 +00:00
|
|
|
.word row2_bot
|
2017-09-08 04:42:58 +00:00
|
|
|
box: .word col1_left,row2_top,col1_right,row2_bot
|
|
|
|
.endproc
|
2017-09-06 15:23:23 +00:00
|
|
|
|
2017-09-08 04:42:58 +00:00
|
|
|
.proc btn_8
|
2017-09-06 15:23:23 +00:00
|
|
|
.word $29
|
|
|
|
.byte $25,$00,$E1,$0A
|
2017-09-06 01:41:13 +00:00
|
|
|
.byte $03,$00,$00,$00,$00,$00,$14,$00
|
2017-09-08 04:47:27 +00:00
|
|
|
.byte $0C,$00,'8',$30,$00
|
2017-09-06 15:42:33 +00:00
|
|
|
.word row2_bot
|
2017-09-08 04:42:58 +00:00
|
|
|
box: .word col2_left,row2_top,col2_right,row2_bot
|
|
|
|
.endproc
|
2017-09-06 15:23:23 +00:00
|
|
|
|
2017-09-08 04:42:58 +00:00
|
|
|
.proc btn_9
|
2017-09-06 15:23:23 +00:00
|
|
|
.byte $45
|
2017-09-06 01:41:13 +00:00
|
|
|
.byte $00,$25,$00,$E1,$0A,$03,$00,$00
|
2017-09-08 04:47:27 +00:00
|
|
|
.byte $00,$00,$00,$14,$00,$0C,$00,'9'
|
2017-09-06 15:42:33 +00:00
|
|
|
.byte $4C,$00
|
|
|
|
.word row2_bot
|
2017-09-08 04:42:58 +00:00
|
|
|
box: .word col3_left,row2_top,col3_right,row2_bot
|
|
|
|
.endproc
|
2017-09-06 15:23:23 +00:00
|
|
|
|
2017-09-08 04:42:58 +00:00
|
|
|
.proc btn_div
|
2017-09-06 15:23:23 +00:00
|
|
|
.byte $61,$00,$25,$00
|
2017-09-06 01:41:13 +00:00
|
|
|
.byte $E1,$0A,$03,$00,$00,$00,$00,$00
|
2017-09-08 04:47:27 +00:00
|
|
|
.byte $14,$00,$0C,$00,'/',$68,$00
|
2017-09-06 15:42:33 +00:00
|
|
|
.word row2_bot
|
2017-09-08 04:42:58 +00:00
|
|
|
box: .word col4_left,row2_top,col4_right,row2_bot
|
|
|
|
.endproc
|
2017-09-06 15:23:23 +00:00
|
|
|
|
2017-09-08 04:42:58 +00:00
|
|
|
.proc btn_4
|
2017-09-06 15:23:23 +00:00
|
|
|
.byte $0C,$00,$34,$00,$E1,$0A,$03
|
2017-09-06 01:41:13 +00:00
|
|
|
.byte $00,$00,$00,$00,$00,$14,$00,$0C
|
2017-09-08 04:47:27 +00:00
|
|
|
.byte $00,'4',$13,$00
|
2017-09-06 15:42:33 +00:00
|
|
|
.word row3_bot
|
2017-09-08 04:42:58 +00:00
|
|
|
box: .word col1_left,row3_top,col1_right,row3_bot
|
|
|
|
.endproc
|
2017-09-06 15:23:23 +00:00
|
|
|
|
2017-09-08 04:42:58 +00:00
|
|
|
.proc btn_5
|
2017-09-06 15:23:23 +00:00
|
|
|
.byte $29,$00
|
2017-09-06 01:41:13 +00:00
|
|
|
.byte $34,$00,$E1,$0A,$03,$00,$00,$00
|
2017-09-08 04:47:27 +00:00
|
|
|
.byte $00,$00,$14,$00,$0C,$00,'5',$30
|
2017-09-06 15:42:33 +00:00
|
|
|
.byte $00
|
|
|
|
.word row3_bot
|
2017-09-08 04:42:58 +00:00
|
|
|
box: .word col2_left,row3_top,col2_right,row3_bot
|
|
|
|
.endproc
|
2017-09-06 15:23:23 +00:00
|
|
|
|
2017-09-08 04:42:58 +00:00
|
|
|
.proc btn_6
|
2017-09-06 15:23:23 +00:00
|
|
|
.byte $45,$00,$34,$00,$E1
|
2017-09-06 01:41:13 +00:00
|
|
|
.byte $0A,$03,$00,$00,$00,$00,$00,$14
|
2017-09-08 04:47:27 +00:00
|
|
|
.byte $00,$0C,$00,'6',$4C,$00
|
2017-09-06 15:42:33 +00:00
|
|
|
.word row3_bot
|
2017-09-08 04:42:58 +00:00
|
|
|
box: .word col3_left,row3_top,col3_right,row3_bot
|
|
|
|
.endproc
|
2017-09-06 15:23:23 +00:00
|
|
|
|
2017-09-08 04:42:58 +00:00
|
|
|
.proc btn_sub
|
2017-09-06 01:41:13 +00:00
|
|
|
.byte $61,$00,$34,$00,$E1,$0A,$03,$00
|
|
|
|
.byte $00,$00,$00,$00,$14,$00,$0C,$00
|
2017-09-08 04:47:27 +00:00
|
|
|
.byte '-',$68,$00
|
2017-09-06 15:42:33 +00:00
|
|
|
.word row3_bot
|
2017-09-08 04:42:58 +00:00
|
|
|
box: .word col4_left,row3_top,col4_right,row3_bot
|
|
|
|
.endproc
|
2017-09-06 15:23:23 +00:00
|
|
|
|
2017-09-08 04:42:58 +00:00
|
|
|
.proc btn_1
|
2017-09-06 15:23:23 +00:00
|
|
|
.byte $0C,$00,$43
|
2017-09-06 01:41:13 +00:00
|
|
|
.byte $00,$E1,$0A,$03,$00,$00,$00,$00
|
2017-09-08 04:47:27 +00:00
|
|
|
.byte $00,$14,$00,$0C,$00,'1',$13,$00
|
2017-09-06 15:42:33 +00:00
|
|
|
.word row4_bot
|
2017-09-08 04:42:58 +00:00
|
|
|
box: .word col1_left,row4_top,col1_right,row4_bot
|
|
|
|
.endproc
|
2017-09-06 15:23:23 +00:00
|
|
|
|
2017-09-08 04:42:58 +00:00
|
|
|
.proc btn_2
|
2017-09-06 15:23:23 +00:00
|
|
|
.byte $29,$00,$43,$00,$E1,$0A
|
2017-09-06 01:41:13 +00:00
|
|
|
.byte $03,$00,$00,$00,$00,$00,$14,$00
|
2017-09-08 04:47:27 +00:00
|
|
|
.byte $0C,$00,'2',$30,$00
|
2017-09-06 15:42:33 +00:00
|
|
|
.word row4_bot
|
2017-09-08 04:42:58 +00:00
|
|
|
box: .word col2_left,row4_top,col2_right,row4_bot
|
|
|
|
.endproc
|
2017-09-06 15:23:23 +00:00
|
|
|
|
2017-09-08 04:42:58 +00:00
|
|
|
.proc btn_3
|
2017-09-06 15:23:23 +00:00
|
|
|
.byte $45
|
2017-09-06 01:41:13 +00:00
|
|
|
.byte $00,$43,$00,$E1,$0A,$03,$00,$00
|
2017-09-08 04:47:27 +00:00
|
|
|
.byte $00,$00,$00,$14,$00,$0C,$00,'3'
|
2017-09-06 15:42:33 +00:00
|
|
|
.byte $4C,$00
|
|
|
|
.word row4_bot
|
2017-09-08 04:42:58 +00:00
|
|
|
box: .word col3_left,row4_top,col3_right,row4_bot
|
|
|
|
.endproc
|
2017-09-06 15:23:23 +00:00
|
|
|
|
2017-09-08 04:42:58 +00:00
|
|
|
.proc btn_0
|
2017-09-06 15:23:23 +00:00
|
|
|
.byte $0C,$00,$52,$00
|
2017-09-06 01:41:13 +00:00
|
|
|
.byte $08,$0B,$08,$00,$00,$00,$00,$00
|
2017-09-08 04:47:27 +00:00
|
|
|
.byte $31,$00,$0C,$00,'0',$13,$00
|
2017-09-06 15:42:33 +00:00
|
|
|
.word row5_bot
|
2017-09-08 04:42:58 +00:00
|
|
|
box: .word col1_left,row5_top,col2_right,row5_bot
|
|
|
|
.endproc
|
2017-09-06 15:23:23 +00:00
|
|
|
|
2017-09-08 04:42:58 +00:00
|
|
|
.proc btn_dec
|
2017-09-06 15:23:23 +00:00
|
|
|
.byte $45,$00,$52,$00,$E1,$0A,$03
|
2017-09-06 01:41:13 +00:00
|
|
|
.byte $00,$00,$00,$00,$00,$14,$00,$0C
|
2017-09-08 04:47:27 +00:00
|
|
|
.byte $00,'.',$4E,$00
|
2017-09-06 15:42:33 +00:00
|
|
|
.word row5_bot
|
2017-09-08 04:42:58 +00:00
|
|
|
box: .word col3_left,row5_top,col3_right,row5_bot
|
|
|
|
.endproc
|
2017-09-06 15:23:23 +00:00
|
|
|
|
2017-09-08 04:42:58 +00:00
|
|
|
.proc btn_add
|
2017-09-06 15:23:23 +00:00
|
|
|
.byte $61,$00
|
2017-09-06 01:41:13 +00:00
|
|
|
.byte $43,$00,$70,$0B,$03,$00,$00,$00
|
2017-09-08 04:47:27 +00:00
|
|
|
.byte $00,$00,$14,$00,$1B,$00,'+',$68
|
2017-09-06 15:42:33 +00:00
|
|
|
.byte $00
|
|
|
|
.word row5_bot
|
2017-09-08 04:42:58 +00:00
|
|
|
box: .word col4_left,row4_top,col4_right,row5_bot
|
|
|
|
.endproc
|
2017-09-08 04:47:27 +00:00
|
|
|
.byte 0 ; sentinel
|
2017-09-06 15:23:23 +00:00
|
|
|
|
2017-09-08 04:47:27 +00:00
|
|
|
|
|
|
|
|
|
|
|
.byte $00,$00,$40,$7E
|
2017-09-06 01:41:13 +00:00
|
|
|
.byte $7F,$1F,$7E,$7F,$1F,$7E,$7F,$1F
|
|
|
|
.byte $7E,$7F,$1F,$7E,$7F,$1F,$7E,$7F
|
|
|
|
.byte $1F,$7E,$7F,$1F,$7E,$7F,$1F,$7E
|
|
|
|
.byte $7F,$1F,$7E,$7F,$1F,$00,$00,$00
|
|
|
|
.byte $01,$00,$00,$00,$00,$00,$00,$00
|
|
|
|
.byte $00,$00,$7F,$7E,$7F,$7F,$7F,$7F
|
|
|
|
.byte $7F,$3F,$7E,$7E,$7F,$7F,$7F,$7F
|
|
|
|
.byte $7F,$3F,$7E,$7E,$7F,$7F,$7F,$7F
|
|
|
|
.byte $7F,$3F,$7E,$7E,$7F,$7F,$7F,$7F
|
|
|
|
.byte $7F,$3F,$7E,$7E,$7F,$7F,$7F,$7F
|
|
|
|
.byte $7F,$3F,$7E,$7E,$7F,$7F,$7F,$7F
|
|
|
|
.byte $7F,$3F,$7E,$7E,$7F,$7F,$7F,$7F
|
|
|
|
.byte $7F,$3F,$7E,$7E,$7F,$7F,$7F,$7F
|
|
|
|
.byte $7F,$3F,$7E,$7E,$7F,$7F,$7F,$7F
|
|
|
|
.byte $7F,$3F,$7E,$7E,$7F,$7F,$7F,$7F
|
|
|
|
.byte $7F,$3F,$7E,$00,$00,$00,$00,$00
|
|
|
|
.byte $00,$00,$7E,$01,$00,$00,$00,$00
|
|
|
|
.byte $00,$00,$7E,$00,$00,$40,$7E,$7F
|
|
|
|
.byte $1F,$7E,$7F,$1F,$7E,$7F,$1F,$7E
|
|
|
|
.byte $7F,$1F,$7E,$7F,$1F,$7E,$7F,$1F
|
|
|
|
.byte $7E,$7F,$1F,$7E,$7F,$1F,$7E,$7F
|
|
|
|
.byte $1F,$7E,$7F,$1F,$7E,$7F,$1F,$7E
|
|
|
|
.byte $7F,$1F,$7E,$7F,$1F,$7E,$7F,$1F
|
|
|
|
.byte $7E,$7F,$1F,$7E,$7F,$1F,$7E,$7F
|
|
|
|
.byte $1F,$7E,$7F,$1F,$7E,$7F,$1F,$7E
|
|
|
|
.byte $7F,$1F,$7E,$7F,$1F,$7E,$7F,$1F
|
|
|
|
.byte $7E,$7F,$1F,$7E,$7F,$1F,$7E,$7F
|
|
|
|
.byte $1F,$00,$00,$00,$01,$00,$00
|
2017-09-06 15:55:53 +00:00
|
|
|
|
2017-09-06 01:41:13 +00:00
|
|
|
L0BC4: .byte $00
|
|
|
|
L0BC5: .byte $00
|
|
|
|
L0BC6: .byte $00
|
|
|
|
L0BC7: .byte $00
|
|
|
|
L0BC8: .byte $00
|
|
|
|
L0BC9: .byte $00
|
|
|
|
L0BCA: .byte $00
|
|
|
|
L0BCB: .byte $00
|
2017-09-06 05:59:02 +00:00
|
|
|
|
2017-09-07 06:43:40 +00:00
|
|
|
.proc background_box_params
|
|
|
|
left: .word 1
|
|
|
|
top: .word 0
|
|
|
|
right: .word 129
|
|
|
|
bottom: .word 96
|
2017-09-06 05:59:02 +00:00
|
|
|
.endproc
|
|
|
|
|
2017-09-06 05:19:45 +00:00
|
|
|
background_pattern:
|
|
|
|
.byte $77,$DD,$77,$DD,$77,$DD,$77,$DD
|
2017-09-06 01:41:13 +00:00
|
|
|
.byte $00
|
2017-09-06 05:19:45 +00:00
|
|
|
|
|
|
|
black_pattern:
|
|
|
|
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
2017-09-06 01:41:13 +00:00
|
|
|
.byte $00
|
2017-09-06 05:19:45 +00:00
|
|
|
|
|
|
|
white_pattern:
|
|
|
|
.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
|
2017-09-06 01:41:13 +00:00
|
|
|
.byte $00
|
2017-09-06 05:19:45 +00:00
|
|
|
|
2017-09-06 01:41:13 +00:00
|
|
|
L0BEF: .byte $7F
|
2017-09-06 05:59:02 +00:00
|
|
|
|
2017-09-07 06:43:40 +00:00
|
|
|
.proc frame_display_params
|
|
|
|
left: .word 10
|
|
|
|
top: .word 5
|
|
|
|
right: .word 120
|
|
|
|
bottom: .word 17
|
|
|
|
.endproc
|
|
|
|
|
|
|
|
.proc clear_display_params
|
|
|
|
left: .word 11
|
|
|
|
top: .word 6
|
|
|
|
right: .word 119
|
|
|
|
bottom: .word 16
|
2017-09-06 05:59:02 +00:00
|
|
|
.endproc
|
|
|
|
|
2017-09-06 06:37:05 +00:00
|
|
|
;; For drawing 1-character strings (button labels)
|
|
|
|
.proc draw_text_params_label
|
|
|
|
.addr label
|
|
|
|
.byte 1
|
|
|
|
.endproc
|
|
|
|
label: .byte 0 ; modified with char to draw
|
2017-09-06 06:24:21 +00:00
|
|
|
|
|
|
|
.proc draw_text_params1
|
2017-09-06 06:37:05 +00:00
|
|
|
addr: .addr text_buffer1
|
2017-09-06 06:24:21 +00:00
|
|
|
length: .byte 15
|
|
|
|
.endproc
|
|
|
|
|
2017-09-06 06:55:44 +00:00
|
|
|
text_buffer_size := 14
|
|
|
|
|
2017-09-06 06:24:21 +00:00
|
|
|
text_buffer1:
|
2017-09-06 07:00:46 +00:00
|
|
|
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
|
|
|
2017-09-06 06:37:05 +00:00
|
|
|
|
|
|
|
.proc draw_text_params2
|
|
|
|
addr: .addr text_buffer2
|
|
|
|
length: .byte 15
|
|
|
|
.endproc
|
|
|
|
|
|
|
|
text_buffer2:
|
2017-09-06 07:00:46 +00:00
|
|
|
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
2017-09-06 06:37:05 +00:00
|
|
|
|
|
|
|
spaces_string:
|
|
|
|
A2D_DEFSTRING " "
|
|
|
|
error_string:
|
|
|
|
A2D_DEFSTRING "Error "
|
2017-09-06 06:24:21 +00:00
|
|
|
|
2017-09-06 01:41:13 +00:00
|
|
|
L0C40: .byte $07
|
|
|
|
L0C41: .byte $0C,$0F
|
|
|
|
L0C43: .byte $00,$00
|
2017-09-06 06:24:21 +00:00
|
|
|
|
2017-09-07 02:38:06 +00:00
|
|
|
window_id = $34
|
|
|
|
|
2017-09-06 06:24:21 +00:00
|
|
|
.proc destroy_window_params
|
2017-09-07 02:38:06 +00:00
|
|
|
id: .byte window_id
|
2017-09-06 06:24:21 +00:00
|
|
|
.endproc
|
2017-09-06 05:59:02 +00:00
|
|
|
|
|
|
|
.proc text_pos_params3
|
|
|
|
left: .word 0
|
|
|
|
base: .word 16
|
|
|
|
.endproc
|
|
|
|
|
|
|
|
.proc text_pos_params2
|
|
|
|
left: .word 15
|
|
|
|
base: .word 16
|
|
|
|
.endproc
|
|
|
|
|
2017-09-07 03:43:12 +00:00
|
|
|
L0C4E: .byte $45,$00,$10,$00
|
|
|
|
|
|
|
|
farg:
|
|
|
|
.byte $00,$00,$00,$00,$00,$00
|
2017-09-08 04:42:58 +00:00
|
|
|
|
|
|
|
;; Title bar decoration?
|
2017-09-06 01:41:13 +00:00
|
|
|
L0C58: .byte $73
|
|
|
|
L0C59: .byte $00
|
|
|
|
L0C5A: .byte $F7
|
|
|
|
L0C5B: .byte $FF,$68,$0C,$01,$00,$00,$00,$00
|
|
|
|
.byte $00,$06,$00,$05,$00,$41,$35,$47
|
|
|
|
.byte $37,$36,$49
|
|
|
|
L0C6E: .byte $00,$00,$00,$00,$00,$00,$00,$00
|
|
|
|
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
|
|
|
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
|
|
|
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
|
|
|
.byte $00,$00,$00,$00,$00
|
2017-09-08 04:42:58 +00:00
|
|
|
|
2017-09-06 01:41:13 +00:00
|
|
|
L0C93: .byte $00,$00,$0D,$00,$00,$20,$80,$00
|
|
|
|
.byte $00,$00,$00,$00,$2F,$02,$B1,$00
|
2017-09-08 04:42:58 +00:00
|
|
|
|
2017-09-07 06:43:40 +00:00
|
|
|
L0CA3: .byte $00 ; arg for fill mode?
|
|
|
|
.byte $01,$02
|
|
|
|
L0CA6: .byte $06 ; arg for fill mode?
|
2017-09-06 05:59:02 +00:00
|
|
|
|
|
|
|
create_window_params:
|
2017-09-07 02:38:06 +00:00
|
|
|
.byte window_id ; id
|
2017-09-06 06:24:21 +00:00
|
|
|
.byte $02 ; flags
|
|
|
|
.addr title
|
|
|
|
.byte $00,$00,$00,$00
|
2017-09-06 01:41:13 +00:00
|
|
|
.byte $00,$00,$00,$00,$82,$00,$60,$00
|
|
|
|
.byte $82,$00,$60,$00
|
|
|
|
L0CBB: .byte $D2
|
|
|
|
L0CBC: .byte $00
|
|
|
|
L0CBD: .byte $3C
|
|
|
|
L0CBE: .byte $00,$00,$20,$80,$00,$00,$00,$00
|
|
|
|
.byte $00,$82,$00,$60,$00,$FF,$FF,$FF
|
|
|
|
.byte $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
|
|
|
|
.byte $00,$00,$00,$01,$01,$00,$7F,$00
|
2017-09-06 06:24:21 +00:00
|
|
|
.byte $88,$00,$00
|
|
|
|
|
|
|
|
title: PASCAL_STRING "Calc"
|
2017-09-06 01:41:13 +00:00
|
|
|
L0CE6: .byte $00,$00,$02,$00,$06,$00,$0E,$00
|
|
|
|
.byte $1E,$00,$3E,$00,$7E,$00,$1A,$00
|
|
|
|
.byte $30,$00,$30,$00,$60,$00,$00,$00
|
|
|
|
.byte $03,$00,$07,$00,$0F,$00,$1F,$00
|
|
|
|
.byte $3F,$00,$7F,$00,$7F,$01,$7F,$00
|
|
|
|
.byte $78,$00,$78,$00,$70,$01,$70,$01
|
|
|
|
.byte $01,$01
|
2017-09-06 05:19:45 +00:00
|
|
|
|
2017-09-06 01:41:13 +00:00
|
|
|
L0D18: sta ALTZPON
|
|
|
|
lda LCBANK1
|
|
|
|
lda LCBANK1
|
2017-09-06 02:08:11 +00:00
|
|
|
A2D_CALL $1A, L08D4
|
2017-09-06 05:59:02 +00:00
|
|
|
A2D_CALL A2D_CREATE_WINDOW, create_window_params
|
2017-09-06 02:08:11 +00:00
|
|
|
A2D_CALL $03, L0C6E
|
|
|
|
A2D_CALL A2D_TEXT_BOX1, L0C6E
|
|
|
|
A2D_CALL $2B, 0
|
2017-09-06 01:41:13 +00:00
|
|
|
lda #$01
|
2017-09-06 06:24:21 +00:00
|
|
|
sta button_state_params::state
|
|
|
|
A2D_CALL $2D, button_state_params
|
|
|
|
A2D_CALL A2D_GET_BUTTON, button_state_params
|
2017-09-06 05:19:45 +00:00
|
|
|
lda ROMIN2
|
2017-09-06 01:41:13 +00:00
|
|
|
jsr L128E
|
2017-09-07 02:38:06 +00:00
|
|
|
lda #window_id
|
2017-09-06 01:41:13 +00:00
|
|
|
jsr L089E
|
|
|
|
jsr L129E
|
|
|
|
lda #$3D
|
|
|
|
sta L0BC6
|
|
|
|
lda #$00
|
|
|
|
sta L0BC5
|
|
|
|
sta L0BC7
|
|
|
|
sta L0BC8
|
|
|
|
sta L0BC9
|
|
|
|
sta L0BCA
|
|
|
|
sta L0BCB
|
|
|
|
ldx #$1C
|
|
|
|
L0D79: lda L13CB,x
|
|
|
|
sta $B0,x
|
|
|
|
dex
|
|
|
|
bne L0D79
|
|
|
|
lda #$00
|
|
|
|
sta $D8
|
|
|
|
lda #$AE
|
|
|
|
sta $36
|
|
|
|
lda #$13
|
|
|
|
sta $37
|
|
|
|
lda #$01
|
|
|
|
jsr FLOAT
|
2017-09-07 03:43:12 +00:00
|
|
|
ldx #<farg
|
|
|
|
ldy #>farg
|
2017-09-06 01:41:13 +00:00
|
|
|
jsr ROUND
|
|
|
|
lda #$00
|
|
|
|
jsr FLOAT
|
|
|
|
jsr FADD
|
|
|
|
jsr FOUT
|
|
|
|
lda #$07
|
|
|
|
jsr FMULT
|
|
|
|
lda #$00
|
|
|
|
jsr FLOAT
|
2017-09-07 03:43:12 +00:00
|
|
|
ldx #<farg
|
|
|
|
ldy #>farg
|
2017-09-06 01:41:13 +00:00
|
|
|
jsr ROUND
|
|
|
|
tsx
|
|
|
|
stx L0BC4
|
2017-09-07 03:43:12 +00:00
|
|
|
lda #'='
|
|
|
|
jsr process_key
|
|
|
|
lda #'C'
|
|
|
|
jsr process_key
|
2017-09-06 02:08:11 +00:00
|
|
|
A2D_CALL $24, L0CE6
|
2017-09-06 06:24:21 +00:00
|
|
|
L0DC9: A2D_CALL $2A, button_state_params
|
|
|
|
lda button_state_params::state
|
2017-09-06 01:41:13 +00:00
|
|
|
cmp #$01
|
|
|
|
bne L0DDC
|
2017-09-08 03:59:38 +00:00
|
|
|
jsr on_click
|
2017-09-06 01:41:13 +00:00
|
|
|
jmp L0DC9
|
|
|
|
|
|
|
|
L0DDC: cmp #$03
|
|
|
|
bne L0DC9
|
|
|
|
jsr L0E6F
|
|
|
|
jmp L0DC9
|
|
|
|
|
2017-09-08 03:59:38 +00:00
|
|
|
on_click:
|
|
|
|
lda LCBANK1
|
2017-09-06 01:41:13 +00:00
|
|
|
lda LCBANK1
|
2017-09-08 03:59:38 +00:00
|
|
|
A2D_CALL A2D_GET_MOUSE, get_mouse_params
|
2017-09-06 05:19:45 +00:00
|
|
|
lda ROMIN2
|
2017-09-08 03:59:38 +00:00
|
|
|
lda get_mouse_params::elem
|
|
|
|
cmp #A2D_ELEM_CLIENT ; Less than CLIENT is MENU or DESKTOP
|
|
|
|
bcc ignore_click
|
|
|
|
lda get_mouse_params::id
|
|
|
|
cmp #window_id ; This window?
|
|
|
|
beq :+
|
|
|
|
|
|
|
|
ignore_click:
|
|
|
|
rts
|
|
|
|
|
|
|
|
: lda get_mouse_params::elem
|
|
|
|
cmp #A2D_ELEM_CLIENT ; Client area?
|
|
|
|
bne :+
|
|
|
|
jsr L0E95 ; try to translate click into key
|
|
|
|
bcc ignore_click
|
2017-09-07 03:43:12 +00:00
|
|
|
jmp process_key
|
2017-09-06 01:41:13 +00:00
|
|
|
|
2017-09-08 03:59:38 +00:00
|
|
|
: cmp #A2D_ELEM_CLOSE ; Close box?
|
|
|
|
bne :+
|
2017-09-06 06:24:21 +00:00
|
|
|
A2D_CALL A2D_BTN_CLICK, button_click_params
|
|
|
|
lda button_click_params::state
|
2017-09-08 03:59:38 +00:00
|
|
|
beq ignore_click
|
2017-09-07 06:43:40 +00:00
|
|
|
exit: lda LCBANK1
|
2017-09-06 01:41:13 +00:00
|
|
|
lda LCBANK1
|
2017-09-06 06:24:21 +00:00
|
|
|
A2D_CALL A2D_DESTROY_WINDOW, destroy_window_params
|
2017-09-06 01:41:13 +00:00
|
|
|
jsr UNKNOWN_CALL
|
|
|
|
.byte $0C
|
|
|
|
.addr 0
|
2017-09-06 05:19:45 +00:00
|
|
|
lda ROMIN2
|
2017-09-06 02:08:11 +00:00
|
|
|
A2D_CALL $1A, L08D5
|
2017-09-08 03:59:38 +00:00
|
|
|
|
|
|
|
.proc do_close
|
|
|
|
;; Copy following routine to ZP and invoke it
|
|
|
|
zp_stash := $20
|
|
|
|
|
|
|
|
ldx #(routine_end - routine)
|
|
|
|
loop: lda routine,x
|
|
|
|
sta zp_stash,x
|
2017-09-06 01:41:13 +00:00
|
|
|
dex
|
2017-09-08 03:59:38 +00:00
|
|
|
bpl loop
|
|
|
|
jmp zp_stash
|
2017-09-06 01:41:13 +00:00
|
|
|
|
2017-09-08 03:59:38 +00:00
|
|
|
.proc routine
|
2017-09-06 01:41:13 +00:00
|
|
|
L0E4A: sta RAMRDOFF
|
|
|
|
sta RAMWRTOFF
|
2017-09-06 05:19:45 +00:00
|
|
|
jmp exit_da
|
2017-09-08 03:59:38 +00:00
|
|
|
.endproc
|
|
|
|
routine_end := * ; Can't use .sizeof before the .proc definition
|
|
|
|
.endproc
|
2017-09-06 01:41:13 +00:00
|
|
|
|
2017-09-08 03:59:38 +00:00
|
|
|
: cmp #A2D_ELEM_TITLE ; Title bar?
|
|
|
|
bne ignore_click
|
2017-09-07 02:38:06 +00:00
|
|
|
lda #window_id
|
2017-09-06 06:24:21 +00:00
|
|
|
sta button_state_params::state
|
2017-09-06 01:41:13 +00:00
|
|
|
lda LCBANK1
|
|
|
|
lda LCBANK1
|
2017-09-06 06:24:21 +00:00
|
|
|
A2D_CALL $44, button_state_params
|
2017-09-06 05:19:45 +00:00
|
|
|
lda ROMIN2
|
2017-09-06 01:41:13 +00:00
|
|
|
jsr L084C
|
|
|
|
rts
|
|
|
|
|
2017-09-07 03:43:12 +00:00
|
|
|
.proc L0E6F
|
2017-09-08 03:59:38 +00:00
|
|
|
lda keydown
|
2017-09-07 03:43:12 +00:00
|
|
|
bne bail
|
2017-09-08 03:59:38 +00:00
|
|
|
lda keychar ; check key
|
2017-09-07 03:43:12 +00:00
|
|
|
cmp #$1B ; Escape?
|
|
|
|
bne trydel
|
2017-09-07 06:43:40 +00:00
|
|
|
lda L0BC5
|
|
|
|
bne clear ; empty state?
|
2017-09-06 01:41:13 +00:00
|
|
|
lda L0BCB
|
2017-09-07 06:43:40 +00:00
|
|
|
beq exit ; if so, exit DA
|
|
|
|
clear: lda #'C' ; otherwise turn Escape into Clear
|
|
|
|
|
2017-09-07 03:43:12 +00:00
|
|
|
trydel: cmp #$7F ; Delete?
|
|
|
|
beq :+
|
|
|
|
cmp #$60 ; lowercase range?
|
|
|
|
bcc :+
|
|
|
|
and #$5F ; convert to uppercase
|
|
|
|
: jmp process_key
|
|
|
|
bail:
|
|
|
|
.endproc
|
|
|
|
L0E94: rts ; used by prev/next proc
|
2017-09-06 01:41:13 +00:00
|
|
|
|
2017-09-07 02:38:06 +00:00
|
|
|
L0E95: lda #window_id
|
2017-09-06 06:24:21 +00:00
|
|
|
sta button_state_params::state
|
|
|
|
A2D_CALL $46, button_state_params
|
2017-09-08 04:42:58 +00:00
|
|
|
lda clickx+1 ; ensure high bits of coords are 0
|
|
|
|
ora clicky+1
|
2017-09-06 01:41:13 +00:00
|
|
|
bne L0E94
|
2017-09-08 04:42:58 +00:00
|
|
|
lda clicky ; click y
|
|
|
|
ldx clickx ; click x
|
2017-09-07 02:05:49 +00:00
|
|
|
|
2017-09-07 02:38:06 +00:00
|
|
|
border_lt := 1 ; border width pixels (left/top)
|
|
|
|
border_br := 2 ; (bottom/right)
|
|
|
|
|
2017-09-07 02:05:49 +00:00
|
|
|
.proc find_button_row
|
2017-09-07 02:38:06 +00:00
|
|
|
cmp #row1_top+border_lt - 1 ; row 1 ? (- 1 is bug in original?)
|
2017-09-07 02:05:49 +00:00
|
|
|
bcc miss
|
2017-09-07 02:38:06 +00:00
|
|
|
cmp #row1_bot+border_br + 1 ; (+ 1 is bug in original?)
|
2017-09-06 06:55:44 +00:00
|
|
|
bcs :+
|
2017-09-07 02:05:49 +00:00
|
|
|
jsr find_button_col
|
|
|
|
bcc miss
|
|
|
|
lda row1_lookup,x
|
2017-09-06 01:41:13 +00:00
|
|
|
rts
|
|
|
|
|
2017-09-07 02:38:06 +00:00
|
|
|
: cmp #row2_top-border_lt ; row 2?
|
2017-09-07 02:05:49 +00:00
|
|
|
bcc miss
|
2017-09-07 02:38:06 +00:00
|
|
|
cmp #row2_bot+border_br
|
2017-09-06 06:55:44 +00:00
|
|
|
bcs :+
|
2017-09-07 02:05:49 +00:00
|
|
|
jsr find_button_col
|
|
|
|
bcc miss
|
|
|
|
lda row2_lookup,x
|
2017-09-06 01:41:13 +00:00
|
|
|
rts
|
|
|
|
|
2017-09-07 02:38:06 +00:00
|
|
|
: cmp #row3_top-border_lt ; row 3?
|
2017-09-07 02:05:49 +00:00
|
|
|
bcc miss
|
2017-09-07 02:38:06 +00:00
|
|
|
cmp #row3_bot+border_br
|
2017-09-06 06:55:44 +00:00
|
|
|
bcs :+
|
2017-09-07 02:05:49 +00:00
|
|
|
jsr find_button_col
|
|
|
|
bcc miss
|
|
|
|
lda row3_lookup,x
|
2017-09-06 01:41:13 +00:00
|
|
|
rts
|
|
|
|
|
2017-09-07 02:38:06 +00:00
|
|
|
: cmp #row4_top-border_lt ; row 4?
|
2017-09-07 02:05:49 +00:00
|
|
|
bcc miss
|
2017-09-07 02:38:06 +00:00
|
|
|
cmp #row4_bot+border_br
|
2017-09-06 06:55:44 +00:00
|
|
|
bcs :+
|
2017-09-07 02:05:49 +00:00
|
|
|
jsr find_button_col
|
|
|
|
bcc miss
|
2017-09-06 01:41:13 +00:00
|
|
|
sec
|
2017-09-07 02:05:49 +00:00
|
|
|
lda row4_lookup,x
|
2017-09-06 01:41:13 +00:00
|
|
|
rts
|
|
|
|
|
2017-09-08 04:03:07 +00:00
|
|
|
: cmp #row5_top-border_lt ; special case for tall + button
|
2017-09-06 06:55:44 +00:00
|
|
|
bcs :+
|
2017-09-08 04:42:58 +00:00
|
|
|
lda clickx
|
2017-09-08 04:03:07 +00:00
|
|
|
cmp #col4_left-border_lt
|
2017-09-07 02:05:49 +00:00
|
|
|
bcc miss
|
2017-09-08 04:03:57 +00:00
|
|
|
cmp #col4_right+border_br-1 ; is -1 bug in original?
|
2017-09-07 02:05:49 +00:00
|
|
|
bcs miss
|
|
|
|
lda #'+'
|
2017-09-06 01:41:13 +00:00
|
|
|
sec
|
|
|
|
rts
|
|
|
|
|
2017-09-07 02:38:06 +00:00
|
|
|
: cmp #row5_bot+border_br ; row 5?
|
2017-09-07 02:05:49 +00:00
|
|
|
bcs miss
|
|
|
|
jsr find_button_col
|
2017-09-06 06:55:44 +00:00
|
|
|
bcc :+
|
2017-09-07 02:05:49 +00:00
|
|
|
lda row5_lookup,x
|
2017-09-06 01:41:13 +00:00
|
|
|
rts
|
|
|
|
|
2017-09-08 04:42:58 +00:00
|
|
|
: lda clickx ; special case for wide 0 button
|
2017-09-08 04:03:07 +00:00
|
|
|
cmp #col1_left-border_lt
|
2017-09-07 02:05:49 +00:00
|
|
|
bcc miss
|
2017-09-08 04:03:07 +00:00
|
|
|
cmp #col2_right+border_br
|
2017-09-07 02:05:49 +00:00
|
|
|
bcs miss
|
|
|
|
lda #'0'
|
2017-09-06 01:41:13 +00:00
|
|
|
sec
|
|
|
|
rts
|
|
|
|
|
2017-09-07 02:05:49 +00:00
|
|
|
miss: clc
|
|
|
|
rts
|
|
|
|
.endproc
|
2017-09-06 02:08:11 +00:00
|
|
|
|
2017-09-07 02:05:49 +00:00
|
|
|
row1_lookup := *-1
|
|
|
|
.byte 'C', 'E', '=', '*'
|
|
|
|
row2_lookup := *-1
|
|
|
|
.byte '7', '8', '9', '/'
|
|
|
|
row3_lookup := *-1
|
|
|
|
.byte '4', '5', '6', '-'
|
|
|
|
row4_lookup := *-1
|
|
|
|
.byte '1', '2', '3', '+'
|
|
|
|
row5_lookup := *-1
|
|
|
|
.byte '0', '0', '.', '+'
|
|
|
|
|
2017-09-07 03:43:12 +00:00
|
|
|
.proc find_button_col
|
2017-09-07 02:38:06 +00:00
|
|
|
cpx #col1_left-border_lt ; col 1?
|
2017-09-07 03:43:12 +00:00
|
|
|
bcc miss
|
2017-09-07 02:38:06 +00:00
|
|
|
cpx #col1_right+border_br
|
2017-09-06 06:55:44 +00:00
|
|
|
bcs :+
|
2017-09-07 02:05:49 +00:00
|
|
|
ldx #1
|
2017-09-06 01:41:13 +00:00
|
|
|
sec
|
|
|
|
rts
|
|
|
|
|
2017-09-07 02:38:06 +00:00
|
|
|
: cpx #col2_left-border_lt ; col 2?
|
2017-09-07 03:43:12 +00:00
|
|
|
bcc miss
|
2017-09-07 02:38:06 +00:00
|
|
|
cpx #col2_right+border_br
|
2017-09-06 06:55:44 +00:00
|
|
|
bcs :+
|
2017-09-07 02:05:49 +00:00
|
|
|
ldx #2
|
2017-09-06 01:41:13 +00:00
|
|
|
sec
|
|
|
|
rts
|
|
|
|
|
2017-09-07 02:38:06 +00:00
|
|
|
: cpx #col3_left-border_lt ; col 3?
|
2017-09-07 03:43:12 +00:00
|
|
|
bcc miss
|
2017-09-07 02:38:06 +00:00
|
|
|
cpx #col3_right+border_br
|
2017-09-06 06:55:44 +00:00
|
|
|
bcs :+
|
2017-09-07 02:05:49 +00:00
|
|
|
ldx #3
|
2017-09-06 01:41:13 +00:00
|
|
|
sec
|
|
|
|
rts
|
|
|
|
|
2017-09-07 02:38:06 +00:00
|
|
|
: cpx #col4_left-border_lt ; col 4?
|
2017-09-07 03:43:12 +00:00
|
|
|
bcc miss
|
2017-09-07 02:38:06 +00:00
|
|
|
cpx #col4_right+border_br - 1 ; bug in original?
|
2017-09-07 03:43:12 +00:00
|
|
|
bcs miss
|
2017-09-07 02:05:49 +00:00
|
|
|
ldx #4
|
2017-09-06 01:41:13 +00:00
|
|
|
sec
|
|
|
|
rts
|
|
|
|
|
2017-09-07 03:43:12 +00:00
|
|
|
miss: clc
|
2017-09-06 01:41:13 +00:00
|
|
|
rts
|
2017-09-07 03:43:12 +00:00
|
|
|
.endproc
|
2017-09-06 01:41:13 +00:00
|
|
|
|
2017-09-07 03:43:12 +00:00
|
|
|
.proc process_key
|
|
|
|
cmp #'C' ; Clear?
|
2017-09-06 06:55:44 +00:00
|
|
|
bne :+
|
2017-09-08 04:42:58 +00:00
|
|
|
ldx #<btn_c::box
|
|
|
|
ldy #>btn_c::box
|
2017-09-06 01:41:13 +00:00
|
|
|
lda #$63
|
2017-09-07 06:43:40 +00:00
|
|
|
jsr depress_button
|
2017-09-06 01:41:13 +00:00
|
|
|
lda #$00
|
|
|
|
jsr FLOAT
|
2017-09-07 03:43:12 +00:00
|
|
|
ldx #<farg
|
|
|
|
ldy #>farg
|
2017-09-06 01:41:13 +00:00
|
|
|
jsr ROUND
|
2017-09-07 03:43:12 +00:00
|
|
|
lda #'='
|
2017-09-06 01:41:13 +00:00
|
|
|
sta L0BC6
|
2017-09-07 03:43:12 +00:00
|
|
|
lda #0
|
2017-09-06 01:41:13 +00:00
|
|
|
sta L0BC5
|
|
|
|
sta L0BCB
|
|
|
|
sta L0BC7
|
|
|
|
sta L0BC8
|
|
|
|
sta L0BC9
|
|
|
|
jmp L129E
|
|
|
|
|
2017-09-07 03:43:12 +00:00
|
|
|
: cmp #'E' ; Exponential?
|
2017-09-06 01:41:13 +00:00
|
|
|
bne L0FC7
|
2017-09-08 04:42:58 +00:00
|
|
|
ldx #<btn_e::box
|
|
|
|
ldy #>btn_e::box
|
2017-09-06 01:41:13 +00:00
|
|
|
lda #$65
|
2017-09-07 06:43:40 +00:00
|
|
|
jsr depress_button
|
2017-09-06 01:41:13 +00:00
|
|
|
ldy L0BC8
|
|
|
|
bne L0FC6
|
|
|
|
ldy L0BCB
|
2017-09-06 06:55:44 +00:00
|
|
|
bne :+
|
2017-09-06 01:41:13 +00:00
|
|
|
inc L0BCB
|
2017-09-06 06:37:05 +00:00
|
|
|
lda #'1'
|
2017-09-06 07:00:46 +00:00
|
|
|
sta text_buffer1 + text_buffer_size
|
|
|
|
sta text_buffer2 + text_buffer_size
|
2017-09-06 06:55:44 +00:00
|
|
|
: lda #'E'
|
2017-09-06 01:41:13 +00:00
|
|
|
sta L0BC8
|
|
|
|
jmp L1107
|
|
|
|
|
|
|
|
L0FC6: rts
|
|
|
|
|
2017-09-07 03:43:12 +00:00
|
|
|
L0FC7: cmp #'=' ; Equals?
|
2017-09-06 06:55:44 +00:00
|
|
|
bne :+
|
2017-09-06 01:41:13 +00:00
|
|
|
pha
|
2017-09-08 04:42:58 +00:00
|
|
|
ldx #<btn_eq::box
|
|
|
|
ldy #>btn_eq::box
|
2017-09-06 01:41:13 +00:00
|
|
|
jmp L114C
|
|
|
|
|
2017-09-07 03:43:12 +00:00
|
|
|
: cmp #'*' ; Multiply?
|
2017-09-06 06:55:44 +00:00
|
|
|
bne :+
|
2017-09-06 01:41:13 +00:00
|
|
|
pha
|
2017-09-08 04:42:58 +00:00
|
|
|
ldx #<btn_mul::box
|
|
|
|
ldy #>btn_mul::box
|
2017-09-06 01:41:13 +00:00
|
|
|
jmp L114C
|
|
|
|
|
2017-09-07 03:43:12 +00:00
|
|
|
: cmp #'.' ; Decimal?
|
2017-09-06 01:41:13 +00:00
|
|
|
bne L1003
|
2017-09-08 04:42:58 +00:00
|
|
|
ldx #<btn_dec::box
|
|
|
|
ldy #>btn_dec::box
|
2017-09-07 06:43:40 +00:00
|
|
|
jsr depress_button
|
2017-09-06 01:41:13 +00:00
|
|
|
lda L0BC7
|
|
|
|
ora L0BC8
|
|
|
|
bne L1002
|
|
|
|
lda L0BCB
|
2017-09-06 06:55:44 +00:00
|
|
|
bne :+
|
2017-09-06 01:41:13 +00:00
|
|
|
inc L0BCB
|
2017-09-06 15:55:53 +00:00
|
|
|
: lda #'.'
|
2017-09-06 01:41:13 +00:00
|
|
|
sta L0BC7
|
|
|
|
jmp L1107
|
|
|
|
|
|
|
|
L1002: rts
|
|
|
|
|
2017-09-07 03:43:12 +00:00
|
|
|
L1003: cmp #'+' ; Add?
|
2017-09-06 06:55:44 +00:00
|
|
|
bne :+
|
2017-09-06 01:41:13 +00:00
|
|
|
pha
|
2017-09-08 04:42:58 +00:00
|
|
|
ldx #<btn_add::box
|
|
|
|
ldy #>btn_add::box
|
2017-09-06 01:41:13 +00:00
|
|
|
jmp L114C
|
|
|
|
|
2017-09-07 03:43:12 +00:00
|
|
|
: cmp #'-' ; Subtract?
|
|
|
|
bne trydiv
|
2017-09-06 01:41:13 +00:00
|
|
|
pha
|
2017-09-08 04:42:58 +00:00
|
|
|
ldx #<btn_sub::box
|
|
|
|
ldy #>btn_sub::box
|
2017-09-06 01:41:13 +00:00
|
|
|
lda L0BC8
|
2017-09-07 03:43:12 +00:00
|
|
|
beq :+
|
2017-09-06 01:41:13 +00:00
|
|
|
lda L0BC9
|
2017-09-07 03:43:12 +00:00
|
|
|
bne :+
|
2017-09-06 01:41:13 +00:00
|
|
|
sec
|
|
|
|
ror L0BC9
|
|
|
|
pla
|
|
|
|
pha
|
|
|
|
jmp L10FF
|
|
|
|
|
2017-09-07 03:43:12 +00:00
|
|
|
: pla
|
2017-09-06 01:41:13 +00:00
|
|
|
pha
|
|
|
|
jmp L114C
|
|
|
|
|
2017-09-07 03:43:12 +00:00
|
|
|
trydiv: cmp #'/' ; Divide?
|
2017-09-06 06:55:44 +00:00
|
|
|
bne :+
|
2017-09-06 01:41:13 +00:00
|
|
|
pha
|
2017-09-08 04:42:58 +00:00
|
|
|
ldx #<btn_div::box
|
|
|
|
ldy #>btn_div::box
|
2017-09-06 01:41:13 +00:00
|
|
|
jmp L114C
|
|
|
|
|
2017-09-07 03:43:12 +00:00
|
|
|
: cmp #'0' ; Digit 0?
|
2017-09-06 06:55:44 +00:00
|
|
|
bne :+
|
2017-09-06 01:41:13 +00:00
|
|
|
pha
|
2017-09-08 04:42:58 +00:00
|
|
|
ldx #<btn_0::box
|
|
|
|
ldy #>btn_0::box
|
2017-09-06 01:41:13 +00:00
|
|
|
jmp L10FF
|
|
|
|
|
2017-09-07 03:43:12 +00:00
|
|
|
: cmp #'1' ; Digit 1?
|
2017-09-06 06:55:44 +00:00
|
|
|
bne :+
|
2017-09-06 01:41:13 +00:00
|
|
|
pha
|
2017-09-08 04:42:58 +00:00
|
|
|
ldx #<btn_1::box
|
|
|
|
ldy #>btn_1::box
|
2017-09-06 01:41:13 +00:00
|
|
|
jmp L10FF
|
|
|
|
|
2017-09-07 03:43:12 +00:00
|
|
|
: cmp #'2' ; Digit 2?
|
2017-09-06 06:55:44 +00:00
|
|
|
bne :+
|
2017-09-06 01:41:13 +00:00
|
|
|
pha
|
2017-09-08 04:42:58 +00:00
|
|
|
ldx #<btn_2::box
|
|
|
|
ldy #>btn_2::box
|
2017-09-06 01:41:13 +00:00
|
|
|
jmp L10FF
|
|
|
|
|
2017-09-07 03:43:12 +00:00
|
|
|
: cmp #'3' ; Digit 3?
|
2017-09-06 06:55:44 +00:00
|
|
|
bne :+
|
2017-09-06 01:41:13 +00:00
|
|
|
pha
|
2017-09-08 04:42:58 +00:00
|
|
|
ldx #<btn_3::box
|
|
|
|
ldy #>btn_3::box
|
2017-09-06 01:41:13 +00:00
|
|
|
jmp L10FF
|
|
|
|
|
2017-09-07 03:43:12 +00:00
|
|
|
: cmp #'4' ; Digit 4?
|
2017-09-06 06:55:44 +00:00
|
|
|
bne :+
|
2017-09-06 01:41:13 +00:00
|
|
|
pha
|
2017-09-08 04:42:58 +00:00
|
|
|
ldx #<btn_4::box
|
|
|
|
ldy #>btn_4::box
|
2017-09-06 01:41:13 +00:00
|
|
|
jmp L10FF
|
|
|
|
|
2017-09-07 03:43:12 +00:00
|
|
|
: cmp #'5' ; Digit 5?
|
2017-09-06 06:55:44 +00:00
|
|
|
bne :+
|
2017-09-06 01:41:13 +00:00
|
|
|
pha
|
2017-09-08 04:42:58 +00:00
|
|
|
ldx #<btn_5::box
|
|
|
|
ldy #>btn_5::box
|
2017-09-06 01:41:13 +00:00
|
|
|
jmp L10FF
|
|
|
|
|
2017-09-07 03:43:12 +00:00
|
|
|
: cmp #'6' ; Digit 6?
|
2017-09-06 06:55:44 +00:00
|
|
|
bne :+
|
2017-09-06 01:41:13 +00:00
|
|
|
pha
|
2017-09-08 04:42:58 +00:00
|
|
|
ldx #<btn_6::box
|
|
|
|
ldy #>btn_6::box
|
2017-09-06 01:41:13 +00:00
|
|
|
jmp L10FF
|
|
|
|
|
2017-09-07 03:43:12 +00:00
|
|
|
: cmp #'7' ; Digit 7?
|
2017-09-06 06:55:44 +00:00
|
|
|
bne :+
|
2017-09-06 01:41:13 +00:00
|
|
|
pha
|
2017-09-08 04:42:58 +00:00
|
|
|
ldx #<btn_7::box
|
|
|
|
ldy #>btn_7::box
|
2017-09-06 01:41:13 +00:00
|
|
|
jmp L10FF
|
|
|
|
|
2017-09-07 03:43:12 +00:00
|
|
|
: cmp #'8' ; Digit 8?
|
2017-09-06 06:55:44 +00:00
|
|
|
bne :+
|
2017-09-06 01:41:13 +00:00
|
|
|
pha
|
2017-09-08 04:42:58 +00:00
|
|
|
ldx #<btn_8::box
|
|
|
|
ldy #>btn_8::box
|
2017-09-06 01:41:13 +00:00
|
|
|
jmp L10FF
|
|
|
|
|
2017-09-07 03:43:12 +00:00
|
|
|
: cmp #'9' ; Digit 9?
|
2017-09-06 06:55:44 +00:00
|
|
|
bne :+
|
2017-09-06 01:41:13 +00:00
|
|
|
pha
|
2017-09-08 04:42:58 +00:00
|
|
|
ldx #<btn_9::box
|
|
|
|
ldy #>btn_9::box
|
2017-09-06 01:41:13 +00:00
|
|
|
jmp L10FF
|
|
|
|
|
2017-09-07 03:43:12 +00:00
|
|
|
: cmp #$7F ; Delete?
|
|
|
|
bne end
|
2017-09-06 01:41:13 +00:00
|
|
|
ldy L0BCB
|
2017-09-07 03:43:12 +00:00
|
|
|
beq end
|
2017-09-06 15:55:53 +00:00
|
|
|
cpy #1
|
2017-09-06 06:55:44 +00:00
|
|
|
bne :+
|
2017-09-06 01:41:13 +00:00
|
|
|
jsr L11F5
|
|
|
|
jmp L12A4
|
|
|
|
|
2017-09-06 06:55:44 +00:00
|
|
|
: dec L0BCB
|
2017-09-06 05:59:02 +00:00
|
|
|
ldx #0
|
2017-09-06 07:00:46 +00:00
|
|
|
lda text_buffer1 + text_buffer_size
|
2017-09-06 05:59:02 +00:00
|
|
|
cmp #'.'
|
2017-09-07 04:33:22 +00:00
|
|
|
bne :+
|
2017-09-06 01:41:13 +00:00
|
|
|
stx L0BC7
|
2017-09-07 04:33:22 +00:00
|
|
|
: cmp #'E'
|
2017-09-06 06:55:44 +00:00
|
|
|
bne :+
|
2017-09-06 01:41:13 +00:00
|
|
|
stx L0BC8
|
2017-09-06 06:55:44 +00:00
|
|
|
: cmp #'-'
|
|
|
|
bne :+
|
2017-09-06 01:41:13 +00:00
|
|
|
stx L0BC9
|
2017-09-07 04:33:22 +00:00
|
|
|
: ldx #text_buffer_size-1
|
|
|
|
loop: lda text_buffer1,x
|
2017-09-06 06:24:21 +00:00
|
|
|
sta text_buffer1+1,x
|
2017-09-06 06:37:05 +00:00
|
|
|
sta text_buffer2+1,x
|
2017-09-06 01:41:13 +00:00
|
|
|
dex
|
|
|
|
dey
|
2017-09-07 04:33:22 +00:00
|
|
|
bne loop
|
2017-09-06 06:55:44 +00:00
|
|
|
lda #' '
|
2017-09-06 06:24:21 +00:00
|
|
|
sta text_buffer1+1,x
|
2017-09-06 06:37:05 +00:00
|
|
|
sta text_buffer2+1,x
|
2017-09-06 01:41:13 +00:00
|
|
|
jmp L12A4
|
|
|
|
|
2017-09-07 03:43:12 +00:00
|
|
|
end: rts
|
|
|
|
.endproc
|
2017-09-06 01:41:13 +00:00
|
|
|
|
2017-09-07 06:43:40 +00:00
|
|
|
L10FF: jsr depress_button
|
2017-09-06 01:41:13 +00:00
|
|
|
bne L1106
|
|
|
|
pla
|
|
|
|
rts
|
|
|
|
|
|
|
|
L1106: pla
|
|
|
|
L1107: sec
|
|
|
|
ror L0BCA
|
|
|
|
ldy L0BCB
|
|
|
|
bne L111C
|
|
|
|
pha
|
|
|
|
jsr L128E
|
|
|
|
pla
|
|
|
|
cmp #$30
|
|
|
|
bne L111C
|
|
|
|
jmp L12A4
|
|
|
|
|
|
|
|
L111C: sec
|
|
|
|
ror L0BC5
|
|
|
|
cpy #$0A
|
|
|
|
bcs L114B
|
|
|
|
pha
|
|
|
|
ldy L0BCB
|
|
|
|
beq L113E
|
|
|
|
lda #$0F
|
|
|
|
sec
|
|
|
|
sbc L0BCB
|
|
|
|
tax
|
2017-09-06 06:24:21 +00:00
|
|
|
L1131: lda text_buffer1,x
|
|
|
|
sta text_buffer1-1,x
|
2017-09-06 06:37:05 +00:00
|
|
|
sta text_buffer2-1,x
|
2017-09-06 01:41:13 +00:00
|
|
|
inx
|
|
|
|
dey
|
|
|
|
bne L1131
|
|
|
|
L113E: inc L0BCB
|
|
|
|
pla
|
2017-09-06 07:00:46 +00:00
|
|
|
sta text_buffer1 + text_buffer_size
|
|
|
|
sta text_buffer2 + text_buffer_size
|
2017-09-06 01:41:13 +00:00
|
|
|
jmp L12A4
|
|
|
|
|
|
|
|
L114B: rts
|
|
|
|
|
2017-09-07 06:43:40 +00:00
|
|
|
L114C: jsr depress_button
|
2017-09-06 01:41:13 +00:00
|
|
|
bne L1153
|
|
|
|
pla
|
|
|
|
rts
|
|
|
|
|
|
|
|
L1153: lda L0BC6
|
2017-09-06 05:59:02 +00:00
|
|
|
cmp #'='
|
2017-09-06 06:55:44 +00:00
|
|
|
bne :+
|
2017-09-06 01:41:13 +00:00
|
|
|
lda L0BCA
|
|
|
|
bne L1173
|
|
|
|
lda #$00
|
|
|
|
jsr FLOAT
|
|
|
|
jmp L1181
|
|
|
|
|
2017-09-06 06:55:44 +00:00
|
|
|
: lda L0BCA
|
2017-09-06 01:41:13 +00:00
|
|
|
bne L1173
|
|
|
|
pla
|
|
|
|
sta L0BC6
|
|
|
|
jmp L11F5
|
|
|
|
|
|
|
|
L1173: lda #$07
|
|
|
|
sta $B8
|
|
|
|
lda #$0C
|
|
|
|
sta $B9
|
|
|
|
jsr L00B1
|
|
|
|
jsr FIN
|
|
|
|
L1181: pla
|
|
|
|
ldx L0BC6
|
2017-09-07 03:43:12 +00:00
|
|
|
sta L0BC6 ; Operation
|
|
|
|
lda #<farg
|
|
|
|
ldy #>farg
|
2017-09-06 05:59:02 +00:00
|
|
|
|
|
|
|
cpx #'+'
|
2017-09-06 06:55:44 +00:00
|
|
|
bne :+
|
2017-09-06 01:41:13 +00:00
|
|
|
jsr FADD
|
2017-09-07 03:43:12 +00:00
|
|
|
jmp post
|
2017-09-06 01:41:13 +00:00
|
|
|
|
2017-09-06 06:55:44 +00:00
|
|
|
: cpx #'-'
|
|
|
|
bne :+
|
2017-09-06 01:41:13 +00:00
|
|
|
jsr FSUB
|
2017-09-07 03:43:12 +00:00
|
|
|
jmp post
|
2017-09-06 01:41:13 +00:00
|
|
|
|
2017-09-06 06:55:44 +00:00
|
|
|
: cpx #'*'
|
|
|
|
bne :+
|
2017-09-06 01:41:13 +00:00
|
|
|
jsr FMULT
|
2017-09-07 03:43:12 +00:00
|
|
|
jmp post
|
2017-09-06 01:41:13 +00:00
|
|
|
|
2017-09-06 06:55:44 +00:00
|
|
|
: cpx #'/'
|
|
|
|
bne :+
|
2017-09-06 01:41:13 +00:00
|
|
|
jsr FDIV
|
2017-09-07 03:43:12 +00:00
|
|
|
jmp post
|
2017-09-06 01:41:13 +00:00
|
|
|
|
2017-09-06 06:55:44 +00:00
|
|
|
: cpx #'='
|
2017-09-07 03:43:12 +00:00
|
|
|
bne post
|
2017-09-06 01:41:13 +00:00
|
|
|
ldy L0BCA
|
2017-09-07 03:43:12 +00:00
|
|
|
bne post
|
2017-09-06 01:41:13 +00:00
|
|
|
jmp L11F5
|
|
|
|
|
2017-09-07 03:43:12 +00:00
|
|
|
post: ldx #<farg ; after the FP operation is done
|
|
|
|
ldy #>farg
|
2017-09-06 01:41:13 +00:00
|
|
|
jsr ROUND
|
|
|
|
jsr FOUT
|
2017-09-06 06:55:44 +00:00
|
|
|
ldy #0
|
2017-09-07 04:33:22 +00:00
|
|
|
L11CC: lda $0100,y ; stack ?
|
2017-09-06 01:41:13 +00:00
|
|
|
beq L11D4
|
|
|
|
iny
|
|
|
|
bne L11CC
|
2017-09-06 06:55:44 +00:00
|
|
|
L11D4: ldx #text_buffer_size
|
2017-09-07 04:33:22 +00:00
|
|
|
L11D6: lda $FF,y ; stack-1 ?
|
2017-09-06 06:24:21 +00:00
|
|
|
sta text_buffer1,x
|
2017-09-06 06:37:05 +00:00
|
|
|
sta text_buffer2,x
|
2017-09-06 01:41:13 +00:00
|
|
|
dex
|
|
|
|
dey
|
|
|
|
bne L11D6
|
2017-09-06 05:59:02 +00:00
|
|
|
cpx #0
|
2017-09-06 01:41:13 +00:00
|
|
|
bmi L11F2
|
2017-09-07 04:33:22 +00:00
|
|
|
loop: lda #' '
|
2017-09-06 06:24:21 +00:00
|
|
|
sta text_buffer1,x
|
2017-09-06 06:37:05 +00:00
|
|
|
sta text_buffer2,x
|
2017-09-06 01:41:13 +00:00
|
|
|
dex
|
2017-09-07 04:33:22 +00:00
|
|
|
bpl loop
|
2017-09-06 01:41:13 +00:00
|
|
|
L11F2: jsr L12A4
|
|
|
|
L11F5: jsr L127E
|
2017-09-06 06:55:44 +00:00
|
|
|
lda #0
|
2017-09-06 01:41:13 +00:00
|
|
|
sta L0BCB
|
|
|
|
sta L0BC7
|
|
|
|
sta L0BC8
|
|
|
|
sta L0BC9
|
|
|
|
sta L0BCA
|
|
|
|
rts
|
|
|
|
|
2017-09-07 06:43:40 +00:00
|
|
|
.proc depress_button
|
|
|
|
stx invert_addr
|
2017-09-07 04:33:22 +00:00
|
|
|
stx c13_addr
|
2017-09-07 06:43:40 +00:00
|
|
|
stx restore_addr
|
|
|
|
sty invert_addr+1
|
2017-09-07 04:33:22 +00:00
|
|
|
sty c13_addr+1
|
2017-09-07 06:43:40 +00:00
|
|
|
sty restore_addr+1
|
2017-09-06 05:19:45 +00:00
|
|
|
A2D_CALL A2D_SET_PATTERN, black_pattern
|
2017-09-07 06:43:40 +00:00
|
|
|
A2D_CALL $07, L0CA6 ; set mode XOR ?
|
2017-09-06 01:41:13 +00:00
|
|
|
sec
|
|
|
|
ror $FC
|
2017-09-07 06:43:40 +00:00
|
|
|
clear: A2D_CALL A2D_FILL_RECT, 0, invert_addr ; Inverts box
|
2017-09-07 04:33:22 +00:00
|
|
|
check_button:
|
|
|
|
A2D_CALL A2D_GET_BUTTON, button_state_params
|
2017-09-06 06:24:21 +00:00
|
|
|
lda button_state_params::state
|
2017-09-07 04:33:22 +00:00
|
|
|
cmp #$04 ; Button down?
|
|
|
|
bne done ; Nope, done immediately
|
2017-09-07 02:38:06 +00:00
|
|
|
lda #window_id
|
2017-09-06 06:24:21 +00:00
|
|
|
sta button_state_params::state
|
|
|
|
A2D_CALL $46, button_state_params
|
2017-09-08 03:59:38 +00:00
|
|
|
A2D_CALL A2D_SET_TEXT_POS, tpp
|
2017-09-07 04:33:22 +00:00
|
|
|
A2D_CALL $13, 0, c13_addr
|
2017-09-07 06:43:40 +00:00
|
|
|
bne :+
|
2017-09-06 01:41:13 +00:00
|
|
|
lda $FC
|
2017-09-07 04:33:22 +00:00
|
|
|
beq check_button
|
2017-09-06 01:41:13 +00:00
|
|
|
lda #$00
|
|
|
|
sta $FC
|
2017-09-07 04:33:22 +00:00
|
|
|
beq clear
|
2017-09-07 06:43:40 +00:00
|
|
|
: lda $FC
|
2017-09-07 04:33:22 +00:00
|
|
|
bne check_button
|
2017-09-06 01:41:13 +00:00
|
|
|
sec
|
|
|
|
ror $FC
|
2017-09-07 04:33:22 +00:00
|
|
|
jmp clear
|
2017-09-06 01:41:13 +00:00
|
|
|
|
2017-09-07 06:43:40 +00:00
|
|
|
done: lda $FC ; high bit set if button down
|
|
|
|
beq :+
|
|
|
|
A2D_CALL A2D_FILL_RECT, 0, restore_addr ; Inverts back to normal
|
|
|
|
: A2D_CALL $07, L0CA3 ; Normal draw mode??
|
2017-09-06 01:41:13 +00:00
|
|
|
lda $FC
|
|
|
|
rts
|
2017-09-07 04:33:22 +00:00
|
|
|
.endproc
|
2017-09-06 01:41:13 +00:00
|
|
|
|
2017-09-06 06:55:44 +00:00
|
|
|
L127E: ldy #text_buffer_size
|
|
|
|
L1280: lda #' '
|
2017-09-06 06:24:21 +00:00
|
|
|
sta text_buffer1-1,y
|
2017-09-06 01:41:13 +00:00
|
|
|
dey
|
|
|
|
bne L1280
|
|
|
|
lda #$30
|
2017-09-06 07:00:46 +00:00
|
|
|
sta text_buffer1 + text_buffer_size
|
2017-09-06 01:41:13 +00:00
|
|
|
rts
|
|
|
|
|
2017-09-06 06:55:44 +00:00
|
|
|
L128E: ldy #text_buffer_size
|
|
|
|
L1290: lda #' '
|
2017-09-06 06:37:05 +00:00
|
|
|
sta text_buffer2-1,y
|
2017-09-06 01:41:13 +00:00
|
|
|
dey
|
|
|
|
bne L1290
|
2017-09-06 07:00:46 +00:00
|
|
|
lda #'0'
|
|
|
|
sta text_buffer2 + text_buffer_size
|
2017-09-06 01:41:13 +00:00
|
|
|
rts
|
|
|
|
|
|
|
|
L129E: jsr L127E
|
|
|
|
jsr L128E
|
|
|
|
L12A4: ldx #$07
|
|
|
|
ldy #$0C
|
|
|
|
jsr L12C0
|
2017-09-06 06:24:21 +00:00
|
|
|
A2D_CALL A2D_DRAW_TEXT, draw_text_params1
|
2017-09-06 01:41:13 +00:00
|
|
|
rts
|
|
|
|
|
|
|
|
L12B2: ldx #$1A
|
|
|
|
ldy #$0C
|
|
|
|
jsr L12C0
|
2017-09-06 06:37:05 +00:00
|
|
|
A2D_CALL A2D_DRAW_TEXT, draw_text_params2
|
2017-09-06 01:41:13 +00:00
|
|
|
rts
|
|
|
|
|
|
|
|
L12C0: stx L0C40
|
|
|
|
sty L0C41
|
2017-09-06 02:08:11 +00:00
|
|
|
A2D_CALL $18, L0C40
|
2017-09-06 01:41:13 +00:00
|
|
|
lda #$69
|
|
|
|
sec
|
|
|
|
sbc L0C43
|
2017-09-06 05:59:02 +00:00
|
|
|
sta text_pos_params3::left
|
|
|
|
A2D_CALL A2D_SET_TEXT_POS, text_pos_params2
|
2017-09-06 06:37:05 +00:00
|
|
|
A2D_CALL A2D_DRAW_TEXT, spaces_string
|
2017-09-06 05:59:02 +00:00
|
|
|
A2D_CALL A2D_SET_TEXT_POS, text_pos_params3
|
2017-09-06 01:41:13 +00:00
|
|
|
rts
|
|
|
|
|
2017-09-07 06:43:40 +00:00
|
|
|
.proc draw_window
|
|
|
|
;; Frame
|
|
|
|
A2D_CALL A2D_HIDE_CURSOR
|
2017-09-06 05:19:45 +00:00
|
|
|
A2D_CALL A2D_SET_PATTERN, background_pattern
|
2017-09-07 06:43:40 +00:00
|
|
|
A2D_CALL A2D_FILL_RECT, background_box_params
|
2017-09-06 05:19:45 +00:00
|
|
|
A2D_CALL A2D_SET_PATTERN, black_pattern
|
2017-09-07 06:43:40 +00:00
|
|
|
A2D_CALL A2D_DRAW_RECT, frame_display_params
|
2017-09-06 05:19:45 +00:00
|
|
|
A2D_CALL A2D_SET_PATTERN, white_pattern
|
2017-09-07 06:43:40 +00:00
|
|
|
A2D_CALL A2D_FILL_RECT, clear_display_params
|
|
|
|
A2D_CALL $0C, L0BEF ; ???
|
|
|
|
|
|
|
|
;; Buttons
|
|
|
|
ptr := $FA
|
2017-09-08 04:42:58 +00:00
|
|
|
|
|
|
|
lda #<btn_c
|
2017-09-07 06:43:40 +00:00
|
|
|
sta ptr
|
2017-09-08 04:42:58 +00:00
|
|
|
lda #>btn_c
|
2017-09-07 06:43:40 +00:00
|
|
|
sta ptr+1
|
|
|
|
loop: ldy #0
|
|
|
|
lda (ptr),y
|
2017-09-08 04:42:58 +00:00
|
|
|
beq draw_title_bar ; done!
|
2017-09-07 06:43:40 +00:00
|
|
|
lda ptr
|
|
|
|
sta c14_addr
|
|
|
|
ldy ptr+1
|
|
|
|
sty c14_addr+1
|
2017-09-06 01:41:13 +00:00
|
|
|
clc
|
2017-09-08 04:47:27 +00:00
|
|
|
adc #(btn_c::label - btn_c + 1)
|
2017-09-07 06:43:40 +00:00
|
|
|
sta text_addr
|
|
|
|
bcc :+
|
2017-09-06 01:41:13 +00:00
|
|
|
iny
|
2017-09-07 06:43:40 +00:00
|
|
|
: sty text_addr+1
|
2017-09-06 01:41:13 +00:00
|
|
|
ldy #$10
|
2017-09-08 04:42:58 +00:00
|
|
|
lda (ptr),y
|
2017-09-06 06:37:05 +00:00
|
|
|
sta label
|
2017-09-07 06:43:40 +00:00
|
|
|
A2D_CALL $14, 0, c14_addr ; draw shadowed rect
|
|
|
|
A2D_CALL A2D_SET_TEXT_POS, 0, text_addr ; button label pos
|
|
|
|
A2D_CALL A2D_DRAW_TEXT, draw_text_params_label ; button label text
|
2017-09-08 04:42:58 +00:00
|
|
|
lda ptr
|
2017-09-06 01:41:13 +00:00
|
|
|
clc
|
2017-09-08 04:42:58 +00:00
|
|
|
adc #.sizeof(btn_c)
|
|
|
|
sta ptr
|
2017-09-07 06:43:40 +00:00
|
|
|
bcc loop
|
2017-09-08 04:42:58 +00:00
|
|
|
inc ptr+1
|
2017-09-07 06:43:40 +00:00
|
|
|
jmp loop
|
|
|
|
.endproc
|
2017-09-06 01:41:13 +00:00
|
|
|
|
2017-09-08 04:42:58 +00:00
|
|
|
draw_title_bar:
|
|
|
|
ldx L0CBC
|
2017-09-06 01:41:13 +00:00
|
|
|
lda L0CBB
|
|
|
|
clc
|
|
|
|
adc #$73
|
|
|
|
sta L0C58
|
2017-09-08 04:42:58 +00:00
|
|
|
bcc :+
|
2017-09-06 01:41:13 +00:00
|
|
|
inx
|
2017-09-08 04:42:58 +00:00
|
|
|
: stx L0C59
|
2017-09-06 01:41:13 +00:00
|
|
|
ldx L0CBE
|
|
|
|
lda L0CBD
|
|
|
|
sec
|
|
|
|
sbc #$16
|
|
|
|
sta L0C5A
|
2017-09-08 04:42:58 +00:00
|
|
|
bcs :+
|
2017-09-06 01:41:13 +00:00
|
|
|
dex
|
2017-09-08 04:42:58 +00:00
|
|
|
: stx L0C5B
|
2017-09-06 02:08:11 +00:00
|
|
|
A2D_CALL A2D_TEXT_BOX2, L0C93
|
2017-09-07 06:43:40 +00:00
|
|
|
A2D_CALL $14, L0C58 ; Draws decoration in title bar
|
2017-09-07 02:38:06 +00:00
|
|
|
lda #window_id
|
2017-09-06 01:41:13 +00:00
|
|
|
sta L08D1
|
2017-09-06 02:08:11 +00:00
|
|
|
A2D_CALL $3C, L08D1
|
|
|
|
A2D_CALL A2D_TEXT_BOX1, L0C6E
|
2017-09-07 06:43:40 +00:00
|
|
|
A2D_CALL A2D_SHOW_CURSOR
|
2017-09-06 01:41:13 +00:00
|
|
|
jsr L12B2
|
|
|
|
rts
|
|
|
|
|
|
|
|
jsr L129E
|
2017-09-06 02:08:11 +00:00
|
|
|
A2D_CALL A2D_SET_TEXT_POS, L0C4E
|
2017-09-06 06:37:05 +00:00
|
|
|
A2D_CALL A2D_DRAW_TEXT, error_string
|
2017-09-06 01:41:13 +00:00
|
|
|
jsr L11F5
|
|
|
|
lda #$3D
|
|
|
|
sta L0BC6
|
|
|
|
ldx L0BC4
|
|
|
|
txs
|
|
|
|
L13CB := * + 2
|
|
|
|
jmp L0DC9
|
|
|
|
|
|
|
|
L13CC: inc $B8
|
|
|
|
bne L13D2
|
|
|
|
inc $B9
|
|
|
|
L13D2: lda $EA60
|
|
|
|
cmp #$3A
|
|
|
|
bcs L13E3
|
2017-09-06 06:55:44 +00:00
|
|
|
cmp #' '
|
2017-09-06 01:41:13 +00:00
|
|
|
beq L13CC
|
|
|
|
sec
|
2017-09-06 06:55:44 +00:00
|
|
|
sbc #'0'
|
2017-09-06 01:41:13 +00:00
|
|
|
sec
|
|
|
|
sbc #$D0
|
|
|
|
L13E3: rts
|
2017-09-06 05:19:45 +00:00
|
|
|
|
|
|
|
da_end := *
|