Top secrets sources NedoPC pentevo

Rev

Rev 839 | Rev 952 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?


;LAST UPDATE: 03.03.2020 savelij

PAGE
                TITLE "main.a80"

                include ../../macros.a80
                include ../../define.a80
                include ../../global_vars.a80
                include ../../ports_ide.a80
                include ../../basic_tokens.a80
                include ../../bas_trd_vars.a80
                include ../../tmpkeys.a80
                include ../../version.a80
                include ../../nums_devices.a80

;BIT 4,(IY+55)
;BIT 3,(IY+55)-0-‡€…’ €ˆŒ€–ˆˆ ŠŽ˜€Š€, 1-€‡…˜…ˆ…
;BIT 2,(IY+55)-0-”€‰‹Ž‚ Œ……… ‚›‘Ž’› ŽŠ€, 1-Ž‹œ˜…
;BIT 0,(IY+55)

TO_DOS4BAS      EQU 0X3D13
TO_DOS          EQU 0X3D2F

 INIT_VAR 0XC000
 SETVAR ADR_CAT,        0XC00           ;EQU 0XC000                     ;€„…‘ “”…€ „‹Ÿ „ˆ‘Š…’› ˆ‹ˆ Ž€‡€
 SETVAR ADR_CAT_FAT,    0X800           ;EQU ADR_CAT+(0X200*6)          ;€„…‘ “”…€ €‰„…›• ”€‰‹Ž‚ € FAT
 SETVAR ADR_CAT_SCRH,   0X1000          ;EQU ADR_CAT_FAT+(2048*2)       ;€„…‘ “”…€ „‹Ÿ Žˆ‘Š€ ”€‰‹Ž‚
;ADRTBLDIRL     EQU 0XF5FF              ;‘’…Š ‘Ž•€…ˆŸ „€›• ˆ •Ž†„…ˆˆ Ž „ˆ€Œ
 SETVAR BUFTSC,         0X180           ;EQU 0XF700                     ;180 ’€‹ˆ–€ €„…‘Ž‚ ‘’ŽŠ Š€€               F700
 SETVAR MOUSE_BUFF,     0X10            ;EQU BUFTSC+0X0180              ;10 “”… ‘Ž•€…ˆŸ Ž„ Œ›˜œž
 SETVAR COLBUF,         0X20            ;EQU MOUSE_BUFF+0X10            ;20 “”… ‘Ž•€…ˆŸ –‚…’€
 SETVAR BUF_FILEITEM,   0X20            ;EQU COLBUF+0X20                ;20 “”… Žˆ‘€’…‹Ÿ ”€‰‹€
 SETVAR BUF_RDSEC,      0X200           ;EQU BUFTSC+0X200               ;200 “”… ‘…Š’Ž€ ˆ Ž‚…Š… ”€‰‹Ž‚          F900
 SETVAR BUF_RDPATH,     0X100           ;EQU BUF_RDSEC+0X200            ;100 “”… ’…Š“™…ƒŽ “’ˆ                        FB00
 SETVAR BUF_LEVDIR,     0X400           ;EQU BUF_RDPATH+0X100           ;400 “”… “Ž‚…‰ „ˆ „‹Ÿ ”€‰‹Ž‚ŽƒŽ ŽŠ€       FC00
 SETVAR BUF_LINESWIN,   0X200                                           ;200 “”… „‹Ÿ Žˆ‘€’…‹…‰ Š“‘Ž€ Ž„ Œ›˜œž

H_FILE          EQU 16                          ;˜ˆˆ€ ŽŠ€ „‹Ÿ ‚›‚Ž„€ ”€‰‹Ž‚ C TR-DOS
V_FILE          EQU 24                          ;‚›‘Ž’€ ŽŠ€ „‹Ÿ ‚›‚Ž„€ ”€‰‹Ž‚ C TR-DOS
FV_FILE         EQU 26                          ;˜ˆˆ€ ŽŠ€ „‹Ÿ ‚›‚Ž„€ ”€‰‹Ž‚ C FAT
FV_FILE6        EQU ((FV_FILE-3)*8)/6           ;˜ˆˆ€ ŽŠ€ „‹Ÿ ‚›‚Ž„€ ”€‰‹Ž‚ ‘ FAT ‚ ‡€ŠŽŒ…‘’€• 6•8
FH_FILE         EQU 24                          ;‚›‘Ž’€ ŽŠ€ „‹Ÿ ‚›‚Ž„€ ”€‰‹Ž‚ ‘ FAT
WIDE            EQU 1                           ;¤¢  ¯à®¡¥«  á ¡®ª®¢

CMOS_ON         EQU 0X80
CMOS_OFF        EQU 0

                ORG 0X6000
                DI
                CALL CLEAR_128K
                LD A,0X10
                CALL SET_7FFD                   ;‚Š‹ž—…ˆ… €‘ˆŠ€48 ˆ ‘’€ˆ–› 0
                CALL ADRTSC                     ;‘Ž‡„€ˆ… ’€‹ˆ–› €„…‘Ž‚ ‘’ŽŠ Š€€
                RST8 _COM_DEV,_DEVFIND
                JR C,START3
                RST8 _MOUNTER,_FIND_MOUNTED
START3          RST8 _COM_DEV,_CONTROL_SD
                EI
                HALT
                DI
                LD H,0
                CALL READCMOS                   ;—’…ˆ… ‘…Š“„ „‹Ÿ Ž…„…‹…ˆŸ €‹ˆ—ˆŸ ŠŒŽ‘
                INC L
                LD HL,ERS_FLAGS
                JR NZ,START2                    ;…‘‹ˆ Ž—ˆ’€‹Ž‘œ 0XFF,’Ž
                RES B_CLOCK_ON,(HL)             ;ŠŒŽ‘ … €‰„…
                JR START1

