Subversion Repositories pentevo

Rev

Rev 1069 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1069 Rev 1186
Line 1... Line 1...
1
 
1
 
2
; LAST UPDATE: 24.02.2023 savelij
2
; LAST UPDATE: 16.02.2025 savelij
3
 
3
 
4
; загрузка выбранного шрифта
4
; загрузка выбранного шрифта
5
LOAD_FONT       LD HL,FONTS
5
LOAD_FONT       LD HL,FONTS
6
                LD DE,CMP4FONTS
6
                LD DE,CMP4FONTS
7
                JR FATBOOT4
7
                JR FATBOOT4
Line 91... Line 91...
91
                EXX
91
                EXX
92
                RRCA
92
                RRCA
93
                RRCA
93
                RRCA
94
                RRCA
94
                RRCA
95
                AND 0x1F
95
                AND 0x1F
96
                ADD A,"E"                       ; буква найденного устройства
96
                ADD A,'E'                       ; буква найденного устройства
97
                LD (DE),A
97
                LD (DE),A
98
                INC DE
98
                INC DE
99
                LDIR                            ; перенос текста из выбранной таблицы
99
                LDIR                            ; перенос текста из выбранной таблицы
100
                EXX
100
                EXX
101
                LD A,(HL)                       ; тип раздела
101
                LD A,(HL)                       ; тип раздела
Line 118... Line 118...
118
                INC HL
118
                INC HL
119
                LD B,(IX+_V_SIZE)
119
                LD B,(IX+_V_SIZE)
120
                DEC B
120
                DEC B
121
                DEC B
121
                DEC B
122
                LD C,B
122
                LD C,B
123
                LD A,"E"
123
                LD A,'E'
124
                LD (IX+_ADR_HOTKEY_L),L
124
                LD (IX+_ADR_HOTKEY_L),L
125
                LD (IX+_ADR_HOTKEY_H),H         ; адрес таблицы горячих клавиш выбора FAT устройства
125
                LD (IX+_ADR_HOTKEY_H),H         ; адрес таблицы горячих клавиш выбора FAT устройства
126
                LD (HL),B
126
                LD (HL),B
127
                INC HL
127
                INC HL
128
FATBOOT3        LD (HL),A                       ; формирование таблицы горячих клавиш
128
FATBOOT3        LD (HL),A                       ; формирование таблицы горячих клавиш
Line 141... Line 141...
141
                DEC A
141
                DEC A
142
                JR Z,SEL_FAT
142
                JR Z,SEL_FAT
143
        RST8 _WINW
143
        RST8 _WINW
144
                JP _RULILKA                     ; возвращаемся к общему управлению
144
                JP _RULILKA                     ; возвращаемся к общему управлению
145
 
145
 
-
 
146
FILE_BROWSER    DI
-
 
147
                LD A,1
-
 
148
        RST8 _NMI_FB_BLOCK                      ; блокировка File Browser на NMI
146
FILES_BROWSE    LD HL,SUPPORT_EXT
149
                LD HL,SUPPORT_EXT
147
                LD DE,CMP4TAPES
150
                LD DE,CMP4TAPES
148
                DI
-
 
149
                LD (GDE_EXT_FILES),HL
151
                LD (GDE_EXT_FILES),HL
150
                LD (CMP_FOUNDED),DE
152
                LD (CMP_FOUNDED),DE
151
                LD HL,ERS_FLAGS
153
                LD HL,ERS_FLAGS
152
                SET B_RUN_FAT,(HL)
154
                SET B_RUN_FAT,(HL)
153
                JR SEL_FILES
155
                JR SEL_FILES
Line 198... Line 200...
198
                LD (NUMFAT_SELECT),BC
200
                LD (NUMFAT_SELECT),BC
199
                LD A,6
201
                LD A,6
200
        RST8 _COM_FAT,_POS_FILES                ; установка внутреннего указателя FAT драйвера
202
        RST8 _COM_FAT,_POS_FILES                ; установка внутреннего указателя FAT драйвера
201
                LD HL,BUF_FILEITEM
203
                LD HL,BUF_FILEITEM
