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,22 +1,5 @@
;==================================================================================================================
;
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
; ’مâ ل¨¤ïâ ¯¥à¥¬¥­­ë¥, ھ®­لâ ­âë ¨ ،من¥àë
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
@ -38,6 +21,7 @@ error_freeMem: DB '
error_readConf: DB 'Žè¨¡ª  ç⥭¨ï ä ©«  ¯à®è¨¢ª¨!',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 (®¡à â­ë© ¯®à冷ª!) ¤«ï § £àã§ç¨ª  ª®­äë ¢ ¡¨®á.
@ -48,7 +32,8 @@ IsEXElength EQU $
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
@ -57,16 +42,17 @@ 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', â® çâ®-â® ¡ã¤¥â
;-----------------;
;
Reload_String: DB 'ACEX_30K_LOADING' ; ä« £ § «¨¢ª¨ ª®­äë ¨§ ª¥è 
VMod: db 0 ; <EFBFBD>¥¦¨¬ íªà ­ 
VModPage: db 0 ; ‘âà ­¨æ  íªà ­ 
@ -75,15 +61,14 @@ 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

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

View File

@ -10,36 +10,30 @@
; | _| (_) | | ___) | |_) | | | | | | | || __/ | | |__| (_) | | | | | | |_) | |_| | || __/ |
; |_| \___/|_| |____/| .__/|_| |_|_| |_|\__\___|_| \____\___/|_| |_| |_| .__/ \__,_|\__\___|_|
; |_| |_|
;*******************************************************
;
;----------------------------------------------------------------------;
; ‚¥àá¨ï ¯à®£¨ ¨ ¨­ä® ¤«ï ¯®­â®¢:
DEFINE Ver_ID "0.3 alpha"
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 TraceMSG tr_mess
LD HL,tr_mess
CALL PrintStr
MACRO _PrintStr
LD C,#5C
RST ToDSS
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.3 alpha"
DEFINE e_mail "Tolik.Trek@gmail.com"
; <20>®¤£à㧪  ä ©«  á ª®­áâ ­â ¬¨ BIOS ¨ DSS:
INCLUDE "SP2000.inc"
; <20>®¤£à㧪  ä ©«  á ®è¨¡ª ¬¨)))
INCLUDE "Errors_MSG.mac"
;
;----------------------------------------------------------------------;
ST_Point EQU #BFFE ;  ¤à¥á á⥪ 
SP_Win EQU 64 ; ¬­¨¬ë© ª®­âà®«ì ¯¥à¥á¥ç¥­¨ï á⥪  á ª®¤®¬
ORG_Addr EQU #8100 ;  ¤à¥á ª®¬¯¨«ï樨. DSS ¢áâ ¢«ï¥â áâபã
@ -54,7 +48,7 @@ ORG_Addr EQU #8100 ;
; |_____/_/\_\_____| |_| |_| \___|_| |_/_/\_\
;-----------------;
ORG ORG_Addr-#200
ORG ORG_Addr-22
; ‘­ ç «  ¢ EXE ä ©«¥ ¨¤ñâ § £®«®¢®ª
; ¤«¨­­®© ¢ 1 ᥪâ®à (512 ¡ ©â)
;-----------------;
@ -70,7 +64,6 @@ ORG_Addr EQU #8100 ;
DW START ; €¤à¥á à á¯®«®¦¥­¨ï ª®¤  ¢ ¯ ¬ïâ¨
DW START ; €¤à¥á ¢ ¯ ¬ïâ¨ á ª®â®à®£® § ¯ãáâ¨âáï ª®¤ (Reg. PC)
DW ST_Point ; €¤à¥á á⥪  (Reg. SP)
BLOCK 490 ; Reserved. „®¡¨¢ª  ¤® ª®­æ  ᥪâ®à  (512 ¡ ©â). Œ®¦¥â ¨á¯®«ì§®¢ âìáï ¢ ­®¢ëå ¢¥àá¨ïå DSS
;*******************************************************
; __ __ _
@ -88,54 +81,48 @@ START:
LD HL,Buffer
LD D,D ; “áâ ­®¢¨âì à §¬¥à ¡«®ª 
LD A,255 ; <20> §¬¥à ¡«®ª 
LD C,C ;
LD A,0 ;
LD C,C
LD A,0
LD (HL),A
LD B,B ; ‚몫îç ¥¬  ªá¥«ì
EI
;-----------------; ‘®å࠭塞 ⥪ã騥 áâà ­¨æë
IN A,(PAGE0)
IN A,(SLOT0)
LD (page0_save),A
IN A,(PAGE1)
IN A,(SLOT1)
LD (page1_save),A
IN A,(PAGE2)
IN A,(SLOT2)
LD (page2_save),A
IN A,(PAGE3)
IN A,(SLOT3)
LD (page3_save),A
;-----------------;
;-----------------; ‘®å࠭塞 ­ áâனª¨ íªà ­ 
push ix
ld c,51h
rst 10h
pop ix
jp nc,1f
PUSH IX
LD C,51h
RST ToDSS
POP IX
JP NC,1f
LD HL,error_Vmode
JP BadExit
1:
ld (VMod),a
ld a,b
ld (VModPage),a
;-----------------;
;-----------------; ‘®å࠭塞 §­ ç¥­¨¥ ¯®àâ  #1FFD
LD BC,1FFDh
IN A,(C)
ld (port_1ffd_save),a
LD (VMod),A
LD A,B
LD (VModPage),A
;-----------------;
;-----------------; ‘®å࠭塞 ¤¥ä®«â­ë¥ áâà ­¨æë
DI
LD A,Spec_Page
OUT (PAGE3),A ; ®âªàëâì ᯥæ-áâà ­¨æã
ld hl,#FFF0
ld de,page0_def
ldi
ldi
ldi
ldi
OUT (SLOT3),A ; ®âªàëâì ᯥæ-áâà ­¨æã
LD HL,#FFF0
LD DE,page0_def
LDI
LDI
LDI
LDI
LD A,(page3_save)
OUT (PAGE3),A ; ¢¥à­ãâì áâà ­¨æã
OUT (SLOT3),A ; ¢¥à­ãâì áâà ­¨æã
EI
;-----------------;
@ -145,14 +132,14 @@ START:
AND A ; ¯à®¢¥à塞 ­  ®âáãâá⢨¥ ¯ à ¬¥â஢
JP NZ,1F ; § ¯ã᪠ ¢ ª®¬.áâப¥. …᫨ ¨å ­¥â,
LD HL,Help_Msg ; â® ¯¥ç â ¥¬ ¨­áâàãªæ¨î ¨ ¢ë室¨¬
CALL PrintStr ; ¨§ ¯à®£à ¬¬ë á ­®à¬ «ì­ë¬ ª®¤®¬
_PrintStr ; ¨§ ¯à®£à ¬¬ë á ­®à¬ «ì­ë¬ ª®¤®¬
LD B,0 ; § ¢¥à襭¨ï.
JP Exit ;
;-----------------;
;-----------------; <20> §¡¨à ¥¬ ¨  ªâ¨¢¨à㥬 ª«îç¨
1:
CALL Set_keys ; ­  ¢ë室¥ CF=0 - ­¥â ®è¨¡ª¨
CALL Set_keys ; ­  ¢ë室¥: CF=0 - ­¥â ®è¨¡ª¨
JR NC,1F ; F=1 - ¥áâì ®è¨¡ª 
LD HL,error_ComStr ; …᫨ à §®¡à «¨ á ®è¨¡ª ¬¨
JP BadExit ; â® ¢ë室 á ®è¨¡ª®©
@ -160,9 +147,8 @@ START:
;-----------------; ¥á«¨ ­®à¬. § ¢¥à襭¨¥ set_keys
1:
IFDEF debug : if debug : TraceMSG trace_msg1 : endif : endif
;
CALL TestConf ; ¯à®¢¥àª  ª®­äë. ­  ¢ë室¥ CF=0 - ­¥â ®è¨¡ª
CALL TestConf ; ¯à®¢¥àª  ª®­äë. ­  ¢ë室¥: CF=0 - ­¥â ®è¨¡ª
JR NC,1F ; F=1 - ¥áâì ®è¨¡ª 
LD HL,error_confFile ; …᫨ ª®áïª á ä ©«®¬ ¯à®è¨¢ª¨
JP BadExit ; â® ¢ë室 á ®è¨¡ª®©
@ -170,7 +156,6 @@ START:
;-----------------; ¥á«¨ ­®à¬. § ¢¥à襭¨¥ TestConf
1:
IFDEF debug : if debug : TraceMSG trace_msg2 : endif : endif
;
CALL TakeMem ; ‚뤥«¥­¨¥ ¯ ¬ï⨠¤«ï ª®­äë 65536 ¡ ©â
JR NC,1F
@ -180,11 +165,10 @@ START:
;-----------------; ¥á«¨ ­®à¬. § ¢¥à襭¨¥ TakeMem
1:
IFDEF debug : if debug : TraceMSG trace_msg3 : endif : endif
;
CALL Load_conf ; —¨â ¥¬ ¯à®è¨¢ªã ¨§ ä ©«  (¬¥­ï¥â PAGE3)
LD A,(page3_save) ; ¢®ááâ ­ ¢«¨¢ ¥¬ áâà ­¨æã
OUT (PAGE3),A ; ¯ ¬ï⨠¯®á«¥ ᬥ­ë
OUT (SLOT3),A ; ¯ ¬ï⨠¯®á«¥ ᬥ­ë
JR NC,1F
LD HL,error_readConf ; …᫨ ®è¨¡ª  ¯à¨ ç⥭¨¨ ¯à®è¨¢ª¨ ¨§ ä ©« 
JP BadExit ; â® ¢ë室 á 祬? <20>à ¢¨«ì­®, á ®è¨¡ª®©
@ -192,15 +176,10 @@ START:
;-----------------; ¥á«¨ ­®à¬. § ¢¥à襭¨¥ Load_conf
1:
IFDEF debug : if debug : TraceMSG trace_msg4 : endif : endif
;
; IFDEF sprinter : if sprinter : iDontKnow : endif : endif
;
LD DE,ReloadRET ; €¤à¥á އ<E280A1>€ ¯®á«¥ ¯¥à¥§ £à㧪¨
LD (SP_Save),SP ; á®å࠭塞 á⥪
CALL Set_Ret ; ãáâ ­®¢ª  ¤ ­­ëå ¤«ï ¢®§¢à â 
;
IFDEF debug : if debug : TraceMSG trace_msg5 : endif : endif
;
CALL Set_Acex_Data ; ¯¥à¥£à㧪  ¤ ­­ëå ACEX ¢ FAST-RAM
; <20>®á«¥ í⮩ ¯à®æ¥¤ãàë å¨âன ^^^^^^ ­ ç¨­ îâáï £«îª¨
@ -208,58 +187,26 @@ START:
; ¨«¨ á ¯ ¬ïâìî, ­¥ à §®¡à «áï. <20>®í⮬㠯®á«¥ ­¥ñ «ãçè¥
; áà §ã ¢ à¥á¥â á £®«®¢®© ¨ ­¥ ¯ à¨âìáï...
;-----------------;
IFDEF debug : if debug : TraceMSG trace_msg6 : endif : endif
;-----------------; 7 ¡¥¤ - 1 à¥á¥â
RESET:
DI
LD A,16
LD BC,1FFDh
OUT (C),A
LD A,0A0h
OUT (PAGE3),A
LD (0C000h),A ; ¢ íâ®â ¬®¬¥­â ¯®¤ ¥âáï RESET
DI ; £«îª®ã«®¢¨â¥«ì
HALT
/*
DI
IN A,(PAGE1) ; ®âªàë⨥ ¯®àâ  á¡à®á 
PUSH AF
LD A,40h
OUT (PAGE1),A ; set DCP page
LD A,2Eh
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
POP AF
OUT (PAGE1),A ; Close PAGE1 ???????
RESET_LOOP: ; 横« á¡à®á 
LD BC,#0100
;
.LOOP: LD BC,#100
OUT (C),C
LD BC,#0000
LD B,0
OUT (C),C
JR RESET_LOOP ; ¯®«­®áâìî § æ¨ª«¨âì!
HALT ; ¯ë«¥ã«®¢¨â¥«ì
*/
JR .LOOP ; ¯®«­®áâìî § æ¨ª«¨âì!
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
; ____ _ _ ____ _
; | _ \ _ __(_)_ __ | |_ / ___|| |_ _ __
; | |_) | '__| | '_ \| __| \___ \| __| '__|
; | __/| | | | | | | |_ ___) | |_| |
; |_| |_| |_|_| |_|\__| |____/ \__|_|
; <09>¥ç âì áâப¨. €¤à¥á áâப¨ ¢ HL
;-----------------;
PrintStr:
LD C,#5C
RST 10h
RET
;*******************************************************
;
; ____ _ _ ____ _____ _____
; | _ \ ___| | ___ __ _ __| | | _ \| ____|_ _|
; | |_) / _ \ |/ _ \ / _` |/ _` | | |_) | _| | |
@ -272,31 +219,31 @@ PrintStr:
ReloadRET:
DI
LD SP,(SP_Save)
LD A,CNF_0 ; ª®­ä¨£ãà æ¨ï ¨ ®âª«î祭¨¥ <20>‡“
OUT (SYS_PORT_OFF),A
LD A,CNF_PORT.CNF_0 ; ª®­ä¨£ãà æ¨ï ¨ ®âª«î祭¨¥ <20>‡“
OUT (SYS_PORT.OFF),A
LD A,(page0_save) ; SET PAGE DOS
OUT (PAGE0),A
OUT (SLOT0),A
LD A,(page3_save) ; ¢®§¢à â áâ à®© áâà ­¨æë PAGE3
OUT (PAGE3),A
OUT (SLOT3),A
;-----------------;
;-----------------; <20> ¡®â  ¯à®£à ¬¬ë á ­®¢®© ¯à®è¨¢ª®©
ld a,(e_key)
and a
jp z,1F
ld hl,EXEfileBuff ; ‡ ¯ã᪠EXE
ld bc,0040h
rst 10h
LD A,(e_key)
AND A
JP Z,1F
LD HL,EXEfileBuff ; ‡ ¯ã᪠EXE
LD BC,0040h
RST ToDSS
;-----------------;
;-----------------;
1:
di
DI
ld a,(a_key) ; ‚ë室 ¡¥§ ¢®ááâ ­®¢«¥­¨ï ¤¥ä®«â­®© ª®­äë?
and a
LD A,(a_key) ; ‚ë室 ¡¥§ ¢®ááâ ­®¢«¥­¨ï ¤¥ä®«â­®© ª®­äë?
AND A
jp nz,1F
JP NZ,1F
; jp nz,NormExit
; jp nz,NextReloadRET
@ -311,25 +258,20 @@ ReloadRET:
; jr nz, NextReloadRET
DI
IN A,(CASH_ON) ; ‚ª«î祭¨¥ ªíè 
LD BC,1FFDh
XOR A
OUT (C),A ; ®âª«îç¨âì RAM-0
LD A,CNF_0
OUT (SYS_PORT_ON),A ; DCP-PAGE 0
IN A,(FastRAM.ON) ; ‚ª«î祭¨¥ ªíè 
LD A,3
OUT (CASH_PAGE),A ; ‘âà ­¨æ  Š<>˜ = 3
OUT (FastRAM.SLOT0),A ; ‘âà ­¨æ  Š<>˜ = 3
LD A,#FF
ld (#3ef0),a ; § â¨à ­¨¥ ACEX_K30_LOADING
LD (#3EE0),a ; § â¨à ­¨¥ "IM" ä« £ 
LD (#3EF0),A ; § â¨à ­¨¥ ACEX_K30_LOADING
LD (#3EE0),A ; § â¨à ­¨¥ "IM" ä« £ 
call page0_restore ; ‚®§¢à â ­  ¬¥áâ® ­ã«¥¢®© áâà ­¨æë
XOR A ; Žâª«î祭¨¥ ªíè 
OUT (FastRAM.SLOT0),A ; ¯¨è¥¬ ¢ FastRAM.SLOT0 ­®«ì, ¨­ ç¥ ¢
IN A,(FastRAM.OFF) ; ­ã«¥¢®¥ ®ª­® ¡¨®á ¨«¨ „‘‘ ­¥ ¢®âª­ãâáï
jp NextReloadRET
JP NextReloadRET
;*******************************************************
@ -351,19 +293,19 @@ NextReloadRET:
;
;-----------------; ‡ â¨à ¥¬ á«¥¤ë ­¥á⮪®¢®© ª®­äë
LD A,Spec_Page
OUT (PAGE3),A ; ®âªàëâì ᯥæ-áâà ­¨æã
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 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)
@ -371,41 +313,40 @@ NextReloadRET:
; ld A,(page1_save)
; LD (0FFF1h),A
; ld A,(page2_save)
; LD (0FFF2h),A ; ¯à®£à ¬¬ë ¤«ï ¢®§¢à â ???
/*
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 ; ä« £ ¯¥à¥§ ¯ã᪠
; 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 A,'Z'
LD (#FFFE),A
LD A,'X'
LD (#FFFF),A ; ä« £ ¯¥à¥§ ¯ã᪠
*/
;-----------------;
;
LD SP,(SP_Save)
LD A,CNF_0 ; ª®­ä¨£ãà æ¨ï ¨ ®âª«î祭¨¥ <20>‡“
OUT (SYS_PORT_OFF),A
LD A,CNF_PORT.CNF_0 ; ª®­ä¨£ãà æ¨ï ¨ ®âª«î祭¨¥ <20>‡“
OUT (SYS_PORT.OFF),A
LD A,(page0_save) ; SET PAGE DOS
OUT (PAGE0),A
OUT (SLOT0),A
LD A,(page1_save)
OUT (PAGE1),A
OUT (SLOT1),A
; ƒ«ï­ãâì, ¬®¦¥â ­¥ ­ ¤® ¢®§¢à é âì ®¤­ã ¨§ áâà ­¨æ???
LD A,(page3_save)
OUT (PAGE3),A
OUT (SLOT3),A
JP NormExit
;*******************************************************
@ -419,23 +360,19 @@ NextReloadRET:
;-----------------;
NormExit:
LD HL,WellDone
CALL PrintStr
_PrintStr
LD B,0
CALL Exit
;-----------------;
BadExit: ; HL áâப  á ®è¨¡ª®©
CALL PrintStr
; HL áâப  á ®è¨¡ª®©
BadExit: _PrintStr
LD B,1 ; ª®¤ ®è¨¡ª¨
CALL Exit
;-----------------;
;-----------------;
Exit:
LD A,CNF_0 ;??????
OUT (SYS_PORT_OFF),A
;
PUSH BC
Exit: PUSH BC
LD HL,FirstHandler
LD C,12h
LD B,(LastHandler-FirstHandler)
@ -445,7 +382,7 @@ Exit:
JR Z,1F
PUSH HL
PUSH BC
RST 10h
RST ToDSS
POP BC
POP HL
1: INC HL
@ -453,34 +390,34 @@ Exit:
;-----------------;
;-----------------; ®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì, ¥á«¨ ª«ï­ç¨«¨
ld c,#C3
ld a,(ram_blk_id)
cp 0
jr z,1F
rst 8
LD A,(ram_blk_id)
CP 0
JR Z,1F
LD C,#C3
RST ToBIOS
;-----------------;
;-----------------; ¢®ááâ ­ ¢«¨¢ ¥¬ íªà ­
ld c,53h
rst 10h
push de
LD C,53h
RST ToDSS
PUSH DE
ld a,(VModPage)
ld b,a
ld a,(VMod)
ld c,50h
rst 10h
LD A,(VModPage)
LD B,A
LD A,(VMod)
LD C,50h
RST ToDSS
ld c,52h
pop de
rst 10h
LD C,52h
POP DE
RST ToDSS
;-----------------;
;-----------------; ‚ë室 ¢ DOS
1:
POP BC
LD C,41h
RST 10h
RST ToDSS
DI
HALT
;-----------------;
@ -499,7 +436,7 @@ Exit:
Set_keys:
LD HL,(dss_line)
INC HL
ld (NextParameter),hl
LD (NextParameter),HL
.CheckChar:
CALL .GetParam
JP NC,1F
@ -531,7 +468,7 @@ Set_keys:
;-----------------;
.set_keys_l:
inc c
INC C
.set_keys_a:
INC C
.set_keys_x:
@ -543,7 +480,7 @@ Set_keys:
LD HL,key_buff ; ‚ëç¨á«ï¥¬ ï祩ªã åà ­¥­¨ï ª«îç 
ADD HL,BC
LD A,(HL) ; ¨ ¯à®¢¥à塞 ­¥â «¨ â ¬ 㦥 ª«îç .
and a ; ¥á«¨ ¥áâì, §­ ç¨â ª«îç ¢¢¥¤ñ­ 2 à § 
AND A ; ¥á«¨ ¥áâì, §­ ç¨â ª«îç ¢¢¥¤ñ­ 2 à § 
SCF
RET NZ ; ®è¨¡ª  - ¯®¢â®à ª«îç . ¢ë室
@ -552,9 +489,9 @@ Set_keys:
LD (HL),A ; ãáâ ­®¢¨«¨ ª«îç
; EX DE,HL ; <20><E28099>Ÿœ “Š€‡€’…‹œ <20>€ ‘‹…„“ž™ˆ‰ <20><EFBFBD>€Œ…<E280A6>!
; JR Z,.CheckChar ; ¥á«¨ ª«îç "A" â® á«¥¤ãî騩 ªà㣠横« 
sub C ; ’ãâ Ž†ˆ„€…’‘Ÿ, çâ® €=1. …᫨ >1, â® íâ® ª«îç ¡¥§ ¯ à ¬¥â஢
SUB C ; ’ãâ Ž†ˆ„€…’‘Ÿ, çâ® €=1. …᫨ >1, â® íâ® ª«îç ¡¥§ ¯ à ¬¥â஢
; JR Z,.CheckChar ; ¥á«¨ ª«îç "X" â® á«¥¤ãî騩 ªà㣠横« 
JR c,.CheckChar ; ¥á«¨ ª«îç ¡®«ìè¥ ª«îç  'e', â® á«¥¤ãî騩 ªà㣠横« 
JR C,.CheckChar ; ¥á«¨ ª«îç ¡®«ìè¥ ª«îç  'e', â® á«¥¤ãî騩 ªà㣠横« 
PUSH BC
CALL .GetParam ; ¯®«ãç ¥¬ á«¥¤ãî騩 ¯ à ¬¥âà áâப¨ DOS ª ­ ©¤¥­®¬ã ª«îçã
@ -562,8 +499,8 @@ Set_keys:
RET C ; ¢ë室, ¥á«¨ ®è¨¡ª 
; EX DE,HL ; <20><E28099>Ÿœ “Š€‡€’…‹œ <20>€ ‘‹…„“ž™ˆ‰ <20><EFBFBD>€Œ…<E280A6>!
LD HL,FirstHandler ; ¢ëç¨á«ï¥¬ ï祩ªã åà ­¥­¨ï 奭¤«¥à 
ADD HL,BC ;
; DEC HL ;
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>!
@ -579,7 +516,7 @@ Set_keys:
LD C,43h ; âã⠢뤥«ï¥¬ ¯ à ¬¥âà § ¯ã᪠
LD DE,Buffer ; ¡ãä¥à ¤«ï ®¯¥à æ¨© á® áâப ¬¨
RST #10 ; ¯®«ãç ¥¬ ¢ ¡ãä¥à¥ á«¥¤ãî騩 ¯ à ¬¥âà
ld (NextParameter),hl
LD (NextParameter),HL
CCF
LD A,(Buffer)
AND A
@ -594,7 +531,7 @@ Set_keys:
LD (HL),C ; ¢â몠¥¬ §­ ç¥­¨¥ ª«îç  ¢ ª®¤
LD BC,#0045 ; ¯à®¢¥à塞 ¡ãä¥à ­  ª®à४⭮áâì ¨¬¥­¨ ä ©« 
LD HL,Buffer ; ????? ᤥ« âì ¯à®¢¥àªã ­  ª®à४⭮áâì ¢á¥£® ¯ãâ¨?????
RST 10h
RST ToDSS
RET C ; ®è¨¡ª  ¢ áâப¥
AND %00000011 ; ¯à®¢¥à塞, çâ® ¥áâì ¨¬ï ¨
XOR %00000011 ; à áè¨à¥­¨¥ ä ©«  (0 ¨ 1 ¡¨âë)
@ -604,7 +541,7 @@ Set_keys:
LD A,0
LD C,11h
LD HL,Buffer
RST 10h ; ®âªàë⨥ ä ©« 
RST ToDSS ; ®âªàë⨥ ä ©« 
RET C ; ®è¨¡ª  ä ©«  - ¢ë室
LD (.fileHandler),A ; á®å࠭塞 奭¤«¥à
.fileHandler EQU $-2
@ -614,14 +551,14 @@ Set_keys:
key_save EQU $+1
LD A,#FF ; á ¢®âª­ñâáï §­ ç¥­¨¥ ¨§ ॣ¨áâà  C
XOR 1 ; ¥á«¨ 1, â® íâ® ª«îç "E"
ret NZ ; ¥á«¨ ­¥â, â® ¢ë室 ¨§ ¯à®æ¥¤ãàë.
RET NZ ; ¥á«¨ ­¥â, â® ¢ë室 ¨§ ¯à®æ¥¤ãàë.
;-----------------;
;-----------------; <20>஢¥àª  à áè¨à¥­¨ï ä ©« 
LD BC,#0445 ; ª«î箬 "E" ¯à®¢¥à塞 ä ©«
LD HL,Buffer ; ­  à áè¨à¥­¨¥ "EXE" ¢ë¤¥«¨¢
LD DE,BufferEXE ; ¨§ áâப¨ ¨¬¥­¨ à áè¨à¥­¨¥
RST 10h ; ä ©«  ¢ ®â¤¥«ì­ë© ¡ãä¥à ­  4 ¡ ©â 
RST ToDSS ; ä ©«  ¢ ®â¤¥«ì­ë© ¡ãä¥à ­  4 ¡ ©â 
;-----------------;
;-----------------; â¥á⨬ ¡ãä¥à à áè¨à¥­¨ï ¯®á¨¬¢®«ì­®
@ -636,25 +573,24 @@ key_save EQU $+1
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
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
LD A,0
LD (DE),A
LD A,(ExeHandler)
LD C,12h
RST ToDSS
RET
;*******************************************************
@ -674,14 +610,14 @@ TestConf:
SCF
RET Z ; ¢ë室 á ®è¨¡ª®© ¥á«¨ ä ©« ­¥ ®âªàëâ
ex af,af' ; á®å࠭塞 奭¤«¥à, íª®­®¬¨¬ â ªâë)))
ld a,(x_key) ; ¥á«¨ ¯à®¢¥àª  (ª«îç X) ­  奤¥à ¨ à §¬¥à
and a ; ä ©«  ®âª«î祭 , â® ¯à®¯ã᪠¥¬ .TestConfHeader
jr nz,1F
EX AF,AF' ; á®å࠭塞 奭¤«¥à, íª®­®¬¨¬ â ªâë)))
LD A,(x_key) ; ¥á«¨ ¯à®¢¥àª  (ª«îç X) ­  奤¥à ¨ à §¬¥à
AND A ; ä ©«  ®âª«î祭 , â® ¯à®¯ã᪠¥¬ .TestConfHeader
JR NZ,1F
ex af,af' ; ¢®ááâ ­®¢¨«¨ 奭¤«¥à, áíª®­®¬¨«¨ â ªâë)))
EX AF,AF' ; ¢®ááâ ­®¢¨«¨ 奭¤«¥à, áíª®­®¬¨«¨ â ªâë)))
CALL .TestConfHeader
ret c
RET C
1:
CALL .TestConfSize
RET
@ -691,7 +627,7 @@ TestConf:
LD HL,Buffer
LD DE,8
LD C,13h ; ç¨â ¥¬ ¢ ¡ãä¥à ¯¥à¢ë¥ 8 ¡ ©â
RST 10h ; ¤«ï áà ¢­¥­¨ï á è ¡«®­®¬
RST ToDSS ; ¤«ï áà ¢­¥­¨ï á è ¡«®­®¬
RET C
; ; ª®¢ëà塞 ¡ãä¥à ¯®á¨¬¢®«ì­®
@ -719,9 +655,9 @@ TestConf:
SCF
RET NZ
ld a,(x_key) ; ‘à ¢­¨¢ ¥¬ à §¬¥à ä ©«  á íâ ««®­ë¬ ¤«ï 1K30 (59215 ¨«¨ #E74F)
and a ; «¨¡® (¯à¨ ãáâ ­®¢«¥­­®¬ ª«îç¥ X) á ¬ ªá¨¬ «ì­® ¢®§¬®¦­ë¬
jr nz,2F ; ¤«ï ⥪ã饣® § £àã§ç¨ª  ¢ BIOS (61152 ¨«¨ #EEE0)
LD A,(x_key) ; ‘à ¢­¨¢ ¥¬ à §¬¥à ä ©«  á íâ ««®­ë¬ ¤«ï 1K30 (59215 ¨«¨ #E74F)
AND A ; «¨¡® (¯à¨ ãáâ ­®¢«¥­­®¬ ª«îç¥ X) á ¬ ªá¨¬ «ì­® ¢®§¬®¦­ë¬
JR NZ,2F ; ¤«ï ⥪ã饣® § £àã§ç¨ª  ¢ BIOS (61152 ¨«¨ #EEE0)
;
; ’ã⠯஢¥àª  ­  â®ç­®¥ ᮮ⢥âá⢨¥ ¤«ï 1K30
LD HL,(ConfSize)
@ -732,15 +668,15 @@ TestConf:
SUB XL
1: SCF
RET NZ
jp 3F
JP 3F
;
; ’ã⠯஢¥àª  ­  ­¥¯à¨¢ë襭¨¥ 61152 ¡ ©â 
2:
LD HL,(MaxConfSize)
push ix
pop bc
sbc hl,bc
ret c
PUSH IX
POP BC
SBC HL,BC
RET C
3:
LD B,0 ; ‚®§¢à é ¥¬ 㪠§ â¥«ì
@ -753,7 +689,7 @@ TestConf:
LD HL,0
LD IX,0
LD C,15h
RST 10h ; ãáâ ­®¢ª  㪠§ â¥«ï ¢ ä ©«¥
RST ToDSS ; ãáâ ­®¢ª  㪠§ â¥«ï ¢ ä ©«¥
RET
;*******************************************************
@ -767,12 +703,12 @@ TestConf:
;-----------------;
TakeMem:
LD BC,#04C2 ; ‡ ¯à®á ­  ¢ë¤¥«¥­¨¥ 64 Š¡ ¯ ¬ï⨠¯®¤ ª®­äã
RST 8
RST ToBIOS
RET C ; § ¢¥à襭¨¥ - ­¥å¢ âª  ¯ ¬ïâ¨
LD (ram_blk_id),A ;
LD (ram_blk_id),A
LD C,#C5 ; § ¯à®á ­®¬¥à®¢ ¢ë¤¥«¥­­ëå áâà ­¨æ
LD HL,ram_pages ; ¡ãä¥à ¤«ï ¯¥à¥ç¨á«¥­¨ï áâà ­¨æ
RST 8
RST ToBIOS
RET C ; § ¢¥à襭¨¥ - ®è¨¡ª  ¢ ID ¡«®ª 
LD A,B
CP 4
@ -793,31 +729,31 @@ TakeMem:
;-----------------;
Load_conf:
ld DE,#3000
ld hl,ram_pages
ld b,4
LD DE,#3000
LD HL,ram_pages
LD B,4
1:
ld a,(hl)
out (PAGE3),a
push hl
push bc
; call .loopRead
LD A,(HL)
OUT (SLOT3),A
PUSH HL
PUSH BC
; CALL .loopRead
; ; <20> à ¬¥âàë: DE - ᪮«ìª® áç¨â âì ¢ áâà ­¨æã
LD A,(ConfHandler) ;   ªã¤  £à㧨âì - à ááç¨â뢠¥âáï (#0000 - DE)
ld hl,#0000
sbc hl,de ; ’ã⠡㤥⠢ HL  ¤à¥á ªã¤ ,   ¢ DE ᪮«ìª® § £à㦠âì
LD HL,#0000
SBC HL,DE ; ’ã⠡㤥⠢ HL  ¤à¥á ªã¤ ,   ¢ DE ᪮«ìª® § £à㦠âì
LD C,13h
RST 10h
RST ToDSS
pop bc
pop hl
ret c
and a ; ¤®á⨣­ãâ ª®­¥æ ä ©« ?
ret nz ; ¥á«¨ A<>0, â® ¤ . ‚ë室
POP BC
POP HL
RET C
AND A ; ¤®á⨣­ãâ ª®­¥æ ä ©« ?
RET NZ ; ¥á«¨ A<>0, â® ¤ . ‚ë室
inc hl
INC HL
LD DE,#4000
djnz 1B
DJNZ 1B
RET
;*******************************************************
@ -833,95 +769,72 @@ Load_conf:
;-----------------;
Set_Acex_Data:
DI
IN A,(CASH_ON) ; ‚ª«î祭¨¥ ªíè 
LD BC,1FFDh
XOR A
OUT (C),A ; ®âª«îç¨âì RAM-0
LD A,CNF_0
OUT (SYS_PORT_ON),A ; DCP-PAGE 0
IN A,(FastRAM.ON) ; ‚ª«î祭¨¥ ªíè 
LD A,(ram_pages)
OUT (PAGE1),A ; áâà ­¨æ  á ¤ ­­ë¬¨ ä ©« 
OUT (SLOT1),A ; áâà ­¨æ  á ¤ ­­ë¬¨ ä ©« 
xor a
OUT (CASH_PAGE),A ; ‘âà ­¨æ  Š<>˜ = 0
XOR A
OUT (FastRAM.SLOT0),A ; ‘âà ­¨æ  Š<>˜ = 0
LD HL,5000h ; ¯¥à¥ª¨¤ë¢ ­¨¥ ¤ ­­ëå ¢ áâà ­¨æã Š<>˜ = 0
LD DE,1000h
LD BC,3000h
LD HL,#5000 ; ¯¥à¥ª¨¤ë¢ ­¨¥ ¤ ­­ëå ¢ áâà ­¨æã Š<>˜ = 0
LD DE,#1000
LD BC,#3000
LDIR
inc a
OUT (CASH_PAGE),A ; ‘âà ­¨æ  Š<>˜ = 1
INC A
OUT (FastRAM.SLOT0),A ; ‘âà ­¨æ  Š<>˜ = 1
LD A,(ram_pages+1)
OUT (PAGE1),A ; á«¥¤ãîé ï áâà ­¨æ  á ¤ ­­ë¬¨ ä ©« 
OUT (SLOT1),A ; á«¥¤ãîé ï áâà ­¨æ  á ¤ ­­ë¬¨ ä ©« 
ld h,d ; LD HL,4000h
ld d,e ; LD DE,0000h
ld b,h ; LD BC,4000h
LD H,D ; LD HL,4000h
LD D,E ; LD DE,0000h
LD B,H ; LD BC,4000h
LDIR
LD A,2
OUT (CASH_PAGE),A ; ‘âà ­¨æ  Š<>˜ = 2
OUT (FastRAM.SLOT0),A ; ‘âà ­¨æ  Š<>˜ = 2
LD A,(ram_pages+2)
OUT (PAGE1),A ; á«¥¤ãîé ï áâà ­¨æ  á ¤ ­­ë¬¨ ä ©« 
OUT (SLOT1),A ; á«¥¤ãîé ï áâà ­¨æ  á ¤ ­­ë¬¨ ä ©« 
ex de,hl ; LD HL,4000h
ld d,e ; LD DE,0000h
ld b,h ; LD BC,4000h
EX DE,HL ; LD HL,4000h
LD D,E ; LD DE,0000h
LD B,H ; LD BC,4000h
LDIR
LD A,3
OUT (CASH_PAGE),A ; ‘âà ­¨æ  Š<>˜ = 3
OUT (FastRAM.SLOT0),A ; ‘âà ­¨æ  Š<>˜ = 3
LD A,(ram_pages+3)
OUT (PAGE1),A ; á«¥¤ãîé ï áâà ­¨æ  á ¤ ­­ë¬¨ ä ©« 
OUT (SLOT1),A ; á«¥¤ãîé ï áâà ­¨æ  á ¤ ­­ë¬¨ ä ©« 
ld h,d ; LD HL,4000h
ld d,e ; LD DE,0000h
LD H,D ; LD HL,4000h
LD D,E ; LD DE,0000h
LD BC,#3EDF
LDIR
LD HL,Reload_String ; ä« £ ¯¥à¥§ £à㧪¨ ¨§ Š<>˜- 
LD DE,3EF0h
LD C,10h ; LD BC, 16
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 A,(l_key) ; â® "no multiple! ¯¥à¥§ £à㧪  ⮫쪮 ®¤­ ",
AND A ; ¨­ ç¥ - å§, ¥éñ ­¥ ¯à®¡®¢ «.
JR Z,1F
LD HL,(ConfMultKeys+2)
1:
LD (#3EE0),HL
1: LD (#3EE0),HL
LD A,(page1_save) ; ¢®§¢à â áâà ­¨æë 1
OUT (PAGE1),A
OUT (SLOT1),A
call page0_restore ; ‚®§¢à â ­  ¬¥áâ® ­ã«¥¢®© áâà ­¨æë
XOR A ; Žâª«î祭¨¥ ªíè 
OUT (FastRAM.SLOT0),A ; ¯¨è¥¬ ¢ FastRAM.SLOT0 ­®«ì, ¨­ ç¥ ¢
IN A,(FastRAM.OFF) ; ­ã«¥¢®¥ ®ª­® ¡¨®á ¨«¨ „‘‘ ­¥ ¢®âª­ãâáï
RET
;*******************************************************
;-----------------;
;‚®ááâ ­®¢«¥­¨¥ 0-®© áâà ­¨æë
page0_restore:
xor a ; Žâª«î祭¨¥ ªíè 
OUT (CASH_PAGE),A ; ¯¨è¥¬ ¢ CASH_PAGE ­®«ì, ¨­ ç¥ ¢
IN A,(CASH_OFF) ; ­ã«¥¢®¥ ®ª­® ¡¨®á ¨«¨ „‘‘ ­¥ ¢®âª­ãâáï
LD A,CNF_0
OUT (SYS_PORT_OFF),A
LD BC,1FFDh
ld a,(port_1ffd_save)
OUT (C),A
ret
;-----------------;
; ____ _ ____ _____ _____
; / ___| ___| |_ | _ \| ____|_ _|
@ -937,24 +850,24 @@ page0_restore:
Set_Ret:
DI
LD A,Spec_Page
OUT (PAGE3),A ; ®âªàëâì ᯥæ-áâà ­¨æã
OUT (SLOT3),A ; ®âªàëâì ᯥæ-áâà ­¨æã
LD (0FFF3h),A ; á®å࠭塞 ¢ ᯥæáâà ­¨æã ­®¬¥à Spec_Page
LD (#FFF3),A ; á®å࠭塞 ¢ ᯥæáâà ­¨æã ­®¬¥à Spec_Page
LD (#FFF4),DE ;  ¤à¥á ¯à®£à ¬¬ë ¯¥à¥§ ¯ã᪠
ld de,#FFF0 ; á®å࠭塞 áâà ­¨æë 0-2 ¢ ᯥæáâà ­¨æ¥
ld hl,page0_save
ldi
ldi
ldi
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 (PAGE3),A
LD A,(page3_save) ; ‚®ááâ ­ ¢«¨¢ ¥¬ ­ ç «ì­ãî áâà ­¨æã 3
OUT (SLOT3),A
EI
RET
;*******************************************************
@ -969,12 +882,12 @@ 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
ASSERT 0, "Code + Stack = Love!!! ((((("
ENDIF
IF (LastHandler=FirstHandler) or ((LastHandler-FirstHandler)>255)
DISPLAY "FirstHandler = ",/H,FirstHandler
DISPLAY "LastHandler = ",/H,LastHandler
Handler_Error 0
ASSERT 0, "Š®áïª ¢ ¡«®ª¥ åà ­¥­¨ï 奭¤«¥à®¢!!!"
ENDIF
;(.)(.) (.)(.) (.)(.) (.)(.) (.)(.) (.)(.) (.)(.)

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