Subversion Repositories pentevo

Rev

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

Rev 1067 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
PAGE
4
PAGE
5
                TITLE "main.a80"
5
                TITLE "main.a80"
6
 
6
 
7
                include ../../macros.a80
7
                include macros.a80
8
                include ../../define.a80
8
                include define.a80
9
                include ../../global_vars.a80
9
                include global_vars.a80
10
                include ../../ports_ide.a80
10
                include ports_ide.a80
11
                include ../../basic_tokens.a80
11
                include basic_tokens.a80
12
                include ../../bas_trd_vars.a80
12
                include bas_trd_vars.a80
13
                include ../../tmpkeys.a80
13
                include tmpkeys.a80
14
                include ../../version.a80
14
                include version.a80
15
                include ../../nums_devices.a80
15
                include nums_devices.a80
16
                include ../../ports_ngs.a80
16
                include ports_ngs.a80
-
 
17
                include fat_dir.a80
17
 
18
 
18
TO_DOS          EQU 0x3D2F
19
TO_DOS          EQU 0x3D2F
19
 
20
 
20
 INIT_VAR 0xC000
21
 INIT_VAR 0xC000
21
 SETVAR ADR_CAT,        0xC00           ; адрес буфера для дискеты или образа
22
 SETVAR ADR_CAT,        0xC00           ; адрес буфера для дискеты или образа
Line 53... Line 54...
53
START3
54
START3
54
        RST8 _COM_DEV,_CONTROL_SD
55
        RST8 _COM_DEV,_CONTROL_SD
55
                EI
56
                EI
56
                HALT
57
                HALT
57
                DI
58
                DI
58
                LD H,0
59
                LD H,CMOS.SECOND
59
                CALL READCMOS                   ; чтение секунд для определения наличия кмос
60
                CALL READCMOS                   ; чтение секунд для определения наличия кмос
60
                INC L
61
                INC L
61
                LD HL,ERS_FLAGS
62
                LD HL,ERS_FLAGS
62
                JR NZ,START2                    ; если прочиталось 0xFF, то
63
                JR NZ,START2                    ; если прочиталось 0xFF, то
63
                RES B_CLOCK_ON,(HL)             ; кмос не найден
64
                RES B_CLOCK_ON,(HL)             ; кмос не найден
Line 72... Line 73...
72
                LD (ARXY),HL                    ; установка дефолтной позиции мыши при старте
73
                LD (ARXY),HL                    ; установка дефолтной позиции мыши при старте
73
                CALL DISK_NONE
74
                CALL DISK_NONE
74
                CALL SYSTEM
75
                CALL SYSTEM
75
                CALL RESET_VG                   ; сброс вгшки и установка перехватчика ошибок dos
76
                CALL RESET_VG                   ; сброс вгшки и установка перехватчика ошибок dos
76
RESTART         DI
77
RESTART         DI
-
 
78
                XOR A
-
 
79
        RST8 _NMI_FB_BLOCK                      ; разблокировка File Browser на NMI
77
                LD A,0x10
80
                LD A,0x10
78
                CALL SET_7FFD                   ; включили басик48 и страничку 0
81
                CALL SET_7FFD                   ; включили басик48 и страничку 0
79
                CALL TURBO_7MHZ
82
                CALL TURBO_7MHZ
80
                CALL SYSTEM
83
                CALL SYSTEM
81
                RES 3,(IY+55)
84
                RES 3,(IY+55)
Line 88... Line 91...
88
                LD (TEK_SP),SP
91
                LD (TEK_SP),SP
89
                CALL S_FACE                     ; вывод на экран основного вида
92
                CALL S_FACE                     ; вывод на экран основного вида
90
                LD IX,MAINMENU
93
                LD IX,MAINMENU
91
        RST8 _WINW
94
        RST8 _WINW
92
                RES 5,(IY+1)                    ; на клавиатуре ничего не нажато
95
                RES 5,(IY+1)                    ; на клавиатуре ничего не нажато
93
                LD H,HDD_TIMEOUT
96
                LD H,CMOS.HDD_TIMEOUT
94
                CALL READCMOS
97
                CALL READCMOS
95
                RRCA
98
                RRCA
96
                RRCA
99
                RRCA
97
                RRCA
100
                RRCA
98
                RRCA
101
                RRCA
Line 105... Line 108...
105
        PEC_ON M_SHADOW_BF
108
        PEC_ON M_SHADOW_BF
106
        EVOPORT WIN_P2,RAM_DATARAMD
109
        EVOPORT WIN_P2,RAM_DATARAMD
107
        EVOPORT WIN_P2,ZXSTD_CPU2
110
        EVOPORT WIN_P2,ZXSTD_CPU2
108
        PEC_OFF M_SHADOW_BF!0xFF
111
        PEC_OFF M_SHADOW_BF!0xFF
109
 
112
 
110
                LD HL,VIRT_REAL_DRIVE << 8
113
                LD HL,CMOS.VIRT_REAL_DRIVE << 8
111
                CALL WRITECMOS
114
                CALL WRITECMOS
112
                LD HL,ADR_TXT_BOOT
115
                LD HL,ADR_TXT_BOOT
113
                JP RUNFILE1
116
                JP RUNFILE1
114
 
117
 
115
ADR_TXT_BOOT    DB "boot    "
118
ADR_TXT_BOOT    DB "boot    "
Line 319... Line 322...
319
                RLCA
322
                RLCA
320
                RLCA
323
                RLCA
321
                RLCA
324
                RLCA
322
                OR L
325
                OR L
323
                LD C,A
326
                LD C,A
324
                LD H,CMOS_BYTE_01
327
                LD H,CMOS.BYTE_01
325
                CALL READCMOS
328
                CALL READCMOS
326
                AND %01111100
329
                AND %01111100
327
                OR C
330
                OR C
328
CHANGE_MODES    LD L,A
331
CHANGE_MODES    LD L,A
329
                CALL WRITECMOS                  ; сохранили в кмос измененый режим
332
                CALL WRITECMOS                  ; сохранили в кмос измененый режим
Line 349... Line 352...
349
                LD DE,0x1000
352
                LD DE,0x1000
350
                JR Z,CHNGTURBO2
353
                JR Z,CHNGTURBO2
351
                DEC A
354
                DEC A
352
                LD DE,0
355
                LD DE,0
353
                JR Z,CHNGTURBO2
356
                JR Z,CHNGTURBO2
354
                LD DE,0X10*0X100+M_TURBO14
357
                LD DE,0x10 << 8 + CMOS_ED.M_TURBO14
355
CHNGTURBO2      LD A,D
358
CHNGTURBO2      LD A,D
356
                LD HL,SYSREG1
359
                LD HL,SYSREG1
357
                LD A,(HL)
360
                LD A,(HL)
358
                AND %11101111                   ; инверсия бита турборежима
361
                AND %11101111                   ; инверсия бита турборежима
359
                OR D
362
                OR D
360
                LD (HL),A
363
                LD (HL),A
361
                LD H,CMOS_BYTE_00
364
                LD H,CMOS.BYTE_00
362
                CALL READCMOS
365
                CALL READCMOS
363
                AND M_TURBO14!0XFF
366
                AND CMOS_ED.M_TURBO14 ! 0xFF
364
                OR E
367
                OR E
365
                LD L,A
368
                LD L,A
366
                LD H,CMOS_BYTE_00
369
                LD H,CMOS.BYTE_00
367
                CALL WRITECMOS
370
                CALL WRITECMOS
368
                JP CHNGMODEY
371
                JP CHNGMODEY
369
 
372
 
370
CHNGTAPMODE     LD H,CMOS_BYTE_00
373
CHNGTAPMODE     LD H,CMOS.BYTE_00
371
                CALL READCMOS
374
                CALL READCMOS
372
                XOR M_EMUL_TAPE
375
                XOR CMOS_ED.M_EMUL_TAPE
373
                JR CHANGE_MODES
376
                JR CHANGE_MODES
374
 
377
 
375
CHNGGLUKMOD     LD H,CMOS_BYTE_00
378
CHNGGLUKMOD     LD H,CMOS.BYTE_00
376
                CALL READCMOS
379
                CALL READCMOS
377
                AND MKOL_MODES!0xFF
380
                AND CMOS_EC.MKOL_MODES ! 0xFF
378
                LD C,A
381
                LD C,A
379
                LD A,L
382
                LD A,L
380
                AND MKOL_MODES
383
                AND CMOS_EC.MKOL_MODES
381
                INC A
384
                INC A
382
                CP KOL_MODES
385
                CP CMOS_EC.KOL_MODES
383
                JR C,CHNGGLUKMOD1
386
                JR C,CHNGGLUKMOD1
384
                XOR A
387
                XOR A
385
CHNGGLUKMOD1    OR C
388
CHNGGLUKMOD1    OR C
386
                LD L,A
389
                LD L,A
387
                JR CHANGE_MODES
390
                JR CHANGE_MODES
388
 
391
 
389
EN_AUTOMNT      LD H,CMOS_BYTE_01
392
EN_AUTOMNT      LD H,CMOS.BYTE_01
390
                CALL READCMOS
393
                CALL READCMOS
391
                XOR M_AUTOMOUNT
394
                XOR CMOS_EC.M_AUTOMOUNT
392
                JP CHANGE_MODES
395
                JP CHANGE_MODES
393
 
396
 
394
EN_LOADFONT     LD H,CMOS_BYTE_00
397
EN_LOADFONT     LD H,CMOS.BYTE_00
395
                CALL READCMOS
398
                CALL READCMOS
396
                XOR M_RELOAD_FONT
399
                XOR CMOS_ED.M_RELOAD_FONT
397
                JP CHANGE_MODES
400
                JP CHANGE_MODES
398
 
401
 
399
SET_TYPEFONT    LD H,CMOS_BYTE_00
402
SET_TYPEFONT    LD H,CMOS.BYTE_00
400
                CALL READCMOS
403
                CALL READCMOS
401
                XOR M_TYPE_FONT
404
                XOR CMOS_ED.M_TYPE_FONT
402
                PUSH AF
405
                PUSH AF
403
                PUSH HL
406
                PUSH HL
404
                AND M_TYPE_FONT
407
                AND CMOS_ED.M_TYPE_FONT
405
                JR Z,SETTYPEFONT
408
                JR Z,SETTYPEFONT
406
                LD A,1
409
                LD A,1
407
SETTYPEFONT
410
SETTYPEFONT
408
        RST8 _SETUP_FONT
411
        RST8 _SETUP_FONT
409
                POP HL
412
                POP HL
Line 412... Line 415...
412
 
415
 
413
; включение/выключениe отображения часов
416
; включение/выключениe отображения часов
414
CMOS_ONOFF      LD A,(ERS_FLAGS)
417
CMOS_ONOFF      LD A,(ERS_FLAGS)
415
                AND M_CLOCK_ON                  ; проверка наличия кмоса
418
                AND M_CLOCK_ON                  ; проверка наличия кмоса
416
                JP Z,MAINLOP
419
                JP Z,MAINLOP
417
                LD H,CMOS_BYTE_01
420
                LD H,CMOS.BYTE_01
418
                CALL READCMOS
421
                CALL READCMOS
419
                XOR M_CLOCK_VIEW
422
                XOR CMOS_EC.M_CLOCK_VIEW
420
                LD L,A
423
                LD L,A
421
                PUSH AF
424
                PUSH AF
422
                LD H,CMOS_BYTE_01
425
                LD H,CMOS.BYTE_01
423
                CALL WRITECMOS
426
                CALL WRITECMOS
424
                POP AF
427
                POP AF
425
                AND M_CLOCK_VIEW
428
                AND CMOS_EC.M_CLOCK_VIEW
426
                JP Z,MAINLOP
429
                JP Z,MAINLOP
427
                LD HL,TIME_OFF
430
                LD HL,TIME_OFF
428
        RST8 _PRINT_MESSAGE
431
        RST8 _PRINT_MESSAGE
429
                JP MAINLOP
432
                JP MAINLOP
430
 
433
 
Line 459... Line 462...
459
                EX AF,AF'
462
                EX AF,AF'
460
                RRA
463
                RRA
461
                RET
