UrForth: redesigned compilation words to look nicer, and being easier to use
[urasm.git] / samples / pt3player / main.zas
blob26fc6c32924ef751a81847a05cc523bfdb1df2b7
1   org  32768
2   ent  32768
4 mainEntry:
5   ei
6   include <open-main-screen.zas>
8   xor  a
9   ld   hl,#5800
10   ld   de,#5801
11   ld   bc,#2FF
12   halt
13   out  (#FE),a
14   ld   (hl),a
15   ldir
16   ld   hl,#4000
17   ld   de,#4001
18   ld   bc,6144
19   ld   (hl),a
20   ldir
21   ld   (hl),017
22   ld   bc,4
23   ldir
25   di
26   ld   hl,pt3mod
27   call PT3Time.GetTimeHL
28   ;ld   hl,(PT3Time.PT3TIME)  ; 1/50 sec (intr)
29   ei
30   inc  hl
31   ld   (time),hl
32   call PrintTime
34   call PT3Player.SetLoopOff
35   ld   hl,pt3mod
36   call PT3Player.InitHL
38 .playloop:
39   halt
40   ld   a,1
41   out  (#fe),a
43   call PT3Player.PlayOneRow
45  DUP 0
46   ; keyboard check
47   xor  a
48   in   a,(#FE)
49   cpl
50   and  #0F
51   jr   nz,.done
52  EDUP
53   ld   hl,(time)
54   dec  hl
55   ld   (time),hl
56   call PrintTime
58   call 8020
59   jr   nc,.done
61   ld   a,(xdot)
62   inc  a
63   cp   50
64   jr   c,.diok
65   xor  a
66 .diok:
67   ld   (xdot),a
69   xor  a
70   out  (#fe),a
72   call PT3Player.IsLoopPassed
73   jr   z,.playloop
75 .done:
76   call PT3Player.ResetLoopPassed
77   call PT3Player.Mute
78   jp   0
79   ret
81 min: db 0
82 sec: db 0
83 time: dw 0
86 PrintTime:
87   ld   de,(time)
88   ld   hl,0
89   ld   bc,50
90   call UDiv3216_16
91   ld   hl,0
92   ld   bc,60
93   call UDiv3216_16
94   ; e: minutes
95   ; l: seconds
96   push hl
97   ld   hl,#4000  ; starting position
98   call Print2Dig
99   ld   a,(xdot)
100   cp   25
101   ld   a,':'
102   jr   c,.keepsc
103   ld   a,' '
104 .keepsc:
105   call PrintChar
106   inc  l
107   pop  de
108   call Print2Dig
109   ret
110 xdot  db 0
112 ;; IN: E -- digit
113 Print2Dig:
114   ld   c,-10
115   call .printdig
116   ld   a,'0'
117   add  a,e
118   call PrintChar
119   inc  l
120   ret
122 .printdig:
123   ld   b,'0'-1
124   ld   a,e
125 .loop:
126   add  a,c
127   inc  b
128   jr   c,.loop
129   sbc  a,c
130   ld   e,a
131   ld   a,b
132   call PrintChar
133   inc  l
134   ret
136 ; hl: addr; a: char
137 PrintChar:
138   push de,bc,hl
139   ld   l,a
140   ld   h,0
141   add  hl,hl
142   add  hl,hl
143   add  hl,hl
144   ld   de,#3c00
145   add  hl,de
146   pop  de
147   push de
148   ;ld   de,#4000+2048*2+7*32+31
149   ld   b,8
150 .lineloop:
151   ld   a,(hl)
152   rla
153   or   (hl)
154   ld   (de),a
155   inc  hl
156   inc  d
157   djnz .lineloop
158   ;
159 dup 0
160   pop  hl
161   push hl
162   inc  h
163   inc  h
164   ld   a,(hl)
165   and  #e0
166   ld   (hl),a
167 edup
168   ;
169   pop  hl,bc,de
170   ret
172 pt3mod:
173   ;incbin  "mod0.pt3"
174   ;incbin  "Xenophobe - Introduction.pt3"
175   ;incbin  "Xenophobe - Kill The Creatures.pt3"
176   incbin  "pt3/slavyanka.pt3"
178   include <muldiv_slow.zas>
179   include <printdechl.zas>
180   include "pt3plr.zas"
181   include "pt3time.zas"