This commit is contained in:
Tolik 2024-09-16 01:48:46 +10:00
parent 0ec6b77447
commit 36d209867e
7 changed files with 393 additions and 154 deletions

@ -1 +1 @@
Subproject commit b1851fc9f30652ff464f323a7f2873806bd51bfd
Subproject commit c3a5d38deff864c3b08dd129572a20428f9219f1

View File

@ -632,7 +632,7 @@ POST_4_PAGES:
LD I,A
LD A,B
OUT (SLOT3),A
LD A,0
XOR A
LD I,A
IN A,(SLOT3)
CP B
@ -664,7 +664,8 @@ POST_5_DATA_BUS:
LD B,0
.loop: IN A,(0)
CP #FF
; JR NZ,.error ;!!!!! ¯®á¬®âà¥âì
;JR NZ,.error ;!!!!! ¯®á¬®âà¥âì
JR NZ,POST_5_ERROR
DJNZ .loop
JR POST_5_OK
@ -694,7 +695,7 @@ POST_5_DATA_BUS:
POST_5_OK:
LD A,(TABLE_X.v5) ;rdlow-ok
OUT (Z84.PIO.Port_A.Data),A ; ¢ë¢¥á⨠"5"
POST_5_ERROR:
; **********************************
; POST § ¢¥à襭
ENDMODULE
@ -705,14 +706,14 @@ POST_5_OK:
XOR A
OUT (RGADR),A
OUT (RGMOD),A
OUT (SLOT0),A ;!HARDCODE zx page number
; !TEST 20/08/2024
; LD A,5 ;!HARDCODE zx page number
OUT (SLOT0),A
; [ ] 20/08/2024 ; [x] free zx pages!
; LD A,5
; OUT (SLOT1),A
; LD A,2 ;!HARDCODE zx page number
; LD A,2
; OUT (SLOT2),A
OUT (SLOT2),A ;!HARDCODE zx page number
DEC A ; LD A,#FF ;!HARDCODE zx page number
OUT (SLOT2),A ; ZERO_PAGE
DEC A ; SHARED_PAGE
OUT (SLOT1),A
;
LD A,SYS_PAGE
@ -895,13 +896,20 @@ PrepareToZX: ;CALL init_zx_roms
CP #10
JR C,.loop
; ¢ë室 ¢ ०¨¬ zx spectrum
;!TODO § ¬¥­¨âì ­  ãáâ ­®¢ªã ¨§ à ¬¡«®ª  ; [ ] free zx pages!
LD A,5
OUT (SLOT1),A
LD A,2
OUT (SLOT2),A
.start_zx: XOR A
IF FREE_ZX_PAGES
JP GOTO_SPEC
ELSE ; [x] free zx pages!
OUT (SLOT2),A ; ZERO_PAGE
DEC A
OUT (SLOT1),A ; SHARED_PAGE
;LD A,5
;OUT (SLOT1),A
;LD A,2
;OUT (SLOT2),A
;
.start_zx: JP GOTO_SPEC.ZX_MODE
JP GOTO_SPEC.ZX_MODE
ENDIF
;***********************************
; ˆ­¨æ¨ «¨§ æ¨ï ¯®à⮢
PORTS_INIT:

View File

@ -105,16 +105,16 @@ EMM.InitMem: PUSH BC
;---------------------------------------------------------------------[]
RESERVED_PAGES:
; [x] Block #1 - ¬®¦­® ®á¢®¡®¤¨âì ¯® ID 1
DB 1,3,4,6,7,8,9,10,11,12,13,14,15 ; for Spectrum
DB 1,3,4,6,7,8,9,10,11,12,13,14,15 ; [ ] free zx pages! for Spectrum
;!FIXIT áâà ­¨æë 16..31 ­¥ § à¥§¥à¢¨à®¢ ­ë, ­® ¨á¯®«ì§ãîâáï ¢ Pentagon 512
;
; í¬ã«ïâ®à <20>‡“ ;!FIXIT ROM-Emulator ᤥ« âì ¤¨­ ¬¨ç¥áª¨¥ áâà ­¨æë
DB #42,#43,#44,#45,#46,#47;,#48,#49,#4A,#4B ; For (BASIC128, BASIC48, TRDOS, SCORP_ROM)*2, vBIOS, vEXTENSION
DB #42,#43,#44,#45,#46,#47;,#48,#49,#4A,#4B ; [ ] free zx pages! For (BASIC128, BASIC48, TRDOS, SCORP_ROM)*2, vBIOS, vEXTENSION
DB #FF ; End of the block
;
;
;; Block #2 - ­¥«ì§ï ®á¢®¡®¦¤ âì
DB 0,2,5 ; for Spectrum and BIOS starting
DB 0,2,5 ; [ ] free zx pages! ; for Spectrum and BIOS starting
DB DCP_PAGE ; Ports map
DB Spec_Page ; Page for Spectrum mode
; Screen pages
@ -279,11 +279,11 @@ EMM.FreeMemRMD: CALL GET_RAMD_ST
; ‚室: A - <20>€—€Ž <E28093>Ž—Šˆ
; <20><20>Ž<EFBFBD>ˆœ DE!!!
;EMM_FN3M:
EMM.FreeMem: ; [ ] free zx pages! ⥯¥àì ­¥«ì§ï ®á¢®¡®¤¨âì áâà ­¨æã #FF
SCF
INC A
RET Z
DEC A
EMM.FreeMem: ; [x] free zx pages! ⥯¥àì ­¥«ì§ï ®á¢®¡®¤¨âì áâà ­¨æã #FF
SCF
INC A
RET Z
DEC A
;AND A
;SCF
;
@ -1085,76 +1085,76 @@ ROM_DISK:
; RET
.loop: PUSH DE ; ­®¬¥à ᥪâ®à 
.loop: PUSH DE ; ­®¬¥à ᥪâ®à 
PUSH BC
LD A,E
AND #3F ; ADRESS in ROM-Page
PUSH AF ; á®åà ­¨âì  ¤à¥á
AND #3F ; ADRESS in ROM-Page
PUSH AF ; á®åà ­¨âì  ¤à¥á
EX DE,HL ; DE -  ¤à¥á ¡ãä¥à 
EX DE,HL ; DE -  ¤à¥á ¡ãä¥à 
ADD HL,HL
ADD HL,HL ; H - ­®¬¥à ¡ ­ª¨
ADD HL,HL ; H - ­®¬¥à ¡ ­ª¨
LD A,(ROM_DISK.Pages.Number)
INC H
CP H
LD L,H
LD H,high ROM_DISK.Pages.Number ; ROM-Disk pages!
LD A,(HL) ; PAGE-ROM
LD H,high ROM_DISK.Pages.Number ; ROM-Disk pages!
LD A,(HL) ; PAGE-ROM
POP HL ; ¢®ááâ ­®¢¨âì  ¤à¥á ¢ ROM-Page
LD L,0 ; ¥á«¨ ¤ «¥ª® § å®â¥«¨ - ¢ë室 á ®è¨¡ª®©
JR C,.errorExit ; ROM-Disk-end
POP HL ; ¢®ááâ ­®¢¨âì  ¤à¥á ¢ ROM-Page
LD L,0 ; ¥á«¨ ¤ «¥ª® § å®â¥«¨ - ¢ë室 á ®è¨¡ª®©
JR C,.errorExit ; ROM-Disk-end
; DE - ¡ãä¥à
; HL -  ¤à¥á ¢ ROM
; B - ç¨á«® ᥪâ®à®¢
; A - ROM-Page
.loopRead:
PUSH HL ; ®âªã¤ 
PUSH DE ; ªã¤ 
PUSH HL ; ®âªã¤ 
PUSH DE ; ªã¤ 
LD HL,-.stackDepth-.readProcedure.size ; memory stack use!
ADD HL,SP ; stack
LD HL,-.stackDepth-.readProcedure.size ; memory stack use!
ADD HL,SP ; stack
PUSH HL ;  ¤à¥á ¯à®£à ¬¬ë .readProcedure
PUSH HL ;  ¤à¥á ¯à®£à ¬¬ë .readProcedure
LD DE,.readProcedure ; ¯¥à¥­¥á⨠¯à®£à ¬¬ã ­  á⥪
LD DE,.readProcedure ; ¯¥à¥­¥á⨠¯à®£à ¬¬ã ­  á⥪
EX DE,HL
LD BC,.readProcedure.size
LDIR ; ¯à®£à ¬¬  ­  á⥪¥
LD BC,#100 ; ¤«¨­  ᥪâ®à 
RET ; ¨á¯®«­¨âì ¯à®£à ¬¬ã .readProcedure, ­  á⥪¥  ¤à¥á  ¡ãä¥à  ¨ ROM
LDIR ; ¯à®£à ¬¬  ­  á⥪¥
LD BC,#100 ; ¤«¨­  ᥪâ®à 
RET ; ¨á¯®«­¨âì ¯à®£à ¬¬ã .readProcedure, ­  á⥪¥  ¤à¥á  ¡ãä¥à  ¨ ROM
; DE - next address
; HL - ROM address
.readNext:
POP BC ; ç¨á«® ᥪâ®à®¢
POP BC ; ç¨á«® ᥪâ®à®¢
INC C ; áç¥â稪 áç¨â ­­ëå ᥪâ®à®¢
DEC B ; ᥪâ®à  ª®­ç¨«¨áì?
INC C ; áç¥â稪 áç¨â ­­ëå ᥪâ®à®¢
DEC B ; ᥪâ®à  ª®­ç¨«¨áì?
JR Z,.normExit
BIT 6,H ; ç⥭¨¥ ­¥ § ª®­ç¥­®
BIT 6,H ; ç⥭¨¥ ­¥ § ª®­ç¥­®
PUSH BC ; á®åà ­¨âì áç¥â稪¨
JR Z,.loopRead ; ç¨â âì ¤ «ìè¥
PUSH BC ; á®åà ­¨âì áç¥â稪¨
JR Z,.loopRead ; ç¨â âì ¤ «ìè¥
POP BC
POP HL ; ­®¬¥à ᥪâ®à 
POP HL ; ­®¬¥à ᥪâ®à 
LD A,B
LD B,0
ADD HL,BC
LD B,A ; ¢ëç¨á«¨âì á«¥¤.ᥪâ®à
LD B,A ; ¢ëç¨á«¨âì á«¥¤.ᥪâ®à
EX DE,HL ; ⥯¥àì HL -  ¤à¥á, DE ᥪâ®à, B - ᪮«ìª® ¥é¥ ç¨â âì
EX DE,HL ; ⥯¥àì HL -  ¤à¥á, DE ᥪâ®à, B - ᪮«ìª® ¥é¥ ç¨â âì
JP .loop ; ­ ç âì ¢á¥ á­®¢ !
JP .loop ; ­ ç âì ¢á¥ á­®¢ !
; ç⥭¨¥ § ª®­ç¥­®
.normExit:
POP HL ; ᥪâ®à, ®âªã¤  ¢¥«®áì ç⥭¨¥
ADD HL,BC ; ¯® ¢®§¢à âã: HL - á«¥¤. ¤à¥á
EX DE,HL ; DE - á«¥¤.ᥪâ®à
POP HL ; ᥪâ®à, ®âªã¤  ¢¥«®áì ç⥭¨¥
ADD HL,BC ; ¯® ¢®§¢à âã: HL - á«¥¤. ¤à¥á
EX DE,HL ; DE - á«¥¤.ᥪâ®à
AND A
RET
; ®è¨¡ª 
@ -1166,10 +1166,10 @@ ROM_DISK:
; ¯à®æ¥¤ãà , ¯¥à¥­®á¨¬ ï ­  á⥪ ¤«ï ç⥭¨ï ¨§ ROM-Disk
; ®áâ®à®¦­¥¥ á PUSH, ¥á«¨ ­ ¤® ¬­®£®, ⮠㢥«¨ç¨¢ © .stackDepth
.readProcedure:
POP DE ; ªã¤ 
POP HL ; ®âªã¤ 
OUT (ROM.SLOT0),A ; ROM_PAGE
LDIR ; §¤¥áì ç¨â ¥âáï ¨§ ROM-Disk
POP DE ; ªã¤ 
POP HL ; ®âªã¤ 
OUT (ROM.SLOT0),A ; ROM_PAGE
LDIR ; §¤¥áì ç¨â ¥âáï ¨§ ROM-Disk
LD B,A
XOR A
OUT (ROM.SLOT0),A

