start refactoring

This commit is contained in:
Anatoliy Belyanskiy 2023-11-04 02:59:48 +10:00
parent 17d1d63e79
commit 0e4179f5ba
7 changed files with 620 additions and 3032 deletions

View File

@ -1,93 +1,78 @@
;==================================================================================================================
;
IFDEF debug : if debug
trace_msg1: db 'Set_keys OK',13,10,0
trace_msg2: db 'TestConf OK',13,10,0
trace_msg3: db 'take_mem OK',13,10,0
trace_msg4: db 'read_conf OK',13,10,0
trace_msg5: db 'Set_Ret OK',13,10,0
trace_msg6: db 'Set_Acex_Data OK',13,10,0 ; —㤮 - 㢨¤¥âì íâ® á®®¡é¥­¨¥ ­  ¦¥«¥§¥
endif : ENDIF
;
;
;
; ; ’ãâ ᨤïâ ¯¥à¥¬¥­­ë¥, ª®­áâ ­âë ¨ ¡ãä¥àë
;
Spec_Page equ 41h
;
Help_Msg:
DB 13,10
DB 'LDConf ver. ',Ver_ID,' ',__DATE__,13,10
DB '<27>ணࠬ¬  ¤«ï § £à㧪¨ ¨ â¥áâ¨à®¢ ­¨ï ª®­ä¨£ãà æ¨© Sprinter 2000',13,10,13,10
DB '<27> à ¬¥âàë ç¥à¥§ ¯à®¡¥«:',13,10
DB 'a - ®áâ ¢¨âì § £à㦠¥¬ãî ª®­äã ¯®á«¥ ¢ë室 ',13,10
DB 'c - ¯®á«¥ í⮣® ª«îç  ¤®«¦¥­ ¨¤â¨ ä ©« ª®­äë',13,10
DB 'e - EXE ä ©« ¤«ï § ¯ã᪠ ¯®á«¥ à¥á¥â  ¢ ª®­äã',13,10
DB 'x - ­¥ ¯à®¢¥àïâì ä ©« ª®­äë ­  ¢ «¨¤­®áâì § £®«®¢ª  ¨ à §¬¥à',13,10
DB 'l - áâà è­ë© ª«îç, § «¨â ï ª®­ä  ®áâ ­¥âáï ¤® ¯¥à¥§ «¨¢ª¨ ¨«¨ ¢ëª«î祭¨ï <20>Š',13,10,13,10
DB '…᫨ 㪠§ ­® ⮫쪮 ¨¬ï ª®­äë, â®: § £à㧪  ª®­äë -> à¥á¥â ->',13,10
DB '¢®ááâ ­®¢«¥­¨¥ ¤¥ä®«â­®© ª®­äë -> à¥á¥â -> ¢ë室. <20>®ª  â ª.',13,10,13,10
DB '<27>ணࠬ¬  ¡ë«  § ç¥¬-â® ­ ¯¨á ­  €­ â®«¨¥¬ <20>¥«ï­áª¨¬. ',13,10
DB '<27>¥ ¯¨è¨â¥ ¬­¥ á: ',e_mail,' ))))',13,10,13,10
DB 0
; ’ãâ ᨤïâ ¯¥à¥¬¥­­ë¥, ª®­áâ ­âë ¨ ¡ãä¥àë
Help_Msg: DB 13,10
DB 'LDConf ver. ',Ver_ID,' ',__DATE__,13,10
DB '<27>ணࠬ¬  ¤«ï § £à㧪¨ ¨ â¥áâ¨à®¢ ­¨ï ª®­ä¨£ãà æ¨© Sprinter 2000',13,10,13,10
DB '<27> à ¬¥âàë ç¥à¥§ ¯à®¡¥«:',13,10
DB 'a - ®áâ ¢¨âì § £à㦠¥¬ãî ª®­äã ¯®á«¥ ¢ë室 ',13,10
DB 'c - ¯®á«¥ í⮣® ª«îç  ¤®«¦¥­ ¨¤â¨ ä ©« ª®­äë',13,10
DB 'e - EXE ä ©« ¤«ï § ¯ã᪠ ¯®á«¥ à¥á¥â  ¢ ª®­äã',13,10
DB 'x - ­¥ ¯à®¢¥àïâì ä ©« ª®­äë ­  ¢ «¨¤­®áâì § £®«®¢ª  ¨ à §¬¥à',13,10
DB 'l - áâà è­ë© ª«îç, § «¨â ï ª®­ä  ®áâ ­¥âáï ¤® ¯¥à¥§ «¨¢ª¨ ¨«¨ ¢ëª«î祭¨ï <20>Š',13,10,13,10
DB '…᫨ 㪠§ ­® ⮫쪮 ¨¬ï ª®­äë, â®: § £à㧪  ª®­äë -> à¥á¥â ->',13,10
DB '¢®ááâ ­®¢«¥­¨¥ ¤¥ä®«â­®© ª®­äë -> à¥á¥â -> ¢ë室. <20>®ª  â ª.',13,10,13,10
DB '<27>ணࠬ¬  ¡ë«  § ç¥¬-â® ­ ¯¨á ­  €­ â®«¨¥¬ <20>¥«ï­áª¨¬. ',13,10
DB '<27>¥ ¯¨è¨â¥ ¬­¥ á: ',e_mail,' ))))',13,10,13,10
DB 0
; ; ‘®®¡é¥­¨ï ®¡ ®è¨¡ª å
error_Vmode: DB 'Žè¨¡ª  ®¯à¥¤¥«¥­¨ï ०¨¬  íªà ­ !',13,10,0
error_ComStr: DB 'Žè¨¡ª  ¢ ¯ à ¬¥âà å ª®¬¬ ­¤­®© áâப¨!',13,10,0
error_confFile: DB 'Žè¨¡ª  ä ©«  ¯à®è¨¢ª¨!',13,10,0
error_freeMem: DB 'Žè¨¡ª  ¢ë¤¥«¥­¨ï ¯ ¬ïâ¨!',13,10,0
error_readConf: DB 'Žè¨¡ª  ç⥭¨ï ä ©«  ¯à®è¨¢ª¨!',13,10,0
WellDone: DB 'Well done!)))',13,10,0
WellDone: DB 'Well done!)))',13,10,0
;
;-----------------; <EFBFBD>⨠㪠§ â¥«¨ ¤®«¦­ë ¨¤â¨ ¤à㣠§  ¤à㣮¬
ConfSize: DB #4F,#E7 ; #E74F - ¯à ¢¨«ì­ë© à §¬¥à ¯à®è¨¢ª¨ 59215 (®¡à â­ë© ¯®à冷ª!) 12288+16384+16384+14159
MaxConfSize: DB #E0,#EE ; #EEE0 - ¬ ªá¨¬ «ì­ë© à §¬¥à ¯à®è¨¢ª¨ 61152 (®¡à â­ë© ¯®à冷ª!) ¤«ï § £àã§ç¨ª  ª®­äë ¢ ¡¨®á.
ConfSize: DB #4F,#E7 ; #E74F - ¯à ¢¨«ì­ë© à §¬¥à ¯à®è¨¢ª¨ 59215 (®¡à â­ë© ¯®à冷ª!) 12288+16384+16384+14159
MaxConfSize: DB #E0,#EE ; #EEE0 - ¬ ªá¨¬ «ì­ë© à §¬¥à ¯à®è¨¢ª¨ 61152 (®¡à â­ë© ¯®à冷ª!) ¤«ï § £àã§ç¨ª  ª®­äë ¢ ¡¨®á.
IsEXE: DB 'EXE',0 ; <EFBFBD> áè¨à¥­¨¥ § ¯ã᪠¥¬®£® ä ©«  ¯® ª«îçã 'E'
IsEXElength EQU $
IsEXE: DB 'EXE',0 ; <EFBFBD> áè¨à¥­¨¥ § ¯ã᪠¥¬®£® ä ©«  ¯® ª«îçã 'E'
IsEXElength EQU $
IsNormConf: DB #FF,#FF,#62,#7B,#39,#00,#FF,#FF ; 8 ¡ ©â § £®«®¢ª  ª®­äë
IsNormConf: DB #FF,#FF,#62,#7B,#39,#00,#FF,#FF ; 8 ¡ ©â § £®«®¢ª  ª®­äë
IsNormConfLen EQU $
; ; ’ãâ ª«îç¨ § ¯ã᪠
key_buff EQU $
c_key: DB 0 ; ConfHandler1
e_key: DB 0 ; ExeHandler
x_key: DB 0 ; ª«îç ®â¬¥­ë â¥áâ  § £®«®¢ª  ¯à®è¨¢ª¨ ¨ ¯à¨¢ï§ª¨ ª à §¬¥àã 1K30
a_key: DB 0 ; ª«îç ®â¬¥­ë § £à㧪¨ ¤¥ä®«â­®© ª®­äë ¯®á«¥ ¢ë室 
l_key: db 0 ; ª«îç ¤«ï à §­ëå â¥á⮢
; ’ãâ ª«îç¨ § ¯ã᪠
key_buff EQU $
c_key: DB 0 ; ConfHandler1
e_key: DB 0 ; ExeHandler
x_key: DB 0 ; ª«îç ®â¬¥­ë â¥áâ  § £®«®¢ª  ¯à®è¨¢ª¨ ¨ ¯à¨¢ï§ª¨ ª à §¬¥àã 1K30
a_key: DB 0 ; ª«îç ®â¬¥­ë § £à㧪¨ ¤¥ä®«â­®© ª®­äë ¯®á«¥ ¢ë室 
l_key: db 0 ; ª«îç ¤«ï à §­ëå â¥á⮢
key_buff_end EQU $-1
; ; âãâ 奭¤«¥àë ®âªàëâëå ä ©«®¢
FirstHandler EQU $ ; ??? ã¡à âì «¨è­¥¥ ???
ConfHandler: DB 0 ; â¥áâ¨à㥬 ï ª®­ä  (c_key)
ExeHandler: DB 0 ; § ¯ã᪠¥¬ë© EXE (e_key)
LastHandler EQU $ ; ??? ã¡à âì «¨è­¥¥ ???
;NowHandler: DB 0 ; 奭¤«¥à ⥪ã饣® ä ©« 
ConfMultKeys: DB #FF,#FF,'I','M' ; …᫨ ¢®âª­ãâì á áâபã 'IM', â® çâ®-â® ¡ã¤¥â
; âãâ 奭¤«¥àë ®âªàëâëå ä ©«®¢
FirstHandler EQU $ ; ??? ã¡à âì «¨è­¥¥ ???
ConfHandler: DB 0 ; â¥áâ¨à㥬 ï ª®­ä  (c_key)
ExeHandler: DB 0 ; § ¯ã᪠¥¬ë© EXE (e_key)
LastHandler EQU $ ; ??? ã¡à âì «¨è­¥¥ ???
;NowHandler: DB 0 ; 奭¤«¥à ⥪ã饣® ä ©« 
ConfMultKeys: DB #FF,#FF,'I','M' ; …᫨ ¢®âª­ãâì á áâபã 'IM', â® çâ®-â® ¡ã¤¥â
;-----------------;
Reload_String: DB 'ACEX_30K_LOADING' ; ä« £ § «¨¢ª¨ ª®­äë ¨§ ª¥è 
VMod: db 0 ; <EFBFBD>¥¦¨¬ íªà ­ 
VModPage: db 0 ; ‘âà ­¨æ  íªà ­ 
ram_blk_id: DB 0 ; ˆ¤¥­â¨ä¨ª â®à ¡«®ª  ¯ ¬ïâ¨
SP_Save: DB 0,0 ; ’ãâ åà ­¨¬ á⥪ ¤«ï ¯¥à¥§ £à㧪¨
dss_line: DB 0,0 ; 㪠§ â¥«ì ­  DOS áâப㠧 ¯ã᪠ LDConf
NextParameter: dw 0000 ; ‘«¥¤ãî騩 ¯ à ¬¥âà ¤«ï .GetParam
;
;
; ; <EFBFBD> §­ë¥ ¡ãää¥à  (.)(.)
BufferEXE: DB 0,0,0,0
ram_pages: DB 0,0,0,0,0 ; ‚뤥«¥­­ë¥ BIOS'®¬ ¡«®ª¨ ¯ ¬ï⨠(¯®á«¥¤­¨© #FF)
page0_save: DB 0 ; ’ãâ åà ­¨¬ ⥪ãéãî áâà ­¨æã PAGE0 (¤®«¦­  ¨¤â¨ ¯®á«¥ ram_pages)
page1_save: DB 0 ; ’ãâ åà ­¨¬ ⥪ãéãî áâà ­¨æã PAGE1
page2_save: DB 0 ; ’ãâ åà ­¨¬ ⥪ãéãî áâà ­¨æã PAGE2 (¤®«¦­  ¨¤â¨ ¯®á«¥ ram_pages)
page3_save: DB 0 ; ’ãâ åà ­¨¬ ⥪ãéãî áâà ­¨æã PAGE3
port_1ffd_save: DB 0 ; ‘®áâ®ï­¨¥ ¯®àâ  1FFD ¤® ¢áïª¨å ¬ ­¨¯ã«ï権
page0_def db 0
page1_def db 0
page2_def db 0
page3_def db 0
EXEfileBuff equ $ ; ’ãâ åà ­¨¬ ¯ãâì ¤® § ¯ã᪠¥¬®£® ¯®á«¥ à¥á¥â  EXE
Buffer EQU EXEfileBuff+256 ; BLOCK 255,0
Reload_String: DB 'ACEX_30K_LOADING' ; ä« £ § «¨¢ª¨ ª®­äë ¨§ ª¥è 
VMod: db 0 ; <EFBFBD>¥¦¨¬ íªà ­ 
VModPage: db 0 ; ‘âà ­¨æ  íªà ­ 
ram_blk_id: DB 0 ; ˆ¤¥­â¨ä¨ª â®à ¡«®ª  ¯ ¬ïâ¨
SP_Save: DB 0,0 ; ’ãâ åà ­¨¬ á⥪ ¤«ï ¯¥à¥§ £à㧪¨
dss_line: DB 0,0 ; 㪠§ â¥«ì ­  DOS áâப㠧 ¯ã᪠ LDConf
NextParameter: dw 0000 ; ‘«¥¤ãî騩 ¯ à ¬¥âà ¤«ï .GetParam
;
; <EFBFBD> §­ë¥ ¡ãää¥à  (.)(.)
BufferEXE: DB 0,0,0,0
ram_pages: DB 0,0,0,0,0 ; ‚뤥«¥­­ë¥ BIOS'®¬ ¡«®ª¨ ¯ ¬ï⨠(¯®á«¥¤­¨© #FF)
page0_save: DB 0 ; ’ãâ åà ­¨¬ ⥪ãéãî áâà ­¨æã PAGE0 (¤®«¦­  ¨¤â¨ ¯®á«¥ ram_pages)
page1_save: DB 0 ; ’ãâ åà ­¨¬ ⥪ãéãî áâà ­¨æã PAGE1
page2_save: DB 0 ; ’ãâ åà ­¨¬ ⥪ãéãî áâà ­¨æã PAGE2 (¤®«¦­  ¨¤â¨ ¯®á«¥ ram_pages)
page3_save: DB 0 ; ’ãâ åà ­¨¬ ⥪ãéãî áâà ­¨æã PAGE3
page0_def db 0
page1_def db 0
page2_def db 0
page3_def db 0
EXEfileBuff equ $ ; ’ãâ åà ­¨¬ ¯ãâì ¤® § ¯ã᪠¥¬®£® ¯®á«¥ à¥á¥â  EXE
Buffer EQU EXEfileBuff+256 ; BLOCK 255,0
;

