mirror of
https://github.com/Tolik-Trek/Spectrum.EXE.git
synced 2026-06-15 09:01:38 +03:00
New vROM support, added set CONFIG_DE, refactoring
This commit is contained in:
parent
4e38b3e1ec
commit
29b442dbe6
554
spectrum.asm
554
spectrum.asm
@ -1,29 +1,34 @@
|
|||||||
/*
|
|
||||||
|
|
||||||
.----------------. .----------------. .----------------. .----------------. .----------------. .----------------. .----------------. .----------------.
|
;
|
||||||
| .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. |
|
; .----------------. .----------------. .----------------. .----------------. .----------------. .----------------. .----------------. .----------------.
|
||||||
| | _______ | || | ______ | || | _________ | || | ______ | || | _________ | || | _______ | || | _____ _____ | || | ____ ____ | |
|
; | .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. |
|
||||||
| | / ___ | | || | |_ __ \ | || | |_ ___ | | || | .' ___ | | || | | _ _ | | || | |_ __ \ | || ||_ _||_ _|| || ||_ \ / _|| |
|
; | | _______ | || | ______ | || | _________ | || | ______ | || | _________ | || | _______ | || | _____ _____ | || | ____ ____ | |
|
||||||
| | | (__ \_| | || | | |__) | | || | | |_ \_| | || | / .' \_| | || | |_/ | | \_| | || | | |__) | | || | | | | | | || | | \/ | | |
|
; | | / ___ | | || | |_ __ \ | || | |_ ___ | | || | .' ___ | | || | | _ _ | | || | |_ __ \ | || ||_ _||_ _|| || ||_ \ / _|| |
|
||||||
| | '.___`-. | || | | ___/ | || | | _| _ | || | | | | || | | | | || | | __ / | || | | ' ' | | || | | |\ /| | | |
|
; | | | (__ \_| | || | | |__) | | || | | |_ \_| | || | / .' \_| | || | |_/ | | \_| | || | | |__) | | || | | | | | | || | | \/ | | |
|
||||||
| | |`\____) | | || | _| |_ | || | _| |___/ | | || | \ `.___.'\ | || | _| |_ | || | _| | \ \_ | || | \ `--' / | || | _| |_\/_| |_ | |
|
; | | '.___`-. | || | | ___/ | || | | _| _ | || | | | | || | | | | || | | __ / | || | | ' ' | | || | | |\ /| | | |
|
||||||
| | |_______.' | || | |_____| | || | |_________| | || | `._____.' | || | |_____| | || | |____| |___| | || | `.__.' | || ||_____||_____|| |
|
; | | |`\____) | | || | _| |_ | || | _| |___/ | | || | \ `.___.'\ | || | _| |_ | || | _| | \ \_ | || | \ `--' / | || | _| |_\/_| |_ | |
|
||||||
| | | || | | || | | || | | || | | || | | || | | || | | |
|
; | | |_______.' | || | |_____| | || | |_________| | || | `._____.' | || | |_____| | || | |____| |___| | || | `.__.' | || ||_____||_____|| |
|
||||||
| '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' |
|
; | | | || | | || | | || | | || | | || | | || | | || | | |
|
||||||
'----------------' '----------------' '----------------' '----------------' '----------------' '----------------' '----------------' '----------------'
|
; | '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' |
|
||||||
|
; '----------------' '----------------' '----------------' '----------------' '----------------' '----------------' '----------------' '----------------'
|
||||||
|
;
|
||||||
|
|
||||||
*/
|
|
||||||
/*
|
/*
|
||||||
To do:
|
SYS
|
||||||
SYS:
|
[+] - § ¤ ¢ âì CONFIG_DE ¯¥à¥¤ § ¯ã᪮¬ ᯥªâà㬠¨ ¢ ¯¥à¥å¢ â稪¥ à¥á¥â
|
||||||
[ ] - § ¤ ¢ âì CONFIG_DE ¯¥à¥¤ § ¯ã᪮¬ ᯥªâà㬠¨ ¢ ¯¥à¥å¢ â稪¥ à¥á¥â
|
[+] - ¯®¤¤¥à¦ª ®¢ëå ®¡à §®¢ vROM
|
||||||
images:
|
[+] - ¤®¡ ¢«¥ ᮢ¬¥á⨬®áâì á ¤¥¬® ATARIN, ãᯮ«ì§ãî饥 ¥¯®«ãî ¤¥è¨äà æ¨î ¯®àâ AY
|
||||||
|
[ ] - ¯à®¢¥àïâì ¬¥âªã ZX,¥á«¨ ¬ë ¥ £à㧨¬ 3 ®á®¢ëå vROM
|
||||||
|
[ ] - ¢ ª®ä¨£¥ ¬®£ãâ ¡ëâì ¯à®¯ãé¥ë ¥ª®â®àë¥ vROM,®¨ ¥ § £à㦠îâáï
|
||||||
|
;
|
||||||
|
Images
|
||||||
[+] - Load SCL image
|
[+] - Load SCL image
|
||||||
[ ] - Load TAP image
|
[ ] - Load TAP image
|
||||||
[ ] - Load SNA file
|
[ ] - Load SNA file
|
||||||
;
|
;
|
||||||
features:
|
Features
|
||||||
[ ] - When image filename exist, then instead of SPECTRUM.CFG loads image_filename.cfg if exist too
|
[+] - …᫨ ¢ë¡à ® ret-zx,â® ¯à¨ ¦ ⨨ ¯à®¡¥« áà §ã ¯®á«¥ CAD ¢¥àñâ ¢ DSS
|
||||||
|
[ ] - When image filename exist,then instead of SPECTRUM.CFG loads image_filename.cfg if exist too
|
||||||
[ ] - ‚ë¤ ¢ âì á®®¡é¥¨ï ï§ëª¥ ãáâ ®¢«¥®¬ ¢ CMOS
|
[ ] - ‚ë¤ ¢ âì á®®¡é¥¨ï ï§ëª¥ ãáâ ®¢«¥®¬ ¢ CMOS
|
||||||
[ ] - Œ¥ïâì ᯥªâà㬮¢áªãî ¯ «¨âàã
|
[ ] - Œ¥ïâì ᯥªâà㬮¢áªãî ¯ «¨âàã
|
||||||
*/
|
*/
|
||||||
@ -39,9 +44,9 @@ To do:
|
|||||||
;
|
;
|
||||||
; Defines section
|
; Defines section
|
||||||
;***************************************
|
;***************************************
|
||||||
ifndef DEBUG : define DEBUG 0 : endif
|
IFNDEF DEBUG : DEFINE DEBUG 0 : ENDIF
|
||||||
ifndef EMULATOR 0 : define EMULATOR 0 : endif
|
IFNDEF EMULATOR 0 : DEFINE EMULATOR 0 : ENDIF
|
||||||
define EXE_HEADER 1
|
DEFINE EXE_HEADER 1
|
||||||
; define NEED_LOADER 1
|
; define NEED_LOADER 1
|
||||||
; define NeedSafePort_Y 0
|
; define NeedSafePort_Y 0
|
||||||
;***************************************
|
;***************************************
|
||||||
@ -50,23 +55,23 @@ To do:
|
|||||||
;
|
;
|
||||||
; Included constants section
|
; Included constants section
|
||||||
;***************************************
|
;***************************************
|
||||||
include 'Shared_Includes/constants/sp2000.inc'
|
INCLUDE 'Shared_Includes/constants/sp2000.inc'
|
||||||
include 'Shared_Includes/constants/dss_equ.inc'
|
INCLUDE 'Shared_Includes/constants/dss_equ.inc'
|
||||||
include 'Shared_Includes/constants/BIOS_equ.inc'
|
INCLUDE 'Shared_Includes/constants/BIOS_equ.inc'
|
||||||
;***************************************
|
;***************************************
|
||||||
;
|
;
|
||||||
|
|
||||||
;
|
;
|
||||||
; Included macroses section
|
; Included macroses section
|
||||||
;***************************************
|
;***************************************
|
||||||
include 'Shared_Includes/macroses/macros.z80'
|
INCLUDE 'Shared_Includes/macroses/macros.z80'
|
||||||
include 'Shared_Includes/macroses/accelerator.z80'
|
INCLUDE 'Shared_Includes/macroses/accelerator.z80'
|
||||||
;***************************************
|
;***************************************
|
||||||
;
|
;
|
||||||
|
|
||||||
; Included LUA section
|
; Included LUA section
|
||||||
;***************************************
|
;***************************************
|
||||||
includelua <Shared_Includes/LUA/Functions.LUA>
|
INCLUDELUA <Shared_Includes/LUA/Functions.LUA>
|
||||||
;***************************************
|
;***************************************
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -111,10 +116,10 @@ OPTIONS_LINE EQU (CFG_FILE_LINES-1)*2
|
|||||||
; Code start section
|
; Code start section
|
||||||
;[]-------------------------------------------------------------------[]
|
;[]-------------------------------------------------------------------[]
|
||||||
IF EXE_HEADER
|
IF EXE_HEADER
|
||||||
include 'Shared_Includes/constants/EXE_Header.z80'
|
INCLUDE 'Shared_Includes/constants/EXE_Header.z80'
|
||||||
ORG org_addr
|
ORG org_addr
|
||||||
ELSE
|
ELSE
|
||||||
ORG org_addr - CLP_Buffer
|
ORG org_addr-CLP_Buffer
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
BEGIN:
|
BEGIN:
|
||||||
@ -141,38 +146,36 @@ ERROR_FILE:
|
|||||||
|
|
||||||
END_CNF_ERROR:
|
END_CNF_ERROR:
|
||||||
LD HL,ERROR_CNF
|
LD HL,ERROR_CNF
|
||||||
; JP EXIT_ALL
|
;JP EXIT_ALL
|
||||||
EXIT_ALL:
|
EXIT_ALL:
|
||||||
; PUSH HL
|
; PUSH HL
|
||||||
;---------------------[test!!!!!]-------
|
;---------------------[test!!!!!]-------
|
||||||
; LD A,0
|
;LD A,0
|
||||||
; LD C,BIOS.EMM_FN3
|
;LD C,BIOS.EMM_FN3
|
||||||
; RST ToBIOS ; ®á¢®¡®¤¨âì e:
|
;RST ToBIOS ; ®á¢®¡®¤¨âì e:
|
||||||
; LD A,(SAVE_SLOT3)
|
;LD A,(SAVE_SLOT3)
|
||||||
; OUT (SLOT3),A
|
;OUT (SLOT3),A
|
||||||
;---------------------------------------
|
;---------------------------------------
|
||||||
|
|
||||||
; POP HL
|
;POP HL
|
||||||
LD C,Dss.PChars
|
LD C,Dss.PChars
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
|
|
||||||
;---------------------[test!!!!!]-------
|
;---------------------[test!!!!!]-------
|
||||||
|
|
||||||
; ld a,(CurDisk_Save)
|
;ld a,(CurDisk_Save)
|
||||||
; ld c,Dss.ChDisk
|
;ld c,Dss.ChDisk
|
||||||
; RST ToDSS
|
;RST ToDSS
|
||||||
; jr nc,1f
|
;jr nc,1f
|
||||||
|
|
||||||
; ld hl,ERROR_FILE2_MSG
|
;ld hl,ERROR_FILE2_MSG
|
||||||
; LD C,Dss.PChars
|
;LD C,Dss.PChars
|
||||||
; RST ToDSS
|
;RST ToDSS
|
||||||
;---------------------------------------
|
;---------------------------------------
|
||||||
|
|
||||||
1: LD BC,Dss.Exit
|
1: LD BC,Dss.Exit
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
|
COMAND_LINE: LD HL,(LINE_X)
|
||||||
COMAND_LINE:
|
|
||||||
LD HL,(LINE_X)
|
|
||||||
LD A,(HL)
|
LD A,(HL)
|
||||||
AND A
|
AND A
|
||||||
JR Z,NO_FIL
|
JR Z,NO_FIL
|
||||||
@ -195,8 +198,7 @@ NO_FIL: LD HL,CNF_FILE
|
|||||||
JR C,ERROR_FILE
|
JR C,ERROR_FILE
|
||||||
JP CONTINUE
|
JP CONTINUE
|
||||||
|
|
||||||
FIND_FILES:
|
FIND_FILES: PUSH HL
|
||||||
PUSH HL
|
|
||||||
|
|
||||||
LD (X_FILE),HL
|
LD (X_FILE),HL
|
||||||
LD DE,0
|
LD DE,0
|
||||||
@ -206,8 +208,7 @@ FIND_FILES:
|
|||||||
LD B,A
|
LD B,A
|
||||||
JR NO_NEXT
|
JR NO_NEXT
|
||||||
|
|
||||||
FIND_T_LOOP:
|
FIND_T_LOOP: LD A,(HL)
|
||||||
LD A,(HL)
|
|
||||||
INC HL
|
INC HL
|
||||||
CP "."
|
CP "."
|
||||||
CALL Z,POINT_F
|
CALL Z,POINT_F
|
||||||
@ -220,12 +221,9 @@ FIND_T_LOOP:
|
|||||||
CP 13
|
CP 13
|
||||||
CALL Z,BLANK_X1
|
CALL Z,BLANK_X1
|
||||||
JR Z,END_NO_IMAGE
|
JR Z,END_NO_IMAGE
|
||||||
|
NO_NEXT: DJNZ FIND_T_LOOP
|
||||||
|
|
||||||
NO_NEXT:
|
END_NO_IMAGE: POP HL
|
||||||
DJNZ FIND_T_LOOP
|
|
||||||
|
|
||||||
END_NO_IMAGE:
|
|
||||||
POP HL
|
|
||||||
LD A,(CNF_NAME+1)
|
LD A,(CNF_NAME+1)
|
||||||
AND A
|
AND A
|
||||||
RET NZ
|
RET NZ
|
||||||
@ -234,22 +232,17 @@ END_NO_IMAGE:
|
|||||||
LD DE,(X_FILE)
|
LD DE,(X_FILE)
|
||||||
JR Z,CNF_ALL
|
JR Z,CNF_ALL
|
||||||
LD DE,CNF_FILE
|
LD DE,CNF_FILE
|
||||||
CNF_ALL:
|
CNF_ALL: LD (CNF_NAME),DE
|
||||||
LD (CNF_NAME),DE
|
|
||||||
RET
|
RET
|
||||||
|
|
||||||
BLANK_X:
|
BLANK_X: LD (X_FILE),HL ; ©¤¥ ¯à®¡¥«, ¨¬ï ä ©« - ᮢ
|
||||||
LD (X_FILE),HL ; ©¤¥ ¯à®¡¥«, ¨¬ï ä ©« - ᮢ
|
BLANK_X1: DEC HL
|
||||||
BLANK_X1:
|
|
||||||
DEC HL
|
|
||||||
LD (HL),0
|
LD (HL),0
|
||||||
INC HL
|
INC HL
|
||||||
RET
|
RET
|
||||||
|
|
||||||
;------------------------------------[v]
|
;------------------------------------[v]
|
||||||
POINT_F:
|
POINT_F: LD A,(HL)
|
||||||
LD A,(HL)
|
|
||||||
|
|
||||||
CP 't'
|
CP 't'
|
||||||
JR Z,.TRD
|
JR Z,.TRD
|
||||||
CP 'T'
|
CP 'T'
|
||||||
@ -264,88 +257,60 @@ POINT_F:
|
|||||||
JR Z,.CNF
|
JR Z,.CNF
|
||||||
CP 'Z'
|
CP 'Z'
|
||||||
JR Z,.CNF
|
JR Z,.CNF
|
||||||
.exit:
|
.exit: DEC HL
|
||||||
DEC HL
|
|
||||||
LD A,(HL)
|
LD A,(HL)
|
||||||
INC HL
|
INC HL
|
||||||
RET
|
RET
|
||||||
|
|
||||||
.SCL:
|
.SCL: LD DE,IMAGE_FLAG
|
||||||
ld de,IMAGE_FLAG
|
LD A,1
|
||||||
ld a,1
|
LD (DE),A
|
||||||
ld (de),a
|
.TRD: LD DE,(X_FILE)
|
||||||
.TRD:
|
|
||||||
LD DE,(X_FILE)
|
|
||||||
LD (IMAGE_NAME),DE
|
LD (IMAGE_NAME),DE
|
||||||
JR .exit
|
JR .exit
|
||||||
|
|
||||||
.CNF:
|
.CNF: LD DE,(X_FILE)
|
||||||
LD DE,(X_FILE)
|
|
||||||
LD (CNF_NAME),DE
|
LD (CNF_NAME),DE
|
||||||
JR .exit
|
JR .exit
|
||||||
;------------------------------------[^]
|
;------------------------------------[^]
|
||||||
|
|
||||||
LINE_ZX: DB "ZX Spectrum PAGES",0
|
LINE_ZX: DZ 'ZX Spectrum PAGES'
|
||||||
LEN_LINE_ZX EQU $-LINE_ZX
|
LEN_LINE_ZX EQU $-LINE_ZX
|
||||||
;*********************************************
|
;*********************************************
|
||||||
|
|
||||||
MSG_EXIT1:
|
MSG_EXIT1: DB 13,10,"EXIT without run",13,10,0
|
||||||
db 13,10,"EXIT without run",13,10,0
|
MSG_EXIT2: DB 13,10,"‚ë室 ¡¥§ § ¯ã᪠"
|
||||||
MSG_EXIT2:
|
CR_LINE: DB 13,10,0
|
||||||
db 13,10,"‚ë室 ¡¥§ § ¯ã᪠"
|
START_MSG: DB 13,10,'SPECTRUM launcher v',SP_VERSION,'.'
|
||||||
CR_LINE:
|
DB 13,10,'(c) Sprinter Team.'
|
||||||
db 13,10,0
|
DB 13,10,'Written by Ivan Mak.'
|
||||||
|
DB 13,10,'Modified by Anatoliy Belyanskiy.'
|
||||||
START_MSG:
|
DB 13,10,BUILD_DATE,' - ',__TIME__,13,10,0
|
||||||
db 13,10,'SPECTRUM launcher v',SP_VERSION,'.'
|
|
||||||
db 13,10,'(c) Sprinter Team.'
|
|
||||||
db 13,10,'Written by Ivan Mak.'
|
|
||||||
db 13,10,'Modified by Anatoliy Belyanskiy.'
|
|
||||||
db 13,10,BUILD_DATE,' - ', __TIME__, 13, 10, 0
|
|
||||||
|
|
||||||
ERROR_FILE_MSG_X:
|
ERROR_FILE_MSG_X:
|
||||||
db 13,10,"Error in file: ",0
|
DB 13,10,"Error in file: ",0
|
||||||
ERROR_FILE2_MSG_X:
|
ERROR_FILE2_MSG_X:
|
||||||
db 13,10,"Žè¨¡ª ¢ ä ©«¥: ",0
|
DB 13,10,"Žè¨¡ª ¢ ä ©«¥: ",0
|
||||||
ERROR_FILE_MSG:
|
ERROR_FILE_MSG: DB 13,10,"Unable to work.",0
|
||||||
db 13,10,"Unable to work.",0
|
|
||||||
ERROR_FILE2_MSG:
|
ERROR_FILE2_MSG:
|
||||||
db 13,10,"<22> ¡®â ¥¢®§¬®¦ .",0
|
DB 13,10,"<22> ¡®â ¥¢®§¬®¦ .",0
|
||||||
|
ERROR_CNF: DB 13,10,"Unexpected CNF file end.",0
|
||||||
ERROR_CNF:
|
ERROR_CNF2: DB 13,10,"<22>¥®¦¨¤ ë© ª®¥æ CNF ä ©« .",0
|
||||||
db 13,10,"Unexpected CNF file end.",0
|
NO_MEM_MSG: DB 13,10,"The spesial pages are already used."
|
||||||
ERROR_CNF2:
|
DB 13,10,"Clear memory and restart spectrum.exe again.",0
|
||||||
db 13,10,"<22>¥®¦¨¤ ë© ª®¥æ CNF ä ©« .",0
|
NO_MEM_MSG2: DB 13,10,"‘¯¥æ¨ «ìë¥ áâà ¨æë 㦥 § ïâë."
|
||||||
|
DB 13,10,"Žç¨áâ¨â¥ ¯ ¬ïâì ¨ ¯¥à¥§ ¯ãáâ¨â¥ spectrum.exe ᮢ .",0
|
||||||
NO_MEM_MSG:
|
MSG_NORMAL: DB 13,10,"All files has been read successfully.",13,10
|
||||||
db 13,10,"The spesial pages are already used."
|
DB "MODE: ",0
|
||||||
db 13,10,"Clear memory and restart spectrum.exe again.",0
|
MSG_NORMAL2: DB 13,10,"‚á¥ ä ©«ë áç¨â ë ®à¬ «ì®.",13,10
|
||||||
NO_MEM_MSG2:
|
DB "Ю䍣ãà æ¨ï: ",0
|
||||||
db 13,10,"‘¯¥æ¨ «ìë¥ áâà ¨æë 㦥 § ïâë."
|
MSG_NO_MEM: DB 13,10,"No memory space for image or",0
|
||||||
db 13,10,"Žç¨áâ¨â¥ ¯ ¬ïâì ¨ ¯¥à¥§ ¯ãáâ¨â¥ spectrum.exe ᮢ .",0
|
MSG_NO_MEM2: DB 13,10,"<22>¥ å¢ â ¥â ¯ ¬ï⨠¤«ï ®¡à § ¨«¨",0
|
||||||
|
MSG_LOAD_IMAGE: DB 13,10,"Image loading: ",0
|
||||||
MSG_NORMAL:
|
|
||||||
db 13,10,"All files has been read successfully.",13,10
|
|
||||||
db "MODE: ",0
|
|
||||||
MSG_NORMAL2:
|
|
||||||
db 13,10,"‚á¥ ä ©«ë áç¨â ë ®à¬ «ì®.",13,10
|
|
||||||
db "Ю䍣ãà æ¨ï: ",0
|
|
||||||
MSG_NO_MEM:
|
|
||||||
db 13,10,"No memory space for image or",0
|
|
||||||
MSG_NO_MEM2:
|
|
||||||
db 13,10,"<22>¥ å¢ â ¥â ¯ ¬ï⨠¤«ï ®¡à § ¨«¨",0
|
|
||||||
MSG_LOAD_IMAGE:
|
|
||||||
db 13,10,"Image loading: ",0
|
|
||||||
MSG_LOAD_IMAGE2:
|
MSG_LOAD_IMAGE2:
|
||||||
db 13,10,"‡ £à㧪 ®¡à § : ",0
|
DB 13,10,"‡ £à㧪 ®¡à § : ",0
|
||||||
|
MSG_ZX_EXIT: DB 13,10,"EXIT from Spectrum configuration",0
|
||||||
MSG_ZX_EXIT:
|
MSG_ZX_EXIT2: DB 13,10,"EXIT from ZX mode",0
|
||||||
db 13,10,"EXIT from Spectrum configuration",0
|
PROGRES_IND: DB '°',0 ; 176
|
||||||
MSG_ZX_EXIT2:
|
|
||||||
db 13,10,"EXIT from ZX mode",0
|
|
||||||
|
|
||||||
PROGRES_IND:
|
|
||||||
db '°',0 ; 176
|
|
||||||
|
|
||||||
MEM_BLK: BYTE 0
|
MEM_BLK: BYTE 0
|
||||||
LINE_X: WORD 0
|
LINE_X: WORD 0
|
||||||
@ -356,11 +321,10 @@ IMAGE_NAME: WORD 0
|
|||||||
IMAGE_HANDLER: BYTE 0
|
IMAGE_HANDLER: BYTE 0
|
||||||
SAVE_SLOT3: BYTE 0
|
SAVE_SLOT3: BYTE 0
|
||||||
LEN_CNF: WORD 0
|
LEN_CNF: WORD 0
|
||||||
A_LINES: BLOCK CFG_FILE_LINES*2, 0
|
A_LINES: BLOCK CFG_FILE_LINES*2,0
|
||||||
;*********************************************
|
;*********************************************
|
||||||
|
|
||||||
CONTINUE: ; CNF ä ©« ¯à®ç¨â , DE - ¤«¨ CNF
|
CONTINUE: LD (LEN_CNF),DE ; CNF ä ©« ¯à®ç¨â , DE - ¤«¨ CNF
|
||||||
LD (LEN_CNF),DE
|
|
||||||
|
|
||||||
LD HL,#C000
|
LD HL,#C000
|
||||||
LD DE,A_LINES
|
LD DE,A_LINES
|
||||||
@ -383,7 +347,6 @@ LOOP_L: LD A,(HL)
|
|||||||
CP ';'
|
CP ';'
|
||||||
JR Z,N_LINE
|
JR Z,N_LINE
|
||||||
DJNZ LOOP_L
|
DJNZ LOOP_L
|
||||||
|
|
||||||
N_LINE: LD (HL),0
|
N_LINE: LD (HL),0
|
||||||
INC HL
|
INC HL
|
||||||
LD A,(HL)
|
LD A,(HL)
|
||||||
@ -396,8 +359,8 @@ N_LINE: LD (HL),0
|
|||||||
|
|
||||||
; ¢ë¤¥«¥® 8 áâப ¢ CNF
|
; ¢ë¤¥«¥® 8 áâப ¢ CNF
|
||||||
;*************************************
|
;*************************************
|
||||||
MACRO vROM_LOAD romLine, pageNumber
|
MACRO vROM_LOAD romLine,pageNumber
|
||||||
LD HL,(A_LINES + romLine)
|
LD HL,(A_LINES+romLine)
|
||||||
LD A,(HL)
|
LD A,(HL)
|
||||||
CP ';'
|
CP ';'
|
||||||
JR Z,.skip_load
|
JR Z,.skip_load
|
||||||
@ -415,10 +378,10 @@ N_LINE: LD (HL),0
|
|||||||
vROM_LOAD EXP_LINE, #45 ; 5-ï áâப - ¨¬ï ä ©« EXPANSION
|
vROM_LOAD EXP_LINE, #45 ; 5-ï áâப - ¨¬ï ä ©« EXPANSION
|
||||||
vROM_LOAD BIOS_LINE, #46 ; 6-ï áâப - ¨¬ï ä ©« BIOS
|
vROM_LOAD BIOS_LINE, #46 ; 6-ï áâப - ¨¬ï ä ©« BIOS
|
||||||
vROM_LOAD BIOS2_LINE, #47 ; 7-ï áâப - ¨¬ï ä ©« BIOS2
|
vROM_LOAD BIOS2_LINE, #47 ; 7-ï áâப - ¨¬ï ä ©« BIOS2
|
||||||
; vROM_LOAD _LINE, #42 ; 8-ï áâப - ¨¬ï ä ©«
|
;vROM_LOAD _LINE, #42 ; 8-ï áâப - ¨¬ï ä ©«
|
||||||
; vROM_LOAD _LINE, #42 ; 9-ï áâப - ¨¬ï ä ©«
|
;vROM_LOAD _LINE, #42 ; 9-ï áâப - ¨¬ï ä ©«
|
||||||
; vROM_LOAD _LINE, #42 ; 10-ï áâப - ¨¬ï ä ©«
|
;vROM_LOAD _LINE, #42 ; 10-ï áâப - ¨¬ï ä ©«
|
||||||
; vROM_LOAD _LINE, #42 ; 11-ï áâப - ¨¬ï ä ©«
|
;vROM_LOAD _LINE, #42 ; 11-ï áâப - ¨¬ï ä ©«
|
||||||
|
|
||||||
; ä ©«ë áç¨â ë
|
; ä ©«ë áç¨â ë
|
||||||
;*************************************
|
;*************************************
|
||||||
@ -435,17 +398,15 @@ N_LINE: LD (HL),0
|
|||||||
LD C,Dss.PChars
|
LD C,Dss.PChars
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
|
|
||||||
; LD A,(SAVE_SLOT3)
|
;LD A,(SAVE_SLOT3)
|
||||||
; OUT (SLOT3),A
|
;OUT (SLOT3),A
|
||||||
|
|
||||||
;*************************************
|
;*************************************
|
||||||
|
|
||||||
LD A,Spec_Page
|
LD A,Spec_Page
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
LD HL,(A_LINES+OPTIONS_LINE) ; áâப ¯ à ¬¥â஢
|
LD HL,(A_LINES+OPTIONS_LINE) ; áâப ¯ à ¬¥â஢
|
||||||
|
LOOP_PAR1: LD A,(HL)
|
||||||
LOOP_PAR1:
|
|
||||||
LD A,(HL)
|
|
||||||
CP "/"
|
CP "/"
|
||||||
JR Z,PARAM_TEST
|
JR Z,PARAM_TEST
|
||||||
CP 0
|
CP 0
|
||||||
@ -457,25 +418,21 @@ LOOP_PAR1:
|
|||||||
INC HL
|
INC HL
|
||||||
JR LOOP_PAR1
|
JR LOOP_PAR1
|
||||||
|
|
||||||
PARAM_TEST:
|
PARAM_TEST: INC HL
|
||||||
INC HL
|
|
||||||
PUSH HL
|
PUSH HL
|
||||||
|
|
||||||
LD IX,PARAMS
|
LD IX,PARAMS
|
||||||
NEXT_PAR:
|
NEXT_PAR: LD E,(IX)
|
||||||
LD E,(IX)
|
|
||||||
LD D,(IX+1)
|
LD D,(IX+1)
|
||||||
|
|
||||||
LOOP_PAR2:
|
LOOP_PAR2: LD A,(DE)
|
||||||
LD A,(DE)
|
|
||||||
CP (HL)
|
CP (HL)
|
||||||
JR NZ,PARAM_E1
|
JR NZ,PARAM_E1
|
||||||
INC HL
|
INC HL
|
||||||
INC DE
|
INC DE
|
||||||
JR LOOP_PAR2
|
JR LOOP_PAR2
|
||||||
|
|
||||||
PARAM_E1:
|
PARAM_E1: CP 255
|
||||||
CP 255
|
|
||||||
JR NZ,NO_PAR
|
JR NZ,NO_PAR
|
||||||
LD A,(HL)
|
LD A,(HL)
|
||||||
CP 20h
|
CP 20h
|
||||||
@ -484,8 +441,7 @@ PARAM_E1:
|
|||||||
JR Z,PARAM_E2
|
JR Z,PARAM_E2
|
||||||
CP 13
|
CP 13
|
||||||
JR Z,PARAM_E2
|
JR Z,PARAM_E2
|
||||||
NO_PAR:
|
NO_PAR: POP HL
|
||||||
POP HL
|
|
||||||
PUSH HL
|
PUSH HL
|
||||||
INC IX
|
INC IX
|
||||||
INC IX
|
INC IX
|
||||||
@ -497,8 +453,7 @@ NO_PAR:
|
|||||||
POP HL
|
POP HL
|
||||||
JR LOOP_PAR1
|
JR LOOP_PAR1
|
||||||
|
|
||||||
PARAM_E2:
|
PARAM_E2: EX (SP),HL ; ®¢®¥ HL - á®åà ï¥âáï!
|
||||||
EX (SP),HL ; ®¢®¥ HL - á®åà ï¥âáï!
|
|
||||||
|
|
||||||
LD A,(IX+3)
|
LD A,(IX+3)
|
||||||
LD (IX+2),A ; parameter alternate!
|
LD (IX+2),A ; parameter alternate!
|
||||||
@ -514,8 +469,7 @@ PARAM_E2:
|
|||||||
|
|
||||||
;************************************
|
;************************************
|
||||||
|
|
||||||
PARAM_END:
|
PARAM_END: LD A,#E2 ; ROM-ID - BASIC 128
|
||||||
LD A,#E2 ; ROM-ID - BASIC 128
|
|
||||||
LD B,#42 ; page
|
LD B,#42 ; page
|
||||||
CALL SET_ROM
|
CALL SET_ROM
|
||||||
|
|
||||||
@ -553,53 +507,49 @@ PARAM_END:
|
|||||||
OUT (C),B
|
OUT (C),B
|
||||||
JP C,ERROR_FILE
|
JP C,ERROR_FILE
|
||||||
|
|
||||||
SKIP_IMAGE:
|
SKIP_IMAGE: LD A,(No_run_+2)
|
||||||
LD A,(No_run_+2)
|
|
||||||
AND A
|
AND A
|
||||||
LD HL,MSG_EXIT1
|
LD HL,MSG_EXIT1
|
||||||
JP Z,EXIT_ALL
|
JP Z,EXIT_ALL
|
||||||
|
|
||||||
JP SET_RELOAD_PROG
|
JP SET_RELOAD_PROG
|
||||||
|
|
||||||
; LD HL,MSG_NORMAL
|
;LD HL,MSG_NORMAL
|
||||||
; JP EXIT_ALL
|
;JP EXIT_ALL
|
||||||
|
|
||||||
;***************************************************
|
|
||||||
|
|
||||||
; JP 0
|
|
||||||
|
|
||||||
|
;********************************************
|
||||||
|
;JP 0
|
||||||
;********************************************
|
;********************************************
|
||||||
|
|
||||||
; out B - old ROM-page
|
; out B - old ROM-page
|
||||||
SET_ROM:
|
SET_ROM: DI
|
||||||
DI
|
;PUSH BC
|
||||||
; PUSH BC
|
;PUSH AF
|
||||||
; PUSH AF
|
|
||||||
|
|
||||||
; LD A,CNF_0
|
;LD A,CNF_0
|
||||||
; OUT (SYS_PORT.ON),A
|
;OUT (SYS_PORT.ON),A
|
||||||
; LD A,10h
|
;LD A,10h
|
||||||
; LD BC,7FFDh
|
;LD BC,7FFDh
|
||||||
; OUT (C),A
|
;OUT (C),A
|
||||||
|
|
||||||
; POP AF
|
;POP AF
|
||||||
; POP BC
|
;POP BC
|
||||||
|
|
||||||
; LD C,0F8h
|
;LD C,0F8h
|
||||||
; CALL 3D13h
|
;CALL 3D13h
|
||||||
|
|
||||||
; PUSH BC
|
;PUSH BC
|
||||||
; PUSH AF
|
;PUSH AF
|
||||||
|
|
||||||
; LD A,0
|
;LD A,0
|
||||||
; LD BC,7FFDh
|
;LD BC,7FFDh
|
||||||
; OUT (C),A
|
;OUT (C),A
|
||||||
; LD A,CNF_0
|
;LD A,CNF_0
|
||||||
; OUT (SYS_PORT.OFF),A
|
;OUT (SYS_PORT.OFF),A
|
||||||
;
|
|
||||||
; POP AF
|
;POP AF
|
||||||
; POP BC
|
;POP BC
|
||||||
; RET
|
;RET
|
||||||
|
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
|
|
||||||
@ -638,10 +588,9 @@ SET_ROM:
|
|||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
|
|
||||||
RET
|
RET
|
||||||
|
|
||||||
;********************************************
|
;********************************************
|
||||||
READ_IMAGE:
|
|
||||||
LD DE,ONE_FILE
|
READ_IMAGE: LD DE,ONE_FILE
|
||||||
LD BC,FULL_FILE_NAME_LENGTH
|
LD BC,FULL_FILE_NAME_LENGTH
|
||||||
LDIR
|
LDIR
|
||||||
LD HL,ONE_FILE
|
LD HL,ONE_FILE
|
||||||
@ -653,16 +602,15 @@ READ_IMAGE:
|
|||||||
|
|
||||||
LD (IMAGE_HANDLER),A
|
LD (IMAGE_HANDLER),A
|
||||||
|
|
||||||
ld a,(IMAGE_FLAG)
|
LD A,(IMAGE_FLAG)
|
||||||
and a
|
AND A
|
||||||
jr z,.Load_TRD
|
JR Z,.Load_TRD
|
||||||
|
|
||||||
CP 1 ; check if SCL
|
CP 1 ; check if SCL
|
||||||
jp z,Load_SCL
|
JP Z,Load_SCL
|
||||||
; jp Error_Flag ;!!!!!!!!!!!!!!!!
|
;jp Error_Flag ;!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
.Load_TRD:
|
.Load_TRD: LD A,(IMAGE_HANDLER)
|
||||||
LD A,(IMAGE_HANDLER)
|
|
||||||
LD B,Dss.Move_FP.FrEnd
|
LD B,Dss.Move_FP.FrEnd
|
||||||
LD HL,0
|
LD HL,0
|
||||||
LD IX,0
|
LD IX,0
|
||||||
@ -673,13 +621,12 @@ READ_IMAGE:
|
|||||||
PUSH IX
|
PUSH IX
|
||||||
POP DE
|
POP DE
|
||||||
|
|
||||||
call Get_RAM_Disk_E
|
CALL Get_RAM_Disk_E
|
||||||
ret c
|
RET C
|
||||||
jp Load_IMAGE_File
|
JP Load_IMAGE_File
|
||||||
|
|
||||||
Get_RAM_Disk_E:
|
|
||||||
; hl:de - à §¬¥à ä ©« ¢ ¡ ©â å
|
; hl:de - à §¬¥à ä ©« ¢ ¡ ©â å
|
||||||
LD A,D
|
Get_RAM_Disk_E: LD A,D
|
||||||
ADD A,A
|
ADD A,A
|
||||||
ADC HL,HL
|
ADC HL,HL
|
||||||
ADD A,A
|
ADD A,A
|
||||||
@ -690,8 +637,8 @@ Get_RAM_Disk_E:
|
|||||||
OR E
|
OR E
|
||||||
JR Z,.skip_inc
|
JR Z,.skip_inc
|
||||||
INC HL
|
INC HL
|
||||||
.skip_inc: ; HL - ¤«¨ ä ©« ¢ áâà ¨æ å
|
;HL - ¤«¨ ä ©« ¢ áâà ¨æ å
|
||||||
LD A,H
|
.skip_inc: LD A,H
|
||||||
AND A
|
AND A
|
||||||
JR NZ,ERROR_NO_MEM
|
JR NZ,ERROR_NO_MEM
|
||||||
LD A,L
|
LD A,L
|
||||||
@ -701,8 +648,7 @@ Get_RAM_Disk_E:
|
|||||||
;***************************************
|
;***************************************
|
||||||
;!FIXIT ¡¥§®¯ á® § ¨¬ âì à ¬¤¨áª¨, ç⮡ ¯®«ì§®¢ â¥«ì ¥ áâà ¤ «
|
;!FIXIT ¡¥§®¯ á® § ¨¬ âì à ¬¤¨áª¨, ç⮡ ¯®«ì§®¢ â¥«ì ¥ áâà ¤ «
|
||||||
; ®á¢®¡®¤¨âì ram-disk e:
|
; ®á¢®¡®¤¨âì ram-disk e:
|
||||||
.free_disk:
|
.free_disk: DI
|
||||||
DI
|
|
||||||
XOR A ; RAM-Drive E:
|
XOR A ; RAM-Drive E:
|
||||||
LD C,BIOS.FreeMemRMD
|
LD C,BIOS.FreeMemRMD
|
||||||
RST ToBIOS ; ®á¢®¡®¤¨âì e:
|
RST ToBIOS ; ®á¢®¡®¤¨âì e:
|
||||||
@ -721,7 +667,7 @@ Load_IMAGE_File:
|
|||||||
LD A,(IMAGE_HANDLER)
|
LD A,(IMAGE_HANDLER)
|
||||||
LD HL,0
|
LD HL,0
|
||||||
LD IX,0
|
LD IX,0
|
||||||
LD BC,Dss.Move_FP.FrStart * 256 + Dss.Move_FP
|
LD BC,Dss.Move_FP.FrStart*256+Dss.Move_FP
|
||||||
RST ToDSS ; ãáâ ®¢¨âì 㪠§ ⥫ì 0
|
RST ToDSS ; ãáâ ®¢¨âì 㪠§ ⥫ì 0
|
||||||
RET C
|
RET C
|
||||||
|
|
||||||
@ -731,8 +677,7 @@ Load_IMAGE_File:
|
|||||||
|
|
||||||
LD A,(MEM_BLK)
|
LD A,(MEM_BLK)
|
||||||
|
|
||||||
.load_loop:
|
.load_loop: PUSH AF
|
||||||
PUSH AF
|
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
|
|
||||||
LD A,(IMAGE_HANDLER)
|
LD A,(IMAGE_HANDLER)
|
||||||
@ -748,8 +693,7 @@ Load_IMAGE_File:
|
|||||||
|
|
||||||
DI
|
DI
|
||||||
POP AF
|
POP AF
|
||||||
.scl_read_next:
|
.scl_read_next: LD C,BIOS.GetMemPageNext
|
||||||
LD C,BIOS.GetMemPageNext
|
|
||||||
RST ToBIOS
|
RST ToBIOS
|
||||||
|
|
||||||
CP #FF
|
CP #FF
|
||||||
@ -764,41 +708,37 @@ Load_IMAGE_File:
|
|||||||
RST ToDSS
|
RST ToDSS
|
||||||
|
|
||||||
RET C
|
RET C
|
||||||
; ret
|
;RET
|
||||||
|
|
||||||
Set_RAM_Dsk_EtoA:
|
Set_RAM_Dsk_EtoA:
|
||||||
DI
|
DI
|
||||||
XOR A
|
XOR A
|
||||||
LD BC,0*256 + BIOS.RAMD_TO_DRV ; § ç¨âì e: a:
|
LD BC,0*256+BIOS.RAMD_TO_DRV ; § ç¨âì e: a:
|
||||||
RST ToBIOS
|
RST ToBIOS
|
||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
ERROR_IN_READ:
|
ERROR_IN_READ: POP AF
|
||||||
POP AF
|
|
||||||
JR ERROR_IMAGE_X
|
JR ERROR_IMAGE_X
|
||||||
|
|
||||||
ERROR_NO_MEM:
|
ERROR_NO_MEM: LD HL,MSG_NO_MEM
|
||||||
LD HL,MSG_NO_MEM
|
|
||||||
LD C,Dss.PChars
|
LD C,Dss.PChars
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
ERROR_IMAGE_X:
|
ERROR_IMAGE_X: LD A,(IMAGE_HANDLER)
|
||||||
LD A,(IMAGE_HANDLER)
|
|
||||||
LD C,Dss.Close ; § ªàëâì ä ©«
|
LD C,Dss.Close ; § ªàëâì ä ©«
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
|
|
||||||
SAV_PG3X: db 0
|
SAV_PG3X: DB 0
|
||||||
;********************************************
|
;********************************************
|
||||||
READ_FILE_1:
|
READ_FILE_1: LD DE,ONE_FILE
|
||||||
LD DE,ONE_FILE
|
|
||||||
LD BC,FULL_FILE_NAME_LENGTH
|
LD BC,FULL_FILE_NAME_LENGTH
|
||||||
|
LDIR
|
||||||
LD HL,ONE_FILE
|
LD HL,ONE_FILE
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
|
|
||||||
READ_FILE:
|
READ_FILE: LD A,Dss.Open.R
|
||||||
LD A,Dss.Open.R
|
|
||||||
LD C,Dss.Open
|
LD C,Dss.Open
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
RET C ; ®è¨¡ª , ¥á«¨ ¥â ä ©«
|
RET C ; ®è¨¡ª , ¥á«¨ ¥â ä ©«
|
||||||
@ -821,13 +761,12 @@ READ_FILE:
|
|||||||
POP DE ; ¤«¨ áç¨â ëå ¤ ëå
|
POP DE ; ¤«¨ áç¨â ëå ¤ ëå
|
||||||
RET ; ®è¨¡ª ¯à¨ § ªàë⨨ ¨«¨ Ok
|
RET ; ®è¨¡ª ¯à¨ § ªàë⨨ ¨«¨ Ok
|
||||||
|
|
||||||
FILE_HANDLE: db 0
|
FILE_HANDLE: DB 0
|
||||||
|
|
||||||
;********************************************
|
|
||||||
;********************************************
|
;********************************************
|
||||||
|
|
||||||
EXIT_TO_DSS:
|
;********************************************
|
||||||
DI
|
EXIT_TO_DSS: DI
|
||||||
LD SP,#BFF0
|
LD SP,#BFF0
|
||||||
LD A,CNF_PORT.CNF_0
|
LD A,CNF_PORT.CNF_0
|
||||||
OUT (SYS_PORT.OFF),A
|
OUT (SYS_PORT.OFF),A
|
||||||
@ -836,17 +775,17 @@ EXIT_TO_DSS:
|
|||||||
OUT (SLOT0),A
|
OUT (SLOT0),A
|
||||||
|
|
||||||
XOR A
|
XOR A
|
||||||
LD BC,3*256 + BIOS.SET_PAL_INIT ; SET IBM PAL
|
LD BC,3*256+BIOS.SET_PAL_INIT ; SET IBM PAL
|
||||||
RST ToBIOS
|
RST ToBIOS
|
||||||
|
|
||||||
LD A,Dss.SetVMod.txt80x32 ; OPEN_TXT
|
LD A,Dss.SetVMod.txt80x32 ; OPEN_TXT
|
||||||
LD BC,0*256 + Dss.SetVMod
|
LD BC,0*256+Dss.SetVMod
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
|
|
||||||
LD A,#20
|
LD A,#20
|
||||||
LD DE,0
|
LD DE,0
|
||||||
LD HL,#2050
|
LD HL,#2050
|
||||||
LD BC,7*256 + Dss.Clear
|
LD BC,7*256+Dss.Clear
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
|
|
||||||
LD HL,MSG_ZX_EXIT
|
LD HL,MSG_ZX_EXIT
|
||||||
@ -874,7 +813,7 @@ NO_RET_FN:
|
|||||||
IN A,(SLOT0)
|
IN A,(SLOT0)
|
||||||
LD (#FFF0),A ; DOS-PAGE
|
LD (#FFF0),A ; DOS-PAGE
|
||||||
IN A,(SLOT1)
|
IN A,(SLOT1)
|
||||||
LD (#FFF1),A ;
|
LD (#FFF1),A
|
||||||
IN A,(SLOT2) ; á®åà ¨âì áâà ¨æã
|
IN A,(SLOT2) ; á®åà ¨âì áâà ¨æã
|
||||||
LD (#FFF2),A ; ¯à®£à ¬¬ë ¤«ï ¢®§¢à â
|
LD (#FFF2),A ; ¯à®£à ¬¬ë ¤«ï ¢®§¢à â
|
||||||
IN A,(SLOT3)
|
IN A,(SLOT3)
|
||||||
@ -882,48 +821,44 @@ NO_RET_FN:
|
|||||||
|
|
||||||
;********************************************
|
;********************************************
|
||||||
|
|
||||||
RESET_TO_ZX:
|
RESET_TO_ZX: DI
|
||||||
DI
|
|
||||||
LD SP,#BFF0
|
LD SP,#BFF0
|
||||||
|
|
||||||
ld a,high ZXKeys.Line_7
|
LD A,high ZXKeys.Line_7
|
||||||
in a,(ZXKeys)
|
IN A,(ZXKeys)
|
||||||
and #1F
|
AND #1F
|
||||||
cp #1E
|
CP #1E
|
||||||
jr z,EXIT_TO_DSS
|
JR Z,EXIT_TO_DSS
|
||||||
|
|
||||||
LD A,CNF_PORT.CNF_0
|
;LD A,CNF_PORT.CNF_3
|
||||||
OUT (SYS_PORT.ON),A ; System-page on & CNF = 0
|
;OUT (SYS_PORT.ON),A ; System-page on & CNF = 0
|
||||||
|
|
||||||
;-------------[TEST ATARIN]-------------
|
;-------------[TEST ATARIN]-------------
|
||||||
; #c0fd - +#05ED
|
; #c0fd - +#05ED
|
||||||
; ä¨ªá ¥¯®«®© ¤¥è¨äà æ¨¨ ¯®àâ #FFFD (¯¨èãâ ¢ #C0FD)
|
; ä¨ªá ¥¯®«®© ¤¥è¨äà æ¨¨ ¯®àâ #FFFD (¯¨èãâ ¢ #C0FD)
|
||||||
; [x] ¤®¡ ¢«¥ ¯®àâ #C0FD ¢® ¢á¥ ª àâë ¯®à⮢
|
; ¤®¡ ¢«¥ ¯®àâ #C0FD ¢® ¢á¥ ª àâë ¯®à⮢
|
||||||
|
LD BC,SLOT3
|
||||||
ld bc,SLOT3
|
IN B,(C)
|
||||||
in b,(c)
|
LD A,DCP_PAGE
|
||||||
|
OUT (C),A
|
||||||
ld a,DCP_PAGE
|
|
||||||
out (c),a
|
|
||||||
|
|
||||||
; !HARDCODE ¤ «¥¥ ¢áñ ᪮àïª ¨ § å प®¦¥®
|
; !HARDCODE ¤ «¥¥ ¢áñ ᪮àïª ¨ § å प®¦¥®
|
||||||
; !TODO ¯¥à¥¤¥« âì ¯®¤ ®¢ãî äãªæ¨î ¤¥è¨äà æ¨¨
|
; !TODO ¯¥à¥¤¥« âì ¯®¤ ®¢ãî äãªæ¨î ¤¥è¨äà æ¨¨
|
||||||
ld a,#90 ; AY-8910-port (FFFD)
|
LD A,#90 ; AY-8910-port (FFFD)
|
||||||
ld hl,#C000 + #05ED ; CNF 0
|
LD HL,#C000+#05ED ; CNF 0
|
||||||
ld (hl),a
|
LD (HL),A
|
||||||
|
|
||||||
ld h,#c0 + #15 ; CNF 1
|
LD H,#C0+#15 ; CNF 1
|
||||||
ld (hl),a
|
LD (HL),A
|
||||||
|
|
||||||
ld h,#c0 + #25 ; CNF 2
|
LD H,#C0+#25 ; CNF 2
|
||||||
ld (hl),a
|
LD (HL),A
|
||||||
|
|
||||||
ld h,#c0 + #35 ; CNF 3
|
LD H,#C0+#35 ; CNF 3
|
||||||
ld (hl),a
|
LD (HL),A
|
||||||
|
|
||||||
out (c),b
|
OUT (C),B
|
||||||
;---------------------------------------
|
;---------------------------------------
|
||||||
|
|
||||||
LD A,(Ret_zx_+2)
|
LD A,(Ret_zx_+2)
|
||||||
LD B,A
|
LD B,A
|
||||||
LD A,(Ret_fn_+2)
|
LD A,(Ret_fn_+2)
|
||||||
@ -969,15 +904,14 @@ ORIG1: LD BC,Port_All_Mode
|
|||||||
|
|
||||||
;******************************
|
;******************************
|
||||||
XOR A
|
XOR A
|
||||||
LD BC,2*256 + BIOS.SET_PAL_INIT ; Set ZX-Palette
|
LD BC,2*256+BIOS.SET_PAL_INIT ; Set ZX-Palette
|
||||||
RST ToBIOS_18
|
RST ToBIOS_18
|
||||||
|
|
||||||
LD A,(Int_or_+2)
|
LD A,(Int_or_+2)
|
||||||
AND A ; 3
|
AND A ; 3
|
||||||
JR NZ,Original
|
JR NZ,Original
|
||||||
LD A,(Int_sc_+2) ; 1/2
|
LD A,(Int_sc_+2) ; 1/2
|
||||||
Original:
|
Original: LD C,BIOS.FN_SYNC ; -> INT for Pentagon or Scorpion
|
||||||
LD C,BIOS.FN_SYNC ; -> INT for Pentagon or Scorpion
|
|
||||||
RST ToBIOS_18
|
RST ToBIOS_18
|
||||||
|
|
||||||
LD HL,#4000 ; clear ZX-Spectrum screen
|
LD HL,#4000 ; clear ZX-Spectrum screen
|
||||||
@ -988,12 +922,12 @@ Original:
|
|||||||
|
|
||||||
LD HL,#4104 ; Screen-1
|
LD HL,#4104 ; Screen-1
|
||||||
LD E,0
|
LD E,0
|
||||||
LD BC,4*256 + BIOS.LP_OPEN_S
|
LD BC,4*256+BIOS.LP_OPEN_S
|
||||||
RST ToBIOS_18
|
RST ToBIOS_18
|
||||||
|
|
||||||
LD HL,#5104 ; Screen-2
|
LD HL,#5104 ; Screen-2
|
||||||
LD E,0
|
LD E,0
|
||||||
LD BC,4*256 + BIOS.LP_OPEN_S
|
LD BC,4*256+BIOS.LP_OPEN_S
|
||||||
RST ToBIOS_18
|
RST ToBIOS_18
|
||||||
|
|
||||||
XOR A
|
XOR A
|
||||||
@ -1014,8 +948,7 @@ Original:
|
|||||||
|
|
||||||
;!TEST
|
;!TEST
|
||||||
LD A,8
|
LD A,8
|
||||||
LOOP_P1:
|
LOOP_P1: DEC A
|
||||||
DEC A
|
|
||||||
OUT (C),A ; #7FFD
|
OUT (C),A ; #7FFD
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
JR NZ,LOOP_P1
|
JR NZ,LOOP_P1
|
||||||
@ -1032,8 +965,7 @@ LOOP_P1:
|
|||||||
OUT (C),A ; #1FFD
|
OUT (C),A ; #1FFD
|
||||||
LD B,#7F
|
LD B,#7F
|
||||||
LD A,8
|
LD A,8
|
||||||
LOOP_P2:
|
LOOP_P2: OUT (C),A ; #7FFD
|
||||||
OUT (C),A ; #7FFD
|
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
INC A
|
INC A
|
||||||
CP 16
|
CP 16
|
||||||
@ -1049,7 +981,7 @@ LOOP_P2:
|
|||||||
|
|
||||||
LD HL,PROG_STARTS
|
LD HL,PROG_STARTS
|
||||||
LD BC,PROG_STARTS.Length
|
LD BC,PROG_STARTS.Length
|
||||||
LD DE,#FF00 ;!!!!!!!!!!
|
LD DE,#FF00 ;!HARDCODE
|
||||||
LDIR
|
LDIR
|
||||||
|
|
||||||
LD A,(Line312_+2)
|
LD A,(Line312_+2)
|
||||||
@ -1073,12 +1005,26 @@ LOOP_P2:
|
|||||||
LD E,A
|
LD E,A
|
||||||
LD A,(To_trd_+2)
|
LD A,(To_trd_+2)
|
||||||
LD D,A
|
LD D,A
|
||||||
|
|
||||||
|
;!TEST
|
||||||
|
IN A,(SLOT3)
|
||||||
|
LD C,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (SLOT3),A
|
||||||
|
|
||||||
|
LD A,E
|
||||||
|
LD (SYS_PAGE.CONFIG_DE),A
|
||||||
|
XOR A
|
||||||
|
LD (SYS_PAGE.CONFIG_DE+1),A
|
||||||
|
|
||||||
|
LD A,C
|
||||||
|
OUT (SLOT3),A
|
||||||
|
;
|
||||||
;
|
;
|
||||||
JP #FF00 ;!!!!!!!!!!
|
JP #FF00 ;!HARDCODE
|
||||||
|
|
||||||
;***************************************
|
;***************************************
|
||||||
PROG_STARTS:
|
PROG_STARTS: LD A,2
|
||||||
LD A,2
|
|
||||||
OUT (SLOT2),A
|
OUT (SLOT2),A
|
||||||
LD A,E
|
LD A,E
|
||||||
OUT (SYS_PORT.OFF),A
|
OUT (SYS_PORT.OFF),A
|
||||||
@ -1093,44 +1039,44 @@ PROG_STARTS:
|
|||||||
JP #3D29 ; RESET to TR-DOS
|
JP #3D29 ; RESET to TR-DOS
|
||||||
|
|
||||||
.Length EQU $-PROG_STARTS
|
.Length EQU $-PROG_STARTS
|
||||||
ASSERT PROG_STARTS.Length < #100, 'PROG_STARTS too big!!!'
|
ASSERT PROG_STARTS.Length<#100,'PROG_STARTS too big!!!'
|
||||||
;
|
;
|
||||||
;
|
;
|
||||||
; …᫨ ¯ à ¬¥âà § ¤ , â® ¢ë¡¨à ¥âáï § 票¥ Y
|
; …᫨ ¯ à ¬¥âà § ¤ , â® ¢ë¡¨à ¥âáï § 票¥ Y
|
||||||
PARAMS:; Y / N ; âãâ § ç¥¨ï ¤«ï ª«î祩 § ¯¨áë¢ îâáï ª ª 16 ¡¨â § 票¥, § ç¨â ®¡à âë© ¯®à冷ª ¡ ©â®¢
|
PARAMS:; Y / N ; âãâ § ç¥¨ï ¤«ï ª«î祩 § ¯¨áë¢ îâáï ª ª 16 ¡¨â § 票¥, § ç¨â ®¡à âë© ¯®à冷ª ¡ ©â®¢
|
||||||
Turbo__: dw Turbo_, #0302 ; ¢ª«îç¨âì TURBO
|
Turbo__: DW Turbo_, #0302 ; ¢ª«îç¨âì TURBO
|
||||||
Line312_ dw Lines312, #6141 ; ¢ª«îç¨âì 312 áâப
|
Line312_ DW Lines312, #6141 ; ¢ª«îç¨âì 312 áâப
|
||||||
Sprint_: dw Sprint, #040C ; ¢ª«îç¨âì Sprinter
|
Sprint_: DW Sprint, #040C ; ¢ª«îç¨âì Sprinter
|
||||||
P_7FFD_: dw P_7FFD, #0030 ; ¢ª«îç¨âì 7FFD
|
P_7FFD_: DW P_7FFD, #0030 ; ¢ª«îç¨âì 7FFD
|
||||||
P_1FFD_: dw P_1FFD, #0040 ; ¢ª«îç¨âì 1FFD
|
P_1FFD_: DW P_1FFD, #0040 ; ¢ª«îç¨âì 1FFD
|
||||||
Mem512_: dw Mem512, #8000 ; ¢ª«îç¨âì 512k
|
Mem512_: DW Mem512, #8000 ; ¢ª«îç¨âì 512k
|
||||||
To_trd_: dw To_trd, #0100 ; ¢o©â¨ ¢ TR-DOS
|
To_trd_: DW To_trd, #0100 ; ¢o©â¨ ¢ TR-DOS
|
||||||
Int_sc_: dw Int_sc, #0102 ; ¢ª«îç¨âì INT "¯®-᪮௨®®¢áª¨"
|
Int_sc_: DW Int_sc, #0102 ; ¢ª«îç¨âì INT "¯®-᪮௨®®¢áª¨"
|
||||||
No_run_: dw no_run, #00FF ; ¥ § ¯ã᪠âì
|
No_run_: DW no_run, #00FF ; ¥ § ¯ã᪠âì
|
||||||
Int_or_: dw Int_or, #0300 ; ¢ª«îç¨âì INT "Original"
|
Int_or_: DW Int_or, #0300 ; ¢ª«îç¨âì INT "Original"
|
||||||
Ret_zx_: dw Ret_zx, #4100 ; ¢ª«îç¨âì ¢®§¢à â ¢ ZX áâà ¨æ (#41) ¤®«¦ ᮢ¯ ¤ âì á ret_fn_
|
Ret_zx_: DW Ret_zx, #4100 ; ¢ª«îç¨âì ¢®§¢à â ¢ ZX áâà ¨æ (#41) ¤®«¦ ᮢ¯ ¤ âì á ret_fn_
|
||||||
Ret_fn_: dw Ret_fn, #4100 ; ¢ª«îç¨âì ¢®§¢à â ¢ FN áâà ¨æ (#41) ¤®«¦ ᮢ¯ ¤ âì á ret_zx_
|
Ret_fn_: DW Ret_fn, #4100 ; ¢ª«îç¨âì ¢®§¢à â ¢ FN áâà ¨æ (#41) ¤®«¦ ᮢ¯ ¤ âì á ret_zx_
|
||||||
dw 0,0 ; end marker
|
DW 0,0 ; end marker
|
||||||
|
|
||||||
Turbo_: db "turbo", 255,0
|
Turbo_: DB "turbo", 255,0
|
||||||
Lines312: db "lines312", 255,0
|
Lines312: DB "lines312", 255,0
|
||||||
Sprint: db "sprinter", 255,0
|
Sprint: DB "sprinter", 255,0
|
||||||
P_7FFD: db "7FFD", 255,0
|
P_7FFD: DB "7FFD", 255,0
|
||||||
P_1FFD: db "1FFD", 255,0
|
P_1FFD: DB "1FFD", 255,0
|
||||||
Mem512: db "mem512", 255,0
|
Mem512: DB "mem512", 255,0
|
||||||
Int_sc: db "int-sc", 255,0
|
Int_sc: DB "int-sc", 255,0
|
||||||
To_trd: db "to-trdos", 255,0
|
To_trd: DB "to-trdos", 255,0
|
||||||
no_run: db "no-run", 255,0
|
no_run: DB "no-run", 255,0
|
||||||
Int_or: db "origin", 255,0
|
Int_or: DB "origin", 255,0
|
||||||
Ret_zx: db "ret-zx", 255,0
|
Ret_zx: DB "ret-zx", 255,0
|
||||||
Ret_fn: db "ret-fn", 255,0
|
Ret_fn: DB "ret-fn", 255,0
|
||||||
|
|
||||||
;ZX_PROG_LEN EQU $-RELOAD_PROG
|
;ZX_PROG_LEN EQU $-RELOAD_PROG
|
||||||
|
|
||||||
;/Turbo /Lines312 /Sprinter /7FFD /1FFD /Mem512 /Int-Sc /To-TRDOS /no-run /origin /ret-zx /ret-fn
|
;/Turbo /Lines312 /Sprinter /7FFD /1FFD /Mem512 /Int-Sc /To-TRDOS /no-run /origin /ret-zx /ret-fn
|
||||||
|
|
||||||
CNF_FILE: db "SPECTRUM.CFG",0
|
CNF_FILE: DB "SPECTRUM.CFG",0
|
||||||
ONE_FILE: BLOCK FULL_FILE_NAME_LENGTH, 0
|
ONE_FILE: BLOCK FULL_FILE_NAME_LENGTH,0
|
||||||
;
|
;
|
||||||
;
|
;
|
||||||
;
|
;
|
||||||
@ -1143,7 +1089,7 @@ Loader_length EQU 0
|
|||||||
ENDIF
|
ENDIF
|
||||||
;----------------------------------------------[End Loader section]
|
;----------------------------------------------[End Loader section]
|
||||||
;
|
;
|
||||||
STACK_CHECK_MACRO stack_point, stack_buffer
|
STACK_CHECK_MACRO stack_point,stack_buffer
|
||||||
; Code after Loader
|
; Code after Loader
|
||||||
;[]-----------------------------[PLUGINS]-----------------------------[]
|
;[]-----------------------------[PLUGINS]-----------------------------[]
|
||||||
|
|
||||||
|
|||||||
372
trdscl.a80
372
trdscl.a80
@ -30,27 +30,25 @@ notuse1 WORD 0
|
|||||||
notuse2 BLOCK 9,32
|
notuse2 BLOCK 9,32
|
||||||
notuse3 BYTE 0
|
notuse3 BYTE 0
|
||||||
DelFilesNum BYTE 0
|
DelFilesNum BYTE 0
|
||||||
DiskName TEXT 8, {" "} ; beta version
|
DiskName TEXT 8,{" "} ; beta version
|
||||||
ENDS
|
ENDS
|
||||||
|
|
||||||
/*
|
; SYS_SECTOR:
|
||||||
SYS_SECTOR:
|
; DB 0
|
||||||
DB 0
|
; BLOCK 224,0
|
||||||
BLOCK 224,0
|
; .FirstFreeSec: DB 0
|
||||||
.FirstFreeSec: DB 0
|
; .FirstFreeTrk: DB 1
|
||||||
.FirstFreeTrk: DB 1
|
; .DiskType DB #16 ; #16 = 80-2, #17 = 40-2, #18 = 80-1, #19 = 40-1
|
||||||
.DiskType DB #16 ; #16 = 80-2, #17 = 40-2, #18 = 80-1, #19 = 40-1
|
; .AllFilesNum: DB 0
|
||||||
.AllFilesNum: DB 0
|
; .FreeSectors: DW 2544
|
||||||
.FreeSectors: DW 2544
|
; DB #10
|
||||||
DB #10
|
; DW 0000
|
||||||
DW 0000
|
; BLOCK 9,32
|
||||||
BLOCK 9,32
|
; DB 0
|
||||||
DB 0
|
; .DelFilesNum: DB 0
|
||||||
.DelFilesNum: DB 0
|
; .DiskName: BLOCK 8,32
|
||||||
.DiskName: BLOCK 8,32
|
; BLOCK 3,0
|
||||||
BLOCK 3,0
|
|
||||||
;
|
;
|
||||||
*/
|
|
||||||
|
|
||||||
; ÉÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
|
; ÉÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
|
||||||
; ºC¬¥é¥¨¥ ³„«¨ ³ H § 票¥ º
|
; ºC¬¥é¥¨¥ ³„«¨ ³ H § 票¥ º
|
||||||
@ -64,19 +62,18 @@ SYS_SECTOR:
|
|||||||
; º #0E ³ 1 ³ H®¬¥p 1£® c¥ªâ®p º
|
; º #0E ³ 1 ³ H®¬¥p 1£® c¥ªâ®p º
|
||||||
; º #0F ³ 1 ³ H®¬¥p ¤®p®¦ª¨ º
|
; º #0F ³ 1 ³ H®¬¥p ¤®p®¦ª¨ º
|
||||||
; ÈÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
|
; ÈÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
|
||||||
/*
|
|
||||||
CAT_ELEMENT:
|
; CAT_ELEMENT:
|
||||||
.Name BLOCK 8,32
|
; .Name BLOCK 8,32
|
||||||
.Type DB 0
|
; .Type DB 0
|
||||||
.Start DW 0000
|
; .Start DW 0000
|
||||||
.Length DW 0000
|
; .Length DW 0000
|
||||||
.Sectors DB 0
|
; .Sectors DB 0
|
||||||
.FirstSector DB 0
|
; .FirstSector DB 0
|
||||||
.FirstTrack DB 0
|
; .FirstTrack DB 0
|
||||||
*/
|
|
||||||
|
|
||||||
STRUCT CAT_Elements
|
STRUCT CAT_Elements
|
||||||
Name block 8
|
Name BLOCK 8
|
||||||
Type BYTE
|
Type BYTE
|
||||||
Start WORD
|
Start WORD
|
||||||
Length WORD
|
Length WORD
|
||||||
@ -95,215 +92,210 @@ FileBlock CAT_Elements
|
|||||||
; Page = 64 sectors = 4 tracks
|
; Page = 64 sectors = 4 tracks
|
||||||
|
|
||||||
;-----------[]
|
;-----------[]
|
||||||
Load_SCL:
|
|
||||||
;-------[Œ¥âª ¤¨áª - ¨¬ï ä ©« ]-------
|
|
||||||
ld hl,ONE_FILE
|
|
||||||
ld de,SCL_Buffer
|
|
||||||
ld bc,#0300+Dss.EX_Path
|
|
||||||
rst ToDSS
|
|
||||||
jr c,.skip
|
|
||||||
|
|
||||||
ld hl,SCL_Buffer
|
;-------[Œ¥âª ¤¨áª - ¨¬ï ä ©« ]-------
|
||||||
ld a,'.'
|
Load_SCL: LD HL,ONE_FILE
|
||||||
ld bc,0008
|
LD DE,SCL_Buffer
|
||||||
ld de,SYS_SECTOR.DiskName
|
LD BC,#0300+Dss.EX_Path
|
||||||
|
RST ToDSS
|
||||||
|
JR C,.skip
|
||||||
|
|
||||||
|
LD HL,SCL_Buffer
|
||||||
|
LD A,'.'
|
||||||
|
LD BC,0008
|
||||||
|
LD DE,SYS_SECTOR.DiskName
|
||||||
.loop:
|
.loop:
|
||||||
cp (hl)
|
CP (HL)
|
||||||
jr z,.skip
|
JR Z,.skip
|
||||||
ldi
|
LDI
|
||||||
jp pe,.loop
|
JP PE,.loop
|
||||||
|
|
||||||
.skip:
|
.skip:
|
||||||
;-------[¯à®¢¥àª 奤íà SINCLAIR]------
|
;-------[¯à®¢¥àª 奤íà SINCLAIR]------
|
||||||
|
|
||||||
ld a,(IMAGE_HANDLER)
|
LD A,(IMAGE_HANDLER)
|
||||||
ld hl,SCL_Buffer
|
LD HL,SCL_Buffer
|
||||||
ld de,8
|
LD DE,8 ; ¡ ©â®¢
|
||||||
ld c,Dss.Read
|
LD C,Dss.Read
|
||||||
rst ToDSS
|
RST ToDSS
|
||||||
ret c ; ®¡à ¡®â稪 ®è¨¡ª¨
|
RET C ; ®¡à ¡®â稪 ®è¨¡ª¨
|
||||||
|
|
||||||
ld hl,SCL_Buffer
|
LD HL,SCL_Buffer
|
||||||
ld de,SCL_HEADER
|
LD DE,SCL_HEADER
|
||||||
ld b,8
|
LD B,8
|
||||||
.check_header:
|
.check_header: LD A,(DE)
|
||||||
ld a,(de)
|
CP (HL)
|
||||||
cp (hl)
|
JR NZ,.error_header
|
||||||
jr nz,.error_header
|
INC HL
|
||||||
inc hl
|
INC DE
|
||||||
inc de
|
DJNZ .check_header
|
||||||
djnz .check_header
|
JR .get_size
|
||||||
jr .get_size
|
.error_header: SCF
|
||||||
.error_header:
|
RET
|
||||||
scf
|
|
||||||
ret
|
|
||||||
|
|
||||||
;------[¢ëç¨á«¥¨¥ à §¬¥à ¤«ï TRD]-----
|
;------[¢ëç¨á«¥¨¥ à §¬¥à ¤«ï TRD]-----
|
||||||
.get_size:
|
.get_size:
|
||||||
/* ld a,(IMAGE_HANDLER)
|
; LD A,(IMAGE_HANDLER)
|
||||||
ld hl,0
|
; LD HL,0
|
||||||
ld ix,SclOffsets.Files
|
; LD IX,SclOffsets.Files
|
||||||
ld b,l
|
; LD B,L
|
||||||
ld c,Dss.Move_FP
|
; LD C,Dss.Move_FP
|
||||||
rst ToDSS ; 㪠§ â¥«ì ¡ ©â ª®«¨ç¥á⢠¡«®ª®¢ (ä ©«®¢)
|
; RST ToDSS ; 㪠§ â¥«ì ¡ ©â ª®«¨ç¥á⢠¡«®ª®¢ (ä ©«®¢)
|
||||||
ret c ; ®¡à ¡®â稪 ®è¨¡ª¨!!!!!
|
; RET C ; ®¡à ¡®â稪 ®è¨¡ª¨!!!!!
|
||||||
;*/
|
|
||||||
ld a,(IMAGE_HANDLER)
|
LD A,(IMAGE_HANDLER)
|
||||||
ld hl,SCL_Buffer
|
LD HL,SCL_Buffer
|
||||||
ld de,#701
|
LD DE,#701
|
||||||
ld c,Dss.Read
|
LD C,Dss.Read
|
||||||
rst ToDSS ; !FIXIT ᤥ« âì ª®âà®«ì ®è¨¡ª¨? ; ç¨â ¥¬ ¡ ©â ª®«¨ç¥á⢠¡«®ª®¢ (ä ©«®¢)
|
RST ToDSS ; !FIXIT ᤥ« âì ª®âà®«ì ®è¨¡ª¨? ; ç¨â ¥¬ ¡ ©â ª®«¨ç¥á⢠¡«®ª®¢ (ä ©«®¢)
|
||||||
;
|
;
|
||||||
ld a,(SCL_Buffer)
|
LD A,(SCL_Buffer)
|
||||||
ld l,a
|
LD L,A
|
||||||
xor a
|
XOR A
|
||||||
ld h,a
|
LD H,A
|
||||||
;
|
;
|
||||||
add hl,hl ;*2
|
ADD HL,HL ;*2
|
||||||
push hl
|
PUSH HL
|
||||||
add hl,hl ;*4
|
ADD HL,HL ;*4
|
||||||
ld d,h
|
LD D,H
|
||||||
ld e,l
|
LD E,L
|
||||||
add hl,hl ;*8
|
ADD HL,HL ;*8
|
||||||
add hl,de ;*12
|
ADD HL,DE ;*12
|
||||||
pop de
|
POP DE
|
||||||
add hl,de ; ¢ HL § 票¥ A*14
|
ADD HL,DE ; ¢ HL § 票¥ A*14
|
||||||
|
|
||||||
add hl,bc
|
ADD HL,BC
|
||||||
|
|
||||||
ld de,SclOffsets.FileBlock
|
LD DE,SclOffsets.FileBlock
|
||||||
add hl,de ; ¢ HL à §¬¥à ®â ç « SCL ¤® ç « ¡«®ª ¤ ëå (header_length)
|
ADD HL,DE ; ¢ HL à §¬¥à ®â ç « SCL ¤® ç « ¡«®ª ¤ ëå (header_length)
|
||||||
push hl
|
PUSH HL
|
||||||
;
|
;
|
||||||
ld a,(IMAGE_HANDLER)
|
LD A,(IMAGE_HANDLER)
|
||||||
ld hl,0
|
LD HL,0
|
||||||
ld ix,4 ; ¨£®à¨¬ ª®â஫ìãî á㬬ã scl ä ©«
|
LD IX,4 ; ¨£®à¨¬ ª®â஫ìãî á㬬ã scl ä ©«
|
||||||
ld b,2
|
LD B,2
|
||||||
ld c,Dss.Move_FP
|
LD C,Dss.Move_FP
|
||||||
rst ToDSS ; 㪠§ â¥«ì ª®¥æ ä ©«
|
RST ToDSS ; 㪠§ â¥«ì ª®¥æ ä ©«
|
||||||
jr nc,1F ; ®¡à ¡®â稪 ®è¨¡ª¨!!!!!
|
JR NC,1F ;!FIXIT ®¡à ¡®â稪 ®è¨¡ª¨!!!!!
|
||||||
|
|
||||||
pop hl
|
POP HL
|
||||||
ret
|
RET
|
||||||
|
|
||||||
1: push ix
|
1: PUSH IX
|
||||||
pop de ; § 票¥ ¬« ¤è¨å 16 ¡¨â à §¬¥à ä ©«
|
POP DE ; § 票¥ ¬« ¤è¨å 16 ¡¨â à §¬¥à ä ©«
|
||||||
ex (sp),hl ; § 票¥ header_length ¢ HL, áâ àè ï ç áâì à §¬¥à ä ©« á⥪¥
|
EX (SP),HL ; § 票¥ header_length ¢ HL, áâ àè ï ç áâì à §¬¥à ä ©« á⥪¥
|
||||||
ex de,hl ; ¢ HL § 票¥ ¬« ¤è¨å 16 ¡¨â à §¬¥à ä ©« , ¢ DE - header_length
|
EX DE,HL ; ¢ HL § 票¥ ¬« ¤è¨å 16 ¡¨â à §¬¥à ä ©« , ¢ DE - header_length
|
||||||
|
|
||||||
sbc hl,de
|
SBC HL,DE
|
||||||
ld de,0
|
LD DE,0
|
||||||
ex (sp),hl ; ¬« ¤è ï ç áâì à §¬¥à ä ©« á⥪¥
|
EX (SP),HL ; ¬« ¤è ï ç áâì à §¬¥à ä ©« á⥪¥
|
||||||
sbc hl,de ; ¢ HL áâ àè ï ç áâì à §¬¥à ä ©«
|
SBC HL,DE ; ¢ HL áâ àè ï ç áâì à §¬¥à ä ©«
|
||||||
|
|
||||||
ex (sp),hl ; áâ àè ï ç áâì à §¬¥à ä ©« á⥪¥
|
EX (SP),HL ; áâ àè ï ç áâì à §¬¥à ä ©« á⥪¥
|
||||||
ld de,#1000
|
LD DE,#1000
|
||||||
add hl,de
|
ADD HL,DE
|
||||||
|
|
||||||
ex (sp),hl ; ¬« ¤è ï ç áâì à §¬¥à ä ©« á⥪¥
|
EX (SP),HL ; ¬« ¤è ï ç áâì à §¬¥à ä ©« á⥪¥
|
||||||
ld de,0
|
LD DE,0
|
||||||
adc hl,de
|
ADC HL,DE
|
||||||
pop de ; âãâ ¢ hl:de à §¬¥à ¤«ï trd
|
POP DE ; âãâ ¢ hl:de à §¬¥à ¤«ï trd
|
||||||
|
|
||||||
;---------------------------------------
|
;---------------------------------------
|
||||||
|
CALL Get_RAM_Disk_E
|
||||||
call Get_RAM_Disk_E
|
RET C ;!FIXIT ®¡à ¡®â稪 ®è¨¡ª¨!!!!!
|
||||||
ret c ; ®¡à ¡®â稪 ®è¨¡ª¨!!!!!
|
|
||||||
|
|
||||||
Convert_SCLtoTRD:
|
Convert_SCLtoTRD:
|
||||||
|
|
||||||
LD A,(MEM_BLK)
|
LD A,(MEM_BLK)
|
||||||
out (SLOT3),a ; ¢áâ ¢«ï¥¬ ¯¥à¢ãî áâà ¨æã RAM-¤¨áª
|
OUT (SLOT3),A ; ¢áâ ¢«ï¥¬ ¯¥à¢ãî áâà ¨æã RAM-¤¨áª
|
||||||
|
|
||||||
ld hl,SCL_Buffer
|
LD HL,SCL_Buffer
|
||||||
ld b,(hl) ; CAT_Elements
|
LD B,(HL) ; CAT_Elements
|
||||||
inc hl
|
INC HL
|
||||||
ld de,#C000 ; RAM-drive's track 0
|
LD DE,#C000 ; RAM-drive's track 0
|
||||||
ld ix,SYS_SECTOR
|
LD IX,SYS_SECTOR
|
||||||
ld (ix+SEEK.AllFilesNum),b
|
LD (ix+SEEK.AllFilesNum),B
|
||||||
.cat_loop:
|
.cat_loop: PUSH BC
|
||||||
push bc
|
LD A,(HL)
|
||||||
ld a,(hl)
|
|
||||||
CP 1
|
CP 1
|
||||||
jr nz,1F ; this file is not deleted
|
JR NZ,1F ; this file is not deleted
|
||||||
inc (ix+SEEK.DelFilesNum)
|
INC (ix+SEEK.DelFilesNum)
|
||||||
1: ld bc,CAT_Elements-2 ; ld bc,#0D
|
1: LD BC,CAT_Elements-2 ; ld bc,#0D
|
||||||
ldir ; copy 14 bites of scl files table to trd image catalog
|
LDIR ; copy 14 bites of scl files table to trd image catalog
|
||||||
|
|
||||||
ld a,(SYS_SECTOR.FirstFreeSec)
|
LD A,(SYS_SECTOR.FirstFreeSec)
|
||||||
ld (de),a
|
LD (DE),A
|
||||||
ld c,a ;!---[v 1]
|
LD C,A ;!---[v 1]
|
||||||
inc de
|
INC DE
|
||||||
ld a,(SYS_SECTOR.FirstFreeTrk)
|
LD A,(SYS_SECTOR.FirstFreeTrk)
|
||||||
ld (de),a
|
LD (DE),A
|
||||||
inc de ; Pointer on next filename in RAM drive
|
INC DE ; Pointer on next filename in RAM drive
|
||||||
|
|
||||||
dec hl ; set to number of sectors
|
DEC HL ; set to number of sectors
|
||||||
ld a,(hl) ; get file length in sectors from scl-table
|
LD A,(HL) ; get file length in sectors from scl-table
|
||||||
and #0F
|
AND #0F
|
||||||
add a,c ;!---[^ 1]
|
ADD A,C ;!---[^ 1]
|
||||||
ld c,a ;!---[v 2]
|
LD C,A ;!---[v 2]
|
||||||
and #0F
|
AND #0F
|
||||||
ld (SYS_SECTOR.FirstFreeSec),a
|
LD (SYS_SECTOR.FirstFreeSec),A
|
||||||
ld a,#F0
|
LD A,#F0
|
||||||
and c ;!---[^ 2]
|
AND C ;!---[^ 2]
|
||||||
jr z,1F
|
JR Z,1F
|
||||||
inc (ix+SEEK.FirstFreeTrk)
|
INC (ix+SEEK.FirstFreeTrk)
|
||||||
1: ld a,(hl)
|
1: LD A,(HL)
|
||||||
srl a
|
SRL A
|
||||||
srl a
|
SRL A
|
||||||
srl a
|
SRL A
|
||||||
srl a
|
SRL A
|
||||||
add a,(ix+SEEK.FirstFreeTrk)
|
ADD A,(ix+SEEK.FirstFreeTrk)
|
||||||
ld (SYS_SECTOR.FirstFreeTrk),a
|
LD (SYS_SECTOR.FirstFreeTrk),A
|
||||||
|
|
||||||
inc hl ; Pointer on next filename in SCL_Buffer
|
INC HL ; Pointer on next filename in SCL_Buffer
|
||||||
pop bc
|
POP BC
|
||||||
djnz .cat_loop
|
DJNZ .cat_loop
|
||||||
|
|
||||||
xor a
|
XOR A
|
||||||
ld (de),a ; file table end marker
|
LD (DE),A ; file table end marker
|
||||||
;---------------------------------------
|
;---------------------------------------
|
||||||
|
|
||||||
; „®¤¥« âì!!!!!
|
;!TODO „®¤¥« âì!!!!!
|
||||||
; SYS_SECTOR.FreeSectors
|
; SYS_SECTOR.FreeSectors
|
||||||
|
|
||||||
; push hl ; ¡ ©â ¢ ¡ãä¥à¥ ®âªã¤ ¢ SCL ç¨ îâáï ¤ ë¥ (HL-SCL_Buffer)
|
; push hl ; ¡ ©â ¢ ¡ãä¥à¥ ®âªã¤ ¢ SCL ç¨ îâáï ¤ ë¥ (HL-SCL_Buffer)
|
||||||
; push de ; ¡ ©â ¢ ram ¤¨áª¥ trd £¤¥ § ª 稢 ¥âáï â ¡«¨æ ¯®á«¥¤¥£® ä ©«
|
; push de ; ¡ ©â ¢ ram ¤¨áª¥ trd £¤¥ § ª 稢 ¥âáï â ¡«¨æ ¯®á«¥¤¥£® ä ©«
|
||||||
|
|
||||||
xor a
|
XOR A
|
||||||
ld de,SCL_Buffer-8 ; ¢ëç¨á«ï¥¬ § 票¥ á¬¥é¥¨ï ¢ ä ©«¥ ¨§ § 票ï á¬¥é¥¨ï ¢ ¡ãä¥à¥
|
LD DE,SCL_Buffer-8 ; ¢ëç¨á«ï¥¬ § 票¥ á¬¥é¥¨ï ¢ ä ©«¥ ¨§ § 票ï á¬¥é¥¨ï ¢ ¡ãä¥à¥
|
||||||
sbc hl,de
|
SBC HL,DE
|
||||||
push hl
|
PUSH HL
|
||||||
pop ix
|
POP IX
|
||||||
|
|
||||||
ld a,(IMAGE_HANDLER)
|
LD A,(IMAGE_HANDLER)
|
||||||
ld hl,0
|
LD HL,0
|
||||||
ld B,L ; b=0 - ®â ç « ä ©«
|
LD B,L ; b=0 - ®â ç « ä ©«
|
||||||
ld c,Dss.Move_FP
|
LD C,Dss.Move_FP
|
||||||
rst ToDSS ; 㪠§ â¥«ì ¯¥à¢ë© ¡ ©â ¤ ëå
|
RST ToDSS ; 㪠§ â¥«ì ¯¥à¢ë© ¡ ©â ¤ ëå
|
||||||
jr nc,1F ; ®¡à ¡®â稪 ®è¨¡ª¨!!!!!
|
JR NC,1F ; ®¡à ¡®â稪 ®è¨¡ª¨!!!!!
|
||||||
|
|
||||||
pop de
|
POP DE
|
||||||
ret
|
RET
|
||||||
|
|
||||||
1: di
|
1: DI
|
||||||
ld hl,SYS_SECTOR_START
|
LD HL,SYS_SECTOR_START
|
||||||
ld de,#C800 ; sys sector of tr-dos disk in bank3 of ram-disk
|
LD DE,#C800 ; sys sector of tr-dos disk in bank3 of ram-disk
|
||||||
ACC_SetBlockSize
|
ACC_SetBlockSize
|
||||||
ld a,0
|
LD A,0
|
||||||
ACC_CopyBlock
|
ACC_CopyBlock
|
||||||
ld a,(HL)
|
LD A,(HL)
|
||||||
ld (DE),a
|
LD (DE),A
|
||||||
ACC_Off
|
ACC_Off
|
||||||
; ei
|
;EI
|
||||||
|
|
||||||
LD A,(IMAGE_HANDLER)
|
LD A,(IMAGE_HANDLER)
|
||||||
LD HL,#D000 ; ¤®£à㧨âì ¤® ª®æ áâà ¨æë
|
LD HL,#D000 ; ¤®£à㧨âì ¤® ª®æ áâà ¨æë
|
||||||
LD DE,#3000
|
LD DE,#3000
|
||||||
LD C,Dss.Read
|
LD C,Dss.Read
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
JP C,ERROR_IN_READ ; ®¡à ¡®â稪 ®è¨¡ª¨!!!!!
|
JP C,ERROR_IN_READ ;!FIXIT ®¡à ¡®â稪 ®è¨¡ª¨!!!!!
|
||||||
|
|
||||||
LD HL,MSG_LOAD_IMAGE ; loading image
|
LD HL,MSG_LOAD_IMAGE ; loading image
|
||||||
LD C,Dss.PChars
|
LD C,Dss.PChars
|
||||||
@ -315,7 +307,7 @@ Convert_SCLtoTRD:
|
|||||||
|
|
||||||
DI
|
DI
|
||||||
LD A,(MEM_BLK)
|
LD A,(MEM_BLK)
|
||||||
jp Load_IMAGE_File.scl_read_next
|
JP Load_IMAGE_File.scl_read_next
|
||||||
|
|
||||||
;-----------[]
|
;-----------[]
|
||||||
|
|
||||||
@ -330,7 +322,7 @@ SYS_SECTOR_END: BLOCK 3,0
|
|||||||
SCL_FILE_ID: DB 0
|
SCL_FILE_ID: DB 0
|
||||||
;-----------[¢ á ¬ë© ª®¥æ]-------------
|
;-----------[¢ á ¬ë© ª®¥æ]-------------
|
||||||
SCL_Buffer EQU $
|
SCL_Buffer EQU $
|
||||||
assert SCL_Buffer+#701 < #C000, "Buffer out of mem bank 2"
|
ASSERT SCL_Buffer+#701<#C000,"Buffer out of mem bank 2"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user