Rev 1047 |
Blame |
Compare with Previous |
Last modification |
View Log
| Download
| RSS feed
| ?url?
; LAST UPDATE: 24.02.2023 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
include ../../ports_ngs.a80
TO_DOS EQU 0x3D2F
INIT_VAR 0xC000
SETVAR ADR_CAT, 0xC00 ; ¤à¥á ¡ãä¥à ¤«ï ¤¨áª¥âë ¨«¨ ®¡à §
SETVAR ADR_CAT_FAT, 0x800 ; ¤à¥á ¡ãä¥à ©¤¥ëå ä ©«®¢ FAT
SETVAR ADR_CAT_SCRH, 0x1000 ; ¤à¥á ¡ãä¥à ¤«ï ¯®¨áª ä ©«®¢
SETVAR BUFTSC, 0x180 ; 180 â ¡«¨æ ¤à¥á®¢ áâப íªà F700
SETVAR MOUSE_BUFF, 0x10 ; 10 ¡ãä¥à á®åà ¥¨ï ¯®¤ ¬ëèìî
SETVAR COLBUF, 0x20 ; 20 ¡ãä¥à á®åà ¥¨ï 梥â
SETVAR BUF_FILEITEM, 0x20 ; 20 ¡ãä¥à ®¯¨á ⥫ï ä ©«
SETVAR BUF_RDSEC, 0x200 ; 200 ¡ãä¥à ᥪâ®à ¯à¨ ¯à®¢¥àª¥ ä ©«®¢ F900
SETVAR BUF_RDPATH, 0x100 ; 100 ¡ãä¥à ⥪ã饣® ¯ã⨠FB00
SETVAR BUF_LEVDIR, 0x400 ; 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 _MOUNTER,_GET_VIRT_BITS
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 GLUDIN ; ¡ã¬ªã«¨ ¢ AY
CALL MOUSE ; ®¯à®á ¬ëè¨
LD HL,0x807C
LD (ARXY),HL ; ãáâ ®¢ª ¤¥ä®«â®© ¯®§¨æ¨¨ ¬ëè¨ ¯à¨ áâ àâ¥
CALL DISK_NONE
CALL SYSTEM
CALL RESET_VG ; á¡à®á ¢£èª¨ ¨ ãáâ ®¢ª ¯¥à¥å¢ â稪 ®è¨¡®ª dos
RESTART DI
LD A,0x10
CALL SET_7FFD ; ¢ª«î稫¨ ¡ ᨪ48 ¨ áâà ¨çªã 0
CALL TURBO_7MHZ
CALL SYSTEM
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) ; ª« ¢¨ âãॠ¨ç¥£® ¥ ¦ â®
LD H,HDD_TIMEOUT
CALL READCMOS
RRCA
RRCA
RRCA
RRCA
AND 0x0F
LD (SCRSAV.TIMEOUT),A
CALL RESET_SCREENSAVER
IFDEF TESTEMUFDD
; test
PEC_ON M_SHADOW_BF
EVOPORT WIN_P2,RAM_DATARAMD
EVOPORT WIN_P2,ZXSTD_CPU2
PEC_OFF M_SHADOW_BF!0xFF
LD HL,VIRT_REAL_DRIVE << 8
CALL WRITECMOS
LD HL,ADR_TXT_BOOT
JP RUNFILE1
ADR_TXT_BOOT DB "boot "
; test
ENDIF
; ¢å®¤ ¢ £« ¢ë© 横« ®¯à®á ã¯à ¢«¥¨ï
_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 ; ãáâ ®¢ª ®¢®£® ¤à¥á ¤«ï 梥⮩ ¯®«®áª¨
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
CALL CHECK_SCREENSAVER
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 GLUDIN
CALL RESTORE_KOSHAK ; ¦ â® ¥çâ® ª« ¢¥, á¡à®á áç¥â稪 ª®è ª
CALL RESET_SCREENSAVER
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 D,A
LD H,VIRT_REAL_DRIVE
CALL READCMOS
AND 3
LD B,A
INC B
ADD A,'A'
LD C,A
LD A,%10000000
.L1 RLCA
DJNZ .L1
AND D
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
OUT (C),A
PEC_OFF M_SHADOW_BF
RET
; ¢ë¢®¤ ®á®¢®£® ¬¥î ¨ ¤¯¨á¥©
S_FACE LD A,7
CALL CLS
LD HL,TXTFULLSCR
RST8 _PRINT_MESSAGE
RST8 _VERSION
BIT B_INCORRECTFPGA,A
JR Z,.L1
RES B_INCORRECTFPGA,A
AND A
JR Z,.L1
LD HL,INCORRECTFPGA
RST8 _PRINT_MESSAGE
.L1 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
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
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
IF 1
; BC=BC/DE
DIVIDE16 LD HL,0
LD A,0x11
.L1 RL C
RL B
DEC A
RET Z
ADC HL,HL
JR NC,.L2
OR A
SBC HL,DE
JR .L1
.L2 SBC HL,DE
JR NC,.L3
ADD HL,DE
.L3 CCF
JR .L1
MULT PUSH BC
LD A,B
LD HL,0
LD B,0x10
.L1 ADD HL,HL
RL C
RLA
JR NC,.L2
ADD HL,DE
JR NC,.L2
INC C
JR NZ,.L2
INC A
.L2 DJNZ .L1
EX DE,HL
LD L,C
LD H,A
POP BC
RET
ENDIF
IF 0
;=============================
; 16-bit multiply
; Tim Paterson
;=============================
MULTIPLY16 ld hl,0
MUL_HLBC_DE ld a,b
ld b,0x11
jr .l1
.l2 jr nc,.l3
add hl,de
.l3 rr h
rr l
.l1 rra
rr c
djnz .l2
ld b,a
ret
;=============================
; 16-bit divide
; Tim Paterson
;=============================
;¥«¨â HLBC DE
; ¢ë室¥ HL - ®áâ ⮪, BC - ç á⮥
DIVIDE16 ld hl,0
DIV_HLBC_DE ld a,b
ld b,0x10
rl c
rla
.l1 rl l
rl h
jr c,.l2
sbc hl,de
jr nc,.l3
add hl,de
.l3 ccf
.l4 rl c
rla
djnz .l1
ld b,a
ret
.l2 or a
sbc hl,de
jr .l4
ENDIF
include conf_down.a80
include menu_execute.a80
include call_cmos.a80
include menu_data.a80
include fat_boot.a80
include mouse.a80
include window.a80
include call_trdos.a80
include koshak.a80
include pc_keys_test.a80
include bmp_view.a80
include conf_up.a80
include flasher.a80
KOSHAK binclude kot_anim.bin,9
ICON binclude icon.bin,9
BAS_VAR binclude bas_var.bin
EBAS_VAR
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
SETUP_DRIVE 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