View File

@ -1,11 +0,0 @@
MACRO Stack_Error true
ENCODING "WIN"
ASSERT true, "Êîä çàëåç íà îáëàñòü ñòåêà!!!"
ENCODING "DOS"
ENDM
MACRO Handler_Error true
ENCODING "WIN"
ASSERT true, "Êîñÿê â áëîêå õðàíåíèÿ õåíäëåðîâ!!!"
ENCODING "DOS"
ENDM

1207
LDCONF.ASM

File diff suppressed because it is too large Load Diff

View File

@ -1,856 +0,0 @@
; _ ____ ____ __
; | | | _ \ / ___|___ _ __ / _|
; | | | | | | | / _ \| '_ \| |_
; | |___| |_| | |__| (_) | | | | _|
; |_____|____/ \____\___/|_| |_|_|
; _____ ____ _ _ ____ _
; | ___|__ _ __ / ___| _ __ _ __(_)_ __ | |_ ___ _ __ / ___|___ _ __ ___ _ __ _ _| |_ ___ _ __
; | |_ / _ \| '__| \___ \| '_ \| '__| | '_ \| __/ _ \ '__| | | / _ \| '_ ` _ \| '_ \| | | | __/ _ \ '__|
; | _| (_) | | ___) | |_) | | | | | | | || __/ | | |__| (_) | | | | | | |_) | |_| | || __/ |
; |_| \___/|_| |____/| .__/|_| |_|_| |_|\__\___|_| \____\___/|_| |_| |_| .__/ \__,_|\__\___|_|
; |_| |_|
;*******************************************************
; ’¥á⮢ ï ᡮઠ ¨«¨ ­¥â?
define debug 0
define sprinter 1
;
; Œ ªà®áë
MACRO TraceMSG tr_mess
LD HL,tr_mess
CALL PrintStr
ENDM
MACRO iDontKnow
;-----------------; ’ ©­ë¥ ¬ ­¨¯ã«ï樨
DI
LD A,CNF_3
OUT (SYS_PORT_OFF),A
LD A,3 ; ãáâ ­®¢ª  ¢­ãâà.¯®à⮢ Z84C15 ¤«ï ¯¥à¥§ £à㧪¨
OUT (#EE),A
OUT (#EF),A ; CASH & ROM
;-----------------;
ENDM
;
; ‚¥àá¨ï ¯à®£¨ ¨ ¨­ä® ¤«ï ¯®­â®¢:
DEFINE Ver_ID "0.1 alpha"
DEFINE e_mail "Tolik.Trek@gmail.com"
; <20>®¤£à㧪  ä ©«  á ª®­áâ ­â ¬¨ BIOS ¨ DSS:
INCLUDE "EQU/SP2000.ASM"
; <20>®¤£à㧪  ä ©«  á ®è¨¡ª ¬¨)))
INCLUDE "EQU/Errors_MSG.a80"
;
ST_Point EQU #BFFE ;  ¤à¥á á⥪ 
SP_Win EQU 64 ; ¬­¨¬ë© ª®­âà®«ì ¯¥à¥á¥ç¥­¨ï á⥪  á ª®¤®¬
ORG_Addr EQU #8100 ;  ¤à¥á ª®¬¯¨«ï樨. DSS ¢áâ ¢«ï¥â áâபã
; á ¯ à ¬¥âà ¬¨ § ¯ã饭­®£® EXE ¯¥à¥¤
;  ¤à¥á®¬ § £à㧪¨ START, ¯®í⮬ã
; £à㧨¬áï ­¥ á ­ ç «  áâà ­¨æë.
; _______ _______ ____ __ _
; | ____\ \/ / ____| | _ \ _ __ ___ / _(_)_ __
; | _| \ /| _| | |_) | '__/ _ \ |_| \ \/ /
; | |___ / \| |___ | __/| | | __/ _| |> <
; |_____/_/\_\_____| |_| |_| \___|_| |_/_/\_\
;-----------------;
ORG ORG_Addr-#200
; ‘­ ç «  ¢ EXE ä ©«¥ ¨¤ñâ § £®«®¢®ª
; ¤«¨­­®© ¢ 1 ᥪâ®à (512 ¡ ©â)
;-----------------;
DB 'EX' ; EXE ‘¨£­ âãà 
DB 'E' ; Reserved (EXE type)
DB 0 ; Version of EXE file
DW #0200 ; ª ª®£® ᬥ饭¨ï ¢ ä ©«¥ ¡ã¤¥â £à㧨âìáï ª®¤ ¢
DW #0000 ; ¯ ¬ïâì ¯®  ¤à¥áã (START) Low - 0200h, High - 0000.
DW #0000 ; <20> §¬¥à ¯¥à¢¨ç­®£® § £àã§ç¨ª  ¨«¨ 0
DW #0000 ; Reserved
DW #0000 ; Reserved
DW #0000 ; Reserved
DW START ; €¤à¥á à á¯®«®¦¥­¨ï ª®¤  ¢ ¯ ¬ïâ¨
DW START ; €¤à¥á ¢ ¯ ¬ïâ¨ á ª®â®à®£® § ¯ãáâ¨âáï ª®¤ (Reg. PC)
DW ST_Point ; €¤à¥á á⥪  (Reg. SP)
BLOCK 490 ; Reserved. „®¡¨¢ª  ¤® ª®­æ  ᥪâ®à  (512 ¡ ©â). Œ®¦¥â ¨á¯®«ì§®¢ âìáï ¢ ­®¢ëå ¢¥àá¨ïå DSS
;*******************************************************
; __ __ _
; | \/ | __ _(_)_ __
; | |\/| |/ _` | | '_ \
; | | | | (_| | | | | |
; |_| |_|\__,_|_|_| |_|
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,(PAGE0)
LD (page0_save),A
IN A,(PAGE1)
LD (page1_save),A
IN A,(PAGE2)
LD (page2_save),A
IN A,(PAGE3)
LD (page3_save),A
;-----------------;
;-----------------; ‘®å࠭塞 ­ áâனª¨ íªà ­ 
ld c,51h
rst 10h
jp nc,1f
LD HL,error_Vmode
JP BadExit
1:
ld (VMod),a
ld a,b
ld (VModPage),a
;-----------------;
;-----------------;
LD (dss_line),IX ; ‘®å࠭塞 㪠§ â¥«ì ­  áâப㠧 ¯ã᪠. ????? <20>㦭  «¨ ®­  ¢ ¤ «ì­¥©è¥¬ ?????
LD A,(IX) ; âãâ DSS ª« ¤ñâ ¤«¨­ã ¯ à ¬¥â஢ ª®¬.áâப¨
AND A ; ¯à®¢¥à塞 ­  ®âáãâá⢨¥ ¯ à ¬¥â஢
JP NZ,1F ; § ¯ã᪠ ¢ ª®¬.áâப¥. …᫨ ¨å ­¥â,
LD HL,Help_Msg ; â® ¯¥ç â ¥¬ ¨­áâàãªæ¨î ¨ ¢ë室¨¬
CALL 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:
if debug : TraceMSG trace_msg1 : endif
;
ld a,(x_key)
and A ; ¥á«¨ ª«îç X ãáâ ­®¢«¥­, â® ¯à®¢¥àªã ¯à®¯ã᪠¥¬
jp nz,1F
CALL TestConf ; ¯à®¢¥àª  ª®­äë. ­  ¢ë室¥ CF=0 - ­¥â ®è¨¡ª
JR NC,1F ; F=1 - ¥áâì ®è¨¡ª 
LD HL,error_confFile ; …᫨ ª®áïª á ä ©«®¬ ¯à®è¨¢ª¨
JP BadExit ; â® ¢ë室 á ®è¨¡ª®©
;-----------------;
;-----------------; ¥á«¨ ­®à¬. § ¢¥à襭¨¥ TestConf
1:
if debug : TraceMSG trace_msg2 : endif
;
CALL TakeMem ; ‚뤥«¥­¨¥ ¯ ¬ï⨠¤«ï ª®­äë 65536 ¡ ©â
JR NC,1F
LD HL,error_freeMem ; …᫨ ­¥¤®áâ â®ç­® ¯ ¬ïâ¨
JP BadExit ; â® ¢ë室 á ®è¨¡ª®©
;-----------------;
;-----------------; ¥á«¨ ­®à¬. § ¢¥à襭¨¥ TakeMem
1:
if debug : TraceMSG trace_msg3 : endif
;
; LD A,(ConfHandler) ; ‚ëáâ ¢«ï¥¬ 奭¤«¥à ¯à®è¨¢ª¨
; LD (NowHandler),A ; á ª®â®à®© ¡ã¤¥¬ à ¡®â âì
;
;
CALL Load_conf ; —¨â ¥¬ ¯à®è¨¢ªã ¨§ ä ©«  (¬¥­ï¥â PAGE3)
LD A,(page3_save) ; ¢®ááâ ­ ¢«¨¢ ¥¬ áâà ­¨æã
OUT (PAGE3),A ; ¯ ¬ï⨠¯®á«¥ ᬥ­ë
JR NC,1F
LD HL,error_readConf ; …᫨ ®è¨¡ª  ¯à¨ ç⥭¨¨ ¯à®è¨¢ª¨ ¨§ ä ©« 
JP BadExit ; â® ¢ë室 á 祬? <20>à ¢¨«ì­®, á ®è¨¡ª®©
;-----------------;
;-----------------; ¥á«¨ ­®à¬. § ¢¥à襭¨¥ Load_conf
1:
if debug : TraceMSG trace_msg4 : endif
;
if sprinter : iDontKnow : endif
;
LD DE,ReloadRET ; €¤à¥á އ<E280A1>€ ¯®á«¥ ¯¥à¥§ £à㧪¨
LD (SP_Save),SP ; á®å࠭塞 á⥪
CALL Set_Ret ; ãáâ ­®¢ª  ¤ ­­ëå ¤«ï ¢®§¢à â 
;
if debug : TraceMSG trace_msg5 : endif
;
CALL Set_Acex_Data ; ¯¥à¥£à㧪  ¤ ­­ëå ACEX ¢ FAST-RAM
; <20>®á«¥ í⮩ ¯à®æ¥¤ãàë å¨âன ^^^^^^ ­ ç¨­ îâáï £«îª¨
; á ¢ë§®¢®¬ ¯à®æ¥¤ãà DSS. —ñâ ®­  â ¬ ¬ã¤à¨â á ¯®àâ ¬¨
; ¨«¨ á ¯ ¬ïâìî, ­¥ à §®¡à «áï. <20>®í⮬㠯®á«¥ ­¥ñ «ãçè¥
; áà §ã ¢ à¥á¥â á £®«®¢®© ¨ ­¥ ¯ à¨âìáï...
;-----------------;
;-----------------; 7 ¡¥¤ - 1 à¥á¥â
RESET:
DI
IN A,(PAGE1) ; ®âªàë⨥ ¯®àâ  á¡à®á 
PUSH AF
LD A,40h
OUT (PAGE1),A ; set DCP page
LD A,2Eh
LD (04400h),A ; open for WR
LD (04600h),A ; open for RD
POP AF
OUT (PAGE1),A ; Close PAGE1 ???????
RESET_LOOP: ; 横« á¡à®á 
LD BC,100h
OUT (C),C
LD BC,000h
OUT (C),C
JR RESET_LOOP ; ¯®«­®áâìî § æ¨ª«¨âì!
HALT ; ¯ë«¥ã«®¢¨â¥«ì
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
; ____ _ _ ____ _
; | _ \ _ __(_)_ __ | |_ / ___|| |_ _ __
; | |_) | '__| | '_ \| __| \___ \| __| '__|
; | __/| | | | | | | |_ ___) | |_| |
; |_| |_| |_|_| |_|\__| |____/ \__|_|
; <09>¥ç âì áâப¨. €¤à¥á áâப¨ ¢ HL
;-----------------;
PrintStr:
LD C,5Ch
RST 10h
RET
;*******************************************************
; ____ _ _ ____ _____ _____
; | _ \ ___| | ___ __ _ __| | | _ \| ____|_ _|
; | |_) / _ \ |/ _ \ / _` |/ _` | | |_) | _| | |
; | _ < __/ | (_) | (_| | (_| | | _ <| |___ | |
; |_| \_\___|_|\___/ \__,_|\__,_| |_| \_\_____| |_|
; Œ¥áâ®, ªã¤  ¡ã¤¥â ¢®§¢à â ¯®á«¥
; ¯¥à¥§ £à㧪¨ ­®¢®© ¯à®è¨¢ª¨
;-----------------;
ReloadRET:
DI
LD SP,(SP_Save)
LD A,CNF_0 ; ª®­ä¨£ãà æ¨ï ¨ ®âª«î祭¨¥ <20>‡“
OUT (SYS_PORT_OFF),A
LD A,(page0_save) ; SET PAGE DOS
OUT (PAGE0),A
LD A,(page3_save) ; ¢®§¢à â áâ à®© áâà ­¨æë PAGE3
OUT (PAGE3),A
;-----------------;
;-----------------; <20> ¡®â  ¯à®£à ¬¬ë á ­®¢®© ¯à®è¨¢ª®©
ld a,(e_key)
and a
jp z,1F
ld hl,EXEfileBuff ; ‡ ¯ã᪠EXE
ld bc,0040h
rst 10h
;-----------------;
;-----------------;
1:
ld a,(a_key) ; ‚ë室 ¡¥§ ¢®ááâ ­®¢«¥­¨ï ¤¥ä®«â­®© ª®­äë?
and a
jp nz, NormExit
LD DE,NextReloadRET ;
LD (SP_Save),SP ; á®å࠭塞 á⥪
CALL Set_Ret ; ãáâ ­®¢ª  ¤ ­­ëå ¤«ï ¢®§¢à â 
JP RESET
;*******************************************************
; _ _ _
; | \ | | _____ _| |_
; | \| |/ _ \ \/ / __|
; | |\ | __/> <| |_
; |_| \_|\___/_/\_\\__|
; ____ _ _ ____ _____ _____
; | _ \ ___| | ___ __ _ __| | | _ \| ____|_ _|
; | |_) / _ \ |/ _ \ / _` |/ _` | | |_) | _| | |
; | _ < __/ | (_) | (_| | (_| | | _ <| |___ | |
; |_| \_\___|_|\___/ \__,_|\__,_| |_| \_\_____| |_|
; <09>®¤£®â®¢ª  ª § ¢¥à襭¨î ¯®á«¥ à¥á¥â  ¨
; ¢®§¢à â  த­®© ¯à®è¨¢ª¨
;-----------------;
NextReloadRET:
DI
LD SP,(SP_Save)
LD A,CNF_0 ; ª®­ä¨£ãà æ¨ï ¨ ®âª«î祭¨¥ <20>‡“
OUT (SYS_PORT_OFF),A
LD A,(page0_save) ; SET PAGE DOS
OUT (PAGE0),A
LD A,(page1_save)
OUT (PAGE1),A
; ƒ«ï­ãâì, ¬®¦¥â ­¥ ­ ¤® ¢®§¢à é âì ®¤­ã ¨§ áâà ­¨æ???
LD A,(page3_save)
OUT (PAGE3),A
JP NormExit
;*******************************************************
; _____ _ _ ____ _
; | ____|_ _(_) |_ | _ \ _ __ ___ ___( )___
; | _| \ \/ / | __| | |_) | '__/ _ \ / __|// __|
; | |___ > <| | |_ | __/| | | (_) | (__ \__ \
; |_____/_/\_\_|\__| |_| |_| \___/ \___| |___/
;-----------------;
NormExit:
LD HL,WellDone
CALL PrintStr
LD B,0
CALL Exit
;-----------------;
BadExit: ; HL áâப  á ®è¨¡ª®©
CALL PrintStr
LD B,1 ; ª®¤ ®è¨¡ª¨
CALL Exit
;-----------------;
;-----------------;
Exit:
LD A,CNF_0 ;??????
OUT (SYS_PORT_OFF),A
;
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 10h
POP BC
POP HL
1: INC HL
DJNZ .loop
;-----------------;
;-----------------; ®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì, ¥á«¨ ª«ï­ç¨«¨
ld c,#C3
ld a,(ram_blk_id)
cp 0
jr z,1F
rst 8
;-----------------;
;-----------------; ¢®ááâ ­ ¢«¨¢ ¥¬ íªà ­
ld c,53h
rst 10h
push de
ld a,(VModPage)
ld b,a
ld a,(VMod)
ld c,50h
rst 10h
ld c,52h
pop de
rst 10h
;-----------------;
;-----------------; ‚ë室 ¢ DOS
1:
POP BC
LD C,41h
RST 10h
DI
HALT
;-----------------;
;*******************************************************
; ____ _ _
; / ___| ___| |_ | | _____ _ _ ___
; \___ \ / _ \ __| | |/ / _ \ | | / __|
; ___) | __/ |_ | < __/ |_| \__ \
; |____/ \___|\__| |_|\_\___|\__, |___/
; |___/
; <09>®«ãç ¥¬ ª«îç¨ § ¯ã᪠, à á¯¨å¨¢ ¥¬ ¨å ¯® 㣫 ¬,
; ­ áâà ¨¢ ¥¬ ­ ç «ì­ë¥ ãá«®¢¨ï à ¡®âë.
;-----------------;
Set_keys:
LD HL,(dss_line)
INC 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
SCF ; ®è¨¡ª  ¢ ¯ à ¬¥âà¥
RET ; ¢ë室 á ®è¨¡ª®©
;-----------------;
;-----------------;
.set_keys_x:
INC C
.set_keys_e:
INC C
.set_keys_c:
INC C
.set_keys_a:
EX DE,HL ; <20><E28099>Ÿœ “Š€‡€’…‹œ <20>€ ‘‹…„“ž™ˆ‰ <20><EFBFBD>€Œ…<E280A6>!
LD HL,key_buff ; ‚ëç¨á«ï¥¬ ï祩ªã åà ­¥­¨ï ª«îç 
ADD HL,BC
LD A,(HL) ; ¨ ¯à®¢¥à塞 ­¥â «¨ â ¬ 㦥 ª«îç .
CP 0 ; ¥á«¨ ¥áâì, §­ ç¨â ª«îç ¢¢¥¤ñ­ 2 à § 
SCF
RET NZ ; ®è¨¡ª  - ¯®¢â®à ª«îç . ¢ë室
OR C ; ’ãâ Ž†ˆ„€…’‘Ÿ, çâ® €=0. …᫨ =0, â® íâ® ª«îç "A"
LD A,3
LD (HL),A ; ãáâ ­®¢¨«¨ ª«îç
EX DE,HL ; <20><E28099>Ÿœ “Š€‡€’…‹œ <20>€ ‘‹…„“ž™ˆ‰ <20><EFBFBD>€Œ…<E280A6>!
JR Z,.CheckChar ; ¥á«¨ ª«îç "A" â® á«¥¤ãî騩 ªà㣠横« 
xor C ; ’ãâ Ž†ˆ„€…’‘Ÿ, çâ® €=3. …᫨ =3, â® íâ® ª«îç "X"
JR Z,.CheckChar ; ¥á«¨ ª«îç "X" â® á«¥¤ãî騩 ªà㣠横« 
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: ; ¢ HL ¯à¨­¨¬ ¥âáï á«¥¤. ¯ à. áâப¨ DOS
LD C,43h ; âã⠢뤥«ï¥¬ ¯ à ¬¥âà § ¯ã᪠
LD DE,Buffer ; ¡ãä¥à ¤«ï ®¯¥à æ¨© á® áâப ¬¨
RST #10 ; ¯®«ãç ¥¬ ¢ ¡ãä¥à¥ á«¥¤ãî騩 ¯ à ¬¥âà
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 10h
RET C ; ®è¨¡ª  ¢ áâப¥
AND %00000011 ; ¯à®¢¥à塞, çâ® ¥áâì ¨¬ï ¨
XOR %00000011 ; à áè¨à¥­¨¥ ä ©«  (0 ¨ 1 ¡¨âë)
SCF
RET NZ ; ®è¨¡ª  ä ©«  - ¢ë室
LD A,0
LD C,11h
LD HL,Buffer
RST 10h ; ®âªàë⨥ ä ©« 
RET C ; ®è¨¡ª  ä ©«  - ¢ë室
LD (.fileHandler),A ; á®å࠭塞 奭¤«¥à
.fileHandler EQU $-2
;-----------------;
;-----------------; <20>஢¥à塞 ®¡à ¡ â뢠¥¬ë© ª«îç
key_save EQU $+1
LD A,#FF ; á ¢®âª­ñâáï §­ ç¥­¨¥ ¨§ ॣ¨áâà  C
XOR 2 ; ¥á«¨ 2, â® íâ® ª«îç "E"
ret NZ ; ¥á«¨ ­¥â, â® ¢ë室 ¨§ ¯à®æ¥¤ãàë.
;-----------------;
;-----------------; <20>஢¥àª  à áè¨à¥­¨ï ä ©« 
LD BC,#0445 ; ª«î箬 "E" ¯à®¢¥à塞 ä ©«
LD HL,Buffer ; ­  à áè¨à¥­¨¥ "EXE" ¢ë¤¥«¨¢
LD DE,BufferEXE ; ¨§ áâப¨ ¨¬¥­¨ à áè¨à¥­¨¥
RST 10h ; ä ©«  ¢ ®â¤¥«ì­ë© ¡ãä¥à ­  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 10h
RET
;*******************************************************
; _____ _ ____ __
; |_ _|__ ___| |_ / ___|___ _ __ / _|
; | |/ _ \/ __| __| | | / _ \| '_ \| |_
; | | __/\__ \ |_ | |__| (_) | | | | _|
; |_|\___||___/\__| \____\___/|_| |_|_|
; <09>஢¥à塞 à §¬¥à ¨ § £®«®¢®ª ä ©«  ¯à®è¨¢ª¨
; (???¤®¡ ¢¨âì ª«îç ¤«ï ®â¬¥­ë???)
;-----------------;
TestConf:
LD A,(ConfHandler) ; á®å࠭塞 奭¤«¥à ­  ⥪ã騩
LD (NowHandler),A ; ä ©« á ª®â®àë¬ à ¡®â ¥¬. ??? ã¡à âì «¨è­¥¥ ???
AND A ; ¯à®¢¥àª  ­  ®âáãâá⢨¥ 奭¤«¥à 
SCF
RET Z ; ¢ë室 á ®è¨¡ª®© ¥á«¨ ä ©« ­¥ ®âªàëâ
CALL .testing
/*
RET C
LD A,(ConfHandler2) ; ¢ë¡¨à ¥¬ ⥪ã騬 á«¥¤ãî騩 ä ©«
LD (NowHandler),A
AND A ; ¯à®¢¥àª  ­  ®âáãâá⢨¥ 奭¤«¥à 
RET Z ; ¢ë室 ¡¥§ ®è¨¡ª¨ - ¢â®à®© ¯à®è¨¢ª¨ ¬®¦¥â ­¥ ¡ëâì ¢ ¯ à ¬¥âà å
CALL .testing
*/
RET
;-----------------;
;-----------------;
.testing:
LD HL,Buffer
LD DE,8
LD C,13h ; ç¨â ¥¬ ¢ ¡ãä¥à ¯¥à¢ë¥ 8 ¡ ©â
RST 10h ; ¤«ï áà ¢­¥­¨ï á è ¡«®­®¬
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: SCF ; á ¯®¯ ¤ñ¬ ª®£¤  BC=0 ¨«¨ ᨬ¢®« ­¥ ᮢ¯ «
RET NZ ; ¥á«¨ ¢ë諨 ¨§ 横«  ¨ ᨬ¢®« ­¥ ᮢ¯ « - ®è¨¡ª ,
;-----------------; ; ¥á«¨ ŽŠ, â® á¡à á뢠¥¬ 㪠§ â¥«ì ¢ ä ©«¥ ­  0
;-----------------;
LD B,2 ; ‘â ¢¨¬ 㪠§ â¥«ì ­  ª®­¥æ ä ©« 
CALL .set_fp ; ç⮡ ã§­ âì ¥£® à §¬¥à
RET C
LD A,H ; <20> §¬¥à ä ©«  ¢ HL:IX. <20>¥â á¬ëá« , ¥á«¨ ®­ ¡®«ìè¥
OR L ; 65536 ¡ ©â, ¯®í⮬㠯஢¥à塞, çâ® ¢ HL ­®«ì.
SCF
RET NZ
LD HL,(ConfSize) ; ‘à ¢­¨¢ ¥¬ à §¬¥à ä ©« 
LD A,H ; á íâ ««®­ë¬ (59215 ¨«¨ #E74F)
SUB XL
JP NZ,1F
LD A,L
SUB XH
1: SCF
RET NZ
;-----------------;
;-----------------;
LD B,0 ; ‚®§¢à é ¥¬ 㪠§ â¥«ì
CALL .set_fp ; ¢ ä ©«¥ ­  ¥£® ­ ç «®
RET
;-----------------;
;-----------------;
.set_fp:
LD A,(NowHandler) ; •í­¤«¥à ä ©«  á ª®â®àë¬ á¥©ç á à ¡®â ¥¬
LD HL,0
LD IX,0
LD C,15h
RST 10h ; ãáâ ­®¢ª  㪠§ â¥«ï
RET
;*******************************************************
; _____ _ __ __
; |_ _|_ _| | _____ | \/ | ___ _ __ ___
; | |/ _` | |/ / _ \ | |\/| |/ _ \ '_ ` _ \
; | | (_| | < __/ | | | | __/ | | | | |
; |_|\__,_|_|\_\___| |_| |_|\___|_| |_| |_|
; ‚뤥«ï¥¬ ¯ ¬ïâì ¯®¤ § £à㧪㠯à®è¨¢ª¨ - 64 ª¡
;-----------------;
TakeMem:
LD BC,#04C2 ; ‡ ¯à®á ­  ¢ë¤¥«¥­¨¥ 64 Š¡ ¯ ¬ï⨠¯®¤ ª®­äã
RST 8
RET C ; § ¢¥à襭¨¥ - ­¥å¢ âª  ¯ ¬ïâ¨
LD (ram_blk_id),A ;
LD C,#C5 ; § ¯à®á ­®¬¥à®¢ ¢ë¤¥«¥­­ëå áâà ­¨æ
LD HL,ram_pages ; ¡ãä¥à ¤«ï ¯¥à¥ç¨á«¥­¨ï áâà ­¨æ
RST 8
RET C ; § ¢¥à襭¨¥ - ®è¨¡ª  ¢ ID ¡«®ª 
LD A,B
CP 4
SCF
RET NZ ; § ¢¥à襭¨¥ - ­¥ª®à४⭮¥ ª®«-¢® ¡«®ª®¢
CCF
RET
;*******************************************************
; _ _ ____ __
; | | ___ __ _ __| | / ___|___ _ __ / _|
; | | / _ \ / _` |/ _` | | | / _ \| '_ \| |_
; | |__| (_) | (_| | (_| | | |__| (_) | | | | _|
; |_____\___/ \__,_|\__,_| \____\___/|_| |_|_|
; ‡ £à㦠¥¬ ¯à®è¨¢ªã ¢ ¯ ¬ïâì
; —¨â ¥â ä ©« ¯à®è¨¢ª¨ 59215 ¡ ©â.
;<3B>à®æ¥¤ãà  éñ«ª ¥â PAGE3 ¡¥§ á®åà ­¥­¨ï/¢®ááâ ­®¢«¥­¨ï
; ¯à¥¤ë¤ã饣® á®áâ®ï­¨ï.
;-----------------;
Load_conf:
LD A,(ram_pages)
OUT (PAGE3),A
LD A,(ConfHandler)
LD HL,#D000
LD DE,#3000
LD C,13h
RST 10h
; RET C
; AND A
; JP NZ,2F
LD A,(ram_pages+1)
OUT (PAGE3),A
LD A,(ConfHandler)
LD HL,#C000
LD DE,#4000
LD C,13h
RST 10h
; RET C
; AND A
; JP NZ,2F
LD A,(ram_pages+2)
OUT (PAGE3),A
LD A,(ConfHandler)
LD HL,#C000
LD DE,#4000
LD C,13h
RST 10h
; RET C
; AND A
; JP NZ,2F
LD A,(ram_pages+3)
OUT (PAGE3),A
LD A,(ConfHandler)
LD HL,#C000
LD DE,#4000
LD C,13h
RST 10h
; RET C
; and a
JP 3F
LD HL,#374F
SBC HL,DE
JP Z,3F
2: SCF
3: RET
;*******************************************************
; ____ _ _
; / ___| ___| |_ / \ ___ _____ __
; \___ \ / _ \ __| / _ \ / __/ _ \ \/ /
; ___) | __/ |_ / ___ \ (_| __/> <
; |____/ \___|\__| /_/ \_\___\___/_/\_\
; <09>¥à¥ª¨¤ë¢ ¥¬ ¯à®è¨¢ªã ¢ ªíè ¨ ®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì,
; ¥á«¨ ­¥â ¢â®à®© ¯à®è¨¢ª¨
; (???®á¢®¡®¦¤¥­¨¥ ¯ ¬ï⨠­¥¤®¤¥« ­­®???)
;-----------------;
Set_Acex_Data:
DI
IN A,(CASH_ON) ; ‚ª«î祭¨¥ ªíè 
LD BC,1FFDh
XOR A
OUT (C),A ; ®âª«îç¨âì RAM-0
LD A,4
OUT (SYS_PORT_ON),A ; DCP-PAGE 0
LD A,0
OUT (5Ch),A ; ‘âà ­¨æ  Š<>˜ = 0
LD A,(ram_pages)
OUT (PAGE1),A ; áâà ­¨æ  á ¤ ­­ë¬¨ ä ©« 
LD HL,5000h ; ¯¥à¥ª¨¤ë¢ ­¨¥ ¤ ­­ëå ¢ áâà ­¨æã Š<>˜ = 0
LD DE,1000h
LD BC,3000h
LDIR
LD A,1
OUT (5Ch),A ; ‘âà ­¨æ  Š<>˜ = 1
LD A,(ram_pages+1)
OUT (PAGE1),A ; á«¥¤ãîé ï áâà ­¨æ  á ¤ ­­ë¬¨ ä ©« 
ld h,d ; LD HL,4000h
ld d,e ; LD DE,0000h
ld b,h ; LD BC,4000h
LDIR
LD A,2
OUT (5Ch),A ; ‘âà ­¨æ  Š<>˜ = 2
LD A,(ram_pages+2)
OUT (PAGE1),A ; á«¥¤ãîé ï áâà ­¨æ  á ¤ ­­ë¬¨ ä ©« 
ex de,hl ; LD HL,4000h
ld d,e ; LD DE,0000h
ld b,h ; LD BC,4000h
LDIR
LD A,3
OUT (05Ch),A ; ‘âà ­¨æ  Š<>˜ = 3
LD A,(ram_pages+3)
OUT (PAGE1),A ; á«¥¤ãîé ï áâà ­¨æ  á ¤ ­­ë¬¨ ä ©« 
ld h,d ; LD HL,4000h
ld d,e ; LD DE,0000h
; LD BC,37F4h
ld b,h ; LD BC,4000h
LDIR
LD HL,Reload_String ; ä« £ ¯¥à¥§ £à㧪¨ ¨§ Š<>˜- 
LD DE,3EF0h
LD C,10h ; LD BC, 16
LDIR
LD A,0FFh
LD (3EE0h),A ; no multiple ! ¯¥à¥§ £à㧪  ⮫쪮 ®¤­ 
IN A,(CASH_OFF) ; Žâª«î祭¨¥ ªíè 
LD A,(page1_save) ; ¢®§¢à â áâà ­¨æë 1
OUT (PAGE1),A
RET
;*******************************************************
; ____ _ ____ _____ _____
; / ___| ___| |_ | _ \| ____|_ _|
; \___ \ / _ \ __| | |_) | _| | |
; ___) | __/ |_ | _ <| |___ | |
; |____/ \___|\__| |_| \_\_____| |_|
; <09> áâனª¨ ¯¥à¥¤ à¥á¥â®¬
; “áâ ­®¢ª   ¤à¥á  ¢®§¢à â  ¯®á«¥ reboot
; ‘®åà ­¥­¨¥  ªâ¨¢­ëå áâà ­¨æ
; €¤à¥á ¯à®£à ¬¬ë ¤«ï ¢®§¢à â  ¢ ॣ¨áâॠDE
;-----------------;
Set_Ret:
DI
LD A,Spec_Page
OUT (PAGE3),A ; ®âªàëâì ᯥæ-áâà ­¨æã
LD (#FFF4),DE ;  ¤à¥á ¯à®£à ¬¬ë ¯¥à¥§ ¯ã᪠
LD A,'Z'
LD (#FFFE),A
LD A,'X'
LD (#FFFF),A ; ä« £ ¯¥à¥§ ¯ã᪠
ld A,(page0_save) ; á®åà ­ïâì áâà ­¨æë
LD (0FFF0h),A ; DOS-PAGE
ld A,(page1_save)
LD (0FFF1h),A
ld A,(page2_save)
LD (0FFF2h),A ; ¯à®£à ¬¬ë ¤«ï ¢®§¢à â ???
in A,(PAGE3) ; ‘®å࠭塞 ’…Š“™“ž áâà ­¨æã 3
LD (0FFF3h),A
ld A,(page3_save) ; ‚®ááâ ­ ¢«¨¢ ¥¬ ­ ç «ì­ãî áâà ­¨æã 3
OUT (PAGE3),A
; EI
RET
;*******************************************************
;(.)(.) (.)(.) (.)(.) (.)(.) (.)(.) (.)(.) (.)(.)
; <09>®¤£à㧪  ä ©«  á ¯¥à¥¬¥­­ë¬¨, ª®­áâ ­â ¬¨ ¨ ¡ãä¥à ¬¨:
INCLUDE "LDconf_Consts.ASM"
;
the_end EQU $
;
IF (the_end>(ST_Point-SP_Win))
DISPLAY "the_end = ",/H,the_end
DISPLAY "ST_Point-SP_Win = ",/H,(ST_Point-SP_Win)
Stack_Error 0
ENDIF
IF (LastHandler=FirstHandler) or ((LastHandler-FirstHandler) > 255)
DISPLAY "FirstHandler = ",/H,FirstHandler
DISPLAY "LastHandler = ",/H,LastHandler
Handler_Error 0
ENDIF
;(.)(.) (.)(.) (.)(.) (.)(.) (.)(.) (.)(.) (.)(.)

View File

@ -1,855 +0,0 @@
; _ ____ ____ __
; | | | _ \ / ___|___ _ __ / _|
; | | | | | | | / _ \| '_ \| |_
; | |___| |_| | |__| (_) | | | | _|
; |_____|____/ \____\___/|_| |_|_|
; _____ ____ _ _ ____ _
; | ___|__ _ __ / ___| _ __ _ __(_)_ __ | |_ ___ _ __ / ___|___ _ __ ___ _ __ _ _| |_ ___ _ __
; | |_ / _ \| '__| \___ \| '_ \| '__| | '_ \| __/ _ \ '__| | | / _ \| '_ ` _ \| '_ \| | | | __/ _ \ '__|
; | _| (_) | | ___) | |_) | | | | | | | || __/ | | |__| (_) | | | | | | |_) | |_| | || __/ |
; |_| \___/|_| |____/| .__/|_| |_|_| |_|\__\___|_| \____\___/|_| |_| |_| .__/ \__,_|\__\___|_|
; |_| |_|
;*******************************************************
; ’¥á⮢ ï ᡮઠ ¨«¨ ­¥â?
define debug 0
define sprinter 1
;
; Œ ªà®áë
MACRO TraceMSG tr_mess
LD HL,tr_mess
CALL PrintStr
ENDM
MACRO iDontKnow
;-----------------; ’ ©­ë¥ ¬ ­¨¯ã«ï樨
DI
LD A,CNF_3
OUT (SYS_PORT_OFF),A
LD A,3 ; ãáâ ­®¢ª  ¢­ãâà.¯®à⮢ Z84C15 ¤«ï ¯¥à¥§ £à㧪¨
OUT (#EE),A
OUT (#EF),A ; CASH & ROM
;-----------------;
ENDM
;
; ‚¥àá¨ï ¯à®£¨ ¨ ¨­ä® ¤«ï ¯®­â®¢:
DEFINE Ver_ID "0.1 alpha"
DEFINE e_mail "Tolik.Trek@gmail.com"
; <20>®¤£à㧪  ä ©«  á ª®­áâ ­â ¬¨ BIOS ¨ DSS:
INCLUDE "EQU/SP2000.ASM"
; <20>®¤£à㧪  ä ©«  á ®è¨¡ª ¬¨)))
INCLUDE "EQU/Errors_MSG.a80"
;
ST_Point EQU #BFFE ;  ¤à¥á á⥪ 
SP_Win EQU 64 ; ¬­¨¬ë© ª®­âà®«ì ¯¥à¥á¥ç¥­¨ï á⥪  á ª®¤®¬
ORG_Addr EQU #8100 ;  ¤à¥á ª®¬¯¨«ï樨. DSS ¢áâ ¢«ï¥â áâபã
; á ¯ à ¬¥âà ¬¨ § ¯ã饭­®£® EXE ¯¥à¥¤
;  ¤à¥á®¬ § £à㧪¨ START, ¯®í⮬ã
; £à㧨¬áï ­¥ á ­ ç «  áâà ­¨æë.
; _______ _______ ____ __ _
; | ____\ \/ / ____| | _ \ _ __ ___ / _(_)_ __
; | _| \ /| _| | |_) | '__/ _ \ |_| \ \/ /
; | |___ / \| |___ | __/| | | __/ _| |> <
; |_____/_/\_\_____| |_| |_| \___|_| |_/_/\_\
;-----------------;
ORG ORG_Addr-#200
; ‘­ ç «  ¢ EXE ä ©«¥ ¨¤ñâ § £®«®¢®ª
; ¤«¨­­®© ¢ 1 ᥪâ®à (512 ¡ ©â)
;-----------------;
DB 'EX' ; EXE ‘¨£­ âãà 
DB 'E' ; Reserved (EXE type)
DB 0 ; Version of EXE file
DW #0200 ; ª ª®£® ᬥ饭¨ï ¢ ä ©«¥ ¡ã¤¥â £à㧨âìáï ª®¤ ¢
DW #0000 ; ¯ ¬ïâì ¯®  ¤à¥áã (START) Low - 0200h, High - 0000.
DW #0000 ; <20> §¬¥à ¯¥à¢¨ç­®£® § £àã§ç¨ª  ¨«¨ 0
DW #0000 ; Reserved
DW #0000 ; Reserved
DW #0000 ; Reserved
DW START ; €¤à¥á à á¯®«®¦¥­¨ï ª®¤  ¢ ¯ ¬ïâ¨
DW START ; €¤à¥á ¢ ¯ ¬ïâ¨ á ª®â®à®£® § ¯ãáâ¨âáï ª®¤ (Reg. PC)
DW ST_Point ; €¤à¥á á⥪  (Reg. SP)
BLOCK 490 ; Reserved. „®¡¨¢ª  ¤® ª®­æ  ᥪâ®à  (512 ¡ ©â). Œ®¦¥â ¨á¯®«ì§®¢ âìáï ¢ ­®¢ëå ¢¥àá¨ïå DSS
;*******************************************************
; __ __ _
; | \/ | __ _(_)_ __
; | |\/| |/ _` | | '_ \
; | | | | (_| | | | | |
; |_| |_|\__,_|_|_| |_|
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,(PAGE0)
LD (page0_save),A
IN A,(PAGE1)
LD (page1_save),A
IN A,(PAGE2)
LD (page2_save),A
IN A,(PAGE3)
LD (page3_save),A
;-----------------;
;-----------------; ‘®å࠭塞 ­ áâனª¨ íªà ­ 
ld c,51h
rst 10h
jp nc,1f
LD HL,error_Vmode
JP BadExit
1:
ld (VMod),a
ld a,b
ld (VModPage),a
;-----------------;
;-----------------;
LD (dss_line),IX ; ‘®å࠭塞 㪠§ â¥«ì ­  áâப㠧 ¯ã᪠. ????? <20>㦭  «¨ ®­  ¢ ¤ «ì­¥©è¥¬ ?????
LD A,(IX) ; âãâ DSS ª« ¤ñâ ¤«¨­ã ¯ à ¬¥â஢ ª®¬.áâப¨
AND A ; ¯à®¢¥à塞 ­  ®âáãâá⢨¥ ¯ à ¬¥â஢
JP NZ,1F ; § ¯ã᪠ ¢ ª®¬.áâப¥. …᫨ ¨å ­¥â,
LD HL,Help_Msg ; â® ¯¥ç â ¥¬ ¨­áâàãªæ¨î ¨ ¢ë室¨¬
CALL 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:
if debug : TraceMSG trace_msg1 : endif
;
ld a,(x_key)
and A ; ¥á«¨ ª«îç X ãáâ ­®¢«¥­, â® ¯à®¢¥àªã ¯à®¯ã᪠¥¬
jp nz,1F
CALL TestConf ; ¯à®¢¥àª  ª®­äë. ­  ¢ë室¥ CF=0 - ­¥â ®è¨¡ª
JR NC,1F ; F=1 - ¥áâì ®è¨¡ª 
LD HL,error_confFile ; …᫨ ª®áïª á ä ©«®¬ ¯à®è¨¢ª¨
JP BadExit ; â® ¢ë室 á ®è¨¡ª®©
;-----------------;
;-----------------; ¥á«¨ ­®à¬. § ¢¥à襭¨¥ TestConf
1:
if debug : TraceMSG trace_msg2 : endif
;
CALL TakeMem ; ‚뤥«¥­¨¥ ¯ ¬ï⨠¤«ï ª®­äë 65536 ¡ ©â
JR NC,1F
LD HL,error_freeMem ; …᫨ ­¥¤®áâ â®ç­® ¯ ¬ïâ¨
JP BadExit ; â® ¢ë室 á ®è¨¡ª®©
;-----------------;
;-----------------; ¥á«¨ ­®à¬. § ¢¥à襭¨¥ TakeMem
1:
if debug : TraceMSG trace_msg3 : endif
;
; LD A,(ConfHandler) ; ‚ëáâ ¢«ï¥¬ 奭¤«¥à ¯à®è¨¢ª¨
; LD (NowHandler),A ; á ª®â®à®© ¡ã¤¥¬ à ¡®â âì
;
;
CALL Load_conf ; —¨â ¥¬ ¯à®è¨¢ªã ¨§ ä ©«  (¬¥­ï¥â PAGE3)
LD A,(page3_save) ; ¢®ááâ ­ ¢«¨¢ ¥¬ áâà ­¨æã
OUT (PAGE3),A ; ¯ ¬ï⨠¯®á«¥ ᬥ­ë
JR NC,1F
LD HL,error_readConf ; …᫨ ®è¨¡ª  ¯à¨ ç⥭¨¨ ¯à®è¨¢ª¨ ¨§ ä ©« 
JP BadExit ; â® ¢ë室 á 祬? <20>à ¢¨«ì­®, á ®è¨¡ª®©
;-----------------;
;-----------------; ¥á«¨ ­®à¬. § ¢¥à襭¨¥ Load_conf
1:
if debug : TraceMSG trace_msg4 : endif
;
if sprinter : iDontKnow : endif
;
LD DE,ReloadRET ; €¤à¥á އ<E280A1>€ ¯®á«¥ ¯¥à¥§ £à㧪¨
LD (SP_Save),SP ; á®å࠭塞 á⥪
CALL Set_Ret ; ãáâ ­®¢ª  ¤ ­­ëå ¤«ï ¢®§¢à â 
;
if debug : TraceMSG trace_msg5 : endif
;
CALL Set_Acex_Data ; ¯¥à¥£à㧪  ¤ ­­ëå ACEX ¢ FAST-RAM
; <20>®á«¥ í⮩ ¯à®æ¥¤ãàë å¨âன ^^^^^^ ­ ç¨­ îâáï £«îª¨
; á ¢ë§®¢®¬ ¯à®æ¥¤ãà DSS. —ñâ ®­  â ¬ ¬ã¤à¨â á ¯®àâ ¬¨
; ¨«¨ á ¯ ¬ïâìî, ­¥ à §®¡à «áï. <20>®í⮬㠯®á«¥ ­¥ñ «ãçè¥
; áà §ã ¢ à¥á¥â á £®«®¢®© ¨ ­¥ ¯ à¨âìáï...
;-----------------;
;-----------------; 7 ¡¥¤ - 1 à¥á¥â
RESET:
DI
IN A,(PAGE1) ; ®âªàë⨥ ¯®àâ  á¡à®á 
PUSH AF
LD A,40h
OUT (PAGE1),A ; set DCP page
LD A,2Eh
LD (04400h),A ; open for WR
LD (04600h),A ; open for RD
POP AF
OUT (PAGE1),A ; Close PAGE1 ???????
RESET_LOOP: ; 横« á¡à®á 
LD BC,100h
OUT (C),C
LD BC,000h
OUT (C),C
JR RESET_LOOP ; ¯®«­®áâìî § æ¨ª«¨âì!
HALT ; ¯ë«¥ã«®¢¨â¥«ì
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
; ____ _ _ ____ _
; | _ \ _ __(_)_ __ | |_ / ___|| |_ _ __
; | |_) | '__| | '_ \| __| \___ \| __| '__|
; | __/| | | | | | | |_ ___) | |_| |
; |_| |_| |_|_| |_|\__| |____/ \__|_|
; <09>¥ç âì áâப¨. €¤à¥á áâப¨ ¢ HL
;-----------------;
PrintStr:
LD C,5Ch
RST 10h
RET
;*******************************************************
; ____ _ _ ____ _____ _____
; | _ \ ___| | ___ __ _ __| | | _ \| ____|_ _|
; | |_) / _ \ |/ _ \ / _` |/ _` | | |_) | _| | |
; | _ < __/ | (_) | (_| | (_| | | _ <| |___ | |
; |_| \_\___|_|\___/ \__,_|\__,_| |_| \_\_____| |_|
; Œ¥áâ®, ªã¤  ¡ã¤¥â ¢®§¢à â ¯®á«¥
; ¯¥à¥§ £à㧪¨ ­®¢®© ¯à®è¨¢ª¨
;-----------------;
ReloadRET:
DI
LD SP,(SP_Save)
LD A,CNF_0 ; ª®­ä¨£ãà æ¨ï ¨ ®âª«î祭¨¥ <20>‡“
OUT (SYS_PORT_OFF),A
LD A,(page0_save) ; SET PAGE DOS
OUT (PAGE0),A
LD A,(page3_save) ; ¢®§¢à â áâ à®© áâà ­¨æë PAGE3
OUT (PAGE3),A
;-----------------;
;-----------------; <20> ¡®â  ¯à®£à ¬¬ë á ­®¢®© ¯à®è¨¢ª®©
ld a,(e_key)
and a
jp z,1F
ld hl,EXEfileBuff ; ‡ ¯ã᪠EXE
ld bc,0040h
rst 10h
;-----------------;
;-----------------;
1:
ld a,(a_key) ; ‚ë室 ¡¥§ ¢®ááâ ­®¢«¥­¨ï ¤¥ä®«â­®© ª®­äë?
and a
jp nz, NormExit
LD DE,NextReloadRET ;
LD (SP_Save),SP ; á®å࠭塞 á⥪
CALL Set_Ret ; ãáâ ­®¢ª  ¤ ­­ëå ¤«ï ¢®§¢à â 
JP RESET
;*******************************************************
; _ _ _
; | \ | | _____ _| |_
; | \| |/ _ \ \/ / __|
; | |\ | __/> <| |_
; |_| \_|\___/_/\_\\__|
; ____ _ _ ____ _____ _____
; | _ \ ___| | ___ __ _ __| | | _ \| ____|_ _|
; | |_) / _ \ |/ _ \ / _` |/ _` | | |_) | _| | |
; | _ < __/ | (_) | (_| | (_| | | _ <| |___ | |
; |_| \_\___|_|\___/ \__,_|\__,_| |_| \_\_____| |_|
; <09>®¤£®â®¢ª  ª § ¢¥à襭¨î ¯®á«¥ à¥á¥â  ¨
; ¢®§¢à â  த­®© ¯à®è¨¢ª¨
;-----------------;
NextReloadRET:
DI
LD SP,(SP_Save)
LD A,CNF_0 ; ª®­ä¨£ãà æ¨ï ¨ ®âª«î祭¨¥ <20>‡“
OUT (SYS_PORT_OFF),A
LD A,(page0_save) ; SET PAGE DOS
OUT (PAGE0),A
LD A,(page1_save)
OUT (PAGE1),A
; ƒ«ï­ãâì, ¬®¦¥â ­¥ ­ ¤® ¢®§¢à é âì ®¤­ã ¨§ áâà ­¨æ???
LD A,(page3_save)
OUT (PAGE3),A
JP NormExit
;*******************************************************
; _____ _ _ ____ _
; | ____|_ _(_) |_ | _ \ _ __ ___ ___( )___
; | _| \ \/ / | __| | |_) | '__/ _ \ / __|// __|
; | |___ > <| | |_ | __/| | | (_) | (__ \__ \
; |_____/_/\_\_|\__| |_| |_| \___/ \___| |___/
;-----------------;
NormExit:
LD HL,WellDone
CALL PrintStr
LD B,0
CALL Exit
;-----------------;
BadExit: ; HL áâப  á ®è¨¡ª®©
CALL PrintStr
LD B,1 ; ª®¤ ®è¨¡ª¨
CALL Exit
;-----------------;
;-----------------;
Exit:
LD A,CNF_0 ;??????
OUT (SYS_PORT_OFF),A
;
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 10h
POP BC
POP HL
1: INC HL
DJNZ .loop
;-----------------;
;-----------------; ®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì, ¥á«¨ ª«ï­ç¨«¨
ld c,#C3
ld a,(ram_blk_id)
cp 0
jr z,1F
rst 8
;-----------------;
;-----------------; ¢®ááâ ­ ¢«¨¢ ¥¬ íªà ­
ld c,53h
rst 10h
push de
ld a,(VModPage)
ld b,a
ld a,(VMod)
ld c,50h
rst 10h
ld c,52h
pop de
rst 10h
;-----------------;
;-----------------; ‚ë室 ¢ DOS
1:
POP BC
LD C,41h
RST 10h
DI
HALT
;-----------------;
;*******************************************************
; ____ _ _
; / ___| ___| |_ | | _____ _ _ ___
; \___ \ / _ \ __| | |/ / _ \ | | / __|
; ___) | __/ |_ | < __/ |_| \__ \
; |____/ \___|\__| |_|\_\___|\__, |___/
; |___/
; <09>®«ãç ¥¬ ª«îç¨ § ¯ã᪠, à á¯¨å¨¢ ¥¬ ¨å ¯® 㣫 ¬,
; ­ áâà ¨¢ ¥¬ ­ ç «ì­ë¥ ãá«®¢¨ï à ¡®âë.
;-----------------;
Set_keys:
LD HL,(dss_line)
INC 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
SCF ; ®è¨¡ª  ¢ ¯ à ¬¥âà¥
RET ; ¢ë室 á ®è¨¡ª®©
;-----------------;
;-----------------;
.set_keys_x:
INC C
.set_keys_e:
INC C
.set_keys_c:
INC C
.set_keys_a:
EX DE,HL ; <20><E28099>Ÿœ “Š€‡€’…‹œ <20>€ ‘‹…„“ž™ˆ‰ <20><EFBFBD>€Œ…<E280A6>!
LD HL,key_buff ; ‚ëç¨á«ï¥¬ ï祩ªã åà ­¥­¨ï ª«îç 
ADD HL,BC
LD A,(HL) ; ¨ ¯à®¢¥à塞 ­¥â «¨ â ¬ 㦥 ª«îç .
CP 0 ; ¥á«¨ ¥áâì, §­ ç¨â ª«îç ¢¢¥¤ñ­ 2 à § 
SCF
RET NZ ; ®è¨¡ª  - ¯®¢â®à ª«îç . ¢ë室
OR C ; ’ãâ Ž†ˆ„€…’‘Ÿ, çâ® €=0. …᫨ =0, â® íâ® ª«îç "A"
LD A,3
LD (HL),A ; ãáâ ­®¢¨«¨ ª«îç
EX DE,HL ; <20><E28099>Ÿœ “Š€‡€’…‹œ <20>€ ‘‹…„“ž™ˆ‰ <20><EFBFBD>€Œ…<E280A6>!
JR Z,.CheckChar ; ¥á«¨ ª«îç "A" â® á«¥¤ãî騩 ªà㣠横« 
xor C ; ’ãâ Ž†ˆ„€…’‘Ÿ, çâ® €=3. …᫨ =3, â® íâ® ª«îç "X"
JR Z,.CheckChar ; ¥á«¨ ª«îç "X" â® á«¥¤ãî騩 ªà㣠横« 
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: ; ¢ HL ¯à¨­¨¬ ¥âáï á«¥¤. ¯ à. áâப¨ DOS
LD C,43h ; âã⠢뤥«ï¥¬ ¯ à ¬¥âà § ¯ã᪠
LD DE,Buffer ; ¡ãä¥à ¤«ï ®¯¥à æ¨© á® áâப ¬¨
RST #10 ; ¯®«ãç ¥¬ ¢ ¡ãä¥à¥ á«¥¤ãî騩 ¯ à ¬¥âà
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 10h
RET C ; ®è¨¡ª  ¢ áâப¥
AND %00000011 ; ¯à®¢¥à塞, çâ® ¥áâì ¨¬ï ¨
XOR %00000011 ; à áè¨à¥­¨¥ ä ©«  (0 ¨ 1 ¡¨âë)
SCF
RET NZ ; ®è¨¡ª  ä ©«  - ¢ë室
LD A,0
LD C,11h
LD HL,Buffer
RST 10h ; ®âªàë⨥ ä ©« 
RET C ; ®è¨¡ª  ä ©«  - ¢ë室
LD (.fileHandler),A ; á®å࠭塞 奭¤«¥à
.fileHandler EQU $-2
;-----------------;
;-----------------; <20>஢¥à塞 ®¡à ¡ â뢠¥¬ë© ª«îç
key_save EQU $+1
LD A,#FF ; á ¢®âª­ñâáï §­ ç¥­¨¥ ¨§ ॣ¨áâà  C
XOR 2 ; ¥á«¨ 2, â® íâ® ª«îç "E"
ret NZ ; ¥á«¨ ­¥â, â® ¢ë室 ¨§ ¯à®æ¥¤ãàë.
;-----------------;
;-----------------; <20>஢¥àª  à áè¨à¥­¨ï ä ©« 
LD BC,#0445 ; ª«î箬 "E" ¯à®¢¥à塞 ä ©«
LD HL,Buffer ; ­  à áè¨à¥­¨¥ "EXE" ¢ë¤¥«¨¢
LD DE,BufferEXE ; ¨§ áâப¨ ¨¬¥­¨ à áè¨à¥­¨¥
RST 10h ; ä ©«  ¢ ®â¤¥«ì­ë© ¡ãä¥à ­  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 10h
RET
;*******************************************************
; _____ _ ____ __
; |_ _|__ ___| |_ / ___|___ _ __ / _|
; | |/ _ \/ __| __| | | / _ \| '_ \| |_
; | | __/\__ \ |_ | |__| (_) | | | | _|
; |_|\___||___/\__| \____\___/|_| |_|_|
; <09>஢¥à塞 à §¬¥à ¨ § £®«®¢®ª ä ©«  ¯à®è¨¢ª¨
; (???¤®¡ ¢¨âì ª«îç ¤«ï ®â¬¥­ë???)
;-----------------;
TestConf:
LD A,(ConfHandler) ; á®å࠭塞 奭¤«¥à ­  ⥪ã騩
LD (NowHandler),A ; ä ©« á ª®â®àë¬ à ¡®â ¥¬. ??? ã¡à âì «¨è­¥¥ ???
AND A ; ¯à®¢¥àª  ­  ®âáãâá⢨¥ 奭¤«¥à 
SCF
RET Z ; ¢ë室 á ®è¨¡ª®© ¥á«¨ ä ©« ­¥ ®âªàëâ
CALL .testing
/*
RET C
LD A,(ConfHandler2) ; ¢ë¡¨à ¥¬ ⥪ã騬 á«¥¤ãî騩 ä ©«
LD (NowHandler),A
AND A ; ¯à®¢¥àª  ­  ®âáãâá⢨¥ 奭¤«¥à 
RET Z ; ¢ë室 ¡¥§ ®è¨¡ª¨ - ¢â®à®© ¯à®è¨¢ª¨ ¬®¦¥â ­¥ ¡ëâì ¢ ¯ à ¬¥âà å
CALL .testing
*/
RET
;-----------------;
;-----------------;
.testing:
LD HL,Buffer
LD DE,8
LD C,13h ; ç¨â ¥¬ ¢ ¡ãä¥à ¯¥à¢ë¥ 8 ¡ ©â
RST 10h ; ¤«ï áà ¢­¥­¨ï á è ¡«®­®¬
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: SCF ; á ¯®¯ ¤ñ¬ ª®£¤  BC=0 ¨«¨ ᨬ¢®« ­¥ ᮢ¯ «
RET NZ ; ¥á«¨ ¢ë諨 ¨§ 横«  ¨ ᨬ¢®« ­¥ ᮢ¯ « - ®è¨¡ª ,
;-----------------; ; ¥á«¨ ŽŠ, â® á¡à á뢠¥¬ 㪠§ â¥«ì ¢ ä ©«¥ ­  0
;-----------------;
LD B,2 ; ‘â ¢¨¬ 㪠§ â¥«ì ­  ª®­¥æ ä ©« 
CALL .set_fp ; ç⮡ ã§­ âì ¥£® à §¬¥à
RET C
LD A,H ; <20> §¬¥à ä ©«  ¢ HL:IX. <20>¥â á¬ëá« , ¥á«¨ ®­ ¡®«ìè¥
OR L ; 65536 ¡ ©â, ¯®í⮬㠯஢¥à塞, çâ® ¢ HL ­®«ì.
SCF
RET NZ
LD HL,(ConfSize) ; ‘à ¢­¨¢ ¥¬ à §¬¥à ä ©« 
LD A,H ; á íâ ««®­ë¬ (59215 ¨«¨ #E74F)
SUB XL
JP NZ,1F
LD A,L
SUB XH
1: SCF
RET NZ
;-----------------;
;-----------------;
LD B,0 ; ‚®§¢à é ¥¬ 㪠§ â¥«ì
CALL .set_fp ; ¢ ä ©«¥ ­  ¥£® ­ ç «®
RET
;-----------------;
;-----------------;
.set_fp:
LD A,(NowHandler) ; •í­¤«¥à ä ©«  á ª®â®àë¬ á¥©ç á à ¡®â ¥¬
LD HL,0
LD IX,0
LD C,15h
RST 10h ; ãáâ ­®¢ª  㪠§ â¥«ï
RET
;*******************************************************
; _____ _ __ __
; |_ _|_ _| | _____ | \/ | ___ _ __ ___
; | |/ _` | |/ / _ \ | |\/| |/ _ \ '_ ` _ \
; | | (_| | < __/ | | | | __/ | | | | |
; |_|\__,_|_|\_\___| |_| |_|\___|_| |_| |_|
; ‚뤥«ï¥¬ ¯ ¬ïâì ¯®¤ § £à㧪㠯à®è¨¢ª¨ - 64 ª¡
;-----------------;
TakeMem:
LD BC,#04C2 ; ‡ ¯à®á ­  ¢ë¤¥«¥­¨¥ 64 Š¡ ¯ ¬ï⨠¯®¤ ª®­äã
RST 8
RET C ; § ¢¥à襭¨¥ - ­¥å¢ âª  ¯ ¬ïâ¨
LD (ram_blk_id),A ;
LD C,#C5 ; § ¯à®á ­®¬¥à®¢ ¢ë¤¥«¥­­ëå áâà ­¨æ
LD HL,ram_pages ; ¡ãä¥à ¤«ï ¯¥à¥ç¨á«¥­¨ï áâà ­¨æ
RST 8
RET C ; § ¢¥à襭¨¥ - ®è¨¡ª  ¢ ID ¡«®ª 
LD A,B
CP 4
SCF
RET NZ ; § ¢¥à襭¨¥ - ­¥ª®à४⭮¥ ª®«-¢® ¡«®ª®¢
CCF
RET
;*******************************************************
; _ _ ____ __
; | | ___ __ _ __| | / ___|___ _ __ / _|
; | | / _ \ / _` |/ _` | | | / _ \| '_ \| |_
; | |__| (_) | (_| | (_| | | |__| (_) | | | | _|
; |_____\___/ \__,_|\__,_| \____\___/|_| |_|_|
; ‡ £à㦠¥¬ ¯à®è¨¢ªã ¢ ¯ ¬ïâì
; —¨â ¥â ä ©« ¯à®è¨¢ª¨ 59215 ¡ ©â.
;<3B>à®æ¥¤ãà  éñ«ª ¥â PAGE3 ¡¥§ á®åà ­¥­¨ï/¢®ááâ ­®¢«¥­¨ï
; ¯à¥¤ë¤ã饣® á®áâ®ï­¨ï.
;-----------------;
Load_conf:
LD A,(ram_pages)
OUT (PAGE3),A
LD A,(ConfHandler)
LD HL,#D000
LD DE,#3000
LD C,13h
RST 10h
RET C
AND A
JP NZ,2F
LD A,(ram_pages+1)
OUT (PAGE3),A
LD A,(ConfHandler)
LD HL,#C000
LD DE,#4000
LD C,13h
RST 10h
RET C
AND A
JP NZ,2F
LD A,(ram_pages+2)
OUT (PAGE3),A
LD A,(ConfHandler)
LD HL,#C000
LD DE,#4000
LD C,13h
RST 10h
RET C
AND A
JP NZ,2F
LD A,(ram_pages+3)
OUT (PAGE3),A
LD A,(ConfHandler)
LD HL,#C000
LD DE,#374F
LD C,13h
RST 10h
RET C
CP #FF
JP Z,3F
LD HL,#374F
SBC HL,DE
JP Z,3F
2: SCF
3: RET
;*******************************************************
; ____ _ _
; / ___| ___| |_ / \ ___ _____ __
; \___ \ / _ \ __| / _ \ / __/ _ \ \/ /
; ___) | __/ |_ / ___ \ (_| __/> <
; |____/ \___|\__| /_/ \_\___\___/_/\_\
; <09>¥à¥ª¨¤ë¢ ¥¬ ¯à®è¨¢ªã ¢ ªíè ¨ ®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì,
; ¥á«¨ ­¥â ¢â®à®© ¯à®è¨¢ª¨
; (???®á¢®¡®¦¤¥­¨¥ ¯ ¬ï⨠­¥¤®¤¥« ­­®???)
;-----------------;
Set_Acex_Data:
DI
IN A,(CASH_ON) ; ‚ª«î祭¨¥ ªíè 
LD BC,1FFDh
XOR A
OUT (C),A ; ®âª«îç¨âì RAM-0
LD A,4
OUT (SYS_PORT_ON),A ; DCP-PAGE 0
LD A,0
OUT (5Ch),A ; ‘âà ­¨æ  Š<>˜ = 0
LD A,(ram_pages)
OUT (PAGE1),A ; áâà ­¨æ  á ¤ ­­ë¬¨ ä ©« 
LD HL,5000h ; ¯¥à¥ª¨¤ë¢ ­¨¥ ¤ ­­ëå ¢ áâà ­¨æã Š<>˜ = 0
LD DE,1000h
LD BC,3000h
LDIR
LD A,1
OUT (5Ch),A ; ‘âà ­¨æ  Š<>˜ = 1
LD A,(ram_pages+1)
OUT (PAGE1),A ; á«¥¤ãîé ï áâà ­¨æ  á ¤ ­­ë¬¨ ä ©« 
ld h,d ; LD HL,4000h
ld d,e ; LD DE,0000h
ld b,h ; LD BC,4000h
LDIR
LD A,2
OUT (5Ch),A ; ‘âà ­¨æ  Š<>˜ = 2
LD A,(ram_pages+2)
OUT (PAGE1),A ; á«¥¤ãîé ï áâà ­¨æ  á ¤ ­­ë¬¨ ä ©« 
ex de,hl ; LD HL,4000h
ld d,e ; LD DE,0000h
ld b,h ; LD BC,4000h
LDIR
LD A,3
OUT (05Ch),A ; ‘âà ­¨æ  Š<>˜ = 3
LD A,(ram_pages+3)
OUT (PAGE1),A ; á«¥¤ãîé ï áâà ­¨æ  á ¤ ­­ë¬¨ ä ©« 
ld h,d ; LD HL,4000h
ld d,e ; LD DE,0000h
LD BC,37F4h
LDIR
LD HL,Reload_String ; ä« £ ¯¥à¥§ £à㧪¨ ¨§ Š<>˜- 
LD DE,3EF0h
LD C,10h ; LD BC, 16
LDIR
LD A,0FFh
LD (3EE0h),A ; no multiple ! ¯¥à¥§ £à㧪  ⮫쪮 ®¤­ 
IN A,(CASH_OFF) ; Žâª«î祭¨¥ ªíè 
LD A,(page1_save) ; ¢®§¢à â áâà ­¨æë 1
OUT (PAGE1),A
RET
;*******************************************************
; ____ _ ____ _____ _____
; / ___| ___| |_ | _ \| ____|_ _|
; \___ \ / _ \ __| | |_) | _| | |
; ___) | __/ |_ | _ <| |___ | |
; |____/ \___|\__| |_| \_\_____| |_|
; <09> áâனª¨ ¯¥à¥¤ à¥á¥â®¬
; “áâ ­®¢ª   ¤à¥á  ¢®§¢à â  ¯®á«¥ reboot
; ‘®åà ­¥­¨¥  ªâ¨¢­ëå áâà ­¨æ
; €¤à¥á ¯à®£à ¬¬ë ¤«ï ¢®§¢à â  ¢ ॣ¨áâॠDE
;-----------------;
Set_Ret:
DI
LD A,Spec_Page
OUT (PAGE3),A ; ®âªàëâì ᯥæ-áâà ­¨æã
LD (#FFF4),DE ;  ¤à¥á ¯à®£à ¬¬ë ¯¥à¥§ ¯ã᪠
LD A,'Z'
LD (#FFFE),A
LD A,'X'
LD (#FFFF),A ; ä« £ ¯¥à¥§ ¯ã᪠
ld A,(page0_save) ; á®åà ­ïâì áâà ­¨æë
LD (0FFF0h),A ; DOS-PAGE
ld A,(page1_save)
LD (0FFF1h),A
ld A,(page2_save)
LD (0FFF2h),A ; ¯à®£à ¬¬ë ¤«ï ¢®§¢à â ???
in A,(PAGE3) ; ‘®å࠭塞 ’…Š“™“ž áâà ­¨æã 3
LD (0FFF3h),A
ld A,(page3_save) ; ‚®ááâ ­ ¢«¨¢ ¥¬ ­ ç «ì­ãî áâà ­¨æã 3
OUT (PAGE3),A
; EI
RET
;*******************************************************
;(.)(.) (.)(.) (.)(.) (.)(.) (.)(.) (.)(.) (.)(.)
; <09>®¤£à㧪  ä ©«  á ¯¥à¥¬¥­­ë¬¨, ª®­áâ ­â ¬¨ ¨ ¡ãä¥à ¬¨:
INCLUDE "LDconf_Consts.ASM"
;
the_end EQU $
;
IF (the_end>(ST_Point-SP_Win))
DISPLAY "the_end = ",/H,the_end
DISPLAY "ST_Point-SP_Win = ",/H,(ST_Point-SP_Win)
Stack_Error 0
ENDIF
IF (LastHandler=FirstHandler) or ((LastHandler-FirstHandler) > 255)
DISPLAY "FirstHandler = ",/H,FirstHandler
DISPLAY "LastHandler = ",/H,LastHandler
Handler_Error 0
ENDIF
;(.)(.) (.)(.) (.)(.) (.)(.) (.)(.) (.)(.) (.)(.)

View File

@ -1,588 +0,0 @@
/* <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>४⨢<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
.LION EQU 0
.FLEX EQU 1
.IBMK EQU 1
.PROJ1 EQU 0
.PROJ2 EQU 0
.PROJ3 EQU 1
.PROJ4 EQU 1
.PAL EQU 1
*/
;ELCOM256 EQU 1 ; <EFBFBD><EFBFBD> ELCOM-256
;IF ELCOM256 EQ 1
D_TBON EQU 3 ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TURBO
D_TBOFF EQU 2 ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TURBO
D_ROM16ON EQU 1
D_ROM16OFF EQU 0
CNF_0 EQU 04h ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 0
CNF_1 EQU 0Ch ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 1
CNF_2 EQU 14h ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 2
CNF_3 EQU 1Ch ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> 3
CNF_512 EQU 80h ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Pentagon 128
CBL_DIR EQU 78 ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> COVOX-Blaster
; bit 7 - 1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CBL
;ELSE
;D_TBON EQU 03h ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TURBO
;D_TBOFF EQU 02h ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TURBO
;D_ROM16ON EQU 40h
;D_ROM16OFF EQU 00h
;CNF_0 EQU 04h
;CNF_1 EQU 0Ch
;CNF_2 EQU 14h
;CNF_3 EQU 1Ch
;ENDIF
SPRINTER EQU 4 ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> !!!
ISD_WARM EQU 3
ISD_COLD EQU 0
IS_KEY EQU 40h ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IS-DOS
IS_RAM_ADR EQU 5BC0h ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> IS-DOS
TB_WAITES EQU 00H ; WAIT<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> TURBO-MODE
NTB_WAITES EQU 00H ; WAIT<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> neTURBO-MODE
IS_WAITES EQU 00H ; WAIT<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> IS-DOS
;****************************************
;SYS_PORT_ON EQU 07DH
;SYS_PORT_OFF EQU 03DH
SYS_PORT_ON EQU 07CH
SYS_PORT_OFF EQU 03CH
CASH_ON EQU #FB ;<3B><><EFBFBD><EFBFBD><EFBFBD><E7A5AD> <20><><EFBFBD><EFBFBD> IN A,(CASH_ON)
CASH_OFF EQU #7B ;<3B><EFBFBD><EFBFBD><E7A5AD> <20><><EFBFBD><EFBFBD> IN A,(CASH_OFF)
CASH_PAGE EQU #5C ;<3B><><EFBFBD><E0A5AA><EFBFBD><E7A5AD> <20><><EFBFBD><E0A0AD> <20><><EFBFBD><EFBFBD>
PAL_V_PAGE EQU 09EH
PAL_SCP EQU 01EH
CNF_PAGE EQU 040H ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>
SYS_PAGE EQU 0FEH
MODE_PAGE EQU 0FCH
;SCR_PAGE EQU 0FDH
;PAL_PAGE EQU 0FDH
KBD_COM EQU 1Bh
KBD_DAT EQU 1Ah
COM_B EQU 1Bh
DAT_B EQU 1Ah
COM_A EQU 19h
DAT_A EQU 18h
LPT1_D EQU 1CH
LPT1_C EQU 1DH
LPT2_D EQU 1EH
LPT2_C EQU 1FH
STC0_C EQU 10H
STC1_C EQU 11H
STC2_C EQU 12H
STC3_C EQU 13H
RAMD_LET EQU ('R' - 'A')
P_KBD_OUT EQU 0F8H
P_KBD_IN EQU 0FEH
;***************************************
;HD_HEADS EQU 5
HD_CS EQU 0A0H
;HD_S_P_T EQU 17
;HD_S_X_H EQU (HD_S_P_T * HD_HEADS) ; ??? <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
P_DATS EQU 050H ; READ/WRITE INIR/OTIR
P_ERR EQU 051H ; READ
P_PREC EQU 151H ; WRITE
P_S_CNT EQU 152H ;
P_S_NUM EQU 153H
P_C_LOW EQU 154H
P_C_HIG EQU 155H ;<-\
P_HD_CS EQU 4152H ;<-/
P_HDST EQU 4053H ; READ
P_CMD EQU 4153H ; WRITE
P_HD3F6 EQU 4154H ; WRITE 3F6
P_HD3F7 EQU 4055H ; READ 3F7
;***************************************
CMOS_DRD EQU 0FFBDh
CMOS_DWR EQU 0BFBDh
CMOS_AWR EQU 0DFBDh
ISA_PORT EQU 09FBDh
;***************************************
SEC_SIZE EQU 11
CLAST_SIZE EQU 13
RESERV_SECS EQU 14
FATS_NUM EQU 16
FLS_NUM EQU 17
S_P_D EQU 19
FORM_CODE EQU 21
S_P_F EQU 22
S_P_T EQU 24
H_P_S EQU 26
SPECIAL_SECS EQU 28
FAT_ID EQU 36H
;***************************************
SYSTEM_ID EQU 0C020H
SYS_SP EQU 0C0FEH ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DISK_TYPE EQU 0C100H ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>
COPY_PAGE0 EQU 0C104H ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
COPY_PAGE1 EQU 0C105H
COPY_PAGE2 EQU 0C106H
COPY_PAGE3 EQU 0C107H
RAMD_VARS EQU 0C108H ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RAM-<EFBFBD><EFBFBD><EFBFBD>
A_RAMD_VARS EQU 0C118H ; <EFBFBD> RAM-Disk
SP_SAVE EQU 0C11AH ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>
ERR_SAVE EQU 0C11CH
COPY_RGADR EQU 0C11DH
RAM_MSD EQU 0C11EH ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD> MS-DOS
MSD_SECS EQU 0C11FH ; <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> MS-DOS
MSD_NAME EQU 0C120H ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>
;MSD_FAT_SEC EQU 0C122H ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> FAT
INT_ADRESS EQU 0C124H ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> CAT
INT_PAGE EQU 0C126H ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> DAT
DS_1440 EQU 0C128H ; <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 720/1440
F_P_S EQU 0C129H ; <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
S_P_C EQU 0C12AH ; <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
COUNT_FL EQU 0C12BH ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
COUNT_SEC EQU 0C12CH ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
C_P_B EQU 0C12DH ; <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>
;CLASTER_LEN EQU 0C12EH ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FAT_FLAG EQU 0C130H ; FAT <EFBFBD> + FAT sector
MSD_CONT_SEC EQU 0C132H ; <EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> MS-DOS
MSD_CONT_SEC2 EQU 0C134H
S_X_H EQU 0C136H ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CONFIG_ALL EQU 0C138H ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CONFIG_DE EQU 0C13AH ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CONFIG_BYTE EQU 0C13EH ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WIN_MAP_SC EQU 0C140H
WIN_TAB_SC EQU 0C142H
WIN_SAV_HL EQU 0C144H
WIN_SAV_DE EQU 0C146H
WIN_SAV_BC EQU 0C148H
WIN_ZG EQU 0C14AH
WIN_PLACE_WIN EQU 0C14CH
WIN_GR_MAP EQU 0C14EH
SYS_WORK1 EQU 0C150H
SYS_WORK2 EQU 0C152H
SYS_WORK3 EQU 0C154H
SYS_WORK4 EQU 0C156H
WIN_MAP_LAB1 EQU 0C158H
WIN_MODE_SH EQU 0C15CH
WIN_MODE_SC EQU 0C15EH
MSD_FAT_SEC EQU 0C160H ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> FAT
MSD_FAT_SEC2 EQU 0C162H ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> FAT
MSD_CAT_SEC EQU 0C164H ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> CAT
MSD_CAT_SEC2 EQU 0C166H ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> CAT
MSD_DAT_SEC EQU 0C168H ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> DAT
MSD_DAT_SEC2 EQU 0C16AH ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> DAT
CLASTER_LEN EQU 0C16CH ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CLASTER_LEN2 EQU 0C16EH ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
;CMOS_FLAG_1 EQU 0C170H
GR_BIT_END EQU 7
S_BIT_END EQU 7
S_BIT_LIN EQU 6
S_BIT_MOD EQU 5
BIT_1440 EQU 1
BIT_MASK_1440 EQU 00000010B
RAMD_KEYS EQU 0C180H ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RAM-Disks
RAMD_KEY_NUM EQU 16
LIB_TABLE EQU 0C1A0H ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD> librares 32 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; +0 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DOS
HDD_INI_TABLE EQU 0C1C0H ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> ide <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 32 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; 0 - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DRV_HEAD
; 1 - <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; 2 - <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; 3 - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>.
; 4 - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
; 5 - <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>.
; 6 - <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
; 7 - reserv - type
FDD_INI_TABLE EQU 0C1E0H ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> FDD <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 32 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RAMD_FAT EQU 0C200H ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RAM-Disk-<EFBFBD><EFBFBD>
MS_BPB EQU 0C400H ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BPB
MS_DIR EQU 0C800H ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DIR sector
MS_FAT EQU 0CC00H ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FAT sector
MS_BUF EQU 0D000H ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DAT sector
HD_IDF_ADR EQU 0C600H
WIN_MAP_IX EQU 0E000H ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TASK_DATA EQU 0EC00H ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; ***** - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - *****
WIN_SIZE_H EQU 0 ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WIN_SIZE_V EQU 1 ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WIN_PLACE_H EQU 2 ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WIN_PLACE_V EQU 3 ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WIN_MODE EQU 4 ; <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WIN_MODE_S EQU 5 ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>
; <EFBFBD><EFBFBD><EFBFBD> 0 - Sp-SCR,
WIN_GR_X EQU 6 ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> X <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
WIN_GR_Y EQU 7 ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> Y <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
WIN_HL EQU 8 ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> HL
WIN_BC EQU 10 ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BC
WIN_DE EQU 12 ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DE
WIN_V_BEG EQU 14 ; <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WIN_V_END EQU 15 ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WIN_H_BEG EQU 16 ; <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WIN_H_END EQU 17 ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WIN_SIZE_REL EQU 18 ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WIN_MODE_E EQU 19 ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>
WIN_WORK_1 EQU 20 ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1
WIN_WORK_2 EQU 21 ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2
WIN_GRAF_X EQU 24 ; <EFBFBD><EFBFBD>砫쭠<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> X
WIN_GRAF_Y EQU 26 ; <EFBFBD><EFBFBD>砫쭠<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> Y
USER_VARS EQU 0F000h ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
;SW_ROM EQU 3CF9H
; IF .PROJ4
;RGADR EQU 0D0H
;RGSCR EQU 0D1H
;RGMOD EQU 0D2H
;RGACC EQU 0D3H
;PGACC EQU 0FCH
;PAGE0 EQU 0C0H
;PAGE1 EQU 0C5H
;PAGE2 EQU 0C2H
;PAGE3 EQU 0C0H
; ELSE
; ENDIF
PAGE0 EQU 082H ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0
PAGE1 EQU 0A2H ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1
PAGE2 EQU 0C2H ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2
PAGE3 EQU 0E2H ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 3
;RGADR EQU 089H
;RGSCR EQU 0A9H
;RGMOD EQU 099H
;RGACC EQU 0B9H
PORT_Y EQU 089H
RGADR EQU 089H
RGSCR EQU 0E9H
RGMOD EQU 0C9H
;RGACC EQU 0A9H
;PGACC EQU 0FCH
CNF_PORT EQU 7Ch
ALTERA EQU 1400H
WG_COM EQU 00FH
WG_TRK EQU 03FH
WG_SEC EQU 05FH
WG_DATA EQU 07FH
P_DOS_FF EQU 0FFH
BUFER_RD EQU 5D25H
PR_BUFER EQU 05B00H
AUTO_5B08 EQU 05B08H
AUTO_5B5C EQU 05B5CH
COPY_P128 EQU 05B5CH
AUTO_5BFF EQU 05BFFH
K_STATE EQU 05C00H
KEY_TIME EQU 05C09H
REP_K_TYME EQU 05C10H
ZG EQU 05C36H
ERR_BEEP EQU 05C38H
KEY_BEEP EQU 05C39H
ERR_NR EQU 05C3AH
FLAGS EQU 05C3BH
TV_FLAG EQU 05C3CH
ERR_SP EQU 05C3DH
LIST_SP EQU 05C3FH
MODE EQU 05C41H
NEW_PPC EQU 05C42H
NEW_S_PPC EQU 05C44H
PPC EQU 05C45H
SUB_PPC EQU 05C47H
BORDER EQU 05C48H
EDIT_PPC EQU 05C49H
BAS_VARS EQU 05C4BH
WORK_VAR EQU 05C4DH
CHANS EQU 05C4FH
CUR_CHL EQU 05C51H
BAS_PROG EQU 05C53H
NEXT_LINE EQU 05C55H
DATA_ADR EQU 05C57H
E_LINE EQU 05C59H
K_CUR EQU 05C5BH
CH_ADR EQU 05C5DH
SINT_ER_AD EQU 05C5FH
WORK_SP EQU 05C61H
STK_BOT EQU 05C63H
STK_END EQU 05C65H
B_REG EQU 05C67H
MEM_CALC EQU 05C68H
FLAGS_2 EQU 05C6AH
L_SCR_SIZE EQU 05C6BH
AUTO_LST_L EQU 05C6CH
OLD_PPC EQU 05C6EH
OLD_S_PPC EQU 05C70H
FLG_INPUT EQU 05C71H
S_VAR_LEN EQU 05C72H
SINT_TB_ADR EQU 05C74H
RAND_SEED EQU 05C76H
FRAMES EQU 05C78H
UDG EQU 05C7BH
X_Y_COORD EQU 05C7DH
PRN_POS EQU 05C7FH
ADR_PR_BUF EQU 05C80H
ECHO_E EQU 05C82H
SCR_PL_M EQU 05C84H
SCR_PL_L EQU 05C86H
SCR_POS_M EQU 05C88H
SCR_POS_L EQU 05C8AH
SCROLL_ST EQU 05C8CH
ATTR_P EQU 05C8DH
MASK_P EQU 05C8EH
ATTR_T EQU 05C8FH
MASK_E EQU 05C90H
FLAGS_ATR EQU 05C91H
MEM_BOT EQU 05C92H
AUTO_5C9A EQU 05C9AH
NMI_ADR EQU 05CB0H
TOP_CLEAR EQU 05CB2H
P_RAMTOP EQU 05CB4H
BEG_ADRESS EQU 05CB6H
RET_INS EQU 05CC2H
AUTO_5CC3 EQU 05CC3H
DISK_A EQU 05CC8H
DISK_B EQU 05CC9H
DISK_C EQU 05CCAH
DISK_D EQU 05CCBH
CAT_SEC EQU 05CCCH
DRV_READY EQU 05CCDH
RD_WR_COM EQU 05CCEH
VAR_1 EQU 05CCFH
AUTO_5CD1 EQU 05CD1H
AUTO_5CD2 EQU 05CD2H
AUTO_5CD3 EQU 05CD3H
AUTO_5CD5 EQU 05CD5H
DOS_ERROR EQU 05CD6H
MED_START EQU 05CD7H
DOS_CH_ADR EQU 05CD9H
MED_LEN EQU 05CDBH
FL_NAME EQU 05CDDH
FL_N_2 EQU 05CDFH
FL_N_4 EQU 05CE1H
FL_N_6 EQU 05CE3H
FL_N_7 EQU 05CE4H
FL_TYPE EQU 05CE5H
FL_START EQU 05CE6H
FL_LEN EQU 05CE8H
START_CLASTER EQU FL_LEN
FL_SIZE EQU 05CEAH
FL_PLACE EQU 05CEBH
VAR_2 EQU 05CEDH
INTERF_I EQU 05CEFH
VAR_2_0 EQU 05CF1H
VAR_2_1 EQU 05CF2H
CONT_SEC EQU 05CF4H
CONT_TRK EQU 05CF5H
OPER_DISK EQU 05CF6H
DOS_FLAG EQU 05CF7H
DISK_1_FLG EQU 05CF8H
DISK_2_FLG EQU 05CF9H
TIME_A EQU 05CFAH
TIME_B EQU 05CFBH
TIME_C EQU 05CFCH
TIME_D EQU 05CFDH
COMAND_WG EQU 05CFEH
SEC_NUM EQU 05CFFH
CONT_BUF_ADR EQU 05D00H
WORK_2 EQU 05D02H
WORK_4 EQU 05D04H
S_NAME_NUM EQU 05D06H
N_DEL_FLS EQU 05D07H
FST_SYM_NAME EQU 05D08H
VAR_3 EQU 05D09H
BUF_FLAG EQU 05D0CH
BAS_DOS_FLG EQU 05D0EH
DOS_ERR_2 EQU 05D0FH
ERR_3D00 EQU 05D10H
ADR_DOS_COM EQU 05D11H
ERR_SP_COPY EQU 05D13H
MSG_FLAG EQU 05D15H
PDOS_COPY EQU 05D16H
FLAG_BOOT EQU 05D17H
INT_1_VAR EQU 05D18H
CONT_DISK EQU 05D19H
ADR_RET EQU 05D1AH
DOS_SP EQU 05D1CH
FL_NUMBER EQU 05D1EH
COM_LN_COPY EQU 05D20H
L_5D23 EQU 05D23H
BUFER EQU 05D25H
AUTO_5D33 EQU 05D33H
CLEAR_SEC EQU 05E06H
CLEAR_TRK EQU 05E07H
TYPE_DISK EQU 05E08H
N_FILES EQU 05E09H
FREE_SEC EQU 05E0AH
CODE_10H EQU 05E0CH
DISK_MRK_1 EQU 05E0FH
DISK_ALT_NM EQU 05E10H
N_DEL_FL EQU 05E19H
DISK_NAME EQU 05E1AH
;RET_PAGE0 MACRO
; LD A,0
; OUT (PAGE0),A
; ENDM
;RET_PAGE1 MACRO
; LD A,5
; OUT (PAGE1),A
; ENDM
;RET_PAGE2 MACRO
; LD A,2
; OUT (PAGE2),A
; ENDM
;
MACRO RET_PAGE3
LD A, 0
OUT (PAGE3), A
ENDM
;
MACRO DSS adr, dt
IF (adr >= $)
DUP ((adr - $) / 16)
DB dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt
EDUP
DUP (adr - $)
DB dt
EDUP
ELSE
ASSERT 0, "Error memory relocation."
ENDIF
ENDM
MACRO CALL_48 adr
LOCAL ADR_R
PUSH HL
LD HL, ADR_R
PUSH HL
LD HL, SW_ROM
PUSH HL
LD HL, adr
JP JP_HL_48
ADR_R: POP HL
ENDM
MACRO CALL_48X adr
LOCAL ADR_R
PUSH HL
LD HL, ADR_R
EX (SP), HL
PUSH HL
LD HL, SW_ROM
EX (SP), HL
PUSH HL
LD HL, adr
EX (SP), HL
JP SW_ROM
ADR_R:
ENDM
MACRO RAMD_KEY
SUB 4
DI
LD B, SYS_PAGE
LD C, PAGE3
OUT (C), B
LD HL, RAMD_KEYS
ADD A, L
LD L, A
DEC L
LD (A_RAMD_VARS), HL
INC L
LD L, (HL)
RET_PAGE3
EI
LD A, L
ENDM
; <EFBFBD><EFBFBD>p<EFBFBD><EFBFBD> Sprinter. (<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PORT_X)<<
; 0 - port FF<<
; 1 - port keyboard<<
; 2 - port BORDER<<
; 3 - port 1FFDh<<
; 4 - port 7FFDh<<
; 5 - port 3FFDh<<
; 6 - port Start-ROM<<
; 7 - port Start-ROM-ALT<<
; 8 - port ROM-BASIC48<<
; 9 - port ROM-BASIC128<<
; 10 - port ROM-TR-DOS<<
; 11 - port ROM-EXPANSION<<
; 12 - port ROM-BASIC48-ALT<<
; 13 - port ROM-BASIC128-ALT<<
; 14 - port ROM-TR-DOS-ALT<<
; 15 - port ROM-EXPANSION-ALT<<
; 16 Ŀ<<
; .. Ĵ<<
; 31 <EFBFBD><EFBFBD><EFBFBD>ports RAM-PAGES - <EFBFBD><EFBFBD>p<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>p<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><<
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>p<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0..F <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD> Scorpion.<<
; 33 - port RAM-0 <EFBFBD><EFBFBD>p<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>p<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD><<
; 34 - port RAM-5 <EFBFBD><EFBFBD>p<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD>p<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>p<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD><<
; 35 - port RAM-2 <EFBFBD><EFBFBD>p<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>p<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>p<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD><<
; 36 - port CONFIG<<
; 37 - port COVOX-1<<
; 38 - port COVOX-2<<
; 39 - port AY-3-8910-adr<<
; 40 - port AY-3-8910-dat<<
; 41 - port KEMPSTON<<
; 42 - port ISA-interface<<
; 43 Ŀreserv<<
; .. Ĵ<<
; 47 <EFBFBD><EFBFBD><<
; 48 - 51 <EFBFBD><EFBFBD>p<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>93<<
; 52 - <EFBFBD><EFBFBD>p<EFBFBD> DOS-1<<
; 53 - <EFBFBD><EFBFBD>p<EFBFBD> DOS-2<<
; 54 Ŀ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>p<EFBFBD><EFBFBD><<
; .. Ĵ<<
; 63 <EFBFBD><EFBFBD><<
; 64 Ŀ <EFBFBD><EFBFBD>p<EFBFBD><EFBFBD> IDE interface<<
; .. Ĵ<<
; 79 <EFBFBD><EFBFBD><<
; 80..127 - p<EFBFBD><EFBFBD><EFBFBD>p<EFBFBD>.<<
; 128..143 - <EFBFBD><EFBFBD>p<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> ( ⮫쪮 <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>.)<<
; 144..254 - p<EFBFBD><EFBFBD><EFBFBD>p<EFBFBD><<
; 255 - <EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<EFBFBD><EFBFBD>p<EFBFBD> - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<<
;

@ -1 +1 @@
Subproject commit 9a65a386bfb6aaccc7fb476a3e159a684af65743
Subproject commit 8c5550f810d173790e4665d610328b9247b00f02