Rev 1027 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
623 | savelij | 1 | |
1186 | savelij | 2 | ; LAST UPDATE: 13.02.2025 savelij |
623 | savelij | 3 | |
764 | savelij | 4 | TITLE "virtual.a80" |
5 | |||
1026 | savelij | 6 | DB 0xFF ; DCU |
665 | savelij | 7 | |
1026 | savelij | 8 | ; 256 |
9 | COPY_BLOCK |
||
10 | REPT 128 ; 256 |
||
623 | savelij | 11 | LDI |
1026 | savelij | 12 | ENDM |
13 | COPYHBLOCK |
||
14 | REPT 126 |
||
623 | savelij | 15 | LDI |
1026 | savelij | 16 | ENDM |
623 | savelij | 17 | JR COPY_BLOCK1 |
18 | |||
1026 | savelij | 19 | DW 0xFFFF ; 뢠 IM 2 I=9 |
623 | savelij | 20 | |
21 | COPY_BLOCK1 LDI |
||
22 | LDI |
||
23 | RET |
||
24 | |||
1026 | savelij | 25 | ; ७ 㭪権 |
831 | savelij | 26 | INIT_VAR |
27 | SETVAR _OUT_1F |
||
28 | SETVAR _OUT_3F |
||
29 | SETVAR _OUT_5F |
||
30 | SETVAR _OUT_7F |
||
31 | SETVAR _OUT_FF |
||
32 | SETVAR _OUTI |
||
33 | SETVAR _IN_1F |
||
34 | SETVAR _IN_3F |
||
35 | SETVAR _IN_5F |
||
36 | SETVAR _IN_7F |
||
37 | SETVAR _IN_FF |
||
38 | SETVAR _INI |
||
39 | SETVAR _OUT_C_D |
||
40 | SETVAR _IN_H_C |
||
41 | SETVAR _WR_RD_SECT |
||
42 | SETVAR _CMP_RAMDISK |
||
888 | savelij | 43 | ; SETVAR _SET_VIRT_BITS |
623 | savelij | 44 | |
831 | savelij | 45 | SETVAR WOUTCA |
46 | SETVAR WWRITE_SEC_ |
||
47 | SETVAR WREAD_SEC_ |
||
48 | SETVAR WINI_RET |
||
623 | savelij | 49 | |
1026 | savelij | 50 | ; ७ 㭪権 |
51 | ; ⮬ 맮 |
||
52 | W_DATA DW W_OUT1F ; 1F |
||
53 | DW W_OUT3F ; 3F |
||
54 | DW W_OUT5F ; 5F |
||
55 | DW W_OUT7F ; 7F |
||
56 | DW W_OUTFF ; FF |
||
57 | DW W_OUTI ; OUTI |
||
58 | DW W_IN1F ; ⥭ 1F |
||
59 | DW W_IN3F ; ⥭ 3F |
||
60 | DW W_IN5F ; ⥭ 5F |
||
61 | DW W_IN7F ; ⥭ 7F |
||
62 | DW W_INFF ; ⥭ FF |
||
63 | DW W_INI ; INI |
||
64 | DW W_OUTCD ; ॣ 'D' 'BC' |
||
65 | DW W_INHC ; ⥭ ॣ 'H' 'BC' |
||
66 | DW READ_WRITE_SEC ; ⥭/ ᥪ |
||
67 | DW CMP_RAM_DISK ; ઠ RAM ᪠ |
||
68 | ; DW SET_VIRT_BITS ; ⠭ ६ ⠭ RST 8 |
||
623 | savelij | 69 | EW_DATA |
1026 | savelij | 70 | ; 맮 |
71 | DW W_OUTCA ; ॣ 'A' 'BC' |
||
72 | DW WRITE_SEC_ ; ᥪ 맮 |
||
73 | DW READ_SEC_ ; ⥭ ᥪ 맮 |
||
74 | DW W_INI ; INI 맮 |
||
623 | savelij | 75 | |
1026 | savelij | 76 | TEXT4VIRTDRV DB 0x16,ZASTV_Y+2,1 |
623 | savelij | 77 | TXT4VIRTDRV DC "Virtual Drive: " |
78 | ETXT4VIRTDRV |
||
79 | |||
1026 | savelij | 80 | DOS_NOEMUL DB ROM_BAS48 | 0x80 ; ࠭ DOS 樥 ⮫쪮 3D13 |
81 | DOS_EMUL DB ROM_ADD_BAS48 | 0x80 ; ࠭ DOS 墠⮬ ⮢ |
||
665 | savelij | 82 | |
1026 | savelij | 83 | NUM_ALT_PAGE |
84 | IF EMU3D2F=1 |
||
85 | DB ROM_ADD_BAS48 | 0x80 |
||
86 | ELSE |
||
87 | DB ROM_BAS48 | 0x80 |
||
88 | ENDIF |
||
678 | savelij | 89 | |
1026 | savelij | 90 | ; ࠡ稪 RST 30 |
665 | savelij | 91 | RST30_WORK EX (SP),HL |
623 | savelij | 92 | PUSH AF |
93 | PUSH BC |
||
94 | LD A,I |
||
665 | savelij | 95 | JP PE,RST30_WORK1 |
623 | savelij | 96 | LD A,I |
665 | savelij | 97 | RST30_WORK1 DI |
623 | savelij | 98 | PUSH AF |
1026 | savelij | 99 | LD A,(NUM_ALT_PAGE) ; ⥪饩 ࠭ |
623 | savelij | 100 | PUSH AF |
1026 | savelij | 101 | AND 0x3E ; ॠ쭮 ࠭ ᨬ |
623 | savelij | 102 | LD BC,WIN_A0 |
103 | OUT (C),A |
||
104 | LD B,HIGH (WIN_P0) |
||
764 | savelij | 105 | LD A,RAM_EVODOS |
623 | savelij | 106 | OUT (C),A |
107 | IN A,(PEVO_CONF) |
||
108 | LD (WR_BF),A |
||
109 | OR 1 |
||
110 | OUT (PEVO_CONF),A |
||
111 | POP AF |
||
112 | LD (TEK_ROMPAGE),A |
||
113 | LD A,(HL) |
||
114 | LD (DOS_STEK),SP |
||
115 | LD SP,DOS_STEK |
||
1026 | savelij | 116 | PUSH HL ; HL = |
623 | savelij | 117 | PUSH DE |
118 | LD HL,(DOS_STEK) |
||
119 | LD DE,REG_IF |
||
1026 | savelij | 120 | REPT 8 |
623 | savelij | 121 | LDI |
1026 | savelij | 122 | ENDM |
665 | savelij | 123 | LD HL,EXIT_RST30 |
1026 | savelij | 124 | PUSH HL ; 襭 |
623 | savelij | 125 | LD HL,W_DATA |
126 | ADD A,A |
||
127 | ADD A,L |
||
128 | LD L,A |
||
129 | LD A,(HL) |
||
130 | INC L |
||
131 | LD H,(HL) |
||
132 | LD L,A |
||
133 | JP (HL) |
||
134 | |||
678 | savelij | 135 | EXIT_RST30 LD HL,REG_IF |
623 | savelij | 136 | LD DE,(DOS_STEK) |
1026 | savelij | 137 | REPT 8 |
623 | savelij | 138 | LDI |
1026 | savelij | 139 | ENDM |
623 | savelij | 140 | POP DE |
141 | POP HL |
||
142 | LD SP,(DOS_STEK) |
||
143 | LD A,(HL) |
||
144 | INC HL |
||
1026 | savelij | 145 | CP LOW ((EW_DATA-W_DATA) / 2) |
665 | savelij | 146 | JR C,EXIT_RST302 |
1026 | savelij | 147 | LD HL,FOR_RET ; 室 맮 |
665 | savelij | 148 | EXIT_RST302 PUSH HL |
764 | savelij | 149 | LD HL,(COPY_VIRT_BITS) |
150 | LD A,(MASK_MNT_DRV) |
||
678 | savelij | 151 | AND L |
1026 | savelij | 152 | LD A,ROM_ADD_BAS48 | 0x80 ; ࠭ 3D2F |
153 | JR NZ,EXIT_RST305 ; 롮 ROM 3D2F ਬ |
||
154 | LD HL,(VIRT_DRIVE) ; ઠ ࠬ᪠ |
||
835 | savelij | 155 | LD A,(MASK_WRK_DRV) |
832 | savelij | 156 | CP L |
1026 | savelij | 157 | LD A,ROM_ADD_BAS48 | 0x80 ; ࠭ 3D2F |
832 | savelij | 158 | JR Z,EXIT_RST305 |
1026 | savelij | 159 | LD A,ROM_BAS48 | 0x80 ; ࠭ 3D13 |
678 | savelij | 160 | EXIT_RST305 LD HL,(WR_BF) |
161 | LD BC,WIN_A0 |
||
162 | EXIT_RST303 CALL WR_BYTE_RET |
||
665 | savelij | 163 | LD A,L |
623 | savelij | 164 | POP HL |
165 | OUT (PEVO_CONF),A |
||
166 | POP AF |
||
665 | savelij | 167 | JP PO,EXIT_RST304 |
623 | savelij | 168 | EI |
678 | savelij | 169 | EXIT_RST304 POP BC |
623 | savelij | 170 | POP AF |
171 | EX (SP),HL |
||
172 | RET |
||
173 | |||
1026 | savelij | 174 | ; "A" 0x1F |
623 | savelij | 175 | W_OUT1F LD A,(REG_A) |
627 | savelij | 176 | LD (WR_1F),A |
1026 | savelij | 177 | AND %11110000 |
178 | RRCA |
||
179 | RRCA |
||
180 | RRCA |
||
181 | ADD A,LOW (.TABL_CMD) |
||
182 | LD L,A |
||
183 | ADC A,HIGH (.TABL_CMD) |
||
184 | SUB L |
||
185 | LD H,A |
||
186 | LD A,(HL) |
||
187 | INC HL |
||
188 | LD H,(HL) |
||
189 | LD L,A |
||
190 | JP (HL) |
||
191 | |||
192 | .TABL_CMD DW .CMD_00 |
||
193 | DW .CMD_10 |
||
194 | DW .CMD_20 |
||
195 | DW .CMD_30 |
||
196 | DW .CMD_40 |
||
197 | DW .CMD_50 |
||
198 | DW .CMD_60 |
||
199 | DW .CMD_70 |
||
200 | DW .CMD_80 |
||
201 | DW .CMD_90 |
||
202 | DW .CMD_A0 |
||
203 | DW .CMD_B0 |
||
204 | DW .CMD_C0 |
||
205 | DW .CMD_D0 |
||
206 | DW .CMD_E0 |
||
207 | DW .CMD_F0 |
||
208 | |||
209 | ; 00-0F ⠭ |
||
210 | .CMD_00 XOR A |
||
678 | savelij | 211 | LD (PORT_3F),A |
832 | savelij | 212 | LD (PORT_5F),A |
1026 | savelij | 213 | OUT (0x3F),A |
214 | OUT (0x5F),A |
||
215 | JR .INFF_BIT6 |
||
623 | savelij | 216 | |
1026 | savelij | 217 | ; 10-1F ᪠ |
218 | .CMD_10 LD A,(PORT_7F) |
||
678 | savelij | 219 | LD (PORT_3F),A |
1026 | savelij | 220 | OUT (0x3F),A |
623 | savelij | 221 | CALL DISK_NONE |
1026 | savelij | 222 | LD A,0x80 |
223 | JR C,.INFF_BIT61 |
||
224 | .INFF_BIT6 XOR A |
||
225 | .INFF_BIT61 LD (RD_1F),A |
||
226 | LD A,0xBF |
||
623 | savelij | 227 | LD (RD_FF),A |
228 | RET |
||
229 | |||
1026 | savelij | 230 | ; 20-3F 蠣 ।饬 ࠢ |
231 | .CMD_20 |
||
232 | .CMD_30 LD A,(PORT_3F) |
||
233 | .NAPRAVL NOP |
||
678 | savelij | 234 | LD (PORT_3F),A |
1026 | savelij | 235 | OUT (0x3F),A |
236 | JR .INFF_BIT6 |
||
623 | savelij | 237 | |
1026 | savelij | 238 | ; 40-5F 蠣 । |
239 | .CMD_40 |
||
240 | .CMD_50 LD A,(PORT_3F) |
||
623 | savelij | 241 | INC A |
678 | savelij | 242 | LD (PORT_3F),A |
1026 | savelij | 243 | OUT (0x3F),A |
244 | LD A,0x3C ; INC A |
||
245 | LD (.NAPRAVL),A |
||
246 | JR .INFF_BIT6 |
||
623 | savelij | 247 | |
1026 | savelij | 248 | ; 60-7F 蠣 |
249 | .CMD_60 |
||
250 | .CMD_70 LD A,(PORT_3F) |
||
623 | savelij | 251 | DEC A |
678 | savelij | 252 | LD (PORT_3F),A |
1026 | savelij | 253 | OUT (0x3F),A |
254 | LD A,0x3D ; DEC A |
||
255 | LD (.NAPRAVL),A |
||
256 | ; JR .INFF_BIT6 |
||
623 | savelij | 257 | |
1026 | savelij | 258 | ; 80-9F ⥭ ᥪ |
259 | .CMD_80 |
||
260 | .CMD_90 |
||
261 | ; JR .INFF_BIT6 |
||
623 | savelij | 262 | |
1026 | savelij | 263 | ; A0-BF ᥪ |
264 | .CMD_A0 |
||
265 | .CMD_B0 JR .INFF_BIT6 |
||
623 | savelij | 266 | |
1026 | savelij | 267 | .INFF_BIT7 XOR A |
623 | savelij | 268 | LD (RD_1F),A |
1026 | savelij | 269 | LD A,0x7F |
623 | savelij | 270 | LD (RD_FF),A |
271 | RET |
||
272 | |||
1026 | savelij | 273 | ; C0-CF ⥭ |
274 | .CMD_C0 JR .INFF_BIT6 |
||
623 | savelij | 275 | |
1026 | savelij | 276 | ; D0-DF ਭ㤨⥫쭮 뢠 |
277 | .CMD_D0 LD A,0xBF |
||
623 | savelij | 278 | LD (RD_FF),A |
279 | RET |
||
280 | |||
1026 | savelij | 281 | ; E0-EF ⥭ |
282 | .CMD_E0 |
||
283 | .CMD_F0 JR .INFF_BIT6 |
||
623 | savelij | 284 | |
1026 | savelij | 285 | ; "A" 0x3F |
623 | savelij | 286 | W_OUT3F LD A,(REG_A) |
678 | savelij | 287 | LD (PORT_3F),A |
1026 | savelij | 288 | OUT (0x3F),A |
623 | savelij | 289 | RET |
689 | savelij | 290 | |
1026 | savelij | 291 | ; "A" 0x5F |
623 | savelij | 292 | W_OUT5F LD A,(REG_A) |
678 | savelij | 293 | LD (PORT_5F),A |
1026 | savelij | 294 | OUT (0x5F),A |
623 | savelij | 295 | RET |
689 | savelij | 296 | |
1026 | savelij | 297 | ; "A" 0x7F |
623 | savelij | 298 | W_OUT7F LD A,(REG_A) |
678 | savelij | 299 | LD (PORT_7F),A |
1026 | savelij | 300 | OUT (0x7F),A |
623 | savelij | 301 | RET |
302 | |||
1026 | savelij | 303 | ; "A" 0xFF |
623 | savelij | 304 | W_OUTFF LD A,(REG_A) |
678 | savelij | 305 | LD (WR_FF),A |
1026 | savelij | 306 | OUT (0xFF),A |
623 | savelij | 307 | AND 3 |
1026 | savelij | 308 | LD (MASK_WRK_DRV),A ; |
623 | savelij | 309 | INC A |
310 | LD B,A |
||
1026 | savelij | 311 | LD A,%10000000 |
835 | savelij | 312 | .L1 RLCA |
313 | DJNZ .L1 |
||
1026 | savelij | 314 | LD (MASK_MNT_DRV),A ; ᪠ ᬮ |
623 | savelij | 315 | RET |
316 | |||
1026 | savelij | 317 | ; "A" (C) |
623 | savelij | 318 | W_OUTCA LD A,(REG_A) |
319 | W_OUTCA1 LD D,A |
||
1026 | savelij | 320 | LD BC,(REG_C) ; TR-DOS |
678 | savelij | 321 | LD A,C |
1026 | savelij | 322 | ; । |
323 | CP 0x1F |
||
623 | savelij | 324 | JP Z,W_OUT1F |
1026 | savelij | 325 | CP 0x3F |
623 | savelij | 326 | JR Z,W_OUT3F |
1026 | savelij | 327 | CP 0x5F |
623 | savelij | 328 | JR Z,W_OUT5F |
1026 | savelij | 329 | CP 0x7F |
623 | savelij | 330 | JR Z,W_OUT7F |
1026 | savelij | 331 | CP 0xFF |
623 | savelij | 332 | JR Z,W_OUTFF |
665 | savelij | 333 | CP LOW (WIN_A0) |
334 | JR Z,W_OUTCA3 |
||
335 | W_OUTCA4 OUT (C),D |
||
623 | savelij | 336 | RET |
337 | |||
1026 | savelij | 338 | ; ATM/PENTEVO |
678 | savelij | 339 | W_OUTCA3 LD A,B |
340 | LD HL,BB_CPU1 |
||
665 | savelij | 341 | CP HIGH (WIN_A1) |
342 | JR Z,W_OUTCA2 |
||
343 | CP HIGH (WIN_P2) |
||
344 | JR Z,W_OUTCA2 |
||
345 | LD HL,BB_CPU2 |
||
346 | CP HIGH (WIN_A2) |
||
347 | JR Z,W_OUTCA2 |
||
348 | CP HIGH (WIN_P2) |
||
349 | JR NZ,W_OUTCA4 |
||
678 | savelij | 350 | W_OUTCA2 LD E,B |
351 | PUSH DE |
||
352 | PUSH HL |
||
353 | CALL READ_WCPU12 |
||
354 | POP HL |
||
355 | POP DE |
||
356 | LD (HL),D |
||
665 | savelij | 357 | INC HL |
678 | savelij | 358 | LD (HL),E |
359 | JP WRITE_WCPU12 |
||
665 | savelij | 360 | |
1026 | savelij | 361 | ; "D" (C) |
623 | savelij | 362 | W_OUTCD LD A,(IREG_D) |
363 | JR W_OUTCA1 |
||
689 | savelij | 364 | |
1026 | savelij | 365 | ; । , OUTI |
623 | savelij | 366 | W_OUTI LD HL,(BUFF_SECT) |
367 | EXX |
||
368 | LD A,(HL) |
||
369 | INC HL |
||
370 | EXX |
||
371 | LD (HL),A |
||
372 | INC HL |
||
373 | LD (BUFF_SECT),HL |
||
374 | RET |
||
375 | |||
1026 | savelij | 376 | ; ⥭ 0x1F |
623 | savelij | 377 | W_IN1F LD A,(WR_1F) |
1026 | savelij | 378 | AND %11110000 |
379 | CP 0x10 |
||
380 | JR C,.L1 |
||
381 | CP 0x20 |
||
382 | JR C,.L3 |
||
383 | CP 0x80 |
||
384 | JR C,.L5 |
||
385 | CP 0xD0 |
||
386 | JR Z,.L1 |
||
623 | savelij | 387 | XOR A |
1026 | savelij | 388 | JR .L2 |
623 | savelij | 389 | |
1026 | savelij | 390 | .L5 LD A,(PORT_3F) |
391 | AND A |
||
392 | JR NZ,.L1 |
||
393 | LD A,%00100100 |
||
1027 | savelij | 394 | JR .L6 |
1026 | savelij | 395 | |
396 | .L3 LD A,(.INDEX) |
||
631 | savelij | 397 | XOR %00000100 |
1026 | savelij | 398 | JR .L4 |
631 | savelij | 399 | |
1026 | savelij | 400 | .L1 LD A,0x24 |
401 | .INDEX EQU $-1 |
||
402 | .L4 XOR %00000010 |
||
1027 | savelij | 403 | .L6 LD (.INDEX),A |
1026 | savelij | 404 | .L2 LD (RD_1F),A |
623 | savelij | 405 | LD (REG_A),A |
406 | RET |
||
407 | |||
1026 | savelij | 408 | ; ⥭ 0x3F |
678 | savelij | 409 | W_IN3F LD A,(PORT_3F) |
623 | savelij | 410 | LD (REG_A),A |
411 | RET |
||
689 | savelij | 412 | |
1026 | savelij | 413 | ; ⥭ 0x5F |
678 | savelij | 414 | W_IN5F LD A,(PORT_5F) |
623 | savelij | 415 | LD (REG_A),A |
416 | RET |
||
417 | |||
1026 | savelij | 418 | ; ⥭ 0x7F |
678 | savelij | 419 | W_IN7F LD A,(PORT_7F) |
623 | savelij | 420 | LD (REG_A),A |
421 | RET |
||
422 | |||
1026 | savelij | 423 | ; ⥭ 0xFF |
623 | savelij | 424 | W_INFF LD A,(RD_FF) |
425 | LD (REG_A),A |
||
426 | RET |
||
427 | |||
1026 | savelij | 428 | ; ⥭ "H" () |
623 | savelij | 429 | W_INHC LD A,(REG_C) |
1026 | savelij | 430 | ; । ⥭ |
431 | W_INHC1 CP 0x1F |
||
623 | savelij | 432 | JR NZ,W_INHC2 |
433 | LD A,(RD_1F) |
||
434 | LD (REG_H),A |
||
435 | RET |
||
436 | |||
1026 | savelij | 437 | W_INHC2 CP 0x3F |
623 | savelij | 438 | JR NZ,W_INHC3 |
678 | savelij | 439 | LD A,(PORT_3F) |
623 | savelij | 440 | LD (REG_H),A |
441 | RET |
||
442 | |||
1026 | savelij | 443 | W_INHC3 CP 0x5F |
623 | savelij | 444 | JR NZ,W_INHC4 |
678 | savelij | 445 | LD A,(PORT_5F) |
623 | savelij | 446 | LD (REG_H),A |
447 | RET |
||
448 | |||
1026 | savelij | 449 | W_INHC4 CP 0x7F |
623 | savelij | 450 | JR NZ,W_INHC5 |
678 | savelij | 451 | LD A,(PORT_7F) |
623 | savelij | 452 | LD (REG_H),A |
453 | RET |
||
454 | |||
1026 | savelij | 455 | W_INHC5 CP 0xFF |
623 | savelij | 456 | JR NZ,W_INHC6 |
457 | LD A,(WR_FF) |
||
458 | LD (REG_H),A |
||
459 | RET |
||
460 | |||
461 | W_INHC6 LD BC,(REG_C) |
||
462 | IN A,(C) |
||
463 | LD (REG_H),A |
||
464 | RET |
||
465 | |||
1026 | savelij | 466 | ; ⥭ INI |
623 | savelij | 467 | W_INI LD A,(RD_1F) |
468 | LD HL,(REG_L) |
||
469 | LD (HL),A |
||
470 | INC HL |
||
471 | DEC B |
||
472 | LD (REG_L),HL |
||
473 | RET |
||
474 | |||
689 | savelij | 475 | ;[ ] |
623 | savelij | 476 | READ_SEC_ LD A,(WR_1F) |
1026 | savelij | 477 | AND 0x0F0 |
478 | CP 0x80 |
||
479 | JP C,W_OUT1F.INFF_BIT6 |
||
480 | CP 0xC0 |
||
623 | savelij | 481 | JR NZ,READ_SEC_1 |
678 | savelij | 482 | LD A,(PORT_3F) |
623 | savelij | 483 | LD HL,(REG_L) |
484 | LD (HL),A |
||
485 | INC HL |
||
486 | DEC B |
||
678 | savelij | 487 | LD A,(PORT_5F) |
623 | savelij | 488 | LD (HL),A |
489 | INC HL |
||
490 | DEC B |
||
491 | LD (REG_L),HL |
||
492 | RET |
||
493 | |||
1026 | savelij | 494 | ; ⥭/ ᥪ |
495 | ; IXL = 0 - ⥭, = FF - |
||
689 | savelij | 496 | READ_WRITE_SEC PUSH IX |
497 | JR WRITE_SEC_1 |
||
498 | |||
1026 | savelij | 499 | ; ⥭ ᥪ |
623 | savelij | 500 | READ_SEC_1 PUSH IX |
501 | LD IXL,0 |
||
502 | JR WRITE_SEC_1 |
||
503 | |||
1026 | savelij | 504 | ; ᥪ |
623 | savelij | 505 | WRITE_SEC_ PUSH IX |
1026 | savelij | 506 | LD IXL,0xFF |
678 | savelij | 507 | WRITE_SEC_1 CALL READ_WCPU12 |
508 | CALL W_WR_RD_SECT |
||
1026 | savelij | 509 | LD IX,0x8090 |
510 | LD (REG_F),IX ; 䫠 ᯥ譮 ⥭/ ᥪ |
||
678 | savelij | 511 | CALL WRITE_WCPU12 |
623 | savelij | 512 | POP IX |
513 | RET |
||
514 | |||
1026 | savelij | 515 | FIND_SECTOR LD BC,WIN_A1 |
516 | LD A,0x40 |
||
665 | savelij | 517 | OUT (C),A |
518 | LD B,HIGH (WIN_P1) |
||
736 | savelij | 519 | LD A,RAM_RAMDISK |
1026 | savelij | 520 | OUT (C),A ; ࠭ ࠬ᪠ |
521 | LD A,(PORT_3F) ; ४ |
||
522 | ADD A,A ; 2 |
||
623 | savelij | 523 | LD C,A |
524 | LD A,(WR_FF) |
||
1026 | savelij | 525 | AND 0x10 ; ઠ ᪠ |
526 | JR NZ,.L1 |
||
527 | INC C ; 1 |
||
528 | .L1 LD B,HIGH (CPU1) + 2 ; 砫 ᥪ |
||
529 | LD A,(PORT_5F) ; ᥪ |
||
623 | savelij | 530 | LD L,A |
531 | LD H,0 |
||
1026 | savelij | 532 | .L3 LD A,(BC) |
533 | LD D,A ; ᥪ |
||
623 | savelij | 534 | INC B |
535 | LD A,(BC) |
||
1026 | savelij | 536 | LD E,A ; ࠧ ᥪ |
623 | savelij | 537 | INC B |
1026 | savelij | 538 | LD A,D |
539 | AND A |
||
540 | SCF |
||
541 | RET Z |
||
623 | savelij | 542 | LD A,L |
543 | CP D |
||
1026 | savelij | 544 | RET Z |
623 | savelij | 545 | LD A,E |
546 | ADD A,H |
||
547 | LD H,A |
||
1026 | savelij | 548 | JR .L3 |
623 | savelij | 549 | |
1026 | savelij | 550 | ; ⥭ ᥪ ࠬ᪠ |
551 | W_WR_RD_SECT LD A,(WR_FF) |
||
552 | AND 3 |
||
553 | INC A |
||
554 | LD B,A |
||
555 | LD A,%10000000 |
||
556 | .L1 RLCA |
||
557 | DJNZ .L1 |
||
558 | LD B,A |
||
559 | LD A,(COPY_VIRT_BITS) |
||
560 | AND B |
||
561 | JP NZ,WR_RD_SEC_M ; ࠡ ਬ ࠧ |
||
562 | CALL FIND_SECTOR |
||
563 | JR NC,.L2 |
||
564 | ; ᥪ , 室 |
||
565 | LD A,0x10 ; ⠭ 訡 ᥪ |
||
566 | JP W_IN1F.L2 |
||
567 | |||
568 | .L2 LD A,E |
||
623 | savelij | 569 | RRCA |
1026 | savelij | 570 | LD (PORT_7F),A ; ࠧ ᥪ |
623 | savelij | 571 | LD L,0 |
572 | LD E,L |
||
573 | SRL H |
||
1026 | savelij | 574 | RR L ; HL = ᬥ饭 ᥪ |
678 | savelij | 575 | LD B,HIGH (CPU1) |
623 | savelij | 576 | LD A,(BC) |
577 | LD D,A |
||
1026 | savelij | 578 | ADD HL,DE ; HL = ᬥ饭 砫 ࠭ |
623 | savelij | 579 | INC B |
580 | LD A,(BC) |
||
1026 | savelij | 581 | LD C,A ; ᬥ饭 ࠭ 砫 ࠬ᪠ |
623 | savelij | 582 | LD A,H |
678 | savelij | 583 | CP HIGH (CPU1) |
1026 | savelij | 584 | JR C,.L5 |
585 | SUB 0x40 |
||
623 | savelij | 586 | LD H,A |
587 | INC C |
||
1026 | savelij | 588 | ; HL = ᬥ饭 ࠭ 砫 ᥪ |
589 | .L5 LD A,C ; ᬥ饭 ࠭, 㪠 ᥪ 稭 |
||
590 | ADD A,RAM_DATARAMD ; ਡ 砫 ࠬ +1. 0 ࠭ ࠬ᪠ ⥫ ᥪ |
||
591 | LD IXH,A ; ࠭ ࠭ |
||
665 | savelij | 592 | LD DE,(REG_L) |
593 | LD BC,(BB_CPU1) |
||
594 | LD A,C |
||
595 | LD C,LOW (WIN_A0) |
||
1026 | savelij | 596 | OUT (C),A ; 㫨 ⠭ 5 ࠭ |
597 | .S9 LD A,D ; ઠ ࠭ 㤠/㤠 |
||
678 | savelij | 598 | CP HIGH (CPU2) |
665 | savelij | 599 | PUSH DE |
600 | LD DE,CPU1+HIGH (WIN_P1) |
||
1026 | savelij | 601 | LD BC,WIN_A1 ; 孨 32 , 㦭 1 |
602 | JR NC,.S1 |
||
665 | savelij | 603 | LD DE,CPU2+HIGH (WIN_P2) |
1026 | savelij | 604 | LD B,HIGH (WIN_A2) ; 32 , 㦭 2 |
605 | .S1 LD A,0x40 |
||
665 | savelij | 606 | OUT (C),A |
607 | LD B,E |
||
1026 | savelij | 608 | LD A,IXH ; ࠭ |
609 | OUT (C),A ; 稫 ࠭ |
||
610 | LD B,D ; 訩 砫 祭 ࠭ |
||
665 | savelij | 611 | POP DE |
612 | LD A,B |
||
623 | savelij | 613 | ADD A,H |
614 | LD H,A |
||
615 | LD A,IXL |
||
616 | AND A |
||
1026 | savelij | 617 | JR NZ,.I1 |
623 | savelij | 618 | LD A,D |
619 | INC A |
||
1026 | savelij | 620 | JR NZ,.I1 |
623 | savelij | 621 | LD A,E |
622 | AND A |
||
1026 | savelij | 623 | JR Z,.I1 |
624 | NEG |
||
623 | savelij | 625 | LD C,A |
626 | LD B,0 |
||
627 | LDIR |
||
628 | NEG |
||
629 | LD C,A |
||
1026 | savelij | 630 | .I2 EX DE,HL |
623 | savelij | 631 | ADD HL,BC |
632 | EX DE,HL |
||
633 | ADD HL,BC |
||
678 | savelij | 634 | LD A,(PORT_7F) |
1026 | savelij | 635 | JP .S8_ |
623 | savelij | 636 | |
1026 | savelij | 637 | .I1 LD A,D |
678 | savelij | 638 | CP HIGH (CPU1) |
1026 | savelij | 639 | JR NC,.I3 |
678 | savelij | 640 | LD A,(PORT_7F) |
623 | savelij | 641 | AND A |
1026 | savelij | 642 | LD BC,0x80 |
643 | JR Z,.I2 |
||
644 | LD BC,0x100 |
||
645 | JR .I2 |
||
623 | savelij | 646 | |
1026 | savelij | 647 | .I3 CP HIGH (CPU2) ; ઠ 室 ࠭ ࠭ |
648 | JP NC,.S3 ; ࠧ 㥬 |
||
678 | savelij | 649 | CP HIGH (CPU2)-1 |
1026 | savelij | 650 | JP C,.S3 ; ⠪ ࠧ 㥬 |
623 | savelij | 651 | LD A,E |
1026 | savelij | 652 | AND A ; ᥪ 㪫뢥 ࠭, ࠧ 㥬 |
653 | JR Z,.S3 ; ਭ㤨⥫쭮 㥬 ਥ |
||
654 | LD A,IXL ; ⥭ ? |
||
623 | savelij | 655 | AND A |
1026 | savelij | 656 | LD A,E ; 訩 |
657 | JR Z,.S4 |
||
658 | EX DE,HL ; 塞 ࠢ |
||
659 | .S4 NEG |
||
660 | LD C,A ; 㥬 ⮪ |
||
623 | savelij | 661 | LD B,0 |
662 | LDIR |
||
663 | NEG |
||
1026 | savelij | 664 | PUSH AF ; ⠫ 쪮 ⠫ 砫 饣 |
665 | savelij | 665 | LD BC,(BB_CPU2) |
666 | LD A,C |
||
667 | LD C,LOW (WIN_A0) |
||
668 | OUT (C),A |
||
669 | LD B,HIGH (WIN_A1) |
||
1026 | savelij | 670 | LD A,0x40 |
665 | savelij | 671 | OUT (C),A |
623 | savelij | 672 | LD B,HIGH (WIN_P1) |
673 | LD A,IXH |
||
1026 | savelij | 674 | OUT (C),A ; ࠭ 砥 1 |
675 | LD A,IXL ; ⥭ |
||
623 | savelij | 676 | AND A |
1026 | savelij | 677 | JR Z,.S5 |
678 | LD A,D ; |
||
679 | SUB 0x40 ; 㤠 㣮 |
||
623 | savelij | 680 | LD D,A |
1026 | savelij | 681 | JR .S6 |
623 | savelij | 682 | |
1026 | savelij | 683 | .S5 LD A,H ; ⥭ |
684 | SUB 0x40 ; 㤠 㣮 |
||
623 | savelij | 685 | LD H,A |
1026 | savelij | 686 | .S6 POP AF |
687 | LD C,A ; 쪮 ⠫ |
||
623 | savelij | 688 | LD B,0 |
689 | LDIR |
||
678 | savelij | 690 | LD A,(PORT_7F) |
1026 | savelij | 691 | JR .S8_ |
623 | savelij | 692 | |
1026 | savelij | 693 | .S3 LD A,IXL ; ⥭ |
623 | savelij | 694 | AND A |
1026 | savelij | 695 | JR Z,.S7 |
696 | EX DE,HL ; 塞 ࠢ |
||
697 | .S7 LD A,(PORT_7F) |
||
623 | savelij | 698 | AND A |
1026 | savelij | 699 | JR NZ,.S8 |
700 | CALL COPYHBLOCK ; ᥪ ࠧ 128 㥬 室 |
||
701 | .ECOPY_BLOCK LD A,IXL |
||
623 | savelij | 702 | AND A |
1026 | savelij | 703 | JR Z,.ECOPY_BLOCK1 |
623 | savelij | 704 | EX DE,HL |
1026 | savelij | 705 | .ECOPY_BLOCK1 LD (REG_L),DE |
623 | savelij | 706 | RET |
707 | |||
1026 | savelij | 708 | .S8 CALL COPY_BLOCK ; ᥪ 256 㥬 室 |
709 | .S8_ DEC A |
||
710 | JR Z,.ECOPY_BLOCK |
||
678 | savelij | 711 | LD (PORT_7F),A |
623 | savelij | 712 | LD A,IXL |
713 | AND A |
||
1026 | savelij | 714 | JR Z,.S0 |
623 | savelij | 715 | EX DE,HL |
1026 | savelij | 716 | .S0 LD A,0x3F |
623 | savelij | 717 | AND H |
718 | LD H,A |
||
1026 | savelij | 719 | JP .S9 |
623 | savelij | 720 | |
721 | CP_TYPEDRIVE PUSH BC |
||
764 | savelij | 722 | PUSH HL |
1186 | savelij | 723 | LD H,CMOS.VIRT_REAL_DRIVE |
764 | savelij | 724 | CALL READCMOS |
725 | POP HL |
||
623 | savelij | 726 | AND 3 |
727 | LD B,A |
||
728 | LD A,(TRD_5CF6) |
||
729 | CP B |
||
730 | POP BC |
||
731 | RET |
||
732 | |||
1026 | savelij | 733 | ; ⠭ ६ ⥪饣 ਢ |
1186 | savelij | 734 | SET_DRIVENAME LD H,CMOS.VIRT_REAL_DRIVE |
623 | savelij | 735 | CALL READCMOS |
736 | RRCA |
||
737 | RRCA |
||
738 | AND 3 |
||
739 | LD (TRD_5D19),A |
||
740 | LD (TRD_5CF6),A |
||
1026 | savelij | 741 | OR 0x3C |
678 | savelij | 742 | LD (TRD_5D16),A |
623 | savelij | 743 | RET |
744 | |||
1026 | savelij | 745 | ; ଠ ram ᪠ |
623 | savelij | 746 | FORMAT_RAM LD A,(TRD_5CF6) |
747 | LD B,A |
||
748 | INC B |
||
831 | savelij | 749 | LD A,%00001000 |
623 | savelij | 750 | RLCA |
751 | DJNZ $-1 |
||
752 | LD B,A |
||
806 | savelij | 753 | ; LD A,(COPY_VIRT_BITS) |
754 | RST8D _MOUNTER,_GET_VIRT_BITS |
||
831 | savelij | 755 | LD (COPY_VIRT_BITS),A |
623 | savelij | 756 | AND B |
1026 | savelij | 757 | JR NZ,FORMAT_RAM3 ; =1 ଠ ਬ ࠧ |
623 | savelij | 758 | CALL CP_TYPEDRIVE |
1026 | savelij | 759 | RET NZ ; 室 ଠ ५쭮 ᪠ |
760 | CALL CREATE_TRDTABL ; ଠ ࠬ᪠ |
||
623 | savelij | 761 | XOR A |
762 | RET |
||
763 | |||
764 | FORMAT_RAM3 LD HL,TRD_5D25 |
||
765 | LD DE,TRD_5D26 |
||
1026 | savelij | 766 | LD BC,0xFF |
623 | savelij | 767 | LD (HL),B |
768 | LDIR |
||
769 | LD D,B |
||
770 | LD E,B |
||
1026 | savelij | 771 | LD B,0x10 |
623 | savelij | 772 | FORMAT_RAM1 PUSH BC |
773 | PUSH DE |
||
774 | LD B,1 |
||
775 | LD HL,TRD_5D25 |
||
776 | CALL COM_06 |
||
777 | POP DE |
||
778 | POP BC |
||
779 | INC E |
||
780 | DJNZ FORMAT_RAM1 |
||
781 | XOR A |
||
782 | RET |
||
783 | |||
1026 | savelij | 784 | ; ઠ થ ࠬ᪠ |
678 | savelij | 785 | CMP_RAM_DISK CALL READ_WCPU12 |
786 | LD BC,WIN_P1 |
||
736 | savelij | 787 | LD A,RAM_RAMDISK |
623 | savelij | 788 | OUT (C),A |
1026 | savelij | 789 | LD HL,CPU1+0x3FFF |
623 | savelij | 790 | LD D,(HL) |
791 | DEC H |
||
1026 | savelij | 792 | LD E,(HL) ; ન થ |
678 | savelij | 793 | CALL WRITE_WCPU12 |
794 | LD HL,"RD" |
||
795 | AND A |
||
623 | savelij | 796 | SBC HL,DE |
1026 | savelij | 797 | RET Z ; થ , ࠬ ᮧ |
798 | ; ᮧ ⮣ ࠬ᪠ |
||
678 | savelij | 799 | CREATE_TRDTABL LD BC,WIN_P1 |
1026 | savelij | 800 | LD A,RAM_RAMDISK ; 㦭 ࠭ 砫 ࠬ᪠, 㤥 ⠡ ⥫ |
678 | savelij | 801 | OUT (C),A |
802 | LD HL,CPU1 |
||
623 | savelij | 803 | PUSH HL |
678 | savelij | 804 | LD DE,CPU1+1 |
1026 | savelij | 805 | LD BC,0x3FFF |
623 | savelij | 806 | LD (HL),L |
1026 | savelij | 807 | LDIR ; ⨫ ࠭ |
808 | POP DE ; 砫 |
||
809 | LD HL,0 ; ᬥ饭 ࠭ |
||
810 | LD A,0xA0 |
||
702 | savelij | 811 | ELT2 PUSH AF |
1026 | savelij | 812 | LD BC,0x1000 ; 稪 ᥪ |
623 | savelij | 813 | LD A,L |
814 | RRCA |
||
815 | RRCA |
||
1026 | savelij | 816 | LD (DE),A ; ᬥ饭 ࠭ |
623 | savelij | 817 | INC D |
818 | LD A,H |
||
1026 | savelij | 819 | LD (DE),A ; ᬥ饭 ࠭ |
623 | savelij | 820 | INC D |
821 | ELT1 INC C |
||
822 | LD A,C |
||
1026 | savelij | 823 | LD (DE),A ; ᥪ |
623 | savelij | 824 | INC D |
825 | LD A,2 |
||
1026 | savelij | 826 | LD (DE),A ; ࠧ ᥪ |
623 | savelij | 827 | INC D |
1026 | savelij | 828 | DJNZ ELT1 ; ᨬ ⠡ ᥪ ࠧࠬ |
829 | LD D,HIGH (CPU1) ; 㫨 㪠⥫ 砫 |
||
830 | INC E ; 饩 |
||
831 | LD BC,0x40 |
||
832 | ADD HL,BC ; 室 饩 |
||
702 | savelij | 833 | POP AF |
623 | savelij | 834 | DEC A |
1026 | savelij | 835 | JR NZ,ELT2 ; 塞 |
836 | LD HL,CPU1+0x3FFF |
||
837 | LD (HL),"R" ; ᨬ થ ࠬ᪠ |
||
623 | savelij | 838 | DEC H |
839 | LD (HL),"D" |
||
678 | savelij | 840 | LD BC,WIN_P1 |
736 | savelij | 841 | LD A,RAM_DATARAMD |
678 | savelij | 842 | OUT (C),A |
843 | LD HL,CPU1 |
||
844 | LD DE,CPU1+1 |
||
1026 | savelij | 845 | LD BC,0x0FFF |
623 | savelij | 846 | LD (HL),L |
847 | LDIR |
||
848 | LD HL,DSKINFO |
||
1026 | savelij | 849 | LD DE,CPU1+0x8E1 |
623 | savelij | 850 | LD BC,DSK_END-DSKINFO |
851 | LDIR |
||
806 | savelij | 852 | LD BC,WIN_A1 |
1026 | savelij | 853 | LD A,0x7A |
806 | savelij | 854 | OUT (C),A |
855 | RET |
||
856 | |||
1026 | savelij | 857 | ; ⠭ 䨣樨 1,2 |
678 | savelij | 858 | WRITE_WCPU12 LD BC,(BB_CPU1) |
859 | LD A,C |
||
860 | LD C,LOW (WIN_A0) |
||
623 | savelij | 861 | OUT (C),A |
678 | savelij | 862 | LD BC,(BB_CPU2) |
863 | LD A,C |
||
864 | LD C,LOW (WIN_A0) |
||
865 | OUT (C),A |
||
866 | RET |
||
867 | |||
1026 | savelij | 868 | ; ⥭ 䨣樨 1,2 |
678 | savelij | 869 | READ_WCPU12 LD BC,RD_RAMNROM |
1026 | savelij | 870 | IN L,(C) ; RAM & ROM |
678 | savelij | 871 | INC B |
1026 | savelij | 872 | IN H,(C) ; DOS & 7FFD |
678 | savelij | 873 | ADD HL,HL |
874 | LD B,HIGH (RD_1WINA1) |
||
875 | IN A,(C) |
||
1026 | savelij | 876 | CP 0xC0 |
678 | savelij | 877 | JR NC,RST30_01 |
878 | LD E,A |
||
879 | LD D,HIGH (WIN_P1) |
||
880 | JR RST30_02 |
||
881 | |||
882 | RST30_01 RLCA |
||
883 | RLCA |
||
884 | SLA L |
||
885 | RRA |
||
886 | SLA H |
||
887 | RRA |
||
888 | LD E,A |
||
889 | LD D,HIGH (WIN_A1) |
||
890 | RST30_02 LD (BB_CPU1),DE |
||
891 | INC B |
||
892 | IN A,(C) |
||
1026 | savelij | 893 | CP 0xC0 |
678 | savelij | 894 | JR NC,RST30_03 |
895 | LD E,A |
||
896 | LD D,HIGH (WIN_P2) |
||
897 | JR RST30_04 |
||
898 | |||
899 | RST30_03 RLCA |
||
900 | RLCA |
||
901 | SLA L |
||
902 | RRA |
||
903 | SLA H |
||
904 | RRA |
||
905 | LD E,A |
||
906 | LD D,HIGH (WIN_A2) |
||
907 | RST30_04 LD (BB_CPU2),DE |
||
908 | RET |
||
909 | |||
910 | DISK_NONE PUSH HL |
||
911 | PUSH BC |
||
912 | CALL READ_WCPU12 |
||
913 | LD BC,WIN_A1 |
||
1026 | savelij | 914 | LD A,0x40 |
678 | savelij | 915 | OUT (C),A |
916 | LD B,HIGH (WIN_P1) |
||
736 | savelij | 917 | LD A,RAM_RAMDISK |
678 | savelij | 918 | OUT (C),A |
1026 | savelij | 919 | LD HL,CPU1+0x3FFF |
678 | savelij | 920 | LD A,(HL) |
921 | DEC H |
||
922 | CP "R" |
||
923 | SCF |
||
924 | JR NZ,DISK_NONE1 |
||
925 | LD A,(HL) |
||
926 | CP "D" |
||
927 | SCF |
||
928 | JR NZ,DISK_NONE1 |
||
929 | XOR A |
||
930 | DISK_NONE1 PUSH AF |
||
931 | CALL WRITE_WCPU12 |
||
932 | POP AF |
||
623 | savelij | 933 | POP BC |
678 | savelij | 934 | POP HL |
623 | savelij | 935 | RET |