202
        RST8 _COM_FAT,_READ_DIR                 ; получили описатель по установленному номеру
204
        RST8 _COM_FAT,_READ_DIR                 ; получили описатель по установленному номеру
203
                LD DE,0x0B                      ; нужен байт по смещению
205
                LD DE,_DIR_Attr                 ; нужен байт по смещению
204
                ADD HL,DE                       ; для определения файл или директория
206
                ADD HL,DE                       ; для определения файл или директория
205
                LD A,(HL)                       ; из этого байта нужен один бит
207
                LD A,(HL)                       ; из этого байта нужен один бит
206
                SBC HL,DE
208
                SBC HL,DE
207
                AND 0x10                        ; проверили
209
                AND M_DIR_Directory             ; проверили
208
                JP Z,GO_RUN_HOB                 ; если это файл, то запускаем кодовый блок
210
                JP Z,GO_RUN_HOB                 ; если это файл, то запускаем кодовый блок
209
        RST8 _COM_FAT,_ENTER_DIR                ; входим в выбранную директорию
211
        RST8 _COM_FAT,_ENTER_DIR                ; входим в выбранную директорию
210
                PUSH HL                         ; сохранили адрес где описатель выбранного файла лежит
212
                PUSH HL                         ; сохранили адрес где описатель выбранного файла лежит
211
                LD HL,BUF_RDPATH
213
                LD HL,BUF_RDPATH
212
        RST8 _COM_FAT,_GET_PATH                 ; получить путь к файлу после входа в директорию
214
        RST8 _COM_FAT,_GET_PATH                 ; получить путь к файлу после входа в директорию
213
                LD A,(HL)                       ; взяли букву устройства текущего пути
215
                LD A,(HL)                       ; взяли букву устройства текущего пути
214
                SUB "E"                         ; преобразовали в номер устройства
216
                SUB 'E'                         ; преобразовали в номер устройства
215
                LD D,A
217
                LD D,A
216
                LD E,0
218
                LD E,0
217
                LD HL,BUF_LEVDIR
219
                LD HL,BUF_LEVDIR
218
                SRL D
220
                SRL D
219
                RR E
221
                RR E
Line 221... Line 223...
221
                RR E
223
                RR E
222
                ADD HL,DE
224
                ADD HL,DE
223
                EX (SP),HL                      ; сохранили адрес описателя FAT устройства, восстановили адрес описателя файла
225
                EX (SP),HL                      ; сохранили адрес описателя FAT устройства, восстановили адрес описателя файла
224
                LD A,(HL)                       ; будем проверять первый символ имени предыдущего описателя
226
                LD A,(HL)                       ; будем проверять первый символ имени предыдущего описателя
225
                POP HL                          ; восстановили адрес описателя FAT устройства 
227
                POP HL                          ; восстановили адрес описателя FAT устройства 
226
                CP "."                          ; если первый символ имени не ".", то сохраняем текущие значения окошка и  
228
                CP '.'                          ; если первый символ имени не ".", то сохраняем текущие значения окошка и  
227
                JR NZ,SNYT0                     ; входим в диру
229
                JR NZ,SNYT0                     ; входим в диру
228
                LD C,(HL)                       ; при выходе из директории восстанавливаем позиции в окне
230
                LD C,(HL)                       ; при выходе из директории восстанавливаем позиции в окне
229
                INC HL
231
                INC HL
230
                LD B,(HL)
232
                LD B,(HL)
231
                INC HL
233
                INC HL
Line 427... Line 429...
427
                AND A
429
                AND A
428
                SBC HL,DE
430
                SBC HL,DE
429
                POP HL
431
                POP HL
430
                JP Z,SELMOUNT                   ; перехода на загрузку TRD образа
432
                JP Z,SELMOUNT                   ; перехода на загрузку TRD образа
431
                LD A,(HL)
433
                LD A,(HL)
432
                CP "$"
434
                CP '$'
433
                JR Z,GORUNHOB1                  ; переход на загрузку HOBETA
435
                JR Z,GORUNHOB1                  ; переход на загрузку HOBETA
434
                CP "S"
436
                CP 'S'
435
                JP NZ,LOAD_IMAGE                ; переход на загрузку SCL образа
437
                JP NZ,LOAD_IMAGE                ; переход на загрузку SCL образа
436
                INC HL
438
                INC HL
437
                LD A,(HL)
439
                LD A,(HL)
438
                DEC HL
440
                DEC HL
439
                CP "P"
441
                CP 'P'
440
                JR Z,GORUNHOB1                  ; переход на загрузку SPG
442
                JR Z,GORUNHOB1                  ; переход на загрузку SPG
441
                CP "N"
443
                CP 'N'
442
                LD A,(HL)
444
                LD A,(HL)
443
                JP NZ,LOAD_IMAGE                ; переход на загрузку образа
445
                JP NZ,LOAD_IMAGE                ; переход на загрузку образа
444
GORUNHOB1
446
GORUNHOB1
445
        RST8 _COM_DEV,_KOL_VOL                  ; запрос у менеджера устройств о текущем устройстве
447
        RST8 _COM_DEV,_KOL_VOL                  ; запрос у менеджера устройств о текущем устройстве
446
                LD A,D                          ; взяли номер текущего устройства
448
                LD A,D                          ; взяли номер текущего устройства
Line 487... Line 489...
487
        PEC_OFF M_FONT_BF
489
        PEC_OFF M_FONT_BF
488
                JP RESTART
490
                JP RESTART
489
 
491
 
490
; загрузка FDI образа
492
; загрузка FDI образа
491
LOAD_FDI        LD A,E
493
LOAD_FDI        LD A,E
492
                CP "N"
494
                CP 'N'
493
                JR Z,LOAD_FNT                   ; переход на загрузку фонта
495
                JR Z,LOAD_FNT                   ; переход на загрузку фонта
494
                LD HL,ERS_FLAGS
496
                LD HL,ERS_FLAGS
495
                SET B_LOAD_IMG,(HL)
497
                SET B_LOAD_IMG,(HL)
496
                LD A,RAM_RAMDISK                ; страница начала рамдиска
498
                LD A,RAM_RAMDISK                ; страница начала рамдиска
497
                PUSH AF                         ; сохранили на стеке
499
                PUSH AF                         ; сохранили на стеке
Line 728... Line 730...
728
                JR NZ,ELT2                      ; повторяем для всех дорожек
730
                JR NZ,ELT2                      ; повторяем для всех дорожек
729
; общий выход из загрузки с возвратом стандартной страницы в окне проецирования 1
731
; общий выход из загрузки с возвратом стандартной страницы в окне проецирования 1
730
ELOAD_IMAGE     LD A,RAM_RAMDISK
732
ELOAD_IMAGE     LD A,RAM_RAMDISK
731
                CALL SET4MBPAGE
733
                CALL SET4MBPAGE
732
                LD HL,0x7FFF
734
                LD HL,0x7FFF
733
                LD (HL),"R"
735
                LD (HL),'R'
734
                DEC H
736
                DEC H
735
                LD (HL),"D"
737
                LD (HL),'D'
736
                CALL SET_RAMD_NAME
738
                CALL SET_RAMD_NAME
737
                LD A,ZXSTD_CPU1
739
                LD A,ZXSTD_CPU1
738
                CALL SET4MBPAGE
740
                CALL SET4MBPAGE
739
                LD SP,0
741
                LD SP,0
740
LD_FILE_SP      EQU $-2
742
LD_FILE_SP      EQU $-2
Line 743... Line 745...
743
                LD HL,ERS_FLAGS
745
                LD HL,ERS_FLAGS
744
                BIT B_VIEW_IMG,(HL)
746
                BIT B_VIEW_IMG,(HL)
745
                RET Z
747
                RET Z
746
                RES B_VIEW_IMG,(HL)
748
                RES B_VIEW_IMG,(HL)
747
; загрузка каталога TR-DOS и поиск выбранного и запуск выбранного BASIC файла
749
; загрузка каталога TR-DOS и поиск выбранного и запуск выбранного BASIC файла
748
START_IMG       LD H,VIRT_REAL_DRIVE
750
START_IMG       LD H,CMOS.VIRT_REAL_DRIVE
749
                CALL READCMOS
751
                CALL READCMOS
750
                AND 3
752
                AND 3
751
                LD C,A
753
                LD C,A
752
                PUSH AF
754
                PUSH AF
753
        RST8 _MOUNTER,_CLOSEMOUNT               ; !!!
755
        RST8 _MOUNTER,_CLOSEMOUNT               ; !!!
Line 769... Line 771...
769
                INC B
771
                INC B
770
                LD IX,ADR_CAT
772
                LD IX,ADR_CAT
771
                LD DE,0x10
773
                LD DE,0x10
772
NEXT_BAS        LD A,(IX+8)
774
NEXT_BAS        LD A,(IX+8)
773
                ADD IX,DE
775
                ADD IX,DE
774
                CP "B"
776
                CP 'B'
775
                JR NZ,NEXT_BAS
777
                JR NZ,NEXT_BAS
776
                DJNZ NEXT_BAS
778
                DJNZ NEXT_BAS
777
                PUSH IX
779
                PUSH IX
778
                POP HL
780
                POP HL
779
                SBC HL,DE
781
                SBC HL,DE
Line 862... Line 864...
862
                LD A,ZXSTD_CPU1
864
                LD A,ZXSTD_CPU1
863
                CALL SET4MBPAGE
865
                CALL SET4MBPAGE
864
                LD SP,(LD_FILE_SP)
866
                LD SP,(LD_FILE_SP)
865
                POP IY
867
                POP IY
866
                POP IX
868
                POP IX
867
                LD H,CMOS_BYTE_00
869
                LD H,CMOS.BYTE_00
868
                CALL READCMOS
870
                CALL READCMOS
869
                OR M_EMUL_TAPE
871
                OR CMOS_ED.M_EMUL_TAPE
870
                LD L,A
872
                LD L,A
871
                CALL WRITECMOS
873
                CALL WRITECMOS
872
                AND M_AUTO_TAPE
874
                AND CMOS_ED.M_AUTO_TAPE
873
                JP Z,RESTART
875
                JP Z,RESTART
874
                JP TAPELOAD1
876
                JP TAPELOAD1
875
 
877
 
876
LOAD_IMAGE      DI
878
LOAD_IMAGE      DI
877
                LD D,A                          ; первый символ расширения
879
                LD D,A                          ; первый символ расширения
878
                INC HL
880
                INC HL
879
                LD E,(HL)                       ; второй символ расширения
881
                LD E,(HL)                       ; второй символ расширения
880
                CP "B"
882
                CP 'B'
881
                JR NZ,LOADIMAGE1_
883
                JR NZ,LOADIMAGE1_
882
                LD A,E
884
                LD A,E
883
                CP "M"
885
                CP 'M'
884
                JR Z,LOADIMAGE2                 ; BMP
886
                JR Z,LOADIMAGE2                 ; BMP
885
LOADIMAGE1_     CP "T"                          ; TAP или TRD ?
887
LOADIMAGE1_     CP 'T'                          ; TAP или TRD ?
886
                JR NZ,LOADIMAGE1
888
                JR NZ,LOADIMAGE1
887
                LD A,E
889
                LD A,E
888
                CP "A"
890
                CP 'A'
889
                JP Z,LOADIMAGE4                 ; TAP
891
                JP Z,LOADIMAGE4                 ; TAP
890
LOADIMAGE1      LD A,D
892
LOADIMAGE1      LD A,D
891
                CP "R"
893
                CP 'R'
892
                LD HL,FLASHER
894
                LD HL,FLASHER
893
                JR Z,LOAD_IMAGE8                ; TRD
895
                JR Z,LOAD_IMAGE8                ; TRD
894
LOADIMAGE2      LD HL,RESTART
896
LOADIMAGE2      LD HL,RESTART
895
LOAD_IMAGE8     PUSH HL
897
LOAD_IMAGE8     PUSH HL
896
                PUSH IX
898
                PUSH IX
897
                PUSH IY
899
                PUSH IY
898
                LD (LD_FILE_SP),SP
900
                LD (LD_FILE_SP),SP
