keen1: more cycle counting

This commit is contained in:
Vince Weaver
2024-05-09 17:12:56 -04:00
parent 16ae738044
commit 4e0fdf6968

View File

@@ -206,10 +206,10 @@ check_keypress:
beq do_up_up ; 2/3 beq do_up_up ; 2/3
; 30 ; 30
cmp #'S' ; 2 cmp #'S' ; 2
beq do_down ; 2/3 beq do_down_s ; 2/3
; 34 ; 34
cmp #$0A ; 2 cmp #$0A ; 2
beq do_down ; 2/3 beq do_down_down ; 2/3
; 38 ; 38
bne done_key41 ; bra ; 3 bne done_key41 ; bra ; 3
@@ -228,16 +228,34 @@ done_key7:
nop nop
nop nop
done_key41: done_key41:
inc $00 inc $00 ; nop5
lda $00 ; nop3
done_key_49:
inc $00 ; nop5
lda $00 ; nop3
done_key_57:
inc $00 ; nop5
inc $00 ; nop5
nop nop
done_key_69:
inc $00 ; nop5
nop
done_key_76:
; 18*8*65= 9360 ; 11623+76 = 11699
; want to delay 9360 - 41 - 7 - 4 = 9308 - 20 = 9288/9 = 1032
; 1032/256= 4 r 8 ; want to delay total of 144+70 lines, 214
; 214*65 = 13910
; -11699
; =========
; 2211
; want to delay 2211 - 4 = 2207 - 20 = 2187/9 = 243
; 243/256= 0 r 243
; ;
lda #4 ; 2 lda #0 ; 2
ldy #8 ; 2 ldy #243 ; 2
jsr delay_loop jsr delay_loop
; want to delay 6*8*65 = 3120+4550 = 7670 ; want to delay 6*8*65 = 3120+4550 = 7670
@@ -255,10 +273,14 @@ done_key41:
jsr delay_loop jsr delay_loop
bit SET_TEXT ; 4 bit SET_TEXT ; 4
done_key: ;done_key:
jmp draw_loop ; 3 jmp draw_loop ; 3
;=================================
; handle up pressed
;=================================
do_up_w: do_up_w:
; 27 ; 27
nop nop
@@ -271,7 +293,7 @@ do_up_up:
; 38 ; 38
lda START_LINE_L ; 3 lda START_LINE_L ; 3
cmp #<story_data ; 2 cmp #<story_data ; 2
beq up_done ; 2/3 beq up_done_46 ; 2/3
bne up_ok_ok ; bra ; 3 bne up_ok_ok ; bra ; 3
; 48 ; 48
@@ -285,58 +307,83 @@ up_ok:
up_ok_ok: up_ok_ok:
sec ; 2 sec ; 2
lda START_LINE_L ; 3 lda START_LINE_L ; 3
beq to_prev_page beq to_prev_page ; 2/3
sbc #40 ; 55
jmp up_done ldy $0 ; nop3 ; 3
sbc #40 ; 2
jmp up_done ; 3
; 63
to_prev_page: to_prev_page:
dec START_LINE_H ; 56
lda #200 dec START_LINE_H ; 5
lda #200 ; 2
up_done: up_done:
; 63 / 63
sta START_LINE_L ; 3 sta START_LINE_L ; 3
jmp done_key_69 ; 3
; 61 up_done_46:
jmp done_key_49 ; 3
;=================================
; handle down pressed
;=================================
; 46 do_down_s:
jmp done_key ; 35
nop
nop
do_down: do_down_down:
; 39
lda START_LINE_H ; 3 lda START_LINE_H ; 3
cmp #>story_end ; 2 cmp #>story_end ; 2
bne down_ok ; 2/3 bne down_ok ; 2/3
; 46
lda START_LINE_L ; 3 lda START_LINE_L ; 3
cmp #<story_end ; 2 cmp #<story_end ; 2
beq done_key ; 2/3 beq down_done ; 2/3
; 53
bne down_ok_ok ; bra ; 3
; 47
down_ok: down_ok:
lda $0 ; nop5
nop ; nop2
nop ; nop2
down_ok_ok:
; 56
; increment input row ; increment input row
; we don't want to cross a page so if we are ; we don't want to cross a page so if we are
; 200 then skip to next page ; 200 then skip to next page
; -1
lda START_LINE_L ; 3 lda START_LINE_L ; 3
cmp #200 ; 2 cmp #200 ; 2
beq to_next_page ; 2/3 beq to_next_page ; 2/3
; 6 ; 63
ldy $0 ; nop3 ; 3 ldy $0 ; nop3 ; 3
clc ; 2 clc ; 2
adc #40 ; 2 adc #40 ; 2
bne down_done ; bra ; 3 bne down_done ; bra ; 3
; 16 ; 73
to_next_page: to_next_page:
; 7 ; 64
inc START_LINE_H ; 5 inc START_LINE_H ; 5
lda #0 ; 2 lda #0 ; 2
nop nop ; 2
; 16
; 73 / 73
down_done: down_done:
sta START_LINE_L ; 3 sta START_LINE_L ; 3
jmp draw_loop ; 3 jmp done_key_76 ; 3
early_down_done:
; 54
jmp done_key_57 ; 3
real_done_with_story: real_done_with_story: