This commit is contained in:
Anatoliy Belyanskiy 2024-01-26 00:46:35 +10:00
parent ee0a29a034
commit 72e8008dd0
12 changed files with 172 additions and 156 deletions

@ -1 +1 @@
Subproject commit a6dee8e17ae12b251f306290793a56a6b0dd5ae3
Subproject commit e7e58e7b816a25137a0a253321164e863bbe782e

View File

@ -212,17 +212,20 @@ NMI_Point:
; BLOCK MEM_MAP.ID_Version-$,0 ;#C0-$,0
ID_Version:
dw bitstream_ver_hex ; Version of bitstream hex
ID_SPRINTER_length:
DB ID_SPRINTER.LENGTH
ID_SPRINTER:
DB 'Hardware v'
.bitstream_ver:
DB bitstream_ver_string,0
DB 'Sprinter',0
DB 0
.LENGTH EQU $-ID_SPRINTER
DB ID_SPRINTER.LENGTH
ID_SPRINTER: ; § ¯¨áì 1
DB 'Hardware v'
.bitstream_ver: DB bitstream_ver_string,0
; § ¯¨áì 2
DB 'Sprinter',0
; § ¯¨áì 3 - ¤¢  ¡ ©â  ¤«ï ¢¥àᨨ 稯  Altera
;DW #FFFF - ¯®¤áâ ¢«ï¥âáï ¢ ä㭪樨 FN_VERSION
; ª®­¥æ
DB 0
;
.Records_Num EQU 3
.LENGTH EQU $-ID_SPRINTER
; Check for max length of string
ASSERT ID_SPRINTER.LENGTH < #20, 'ERROR! ID String is to long!'
@ -350,11 +353,11 @@ EXTINT: OR A
ADD HL,SP
PUSH HL
LD HL,-.stackDepth - .switchProcedure.size ; memory stack use!
ADD HL,SP ; stack
PUSH HL ;  ¤à¥á ¯à®£à ¬¬ë .readProcedure
LD HL,-.stackDepth - .switchProcedure.size ; memory stack use!
ADD HL,SP ; stack
PUSH HL ;  ¤à¥á ¯à®£à ¬¬ë .readProcedure
LD DE,.switchProcedure ; ¯¥à¥­¥á⨠¯à®£à ¬¬ã ­  á⥪
LD DE,.switchProcedure ; ¯¥à¥­¥á⨠¯à®£à ¬¬ã ­  á⥪
EX DE,HL
LD BC,.switchProcedure.size
LDIR
@ -814,13 +817,10 @@ Check_EE_Port:
OUT (SLOT1),A
LD A,(Spec_Page.page_2) ; PAGE2
OUT (SLOT2),A
LD A,(Spec_Page.page_3) ; PAGE3
OUT (SLOT3),A
LD A,(Spec_Page.Reload_Version)
CP #FF
JR NZ,.ver_2
JP (HL)
;
JR Z,.JPHL ; olg logic
; new logic
.ver_2: EXX
LD HL,(Spec_Page.Stack_Point)
LD SP,HL
@ -828,11 +828,12 @@ Check_EE_Port:
AND A
LD A,#FF
LD (Spec_Page.Reload_Version),A
JR NZ,ver_2_sys_port_on
LD A,(Spec_Page.page_3) ; PAGE3
OUT (SLOT3),A
JR Z,.JPHL
PUSH HL
JP EXP_FNS_2_RET
ver_2_sys_port_on:
JP (HL)
.JPHL: JP (HL)
;
;--[¯¥à¥å¢ â soft/hard reset #41 page]--
Check_Spec_Page:
@ -1277,7 +1278,7 @@ ZX_SPECTRUM_MODE:
; LD D,#35
; CALL CMOS_RD
; BIT 0,A ; !!!!!
; BIT 0,A ; !!!!!
; PUSH AF
; CALL Z,SPRINTER_1
@ -1335,17 +1336,19 @@ RES128_PROG:
INC D
DEC D
JP Z,0 ; 0 ‚•Ž„ BASIC-128
; 0 ‚•Ž„ BASIC-128
JP Z,0
; 1 ‚•Ž„ BASIC-48
LD A,#10
OUT (C),A
DEC D
JP Z,0 ; 1 ‚•Ž„ BASIC-48
JP Z,0
; 2 ‚•Ž„ TR-DOS
LD HL,0
PUSH HL
DEC D
JP Z,#3D29 ; 2 ‚•Ž„ TR-DOS
JP Z,#3D29
; 3 ‚•Ž„ EXPANSION
;!TODO ¯®ª  ­¥ à ¡®â ¥â
XOR A
OUT (C),A
@ -1353,17 +1356,22 @@ RES128_PROG:
LD B,#1F
OUT (C),A
DEC D
JP Z,0 ; 3 ‚•Ž„ EXPANSION ???
JP Z,0
;
XOR A
OUT (C),A
LD A,#30
LD B,#7F
OUT (C),A
;!TEST
LD A,CNF_PORT.PENT_RESET + CNF_PORT.SCORP_RESET
OUT (CNF_PORT.OFF),A
;
DEC D
JP Z,#3D29 ; 4 ‚•Ž„ TR-DOS á § ªàëâ묨 128-¬¨ ¯®àâ ¬¨
JP 0 ; 5 ‚•Ž„ BASIC-48 á § ªàëâ묨 128-¬¨ ¯®àâ ¬¨
; 4 ‚•Ž„ TR-DOS á § ªàëâ묨 128-¬¨ ¯®àâ ¬¨
JP Z,#3D29
; 5 ‚•Ž„ BASIC-48 á § ªàëâ묨 128-¬¨ ¯®àâ ¬¨
JP 0
ENT
LEN_RES128 EQU $-RES128_PROG
;-----------------------------------------------------------------------;
@ -1602,11 +1610,11 @@ DOS_OFF:
DI
PUSH AF
PUSH BC
LD BC,(#5BFF) ; !HARDCODE
LD BC,(#5BFF) ; !HARDCODE
LD A,#C9 ; Opcode RET
LD (#5BFF),A ; !HARDCODE
CALL #5BFF ; !HARDCODE
LD (#5BFF),BC ; !HARDCODE
LD (#5BFF),A ; !HARDCODE
CALL #5BFF ; !HARDCODE
LD (#5BFF),BC ; !HARDCODE
POP BC
POP AF
JP PO,.no_EI

View File

@ -778,16 +778,5 @@ SCREEN_TABLES:
DB 1 : DW .SCR
DB 1 : DW .RES
DB 0 ; end
; ;!TEST
;.L_ORIGINAL: DB 32 : DW L_SCR
; DB 4 : DW L_SNC
; DB 1 : DW L_INT
; DB 1 : DW L_SNC
; DB 1 : DW L_BLN
; DB 1 : DW L_SCR
; DB 2 : DW L_RES
; DB 0 ; end
;---------------------------------------
FLEX_END:

View File

@ -441,7 +441,7 @@ FN_HDD_INIT:
LD BC,IDE.Write.DeviceHead
LD A,IDE.Drive.Master
OUT (C),A
CALL TEST_HDD_DRV
CALL TEST_HDD_DRV
JR NZ,.ABSENT
;
.L3: WAIT_HDD

View File

@ -59,6 +59,7 @@ RST_CONF:
;--[]
;[x]
.SP2000:
LD BC,Port_All_Mode
IN A,(C)
@ -135,17 +136,42 @@ RST_CONF:
; ãáâ ­ ¢«¨¢ ¥¬ ­ã«¥¢ãî ª àâã ¯®à⮢
LD A,CNF_PORT.CNF_0
OUT (SYS_PORT.ON),A
; ¨ â ª ¯®­ïâ­® çâ® ¤¥« ¥â
IN A,(SLOT3) ; á®å࠭塞 ­®¬¥à ¢®âª­ã⮩ áâà ­¨æë
PUSH AF
LD A,Spec_Page
OUT (SLOT3),A
; ¯à®¢¥à塞 à §¬¥à ¡«®ª  á ª®­ä®© ¨ ¯®«ãç ¥¬ áâà ­¨æë ª®­äë
LD HL,Spec_Page.bitstream_pages
LD A,B
AND A
JR Z,.INIT_ACEX.ReloadConfFromROM
;
CALL EMM.GetMemBlkPages
LD A,B
JR C,.INIT_ACEX.ERROR
CP BitStream_SizeInPages+1 ; ª®«¨ç¥á⢮ áâà ­¨æ ¢ ªíè ¤«ï ¡¨áâਬ  ¯«îá ®¤­ 
JR NC,.INIT_ACEX.ERROR
LD A,(Spec_Page.bitstream_pages)
INC A
JR Z,.INIT_ACEX.ERROR
;
.INIT_ACEX.ReloadConfFromROM:
; § ª¨¤ë¢ ¥¬ ¢ Spec_Page ¯à®£ã ¤«ï § «¨¢ª¨ ª®­äë
LD HL,.INIT_ACEX.PROGRAM
LD DE,Spec_Page.init_acex
LD BC,.INIT_ACEX.PROGRAM.Size
LDIR
; ¥á«¨ ZF=0, â® ¯à®æ¥¤ãà  á¤¥« ¥â à¥á¥â á ¯¥à¥§ «¨¢ª®© ¨§ BIOS, ¨­ ç¥ ¨§ Š<>˜
CALL Spec_Page.init_acex
; á®å࠭塞 ¢®âª­ãâë¥ áâà ­¨æë ¢ Spec_Page
IN A,(SLOT0)
LD E,A
IN A,(SLOT1)
LD D,A
IN A,(SLOT2)
POP HL ; ¢®ááâ ­ ¢«¨¢ ¥¬ ­®¬¥à ¢®âª­ã⮩ áâà ­¨æë
LD L,A
IN A,(SLOT3)
LD H,A
LD A,Spec_Page
OUT (SLOT3),A
LD (Spec_Page.page_0),DE
LD (Spec_Page.page_2),HL
; ¤®áâ ñ¬  ¤à¥á ¢®§¢à â  ¢ ¢ë§ë¢ îéãî äã­ªæ¨î ¨ á®å࠭塞 ¢ Spec_Page
@ -163,107 +189,53 @@ RST_CONF:
LD HL,0
ADD HL,SP
LD (Spec_Page.Stack_Point),HL
; ¯à®¢¥à塞 à §¬¥à ¡«®ª  á ª®­ä®© ¨ ¯®«ãç ¥¬ áâà ­¨æë ª®­äë
;PUSH BC
LD HL,Spec_Page.bitstream_pages
LD A,B
CALL EMM.GetMemBlkPages
LD A,B
;POP BC
;LD B,A
JR C,.INIT_ACEX.ERROR
CP 4+1 ;!HARDCODE ª®«¨ç¥á⢮ áâà ­¨æ ¢ ªíè ¤«ï ¡¨áâਬ  ¯«îá ®¤­ 
JR NC,.INIT_ACEX.ERROR
;PUSH BC
; § ª¨¤ë¢ ¥¬ ¢ Spec_Page ¯à®£ã ¤«ï § «¨¢ª¨ ª®­äë
LD HL,.INIT_ACEX.PROGRAM
LD DE,Spec_Page.init_acex
LD BC,.INIT_ACEX.PROGRAM.Size
LDIR
; “áâ ­ ¢«¨¢ ¥¬ ª«îç¨
LD HL,Spec_Page.flag_R
LD (HL),"R"
INC HL
LD (HL),"S"
INC HL
LD (HL),"T"
;
;POP BC
; B = size of ram block in pages
CALL Spec_Page.init_acex
;
; .. ... ... ..
;!TODO ᤥ« âì äã­ªæ¨î ¯® § «¨¢ª¥ ᢮¥© ª®­äë, ¯¥à¥å¢ âã à¥á¥â .
; .. ... ... ..
;!TODO ᤥ« âì äã­ªæ¨î ¯® § «¨¢ª¥ ᢮¥© ª®­äë, ¯¥à¥å¢ âã à¥á¥â .
; *. ‚室 ¢ ¯®¤äã­ªæ¨î ⮫쪮 ç¥à¥§ RST 08 ¨«¨ #18
; *. ‘®åà ­¨âì ¢á¥ áâà ­¨æë ¯®«ì§®¢ â¥«ï ¢ SYS_PAGE ¤«ï ¯¥à¥å¢ â  à¥á¥â 
; *. „®áâ âì á® á⥪   ¤à¥á ¢®§¢à â  ¨ á®åà ­¨âì ¢ SYS_PAGE ¤«ï ¯¥à¥å¢ â  à¥á¥â 
; *. ‘®åà ­¨âì ªã¤ -­¨¡ã¤ì §­ ç¥­¨¥ á⥪ 
; *
; .. ... ... ..
LD BC,256*BIOS.REINIT.HARD_RESET + BIOS.REINIT
JP_to_BIOS
; .. ... ... ..
LD BC,256*BIOS.REINIT.HARD_RESET + BIOS.REINIT
JP_to_BIOS
;
.INIT_ACEX.ERROR:
POP BC
LD A,(Spec_Page.page_2)
OUT (SLOT2),A
LD A,(Spec_Page.page_3)
POP AF
OUT (SLOT3),A
SCF
RET
;
.INIT_ACEX.PROGRAM:
DISPLAY " !!! !!! .INIT_ACEX.PROGRAM !!! !!!"
DISP Spec_Page.init_acex
DISPLAY " !!! !!! .INIT_ACEX.PROGRAM !!! !!!"
DISP Spec_Page.init_acex
;
SAFE_PORTY
IN A,(FastRAM.ON)
EXX
IN A,(SLOT1)
LD (.slot1_page),A
;
LD A,(Spec_Page.bitstream_pages)
OUT (SLOT1),A ; áâà ­¨æ  á ¤ ­­ë¬¨ ä ©« 
;
XOR A
OUT (FastRAM.SLOT0),A ; ‘âà ­¨æ  Š<>˜ = 0
;
LD HL,#5000 ; ¯¥à¥ª¨¤ë¢ ­¨¥ ¤ ­­ëå ¢ áâà ­¨æã Š<>˜ = 0
LD DE,#1000
LD BC,#3000
LDIR
;
LD A,(Spec_Page.bitstream_pages+1)
CP #FF
JR Z,.INIT_ACEX.PROGRAM.SET_KEYS
OUT (SLOT1),A ; á«¥¤ãîé ï áâà ­¨æ  á ¤ ­­ë¬¨ ä ©« 
LD A,1
OUT (FastRAM.SLOT0),A ; ‘âà ­¨æ  Š<>˜ = 1
;
LD H,D ; LD HL,#4000
LD D,E ; LD DE,#0000
LD B,H ; LD BC,#4000
LDIR
;
LD A,(Spec_Page.bitstream_pages+2)
CP #FF
JR Z,.INIT_ACEX.PROGRAM.SET_KEYS
OUT (SLOT1),A ; á«¥¤ãîé ï áâà ­¨æ  á ¤ ­­ë¬¨ ä ©« 
LD A,2
OUT (FastRAM.SLOT0),A ; ‘âà ­¨æ  Š<>˜ = 2 ; á«¥¤ãîé ï áâà ­¨æ  á ¤ ­­ë¬¨ ä ©« 
;
EX DE,HL ; LD HL,#4000
LD D,E ; LD DE,#0000
LD B,H ; LD BC,#4000
LDIR
;
LD A,(Spec_Page.bitstream_pages+3)
CP #FF
JR Z,.INIT_ACEX.PROGRAM.SET_KEYS
OUT (SLOT1),A ; á«¥¤ãîé ï áâà ­¨æ  á ¤ ­­ë¬¨ ä ©« 
LD A,3
OUT (FastRAM.SLOT0),A ; ‘âà ­¨æ  Š<>˜ = 1
;
LD H,D ; LD HL,#4000
LD D,E ; LD DE,#0000
LD BC,#3EDF ; !HARDCODE ®á⠢訩áï à §¬¥à ¡¨âáâਬ 
LDIR
LD A,#FE ; ç⮡ ¯à®¢¥à¨âì, çâ® ¢ë§ë¢ âì ¯®á«¥ CALL NZ,.INIT_ACEX.PROGRAM.LOAD
; âãâ ZF ¤®«¦¥­ ¡ëâì ¨§ ¢ë§ë¢ î饩 ¯à®æ¥¤ãàë
CALL NZ,.INIT_ACEX.PROGRAM.LOAD ; ¥á«¨ RAM_BLOCK ID ­¥ à ¢¥­ 0, â® ¢ë¯®«­ï¥âáï
INC A ; ä« £ ZF=0 £à㧨¬ ¨§ ROM
;
.INIT_ACEX.PROGRAM.SET_KEYS:
LD A,3
OUT (FastRAM.SLOT0),A ; ‘âà ­¨æ  Š<>˜ = 3
;
LD HL,.INIT_ACEX.Reload_String ; ä« £ ¯¥à¥§ £à㧪¨ ¨§ Š<>˜- 
LD DE,ACEX.LOADER.String_Address-#C000
JR Z,1F ; ãáâ ­ ¢«¨¢ ¥¬ ä« £ ¯¥à¥§ £à㧪¨ ¨§ Š<>˜- 
INC L ; § â¨à ¥¬ ä« £ ¯¥à¥§ £à㧪¨ ¨§ Š<>˜- 
1: LD DE,ACEX.LOADER.String_Address-#C000
LD BC,#10
LDIR
@ -275,8 +247,43 @@ RST_CONF:
XOR A
OUT (FastRAM.SLOT0),A
IN A,(FastRAM.OFF)
.slot1_page+1: LD A,0
OUT (SLOT1),A
RET
;
;
;
.INIT_ACEX.PROGRAM.LOAD:
XOR A ; áâà ­¨æ  Š<>˜
LD HL,Spec_Page.bitstream_pages
OUT (FastRAM.SLOT0),A ; ‘âà ­¨æ  Š<>˜ = 0
INC A
.INIT_ACEX.PROGRAM.load_loop:
EX AF,AF'
LD A,(HL)
INC HL
CP #FF
RET Z
OUT (SLOT1),A ; áâà ­¨æ  á ¤ ­­ë¬¨ ä ©« 
EX AF,AF'
;
; ¯¥à¥ª¨¤ë¢ ­¨¥ #3000 ¡ ©â®¢ ¢ Š<>˜(0) = #1000
EXX
LD HL,#4000
LD DE,#1000
LD BC,#3000
LDIR
; ¤®ª¨¤ë¢ ­¨¥ #1000 ¡ ©â®¢ ¢ Š<>˜(1) = #0000
; HL = #7000
OUT (FastRAM.SLOT0),A ; ‘âà ­¨æ  Š<>˜ = 1
INC A
;
LD D,C ; LD DE,0
LD B,#10 ; LD BC,#1000
LDIR
EXX
JR .INIT_ACEX.PROGRAM.load_loop
.INIT_ACEX.Reload_String:
DB ACEX.RELOAD_STRING
;

View File

@ -53,15 +53,15 @@ FN_VERSION:
PUSH HL
EX DE,HL
LD HL,ID_SPRINTER_length
;
LD B,0
LD C,(HL)
INC HL
LD B,0
LDIR
;
POP HL
LD DE,(ID_Version) ;rdlow-ok
;
IN A,(SLOT2)
EX AF,AF'
LD A,SYS_PAGE
@ -69,21 +69,30 @@ FN_VERSION:
LD BC,(SYS_PAGE.CONFIG_BYTE-#4000) ; Version PLD ; !TODO ç¥à¥§ áâàãªâãàã ¤«ï ¯¥à¥¬¥­­ëå ¡¨®á 
EX AF,AF'
OUT (SLOT2),A
LD A,2 ; —¨á«® ¯®«¥©
LD A,ID_SPRINTER.Records_Num ; —¨á«® ¯®«¥©
AND A
RET
;----------------------------------------------------------------------;
;----------------------------------------------------------------------;
FN_CRIPT:
DEC B
DEC B
JR Z,.board_id
DEC B
SCF
RET NZ
LD HL,(ROM_NUMBER.part1) ;rdlow-ok
LD A,(ROM_NUMBER.part2) ;rdlow-ok
LD BC,(BoardID.start) ;rdlow-ok
LD DE,(BoardID.end) ;rdlow-ok
AND A
RET NZ
; [ ] 25/01/24
.Acex_ver:
;!TODO
AND A
RET
;
.board_id:
LD HL,(ROM_NUMBER.part1) ;rdlow-ok
LD A,(ROM_NUMBER.part2) ;rdlow-ok
LD BC,(BoardID.start) ;rdlow-ok
LD DE,(BoardID.end) ;rdlow-ok
AND A
RET
; BoardID_start old address #312A
; BoardID_end old address #312D
@ -100,6 +109,7 @@ EMM.CheckColdInit:
LD HL,SYS_PAGE.ID_FLAG - #4000
LD DE,ID_SPRINTER_length
LD A,(DE)
DEC A
INC DE
LD B,A
.loop: LD A,(DE)

View File

@ -1,3 +1,5 @@
; Header of bitstream which non packed
DB #FF,#FF,#62,#7B,#39,#00,#FF,#FF
DB #FF,#FF,#62,#7B,#39,#00,#FF,#FF ; 1k30
; Packed:
;DB #FF,#FF,#62,#7B,#3C,#00,#01,#FF ; 1k50
;

View File

@ -280,7 +280,7 @@ CLEARM: IN A,(SLOT3)
CALL NZ,CCHAIN
POP AF
OUT (SLOT3),A
;!TEST; [ ] 04/11/2023 Žâ¤¥«ì­ë¥ à ¬¤¨áª¨ ¤«ï ०¨¬  ᯥªâà㬠 ¨ DSS. BLK_TO_RAMD
;!TEST; [ ] 04/11/2023 Žâ¤¥«ì­ë¥ à ¬¤¨áª¨ ¤«ï ०¨¬  ᯥªâà㬠 ¨ DSS.
LD B,high BIOS.SWAP_RAM_DRIVES.Sp2000
JP SWAP_RAM_DRIVES
;

View File

@ -49,13 +49,13 @@ COMAND_LOOP:
INC HL
CP ":"
JR Z,COMAND_L1
CP #0D
CP ZX_Char.carriage_return
JR NZ,COMAND_LOOP
RET
COMAND_L1:
LD A,(HL)
CP #EA ;!HARDCODE
CP ZX_Token.rem
RET NZ
INC HL
COMAND_OK: ; Ž<><C5BD><EFBFBD>“†…<E280A0>€ ŠŽŒ€<C592>„€ „‹Ÿ 'expansion'
@ -63,7 +63,7 @@ COMAND_OK: ;
INC HL
CP ':'
JP Z,MENU_S1
CP #0D
CP ZX_Char.carriage_return
JP Z,MENU_S1
CP 'I'
JR Z,COMAND_ISD
@ -123,7 +123,7 @@ TASK_SWITCH:
RLCA
RLCA
RLCA
AND 30H ; ­®¢ ï § ¤ ç  0..3
AND #30 ; ­®¢ ï § ¤ ç  0..3
LD C,A
IN A,(SLOT3)

View File

@ -233,8 +233,8 @@ BASIC_MENU:
LD DE,(ZX_VARS.CH_ADR)
PUSH DE
LD (ZX_VARS.CH_ADR),HL
CALL_48X 1C8Ch ; SYMBOL VAR
CALL_48X 2BF1h ; input txt !!!
CALL_48X #1C8C ; SYMBOL VAR
CALL_48X #2BF1 ; input txt !!!
; DE - adr
; BC - len
PUSH DE

View File

@ -8,7 +8,7 @@
DEFINE Pashalki 0 ;
DEFINE PICTURE_FILE './src/bios/logo/psfathers.bmp'
DEFINE StandartCGApallete 1 ; <20>®¤ª«îç âì ¯ «¨âàã ¨§ standart_colors.inc
DEFINE BitStream_SizeInPages 4
; ‡ ¤¥à¦ª  ¢ ª ¤à å ¯®á«¥ ®âà¨á®¢ª¨ «®£®â¨¯  (0 = 256)
DEFINE LOGO_DELAY_MIN 25

Binary file not shown.