17 jp z, loop ; 10 17 (27 worst)
28 pop hl ; src 10 ld hl, ($1002)
29 pop de ; dst 10 ld de, ($1004)
30 pop bc ; len 10 ld bc, ($1006)
35 ld ($1000), a ; 13 (17)
55 ld b, jtable_end ; ensure < $100
59 ldir ; 21/16 ((de) <- (hl)) bc times
73 jp nz,loop_read ; 10 38
76 ld a, ($7f08) ; vcnt 13
77 ld de, ($1004) ; dst 20
83 exx ; 4 (waste cycles)
85 1 djnz 1b ; 13 13*3+8=47
93 jp t_idle_loop ; 10 (66+34)
95 ; helper for tests 5 and 6
100 macro save_hvcount_unstable dst
102 ld bc, ($7f08) ; hvc 20
103 ld hl, ($7f08) ; hvc 16
106 and a, $c0 ; 7 hcnt bad sample?
107 jp nz,0b ; 10 (61 loop)
109 xor a, l ; 4 vcnt changed while sampling?
110 jp nz,0b ; 10 (79 loop)
111 ld (dst), hl ; 20 (99)
113 macro save_hvcount dst
114 ld hl, $7f08 ; vcnt 10
123 ld hl, $4000 ; addr 10
124 ld bc, $4001 ; data 14
128 ld_a (bc), $3a ; 14 enable timer+flag,clear
134 ld (bc), a ; 7 stop (timer tick in (16*72*2)*7/15)
135 ld a, ($7f08) ; vcnt 13
137 save_hvcount $1102 ; 99+
144 call t_timer_prepare ; 17++
152 ld_a (bc), $35 ; 14 enable timer+flag,clear
153 nop ; 4 flag clear delay
158 save_hvcount $1100 ; 99+
163 ld sp, $2000 ; 10 copy-pasta from t_timer_a because I'm lazy
164 call t_timer_prepare ; 17++
168 ld (hl), $26 ; 10 dup for timing
171 ld_a (bc), $3a ; 14 enable timer+flag,clear
172 nop ; 4 flag clear delay
177 save_hvcount $1100 ; 99+