Rev 163 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
105 | savelij | 1 | |
165 | savelij | 2 | ; LAST UPDATE 15.01.2024 savelij |
105 | savelij | 3 | |
112 | savelij | 4 | include macros.a80 |
163 | savelij | 5 | include ports_ngs.a80 |
165 | savelij | 6 | include local_define.a80 |
105 | savelij | 7 | |
163 | savelij | 8 | include local_macros.a80 |
9 | include vers.a80 |
||
105 | savelij | 10 | |
163 | savelij | 11 | include macros_sp.a80 |
12 | include dss.a80 |
||
13 | include bios_sp.a80 |
||
14 | include define_sp.a80 |
||
15 | include ports_sp.a80 |
||
105 | savelij | 16 | |
163 | savelij | 17 | GSCOD EQU 0x8000 ; адрес куда закидывать код на нгс |
105 | savelij | 18 | |
163 | savelij | 19 | ORG ADR_START |
105 | savelij | 20 | START DI |
163 | savelij | 21 | IFDEF _SPRINTER |
22 | CALL CLS |
||
23 | DE_ADR_SCR ((32-(EMESS24-MESS24))/2),15 |
||
24 | LD HL,MESS24 |
||
25 | CALL PRINT |
||
26 | DE_ADR_SCR 4,9 |
||
27 | LD HL,MESS28 |
||
28 | CALL PRINT |
||
29 | XOR A |
||
30 | CALL DETECT_ISA |
||
31 | CALL CHECK_ISA |
||
32 | JR NC,.L1 |
||
33 | CALL CLOSE_ISA |
||
34 | LD A,1 |
||
35 | CALL DETECT_ISA |
||
36 | JR NC,.L1 |
||
37 | DE_ADR_SCR 8,8 |
||
38 | LD HL,NOT_FOUND_ISA |
||
39 | CALL PRINT |
||
40 | JP NO_ISA |
||
41 | ELSE |
||
42 | LD HL,0x0110 |
||
43 | LD (0x5C09),HL ; установка переменной клавиатуры |
||
44 | RES 3,(IY+48) |
||
45 | RES 5,(IY+1) |
||
46 | ENDIF |
||
47 | .L1 LD (OLD_STACK),SP ; сохранение стека |
||
105 | savelij | 48 | LD SP,0 |
142 | savelij | 49 | OLD_STACK EQU $-2 |
105 | savelij | 50 | |
163 | savelij | 51 | ; удержание при запуске CS = Turbo off |
52 | ; LD A,0xFE |
||
53 | ; IN A,(0xFE) |
||
54 | ; RRA |
||
55 | ; LD A,0 |
||
56 | ; JR C,$+4 |
||
57 | ; LD A,0x10 |
||
58 | ; LD BC,0xEFF7 |
||
59 | ; OUT (C),A |
||
105 | savelij | 60 | |
163 | savelij | 61 | ; удержание при запуске SS = reset NeoGS |
62 | IFDEF _SPRINTER |
||
63 | ; TODO добавить получение ключей из командной строки доса |
||
64 | ELSE |
||
65 | LD A,0x7F |
||
66 | IN A,(0xFE) |
||
105 | savelij | 67 | RRA |
68 | RRA |
||
69 | JR NC,LOOP21 |
||
163 | savelij | 70 | ENDIF |
105 | savelij | 71 | |
163 | savelij | 72 | ; тест наличия GS/NeoGS |
73 | LD B,0x30 ; для определения наличия нгс используется |
||
74 | ; команда 0x1D с параметром =0 |
||
75 | OUT_GSDAT 0 ; ждем ответа 0x30 прерываний |
||
76 | OUT_GSCOM 0x1D |
||
105 | savelij | 77 | LOOP22 EI |
78 | HALT |
||
79 | DI |
||
80 | DEC B |
||
163 | savelij | 81 | JR Z,LOOP21 ; счетчик обнулился, а может нгс висит? |
82 | IN_GSCOM ; ждем сброса команд бита |
||
105 | savelij | 83 | RRA |
84 | JR C,LOOP22 |
||
163 | savelij | 85 | IN_GSDAT ; команд бит сбросился, читаем ответ из дата порта |
86 | ; попытка получить флаговый байт с нгс |
||
87 | OUT_GSDAT 0 ; при первом запуске команда 0xFF еще не пропатчена |
||
88 | LD B,0x30 ; ждем ответа 0x30 прерываний |
||
89 | OUT_GSCOM 0xFF |
||
105 | savelij | 90 | LOOP001 EI |
91 | HALT |
||
92 | DI |
||
93 | DEC B |
||
163 | savelij | 94 | JR Z,LOOP21 ; счетчик обнулился, пробуем перезапустить нгс |
95 | IN_GSCOM |
||
105 | savelij | 96 | RRA |
97 | JR C,LOOP001 |
||
163 | savelij | 98 | JR LOOP13 ; нгс ответил на команду, подключаемся к внутреннему плееру |
105 | savelij | 99 | |
163 | savelij | 100 | ; принудительный перезапуск NeoGS |
101 | LOOP21 |
||
102 | OUT_GSCTR M_DBIT ; полный сброс нгс |
||
105 | savelij | 103 | EI |
104 | HALT |
||
105 | HALT |
||
106 | DI |
||
163 | savelij | 107 | OUT_GSCOM 0xF3 ; холодный перезапуск нгс прошивки |
108 | LD B,0x30 ; ждем 0x30 прерываний |
||
105 | savelij | 109 | LOOP25 EI |
110 | HALT |
||
111 | HALT |
||
112 | DI |
||
113 | DEC B |
||
163 | savelij | 114 | JP Z,NO__GS ; нет ответа, нет нгс |
115 | IN_GSCOM |
||
105 | savelij | 116 | RRA |
163 | savelij | 117 | JR C,LOOP25 ; команд бит изменился, продолжаем |
118 | ; загрузка и запуск кода на NeoGS |
||
119 | RST_NGS_CODE ; запрос количества страниц памяти |
||
120 | OUT_GSCOM 0x23 ; для определения в какую страницу плеер закидывать |
||
112 | savelij | 121 | CALL WC |
163 | savelij | 122 | IN_GSDAT |
123 | OR 0x3F |
||
112 | savelij | 124 | LD D,A |
163 | savelij | 125 | LD E,MPAG ; включаем стандартной командой прошивки |
126 | CALL OUTPORT ; страницу на нгс для загрузки внутреннего плеера |
||
127 | ; стандартными средствами грузим код на нгс |
||
128 | LD DE,FAT_END - GO_YES |
||
129 | LD A,E |
||
130 | OUT_GSDAT_A |
||
131 | OUT_GSCOM 0x14 |
||
105 | savelij | 132 | CALL WC |
163 | savelij | 133 | LD A,D |
134 | OUT_GSDAT_A |
||
105 | savelij | 135 | CALL WD |
163 | savelij | 136 | OUT_GSDAT LOW (GSCOD) |
105 | savelij | 137 | CALL WD |
163 | savelij | 138 | OUT_GSDAT HIGH(GSCOD) |
105 | savelij | 139 | CALL WD |
140 | LD HL,GO_YES |
||
163 | savelij | 141 | .LODCOD LD A,(HL) |
142 | INC HL |
||
143 | OUT_GSDAT_A |
||
105 | savelij | 144 | CALL WD |
145 | DEC DE |
||
146 | LD A,D |
||
147 | OR E |
||
163 | savelij | 148 | JR NZ,.LODCOD |
149 | ; код загрузили, запускаем |
||
150 | OUT_GSDAT LOW (GSCOD) |
||
151 | OUT_GSCOM 0x13 |
||
105 | savelij | 152 | CALL WC |
163 | savelij | 153 | OUT_GSDAT HIGH (GSCOD) |
105 | savelij | 154 | EI |
155 | HALT |
||
156 | HALT |
||
163 | savelij | 157 | DI ; подождали 2 прерывания запуска кода |
105 | savelij | 158 | LOOP13 LD A,7 |
163 | savelij | 159 | CALL CLS ; очистили экран |
160 | DE_ADR_SCR 0,8 |
||
161 | LD HL,MESS20 ; печать текста о поиске на SD карточке |
||
105 | savelij | 162 | CALL PRINT |
163 | savelij | 163 | ; подаем команду проверки что на нгс крутится |
164 | OUT_GSDAT 0x1D |
||
165 | OUT_GSCOM 0x1F |
||
105 | savelij | 166 | LD B,0 |
163 | savelij | 167 | CALL WAITGS ; ожидаем ответа покручивавая палочку |
168 | IN_GSDAT ; читаем ответ |
||
169 | CP 0x8B |
||
170 | JP Z,RST_NGS_CODE ; если 0x8B то ответила стандартная прошивка |
||
165 | savelij | 171 | CP PLAYER_OK |
163 | savelij | 172 | JP Z,Warm ; если ответ 0x77, то ответил внутренний плеер |
165 | savelij | 173 | CP SD_NOT_FOUND |
163 | savelij | 174 | JP NZ,LOOP17 ; SD карта найдена? |
105 | savelij | 175 | LD A,7 |
176 | CALL CLS |
||
177 | LD HL,MESS13 |
||
163 | savelij | 178 | DE_ADR_SCR 0,16 |
105 | savelij | 179 | LOOP20 CALL PRINT |
180 | LD HL,MESS15 |
||
163 | savelij | 181 | DE_ADR_SCR 0,18 |
105 | savelij | 182 | CALL PRINT |
183 | LD HL,MESS16 |
||
163 | savelij | 184 | DE_ADR_SCR 0,20 |
105 | savelij | 185 | CALL PRINT |
186 | JR LOOP16 |
||
187 | |||
165 | savelij | 188 | LOOP17 CP FAT_NOT_FOUND |
163 | savelij | 189 | JR NZ,LOOP26 ; на SD карте FAT не обнаружен |
105 | savelij | 190 | LD A,7 |
191 | CALL CLS |
||
192 | LD HL,MESS14 |
||
163 | savelij | 193 | DE_ADR_SCR 0,16 |
105 | savelij | 194 | JR LOOP20 |
195 | |||
165 | savelij | 196 | LOOP26 CP FILES_NOT_FOUND |
105 | savelij | 197 | JR NZ,LOOP27 |
198 | LD A,7 |
||
199 | CALL CLS |
||
200 | LD HL,MESS23 |
||
163 | savelij | 201 | DE_ADR_SCR 0,16 |
105 | savelij | 202 | JR LOOP20 |
203 | |||
165 | savelij | 204 | LOOP27 CP NEOGS_ERROR |
163 | savelij | 205 | JP NZ,RST_NGS_CODE ; плата GS стараго типав |
105 | savelij | 206 | JP NO_NGS |
207 | |||
163 | savelij | 208 | LOOP16 |
209 | IFDEF _SPRINTER |
||
210 | EI |
||
211 | SPDSS DSSF.SCANKEY |
||
212 | JR Z,LOOP16 |
||
213 | ELSE |
||
214 | EI |
||
158 | savelij | 215 | HALT |
216 | DI |
||
217 | BIT 5,(IY+1) |
||
105 | savelij | 218 | JR Z,LOOP16 |
163 | savelij | 219 | LD A,(IY-0x32) |
105 | savelij | 220 | RES 5,(IY+1) |
163 | savelij | 221 | ENDIF |
222 | CP 0x0D |
||
105 | savelij | 223 | JP Z,START |
163 | savelij | 224 | CP 0x20 |
105 | savelij | 225 | JP Z,RESCOMP |
226 | JR LOOP16 |
||
227 | |||
228 | Warm LD A,7 |
||
163 | savelij | 229 | CALL CLS ; очистка экрана |
165 | savelij | 230 | LD A,VARP_CHIP_TYPE |
231 | CALL GET_VTS |
||
163 | savelij | 232 | CALL MORDALL ; вывод основных надписей |
165 | savelij | 233 | LD A,__TXT_COUNT_FILES |
163 | savelij | 234 | DE_ADR_SCR 13,0 |
235 | CALL READ5BT ; вывод кол-ва найденного |
||
236 | CALL NAMELNG ; вывод имени текущего файла |
||
237 | LOOP_3 CALL DAT_VTS ; вывод инфы текущего файла |
||
165 | savelij | 238 | NO_PRESS_KEY |
239 | LD_A VARP_FLAGS |
||
105 | savelij | 240 | CALL GET_VTS |
165 | savelij | 241 | BIT B_SD_LOST,A |
105 | savelij | 242 | JP NZ,EJECT |
243 | ; AND 5 |
||
244 | ; CP 5 |
||
245 | ; JR Z,LOOPM |
||
246 | CALL FGETVTS |
||
247 | LD A,H |
||
248 | PUSH AF |
||
165 | savelij | 249 | BIT B_NEW_FILE,A |
105 | savelij | 250 | CALL NZ,NAMELNG |
251 | POP AF |
||
165 | savelij | 252 | LD A,VARP_FILE_TYPE |
253 | CALL GET_VTS |
||
254 | CP FILE_MP3 |
||
105 | savelij | 255 | JR NZ,LOOPM |
165 | savelij | 256 | ; продолжаем для MP3 |
163 | savelij | 257 | DE_ADR_SCR 11,11 |
258 | CALL READSEC ; время играния |
||
105 | savelij | 259 | CALL BITRATE |
260 | JR LOOP14 |
||
261 | |||
165 | savelij | 262 | ; продолжаем для MOD |
105 | savelij | 263 | LOOPM CALL POSMOD |
163 | savelij | 264 | LOOP14 |
265 | IFDEF _SPRINTER |
||
266 | EI |
||
267 | SPDSS DSSF.SCANKEY |
||
165 | savelij | 268 | JR Z,NO_PRESS_KEY |
163 | savelij | 269 | ELSE |
270 | EI |
||
105 | savelij | 271 | HALT |
272 | DI |
||
273 | BIT 5,(IY+1) |
||
165 | savelij | 274 | JR Z,NO_PRESS_KEY |
163 | savelij | 275 | RES 5,(IY+1) |
276 | LD A,(IY-0x32) |
||
277 | ENDIF |
||
105 | savelij | 278 | LD B,A |
165 | savelij | 279 | LD A,VARP_FILE_TYPE |
280 | CALL GET_VTS |
||
281 | CP FILE_MP3 |
||
105 | savelij | 282 | LD HL,MODCOM |
112 | savelij | 283 | JR NZ,LOOP14_1 |
105 | savelij | 284 | LD HL,MP3COM |
112 | savelij | 285 | LOOP14_1 LD DE,4 |
286 | LOOP14_2 LD A,(HL) |
||
105 | savelij | 287 | AND A |
165 | savelij | 288 | JR Z,NO_PRESS_KEY |
105 | savelij | 289 | CP B |
290 | JR Z,RDCOMM |
||
291 | ADD HL,DE |
||
112 | savelij | 292 | JR LOOP14_2 |
105 | savelij | 293 | |
294 | RDCOMM INC HL |
||
295 | LD A,(HL) |
||
296 | INC HL |
||
297 | LD E,(HL) |
||
298 | INC HL |
||
299 | LD D,(HL) |
||
300 | EX DE,HL |
||
301 | JP (HL) |
||
302 | |||
163 | savelij | 303 | MP3COM DB "6",0x09 |
105 | savelij | 304 | DW EXE1 |
163 | savelij | 305 | DB "7",0x08 |
105 | savelij | 306 | DW EXE1 |
163 | savelij | 307 | DB "8",0x07 |
105 | savelij | 308 | DW EXE1 |
163 | savelij | 309 | DB "9",0x06 |
105 | savelij | 310 | DW EXE2 |
163 | savelij | 311 | DB 0x0D,0x0A |
105 | savelij | 312 | DW EXE1 |
163 | savelij | 313 | DB ":",0x17 |
105 | savelij | 314 | DW EXE1 |
163 | savelij | 315 | ; DB "q",0x03 |
112 | savelij | 316 | ; DW EXE3 |
163 | savelij | 317 | ; DB "a",0x01 |
112 | savelij | 318 | ; DW EXE3 |
163 | savelij | 319 | ; DB "w",0x0C |
112 | savelij | 320 | ; DW EXE3 |
163 | savelij | 321 | ; DB "s",0x04 |
112 | savelij | 322 | ; DW EXE3 |
163 | savelij | 323 | ; DB "e",0x30 |
112 | savelij | 324 | ; DW EXE3 |
163 | savelij | 325 | ; DB "d",0x10 |
112 | savelij | 326 | ; DW EXE3 |
163 | savelij | 327 | ; DB "r",0xC0 |
112 | savelij | 328 | ; DW EXE3 |
163 | savelij | 329 | ; DB "f",0x40 |
112 | savelij | 330 | ; DW EXE3 |
105 | savelij | 331 | |
163 | savelij | 332 | MODCOM DB "1",0x01 |
105 | savelij | 333 | DW EXE1 |
163 | savelij | 334 | DB "2",0x02 |
105 | savelij | 335 | DW EXE4 |
163 | savelij | 336 | DB "3",0x03 |
105 | savelij | 337 | DW EXE4 |
163 | savelij | 338 | DB "4",0x04 |
105 | savelij | 339 | DW EXE4 |
163 | savelij | 340 | DB "5",0x05 |
105 | savelij | 341 | DW EXE1 |
163 | savelij | 342 | DB "!",0x18 |
105 | savelij | 343 | DW EXE1 |
163 | savelij | 344 | DB "%",0x19 |
105 | savelij | 345 | DW EXE1 |
163 | savelij | 346 | DB "0",0x00 |
105 | savelij | 347 | DW EJECT |
163 | savelij | 348 | DB " ",0x00 |
105 | savelij | 349 | DW RESCOMP |
350 | DB 0 |
||
351 | |||
163 | savelij | 352 | EXE1 |
353 | OUT_GSDAT_A |
||
354 | OUT_GSCOM 0x1F |
||
105 | savelij | 355 | CALL WC |
163 | savelij | 356 | JP LOOP_3 |
105 | savelij | 357 | |
163 | savelij | 358 | EXE2 |
359 | OUT_GSDAT_A |
||
360 | OUT_GSCOM 0x1F |
||
105 | savelij | 361 | CALL WC |
362 | CALL PRTTBL |
||
163 | savelij | 363 | JP LOOP_3 |
105 | savelij | 364 | |
365 | EXE3 PUSH AF |
||
163 | savelij | 366 | OUT_GSDAT 0x1A |
367 | OUT_GSCOM 0x1F |
||
105 | savelij | 368 | CALL WC |
369 | POP AF |
||
163 | savelij | 370 | OUT_GSDAT_A |
105 | savelij | 371 | CALL PRTTBL |
165 | savelij | 372 | JP NO_PRESS_KEY |
105 | savelij | 373 | |
163 | savelij | 374 | EXE4 |
375 | OUT_GSDAT_A |
||
376 | OUT_GSCOM 0x1F |
||
105 | savelij | 377 | CALL WC |
165 | savelij | 378 | JP NO_PRESS_KEY |
105 | savelij | 379 | |
163 | savelij | 380 | ; ожидание отпускания кнопки и сброс |
105 | savelij | 381 | RESCOMP CALL NANYKEY |
163 | savelij | 382 | IFDEF _SPRINTER |
383 | CALL CLS |
||
384 | CALL CLOSE_ISA |
||
385 | SPDSS DSSF.EXIT |
||
386 | ELSE |
||
105 | savelij | 387 | XOR A |
163 | savelij | 388 | LD BC,0x7FFD |
105 | savelij | 389 | OUT (C),A |
390 | JP 0 |
||
163 | savelij | 391 | ENDIF |
105 | savelij | 392 | |
393 | WAITGS LD E,B |
||
394 | LD D,0 |
||
395 | LD HL,VENTIL |
||
396 | ADD HL,DE |
||
397 | LD A,(HL) |
||
163 | savelij | 398 | DE_ADR_SCR 27,8 |
105 | savelij | 399 | CALL PRISYM |
400 | LD C,5 |
||
163 | savelij | 401 | .L1 EI |
105 | savelij | 402 | HALT |
403 | DI |
||
404 | DEC C |
||
163 | savelij | 405 | JR NZ,.L1 |
406 | IN_GSCOM |
||
105 | savelij | 407 | RRA |
408 | RET NC |
||
409 | INC B |
||
163 | savelij | 410 | RES 2,B |
105 | savelij | 411 | JR WAITGS |
412 | |||
163 | savelij | 413 | ; распечатка номера трека и имени играемого файла |
165 | savelij | 414 | NAMELNG LD A,__TXT_CURRENT_FILE |
163 | savelij | 415 | DE_ADR_SCR 13,10 |
416 | CALL READ5BT ; текущий номер трека |
||
417 | LD HL,0x8000 |
||
418 | OUT_GSDAT 0x11 |
||
419 | OUT_GSCOM 0x1F |
||
420 | CALL WC ; получить длинное имя |
||
105 | savelij | 421 | LD A,H |
163 | savelij | 422 | OUT_GSDAT_A |
105 | savelij | 423 | CALL WD |
424 | LD A,L |
||
163 | savelij | 425 | OUT_GSDAT_A |
105 | savelij | 426 | LD HL,OPISAT |
427 | LD E,0 |
||
428 | PUSH HL |
||
429 | CALL INI_E |
||
163 | savelij | 430 | IFDEF _SPRINTER |
431 | DE_ADR_SCR 0,16 |
||
432 | SPBIOS BIOSF.LP_PRINT_SYM,78,' ' |
||
433 | DE_ADR_SCR 0,17 |
||
434 | SPBIOS BIOSF.LP_PRINT_SYM,78,' ' |
||
435 | DE_ADR_SCR 0,18 |
||
436 | SPBIOS BIOSF.LP_PRINT_SYM,78,' ' |
||
437 | DE_ADR_SCR 0,19 |
||
438 | SPBIOS BIOSF.LP_PRINT_SYM,78,' ' |
||
439 | ELSE |
||
440 | LD HL,0x5000 |
||
105 | savelij | 441 | LD D,H |
442 | LD E,L |
||
163 | savelij | 443 | LD BC,0x07FF |
105 | savelij | 444 | INC E |
445 | LD (HL),L |
||
446 | LDIR |
||
163 | savelij | 447 | ENDIF |
105 | savelij | 448 | POP HL |
163 | savelij | 449 | LD B,0x20 |
450 | DE_ADR_SCR 0,16 |
||
105 | savelij | 451 | CALL PRINT_B |
163 | savelij | 452 | LD B,0x20 |
453 | DE_ADR_SCR 0,17 |
||
105 | savelij | 454 | CALL PRINT_B |
163 | savelij | 455 | LD B,0x20 |
456 | DE_ADR_SCR 0,18 |
||
105 | savelij | 457 | CALL PRINT_B |
163 | savelij | 458 | LD B,0x20 |
459 | DE_ADR_SCR 0,19 |
||
105 | savelij | 460 | CALL PRINT_B |
163 | savelij | 461 | LD B,0x20 |
462 | DE_ADR_SCR 0,20 |
||
105 | savelij | 463 | CALL PRINT_B |
163 | savelij | 464 | LD B,0x20 |
465 | DE_ADR_SCR 0,21 |
||
105 | savelij | 466 | CALL PRINT_B |
163 | savelij | 467 | LD B,0x20 |
468 | DE_ADR_SCR 0,22 |
||
105 | savelij | 469 | CALL PRINT_B |
163 | savelij | 470 | LD B,0x20 |
471 | DE_ADR_SCR 0,23 |
||
105 | savelij | 472 | CALL PRINT_B |
473 | JP MORDAR |
||
474 | |||
163 | savelij | 475 | DAT_VTS CALL FGETVTS ; запрос флагового байта |
476 | DE_ADR_SCR 16,13 |
||
165 | savelij | 477 | LD A,VARP_FILE_TYPE |
478 | CALL GET_VTS |
||
479 | CP FILE_MP3 |
||
163 | savelij | 480 | RET NZ ; это MOD |
165 | savelij | 481 | BIT B_ENABLE_TEMBR,H |
482 | LD A,'+' |
||
163 | savelij | 483 | JR NZ,.L1 |
165 | savelij | 484 | LD A,'-' |
163 | savelij | 485 | .L1 CALL PRISYM ; вывод положения TREBLE/BASS |
165 | savelij | 486 | BIT B_SURROUND,H |
487 | LD A,'+' |
||
163 | savelij | 488 | JR NZ,.L2 |
165 | savelij | 489 | LD A,'-' |
163 | savelij | 490 | .L2 |
491 | DE_ADR_SCR 16,12 |
||
492 | CALL PRISYM ; вывод положения VIRTUAL SURROUND |
||
165 | savelij | 493 | BIT B_MUTE,H |
494 | LD A,'+' |
||
163 | savelij | 495 | JR NZ,.L3 |
165 | savelij | 496 | LD A,'-' |
163 | savelij | 497 | .L3 |
498 | DE_ADR_SCR 31,14 |
||
499 | CALL PRISYM ; вывод положения MUTE ON/OFF |
||
105 | savelij | 500 | LD A,L |
163 | savelij | 501 | DE_ADR_SCR 16,14 |
105 | savelij | 502 | CALL PRIHEX |
163 | savelij | 503 | ; вывод индикатора SOFT/HARD RESET |
165 | savelij | 504 | BIT B_TYPE_RESET,H |
505 | LD HL,MESS16 + 2 |
||
105 | savelij | 506 | JR Z,DATVTS1 |
507 | RES 5,(HL) |
||
508 | INC HL |
||
509 | RES 5,(HL) |
||
510 | INC HL |
||
511 | RES 5,(HL) |
||
512 | INC HL |
||
513 | RES 5,(HL) |
||
514 | JR DATVTS2 |
||
515 | |||
516 | DATVTS1 SET 5,(HL) |
||
517 | INC HL |
||
518 | SET 5,(HL) |
||
519 | INC HL |
||
520 | SET 5,(HL) |
||
521 | INC HL |
||
522 | SET 5,(HL) |
||
523 | DATVTS2 LD HL,MESS16 |
||
163 | savelij | 524 | DE_ADR_SCR 20,0 |
105 | savelij | 525 | CALL PRINT |
163 | savelij | 526 | ; получение и распечатка инфы темброблока |
112 | savelij | 527 | PRTTBL |
528 | ; CALL FGETVTS |
||
529 | ; BIT 3,H |
||
530 | ; JR Z,EMPTSTR |
||
531 | ; BIT 7,H |
||
532 | ; JR Z,EMPTSTR |
||
163 | savelij | 533 | ; LD A,0x1B |
112 | savelij | 534 | ; OUT (GSDAT),A |
163 | savelij | 535 | ; LD A,0x1F |
112 | savelij | 536 | ; OUT (GSCOM),A |
537 | ; CALL WC |
||
163 | savelij | 538 | ; LD HL,OPISAT+0x0100 |
112 | savelij | 539 | ; LD E,8 |
540 | ; PUSH HL |
||
541 | ; CALL INI_E |
||
163 | savelij | 542 | ; LD DE,0x48B1 |
112 | savelij | 543 | ; LD B,2 |
544 | ; POP HL |
||
545 | ; CALL PRINT_B |
||
546 | ; LD A,"0" |
||
547 | ; CALL PRISYM |
||
548 | ; LD A,"0" |
||
549 | ; CALL PRISYM |
||
550 | ; LD A,"0" |
||
551 | ; CALL PRISYM |
||
552 | ; LD A,"/" |
||
553 | ; CALL PRISYM |
||
554 | ; LD B,2 |
||
555 | ; CALL PRINT_B |
||
556 | ; INC E |
||
557 | ; LD B,2 |
||
558 | ; CALL PRINT_B |
||
559 | ; LD A,"0" |
||
560 | ; CALL PRISYM |
||
561 | ; LD A,"/" |
||
562 | ; CALL PRISYM |
||
563 | ; LD B,2 |
||
564 | ; JP PRINT_B |
||
105 | savelij | 565 | |
163 | savelij | 566 | ; печать пустой строки |
105 | savelij | 567 | EMPTSTR LD HL,EMPT16+1 |
163 | savelij | 568 | DE_ADR_SCR 17,13 |
105 | savelij | 569 | JP PRINT |
570 | |||
163 | savelij | 571 | ; распечатка когда ничего не играет |
105 | savelij | 572 | BITRAT1 LD HL,EMPT16+2 |
163 | savelij | 573 | DE_ADR_SCR 22,10 |
105 | savelij | 574 | PUSH HL |
575 | LD B,5 |
||
576 | CALL PRINT_B |
||
163 | savelij | 577 | DE_ADR_SCR 24,11 |
105 | savelij | 578 | LD B,3 |
579 | POP HL |
||
580 | PUSH HL |
||
581 | CALL PRINT_B |
||
582 | POP HL |
||
163 | savelij | 583 | LD B,0x0C |
584 | DE_ADR_SCR 20,9 |
||
105 | savelij | 585 | JP PRINT_B |
586 | |||
163 | savelij | 587 | ; печать MP3 битрейта |
588 | BITRATE |
||
589 | OUT_GSDAT 0x1C |
||
590 | OUT_GSCOM 0x1F |
||
105 | savelij | 591 | CALL WC |
592 | CALL WN |
||
163 | savelij | 593 | IN_GSDAT |
105 | savelij | 594 | LD B,A |
595 | CALL WN |
||
163 | savelij | 596 | IN_GSDAT |
105 | savelij | 597 | LD C,A |
598 | LD A,B |
||
163 | savelij | 599 | AND 0xE0 |
105 | savelij | 600 | CP %10100000 |
601 | JR Z,BITRAT1 |
||
602 | LD A,C |
||
603 | AND 3 |
||
604 | LD L,A |
||
605 | ADD A,A |
||
606 | ADD A,A |
||
607 | ADD A,L |
||
608 | LD L,A |
||
609 | LD H,0 |
||
610 | LD A,C |
||
611 | RRCA |
||
612 | RRCA |
||
613 | AND 3 |
||
614 | LD DE,SR0 |
||
615 | JR Z,BITRAT3 |
||
616 | DEC A |
||
617 | LD DE,SR1 |
||
618 | JR Z,BITRAT3 |
||
619 | LD DE,SR2 |
||
620 | BITRAT3 ADD HL,DE |
||
163 | savelij | 621 | DE_ADR_SCR 22,10 |
105 | savelij | 622 | PUSH BC |
623 | LD B,5 |
||
624 | CALL PRINT_B |
||
625 | POP BC |
||
626 | LD A,C |
||
627 | RLCA |
||
628 | RLCA |
||
629 | AND 3 |
||
630 | ADD A,A |
||
631 | ADD A,A |
||
632 | LD L,A |
||
633 | ADD A,A |
||
634 | ADD A,L |
||
635 | LD L,A |
||
636 | LD H,0 |
||
637 | LD DE,REJCHAN |
||
638 | ADD HL,DE |
||
639 | PUSH BC |
||
163 | savelij | 640 | LD B,0x0C |
641 | DE_ADR_SCR 20,9 |
||
105 | savelij | 642 | CALL PRINT_B |
643 | POP BC |
||
644 | LD A,B |
||
163 | savelij | 645 | AND 0x0F |
105 | savelij | 646 | LD L,A |
647 | ADD A,A |
||
648 | ADD A,L |
||
649 | LD L,A |
||
650 | LD H,0 |
||
651 | LD A,C |
||
652 | AND 3 |
||
653 | CP 3 |
||
654 | JR NZ,BITRAT4 |
||
163 | savelij | 655 | LD A,0x30 |
105 | savelij | 656 | ADD A,L |
657 | LD L,A |
||
658 | BITRAT4 LD A,C |
||
163 | savelij | 659 | AND 0x30 |
660 | SUB 0x10 |
||
105 | savelij | 661 | LD DE,L3ID0 |
662 | JR Z,BITRAT2 |
||
163 | savelij | 663 | SUB 0x10 |
105 | savelij | 664 | LD DE,L2ID0 |
665 | JR Z,BITRAT2 |
||
666 | LD DE,L1ID0 |
||
667 | BITRAT2 ADD HL,DE |
||
668 | LD B,3 |
||
163 | savelij | 669 | DE_ADR_SCR 24,11 |
105 | savelij | 670 | JP PRINT_B |
671 | |||
163 | savelij | 672 | ; получение и распечатка кол-ва найденных файлов (15) |
673 | ; или номера текущего файла (16) |
||
674 | READ5BT |
||
675 | OUT_GSDAT_A |
||
676 | OUT_GSCOM 0x1F |
||
105 | savelij | 677 | CALL WC |
678 | CALL WN |
||
163 | savelij | 679 | IN_GSDAT |
105 | savelij | 680 | CALL PRISYM |
681 | CALL WN |
||
163 | savelij | 682 | IN_GSDAT |
105 | savelij | 683 | CALL PRISYM |
684 | CALL WN |
||
163 | savelij | 685 | IN_GSDAT |
105 | savelij | 686 | CALL PRISYM |
687 | CALL WN |
||
163 | savelij | 688 | IN_GSDAT |
105 | savelij | 689 | CALL PRISYM |
690 | CALL WN |
||
163 | savelij | 691 | IN_GSDAT |
105 | savelij | 692 | JP PRISYM |
693 | |||
163 | savelij | 694 | ; получение времени проигрывания в |
695 | ; текстовом виде и распечатка |
||
696 | READSEC |
||
165 | savelij | 697 | OUT_GSDAT __GET_TIME |
163 | savelij | 698 | OUT_GSCOM 0x1F |
105 | savelij | 699 | CALL WC |
700 | CALL WN |
||
163 | savelij | 701 | IN_GSDAT |
105 | savelij | 702 | CALL PRISYM |
703 | CALL WN |
||
163 | savelij | 704 | IN_GSDAT |
105 | savelij | 705 | CALL PRISYM |
163 | savelij | 706 | LD A,':' |
105 | savelij | 707 | CALL PRISYM |
708 | CALL WN |
||
163 | savelij | 709 | IN_GSDAT |
105 | savelij | 710 | CALL PRISYM |
711 | CALL WN |
||
163 | savelij | 712 | IN_GSDAT |
105 | savelij | 713 | CALL PRISYM |
163 | savelij | 714 | LD A,':' |
105 | savelij | 715 | CALL PRISYM |
716 | CALL WN |
||
163 | savelij | 717 | IN_GSDAT |
105 | savelij | 718 | CALL PRISYM |
719 | CALL WN |
||
163 | savelij | 720 | IN_GSDAT |
105 | savelij | 721 | JP PRISYM |
722 | |||
163 | savelij | 723 | ; при отсутствии NeoGS выход в 128 басик |
105 | savelij | 724 | NO_NGS LD A,7 |
725 | CALL CLS |
||
163 | savelij | 726 | DE_ADR_SCR 9,8 |
105 | savelij | 727 | LD HL,MESS17 |
728 | CALL PRINT |
||
163 | savelij | 729 | NO_ISA |
730 | DE_ADR_SCR 6,10 |
||
105 | savelij | 731 | LD HL,MESS19 |
732 | CALL PRINT |
||
733 | CALL ANYKEY |
||
163 | savelij | 734 | JP RESCOMP |
105 | savelij | 735 | |
163 | savelij | 736 | ; ждем нажатия кнопки |
737 | ANYKEY |
||
738 | IFDEF _SPRINTER |
||
739 | EI |
||
740 | SPDSS DSSF.SCANKEY |
||
741 | JR Z,ANYKEY |
||
742 | RET |
||
743 | ELSE |
||
744 | .L1 XOR A |
||
745 | IN A,(0xFE) |
||
105 | savelij | 746 | CPL |
163 | savelij | 747 | AND 0x1F |
748 | JR Z,.L1 |
||
105 | savelij | 749 | RET |
163 | savelij | 750 | ENDIF |
105 | savelij | 751 | |
163 | savelij | 752 | ; ждем отпускания кнопки |
753 | NANYKEY |
||
754 | IFDEF _SPRINTER |
||
755 | EI |
||
756 | SPDSS DSSF.SCANKEY |
||
757 | JR NZ,NANYKEY |
||
758 | RET |
||
759 | ELSE |
||
760 | .L1 XOR A |
||
761 | IN A,(0xFE) |
||
105 | savelij | 762 | CPL |
163 | savelij | 763 | AND 0x1F |
764 | JR NZ,.L1 |
||
105 | savelij | 765 | RET |
163 | savelij | 766 | ENDIF |
105 | savelij | 767 | |
163 | savelij | 768 | ; при отсутствии GS выход в 128 басик |
105 | savelij | 769 | NO__GS LD A,7 |
770 | CALL CLS |
||
163 | savelij | 771 | DE_ADR_SCR 10,8 |
105 | savelij | 772 | LD HL,MESS18 |
773 | CALL PRINT |
||
163 | savelij | 774 | DE_ADR_SCR 6,10 |
105 | savelij | 775 | LD HL,MESS19 |
776 | CALL PRINT |
||
777 | CALL ANYKEY |
||
163 | savelij | 778 | JP RESCOMP |
105 | savelij | 779 | |
163 | savelij | 780 | ; печать текста до байта 0 или пока B не обнулица |
105 | savelij | 781 | PRINT_B LD A,(HL) |
782 | AND A |
||
783 | RET Z |
||
784 | INC HL |
||
785 | CALL PRISYM |
||
786 | DJNZ PRINT_B |
||
787 | RET |
||
788 | |||
163 | savelij | 789 | ; печать текста до байта 0 |
105 | savelij | 790 | PRINT LD A,(HL) |
791 | INC HL |
||
792 | AND A |
||
793 | RET Z |
||
794 | CALL PRISYM |
||
795 | JR PRINT |
||
796 | |||
797 | MORDALL LD HL,MESS1 |
||
163 | savelij | 798 | DE_ADR_SCR 0,0 |
105 | savelij | 799 | CALL PRINT |
800 | LD HL,MESS16 |
||
163 | savelij | 801 | DE_ADR_SCR 20,0 |
105 | savelij | 802 | CALL PRINT |
803 | LD HL,MESS2 |
||
163 | savelij | 804 | DE_ADR_SCR 0,2 |
105 | savelij | 805 | CALL PRINT |
806 | LD HL,MESS3 |
||
163 | savelij | 807 | DE_ADR_SCR 0,3 |
105 | savelij | 808 | CALL PRINT |
809 | LD HL,MESS4 |
||
163 | savelij | 810 | DE_ADR_SCR 0,4 |
105 | savelij | 811 | CALL PRINT |
812 | LD HL,MESS5 |
||
163 | savelij | 813 | DE_ADR_SCR 0,5 |
105 | savelij | 814 | CALL PRINT |
815 | LD HL,MESS6 |
||
163 | savelij | 816 | DE_ADR_SCR 0,6 |
105 | savelij | 817 | CALL PRINT |
818 | LD HL,MESS7 |
||
163 | savelij | 819 | DE_ADR_SCR 0,8 |
105 | savelij | 820 | CALL PRINT |
821 | LD HL,MESS8 |
||
163 | savelij | 822 | DE_ADR_SCR 0,10 |
105 | savelij | 823 | CALL PRINT |
824 | LD HL,MESS24 |
||
163 | savelij | 825 | DE_ADR_SCR ((32-(EMESS24-MESS24))/2),15 |
105 | savelij | 826 | CALL PRINT |
165 | savelij | 827 | LD A,VARP_CHIP_TYPE |
105 | savelij | 828 | CALL GET_VTS |
829 | LD C,A |
||
163 | savelij | 830 | IFDEF _SPRINTER |
831 | PUSH BC |
||
832 | DE_ADR_SCR 0,15 |
||
833 | POP BC |
||
834 | PUSH BC |
||
835 | LD A,C |
||
165 | savelij | 836 | XOR %00000111 |
837 | ADD A,A |
||
838 | ADD A,A |
||
839 | ADD A,A |
||
840 | ADD A,A |
||
841 | OR BLUE |
||
163 | savelij | 842 | LD E,A |
843 | SPBIOS BIOSF.LP_PRINT_ATR,32 |
||
844 | POP BC |
||
165 | savelij | 845 | ELSE ; SPRINTER |
846 | XOR %00000111 |
||
105 | savelij | 847 | ADD A,A |
165 | savelij | 848 | ADD A,A |
849 | ADD A,A |
||
850 | OR BLUE |
||
163 | savelij | 851 | LD HL,0x59E0 |
852 | LD B,32 |
||
853 | .L1 LD (HL),A |
||
105 | savelij | 854 | INC L |
163 | savelij | 855 | DJNZ .L1 |
165 | savelij | 856 | ENDIF ; SPRINTER |
105 | savelij | 857 | LD A,C |
165 | savelij | 858 | ADD A,'0' ; номер версии MP3 чипа |
859 | CP '9' + 1 |
||
860 | JR C,.L2 |
||
861 | ADD A,7 |
||
862 | .L2 |
||
163 | savelij | 863 | DE_ADR_SCR 31,15 |
105 | savelij | 864 | CALL PRISYM |
165 | savelij | 865 | MORDAR |
866 | LD_A VARP_FILE_TYPE |
||
105 | savelij | 867 | CALL GET_VTS |
165 | savelij | 868 | CP FILE_MOD |
869 | JR Z,MORDMOD |
||
870 | ; обновление морды для MP3 |
||
105 | savelij | 871 | LD HL,MESS9 |
163 | savelij | 872 | DE_ADR_SCR 0,11 |
105 | savelij | 873 | CALL PRINT |
874 | LD HL,MESS10 |
||
163 | savelij | 875 | DE_ADR_SCR 0,13 |
105 | savelij | 876 | CALL PRINT |
877 | LD HL,MESS11 |
||
163 | savelij | 878 | DE_ADR_SCR 0,12 |
105 | savelij | 879 | CALL PRINT |
880 | LD HL,MESS12 |
||
163 | savelij | 881 | DE_ADR_SCR 0,14 |
105 | savelij | 882 | CALL PRINT |
883 | LD HL,MESSEM |
||
163 | savelij | 884 | DE_ADR_SCR 19,14 |
105 | savelij | 885 | CALL PRINT |
886 | LD HL,MESS26 |
||
163 | savelij | 887 | DE_ADR_SCR 28,10 |
105 | savelij | 888 | CALL PRINT |
889 | LD HL,MESS27 |
||
163 | savelij | 890 | DE_ADR_SCR 28,11 |
105 | savelij | 891 | CALL PRINT |
892 | JP PRTTBL |
||
893 | |||
165 | savelij | 894 | ; обновление морды плеера для MOD |
895 | MORDMOD LD HL,EMPT16 + 3 |
||
163 | savelij | 896 | DE_ADR_SCR 19,10 |
105 | savelij | 897 | CALL PRINT |
898 | LD HL,EMPT16 |
||
163 | savelij | 899 | DE_ADR_SCR 16,12 |
105 | savelij | 900 | CALL PRINT |
901 | LD HL,EMPT16 |
||
163 | savelij | 902 | DE_ADR_SCR 16,13 |
105 | savelij | 903 | CALL PRINT |
904 | LD HL,EMPT16 |
||
163 | savelij | 905 | DE_ADR_SCR 16,9 |
105 | savelij | 906 | CALL PRINT |
907 | LD HL,MOD00 |
||
163 | savelij | 908 | DE_ADR_SCR 0,11 |
105 | savelij | 909 | CALL PRINT |
910 | LD HL,EMPT16 |
||
163 | savelij | 911 | DE_ADR_SCR 16,11 |
105 | savelij | 912 | CALL PRINT |
913 | LD HL,MOD02 |
||
163 | savelij | 914 | DE_ADR_SCR 0,12 |
105 | savelij | 915 | CALL PRINT |
916 | LD HL,MOD03 |
||
163 | savelij | 917 | DE_ADR_SCR 0,13 |
105 | savelij | 918 | CALL PRINT |
919 | LD HL,EMPT16 |
||
163 | savelij | 920 | DE_ADR_SCR 16,14 |
105 | savelij | 921 | CALL PRINT |
922 | LD HL,EMPT16 |
||
163 | savelij | 923 | DE_ADR_SCR 0,14 |
105 | savelij | 924 | JP PRINT |
925 | |||
165 | savelij | 926 | ; обновление инфы проигрывания MOD |
927 | POSMOD LD A,VARP_SIZE_PATTERN_MOD |
||
105 | savelij | 928 | CALL GET_VTS |
163 | savelij | 929 | DE_ADR_SCR 14,11 |
105 | savelij | 930 | CALL PRIHEX |
163 | savelij | 931 | DE_ADR_SCR 14,12 |
932 | OUT_GSCOM 0x60 |
||
105 | savelij | 933 | CALL WC |
165 | savelij | 934 | CALL WN |
163 | savelij | 935 | IN_GSDAT |
105 | savelij | 936 | CALL PRIHEX |
163 | savelij | 937 | DE_ADR_SCR 14,13 |
938 | OUT_GSCOM 0x61 |
||
105 | savelij | 939 | CALL WC |
165 | savelij | 940 | CALL WN |
163 | savelij | 941 | IN_GSDAT |
105 | savelij | 942 | JP PRIHEX |
943 | |||
163 | savelij | 944 | ; читать байт переменных по смещению в "A" |
945 | GET_VTS |
||
946 | OUT_GSDAT_A |
||
947 | OUT_GSCOM 0xFF |
||
105 | savelij | 948 | CALL WC |
165 | savelij | 949 | CALL WN |
163 | savelij | 950 | IN_GSDAT |
105 | savelij | 951 | RET |
952 | |||
163 | savelij | 953 | ; получение 16 битного состояния |
954 | FGETVTS |
||
165 | savelij | 955 | OUT_GSDAT __GET_VTS |
163 | savelij | 956 | OUT_GSCOM 0x1F |
105 | savelij | 957 | CALL WC |
958 | CALL WN |
||
163 | savelij | 959 | IN_GSDAT |
105 | savelij | 960 | LD H,A |
961 | CALL WN |
||
163 | savelij | 962 | IN_GSDAT |
105 | savelij | 963 | LD L,A |
964 | RET |
||
965 | |||
165 | savelij | 966 | MOD00 DZ "Length: " |
967 | MOD02 DZ "Position: " |
||
968 | MOD03 DZ "Note: " |
||
105 | savelij | 969 | |
163 | savelij | 970 | VENTIL DB 0xC4,0x5C,0x7C,0x2F |
105 | savelij | 971 | |
165 | savelij | 972 | MESS1 DZ "Found files:" |
973 | MESS16 DZ "\"Space\" Exit" |
||
974 | MESS2 DZ "1 Prev. File SS+1 Prev. DIR" |
||
975 | MESS3 DZ "2 Play File" |
||
976 | MESS4 DZ "3 Pause" |
||
977 | MESS5 DZ "4 Stop" |
||
978 | MESS6 DZ "5 Next File SS+5 Next DIR" |
||
979 | MESS7 DZ "0 Eject SD Card" |
||
980 | MESS8 DZ "Play Number:" |
||
981 | MESS9 DZ "Time Play: " |
||
982 | MESS10 DZ "9 Treble/Bass: " |
||
983 | MESS11 DZ "8 Surround: " |
||
984 | MESS12 DZ "<6-7> Volume: " |
||
985 | MESSEM DZ "\"Enter\" Mute" |
||
986 | MESS13 DZ "SD-Card Not Found" |
||
987 | MESS14 DZ "FAT not Found" |
||
988 | MESS15 DZ "Press \"ENTER\" 4 Restart Init SD" |
||
105 | savelij | 989 | MESS17 DB "Neo" |
165 | savelij | 990 | MESS18 DZ "GS not found" |
163 | savelij | 991 | MESS19 DB "Press any key for " |
992 | IFDEF _SPRINTER |
||
165 | savelij | 993 | DZ "exit" |
163 | savelij | 994 | ELSE |
165 | savelij | 995 | DZ "reset" |
163 | savelij | 996 | ENDIF |
165 | savelij | 997 | MESS20 DZ "Please wait, search files" |
998 | MESS21 DZ "Eject SD card or insert new card" |
||
999 | MESS22 DZ "Press any key" |
||
1000 | MESS23 DZ "File(s) not found" |
||
127 | savelij | 1001 | MESS24 DB "Neo Player Light v",VERS_PLAYER,0 |
112 | savelij | 1002 | EMESS24 EQU $-1 |
105 | savelij | 1003 | EMPT32 DB " " |
165 | savelij | 1004 | EMPT16 DZ " " |
1005 | MESS26 DZ "Hz" |
||
1006 | MESS27 DZ "kbps" |
||
1007 | MESS28 DZ "Please wait, detect NeoGS" |
||
105 | savelij | 1008 | |
163 | savelij | 1009 | IFDEF _SPRINTER |
165 | savelij | 1010 | NOT_FOUND_ISA DZ "ISA Slot not found. Emulator?" |
163 | savelij | 1011 | ENDIF |
1012 | |||
105 | savelij | 1013 | REJCHAN DB " stereo" |
1014 | DB "joint stereo" |
||
1015 | DB "dual channel" |
||
1016 | DB " mono" |
||
1017 | |||
1018 | SR0 DB "11025110252205044100" |
||
1019 | SR1 DB "12000120002400048000" |
||
1020 | SR2 DB " 8000 80001600032000" |
||
1021 | |||
1022 | L3ID0 DB " - 8 16 24 32 40 48 56 64 80 96112128144160 " |
||
1023 | DB " - 32 40 48 56 64 80 96112128160192224256320" |
||
1024 | |||
1025 | L2ID0 DB " - 8 16 24 32 40 48 56 64 80 96112128144 160 " |
||
1026 | DB " - 32 48 56 64 80 96112128160192224256320384" |
||
1027 | |||
1028 | L1ID0 DB " - 32 48 56 64 80 96112128144160176192224256 " |
||
1029 | DB " - 32 64 96128160192224256288320352384416448" |
||
1030 | |||
163 | savelij | 1031 | EJECT |
165 | savelij | 1032 | OUT_GSDAT __STOP |
163 | savelij | 1033 | OUT_GSCOM 0x1F |
105 | savelij | 1034 | CALL WC |
1035 | LD A,7 |
||
1036 | CALL CLS |
||
1037 | LD HL,MESS21 |
||
163 | savelij | 1038 | DE_ADR_SCR 0,8 |
105 | savelij | 1039 | CALL PRINT |
1040 | LD HL,MESS22 |
||
163 | savelij | 1041 | DE_ADR_SCR 9,10 |
105 | savelij | 1042 | CALL PRINT |
1043 | CALL NANYKEY |
||
1044 | CALL ANYKEY |
||
1045 | CALL NANYKEY |
||
165 | savelij | 1046 | OUT_GSDAT __INIT_SD |
163 | savelij | 1047 | OUT_GSCOM 0x1F |
1048 | JP LOOP21 |
||
105 | savelij | 1049 | |
163 | savelij | 1050 | CLS |
1051 | IFDEF _SPRINTER |
||
1052 | LD HL,32 << 8 + 80 |
||
1053 | LD DE,0 |
||
1054 | SPBIOS BIOSF.LP_CLS_WIN, LGRAY |
||
1055 | ELSE |
||
1056 | LD HL,0x4000 |
||
105 | savelij | 1057 | LD E,L |
1058 | LD D,H |
||
1059 | LD (HL),L |
||
1060 | INC E |
||
163 | savelij | 1061 | LD BC,0x1800 |
105 | savelij | 1062 | LDIR |
163 | savelij | 1063 | LD (0x5C8D),A |
1064 | LD (0x5C48),A |
||
1065 | LD HL,0x5800 |
||
105 | savelij | 1066 | LD D,H |
1067 | LD E,L |
||
1068 | LD (HL),A |
||
163 | savelij | 1069 | LD BC,0x02FF |
105 | savelij | 1070 | INC E |
1071 | LDIR |
||
1072 | RRCA |
||
1073 | RRCA |
||
1074 | RRCA |
||
1075 | AND 7 |
||
163 | savelij | 1076 | OUT (0xFE),A |
1077 | ENDIF |
||
105 | savelij | 1078 | RET |
1079 | |||
163 | savelij | 1080 | ; чтение из порта NeoGS |
1081 | ; вход: E-адрес порта |
||
1082 | ; выход: A-прочитанное значение |
||
105 | savelij | 1083 | INPORT LD A,E |
163 | savelij | 1084 | OUT_GSDAT_A |
1085 | OUT_GSCOM 0x11 |
||
105 | savelij | 1086 | CALL WC |
163 | savelij | 1087 | IN_GSDAT |
105 | savelij | 1088 | RET |
1089 | |||
163 | savelij | 1090 | ; запись в порт NEOGS |
1091 | ; вход: E-адрес порта, D-значение |
||
105 | savelij | 1092 | OUTPORT LD A,E |
163 | savelij | 1093 | OUT_GSDAT_A |
1094 | OUT_GSCOM 0x10 |
||
105 | savelij | 1095 | CALL WC |
1096 | LD A,D |
||
163 | savelij | 1097 | OUT_GSDAT_A |
105 | savelij | 1098 | JR WD |
1099 | |||
163 | savelij | 1100 | ; ожидание байта ответа с паузой |
112 | savelij | 1101 | ;WAIT_WN PUSH BC |
1102 | ; LD B,2 |
||
1103 | ; DJNZ $ |
||
1104 | ; POP BC |
||
105 | savelij | 1105 | |
163 | savelij | 1106 | ; ожидание установки DATA бита |
1107 | WN |
||
1108 | IN_GSCOM |
||
105 | savelij | 1109 | RLA |
1110 | JR NC,WN |
||
1111 | RET |
||
1112 | |||
163 | savelij | 1113 | ; ожидание сброса COMMAND бита |
1114 | WC |
||
1115 | IN_GSCOM |
||
105 | savelij | 1116 | RRA |
1117 | JR C,WC |
||
1118 | RET |
||
1119 | |||
163 | savelij | 1120 | ; ожидание сброса DATA бита |
1121 | WD |
||
1122 | IN_GSCOM |
||
105 | savelij | 1123 | RLA |
1124 | JR C,WD |
||
1125 | RET |
||
1126 | |||
163 | savelij | 1127 | ; прием E байт из NeoGS |
1128 | INI_E |
||
105 | savelij | 1129 | INI_E1 LD D,0 |
1130 | INI_E2 DEC D |
||
1131 | JR Z,INI_E3 |
||
1132 | CALL WN |
||
163 | savelij | 1133 | IN_GSDAT |
1134 | LD (HL),A |
||
1135 | INC HL |
||
105 | savelij | 1136 | DEC E |
1137 | JR NZ,INI_E1 |
||
1138 | RET |
||
1139 | |||
165 | savelij | 1140 | INI_E3 |
1141 | LD_A VARP_FLAGS |
||
105 | savelij | 1142 | CALL GET_VTS |
165 | savelij | 1143 | BIT B_SD_LOST,A |
105 | savelij | 1144 | JR Z,INI_E1 |
142 | savelij | 1145 | LD SP,(OLD_STACK) |
105 | savelij | 1146 | JP EJECT |
1147 | |||
1148 | PRIHEX PUSH AF |
||
1149 | RRA |
||
1150 | RRA |
||
1151 | RRA |
||
1152 | RRA |
||
163 | savelij | 1153 | CALL .PHC |
105 | savelij | 1154 | POP AF |
163 | savelij | 1155 | .PHC AND 0x0F |
1156 | CP 0x0A |
||
1157 | JR C,.L1 |
||
105 | savelij | 1158 | ADD A,7 |
163 | savelij | 1159 | .L1 ADD A,'0' |
105 | savelij | 1160 | PRISYM PUSH HL |
1161 | PUSH DE |
||
163 | savelij | 1162 | IFDEF _SPRINTER |
1163 | PUSH BC |
||
1164 | LD B,1 |
||
1165 | SPBIOS BIOSF.LP_PRINT_SYM |
||
1166 | POP BC |
||
1167 | POP DE |
||
1168 | POP HL |
||
1169 | RET |
||
1170 | ELSE |
||
105 | savelij | 1171 | PUSH DE |
1172 | LD L,A |
||
1173 | LD H,0 |
||
1174 | LD DE,CHARS |
||
1175 | ADD HL,HL |
||
1176 | ADD HL,HL |
||
1177 | ADD HL,HL |
||
1178 | ADD HL,DE |
||
1179 | POP DE |
||
163 | savelij | 1180 | REPT 8 |
105 | savelij | 1181 | LD A,(HL) |
1182 | LD (DE),A |
||
1183 | INC HL |
||
1184 | INC D |
||
163 | savelij | 1185 | ENDM |
105 | savelij | 1186 | POP DE |
1187 | POP HL |
||
1188 | INC E |
||
1189 | RET |
||
163 | savelij | 1190 | ENDIF |
105 | savelij | 1191 | |
163 | savelij | 1192 | IFDEF _SPRINTER |
1193 | ; установка позиции печати |
||
1194 | SET_DE_ADR_SCR PUSH AF |
||
1195 | PUSH HL |
||
1196 | PUSH DE |
||
1197 | PUSH BC |
||
1198 | SPBIOS BIOSF.LP_SET_PLACE |
||
1199 | POP BC |
||
1200 | POP DE |
||
1201 | POP HL |
||
1202 | POP AF |
||
1203 | RET |
||
1204 | |||
1205 | DETECT_ISA LD (OPEN_ISA.SLOT),A |
||
1206 | ; A - номер слота 0 или 1 |
||
1207 | OPEN_ISA LD A,0 |
||
1208 | .SLOT EQU $-1 |
||
1209 | ex af,af' |
||
1210 | in a,(PAGE_CPU3);(mmu3) |
||
1211 | ld (CLOSE_ISA.pg),a |
||
1212 | ld bc,0x1FFD;sc_port |
||
1213 | ld a,0x11 |
||
1214 | out (c),a |
||
1215 | ex af,af' |
||
1216 | rlca |
||
1217 | or %11010100;ISA.SLOT0_PORT |
||
1218 | out (PAGE_CPU3),a;(mmu3),a |
||
1219 | ld bc,ISA_PORT;ISA.DIR |
||
1220 | xor a |
||
1221 | out (c),a |
||
1222 | ret |
||
1223 | |||
1224 | CLOSE_ISA ld bc,0x1FFD;sc_port |
||
1225 | ld a,1 |
||
1226 | out (c),a |
||
1227 | ld a,0 |
||
1228 | .pg EQU $-1 |
||
1229 | out (PAGE_CPU3),a;(mmu3),a |
||
1230 | ret |
||
1231 | |||
1232 | CHECK_ISA ld a,(0xC000) |
||
1233 | cp 0xff |
||
1234 | ret z ; норм, шина ISA есть |
||
1235 | scf ; нет, шины нет (эмулятор?) |
||
1236 | ret |
||
1237 | ENDIF |
||
1238 | |||
165 | savelij | 1239 | GO_YES binclude tmp/play_on_ngs.rom |
105 | savelij | 1240 | FAT_END |
1241 | |||
163 | savelij | 1242 | IFNDEF _SPRINTER |
1243 | CHARS binclude make/altstd.bin |
||
1244 | ENDIF |
||
1245 | |||
1246 | DUPL LOW (-GO_YES) |
||
1247 | OPISAT EQU $ ; адрес складирования описателя при приеме с нгс |