899
                LD SP,ADR_CAT
901
                LD SP,ADR_CAT
900
                LD A,D
902
                LD A,D
901
                CP "S"                          ; это SCL файл?
903
                CP 'S'                          ; это SCL файл?
902
                JR Z,LOAD_IMAGE2
904
                JR Z,LOAD_IMAGE2
903
                CP "F"                          ; это FDI файл?
905
                CP 'F'                          ; это FDI файл?
904
                JP Z,LOAD_FDI
906
                JP Z,LOAD_FDI
905
                CP "B"                          ; это BMP файл?
907
                CP 'B'                          ; это BMP файл?
906
                JP Z,BMPVIEW
908
                JP Z,BMPVIEW
907
                CP "T"                          ; это TRD файл?
909
                CP 'T'                          ; это TRD файл?
908
                JR NZ,LOAD_ROM
910
                JR NZ,LOAD_ROM
909
                LD HL,ERS_FLAGS
911
                LD HL,ERS_FLAGS
910
                SET B_LOAD_IMG,(HL)
912
                SET B_LOAD_IMG,(HL)
911
                LD A,RAM_DATARAMD
913
                LD A,RAM_DATARAMD
912
; загрузка TRD или TAP образа
914
; загрузка TRD или TAP образа
Line 918... Line 920...
918
                JP C,END_LOAD_TRD
920
                JP C,END_LOAD_TRD
919
                POP AF
921
                POP AF
920
                INC A
922
                INC A
921
                JR LOAD_IMAGE1
923
                JR LOAD_IMAGE1
922
 
924
 
923
LOAD_ROM        CP "R"                          ; это ROM файл?
925
LOAD_ROM        CP 'R'                          ; это ROM файл?
924
                JP NZ,ELOAD_IMAGE
926
                JP NZ,ELOAD_IMAGE
925
                LD A,RAM_FLASHER
927
                LD A,RAM_FLASHER
926
                CALL LOAD_IN_PAGE
928
                CALL LOAD_IN_PAGE
927
                LD SP,(LD_FILE_SP)
929
                LD SP,(LD_FILE_SP)
928
                POP IY
930
                POP IY
Line 1111... Line 1113...
1111
; проверка заголовка HOBETA файла
1113
; проверка заголовка HOBETA файла
1112
;на выходе: флаг С=1-не соотвествует
1114
;на выходе: флаг С=1-не соотвествует
1113
CMP4HOBETA      SUB 1
1115
CMP4HOBETA      SUB 1
1114
                RET NZ
1116
                RET NZ
1115
                LD A,(BUF_RDSEC+8)
1117
                LD A,(BUF_RDSEC+8)
1116
                CP "C"                          ; проверка что это кодовый блок, а не что-то другое
1118
                CP 'C'                          ; проверка что это кодовый блок, а не что-то другое
1117
                SCF
1119
                SCF
1118
                RET NZ
1120
                RET NZ
1119
                PUSH DE                         ; сохранили адрес складирования для дальнейшей проверки
1121
                PUSH DE                         ; сохранили адрес складирования для дальнейшей проверки
1120
                LD BC,BUF_RDSEC                 ; возвращаемся в начало сектора
1122
                LD BC,BUF_RDSEC                 ; возвращаемся в начало сектора
1121
                CALL HOB_CRC                    ; считаем CRC HOBETA заголовка
1123
                CALL HOB_CRC                    ; считаем CRC HOBETA заголовка
Line 1199... Line 1201...
1199
                RET
1201
                RET
1200
 
1202
 
1201
CMP4FDI         EXX
1203
CMP4FDI         EXX
1202
                LD HL,BUF_RDSEC
1204
                LD HL,BUF_RDSEC
1203
                LD A,(HL)
1205
                LD A,(HL)
1204
                CP "F"
1206
                CP 'F'
1205
                SCF
1207
                SCF
1206
                RET NZ
1208
                RET NZ
1207
                INC HL
1209
                INC HL
1208
                LD A,(HL)
1210
                LD A,(HL)
1209
                CP "D"
1211
                CP 'D'
1210
                SCF
1212
                SCF
1211
                RET NZ
