dsforth: added "-1", "-2", "-4" constants
[urasm.git] / libs / delayt.zas
blobc69c9b7c46a51e2472f65b5e8f9258241aec6e0b
1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 ;; Z80 delay routine
3 ;; by Jan Bobrowski, license GPL
4 ;; wait hl T (including call; hl>=141)
5 ;; IN:
6 ;;   HL: number of t-states
7 ;; OUT:
8 ;;   AF,BC,HL: dead
9 delay:
10   ld   bc,-141
11   add  hl,bc
12   ld   bc,-23
13 .loop:
14   add  hl,bc
15   jr   c,.loop
16   ld   a,l
17   add  a,15
18   jr   nc,.g0
19   cp   8
20   jr   c,.g1
21   or   0
22 .g0:
23   inc  hl
24 .g1:
25   rra
26   jr   c,.b0
27   nop
28 .b0:
29   rra
30   jr   nc,.b1
31   or   0
32 .b1:
33   rra
34   ret  nc
35   ret