Rev 1010 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1010 | Rev 1028 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | 1 | ||
2 | ; LAST UPDATE: 19.07.2022 savelij |
2 | ; LAST UPDATE: 13.10.2022 savelij |
3 | 3 | ||
4 | COM_FAT EX AF,AF' |
4 | COM_FAT EX AF,AF' |
5 | CALL P5_READ_BYTE |
5 | CALL P5_READ_BYTE |
6 | LD A,(NEXTBYTERST8) |
6 | LD A,(NEXTBYTERST8) |
7 | PUSH IX |
7 | PUSH IX |
Line 41... | Line 41... | ||
41 | ERR_DRV LD SP,(ERORDRV) |
41 | ERR_DRV LD SP,(ERORDRV) |
42 | EXITDRV POP IY |
42 | EXITDRV POP IY |
43 | POP IX |
43 | POP IX |
44 | RET |
44 | RET |
45 | 45 | ||
46 | TABLFAT DW INIT_FATVARS ;00 ИНИЦИАЛИЗАЦИЯ ПЕРЕМЕННЫХ FAT |
46 | TABLFAT DW INIT_FATVARS ; инициализация переменных FAT |
47 | DW READ_DIR ;01 ПОЛУЧЕНИЕ ОПИСАТЕЛЯ ФАЙЛА |
47 | DW READ_DIR ; получение описателя файла |
48 | DW ENTER_DIR ;02 ВХОД/ВЫХОД В ДИР |
48 | DW ENTER_DIR ; вход/выход в дир |
49 | DW GET_PATH ;03 ПОЛУЧЕНИЕ ТЕКУЩЕГО ПУТИ |
49 | DW GET_PATH ; получение текущего пути |
50 | DW GET_LONGNAME ;04 ПОЛУЧЕНИЕ ДЛИННОГО ИМЕНИ ФАЙЛА |
50 | DW GET_LONGNAME ; получение длинного имени файла |
51 | DW FIND_NAME ;05 ПОИСК ПО ИМЕНИ |
51 | DW FIND_NAME ; поиск по имени |
52 | DW FIND_FILEITEM ;06 ПОИСК ВСЕХ ОПИСАТЕЛЕЙ С ВЫДАЧЕЙ НОМЕРОВ НАЙДЕННОГО |
52 | DW FIND_FILEITEM ; поиск всех описателей с выдачей номеров найденного |
53 | DW SET_MASK_EXT ;07 УСТАНОВКА МАСКИ РАСШИРЕНИЙ ДЛЯ ПОИСКА |
53 | DW SET_MASK_EXT ; установка маски расширений для поиска |
54 | DW OPEN_FILE ;08 ОТКРЫТИЕ ФАЙЛА |
54 | DW OPEN_FILE ; открытие файла |
55 | DW READ_FILE ;09 ПОСЛЕДОВАТЕЛЬНОЕ ЧТЕНИЕ ФАЙЛА |
55 | DW READ_FILE ; последовательное чтение файла |
56 | DW INIT_TEKDIR ;0A СОЗДАНИЕ ТАБЛИЦЫ КЛАСТЕРОВ ТЕКУЩЕЙ ДИРЕКТОРИИ |
56 | DW INIT_TEKDIR ; создание таблицы кластеров текущей директории |
57 | DW POS_FILES ;0B РАБОТА С ТЕКУЩЕЙ ПОЗИЦИЕЙ |
57 | DW POS_FILES ; работа с текущей позицией |
58 | DW ROOTDIR ;0C ВЫХОД В КОРНЕВУЮ ДИРЕКТОРИЮ |
58 | DW ROOTDIR ; выход в корневую директорию |
59 | 59 | ||
60 | ROOTDIR PUSH IY |
60 | ROOTDIR PUSH IY |
61 | LD IYL,INTERNAL |
61 | LD IYL,INTERNAL |
62 | LD A,(SETDVOL) |
62 | LD A,(SETDVOL) |
63 | LD D,A |
63 | LD D,A |
Line 108... | Line 108... | ||
108 | AND A |
108 | AND A |
109 | JR Z,RDFAT07 |
109 | JR Z,RDFAT07 |
110 | SCF |
110 | SCF |
111 | RET |
111 | RET |
112 | 112 | ||
113 | RDFAT07 |
- | |
114 | LD A,(BUF_512 + _BPB_SecPerClus) |
113 | RDFAT07 LD A,(BUF_512 + _BPB_SecPerClus) |
115 | LD (SecPerClus),A |
114 | LD (SecPerClus),A |
116 | LD HL,(BUF_512 + _BPB_RsvdSecCnt) |
115 | LD HL,(BUF_512 + _BPB_RsvdSecCnt) |
117 | ADD HL,DE |
116 | ADD HL,DE |
118 | LD (NumSecFAT1),HL |
117 | LD (NumSecFAT1),HL |
119 | LD HL,0 |
118 | LD HL,0 |
Line 123... | Line 122... | ||
123 | LD DE,(BUF_512 + _BPB_FATSz16) |
122 | LD DE,(BUF_512 + _BPB_FATSz16) |
124 | LD A,D |
123 | LD A,D |
125 | OR E |
124 | OR E |
126 | JR NZ,RDFAT01 ; если не FAT12/16 (_BPB_FATSz16 == 0) |
125 | JR NZ,RDFAT01 ; если не FAT12/16 (_BPB_FATSz16 == 0) |
127 | LD DE,(BUF_512 + _BPB_FATSz32) |
126 | LD DE,(BUF_512 + _BPB_FATSz32) |
128 | LD HL,(BUF_512 + _BPB_FATSz32 + 2) ; ТО БЕРЕМ ИЗ СМЕЩЕНИЯ +36 |
127 | LD HL,(BUF_512 + _BPB_FATSz32 + 2) ; то берем из смещения +36 |
129 | RDFAT01 LD (FATSize),DE |
128 | RDFAT01 LD (FATSize),DE |
130 | LD (FATSize + 2),HL ;ЧИСЛО СЕКТОРОВ НА FAT-ТАБЛИЦУ |
129 | LD (FATSize + 2),HL ; число секторов на FAT таблицу |
131 | 130 | ||
132 | LD HL,0 |
131 | LD HL,0 |
133 | LD DE,(BUF_512 + _BPB_TotSec16) |
132 | LD DE,(BUF_512 + _BPB_TotSec16) |
134 | LD A,D |
133 | LD A,D |
135 | OR E |
134 | OR E |
136 | JR NZ,.L1 ;ЕСЛИ НЕ FAT12/16 (BPB_TOTSEC16=0) |
135 | JR NZ,.L1 ; если не FAT12/16 (BPB_TOTSEC16=0) |
137 | LD DE,(BUF_512 + _BPB_TotSec32) |
136 | LD DE,(BUF_512 + _BPB_TotSec32) |
138 | LD HL,(BUF_512 + _BPB_TotSec32+2) |
137 | LD HL,(BUF_512 + _BPB_TotSec32+2) |
139 | ;ТО БЕРЕМ ИЗ СМЕЩЕНИЯ +32 |
138 | ; то берем из смещения +32 |
140 | .L1 LD (NumsSectorsVol + 2),HL |
139 | .L1 LD (NumsSectorsVol + 2),HL |
141 | LD (NumsSectorsVol),DE ;К-ВО СЕКТОРОВ НА ДИСКЕ/РАЗДЕЛЕ |
140 | LD (NumsSectorsVol),DE ; к-во секторов на диске/разделе |
142 | 141 | ||
143 | ; вычисляем ROOTDIRSECTORS |
142 | ; вычисляем ROOTDIRSECTORS |
144 | LD DE,(BUF_512 + _BPB_RootEntCnt) |
143 | LD DE,(BUF_512 + _BPB_RootEntCnt) |
145 | LD BC,0 |
144 | LD BC,0 |
146 | LD A,D |
145 | LD A,D |
147 | OR E |
146 | OR E |
148 | JR Z,RDFAT03 |
147 | JR Z,RDFAT03 |
149 | LD A,0X10 |
148 | LD A,0x10 |
150 | CALL BCDE_A |
149 | CALL BCDE_A |
151 | 150 | ||
152 | ;ЭТО РЕАЛИЗОВАНА ФОРМУЛА |
151 | ; это реализована формула |
153 | ;ROOTDIRSECTORS=((BPB_ROOTENTCNT*32)++(BPB_BYTSPERSEC-1))/BPB_BYTSPERSEC |
152 | ; ROOTDIRSECTORS = ((BPB_ROOTENTCNT * 32) + (BPB_BYTSPERSEC - 1)) / BPB_BYTSPERSEC |
154 | ;В HL ROOTDIRSECTORS. ЕСЛИ FAT32, ТО HL=0 ВСЕГДА |
153 | ; в HL ROOTDIRSECTORS. если FAT32, то HL = 0 всегда |
155 | 154 | ||
156 | RDFAT03 PUSH DE ;ROOTDIRSECTORS |
155 | RDFAT03 PUSH DE ; ROOTDIRSECTORS |
157 | LD HL,NumSecFAT1 |
156 | LD HL,NumSecFAT1 |
158 | CALL LOADZP |
157 | CALL LOADZP |
159 | LD A,(BUF_512 + _BPB_NumFATs) |
158 | LD A,(BUF_512 + _BPB_NumFATs) |
Line 184... | Line 183... | ||
184 | CALL BCDE_A |
183 | CALL BCDE_A |
185 | LD (NumsClustersVol),DE |
184 | LD (NumsClustersVol),DE |
186 | LD (NumsClustersVol + 2),BC |
185 | LD (NumsClustersVol + 2),BC |
187 | 186 | ||
188 | LD A,(FATType) |
187 | LD A,(FATType) |
189 | CP 0XFF |
188 | CP 0xFF |
190 | JR NZ,.L4 |
189 | JR NZ,.L4 |
191 | ; определение типа FAT при отсуствии MBR |
190 | ; определение типа FAT при отсуствии MBR |
- | 191 | LD HL,(BUF_512 + _BPB_FATSz16) |
|
- | 192 | LD A,H |
|
- | 193 | OR L |
|
- | 194 | LD A,2 |
|
- | 195 | JR Z,.L2 |
|
192 | LD DE,(FATSize - 1) |
196 | LD DE,(FATSize - 1) |
193 | LD BC,(FATSize + 1) |
197 | LD BC,(FATSize + 1) |
194 | LD E,0 ; BCDE = количество секторов * 0x100 |
198 | LD E,0 ; BCDE = количество секторов * 0x100 |
195 | PUSH BC |
- | |
196 | PUSH DE ; сохранили |
- | |
197 | SRL B |
- | |
198 | RR C |
- | |
199 | RR D |
- | |
200 | RR E ; BCDE = количество секторов * 0x80 |
- | |
201 | LD HL,NumsClustersVol ; количество кластеров на FAT |
199 | LD HL,NumsClustersVol ; количество кластеров на FAT |
202 | PUSH HL ; сохранили |
- | |
203 | CALL HLBCDEM ; количество кластеров - (количество секторов * 0x80) |
- | |
204 | LD A,E |
- | |
205 | AND 0x80 ; количество менее 128 кластеров в секторе для FAT32 |
- | |
206 | OR D |
- | |
207 | OR C |
- | |
208 | OR B |
- | |
209 | LD A,2 ; FAT32 |
- | |
210 | POP HL |
- | |
211 | POP DE |
- | |
212 | POP BC |
- | |
213 | JR Z,.L2 ; FAT32 если флаг Z=0 |
- | |
214 | CALL HLBCDEM ; количество кластеров - (количество секторов * 0x100) |
200 | CALL HLBCDEM ; количество кластеров - (количество секторов * 0x100) |
215 | LD A,D |
201 | LD A,D |
216 | OR C |
202 | OR C |
217 | OR B |
203 | OR B |
218 | LD A,1 ; FAT16 |
204 | LD A,1 ; FAT16 |
Line 294... | Line 280... | ||
294 | CALL SAVEZP |
280 | CALL SAVEZP |
295 | CALL POSTF02 |
281 | CALL POSTF02 |
296 | POP AF |
282 | POP AF |
297 | RET |
283 | RET |
298 | 284 | ||
299 | ;ЧТЕНИЕ СЛЕДУЮЩЕГО НОМЕРА КЛАСТЕРА |
285 | ; чтение следующего номера кластера |
300 | RDFATZP LD A,(FATType) |
286 | RDFATZP LD A,(FATType) |
301 | AND A |
287 | AND A |
302 | JR Z,RDFATS0 |
288 | JR Z,RDFATS0 |
303 | DEC A |
289 | DEC A |
304 | JR Z,RDFATS1 |
290 | JR Z,RDFATS1 |
Line 381... | Line 367... | ||
381 | REPT 4 |
367 | REPT 4 |
382 | SRL D |
368 | SRL D |
383 | RR E |
369 | RR E |
384 | ENDM |
370 | ENDM |
385 | RDFATS3 LD A,D |
371 | RDFATS3 LD A,D |
386 | AND 0X0F |
372 | AND 0x0F |
387 | LD D,A |
373 | LD D,A |
388 | RET |
374 | RET |
389 | 375 | ||
390 | ; вычисление номера реального сектора |
376 | ; вычисление номера реального сектора |
391 | ; На входе: BCDE = номер кластера FAT |
377 | ; На входе: BCDE = номер кластера FAT |
Line 397... | Line 383... | ||
397 | JR NZ,REALSE1 |
383 | JR NZ,REALSE1 |
398 | LD DE,(NumSecRootDir) |
384 | LD DE,(NumSecRootDir) |
399 | LD BC,(NumSecRootDir + 2) |
385 | LD BC,(NumSecRootDir + 2) |
400 | RET |
386 | RET |
401 | 387 | ||
402 | REALSE1 LD HL,0XFFFE |
388 | REALSE1 LD HL,0xFFFE |
403 | EX DE,HL |
389 | EX DE,HL |
404 | ADD HL,DE |
390 | ADD HL,DE |
405 | EX DE,HL |
391 | EX DE,HL |
406 | INC HL |
392 | INC HL |
407 | ADC HL,BC ;НОМЕР КЛАСТЕРА-2 |
393 | ADC HL,BC ; номер кластера-2 |
408 | LD A,(SecPerClus) |
394 | LD A,(SecPerClus) |
409 | JR REALSE2 |
395 | JR REALSE2 |
410 | 396 | ||
411 | REALSE3 SLA E |
397 | REALSE3 SLA E |
412 | RL D |
398 | RL D |
413 | RL L |
399 | RL L |
414 | RL H |
400 | RL H |
415 | REALSE2 RRCA |
401 | REALSE2 RRCA |
416 | JR NC,REALSE3 ;УМНОЖИЛИ НА РАЗМЕР КЛАСТЕРА |
402 | JR NC,REALSE3 ; умножили на размер кластера |
417 | LD B,H |
403 | LD B,H |
418 | LD C,L |
404 | LD C,L |
419 | LD HL,FirstSecData |
405 | LD HL,FirstSecData |
420 | JP BCDEHLP ;ПРИБАВИЛИ СМЕЩЕНИЕ ОТ НАЧАЛА РАЗДЕЛА |
406 | JP BCDEHLP ; прибавили смещение от начала раздела |
421 | 407 | ||
422 | ;СОХРАНЯЕМ СЕКТОР ЗАГРУЖЕННЫЙ В БУФЕР |
408 | ; сохраняем сектор загруженный в буфер |
423 | LSTSAVE LD DE,(NumSec2Buf) |
409 | LSTSAVE LD DE,(NumSec2Buf) |
424 | LD BC,(NumSec2Buf + 2) |
410 | LD BC,(NumSec2Buf + 2) |
425 | LD HL,BUF_512 |
411 | LD HL,BUF_512 |
426 | LD A,1 |
412 | LD A,1 |
427 | CALL TO_DRV |
413 | CALL TO_DRV |
428 | DB _DEV_WRITE |
414 | DB _DEV_WRITE |
429 | AND A |
415 | AND A |
430 | JP NZ,ERR_DRV |
416 | JP NZ,ERR_DRV |
431 | RET |
417 | RET |
432 | 418 | ||
433 | ;ЗАГРУЖАЕМ СЕКТОР В БУФЕР |
419 | ; загружаем сектор в буфер |
434 | LOADLST CALL CPNUMSC |
420 | LOADLST CALL CPNUMSC |
435 | JR NZ,LOADLS1 |
421 | JR NZ,LOADLS1 |
436 | LD HL,BUF_512 |
422 | LD HL,BUF_512 |
437 | RET |
423 | RET |
438 | 424 | ||
Line 464... | Line 450... | ||
464 | RET NZ |
450 | RET NZ |
465 | LD A,(HL) |
451 | LD A,(HL) |
466 | CP B |
452 | CP B |
467 | RET |
453 | RET |
468 | 454 | ||
469 | ;ПРОВЕРКА НА ПОСЛЕДНИЙ КЛАСТЕР |
455 | ; проверка на последний кластер |
470 | LST_CLS LD A,(FATType) ;ВЗЯЛИ ТИП FAT |
456 | LST_CLS LD A,(FATType) ; взяли тип FAT |
471 | AND A |
457 | AND A |
472 | JR NZ,LST_CL1 |
458 | JR NZ,LST_CL1 |
473 | LD HL,0X0FF7 ;ДЛЯ FAT12 |
459 | LD HL,0x0FF7 ; для FAT12 |
474 | SBC HL,DE |
460 | SBC HL,DE |
475 | RET |
461 | RET |
476 | 462 | ||
477 | LST_CL1 DEC A |
463 | LST_CL1 DEC A |
478 | JR NZ,LST_CL2 |
464 | JR NZ,LST_CL2 |
479 | LD HL,0XFFF7 ;ДЛЯ FAT16 |
465 | LD HL,0xFFF7 ; для FAT16 |
480 | SBC HL,DE |
466 | SBC HL,DE |
481 | RET |
467 | RET |
482 | 468 | ||
483 | LST_CL2 LD HL,0X0FFF |
469 | LST_CL2 LD HL,0x0FFF |
484 | SBC HL,BC |
470 | SBC HL,BC |
485 | RET NZ |
471 | RET NZ |
486 | LD HL,0XFFF7 |
472 | LD HL,0xFFF7 |
487 | SBC HL,DE |
473 | SBC HL,DE |
488 | RET |
474 | RET |
489 | 475 | ||
490 | ;ПОЛУЧИТЬ ОПИСАТЕЛЬ ТЕКУЩЕГО ФАЙЛА |
476 | ; получить описатель текущего файла |
491 | READ_DIR LD A,IYL |
477 | READ_DIR LD A,IYL |
492 | AND A |
478 | AND A |
493 | JR NZ,GETFZA3 |
479 | JR NZ,GETFZA3 |
494 | PUSH IY |
480 | PUSH IY |
495 | LD IYL,INTERNAL |
481 | LD IYL,INTERNAL |
496 | PUSH HL |
482 | PUSH HL |
497 | LD HL,(RREG_C) |
483 | LD HL,(RREG_C) |
498 | LD (TEK_ZAP),HL |
484 | LD (TEK_ZAP),HL |
499 | LD HL,GETFZA4 |
485 | LD HL,GETFZA4 |
500 | EX (SP),HL |
486 | EX (SP),HL |
501 | GETFZA3 LD BC,(TEK_ZAP) ;ТЕКУЩИЙ НОМЕР ОПИСАТЕЛЯ |
487 | GETFZA3 LD BC,(TEK_ZAP) ; текущий номер описателя |
502 | LD A,B |
488 | LD A,B |
503 | OR C |
489 | OR C |
504 | JR Z,GETRZAP ;ЕСЛИ НОМЕР =0, ТО ПРЕДЫДУЩИЙ НОМЕР НЕ ПРОВЕРЯЕМ |
490 | JR Z,GETRZAP ; если номер =0, то предыдущий номер не проверяем |
505 | PUSH BC ;СОХРАНИЛИ ТЕКУЩИЙ НОМЕР |
491 | PUSH BC ; сохранили текущий номер |
506 | DEC BC ;НУЖНО ПРОВЕРИТЬ ПРЕДЫДУЩИЙ НОМЕР |
492 | DEC BC ; нужно проверить предыдущий номер |
507 | CALL GETRZAP ;ПРОВЕРЯЕМ |
493 | CALL GETRZAP ; проверяем |
508 | POP BC ;ВЕРНУЛИ ТЕКУЩИЙ НОМЕР |
494 | POP BC ; вернули текущий номер |
509 | LD E,A ;ИЗ ПРЕДЫДУЩЕГО ОПИСАТЕЛЯ НУЖЕН ТОЛЬКО ФЛАГОВЫЙ БАЙТ |
495 | LD E,A ; из предыдущего описателя нужен только флаговый байт |
510 | GETRZAP PUSH DE |
496 | GETRZAP PUSH DE |
511 | CALL RDDIRSC ;ЧИТАЕМ СЕКТОР С ТЕКУЩИМ НОМЕРОМ |
497 | CALL RDDIRSC ; читаем сектор с текущим номером |
512 | POP DE ;ВЕРНУЛИ РЕГИСТР E |
498 | POP DE ; вернули регистр E |
513 | INC A |
499 | INC A |
514 | LD A,E ;ВЕРНУЛИ НАЛИЧИЕ/ОТСУСТВИЕ ДЛИННОГО ИМЕНИ |
500 | LD A,E ; вернули наличие/отсуствие длинного имени |
515 | RET Z ;ВЫХОДИМ ЕСЛИ ВЫЛЕТЕЛИ ЗА ПРЕДЕЛЫ СУЩЕСТВУЮЩЕЙ ДИРЫ |
501 | RET Z ; выходим если вылетели за пределы существующей диры |
516 | EX AF,AF' |
502 | EX AF,AF' |
517 | GETFZA1 LD A,C |
503 | GETFZA1 LD A,C |
518 | AND 0X0F ;ПОЛУЧИЛИ НОМЕР ОПИСАТЕЛЯ В ЗАГРУЖЕННОМ СЕКТОРЕ ДИРЫ |
504 | AND 0x0F ; получили номер описателя в загруженном секторе диры |
519 | LD E,A |
505 | LD E,A |
520 | LD D,0 |
506 | LD D,0 |
521 | EX DE,HL |
507 | EX DE,HL |
522 | ADD HL,HL |
508 | ADD HL,HL |
523 | ADD HL,HL |
509 | ADD HL,HL |
524 | ADD HL,HL |
510 | ADD HL,HL |
525 | ADD HL,HL |
511 | ADD HL,HL |
526 | ADD HL,HL |
512 | ADD HL,HL |
527 | ADD HL,DE ;ВЫЧИСЛИЛИ АДРЕС ВЫБРАННОГО ОПИСАТЕЛЯ |
513 | ADD HL,DE ; вычислили адрес выбранного описателя |
528 | LD DE,0X0B |
514 | LD DE,0x0B |
529 | LD A,(HL) ;ВЗЯЛИ ФЛАГОВЫЙ БАЙТ ТЕКУЩЕГО ОПИСАТЕЛЯ |
515 | LD A,(HL) ; взяли флаговый байт текущего описателя |
530 | EX DE,HL |
516 | EX DE,HL |
531 | ADD HL,DE |
517 | ADD HL,DE |
532 | LD L,(HL) ;ВЗЯЛИ ПЕРВЫЙ БАЙТ ИМЕНИ |
518 | LD L,(HL) ; взяли первый байт имени |
533 | LD H,A ;ПОЛОЖИЛИ ФЛАГОВЫЙ БАЙТ ЭТОГО ОПИСАТЕЛЯ |
519 | LD H,A ; положили флаговый байт этого описателя |
534 | EX DE,HL |
520 | EX DE,HL |
535 | CALL CP_TWOT ;ПРОВЕРКА НА НАЛИЧИЕ В ИМЕНИ ".." |
521 | CALL CP_TWOT ; проверка на наличие в имени ".." |
536 | LD D,0 ;БУДЕМ ВХОДИТЬ В ДИРЕКТОРИЮ |
522 | LD D,0 ; будем входить в директорию |
537 | JR NZ,GETFZA2 |
523 | JR NZ,GETFZA2 |
538 | LD D,0X80 ;БУДЕМ ВЫХОДИТЬ В ПРЕДЫДУЩУЮ ДИРЕКТОРИЮ |
524 | LD D,0x80 ; будем выходить в предыдущую директорию |
539 | GETFZA2 EX AF,AF' |
525 | GETFZA2 EX AF,AF' |
540 | CP 0X0F ;ПРОВЕРЯЕМ ФЛАГОВЫЙ БАЙТ ПРЕДЫДУЩЕГО ОПИСАТЕЛЯ |
526 | CP 0x0F ; проверяем флаговый байт предыдущего описателя |
541 | LD A,E ;ВЗЯЛИ ФЛАГОВЫЙ БАЙТ ТЕКУЩЕГО ОПИСАТЕЛЯ |
527 | LD A,E ; взяли флаговый байт текущего описателя |
542 | LD E,D ;ВЫСТАВИЛИ НАПРАВЛЕНИЕ ДВИЖЕНИЯ В ДИРАХ |
528 | LD E,D ; выставили направление движения в дирах |
543 | RET NZ |
529 | RET NZ |
544 | INC E ;УСТАНОВКА НАЛИЧИЯ ДЛИННОГО ИМЕНИ |
530 | INC E ; установка наличия длинного имени |
545 | RET |
531 | RET |
546 | 532 | ||
547 | GETFZA4 PUSH AF |
533 | GETFZA4 PUSH AF |
548 | PUSH HL |
534 | PUSH HL |
549 | PUSH DE |
535 | PUSH DE |
550 | LD DE,CPU6 |
536 | LD DE,CPU6 |
551 | ADD HL,DE |
537 | ADD HL,DE |
552 | LD DE,(RREG_L) |
538 | LD DE,(RREG_L) |
553 | LD BC,0X20 |
539 | LD BC,0x20 |
554 | CALL LDIR_BYTES |
540 | CALL LDIR_BYTES |
555 | POP DE |
541 | POP DE |
556 | POP HL |
542 | POP HL |
557 | POP AF |
543 | POP AF |
558 | POP IY |
544 | POP IY |
Line 562... | Line 548... | ||
562 | ; На выходе: A = 0xFF - выход за пределы DIR |
548 | ; На выходе: A = 0xFF - выход за пределы DIR |
563 | RDDIRSC PUSH BC |
549 | RDDIRSC PUSH BC |
564 | LD D,B |
550 | LD D,B |
565 | LD E,C |
551 | LD E,C |
566 | LD BC,0 |
552 | LD BC,0 |
567 | LD A,0X10 |
553 | LD A,0x10 |
568 | CALL BCDE_A |
554 | CALL BCDE_A |
569 | LD A,E |
555 | LD A,E |
570 | PUSH AF |
556 | PUSH AF |
571 | LD A,(SecPerClus) |
557 | LD A,(SecPerClus) |
572 | PUSH AF |
558 | PUSH AF |
573 | CALL BCDE_A |
559 | CALL BCDE_A |
574 | LD HL,BUF_TDIRCLS;TDIRCLS |
560 | LD HL,BUF_TDIRCLS |
575 | EX DE,HL |
561 | EX DE,HL |
576 | ADD HL,HL |
562 | ADD HL,HL |
577 | ADD HL,HL |
563 | ADD HL,HL |
578 | ADD HL,DE |
564 | ADD HL,DE |
579 | CALL LOADZP |
565 | CALL LOADZP |
Line 603... | Line 589... | ||
603 | CALL LOADLST |
589 | CALL LOADLST |
604 | POP BC |
590 | POP BC |
605 | XOR A |
591 | XOR A |
606 | RET |
592 | RET |
607 | 593 | ||
608 | ;ПРОВЕРКА НА 1 ТОЧКУ |
594 | ; проверка на 1 точку |
609 | CP_ONET LD A,(HL) |
595 | CP_ONET LD A,(HL) |
610 | CP "." |
596 | CP "." |
611 | RET NZ |
597 | RET NZ |
612 | INC HL |
598 | INC HL |
613 | LD A,(HL) |
599 | LD A,(HL) |
Line 615... | Line 601... | ||
615 | CP " " |
601 | CP " " |
616 | RET NZ |
602 | RET NZ |
617 | XOR A |
603 | XOR A |
618 | RET |
604 | RET |
619 | 605 | ||
620 | ;ПРОВЕРКА НА 2 ТОЧКИ |
606 | ; проверка на 2 точки |
621 | CP_TWOT LD A,(HL) |
607 | CP_TWOT LD A,(HL) |
622 | CP "." |
608 | CP "." |
623 | RET NZ |
609 | RET NZ |
624 | INC HL |
610 | INC HL |
625 | LD A,(HL) |
611 | LD A,(HL) |
Line 654... | Line 640... | ||
654 | INC HL |
640 | INC HL |
655 | LD D,(HL) |
641 | LD D,(HL) |
656 | EX DE,HL |
642 | EX DE,HL |
657 | JP (HL) |
643 | JP (HL) |
658 | 644 | ||
659 | TPOSITF DW POSTF00 ;СОХРАНЕНИЕ ТЕКУЩЕЙ ПОЗИЦИИ ФАЙЛА |
645 | TPOSITF DW POSTF00 ; сохранение текущей позиции файла |
660 | DW POSTF01 ;ВОССТАНОВЛЕНИЕ ТЕКУЩЕЙ ПОЗИЦИИ ФАЙЛА |
646 | DW POSTF01 ; восстановление текущей позиции файла |
661 | DW POSTF02 ;СБРОС ТЕКУЩЕЙ ПОЗИЦИИ В 0 И ПОИСК ПЕРВОЙ "ЛЕГАЛЬНОЙ" ЗАПИСИ |
647 | DW POSTF02 ; сброс текущей позиции в 0 и поиск первой "легальной" записи |
662 | DW POSTF03 ;ПЕРЕМОТАТЬ НА "B" ФАЙЛОВ НАЗАД |
648 | DW POSTF03 ; перемотать на "B" файлов назад |
663 | DW POSTF04 ;ПЕРЕМОТАТЬ НА "B" ФАЙЛОВ ВПЕРЕД |
649 | DW POSTF04 ; перемотать на "B" файлов вперед |
664 | DW POSTF05 ;ПОДСЧЕТ КОЛИЧЕСТВА "ЛЕГАЛЬНЫХ" ЗАПИСЕЙ |
650 | DW POSTF05 ; подсчет количества "легальных" записей |
665 | DW POSTF06 ;УСТАНОВИТЬ НОМЕР "ЛЕГАЛЬНОЙ" ЗАПИСИ ИЗ "BC" |
651 | DW POSTF06 ; установить номер "легальной" записи из "BC" |
666 | DW POSTF07 ;ВЕРНУТЬ В "BC" ТЕКУЩИЙ НОМЕР "ЛЕГАЛЬНОЙ" ЗАПИСИ |
652 | DW POSTF07 ; вернуть в "BC" текущий номер "легальной" записи |
667 | ENDTPOS |
653 | ENDTPOS |
668 | 654 | ||
669 | ;СОХРАНЕНИЕ ТЕКУЩЕЙ ПОЗИЦИИ ФАЙЛА |
655 | ; сохранение текущей позиции файла |
670 | POSTF00 LD HL,(TEK_ZAP) |
656 | POSTF00 LD HL,(TEK_ZAP) |
671 | LD (SAVEZAP),HL |
657 | LD (SAVEZAP),HL |
672 | RET |
658 | RET |
673 | 659 | ||
674 | ;ВОССТАНОВЛЕНИЕ ТЕКУЩЕЙ ПОЗИЦИИ ФАЙЛА |
660 | ; восстановление текущей позиции файла |
675 | POSTF01 LD HL,(SAVEZAP) |
661 | POSTF01 LD HL,(SAVEZAP) |
676 | LD (TEK_ZAP),HL |
662 | LD (TEK_ZAP),HL |
677 | RET |
663 | RET |
678 | 664 | ||
679 | ;ПЕРЕМОТАТЬ НА "B" ФАЙЛОВ НАЗАД |
665 | ; перемотать на "B" файлов назад |
680 | POSTF03 LD A,B |
666 | POSTF03 LD A,B |
681 | AND A |
667 | AND A |
682 | RET Z |
668 | RET Z |
683 | .L1 PUSH BC |
669 | .L1 PUSH BC |
684 | CALL PRVLEGZ |
670 | CALL PRVLEGZ |
685 | POP BC |
671 | POP BC |
686 | DJNZ .L1 |
672 | DJNZ .L1 |
687 | RET |
673 | RET |
688 | 674 | ||
689 | ;ПЕРЕМОТАТЬ НА "B" ФАЙЛОВ ВПЕРЕД |
675 | ; перемотать на "B" файлов вперед |
690 | POSTF04 LD A,B |
676 | POSTF04 LD A,B |
691 | AND A |
677 | AND A |
692 | RET Z |
678 | RET Z |
693 | .L1 PUSH BC |
679 | .L1 PUSH BC |
694 | CALL NXTLEGZ |
680 | CALL NXTLEGZ |
695 | POP BC |
681 | POP BC |
696 | DJNZ .L1 |
682 | DJNZ .L1 |
697 | RET |
683 | RET |
698 | 684 | ||
699 | ;ПОДСЧЕТ КОЛИЧЕСТВА "ЛЕГАЛЬНЫХ" ЗАПИСЕЙ |
685 | ; подсчет количества "легальных" записей |
700 | POSTF05 LD BC,0 |
686 | POSTF05 LD BC,0 |
701 | PUSH BC |
687 | PUSH BC |
702 | EXX |
688 | EXX |
703 | POP BC |
689 | POP BC |
704 | EXX |
690 | EXX |
Line 733... | Line 719... | ||
733 | ADD HL,DE |
719 | ADD HL,DE |
734 | LD A,(HL) |
720 | LD A,(HL) |
735 | AND A |
721 | AND A |
736 | SBC HL,DE |
722 | SBC HL,DE |
737 | LD E,_DIR_StructSize |
723 | LD E,_DIR_StructSize |
738 | CP 0X0F ; длинное имя? |
724 | CP 0x0F ; длинное имя? |
739 | JR Z,.L1 |
725 | JR Z,.L1 |
740 | CP 8 ; имя раздела? |
726 | CP 8 ; имя раздела? |
741 | JR Z,.L1 |
727 | JR Z,.L1 |
742 | LD A,(HL) |
728 | LD A,(HL) |
743 | CP 0XE5 ; удаленный файл? |
729 | CP 0xE5 ; удаленный файл? |
744 | JR Z,.L1 |
730 | JR Z,.L1 |
745 | AND A |
731 | AND A |
746 | JR Z,.L3 |
732 | JR Z,.L3 |
747 | EXX |
733 | EXX |
748 | INC BC |
734 | INC BC |
Line 756... | Line 742... | ||
756 | EXX |
742 | EXX |
757 | POP BC |
743 | POP BC |
758 | XOR A |
744 | XOR A |
759 | RET |
745 | RET |
760 | 746 | ||
761 | ;УСТАНОВИТЬ НОМЕР "ЛЕГАЛЬНОЙ" ЗАПИСИ ИЗ "BC" |
747 | ; установить номер "легальной" записи из "BC" |
762 | POSTF06 LD (TEK_ZAP),BC |
748 | POSTF06 LD (TEK_ZAP),BC |
763 | RET |
749 | RET |
764 | 750 | ||
765 | ;ВЕРНУТЬ В "BC" ТЕКУЩИЙ НОМЕР "ЛЕГАЛЬНОЙ" ЗАПИСИ |
751 | ; вернуть в "BC" текущий номер "легальной" записи |
766 | POSTF07 LD BC,(TEK_ZAP) |
752 | POSTF07 LD BC,(TEK_ZAP) |
767 | RET |
753 | RET |
768 | 754 | ||
769 | CPTEKZP CALL RDDIRSC |
755 | CPTEKZP CALL RDDIRSC |
770 | RET M |
756 | RET M |
771 | LD A,C |
757 | LD A,C |
772 | AND 0X0F |
758 | AND 0x0F |
773 | LD L,A |
759 | LD L,A |
774 | LD H,0 |
760 | LD H,0 |
775 | LD DE,BUF_512 |
761 | LD DE,BUF_512 |
776 | ADD HL,HL |
762 | ADD HL,HL |
777 | ADD HL,HL |
763 | ADD HL,HL |
778 | ADD HL,HL |
764 | ADD HL,HL |
779 | ADD HL,HL |
765 | ADD HL,HL |
780 | ADD HL,HL |
766 | ADD HL,HL |
781 | ADD HL,DE |
767 | ADD HL,DE |
782 | LD DE,0X0B |
768 | LD DE,0x0B |
783 | ADD HL,DE |
769 | ADD HL,DE |
784 | LD A,(HL) |
770 | LD A,(HL) |
785 | SBC HL,DE |
771 | SBC HL,DE |
786 | LD E,(HL) |
772 | LD E,(HL) |
787 | AND A |
773 | AND A |
Line 799... | Line 785... | ||
799 | JR NXTLEG1+1 |
785 | JR NXTLEG1+1 |
800 | 786 | ||
801 | NXTLEGZ LD BC,(TEK_ZAP) |
787 | NXTLEGZ LD BC,(TEK_ZAP) |
802 | NXTLEG1 INC BC |
788 | NXTLEG1 INC BC |
803 | CALL CPTEKZP |
789 | CALL CPTEKZP |
804 | CP 0XFF |
790 | CP 0xFF |
805 | RET Z |
791 | RET Z |
806 | CP 0X0F |
792 | CP 0x0F |
807 | JR Z,NXTLEG1 |
793 | JR Z,NXTLEG1 |
808 | CP 8 |
794 | CP 8 |
809 | JR Z,NXTLEG1 |
795 | JR Z,NXTLEG1 |
810 | LD A,E |
796 | LD A,E |
811 | AND A |
797 | AND A |
812 | RET Z |
798 | RET Z |
813 | CP 0XE5 |
799 | CP 0xE5 |
814 | JR Z,NXTLEG1 |
800 | JR Z,NXTLEG1 |
815 | LD (TEK_ZAP),BC |
801 | LD (TEK_ZAP),BC |
816 | RET |
802 | RET |
817 | 803 | ||
818 | PRVLEGZ LD BC,(TEK_ZAP) |
804 | PRVLEGZ LD BC,(TEK_ZAP) |
819 | CALL CPTEKZP |
805 | CALL CPTEKZP |
820 | CALL CP_TWOT |
806 | CALL CP_TWOT |
821 | RET Z |
807 | RET Z |
822 | PRVLEG1 DEC BC |
808 | PRVLEG1 DEC BC |
823 | CALL CPTEKZP |
809 | CALL CPTEKZP |
824 | CP 0X0F |
810 | CP 0x0F |
825 | JR Z,PRVLEG1 |
811 | JR Z,PRVLEG1 |
826 | CP 8 |
812 | CP 8 |
827 | JR Z,PRVLEG1 |
813 | JR Z,PRVLEG1 |
828 | LD A,E |
814 | LD A,E |
829 | CP 0XE5 |
815 | CP 0xE5 |
830 | JR Z,PRVLEG1 |
816 | JR Z,PRVLEG1 |
831 | LD (TEK_ZAP),BC |
817 | LD (TEK_ZAP),BC |
832 | RET |
818 | RET |
833 | 819 | ||
834 | SAVEZP LD (HL),E |
820 | SAVEZP LD (HL),E |
Line 927... | Line 913... | ||
927 | EX DE,HL |
913 | EX DE,HL |
928 | LD BC,0 |
914 | LD BC,0 |
929 | ADC HL,BC |
915 | ADC HL,BC |
930 | RET |
916 | RET |
931 | 917 | ||
- | 918 | INIT_PATH |
|
932 | INIT_PATH EVOPORT WIN_P5,RAM_MOUNTER |
919 | EVOPORT WIN_P5,RAM_MOUNTER |
933 | LD A,(SETDVOL) |
920 | LD A,(SETDVOL) |
934 | LD D,A |
921 | LD D,A |
935 | ADD A,HIGH (TEK_BUFPATH + CPU5) + 4 |
922 | ADD A,HIGH (TEK_BUFPATH + CPU5) + 4 |
936 | LD H,A |
923 | LD H,A |
937 | LD L,0 |
924 | LD L,0 |
Line 944... | Line 931... | ||
944 | LD (HL),"/" |
931 | LD (HL),"/" |
945 | INC L |
932 | INC L |
946 | LD (HL),0 |
933 | LD (HL),0 |
947 | INC L |
934 | INC L |
948 | LD A,L |
935 | LD A,L |
949 | LD L,0XFF |
936 | LD L,0xFF |
950 | LD (HL),A |
937 | LD (HL),A |
951 | RET |
938 | RET |
952 | 939 | ||
- | 940 | RENEW_PATH |
|
953 | RENEW_PATH EVOPORT WIN_P5,RAM_MOUNTER |
941 | EVOPORT WIN_P5,RAM_MOUNTER |
954 | BIT 7,E |
942 | BIT 7,E |
955 | JR NZ,MINUS_PATH |
943 | JR NZ,MINUS_PATH |
956 | ;ДОБАВЛЕНИЕ ДИРЕКТОРИИ К ТЕКУЩЕМУ ПУТИ (ВХОД В ДИРЕКТОРИЮ) |
944 | ; добавление директории к текущему пути (вход в директорию) |
957 | EX DE,HL |
945 | EX DE,HL |
958 | LD A,(SETDVOL) |
946 | LD A,(SETDVOL) |
959 | ADD A,HIGH (TEK_BUFPATH + CPU5) + 4 |
947 | ADD A,HIGH (TEK_BUFPATH + CPU5) + 4 |
960 | LD H,A |
948 | LD H,A |
961 | LD L,0XFF |
949 | LD L,0xFF |
962 | LD L,(HL) |
950 | LD L,(HL) |
963 | EX DE,HL |
951 | EX DE,HL |
964 | DEC DE |
952 | DEC DE |
965 | LD BC,8 |
953 | LD BC,8 |
966 | LDIR |
954 | LDIR |
Line 992... | Line 980... | ||
992 | LD (HL),"/" |
980 | LD (HL),"/" |
993 | INC L |
981 | INC L |
994 | LD (HL),0 |
982 | LD (HL),0 |
995 | INC L |
983 | INC L |
996 | LD A,L |
984 | LD A,L |
997 | LD L,0XFF |
985 | LD L,0xFF |
998 | LD (HL),A |
986 | LD (HL),A |
999 | RET |
987 | RET |
1000 | 988 | ||
1001 | ;УКОРОЧЕНИЕ ТЕКУЩЕГО ПУТИ (ВЫХОД В ПРЕДЫДУЩУЮ ДИРЕКТОРИЮ) |
989 | ; укорочение текущего пути (выход в предыдущую директорию) |
1002 | MINUS_PATH LD A,(SETDVOL) |
990 | MINUS_PATH LD A,(SETDVOL) |
1003 | ADD A,HIGH (TEK_BUFPATH + CPU5) + 4 |
991 | ADD A,HIGH (TEK_BUFPATH + CPU5) + 4 |
1004 | LD H,A |
992 | LD H,A |
1005 | LD L,0XFF |
993 | LD L,0xFF |
1006 | LD L,(HL) |
994 | LD L,(HL) |
1007 | DEC L |
995 | DEC L |
1008 | DEC L |
996 | DEC L |
1009 | MINUS_PATH1 DEC L |
997 | MINUS_PATH1 DEC L |
1010 | LD A,(HL) |
998 | LD A,(HL) |
Line 1012... | Line 1000... | ||
1012 | JR NZ,MINUS_PATH1 |
1000 | JR NZ,MINUS_PATH1 |
1013 | INC L |
1001 | INC L |
1014 | LD (HL),0 |
1002 | LD (HL),0 |
1015 | INC L |
1003 | INC L |
1016 | LD A,L |
1004 | LD A,L |
1017 | LD L,0XFF |
1005 | LD L,0xFF |
1018 | LD (HL),A |
1006 | LD (HL),A |
1019 | RET |
1007 | RET |
1020 | 1008 | ||
1021 | ;ПОЛУЧЕНИЕ ТЕКУЩЕГО ПУТИ |
1009 | ; получение текущего пути |
- | 1010 | GET_PATH |
|
1022 | GET_PATH EVOPORT WIN_P5,RAM_MOUNTER |
1011 | EVOPORT WIN_P5,RAM_MOUNTER |
1023 | LD A,IYL |
1012 | LD A,IYL |
1024 | AND A |
1013 | AND A |
1025 | JR NZ,GETPATH1 |
1014 | JR NZ,GETPATH1 |
1026 | LD A,(SETDVOL) |
1015 | LD A,(SETDVOL) |
1027 | LD D,A |
1016 | LD D,A |
1028 | ADD A,HIGH (TEK_BUFPATH+CPU5)+4 |
1017 | ADD A,HIGH (TEK_BUFPATH+CPU5)+4 |
1029 | LD H,A |
1018 | LD H,A |
1030 | LD L,0XFF |
1019 | LD L,0xFF |
1031 | LD A,(HL) |
1020 | LD A,(HL) |
1032 | LD DE,BUF_256 |
1021 | LD DE,BUF_256 |
1033 | LD BC,0X100 |
1022 | LD BC,0x100 |
1034 | LD L,C |
1023 | LD L,C |
1035 | LDIR |
1024 | LDIR |
1036 | LD C,A ;BC=СКОЛЬКО БАЙТ ПЕРЕНОСИТЬ В АДРЕС ПО ЗАПРОСУ |
1025 | LD C,A ; BC=сколько байт переносить в адрес по запросу |
1037 | LD A,HIGH (CPU6) - 1 |
1026 | LD A,HIGH (CPU6) - 1 |
1038 | ADD A,D |
1027 | ADD A,D |
1039 | LD H,A |
1028 | LD H,A |
1040 | LD DE,(RREG_L) ;КУДА ПЕРЕНОСИТЬ ПУТЬ |
1029 | LD DE,(RREG_L) ; куда переносить путь |
1041 | JP LDIR_BYTES |
1030 | JP LDIR_BYTES |
1042 | 1031 | ||
1043 | GETPATH1 PUSH HL |
1032 | GETPATH1 PUSH HL |
1044 | PUSH HL |
1033 | PUSH HL |
1045 | LD A,(SETDVOL) |
1034 | LD A,(SETDVOL) |
1046 | LD D,A |
1035 | LD D,A |
1047 | ADD A,HIGH (TEK_BUFPATH + CPU5) + 4 |
1036 | ADD A,HIGH (TEK_BUFPATH + CPU5) + 4 |
1048 | LD H,A |
1037 | LD H,A |
1049 | LD L,0XFF |
1038 | LD L,0xFF |
1050 | LD A,(HL) |
1039 | LD A,(HL) |
1051 | POP DE |
1040 | POP DE |
1052 | LD BC,0X100 |
1041 | LD BC,0x100 |
1053 | LD L,C |
1042 | LD L,C |
1054 | LDIR |
1043 | LDIR |
1055 | POP HL |
1044 | POP HL |
1056 | RET |
1045 | RET |
1057 | 1046 | ||
1058 | ;ОТДАЧА КОРОТКОГО ИМЕНИ ФАЙЛА, ЕСЛИ ДЛИННОЕ ОТСУСТВУЕТ |
1047 | ; отдача короткого имени файла, если длинное отсуствует |
1059 | NO_LNG POP DE |
1048 | NO_LNG POP DE |
1060 | LD BC,8 |
1049 | LD BC,8 |
1061 | LDIR |
1050 | LDIR |
1062 | EX DE,HL |
1051 | EX DE,HL |
1063 | NO_LNG2 DEC HL |
1052 | NO_LNG2 DEC HL |
Line 1085... | Line 1074... | ||
1085 | 1074 | ||
1086 | GETLNG8 POP IY |
1075 | GETLNG8 POP IY |
1087 | LD DE,CPU6 |
1076 | LD DE,CPU6 |
1088 | ADD HL,DE |
1077 | ADD HL,DE |
1089 | LD DE,(RREG_L) |
1078 | LD DE,(RREG_L) |
1090 | LD BC,0X100 |
1079 | LD BC,0x100 |
1091 | JP LDIR_BYTES |
1080 | JP LDIR_BYTES |
1092 | 1081 | ||
1093 | ;ОТДАЧА ДЛИННОГО ИМЕНИ ФАЙЛА |
1082 | ; отдача длинного имени файла |
1094 | GET_LONGNAME LD A,IYL |
1083 | GET_LONGNAME LD A,IYL |
1095 | AND A |
1084 | AND A |
1096 | JR NZ,GETLNG9 |
1085 | JR NZ,GETLNG9 |
1097 | PUSH IY |
1086 | PUSH IY |
1098 | LD IYL,INTERNAL |
1087 | LD IYL,INTERNAL |
Line 1159... | Line 1148... | ||
1159 | RET Z |
1148 | RET Z |
1160 | LD A,E |
1149 | LD A,E |
1161 | AND A |
1150 | AND A |
1162 | JR NZ,GETLNG3 |
1151 | JR NZ,GETLNG3 |
1163 | LD A,D |
1152 | LD A,D |
1164 | CP 0X80 |
1153 | CP 0x80 |
1165 | JR C,GETLNG5 |
1154 | JR C,GETLNG5 |
1166 | LD D,0X5F |
1155 | LD D,0x5F |
1167 | JR GETLNG5 |
1156 | JR GETLNG5 |
1168 | 1157 | ||
1169 | GETLNG3 CP 4 |
1158 | GETLNG3 CP 4 |
1170 | LD A,0X5F |
1159 | LD A,0x5F |
1171 | JR NZ,GETLNG5 |
1160 | JR NZ,GETLNG5 |
1172 | LD A,D |
1161 | LD A,D |
1173 | LD E,0XEF |
1162 | LD E,0xEF |
1174 | LD D,0X5F |
1163 | LD D,0x5F |
1175 | CP 1 |
1164 | CP 1 |
1176 | JR Z,GETLNG4 |
1165 | JR Z,GETLNG4 |
1177 | LD E,0XA0 |
1166 | LD E,0xA0 |
1178 | CP 0X51 |
1167 | CP 0x51 |
1179 | JR Z,GETLNG4 |
1168 | JR Z,GETLNG4 |
1180 | SUB 0X10 |
1169 | SUB 0x10 |
1181 | LD E,0X80 |
1170 | LD E,0x80 |
1182 | JR NC,GETLNG6 |
1171 | JR NC,GETLNG6 |
1183 | LD A,D |
1172 | LD A,D |
1184 | JR GETLNG5 |
1173 | JR GETLNG5 |
1185 | 1174 | ||
1186 | GETLNG6 CP 0X30 |
1175 | GETLNG6 CP 0x30 |
1187 | JR C,GETLNG4 |
1176 | JR C,GETLNG4 |
1188 | LD E,0XB0 |
1177 | LD E,0xB0 |
1189 | CP 0X40 |
1178 | CP 0x40 |
1190 | JR C,GETLNG4 |
1179 | JR C,GETLNG4 |
1191 | LD A,D |
1180 | LD A,D |
1192 | JR GETLNG5 |
1181 | JR GETLNG5 |
1193 | 1182 | ||
1194 | GETLNG4 ADD A,E |
1183 | GETLNG4 ADD A,E |
Line 1199... | Line 1188... | ||
1199 | EXX |
1188 | EXX |
1200 | RET Z |
1189 | RET Z |
1201 | JR GETLNG1 + 3 |
1190 | JR GETLNG1 + 3 |
1202 | ;401,410-44F,451 |
1191 | ;401,410-44F,451 |
1203 | 1192 | ||
1204 | ;НА ВХОДЕ: DE=СПИСОК РАСШИРЕНИЙ |
1193 | ; на входе: DE = список расширений |
1205 | ; HL=АДРЕС ОПИСАТЕЛЯ ФАЙЛА |
1194 | ; HL = адрес описателя файла |
1206 | ;НА ВЫХОДЕ: A=НОМЕР РАСШИРЕНИЯ |
1195 | ; на выходе: A = номер расширения |
1207 | CP_EXT LD C,0 |
1196 | CP_EXT LD C,0 |
1208 | CPETR2 LD A,(DE) |
1197 | CPETR2 LD A,(DE) |
1209 | AND A |
1198 | AND A |
1210 | JR Z,CPETR1 |
1199 | JR Z,CPETR1 |
1211 | INC C |
1200 | INC C |
Line 1246... | Line 1235... | ||
1246 | LD IYL,INTERNAL |
1235 | LD IYL,INTERNAL |
1247 | CALL INIRTSC |
1236 | CALL INIRTSC |
1248 | EVOPORT WIN_P3,RAM_TEMP2 |
1237 | EVOPORT WIN_P3,RAM_TEMP2 |
1249 | LD HL,CPU3 |
1238 | LD HL,CPU3 |
1250 | LD DE,CPU3+1 |
1239 | LD DE,CPU3+1 |
1251 | LD BC,0X3FFF |
1240 | LD BC,0x3FFF |
1252 | LD (HL),L |
1241 | LD (HL),L |
1253 | LDIR |
1242 | LDIR |
1254 | LD HL,0 |
1243 | LD HL,0 |
1255 | LD (KOLFIND),HL ;НАЙДЕННЫХ ФАЙЛОВ |
1244 | LD (KOLFIND),HL ; найденных файлов |
1256 | LD HL,CPU3 |
1245 | LD HL,CPU3 |
1257 | LD (ADR_SKLAD),HL ;АДРЕС СКЛАДИРОВАНИЯ |
1246 | LD (ADR_SKLAD),HL ; адрес складирования |
1258 | LD HL,CPU3+0X1000 |
1247 | LD HL,CPU3+0x1000 |
1259 | LD (ADR_SKLAD_NAME),HL ;АДРЕС СКЛАДИРОВАНИЯ ПЕРВОГО СИМВОЛА ИМЕНИ НАЙДЕННОГО И ЕГО ФЛАГА |
1248 | LD (ADR_SKLAD_NAME),HL ; адрес складирования первого символа имени найденного и его флага |
1260 | LD BC,0XFFFF |
1249 | LD BC,0xFFFF |
1261 | EXX |
1250 | EXX |
1262 | LD BC,0 |
1251 | LD BC,0 |
1263 | LD A,(TEK_LVL) |
1252 | LD A,(TEK_LVL) |
1264 | AND A |
1253 | AND A |
1265 | EXX |
1254 | EXX |
Line 1271... | Line 1260... | ||
1271 | LD BC,(ROOTZAP) |
1260 | LD BC,(ROOTZAP) |
1272 | EXX |
1261 | EXX |
1273 | FINDF2 INC BC |
1262 | FINDF2 INC BC |
1274 | CALL RDDIRSC |
1263 | CALL RDDIRSC |
1275 | LD A,C |
1264 | LD A,C |
1276 | AND 0X0F |
1265 | AND 0x0F |
1277 | REPT 4 |
1266 | REPT 4 |
1278 | ADD A,A |
1267 | ADD A,A |
1279 | ENDM |
1268 | ENDM |
1280 | LD E,A |
1269 | LD E,A |
1281 | LD D,0 |
1270 | LD D,0 |
Line 1296... | Line 1285... | ||
1296 | INC HL |
1285 | INC HL |
1297 | LD A,(HL) |
1286 | LD A,(HL) |
1298 | DEC HL |
1287 | DEC HL |
1299 | CP " " |
1288 | CP " " |
1300 | JR Z,FINDF2 |
1289 | JR Z,FINDF2 |
1301 | FINDF21 CP 0XE5 ;ЕСЛИ УДАЛЕНО |
1290 | FINDF21 CP 0xE5 ; если удалено |
1302 | JR Z,FINDF2 ;ТО ПЕРЕХОДИМ НА СЛЕДУЮЩИЙ ОПИСАТЕЛЬ |
1291 | JR Z,FINDF2 ; то переходим на следующий описатель |
1303 | LD DE,0X0B ;НУЖЕН ФЛАГОВЫЙ БАЙТ ОПИСАТЕЛЯ |
1292 | LD DE,0x0B ; нужен флаговый байт описателя |
1304 | ADD HL,DE ;ПОЛУЧИЛИ АДРЕС ФЛАГОВОГО БАЙТА |
1293 | ADD HL,DE ; получили адрес флагового байта |
1305 | LD A,(HL) ;ВЗЯЛИ ФЛАГОВЫЙ БАЙТ |
1294 | LD A,(HL) ; взяли флаговый байт |
1306 | SBC HL,DE |
1295 | SBC HL,DE |
1307 | CP 0X0F |
1296 | CP 0x0F |
1308 | JR Z,FINDF2 |
1297 | JR Z,FINDF2 |
1309 | AND 0X10 ;ПРОВЕРКА ЭТО ФАЙЛ ИЛИ ДИРА |
1298 | AND 0x10 ; проверка это файл или дира |
1310 | JR NZ,FINDF1 |
1299 | JR NZ,FINDF1 |
1311 | LD A,(EXT4FOUND) |
1300 | LD A,(EXT4FOUND) |
1312 | AND A |
1301 | AND A |
1313 | PUSH DE |
1302 | PUSH DE |
1314 | LD DE,EXT4FOUND |
1303 | LD DE,EXT4FOUND |
Line 1319... | Line 1308... | ||
1319 | JR NZ,FINDF4 |
1308 | JR NZ,FINDF4 |
1320 | FINDF1 EX DE,HL |
1309 | FINDF1 EX DE,HL |
1321 | ADD HL,DE |
1310 | ADD HL,DE |
1322 | LD A,(HL) |
1311 | LD A,(HL) |
1323 | EX AF,AF' |
1312 | EX AF,AF' |
1324 | LD HL,(ADR_SKLAD) ;ДЛЯ ДИРЫ ПРОВЕРЯТЬ БОЛЬШЕ НЕ НАДО |
1313 | LD HL,(ADR_SKLAD) ; для диры проверять больше не надо |
1325 | LD (HL),C |
1314 | LD (HL),C |
1326 | INC HL |
1315 | INC HL |
1327 | LD (HL),B ;ПОЛОЖИЛИ НОМЕР ДИРЫ В ТАБЛИЧКУ |
1316 | LD (HL),B ; положили номер диры в табличку |
1328 | INC HL |
1317 | INC HL |
1329 | LD (ADR_SKLAD),HL |
1318 | LD (ADR_SKLAD),HL |
1330 | LD HL,(KOLFIND) |
1319 | LD HL,(KOLFIND) |
1331 | INC HL ;+1 НАЙДЕННЫХ ФАЙЛОВ |
1320 | INC HL ; +1 найденных файлов |
1332 | LD (KOLFIND),HL |
1321 | LD (KOLFIND),HL |
1333 | LD HL,(ADR_SKLAD_NAME) |
1322 | LD HL,(ADR_SKLAD_NAME) |
1334 | EX AF,AF' |
1323 | EX AF,AF' |
1335 | LD (HL),A |
1324 | LD (HL),A |
1336 | INC HL |
1325 | INC HL |
1337 | LD A,(DE) |
1326 | LD A,(DE) |
1338 | LD (HL),A |
1327 | LD (HL),A |
1339 | INC HL |
1328 | INC HL |
1340 | LD (ADR_SKLAD_NAME),HL |
1329 | LD (ADR_SKLAD_NAME),HL |
1341 | FINDF4 LD A,(ADR_SKLAD + 1) |
1330 | FINDF4 LD A,(ADR_SKLAD + 1) |
1342 | CP HIGH (CPU3) + 0X10 |
1331 | CP HIGH (CPU3) + 0x10 |
1343 | JR C,FINDF2 ;НЕ БОЛЕЕ 2048 ДИРОВ/ФАЙЛОВ В ТЕКУЩЕЙ ДИРЕКТОРИИ |
1332 | JR C,FINDF2 ; не более 2048 диров/файлов в текущей директории |
1344 | FINDF3 LD HL,(KOLFIND) |
1333 | FINDF3 LD HL,(KOLFIND) |
1345 | POP IY |
1334 | POP IY |
1346 | LD A,IYL |
1335 | LD A,IYL |
1347 | AND A |
1336 | AND A |
1348 | JR NZ,FINDF5 |
1337 | JR NZ,FINDF5 |
Line 1361... | Line 1350... | ||
1361 | LD (EXT4FOUND),A |
1350 | LD (EXT4FOUND),A |
1362 | RET |
1351 | RET |
1363 | 1352 | ||
1364 | SET_MASK_EXT1 LD HL,(RREG_L) |
1353 | SET_MASK_EXT1 LD HL,(RREG_L) |
1365 | LD DE,BUF_256 - CPU6 |
1354 | LD DE,BUF_256 - CPU6 |
1366 | LD BC,0X10 * 3 + 1 |
1355 | LD BC,0x10 * 3 + 1 |
1367 | CALL LDIR_BYTES |
1356 | CALL LDIR_BYTES |
1368 | LD HL,BUF_256 |
1357 | LD HL,BUF_256 |
1369 | LD DE,EXT4FOUND |
1358 | LD DE,EXT4FOUND |
1370 | LD BC,0X10FF |
1359 | LD BC,0x10FF |
1371 | SET_MASK_EXT2 LD A,(HL) |
1360 | SET_MASK_EXT2 LD A,(HL) |
1372 | AND A |
1361 | AND A |
1373 | JR Z,SET_MASK_EXT3 |
1362 | JR Z,SET_MASK_EXT3 |
1374 | LDI |
1363 | LDI |
1375 | LDI |
1364 | LDI |
Line 1385... | Line 1374... | ||
1385 | LD_FILE8 EXX |
1374 | LD_FILE8 EXX |
1386 | LD (SAVE_IY),DE ;IY |
1375 | LD (SAVE_IY),DE ; IY |
1387 | EXX |
1376 | EXX |
1388 | RET |
1377 | RET |
1389 | 1378 | ||
1390 | ;IXL-L-КОЛИЧЕСТВО СЕКТОРОВ ДЛЯ ЗАГРУЗКИ |
1379 | ; IXL - L - количество секторов для загрузки |
1391 | ;IXH-H-РАЗМЕР КЛАСТЕРА |
1380 | ; IXH - H - размер кластера |
1392 | ;IYL-E- |
1381 | ; IYL - E - |
1393 | ;IYH-D-СМЕЩЕНИЕ В КЛАСТЕРЕ |
1382 | ; IYH - D - смещение в кластере |
1394 | READ_FILE EX AF,AF' |
1383 | READ_FILE EX AF,AF' |
1395 | LD A,IYL |
1384 | LD A,IYL |
1396 | DEC A |
1385 | DEC A |
1397 | JR Z,LD_FILE00 |
1386 | JR Z,LD_FILE00 |
1398 | LD IYL,INT4EXT |
1387 | LD IYL,INT4EXT |
1399 | LD HL,LD_FILE6 |
1388 | LD HL,LD_FILE6 |
1400 | PUSH HL |
1389 | PUSH HL |
1401 | LD HL,(RREG_L) ;АДРЕС ЗАГРУЗКИ |
1390 | LD HL,(RREG_L) ; адрес загрузки |
1402 | EXX |
1391 | EXX |
1403 | LD DE,(SAVE_IY) ;СМЕЩЕНИЕ В КЛАСТЕРЕ |
1392 | LD DE,(SAVE_IY) ; смещение в кластере |
1404 | LD A,(SecPerClus) |
1393 | LD A,(SecPerClus) |
1405 | LD H,A ;КОЛИЧЕСТВО СЕКТОРОВ В КЛАСТЕРЕ |
1394 | LD H,A ; количество секторов в кластере |
1406 | LD A,(RREG_A) |
1395 | LD A,(RREG_A) |
1407 | LD L,A ;КОЛИЧЕСТВО СЕКТОРОВ ДЛЯ ЗАГРУЗКИ |
1396 | LD L,A ; количество секторов для загрузки |
1408 | EXX |
1397 | EXX |
1409 | JR LD_FILE0 |
1398 | JR LD_FILE0 |
1410 | 1399 | ||
1411 | LD_FILE00 EXX |
1400 | LD_FILE00 EXX |
1412 | LD DE,(SAVE_IY) ;СМЕЩЕНИЕ В КЛАСТЕРЕ |
1401 | LD DE,(SAVE_IY) ; смещение в кластере |
1413 | LD HL,LD_FILE8 |
1402 | LD HL,LD_FILE8 |
1414 | PUSH HL |
1403 | PUSH HL |
1415 | LD A,(SecPerClus) ;КОЛИЧЕСТВО СЕКТОРОВ В КЛАСТЕРЕ |
1404 | LD A,(SecPerClus) ; КОЛИЧЕСТВО СЕКТОРОВ В КЛАСТЕРЕ |
1416 | LD H,A ;КОЛИЧЕСТВО СЕКТОРОВ В КЛАСТЕРЕ |
1405 | LD H,A |
1417 | EX AF,AF' |
1406 | EX AF,AF' |
1418 | LD L,A ;КОЛИЧЕСТВО СЕКТОРОВ ДЛЯ ЗАГРУЗКИ |
1407 | LD L,A ; количество секторов для загрузки |
1419 | EXX |
1408 | EXX |
1420 | ;IXL-L-КОЛИЧЕСТВО СЕКТОРОВ ДЛЯ ЗАГРУЗКИ |
1409 | ; IXL - L - количество секторов для загрузки |
1421 | ;IXH-H-РАЗМЕР КЛАСТЕРА |
1410 | ; IXH - H - размер кластера |
1422 | ;IYL-E- |
1411 | ; IYL - E - |
1423 | ;IYH-D-СМЕЩЕНИЕ В КЛАСТЕРЕ |
1412 | ; IYH - D - смещение в кластере |
1424 | LD_FILE0 LD DE,(AFILCLS) |
1413 | LD_FILE0 LD DE,(AFILCLS) |
1425 | LD BC,(AFILCLS+2) ;ТЕКУЩИЙ НОМЕР КЛАСТЕРА |
1414 | LD BC,(AFILCLS+2) ; текущий номер кластера |
1426 | PUSH BC |
1415 | PUSH BC |
1427 | PUSH DE |
1416 | PUSH DE |
1428 | PUSH HL |
1417 | PUSH HL |
1429 | CALL REALSEC ;ПЕРЕВЕЛИ НОМЕР КЛАСТЕРА В НОМЕР СЕКТОРА |
1418 | CALL REALSEC ; перевели номер кластера в номер сектора |
1430 | EXX |
1419 | EXX |
1431 | LD A,D ;IYH |
1420 | LD A,D ; IYH |
1432 | EXX |
1421 | EXX |
1433 | LD L,A |
1422 | LD L,A |
1434 | LD H,0 |
1423 | LD H,0 |
1435 | ADD HL,DE |
1424 | ADD HL,DE |
1436 | EX DE,HL |
1425 | EX DE,HL |
1437 | JR NC,LD_FILE1 |
1426 | JR NC,LD_FILE1 |
1438 | INC BC ;BCDE=НОМЕР СЕКТОРА ОТКУДА ГРУЗИТЬ |
1427 | INC BC ; BCDE=номер сектора откуда грузить |
1439 | LD_FILE1 EXX |
1428 | LD_FILE1 EXX |
1440 | LD A,L ;IXL |
1429 | LD A,L ; IXL |
1441 | CP H ;IXH |
1430 | CP H ; IXH |
1442 | JP C,LD_FILE2 |
1431 | JP C,LD_FILE2 |
1443 | LD A,H ;IXH |
1432 | LD A,H ; IXH |
Line 1445... | Line 1434... | ||
1445 | CP H ;IXH |
1434 | CP H ; IXH |
1446 | LD A,L ;IXL |
1435 | LD A,L ; IXL |
1447 | JP C,LD_FILE5 |
1436 | JP C,LD_FILE5 |
1448 | LD A,H ;IXH |
1437 | LD A,H ; IXH |
1449 | SUB D ;IYH |
1438 | SUB D ; IYH |
1450 | LD_FILE5 LD E,A ;IYL,A ;СКОЛЬКО СЕКТОРОВ СЕЙЧАС ГРУЗИМ |
1439 | LD_FILE5 LD E,A ; IYL,A ; сколько секторов сейчас грузим |
1451 | EXX |
1440 | EXX |
1452 | POP HL ;ВОССТАНОВИЛИ АДРЕС ЗАГРУЗКИ |
1441 | POP HL ; восстановили адрес загрузки |
1453 | ; LD IYL,INT4EXT |
1442 | ; LD IYL,INT4EXT |
1454 | CALL TO_DRV |
1443 | CALL TO_DRV |
1455 | DB _DEV_READ |
1444 | DB _DEV_READ |
1456 | LD A,IYL |
1445 | LD A,IYL |
1457 | DEC A |
1446 | DEC A |
1458 | JR Z,LD_FILE7 |
1447 | JR Z,LD_FILE7 |
1459 | LD (RREG_L),HL |
1448 | LD (RREG_L),HL |
1460 | LD_FILE7 POP DE |
1449 | LD_FILE7 POP DE |
1461 | POP BC ;ВОССТАНОВИЛИ НОМЕР КЛАСТЕРА |
1450 | POP BC ; восстановили номер кластера |
1462 | EXX |
1451 | EXX |
1463 | LD A,D ;IYH |
1452 | LD A,D ; IYH |
1464 | ADD A,E ;IYL |
1453 | ADD A,E ; IYL |
1465 | CP H ;IXH |
1454 | CP H ; IXH |
1466 | JP C,LD_FILE3 |
1455 | JP C,LD_FILE3 |
1467 | SUB H ;IXH |
1456 | SUB H ; IXH |
1468 | LD_FILE3 LD D,A ;IYH,A |
1457 | LD_FILE3 LD D,A ; IYH,A |
1469 | EXX |
1458 | EXX |
1470 | JP C,LD_FILE4 |
1459 | JP C,LD_FILE4 |
1471 | PUSH HL ;СОХРАНИЛИ АДРЕС ЗАГРУЗКИ |
1460 | PUSH HL ; сохранили адрес загрузки |
1472 | PUSH IY |
1461 | PUSH IY |
1473 | LD IYL,INTERNAL |
1462 | LD IYL,INTERNAL |
1474 | CALL RDFATZP ;ПРОЧИТАЛИ НОМЕР СЛЕДУЮЩЕГО КЛАСТЕРА |
1463 | CALL RDFATZP ; прочитали номер следующего кластера |
1475 | POP IY |
1464 | POP IY |
1476 | LD (AFILCLS),DE |
1465 | LD (AFILCLS),DE |
1477 | LD (AFILCLS + 2),BC |
1466 | LD (AFILCLS + 2),BC |
1478 | CALL LST_CLS ;ПРОВЕРИЛИ, А МОЖЕТ ЭТО ПОСЛЕДНИЙ КЛАСТЕР? |
1467 | CALL LST_CLS ; проверили, а может это последний кластер? |
1479 | POP HL ;ВОССТАНОВИЛИ АДРЕС ЗАГРУЗКИ |
1468 | POP HL ; восстановили адрес загрузки |
1480 | RET C ;ЕСЛИ ПОСЛЕДНИЙ, ВЫХОДИМ |
1469 | RET C ; если последний, выходим |
1481 | LD_FILE4 EXX |
1470 | LD_FILE4 EXX |
1482 | LD A,L ;IXL |
1471 | LD A,L ; IXL |
1483 | SUB E ;IYL |
1472 | SUB E ; IYL |
1484 | EXX |
1473 | EXX |
1485 | RET Z |
1474 | RET Z |
Line 1502... | Line 1491... | ||
1502 | PUSH DE |
1491 | PUSH DE |
1503 | LDIR |
1492 | LDIR |
1504 | LD HL,0 |
1493 | LD HL,0 |
1505 | LD A,(FATType) |
1494 | LD A,(FATType) |
1506 | CP 2 |
1495 | CP 2 |
1507 | JR C,OPENFILE2 ;ЕСЛИ ЭТО НЕ FAT32 ТО СТАРШИЕ 16 БИТ ОБНУЛЯЕМ |
1496 | JR C,OPENFILE2 ; если это не FAT32 то старшие 16 бит обнуляем |
1508 | LD HL,(FILE_SRC + _DIR_FstClusHI) |
1497 | LD HL,(FILE_SRC + _DIR_FstClusHI) |
1509 | OPENFILE2 LD (AFILCLS + 2),HL |
1498 | OPENFILE2 LD (AFILCLS + 2),HL |
1510 | LD HL,(FILE_SRC + _DIR_FstClusLO) |
1499 | LD HL,(FILE_SRC + _DIR_FstClusLO) |
1511 | LD (AFILCLS),HL |
1500 | LD (AFILCLS),HL |
1512 | LD HL,(TEK_ZAP) |
1501 | LD HL,(TEK_ZAP) |
Line 1535... | Line 1524... | ||
1535 | AND A |
1524 | AND A |
1536 | JR NZ,FINDNAME01 |
1525 | JR NZ,FINDNAME01 |
1537 | PUSH HL |
1526 | PUSH HL |
1538 | LD HL,(RREG_L) |
1527 | LD HL,(RREG_L) |
1539 | LD DE,BUF_256 - CPU6 |
1528 | LD DE,BUF_256 - CPU6 |
1540 | LD BC,0X10 |
1529 | LD BC,0x10 |
1541 | CALL LDIR_BYTES |
1530 | CALL LDIR_BYTES |
1542 | LD HL,EFINDNAME |
1531 | LD HL,EFINDNAME |
1543 | EX (SP),HL |
1532 | EX (SP),HL |
1544 | FINDNAME01 PUSH IY |
1533 | FINDNAME01 PUSH IY |
1545 | LD IYL,INTERNAL |
1534 | LD IYL,INTERNAL |
1546 | LD HL,BUF_256 |
1535 | LD HL,BUF_256 |
1547 | LD DE,FB_EXT |
1536 | LD DE,FB_EXT |
1548 | LD BC,0X8FF |
1537 | LD BC,0x8FF |
1549 | LD A,(HL) |
1538 | LD A,(HL) |
1550 | CP "." |
1539 | CP "." |
1551 | JR NZ,FINDNAME02 |
1540 | JR NZ,FINDNAME02 |
1552 | LDI |
1541 | LDI |
1553 | LDI |
1542 | LDI |
Line 1597... | Line 1586... | ||
1597 | SCF |
1586 | SCF |
1598 | FINDNAME13 POP IY |
1587 | FINDNAME13 POP IY |
1599 | RET |
1588 | RET |
1600 | 1589 | ||
1601 | CMP_NAME LD DE,FB_EXT |
1590 | CMP_NAME LD DE,FB_EXT |
1602 | ICMP_NAME LD B,0X0B |
1591 | ICMP_NAME LD B,0x0B |
1603 | CMP_NAME_B LD A,(DE) |
1592 | CMP_NAME_B LD A,(DE) |
1604 | CP "a" |
1593 | CP "a" |
1605 | JR C,CMPNAME01 |
1594 | JR C,CMPNAME01 |
1606 | CP "{" |
1595 | CP "{" |
1607 | JR NC,CMPNAME01 |
1596 | JR NC,CMPNAME01 |
Line 1612... | Line 1601... | ||
1612 | INC HL |
1601 | INC HL |
1613 | DJNZ CMP_NAME_B |
1602 | DJNZ CMP_NAME_B |
1614 | XOR A |
1603 | XOR A |
1615 | RET |
1604 | RET |
1616 | 1605 | ||
1617 | ;ВХОЖДЕНИЕ В DIR |
1606 | ; вхождение в dir |
1618 | ENTER_DIR LD IYL,INTERNAL |
1607 | ENTER_DIR LD IYL,INTERNAL |
1619 | CALL READ_DIR |
1608 | CALL READ_DIR |
1620 | PUSH AF |
1609 | PUSH AF |
1621 | PUSH DE |
1610 | PUSH DE |
1622 | PUSH HL |
1611 | PUSH HL |
Line 1653... | Line 1642... | ||
1653 | JR ENT_DI1 |
1642 | JR ENT_DI1 |
1654 | 1643 | ||
1655 | ENT_DI2 LD HL,TEK_LEV |
1644 | ENT_DI2 LD HL,TEK_LEV |
1656 | LD A,(HL) |
1645 | LD A,(HL) |
1657 | INC A |
1646 | INC A |
1658 | CP 0X10 |
1647 | CP 0x10 |
1659 | EXX |
1648 | EXX |
1660 | RET Z |
1649 | RET Z |
1661 | EXX |
1650 | EXX |
1662 | LD (HL),A |
1651 | LD (HL),A |
1663 | DEC A |
1652 | DEC A |