464
                RET
462
 
465
 
463
E4E3            XOR A
466
E4E3            XOR A
464
                IN A,(0XFE)
467
                IN A,(0xFE)
465
                CPL
468
                CPL
466
                AND 0x1F
469
                AND 0x1F
467
                JR NZ,E4E3
470
                JR NZ,E4E3
468
                LD (LAST_K),A
471
                LD (LAST_K),A
469
                RES 5,(IY+1)                    ; на клавиатуре ничего не нажато
472
                RES 5,(IY+1)                    ; на клавиатуре ничего не нажато
Line 496... Line 499...
496
 
499
 
497
; распечатка текущего виртуального дисковода
500
; распечатка текущего виртуального дисковода
498
PRT_VIRTDRV
501
PRT_VIRTDRV
499
        RST8 _MOUNTER,_GET_VIRT_BITS
502
        RST8 _MOUNTER,_GET_VIRT_BITS
500
                LD D,A
503
                LD D,A
501
                LD H,VIRT_REAL_DRIVE
504
                LD H,CMOS.VIRT_REAL_DRIVE
502
                CALL READCMOS
505
                CALL READCMOS
503
                AND 3
506
                AND 3
504
                LD B,A
507
                LD B,A
505
                INC B
508
                INC B
506
                ADD A,'A'
509
                ADD A,'A'
Line 655... Line 658...
655
MEMORY48        CALL ON_BIT128
658
MEMORY48        CALL ON_BIT128
656
                LD A,0x30
659
                LD A,0x30
657
                JR SET_7FFD
660
                JR SET_7FFD
658
 
661
 
659
; чтение CMOS и изменение сообщений для вывода на экран об установленных режимах
662
; чтение CMOS и изменение сообщений для вывода на экран об установленных режимах
660
SET_MODES       LD H,0x0B                       ; читать режим счета часов
663
SET_MODES       LD H,CMOS.REG_B                 ; читать режим счета часов
661
                CALL READCMOS
664
                CALL READCMOS
662
                RES 2,L                         ; принудительно включаем бинарный счет
665
                RES CMOSREG.B_B_RW_DM,L         ; принудительно включаем бинарный счет
663
                CALL WRITECMOS                  ; сохраняем изменения
666
                CALL WRITECMOS                  ; сохраняем изменения
664
                LD H,CMOS_BYTE_01               ; читаем установки турбо и памяти
667
                LD H,CMOS.BYTE_01               ; читаем установки турбо и памяти
665
                CALL READCMOS
668
                CALL READCMOS
666
                AND M_TURBO357
669
                AND CMOS_EC.M_TURBO357
667
                RRCA
670
                RRCA
668
                RRCA
671
                RRCA
669
                RRCA
672
                RRCA
670
                LD (SYSREG1),A                  ; содержимое для записи в порт EFF7
673
                LD (SYSREG1),A                  ; содержимое для записи в порт EFF7
671
                LD B,A
674
                LD B,A
672
                LD A,L
675
                LD A,L
673
                AND _128K | _48K | _1MB
676
                AND CMOS_EC._128K | CMOS_EC._48K | CMOS_EC._1MB
674
                LD (MEMMODE),A                  ; выбранный режим памяти
677
                LD (MEMMODE),A                  ; выбранный режим памяти
675
                LD H,CMOS_BYTE_00
678
                LD H,CMOS.BYTE_00
676
                CALL READCMOS                   ; читаем основные установки
679
                CALL READCMOS                   ; читаем основные установки
677
                LD C,A
680
                LD C,A
678
                AND M_TURBO14
681
                AND CMOS_ED.M_TURBO14
679
                LD HL,TURBO_NUM                 ; номер турбо режима
682
                LD HL,TURBO_NUM                 ; номер турбо режима
680
                LD (HL),2                       ; режим 14МГЦ
683
                LD (HL),2                       ; режим 14МГЦ
681
                JR NZ,SETMODES04
684
                JR NZ,SETMODES04
682
                LD A,B
685
                LD A,B
683
                DEC (HL)                        ; режим 7МГЦ
686
                DEC (HL)                        ; режим 7МГЦ
