Rev 1120 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
507 | savelij | 1 | |
1186 | savelij | 2 | ; LAST UPDATE: 07.02.2025 savelij |
507 | savelij | 3 | |
1120 | savelij | 4 | include macros.a80 |
5 | include define.a80 |
||
6 | include global_vars.a80 |
||
7 | include ports_ngs.a80 |
||
8 | include sdcomand.a80 |
||
9 | include ports_ide.a80 |
||
10 | include nums_devices.a80 |
||
11 | include fat_dir.a80 |
||
680 | savelij | 12 | |
1120 | savelij | 13 | INIT_VAR DRV_VAR |
14 | SETVAR BUF_512_, 0x200 ; ᥪ |
||
1186 | savelij | 15 | FATVAR |
16 | _INIT_VAR INITVAR ; ६ FAT |
||
17 | include fat_vars.a80 |
||
1120 | savelij | 18 | SETVAR_ALIGN |
19 | SUBVAR (WORD + WORD + BYTE + BYTE) |
||
20 | SETVAR LENGHT, WORD ; 䠩 |
||
21 | SETVAR LOADSCS1, WORD ; 뢠 ࠩ |
||
22 | SETVAR MAS_SLA, BYTE ; ᪠ MASTER/SLAVE |
||
23 | SETVAR NUM_DEVICE, BYTE ; ன⢠ ᪠ |
||
680 | savelij | 24 | |
1120 | savelij | 25 | ORG INITVAR |
26 | |||
27 | ; 室: A - ࠭ ன⢠ |
||
28 | ; BCDE - ᪠ 䠩 |
||
507 | savelij | 29 | DI |
30 | LD A,(NUM_DEVICE) |
||
831 | savelij | 31 | CP _SD_SDZ |
1120 | savelij | 32 | LD HL,READ_ZSD ; ࠩ SD ZC |
507 | savelij | 33 | JR Z,SETLOADER |
831 | savelij | 34 | CP _SD_SDG |
1120 | savelij | 35 | LD HL,READ_NEOGS ; ࠩ SD NGS |
507 | savelij | 36 | JR Z,SETLOADER |
831 | savelij | 37 | CP _HDD_NEMO_MASTER |
1120 | savelij | 38 | LD HL,RD_HDD_NEMO ; ࠩ HDD NEMO |
39 | IFDEF ALL_DRVS |
||
507 | savelij | 40 | JR Z,SETLOADER |
831 | savelij | 41 | CP _HDD_SMUC_MASTER |
1120 | savelij | 42 | LD HL,RD_HDD_SMUC ; ࠩ HDD SMUC |
585 | savelij | 43 | JR Z,SETLOADER |
831 | savelij | 44 | CP _HDD_DIVIDE_MASTER |
1120 | savelij | 45 | LD HL,RD_HDD_DIVIDE ; ࠩ HDD DIVIDE |
585 | savelij | 46 | JR Z,SETLOADER |
1120 | savelij | 47 | LD HL,RD_HDD_PROFI ; ࠩ HDD PROFI |
48 | ENDIF |
||
49 | SETLOADER LD (LOADSCS1),HL ; ⠭ ⠫ ᥪ |
||
507 | savelij | 50 | LD A,(MAS_SLA) |
51 | AND A |
||
1120 | savelij | 52 | LD A,0xE0 |
507 | savelij | 53 | JR Z,SETMASL |
1120 | savelij | 54 | LD A,0xF0 |
507 | savelij | 55 | SETMASL LD (MAS_SLA),A |
1186 | savelij | 56 | LD BC,(FATVAR.FILE_SRC + _DIR_FstClusHI) |
57 | LD (FATVAR.AFILCLS+2),BC |
||
58 | LD DE,(FATVAR.FILE_SRC + _DIR_FstClusLO) |
||
59 | LD (FATVAR.AFILCLS),DE |
||
60 | LD A,(FATVAR.FILE_SRC + _DIR_Ext + 1) |
||
61 | CP 'P' |
||
1120 | savelij | 62 | JP Z,RUNSPG2 ; 室 SPG 䠩 |
1186 | savelij | 63 | CP 'N' |
1120 | savelij | 64 | JP Z,RUNSNA ; 室 SNA 䠩 |
65 | CALL REALSEC ; ८ࠧ ᥪ |
||
66 | CALL LOADLST ; 㧨 |
||
507 | savelij | 67 | EXX |
1120 | savelij | 68 | LD HL,(BUF_512_ + _DIR_Ext + 1) |
69 | LD (0x5D45),HL ; |
||
70 | LD HL,(BUF_512_ + _DIR_Attr) |
||
71 | LD (LENGHT),HL ; ⠭ 䠩 |
||
72 | LD DE,0x11 |
||
73 | ADD HL,DE ; ய HOBETA |
||
507 | savelij | 74 | LD A,L |
75 | AND A |
||
1120 | savelij | 76 | JR Z,READ01 ; 訩 0 |
77 | INC H ; 訩 +1 |
||
507 | savelij | 78 | READ01 LD A,H |
1120 | savelij | 79 | SRL A ; 2 FAT ᥪ 512 |
80 | ADC A,0 ; 뢠 / |
||
81 | DEC A ; ᥪ 㦥, 㧨 1 |
||
507 | savelij | 82 | EXX |
1120 | savelij | 83 | JP Z,LDIRBUF ; ᥪ 1 ७ |
961 | savelij | 84 | DEC A |
1120 | savelij | 85 | LD IXL,A ; ⢮ ᥪ - 1 |
86 | JP Z,READ08 ; 䠩 2 ᥪ |
||
507 | savelij | 87 | EXX |
1120 | savelij | 88 | CALL LD_ONES ; ७ ⪮ ࢮ ᥪ |
89 | PUSH DE ; 㤠 㧨 |
||
507 | savelij | 90 | EXX |
1120 | savelij | 91 | LD HL,1 ; ᥪ 㦥 㦥 |
92 | ADD HL,DE ; 㧨 饣 ᥪ |
||
507 | savelij | 93 | EX DE,HL |
94 | JR NC,READ04 |
||
1120 | savelij | 95 | INC BC ; BCDE = BCDE + 1 |
96 | READ04 POP HL ; HL த 㧪 |
||
1186 | savelij | 97 | LD IY,(FATVAR.SecPerClus) ; LY = ⢮ ᥪ |
507 | savelij | 98 | LD A,IXL |
1120 | savelij | 99 | CP IYL ; ᥪ ⠫ 祬 |
100 | JR C,READ02 ; 室 㧪 ⪠ ᥪ |
||
507 | savelij | 101 | INC IXL |
102 | LD A,IYL |
||
103 | CP 2 |
||
104 | JR C,READ07 |
||
105 | DEC A |
||
106 | JR READ05 |
||
107 | |||
108 | READ07 PUSH HL |
||
1186 | savelij | 109 | LD DE,(FATVAR.AFILCLS) |
110 | LD BC,(FATVAR.AFILCLS + 2) |
||
1120 | savelij | 111 | CALL RD_NEXT_CLUSTER ; 饣 |
1186 | savelij | 112 | LD (FATVAR.AFILCLS),DE |
113 | LD (FATVAR.AFILCLS + 2),BC |
||
1120 | savelij | 114 | CALL CHECK_LAST_CLUSTER ; ઠ 砭 FAT 楯窨 |
507 | savelij | 115 | POP HL |
1120 | savelij | 116 | JR C,RUNLOAD ; 稫, 㦥 |
507 | savelij | 117 | PUSH HL |
1120 | savelij | 118 | CALL REALSEC ; ८ࠧ ᥪ |
507 | savelij | 119 | POP HL |
1120 | savelij | 120 | LD A,IXL ; 쪮 ᥪ ⠫ 㧨 |
121 | CP IYL ; ࠢ ࠧ |
||
122 | JR C,READ02 ; ⠫ 㧨 ᥪ 祬 , 㦠 ⮪ |
||
123 | LD A,IYL ; 쪮 ᥪ 㦠 |
||
124 | READ05 CALL LOADSCS ; 㧪 ᥪ |
||
125 | LD A,IXL ; 쪮 ᥪ ᥣ 㦠 |
||
126 | SUB IYL ; 쪮 ᥪ ⮫쪮 㧨 |
||
127 | JR Z,RUNLOAD ; ᥪ 稫, 室 |
||
128 | LD IXL,A ; 쪮 ᥪ ⠫ 㧨 |
||
129 | JR READ07 ; த 㧪 |
||
507 | savelij | 130 | |
961 | savelij | 131 | ; ࠧ Hobeta 2 ᥪ |
132 | ; 㥬 墮 ࢮ ᥪ 㦠 ண ७ᮬ |
||
133 | READ08 EXX |
||
134 | CALL LD_ONES |
||
135 | PUSH DE |
||
136 | EXX |
||
137 | POP HL |
||
138 | LD IXL,1 |
||
139 | JR READ03 |
||
140 | |||
1120 | savelij | 141 | ; 㧪 ⢠ ᥪ, ⠫ ࠧ |
507 | savelij | 142 | READ02 AND A |
143 | JR Z,READ03 |
||
144 | CALL LOADSCS |
||
145 | READ03 PUSH HL |
||
146 | LD A,IXL |
||
147 | LD L,A |
||
148 | LD H,0 |
||
149 | ADD HL,DE |
||
150 | EX DE,HL |
||
151 | JR NC,READ06 |
||
152 | INC BC |
||
153 | READ06 CALL LOADLST |
||
154 | LD BC,(LENGHT) |
||
155 | EX DE,HL |
||
1120 | savelij | 156 | LD HL,0x11 |
507 | savelij | 157 | ADD HL,BC |
158 | LD B,H |
||
159 | LD C,L |
||
160 | EX DE,HL |
||
161 | POP DE |
||
162 | LD A,B |
||
163 | AND 1 |
||
164 | LD B,A |
||
605 | savelij | 165 | OR C |
166 | JR Z,RUNLOAD |
||
507 | savelij | 167 | LDIR |
1120 | savelij | 168 | ; 㦥 |
169 | RUNLOAD LD HL,0x2758 |
||
507 | savelij | 170 | EXX |
1120 | savelij | 171 | LD IY,0x5C3A |
507 | savelij | 172 | EI |
1120 | savelij | 173 | JP 0x1B7D ; ७ᥭ ᨪ ண |
507 | savelij | 174 | |
1120 | savelij | 175 | LDIRBUF LD HL,0x200 - 0x11 |
176 | LD DE,(BUF_512_ + 0x0B) |
||
507 | savelij | 177 | AND A |
178 | SBC HL,DE |
||
179 | JR NC,LDIRBUF1 |
||
180 | CALL LD_ONES |
||
181 | JP RUNLOAD |
||
182 | |||
1120 | savelij | 183 | LDIRBUF1 LD HL,BUF_512_ + 0x11 |
184 | LD DE,(BUF_512_ + 9) |
||
185 | LD BC,(BUF_512_ + 0x0B) |
||
507 | savelij | 186 | LDIR |
187 | JP RUNLOAD |
||
188 | |||
1120 | savelij | 189 | ; ७ ᪠ 㦥 㦥 ᥪ, 䠩 = 501 |
190 | LD_ONES LD HL,BUF_512_ + 0x11 |
||
191 | LD DE,(BUF_512_ + 9) |
||
192 | LD BC,0x200-0x11 |
||
507 | savelij | 193 | LDIR |
194 | RET |
||
195 | |||
1120 | savelij | 196 | ; 㧨 ᥪ ࠭ ன⢠ |
507 | savelij | 197 | LOADSCS PUSH HL |
198 | LD HL,(LOADSCS1) |
||
199 | EX (SP),HL |
||
200 | RET |
||
201 | |||
961 | savelij | 202 | ; ⥭ 䠩 |
203 | ; BCDE - 㤠 㧨 |
||
204 | ; IXL - ࠧ |
||
205 | ; IXH - ६ ६ |
||
206 | ; IYL - ⢮ ᥪ 㧪 |
||
207 | ; IYH - ᬥ饭 |
||
1120 | savelij | 208 | LOAD_FILE PUSH BC ; 訥 16 |
209 | PUSH DE ; 訥 16 |
||
210 | PUSH HL ; ࠭ 㧪 |
||
211 | CALL REALSEC ; ॢ ᥪ |
||
1186 | savelij | 212 | LD IX,(FATVAR.SecPerClus) |
1120 | savelij | 213 | LD A,IYH ; ᬥ饭 |
507 | savelij | 214 | LD L,A |
215 | LD H,0 |
||
216 | ADD HL,DE |
||
217 | EX DE,HL |
||
1120 | savelij | 218 | JR NC,.L1 |
219 | INC BC ; BCDE = ᥪ 㤠 㧨 |
||
220 | .L1 LD A,IYL ; ⢮ ᥪ 㧪 |
||
221 | CP IXL ; ࠧ |
||
222 | JP C,.L2 |
||
223 | LD A,IXL ; ࠧ |
||
224 | .L2 ADD A,IYH ; ᬥ饭 |
||
225 | CP IXL ; ࠧ |
||
226 | LD A,IYL ; ⢮ ᥪ 㧪 |
||
227 | JP C,.L5 |
||
228 | LD A,IXL ; ࠧ |
||
229 | SUB IYH ; ᬥ饭 |
||
230 | .L5 LD IXH,A ; TEMP VAR, 쪮 ᥪ ᥩ 㧨 |
||
231 | POP HL ; ⠭ 㧪 |
||
232 | CALL LOADSCS ; 㧨 ᥪ |
||
507 | savelij | 233 | POP DE |
1120 | savelij | 234 | POP BC ; ⠭ |
235 | LD A,IYH ; ᬥ饭 |
||
236 | ADD A,IXH ; TEMP VAR |
||
237 | CP IXL ; ࠧ |
||
238 | JP C,.L3 |
||
239 | SUB IXL ; ࠧ |
||
240 | .L3 LD IYH,A ; ᬥ饭 |
||
241 | JP C,.L4 |
||
242 | PUSH HL ; ࠭ 㧪 |
||
243 | CALL RD_NEXT_CLUSTER ; ⠫ 饣 |
||
244 | CALL CHECK_LAST_CLUSTER ; ਫ, ? |
||
245 | POP HL ; ⠭ 㧪 |
||
246 | RET C ; , 室 |
||
247 | .L4 LD A,IYL ; ⢮ ᥪ 㧪 |
||
248 | SUB IXH ; TEMP VAR |
||
507 | savelij | 249 | RET Z |
1120 | savelij | 250 | LD IYL,A ; ⢮ ᥪ 㧪 |
251 | JP NZ,LOAD_FILE |
||
507 | savelij | 252 | RET |
253 | |||
1120 | savelij | 254 | ; ઠ |
255 | CHECK_LAST_CLUSTER |
||
1186 | savelij | 256 | LD A,(FATVAR.FATType) |
507 | savelij | 257 | AND A |
1120 | savelij | 258 | JR NZ,.L1 |
259 | LD HL,0x0FF7 |
||
507 | savelij | 260 | SBC HL,DE |
261 | RET |
||
262 | |||
1120 | savelij | 263 | .L1 DEC A |
264 | JR NZ,.L2 |
||
265 | LD HL,0xFFF7 |
||
507 | savelij | 266 | SBC HL,DE |
267 | RET |
||
268 | |||
1120 | savelij | 269 | .L2 LD HL,0x0FFF |
507 | savelij | 270 | SBC HL,BC |
271 | RET NZ |
||
1120 | savelij | 272 | LD HL,0xFFF7 |
507 | savelij | 273 | SBC HL,DE |
274 | RET |
||
275 | |||
1120 | savelij | 276 | ; ⥭ 饣 |
1186 | savelij | 277 | RD_NEXT_CLUSTER LD A,(FATVAR.FATType) |
507 | savelij | 278 | AND A |
1120 | savelij | 279 | JR Z,.L1 |
507 | savelij | 280 | DEC A |
1120 | savelij | 281 | JR Z,.L2 |
507 | savelij | 282 | EX DE,HL |
283 | ADD HL,HL |
||
284 | EX DE,HL |
||
285 | LD HL,0 |
||
286 | ADC HL,BC |
||
1120 | savelij | 287 | ADD HL,BC ; HLDE = BCDE * 2 |
507 | savelij | 288 | LD A,E |
289 | LD E,D |
||
290 | LD D,L |
||
291 | LD C,H |
||
292 | LD B,0 |
||
1120 | savelij | 293 | CALL .L3 |
507 | savelij | 294 | INC HL |
295 | LD C,(HL) |
||
296 | INC HL |
||
297 | LD B,(HL) |
||
298 | RET |
||
299 | |||
1120 | savelij | 300 | .L2 LD BC,0 |
507 | savelij | 301 | LD A,E |
302 | LD E,D |
||
303 | LD D,C |
||
1120 | savelij | 304 | .L3 PUSH AF |
507 | savelij | 305 | PUSH BC |
1186 | savelij | 306 | LD HL,FATVAR.NumSecFAT1 |
507 | savelij | 307 | CALL BCDEHLP |
308 | CALL LOADLST |
||
309 | POP BC |
||
310 | POP AF |
||
311 | LD E,A |
||
312 | LD D,0 |
||
313 | ADD HL,DE |
||
314 | ADD HL,DE |
||
315 | LD E,(HL) |
||
316 | INC HL |
||
317 | LD D,(HL) |
||
961 | savelij | 318 | RET |
507 | savelij | 319 | |
1120 | savelij | 320 | .L1 LD H,D |
507 | savelij | 321 | LD L,E |
322 | ADD HL,HL |
||
323 | ADD HL,DE |
||
324 | SRL H |
||
325 | RR L |
||
326 | LD A,E |
||
327 | LD E,H |
||
328 | LD D,0 |
||
329 | LD B,D |
||
330 | LD C,D |
||
331 | SRL E |
||
332 | PUSH AF |
||
333 | PUSH HL |
||
1186 | savelij | 334 | LD DE,(FATVAR.NumSecFAT1) |
335 | LD BC,(FATVAR.NumSecFAT1 + 2) |
||
507 | savelij | 336 | CALL LOADLST |
337 | POP BC |
||
338 | LD A,B |
||
339 | AND 1 |
||
340 | LD B,A |
||
341 | ADD HL,BC |
||
342 | LD B,(HL) |
||
343 | INC HL |
||
344 | LD A,H |
||
1186 | savelij | 345 | CP HIGH (BUF_512_) + 2 |
1120 | savelij | 346 | JR NZ,.L4 |
507 | savelij | 347 | PUSH BC |
348 | LD BC,0 |
||
349 | INC DE |
||
350 | CALL LOADLST |
||
351 | POP BC |
||
1120 | savelij | 352 | .L4 POP AF |
507 | savelij | 353 | LD D,(HL) |
354 | LD E,B |
||
355 | LD BC,0 |
||
356 | RRA |
||
1120 | savelij | 357 | JR NC,.L5 |
961 | savelij | 358 | REPT 4 |
507 | savelij | 359 | SRL D |
360 | RR E |
||
961 | savelij | 361 | ENDM |
1120 | savelij | 362 | .L5 LD A,D |
363 | AND 0x0F |
||
507 | savelij | 364 | LD D,A |
961 | savelij | 365 | RET |
507 | savelij | 366 | |
1120 | savelij | 367 | ; ८ࠧ |
368 | ; ॠ쭮 ᥪ |
||
369 | ; 室: BCDE = |
||
370 | ; 室: BCDE = ᥪ |
||
961 | savelij | 371 | REALSEC LD A,B |
507 | savelij | 372 | OR C |
373 | OR D |
||
374 | OR E |
||
375 | JR NZ,REALSE1 |
||
1186 | savelij | 376 | LD DE,(FATVAR.NumSecRootDir) |
377 | LD BC,(FATVAR.NumSecRootDir + 2) |
||
961 | savelij | 378 | RET |
507 | savelij | 379 | |
1120 | savelij | 380 | REALSE1 LD HL,0xFFFE |
507 | savelij | 381 | EX DE,HL |
382 | ADD HL,DE |
||
383 | EX DE,HL |
||
384 | INC HL |
||
1120 | savelij | 385 | ADC HL,BC ; - 2 |
1186 | savelij | 386 | LD A,(FATVAR.SecPerClus) |
961 | savelij | 387 | JR REALSE2 |
507 | savelij | 388 | |
961 | savelij | 389 | REALSE3 SLA E |
507 | savelij | 390 | RL D |
391 | RL L |
||
392 | RL H |
||
961 | savelij | 393 | REALSE2 RRCA |
1120 | savelij | 394 | JR NC,REALSE3 ; 㬭 ࠧ |
507 | savelij | 395 | LD B,H |
396 | LD C,L |
||
1186 | savelij | 397 | LD HL,FATVAR.FirstSecData |
1120 | savelij | 398 | JP BCDEHLP ; ਡ ᬥ饭 砫 ࠧ |
507 | savelij | 399 | |
1120 | savelij | 400 | ; BCDE / 512 |
507 | savelij | 401 | BCDE200 LD E,D |
402 | LD D,C |
||
403 | LD C,B |
||
404 | LD B,0 |
||
405 | LD A,2 |
||
406 | JR BCDE_A |
||
407 | |||
1120 | savelij | 408 | ; BCDE >> A = BCDE |
507 | savelij | 409 | BCDE_A1 SRL B |
410 | RR C |
||
411 | RR D |
||
412 | RR E |
||
413 | BCDE_A RRCA |
||
414 | JR NC,BCDE_A1 |
||
415 | RET |
||
416 | |||
1120 | savelij | 417 | ; (ADR) - BCDE = BCDE |
507 | savelij | 418 | BCDEHLM LD A,(HL) |
419 | INC HL |
||
420 | SUB E |
||
421 | LD E,A |
||
422 | LD A,(HL) |
||
423 | INC HL |
||
424 | SBC A,D |
||
425 | LD D,A |
||
426 | LD A,(HL) |
||
427 | INC HL |
||
428 | SBC A,C |
||
429 | LD C,A |
||
430 | LD A,(HL) |
||
431 | SBC A,B |
||
432 | LD B,A |
||
433 | RET |
||
434 | |||
1120 | savelij | 435 | ; (ADR) + BCDE = BCDE |
507 | savelij | 436 | BCDEHLP LD A,(HL) |
437 | INC HL |
||
438 | ADD A,E |
||
439 | LD E,A |
||
440 | LD A,(HL) |
||
441 | INC HL |
||
442 | ADC A,D |
||
443 | LD D,A |
||
444 | LD A,(HL) |
||
445 | INC HL |
||
446 | ADC A,C |
||
447 | LD C,A |
||
448 | LD A,(HL) |
||
449 | ADC A,B |
||
450 | LD B,A |
||
451 | RET |
||
452 | |||
1120 | savelij | 453 | ; HLDE + BC = HLDE |
507 | savelij | 454 | HLDEPBC EX DE,HL |
455 | ADD HL,BC |
||
456 | EX DE,HL |
||
457 | LD BC,0 |
||
458 | ADC HL,BC |
||
459 | RET |
||
460 | |||
1120 | savelij | 461 | ; 㧪 ᥪ |
573 | savelij | 462 | LOADLST LD HL,BUF_512_ |
507 | savelij | 463 | PUSH HL |
464 | LD A,1 |
||
465 | CALL LOADSCS |
||
466 | POP HL |
||
467 | RET |
||
468 | |||
680 | savelij | 469 | include drivers/drv_zc.a80 |
470 | include drivers/drv_neogs.a80 |
||
471 | include drivers/drv_nemo.a80 |
||
1120 | savelij | 472 | IFDEF ALL_DRVS |
680 | savelij | 473 | include drivers/drv_smuc.a80 |
474 | include drivers/drv_divide.a80 |
||
475 | include drivers/drv_profi.a80 |
||
1120 | savelij | 476 | ENDIF |
680 | savelij | 477 | include spg2_run.a80 |
706 | Dimkam | 478 | include sna_run.a80 |