+ SET_PORTS: no need to call from #3D13 and DI

This commit is contained in:
Anatoliy Belyanskiy 2023-12-31 05:20:39 +10:00
parent 91c22e8e58
commit 0379d0c9b1
6 changed files with 121 additions and 76 deletions

@ -1 +1 @@
Subproject commit 54298bfb52826572bda5ccd0609320a9418d08c9
Subproject commit c135d9b6038fcabca6cef3234d876f93d5865dee

View File

@ -584,40 +584,47 @@ DCP_CONFIG:
;
;-----------------------------------------------------------------------;
; CALL from 3D13h! Žáâ®à®¦­¥¥ á ¯à¥à뢠­¨ï¬¨, «ãçè¥ £ á¨âì, ç⮡ ­¥ ᡨâì ᨣ­ « DOS_ON
;[x] ’¥¯¥àì íâ® ­¥ ­ã¦­®: CALL from 3D13h! Žáâ®à®¦­¥¥ á ¯à¥à뢠­¨ï¬¨, «ãçè¥ £ á¨âì, ç⮡ ­¥ ᡨâì ᨣ­ « DOS_ON
; in: A - ¢­ãâ७­¨© ¯®àâ, B - §­ ç¥­¨¥ ¤«ï § ¯¨á¨ ¢® ¢­ãâ७­¨© ¯®àâ
; out: B - áâ à®¥ §­ ç¥­¨¥ ¢­ãâ७­¥£® ¯®àâ ; <20>¥à¥¤ ¢ë室®¬ ¢®ááâ ­ ¢«¨¢ ¥âáï ª®­ä  ¯à®¯¨á ­­ ï ¢ CONFIG_DE
; out: B - áâ à®¥ §­ ç¥­¨¥ ¢­ãâ७­¥£® ¯®àâ ; <20>¥à¥¤ ¢ë室®¬ ¢®ááâ ­ ¢«¨¢ ¥âáï ª®­ä  ¯à®¯¨á ­­ ï ¢ CONFIG_DE.
SET_PORTS:
EX AF,AF'
;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23
AND A
LD A,R
PUSH AF
DI
CALL DOS_ON
;
LD A,CNF_PORT.CNF_0 + ROM.BIOS
OUT (SYS_PORT.ROM),A
;
LD C,SLOT2 ; ¯®«ãç¨âì áâà ­¨æã
IN D,(C)
;
LD A,DCP_PAGE ; ãáâ ­®¢¨âì ­®¢ãî
OUT (C),A
;
LD A,(#8000) ; á®åà ­¨âì â® çâ® ¡ë«®
LD L,A
LD A,(#8200)
LD H,A
EX AF,AF' ; áâà ­¨æ 
;
LD (#8000),A ; ãáâ ­®¢¨âì ¢­ãâ७­¨© ¯®àâ
LD (#8200),A
;
EX AF,AF'
LD A,B
LD BC,0
EX AF,AF'
;
IN A,(C)
;
EX AF,AF'
OUT (C),A ; ãáâ ­®¢¨âì ­®¢®¥ §­ ç¥­¨¥ ¯®àâ 
EX AF,AF'
;
LD B,A
LD A,L
LD (#8000),A ; ¢¥à­ãâì ¯®àâ
@ -630,8 +637,15 @@ SET_PORTS:
LD A,(SYS_PAGE.CONFIG_DE-#4000)
OUT (C),D ; ¢¥à­ãâì áâà ­¨æã
OUT (SYS_PORT.ROM),A
AND A
RET
;
;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23
POP AF
RET PO
EI
RET
;
;AND A
;RET
;
;-----------------------------------------------------------------------;
;

View File

@ -780,28 +780,31 @@ start:
push af
;----[¯¥à¥å¢ â soft reset #EE port]-----
Check_EE_Port:
LD A,ACEX.RET_PORT
LD B,0
LD C,BIOS.SET_PORTS
CALL @ToBIOS_3D13 ; ¯¥à¥ãáâ ­®¢¨âì ¢­ãâà. ¯®àâ #EE
LD A,B
AND A
JR Z,Check_Spec_Page
LD A,ACEX.RET_PORT
LD B,0
;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23
;LD C,BIOS.SET_PORTS
;CALL @ToBIOS_3D13 ; ¯¥à¥ãáâ ­®¢¨âì ¢­ãâà. ¯®àâ #EE
CALL SET_PORTS
;
LD A,B
AND A
JR Z,Check_Spec_Page
DI
OUT (SLOT3),A ; Set restart page
OUT (SLOT3),A ; Set restart page
.After_Hard_Rst:
LD HL,(Spec_Page.RET_addr) ; prog address
ld A,(Spec_Page.page_0) ; PAGE0
OUT (SLOT0),A
LD A,(Spec_Page.page_1) ; PAGE1
OUT (SLOT1),A
LD A,(Spec_Page.page_2) ; PAGE2
OUT (SLOT2),A
LD A,(Spec_Page.page_3) ; PAGE3
OUT (SLOT3),A
JP (HL)
LD HL,(Spec_Page.RET_addr) ; prog address
LD A,(Spec_Page.page_0) ; PAGE0
OUT (SLOT0),A
LD A,(Spec_Page.page_1) ; PAGE1
OUT (SLOT1),A
LD A,(Spec_Page.page_2) ; PAGE2
OUT (SLOT2),A
LD A,(Spec_Page.page_3) ; PAGE3
OUT (SLOT3),A
JP (HL)
;
;--[¯¥à¥å¢ â soft/hard reset #41 page]--
Check_Spec_Page:
@ -1098,26 +1101,28 @@ ZG_ADDRESS: INCLUDE 'FONT.ASM'
; RAM SLOT0 - page 0
; ¤«ï ०¨¬  zx spectrum
; <E2809A>Ž<C5BD>Ÿ…Ÿ ˆ‡ އ“
; !HARDCODE ­®¬¥à  áâà ­¨æ ¤«ï í¬ã«ïâ®à  <20>‡“
init_zx_roms:
DISP Reset_Handler.init_rom_address
IN A,(SLOT3)
PUSH AF
;PUSH AF
EX AF,AF'
DI
LD A,1 ;!HARDCODE
LD A,SYS_PORT.EXTENSION
OUT (SYS_PORT.ROM),A
;LD A,2
INC A ;!HARDCODE
LD B,3 ; zx-rom number of pages
INC A ;!HARDCODE LD A,2
LD B,3 ; zx-rom number of pages
;!FIXIT ¯¥à¥¤¥« âì ­  äã­ªæ¨î ¡¨®á  ¤«ï ç⥭¨ï ROM-DISK ¨ ¯¥à¥­¥á⨠¢ ­¥£® <20>‡“ ᯥªâà㬠
.loop: push bc
.loop: ;push bc
EXX
;
out (ROM.SLOT0),a
or %0100'0000
or %0100'0000 ; !HARDCODE ­®¬¥à  áâà ­¨æ ¤«ï í¬ã«ïâ®à  <20>‡“
out (SLOT3),a
and %1011'1111
and %1011'1111 ; !HARDCODE ­®¬¥à  áâà ­¨æ ¤«ï í¬ã«ïâ®à  <20>‡“
LD HL,0
LD DE,#C000
@ -1125,47 +1130,67 @@ init_zx_roms:
LDIR
inc a
pop bc
;pop bc
EXX
DJNZ .loop
xor a
out (ROM.SLOT0),a
OUT (SYS_PORT.ROM),A
POP AF
;POP AF
EX AF,AF'
out (SLOT3),a
LD A,#E2 ;!HARDCODE ROM-ID - BASIC 128
LD B,#42 ; page
CALL .SET_ROM
LD A,ACEX.vROM.BASIC_128 ; ROM-ID - BASIC 128
LD B,#42 ;!HARDCODE page
;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23
;CALL .SET_ROM
CALL SET_PORTS
;
LD A,#E3 ;!HARDCODE ROM-ID - BASIC 48
LD B,#43 ; page
CALL .SET_ROM
LD A,ACEX.vROM.BASIC_48 ; ROM-ID - BASIC 48
LD B,#43 ;!HARDCODE page
;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23
;CALL .SET_ROM
CALL SET_PORTS
;
LD A,#E1 ;!HARDCODE ROM-ID - TR-DOS
LD B,#44 ; page
CALL .SET_ROM
LD A,ACEX.vROM.TR_DOS ; ROM-ID - TR-DOS
LD B,#44 ;!HARDCODE page
;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23
;CALL .SET_ROM
CALL SET_PORTS
;
; LD A,#E0 ;!HARDCODE ROM-ID - BIOS
; LD B,#45 ; page
; CALL .SET_ROM
; LD A,ACEX.vROM.BIOS ; ROM-ID - BIOS
; LD B,#45 ;!HARDCODE page
;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23
;CALL .SET_ROM
CALL SET_PORTS
;
; LD A,#EB ;!HARDCODE ROM-ID - BIOS-1
; LD B,#45 ; page
; CALL .SET_ROM
; LD A,#EF ;!HARDCODE ROM-ID - BIOS-2
; LD B,#47 ; page
; CALL .SET_ROM
; LD A,ACEX.vROM.BIOS_3 ; ROM-ID - BIOS-1
; LD B,#45 ;!HARDCODE page
;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23
;CALL .SET_ROM
CALL SET_PORTS
;
; LD A,ACEX.vROM.BIOS_4 ; ROM-ID - BIOS-2
; LD B,#47 ;!HARDCODE page
;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23
;CALL .SET_ROM
CALL SET_PORTS
;
RET
;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23
.SET_ROM:
LD C,BIOS.SET_PORTS
JP ToBIOS_3D13
;LD C,BIOS.SET_PORTS
;JP ToBIOS_3D13
;
ENT
.length EQU $-init_zx_roms
;-----------------------------------------------------------------------;
@ -1536,15 +1561,15 @@ DOS_ON: NOP
_mInfoBLOCK #3E00-$,#FF
DOS_OFF:
DI
PUSH AF
PUSH BC
LD BC,(#5BFF) ; !HARDCODE
LD A,#C9
LD (#5BFF),A ; !HARDCODE
CALL #5BFF ; !HARDCODE
LD (#5BFF),BC ; !HARDCODE
POP BC
POP AF
PUSH AF
PUSH BC
LD BC,(#5BFF) ; !HARDCODE
LD A,#C9 ; Opcode RET
LD (#5BFF),A ; !HARDCODE
CALL #5BFF ; !HARDCODE
LD (#5BFF),BC ; !HARDCODE
POP BC
POP AF
RET
;***************************************

View File

@ -428,7 +428,10 @@ CLEAR_RAM:
; ¯®í⮬㠮⪫îç ¥¬ ¯¥à¥å¢ â à¥á¥â .
LD A,ACEX.RET_PORT
LD BC,BIOS.SET_PORTS
CALL ToBIOS_3D13
;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23
;CALL ToBIOS_3D13
RST_to_BIOS
;
EI
RET

View File

@ -70,7 +70,10 @@ CLEAR_RAM:
;!TODO ¯à¨¤ã¬ âì ª ª ®âª«îç âì ¯¥à¥å¢ â ⮫쪮 ­  ¢®§¢à â ¢ DSS
LD A,ACEX.RET_PORT
LD BC,BIOS.SET_PORTS
CALL ToBIOS_3D13
;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23
;CALL ToBIOS_3D13
RST_to_BIOS
;
EI
RET

Binary file not shown.