Rev 105 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 105 | Rev 112 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | 1 | ||
2 | ;LAST UPDATE: 26.12.2011 savelij |
2 | ;LAST UPDATE: 18.06.2013 savelij |
3 | 3 | ||
4 | include ../../../pentevo/rom/macros.a80 |
4 | include ../../../pentevo/rom/macros.a80 |
5 | include ports_ngs.a80 |
5 | include ports_ngs.a80 |
6 | include ../../../pentevo/rom/sdcomand.a80 |
6 | include ../../../pentevo/rom/sdcomand.a80 |
7 | 7 | ||
Line 10... | Line 10... | ||
10 | 10 | ||
11 | RAMCOD EQU 0X4080 ;АДРЕС РАБОТЫ ОСНОВНОГО КОДА |
11 | RAMCOD EQU 0X4080 ;АДРЕС РАБОТЫ ОСНОВНОГО КОДА |
12 | RAM8KB EQU 0X6000 ;АДРЕС БУФЕРА ДЛЯ ПЕРЕБРОСКИ КОДА |
12 | RAM8KB EQU 0X6000 ;АДРЕС БУФЕРА ДЛЯ ПЕРЕБРОСКИ КОДА |
13 | STRPAG EQU 0X8000 ;АДРЕС КУДА ЗАГРУЗКИ |
13 | STRPAG EQU 0X8000 ;АДРЕС КУДА ЗАГРУЗКИ |
14 | 14 | ||
- | 15 | FREQUENCY EQU C_20MHZ ;ТЕКУЩАЯ ЧАСТОТА ДЛЯ ОСНОВНОЙ ПРОШИВКИ |
|
- | 16 | ||
15 | ORG 0 |
17 | ORG 0 |
16 | DI |
18 | DI |
17 | LD SP,RAMCOD |
19 | LD SP,RAMCOD |
18 | XOR A |
20 | XOR A |
19 | OUT (VOL1),A |
21 | OUT (VOL1),A |
Line 88... | Line 90... | ||
88 | 90 | ||
89 | GRUZIM0 CALL RROMSD ;ЗАГРУЖАЕМ И ЗАПУСКАЕМ ПРОШИВКУ С SD КАРТЫ, ЕСЛИ ОНА ТАМ ЕСТЬ |
91 | GRUZIM0 CALL RROMSD ;ЗАГРУЖАЕМ И ЗАПУСКАЕМ ПРОШИВКУ С SD КАРТЫ, ЕСЛИ ОНА ТАМ ЕСТЬ |
90 | JP GS105 ;ИНАЧЕ ЗАГРУЖАЕМ ПРОШИВКУ ИЗ ПЗУ И ЗАПУСКАЕМ |
92 | JP GS105 ;ИНАЧЕ ЗАГРУЖАЕМ ПРОШИВКУ ИЗ ПЗУ И ЗАПУСКАЕМ |
91 | 93 | ||
92 | GRUZIM2 LD A,0X11 ;КОНФИГУРИМ НГС |
94 | GRUZIM2 LD A,0X11 ;КОНФИГУРИМ НГС |
- | 95 | LD (NGS_MODES),A |
|
93 | OUT (GSCFG0),A ;ОТРУБАЕМ ПЗУ И ВРУБАЕМ ЧАСТОТУ 12МГЦ |
96 | OUT (GSCFG0),A ;ОТРУБАЕМ ПЗУ И ВРУБАЕМ ЧАСТОТУ 12МГЦ |
94 | XOR A |
97 | XOR A |
95 | OUT (MPAG),A ;ВКЛЮЧАЕМ СТРАНИЦУ 0 |
98 | OUT (MPAG),A ;ВКЛЮЧАЕМ СТРАНИЦУ 0 |
96 | GRUZIM IN A,(ZXSTAT) ;ПОСТОЯННО ЖДЕМ КОМАНД ОТ СПЕКА |
99 | GRUZIM IN A,(ZXSTAT) ;ПОСТОЯННО ЖДЕМ КОМАНД ОТ СПЕКА |
97 | RRA |
100 | RRA |
Line 132... | Line 135... | ||
132 | DW RUNCOD ;06 ЗАПУСК КОДА С ЛЮБОГО АДРЕСА И В ЛЮБОЙ СТРАНИЦЕ |
135 | DW RUNCOD ;06 ЗАПУСК КОДА С ЛЮБОГО АДРЕСА И В ЛЮБОЙ СТРАНИЦЕ |
133 | DW STATSD ;07 СТАТУС ЗАГРУЖЕННОГО ФАЙЛА |
136 | DW STATSD ;07 СТАТУС ЗАГРУЖЕННОГО ФАЙЛА |
134 | DW VERPAGE ;08 ВЕРСИЯ В ТЕКСТОВОМ ВИДЕ ДЛЯ УКАЗАННОЙ СТРАНИЦЕ |
137 | DW VERPAGE ;08 ВЕРСИЯ В ТЕКСТОВОМ ВИДЕ ДЛЯ УКАЗАННОЙ СТРАНИЦЕ |
135 | DW GET_CRC ;09 ПОЛУЧИТЬ CRC16 |
138 | DW GET_CRC ;09 ПОЛУЧИТЬ CRC16 |
136 | DW LOADUPDATE ;0A ЗАГРУЗКА ФАЙЛА С ОБНОВЛЕНИЕМ |
139 | DW LOADUPDATE ;0A ЗАГРУЗКА ФАЙЛА С ОБНОВЛЕНИЕМ |
- | 140 | DW SET_FREQ ;0B УСТАНОВКА ЧАСТОТЫ ПРОЦЕССОРА |
|
137 | FLOADE |
141 | FLOADE |
138 | 142 | ||
- | 143 | SET_FREQ IN A,(ZXDATRD) ;ПРИНЯЛИ НОМЕР ЧАСТОТЫ |
|
- | 144 | BIT 7,A |
|
- | 145 | JR NZ,SET_FREQ2 |
|
- | 146 | OUT (CLRCBIT),A ;СБРОСИЛИ КОМАНД БИТ |
|
- | 147 | AND 3 |
|
- | 148 | LD L,C_10MHZ ;УСТАНОВКА ЧАСТОТЫ 10 МГЦ |
|
- | 149 | JR Z,SET_FREQ1 |
|
- | 150 | DEC A |
|
- | 151 | LD L,C_12MHZ ;УСТАНОВКА ЧАСТОТЫ 12 МГЦ |
|
- | 152 | JR Z,SET_FREQ1 |
|
- | 153 | DEC A |
|
- | 154 | LD L,C_20MHZ ;УСТАНОВКА ЧАСТОТЫ 20 МГЦ |
|
- | 155 | JR Z,SET_FREQ1 |
|
- | 156 | LD L,C_24MHZ ;УСТАНОВКА ЧАСТОТЫ 24 МГЦ |
|
- | 157 | SET_FREQ1 LD A,(NGS_MODES) |
|
- | 158 | AND %11001111 |
|
- | 159 | OR L |
|
- | 160 | LD (NGS_MODES),A |
|
- | 161 | OUT (GSCFG0),A |
|
- | 162 | RET |
|
- | 163 | ||
- | 164 | SET_FREQ2 LD A,(NGS_MODES) |
|
- | 165 | AND 0X30 |
|
- | 166 | RRCA |
|
- | 167 | RRCA |
|
- | 168 | RRCA |
|
- | 169 | RRCA |
|
- | 170 | OUT (CLRCBIT),A |
|
- | 171 | OUT (ZXDATWR),A |
|
- | 172 | JP WDN |
|
- | 173 | ||
139 | ;ПЕРЕДАЧА НА СПЕК ВЕРСИИ В TXT ВИДЕ |
174 | ;ПЕРЕДАЧА НА СПЕК ВЕРСИИ В TXT ВИДЕ |
140 | VERPAGE IN A,(ZXDATRD) ;ЗАБРАЛИ БАЙТ НОМЕРА ЗАПРОШЕННОЙ СТРАНИЦЫ ПЗУ |
175 | VERPAGE IN A,(ZXDATRD) ;ЗАБРАЛИ БАЙТ НОМЕРА ЗАПРОШЕННОЙ СТРАНИЦЫ ПЗУ |
141 | AND 7 ;СТАРШИЕ 5 БИТ В ИГНОРЕ |
176 | AND 7 ;СТАРШИЕ 5 БИТ В ИГНОРЕ |
142 | EX AF,AF' ;ВРЕМЕННО СПРЯТАЛИ ФЛАГИ ПРОЦА |
177 | EX AF,AF' ;ВРЕМЕННО СПРЯТАЛИ ФЛАГИ ПРОЦА |
143 | LD A,0X30 |
178 | LD A,0X30 |
Line 198... | Line 233... | ||
198 | 233 | ||
199 | ;РАСПАКОВЩИК ДАТЫ |
234 | ;РАСПАКОВЩИК ДАТЫ |
200 | UNVERS LD HL,6 |
235 | UNVERS LD HL,6 |
201 | ADD HL,DE ;ПРОПУСТИЛИ 6 БАЙТ ТЕКСТА ВЕРСИИ |
236 | ADD HL,DE ;ПРОПУСТИЛИ 6 БАЙТ ТЕКСТА ВЕРСИИ |
202 | LD C,(HL) ;ЗАБРАЛИ МЛАДШИЙ БАЙТ ВЕРСИИ |
237 | LD C,(HL) ;ЗАБРАЛИ МЛАДШИЙ БАЙТ ВЕРСИИ |
203 | LD (HL)," ";0X20 ;НА ЕГО МЕСТО ПРОБЕЛ |
238 | LD (HL)," " ;НА ЕГО МЕСТО ПРОБЕЛ |
204 | INC HL |
239 | INC HL |
205 | LD B,(HL) ;ЗАБРАЛИ СТАРШИЙ БАЙТ |
240 | LD B,(HL) ;ЗАБРАЛИ СТАРШИЙ БАЙТ |
206 | LD A,C ;ВЗЯЛИ МЛАДШИЙ БАЙТ ВЕРСИИ |
241 | LD A,C ;ВЗЯЛИ МЛАДШИЙ БАЙТ ВЕРСИИ |
207 | AND 0X1F ;НАС ИНТЕРЕСУЮТ МЛАДШИЕ 5 БИТ (ДЕНЬ МЕСЯЦА) |
242 | AND 0X1F ;НАС ИНТЕРЕСУЮТ МЛАДШИЕ 5 БИТ (ДЕНЬ МЕСЯЦА) |
208 | JR NZ,$+4 |
243 | JR NZ,$+4 |
Line 222... | Line 257... | ||
222 | JR NZ,$+4 ;НОМЕР МЕСЯЦА НЕМОЖЕТ БЫТЬ 0 |
257 | JR NZ,$+4 ;НОМЕР МЕСЯЦА НЕМОЖЕТ БЫТЬ 0 |
223 | RES 6,B ;ИНАЧЕ ЭТО БЕТА ВЕРСИЯ |
258 | RES 6,B ;ИНАЧЕ ЭТО БЕТА ВЕРСИЯ |
224 | CP 13 ;И НОМЕР МЕСЯЦА НЕ МОЖЕТ БЫТЬ БОЛЬШЕ 12 |
259 | CP 13 ;И НОМЕР МЕСЯЦА НЕ МОЖЕТ БЫТЬ БОЛЬШЕ 12 |
225 | JR C,$+4 |
260 | JR C,$+4 |
226 | RES 6,B ;ИНАЧЕ БЕТА ВЕРСИЯ |
261 | RES 6,B ;ИНАЧЕ БЕТА ВЕРСИЯ |
227 | LD (HL),".";0X2E ;ОТДЕЛИЛИ НОМЕР ДНЯ МЕСЯЦА ТОЧКОЙ |
262 | LD (HL),"." ;ОТДЕЛИЛИ НОМЕР ДНЯ МЕСЯЦА ТОЧКОЙ |
228 | INC HL |
263 | INC HL |
229 | CALL A2TXT ;КОНВЕРТИРОВАЛИ НОМЕР МЕСЯЦА |
264 | CALL A2TXT ;КОНВЕРТИРОВАЛИ НОМЕР МЕСЯЦА |
230 | LD (HL),".";0X2E ;ТАК ЖЕ ОТДЕЛИЛИ ТОЧКОЙ |
265 | LD (HL),"." ;ТАК ЖЕ ОТДЕЛИЛИ ТОЧКОЙ |
231 | INC HL |
266 | INC HL |
232 | LD A,B ;ВЗЯЛИ ОСТАВШИЕСЯ БИТЫ |
267 | LD A,B ;ВЗЯЛИ ОСТАВШИЕСЯ БИТЫ |
233 | AND 0X3F ;НАМ НУЖНЫ 6 БИТ НОМЕРА ГОДА |
268 | AND 0X3F ;НАМ НУЖНЫ 6 БИТ НОМЕРА ГОДА |
234 | CALL A2TXT ;КОНВЕРТНУЛИ В ТЕКСТ |
269 | CALL A2TXT ;КОНВЕРТНУЛИ В ТЕКСТ |
235 | BIT 6,B ;БЕТА ИЛИ ЫТАБЛ ВЕРСИЯ? |
270 | BIT 6,B ;БЕТА ИЛИ ЫТАБЛ ВЕРСИЯ? |
Line 238... | Line 273... | ||
238 | LD BC,TXT2E-TXT2 |
273 | LD BC,TXT2E-TXT2 |
239 | JR UNVERS2 |
274 | JR UNVERS2 |
240 | 275 | ||
241 | UNVERS1 LD DE,TXT3 ;ВЕРСИЯ СТАБЛ |
276 | UNVERS1 LD DE,TXT3 ;ВЕРСИЯ СТАБЛ |
242 | LD BC,TXT3E-TXT3 |
277 | LD BC,TXT3E-TXT3 |
243 | UNVERS2 LD (HL)," ";0X20 ;ПЕРЕД ТЕКСТОМ (БЕТА ИЛИ СТАБЛ) ВСТАВЛЯЕМ ПРОБЕЛ |
278 | UNVERS2 LD (HL)," " ;ПЕРЕД ТЕКСТОМ (БЕТА ИЛИ СТАБЛ) ВСТАВЛЯЕМ ПРОБЕЛ |
244 | INC HL |
279 | INC HL |
245 | EX DE,HL |
280 | EX DE,HL |
246 | LDIR ;ПЕРЕТАЩИЛИ ТЕКСТ |
281 | LDIR ;ПЕРЕТАЩИЛИ ТЕКСТ |
247 | EX DE,HL |
282 | EX DE,HL |
248 | LD (HL),0 ;ЗАВЕРШИЛИ СТРОКУ НУЛЕМ |
283 | LD (HL),0 ;ЗАВЕРШИЛИ СТРОКУ НУЛЕМ |
Line 283... | Line 318... | ||
283 | LDINSD1 CALL WDY |
318 | LDINSD1 CALL WDY |
284 | IN A,(C) |
319 | IN A,(C) |
285 | LD (HL),A |
320 | LD (HL),A |
286 | INC HL |
321 | INC HL |
287 | AND A |
322 | AND A |
288 | JR NZ,LDINSD1 ;ПРИНИМАЕМ СТРОКУ ПОКА НЕ ВСТРЕТИСЯ БАЙТ 0 |
323 | JR NZ,LDINSD1 ;ПРИНИМАЕМ СТРОКУ ПОКА НЕ ВСТРЕТИТСЯ БАЙТ 0 |
289 | EX AF,AF' |
324 | EX AF,AF' |
290 | POP HL |
325 | POP HL |
291 | JP LOAD_SD ;ДАЛЕЕ ЗАПУСКАЕМ ЗАГРУЗКУ С SD КАРТЫ |
326 | JP LOAD_SD ;ДАЛЕЕ ЗАПУСКАЕМ ЗАГРУЗКУ С SD КАРТЫ |
292 | 327 | ||
293 | ;ЗАГРУЗКА ФАЙЛА С ОБНОВЛЕНИЯМИ |
328 | ;ЗАГРУЗКА ФАЙЛА С ОБНОВЛЕНИЯМИ |
Line 353... | Line 388... | ||
353 | LOADROM XOR A |
388 | LOADROM XOR A |
354 | OUT (MPAG),A ;ВКЛЮЧАЕМ СТРАНИЦУ |
389 | OUT (MPAG),A ;ВКЛЮЧАЕМ СТРАНИЦУ |
355 | LD HL,0X8000 ;АДРЕС ЗАГРУЗКИ |
390 | LD HL,0X8000 ;АДРЕС ЗАГРУЗКИ |
356 | OUT (CLRCBIT),A ;СБРОС КОМАНД БИТА |
391 | OUT (CLRCBIT),A ;СБРОС КОМАНД БИТА |
357 | LD BC,ZXDATRD ;АДРЕС ПОРТА ДАННЫХ |
392 | LD BC,ZXDATRD ;АДРЕС ПОРТА ДАННЫХ |
358 | CALL WDY |
393 | LOADROM1 CALL WDY |
359 | INI |
394 | INI |
360 | LD A,H |
395 | LD A,H |
361 | AND A |
396 | AND A |
362 | JR NZ,$-7 ;ГРУЗИМ ПОКА ПАМЯТЬ НЕ КОНЧИТСЯ |
397 | JR NZ,LOADROM1 ;ГРУЗИМ ПОКА ПАМЯТЬ НЕ КОНЧИТСЯ |
363 | RET |
398 | RET |
364 | 399 | ||
365 | ;ГРУЗИЛКА СТАНДАРТНОЙ ПРОШИВКИ ИЗ ROM |
400 | ;ГРУЗИЛКА СТАНДАРТНОЙ ПРОШИВКИ ИЗ ROM |
366 | GS105 LD HL,STRPAG ;АДРЕС КУДА ПЕРЕНОСИТЬ |
401 | GS105 LD HL,STRPAG ;АДРЕС КУДА ПЕРЕНОСИТЬ |
367 | LD A,4 ;ПЕРЕНОСИТЬ 4 КУСКА ПО 8 КИЛОБАЙТ |
402 | LD A,4 ;ПЕРЕНОСИТЬ 4 КУСКА ПО 8 КИЛОБАЙТ |
Line 389... | Line 424... | ||
389 | 424 | ||
390 | ;ЗАПУСК ЗАГРУЖЕННОЙ ПРОШИВКИ |
425 | ;ЗАПУСК ЗАГРУЖЕННОЙ ПРОШИВКИ |
391 | JPLDROM XOR A |
426 | JPLDROM XOR A |
392 | OUT (MPAG),A ;ВКЛЮЧИЛИ СТРАНИЦУ 0 ОЗУ |
427 | OUT (MPAG),A ;ВКЛЮЧИЛИ СТРАНИЦУ 0 ОЗУ |
393 | ; LD A,0X13 ;ВКЛЮЧИЛИ ЧАСТОТУ 12МГЦ, ОТКЛЮЧИЛИ ПЗУ И ЗАЩИТИЛИ ОЗУ ОТ ЗАПИСИ |
428 | ; LD A,0X13 ;ВКЛЮЧИЛИ ЧАСТОТУ 12МГЦ, ОТКЛЮЧИЛИ ПЗУ И ЗАЩИТИЛИ ОЗУ ОТ ЗАПИСИ |
394 | LD A,0X23 ;ВКЛЮЧИЛИ ЧАСТОТУ 20МГЦ, ОТКЛЮЧИЛИ ПЗУ И ЗАЩИТИЛИ ОЗУ ОТ ЗАПИСИ |
429 | ; LD A,0X23 ;ВКЛЮЧИЛИ ЧАСТОТУ 20МГЦ, ОТКЛЮЧИЛИ ПЗУ И ЗАЩИТИЛИ ОЗУ ОТ ЗАПИСИ |
- | 430 | LD A,3+FREQUENCY ;ВКЛЮЧИЛИ УКАЗАННУЮ ЧАСТОТУ, ОТКЛЮЧИЛИ ПЗУ И ЗАЩИТИЛИ ОЗУ ОТ ЗАПИСИ |
|
395 | OUT (GSCFG0),A |
431 | OUT (GSCFG0),A |
396 | JP 0 ;СТАРТУЕМ СТАНДАРТНУЮ ПРОШИВКУ |
432 | JP 0 ;СТАРТУЕМ СТАНДАРТНУЮ ПРОШИВКУ |
397 | 433 | ||
398 | ;ЖДЕМ ПОКА СПЕК ДАСТ БАЙТ |
434 | ;ЖДЕМ ПОКА СПЕК ДАСТ БАЙТ |
399 | WDY IN A,(ZXSTAT) |
435 | WDY IN A,(ZXSTAT) |
Line 532... | Line 568... | ||
532 | FATSTR EQU CLS_DSC+4 ;4 НАЧАЛО ПЕРВОЙ FAT ТАБЛИЦЫ |
568 | FATSTR EQU CLS_DSC+4 ;4 НАЧАЛО ПЕРВОЙ FAT ТАБЛИЦЫ |
533 | ADRPATH EQU FATSTR+4 ;2 АДРЕС ТЕКСТА ПУТИ ФАЙЛА |
569 | ADRPATH EQU FATSTR+4 ;2 АДРЕС ТЕКСТА ПУТИ ФАЙЛА |
534 | STATUS EQU ADRPATH+2 ;1 СТАТУС ПОСЛЕ ВЫЗОВА LOAD_SD |
570 | STATUS EQU ADRPATH+2 ;1 СТАТУС ПОСЛЕ ВЫЗОВА LOAD_SD |
535 | OLD_SP EQU STATUS+1 ;2 СТЕК ДЛЯ ВЫХОДА |
571 | OLD_SP EQU STATUS+1 ;2 СТЕК ДЛЯ ВЫХОДА |
536 | FB_EXT EQU OLD_SP+2 ;B БУФЕР 8.3 ДЛЯ ПОИСКА ИМЕНИ |
572 | FB_EXT EQU OLD_SP+2 ;B БУФЕР 8.3 ДЛЯ ПОИСКА ИМЕНИ |
- | 573 | LVL_DIR EQU FB_EXT+0X0B ;1 НОМЕР УРОВНЯ ДИРЕКТОРИИ |
|
- | 574 | LSTLOAD EQU LVL_DIR+1 ;4 НОМЕР СЕКТОРА ЗАГРУЖЕННОГО В БУФЕР |
|
- | 575 | NGS_MODES EQU LSTLOAD+4 ;1 ТЕКУЩИЙ УСТАНОВЛЕННЫЙ РЕЖИМ |
|
537 | 576 | ||
538 | ;SD КАРТА НЕ НАЙДЕНА |
577 | ;SD КАРТА НЕ НАЙДЕНА |
539 | ZAW003 LD A,0XEE |
578 | ZAW003 LD A,0XEE |
540 | WR_STAT LD SP,(OLD_SP) |
579 | WR_STAT LD SP,(OLD_SP) |
541 | LD (STATUS),A |
580 | LD (STATUS),A |
Line 554... | Line 593... | ||
554 | ;0XDD-FAT НЕ ОБНАРУЖЕН |
593 | ;0XDD-FAT НЕ ОБНАРУЖЕН |
555 | ;0XEE-SD КАРТА НЕ ОБНАРУЖЕНА |
594 | ;0XEE-SD КАРТА НЕ ОБНАРУЖЕНА |
556 | LOAD_SD LD IYL,A;LY,A ;СОХРАНИЛИ НОМЕР СТРАНИЦЫ КУДА ГРУЗИТЬ |
595 | LOAD_SD LD IYL,A;LY,A ;СОХРАНИЛИ НОМЕР СТРАНИЦЫ КУДА ГРУЗИТЬ |
557 | LD (ADRPATH),HL ;СОХРАНИЛИ АДРЕС СТРОКИ ПУТИ |
596 | LD (ADRPATH),HL ;СОХРАНИЛИ АДРЕС СТРОКИ ПУТИ |
558 | LD (OLD_SP),SP ;СОХРАНИЛИ СТЕК |
597 | LD (OLD_SP),SP ;СОХРАНИЛИ СТЕК |
- | 598 | LD A,0XFF |
|
- | 599 | LD (LSTLOAD+3),A ;ПРИНУДИТЕЛЬНАЯ ЗАГРУЗКА СЕКТОРА БЕЗ ПРОВЕРКИ |
|
559 | LD A,1 |
600 | LD A,1 |
560 | OUT (GSCFG0),A ;ОТКЛЮЧИЛИ ПЗУ, ВСЕ СТРАНИЦА ОЗУ |
601 | OUT (GSCFG0),A ;ОТКЛЮЧИЛИ ПЗУ, ВСЕ СТРАНИЦА ОЗУ |
561 | LD A,%10011011 |
602 | LD A,%10011011 |
562 | OUT (SCTRL),A ;СКОНФИГУРИЛИ НГС С CS=1 ДЛЯ SD КАРТЫ |
603 | OUT (SCTRL),A ;СКОНФИГУРИЛИ НГС С CS=1 ДЛЯ SD КАРТЫ |
563 | LD B,0X10 |
604 | LD B,0X10 |
564 | LD A,0XFF |
605 | LOADSD1 LD A,0XFF |
565 | OUT (SD_SEND),A ;ПИШЕМ 0X80 БАЙТ 0XFF В ПОРТ КАРТОЧКИ |
606 | OUT (SD_SEND),A ;ПИШЕМ 0X80 БАЙТ 0XFF В ПОРТ КАРТОЧКИ |
566 | DJNZ $-4 |
607 | DJNZ LOADSD1 |
567 | XOR A ;256 ПОПЫТОК НАЙТИ SD КАРТУ |
608 | XOR A ;256 ПОПЫТОК НАЙТИ SD КАРТУ |
568 | EX AF,AF' |
609 | EX AF,AF' |
569 | LD A,1 |
610 | LD A,1 |
570 | OUT (SCTRL),A ;ВЫБРАЛИ SD КАРТУ CS=0 |
611 | OUT (SCTRL),A ;ВЫБРАЛИ SD КАРТУ CS=0 |
571 | 612 | ||
Line 767... | Line 808... | ||
767 | LD (BYTSSEC),A |
808 | LD (BYTSSEC),A |
768 | CALL BCDE_A ;РАЗДЕЛИЛИ НА К-ВО СЕКТОРОВ В КЛАСТЕРЕ |
809 | CALL BCDE_A ;РАЗДЕЛИЛИ НА К-ВО СЕКТОРОВ В КЛАСТЕРЕ |
769 | LD (CLS_DSC),DE |
810 | LD (CLS_DSC),DE |
770 | LD (CLS_DSC+2),BC ;ПОЛОЖИЛИ КОЛ-ВО КЛАСТЕРОВ НА РАЗДЕЛЕ |
811 | LD (CLS_DSC+2),BC ;ПОЛОЖИЛИ КОЛ-ВО КЛАСТЕРОВ НА РАЗДЕЛЕ |
771 | 812 | ||
772 | ; LD A,(CAL_FAT) |
813 | LD A,(CAL_FAT) |
773 | ; CP 0XFF |
814 | CP 0XFF |
774 | ; JR NZ,RDFAT04 |
815 | JR NZ,RDFAT04 |
775 | ;ОПРЕДЕЛЕНИЕ РАЗРЯДНОСТИ FAT |
816 | ;ОПРЕДЕЛЕНИЕ ТИПА FAT ПРИ ОТСУСТВИИ MBR |
- | 817 | LD DE,(SEC_FAT-1) |
|
776 | LD HL,(CLS_DSC) |
818 | LD BC,(SEC_FAT+1) |
777 | LD DE,(CLS_DSC+2) ;ВЗЯЛИ КОЛИЧЕСТВО КЛАСТЕРОВ НА РАЗДЕЛЕ |
819 | LD E,0 ;BCDE=КОЛИЧЕСТВО СЕКТОРОВ *0X100 |
778 | PUSH HL |
820 | PUSH BC |
779 | PUSH DE |
821 | PUSH DE ;СОХРАНИЛИ |
780 | ADD HL,HL |
822 | SRL B |
781 | EX DE,HL |
823 | RR C |
782 | ADC HL,HL |
- | |
783 | LD B,H |
824 | RR D |
- | 825 | RR E ;BCDE=КОЛИЧЕСТВО СЕКТОРОВ *0X80 |
|
- | 826 | LD HL,CLS_DSC ;КОЛИЧЕСТВО КЛАСТЕРОВ НА FAT |
|
784 | LD C,L |
827 | PUSH HL ;СОХРАНИЛИ |
785 | CALL RASCHET ;СЧИТАЕМ, ЕСЛИ ПОЛУЧИЛИ 0, ТО ФАТ16 |
828 | CALL HLBCDEM ;КОЛИЧЕСТВО КЛАСТЕРОВ-(КОЛИЧЕСТВО СЕКТОРОВ*0X80) |
786 | LD A,1 |
829 | LD A,E |
- | 830 | AND 0X80 ;КОЛИЧЕСТВО МЕНЕЕ 128 КЛАСТЕРОВ В СЕКТОРЕ ДЛЯ FAT32 |
|
787 | POP DE |
831 | OR D |
788 | POP HL |
832 | OR C |
789 | JR Z,RDFAT04 |
- | |
790 | ADD HL,HL |
- | |
791 | EX DE,HL |
- | |
792 | ADC HL,HL |
- | |
793 | EX DE,HL |
- | |
794 | ADD HL,HL |
- | |
795 | EX DE,HL |
- | |
796 | ADC HL,HL |
- | |
797 | LD B,H |
833 | OR B |
798 | LD C,L |
- | |
799 | CALL RASCHET ;СЧИТАЕМ, ЕСЛИ ПОЛУЧИЛИ 0, ТО ФАТ32 |
- | |
800 | LD A,2 |
834 | LD A,2 |
- | 835 | POP HL |
|
- | 836 | POP DE |
|
- | 837 | POP BC |
|
- | 838 | JR Z,RDFAT04 ;FAT32 ЕСЛИ ФЛАГ Z=0 |
|
- | 839 | CALL HLBCDEM ;КОЛИЧЕСТВО КЛАСТЕРОВ-(КОЛИЧЕСТВО СЕКТОРОВ*0X100) |
|
801 | JR Z,RDFAT04 |
840 | LD A,D |
- | 841 | OR C |
|
- | 842 | OR B |
|
- | 843 | LD A,1 |
|
- | 844 | JR Z,RDFAT04 ;FAT16 ЕСЛИ ФЛАГ Z=0 |
|
802 | XOR A ;ИНАЧЕ ФАТ12 |
845 | XOR A ;ИНАЧЕ FAT12 |
803 | 846 | ||
804 | ;ДЛЯ FAT12/16 ВЫЧИСЛЯЕМ АДРЕС ПЕРВОГО СЕКТОРА ДИРЕКТОРИИ |
847 | ;ДЛЯ FAT12/16 ВЫЧИСЛЯЕМ АДРЕС ПЕРВОГО СЕКТОРА ДИРЕКТОРИИ |
805 | ;ДЛЯ FAT32 БЕРЕМ ПО СМЕЩЕМИЮ +44, НА ВЫХОДЕ BCDE-СЕКТОР ROOTDIR |
848 | ;ДЛЯ FAT32 БЕРЕМ ПО СМЕЩЕМИЮ +44, НА ВЫХОДЕ BCDE-СЕКТОР ROOTDIR |
- | 849 | RDFAT04 LD (CAL_FAT),A ;УТОЧНИЛИ ТИП ФАТА |
|
806 | RDFAT04 PUSH AF |
850 | EX AF,AF' |
807 | LD DE,(RSVDSEC) |
851 | LD DE,(RSVDSEC) |
808 | LD BC,0 |
852 | LD BC,0 |
809 | LD HL,STARTRZ |
853 | LD HL,STARTRZ |
810 | CALL BCDEHLP |
854 | CALL BCDEHLP |
811 | LD (FATSTR),DE |
855 | LD (FATSTR),DE |
812 | LD (FATSTR+2),BC ;ВЫЧИСЛИЛИ И ПОЛОЖИЛИ НОМЕР СЕКТОРА НАЧАЛА FAT-ЕАБЛИЦ |
856 | LD (FATSTR+2),BC ;ВЫЧИСЛИЛИ И ПОЛОЖИЛИ НОМЕР СЕКТОРА НАЧАЛА FAT-ЕАБЛИЦ |
813 | POP AF |
857 | EX AF,AF' |
814 | LD (CAL_FAT),A ;УТОЧНИЛИ ТИП ФАТА |
- | |
815 | AND A |
858 | AND A |
816 | LD DE,0 |
859 | LD DE,0 |
817 | LD B,D |
860 | LD B,D |
818 | LD C,E |
861 | LD C,E |
819 | JR Z,FSRROO2 ;FAT12-NONE |
862 | JR Z,FSRROO2 ;FAT12-NONE |
Line 822... | Line 865... | ||
822 | LD DE,(BUF_512+0X2C) |
865 | LD DE,(BUF_512+0X2C) |
823 | LD BC,(BUF_512+0X2E) ;FAT32 |
866 | LD BC,(BUF_512+0X2E) ;FAT32 |
824 | FSRROO2 LD (ROOTCLS),DE |
867 | FSRROO2 LD (ROOTCLS),DE |
825 | LD (ROOTCLS+2),BC ;ПОЛОЖИЛИ НОМЕР КЛАСТЕР ROOT ДИРЕКТОРИИ |
868 | LD (ROOTCLS+2),BC ;ПОЛОЖИЛИ НОМЕР КЛАСТЕР ROOT ДИРЕКТОРИИ |
826 | 869 | ||
- | 870 | XOR A |
|
- | 871 | LD (LVL_DIR),A ;НАЧИНАЕМ С ROOT ДИРЕКТОРИИ |
|
827 | LD HL,(ADRPATH) ;ВЕРНУЛИ АДРЕС СТРОКИ ПУТИ ДО ФАЙЛА |
872 | LD HL,(ADRPATH) ;ВЕРНУЛИ АДРЕС СТРОКИ ПУТИ ДО ФАЙЛА |
828 | FINDFL1 PUSH BC |
873 | FINDFL1 PUSH BC |
829 | PUSH DE ;СОХРАНИЛИ НОМЕР КЛАСТЕРА |
874 | PUSH DE ;СОХРАНИЛИ НОМЕР КЛАСТЕРА |
830 | CALL FNDBUF ;РАСПАКОВКА ЧАСТИ ТЕКСТОВОЙ СТРОКИ ДЛЯ СОЗДАНИЯ МАСКИ ПОИСКА |
875 | CALL FNDBUF ;РАСПАКОВКА ЧАСТИ ТЕКСТОВОЙ СТРОКИ ДЛЯ СОЗДАНИЯ МАСКИ ПОИСКА |
831 | POP DE |
876 | POP DE |
Line 847... | Line 892... | ||
847 | CALL SAVEZP ;ЕСЛИ НЕПОСЛЕДНИЙ СОХРАНЯЕМ В ТАБЛИЦУ |
892 | CALL SAVEZP ;ЕСЛИ НЕПОСЛЕДНИЙ СОХРАНЯЕМ В ТАБЛИЦУ |
848 | JR NEXTCLS ;СЛЕДУЮЩИЙ НОМЕР КЛАСТЕРА |
893 | JR NEXTCLS ;СЛЕДУЮЩИЙ НОМЕР КЛАСТЕРА |
849 | 894 | ||
850 | LASTCLS LD BC,0XFFFF |
895 | LASTCLS LD BC,0XFFFF |
851 | CALL SAVEZP ;КЛАДЕМ МАРКЕР КОНЦА ЦЕПОЧКИ |
896 | CALL SAVEZP ;КЛАДЕМ МАРКЕР КОНЦА ЦЕПОЧКИ |
- | 897 | EXX |
|
- | 898 | LD HL,LVL_DIR |
|
- | 899 | LD A,(HL) ;ТЕКУЩИЙ УРОВЕНЬ ДИРЕКТОРИИ |
|
- | 900 | INC (HL) ;СЛЕДУЮЩИЙ УРОВЕНЬ ДИРЕКТОРИИ |
|
- | 901 | AND A |
|
- | 902 | LD BC,0 ;КОЛИЧЕСТВО ЗАПИСЕЙ ROOT ДИРЕКТОРИИ |
|
- | 903 | JR NZ,LASTCLS1 |
|
- | 904 | LD A,(CAL_FAT) |
|
- | 905 | CP 2 |
|
- | 906 | JR NC,LASTCLS1 |
|
- | 907 | LD HL,(ROOTSEC) ;УЖЕ НЕ ROOT ДИРЕКТОРИЯ |
|
- | 908 | ADD HL,HL |
|
- | 909 | ADD HL,HL |
|
- | 910 | ADD HL,HL |
|
- | 911 | ADD HL,HL |
|
- | 912 | ADD HL,HL |
|
- | 913 | LD B,H |
|
- | 914 | LD C,L |
|
- | 915 | LASTCLS1 EXX |
|
852 | 916 | ||
853 | FINDFL INC BC ;ИЩЕМ ПО ЗАДАННОЙ МАСКЕ НАЧИНАЯ С 0 |
917 | FINDFL INC BC ;ИЩЕМ ПО ЗАДАННОЙ МАСКЕ НАЧИНАЯ С 0 |
854 | CALL RDDIRSC ;ГРУЗИМ ПО НОМЕРУ ОПИСАТЕЛЯ СЕКТОР ДИРЕКТОРИИ |
918 | CALL RDDIRSC ;ГРУЗИМ ПО НОМЕРУ ОПИСАТЕЛЯ СЕКТОР ДИРЕКТОРИИ |
855 | LD A,C |
919 | LD A,C |
856 | AND 0X0F ;В СЕКТОРЕ МАКСИМУМ 16 ОПИСАТЕЛЕЙ |
920 | AND 0X0F ;В СЕКТОРЕ МАКСИМУМ 16 ОПИСАТЕЛЕЙ |
Line 861... | Line 925... | ||
861 | ADD HL,HL |
925 | ADD HL,HL |
862 | ADD HL,HL |
926 | ADD HL,HL |
863 | ADD HL,HL |
927 | ADD HL,HL |
864 | ADD HL,HL |
928 | ADD HL,HL |
865 | ADD HL,DE ;ПОЛУЧИЛИ АДРЕС НУЖНОГО ОПИСАТЕЛЯ |
929 | ADD HL,DE ;ПОЛУЧИЛИ АДРЕС НУЖНОГО ОПИСАТЕЛЯ |
- | 930 | EXX |
|
- | 931 | DEC BC |
|
- | 932 | LD A,B |
|
- | 933 | OR C |
|
- | 934 | EXX |
|
- | 935 | LD A,0XAA |
|
- | 936 | JP Z,WR_STAT |
|
866 | LD A,(HL) ;ПРОВЕРЯЕМ ПЕРВЫЙ БАЙТ ИМЕНИ ОПИСАТЕЛЯ |
937 | LD A,(HL) ;ПРОВЕРЯЕМ ПЕРВЫЙ БАЙТ ИМЕНИ ОПИСАТЕЛЯ |
867 | AND A |
938 | AND A |
868 | LD A,0XAA ;ЕСЛИ БАЙТ =0, ТО |
939 | LD A,0XAA ;ЕСЛИ БАЙТ =0, ТО |
869 | JP Z,WR_STAT ;ПЕРЕХОД ПО ОШИБКЕ = ФАЙЛ НЕ НАЙДЕН |
940 | JP Z,WR_STAT ;ПЕРЕХОД ПО ОШИБКЕ = ФАЙЛ НЕ НАЙДЕН |
870 | PUSH HL |
941 | PUSH HL |
Line 903... | Line 974... | ||
903 | PUSH DE |
974 | PUSH DE |
904 | EXX |
975 | EXX |
905 | POP HL |
976 | POP HL |
906 | EXX |
977 | EXX |
907 | LD A,(BYTSSEC) ;ВЗЯЛИ РАЗМЕР КЛАСТЕРА В СЕКТОРАХ |
978 | LD A,(BYTSSEC) ;ВЗЯЛИ РАЗМЕР КЛАСТЕРА В СЕКТОРАХ |
908 | LD IXH,A;HX,A ;СОХРАНИЛИ |
979 | LD IXH,A ;СОХРАНИЛИ |
909 | POP DE |
980 | POP DE |
910 | POP BC |
981 | POP BC |
911 | LD HL,0X8000 ;АДРЕС ЗАГРУЗКИ |
982 | LD HL,0X8000 ;АДРЕС ЗАГРУЗКИ |
912 | 983 | ||
913 | ;HX-РАЗМЕР КЛАСТЕРА |
984 | ;HX-РАЗМЕР КЛАСТЕРА |
914 | ;HL'-КОЛ-ВО СЕКТОРОВ ФАЙЛА |
985 | ;HL'-КОЛ-ВО СЕКТОРОВ ФАЙЛА |
915 | ;BCDE-НОМЕР СТАРТОВОГО КЛАСТЕРА |
986 | ;BCDE-НОМЕР СТАРТОВОГО КЛАСТЕРА |
916 | ;LY-СТАРТОВАЯ СТРАНИЦА ЗАГРУЗКИ |
987 | ;LY-СТАРТОВАЯ СТРАНИЦА ЗАГРУЗКИ |
917 | 988 | ||
918 | LD A,IYL;LY ;ВОССТАНОВИЛИ СТРАНИЦУ ЗАГРУЗКИ |
989 | LD A,IYL ;ВОССТАНОВИЛИ СТРАНИЦУ ЗАГРУЗКИ |
919 | AND A |
990 | AND A |
920 | JR NZ,CP_PAGE ;ПРОВЕРКА ДЛЯ ЗАГРУЗКИ В СТРАНИЦУ 0 |
991 | JR NZ,CP_PAGE ;ПРОВЕРКА ДЛЯ ЗАГРУЗКИ В СТРАНИЦУ 0 |
921 | OUT (MPAG),A ;ВКЛЮЧАЕМ СТРАНИЦУ 0 |
992 | OUT (MPAG),A ;ВКЛЮЧАЕМ СТРАНИЦУ 0 |
922 | EXX |
993 | EXX |
923 | LD A,L |
994 | LD A,L |
Line 930... | Line 1001... | ||
930 | 1001 | ||
931 | ;ЗАГРУЗКА В СТРАНИЦУ 1 ЗАПРЕЩЕНА |
1002 | ;ЗАГРУЗКА В СТРАНИЦУ 1 ЗАПРЕЩЕНА |
932 | CP_PAGE DEC A |
1003 | CP_PAGE DEC A |
933 | LD A,0XAA |
1004 | LD A,0XAA |
934 | JP Z,WR_STAT |
1005 | JP Z,WR_STAT |
935 | LD A,IYL;LY |
1006 | LD A,IYL |
936 | 1007 | ||
937 | ;ВКЛЮЧАЕМ СТРАНИЦУ ЗАГРУЗКИ |
1008 | ;ВКЛЮЧАЕМ СТРАНИЦУ ЗАГРУЗКИ |
938 | LDFILE0 OUT (MPAG),A ;ВКЛЮЧАЕМ ЗАДАННУЮ СТРАНИЦУ ДЛЯ ЗАГРУЗКИ |
1009 | LDFILE0 OUT (MPAG),A ;ВКЛЮЧАЕМ ЗАДАННУЮ СТРАНИЦУ ДЛЯ ЗАГРУЗКИ |
939 | 1010 | ||
940 | ;ЗАГРУЗКА В СТРАНИЦЫ 02...7F |
1011 | ;ЗАГРУЗКА В СТРАНИЦЫ 02...7F |
941 | LD_FILE EXX |
1012 | LD_FILE EXX |
942 | LD E,IXH;HX |
1013 | LD E,IXH |
943 | LD D,0 ;DE=РАЗМЕР КЛАСТЕРА В СЕКТОРАХ |
1014 | LD D,0 ;DE=РАЗМЕР КЛАСТЕРА В СЕКТОРАХ |
944 | AND A |
1015 | AND A |
945 | SBC HL,DE ;СВЕРЯЕМ С КОЛИЧЕСТВОМ СЕКТОРОВ ДЛЯ ЗАГРУЗКИ |
1016 | SBC HL,DE ;СВЕРЯЕМ С КОЛИЧЕСТВОМ СЕКТОРОВ ДЛЯ ЗАГРУЗКИ |
946 | LD IXL,IXH;LX,HX ;LX=КОЛИЧЕСТВО СЕКТОРОВ ДЛЯ ЗАГРУЗКИ |
1017 | LD IXL,IXH ;LX=КОЛИЧЕСТВО СЕКТОРОВ ДЛЯ ЗАГРУЗКИ |
947 | EXX |
1018 | EXX |
948 | JR NC,LDFILE1 |
1019 | JR NC,LDFILE1 |
949 | EXX ;СЕКТОРОВ ДЛЯ ЗАГРУЗКИ МЕНЬШЕ РАЗМЕРА КЛАСТЕРА |
1020 | EXX ;СЕКТОРОВ ДЛЯ ЗАГРУЗКИ МЕНЬШЕ РАЗМЕРА КЛАСТЕРА |
950 | ADD HL,DE |
1021 | ADD HL,DE |
951 | LD A,L |
1022 | LD A,L |
952 | LD IXL,A;LX,A ;LX=КОЛИЧЕСТВО СЕКТОРОВ ДЛЯ ЗАГРУЗКИ |
1023 | LD IXL,A ;LX=КОЛИЧЕСТВО СЕКТОРОВ ДЛЯ ЗАГРУЗКИ |
953 | EXX |
1024 | EXX |
954 | 1025 | ||
955 | LDFILE1 PUSH BC |
1026 | LDFILE1 PUSH BC |
956 | PUSH DE |
1027 | PUSH DE |
957 | PUSH HL |
1028 | PUSH HL |
958 | CALL REALSEC ;ПЕРЕВЕЛИ НОМЕР КЛАСТЕРА В НОМЕР РЕАЛЬНОГО СЕКТОРА |
1029 | CALL REALSEC ;ПЕРЕВЕЛИ НОМЕР КЛАСТЕРА В НОМЕР РЕАЛЬНОГО СЕКТОРА |
959 | LD A,IXL;LX |
1030 | LD A,IXL |
960 | CP 0X41 ;КОЛИЧЕСТВО СЕКТОРОВ ДЛЯ ЗАГРУЗКИ БОЛЬШЕ 0X40? |
1031 | CP 0X41 ;КОЛИЧЕСТВО СЕКТОРОВ ДЛЯ ЗАГРУЗКИ БОЛЬШЕ 0X40? |
961 | JR C,$+4 |
1032 | JR C,$+4 |
962 | LD A,0X40 ;БУДЕМ ГРУЗИТЬ 0X40 СЕКТОРОВ |
1033 | LD A,0X40 ;БУДЕМ ГРУЗИТЬ 0X40 СЕКТОРОВ |
963 | POP HL |
1034 | POP HL |
964 | LD IYH,A;HY,A |
1035 | LD IYH,A |
965 | CALL RDMULTI ;ЗАГРУЖАЕМ СЕКТОРА |
1036 | CALL RDMULTI ;ЗАГРУЖАЕМ СЕКТОРА |
966 | LD A,IXH;HX |
1037 | LD A,IXH |
967 | AND 0X80 |
1038 | AND 0X80 |
968 | JR Z,LDFILE2 |
1039 | JR Z,LDFILE2 |
969 | LD A,IXL;LX |
1040 | LD A,IXL |
970 | SUB IYH;HY |
1041 | SUB IYH |
971 | JR Z,LDFILE4 |
1042 | JR Z,LDFILE4 |
972 | JR C,LDFILE4 |
1043 | JR C,LDFILE4 |
973 | LD HL,0X40 |
1044 | LD HL,0X40 |
974 | ADD HL,DE |
1045 | ADD HL,DE |
975 | EX DE,HL |
1046 | EX DE,HL |
976 | LD HL,0 |
1047 | LD HL,0 |
977 | ADC HL,BC |
1048 | ADC HL,BC |
978 | LD B,H |
1049 | LD B,H |
979 | LD C,L |
1050 | LD C,L |
980 | LD L,A |
1051 | LD L,A |
981 | INC IYL;LY |
1052 | INC IYL |
982 | LD A,IYL;LY |
1053 | LD A,IYL |
983 | CP 0X40 |
1054 | CP 0X40 |
984 | JR C,LDFILE3 |
1055 | JR C,LDFILE3 |
985 | LDFILE4 INC SP |
1056 | LDFILE4 INC SP |
986 | INC SP |
1057 | INC SP |
987 | INC SP |
1058 | INC SP |
Line 997... | Line 1068... | ||
997 | PUSH HL |
1068 | PUSH HL |
998 | CALL RDFATZP |
1069 | CALL RDFATZP |
999 | CALL LST_CLS |
1070 | CALL LST_CLS |
1000 | POP HL |
1071 | POP HL |
1001 | JR C,LDEFILE |
1072 | JR C,LDEFILE |
1002 | LD A,IXL;LX |
1073 | LD A,IXL |
1003 | CP IXH;HX |
1074 | CP IXH |
1004 | JR C,LDEFILE |
1075 | JR C,LDEFILE |
1005 | LD A,H |
1076 | LD A,H |
1006 | AND A |
1077 | AND A |
1007 | JR NZ,LD_FILE |
1078 | JR NZ,LD_FILE |
1008 | LD HL,0X8000 |
1079 | LD HL,0X8000 |
1009 | INC IYL;LY |
1080 | INC IYL |
1010 | LD A,IYL;LY |
1081 | LD A,IYL |
1011 | CP 0X40 |
1082 | CP 0X40 |
1012 | JR C,LDFILE0 |
1083 | JR C,LDFILE0 |
1013 | LDEFILE XOR A |
1084 | LDEFILE XOR A |
1014 | JP WR_STAT |
1085 | JP WR_STAT |
1015 | 1086 | ||
1016 | LDMINI EXX |
1087 | LDMINI EXX |
1017 | LD L,A |
1088 | LD L,A |
1018 | LD A,IXH;HX |
1089 | LD A,IXH |
1019 | LD H,A |
1090 | LD H,A |
1020 | CP L |
1091 | CP L |
1021 | JR C,$+3 |
1092 | JR C,$+3 |
1022 | LD A,L |
1093 | LD A,L |
1023 | EXX |
1094 | EXX |
Line 1315... | Line 1386... | ||
1315 | EX DE,HL |
1386 | EX DE,HL |
1316 | LD BC,0 |
1387 | LD BC,0 |
1317 | ADC HL,BC |
1388 | ADC HL,BC |
1318 | RET |
1389 | RET |
1319 | 1390 | ||
1320 | ;ОПРЕДЕЛЯТОР РАЗРЯДНОСТИ FAT |
1391 | ;BCDE-(ADR)=BCDE |
1321 | RASCHET CALL BCDE200 ;РАЗДЕЛИЛИ НА РАЗМЕР СЕКТОРА |
1392 | HLBCDEM LD A,E |
- | 1393 | SUB (HL) |
|
- | 1394 | INC HL |
|
1322 | LD HL,SEC_FAT |
1395 | LD E,A |
- | 1396 | LD A,D |
|
1323 | CALL BCDEHLM ;ВЫЧЛИ НАЧАЛО ФАТ ТАБЛИЦЫ |
1397 | SBC A,(HL) |
- | 1398 | INC HL |
|
- | 1399 | LD D,A |
|
1324 | LD A,E |
1400 | LD A,C |
1325 | AND 0XF0 ;ИГНОРИРУЕМ МЛАДШИЕ 4 БИТА |
1401 | SBC A,(HL) |
1326 | OR D |
1402 | INC HL |
1327 | OR C |
1403 | LD C,A |
- | 1404 | LD A,B |
|
1328 | OR B ;ПРОВЕРКА НА 0 |
1405 | SBC A,(HL) |
- | 1406 | LD B,A |
|
1329 | RET |
1407 | RET |
1330 | 1408 | ||
1331 | ;ГРУЗИЛКА ОДНОГО СЕКТОРА |
1409 | ;ГРУЗИЛКА ОДНОГО СЕКТОРА |
- | 1410 | LOADLST CALL CPNUMSC |
|
- | 1411 | JR NZ,LOADLST1 |
|
- | 1412 | LD HL,BUF_512 |
|
- | 1413 | RET |
|
- | 1414 | ||
1332 | LOADLST LD HL,BUF_512 ;АДРЕС БУФЕРА СЕКТОРА |
1415 | LOADLST1 LD HL,BUF_512 ;АДРЕС БУФЕРА СЕКТОРА |
1333 | LD A,1 ;ГРУЗИТЬ 1 СЕКТОР |
1416 | LD A,1 ;ГРУЗИТЬ 1 СЕКТОР |
1334 | PUSH HL |
1417 | PUSH HL |
1335 | CALL RDMULTI ;ЗАГРУЗИЛИ СЕКТОР |
1418 | CALL RDMULTI ;ЗАГРУЗИЛИ СЕКТОР |
1336 | POP HL ;НА ВЫХОДЕ HL=АДРЕС НАЧАЛА БУФЕРА ЗАГРУЖЕННОГО СЕКТОРА |
1419 | POP HL ;НА ВЫХОДЕ HL=АДРЕС НАЧАЛА БУФЕРА ЗАГРУЖЕННОГО СЕКТОРА |
1337 | RET |
1420 | RET |
1338 | 1421 | ||
- | 1422 | ;ПРОВЕРКА НА УЖЕ ЗАГРУЖЕННЫЙ СЕКТОР |
|
- | 1423 | CPNUMSC LD HL,LSTLOAD |
|
- | 1424 | LD A,(HL) |
|
- | 1425 | INC HL |
|
- | 1426 | CP E |
|
- | 1427 | RET NZ |
|
- | 1428 | LD A,(HL) |
|
- | 1429 | INC HL |
|
- | 1430 | CP D |
|
- | 1431 | RET NZ |
|
- | 1432 | LD A,(HL) |
|
- | 1433 | INC HL |
|
- | 1434 | CP C |
|
- | 1435 | RET NZ |
|
- | 1436 | LD A,(HL) |
|
- | 1437 | CP B |
|
- | 1438 | RET |
|
- | 1439 | ||
1339 | ;ПОДАЧА КОМАНДЫ В SD КАРТУ БЕЗ ПАРАМЕТРОВ |
1440 | ;ПОДАЧА КОМАНДЫ В SD КАРТУ БЕЗ ПАРАМЕТРОВ |
1340 | OUTCOM PUSH BC |
1441 | OUTCOM PUSH BC |
1341 | LD BC,0X0600+SD_SEND ;ВЫДАТЬ В ПОРТ 6 БАЙТ |
1442 | LD BC,0X0600+SD_SEND ;ВЫДАТЬ В ПОРТ 6 БАЙТ |
1342 | OTIR |
1443 | OTIR |
1343 | POP BC |
1444 | POP BC |
Line 1469... | Line 1570... | ||
1469 | ;РАСПАКОВЩИК ПУТИ К ФАЙЛУ |
1570 | ;РАСПАКОВЩИК ПУТИ К ФАЙЛУ |
1470 | FNDBUF LD BC,0X0802 |
1571 | FNDBUF LD BC,0X0802 |
1471 | LD DE,FB_EXT |
1572 | LD DE,FB_EXT |
1472 | FNDBUF4 LD A,(HL) |
1573 | FNDBUF4 LD A,(HL) |
1473 | INC HL |
1574 | INC HL |
1474 | CP ".";0X2E |
1575 | CP "." |
1475 | JR Z,FNDBUF2 |
1576 | JR Z,FNDBUF2 |
1476 | CP "/";0X5C |
1577 | CP "/" |
1477 | JR Z,FNDBUF5 |
1578 | JR Z,FNDBUF5 |
1478 | LD (DE),A |
1579 | LD (DE),A |
1479 | INC DE |
1580 | INC DE |
1480 | DJNZ FNDBUF4 |
1581 | DJNZ FNDBUF4 |
1481 | LD A,(HL) |
1582 | LD A,(HL) |
Line 1488... | Line 1589... | ||
1488 | AND A |
1589 | AND A |
1489 | RET Z |
1590 | RET Z |
1490 | FNDBUF2 LD A,B |
1591 | FNDBUF2 LD A,B |
1491 | AND A |
1592 | AND A |
1492 | JR Z,FNDBUF3 |
1593 | JR Z,FNDBUF3 |
1493 | LD A," ";0X20 |
1594 | LD A," " |
1494 | LD (DE),A |
1595 | LD (DE),A |
1495 | INC DE |
1596 | INC DE |
1496 | DJNZ $-2 |
1597 | DJNZ $-2 |
1497 | FNDBUF3 LD B,3 |
1598 | FNDBUF3 LD B,3 |
1498 | DEC C |
1599 | DEC C |
1499 | DEC HL |
1600 | DEC HL |
1500 | LD A,(HL) |
1601 | LD A,(HL) |
1501 | CP "/";0X5C |
1602 | CP "/" |
1502 | JR Z,FNDBUF4 |
1603 | JR Z,FNDBUF4 |
1503 | INC HL |
1604 | INC HL |
1504 | JR FNDBUF4 |
1605 | JR FNDBUF4 |
1505 | RAMCEND |
1606 | RAMCEND |
1506 | DEPHASE |
1607 | DEPHASE |