2018-01-17 00:52:31 +00:00
|
|
|
rel
|
|
|
|
typ $B3
|
|
|
|
dsk main.l
|
2018-01-15 15:58:58 +00:00
|
|
|
|
2018-02-09 03:22:16 +00:00
|
|
|
SPEAKER equ $00C030
|
|
|
|
PRODOS16 equ $E100A8
|
|
|
|
|
2018-01-29 00:57:31 +00:00
|
|
|
; ensure 16-bit mode (unnecessary?)
|
2018-01-18 22:01:26 +00:00
|
|
|
clc
|
|
|
|
xce
|
2018-02-05 02:25:37 +00:00
|
|
|
rep #$30
|
2018-01-18 22:01:26 +00:00
|
|
|
|
2018-01-17 00:52:31 +00:00
|
|
|
phk
|
|
|
|
plb
|
2018-01-15 15:58:58 +00:00
|
|
|
|
2018-01-28 03:41:56 +00:00
|
|
|
; half bank for accumulator, you don't want to toggle them on then back off, right?
|
|
|
|
sep #$30
|
2018-01-18 22:01:26 +00:00
|
|
|
|
2018-01-27 02:25:23 +00:00
|
|
|
; toggle the softswitches; they don't take any values. some are only triggered
|
|
|
|
; by writes, $C054 can be triggered by a read
|
2018-01-28 03:41:56 +00:00
|
|
|
stal $00C000 ; disable 80 column store?
|
2018-01-18 22:01:26 +00:00
|
|
|
|
2018-01-28 03:41:56 +00:00
|
|
|
stal $00C00C ; disable 80 column hardware?!
|
|
|
|
stal $00C050 ; set standard apple ii gfx mode
|
|
|
|
stal $00C051 ; select text mode only. "only"?
|
|
|
|
ldal $00C054 ; select text page 1 (there are 2)
|
|
|
|
ldal $00C056 ; select "low res" graphics
|
2018-01-29 04:13:32 +00:00
|
|
|
|
2018-02-05 02:25:37 +00:00
|
|
|
rep #$30
|
|
|
|
sep #$20
|
2018-01-17 06:07:57 +00:00
|
|
|
|
2018-01-29 00:57:31 +00:00
|
|
|
; show the current char on screen
|
2018-02-01 04:47:06 +00:00
|
|
|
; read keyboard then hit strobe to reset
|
2018-01-29 04:13:32 +00:00
|
|
|
ldx #0
|
2018-02-08 04:30:43 +00:00
|
|
|
ldy #0
|
2018-02-01 04:47:06 +00:00
|
|
|
ldal $00C010
|
2018-01-29 00:57:31 +00:00
|
|
|
|
2018-02-08 04:30:43 +00:00
|
|
|
; core key event loop
|
|
|
|
|
2018-02-07 01:04:16 +00:00
|
|
|
:kloop clc
|
2018-02-04 22:00:31 +00:00
|
|
|
ldal $00C000
|
2018-02-08 04:30:43 +00:00
|
|
|
bit #%1 ; check strobe bit to make sure a key was pressed
|
2018-02-07 01:04:16 +00:00
|
|
|
bmi :kjump
|
|
|
|
jmp :kloop
|
|
|
|
:kjump jsr keydown
|
2018-02-08 04:30:43 +00:00
|
|
|
jsr drawpos
|
2018-02-07 01:04:16 +00:00
|
|
|
jmp :kloop
|
2018-02-04 22:00:31 +00:00
|
|
|
|
2018-02-08 04:30:43 +00:00
|
|
|
keydown cmp #$8B ; up
|
2018-02-05 00:21:35 +00:00
|
|
|
beq up
|
|
|
|
cmp #$8A ; down
|
|
|
|
beq down
|
|
|
|
cmp #$88 ; left
|
|
|
|
beq left
|
|
|
|
cmp #$95 ; right
|
2018-02-09 03:22:16 +00:00
|
|
|
beq right
|
2018-02-07 01:04:16 +00:00
|
|
|
cmp #$FF ; backspace
|
|
|
|
beq backspace
|
|
|
|
cmp #$8D ; return
|
2018-02-08 05:32:04 +00:00
|
|
|
beq return
|
2018-02-08 04:30:43 +00:00
|
|
|
jsr drawchar
|
2018-02-08 05:15:46 +00:00
|
|
|
jmp colinc
|
2018-02-08 04:30:43 +00:00
|
|
|
finkey ldal $00C010 ; clear strobe bit
|
|
|
|
lda #0
|
|
|
|
rts
|
2018-02-05 00:21:35 +00:00
|
|
|
|
2018-02-08 04:30:43 +00:00
|
|
|
up cpy #0
|
2018-02-09 03:22:16 +00:00
|
|
|
beq ping
|
2018-02-08 04:30:43 +00:00
|
|
|
dey
|
|
|
|
jmp finkey
|
|
|
|
down cpy #22
|
2018-02-09 03:22:16 +00:00
|
|
|
beq ping
|
2018-02-08 04:30:43 +00:00
|
|
|
iny
|
|
|
|
jmp finkey
|
|
|
|
left cpx #0
|
2018-02-09 03:22:16 +00:00
|
|
|
beq ping
|
2018-02-08 04:30:43 +00:00
|
|
|
dex
|
|
|
|
jmp finkey
|
2018-02-09 03:22:16 +00:00
|
|
|
right cpx #39
|
|
|
|
beq ping
|
|
|
|
jmp *+2
|
2018-02-08 05:15:46 +00:00
|
|
|
colinc cpx #39
|
|
|
|
beq :rolcol
|
2018-02-05 01:06:37 +00:00
|
|
|
inx
|
2018-02-08 04:30:43 +00:00
|
|
|
jmp finkey
|
2018-02-08 05:15:46 +00:00
|
|
|
:rolcol ldx #0
|
|
|
|
jmp down
|
2018-02-08 05:32:04 +00:00
|
|
|
return ldx #0
|
|
|
|
jmp down
|
2018-02-08 04:30:43 +00:00
|
|
|
backspace lda #$A0
|
2018-02-09 03:22:16 +00:00
|
|
|
cpx #0
|
|
|
|
beq :contbs
|
|
|
|
dex
|
|
|
|
:contbs jsr drawchar
|
|
|
|
jmp finkey
|
|
|
|
|
|
|
|
|
|
|
|
ping pha
|
|
|
|
ldal SPEAKER
|
|
|
|
pla
|
|
|
|
jmp finkey
|
2018-02-08 04:30:43 +00:00
|
|
|
|
|
|
|
drawpos pha
|
|
|
|
phx
|
|
|
|
; draw the parens and comma
|
|
|
|
lda #"("
|
|
|
|
stal $0007F1
|
|
|
|
lda #$AC
|
|
|
|
stal $0007F4
|
|
|
|
lda #")"
|
|
|
|
stal $0007F7
|
|
|
|
txa
|
|
|
|
jsr tencount
|
|
|
|
adc #$B0
|
|
|
|
stal $0007F3
|
|
|
|
txa
|
|
|
|
adc #$B0
|
|
|
|
stal $0007F2
|
|
|
|
tya
|
|
|
|
jsr tencount
|
|
|
|
adc #$B0
|
|
|
|
stal $0007F6
|
|
|
|
txa
|
|
|
|
adc #$B0
|
|
|
|
stal $0007F5
|
|
|
|
; restore x and original keydown char
|
|
|
|
plx
|
|
|
|
pla
|
|
|
|
rts
|
2018-02-05 00:21:35 +00:00
|
|
|
|
2018-02-08 05:32:04 +00:00
|
|
|
drawchar cpy #0
|
|
|
|
beq :row0
|
|
|
|
cpy #1
|
|
|
|
beq :row1
|
|
|
|
cpy #2
|
|
|
|
beq :row2
|
|
|
|
cpy #3
|
|
|
|
beq :row3
|
|
|
|
cpy #4
|
|
|
|
beq :row4
|
|
|
|
cpy #5
|
|
|
|
beq :row5
|
|
|
|
cpy #6
|
|
|
|
beq :row6
|
|
|
|
cpy #7
|
|
|
|
beq :row7
|
|
|
|
cpy #8
|
|
|
|
beq :row8
|
|
|
|
cpy #9
|
|
|
|
beq :row9
|
|
|
|
cpy #10
|
|
|
|
beq :row10
|
|
|
|
cpy #11
|
|
|
|
beq :row11
|
|
|
|
cpy #12
|
|
|
|
beq :row12
|
|
|
|
cpy #13
|
|
|
|
beq :row13
|
|
|
|
cpy #14
|
|
|
|
beq :row14
|
|
|
|
cpy #15
|
|
|
|
beq :row15
|
|
|
|
cpy #16
|
|
|
|
beq :row16
|
|
|
|
cpy #17
|
|
|
|
beq :row17
|
|
|
|
cpy #18
|
|
|
|
beq :row18
|
|
|
|
cpy #19
|
|
|
|
beq :row19
|
|
|
|
cpy #20
|
|
|
|
beq :row20
|
|
|
|
cpy #21
|
|
|
|
beq :row21
|
|
|
|
cpy #22
|
|
|
|
beq :row22
|
|
|
|
rts
|
|
|
|
:row0 stal $000400,X
|
|
|
|
rts
|
|
|
|
:row1 stal $000480,X
|
|
|
|
rts
|
|
|
|
:row2 stal $000500,X
|
|
|
|
rts
|
|
|
|
:row3 stal $000580,X
|
|
|
|
rts
|
|
|
|
:row4 stal $000600,X
|
|
|
|
rts
|
|
|
|
:row5 stal $000680,X
|
|
|
|
rts
|
|
|
|
:row6 stal $000700,X
|
|
|
|
rts
|
|
|
|
:row7 stal $000780,X
|
|
|
|
rts
|
|
|
|
:row8 stal $000428,X
|
|
|
|
rts
|
|
|
|
:row9 stal $0004A8,X
|
|
|
|
rts
|
|
|
|
:row10 stal $000528,X
|
|
|
|
rts
|
|
|
|
:row11 stal $0005A8,X
|
|
|
|
rts
|
|
|
|
:row12 stal $000628,X
|
|
|
|
rts
|
|
|
|
:row13 stal $0006A8,X
|
|
|
|
rts
|
|
|
|
:row14 stal $000728,X
|
|
|
|
rts
|
|
|
|
:row15 stal $0007A8,X
|
|
|
|
rts
|
|
|
|
:row16 stal $000450,X
|
|
|
|
rts
|
|
|
|
:row17 stal $0004D0,X
|
|
|
|
rts
|
|
|
|
:row18 stal $000550,X
|
|
|
|
rts
|
|
|
|
:row19 stal $0005D0,X
|
|
|
|
rts
|
|
|
|
:row20 stal $000650,X
|
|
|
|
rts
|
|
|
|
:row21 stal $0006D0,X
|
|
|
|
rts
|
|
|
|
:row22 stal $000750,X
|
2018-02-01 04:47:06 +00:00
|
|
|
rts
|
2018-01-30 04:20:16 +00:00
|
|
|
|
2018-02-08 04:30:43 +00:00
|
|
|
tencount ldx #0
|
|
|
|
:substart clc
|
|
|
|
cmp #10
|
|
|
|
bcc :subout
|
|
|
|
sbc #10
|
|
|
|
inx
|
|
|
|
jmp :substart
|
|
|
|
:subout rts
|
|
|
|
|
2018-01-17 00:52:31 +00:00
|
|
|
jsl PRODOS16
|
2018-02-08 05:32:04 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-02-08 05:15:46 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
2018-02-07 01:04:16 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
2018-01-30 04:20:16 +00:00
|
|
|
|