mirror of
https://github.com/Tolik-Trek/Spectrum.EXE.git
synced 2026-06-15 00:51:36 +03:00
1537 lines
36 KiB
NASM
1537 lines
36 KiB
NASM
|
||
;
|
||
; .----------------. .----------------. .----------------. .----------------. .----------------. .----------------. .----------------. .----------------.
|
||
; | .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. |
|
||
; | | _______ | || | ______ | || | _________ | || | ______ | || | _________ | || | _______ | || | _____ _____ | || | ____ ____ | |
|
||
; | | / ___ | | || | |_ __ \ | || | |_ ___ | | || | .' ___ | | || | | _ _ | | || | |_ __ \ | || ||_ _||_ _|| || ||_ \ / _|| |
|
||
; | | | (__ \_| | || | | |__) | | || | | |_ \_| | || | / .' \_| | || | |_/ | | \_| | || | | |__) | | || | | | | | | || | | \/ | | |
|
||
; | | '.___`-. | || | | ___/ | || | | _| _ | || | | | | || | | | | || | | __ / | || | | ' ' | | || | | |\ /| | | |
|
||
; | | |`\____) | | || | _| |_ | || | _| |___/ | | || | \ `.___.'\ | || | _| |_ | || | _| | \ \_ | || | \ `--' / | || | _| |_\/_| |_ | |
|
||
; | | |_______.' | || | |_____| | || | |_________| | || | `._____.' | || | |_____| | || | |____| |___| | || | `.__.' | || ||_____||_____|| |
|
||
; | | | || | | || | | || | | || | | || | | || | | || | | |
|
||
; | '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' |
|
||
; '----------------' '----------------' '----------------' '----------------' '----------------' '----------------' '----------------' '----------------'
|
||
;
|
||
|
||
/*
|
||
SYS
|
||
[x] - § ¤ ñâáï CONFIG_DE ¯¥à¥¤ § ¯ã᪮¬ ᯥªâà㬠¨ ¢ ¯¥à¥å¢ â稪¥ à¥á¥â (¤«ï ¡®«¥¥ £« ¤ª®© ᮢ¬¥á⨬®á⨠ᮠáâ àë¬ á®ä⮬ Sp97)
|
||
[x] - ¯®¤¤¥à¦ª ®¢ëå ®¡à §®¢ vROM
|
||
[x] - ¢ ª®ä¨£¥ ¬®¦® ¯à®¯ãáâ¨âì § £à㧪ã á HDD ¢ë¡à ëå vROM, ®¨ ¯à®¯ã᪠îâáï ¥á«¨ ¯¥à¥¤ ¯ãâñ¬ á⮨â ";"
|
||
[x] - ¯à®¢¥àïâì ¬¥âªã ZX, ¥á«¨ ¬ë ¥ £à㧨¬ 3 ®á®¢ëå vROM
|
||
[x] - ¤®¡ ¢«¥ ᮢ¬¥á⨬®áâì á ¤¥¬® ATARIN, ãᯮ«ì§ãî饩 ¥¯®«ãî ¤¥è¨äà æ¨î ¯®àâ AY
|
||
[x] - ¯¥à¥¤ ¢å®¤®¬ ¢ ०¨¬ ᯥªâà㬠⥪ã騬 ãáâ ¢«¨¢ ¥âáï ¯®«ë© ¯ãâì ª ¯ ¯ª¥ á ª®â®à®£© § £à㦠«áï ®¡à § TRD
|
||
;
|
||
Images
|
||
[+] - Load SCL image
|
||
[ ] - Load TAP image
|
||
[ ] - Load SNA file
|
||
;
|
||
Features
|
||
[+] - …᫨ ¢ë¡à ® ret-zx,â® ¯à¨ ¦ ⨨ ¯à®¡¥« áà §ã ¯®á«¥ CAD ¢¥àñâ ¢ DSS
|
||
[*] - Œ¥ïâì ᯥªâà㬮¢áªãî ¯ «¨âàã
|
||
[ ] - ‚ë¤ ¢ âì á®®¡é¥¨ï ï§ëª¥ ãáâ ®¢«¥®¬ ¢ CMOS
|
||
*/
|
||
|
||
;
|
||
; Compilation parameters
|
||
;***************************************
|
||
DEVICE SPRINTER
|
||
; MMU 2 e, 0 ; ã«¥¢ ï áâà ¨æ ¢ ¡ ªã 2 ¨ ¯à®¢¥àª £à ¨æë
|
||
; OUTPUT './Build/new.bin'
|
||
;***************************************
|
||
|
||
;
|
||
; Defines section
|
||
;***************************************
|
||
IFNDEF DEBUG : DEFINE DEBUG 0 : ENDIF
|
||
IFNDEF EMULATOR 0 : DEFINE EMULATOR 0 : ENDIF
|
||
DEFINE EXE_HEADER 1
|
||
DEFINE App_EXE_Version 1
|
||
DEFINE NEW_MEMORY_LOGIC 1
|
||
; define NEED_LOADER 1
|
||
; define NeedSafePort_Y 0
|
||
;***************************************
|
||
;
|
||
|
||
;
|
||
; Included constants section
|
||
;***************************************
|
||
INCLUDE 'Shared_Includes/constants/sp2000.inc'
|
||
INCLUDE 'Shared_Includes/constants/dss_equ.inc'
|
||
INCLUDE 'Shared_Includes/constants/BIOS_equ.inc'
|
||
;***************************************
|
||
;
|
||
|
||
;
|
||
; Included macroses section
|
||
;***************************************
|
||
INCLUDE 'Shared_Includes/macroses/macros.z80'
|
||
INCLUDE 'Shared_Includes/macroses/accelerator.z80'
|
||
;***************************************
|
||
;
|
||
|
||
; Included LUA section
|
||
;***************************************
|
||
INCLUDELUA <Shared_Includes/LUA/Functions.LUA>
|
||
;***************************************
|
||
;
|
||
|
||
;
|
||
; Standart EQU section
|
||
;***************************************
|
||
org_addr EQU #8000+CLP_Buffer
|
||
code_addr EQU BEGIN
|
||
stack_point EQU #C000
|
||
stack_buffer EQU 64
|
||
program_start EQU BEGIN
|
||
Loader_length EQU 0
|
||
;***************************************
|
||
;
|
||
|
||
;
|
||
; Program EQU section
|
||
;***************************************
|
||
FULL_FILE_NAME_LENGTH EQU 256 ; ¤«¨ áâப¨ ¯ã⨠ª ä ©«ã
|
||
MAX_LINE_LENGTH EQU 120 ; ¤«¨ áâப¨ CFG ä ©«
|
||
|
||
|
||
CFG_FILE_LINES EQU 13
|
||
.NAME EQU 1
|
||
.BASIC128 EQU 2
|
||
.BASIC_48 EQU 3
|
||
.TRDOS EQU 4
|
||
.ZXEXP EQU 5
|
||
.ZXBIOS1 EQU 6
|
||
.ZXBIOS2 EQU 7
|
||
.BASIC128_2 EQU 8
|
||
.BASIC_48_2 EQU 9
|
||
.TRDOS_2 EQU 10
|
||
.ZXEXP_2 EQU 11
|
||
.OPTIONS EQU 12
|
||
.PALETTE EQU 13
|
||
|
||
;OPTIONS_LINE EQU (CFG_FILE_LINES-1)*2
|
||
;***************************************
|
||
;
|
||
|
||
;
|
||
; Program EQU section
|
||
;***************************************
|
||
INCLUDE 'version.inc'
|
||
;***************************************
|
||
;
|
||
|
||
;
|
||
; Code start section
|
||
;[]-------------------------------------------------------------------[]
|
||
IF EXE_HEADER
|
||
INCLUDE 'Shared_Includes/constants/EXE_Header.z80'
|
||
ORG org_addr
|
||
ELSE
|
||
ORG org_addr-CLP_Buffer
|
||
ENDIF
|
||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||
BEGIN: LD (LINE_X),IX
|
||
|
||
LD HL,START_MSG
|
||
LD C,Dss.PChars
|
||
RST ToDSS
|
||
|
||
IN A,(SLOT3)
|
||
LD (SAVE_SLOT3),A
|
||
;
|
||
;
|
||
;!TODO
|
||
;LD HL,SPECTRUM_HOME_DIR
|
||
;LD BC,Dss.AppInfo.EXE_HomeDir
|
||
;RST ToDSS
|
||
;;
|
||
;LD C,Dss.CurDisk
|
||
;RST ToDSS
|
||
;ADD A,'A'
|
||
;LD (USER_CURRENT_DRV),A
|
||
;;
|
||
;LD HL,USER_CURRENT_DIR
|
||
;LD C,Dss.CurDir
|
||
;RST ToDSS
|
||
;
|
||
; JR PARSE_CMD_LINE
|
||
CALL PARSE_CMD_LINE
|
||
CALL READ_CNF_FILE
|
||
; SetUp ZX
|
||
CALL PARSE_PARAMETERS
|
||
CALL COUNT_vROM_PAGES
|
||
PUSH AF
|
||
; Žç¨é ¥¬ ¯ ¬ïâì, ¥á«¨ ROM_BIN > 0
|
||
LD BC,BIOS.ZX_MEMORY_MANAGER.FreeZXvPages.vROM
|
||
CALL NC,ToBIOS
|
||
; ‚뤥«ï¥¬ áâà ¨æë ¯®¤ vRAM
|
||
LD A,(PARAMS.No_run + 2)
|
||
AND A
|
||
CALL NZ,GET_vRAM_PAGES
|
||
JR C,Error_NoMemForSPpages
|
||
POP AF
|
||
; ‚뤥«ï¥¬ áâà ¨æë ¯®¤ vROM, ¥á«¨ ROM_BIN > 0
|
||
JR C,.skip_vROM
|
||
LD A,(ZX_vROM_COUNT)
|
||
LD B,A
|
||
LD C,BIOS.GetMem
|
||
RST ToBIOS
|
||
JR C,Error_NoMemForSPpages
|
||
LD (ZX_vROM_BLK),A
|
||
; Œ ¯¯¨¬ áâà ¨æë vROM, ¥á«¨ ROM_BIN > 0
|
||
LD HL,BUFFER_RAM_PAGES
|
||
LD C,BIOS.GetMemBlkPages
|
||
RST ToBIOS
|
||
CALL LOAD_vROM_BIN
|
||
.skip_vROM: ; ¥á«¨ norun, â® ¤ «ìè¥ ¥ ¤®
|
||
LD A,(PARAMS.No_run + 2)
|
||
AND A
|
||
LD HL,MSG_EXIT1
|
||
JP Z,EXIT_ALL
|
||
; £à㧨¬ ¯ «¨âàã ¨ ®¡à § ¤¨áª , ¥á«¨ ¤®
|
||
CALL LOAD_IMAGE_FILE
|
||
CALL LOADING_PALETTE
|
||
CALL SHOW_MESSAGE_OK_CFG_NAME
|
||
JP PREPARE_TO_ZXMODE
|
||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||
|
||
|
||
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
Error_NoMemForSPpages:
|
||
LD HL,NO_MEM_MSG
|
||
JR ERROR_FILE.prn_msg
|
||
ERROR_FILE: LD HL,ERROR_FILE_MSG_X
|
||
LD C,Dss.PChars
|
||
RST ToDSS
|
||
;
|
||
LD A,(FILE_HANDLE)
|
||
LD C,Dss.Close
|
||
RST ToDSS
|
||
;
|
||
LD HL,ONE_FILE
|
||
.prn_msg: LD C,Dss.PChars
|
||
RST ToDSS
|
||
;
|
||
LD A,(vROM_LOAD_BIN.need_free)
|
||
OR A
|
||
JR Z,.skip_free
|
||
;
|
||
LD A,(ZX_vROM_BLK)
|
||
LD C,BIOS.FreeMem
|
||
RST ToBIOS
|
||
;
|
||
.skip_free: LD HL,ERROR_FILE_MSG
|
||
JR EXIT_ALL
|
||
ERROR_ZX_FLAG: LD HL,MSG_NO_ZX_FLAG
|
||
JR EXIT_ALL
|
||
END_CNF_ERROR:
|
||
LD HL,ERROR_CNF
|
||
EXIT_ALL: LD C,Dss.PChars
|
||
RST ToDSS
|
||
;
|
||
LD BC,BIOS.ZX_MEMORY_MANAGER.FreeZXvPages.vRAM
|
||
RST ToBIOS
|
||
.loop: LD BC,Dss.Exit
|
||
RST ToDSS
|
||
JR .loop
|
||
;
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
|
||
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
; out B - old ROM-page
|
||
SET_ROM: DI ;!FIXIT ®áâ ¢¨âì ®¤® DI ¢ ç «¥
|
||
LD C,BIOS.SET_PORTS
|
||
JP ToBIOS
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
|
||
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
; —⥨¥ ®¡à § TRD/SCL ¢ à ¬¤à ©¢
|
||
READ_IMAGE: LD DE,ONE_FILE
|
||
LD BC,FULL_FILE_NAME_LENGTH
|
||
LDIR
|
||
LD HL,ONE_FILE
|
||
|
||
LD A,Dss.Open.R
|
||
LD C,Dss.Open
|
||
RST ToDSS
|
||
RET C
|
||
|
||
LD (IMAGE_HANDLER),A
|
||
; [x] 31/01/2024 ¯®¤¤¥à¦ª ¯¥à¥ª«îç¥¨ï ¤¨áª /à §¤¥« ¢ TR-DOS
|
||
LD HL,ONE_FILE
|
||
LD BC,Dss.EX_Path.GET_ALL
|
||
RST ToDSS
|
||
JR C,.no_change_Disk
|
||
AND 8
|
||
JR Z,.currentDisk
|
||
;
|
||
LD C,Dss.CurDisk
|
||
RST ToDSS
|
||
JR C,.no_change_Disk
|
||
JR .getInfoDRV
|
||
;
|
||
.currentDisk: LD A,(ONE_FILE)
|
||
SUB "A"
|
||
;
|
||
.getInfoDRV: ; <20> áâà ¨¢ ¥¬ HDD
|
||
OR #80
|
||
LD HL,TMP_BUFF
|
||
LD BC,Dss.DskInfo
|
||
RST ToDSS
|
||
;
|
||
LD B,4 ;!HARDCODE ®¬¥à 㦮£® ¯ à ¬¥âà
|
||
LD DE,0
|
||
LD HL,TMP_BUFF
|
||
.loop_param: ADD HL,DE
|
||
LD E,(HL)
|
||
INC HL
|
||
DJNZ .loop_param
|
||
; check HDD
|
||
LD A,(HL)
|
||
CP DRIVE_CODES.SPRINTER.HDD
|
||
JR C,.no_change_Disk
|
||
CP DRIVE_CODES.SPRINTER.HDD + 4 + 1
|
||
JR NC,.no_change_Disk
|
||
;
|
||
LD A,%0000'0011
|
||
AND (HL)
|
||
LD D,A
|
||
INC HL
|
||
LD A,(HL)
|
||
RLCA
|
||
RLCA
|
||
;
|
||
OR D
|
||
AND #0F
|
||
;
|
||
LD (SET_CURRENT_HDD.NUMBER),A
|
||
OR DRIVE_CODES.TRDOS.HDD
|
||
LD (RESET_TO_ZX.CURRENT_DIR_DRIVE),A
|
||
;
|
||
; [x] ¯®¤¤¥à¦ª ¯¥à¥ª«îç¥¨ï ¯ ¯ª¨ ®¡à § ¤«ï ०¨¬ ZX
|
||
; ‚뤥«ï¥¬ ¯ãâì ¤® ¯ ¯ª¨ á ®¡à §®¬
|
||
LD HL,ONE_FILE
|
||
LD BC,ONE_FILE.Size
|
||
XOR A
|
||
CPIR
|
||
DEC HL
|
||
DEC HL
|
||
PUSH HL
|
||
LD HL,ONE_FILE.Size - 2
|
||
SBC HL,BC
|
||
LD B,H
|
||
LD C,L
|
||
POP HL
|
||
LD A,'\' ;
|
||
CPDR
|
||
INC HL
|
||
LD (HL),0
|
||
; ãáâ ¢«¨¢ ¥¬ ¨ ¨¨â¨¬ ¢¨â
|
||
; LD A,SYS_PORT.BIOS
|
||
; OUT (SYS_PORT.ROM),A
|
||
CALL SET_CURRENT_HDD
|
||
; LD A,SYS_PORT.BIOS
|
||
; OUT (SYS_PORT.RAM),A
|
||
; ¯ àᨬ ¤«ï à áçñ⮢ BPB
|
||
CALL BPB_SetUp
|
||
; § ¯®¬¨ ¥¬ ᥪâ®à ¤¨à¥ªâ®à¨¨
|
||
CALL SET_IMAGE_DIR_SECTOR
|
||
;;;;;;;;;
|
||
;
|
||
.no_change_Disk:;
|
||
LD A,(IMAGE_FLAG)
|
||
AND A
|
||
JR Z,.Load_TRD
|
||
|
||
DEC A ; check if SCL
|
||
JP Z,Load_SCL
|
||
;jp Error_Flag ;!!!!!!!!!!!!!!!!
|
||
|
||
.Load_TRD: LD A,(IMAGE_HANDLER)
|
||
LD HL,0
|
||
LD IX,0
|
||
LD BC,Dss.Move_FP.FrEnd
|
||
RST ToDSS ; ©â¨ ¤«¨ã ä ©«
|
||
RET C
|
||
|
||
PUSH IX
|
||
POP DE
|
||
|
||
CALL Get_RAM_Disk_E
|
||
RET C
|
||
JP Load_IMAGE_File
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
|
||
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
; hl:de - à §¬¥à ä ©« ¢ ¡ ©â å
|
||
Get_RAM_Disk_E: LD A,D
|
||
ADD A,A
|
||
ADC HL,HL
|
||
ADD A,A
|
||
ADC HL,HL
|
||
|
||
LD A,D
|
||
AND #3F
|
||
OR E
|
||
JR Z,.skip_inc
|
||
INC HL
|
||
;HL - ¤«¨ ä ©« ¢ áâà ¨æ å
|
||
.skip_inc: LD A,H
|
||
AND A
|
||
JR NZ,ERROR_NO_MEM
|
||
LD A,L
|
||
AND A
|
||
JR Z,ERROR_NO_MEM
|
||
PUSH AF
|
||
; [x] 04/11/2023 Žâ¤¥«ìë¥ à ¬¤¨áª¨ ¤«ï ०¨¬ ᯥªâà㬠¨ DSS
|
||
.free_disk: DI
|
||
;!TEST
|
||
;XOR A ; RAM-Drive E:
|
||
;LD C,BIOS.FreeMemRMD
|
||
;RST ToBIOS ; ®á¢®¡®¤¨âì e:
|
||
;
|
||
POP BC
|
||
;!TEST
|
||
;LD B,A ; § ¯à®á¨âì ¯ ¬ïâì ã bios-
|
||
;XOR A ; RAM-Drive E:
|
||
;LD C,BIOS.GetMemRMD ; ¨ ¯®¤á®¥¤¨¨âì ª e:
|
||
LD C,BIOS.GetMem
|
||
;
|
||
RST ToBIOS
|
||
JR C,ERROR_NO_MEM
|
||
LD (Load_IMAGE_File.MEM_BLK),A
|
||
RET
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
|
||
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
Load_IMAGE_File:
|
||
LD A,(IMAGE_HANDLER)
|
||
LD HL,0
|
||
LD IX,0
|
||
LD BC,Dss.Move_FP.FrStart
|
||
RST ToDSS ; ãáâ ®¢¨âì 㪠§ ⥫ì 0
|
||
RET C
|
||
|
||
LD HL,MSG_LOAD_IMAGE ; loading image
|
||
LD C,Dss.PChars
|
||
RST ToDSS
|
||
|
||
.MEM_BLK+1: LD A,0
|
||
|
||
.load_loop: PUSH AF
|
||
OUT (SLOT3),A
|
||
|
||
LD A,(IMAGE_HANDLER)
|
||
LD HL,#C000 ; £à㧨âì 16k
|
||
LD DE,#4000
|
||
LD C,Dss.Read
|
||
RST ToDSS
|
||
JR C,ERROR_IN_READ
|
||
|
||
LD HL,PROGRES_IND ; loading progress
|
||
LD C,Dss.PChars
|
||
RST ToDSS
|
||
|
||
DI
|
||
POP AF
|
||
.scl_read_next: LD C,BIOS.GetMemPageNext
|
||
RST ToBIOS
|
||
|
||
CP #FF
|
||
JR NZ,.load_loop
|
||
|
||
LD HL,PROGRES_100 ; loading 100%
|
||
LD C,Dss.PChars
|
||
RST ToDSS
|
||
|
||
LD A,(IMAGE_HANDLER)
|
||
LD C,Dss.Close ; § ªàëâì ä ©«
|
||
RST ToDSS
|
||
|
||
RET C
|
||
.Set_RAM_Dsk_EtoA:
|
||
DI
|
||
XOR A
|
||
LD BC,0*256+BIOS.RAMD_TO_DRV ; § ç¨âì e: a:
|
||
RST ToBIOS
|
||
AND A
|
||
RET
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
|
||
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
ERROR_IN_READ: POP AF
|
||
JR ERROR_IMAGE_X
|
||
|
||
ERROR_NO_MEM: LD HL,MSG_NO_MEM
|
||
LD C,Dss.PChars
|
||
RST ToDSS
|
||
ERROR_IMAGE_X: LD A,(IMAGE_HANDLER)
|
||
LD C,Dss.Close ; § ªàëâì ä ©«
|
||
RST ToDSS
|
||
SCF
|
||
RET
|
||
SAV_PG3X: DB 0 ; !FIXIT ¯¥à¥¥áâ¨
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
|
||
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
READ_FILE_1: LD DE,ONE_FILE
|
||
LD BC,FULL_FILE_NAME_LENGTH
|
||
LDIR
|
||
LD HL,ONE_FILE
|
||
OUT (SLOT3),A
|
||
; READ_FILE:
|
||
LD A,Dss.Open.R
|
||
LD C,Dss.Open
|
||
RST ToDSS
|
||
RET C ; ®è¨¡ª , ¥á«¨ ¥â ä ©«
|
||
;
|
||
LD (FILE_HANDLE),A
|
||
LD A,(FILE_HANDLE)
|
||
;
|
||
LD HL,#C000
|
||
LD DE,#4000
|
||
LD C,Dss.Read
|
||
RST ToDSS
|
||
RET C ; ®è¨¡ª ¯à¨ ç⥨¨
|
||
;
|
||
PUSH DE
|
||
LD A,(FILE_HANDLE)
|
||
LD C,Dss.Close
|
||
RST ToDSS
|
||
POP DE ; ¤«¨ áç¨â ëå ¤ ëå
|
||
RET ; ®è¨¡ª ¯à¨ § ªàë⨨ ¨«¨ Ok
|
||
FILE_HANDLE: DB 0 ; !FIXIT ¯¥à¥¥áâ¨
|
||
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
|
||
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
FIRST_PREPARE: LD A,CNF_PORT.CNF_0
|
||
OUT (SYS_PORT.RAM),A
|
||
; restore HOLD port
|
||
LD D,CMOS_CELL.ScreenPosition
|
||
LD C,BIOS.CMOS_RD
|
||
RST ToBIOS
|
||
JR C,.next
|
||
LD B,A
|
||
LD A,ACEX.HOLD
|
||
LD C,BIOS.SET_PORTS
|
||
RST ToBIOS
|
||
;
|
||
.next: LD A,high ZXKeys.Line_7
|
||
IN A,(ZXKeys)
|
||
AND #1F
|
||
CP #1E
|
||
RET
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
|
||
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
EXIT_TO_DSS: DI
|
||
LD SP,stack_point
|
||
|
||
CALL FIRST_PREPARE
|
||
JP Z,RESET_TO_ZX.cont
|
||
|
||
.cont: LD A,(#FFF0) ;!HARDCODE
|
||
OUT (SLOT0),A
|
||
LD A,(#FFF3) ;!HARDCODE
|
||
OUT (SLOT3),A
|
||
|
||
XOR A
|
||
LD BC,3*256+BIOS.SET_PAL_INIT ; SET IBM PAL
|
||
RST ToBIOS
|
||
|
||
;!TEST; [ ] 05/11/2023 ®ç¨é âì à ¬¤¨áª¨ ¯à¨ ¢ë室¥
|
||
LD A,(PARAMS.RMD_Keep+2)
|
||
AND A
|
||
JR NZ,.next
|
||
; ®ç¨áâª à ¬¤¨áª®¢
|
||
LD BC,256*SYS_PAGE.RAMD_KEYS.NUM + BIOS.FreeMemRMD
|
||
.loop: PUSH BC
|
||
LD A,B
|
||
DEC A
|
||
RST ToBIOS
|
||
POP BC
|
||
DJNZ .loop
|
||
;
|
||
.next: ;!TEST; [ ] 04/11/2023 Žâ¤¥«ìë¥ à ¬¤¨áª¨ ¤«ï ०¨¬ ᯥªâà㬠¨ DSS. BLK_TO_RAMD
|
||
LD BC,BIOS.SWAP_RAM_DRIVES.Sp2000
|
||
RST ToBIOS
|
||
;
|
||
|
||
|
||
; LD A,Dss.SetVMod.txt80x32 ; OPEN_TXT
|
||
; LD BC,0*256+Dss.SetVMod
|
||
; RST ToDSS
|
||
;
|
||
; LD A,#20
|
||
; LD DE,0
|
||
; LD HL,#2050
|
||
; LD BC,7*256+Dss.Clear
|
||
; RST ToDSS
|
||
|
||
BACKTXT: ;
|
||
.VMODE+1: LD A,#00
|
||
.mode+2: LD BC,0*256+Dss.SetVMod
|
||
RST ToDSS
|
||
;
|
||
LD A,(.VMODE)
|
||
CP %1000'0000
|
||
JR NC,.EXIT
|
||
;
|
||
LD IX,PlaceForTXTscreen
|
||
.WinMax+1: LD HL,#2050
|
||
LD DE,#0000
|
||
IN A,(SLOT2)
|
||
LD B,A
|
||
LD C,BIOS.WIN_RESTORE
|
||
XOR A
|
||
DI
|
||
RST ToBIOS
|
||
;
|
||
.CURS+1: LD DE,#0000
|
||
LD C,Dss.Locate
|
||
RST ToDSS
|
||
.EXIT: ;
|
||
; LD BC,Dss.K_SETUP.ClearSIObuff
|
||
; RST ToDSS
|
||
LD HL,MSG_ZX_EXIT
|
||
JP EXIT_ALL
|
||
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
|
||
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
PREPARE_TO_ZXMODE:
|
||
LD C,Dss.GetVMod
|
||
RST ToDSS
|
||
; A - VMODE, B - SCREEN PAGE
|
||
SAVETXT: LD (BACKTXT.VMODE),A
|
||
EX AF,AF'
|
||
LD A,B
|
||
LD (BACKTXT.mode),A
|
||
EX AF,AF'
|
||
CP %1000'0000
|
||
JR NC,.EXIT
|
||
SUB #02
|
||
JR C,.EXIT
|
||
;
|
||
PUSH AF
|
||
LD C,BIOS.LP_GET_PLACE
|
||
RST ToBIOS
|
||
LD (BACKTXT.CURS),DE
|
||
POP AF
|
||
LD IX,PlaceForTXTscreen
|
||
LD HL,#2050
|
||
OR A
|
||
JR NZ,.next
|
||
LD L,#28
|
||
.next: LD (BACKTXT.WinMax),HL
|
||
LD DE,#0000
|
||
IN A,(SLOT2)
|
||
LD B,A
|
||
LD C,BIOS.WIN_COPY
|
||
XOR A
|
||
DI
|
||
RST ToBIOS
|
||
.EXIT: ;
|
||
|
||
;!TEST; [ ] 04/11/2023 Žâ¤¥«ìë¥ à ¬¤¨áª¨ ¤«ï ०¨¬ ᯥªâà㬠¨ DSS. BLK_TO_RAMD
|
||
SETUP_RAM_DRIVES:
|
||
LD BC,BIOS.SWAP_RAM_DRIVES.ZX
|
||
RST ToBIOS
|
||
; § ¯ã᪠á ä ©«®¬ ¤«ï à ¬¤¨áª ?
|
||
LD A,(Load_IMAGE_File.MEM_BLK)
|
||
OR A
|
||
JR Z,.skip
|
||
; ¯à®¢¥à塞 ¤à ©¢ ¯¥à¥¤ ¯¥à¥ § 票¥¬
|
||
XOR A
|
||
LD C,BIOS.GET_RAMD_ST
|
||
RST ToBIOS
|
||
OR A
|
||
JR Z,.set_block
|
||
; ®á¢®¡®¤¨âì à ¬¤¨áª
|
||
XOR A
|
||
LD C,BIOS.FreeMemRMD
|
||
RST ToBIOS
|
||
; set disk e:
|
||
.set_block: LD A,(Load_IMAGE_File.MEM_BLK)
|
||
LD B,A
|
||
XOR A
|
||
LD C,BIOS.BLK_TO_RAMD
|
||
RST ToBIOS
|
||
.skip: ;
|
||
; ;
|
||
;!FIXIT ¯¥à¥¤¥« âì äãªæ¨î ¡¨®á
|
||
SET_RELOAD_PROG:
|
||
DI
|
||
LD A,Spec_Page
|
||
OUT (SLOT3),A
|
||
|
||
; LD A,"Z"
|
||
; LD (#FFFE),A
|
||
; LD A,"X"
|
||
; LD (#FFFF),A
|
||
|
||
LD A,(PARAMS.Ret_fn+2)
|
||
AND A
|
||
LD DE,RESET_TO_ZX ; ¤à¥á ¯à®£à ¬¬ë ¯¥à¥§ ¯ã᪠¤«ï ret-zx
|
||
JR Z,NO_RET_FN
|
||
LD DE,EXIT_TO_DSS ; ¤à¥á ¯à®£à ¬¬ë ¯¥à¥§ ¯ã᪠¤«ï ret-fn
|
||
;
|
||
NO_RET_FN: LD (#FFF4),DE ; ¤à¥á ¯à®£à ¬¬ë ¢®§¢à â
|
||
IN A,(SLOT0)
|
||
LD (#FFF0),A ; DOS-PAGE
|
||
IN A,(SLOT1)
|
||
LD (#FFF1),A
|
||
IN A,(SLOT2) ; á®åà ¨âì áâà ¨æã
|
||
LD (#FFF2),A ; ¯à®£à ¬¬ë ¤«ï ¢®§¢à â
|
||
LD A,(SAVE_SLOT3)
|
||
LD (#FFF3),A
|
||
;° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° °;
|
||
RESET_TO_ZX: DI
|
||
LD SP,stack_point ; #BFF0
|
||
|
||
CALL FIRST_PREPARE
|
||
JP Z,EXIT_TO_DSS.cont
|
||
|
||
; [x] ä¨ªá ¥¯®«®© ¤¥è¨äà æ¨¨ ¯®àâ #FFFD (¯¨èãâ ¢ #C0FD)
|
||
.cont: ; LD A,#FF
|
||
; LD HL,%00'010'1'1110'1101
|
||
; LD DE,%10'111'1'1111'1111 ; CNF_0, CNF_1
|
||
; LD BC,ACEX.AY_FFFD_WRITE*256 + BIOS.DCP_CONFIG
|
||
; RST ToBIOS
|
||
;
|
||
; [x] 04/11/2023 Žâ¤¥«ìë¥ à ¬¤¨áª¨ ¤«ï ०¨¬ ᯥªâà㬠¨ DSS. BLK_TO_RAMD
|
||
; LD BC,BIOS.SWAP_RAM_DRIVES.ZX
|
||
; RST ToBIOS
|
||
;
|
||
LD A,(PARAMS.Ret_zx+2)
|
||
LD B,A
|
||
LD A,(PARAMS.Ret_fn+2)
|
||
XOR B
|
||
LD B,A
|
||
LD A,ACEX.RET_PORT
|
||
CALL SET_ROM ; ¢ª«îç¨âì ¢®§¢à â
|
||
|
||
; [ ]
|
||
LD A,SYS_PAGE
|
||
OUT (SLOT3),A
|
||
.DIR_SEC_L+1: LD HL,0
|
||
LD (SYS_PAGE.CURRENT_DIR_SEC_L),HL
|
||
.DIR_SEC_H+1: LD HL,0
|
||
LD (SYS_PAGE.CURRENT_DIR_SEC_H),HL
|
||
.CURRENT_DIR_DRIVE+1:
|
||
LD A,#FF
|
||
LD (SYS_PAGE.CURRENT_DIR_DRIVE),A
|
||
LD (SYS_PAGE.CURRENT_DIR_DRIVE_COPY),A
|
||
;!TODO ¢ BIOS?
|
||
LD BC,CBL.SYS_PORT
|
||
XOR A
|
||
OUT (C),A ; CBL-off
|
||
;
|
||
;[ ] 1/02/2024 ०¨¬ ᯥªâàã¬ à ¡®â ¥â á «î¡ë¬¨ ª « ¬¨ ¨ ®á®¢ë¬¨ à §¤¥« ¬¨
|
||
CALL SET_CURRENT_HDD
|
||
;
|
||
XOR A ; reg A' for GOTO_SPECTRUM
|
||
EX AF,AF'
|
||
;
|
||
LD A,(PARAMS.LD_Pal+2)
|
||
INC A
|
||
JR NZ,Skip_Load_Palette
|
||
;
|
||
LD HL,PlaceForPalette + 0
|
||
LD A,4
|
||
CALL SET_PAL
|
||
;
|
||
LD HL,PlaceForPalette + 1024
|
||
LD A,5
|
||
CALL SET_PAL
|
||
;
|
||
LD HL,PlaceForPalette + 2048
|
||
LD A,6
|
||
CALL SET_PAL
|
||
;
|
||
LD HL,PlaceForPalette + 3072
|
||
LD A,7
|
||
CALL SET_PAL
|
||
;
|
||
LD A,%0000'0100 ; set custom palette
|
||
EX AF,AF'
|
||
Skip_Load_Palette:
|
||
EX AF,AF'
|
||
LD HL,(PARAMS.Int_sc+2)
|
||
ADD A,L
|
||
LD HL,(PARAMS.Int_or+2)
|
||
OR L
|
||
LD HL,(PARAMS.Lines312+2)
|
||
ADD A,L
|
||
EX AF,AF'
|
||
; port all mode
|
||
LD A,(PARAMS.Int_or+2)
|
||
AND A
|
||
LD B,#FA ; original waits on
|
||
JR NZ,Set_Next_Par
|
||
LD B,#FE
|
||
Set_Next_Par: ; SYS_PORT/CNF_PORT
|
||
XOR A
|
||
LD HL,(PARAMS.Turbo+2)
|
||
ADD A,L
|
||
LD HL,(PARAMS.Sprinter+2)
|
||
ADD A,L
|
||
LD HL,(PARAMS.P_7FFD+2)
|
||
ADD A,L
|
||
LD HL,(PARAMS.P_1FFD+2)
|
||
ADD A,L
|
||
LD HL,(PARAMS.Mem512+2)
|
||
ADD A,L
|
||
LD E,A
|
||
; Start ROM
|
||
LD HL,(PARAMS.To_trd+2)
|
||
LD D,L
|
||
; vROM & vRAM
|
||
LD HL,(ZX_vROM_BLK)
|
||
; RESERVED
|
||
EX AF,AF'
|
||
;
|
||
LD C,BIOS.GOTO_SPECTRUM
|
||
RST ToBIOS
|
||
;!FIXIT ᤥ« âì ®¡à ¡®â稪
|
||
.di_halt: DI
|
||
HALT
|
||
JR .di_halt
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
|
||
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
SET_PAL: LD DE,0
|
||
LD BC,#FF*256 + BIOS.PIC_SET_PAL
|
||
JP ToBIOS
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
|
||
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
MAKE_FULL_NAME: LD HL,(CNF_NAME)
|
||
LD (.mode),HL
|
||
LD DE,ONE_FILE
|
||
LD C,Dss.GSwitch
|
||
RST ToDSS
|
||
;
|
||
LD HL,ONE_FILE
|
||
LD BC,Dss.EX_Path.GET_ALL
|
||
RST ToDSS
|
||
;
|
||
OR 2
|
||
CP 3 ; only "FileName.ext"?
|
||
LD HL,(CNF_NAME)
|
||
JR Z,.get_app_path
|
||
RET
|
||
;
|
||
.def_cnf: LD HL,CNF_FILE
|
||
LD (.mode),HL
|
||
;
|
||
.get_app_path: LD HL,ONE_FILE
|
||
LD BC,Dss.AppInfo.EXE_HomeDir
|
||
RST ToDSS
|
||
;
|
||
LD HL,ONE_FILE
|
||
LD BC,12 ;!HARDCODE filename length
|
||
XOR A
|
||
CPIR
|
||
DEC HL
|
||
EX DE,HL
|
||
;
|
||
.mode+1: LD HL,0
|
||
LD BC,12 ;!HARDCODE filename length
|
||
LDIR
|
||
XOR A
|
||
LD (DE),A
|
||
LD HL,ONE_FILE
|
||
RET
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
|
||
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
PARSE_CMD_LINE: LD HL,(LINE_X)
|
||
LD A,(HL)
|
||
AND A
|
||
JR Z,.NO_FILE
|
||
DEC A
|
||
JR Z,.NO_FILE
|
||
;
|
||
INC HL
|
||
INC HL
|
||
CALL FIND_FILES
|
||
|
||
CALL MAKE_FULL_NAME
|
||
LD A,SHARED_PAGE
|
||
CALL READ_FILE_1
|
||
JR NC,.exit
|
||
;
|
||
.NO_FILE: CALL MAKE_FULL_NAME.def_cnf
|
||
LD A,SHARED_PAGE
|
||
CALL READ_FILE_1
|
||
JP C,ERROR_FILE
|
||
;
|
||
.exit: LD (LEN_CNF),DE ; CNF ä ©« ¯à®ç¨â , DE - ¤«¨ CNF
|
||
RET
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
|
||
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
|
||
FIND_FILES: PUSH HL
|
||
LD (X_FILE),HL
|
||
LD DE,0
|
||
LD (IMAGE_FLAG),DE
|
||
LD (IMAGE_NAME),DE
|
||
LD (CNF_NAME),DE
|
||
LD B,A
|
||
JR .NO_NEXT
|
||
;
|
||
.PARSING_LOOP: LD A,(HL)
|
||
INC HL
|
||
CP "."
|
||
CALL Z,.CHOOSE_FILE
|
||
CP " "
|
||
CALL Z,.BLANK_X
|
||
CP "\t"
|
||
CALL Z,.BLANK_X
|
||
CP "\n"
|
||
CALL Z,.BLANK_X1
|
||
CP "\r"
|
||
CALL Z,.BLANK_X1
|
||
JR Z,.END_NO_IMAGE
|
||
.NO_NEXT: DJNZ .PARSING_LOOP
|
||
;
|
||
.END_NO_IMAGE: POP HL
|
||
LD A,(CNF_NAME+1)
|
||
AND A
|
||
RET NZ
|
||
LD A,(IMAGE_NAME+1)
|
||
AND A
|
||
LD DE,(X_FILE)
|
||
JR Z,.CNF_ALL
|
||
LD DE,CNF_FILE
|
||
.CNF_ALL: LD (CNF_NAME),DE
|
||
RET
|
||
;
|
||
.BLANK_X: LD (X_FILE),HL ; ©¤¥ ¯à®¡¥«, ¨¬ï ä ©« - ᮢ
|
||
.BLANK_X1: DEC HL
|
||
LD (HL),0
|
||
INC HL
|
||
RET
|
||
; ;
|
||
.CHOOSE_FILE: LD A,(HL)
|
||
AND %1101'1111
|
||
; TRD file
|
||
CP 'T'
|
||
JR Z,.TRD
|
||
; SCL file
|
||
CP 'S'
|
||
JR Z,.SCL
|
||
; ZX file
|
||
CP 'Z'
|
||
JR NZ,.unknown
|
||
;
|
||
.CNF: LD DE,(X_FILE)
|
||
LD (CNF_NAME),DE
|
||
.unknown: DEC HL
|
||
LD A,(HL)
|
||
INC HL
|
||
RET
|
||
;
|
||
.SCL: LD DE,IMAGE_FLAG
|
||
LD A,1
|
||
LD (DE),A
|
||
.TRD: LD DE,(X_FILE)
|
||
LD (IMAGE_NAME),DE
|
||
JR .unknown
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
|
||
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
READ_CNF_FILE: LD HL,#C000
|
||
LD DE,ADDRESS_LINES
|
||
LD C,CFG_FILE_LINES
|
||
;
|
||
.LOOP_A: LD B,MAX_LINE_LENGTH ; ¤«¨ áâப¨
|
||
EX DE,HL
|
||
LD (HL),E
|
||
INC HL
|
||
LD (HL),D
|
||
INC HL
|
||
EX DE,HL
|
||
;
|
||
.LOOP_L: LD A,(HL)
|
||
CP "\r"
|
||
JR Z,.N_LINE
|
||
CP "\n"
|
||
JR Z,.N_LINE
|
||
AND A
|
||
JP Z,END_CNF_ERROR
|
||
INC HL
|
||
DJNZ .LOOP_L
|
||
;
|
||
.N_LINE: LD (HL),0
|
||
.N_LINE2: INC HL
|
||
LD A,(HL)
|
||
CP "\r"
|
||
JR Z,.N_LINE2
|
||
CP "\n"
|
||
JR Z,.N_LINE2
|
||
DEC C
|
||
JR NZ,.LOOP_A
|
||
RET
|
||
; ¢ë¤¥«¥® 8 áâப ¢ CNF
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
|
||
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
MACRO vROM_LOAD romLine;,pageNumber
|
||
.RomLine = (romLine-1)*2
|
||
LD DE,(ADDRESS_LINES+.RomLine)
|
||
CALL vROM_LOAD_BIN
|
||
ENDM
|
||
;
|
||
LOAD_vROM_BIN: LD A,#FF
|
||
LD (vROM_LOAD_BIN.need_free),A
|
||
;
|
||
EXX
|
||
LD HL,BUFFER_vROM_PAGES.Pages
|
||
EXX
|
||
LD HL,BUFFER_RAM_PAGES
|
||
vROM_LOAD CFG_FILE_LINES.BASIC128 ;, #42 2-ï áâப - ¨¬ï ä ©« BASIC128
|
||
vROM_LOAD CFG_FILE_LINES.BASIC_48 ;, #43 3-ï áâப - ¨¬ï ä ©« BASIC 48
|
||
vROM_LOAD CFG_FILE_LINES.TRDOS ;, #44 4-ï áâப - ¨¬ï ä ©« TR-DOS
|
||
vROM_LOAD CFG_FILE_LINES.ZXEXP ;, #45 5-ï áâப - ¨¬ï ä ©« EXPANSION
|
||
vROM_LOAD CFG_FILE_LINES.ZXBIOS1 ;, #46 6-ï áâப - ¨¬ï ä ©« BIOS
|
||
vROM_LOAD CFG_FILE_LINES.ZXBIOS2 ;, #47 7-ï áâப - ¨¬ï ä ©« BIOS2
|
||
vROM_LOAD CFG_FILE_LINES.BASIC128_2 ;, ??? 8-ï áâப - ¨¬ï ä ©«
|
||
vROM_LOAD CFG_FILE_LINES.BASIC_48_2 ;, ??? 9-ï áâப - ¨¬ï ä ©«
|
||
vROM_LOAD CFG_FILE_LINES.TRDOS_2 ;, ??? 10-ï áâப - ¨¬ï ä ©«
|
||
vROM_LOAD CFG_FILE_LINES.ZXEXP_2 ;, ??? 11-ï áâப - ¨¬ï ä ©«
|
||
LD HL,BUFFER_vROM_PAGES
|
||
LD A,(ZX_vROM_BLK)
|
||
LD (HL),A
|
||
LD BC,BIOS.ZX_MEMORY_MANAGER.SetCustomVroms
|
||
RST ToBIOS
|
||
;!TODO check error
|
||
XOR A
|
||
LD (vROM_LOAD_BIN.need_free),A
|
||
RET
|
||
;
|
||
vROM_LOAD_BIN: EX DE,HL
|
||
LD A,(HL)
|
||
CP ';'
|
||
EX DE,HL
|
||
JR Z,.skip_load
|
||
;
|
||
.go_load: LD A,(HL) ;BUFFER_RAM_PAGES.ROM
|
||
EXX
|
||
LD (HL),A
|
||
;INC HL
|
||
PUSH HL
|
||
EXX
|
||
PUSH HL
|
||
EX DE,HL
|
||
CALL READ_FILE_1 ; A - RAM page
|
||
POP HL
|
||
; LD A,(HL)
|
||
INC HL
|
||
;
|
||
EXX
|
||
POP HL
|
||
; LD (HL),A
|
||
EXX
|
||
;
|
||
LD A,SHARED_PAGE
|
||
OUT (SLOT3),A
|
||
JP C,ERROR_FILE
|
||
;
|
||
.skip_load: EXX
|
||
INC HL
|
||
EXX
|
||
RET
|
||
;
|
||
.need_free: DB 0
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
|
||
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
LOAD_IMAGE_FILE:
|
||
LD HL,(IMAGE_NAME)
|
||
LD A,H
|
||
OR L
|
||
RET Z
|
||
;
|
||
LD C,SLOT3
|
||
IN B,(C)
|
||
PUSH BC
|
||
;
|
||
CALL READ_IMAGE
|
||
;
|
||
POP BC
|
||
OUT (C),B
|
||
RET NC
|
||
JP ERROR_FILE
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
|
||
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
;!TEST palette load
|
||
LOADING_PALETTE:
|
||
LD A,(PARAMS.LD_Pal+2)
|
||
INC A
|
||
RET NZ
|
||
;
|
||
LD HL,( ADDRESS_LINES + ((CFG_FILE_LINES.PALETTE-1)*2) )
|
||
LD A,(HL)
|
||
CP ';'
|
||
RET Z
|
||
;
|
||
LD DE,ONE_FILE
|
||
LD BC,FULL_FILE_NAME_LENGTH
|
||
LDIR
|
||
LD HL,ONE_FILE
|
||
;
|
||
LD A,Dss.Open.R
|
||
LD C,Dss.Open
|
||
RST ToDSS
|
||
JP C,ERROR_FILE ; ®è¨¡ª , ¥á«¨ ¥â ä ©«
|
||
LD (FILE_HANDLE),A
|
||
;
|
||
LD HL,PlaceForPalette
|
||
LD DE,1024*4 ;!HARDCODE
|
||
LD C,Dss.Read
|
||
RST ToDSS
|
||
JP C,ERROR_FILE ; ®è¨¡ª ¯à¨ ç⥨¨
|
||
;!TEST ¯à®â¥áâ¨âì DSS í⮬. …᫨ ä ©« 4096 ¨ ç¨â âì 4096, â® ¢ A ¡ã¤¥â #FF
|
||
;OR A
|
||
;JP NZ,ERROR_FILE
|
||
;
|
||
LD A,(FILE_HANDLE)
|
||
LD C,Dss.Close
|
||
JP ToDSS
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
|
||
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
SHOW_MESSAGE_OK_CFG_NAME:
|
||
; ä ©«ë áç¨â ë
|
||
LD HL,MSG_NORMAL
|
||
LD C,Dss.PChars
|
||
RST ToDSS
|
||
;
|
||
LD HL,(ADDRESS_LINES + (CFG_FILE_LINES.NAME-1)*2)
|
||
LD C,Dss.PChars
|
||
RST ToDSS
|
||
;
|
||
LD HL,CR_LINE
|
||
LD C,Dss.PChars
|
||
RST ToDSS
|
||
LD A,(SAVE_SLOT3)
|
||
OUT (SLOT3),A
|
||
RET
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
|
||
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
PARSE_PARAMETERS:; parameters parsing
|
||
LD A,SHARED_PAGE
|
||
OUT (SLOT3),A
|
||
LD HL,(ADDRESS_LINES + (CFG_FILE_LINES.OPTIONS-1)*2 ) ; áâப ¯ à ¬¥â஢
|
||
.LOOP_1: LD A,(HL)
|
||
CP '/'
|
||
JR Z,.PARAM_TEST
|
||
OR A ; CP 0
|
||
;JR Z,INIT_vROM_PAGES
|
||
RET Z
|
||
CP "\r"
|
||
;JR Z,INIT_vROM_PAGES
|
||
RET Z
|
||
CP "\n"
|
||
;JR Z,INIT_vROM_PAGES
|
||
RET Z
|
||
INC HL
|
||
JR .LOOP_1
|
||
;
|
||
.PARAM_TEST: INC HL
|
||
PUSH HL
|
||
LD IX,PARAMS
|
||
.NEXT_PAR: LD E,(IX)
|
||
LD D,(IX+1)
|
||
.LOOP_2: LD A,(DE)
|
||
CP (HL)
|
||
JR NZ,.PARAM_E1
|
||
INC HL
|
||
INC DE
|
||
JR .LOOP_2
|
||
.PARAM_E1: CP #FF
|
||
JR NZ,.NO_PAR
|
||
LD A,(HL)
|
||
CP " "
|
||
JR Z,.PARAM_E2
|
||
CP 0
|
||
JR Z,.PARAM_E2
|
||
CP "\r"
|
||
JR Z,.PARAM_E2
|
||
.NO_PAR: POP HL
|
||
PUSH HL
|
||
INC IX
|
||
INC IX
|
||
INC IX
|
||
INC IX
|
||
LD A,(IX+1)
|
||
AND A
|
||
JR NZ,.NEXT_PAR
|
||
POP HL
|
||
JR .LOOP_1
|
||
;
|
||
.PARAM_E2: EX (SP),HL ; ®¢®¥ HL - á®åà ï¥âáï!
|
||
LD A,(IX+3)
|
||
LD (IX+2),A ; parameter alternate!
|
||
LD L,(IX)
|
||
LD H,(IX+1)
|
||
LD C,Dss.PChars
|
||
RST ToDSS
|
||
;
|
||
POP HL
|
||
JR .LOOP_1
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
|
||
;----------------[‚뤥«¥¨¥/®á¢®¡®¦¤¥¨¥ áâà ¨æ ᯥªâà㬠]-------------;
|
||
;¢å®¤: ॣ B:
|
||
; FN 0x
|
||
; 0 - § १¥à¢¨à®¢ ®
|
||
; 1 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 48k. 3 áâà ¨æë
|
||
; 2 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 128k. 2+6 áâà ¨æë
|
||
; 3 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 512k. 2+30 áâà ¨æë
|
||
; 4 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Scorpion 256k. 2+6+8 áâà ¨æë
|
||
; 5..15 - § १¥à¢¨à®¢ ë
|
||
; FN 1x
|
||
; 16 - ¯®«ãç¨âì à ¬¡«®ª¨ ¨¨æ¨ «¨§¨à®¢ ëå vROM ¨ VRAM
|
||
; 17..31 - § १¥à¢¨à®¢ ë
|
||
; FN 2x ;!TODO
|
||
; 32 - § १¥à¢¨à®¢ ®
|
||
; 33 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Spectrum 48k ¨ ¨¨â 1-© áâà ¨æ vROM
|
||
; 34 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 128k ¨ ¨¨â 3-å áâà ¨æ vROM
|
||
; 35 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 512k ¨ ¨¨â 3-å áâà ¨æ vROM
|
||
; 36 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Scorpion 256k ¨ ¨¨â 3-å áâà ¨æ vROM
|
||
; 33..63 - § १¥à¢¨à®¢ ë
|
||
; FN 4x
|
||
; 64 - ®á¢®¡®¤¨âì à ¬¡«®ª¨ vROM ¨ vRAM
|
||
; 65..127 - § १¥à¢¨à®¢ ë
|
||
; FN 8x
|
||
; 128 - ¨¨æ¨ «¨§¨à®¢ âì ᢮© ¡®à áâà ¨æ vROM
|
||
;
|
||
; ॣ HL: ¯à¨ ॣ B[7]=1 ¤à¥á áâà ¨æ (11 èâ):
|
||
; byte1 - RAM block ID, byte2..11 - áâà ¨æë ¤«ï vROM - ZXSlot: 1,2,3(=0),à áè¨à¥ ï
|
||
; ॣ A: ®¬¥à ZX TASK ¯®ª çâ® ¢á¥£¤ ®«ì!!!
|
||
;¢ë室: CF = 0: HL - ®¬¥à à ¬¡«®ª®¢ ¤«ï ०¨¬®¢ 0..16. H=vRAM, L=vROM
|
||
; CF = 1: A - ®¬¥à ®è¨¡ª¨
|
||
;
|
||
;¥á«¨ áâíª å®¤¨âáï ¢ âà¥â쥬 á«®â¥, â® ¢ë§®¢ á ¢ëª«îç¥ë¬¨ ¯à¥àë¢ ¨ï¬¨
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
GET_vRAM_PAGES: CALL .check_params
|
||
LD C,BIOS.ZX_MEMORY_MANAGER
|
||
RST ToBIOS
|
||
RET C
|
||
LD (ZX_vRAM_BLK),A
|
||
RET
|
||
|
||
.check_params: XOR A
|
||
LD HL,PARAMS.P_7FFD + 2
|
||
LD DE,4
|
||
LD B,3
|
||
.loop: ADD A,(HL)
|
||
ADD HL,DE
|
||
DJNZ .loop
|
||
;
|
||
LD B,high BIOS.ZX_MEMORY_MANAGER.GetMem.Pent512
|
||
CP #80
|
||
RET NC
|
||
;
|
||
LD B,high BIOS.ZX_MEMORY_MANAGER.GetMem.Pent48
|
||
CP #70
|
||
RET NC
|
||
;
|
||
LD B,high BIOS.ZX_MEMORY_MANAGER.GetMem.Pent128
|
||
CP #40
|
||
RET NC
|
||
;
|
||
LD B,high BIOS.ZX_MEMORY_MANAGER.GetMem.Scorp
|
||
RET
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
|
||
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
|
||
|
||
COUNT_vROM_PAGES:
|
||
LD BC,10*256 + 0 ;!HARDCODE ¢á¥£® áâà ¨æ vROM 10, áçñâ稪 - 0
|
||
LD HL,ADDRESS_LINES + CFG_FILE_LINES.BASIC128 - 1
|
||
LD A,';'
|
||
.loop: INC HL
|
||
LD E,(HL)
|
||
INC HL
|
||
LD D,(HL)
|
||
;
|
||
EX DE,HL
|
||
CP (HL)
|
||
EX DE,HL
|
||
JR Z,.next
|
||
INC C
|
||
.next: DJNZ .loop
|
||
LD A,C
|
||
LD (ZX_vROM_COUNT),A
|
||
SUB 1 ; ¥á«¨ 0 - â® ¥ ¬¥ï¥¬ ¡®à
|
||
RET NC
|
||
; CHECK_ZX_FLAG
|
||
LD BC,SLOT3
|
||
IN B,(C)
|
||
LD A,Spec_Page
|
||
OUT (C),A
|
||
LD HL,(Spec_Page.flag_Z)
|
||
LD DE,'Z'+'X'*256
|
||
;
|
||
XOR A
|
||
SBC HL,DE
|
||
OUT (C),B
|
||
SCF ; ROM ä ©«®¢ 0, ¬¥âª ZX ¥áâì
|
||
RET Z
|
||
JP ERROR_ZX_FLAG
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
|
||
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
; MACRO vROM_set dcp_port
|
||
; LD A,dcp_port
|
||
; CALL SET_DCP_PORT
|
||
; ENDM
|
||
; ;
|
||
; INIT_vROM_PAGES:
|
||
; LD HL,BUFFER_RAM_PAGES.ROM
|
||
; vROM_set ACEX.vROM.BASIC_128
|
||
; vROM_set ACEX.vROM.BASIC_48
|
||
; vROM_set ACEX.vROM.TR_DOS
|
||
; vROM_set ACEX.vROM.ZX_EXPANSION
|
||
; vROM_set ACEX.vROM.ZX_BIOS_1
|
||
; vROM_set ACEX.vROM.ZX_BIOS_2
|
||
; vROM_set ACEX.vROM.BASIC_128_2
|
||
; vROM_set ACEX.vROM.BASIC_48_2
|
||
; vROM_set ACEX.vROM.TR_DOS_2
|
||
; vROM_set ACEX.vROM.ZX_EXPANSION_2
|
||
|
||
; LD HL,(IMAGE_NAME)
|
||
; LD A,H
|
||
; OR L
|
||
; JP Z,.SKIP_IMAGE
|
||
|
||
; LD C,SLOT3
|
||
; IN B,(C)
|
||
; PUSH BC
|
||
|
||
; CALL READ_IMAGE
|
||
; POP BC
|
||
; OUT (C),B
|
||
; JP C,ERROR_FILE
|
||
; ;
|
||
; .SKIP_IMAGE: LD A,(PARAMS.No_run+2)
|
||
; AND A
|
||
; RET NZ
|
||
; ;
|
||
; LD HL,MSG_EXIT1
|
||
; LD BC,SLOT3
|
||
; IN B,(C)
|
||
; LD A,Spec_Page
|
||
; OUT (C),A
|
||
; ; !FIXIT ª®£¤ ¡ã¤¥â ¯à®æ¥¤ãà ¢ ¡¨®á¥ ¯¥à¥¤¥« âì ¯®¤ ¥ñ
|
||
; LD A,"Z"
|
||
; LD (Spec_Page.flag_Z),A
|
||
; LD A,"X"
|
||
; LD (Spec_Page.flag_X),A
|
||
; ;
|
||
; OUT (C),B
|
||
; ;
|
||
; SCF
|
||
; RET
|
||
; ;
|
||
; SET_DCP_PORT: LD B,(HL) ; page
|
||
; INC HL
|
||
; INC B
|
||
; DEC B
|
||
; RET Z
|
||
; ;
|
||
; PUSH HL
|
||
; CALL SET_ROM
|
||
; POP HL
|
||
; RET
|
||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||
|
||
|
||
|
||
|
||
;
|
||
;----------------------------------------------------------------------;
|
||
INCLUDE 'For_4X.asm'
|
||
;----------------------------------------------------------------------;
|
||
;
|
||
|
||
|
||
;
|
||
;----------------------------------------------------------------------;
|
||
IF NEW_MEMORY_LOGIC
|
||
BUFFER_RAM_PAGES:
|
||
BLOCK 10,#FF ; !HARDCODE ª®«¨ç¥á⢮ ¯®à⮢ í¬ã«ïâ®à <20>‡“
|
||
.Size EQU $-BUFFER_RAM_PAGES
|
||
BUFFER_vROM_PAGES:
|
||
.BlockID: BYTE 0
|
||
.Pages: BLOCK 10,#FF ; !HARDCODE ª®«¨ç¥á⢮ ¯®à⮢ í¬ã«ïâ®à <20>‡“
|
||
.Size EQU $-BUFFER_RAM_PAGES
|
||
ELSE
|
||
BUFFER_RAM_PAGES:
|
||
.ROM: DB #42, #43, #44, #45, #46, #47
|
||
;.RAM: BLOCK 16 ; 256 ª¡
|
||
.Size EQU $-BUFFER_RAM_PAGES
|
||
.end_marker: BYTE #FF
|
||
ENDIF
|
||
;----------------------------------------------------------------------;
|
||
;
|
||
|
||
|
||
;----------------------------------------------------------------------;
|
||
LINE_ZX: DZ 'ZX Spectrum PAGES'
|
||
LEN_LINE_ZX EQU $-LINE_ZX
|
||
;*********************************************
|
||
|
||
MSG_EXIT1: DB 13,10, "EXIT without run",13,10,0
|
||
;MSG_EXIT2: DB 13,10, "‚ë室 ¡¥§ § ¯ã᪠"
|
||
CR_LINE: DB 13,10,0
|
||
START_MSG: 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: DB 13,10, "Error in file: ",0
|
||
;ERROR_FILE2_MSG_X: DB 13,10, "Žè¨¡ª ¢ ä ©«¥: ",0
|
||
ERROR_FILE_MSG: DB 13,10, "Unable to work.",0
|
||
;ERROR_FILE2_MSG: DB 13,10, "<22> ¡®â ¥¢®§¬®¦ .",0
|
||
ERROR_CNF: DB 13,10, "Unexpected CNF file end.",0
|
||
;ERROR_CNF2: DB 13,10, "<22>¥®¦¨¤ ë© ª®¥æ CNF ä ©« .",0
|
||
NO_MEM_MSG: DB 13,10, "Not enough free memory pages for ZX mode."
|
||
DB 13,10, "Clear the memory and restart spectrum.exe again.",0
|
||
;NO_MEM_MSG2: DB 13,10, "‘¯¥æ¨ «ìë¥ áâà ¨æë 㦥 § ïâë."
|
||
; DB 13,10, "Žç¨áâ¨â¥ ¯ ¬ïâì ¨ ¯¥à¥§ ¯ãáâ¨â¥ spectrum.exe ᮢ .",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:
|
||
; DB 13,10, "‡ £à㧪 ®¡à § : ",0
|
||
MSG_ZX_EXIT: DB 13,10, "EXIT from Spectrum mode",13,10,0
|
||
;MSG_ZX_EXIT2: DB 13,10, "EXIT from ZX mode",0
|
||
MSG_NO_ZX_FLAG: DB 13,10, 'Error: Necessary ROM images are missing in the CNF file and in RAM!!!'
|
||
DB 13,10, ' Run "spectrum.exe norun.zx" with the required set of ZX ROMs.',13,10,0
|
||
PROGRES_IND: DB '°',0 ; 176
|
||
PROGRES_100: DB ' 100%',13,10,0
|
||
|
||
ZX_vROM_COUNT: BYTE 0
|
||
ZX_vROM_BLK: BYTE 0
|
||
ZX_vRAM_BLK: BYTE 0
|
||
;
|
||
LINE_X: WORD 0
|
||
X_FILE: WORD 0
|
||
CNF_NAME: WORD 0
|
||
IMAGE_FLAG: BYTE 0 ; 0 - trd, scl - 1, sna - 2, tap - 3
|
||
IMAGE_NAME: WORD 0
|
||
IMAGE_HANDLER: BYTE 0
|
||
SAVE_SLOT3: BYTE 0
|
||
LEN_CNF: WORD 0
|
||
ADDRESS_LINES: BLOCK CFG_FILE_LINES*2,0
|
||
;*********************************************
|
||
;----------------------------------------------------------------------;
|
||
;
|
||
|
||
|
||
; …᫨ ¯ à ¬¥âà § ¤ , â® ¢ë¡¨à ¥âáï § 票¥ Y
|
||
PARAMS:; Y / N ; âãâ § ç¥¨ï ¤«ï ª«î祩 § ¯¨áë¢ îâáï ª ª 16 ¡¨â § 票¥, § ç¨â ®¡à âë© ¯®à冷ª ¡ ©â®¢
|
||
.Turbo: DW ._Turbo, #0302 ; ¢ª«îç¨âì TURBO
|
||
.Lines312 DW ._Lines312, #8000 ; ¢ª«îç¨âì 312 áâப
|
||
.Sprinter: DW ._Sprinter, #040C ; ¢ª«îç¨âì Sprinter
|
||
.P_7FFD: DW ._P_7FFD, #0030 ; ¢ª«îç¨âì 7FFD °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
|
||
.P_1FFD: DW ._P_1FFD, #0040 ; ¢ª«îç¨âì 1FFD °°¥ ¬¥ïâì ¯®à冷ª, ¨á¯®«ì§ã¥âáï ¢ GET_vRAM_PAGES°°
|
||
.Mem512: DW ._Mem512, #8000 ; ¢ª«îç¨âì 512k °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
|
||
.To_trd: DW ._To_trd, #0200 ; ¢o©â¨ ¢ TR-DOS
|
||
.Int_sc: DW ._Int_sc, #0102 ; ¢ª«îç¨âì INT "¯®-᪮௨®®¢áª¨"
|
||
.Int_or: DW ._Int_or, #0300 ; ¢ª«îç¨âì INT "Original"
|
||
.No_run: DW ._no_run, #00FF ; ¥ § ¯ã᪠âì
|
||
.Ret_zx: DW ._Ret_zx, #4100 ; ¢ª«îç¨âì ¢®§¢à â ¢ ZX áâà ¨æ (#41) ¤®«¦ ᮢ¯ ¤ âì á ret_fn_
|
||
.Ret_fn: DW ._Ret_fn, #4100 ; ¢ª«îç¨âì ¢®§¢à â ¢ FN áâà ¨æ (#41) ¤®«¦ ᮢ¯ ¤ âì á ret_zx_
|
||
.LD_Pal: DW ._LD_Pal, #FF00
|
||
.RMD_Keep: DW ._RMD_Keep, #FF00 ; [x] 05/11/2023 ®ç¨é âì à ¬¤¨áª¨ ¯à¨ ¢ë室¥
|
||
DW 0,0 ; end marker
|
||
;
|
||
._Turbo: DB "turbo", 255,0
|
||
._Lines312: DB "lines312", 255,0
|
||
._Sprinter: DB "sprinter", 255,0
|
||
._P_7FFD: DB "7FFD", 255,0
|
||
._P_1FFD: DB "1FFD", 255,0
|
||
._Mem512: DB "mem512", 255,0
|
||
._Int_sc: DB "int-sc", 255,0
|
||
._To_trd: DB "to-trdos", 255,0
|
||
._no_run: DB "no-run", 255,0
|
||
._Int_or: DB "origin", 255,0
|
||
._Ret_zx: DB "ret-zx", 255,0
|
||
._Ret_fn: DB "ret-fn", 255,0
|
||
._LD_Pal: DB "load-pal", 255,0
|
||
._RMD_Keep: DB "RMD-Keep", 255,0 ;!TEST; [ ] 05/11/2023 ®ç¨é âì à ¬¤¨áª¨ ¯à¨ ¢ë室¥
|
||
|
||
;ZX_PROG_LEN EQU $-RELOAD_PROG
|
||
|
||
;/Turbo /Lines312 /Sprinter /7FFD /1FFD /Mem512 /Int-Sc /To-TRDOS /no-run /origin /ret-zx /ret-fn
|
||
|
||
CNF_FILE: DB "SPECTRUM.CFG",0
|
||
.Size EQU $-CNF_FILE
|
||
;
|
||
;
|
||
;[]-----------------------------[PLUGINS]-----------------------------[]
|
||
INCLUDE 'trdscl.a80'
|
||
;
|
||
|
||
;----------------------------------------------[End Loader section]
|
||
;
|
||
;!TODO
|
||
;USER_CURRENT_DRV DB 'Z:'
|
||
;USER_CURRENT_DIR EQU $
|
||
;SPECTRUM_HOME_DIR EQU USER_CURRENT_DIR + 256
|
||
;
|
||
ONE_FILE: WORD 0
|
||
.Size EQU 256
|
||
TMP_BUFF EQU ONE_FILE + ONE_FILE.Size
|
||
.Size EQU 256
|
||
;
|
||
PlaceForPalette EQU TMP_BUFF + TMP_BUFF.Size ;#A000
|
||
PlaceForTXTscreen EQU PlaceForPalette + 1024*4 ;!HARDCODE
|
||
|
||
|
||
|
||
STACK_CHECK_MACRO stack_point,stack_buffer
|
||
; Code after Loader
|
||
;[]-------------------------------------------------------------------[]
|
||
; Code end section
|
||
; |