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 EMULATOR 0 : DEFINE EMULATOR 0 : ENDIF
|
||||
DEFINE EXE_HEADER 1
|
||||
|
||||
DEFINE NEW_MEMORY_LOGIC 0
|
||||
; define NEED_LOADER 1
|
||||
; define NeedSafePort_Y 0
|
||||
;***************************************
|
||||
@ -91,17 +93,32 @@ program_start EQU BEGIN
|
||||
;***************************************
|
||||
FULL_FILE_NAME_LENGTH EQU 128 ; ¤«¨ áâப¨ ¯ã⨠ª ä ©«ã
|
||||
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
|
||||
;
|
||||
ELSE
|
||||
|
||||
;
|
||||
ENDIF
|
||||
|
||||
|
||||
JP COMAND_LINE
|
||||
|
||||
|
||||
|
||||
Error_NoMemForSPpages:
|
||||
LD HL,NO_MEM_MSG2
|
||||
JR ERROR_FILE.prn_msg
|
||||
ERROR_FILE:
|
||||
LD HL,ERROR_FILE_MSG_X
|
||||
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 HL,ERROR_FILE_MSG
|
||||
JP EXIT_ALL
|
||||
|
||||
@ -379,8 +401,9 @@ N_LINE: LD (HL),0
|
||||
;!TODO ¥á«¨ ¯à®¯ã᪠¥¬ § £à㧪ã ROM ¤«ï 48, 128 ¨«¨ trdos, â® ¢áâ ¢«ïâì ¢ ¯®àâ vROM ®¬¥à ¨§ áâ ¤ à⮣® ¯¥à¢®£® ¡«®ª
|
||||
;!TEST
|
||||
MACRO vROM_LOAD romLine;,pageNumber
|
||||
.romLine = (romLine-1)*2
|
||||
EX DE,HL
|
||||
LD HL,(A_LINES+romLine)
|
||||
LD HL,(A_LINES+.romLine)
|
||||
LD A,(HL)
|
||||
CP ';'
|
||||
EX DE,HL
|
||||
@ -420,6 +443,44 @@ N_LINE: LD (HL),0
|
||||
;vROM_LOAD _LINE ;, #42 ; 10-ï áâப - ¨¬ï ä ©«
|
||||
;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
|
||||
RST ToDSS
|
||||
|
||||
LD HL,(A_LINES+NAME_CFG_LINE)
|
||||
LD HL,(A_LINES + (NAME_CFG_LINE-1)*2 )
|
||||
LD C,Dss.PChars
|
||||
RST ToDSS
|
||||
|
||||
@ -442,7 +503,7 @@ N_LINE: LD (HL),0
|
||||
|
||||
LD A,Spec_Page
|
||||
OUT (SLOT3),A
|
||||
LD HL,(A_LINES+OPTIONS_LINE) ; áâப ¯ à ¬¥â஢
|
||||
LD HL,(A_LINES + (OPTIONS_LINE-1)*2 ) ; áâப ¯ à ¬¥â஢
|
||||
LOOP_PAR1: LD A,(HL)
|
||||
CP "/"
|
||||
JR Z,PARAM_TEST
|
||||
@ -514,7 +575,7 @@ BUFFER_RAM_PAGES:
|
||||
ELSE
|
||||
BUFFER_RAM_PAGES:
|
||||
.ROM: DB #42, #43, #44, #45, #46, #47
|
||||
.RAM: BLOCK 16 ; 256 ª¡
|
||||
;.RAM: BLOCK 16 ; 256 ª¡
|
||||
.Size EQU $-BUFFER_RAM_PAGES
|
||||
.end_marker: BYTE #FF
|
||||
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
|
||||
LD BC,2*256+BIOS.SET_PAL_INIT ; Set ZX-Palette
|
||||
RST ToBIOS_18
|
||||
|
||||
.skip:
|
||||
LD A,(Int_or_+2)
|
||||
AND A ; 3
|
||||
JR NZ,Original
|
||||
@ -971,19 +1054,12 @@ Original: LD C,BIOS.FN_SYNC ; -> INT for Pentagon or Scorpion
|
||||
OUT (C),A ; #1FFD
|
||||
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
|
||||
;OUT (SLOT3),A
|
||||
;INC A
|
||||
;CP 8
|
||||
;JR NZ,LOOP_P1
|
||||
;
|
||||
LD A,8
|
||||
LOOP_P1: DEC A
|
||||
OUT (C),A ; #7FFD
|
||||
OUT (SLOT3),A
|
||||
JR NZ,LOOP_P1
|
||||
|
||||
LD B,#1F
|
||||
LD A,#10
|
||||
@ -1065,7 +1141,13 @@ PROG_STARTS: LD A,2
|
||||
|
||||
.Length EQU $-PROG_STARTS
|
||||
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
|
||||
PARAMS:; Y / N ; âãâ § ç¥¨ï ¤«ï ª«î祩 § ¯¨áë¢ îâáï ª ª 16 ¡¨â § 票¥, § ç¨â ®¡à âë© ¯®à冷ª ¡ ©â®¢
|
||||
@ -1081,6 +1163,7 @@ No_run_: DW no_run, #00FF ;
|
||||
Int_or_: DW Int_or, #0300 ; ¢ª«îç¨âì INT "Original"
|
||||
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
|
||||
DW 0,0 ; end marker
|
||||
|
||||
Turbo_: DB "turbo", 255,0
|
||||
@ -1095,6 +1178,7 @@ 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
|
||||
|
||||
;ZX_PROG_LEN EQU $-RELOAD_PROG
|
||||
|
||||
@ -1114,6 +1198,9 @@ Loader_length EQU 0
|
||||
ENDIF
|
||||
;----------------------------------------------[End Loader section]
|
||||
;
|
||||
|
||||
PlaceForPalette EQU #9000
|
||||
|
||||
STACK_CHECK_MACRO stack_point,stack_buffer
|
||||
; Code after Loader
|
||||
;[]-----------------------------[PLUGINS]-----------------------------[]
|
||||
|
||||
Loading…
Reference in New Issue
Block a user