START2          SET 2,(HL)                      ;ŠŒŽ‘ €‰„…
START4          CALL SET_MODES
START1          CALL DETECTMOUSE                ;Ž…„…‹…ˆ… €‹ˆ—ˆŸ Œ›˜ˆ
;               CALL UPDATE_CURRTIME
                CALL GLUDIN                     ;“ŒŠ“‹ˆ ‚ AY
                CALL MOUSE                      ;ŽŽ‘ Œ›˜ˆ
                LD HL,0X6FCC
                LD (ARXY),HL                    ;“‘’€Ž‚Š€ „…”Ž‹’Ž‰ Ž‡ˆ–ˆˆ Œ›˜ˆ ˆ ‘’€’…
                CALL DISK_NONE
                CALL RESET_VG                   ;‘Ž‘ ‚ƒ˜Šˆ ˆ “‘’€Ž‚Š€ ……•‚€’—ˆŠ€ Ž˜ˆŽŠ DOS
                CALL SYSTEM
;               LD C,0
;               CALL TO_DOS4BAS
RESTART         DI
                LD A,0X10
                CALL SET_7FFD                   ;‚Š‹ž—ˆ‹ˆ €‘ˆŠ48 ˆ ‘’€ˆ—Š“ 0
                CALL TURBO_7MHZ
                CALL SYSTEM
                CALL RESET_VG                   ;‘Ž‘ ‚ƒ˜Šˆ ˆ “‘’€Ž‚Š€ ……•‚€’—ˆŠ€ Ž˜ˆŽŠ DOS
                RES 3,(IY+55)
                LD SP,0X6000
                LD HL,0X3E00
                PUSH HL
                LD HL,0X1303
                PUSH HL                         ;‘”ŽŒˆŽ‚€‹ˆ „Ž ‘’…Š€
                LD (ERR_SP),SP                  ;‡€…‘‹ˆ ’…Š“™ˆ‰ €„…‘ ‚ ……Œ…›… €‘ˆŠ€
                LD (TEK_SP),SP
                CALL S_FACE                     ;‚›‚Ž„ € Š€ Ž‘Ž‚ŽƒŽ ‚ˆ„€
                LD IX,MAINMENU
                RST8 _WINW
                RES 5,(IY+1)                    ;€ Š‹€‚ˆ€’“… ˆ—…ƒŽ … €†€’Ž
;‚•Ž„ ‚ ƒ‹€‚›‰ –ˆŠ‹ ŽŽ‘€ “€‚‹…ˆŸ
_RULILKA        EI     
                LD A,(ERS_FLAGS)
                AND M_MOUSE_ON                  ;Ž‚…Š€ €‹ˆ—ˆŸ Œ›˜ˆ
                JR Z,_RULNMO
;FIX ŠŽ‹…‘Ž Œ›˜ˆ
MKEYPR          EI
                HALT
                LD A,HIGH (MOUSE_KEYS)
                IN A,(LOW (MOUSE_KEYS))
                CPL
                AND 7
                JR NZ,MKEYPR
                CALL SAVE2X2                    ;…‘‹ˆ Œ…ž €…—€’€‹ˆ Ž‚…• ‘’…‹Šˆ
_RULNMO         CALL SET_ADR_ATR                ;“‘’€Ž‚Š€ Ž‚ŽƒŽ €„…‘€ „‹Ÿ –‚…’Ž‰ Ž‹Ž‘Šˆ
;               RES 5,(IY+1)                    ;€ Š‹€‚ˆ€’“… ˆ—…ƒŽ … €†€’Ž
                JR MAINLOP

;€†€’€ ‘’…‹Š€ ‚‚…•
UP              CALL CURSOR_UP                  ;‘Œ…ˆ‹ˆ ’…Š“™ˆ‰ “Š’ € -1
                JR SET_POS1                    

;€†€’€ ‘’…‹Š€ ‚€‚Ž
RIGHT           BIT 1,(IX+_FLAGS)               ;Ž‚…Š€ Ž‘’Ž Œ…ž ˆ‹ˆ ”€‰‹Ž‚Ž…
                PUSH AF                         ;‘Ž•€ˆ‹ˆ …‡“‹œ’€’ Ž‚…Šˆ
                CALL NZ,PAGEDN                  ;…‘‹ˆ ”€‰‹Ž‚Ž…, ’Ž ‹ˆ‘’€ˆ… ‘’€ˆ—Ž…
                POP AF                          ;‚Ž‘‘’€Ž‚ˆ‹ˆ …‡“‹œ’€’ Ž‚…Šˆ
                JR NZ,SET_POS1                  ;…‘‹ˆ ”€‰‹Ž‚Ž… Ž„Ž‹†€…Œ
                LD A,(IX+_NUM_KOL_L)
                AND A
                JR Z,SET_POS
                DEC A                           ;ˆ€—… ……•Ž„ Š“‘Ž€ € Ž‘‹…„ˆ‰ “Š’
                JR SET_POS                      ;ˆ‡Œ…Ÿ…Œ Ž‹Ž†…ˆ… Š“‘Ž€ ˆ Ž„Ž‹†€…Œ

;€†€’€ ‘’…‹Š€ ‚ˆ‡
DOWN            CALL CURSOR_DOWN                ;‘Œ…ˆ‹ˆ ’…Š“™ˆ‰ “Š’ € +1
                JR SET_POS1

;€†€’€ ‘’…‹Š€ ‚‹…‚Ž
LEFT            BIT 1,(IX+_FLAGS)               ;Ž‚…Š€ Ž‘’Ž Œ…ž ˆ‹ˆ ”€‰‹Ž‚Ž…
                PUSH AF                         ;‘Ž•€ˆ‹ˆ …‡“‹œ’€’ Ž‚…Šˆ
                CALL NZ,PAGEUP                  ;…‘‹ˆ ”€‰‹Ž‚Ž…, ’Ž ‹ˆ‘’€ˆ… ‘’€ˆ—Ž…
                POP AF                          ;‚Ž‘‘’€Ž‚ˆ‹ˆ …‡“‹œ’€’ Ž‚…Šˆ
                JR NZ,SET_POS1                  ;…‘‹ˆ ”€‰‹Ž‚Ž… Ž„Ž‹†€…Œ
                XOR A                           ;ˆ€—… ……•Ž„ Š“‘Ž€ € …‚›‰ “Š’
