Rev 583 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log
Rev 583 | Rev 660 | ||
---|---|---|---|
Line 120... | Line 120... | ||
120 | 120 | ||
121 | ;oldtimer |
121 | ;oldtimer |
122 | ; dw 0 |
122 | ; dw 0 |
123 | quiter |
123 | quiter |
124 | halt |
124 | halt |
- | 125 | pgmuznum=$+1 |
|
125 | ld a,(pgmuznum) |
126 | ld a,0 |
126 | SETPG32KHIGH |
127 | SETPG32KHIGH |
127 | ;ld a,(pgmuznum) |
128 | ;ld a,(pgmuznum) |
128 | ld hl,muz |
129 | ld hl,muz |
129 | OS_SETMUSIC |
130 | OS_SETMUSIC |
130 | ;call muz ;shutay |
131 | ;call muz ;shutay |
Line 133... | Line 134... | ||
133 | QUIT ;rasmer |
134 | QUIT ;rasmer |
134 | 135 | ||
135 | 136 | ||
136 | swapimer |
137 | swapimer |
137 | di |
138 | di |
138 | ld hl,(0x0038+3) ;адрес intjp |
- | |
139 | ld (intjpaddr),hl |
- | |
140 | ld de,0x0038 |
139 | ld de,0x0038 |
141 | ld hl,oldimer |
140 | ld hl,oldimer |
142 | ld bc,3 |
141 | ld bc,3 |
143 | swapimer0 |
142 | swapimer0 |
144 | ld a,(de) |
143 | ld a,(de) |
Line 149... | Line 148... | ||
149 | jp pe,swapimer0 |
148 | jp pe,swapimer0 |
150 | ei |
149 | ei |
151 | ret |
150 | ret |
152 | oldimer |
151 | oldimer |
153 | jp on_int ;заменится на код из 0x0038 |
152 | jp on_int ;заменится на код из 0x0038 |
- | 153 | jp 0x0038+3 |
|
154 | 154 | ||
155 | on_int |
155 | on_int |
156 | ;restore stack with de |
156 | ;restore stack with de |
157 | ld (on_int_hl),hl |
157 | ld (on_int_hl),hl |
158 | ld (on_int_sp),sp |
158 | ld (on_int_sp),sp |
159 | pop hl |
159 | pop hl |
160 | ld (on_int_sp2),sp |
160 | ld (on_int_sp2),sp |
161 | intjpaddr=$+1 |
- | |
162 | ld (0),hl ;ok ;(on_int_jp),hl |
161 | ld (on_int_jp),hl |
163 | - | ||
164 | ld sp,INTSTACK |
162 | ld sp,INTSTACK |
165 | - | ||
166 | push af |
163 | push af |
167 | push bc |
164 | push bc |
168 | push de |
165 | push de |
169 | 166 | ||
170 | ;imer_curscreen_value=$+1 |
167 | ;imer_curscreen_value=$+1 |
Line 188... | Line 185... | ||
188 | ;ld e,a |
185 | ;ld e,a |
189 | ;OS_SETSCREEN ;вызываем здесь, а не в рандомном месте, иначе даже с одной задачей можем получить непредсказуемую задержку, которую не фиксирует наш таймер? с несколькими задачами надо учитывать и системный - TODO |
186 | ;OS_SETSCREEN ;вызываем здесь, а не в рандомном месте, иначе даже с одной задачей можем получить непредсказуемую задержку, которую не фиксирует наш таймер? с несколькими задачами надо учитывать и системный - TODO |
190 | ;curpalette=$+1 |
187 | ;curpalette=$+1 |
191 | ;ld de,wolfpal |
188 | ;ld de,wolfpal |
192 | ;OS_SETPAL |
189 | ;OS_SETPAL |
- | 190 | |
|
- | 191 | call oldimer ;ei |
|
- | 192 | |
|
193 | GET_KEY |
193 | GET_KEY |
194 | ld (curkey),a |
194 | ld (curkey),a |
195 | 195 | ||
196 | ld a,(CURPG32KHIGH) ;ok |
- | |
197 | push af |
- | |
198 | pgmuznum=$+1 |
- | |
199 | ld a,0 |
- | |
200 | SETPG32KHIGH |
- | |
201 | ;call muzplay |
- | |
202 | ;pgc000=$+1 |
- | |
203 | pop af |
- | |
204 | SETPG32KHIGH |
- | |
205 | |
- | |
206 | pop hl |
196 | pop hl |
207 | pop de |
197 | pop de |
208 | pop bc |
198 | pop bc |
209 | pop af |
199 | pop af |
210 | exx |
200 | exx |
Line 217... | Line 207... | ||
217 | ;ld (timer),hl |
207 | ;ld (timer),hl |
218 | 208 | ||
219 | pop de |
209 | pop de |
220 | pop bc |
210 | pop bc |
221 | pop af |
211 | pop af |
222 | - | ||
223 | on_int_hl=$+1 |
212 | on_int_hl=$+1 |
224 | ld hl,0 |
213 | ld hl,0 |
225 | on_int_sp2=$+1 |
214 | on_int_sp2=$+1 |
226 | ld sp,0 |
215 | ld sp,0 |
227 | ; ei |
216 | ;ei |
228 | ;on_int_jp=$+1 |
217 | on_int_jp=$+1 |
229 | ; jp 0 |
218 | jp 0 |
230 | - | ||
231 | push de |
- | |
232 | ex de,hl |
- | |
233 | ;(intjp)=адрес выхода |
- | |
234 | ;de="hl", в стеке "de" |
- | |
235 | jp 0x0038+5 |
- | |
236 | - | ||
237 | ;вход в стандартный обработчик: |
- | |
238 | ;ex de,hl ;de="hl", hl="de" |
- | |
239 | ;ex (sp),hl ;hl=адрес выхода, de="hl", в стеке "de" |
- | |
240 | ;ld (intjp),hl ;TODO писать не прямо в intjp, а в промежуточную локацию (иначе хвост обработчика нельзя с ei - он сам не может сменить режим обработки прерывания после jp) |
- | |
241 | ;(intjp)=адрес выхода |
- | |
242 | ;de="hl", в стеке "de" |
- | |
243 | ;ld l,a |
- | |
244 | ;user_fdvalue6=$+1 |
- | |
245 | ;ld a,fd_system |
- | |
246 | ;out (0xfd),a ;10 b |
- | |
247 | 219 | ||
248 | 220 | ||
249 | if EGA |
221 | if EGA |
250 | 222 | ||
251 | macro RECODEBYTE |
223 | macro RECODEBYTE |