Line 696... Line 699...
696
                LDI
699
                LDI
697
                LDI
700
                LDI
698
                LDI
701
                LDI
699
                LDI                             ; перенесли для вывода экран
702
                LDI                             ; перенесли для вывода экран
700
                LD C,A
703
                LD C,A
701
                AND M_EMUL_TAPE
704
                AND CMOS_ED.M_EMUL_TAPE
702
                LD HL,EMTAPLOAD
705
                LD HL,EMTAPLOAD
703
                CALL SET_ONOFF                  ; перенос символов для вывода на экран, ON или OFF
706
                CALL SET_ONOFF                  ; перенос символов для вывода на экран, ON или OFF
704
                LD A,C
707
                LD A,C
705
                AND M_RELOAD_FONT
708
                AND CMOS_ED.M_RELOAD_FONT
706
                XOR M_RELOAD_FONT
709
                XOR CMOS_ED.M_RELOAD_FONT
707
                LD HL,EROMLOADFONT
710
                LD HL,EROMLOADFONT
708
                CALL SET_ONOFF                  ; перенос символов для вывода на экран, ON или OFF
711
                CALL SET_ONOFF                  ; перенос символов для вывода на экран, ON или OFF
709
                LD A,C
712
                LD A,C
710
                AND M_TYPE_FONT
713
                AND CMOS_ED.M_TYPE_FONT
711
                PUSH BC
714
                PUSH BC
712
                LD HL,TXTMODTYPE
715
                LD HL,TXTMODTYPE
713
                LD BC,5
716
                LD BC,5
714
                JR Z,SET_FONT2
717
                JR Z,SET_FONT2
715
                ADD HL,BC
718
                ADD HL,BC
716
SET_FONT2       LD DE,ETYPESFONT
719
SET_FONT2       LD DE,ETYPESFONT
717
                LDIR
720
                LDIR
718
                POP BC
721
                POP BC
719
                LD A,C
722
                LD A,C
720
                AND MKOL_MODES
723
                AND CMOS_EC.MKOL_MODES
721
                CP KOL_MODES
724
                CP CMOS_EC.KOL_MODES
722
                JR C,SETMODES03
725
                JR C,SETMODES03
723
                XOR A
726
                XOR A
724
SETMODES03      LD L,A
727
SETMODES03      LD L,A
725
                ADD A,A
728
                ADD A,A
726
                ADD A,L
729
                ADD A,L
Line 733... Line 736...
733
                LD DE,TXT_RESET
736
                LD DE,TXT_RESET
734
                LD A,C
737
                LD A,C
735
                LD BC,0x0C
738
                LD BC,0x0C
736
                LDIR
739
                LDIR
737
                LD C,A
740
                LD C,A
738
                AND M_PRINTER_AY
741
                AND CMOS_ED.M_PRINTER_AY
739
                LD HL,ETXT_AYPRINTER
742
                LD HL,ETXT_AYPRINTER
740
                CALL SET_ONOFF                  ; перенос символов для вывода на экран, ON или OFF
743
                CALL SET_ONOFF                  ; перенос символов для вывода на экран, ON или OFF
741
SETMODES02      LD A,(MEMMODE)
744
SETMODES02      LD A,(MEMMODE)
742
                AND A
745
                AND A
743
                LD HL,T_ALL
746
                LD HL,T_ALL
Line 748... Line 751...
748
                LD HL,T_128                     ; 128K
751
                LD HL,T_128                     ; 128K
749
SETMODES01      LD DE,TXT_MEM                   ; режим памяти
752
SETMODES01      LD DE,TXT_MEM                   ; режим памяти
750
                LD A,C
753
                LD A,C
751
                LD BC,3
754
                LD BC,3
752
                LDIR
755
                LDIR
753
                LD H,CMOS_BYTE_01
756
                LD H,CMOS.BYTE_01
754
                CALL READCMOS
757
                CALL READCMOS
755
                PUSH AF
758
                PUSH AF
756
                AND M_AUTOMOUNT
759
                AND CMOS_EC.M_AUTOMOUNT
757
                LD HL,ETXT_AUTOMOUNT
760
                LD HL,ETXT_AUTOMOUNT
