838 lines
20 KiB
NASM
838 lines
20 KiB
NASM
; "MENU PROGRAMS."
|
||
;*********************************
|
||
; FOR INCLUDE !!!
|
||
;*********************************
|
||
; Ž¡á«ã¦¨¢ ¨¥ Œ…<C592>ž
|
||
; HL - ¤à¥á â ¡«¨æë ¯à®£à ¬¬
|
||
; A - ®¬¥à ¢ â ¡«¨æ¥
|
||
; ¥á«¨ A=-1, â® ¢®§¢à â,
|
||
; ¨ ç¥ ¢ë¯®«¥¨¥
|
||
;*****************************
|
||
EXEC_PNT:
|
||
INC A
|
||
RET Z
|
||
;!FIXIT ¯®ç¥¬ã ¥ â ª?
|
||
; DEC A
|
||
; JR Z,EXEC_HL
|
||
; LD D,0
|
||
; LD E,A
|
||
; XOR A
|
||
; ADC HL,DE
|
||
; ADC HL,DE
|
||
;
|
||
EXEC_PNT_LOOP:
|
||
DEC A
|
||
JR Z,EXEC_HL
|
||
INC HL
|
||
INC HL
|
||
JR EXEC_PNT_LOOP
|
||
EXEC_HL:
|
||
LD E,(HL)
|
||
INC HL
|
||
LD D,(HL)
|
||
INC HL
|
||
EX DE,HL
|
||
JP (HL)
|
||
RET_FROM_M:
|
||
POP HL
|
||
RET
|
||
|
||
;****************************************
|
||
; <20>€<EFBFBD>Ž’€ ‘ MENU_128
|
||
;****************************************
|
||
; ‚•Ž„: DE - ¤à¥á ¬¥î
|
||
; BC - ¤«¨ ¬¥î
|
||
; ‚›•Ž„: A - ¢ë¡à ë© ¯ãªâ
|
||
;****************************************
|
||
RUN_MENU:
|
||
PUSH IX
|
||
PUSH DE ; DE - MENU
|
||
PUSH BC ; BC - len_menu
|
||
|
||
LD A,(DE)
|
||
DEC A ; ç¨á«® CMD
|
||
CP 9 ; !HARDCODE ¬ ª¨á¬ «ì®¥ ç¨á«® ¯ãªâ®¢ ¬¥î
|
||
JR C,RUN_M_1
|
||
RUN_MN_ERR:
|
||
POP BC
|
||
POP DE
|
||
LD A,#FF ; ¢¥àãâìáï á ®¬¥à®¬ 255 - ®è¨¡ª
|
||
POP IX
|
||
RET
|
||
RUN_M_1:
|
||
LD A,(ZX_VARS.PROG.SWAP_ROM)
|
||
CP #F5 ; áà ¢¨âì € á ®¯ª®¤®¬ PUSH AF
|
||
JR NZ,RUN_MN_ERR
|
||
|
||
|
||
LD HL,LEN_P_M
|
||
ADD HL,BC ; HL - ã¦ ï ¤«¨ ¯ ¬ïâ¨
|
||
LD B,H ; HL -> BC
|
||
LD C,L
|
||
LD HL,(ZX_VARS.WORK_SPACE) ; HL - ç «® à ¡ ®¡«
|
||
|
||
PUSH BC
|
||
PUSH HL
|
||
|
||
CALL C_1655 ; ¯®«ãç¨âì à ¡®çãî ¯ ¬ïâì
|
||
|
||
POP DE
|
||
PUSH DE ; ç «® à ¡ ®¡«
|
||
|
||
LD BC,LEN_P_M ; ¤«¨ ¯à®£à ¬¬ë ¬¥î
|
||
LD HL,MENU_128 ; á ¬ ¯à®£à ¬¬
|
||
LDIR ; ¯à®£à ¬¬ ¯¥à¥¬¥é¥ . DE - ¬¥áâ® ¤«ï MENU
|
||
POP BC
|
||
PUSH BC ; ç «® ¯à®£à ¬¬ë
|
||
|
||
PUSH DE ; á®åà ¨âì ¬¥áâ® ¤«ï MENU
|
||
LD DE,MN_128_S ; ¤ ë¥ ¤«ï shifter
|
||
CALL SHIFTER ; ¨§¬¥¨âì ¤ ë¥ ¢ ᮮ⢥âá⢨¨ á ¯®«®¦¥¨¥¬ ¢ MEM
|
||
POP DE ; ¢¥àãâì ¬¥áâ® ¤«ï MENU
|
||
|
||
POP HL ; ç «® ¯à®£à ¬¬ë
|
||
POP IX ; ¤«¨ ¤ ëå
|
||
POP BC ; ¤«¨ ¬¥î
|
||
EX (SP),HL ; HL - ¬¥î
|
||
LDIR ; ¯¥à¥¬¥áâ¨âì ¤ ë¥ MENU
|
||
|
||
POP HL ; ¤à¥á ¯à®£à ¬¬ë MENU
|
||
PUSH HL
|
||
PUSH IX ; ¤«¨ à ¡. ®¡«
|
||
CALL JP_HL ; ¢ë§®¢ ¯à®£à ¬¬ë MENU
|
||
POP BC ; ¢¥àãâì ¤«¨ã à ¡ ®¡«
|
||
POP HL ; ¨ ç « ¯à®£à ¬¬ë
|
||
|
||
PUSH AF ; á®åà ¨âì ®¬¥à ¢ë¡®à
|
||
CALL C_19E8 ; ®á¢®¡®¤¨âì ¯ ¬ïâì !!
|
||
POP AF ; ¢¥àãâì ®¬¥à ¢ë¡®à
|
||
POP IX
|
||
RET ; ¢®§¢à â ¨§ ¯à®£à ¬¬ë RUN_MENU
|
||
JP_HL: JP (HL)
|
||
;**************************************
|
||
; 128k MENU
|
||
;**************************************
|
||
;!HARDCODE
|
||
MENU_PROG EQU #25B9 ; #25B9 in sp_128.asm
|
||
;SWAP_ROM EQU #5B00
|
||
NEW_SP EQU #1F45 ; L1F45: in sp_128.asm
|
||
RET_SP EQU #1F20 ; L1F20: in sp_128.asm
|
||
|
||
;**************************************
|
||
; <20>à®£à ¬¬ ¢ë§®¢ MENU_128 ¨§ އ“.
|
||
;**************************************
|
||
MN_128_S:
|
||
DB SH_1 - MENU_128+1
|
||
DB SH_2 - MENU_128+1
|
||
DB SH_3 - MENU_128+1
|
||
DB SH_4 - MENU_128+1
|
||
DB SH_5 - MENU_128
|
||
DB SH_6 - MENU_128
|
||
DB SH_7 - MENU_128
|
||
DB SH_8 - MENU_128
|
||
DB SH_9 - MENU_128
|
||
DB SH_A - MENU_128
|
||
DB SH_B - MENU_128
|
||
DB SH_C - MENU_128
|
||
DB 0
|
||
;**************************************
|
||
; <20>â ¯à®£à ¬¬ ¯¥à¥¬¥é ¥âáï ¢ ®§ã
|
||
;**************************************
|
||
MENU_128:
|
||
XOR A
|
||
OUT (SYS_PORT.RAM),A
|
||
CALL ZX_VARS.PROG.SWAP_ROM
|
||
CALL NEW_SP
|
||
|
||
SH_1: LD DE,MENU_DAT - MENU_128
|
||
LD HL,ZX_VARS.MENU_TBL.JUMP
|
||
LD BC,4
|
||
LDIR
|
||
|
||
SH_2: LD HL,MENU_128_E - MENU_128
|
||
LD (ZX_VARS.MENU_TBL.JUMP),HL
|
||
SH_3: LD HL,MENU_128_E2 - MENU_128
|
||
LD (ZX_VARS.MENU_TBL.TEXT),HL
|
||
JP MENU_PROG
|
||
|
||
RET_M EQU $-MENU_128
|
||
SH_4: LD HL,MENU_DAT - MENU_128
|
||
LD DE,ZX_VARS.MENU_TBL.JUMP
|
||
LD BC,4
|
||
LDIR
|
||
|
||
CALL RET_SP
|
||
CALL ZX_VARS.PROG.SWAP_ROM
|
||
EX AF,AF'
|
||
;LD A,0
|
||
;OUT (CNF_PORT),A
|
||
LD A,SYS_PORT.EXTENSION
|
||
OUT (SYS_PORT.ROM),A ;!!!!! ¢¥àá¨ï ¤«ï <20>‡“
|
||
EX AF,AF'
|
||
RET
|
||
MENU_DAT:
|
||
DW 0,0
|
||
MENU_128_E:
|
||
DB 8
|
||
DB 0
|
||
SH_5: DW RET_M
|
||
DB 1
|
||
SH_6: DW RET_M
|
||
DB 2
|
||
SH_7: DW RET_M
|
||
DB 3
|
||
SH_8: DW RET_M
|
||
DB 4
|
||
SH_9: DW RET_M
|
||
DB 5
|
||
SH_A: DW RET_M
|
||
DB 6
|
||
SH_B: DW RET_M
|
||
DB 7
|
||
SH_C: DW RET_M
|
||
MENU_128_E2:
|
||
|
||
LEN_P_M EQU $-MENU_128
|
||
|
||
;**************************************
|
||
; RST 30 - ¯®«ã票¥ BC SPACES á ¤à¥á HL
|
||
; #19E8 - ®á¢®¡®¦¤¥¨¥ BC spaces á ¤à¥á HL
|
||
; HL - à ¡. ï祩ª
|
||
; BC - ¤à¥á ¯à®£à ¬¬ë
|
||
; DE - ¤à¥á ¤ ëå ¤«ï ¯¥à¥¬¥é¥¨ï
|
||
SHIFTER:
|
||
LD A,(DE) ; (DE) - SHIFT IN PROG
|
||
AND A
|
||
RET Z
|
||
INC DE
|
||
LD L,A
|
||
LD H,0
|
||
|
||
ADD HL,BC ; HL - ADRESS FOR SHIFT
|
||
LD A,(HL) ; (HL)=(HL)+BC
|
||
ADD A,C
|
||
LD (HL),A
|
||
INC HL
|
||
LD A,(HL)
|
||
ADC A,B
|
||
LD (HL),A
|
||
JR SHIFTER
|
||
|
||
;*******************************************
|
||
; Œ…<C592>ž : ¡ ©â 1 - ¤«ï १ã«ìâ â
|
||
; ¡ ©â 2 - ç¨á«® ¯ãªâ®¢ +1
|
||
; §¢ ¨¥ ¬¥î, ª®¤ 0FFh ( COPY )
|
||
; ¯ãªâë ¬¥î ®ª®ç ¨¥ ¡ ©â®¬ á
|
||
; ãáâ, 7-¬ ¡¨â®¬ + ¯ãáâ ï áâப !!
|
||
;*******************************************
|
||
BASIC_MENU:
|
||
; LD A,(HL)
|
||
; CP 'S'
|
||
; JP Z,SET_SYSTEM
|
||
|
||
LD DE,(ZX_VARS.CH_ADR)
|
||
PUSH DE
|
||
LD (ZX_VARS.CH_ADR),HL
|
||
CALL_48X #1C8C ; SYMBOL VAR
|
||
CALL_48X #2BF1 ; input txt !!!
|
||
; DE - adr
|
||
; BC - len
|
||
PUSH DE
|
||
PUSH BC
|
||
INC DE
|
||
CALL TST_M
|
||
JR C,NO_EXE_M
|
||
CALL RUN_MENU
|
||
LD (IY+0),255
|
||
NO_EXE_M:
|
||
POP BC
|
||
POP DE
|
||
LD (DE),A
|
||
POP HL
|
||
LD (ZX_VARS.CH_ADR),HL
|
||
JP SW_ROM
|
||
TST_M:
|
||
PUSH DE
|
||
PUSH BC
|
||
EX DE,HL
|
||
LD D,(HL)
|
||
INC D
|
||
LD A,255
|
||
CPIR
|
||
JR NZ,ERR_TST_M
|
||
LOOP_TST_M:
|
||
LD A,B
|
||
OR C
|
||
JR Z,ERR_TST_M
|
||
|
||
BIT 7,(HL)
|
||
INC HL
|
||
DEC BC
|
||
JR Z,LOOP_TST_M
|
||
DEC D
|
||
JR NZ,LOOP_TST_M
|
||
POP BC
|
||
POP DE
|
||
AND A
|
||
RET
|
||
|
||
ERR_TST_M:
|
||
POP BC
|
||
POP DE
|
||
LD A,255
|
||
SCF
|
||
RET
|
||
|
||
;**************************************
|
||
|
||
CALL_DOS_MOVE:
|
||
LD HL,DOS_PROG
|
||
LD DE,DOS_PROG.Exec
|
||
LD BC,DOS_PROG.Size
|
||
LDIR
|
||
RET
|
||
;
|
||
; HL - ¤à¥á ª®¬ ¤ë, BC - ¤«¨ ª®¬ ¤ë
|
||
CALL_DOS1:
|
||
LD C,(HL)
|
||
INC HL
|
||
LD B,0
|
||
LD DE,(ZX_VARS.E_LINE)
|
||
LD (ZX_VARS.CH_ADR),DE
|
||
LDIR
|
||
LD (ZX_VARS.WORK_SPACE),DE
|
||
LD (ZX_VARS.STK_BOT),DE
|
||
LD (ZX_VARS.STK_END),DE
|
||
CALL CALL_DOS_MOVE
|
||
JP DOS_PROG.Exec
|
||
|
||
DOS_PROG:
|
||
DISP #5C00 - DOS_PROG.Size ;!HARDCODE
|
||
//DOS_PROG:
|
||
.Exec: PUSH AF
|
||
XOR A
|
||
OUT (SYS_PORT.RAM),A
|
||
POP AF
|
||
//DOS_PROG_A+1:
|
||
.Patch+2: CALL #3D03 ;!HARDCODE
|
||
PUSH AF
|
||
;!FIXIT ᤥ« âì ç¥à¥§ ãá«®¢¨¥ ª®¬¯¨«ï樨 ZX_ROM_BIOS
|
||
//LD A,0
|
||
//OUT (CNF_PORT),A
|
||
LD A,SYS_PORT.EXTENSION
|
||
OUT (SYS_PORT.ROM),A ;!!!!! ¢¥àá¨ï ¤«ï <20>‡“
|
||
POP AF
|
||
RET
|
||
//DOS_PROG_LEN
|
||
.Size EQU $ - .Exec
|
||
ENT
|
||
|
||
;????? ¢à®¤¥, ¥ ¨á¯®«ì§ãîâáï
|
||
CONT_PROG:
|
||
LD HL,#1AFD ;!HARDCODE COM_LN:
|
||
PUSH HL
|
||
LD HL,#5B00 ;!HARDCODE
|
||
PUSH HL
|
||
LD DE,ZX_VARS.FLG_INPUT
|
||
LD BC,1
|
||
LD A,#E8 ;!HARDCODE
|
||
LD (DE),A
|
||
JP SW_ROM
|
||
CALL_DOS:
|
||
PUSH HL
|
||
PUSH DE
|
||
PUSH BC
|
||
PUSH AF
|
||
CALL CALL_DOS_MOVE
|
||
LD A,#13 ;!HARDCODE #13 ¨§ AUTO_1303
|
||
LD (DOS_PROG.Patch),A
|
||
POP AF
|
||
POP BC
|
||
POP DE
|
||
POP HL
|
||
JP DOS_PROG.Exec
|
||
;
|
||
;
|
||
|
||
;=======================================================================;
|
||
;=======================================================================;
|
||
;=======================================================================;
|
||
SERVICE:
|
||
//LD HL,SR_TAB
|
||
LD DE,SR_MENU
|
||
LD BC,SR_MENU.Size
|
||
//PUSH HL
|
||
CALL RUN_MENU ;09f3
|
||
LD HL,SR_TAB
|
||
//POP HL
|
||
CALL EXEC_PNT
|
||
JR SERVICE
|
||
|
||
SR_TAB: DW UTILIT
|
||
DW GOTO_TRDOS.m128
|
||
DW GOTO_TRDOS.m48
|
||
DW TURBO_OFF
|
||
DW TURBO_ON
|
||
DW CLEAR_RAM
|
||
DW RET_FROM_M
|
||
|
||
; DC - every last character of a string will have bit 7 set
|
||
SR_MENU:
|
||
BYTE 8 ; ª®«¨ç¥á⢮ ¯ãªâ®¢
|
||
BYTE 'Options ',#FF ; § £®«®¢®ª ¬¥î
|
||
DC 'RUN disk.trd'
|
||
DC '128 TR-DOS'
|
||
DC '48 TR-DOS'
|
||
DC 'TURBO OFF '
|
||
DC 'TURBO ON '
|
||
DC 'Clear RAM'
|
||
DC 'RETURN'
|
||
DC " " ; ¬ àª¥à ª®æ
|
||
.Size EQU $-SR_MENU
|
||
|
||
;*****************************
|
||
|
||
;SR_48R:
|
||
GOTO_TRDOS:
|
||
.m128: LD A,#10
|
||
JR .RUN
|
||
;SR_48:
|
||
.m48: LD A,#30 ; ‘⮯®à PORT_128 !!!
|
||
;SR_48A:
|
||
.RUN: LD BC,#7FFD
|
||
OUT (C),A
|
||
LD BC,0 ; <20>€ 0 !!
|
||
PUSH BC
|
||
LD BC,#3D2F ; ‚ DOS !
|
||
PUSH BC
|
||
JP SW_ROM
|
||
|
||
;*******************************
|
||
TURBO_OFF:
|
||
LD A,BIOS.FN_TURBO.OFF
|
||
LD C,BIOS.FN_TURBO
|
||
JP_to_BIOS
|
||
TURBO_ON:
|
||
LD A,BIOS.FN_TURBO.ON
|
||
LD C,BIOS.FN_TURBO
|
||
JP_to_BIOS
|
||
|
||
;*******************************
|
||
|
||
CLEAR_RAM:
|
||
DI
|
||
; [ ] free zx pages!
|
||
LD BC,BIOS.REINIT.FREE_NO_ZX_MEM
|
||
;LD C,BIOS.FullInit
|
||
;
|
||
RST_to_BIOS
|
||
; ¯à¨ ®ç¨á⪥ ¯ ¬ï⨠¨§ ¬¥î ᯥªâà㬠¢®§¢à â ¢ DSS ¯® CAD
|
||
; ¡ã¤¥â ®¯ áë¬ (RAM Blocks ®á¢®¡®¤¨«¨áì),
|
||
; ¯®í⮬㠮⪫îç ¥¬ ¯¥à¥å¢ â à¥á¥â .
|
||
LD A,ACEX.RET_PORT
|
||
LD BC,BIOS.SET_PORTS
|
||
;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23
|
||
;CALL ToBIOS_3D13
|
||
RST_to_BIOS
|
||
;
|
||
EI
|
||
RET
|
||
|
||
;SR_CL_MEM:
|
||
; DI
|
||
; LD A,10H
|
||
;SR_CL_R2:
|
||
; LD BC,1FFDH
|
||
; OUT (C),A
|
||
; EX AF,AF'
|
||
; XOR A
|
||
;SR_CL_R1:
|
||
; LD BC,7FFDH
|
||
; OUT (C),A
|
||
; LD HL,0C000H
|
||
; LD DE,0C001H
|
||
; LD BC,03FFFH
|
||
; LD (HL),L
|
||
; LDIR
|
||
; INC A
|
||
; CP 48H
|
||
; JR NZ,SR_CL_R1
|
||
; EX AF,AF'
|
||
; CP 0
|
||
; JP Z,BASIC_128 ; ¢ë室 á¡à®á BASIC 128
|
||
; LD A,0
|
||
; JR SR_CL_R2
|
||
|
||
;*****************************
|
||
; *** MENU Hardware ***
|
||
;*****************************
|
||
|
||
Hardware_Menu:
|
||
LD HL,Hardware_Menu_TAB
|
||
LD DE,Hardware_Menu_STR
|
||
LD BC,Hardware_Menu_STR.Size
|
||
PUSH HL
|
||
CALL RUN_MENU
|
||
POP HL
|
||
CALL EXEC_PNT
|
||
JR Hardware_Menu
|
||
|
||
Hardware_Menu_TAB:
|
||
; DW TR_DOS
|
||
; DW SP_DOS
|
||
DW SPRINTER_ZX
|
||
DW ZX_SPECTRUM_128
|
||
DW PENTAGON_128
|
||
DW SCORPION_256
|
||
DW PENTAGON_512
|
||
DW SPRINTER_reset ;SPRINTER_2X
|
||
DW RET_FROM_M
|
||
|
||
; DC - every last character of a string will have bit 7 set
|
||
Hardware_Menu_STR:
|
||
BYTE 8 ; ª®«¨ç¥á⢮ ¯ãªâ®¢
|
||
BYTE 'Hardware',#FF ; § £®«®¢®ª ¬¥î
|
||
DC 'Sprinter ZX '
|
||
DC 'ZX Spectrum'
|
||
DC 'Pentagon 128'
|
||
DC 'Scorpion 256'
|
||
DC 'Pentagon 512'
|
||
DC 'Restart '
|
||
DC 'RETURN'
|
||
DC " " ; ¬ àª¥à ª®æ
|
||
.Size EQU $ - Hardware_Menu_STR
|
||
|
||
;******************************
|
||
;SP_DOS:
|
||
; LD B,0E2H
|
||
; LD A,0E1H
|
||
; JR TR_DOS1
|
||
;TR_DOS:
|
||
; LD B,0EAH
|
||
; LD A,0E1H
|
||
;TR_DOS1:
|
||
; CALL DOS_ON
|
||
; CALL SET_ROM_PAGES
|
||
; CALL DOS_OFF
|
||
; RET
|
||
;******************************
|
||
|
||
|
||
;**************************************************
|
||
;Sprinter ZX
|
||
;[ ] free zx pages!
|
||
|
||
/*
|
||
|
||
LD H,A ; Block_ID.vRAM
|
||
;!TODO áâà ¨¢ âì ¢ BIOS zx mode
|
||
LD DE,256*0 + CNF_PORT.TURBO.ON + CNF_PORT.CNF_0
|
||
LD A,(SYS_PAGE.Block_ID.vROM)
|
||
LD L,A
|
||
LD B,#FE ; !HARDCODE Port All Mode data
|
||
LD A,%0000'0010
|
||
EX AF,AF'
|
||
XOR A
|
||
;
|
||
;POP HL ; <20>… 㦥. ¤à¥á ¢®§¢à â ¢ EXP ¨§ SETUP
|
||
LD A,ROM.EXTENSION
|
||
OUT (SYS_PORT.ROM),A
|
||
XOR A
|
||
JP GOTO_SPECTRUM.FN
|
||
|
||
; ‚室: D: 0 - BASIC 128, 1 - BASIC 48, 2 - TR-DOS 128,
|
||
; 3 - EXPANSION. C § ªàëâ묨 128-¬¨ ¯®àâ ¬¨:
|
||
; 4 - TR-DOS, 5 - BASIC 48
|
||
; E: § 票¥ ¤«ï SYS_PORT/CNF_PORT
|
||
; H: ;!TODO Block_ID.vROM
|
||
; L: Block_ID.vRAM
|
||
; A: TASK Number = 0
|
||
; B: Port All Mode
|
||
;A'[1..0]: 1 - int scorp, 2 - int pent, 3 - int ZX
|
||
; A'[2]: 0 - set default palette, 1 - don't change palette
|
||
; A'[7]: 0 - 320, 1 - 312 áâப
|
||
|
||
; 1 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 48k. 3 áâà ¨æë
|
||
; 2 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 128k. 2+6 áâà ¨æë
|
||
; 3 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 512k. 2+30 áâà ¨æë
|
||
; 4 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Scorpion 256k. 2+6+8 áâà ¨æë
|
||
|
||
*/
|
||
|
||
SPRINTER_ZX: ;DI
|
||
;LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON
|
||
;OUT (SYS_PORT.ROM),A
|
||
;LD SP,SYS_PAGE.SYS_SP
|
||
;LD A,SYS_PAGE
|
||
;OUT (SLOT3),A
|
||
;
|
||
LD A,BIOS.RST_CONF.SP97_1
|
||
LD DE,4*256 + CNF_PORT.TURBO.ON + CNF_PORT.CNF_0 ; !HARDCODE 4 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Scorpion 256k. 2+6+8 áâà ¨æë
|
||
LD BC,#FE*256 + %0000'0010 ; !HARDCODE Port All Mode data. int pent, set default palette, 320 áâப
|
||
JR PREPARE_TO_START_ZX
|
||
;
|
||
ZX_SPECTRUM_128:
|
||
;DI
|
||
;LD SP,SYS_PAGE.SYS_SP
|
||
;LD A,SYS_PAGE
|
||
;OUT (SLOT3),A
|
||
;
|
||
LD A,BIOS.RST_CONF.AY8910
|
||
LD DE,2*256 + CNF_PORT.CNF_1 + CNF_PORT.TURBO.ON + CNF_PORT.SCORP_RESET ; !HARDCODE 2 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 128
|
||
LD BC,#FA*256 + %1000'0011
|
||
JR PREPARE_TO_START_ZX
|
||
|
||
SCORPION_256: ;DI
|
||
;LD SP,SYS_PAGE.SYS_SP
|
||
;LD A,SYS_PAGE
|
||
;OUT (SLOT3),A
|
||
;
|
||
LD A,BIOS.RST_CONF.AY8910
|
||
LD DE,4*256 + CNF_PORT.TURBO.ON + CNF_PORT.CNF_1 ; !HARDCODE 4 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Scorpion 256k. 2+6+8 áâà ¨æë
|
||
LD BC,#FE*256 + %1000'0001
|
||
;JR PREPARE_TO_START_ZX
|
||
PREPARE_TO_START_ZX:
|
||
DI
|
||
EX AF,AF'
|
||
LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON
|
||
OUT (SYS_PORT.ROM),A
|
||
LD A,SYS_PAGE
|
||
OUT (SLOT3),A
|
||
EX AF,AF'
|
||
;
|
||
PUSH BC
|
||
PUSH DE
|
||
PUSH DE
|
||
;
|
||
LD C,A
|
||
RST_to_BIOS
|
||
;
|
||
POP DE
|
||
LD B,D
|
||
;LD C,BIOS.ZX_MEMORY_MANAGER
|
||
;RST_to_BIOS
|
||
CALL MANAGE_ZX_PAGES.FN_ENTRANCE.API
|
||
JR C,.loop_rst
|
||
;
|
||
POP DE
|
||
POP BC
|
||
;
|
||
LD D,0 ; !HARDCODE â®çª ¢å®¤ ¢ <20>‡“ ᯥªâàã¬
|
||
LD H,A
|
||
LD A,(SYS_PAGE.Block_ID.vROM)
|
||
LD L,A
|
||
LD A,C
|
||
EX AF,AF'
|
||
XOR A
|
||
JP GOTO_SPECTRUM.FN
|
||
;
|
||
.loop_rst: LD BC,BIOS.REINIT.HARD_RESET
|
||
RST_to_BIOS
|
||
JR .loop_rst
|
||
|
||
|
||
PENTAGON_128: ;DI
|
||
;LD SP,SYS_PAGE.SYS_SP
|
||
;LD A,SYS_PAGE
|
||
;OUT (SLOT3),A
|
||
;
|
||
LD A,BIOS.RST_CONF.AY8910
|
||
LD DE,2*256 + CNF_PORT.CNF_1 + CNF_PORT.TURBO.ON + CNF_PORT.SCORP_RESET ; !HARDCODE 2 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 128
|
||
LD BC,#FE*256 + %0000'0010
|
||
JR PREPARE_TO_START_ZX
|
||
|
||
PENTAGON_512: ;DI
|
||
;LD SP,SYS_PAGE.SYS_SP
|
||
;LD A,SYS_PAGE
|
||
;OUT (SLOT3),A
|
||
;
|
||
LD A,BIOS.RST_CONF.AY8910
|
||
LD DE,3*256 + CNF_PORT.CNF_1 + CNF_PORT.TURBO.ON + CNF_PORT.CNF_512 + CNF_PORT.SCORP_RESET ; !HARDCODE 3 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 512
|
||
LD BC,#FE*256 + %0000'0010
|
||
JR PREPARE_TO_START_ZX
|
||
|
||
; CONFIG_SET:
|
||
; PUSH DE
|
||
|
||
; EI
|
||
; HALT
|
||
; DI
|
||
|
||
; IN A,(SLOT3)
|
||
; EX AF,AF'
|
||
; LD A,SYS_PAGE
|
||
; OUT (SLOT3),A
|
||
; LD (SYS_PAGE.CONFIG_DE),DE
|
||
; ;!FIXIT ¥áâì «¨ á¬ëá« ¤¥« âì ¤® FN_SYNC?
|
||
; LD A,(ZX_VARS.BORDER)
|
||
; RRCA
|
||
; RRCA
|
||
; RRCA
|
||
; AND 7
|
||
; OUT (BorderColor),A
|
||
; ;
|
||
; EX AF,AF'
|
||
; OUT (SLOT3),A
|
||
|
||
; LD A,L
|
||
; LD C,BIOS.FN_SYNC
|
||
; RST_to_BIOS
|
||
|
||
; LD HL,#4104 ;!HARDCODE
|
||
; LD E,0
|
||
; LD BC,256*4 + BIOS.LP_OPEN_S ;!HARDCODE
|
||
; RST_to_BIOS
|
||
|
||
; LD HL,#5104 ;!HARDCODE
|
||
; LD E,0
|
||
; LD BC,256*4 + BIOS.LP_OPEN_S
|
||
; RST_to_BIOS
|
||
|
||
; POP DE
|
||
; LD A,E
|
||
; OUT (SYS_PORT.ROM),A
|
||
|
||
; IM 1
|
||
; EI
|
||
; JP CLS ;!FIXIT 㦮 «¨?
|
||
|
||
SPRINTER_reset:
|
||
DI
|
||
LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON
|
||
OUT (SYS_PORT.ROM),A
|
||
LD BC,BIOS.REINIT.SOFT_RESET
|
||
JP_to_BIOS
|
||
|
||
; _SET_CNF:
|
||
; ;DI
|
||
; LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON
|
||
; OUT (SYS_PORT.ROM),A
|
||
; RET
|
||
|
||
; CNF_SC_312:
|
||
; LD A,Port_VSYNC.SET_312L
|
||
; OUT (Port_VSYNC),A
|
||
; RET
|
||
|
||
; CNF_PN_320:
|
||
; LD A,Port_VSYNC.SET_320L
|
||
; OUT (Port_VSYNC),A
|
||
; RET
|
||
|
||
; LD A,CNF_0
|
||
; OUT (SYS_PORT.ROM),A
|
||
; CALL DOS_OFF
|
||
; JP 0
|
||
|
||
;*****************************
|
||
; *** MENU UTILITES ***
|
||
;*****************************
|
||
;!FIXIT íâ® § ¯ã᪠c:\disk.trd - ¥ ¤ã¬ î, çâ® í⮠㦮, ¬®¦® § ¬¥¨âì
|
||
UTILIT:
|
||
LD HL,C_DISK_C
|
||
CALL CALL_DOS1
|
||
|
||
;CALL DOS_ON
|
||
;LD A,0 ; DETECT_HDD
|
||
;CALL EXP_HDD
|
||
LD C,BIOS.HDD_INIT
|
||
RST_to_BIOS
|
||
;CALL DOS_OFF
|
||
|
||
|
||
JR C,DISK_UTILIT
|
||
|
||
LD HL,C_DISK_C3
|
||
CALL CALL_DOS1
|
||
|
||
UTIL_DISK:
|
||
XOR A
|
||
LD C,BIOS.FreeMemRMD
|
||
RST_to_BIOS
|
||
|
||
LD HL,C_DEMO6
|
||
CALL CALL_DOS1
|
||
|
||
XOR A
|
||
LD C,BIOS.GET_RAMD_ST
|
||
RST_to_BIOS
|
||
|
||
JR C,UTIL_DISK_L1
|
||
JR Z,UTIL_DISK_L1
|
||
|
||
LD HL,C_DISK_C1
|
||
CALL CALL_DOS1
|
||
LD HL,C_DISK_C2
|
||
CALL CALL_DOS1
|
||
RET
|
||
|
||
UTIL_DISK_L1:
|
||
LD A,(ZX_VARS.OPER_DISK)
|
||
INC A
|
||
CP 2
|
||
JR Z,DISK_UTIL_RET
|
||
LD HL,C_DISK_C5
|
||
CALL CALL_DOS1
|
||
JR UTIL_DISK
|
||
|
||
DISK_UTIL_RET:
|
||
LD HL,C_DISK_C6
|
||
CALL CALL_DOS1
|
||
RET
|
||
|
||
DISK_UTILIT:
|
||
LD HL,C_DISK_C4
|
||
CALL CALL_DOS1
|
||
JR UTIL_DISK
|
||
|
||
C_DEMO6: DB .Size, ZX_Token.rem, ':/disk.trd', 13,80
|
||
.Size EQU $-C_DEMO6-1
|
||
|
||
;***************************************
|
||
|
||
;VERSION: DEFB 22,21,0
|
||
; DEFB 16,2,"Expansion 3.02 1997 ELSY Co.",16,1,0FFh
|
||
|
||
;**********************************************
|
||
|
||
DOS_RUN:
|
||
LD HL,C_DISK_C1
|
||
CALL CALL_DOS1
|
||
|
||
LD HL,C_DISK_C2
|
||
CALL CALL_DOS1
|
||
RET
|
||
|
||
START_TRD:
|
||
LD HL,C_DISK_C
|
||
CALL CALL_DOS1
|
||
LD HL,C_DISK_C0
|
||
CALL CALL_DOS1
|
||
LD HL,C_DISK_C3
|
||
CALL CALL_DOS1
|
||
RET
|
||
|
||
C_DISK_C: DB .Size, ZX_Token.rem, ':', 13,80
|
||
.Size EQU $-C_DISK_C-1
|
||
|
||
C_DISK_C0: DB .Size, ZX_Token.rem, ':/CLEAR E', 13,80
|
||
.Size EQU $-C_DISK_C0-1
|
||
|
||
C_DISK_C1: DB .Size, ZX_Token.rem, ':/RMD E', 13,80
|
||
.Size EQU $-C_DISK_C1-1
|
||
|
||
C_DISK_C2: DB .Size, ZX_Token.rem, ':RUN', 13,80
|
||
.Size EQU $-C_DISK_C2-1
|
||
|
||
C_DISK_C3: DB .Size, ZX_Token.rem, ':/HDD', 13,80
|
||
.Size EQU $-C_DISK_C3-1
|
||
|
||
C_DISK_C4: DB .Size, ZX_Token.rem, ':/FDD', 13,80
|
||
.Size EQU $-C_DISK_C4-1
|
||
|
||
C_DISK_C5: DB .Size, ZX_Token.rem, ':/B:', 13,80
|
||
.Size EQU $-C_DISK_C5-1
|
||
|
||
C_DISK_C6: DB .Size, ZX_Token.rem, ':/A:', 13,80
|
||
.Size EQU $-C_DISK_C6-1
|
||
; |