427 lines
10 KiB
NASM
427 lines
10 KiB
NASM
;
|
||
; MODULE ROM_PART
|
||
;------------[Begin of ROM]-------------
|
||
ROM_START:
|
||
DI
|
||
HALT
|
||
;---------------------------------------
|
||
|
||
;--------------[checksum]---------------
|
||
BLOCK 4-$,#FF
|
||
Check_Sum:
|
||
DB #FF,#FF,#FF,#FF ; ¬¥áâ® ¤«ï ª®â஫쮩 á㬬ë
|
||
;---------------------------------------
|
||
BLOCK #10-$,#FF
|
||
RET
|
||
;---------------------------------------
|
||
|
||
;!TODO ¯à¨ªàãâ¨âì ª ROM.BIOS
|
||
;----------------[int]------------------
|
||
BLOCK #38-$,#FF
|
||
; INT: PUSH BC
|
||
; PUSH AF
|
||
|
||
; LD C,SLOT3
|
||
; IN B,(C)
|
||
; LD A,SYS_PAGE
|
||
; OUT (C),A
|
||
|
||
; LD A,(SYS_PAGE.INT_ID)
|
||
; CP #AA
|
||
; JR Z,YESINT
|
||
; OUT (C),B
|
||
; JR NOINT
|
||
; YESINT: PUSH HL
|
||
; LD HL,(SYS_PAGE.INT_ADRESS)
|
||
; LD A,H
|
||
; OR L
|
||
; LD A,(SYS_PAGE.INT_PAGE)
|
||
; OUT (C),B
|
||
; CALL NZ,EXTINT
|
||
; POP HL
|
||
; NOINT: POP AF
|
||
; POP BC
|
||
EI
|
||
RETI
|
||
;---------------------------------------
|
||
|
||
;----------------[NMI]------------------
|
||
_mInfoBLOCK #66-$,#FF
|
||
NMI: RETN
|
||
;---------------------------------------
|
||
|
||
; ;----------------[int]------------------
|
||
; EXTINT: OR A
|
||
; RET Z
|
||
|
||
; ;LD C,SLOT1
|
||
; BIT 7,H
|
||
; JR Z,.L2
|
||
; LD C,SLOT2
|
||
; BIT 6,H
|
||
; JR Z,.L1
|
||
; LD C,SLOT3
|
||
|
||
; .L1: IN B,(C)
|
||
; PUSH BC
|
||
; OUT (C),A
|
||
; CALL .JPHL
|
||
; POP BC
|
||
; OUT (C),B
|
||
; RET
|
||
; ; ¯à®¢¥àª ã«¥¢®© á«®â
|
||
; .L2: BIT 6,H
|
||
; LD C,SLOT1
|
||
; JR NZ,.L1 ; ¯à®¤®«¦ ¥¬ ¥á«¨ ¥ã«¥¢®© á«®â
|
||
; ; ‚Ž’ ’“’ ŒŽ†<C5BD>Ž ‚‹“<E280B9>ˆ’œ <20><>Ž–…„“<E2809E>“ „‹Ÿ <20>Ž„‘’€<E28099>Ž‚Šˆ ‘’<E28098>€<EFBFBD>ˆ–› ‚ SLOT0 ˆ
|
||
; ; <20>…<EFBFBD>…•Ž„ <20>Ž <20><>…<EFBFBD>›‚€<E2809A>ˆž ‚ Ž<><C5BD>€<EFBFBD>Ž’—ˆŠ <20>Ž‹œ‡Ž‚€’…‹Ÿ —…<E28094>…‡ ¯à®æ¥¤ãàã áâíª, ¯à¨¬¥à
|
||
|
||
|
||
; IF TEST_INT
|
||
; LD HL,-.stackDepth - .switchProcedure.size + .patch+2
|
||
; ADD HL,SP
|
||
; PUSH HL
|
||
|
||
; LD HL,-.stackDepth - .switchProcedure.size ; memory stack use!
|
||
; ADD HL,SP ; stack
|
||
; PUSH HL ; ¤à¥á ¯à®£à ¬¬ë .readProcedure
|
||
|
||
; LD DE,.switchProcedure ; ¯¥à¥¥á⨠¯à®£à ¬¬ã á⥪
|
||
; EX DE,HL
|
||
; LD BC,.switchProcedure.size
|
||
; LDIR
|
||
; RET
|
||
|
||
; ; ¯à®æ¥¤ãà , ¯¥à¥®á¨¬ ï á⥪ ¤«ï ¢ë§®¢ ¯à¥àë¢ ¨ï ¯®«ì§®¢ â¥«ï ¨§ SLOT0
|
||
; ; ®áâ®à®¦¥¥ á PUSH, ¥á«¨ ¤® ¬®£®, ⮠㢥«¨ç¨¢ © .stackDepth
|
||
; .switchProcedure:
|
||
; DEC DE
|
||
; POP HL
|
||
; LD (HL),E
|
||
; INC HL
|
||
; LD (HL),D
|
||
|
||
|
||
; LD C,SLOT0
|
||
; IN B,(C)
|
||
; PUSH BC
|
||
; OUT (C),A
|
||
|
||
; XOR A
|
||
; OUT (SYS_PORT.RAM),A
|
||
; .patch EQU $+1-.switchProcedure
|
||
; CALL .JPHL
|
||
|
||
; DI
|
||
|
||
; XOR A
|
||
; OUT (SYS_PORT.ROM),A
|
||
|
||
; POP BC
|
||
; OUT (C),B
|
||
|
||
; RET
|
||
; .JPHL: JP (HL)
|
||
; .stackDepth EQU 32 ; à ááâ®ï¨¥ ®â ª®æ ¯à®æ¥¤ãàë ¤® ¢¥àè¨ë á⥪ .
|
||
; .switchProcedure.size EQU $-.switchProcedure
|
||
; ELSE
|
||
|
||
; SCF
|
||
; RET
|
||
; .JPHL: JP (HL)
|
||
; ENDIF
|
||
;---------------------------------------
|
||
|
||
/*
|
||
|
||
|
||
|
||
*/
|
||
|
||
;
|
||
; _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ [___FOR ZX-MODE___] _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ ;
|
||
|
||
;
|
||
;----------------------------[ FOR ZX-MODE ]----------------------------;
|
||
;!HARDCODE íâ®â ¤à¥á #‘0 ¯àë£ ¥â ¢ vROM Basic-48 ¯® ¤à¥áã #3CF0
|
||
; ¬®¦® ¯®¯à®¡®¢ âì ¯¥à¥¤¥« âì íâ®â ¤à¥á â ¬
|
||
_mInfoBLOCK #C0-$,#FF ;!TEST 0
|
||
INCLUDE 'ZX/ZX_FUNC.ASM'
|
||
INCLUDE 'ZX/ZX_MENU.ASM'
|
||
;-----------------------------------------------------------------------;
|
||
; _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ ;
|
||
;
|
||
|
||
|
||
|
||
|
||
;-------------[#1000 SETUP]-------------
|
||
ShowInfo 'Setup block of ROM start', 0 ; !!!!! test
|
||
|
||
BLOCK_Setup EQU $
|
||
;
|
||
IF PACKED_MAIN
|
||
BLOCK ROM_MAP.SETUP-$,#FF
|
||
|
||
DISP COMPILE_ADDR.SETUP
|
||
|
||
; Depacker version
|
||
SETUP_MAIN:
|
||
LD HL,DEPACKER.UnpackedEXECaddr; â®çª ¢å®¤ ¢ à ᯠª®¢ ®¬ ª®¤¥
|
||
PUSH HL
|
||
LD DE,DEPACKER.WorkAddr ; ¤à¥á ¯à®æ¥¤ãàë ¤¥¯ ª¥à
|
||
PUSH DE
|
||
|
||
LD HL,DEPACKER.Addr
|
||
LD BC,DEPACKER.Length
|
||
LDIR
|
||
|
||
LD HL,DEPACKER.PackedMAIN ; £¤¥ à娢
|
||
LD DE,DEPACKER.UnpackAddr ; ªã¤ à ᯠª®¢ë¢ âì
|
||
RET
|
||
|
||
.Depacker EQU $
|
||
ENT
|
||
|
||
;-----------------[v]
|
||
DEPACK_DATA:
|
||
DISP DEPACKER.WorkAddr
|
||
MODULE UnPacker
|
||
INCLUDE 'src/bios/ROM/SETUP/DEHRUST.asm' ; !TODO ᤥ« âì LUA ¢â®¢ë¡®à ¤¥ª®¬¯à¥áá®à ¨ ª®¬¯à¥áá®à
|
||
PackedMAIN: INCBIN 'Build/Bin/temp/MAIN.PAK'
|
||
ENDMODULE
|
||
ENT
|
||
DEPACK_DATA.length EQU $-DEPACK_DATA
|
||
;-----------------[^]
|
||
|
||
|
||
ELSE
|
||
DISP COMPILE_ADDR.SETUP
|
||
ShowInfo 'Setup block DISP start', 1 ; !!!!! test
|
||
SETUP_MAIN: INCLUDE 'src/bios/ROM/SETUP/Main.asm'
|
||
ShowInfo 'Setup block DISP end', 1 ; !!!!! test
|
||
ENT
|
||
ENDIF
|
||
|
||
|
||
ShowInfo 'Setup block of ROM end', 0 ; !!!!! test
|
||
BLOCK_Setup.Length EQU $-BLOCK_Setup
|
||
;---------------------------------------
|
||
;
|
||
|
||
|
||
|
||
|
||
|
||
;
|
||
; !FIXIT ᤥ« âì í⨠䨪á¨à®¢ ë¥ ¤à¥á ®â¤¥«ìë¬ ä ©«®¬ ¨ á IF/ELSE ¨ ¯®¤ª«îç âì ¨å ¯®â®¬ ªã¤ ¤®.
|
||
;----------------------------------------------------------------------;
|
||
; BLOCK #3CC0-$,255
|
||
; no-magics!
|
||
;MAGIC_1: ; ‡€ƒ‹“˜Š€ „‹Ÿ MAGIC
|
||
; PUSH AF
|
||
; LD A,ROM.EXT
|
||
; OUT (SYS_PORT.OFF),A
|
||
; POP AF
|
||
; JP MAGIC_1
|
||
;MAGIC_3:
|
||
; PUSH AF
|
||
; LD A,ROM.EXT
|
||
; OUT (SYS_PORT.OFF),A
|
||
; POP AF
|
||
; RETN
|
||
;MAGIC_2:
|
||
;; CALL MG_BEGIN
|
||
; JR MAGIC_3
|
||
|
||
;*************************
|
||
_mInfoBLOCK #3CE0-$,#FF ;!TEST 0
|
||
;SW_ROM_1:
|
||
LD HL,#259F ;!HARDCODE Show Main Menu in BASIC-128
|
||
PUSH HL
|
||
LD HL,#5B00 ;!HARDCODE
|
||
LD A,(HL)
|
||
CP #F5 ; #F5 - ®¯ª®¤ 'PUSH AF'. <20>஢¥àï¥âáï ¢ #5B00
|
||
JR Z,JP_HL_48 ; ‚އ‚<E280A1>€’ Š Œ…<C592>ž BASIC128
|
||
POP HL
|
||
JR SW_ROM ; <20><>Ž‘’މ ‚އ‚<E280A1>€’
|
||
;*************************
|
||
|
||
_mInfoBLOCK #3CF0-$,#FF ;!TEST 0
|
||
;JMP_48:
|
||
; LD HL,00h
|
||
; JR JP_HL_48
|
||
;
|
||
; NOP
|
||
; NOP
|
||
; NOP
|
||
|
||
;***************************************
|
||
_mInfoBLOCK #3CF8-$,#FF ;!TEST 0
|
||
; no basic-48!
|
||
;P_HL_48:
|
||
PUSH HL
|
||
;SW_ROM:
|
||
PUSH AF
|
||
LD A,ROM.BIOS
|
||
OUT (SYS_PORT.RAM),A
|
||
POP AF
|
||
RET
|
||
;***************************************
|
||
;----------------------------------------------------------------------;
|
||
;
|
||
|
||
;!TODO ᯥªâà㬮¢áª¨¥ ã⨫¨âë
|
||
;----------------------------------------------------------------------;
|
||
; _mInfoBLOCK #3CFA-$,#FF
|
||
; LD A,0 ;!HARDCODE
|
||
; OUT (SYS_PORT.OFF),A
|
||
; POP AF
|
||
;----------------------------------------------------------------------;
|
||
;
|
||
|
||
|
||
;
|
||
;----------------------------------------------------------------------;
|
||
_mInfoBLOCK #3D00-$,#FF
|
||
;DOS_ON:
|
||
NOP
|
||
RET
|
||
;***************************************
|
||
|
||
;***************************************
|
||
; BLOCK #3D02-$,FF
|
||
; !TODO ¬®¦® ®¯à¨å®¤®¢ âì âãâ 17 ¡ ©â®¢
|
||
;
|
||
;***************************************
|
||
|
||
;***************************************
|
||
_mInfoBLOCK #3D13-$,#FF
|
||
NOP
|
||
CALL ToBIOS_FromEXT
|
||
JP DOS_OFF
|
||
;***************************************
|
||
|
||
;***************************************
|
||
; BLOCK #3D17-$,FF
|
||
; !TODO ¬®¦® ®¯à¨å®¤®¢ âì âãâ 233 ¡ ©â
|
||
;
|
||
;***************************************
|
||
|
||
;***************************************
|
||
_mInfoBLOCK #3E00-$,#FF
|
||
;DOS_OFF:
|
||
PUSH AF
|
||
LD A,R
|
||
DI
|
||
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
|
||
JP PO,.no_EI
|
||
EI
|
||
.no_EI: POP AF
|
||
RET
|
||
;***************************************
|
||
|
||
|
||
;***************************************
|
||
; BLOCK #3E16-$,FF
|
||
; !TODO ¬®¦® ®¯à¨å®¤®¢ âì âãâ 10 ¡ ©â®¢
|
||
;
|
||
;***************************************
|
||
;
|
||
|
||
|
||
|
||
;
|
||
;---------------------------------------
|
||
; _mInfoBLOCK #3FC6-$,#FF
|
||
;!FIXIT ¯¥à¥¤¥« âì <20>‡“ âà¤®á ¨ ᯥªâà㬮¢ ¯®¤ ¯à ¢¨«ìë© ¢ë§®¢ äãªæ¨© ¡¨®á ( ¥ ¢¬¥áâ® äãªæ¨© 4x äãªæ¨¨ 0x)
|
||
; ¨«¨ ¬®¦® ¤®¡ ¢¨âì äãªæ¨¨
|
||
; TRDOS_HD_CMD:
|
||
; ; LD A,C
|
||
; ; OR #40
|
||
; ; LD C,A
|
||
; POP AF
|
||
; SET 6,C
|
||
; RST_to_BIOS
|
||
; JR RET_TO_TRDOS
|
||
;---------------------------------------
|
||
;
|
||
;--------------[GOTO BIOS]--------------
|
||
; call BIOS from EXTENSION
|
||
_mInfoBLOCK #3FD0-$,#FF ; ToBIOS_FromEXT
|
||
PUSH AF
|
||
LD A,ROM.BIOS ; set BIOS to slot0
|
||
OUT (SYS_PORT.ROM),A
|
||
POP AF
|
||
RET
|
||
;---------------------------------------
|
||
|
||
|
||
;!FIXIT ¯¥à¥¤¥« âì <20>‡“ âà¤®á ¨ ᯥªâà㬮¢ ¯®¤ ¯à ¢¨«ìë© ¢ë§®¢ äãªæ¨© ¡¨®á ( ¥ ¢¬¥áâ® äãªæ¨© 4x äãªæ¨¨ 0x)
|
||
;--------[ From TR-DOS to HDD part2]--------
|
||
_mInfoBLOCK #3FD8-$,#FF
|
||
TRDOS_HD_CMD:
|
||
POP AF
|
||
SET 6,C
|
||
RST_to_BIOS
|
||
JR RET_TO_TRDOS
|
||
;---------------------------------------
|
||
|
||
|
||
;!FIXIT ®áâ ⪨ ®â â¥á⮢ ˆ¢ á® §¢ãª®¢®© ª à⮩
|
||
;-------------[SND_TEST_RET]-------------
|
||
_mInfoBLOCK #3FE0-$,#FF
|
||
; SND_TEST_RET:
|
||
; LD A,ROM.BIOS
|
||
; OUT (SYS_PORT.RAM),A
|
||
; ;JP SOUND_TEST
|
||
; JP #0000
|
||
;---------------------------------------
|
||
|
||
|
||
;------------[HDD_5x portal]------------
|
||
; â®çª ¢å®¤ /¢ë室 ¤«ï äãªæ¨© 5å ¨§ BIOS
|
||
_mInfoBLOCK #3FE8-$,#FF
|
||
;RET_TO_EXP:
|
||
; PUSH AF
|
||
; LD A,ROM.BIOS
|
||
; OUT (SYS_PORT.ROM),A
|
||
; JP HDD_FN_5x
|
||
;---------------------------------------
|
||
|
||
|
||
;!FIXIT Œ®¦® ¯®¯à ¢¨âì ®¬¥à äãªæ¨© ¯à¨ ¢ë§®¢ å ¨§ TR-DOS ¨ ¯àë£ âì áà §ã ¢ BIOS
|
||
;-------[ From TR-DOS to API 4x ]-------
|
||
_mInfoBLOCK #3FF0-$,#FF
|
||
RET_TO_TRDOS:
|
||
PUSH AF
|
||
DI
|
||
LD A,ROM.BIOS
|
||
OUT (SYS_PORT.RAM),A
|
||
JR TRDOS_HD_CMD ; âãâ ¥ å¢ â¨«® ¬¥áâ ¢ 1 ¡ ©â, ç⮡ áà §ã ᤥ« âì JP
|
||
;---------------------------------------
|
||
|
||
|
||
|
||
;-----[???????????????????????????]-----
|
||
_mInfoBLOCK #3FF8-$,#FF
|
||
; PUSH AF
|
||
; LD A,ROM.BIOS
|
||
; OUT (SYS_PORT.RAM),A
|
||
; JP #0000
|
||
;---------------------------------------
|
||
_mInfoBLOCK #4000-$,#FF
|
||
;=======================================
|
||
|
||
; ENDMODULE ;ROM_PART
|
||
; |