SET_POS         LD (IX+_NUM_PKT),A              ;ˆ‡Œ…ˆ‹ˆ Ž‡ˆ–ˆž Š“‘Ž€
                LD (IX+_TEK_PKT_L),A
                LD (IX+_TEK_PKT_H),0            ;ˆ‡Œ…ˆ‹ˆ ŽŒ… ‚›€ŽƒŽ “Š’€
SET_POS1        CALL COLOR_CURSOR               ;……ˆ‘Ž‚Š€ –‚…’Ž‰ Ž‹Ž‘Šˆ Œ…ž
SET_POS2        CALL GLUDIN                     ;“ŒŠ“‹ˆ ‚ AY
MAINLOP
;               RES 5,(IY+1)                    ;‘Ž‘ €†€’›• ŠŽŽŠ
                RST8 _COM_DEV,_CONTROL_SD       ;Ž‚…Š€ €‹ˆ—ˆŸ SD Š€’ ˆ ŽŽ‚‹…ˆ… ˆ„ˆŠ€’ŽŽ‚
                LD A,(ERS_FLAGS)
                AND M_MOUSE_ON                  ;Ž‚…Š€ €‹ˆ—ˆŸ Œ›˜ˆ
                JP Z,MAINNMO
                LD HL,(ARXY)                    ;‘’€€Ÿ ŠŽŽ„ˆ€’€ Œ›˜ˆ
                PUSH HL
                CALL MOUSE                      ;ŽŽ‘ Ž’Ž‚ Œ›˜ˆ
                POP BC
                AND A
                SBC HL,BC
                JR Z,NO_SELECT                  ;… ›‹Ž „‚ˆ†…ˆŸ Œ›˜ˆ
                CALL RESTORE_KOSHAK             ;›‹Ž „‚ˆ†…ˆ… Œ›˜ˆ, ‘Ž‘ ‘—…’—ˆŠŽ‚ ŠŽ˜€Š€
                CALL MOUOPT                     ;Ž‚…Š€ €‚…„…ˆŸ Œ›˜ˆ € ‡€„€Ž… ŽŠŽ
NO_SELECT       LD BC,MOUSE_KEYS
                IN A,(C)                        ;ŽŽ‘ €†€’ˆŸ ŠŽŽŠ Œ›˜ˆ
                AND 7
                CP 6
                JR Z,PRESS_MOUSE                ;…‘‹ˆ €†€’€ ‹…‚€Ÿ ŠŽŠ€ Œ›˜ˆ
                CP 5
                JP Z,RESTART                    ;…‘‹ˆ €†€’€ €‚€Ÿ ŠŽŠ€ Œ›˜ˆ
                CALL PRINTTIME                  ;ŽŽ‚ˆ‹ˆ ‚…ŒŸ …‘‹ˆ ˆ‡Œ…ˆ‹Ž‘œ
                EI
                HALT
                CALL REST2X2                    ;‚Ž‘‘’€Ž‚ˆ‹ˆ Š“‘ŽŠ Š€€€ Ž„ Œ›˜œž
                CALL DRAW_MOUSE                 ;€ˆ‘Ž‚€‹ˆ Š“‘Ž Œ›˜ˆ
                JR MAINQMO                      ;Ž„Ž‹†…ˆ… ŽŽ‘€

PRESS_MOUSE     CALL OPMSPL
                AND A
                JR Z,CP_MOUSE4
                LD (LAST_K),A
                CALL TIMELP
                JR SELECT_KEY

CP_MOUSE4       CALL MOUOPT                     ;Ž‚…Š€ Ž€„€ˆŸ Œ›˜ˆ ‚ …„…‹› ’…Š“™…ƒŽ ŽŠ€
                JR C,MAINNMO                    ;… Ž€‹ˆ ˆ …„…Œ „€‹……
                LD L,(IX+_ADR_HOTKEY_L)
                LD H,(IX+_ADR_HOTKEY_H)
                LD A,H
                OR L
                JR Z,ENTER                      ;‘ˆ‘Š€ •Ž’Š……‚ …’, ……•Ž„ˆŒ Ž ŽŒ…“ “Š’€
                LD E,(IX+_NUM_PKT)              ;‚‡Ÿ‹ˆ ŽŒ… “Š’€ Š“„€ Ž€‹ˆ Œ›˜œž
                LD D,0
                ADD HL,DE                       ;€„…‘ •Ž’Š…Ÿ ‚›€ŽƒŽ “Š’€
                LD DE,LAST_K
                LDI                             ;Œˆ’€–ˆŸ €†€’ˆŸ ‡€„€Ž‰ ŠŽŠˆ
                JR ENTER
               
MAINNMO         CALL PRINTTIME                  ;ŽŽ‚‹…ˆ… ‚…Œ…ˆ, …‘‹ˆ ‚ ŽŽ ŽŽ‚ˆ‹Ž‘œ
                EI
                HALT
MAINQMO         BIT 5,(IY+1)                    ;Ž‚…Š€ €†€’ˆŸ ŠŽŽŠ Š‹€‚ˆ€’“›
                CALL Z,CP_TIME_KOSHAK           ;…‘‹ˆ … €†€’Ž ˆ—…ƒŽ, Ž‚…Ÿ…Œ ‘—…’—ˆŠ ŠŽ˜€Š€
                JP Z,MAINLOP                    ;Ž„Ž‹†€…Œ ŽŽ‘ “€‚‹…ˆŸ
                CALL 0X1F54                     ;Ž‚…Š€ € BREAK
                JP NC,RESTART                   ;…‘‹ˆ BREAK €†€’ ……‡€“‘Š€…Œ‘Ÿ
