mirror of
https://github.com/Tolik-Trek/Spectrum.EXE.git
synced 2026-06-15 17:11:38 +03:00
+load custom pallete
This commit is contained in:
parent
af64d9cff3
commit
23097bdd16
@ -1 +1 @@
|
|||||||
Subproject commit 6c92964be4fbbbec546d52ad6e2b51fd596d8a02
|
Subproject commit 947627f58f37509150f653c81c82d742a4123cb6
|
||||||
151
spectrum.asm
151
spectrum.asm
@ -47,6 +47,8 @@
|
|||||||
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 NEW_MEMORY_LOGIC 0
|
||||||
; define NEED_LOADER 1
|
; define NEED_LOADER 1
|
||||||
; define NeedSafePort_Y 0
|
; define NeedSafePort_Y 0
|
||||||
;***************************************
|
;***************************************
|
||||||
@ -91,17 +93,32 @@ program_start EQU BEGIN
|
|||||||
;***************************************
|
;***************************************
|
||||||
FULL_FILE_NAME_LENGTH EQU 128 ; ¤«¨ áâப¨ ¯ã⨠ª ä ©«ã
|
FULL_FILE_NAME_LENGTH EQU 128 ; ¤«¨ áâப¨ ¯ã⨠ª ä ©«ã
|
||||||
MAX_LINE_LENGTH EQU 120 ; ¤«¨ áâப¨ CFG ä ©«
|
MAX_LINE_LENGTH EQU 120 ; ¤«¨ áâப¨ CFG ä ©«
|
||||||
CFG_FILE_LINES EQU 8
|
|
||||||
NAME_CFG_LINE EQU 0
|
|
||||||
BASIC128_LINE EQU 2
|
|
||||||
BASIC_48_LINE EQU 4
|
|
||||||
TRDOS_LINE EQU 6
|
|
||||||
EXP_LINE EQU 8
|
|
||||||
BIOS_LINE EQU 10
|
|
||||||
BIOS2_LINE EQU 12
|
|
||||||
;XXX_LINE EQU ??
|
|
||||||
OPTIONS_LINE EQU (CFG_FILE_LINES-1)*2
|
|
||||||
|
|
||||||
|
;!TEST
|
||||||
|
;CFG_FILE_LINES EQU 8
|
||||||
|
CFG_FILE_LINES EQU 9
|
||||||
|
;
|
||||||
|
|
||||||
|
; NAME_CFG_LINE EQU 0
|
||||||
|
; BASIC128_LINE EQU 2
|
||||||
|
; BASIC_48_LINE EQU 4
|
||||||
|
; TRDOS_LINE EQU 6
|
||||||
|
; EXP_LINE EQU 8
|
||||||
|
; BIOS_LINE EQU 10
|
||||||
|
; BIOS2_LINE EQU 12
|
||||||
|
;XXX_LINE EQU ??
|
||||||
|
|
||||||
|
NAME_CFG_LINE EQU 1
|
||||||
|
BASIC128_LINE EQU 2
|
||||||
|
BASIC_48_LINE EQU 3
|
||||||
|
TRDOS_LINE EQU 4
|
||||||
|
EXP_LINE EQU 5
|
||||||
|
BIOS_LINE EQU 6
|
||||||
|
BIOS2_LINE EQU 7
|
||||||
|
OPTIONS_LINE EQU 8
|
||||||
|
PALETTE_LINE EQU 9
|
||||||
|
|
||||||
|
;OPTIONS_LINE EQU (CFG_FILE_LINES-1)*2
|
||||||
;***************************************
|
;***************************************
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -141,23 +158,28 @@ BEGIN: LD (LINE_X),IX
|
|||||||
RST ToBIOS
|
RST ToBIOS
|
||||||
;
|
;
|
||||||
ELSE
|
ELSE
|
||||||
|
;
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
|
|
||||||
JP COMAND_LINE
|
JP COMAND_LINE
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Error_NoMemForSPpages:
|
Error_NoMemForSPpages:
|
||||||
LD HL,NO_MEM_MSG2
|
LD HL,NO_MEM_MSG2
|
||||||
JR ERROR_FILE.prn_msg
|
JR ERROR_FILE.prn_msg
|
||||||
ERROR_FILE:
|
ERROR_FILE: LD HL,ERROR_FILE_MSG_X
|
||||||
LD HL,ERROR_FILE_MSG_X
|
|
||||||
LD C,Dss.PChars
|
LD C,Dss.PChars
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
|
;
|
||||||
|
LD A,(FILE_HANDLE)
|
||||||
|
LD C,Dss.Close
|
||||||
|
RST ToDSS
|
||||||
|
;
|
||||||
LD HL,ONE_FILE
|
LD HL,ONE_FILE
|
||||||
.prn_msg: LD C,Dss.PChars
|
.prn_msg: LD C,Dss.PChars
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
|
;
|
||||||
LD HL,ERROR_FILE_MSG
|
LD HL,ERROR_FILE_MSG
|
||||||
JP EXIT_ALL
|
JP EXIT_ALL
|
||||||
|
|
||||||
@ -379,8 +401,9 @@ N_LINE: LD (HL),0
|
|||||||
;!TODO ¥á«¨ ¯à®¯ã᪠¥¬ § £à㧪ã ROM ¤«ï 48, 128 ¨«¨ trdos, â® ¢áâ ¢«ïâì ¢ ¯®àâ vROM ®¬¥à ¨§ áâ ¤ à⮣® ¯¥à¢®£® ¡«®ª
|
;!TODO ¥á«¨ ¯à®¯ã᪠¥¬ § £à㧪ã ROM ¤«ï 48, 128 ¨«¨ trdos, â® ¢áâ ¢«ïâì ¢ ¯®àâ vROM ®¬¥à ¨§ áâ ¤ à⮣® ¯¥à¢®£® ¡«®ª
|
||||||
;!TEST
|
;!TEST
|
||||||
MACRO vROM_LOAD romLine;,pageNumber
|
MACRO vROM_LOAD romLine;,pageNumber
|
||||||
|
.romLine = (romLine-1)*2
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
LD HL,(A_LINES+romLine)
|
LD HL,(A_LINES+.romLine)
|
||||||
LD A,(HL)
|
LD A,(HL)
|
||||||
CP ';'
|
CP ';'
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
@ -420,6 +443,44 @@ N_LINE: LD (HL),0
|
|||||||
;vROM_LOAD _LINE ;, #42 ; 10-ï áâப - ¨¬ï ä ©«
|
;vROM_LOAD _LINE ;, #42 ; 10-ï áâப - ¨¬ï ä ©«
|
||||||
;vROM_LOAD _LINE ;, #42 ; 11-ï áâப - ¨¬ï ä ©«
|
;vROM_LOAD _LINE ;, #42 ; 11-ï áâப - ¨¬ï ä ©«
|
||||||
|
|
||||||
|
;!TEST palette load
|
||||||
|
LOADING_PALETTE:
|
||||||
|
EX DE,HL
|
||||||
|
LD HL,( A_LINES + ((PALETTE_LINE-1)*2) )
|
||||||
|
LD A,(HL)
|
||||||
|
CP ';'
|
||||||
|
JR Z,.skip
|
||||||
|
|
||||||
|
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
|
||||||
|
LD C,Dss.Read
|
||||||
|
RST ToDSS
|
||||||
|
JP C,ERROR_FILE ; ®è¨¡ª ¯à¨ ç⥨¨
|
||||||
|
;!TEST ¯à®â¥áâ¨âì DSS í⮬. …᫨ ä ©« 4096 ¨ ç¨â âì 4096, â® ¢ A ¡ã¤¥â #FF
|
||||||
|
;OR A
|
||||||
|
;JP NZ,ERROR_FILE
|
||||||
|
;
|
||||||
|
;PUSH DE
|
||||||
|
|
||||||
|
LD A,(FILE_HANDLE)
|
||||||
|
LD C,Dss.Close
|
||||||
|
RST ToDSS
|
||||||
|
|
||||||
|
;POP DE
|
||||||
|
.skip:
|
||||||
|
;
|
||||||
; ä ©«ë áç¨â ë
|
; ä ©«ë áç¨â ë
|
||||||
;*************************************
|
;*************************************
|
||||||
|
|
||||||
@ -427,7 +488,7 @@ N_LINE: LD (HL),0
|
|||||||
LD C,Dss.PChars
|
LD C,Dss.PChars
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
|
|
||||||
LD HL,(A_LINES+NAME_CFG_LINE)
|
LD HL,(A_LINES + (NAME_CFG_LINE-1)*2 )
|
||||||
LD C,Dss.PChars
|
LD C,Dss.PChars
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
|
|
||||||
@ -442,7 +503,7 @@ N_LINE: LD (HL),0
|
|||||||
|
|
||||||
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-1)*2 ) ; áâப ¯ à ¬¥â஢
|
||||||
LOOP_PAR1: LD A,(HL)
|
LOOP_PAR1: LD A,(HL)
|
||||||
CP "/"
|
CP "/"
|
||||||
JR Z,PARAM_TEST
|
JR Z,PARAM_TEST
|
||||||
@ -514,7 +575,7 @@ BUFFER_RAM_PAGES:
|
|||||||
ELSE
|
ELSE
|
||||||
BUFFER_RAM_PAGES:
|
BUFFER_RAM_PAGES:
|
||||||
.ROM: DB #42, #43, #44, #45, #46, #47
|
.ROM: DB #42, #43, #44, #45, #46, #47
|
||||||
.RAM: BLOCK 16 ; 256 ª¡
|
;.RAM: BLOCK 16 ; 256 ª¡
|
||||||
.Size EQU $-BUFFER_RAM_PAGES
|
.Size EQU $-BUFFER_RAM_PAGES
|
||||||
.end_marker: BYTE #FF
|
.end_marker: BYTE #FF
|
||||||
ENDIF
|
ENDIF
|
||||||
@ -928,10 +989,32 @@ ORIG1: LD BC,Port_All_Mode
|
|||||||
;---------------------------------------
|
;---------------------------------------
|
||||||
|
|
||||||
;******************************
|
;******************************
|
||||||
|
LD A,(LD_Pal_+2)
|
||||||
|
INC A
|
||||||
|
JR NZ,SetDefaultPalette
|
||||||
|
;
|
||||||
|
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
|
||||||
|
JR SetDefaultPalette.skip
|
||||||
|
|
||||||
|
SetDefaultPalette:
|
||||||
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
|
||||||
|
.skip:
|
||||||
LD A,(Int_or_+2)
|
LD A,(Int_or_+2)
|
||||||
AND A ; 3
|
AND A ; 3
|
||||||
JR NZ,Original
|
JR NZ,Original
|
||||||
@ -971,19 +1054,12 @@ Original: LD C,BIOS.FN_SYNC ; -> INT for Pentagon or Scorpion
|
|||||||
OUT (C),A ; #1FFD
|
OUT (C),A ; #1FFD
|
||||||
LD B,#7F
|
LD B,#7F
|
||||||
|
|
||||||
;!TEST
|
|
||||||
LD A,8
|
|
||||||
LOOP_P1: DEC A
|
|
||||||
OUT (C),A ; #7FFD
|
|
||||||
OUT (SLOT3),A
|
|
||||||
JR NZ,LOOP_P1
|
|
||||||
|
|
||||||
;OUT (C),A ; #7FFD
|
LD A,8
|
||||||
;OUT (SLOT3),A
|
LOOP_P1: DEC A
|
||||||
;INC A
|
OUT (C),A ; #7FFD
|
||||||
;CP 8
|
OUT (SLOT3),A
|
||||||
;JR NZ,LOOP_P1
|
JR NZ,LOOP_P1
|
||||||
;
|
|
||||||
|
|
||||||
LD B,#1F
|
LD B,#1F
|
||||||
LD A,#10
|
LD A,#10
|
||||||
@ -1065,7 +1141,13 @@ PROG_STARTS: LD A,2
|
|||||||
|
|
||||||
.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!!!'
|
||||||
|
|
||||||
;
|
;
|
||||||
|
SET_PAL: LD DE,0
|
||||||
|
LD BC,#FF*256 + BIOS.PIC_SET_PAL
|
||||||
|
JP ToBIOS_18
|
||||||
|
;
|
||||||
|
|
||||||
;
|
;
|
||||||
; …᫨ ¯ à ¬¥âà § ¤ , â® ¢ë¡¨à ¥âáï § 票¥ Y
|
; …᫨ ¯ à ¬¥âà § ¤ , â® ¢ë¡¨à ¥âáï § 票¥ Y
|
||||||
PARAMS:; Y / N ; âãâ § ç¥¨ï ¤«ï ª«î祩 § ¯¨áë¢ îâáï ª ª 16 ¡¨â § 票¥, § ç¨â ®¡à âë© ¯®à冷ª ¡ ©â®¢
|
PARAMS:; Y / N ; âãâ § ç¥¨ï ¤«ï ª«î祩 § ¯¨áë¢ îâáï ª ª 16 ¡¨â § 票¥, § ç¨â ®¡à âë© ¯®à冷ª ¡ ©â®¢
|
||||||
@ -1081,6 +1163,7 @@ 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_
|
||||||
|
LD_Pal_: DW LD_Pal, #FF00
|
||||||
DW 0,0 ; end marker
|
DW 0,0 ; end marker
|
||||||
|
|
||||||
Turbo_: DB "turbo", 255,0
|
Turbo_: DB "turbo", 255,0
|
||||||
@ -1095,6 +1178,7 @@ 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
|
||||||
|
LD_Pal: DB "load-pal", 255,0
|
||||||
|
|
||||||
;ZX_PROG_LEN EQU $-RELOAD_PROG
|
;ZX_PROG_LEN EQU $-RELOAD_PROG
|
||||||
|
|
||||||
@ -1114,6 +1198,9 @@ Loader_length EQU 0
|
|||||||
ENDIF
|
ENDIF
|
||||||
;----------------------------------------------[End Loader section]
|
;----------------------------------------------[End Loader section]
|
||||||
;
|
;
|
||||||
|
|
||||||
|
PlaceForPalette EQU #9000
|
||||||
|
|
||||||
STACK_CHECK_MACRO stack_point,stack_buffer
|
STACK_CHECK_MACRO stack_point,stack_buffer
|
||||||
; Code after Loader
|
; Code after Loader
|
||||||
;[]-----------------------------[PLUGINS]-----------------------------[]
|
;[]-----------------------------[PLUGINS]-----------------------------[]
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user