1213
                RET NZ
1212
                INC HL
1214
                INC HL
1213
                LD A,(HL)
1215
                LD A,(HL)
1214
                CP "I"
1216
                CP 'I'
1215
                SCF
1217
                SCF
1216
                RET NZ
1218
                RET NZ
1217
                INC HL
1219
                INC HL
1218
                INC HL
1220
                INC HL
1219
                LD A,(HL)                       ; количество цилиндров
1221
                LD A,(HL)                       ; количество цилиндров
Line 1264... Line 1266...
1264
                AND A
1266
                AND A
1265
CMP4TAPES       RET
1267
CMP4TAPES       RET
1266
 
1268
 
1267
CMP4BMP         EXX
1269
CMP4BMP         EXX
1268
                LD HL,BUF_RDSEC
1270
                LD HL,BUF_RDSEC
1269
                LD A,"B"
1271
                LD A,'B'
1270
                SUB (HL)
1272
                SUB (HL)
1271
                SCF
1273
                SCF
1272
                RET NZ
1274
                RET NZ
1273
                INC HL
1275
                INC HL
1274
                LD A,"M"
1276
                LD A,'M'
1275
                SUB (HL)
1277
                SUB (HL)
1276
                SCF
1278
                SCF
1277
                RET NZ
1279
                RET NZ
1278
                LD HL,(BUF_RDSEC+0x12)
1280
                LD HL,(BUF_RDSEC+0x12)
1279
                LD DE,320
1281
                LD DE,320
Line 1417... Line 1419...
1417
                LD DE,8
1419
                LD DE,8
1418
                ADD HL,DE
1420
                ADD HL,DE
1419
                POP DE
1421
                POP DE
1420
                LD B,3
1422
                LD B,3
1421
.L1             LD A,(DE)
1423
.L1             LD A,(DE)
1422
                CP "A"
1424
                CP 'A'
1423
                JR C,.L2
1425
                JR C,.L2
1424
                AND %11011111
1426
                AND %11011111
1425
.L2             CP (HL)
1427
.L2             CP (HL)
1426
                RET NZ
1428
                RET NZ
1427
                INC HL
1429
                INC HL
Line 1496... Line 1498...
1496
                INC E                           ; следующая 64кб страница
1498
                INC E                           ; следующая 64кб страница
1497
                BIT 3,E
1499
                BIT 3,E
1498
                JR Z,FLASHER3
1500
                JR Z,FLASHER3
1499
EFLASHER        LD BC,WIN_P3
1501
EFLASHER        LD BC,WIN_P3
1500
                XOR A
1502
                XOR A
1501
                OUT (C),A                       ; включение RAM в окне 3
1503
                OUT (C),A                       ; включение 0 паги RAM в окне 3
1502
                LD A,(CPU3+0x20)
1504
                LD A,(CPU3+0x20)
1503
                XOR B
1505
                XOR B
1504
                LD (CPU3+0x20),A                ; меняем байт для нарушения CRC контроля и полного реинита
1506
                LD (CPU3+0x20),A                ; меняем байт для нарушения CRC контроля и полного реинита
1505
                LD A,(CPU1+BUF_TABLVOL+0xFE)
1507
                LD A,(((BUF_VOLUMES + 0xFE) & 0x3FFF) | CPU3)
1506
                XOR B
1508
                XOR B
1507
                LD (CPU1+BUF_TABLVOL+0xFE),A    ; аналогично для DEVICE MANAGER
1509
                LD (((BUF_VOLUMES + 0xFE) & 0x3FFF) | CPU3),A   ; аналогично для DEVICE MANAGER
1508
        PEC_OFF M_FLASH_BF
1510
        PEC_OFF M_FLASH_BF
1509
                LD HL,0x79ED                    ; OUT (C),A
1511
                LD HL,0x79ED                    ; OUT (C),A
1510
                LD (0xFFFE),HL                  ; укладка команды OUT (C),A
1512
                LD (0xFFFE),HL                  ; укладка команды OUT (C),A
1511
                LD BC,0xBC77
1513
                LD BC,0xBC77
1512
                LD A,2
1514
                LD A,2