Subversion Repositories NedoOS

Rev

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