SELECT_KEY      CALL RESTORE_KOSHAK             ;€†€’Ž …—’Ž € Š‹€‚…, ‘Ž‘ ‘—…’—ˆŠ€ ŠŽ˜€Š€
                RES 5,(IY+1)                    ;€ Š‹€‚ˆ€’“… ˆ—…ƒŽ … €†€’Ž
                LD HL,LAST_K
                LD A,(HL)                       ;‚‡Ÿ‹ˆ €†€’“ž Š‹€‚ˆ˜“
                LD B,0
                LD HL,MAIN_KEYS
                LD C,(HL)                       ;ŠŽ‹ˆ—…‘’‚Ž „Ž‘’“›• ŠŽŽŠ
                LD D,C
                INC HL
                CPIR
                JR NZ,NOMAINKEYS                ;ˆ—…ƒŽ … €˜‹ˆ, „€‹…… ‘ŒŽ’ˆŒ ŠŽŠˆ ’…Š“™…ƒŽ ŽŠ€
                                                ;€†€’Ž —’Ž-’Ž ˆ‡ ƒ‹€‚›• ŠŽŽŠ, „Ž‘’“›• ‚‘…ƒ„€
                LD HL,ADREXEKEYS
                LD A,D                          ;ŠŽ‹ˆ—…‘’‚Ž ŠŽŽŠ ‚ ’€‹ˆ–… -1
                SUB C                           ;Ž‹“—ˆ‹ˆ ‚›€›‰ ŽŒ…
                DEC A
                JR JUMP2HL

;Ž‚…Š€ •Ž’Š……‚ ‚ ’…Š“™…Œ ŽŠ…
NOMAINKEYS      LD L,(IX+_ADR_HOTKEY_L)
                LD H,(IX+_ADR_HOTKEY_H)
                LD C,A
                LD A,H
                OR L
                JP Z,MAINLOP                    ;…‘‹ˆ ‘ˆ‘Š€ …’, Ž„Ž‹†€…Œ ŽŽ‘
                LD A,C
                LD C,(IX+_V_SIZE)
                LD E,(HL)
                INC HL
                DEC C                           ;ŠŽ‹ˆ—…‘’‚Ž ŠŽŽŠ
                DEC C                           ;‚›‘Ž’€ ŽŠ€ -2
                LD D,C
                LD B,0
                CPIR                            ;‘Š€ˆŽ‚€ˆ… ‘ˆ‘Š€ ‡€„€›• Š‹€‚ˆ˜
                JR NZ,OSTAT_KEYS
                LD A,D                          ;‚›‘Ž’€ ŽŠ€
                SUB C
                DEC A                           ;Ž‹“—ˆ‹ˆ ŽŒ… €†€’Ž‰ ŠŽŠˆ ˆ -1
                LD (IX+_NUM_PKT),A              ;ŽŒ… “Š’€ ‚ ŽŠ…
                LD (IX+_TEK_PKT_L),A            ;ŽŒ… €†€’Ž‰ Š‹€‚ˆ˜ˆ Ž “Š€‡€ŽŒ“ ‘ˆ‘Š“
ENTER           LD A,(ERS_FLAGS)
                AND M_MOUSE_ON
                CALL NZ,TIMELP                  ;ŽŽ‚‹…ˆ… ‚…Œ…ˆ …‘‹ˆ ŽŽ ˆ‡Œ…ˆ‹Ž‘œ
                CALL REST2X2                    ;‘’…‹ˆ Š“‘Ž Œ›˜ˆ
                CALL GLUDIN                     ;“ŒŠ“‹ˆ ‚ AY
                LD A,(IX+_NUM_PKT)              ;ŽŒ… ˆ‡ ‘ˆ‘Š€ ŠŽ’Ž›‰ ‚›‡‚€’œ
JUMP2HL1        LD L,(IX+_ADR_PRG_L)
                LD H,(IX+_ADR_PRG_H)            ;‚‡Ÿ‹ˆ ‘ˆ‘ŽŠ €„…‘Ž‚ 1 ˆ‡ ŠŽ’Ž›• “„…Œ ‚›‡›‚€’œ
JUMP2HL         ADD A,A
                ADD A,L
                LD L,A
                ADC A,H
                SUB L
                LD H,A
                LD A,(HL)
                INC HL
                LD H,(HL)
                LD L,A
                JP (HL)

OSTAT_KEYS      EX AF,AF'
                LD A,E
                SUB D
                JP Z,MAINLOP
                LD C,A
                EX AF,AF'

                CPIR
                JP NZ,MAINLOP
                LD A,E
                SUB C
                DEC A
                JR JUMP2HL1

;ˆ‡Œ……ˆ… …†ˆŒ€ €ŒŸ’ˆ
CHNGMODE        LD HL,MEMMODE
                DEC (HL)                        ;‘Œ…ˆ‹ˆ …†ˆŒ €ŒŸ’ˆ
                JP P,CHNGMODEY
                LD (HL),2                       ;…‘‹ˆ ……˜‹ˆ —……‡ 0, ’Ž ‚›‘’€‚ˆ‹ˆ …†ˆŒ 48
CHNGMODEY       LD A,(ERS_FLAGS)
                AND M_CLOCK_ON                  ;Ž‚…Š€ €‹ˆ—ˆŸ ŠŒŽ‘€
                RET Z
                LD A,(ERS_FLAGS)
                AND M_EMU_TAPE
                RLCA
                RLCA
                LD L,A
                LD A,(MEMMODE)
                OR L
                LD L,A
CHNGMODEY1      LD A,(SYSREG1)
                AND 0X10
                RLCA
                RLCA
                RLCA
                OR L
                LD C,A
                LD H,CMOS_BYTE_01
                CALL READCMOS
                AND %01111100
                OR C
CHANGE_MODES    LD L,A
                CALL WRITECMOS                  ;‘Ž•€ˆ‹ˆ ‚ ŠŒŽ‘ ˆ‡Œ……›‰ …†ˆŒ
                CALL REST2X2
                CALL SET_MODES
                CALL PRT_MODES
                LD A,(ERS_FLAGS)
                AND M_MOUSE_ON
                JP Z,MAINLOP
                CALL DRAW_MOUSE
                CALL TIMELP
                JP MAINLOP

;ˆ‡Œ……ˆ… …†ˆŒ€ ’“Ž 0=3,5MHZ, 1=7MHZ, 2-14MHZ
CHNGTURBO       LD HL,TURBO_NUM
                INC (HL)                        ;‘Œ…ˆ‹ˆ TURBO …†ˆŒ
                LD A,(HL)
                CP 3
                JR C,CHNGTURBO1
                LD (HL),0                       ;…‘‹ˆ ……˜‹ˆ —……‡ 0, ’Ž ‚›‘’€‚ˆ‹ˆ …†ˆŒ 14MHZ
CHNGTURBO1      LD A,(HL)
                AND A
                LD DE,0X1000
                JR Z,CHNGTURBO2
                DEC A
                LD DE,0
                JR Z,CHNGTURBO2
                LD DE,0X10*0X100+M_TURBO14
CHNGTURBO2      LD A,D
                LD HL,SYSREG1
                LD A,(HL)
                AND %11101111                   ;ˆ‚…‘ˆŸ ˆ’€ ’“Ž…†ˆŒ€
                OR D
                LD (HL),A
                LD H,CMOS_BYTE_00
                CALL READCMOS
                AND M_TURBO14!0XFF
                OR E
                LD L,A
                LD H,CMOS_BYTE_00
                CALL WRITECMOS
                JP CHNGMODEY

CHNGTAPMODE     LD H,CMOS_BYTE_00
                CALL READCMOS
                XOR M_EMUL_TAPE
                JR CHANGE_MODES

CHNGGLUKMOD     LD H,CMOS_BYTE_00
                CALL READCMOS
                AND MKOL_MODES!0XFF
                LD C,A
                LD A,L
                AND MKOL_MODES
                INC A
                CP KOL_MODES
                JR C,CHNGGLUKMOD1
                XOR A
CHNGGLUKMOD1    OR C
                LD L,A
                JR CHANGE_MODES

EN_AUTOMNT      LD H,CMOS_BYTE_01
                CALL READCMOS
                XOR M_AUTOMOUNT
                JP CHANGE_MODES

EN_LOADFONT     LD H,CMOS_BYTE_00
                CALL READCMOS
                XOR M_RELOAD_FONT
                JP CHANGE_MODES

SET_TYPEFONT    LD H,CMOS_BYTE_00
                CALL READCMOS
                XOR M_TYPE_FONT
                PUSH AF
                PUSH HL
                AND M_TYPE_FONT
                JR Z,SETTYPEFONT
                LD A,1
SETTYPEFONT     RST8 _SETUP_FONT
                POP HL
                POP AF
                JP CHANGE_MODES

;‚Š‹ž—…ˆ…/‚›Š‹ž—…ˆE Ž’Ž€†…ˆŸ —€‘Ž‚
CMOS_ONOFF      LD A,(ERS_FLAGS)
                AND M_CLOCK_ON                  ;Ž‚…Š€ €‹ˆ—ˆŸ ŠŒŽ‘€
                JP Z,MAINLOP
                LD H,CMOS_BYTE_01
                CALL READCMOS
                XOR M_CLOCK_VIEW
                LD L,A
                PUSH AF
                LD H,CMOS_BYTE_01
                CALL WRITECMOS
                POP AF
                AND M_CLOCK_VIEW
                JP Z,MAINLOP
                LD HL,TIME_OFF
                RST8 _PRINT_MESSAGE
                JP MAINLOP

;‚Š‹ž—…ˆ…/‚›Š‹ž—…ˆ… Š“‘Ž€ Œ›˜ˆ
MOUSE_ONOFF     LD HL,ERS_FLAGS
                LD A,(HL)
                XOR M_MOUSE_ON                  ;ˆ‚…‘ˆŸ Ž’Ž€†…ˆŸ Œ›˜ˆ
                LD (HL),A
                AND M_MOUSE_ON
                CALL NZ,DETECTMOUSE             ;…‘‹ˆ ‚Š‹ž—ˆ‹ˆ, Ž‚…Ÿ…Œ €‹ˆ—ˆ…
                CALL NC,REST2X2                 ;…‘‹ˆ Œ›˜œ … €‰„…€, ’Ž ‚›Š‹ž—€…Œ Ž’Ž€†…ˆ…
                JP MAINLOP

;Ž†ˆ„€ˆ… €†€’ˆŸ —…ƒŽ-ˆ“„œ Ž‘‹… Ž˜ˆŠˆ
EXIT4ERROR      RES 5,(IY+1)                    ;€ Š‹€‚ˆ€’“… ˆ—…ƒŽ … €†€’Ž
                LD BC,MOUSE_KEYS
                IN D,(C)
E4E1            CALL PRINTTIME
                EI
                HALT
                BIT 5,(IY+1)
                JR NZ,E4E3
                LD A,(ERS_FLAGS)
                AND M_MOUSE_ON
                JR NZ,E4E1
                LD A,HIGH (MOUSE_KEYS)
                IN A,(LOW (MOUSE_KEYS))
                CP D
                JR Z,E4E1
E4E2            EX AF,AF'
                CALL TIMELP
                EX AF,AF'

                RRA
                RET

E4E3            XOR A
                IN A,(0XFE)
                CPL
                AND 0X1F
                JR NZ,E4E3
                LD (LAST_K),A
                RES 5,(IY+1)                    ;€ Š‹€‚ˆ€’“… ˆ—…ƒŽ … €†€’Ž
                RET

;…—€’œ ’…Š“™…ƒŽ ‚›€ŽƒŽ „ˆ‘ŠŽ‚Ž„€
PRT_DRV_SYM     LD A,(TRD_5CF8)
                ADD A,"A"
                LD (TXT_DRIVE),A
                LD HL,TRDDRV_MODE
                RST8 _PRINT_MESSAGE
                RET

