Subversion Repositories ngs

Rev

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