...
This commit is contained in:
parent
0ec6b77447
commit
36d209867e
@ -1 +1 @@
|
|||||||
Subproject commit b1851fc9f30652ff464f323a7f2873806bd51bfd
|
Subproject commit c3a5d38deff864c3b08dd129572a20428f9219f1
|
||||||
@ -632,7 +632,7 @@ POST_4_PAGES:
|
|||||||
LD I,A
|
LD I,A
|
||||||
LD A,B
|
LD A,B
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
LD A,0
|
XOR A
|
||||||
LD I,A
|
LD I,A
|
||||||
IN A,(SLOT3)
|
IN A,(SLOT3)
|
||||||
CP B
|
CP B
|
||||||
@ -664,7 +664,8 @@ POST_5_DATA_BUS:
|
|||||||
LD B,0
|
LD B,0
|
||||||
.loop: IN A,(0)
|
.loop: IN A,(0)
|
||||||
CP #FF
|
CP #FF
|
||||||
; JR NZ,.error ;!!!!! ¯®á¬®âà¥âì
|
;JR NZ,.error ;!!!!! ¯®á¬®âà¥âì
|
||||||
|
JR NZ,POST_5_ERROR
|
||||||
DJNZ .loop
|
DJNZ .loop
|
||||||
JR POST_5_OK
|
JR POST_5_OK
|
||||||
|
|
||||||
@ -694,7 +695,7 @@ POST_5_DATA_BUS:
|
|||||||
POST_5_OK:
|
POST_5_OK:
|
||||||
LD A,(TABLE_X.v5) ;rdlow-ok
|
LD A,(TABLE_X.v5) ;rdlow-ok
|
||||||
OUT (Z84.PIO.Port_A.Data),A ; ¢ë¢¥á⨠"5"
|
OUT (Z84.PIO.Port_A.Data),A ; ¢ë¢¥á⨠"5"
|
||||||
|
POST_5_ERROR:
|
||||||
; **********************************
|
; **********************************
|
||||||
; POST § ¢¥àè¥
|
; POST § ¢¥àè¥
|
||||||
ENDMODULE
|
ENDMODULE
|
||||||
@ -705,14 +706,14 @@ POST_5_OK:
|
|||||||
XOR A
|
XOR A
|
||||||
OUT (RGADR),A
|
OUT (RGADR),A
|
||||||
OUT (RGMOD),A
|
OUT (RGMOD),A
|
||||||
OUT (SLOT0),A ;!HARDCODE zx page number
|
OUT (SLOT0),A
|
||||||
; !TEST 20/08/2024
|
; [ ] 20/08/2024 ; [x] free zx pages!
|
||||||
; LD A,5 ;!HARDCODE zx page number
|
; LD A,5
|
||||||
; OUT (SLOT1),A
|
; OUT (SLOT1),A
|
||||||
; LD A,2 ;!HARDCODE zx page number
|
; LD A,2
|
||||||
; OUT (SLOT2),A
|
; OUT (SLOT2),A
|
||||||
OUT (SLOT2),A ;!HARDCODE zx page number
|
OUT (SLOT2),A ; ZERO_PAGE
|
||||||
DEC A ; LD A,#FF ;!HARDCODE zx page number
|
DEC A ; SHARED_PAGE
|
||||||
OUT (SLOT1),A
|
OUT (SLOT1),A
|
||||||
;
|
;
|
||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
@ -895,13 +896,20 @@ PrepareToZX: ;CALL init_zx_roms
|
|||||||
CP #10
|
CP #10
|
||||||
JR C,.loop
|
JR C,.loop
|
||||||
; ¢ë室 ¢ ०¨¬ zx spectrum
|
; ¢ë室 ¢ ०¨¬ zx spectrum
|
||||||
;!TODO § ¬¥¨âì ãáâ ®¢ªã ¨§ à ¬¡«®ª ; [ ] free zx pages!
|
.start_zx: XOR A
|
||||||
LD A,5
|
IF FREE_ZX_PAGES
|
||||||
OUT (SLOT1),A
|
JP GOTO_SPEC
|
||||||
LD A,2
|
ELSE ; [x] free zx pages!
|
||||||
OUT (SLOT2),A
|
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:
|
PORTS_INIT:
|
||||||
|
|||||||
@ -105,16 +105,16 @@ EMM.InitMem: PUSH BC
|
|||||||
;---------------------------------------------------------------------[]
|
;---------------------------------------------------------------------[]
|
||||||
RESERVED_PAGES:
|
RESERVED_PAGES:
|
||||||
; [x] Block #1 - ¬®¦® ®á¢®¡®¤¨âì ¯® ID 1
|
; [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
|
;!FIXIT áâà ¨æë 16..31 ¥ § १¥à¢¨à®¢ ë, ® ¨á¯®«ì§ãîâáï ¢ Pentagon 512
|
||||||
;
|
;
|
||||||
; í¬ã«ïâ®à <20>‡“ ;!FIXIT ROM-Emulator ᤥ« âì ¤¨ ¬¨ç¥áª¨¥ áâà ¨æë
|
; í¬ã«ïâ®à <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
|
DB #FF ; End of the block
|
||||||
;
|
;
|
||||||
;
|
;
|
||||||
;; Block #2 - ¥«ì§ï ®á¢®¡®¦¤ âì
|
;; 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 DCP_PAGE ; Ports map
|
||||||
DB Spec_Page ; Page for Spectrum mode
|
DB Spec_Page ; Page for Spectrum mode
|
||||||
; Screen pages
|
; Screen pages
|
||||||
@ -279,7 +279,7 @@ EMM.FreeMemRMD: CALL GET_RAMD_ST
|
|||||||
; ‚室: A - <20>€—€‹Ž –…<E28093>Ž—Šˆ
|
; ‚室: A - <20>€—€‹Ž –…<E28093>Ž—Šˆ
|
||||||
; <20>… <20>Ž<EFBFBD>’ˆ’œ DE!!!
|
; <20>… <20>Ž<EFBFBD>’ˆ’œ DE!!!
|
||||||
;EMM_FN3M:
|
;EMM_FN3M:
|
||||||
EMM.FreeMem: ; [ ] free zx pages! ⥯¥àì ¥«ì§ï ®á¢®¡®¤¨âì áâà ¨æã #FF
|
EMM.FreeMem: ; [x] free zx pages! ⥯¥àì ¥«ì§ï ®á¢®¡®¤¨âì áâà ¨æã #FF
|
||||||
SCF
|
SCF
|
||||||
INC A
|
INC A
|
||||||
RET Z
|
RET Z
|
||||||
|
|||||||
@ -399,11 +399,16 @@ REINIT: DEC B
|
|||||||
OUT (C),A
|
OUT (C),A
|
||||||
OUT (RGADR),A
|
OUT (RGADR),A
|
||||||
OUT (RGMOD),A
|
OUT (RGMOD),A
|
||||||
OUT (SLOT0),A ;!HARDCODE zx page number
|
OUT (SLOT0),A
|
||||||
LD A,5 ;!HARDCODE zx page number
|
; [ ] 16/09/24 free zx pages!
|
||||||
OUT (SLOT1),A
|
;LD A,5
|
||||||
LD A,2 ;!HARDCODE zx page number
|
;OUT (SLOT1),A
|
||||||
|
;LD A,2
|
||||||
|
;OUT (SLOT2),A
|
||||||
OUT (SLOT2),A
|
OUT (SLOT2),A
|
||||||
|
DEC A
|
||||||
|
OUT (SLOT1),A
|
||||||
|
;
|
||||||
LD A,DCP_PAGE
|
LD A,DCP_PAGE
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
JP 0 ;Restart
|
JP 0 ;Restart
|
||||||
|
|||||||
@ -212,8 +212,6 @@ INIT_SYS_ALL:
|
|||||||
XOR A
|
XOR A
|
||||||
LD (SYS_PAGE.INT_ID - #4000),A
|
LD (SYS_PAGE.INT_ID - #4000),A
|
||||||
;
|
;
|
||||||
|
|
||||||
;!TODO çâ® § ¯¥à¥¬¥ë¥?
|
|
||||||
LD HL,SYS_PAGE.DISK_TYPE - #4000
|
LD HL,SYS_PAGE.DISK_TYPE - #4000
|
||||||
LD (HL),DRIVE_CODES.TRDOS.FDD ; FDD A
|
LD (HL),DRIVE_CODES.TRDOS.FDD ; FDD A
|
||||||
INC HL
|
INC HL
|
||||||
@ -223,13 +221,13 @@ INIT_SYS_ALL:
|
|||||||
INC HL
|
INC HL
|
||||||
LD (HL),DRIVE_CODES.TRDOS.HDD
|
LD (HL),DRIVE_CODES.TRDOS.HDD
|
||||||
INC HL
|
INC HL
|
||||||
LD (HL),0 ; SYS_PAGE.COPY_SLOT0
|
LD (HL),ZERO_PAGE ; [x] free zx pages! ; SYS_PAGE.COPY_SLOT0, ¡ë«® 0
|
||||||
INC HL
|
INC HL
|
||||||
LD (HL),5 ; SYS_PAGE.COPY_SLOT1
|
LD (HL),SHARED_PAGE; [x] free zx pages! ; SYS_PAGE.COPY_SLOT1, ¡ë«® 5
|
||||||
INC HL
|
INC HL
|
||||||
LD (HL),2 ; SYS_PAGE.COPY_SLOT2
|
LD (HL),ZERO_PAGE ; [x] free zx pages! ; SYS_PAGE.COPY_SLOT2, ¡ë«® 2
|
||||||
INC HL
|
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 A,9
|
||||||
LD (SYS_PAGE.MSD_SECS - #4000),A
|
LD (SYS_PAGE.MSD_SECS - #4000),A
|
||||||
@ -252,6 +250,9 @@ INIT_SYS_ALL:
|
|||||||
XOR A
|
XOR A
|
||||||
LD (SYS_PAGE.CURRENT_RAM_DRV - #4000),A
|
LD (SYS_PAGE.CURRENT_RAM_DRV - #4000),A
|
||||||
;
|
;
|
||||||
|
; [ ] free zx pages!
|
||||||
|
;;; init task's
|
||||||
|
;
|
||||||
LD DE,ZG_ADDRESS ; ¤à¥á § ª®£¥¥à â®à
|
LD DE,ZG_ADDRESS ; ¤à¥á § ª®£¥¥à â®à
|
||||||
LD (SYS_PAGE.WIN_ZG - #4000),DE
|
LD (SYS_PAGE.WIN_ZG - #4000),DE
|
||||||
;
|
;
|
||||||
|
|||||||
@ -54,12 +54,7 @@
|
|||||||
;¥á«¨ áâíª å®¤¨âáï ¢ âà¥â쥬 á«®â¥, â® ¢ë§®¢ á ¢ëª«îç¥ë¬¨ ¯à¥àë¢ ¨ï¬¨
|
;¥á«¨ áâíª å®¤¨âáï ¢ âà¥â쥬 á«®â¥, â® ¢ë§®¢ á ¢ëª«îç¥ë¬¨ ¯à¥àë¢ ¨ï¬¨
|
||||||
FN_ENTRANCE: ;!TODO A - TASK NUMBER
|
FN_ENTRANCE: ;!TODO A - TASK NUMBER
|
||||||
EXX
|
EXX
|
||||||
GET_ZX_TASK_DATA_OFFSET
|
CALL GET_ZX_TASK_DATA
|
||||||
ADD A,_#ZX_TASK_DATA
|
|
||||||
LD C,A
|
|
||||||
LD B,0
|
|
||||||
LD IX,SYS_PAGE.ZX_TASK.CURRENT
|
|
||||||
ADD IX,BC ; ¤ ë¥ ®¢®© § ¤ ç¨
|
|
||||||
;
|
;
|
||||||
LD C,SLOT3
|
LD C,SLOT3
|
||||||
IN B,(C)
|
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
|
;‚室: A - TASK NUMBER
|
||||||
@ -226,7 +233,7 @@ SET_7FFD: LD A,(HL)
|
|||||||
|
|
||||||
;-----------------------------------------------------------------------;
|
;-----------------------------------------------------------------------;
|
||||||
;‚믮«ï¥âáï ¤«ï ¢ë¤¥«¥¨ï âàñå áâà ¨æ Ž‡“ 48k
|
;‚믮«ï¥âáï ¤«ï ¢ë¤¥«¥¨ï âàñå áâà ¨æ Ž‡“ 48k
|
||||||
GET_48k_MEM: LD D,3
|
GET_48k_MEM: LD D,3+1
|
||||||
JR GET_XXX_MEM
|
JR GET_XXX_MEM
|
||||||
;‚믮«ï¥âáï ¤«ï ¨¨â 3 áâà ¨æ Ž‡“ 48k ¨ 29 áâà ¨æ Ž‡“ Pent512k
|
;‚믮«ï¥âáï ¤«ï ¨¨â 3 áâà ¨æ Ž‡“ 48k ¨ 29 áâà ¨æ Ž‡“ Pent512k
|
||||||
GET_512k_MEM: LD D,3+29
|
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 § ¤¥©á⢮¢ âì
|
;!TODO § ¤¥©á⢮¢ âì
|
||||||
GOTO_SPEC: IN A,(SLOT3)
|
GOTO_SPEC: IN A,(SLOT3)
|
||||||
@ -320,7 +540,7 @@ GOTO_SPEC: IN A,(SLOT3)
|
|||||||
LD A,SYS_PAGE
|
LD A,SYS_PAGE
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
LD A,B
|
LD A,B
|
||||||
LD (SYS_PAGE.CONFIG_DE+1),A
|
LD (SYS_PAGE.CONFIG_DE.ZX_START),A
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
|
|
||||||
@ -369,73 +589,6 @@ GOTO_SPEC: IN A,(SLOT3)
|
|||||||
JP ZX_VARS.PRINTER_BUFFER
|
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
|
|
||||||
;-----------------------------------------------------------------------;
|
|
||||||
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------;
|
;-----------------------------------------------------------------------;
|
||||||
;*****************************************
|
;*****************************************
|
||||||
@ -561,6 +714,74 @@ NO_SCREEN_ALT:
|
|||||||
AND A
|
AND A
|
||||||
JP (IX)
|
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>ˆ–›]----------------------;
|
;---------------------[ ‡€ƒ‹“˜Šˆ „‹Ÿ #41 ‘’<E28098>€<EFBFBD>ˆ–›]----------------------;
|
||||||
@ -581,7 +802,7 @@ PROG_NO_ROM:
|
|||||||
DISP Spec_Page.no_zx_rom
|
DISP Spec_Page.no_zx_rom
|
||||||
DI
|
DI
|
||||||
;
|
;
|
||||||
LD A,#FF
|
LD A,SHARED_PAGE
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
OUT (SLOT2),A
|
OUT (SLOT2),A
|
||||||
OUT (SLOT1),A
|
OUT (SLOT1),A
|
||||||
|
|||||||
@ -175,7 +175,11 @@ TASK_SWITCH:
|
|||||||
; ; ¨ ¯®ª ¯®ä¨£ à á¯à¥¤¥«¥¨¥ ¯ ¬ïâ¨!
|
; ; ¨ ¯®ª ¯®ä¨£ à á¯à¥¤¥«¥¨¥ ¯ ¬ïâ¨!
|
||||||
|
|
||||||
TASK_SET:
|
TASK_SET:
|
||||||
|
IF FREE_ZX_PAGES
|
||||||
|
LD IY,TASK_RESTORE
|
||||||
|
ELSE
|
||||||
LD IX,TASK_RESTORE
|
LD IX,TASK_RESTORE
|
||||||
|
ENDIF
|
||||||
LD A,C
|
LD A,C
|
||||||
EXX
|
EXX
|
||||||
JP INIT_PAGES ; ¯¥à¥ª«îç¨âì ¢á¥ áâà ¨æë!
|
JP INIT_PAGES ; ¯¥à¥ª«îç¨âì ¢á¥ áâà ¨æë!
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user