;€‘…—€’Š€ ’…Š“™…ƒŽ …†ˆŒ€
PRT_MODES       LD HL,SPEED_MODE
                RST8 _PRINT_MESSAGE
                LD HL,MEM_MODE
                RST8 _PRINT_MESSAGE
                LD HL,EMUTAPLOAD
                RST8 _PRINT_MESSAGE
                LD HL,SET_RESET
                RST8 _PRINT_MESSAGE
                LD HL,ROMLOADFONT
                RST8 _PRINT_MESSAGE
                LD HL,TYPESFONT
                RST8 _PRINT_MESSAGE
                LD HL,TXT_AUTOMOUNT
                RST8 _PRINT_MESSAGE
                RET

;€‘…—€’Š€ ’…Š“™…ƒŽ ‚ˆ’“€‹œŽƒŽ „ˆ‘ŠŽ‚Ž„€
PRT_VIRTDRV     RST8 _MOUNTER,_GET_VIRT_BITS
                LD H,A
                AND 3
                LD B,A
                INC B
                ADD A,'A'
                LD C,A
                LD A,%00001000
.L1             RLCA
                DJNZ .L1
                AND H
                LD HL,VIRT_DRIVE
                JR NZ,PRTVIRTDRV2
                LD (HL)," "
                INC HL
                LD (HL),C
                INC HL
                LD (HL)," "
                JR PRTVIRTDRV1

PRTVIRTDRV2     LD (HL),"o"
                INC HL
                LD (HL),"f"
                INC HL
                LD (HL),"f"
PRTVIRTDRV1     LD HL,VIRTUAL_DRV
                RST8 _PRINT_MESSAGE
                LD HL,ADR_CAT
                RST8  _MOUNTER,_GET_MOUNTED
                LD HL,ADR_CAT
                LD DE,MNT_DRV_A
                CALL COPY_MNTNAME
                LD L,0X40
                LD DE,MNT_DRV_B
                CALL COPY_MNTNAME
                LD L,0X80
                LD DE,MNT_DRV_C
                CALL COPY_MNTNAME
                LD L,0XC0
                LD DE,MNT_DRV_D
                CALL COPY_MNTNAME
                CALL GET_RAMD_NAME
                LD HL,MOUNTED_DRV
                RST8 _PRINT_MESSAGE
                RET

COPY_MNTNAME    PUSH HL
                LD A,(HL)
                AND A
                JR NZ,COPY_MNTNAME1
                LD HL,TXT_NONE
                LD BC,0X0C
                JR COPY_MNTNAME3

COPY_MNTNAME1   LD BC,8
                LDIR
                LD A,"."
                LD (DE),A
                INC DE
                LD C,3
COPY_MNTNAME3   LDIR
                POP HL
                RET

;Ž‹“—…ˆ… ˆŒ…ˆ ”€‰‹€ ‡€ƒ“†…ŽƒŽ ‚ €Œ„ˆ‘Š
GET_RAMD_NAME   PEC_ON M_SHADOW_BF
                LD BC,WIN_P2
                LD A,RAM_RAMDISK
                OUT (C),A
                LD DE,CPU2+0X3DFF
                LD A,(DE)
                AND A
                JR Z,GRN1
                LD HL,GRN1
                PUSH HL
                LD HL,IN_RAMDISK
                LD B,8
                CALL GRN2
                LD B,3
                LD (HL),"."
                INC HL
GRN2            LD A,(DE)
                LD (HL),A
                DEC D
                INC HL
                DJNZ GRN2
                RET

GRN1            LD BC,WIN_P2
                LD A,ZXSTD_CPU2;0XFD
                OUT (C),A
                PEC_OFF M_SHADOW_BF
                RET

;‚›‚Ž„ Ž‘Ž‚ŽƒŽ Œ…ž ˆ €„ˆ‘…‰
S_FACE          LD A,7
                CALL CLS
                LD HL,TXTFULLSCR
                RST8 _PRINT_MESSAGE
                CALL PRT_DRV_SYM                ;…—€’œ ’…Š“™…ƒŽ „ˆ‘ŠŽ‚Ž„€
                CALL PRT_MODES                  ;…—€’œ ’…Š“™…ƒŽ …†ˆŒ€
                CALL PRT_VIRTDRV                ;…—€’œ ’…Š“™…ƒŽ ‚ˆ’“€‹œŽƒŽ „ˆ‘ŠŽ‚Ž„€
                XOR A
                JP DRAW_KOSHAK                  ;‚›‚Ž„ 0 ”€‡› ŠŽ˜€Š€

SET_EFF7_A_     LD A,(SYSREG1)
SET_EFF7        LD BC,PENT_CONF
                OUT (C),A
                RET

SET_7FFD_0      LD A,0X10
SET_7FFD        PUSH BC
                LD BC,CONF_128
                OUT (C),A
                POP BC
                RET

MEMSET          CALL CLEAR_128K
                LD A,(TURBO_NUM)                ;“‘’€Ž‚Š€ TURBO …†ˆŒ€
                AND A
                LD DE,0X10A3                    ;3,5MHZ PORTS EFF7 BIT4=1 XX77 BIT3=0
                JR Z,MEMSET01
                DEC A
                LD DE,0XA3                      ;7MHZ PORTS EFF7 BIT4=0 XX77 BIT3=0
                JR Z,MEMSET01
                LD DE,0X10AB                    ;14MHZ PORTS EFF7 BIT4=1 XX77 BIT3=1
MEMSET01        LD BC,0XFF77
                PEC_ON M_SHADOW_BF
                OUT (C),E
                PEC_OFF M_SHADOW_BF
                LD A,D
                CALL SET_EFF7
                LD A,(MEMMODE)
                AND A
                RET Z                           ;…†ˆŒ Ž‹Ž‰ €ŒŸ’ˆ
MEMSET1         DEC A
                JR Z,MEMORY48
