mirror of
https://github.com/Tolik-Trek/LDConf.git
synced 2026-06-15 01:11:35 +03:00
835 lines
22 KiB
NASM
835 lines
22 KiB
NASM
; _ ____ ____ __
|
||
; | | | _ \ / ___|___ _ __ / _|
|
||
; | | | | | | | / _ \| '_ \| |_
|
||
; | |___| |_| | |__| (_) | | | | _|
|
||
; |_____|____/ \____\___/|_| |_|_|
|
||
|
||
; _____ ____ _ _ ____ _
|
||
; | ___|__ _ __ / ___| _ __ _ __(_)_ __ | |_ ___ _ __ / ___|___ _ __ ___ _ __ _ _| |_ ___ _ __
|
||
; | |_ / _ \| '__| \___ \| '_ \| '__| | '_ \| __/ _ \ '__| | | / _ \| '_ ` _ \| '_ \| | | | __/ _ \ '__|
|
||
; | _| (_) | | ___) | |_) | | | | | | | || __/ | | |__| (_) | | | | | | |_) | |_| | || __/ |
|
||
; |_| \___/|_| |____/| .__/|_| |_|_| |_|\__\___|_| \____\___/|_| |_| |_| .__/ \__,_|\__\___|_|
|
||
; |_| |_|
|
||
;----------------------------------------------------------------------;
|
||
; ‚¥àá¨ï ¯à®£¨ ¨ ¨ä® ¤«ï ¯®â®¢:
|
||
DEFINE Ver_ID "0.6 beta"
|
||
DEFINE e_mail "Tolik.Trek@gmail.com"
|
||
|
||
; <09>®¤£à㧪 ä ©« á ª®áâ â ¬¨ BIOS ¨ DSS:
|
||
include 'Shared_Includes/constants/sp2000.inc'
|
||
include 'Shared_Includes/constants/dss_equ.inc'
|
||
include 'Shared_Includes/constants/BIOS_equ.inc'
|
||
|
||
; Œ ªà®áë
|
||
MACRO _PrintStr
|
||
LD C,Dss.PChars
|
||
RST ToDSS
|
||
ENDM
|
||
;----------------------------------------------------------------------;
|
||
DEFINE App_EXE_Version 1
|
||
stack_point EQU #C000 ; ¤à¥á á⥪
|
||
SP_Win EQU 64 ; ¬¨¬ë© ª®âà®«ì ¯¥à¥á¥ç¥¨ï á⥪ á ª®¤®¬
|
||
org_addr EQU #8000 + CLP_Buffer ; ¤à¥á ª®¬¯¨«ï樨.
|
||
program_start EQU START
|
||
code_addr EQU START
|
||
Loader_length EQU 0
|
||
; _______ _______ ____ __ _
|
||
; | ____\ \/ / ____| | _ \ _ __ ___ / _(_)_ __
|
||
; | _| \ /| _| | |_) | '__/ _ \ |_| \ \/ /
|
||
; | |___ / \| |___ | __/| | | __/ _| |> <
|
||
; |_____/_/\_\_____| |_| |_| \___|_| |_/_/\_\
|
||
|
||
;-----------------;
|
||
INCLUDE 'Shared_Includes/constants/EXE_Header.z80'
|
||
ORG org_addr
|
||
;-----------------;
|
||
; __ __ _
|
||
; | \/ | __ _(_)_ __
|
||
; | |\/| |/ _` | | '_ \
|
||
; | | | | (_| | | | | |
|
||
; |_| |_|\__,_|_|_| |_|
|
||
|
||
START:
|
||
;-----------------; —¨á⨬ ¡ãä¥à ªá¥«¥¬
|
||
DI
|
||
LD HL,Buffer
|
||
LD D,D ; “áâ ®¢¨âì à §¬¥à ¡«®ª
|
||
LD A,255 ; <20> §¬¥à ¡«®ª
|
||
LD C,C
|
||
LD A,0
|
||
LD (HL),A
|
||
LD B,B ; ‚몫îç ¥¬ ªá¥«ì
|
||
EI
|
||
;-----------------; ‘®åà 塞 ⥪ã騥 áâà ¨æë
|
||
; IN A,(SLOT0)
|
||
; LD (page0_save),A
|
||
IN A,(SLOT1)
|
||
LD (page1_save),A
|
||
IN A,(SLOT2)
|
||
LD (page2_save),A
|
||
IN A,(SLOT3)
|
||
LD (page3_save),A
|
||
;-----------------;
|
||
|
||
;-----------------; ‘®åà 塞 áâனª¨ íªà
|
||
PUSH IX
|
||
LD C,Dss.GetVMod
|
||
RST ToDSS
|
||
POP IX
|
||
JP NC,1f
|
||
LD HL,error_Vmode
|
||
JP BadExit
|
||
1:
|
||
LD (VMod),A
|
||
LD A,B
|
||
LD (VModPage),A
|
||
;-----------------;
|
||
|
||
;-----------------; ‘®åà 塞 ¤¥ä®«âë¥ áâà ¨æë
|
||
DI
|
||
LD A,Spec_Page
|
||
OUT (SLOT3),A ; ®âªàëâì ᯥæ-áâà ¨æã
|
||
LD HL,#FFF0
|
||
LD DE,page0_def
|
||
LDI
|
||
LDI
|
||
LDI
|
||
LDI
|
||
LD A,(page3_save)
|
||
OUT (SLOT3),A ; ¢¥àãâì áâà ¨æã
|
||
EI
|
||
;-----------------;
|
||
|
||
;-----------------;
|
||
LD (dss_line),IX ; ‘®åà 塞 㪠§ ⥫ì áâப㠧 ¯ã᪠.
|
||
LD A,(IX) ; âãâ DSS ª« ¤ñâ ¤«¨ã ¯ à ¬¥â஢ ª®¬.áâப¨
|
||
AND A ; ¯à®¢¥à塞 ®âáãâá⢨¥ ¯ à ¬¥â஢
|
||
JP NZ,1F ; § ¯ã᪠¢ ª®¬.áâப¥. …᫨ ¨å ¥â,
|
||
LD HL,Help_Msg ; â® ¯¥ç â ¥¬ ¨áâàãªæ¨î ¨ ¢ë室¨¬
|
||
_PrintStr ; ¨§ ¯à®£à ¬¬ë á ®à¬ «ìë¬ ª®¤®¬
|
||
LD B,0 ; § ¢¥à襨ï.
|
||
JP Exit ;
|
||
;-----------------;
|
||
|
||
;-----------------; <20> §¡¨à ¥¬ ¨ ªâ¨¢¨à㥬 ª«îç¨
|
||
1:
|
||
CALL Set_keys ; ¢ë室¥: CF=0 - ¥â ®è¨¡ª¨
|
||
JR NC,1F ; ‘F=1 - ¥áâì ®è¨¡ª
|
||
LD HL,error_ComStr ; …᫨ à §®¡à «¨ á ®è¨¡ª ¬¨
|
||
JP BadExit ; â® ¢ë室 á ®è¨¡ª®©
|
||
;-----------------;
|
||
|
||
;-----------------; ¥á«¨ ®à¬. § ¢¥à襨¥ set_keys
|
||
1:
|
||
;
|
||
CALL TestConf ; ¯à®¢¥àª ª®äë. ¢ë室¥: CF=0 - ¥â ®è¨¡ª
|
||
JR NC,1F ; ‘F=1 - ¥áâì ®è¨¡ª
|
||
LD HL,error_confFile ; …᫨ ª®áïª á ä ©«®¬ ¯à®è¨¢ª¨
|
||
JP BadExit ; â® ¢ë室 á ®è¨¡ª®©
|
||
;-----------------;
|
||
|
||
;-----------------; ¥á«¨ ®à¬. § ¢¥à襨¥ TestConf
|
||
1:
|
||
;
|
||
CALL TakeMem ; ‚뤥«¥¨¥ ¯ ¬ï⨠¤«ï ª®äë 65536 ¡ ©â
|
||
JR NC,1F
|
||
LD HL,error_freeMem ; …᫨ ¥¤®áâ â®ç® ¯ ¬ïâ¨
|
||
JP BadExit ; â® ¢ë室 á ®è¨¡ª®©
|
||
;-----------------;
|
||
|
||
;-----------------; ¥á«¨ ®à¬. § ¢¥à襨¥ TakeMem
|
||
1:
|
||
;
|
||
CALL Load_conf ; —¨â ¥¬ ¯à®è¨¢ªã ¨§ ä ©« (¬¥ï¥â PAGE3)
|
||
LD A,(page3_save) ; ¢®ááâ ¢«¨¢ ¥¬ áâà ¨æã
|
||
OUT (SLOT3),A ; ¯ ¬ï⨠¯®á«¥ ᬥë
|
||
JR NC,1F
|
||
LD HL,error_readConf ; …᫨ ®è¨¡ª ¯à¨ ç⥨¨ ¯à®è¨¢ª¨ ¨§ ä ©«
|
||
JP BadExit ; â® ¢ë室 á 祬? <20>à ¢¨«ì®, á ®è¨¡ª®©
|
||
;-----------------;
|
||
|
||
;-----------------; ¥á«¨ ®à¬. § ¢¥à襨¥ Load_conf
|
||
1:
|
||
LD A,(ram_blk_id)
|
||
LD B,A
|
||
LD A,#FE
|
||
LD C,BIOS.RST_CONF.CUSTOM
|
||
RST ToBIOS
|
||
JP ReloadRET
|
||
;-----------------;
|
||
|
||
|
||
;-----------------; 7 ¡¥¤ - 1 à¥á¥â
|
||
; RESET: DI
|
||
; LD A,DCP_PAGE
|
||
; OUT (SLOT1),A ; set DCP page
|
||
; LD A,ACEX.RESET
|
||
; LD (#4400),A ; open for WR
|
||
; LD (#4600),A ; open for RD
|
||
; ;
|
||
; .LOOP: LD BC,#100
|
||
; OUT (C),C
|
||
; LD B,0
|
||
; OUT (C),C
|
||
; JR .LOOP ; ¯®«®áâìî § 横«¨âì!
|
||
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||
|
||
|
||
|
||
;
|
||
; ____ _ _ ____ _____ _____
|
||
; | _ \ ___| | ___ __ _ __| | | _ \| ____|_ _|
|
||
; | |_) / _ \ |/ _ \ / _` |/ _` | | |_) | _| | |
|
||
; | _ < __/ | (_) | (_| | (_| | | _ <| |___ | |
|
||
; |_| \_\___|_|\___/ \__,_|\__,_| |_| \_\_____| |_|
|
||
; Œ¥áâ®, ªã¤ ¡ã¤¥â ¢®§¢à â ¯®á«¥
|
||
; ¯¥à¥§ £à㧪¨ ®¢®© ¯à®è¨¢ª¨
|
||
|
||
;-----------------;
|
||
ReloadRET: DI
|
||
;LD SP,(SP_Save)
|
||
LD A,CNF_PORT.CNF_0 ; ª®ä¨£ãà æ¨ï ¨ ®âª«î票¥ <20>‡“
|
||
OUT (SYS_PORT.OFF),A
|
||
; LD A,(page0_save) ; SET PAGE DOS
|
||
; OUT (SLOT0),A
|
||
; LD A,(page3_save) ; ¢®§¢à â áâ ன áâà ¨æë PAGE3
|
||
; OUT (SLOT3),A
|
||
;-----------------;
|
||
|
||
;-----------------; <20> ¡®â ¯à®£à ¬¬ë á ®¢®© ¯à®è¨¢ª®©
|
||
LD A,(e_key)
|
||
AND A
|
||
JP Z,1F
|
||
LD HL,EXEfileBuff ; ‡ ¯ã᪠EXE
|
||
LD BC,0040h
|
||
RST ToDSS
|
||
;-----------------;
|
||
|
||
;-----------------;
|
||
1: ;DI
|
||
|
||
LD A,(a_key) ; ‚ë室 ¡¥§ ¢®ááâ ®¢«¥¨ï ¤¥ä®«â®© ª®äë?
|
||
AND A
|
||
|
||
JP NZ,NextReloadRET
|
||
LD B,0
|
||
LD A,#FE
|
||
LD C,BIOS.RST_CONF.CUSTOM
|
||
RST ToBIOS
|
||
JP NextReloadRET
|
||
;*******************************************************
|
||
|
||
; _ _ _
|
||
; | \ | | _____ _| |_
|
||
; | \| |/ _ \ \/ / __|
|
||
; | |\ | __/> <| |_
|
||
; |_| \_|\___/_/\_\\__|
|
||
; ____ _ _ ____ _____ _____
|
||
; | _ \ ___| | ___ __ _ __| | | _ \| ____|_ _|
|
||
; | |_) / _ \ |/ _ \ / _` |/ _` | | |_) | _| | |
|
||
; | _ < __/ | (_) | (_| | (_| | | _ <| |___ | |
|
||
; |_| \_\___|_|\___/ \__,_|\__,_| |_| \_\_____| |_|
|
||
; <09>®¤£®â®¢ª ª § ¢¥àè¥¨î ¯®á«¥ à¥á¥â ¨
|
||
; ¢®§¢à â த®© ¯à®è¨¢ª¨
|
||
;-----------------;
|
||
NextReloadRET:
|
||
DI
|
||
;
|
||
;-----------------; ‡ â¨à ¥¬ á«¥¤ë ¥á⮪®¢®© ª®äë
|
||
; LD A,Spec_Page
|
||
; OUT (SLOT3),A ; ®âªàëâì ᯥæ-áâà ¨æã
|
||
|
||
; LD H,#FF
|
||
; LD L,H
|
||
; LD SP,HL
|
||
; PUSH HL
|
||
; PUSH HL
|
||
; PUSH HL
|
||
; PUSH HL
|
||
; PUSH HL
|
||
; PUSH HL
|
||
; PUSH HL
|
||
; PUSH HL
|
||
|
||
; LD (0FFF3h),A ; á®åà 塞 áâà ¨æë
|
||
; ld A,(page0_save)
|
||
; LD (0FFF0h),A ; DOS-PAGE
|
||
; ld A,(page1_save)
|
||
; LD (0FFF1h),A
|
||
; ld A,(page2_save)
|
||
|
||
; XOR A ; ¢ëáâ ¢«ï¥¬ áâà ¨æë, ª®â®àë¥ áâ ¢ïâáï ¯à¨ à¥á¥â¥
|
||
; LD (0FFF0h),A ; page 0
|
||
; LD A,5
|
||
; LD (0FFF1h),A ; page 1
|
||
; LD A,2
|
||
; LD (0FFF2h),A ; page 2
|
||
; LD A,40h
|
||
; LD (0FFF3h),A ; page 3
|
||
|
||
; XOR A
|
||
; LD D,A
|
||
; LD E,A
|
||
; LD (#FFF4),DE ; ¤à¥á ¯à®£à ¬¬ë ¯¥à¥§ ¯ãáª
|
||
; LD (#FFFE),DE ; ä« £ ¯¥à¥§ ¯ãáª
|
||
|
||
; LD A,'Z'
|
||
; LD (#FFFE),A
|
||
; LD A,'X'
|
||
; LD (#FFFF),A ; ä« £ ¯¥à¥§ ¯ãáª
|
||
|
||
;-----------------;
|
||
;
|
||
;LD SP,(SP_Save)
|
||
LD A,CNF_PORT.CNF_0 ; ª®ä¨£ãà æ¨ï ¨ ®âª«î票¥ <20>‡“
|
||
OUT (SYS_PORT.OFF),A
|
||
|
||
;LD A,(page0_save) ; SET PAGE DOS
|
||
;OUT (SLOT0),A
|
||
LD A,(page1_save)
|
||
OUT (SLOT1),A
|
||
; ƒ«ïãâì, ¬®¦¥â ¥ ¤® ¢®§¢à é âì ®¤ã ¨§ áâà ¨æ???
|
||
LD A,(page3_save)
|
||
OUT (SLOT3),A
|
||
|
||
;JP NormExit
|
||
;*******************************************************
|
||
|
||
; _____ _ _ ____ _
|
||
; | ____|_ _(_) |_ | _ \ _ __ ___ ___( )___
|
||
; | _| \ \/ / | __| | |_) | '__/ _ \ / __|// __|
|
||
; | |___ > <| | |_ | __/| | | (_) | (__ \__ \
|
||
; |_____/_/\_\_|\__| |_| |_| \___/ \___| |___/
|
||
|
||
;-----------------;
|
||
NormExit:
|
||
LD HL,WellDone
|
||
_PrintStr
|
||
LD B,0
|
||
JR Exit
|
||
;-----------------;
|
||
|
||
; ‚ HL áâப á ®è¨¡ª®©
|
||
BadExit: _PrintStr
|
||
LD B,1 ; ª®¤ ®è¨¡ª¨
|
||
;JR Exit
|
||
;-----------------;
|
||
|
||
;-----------------;
|
||
Exit: PUSH BC
|
||
LD HL,FirstHandler
|
||
LD C,12h
|
||
LD B,(LastHandler-FirstHandler)
|
||
.loop: ; ‡ ªàë¢ ¥¬ ¢á¥ ®âªàëâë¥ ä ©«ë,
|
||
LD A,(HL) ; ¥á«¨ ¥áâì. ‚ 横«¥.
|
||
AND A
|
||
JR Z,1F
|
||
PUSH HL
|
||
PUSH BC
|
||
RST ToDSS
|
||
POP BC
|
||
POP HL
|
||
1: INC HL
|
||
DJNZ .loop
|
||
;-----------------;
|
||
|
||
;-----------------; ®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì, ¥á«¨ ª«ï稫¨
|
||
LD A,(ram_blk_id)
|
||
CP 0
|
||
JR Z,1F
|
||
LD C,#C3
|
||
RST ToBIOS
|
||
;-----------------;
|
||
|
||
;-----------------; ¢®ááâ ¢«¨¢ ¥¬ íªà
|
||
LD C,53h
|
||
RST ToDSS
|
||
PUSH DE
|
||
|
||
LD A,(VModPage)
|
||
LD B,A
|
||
LD A,(VMod)
|
||
LD C,50h
|
||
RST ToDSS
|
||
|
||
LD C,52h
|
||
POP DE
|
||
RST ToDSS
|
||
;-----------------;
|
||
|
||
;-----------------; ‚ë室 ¢ DOS
|
||
1:
|
||
POP BC
|
||
LD C,41h
|
||
RST ToDSS
|
||
DI
|
||
HALT
|
||
;-----------------;
|
||
;*******************************************************
|
||
|
||
; ____ _ _
|
||
; / ___| ___| |_ | | _____ _ _ ___
|
||
; \___ \ / _ \ __| | |/ / _ \ | | / __|
|
||
; ___) | __/ |_ | < __/ |_| \__ \
|
||
; |____/ \___|\__| |_|\_\___|\__, |___/
|
||
; |___/
|
||
; <09>®«ãç ¥¬ ª«îç¨ § ¯ã᪠, à ᯨ娢 ¥¬ ¨å ¯® 㣫 ¬,
|
||
; áâà ¨¢ ¥¬ ç «ìë¥ ãá«®¢¨ï à ¡®âë.
|
||
|
||
;-----------------;
|
||
Set_keys:
|
||
LD HL,(dss_line)
|
||
INC HL
|
||
LD (NextParameter),HL
|
||
.CheckChar:
|
||
CALL .GetParam
|
||
JP NC,1F
|
||
CCF ; …᫨ ¯®á«¥¤¨© ¯ à ¬¥âà ¢ áâப¥ = 0
|
||
RET ; â® ¢ë室¨¬. <20> §¡®à ®ª®ç¥
|
||
1: LD A,(Buffer+1) ; ‚ ®á®¢®¬ 横«¥ CheckChar ¬ë
|
||
AND A ; ¦¤ñ¬ ⮫쪮 ®¤¨ ᨬ¢®« ¢
|
||
JP Z,1F ; ª«îç¥. <20>®í⮬㠥᫨ ¨å ¡®«ìè¥,
|
||
SCF ; â® ¢ë室¨¬ á ®è¨¡ª®©.
|
||
RET ; ‚ë室 á ®è¨¡ª®©.
|
||
1: ; <20>஢¥àª /ãáâ ®¢ª ª«îç
|
||
LD C,A ; ’“’ †„ðŒ, çâ® ¢ € «¥¦¨â 0 ¨ ¨á¯®«ì§ã¥¬ BC
|
||
LD B,A ; ª ª ᬥ饨¥ ¢ ¯ ¬ïâ¨, £¤¥ åà ïâáï ª«îç¨
|
||
LD A,(Buffer)
|
||
RES 5,A ; ¤¥« ¥¬ ¬ «¥ìª¨© ᨬ¢®« ¡®«ì訬)))
|
||
CP 'A' ; ¯à®¢¥à塞 ¯ à ¬¥âà ã¦ë©
|
||
JR Z,.set_keys_a
|
||
CP 'C'
|
||
JR Z,.set_keys_c
|
||
CP 'E'
|
||
JR Z,.set_keys_e
|
||
CP 'X'
|
||
JR Z,.set_keys_x
|
||
CP 'L'
|
||
JR Z,.set_keys_l
|
||
SCF ; ®è¨¡ª ¢ ¯ à ¬¥âà¥
|
||
RET ; ¢ë室 á ®è¨¡ª®©
|
||
;-----------------;
|
||
|
||
;-----------------;
|
||
.set_keys_l:
|
||
INC C
|
||
.set_keys_a:
|
||
INC C
|
||
.set_keys_x:
|
||
INC C
|
||
.set_keys_e:
|
||
INC C
|
||
.set_keys_c:
|
||
; EX DE,HL ; <20>… ’…<E28099>Ÿ’œ “Š€‡€’…‹œ <20>€ ‘‹…„“ž™ˆ‰ <20>€<EFBFBD>€Œ…’<E280A6>!
|
||
LD HL,key_buff ; ‚ëç¨á«ï¥¬ ï祩ªã åà ¥¨ï ª«îç
|
||
ADD HL,BC
|
||
LD A,(HL) ; ¨ ¯à®¢¥à塞 ¥â «¨ â ¬ 㦥 ª«îç .
|
||
;AND A ; ¥á«¨ ¥áâì, § ç¨â ª«îç ¢¢¥¤ñ 2 à §
|
||
;SCF
|
||
NEG
|
||
RET NZ ; ®è¨¡ª - ¯®¢â®à ª«îç . ¢ë室
|
||
|
||
; OR C ; ’ãâ Ž†ˆ„€…’‘Ÿ, çâ® €=0. …᫨ ‘=0, â® íâ® ª«îç "A"
|
||
LD A,1 ; <20>ਧ ª ãáâ ®¢ª¨ ª«îç - ¥ ®«ì.
|
||
LD (HL),A ; ãáâ ®¢¨«¨ ª«îç
|
||
; EX DE,HL ; <20>… ’…<E28099>Ÿ’œ “Š€‡€’…‹œ <20>€ ‘‹…„“ž™ˆ‰ <20>€<EFBFBD>€Œ…’<E280A6>!
|
||
; JR Z,.CheckChar ; ¥á«¨ ª«îç "A" â® á«¥¤ãî騩 ªà㣠横«
|
||
SUB C ; ’ãâ Ž†ˆ„€…’‘Ÿ, çâ® €=1. …᫨ ‘>1, â® íâ® ª«îç ¡¥§ ¯ à ¬¥â஢
|
||
; JR Z,.CheckChar ; ¥á«¨ ª«îç "X" â® á«¥¤ãî騩 ªà㣠横«
|
||
JR C,.CheckChar ; ¥á«¨ ª«îç ¡®«ìè¥ ª«îç 'e', â® á«¥¤ãî騩 ªà㣠横«
|
||
|
||
PUSH BC
|
||
CALL .GetParam ; ¯®«ãç ¥¬ á«¥¤ãî騩 ¯ à ¬¥âà áâப¨ DOS ª ©¤¥®¬ã ª«îçã
|
||
POP BC
|
||
RET C ; ¢ë室, ¥á«¨ ®è¨¡ª
|
||
; EX DE,HL ; <20>… ’…<E28099>Ÿ’œ “Š€‡€’…‹œ <20>€ ‘‹…„“ž™ˆ‰ <20>€<EFBFBD>€Œ…’<E280A6>!
|
||
LD HL,FirstHandler ; ¢ëç¨á«ï¥¬ ï祩ªã åà ¥¨ï 奤«¥à
|
||
ADD HL,BC
|
||
; DEC HL
|
||
LD (.fileHandler),HL ; ¨ ¯®¤áâ ¢«ï¥¬ ¥ñ ¯àאַ ¢ ª®¤ ".OpenFile"
|
||
; EX DE,HL ; <20>… ’…<E28099>Ÿ’œ “Š€‡€’…‹œ <20>€ ‘‹…„“ž™ˆ‰ <20>€<EFBFBD>€Œ…’<E280A6>!
|
||
; PUSH HL ; <20>… ’…<E28099>Ÿ’œ “Š€‡€’…‹œ <20>€ ‘‹…„“ž™ˆ‰ <20>€<EFBFBD>€Œ…’<E280A6>!
|
||
CALL .OpenFile ; Žâªàë⨥ ä ©« (¨«¨ ¯à®¢¥àª «¨ç¨ï) ¯® ¨¬¥¨ ¨§ ¡ãä¥à
|
||
; POP HL ; <20>… ’…<E28099>Ÿ’œ “Š€‡€’…‹œ <20>€ ‘‹…„“ž™ˆ‰ <20>€<EFBFBD>€Œ…’<E280A6>!
|
||
RET C ; ¢ë室, ¥á«¨ ®è¨¡ª
|
||
JP .CheckChar ; ¯®£ «¨ á«¥¤ãî騩 ¢¨â®ª à §¡®à ª«î祩
|
||
;-----------------;
|
||
|
||
;-----------------;
|
||
.GetParam:
|
||
LD HL,(NextParameter)
|
||
LD C,43h ; âã⠢뤥«ï¥¬ ¯ à ¬¥âà § ¯ãáª
|
||
LD DE,Buffer ; ¡ãä¥à ¤«ï ®¯¥à 権 á® áâப ¬¨
|
||
RST #10 ; ¯®«ãç ¥¬ ¢ ¡ãä¥à¥ á«¥¤ãî騩 ¯ à ¬¥âà
|
||
LD (NextParameter),HL
|
||
CCF
|
||
LD A,(Buffer)
|
||
AND A
|
||
RET NZ ; <20>®à¬ «ìë© ¢®§¢à â C = 0
|
||
SCF
|
||
RET ; ‚®§¢à â á ®è¨¡ª®© C = 1
|
||
;-----------------;
|
||
|
||
;-----------------;
|
||
.OpenFile:
|
||
LD HL,key_save ; ¯à®¯¨áë¢ ¥¬ ª«îç ¢ ª®¤ ¤«ï ¯à®¢¥àª¨ EXE
|
||
LD (HL),C ; ¢âëª ¥¬ § 票¥ ª«îç ¢ ª®¤
|
||
LD BC,#0045 ; ¯à®¢¥à塞 ¡ãä¥à ª®à४â®áâì ¨¬¥¨ ä ©«
|
||
LD HL,Buffer ; ????? ᤥ« âì ¯à®¢¥àªã ª®à४â®áâì ¢á¥£® ¯ãâ¨?????
|
||
RST ToDSS
|
||
RET C ; ®è¨¡ª ¢ áâப¥
|
||
AND %00000011 ; ¯à®¢¥à塞, çâ® ¥áâì ¨¬ï ¨
|
||
XOR %00000011 ; à áè¨à¥¨¥ ä ©« (0 ¨ 1 ¡¨âë)
|
||
SCF
|
||
RET NZ ; ®è¨¡ª ä ©« - ¢ë室
|
||
|
||
LD A,0
|
||
LD C,11h
|
||
LD HL,Buffer
|
||
RST ToDSS ; ®âªàë⨥ ä ©«
|
||
RET C ; ®è¨¡ª ä ©« - ¢ë室
|
||
LD (.fileHandler),A ; á®åà 塞 奤«¥à
|
||
.fileHandler EQU $-2
|
||
;-----------------;
|
||
|
||
;-----------------; <20>஢¥à塞 ®¡à ¡ âë¢ ¥¬ë© ª«îç
|
||
key_save EQU $+1
|
||
LD A,#FF ; áî¤ ¢®âªñâáï § 票¥ ¨§ ॣ¨áâà C
|
||
XOR 1 ; ¥á«¨ 1, â® íâ® ª«îç "E"
|
||
RET NZ ; ¥á«¨ ¥â, â® ¢ë室 ¨§ ¯à®æ¥¤ãàë.
|
||
;-----------------;
|
||
|
||
;-----------------; <20>஢¥àª à áè¨à¥¨ï ä ©«
|
||
LD BC,#0445 ; ‘ ª«î箬 "E" ¯à®¢¥à塞 ä ©«
|
||
LD HL,Buffer ; à áè¨à¥¨¥ "EXE" ¢ë¤¥«¨¢
|
||
LD DE,BufferEXE ; ¨§ áâப¨ ¨¬¥¨ à áè¨à¥¨¥
|
||
RST ToDSS ; ä ©« ¢ ®â¤¥«ìë© ¡ãä¥à 4 ¡ ©â
|
||
;-----------------;
|
||
|
||
;-----------------; â¥á⨬ ¡ãä¥à à áè¨à¥¨ï ¯®á¨¬¢®«ì®
|
||
LD DE,IsEXE
|
||
LD HL,BufferEXE
|
||
LD BC,IsEXElength-IsEXE
|
||
2: LD A,(DE)
|
||
RES 5,(HL) ; ¤¥« ¥¬ ¬ «¥ìª¨© ᨬ¢®« ¡®«ì訬)))
|
||
CPI
|
||
INC DE
|
||
JP PO,3F ; ¥á«¨ ¯®á«¥¤¨© ᨬ¢®« ¯à®¢¥à¥, â® JP ¯à®¢¥àªã
|
||
JP Z,2B ; ¥á«¨ ᨬ¢®« ᮢ¯ ¤ ¥â, â® ¯®¢â®à
|
||
3: SCF ; áî¤ ¯®¯ ¤ñ¬ ª®£¤ BC=0 ¨«¨ ᨬ¢®« ¥ ᮢ¯ «
|
||
RET NZ ; ¥á«¨ ¢ë諨 ¨§ 横« ¨ ᨬ¢®« ¥ ᮢ¯ « - ®è¨¡ª ,
|
||
XOR A ; ¥á«¨ ¢áñ ¨èâïª (???- § ªàë¢ ¥¬ ®âªàëâë© EXE ¨???) ¢ë室¨¬
|
||
EX AF,AF'
|
||
LD HL,Buffer
|
||
LD DE,EXEfileBuff
|
||
LD BC,#00FF
|
||
1: LDI
|
||
EX AF,AF'
|
||
CP (HL)
|
||
JR Z,1F
|
||
EX AF,AF'
|
||
JP PE,1B
|
||
1:
|
||
|
||
LD A,0
|
||
LD (DE),A
|
||
LD A,(ExeHandler)
|
||
LD C,12h
|
||
RST ToDSS
|
||
|
||
RET
|
||
;*******************************************************
|
||
|
||
; _____ _ ____ __
|
||
; |_ _|__ ___| |_ / ___|___ _ __ / _|
|
||
; | |/ _ \/ __| __| | | / _ \| '_ \| |_
|
||
; | | __/\__ \ |_ | |__| (_) | | | | _|
|
||
; |_|\___||___/\__| \____\___/|_| |_|_|
|
||
; <09>஢¥à塞 à §¬¥à ¨ § £®«®¢®ª ä ©« ¯à®è¨¢ª¨
|
||
; (???¤®¡ ¢¨âì ª«îç ¤«ï ®â¬¥ë???)
|
||
|
||
;-----------------;
|
||
TestConf:
|
||
LD A,(ConfHandler)
|
||
AND A ; ¯à®¢¥àª ®âáãâá⢨¥ 奤«¥à
|
||
SCF
|
||
RET Z ; ¢ë室 á ®è¨¡ª®© ¥á«¨ ä ©« ¥ ®âªàëâ
|
||
|
||
EX AF,AF' ; á®åà 塞 奤«¥à, íª®®¬¨¬ â ªâë)))
|
||
LD A,(x_key) ; ¥á«¨ ¯à®¢¥àª (ª«îç X) 奤¥à ¨ à §¬¥à
|
||
AND A ; ä ©« ®âª«îç¥ , â® ¯à®¯ã᪠¥¬ .TestConfHeader
|
||
JR NZ,1F
|
||
|
||
EX AF,AF' ; ¢®ááâ ®¢¨«¨ 奤«¥à, áíª®®¬¨«¨ â ªâë)))
|
||
CALL .TestConfHeader
|
||
RET C
|
||
1:
|
||
CALL .TestConfSize
|
||
RET
|
||
;-----------------;
|
||
|
||
.TestConfHeader:
|
||
LD HL,Buffer
|
||
LD DE,8
|
||
LD C,13h ; ç¨â ¥¬ ¢ ¡ãä¥à ¯¥à¢ë¥ 8 ¡ ©â
|
||
RST ToDSS ; ¤«ï áà ¢¥¨ï á è ¡«®®¬
|
||
RET C
|
||
|
||
; ; ª®¢ëà塞 ¡ãä¥à ¯®á¨¬¢®«ì®
|
||
LD DE,IsNormConf ; è ¡«® ¤«ï áà ¢¥¨ï
|
||
LD HL,Buffer
|
||
LD BC,IsNormConfLen-IsNormConf
|
||
2: LD A,(DE)
|
||
CPI
|
||
INC DE
|
||
JP PO,3F ; ¥á«¨ ¯®á«¥¤¨© ᨬ¢®« ¯à®¢¥à¥, â® JP ¯à®¢¥àªã
|
||
JP Z,2B ; ¥á«¨ ᨬ¢®« ᮢ¯ ¤ ¥â, â® ¯®¢â®à
|
||
3: ; áî¤ ¯®¯ ¤ñ¬ ª®£¤ BC=0 ¨«¨ ᨬ¢®« ¥ ᮢ¯ «.
|
||
RET Z ; ¥á«¨ BC=0 ¨ ¯®á«¥¤¨© ᨬ¢®« ᮢ¯ « (Z=1)
|
||
SCF ; ¥á«¨ BC=0 ¨ ᨬ¢®« ¥ ᮢ¯ « - ®è¨¡ª
|
||
RET
|
||
|
||
;-----------------;
|
||
|
||
.TestConfSize:
|
||
LD B,2 ; ‘â ¢¨¬ 㪠§ â¥«ì ª®¥æ ä ©«
|
||
CALL .set_fp ; ç⮡ ã§ âì ¥£® à §¬¥à
|
||
RET C
|
||
LD A,H ; <20> §¬¥à ä ©« ¢ HL:IX. <20>¥â á¬ëá« , ¥á«¨ ® ¡®«ìè¥
|
||
OR L ; 61152 ¡ ©â , ¯®í⮬㠯஢¥à塞, çâ® ¢ HL ®«ì.
|
||
SCF
|
||
RET NZ
|
||
|
||
LD A,(x_key) ; ‘à ¢¨¢ ¥¬ à §¬¥à ä ©« á íâ ««®ë¬ ¤«ï 1K30 (59215 ¨«¨ #E74F)
|
||
AND A ; «¨¡® (¯à¨ ãáâ ®¢«¥®¬ ª«îç¥ X) á ¬ ªá¨¬ «ì® ¢®§¬®¦ë¬
|
||
JR NZ,2F ; ¤«ï ⥪ã饣® § £àã§ç¨ª ¢ BIOS (61152 ¨«¨ #EEE0)
|
||
;
|
||
; ’ã⠯஢¥àª â®ç®¥ ᮮ⢥âá⢨¥ ¤«ï 1K30
|
||
LD HL,(ConfSize)
|
||
LD A,H
|
||
SUB XH
|
||
JR NZ,1F
|
||
LD A,L
|
||
SUB XL
|
||
1: SCF
|
||
RET NZ
|
||
JP 3F
|
||
;
|
||
; ’ã⠯஢¥àª ¥¯à¨¢ë襨¥ 61152 ¡ ©â
|
||
2:
|
||
LD HL,(MaxConfSize)
|
||
PUSH IX
|
||
POP BC
|
||
SBC HL,BC
|
||
RET C
|
||
|
||
3:
|
||
LD B,0 ; ‚®§¢à é ¥¬ 㪠§ ⥫ì
|
||
CALL .set_fp ; ¢ ä ©«¥ ¥£® ç «®
|
||
RET
|
||
;-----------------;
|
||
|
||
.set_fp: ; ‚室®¥ § 票¥ ¢ ॣ¨áâॠB
|
||
LD A,(ConfHandler) ; •í¤«¥à ä ©« á ª®â®àë¬ á¥©ç á à ¡®â ¥¬
|
||
LD HL,0
|
||
LD IX,0
|
||
LD C,15h
|
||
RST ToDSS ; ãáâ ®¢ª 㪠§ â¥«ï ¢ ä ©«¥
|
||
RET
|
||
;*******************************************************
|
||
|
||
; _____ _ __ __
|
||
; |_ _|_ _| | _____ | \/ | ___ _ __ ___
|
||
; | |/ _` | |/ / _ \ | |\/| |/ _ \ '_ ` _ \
|
||
; | | (_| | < __/ | | | | __/ | | | | |
|
||
; |_|\__,_|_|\_\___| |_| |_|\___|_| |_| |_|
|
||
; ‚뤥«ï¥¬ ¯ ¬ïâì ¯®¤ § £à㧪㠯à®è¨¢ª¨ - 64 ª¡
|
||
|
||
;-----------------;
|
||
TakeMem:
|
||
LD BC,#04C2 ; ‡ ¯à®á ¢ë¤¥«¥¨¥ 64 Š¡ ¯ ¬ï⨠¯®¤ ª®äã
|
||
RST ToBIOS
|
||
RET C ; § ¢¥à襨¥ - ¥å¢ ⪠¯ ¬ïâ¨
|
||
LD (ram_blk_id),A
|
||
LD C,#C5 ; § ¯à®á ®¬¥à®¢ ¢ë¤¥«¥ëå áâà ¨æ
|
||
LD HL,ram_pages ; ¡ãä¥à ¤«ï ¯¥à¥ç¨á«¥¨ï áâà ¨æ
|
||
RST ToBIOS
|
||
RET C ; § ¢¥à襨¥ - ®è¨¡ª ¢ ID ¡«®ª
|
||
LD A,B
|
||
CP 4
|
||
SCF
|
||
RET NZ ; § ¢¥à襨¥ - ¥ª®à४⮥ ª®«-¢® ¡«®ª®¢
|
||
CCF
|
||
RET
|
||
;*******************************************************
|
||
|
||
; _ _ ____ __
|
||
; | | ___ __ _ __| | / ___|___ _ __ / _|
|
||
; | | / _ \ / _` |/ _` | | | / _ \| '_ \| |_
|
||
; | |__| (_) | (_| | (_| | | |__| (_) | | | | _|
|
||
; |_____\___/ \__,_|\__,_| \____\___/|_| |_|_|
|
||
; ‡ £à㦠¥¬ ¯à®è¨¢ªã ¢ ¯ ¬ïâì
|
||
;<3B>à®æ¥¤ãà éñ«ª ¥â PAGE3 ¡¥§ á®åà ¥¨ï/¢®ááâ ®¢«¥¨ï
|
||
; ¯à¥¤ë¤ã饣® á®áâ®ï¨ï.
|
||
|
||
;-----------------;
|
||
Load_conf: LD HL,ram_pages
|
||
LD B,4
|
||
.loop: LD A,(HL)
|
||
OUT (SLOT3),A
|
||
PUSH HL
|
||
PUSH BC
|
||
; CALL .loopRead
|
||
; ; <20> à ¬¥âàë: DE - ᪮«ìª® áç¨â âì ¢ áâà ¨æã
|
||
LD A,(ConfHandler) ; ªã¤ £à㧨âì - à ááç¨âë¢ ¥âáï (#0000 - DE)
|
||
LD HL,#C000
|
||
LD DE,#4000
|
||
LD C,Dss.Read
|
||
RST ToDSS
|
||
|
||
POP BC
|
||
POP HL
|
||
RET C
|
||
AND A ; ¤®á⨣ãâ ª®¥æ ä ©« ?
|
||
RET NZ ; ¥á«¨ A<>0, â® ¤ . ‚ë室
|
||
|
||
INC HL
|
||
DJNZ .loop
|
||
RET
|
||
;*******************************************************
|
||
|
||
; ____ _ _
|
||
; / ___| ___| |_ / \ ___ _____ __
|
||
; \___ \ / _ \ __| / _ \ / __/ _ \ \/ /
|
||
; ___) | __/ |_ / ___ \ (_| __/> <
|
||
; |____/ \___|\__| /_/ \_\___\___/_/\_\
|
||
; <09>¥à¥ª¨¤ë¢ ¥¬ ¯à®è¨¢ªã ¢ ªíè ¨ ®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì,
|
||
; ¥á«¨ ¥â ¢â®à®© ¯à®è¨¢ª¨
|
||
; (???®á¢®¡®¦¤¥¨¥ ¯ ¬ï⨠¥¤®¤¥« ®???)
|
||
|
||
;-----------------;
|
||
; Set_Acex_Data:
|
||
; DI
|
||
; IN A,(FastRAM.ON) ; ‚ª«î票¥ ªíè
|
||
|
||
; LD A,(ram_pages)
|
||
; OUT (SLOT1),A ; áâà ¨æ á ¤ 묨 ä ©«
|
||
|
||
; XOR A
|
||
; OUT (FastRAM.SLOT0),A ; ‘âà ¨æ Š<>˜ = 0
|
||
|
||
; LD HL,#5000 ; ¯¥à¥ª¨¤ë¢ ¨¥ ¤ ëå ¢ áâà ¨æã Š<>˜ = 0
|
||
; LD DE,#1000
|
||
; LD BC,#3000
|
||
; LDIR
|
||
|
||
; INC A
|
||
; OUT (FastRAM.SLOT0),A ; ‘âà ¨æ Š<>˜ = 1
|
||
; LD A,(ram_pages+1)
|
||
; OUT (SLOT1),A ; á«¥¤ãîé ï áâà ¨æ á ¤ 묨 ä ©«
|
||
|
||
; LD H,D ; LD HL,4000h
|
||
; LD D,E ; LD DE,0000h
|
||
; LD B,H ; LD BC,4000h
|
||
; LDIR
|
||
|
||
; LD A,2
|
||
; OUT (FastRAM.SLOT0),A ; ‘âà ¨æ Š<>˜ = 2
|
||
; LD A,(ram_pages+2)
|
||
; OUT (SLOT1),A ; á«¥¤ãîé ï áâà ¨æ á ¤ 묨 ä ©«
|
||
|
||
; EX DE,HL ; LD HL,4000h
|
||
; LD D,E ; LD DE,0000h
|
||
; LD B,H ; LD BC,4000h
|
||
; LDIR
|
||
|
||
; LD A,3
|
||
; OUT (FastRAM.SLOT0),A ; ‘âà ¨æ Š<>˜ = 3
|
||
; LD A,(ram_pages+3)
|
||
; OUT (SLOT1),A ; á«¥¤ãîé ï áâà ¨æ á ¤ 묨 ä ©«
|
||
|
||
; LD H,D ; LD HL,4000h
|
||
; LD D,E ; LD DE,0000h
|
||
; LD BC,#3EDF
|
||
; LDIR
|
||
|
||
; LD HL,Reload_String ; ä« £ ¯¥à¥§ £à㧪¨ ¨§ Š<>˜-
|
||
; LD DE,#3EF0
|
||
; LD C,#10 ; LD BC, 16
|
||
; LDIR
|
||
|
||
; LD HL,(ConfMultKeys) ; …᫨ âãâ ãáâ ¢«¨¢ ¥¬ ¥ 'IM' ª«îç¨
|
||
; LD A,(l_key) ; â® "no multiple! ¯¥à¥§ £à㧪 ⮫쪮 ®¤ ",
|
||
; AND A ; ¨ ç¥ - å§, ¥éñ ¥ ¯à®¡®¢ «.
|
||
; JR Z,1F
|
||
; LD HL,(ConfMultKeys+2)
|
||
|
||
; 1: LD (#3EE0),HL
|
||
|
||
; LD A,(page1_save) ; ¢®§¢à â áâà ¨æë 1
|
||
; OUT (SLOT1),A
|
||
|
||
; XOR A ; Žâª«î票¥ ªíè
|
||
; OUT (FastRAM.SLOT0),A ; ¯¨è¥¬ ¢ FastRAM.SLOT0 ®«ì, ¨ ç¥ ¢
|
||
; IN A,(FastRAM.OFF) ; ã«¥¢®¥ ®ª® ¡¨®á ¨«¨ „‘‘ ¥ ¢®âªãâáï
|
||
|
||
; RET
|
||
;*******************************************************
|
||
|
||
|
||
; ____ _ ____ _____ _____
|
||
; / ___| ___| |_ | _ \| ____|_ _|
|
||
; \___ \ / _ \ __| | |_) | _| | |
|
||
; ___) | __/ |_ | _ <| |___ | |
|
||
; |____/ \___|\__| |_| \_\_____| |_|
|
||
; <09> áâனª¨ ¯¥à¥¤ à¥á¥â®¬
|
||
; “áâ ®¢ª ¤à¥á ¢®§¢à â ¯®á«¥ reboot
|
||
; ‘®åà ¥¨¥ ªâ¨¢ëå áâà ¨æ
|
||
; €¤à¥á ¯à®£à ¬¬ë ¤«ï ¢®§¢à â ¢ ॣ¨áâॠDE
|
||
|
||
;-----------------;
|
||
; Set_Ret:
|
||
; DI
|
||
; LD A,Spec_Page
|
||
; OUT (SLOT3),A ; ®âªàëâì ᯥæ-áâà ¨æã
|
||
|
||
; LD (#FFF3),A ; á®åà 塞 ¢ ᯥæáâà ¨æã ®¬¥à Spec_Page
|
||
; LD (#FFF4),DE ; ¤à¥á ¯à®£à ¬¬ë ¯¥à¥§ ¯ãáª
|
||
|
||
; LD DE,#FFF0 ; á®åà 塞 áâà ¨æë 0-2 ¢ ᯥæáâà ¨æ¥
|
||
; LD HL,page0_save
|
||
; LDI
|
||
; LDI
|
||
; LDI
|
||
|
||
; LD A,'Z' ; ä« £¨ ¯¥à¥§ ¯ãáª
|
||
; LD (#FFFE),A
|
||
; LD A,'X'
|
||
; LD (#FFFF),A
|
||
|
||
; LD A,(page3_save) ; ‚®ááâ ¢«¨¢ ¥¬ ç «ìãî áâà ¨æã 3
|
||
; OUT (SLOT3),A
|
||
; EI
|
||
; RET
|
||
;*******************************************************
|
||
|
||
|
||
;(.)(.) (.)(.) (.)(.) (.)(.) (.)(.) (.)(.) (.)(.)
|
||
; <09>®¤£à㧪 ä ©« á ¯¥à¥¬¥ë¬¨, ª®áâ â ¬¨ ¨ ¡ãä¥à ¬¨:
|
||
INCLUDE "Consts.inc"
|
||
;
|
||
the_end EQU $
|
||
;
|
||
IF (the_end>(stack_point-SP_Win))
|
||
DISPLAY "the_end = ",/H,the_end
|
||
DISPLAY "ST_Point-SP_Win = ",/H,(stack_point-SP_Win)
|
||
ASSERT 0, "Code + Stack = Love!!! ((((("
|
||
ENDIF
|
||
|
||
IF (LastHandler=FirstHandler) or ((LastHandler-FirstHandler)>255)
|
||
DISPLAY "FirstHandler = ",/H,FirstHandler
|
||
DISPLAY "LastHandler = ",/H,LastHandler
|
||
ASSERT 0, "Š®áïª ¢ ¡«®ª¥ åà ¥¨ï 奤«¥à®¢!!!"
|
||
ENDIF
|
||
;(.)(.) (.)(.) (.)(.) (.)(.) (.)(.) (.)(.) (.)(.)
|