758
                CALL SET_ONOFF
761
                CALL SET_ONOFF
759
                POP AF
762
                POP AF
760
; для резидента HONEY COMANDER
763
; для резидента HONEY COMANDER
761
                AND M_REZIDENT
764
                AND CMOS_EC.M_REZIDENT
762
                LD HL,TXT_REZIDENT
765
                LD HL,TXT_REZIDENT
763
                CALL SET_ONOFF
766
                CALL SET_ONOFF
764
                LD H,CMOS_BYTE_03
767
                LD H,CMOS.BYTE_03
765
                CALL READCMOS
768
                CALL READCMOS
766
                AND M_KILL_REZIDENT
769
                AND CMOS_E9.M_KILL_REZIDENT
767
                LD HL,TXT_KILLREZID
770
                LD HL,TXT_KILLREZID
768
                CALL SET_ONOFF
771
                CALL SET_ONOFF
769
                LD A,(ERS_FLAGS)
772
                LD A,(ERS_FLAGS)
770
                AND M_CLOCK_ON
773
                AND M_CLOCK_ON
771
                RET Z
774
                RET Z
Line 935... Line 938...
935
                LD BC,EBAS_VAR-BAS_VAR
938
                LD BC,EBAS_VAR-BAS_VAR
936
                LDIR                            ; установка стандартных переменных BASIC и TR-DOS
939
                LDIR                            ; установка стандартных переменных BASIC и TR-DOS
937
GET_DRV_SYM     LD A,(ERS_FLAGS)                ; проверяем наличие кмоса
940
GET_DRV_SYM     LD A,(ERS_FLAGS)                ; проверяем наличие кмоса
938
                AND M_CLOCK_ON
941
                AND M_CLOCK_ON
939
                JR Z,SET_DRIVE
942
                JR Z,SET_DRIVE
940
                LD H,VIRT_REAL_DRIVE
943
                LD H,CMOS.VIRT_REAL_DRIVE
941
                CALL READCMOS
944
                CALL READCMOS
942
                RRCA
945
                RRCA
943
                RRCA
946
                RRCA
944
                AND 3
947
                AND 3
945
SETUP_DRIVE     LD (DRV_SYM),A                  ; установка выбранного реального дисковода
948
SETUP_DRIVE     LD (DRV_SYM),A                  ; установка выбранного реального дисковода
Line 951... Line 954...
951
                LD (TRD_5CF8),HL
954
                LD (TRD_5CF8),HL
952
                OR 0x3C
955
                OR 0x3C
953
                LD (TRD_5D16),A
956
                LD (TRD_5D16),A
954
                RET
957
                RET
955
 
958
 
956
GLUDIN          LD H,CMOS_BYTE_01
959
GLUDIN          LD H,CMOS.BYTE_01
957
                CALL READCMOS
960
                CALL READCMOS
958
                AND M_SOUNDKEYS
961
                AND CMOS_EC.M_SOUNDKEYS
959
                RET Z
962
                RET Z
960
                LD HL,DIN+0x0D
963
                LD HL,DIN+0x0D
961
                LD A,0x0D
964
                LD A,0x0D
962
GLUDIN1         LD BC,0xFFFD
965
GLUDIN1         LD BC,0xFFFD
963
                OUT (C),A
966
                OUT (C),A
Line 965... Line 968...
965
                OUTD
968
                OUTD
966
                SUB 1
969
                SUB 1
967
                JR NC,GLUDIN1
970
                JR NC,GLUDIN1
968
                RET
971
                RET
969
 
972
 
970
SHUT2AY         LD H,CMOS_BYTE_01
973
SHUT2AY         LD H,CMOS.BYTE_01
971
                CALL READCMOS
974
                CALL READCMOS
972
                AND M_SOUNDKEYS
975
                AND CMOS_EC.M_SOUNDKEYS
973
                RET Z
976
                RET Z
974
                LD DE,0x0E00
977
                LD DE,0x0E00
975
SHUT2AY1        DEC D
978
SHUT2AY1        DEC D
976
                LD H,D
979
                LD H,D
977
                LD L,E
980
                LD L,E