;‚Š‹ž—…ˆ… …†ˆŒ€ BASIC128
ON_BIT128       LD A,(SYSREG1)
                AND 0X10
                ADD A,4
                CALL SET_EFF7
                JR SET_7FFD_0

;‚Š‹ž—…ˆ… …†ˆŒ€ BASI48
MEMORY48        CALL ON_BIT128
                LD A,0X30
                JR SET_7FFD

;—’…ˆ… CMOS ˆ ˆ‡Œ……ˆ… ‘ŽŽ™…ˆ‰ „‹Ÿ ‚›‚Ž„€ € Š€ Ž “‘’€Ž‚‹…›• …†ˆŒ€•
SET_MODES       LD H,0X0B                       ;—ˆ’€’œ …†ˆŒ ‘—…’€ —€‘Ž‚
                CALL READCMOS
                RES 2,L                         ;ˆ“„ˆ’…‹œŽ ‚Š‹ž—€…Œ ˆ€›‰ ‘—…’
                CALL WRITECMOS                  ;‘Ž•€Ÿ…Œ ˆ‡Œ……ˆŸ
                LD H,CMOS_BYTE_01               ;—ˆ’€…Œ “‘’€Ž‚Šˆ ’“Ž ˆ €ŒŸ’ˆ
                CALL READCMOS
                AND M_TURBO357
                RRCA
                RRCA
                RRCA
                LD (SYSREG1),A                  ;‘Ž„…†ˆŒŽ… „‹Ÿ ‡€ˆ‘ˆ ‚ Ž’ EFF7
                LD B,A
                LD A,L
                AND _128K | _48K | _1MB
                LD (MEMMODE),A                  ;‚›€›‰ …†ˆŒ €ŒŸ’ˆ
                LD H,CMOS_BYTE_00
                CALL READCMOS                   ;—ˆ’€…Œ Ž‘Ž‚›… “‘’€Ž‚Šˆ
                LD C,A
                AND M_TURBO14
                LD HL,TURBO_NUM                 ;ŽŒ… ’“Ž …†ˆŒ€
                LD (HL),2                       ;…†ˆŒ 14Œƒ–
                JR NZ,SETMODES04
                LD A,B
                DEC (HL)                        ;…†ˆŒ 7Œƒ–
                AND 0X10
                JR Z,SETMODES04
                DEC (HL)                        ;…†ˆŒ 3,5Œƒ–
SETMODES04      LD A,(HL)                       ;‚‡Ÿ‹ˆ ’…Š“™ˆ‰ ’“Ž …†ˆŒ
                ADD A,A
                ADD A,A
                LD E,A
                LD D,0
                LD HL,TXTTURBOMODE              ;’…Š‘’ ’“Ž …†ˆŒŽ‚
                ADD HL,DE                       ;……˜‹ˆ € “†›‰ ’…Š‘’
                LD DE,TXT_SPEED
                LD A,C
                LDI
                LDI
                LDI
                LDI                             ;………‘‹ˆ „‹Ÿ ‚›‚Ž„€ Š€
                LD C,A
                AND M_EMUL_TAPE
                LD HL,EMTAPLOAD
                CALL SET_ONOFF                  ;……Ž‘ ‘ˆŒ‚Ž‹Ž‚ „‹Ÿ ‚›‚Ž„€ € Š€, ON ˆ‹ˆ OFF
                LD A,C
                AND M_RELOAD_FONT
                XOR M_RELOAD_FONT
                LD HL,EROMLOADFONT
                CALL SET_ONOFF                  ;……Ž‘ ‘ˆŒ‚Ž‹Ž‚ „‹Ÿ ‚›‚Ž„€ € Š€, ON ˆ‹ˆ OFF
                LD A,C
                AND M_TYPE_FONT
                PUSH BC
                LD HL,TXTMODTYPE
                LD BC,5
                JR Z,SET_FONT2
                ADD HL,BC
SET_FONT2       LD DE,ETYPESFONT
                LDIR
                POP BC
                LD A,C
                AND MKOL_MODES
                CP KOL_MODES
                JR C,SETMODES03
                XOR A
SETMODES03      LD L,A
                ADD A,A
                ADD A,L
                ADD A,A
                ADD A,A
                LD H,0
                LD L,A
                LD DE,TXT_RESETTO
                ADD HL,DE
                LD DE,TXT_RESET
                LD A,C
                LD BC,0X0C
                LDIR
                LD C,A
                AND M_PRINTER_AY
                LD HL,ETXT_AYPRINTER
                CALL SET_ONOFF                  ;……Ž‘ ‘ˆŒ‚Ž‹Ž‚ „‹Ÿ ‚›‚Ž„€ € Š€, ON ˆ‹ˆ OFF
SETMODES02      LD A,(MEMMODE)
                AND A
                LD HL,T_ALL
                JR Z,SETMODES01                 ;ALL MEMORY
                LD HL,T_48
                DEC A
                JR Z,SETMODES01                 ;48K
                LD HL,T_128                     ;128K
SETMODES01      LD DE,TXT_MEM                   ;…†ˆŒ €ŒŸ’ˆ
                LD A,C
                LD BC,3
                LDIR
                LD H,CMOS_BYTE_01
                CALL READCMOS
                PUSH AF
                AND M_AUTOMOUNT
                LD HL,ETXT_AUTOMOUNT
                CALL SET_ONOFF
                POP AF
;„‹Ÿ …‡ˆ„…’€ HONEY COMANDER
        IFDEF REZIDENT
                AND M_REZIDENT
                LD HL,TXT_REZIDENT
                CALL SET_ONOFF
                LD H,CMOS_BYTE_03
                CALL READCMOS
                AND M_KILL_REZIDENT
                LD HL,TXT_KILLREZID
                CALL SET_ONOFF
        ENDIF;REZIDENT
                LD A,(ERS_FLAGS)
                AND M_CLOCK_ON
                RET Z
                LD DE,VERS_CONF
                LD L,0
                CALL GET_VERS_EVO               ;‚…‘ˆŸ €‡Ž‚Ž‰ ŠŽ”ˆƒ“€–ˆˆ
                LD DE,VERS_BOOT
                LD L,1
                JP GET_VERS_EVO                 ;‚…‘ˆŸ AVRBOOT