View File

@ -399,11 +399,16 @@ REINIT: DEC B
OUT (C),A
OUT (RGADR),A
OUT (RGMOD),A
OUT (SLOT0),A ;!HARDCODE zx page number
LD A,5 ;!HARDCODE zx page number
OUT (SLOT1),A
LD A,2 ;!HARDCODE zx page number
OUT (SLOT2),A
OUT (SLOT0),A
; [ ] 16/09/24 free zx pages!
;LD A,5
;OUT (SLOT1),A
;LD A,2
;OUT (SLOT2),A
OUT (SLOT2),A
DEC A
OUT (SLOT1),A
;
LD A,DCP_PAGE
OUT (SLOT3),A
JP 0 ;Restart

View File

@ -212,8 +212,6 @@ INIT_SYS_ALL:
XOR A
LD (SYS_PAGE.INT_ID - #4000),A
;
;!TODO çâ® §  ¯¥à¥¬¥­­ë¥?
LD HL,SYS_PAGE.DISK_TYPE - #4000
LD (HL),DRIVE_CODES.TRDOS.FDD ; FDD A
INC HL
@ -223,13 +221,13 @@ INIT_SYS_ALL:
INC HL
LD (HL),DRIVE_CODES.TRDOS.HDD
INC HL
LD (HL),0 ; SYS_PAGE.COPY_SLOT0
LD (HL),ZERO_PAGE ; [x] free zx pages! ; SYS_PAGE.COPY_SLOT0, ¡ë«® 0
INC HL
LD (HL),5 ; SYS_PAGE.COPY_SLOT1
LD (HL),SHARED_PAGE; [x] free zx pages! ; SYS_PAGE.COPY_SLOT1, ¡ë«® 5
INC HL
LD (HL),2 ; SYS_PAGE.COPY_SLOT2
LD (HL),ZERO_PAGE ; [x] free zx pages! ; SYS_PAGE.COPY_SLOT2, ¡ë«® 2
INC HL
LD (HL),0 ; SYS_PAGE.COPY_SLOT3
LD (HL),ZERO_PAGE ; [x] free zx pages! ; SYS_PAGE.COPY_SLOT3, ¡ë«® 0
LD A,9
LD (SYS_PAGE.MSD_SECS - #4000),A
@ -252,6 +250,9 @@ INIT_SYS_ALL:
XOR A
LD (SYS_PAGE.CURRENT_RAM_DRV - #4000),A
;
; [ ] free zx pages!
;;; init task's
;
LD DE,ZG_ADDRESS ;  ¤à¥á §­ ª®£¥­¥à â®à 
LD (SYS_PAGE.WIN_ZG - #4000),DE
;

View File

@ -54,12 +54,7 @@
;¥á«¨ áâíª ­ å®¤¨âáï ¢ âà¥â쥬 á«®â¥, â® ¢ë§®¢ á ¢ëª«î祭­ë¬¨ ¯à¥à뢠­¨ï¬¨
FN_ENTRANCE: ;!TODO A - TASK NUMBER
EXX
GET_ZX_TASK_DATA_OFFSET
ADD A,_#ZX_TASK_DATA
LD C,A
LD B,0
LD IX,SYS_PAGE.ZX_TASK.CURRENT
ADD IX,BC ; ¤ ­­ë¥ ­®¢®© § ¤ ç¨
CALL GET_ZX_TASK_DATA
;
LD C,SLOT3
IN B,(C)
@ -102,6 +97,18 @@ FN_ENTRANCE: ;!TODO A - TASK NUMBER
;-----------------------------------------------------------------------;
;-----------------------------------------------------------------------;
;‚室: A - TASK NUMBER
GET_ZX_TASK_DATA:
GET_ZX_TASK_DATA_OFFSET
ADD A,_#ZX_TASK_DATA
LD C,A
LD B,0
LD IX,SYS_PAGE.ZX_TASK.CURRENT
ADD IX,BC ; ¤ ­­ë¥ ­®¢®© § ¤ ç¨
RET
;-----------------------------------------------------------------------;
;-----------------------------------------------------------------------;
;‚室: A - TASK NUMBER
@ -226,7 +233,7 @@ SET_7FFD: LD A,(HL)
;-----------------------------------------------------------------------;
;‚믮«­ï¥âáï ¤«ï ¢ë¤¥«¥­¨ï âàñå áâà ­¨æ އ“ 48k
GET_48k_MEM: LD D,3
GET_48k_MEM: LD D,3+1
JR GET_XXX_MEM
;‚믮«­ï¥âáï ¤«ï ¨­¨â  3 áâà ­¨æ އ“ 48k ¨ 29 áâà ­¨æ އ“ Pent512k
GET_512k_MEM: LD D,3+29
@ -313,6 +320,219 @@ GET_SCORP_RAM: CALL FREE_vRAM
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
IF FREE_ZX_PAGES ;----------------------------------------------------[v]
;!TODO § ¤¥©á⢮¢ âì
; ‚室: B = 0 - BASIC 128, 1 - BASIC 48, 2 - TR-DOS 128,
; 3 - EXPANSION. C § ªàëâ묨 128-¬¨ ¯®àâ ¬¨:
; 4 - TR-DOS, 5 - BASIC 48
; A = TASK
GOTO_SPEC: DI
PUSH AF
; set shared pages
XOR A
OUT (SLOT2),A ; ZERO_PAGE
DEC A
OUT (SLOT1),A ; SHARED_PAGE
;
LD A,SYS_PAGE
OUT (SLOT3),A
;
LD A,B
LD (SYS_PAGE.CONFIG_DE.ZX_START),A
;
POP AF
LD SP,#C000
CALL GET_ZX_TASK_DATA
;
;!TODO ᤥ« âì  ªâ¨¢ æ¨î ¢¨­â  ¤«ï ¯ à ¬¥âà  ¨§ Setup
;!TODO ãáâ ­®¢¨âì £¤¥-­¨¡ã¤ì ­¨¦¥ áâíª ¨§ TASK
LD A,(SYS_PAGE.CONFIG_DE.ZX_START)
LD (IX + _#ZX_TASK_DATA.CONFIG_DE + 1),A
;
LD A,(IX + _#ZX_TASK_DATA.PORT_ALL_MODE)
LD BC,Port_All_Mode
OUT (C),A
; ãáâ ­®¢ª  ¨­â 
LD A,(IX + _#ZX_TASK_DATA.FN_SYNC)
AND %0000'0111
CALL FN_SYNC
; ãáâ ­®¢ª  à §¢ñà⪨
LD A,(IX + _#ZX_TASK_DATA.FN_SYNC)
AND %1100'0000
OR %0010'0000
RLCA
RLCA
CALL FN_SYNC
;
CALL SET_TXT_PALETTE.ZX ; [ ] free zx pages! ¯à®¯ã᪠âì íâ®, ç⮡ § ¤ ¢ âì ¯®«ì§®¢ â¥«ìáªãî ¯ «¨âàã
;
LD E,0
CALL LP_SET_32
;
LD E,0
LD HL,#5104
CALL LP_SET_32.X
;¬®¦­® ¨á¯®«ì§®¢ âì ª®£¤ -­¨¡ã¤ì ª ª-­¨¡ã¤ì
; LD D,#35
; CALL CMOS_RD
; BIT 0,A
; PUSH AF
; CALL Z,SPRINTER_1
; POP AF
; PUSH AF
; CALL NZ,AY8910
; POP AF
.TASK_0: XOR A ; § ¤ ç  0, ०¨¬ 256 ª¨«®¡ ©â
.START_TASK: LD IY,.BASIC_128
JP INIT_PAGES ; ¨­¨æ¨ «¨§ æ¨ï ­®¬¥à®¢ áâà ­¨æ ०¨¬  ᯥªâà㬠
;
;start_basic:
.BASIC_128: LD SP,#C000
LD HL,RES128_PROG
LD DE,ZX_VARS.PRINTER_BUFFER ; § ¯ã᪠¯à®£à ¬¬ë ­  BASIC-¥.
LD BC,RES128_PROG.Size
LDIR
DI
JP ZX_VARS.PRINTER_BUFFER
;-----------------------------------------------------------------------;
;-----------------------------------------------------------------------;
;*****************************************
;
; ˆ­¨æ¨ «¨§ æ¨ï áâà ­¨æ ¤«ï
; ᯥªâà㬮¢áª®£® ०¨¬  ¨
; ¢®ááâ ­®¢«¥­¨¥ ᯥªâà㬮¢áª®£®
; íªà ­ 
;
; ‚®§¢à â ¯® IX
;
; !!! NO USE STACK !!!
;
;*****************************************
;!TODO á⥪ ãáâ ­®¢«¥­ ¢® ¢â®à®© áâà ­¨æ¥, ­¥ ¨á¯®«ì§®¢ âì ¨«¨ ãáâ ­ ¢«¨¢ âì ¢ ¤àã£ãî!
; ¨­¨æ¨ «¨§ æ¨ï áâà ­¨æ zx spectrum
INIT_PAGES:
AND A
LD E,A
EX AF,AF'
LD A,E
; BIT 7,A
; JR Z,SCORPION_256_MODE
; BIT 6,A
; JR Z,PENTAGON_128_MODE
;
;PENTAGON_48_MODE:
; AND #3C
; OUT (SLOT0),A
; INC A
; OUT (SLOT1),A
; INC A
; OUT (SLOT2),A
; INC A
; LD D,A
; LD BC,#1FFD
; XOR A
; OUT (C),A
; LD B,#7F
; OUT (C),A
; LD A,D
; OUT (SLOT3),A
; JR INIT_VIDEO_REG
;
;
; PENTAGON_128_MODE:
; LD D,8
; AND #38
; JR ALL_MODE
SCORPION_256_MODE:
LD D,16
AND #30 ; ¤® 4-å ᯥªâà㬮¢
ALL_MODE:
OUT (SLOT0),A
XOR 5 ; [ ] free zx pages!
OUT (SLOT1),A
XOR 7 ; [ ] free zx pages!
OUT (SLOT2),A
OR #0F ; [ ] free zx pages!
LD E,A
.loop: DEC D
LD A,D
RLCA
AND #10
LD BC,#1FFD
OUT (C),A
LD A,D
AND 7
OR #40
LD B,#7F
OUT (C),A
LD A,E
OUT (SLOT3),A
DEC E
DEC D
INC D
JR NZ,.loop
INIT_VIDEO_REG:
XOR A
OUT (RGADR),A ; ॣ¨áâà ¢¨¤¥®  ¤à¥á 
OUT (RGMOD),A ; ॣ¨áâà ¬®¤ë
; OUT (RGSCR),A ; ॣ¨áâà íªà ­ 
;!TEST
; Restore old Spectrum Screen
;; LD HL,#4000
;; LD DE,#4000
;; LD BC,#1B00
;; LDIR
; EX AF,AF'
; BIT 6,A
; JR NZ,NO_SCREEN_ALT
; EX AF,AF'
; LD A,7 ; ᥤ쬠ï íªà ­­ ï áâà ­¨æ 
; LD BC,#7FFD
; OUT (C),A
; Restore old Spectrum Screen 2
;; LD HL,#C000
;; LD DE,#C000
;; LD BC,#1B00
;; LDIR
; XOR A
; LD BC,#7FFD
; OUT (C),A
;
EX AF,AF'
NO_SCREEN_ALT:
AND A
JP (IY)
;-----------------------------------------------------------------------;
ELSE ;--------------------------------------------------------------------[|]
;-----------------------------------------------------------------------;
;!TODO § ¤¥©á⢮¢ âì
GOTO_SPEC: IN A,(SLOT3)
@ -320,7 +540,7 @@ GOTO_SPEC: IN A,(SLOT3)
LD A,SYS_PAGE
OUT (SLOT3),A
LD A,B
LD (SYS_PAGE.CONFIG_DE+1),A
LD (SYS_PAGE.CONFIG_DE.ZX_START),A
EX AF,AF'
OUT (SLOT3),A
@ -329,7 +549,7 @@ GOTO_SPEC: IN A,(SLOT3)
;NO_SETUP_1:
;!TODO ᤥ« âì  ªâ¨¢ æ¨î ¢¨­â  ¤«ï ¯ à ¬¥âà  ¨§ Setup
.ZX_MODE: LD A,#FE ; !HARDCODE ᤥ« âì ç¥à¥§ ¬¥âªã ACC-off Spectrum-MODE
.ZX_MODE: LD A,#FE ; !HARDCODE ᤥ« âì ç¥à¥§ ¬¥âªã ACC-off Spectrum-MODE
LD BC,Port_All_Mode
OUT (C),A
LD SP,#C000
@ -369,73 +589,6 @@ GOTO_SPEC: IN A,(SLOT3)
JP ZX_VARS.PRINTER_BUFFER
;-----------------------------------------------------------------------;
;
;>$< >$< >$< >$< >$< >$< [ <20><EFBFBD>…Œ…™€…Œ€Ÿ އ“ ] >$< >$< >$< >$< >$< >$< ;
;--------[ <20>ணࠬ¬ , à §¬¥é ¥¬ ï á #5B00 ¤«ï § ¯ã᪠ Spectrum ]--------;
RES128_PROG:
DISP ZX_VARS.PRINTER_BUFFER ;#5B00
LD A,ROM.BIOS
OUT (SYS_PORT.RAM),A ; ‚®§¢à â ¢ 128k ROM
LD C,SLOT3
IN B,(C)
LD A,SYS_PAGE
OUT (SLOT3),A
LD DE,(SYS_PAGE.CONFIG_DE)
XOR A
LD (SYS_PAGE.CONFIG_DE+1),A
OUT (C),B
LD BC,#1FFD
OUT (C),A ; Scorp ¯®àâ
LD B,#7F
OUT (C),A ; 128 ¯®àâ
LD A,E ; ãáâ ­®¢ª  ª®­ä¨£ãà æ¨¨ ¨ ०¨¬  TURBO
OUT (SYS_PORT.RAM),A ; CONFIG_SET
INC D
DEC D
; 0 ‚•Ž„ BASIC-128
JP Z,0
; 1 ‚•Ž„ BASIC-48
LD A,#10
OUT (C),A
DEC D
JP Z,0
; 2 ‚•Ž„ TR-DOS
LD HL,0
PUSH HL
DEC D
JP Z,#3D29
; 3 ‚•Ž„ EXPANSION
;!TODO ¯®ª  ­¥ à ¡®â ¥â. Page #45, BIOS (ZX_EXP) #E0
XOR A
OUT (C),A
LD A,#02
LD B,#1F
OUT (C),A
DEC D
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
; 4 ‚•Ž„ TR-DOS á § ªàëâ묨 128-¬¨ ¯®àâ ¬¨
JP Z,#3D29
; 5 ‚•Ž„ BASIC-48 á § ªàëâ묨 128-¬¨ ¯®àâ ¬¨
JP 0
ENT
.Size EQU $-RES128_PROG
;-----------------------------------------------------------------------;
;-----------------------------------------------------------------------;
;*****************************************
@ -489,7 +642,7 @@ INIT_PAGES:
SCORPION_256_MODE:
LD D,16
AND #30 ; ¤® 4-å ᯥªâà㬮¢
AND #30 ; ¤® 4-å ᯥªâà㬮¢
ALL_MODE:
OUT (SLOT0),A
@ -524,9 +677,9 @@ ALL_MODE:
INIT_VIDEO_REG:
XOR A
OUT (RGADR),A ; ॣ¨áâà ¢¨¤¥®  ¤à¥á 
OUT (RGMOD),A ; ॣ¨áâà ¬®¤ë
; OUT (RGSCR),A ; ॣ¨áâà íªà ­ 
OUT (RGADR),A ; ॣ¨áâà ¢¨¤¥®  ¤à¥á 
OUT (RGMOD),A ; ॣ¨áâà ¬®¤ë
; OUT (RGSCR),A ; ॣ¨áâà íªà ­ 
;!TEST
; Restore old Spectrum Screen
@ -541,7 +694,7 @@ INIT_VIDEO_REG:
; EX AF,AF'
; LD A,7 ; ᥤ쬠ï íªà ­­ ï áâà ­¨æ 
; LD A,7 ; ᥤ쬠ï íªà ­­ ï áâà ­¨æ 
; LD BC,#7FFD
; OUT (C),A
@ -561,6 +714,74 @@ NO_SCREEN_ALT:
AND A
JP (IX)
;-----------------------------------------------------------------------;
ENDIF ;--------------------------------------------------------------------[^]
;
;>$< >$< >$< >$< >$< >$< [ <20><EFBFBD>…Œ…™€…Œ€Ÿ އ“ ] >$< >$< >$< >$< >$< >$< ;
;--------[ <20>ணࠬ¬ , à §¬¥é ¥¬ ï á #5B00 ¤«ï § ¯ã᪠ Spectrum ]--------;
RES128_PROG:
DISP ZX_VARS.PRINTER_BUFFER ;#5B00
LD A,ROM.BIOS
OUT (SYS_PORT.RAM),A ; ‚®§¢à â ¢ 128k ROM
LD C,SLOT3
IN B,(C)
LD A,SYS_PAGE
OUT (SLOT3),A
LD DE,(SYS_PAGE.CONFIG_DE)
XOR A
LD (SYS_PAGE.CONFIG_DE.ZX_START),A
OUT (C),B
LD BC,#1FFD
OUT (C),A ; Scorp ¯®àâ
LD B,#7F
OUT (C),A ; 128 ¯®àâ
LD A,E ; ãáâ ­®¢ª  ª®­ä¨£ãà æ¨¨ ¨ ०¨¬  TURBO
OUT (SYS_PORT.RAM),A ; CONFIG_SET
INC D
DEC D
; 0 ‚•Ž„ BASIC-128
JP Z,0
; 1 ‚•Ž„ BASIC-48
LD A,#10
OUT (C),A
DEC D
JP Z,0
; 2 ‚•Ž„ TR-DOS
LD HL,0
PUSH HL
DEC D
JP Z,#3D29
; 3 ‚•Ž„ EXPANSION
;!TODO ¯®ª  ­¥ à ¡®â ¥â. Page #45, BIOS (ZX_EXP) #E0
XOR A
OUT (C),A
LD A,#02
LD B,#1F
OUT (C),A
DEC D
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
; 4 ‚•Ž„ TR-DOS á § ªàëâ묨 128-¬¨ ¯®àâ ¬¨
JP Z,#3D29
; 5 ‚•Ž„ BASIC-48 á § ªàëâ묨 128-¬¨ ¯®àâ ¬¨
JP 0
ENT
.Size EQU $-RES128_PROG
;-----------------------------------------------------------------------;
;---------------------[ ‡€ƒ‹“˜Šˆ „‹Ÿ #41 <E28098><EFBFBD>ˆ]----------------------;
@ -581,7 +802,7 @@ PROG_NO_ROM:
DISP Spec_Page.no_zx_rom
DI
;
LD A,#FF
LD A,SHARED_PAGE
OUT (SLOT3),A
OUT (SLOT2),A
OUT (SLOT1),A

View File

@ -175,7 +175,11 @@ TASK_SWITCH:
; ; ¨ ¯®ª  ¯®ä¨£ à á¯à¥¤¥«¥­¨¥ ¯ ¬ïâ¨!
TASK_SET:
LD IX,TASK_RESTORE
IF FREE_ZX_PAGES
LD IY,TASK_RESTORE
ELSE
LD IX,TASK_RESTORE
ENDIF
LD A,C
EXX
JP INIT_PAGES ; ¯¥à¥ª«îç¨âì ¢á¥ áâà ­¨æë!