;……Ž‘ ‘ˆŒ‚Ž‹Ž‚ „‹Ÿ ‚›‚Ž„€ € Š€, ON ˆ‹ˆ OFF
SET_ONOFF       LD DE,"n "
                JR NZ,SET_ONOFF1
                LD DE,"ff"
SET_ONOFF1      LD (HL),D
                INC HL
                LD (HL),E
                RET

TURBO_7MHZ      LD E,0XA3
                LD BC,0XFF77
                PEC_ON M_SHADOW_BF
                OUT (C),E
                PEC_OFF M_SHADOW_BF
                XOR A
                JP SET_EFF7

                include menu_data.a80
                include menu_execute.a80
                include mouse.a80
                include window.a80
                include call_cmos.a80
                include call_trdos.a80
                include koshak.a80
                include pc_keys_test.a80
                include flasher.a80
                include fat_boot.a80
                include bmp_view.a80

CLEAR_128K      DI
                LD HL,0
                LD A,0X17
                CALL CLEAR128K0
                LD A,0X16
                CALL CLEAR128K0
                LD A,0X14
                CALL CLEAR128K0
                LD A,0X13
                CALL CLEAR128K0
                LD A,0X11
                CALL CLEAR128K0
                LD A,0X10
CLEAR128K0      LD (TEMP_SAVE_SP),SP
                LD BC,CONF_128
                OUT (C),A
                LD SP,0
                LD B,0X80
CLEAR128K1      REPT 64
                PUSH HL
                ENDM
                DJNZ CLEAR128K1
                LD SP,0
TEMP_SAVE_SP    EQU $-2
                RET

;“‘’€Ž‚Š€ ……Œ…›• €‘ˆŠ€ ˆ ’›„Ž‘€, “‘’€Ž‚Š€ ‚›€ŽƒŽ „ˆ‘ŠŽ‚Ž„€
SYSTEM          LD HL,BAS_VAR
                LD DE,KSTATE0
                LD BC,EBAS_VAR-BAS_VAR
                LDIR                            ;“‘’€Ž‚Š€ ‘’€„€’›• ……Œ…›• BASIC ˆ TR-DOS
GET_DRV_SYM     LD A,(ERS_FLAGS)                ;Ž‚…Ÿ…Œ €‹ˆ—ˆ… ŠŒŽ‘€
                AND M_CLOCK_ON
                JR Z,SET_DRIVE
                LD H,VIRT_REAL_DRIVE
                CALL READCMOS
                RRCA
                RRCA
                AND 3
                LD (DRV_SYM),A                  ;“‘’€Ž‚Š€ ‚›€ŽƒŽ …€‹œŽƒŽ „ˆ‘ŠŽ‚Ž„€
SET_DRIVE       LD A,(DRV_SYM)                  ;ˆ‡Œ……ˆ… ‘ˆ‘’…Œ›• ……Œ…›• „‹Ÿ „ˆ‘Š€
                LD (TRD_5D19),A
                LD (TRD_5CF6),A
                LD L,A
                LD H,A
                LD (TRD_5CF8),HL
                OR 0X3C
                LD (TRD_5D16),A
                RET

GLUDIN          LD H,CMOS_BYTE_01
                CALL READCMOS
                AND M_SOUNDKEYS
                RET Z
                LD HL,DIN+0X0D
                LD A,0X0D
GLUDIN1         LD BC,0XFFFD
                OUT (C),A
                LD B,0XBF
                OUTD
                SUB 1
                JR NC,GLUDIN1
                RET

SHUT2AY         LD H,CMOS_BYTE_01
                CALL READCMOS
                AND M_SOUNDKEYS
                RET Z
                LD DE,0X0E00
SHUT2AY1        DEC D
                LD H,D
                LD L,E
                CALL SHUT2AY2
                JR NZ,SHUT2AY1                  ;¤«ï ¯¥à¢ëå ­¨ªà®­®¢
                LD HL,0X073F
SHUT2AY2        LD BC,0XFFFD
                OUT (C),H
                LD B,0XBF
                OUT (C),L
                RET

TIMELP          CALL PRINTTIME
                LD A,HIGH (MOUSE_KEYS)
                IN A,(LOW (MOUSE_KEYS)) ;ŠŽŠˆ Œ›˜ˆ
                CPL
                AND 7
                JR NZ,TIMELP                    ;ŽŠ€ … Ž’“‘’Ÿ’
                RET

;‡€“‘Š PERFECT COMMANDER
PERFECT         DI
                LD SP,0XC000
                PEC_ON M_SHADOW_BF
                LD BC,WIN_A0
                LD A,ROM_RST81
                OUT (C),A
                LD HL,(ADR_PERFECT)
                LD DE,0X5B00
                CALL UNPACK
                LD BC,WIN_A0
                LD A,0X83
                OUT (C),A
                PEC_OFF M_SHADOW_BF
                LD A,0XC9
                LD (0X66D2),A
                LD SP,0X5FE4
                JP 0X8A1D

ISDOS_BOOT      LD HL,ISDOS_BOOT1
                LD DE,0X5E00
                LD BC,ISDOS_BOOT2-ISDOS_BOOT1
                LDIR
                JP 0X5E00

                include hdd_detect.a80

ISDOS_BOOT1     include isdos_boot.a80
ISDOS_BOOT2

SEL_FAT_DRV     ;€„…‘ ‘Ž‡„€ˆŸ ’…Š‘’€, €„…‘Ž‚ ‚›‡›‚Ž‚ ˆ ‘ˆ‘Š€ ƒŽŸ—ˆ• Š‹€‚ˆ˜ Œ…ž ‚›Ž€ €‡„…‹Ž‚ FAT