mirror of
https://github.com/Tolik-Trek/Crazy-Blaster.git
synced 2026-06-15 01:21:36 +03:00
BIOS starts, DSS loads
This commit is contained in:
parent
9b9bb846d8
commit
8210691bd8
@ -1,6 +1,7 @@
|
||||
INCLUDE 'shared/defines.inc'
|
||||
INCLUDE 'shared/defines.inc'
|
||||
INCLUDE 'Crazy BIOS/shared/CompMacro.asm'
|
||||
|
||||
DEFINE IMG_RECOVERY 'crazy bios/shared/cb_sys.img'
|
||||
DEFINE IMG_RECOVERY 'crazy bios/shared/cb_boot.img'
|
||||
;
|
||||
;[--------------------------------------------------------------------------]
|
||||
MACRO Set_Block text, blk_addr
|
||||
@ -11,9 +12,13 @@
|
||||
;[--------------------------------------------------------------------------]
|
||||
ORG 0
|
||||
DISPLAY '[ Building CB_IMG file ]'
|
||||
OUTPUT 'Build/CB_BIOS.RAW'
|
||||
OUTPUT 'Build/CB_BIOS.IMG'
|
||||
;[--------------------------------------------------------------------------]
|
||||
; Zero Sector
|
||||
SET_IMG_LABEL
|
||||
BLOCK 512 - $,#FF
|
||||
;
|
||||
ORG 0
|
||||
;PAGE #46 BIOS
|
||||
INCBIN 'Build/Bin/EXP.BIN'
|
||||
Set_Block 'EXP free space: ', #4000
|
||||
@ -30,7 +35,12 @@
|
||||
|
||||
;PAGE #4B LOGO
|
||||
INCBIN 'Build/Bin/LOGO.BIN'
|
||||
Set_Block 'LOGO free space: ', #14000
|
||||
Set_Block 'LOGO free space: ', #14000
|
||||
;DEBUG
|
||||
IF DEBUG
|
||||
INCLUDE './crazy/debug.asm'
|
||||
Set_Block 'LOGO free space: ', #14200
|
||||
ENDIF
|
||||
;[--------------------------------------------------------------------------]
|
||||
OUTEND
|
||||
DISPLAY '[_____________Building CB_IMG file done!_____________]'
|
||||
|
||||
@ -2,11 +2,26 @@
|
||||
;
|
||||
;*************************************************************
|
||||
;
|
||||
; EXPANSION VER 3.00 (C) Peters Plus Ltd.
|
||||
; EXPANSION VER 3.1 (C) Sprinter Team
|
||||
; EXPANSION VER 3.00 (C) Peters Plus Ltd.
|
||||
; EXPANSION VER > 3.04 (C) Sprinter Team
|
||||
;
|
||||
;*************************************************************
|
||||
|
||||
; DEBUG
|
||||
MACRO FLASH_LIGHT
|
||||
LD E,8
|
||||
LD A,SYS_PORT.TURBO.OFF
|
||||
.big_loop: LD BC,0
|
||||
OUT (CNF_PORT.vBIOS),A
|
||||
.loop: DEC BC
|
||||
INC B
|
||||
DJNZ .loop
|
||||
XOR 1
|
||||
DEC E
|
||||
JR NZ,.big_loop
|
||||
ENDM
|
||||
|
||||
|
||||
;***************************************
|
||||
;*********** BEGIN EXPANSION ***********
|
||||
;***************************************
|
||||
@ -35,7 +50,7 @@ BOARD_INFO:
|
||||
EXP_FNS_2_RET:
|
||||
PUSH AF
|
||||
LD A,vROM.BIOS
|
||||
OUT (CNF_PORT.vBIOS),A
|
||||
OUT (CNF_PORT.vZX_ROM),A
|
||||
POP AF
|
||||
JR RST_18_1
|
||||
;=======================================
|
||||
@ -109,21 +124,13 @@ TABLE_X:
|
||||
|
||||
;
|
||||
;=======================================
|
||||
RESTARTS EQU #FFE0
|
||||
GLOBAL_RESET:
|
||||
DI
|
||||
IM 1
|
||||
LD HL,RESTARTS
|
||||
LD DE,RESTARTS_PROG
|
||||
LD B,RESTARTS_PROG.Size
|
||||
.compare:
|
||||
LD A,(DE)
|
||||
CP (HL)
|
||||
JR NZ,NO_RESTART
|
||||
INC HL
|
||||
INC DE
|
||||
DJNZ .compare
|
||||
JP RESTARTS
|
||||
;RESTARTS EQU #FFE0
|
||||
; GLOBAL_RESET:
|
||||
; DI
|
||||
; ;
|
||||
; FLASH_LIGHT
|
||||
; ;
|
||||
; JR NO_RESTART
|
||||
;=======================================
|
||||
_mInfoBLOCK #66-$,0
|
||||
NMI_Point:
|
||||
@ -142,7 +149,6 @@ NMI_Point:
|
||||
; IN B,(C)
|
||||
; CALL SET_ROM_PAGES+#C000
|
||||
; JP NO_SUMX_EQ
|
||||
|
||||
;**********************************
|
||||
|
||||
;BEEP:
|
||||
@ -209,7 +215,9 @@ BoardID:
|
||||
|
||||
;
|
||||
;-----[¯¥à¥å¢ â RESET ¥ á®áâ®ï«áï]-----
|
||||
NO_RESTART:
|
||||
GLOBAL_RESET:
|
||||
DI
|
||||
IM 1
|
||||
; á⥪ ¥éñ ¥ ¨á¯®«ì§ã¥¬!!!
|
||||
LD SP,IX ; á®åà ¨âì § 票¥ ¯¥à¥¤ ®¥ § £àã§ç¨ª®¬ ª®äë (¥á«¨ áâ àâ ¯®á«¥ à¥á¥â )
|
||||
; ¨¨æ¨ «¨§ æ¨ï ¢ãâà¥¨å ¯®à⮢ Z84C15 ¤«ï POST-Tester-
|
||||
@ -534,6 +542,8 @@ POST_5_OK:
|
||||
; **********************************
|
||||
ENDMODULE
|
||||
|
||||
;FLASH_LIGHT
|
||||
|
||||
MODULE SET_CONFIG_ID
|
||||
|
||||
IN A,(SLOT3)
|
||||
@ -544,6 +554,7 @@ POST_5_OK:
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
|
||||
|
||||
;-------------[Save IX:IY]--------------
|
||||
; Don't use IY before this point if it`s normal booting!!!
|
||||
LD IX,0
|
||||
@ -1001,23 +1012,6 @@ RES128_PROG:
|
||||
LEN_RES128 EQU $-RES128_PROG
|
||||
;-----------------------------------------------------------------------;
|
||||
|
||||
;-------------------------------[ #FFE0 ]-------------------------------;
|
||||
; ¯à®£à ¬¬ , ª®â®à ï ¡ã¤ãç¨ à §¬¥é¥®© ¢ #40 áâà ¨æ¥,
|
||||
; á ¤à¥á RESTARTS, ¯¥à¥å¢ âë¢ ¥â RESET
|
||||
RESTARTS_PROG: ; !TODO LDConf ¯¥à¥å¢ â à¥á¥â «î¡®© ª®ä¥ ¯®á«¥ hardreset
|
||||
LD HL,RESTARTS
|
||||
LD B,16
|
||||
.loop:
|
||||
LD (HL),0
|
||||
INC HL
|
||||
DJNZ .loop
|
||||
NOP
|
||||
NOP
|
||||
.Size EQU $-RESTARTS_PROG
|
||||
; LD A,1
|
||||
; OUT (SLOT3),A
|
||||
;-----------------------------------------------------------------------;
|
||||
|
||||
;----------------------------[Setup Starter]----------------------------;
|
||||
MODULE Setup_Starter
|
||||
; ¯à®£à ¬¬ , à §¬¥é ¥¬ ï ¯® ¤à¥áã #C000
|
||||
@ -1359,11 +1353,11 @@ kbd_loop2:
|
||||
_mInfoALIGN 256,#FF
|
||||
; BLOCK #3F00-$,#FF
|
||||
ROM_DISK.Pages.Number:
|
||||
BYTE ROM_DISK.Pages.Size ; ç¨á«® áâà ¨æ
|
||||
DB ROM_DISK.Pages.Size ; ç¨á«® áâà ¨æ
|
||||
; ã áâà ¨æ ¢ëáâ ¢«¥ bit4 ¤«ï ª®à४⮩ ¯®¤áâ ®¢ª¨
|
||||
;(¯®¤à®¡¥¥ ¢ sp2000.inc - <20>®àâ ã¯à ¢«¥¨ï áâà ¨æ ¬¨ <20>‡“)
|
||||
ROM_DISK.Pages: ; áâà ¨æë ROM-Disk
|
||||
ABYTE #10 #05,#06,#07,#09,#0A,#0B ; 98304 bytes
|
||||
DB 0,#10 ; § ç¥¨ï ¤«ï 7FFD ᮮ⢥âáâ¢ãîâ áâà ¨æ ¬ #48,#49 out (#24),1 : 1ffd = 0.
|
||||
.Size EQU $-ROM_DISK.Pages
|
||||
;-----------------------------------------------------------------------;
|
||||
;#######################################################################;
|
||||
|
||||
@ -667,12 +667,13 @@ INFO_MESSAGE:
|
||||
CALL TSETUP ;!TODO ¬®¦¥â ¯¨åãâì ¥ñ ¯à¥àë¢ ¨ï?
|
||||
|
||||
CALL CONFIGURE_IDE_DRIVES.START
|
||||
CALL CTRLKEY
|
||||
LD A,B
|
||||
; [x] 05/07/2024 <CTRL for Recovery>
|
||||
BIT X_CTRL,A
|
||||
LD BC,#FFFF ; ¬ àª¥à ¤«ï PrepareToBOOT, ç⮡ £à㧨« Recovery
|
||||
JR NZ,RECOVERY_BOOT
|
||||
; CALL CTRLKEY
|
||||
; LD A,B
|
||||
; ; [x] 05/07/2024 <CTRL for Recovery>
|
||||
; BIT X_CTRL,A
|
||||
; LD BC,#FFFF ; ¬ àª¥à ¤«ï PrepareToBOOT, ç⮡ £à㧨« Recovery
|
||||
; JR NZ,RECOVERY_BOOT
|
||||
JR RECOVERY_BOOT
|
||||
;
|
||||
BIT X_ALT,A
|
||||
JR NZ,ALT_BOOT
|
||||
@ -689,16 +690,16 @@ RECOVERY_BOOT:
|
||||
;
|
||||
CALL INT_ON
|
||||
ALT_BOOT:
|
||||
LD A,msgStrings.bootAltDrv
|
||||
LD E,COLORS.CGA.INC.LGREEN
|
||||
CALL POSTMSC
|
||||
; LD A,msgStrings.bootAltDrv
|
||||
; LD E,COLORS.CGA.INC.LGREEN
|
||||
; CALL POSTMSC
|
||||
|
||||
LD BC,CMOS_CELL.BootDrives.Mask.AltSysDisk ;#7010
|
||||
CALL PrepareToBOOT
|
||||
LD A,msgStrings.bootFail
|
||||
LD E,COLORS.CGA.INC.LRED
|
||||
CALL C,POSTMSC
|
||||
CALL ScreenPOS.CRLF
|
||||
; LD BC,CMOS_CELL.BootDrives.Mask.AltSysDisk ;#7010
|
||||
; CALL PrepareToBOOT
|
||||
; LD A,msgStrings.bootFail
|
||||
; LD E,COLORS.CGA.INC.LRED
|
||||
; CALL C,POSTMSC
|
||||
; CALL ScreenPOS.CRLF
|
||||
|
||||
;NO START DISK - RESTART / SETUP / ZX SPECTRUM mode
|
||||
LD BC,CMOS_CELL.Options.Mask.RebootMSG ;#021D
|
||||
@ -864,11 +865,6 @@ RESCREEN: ;R06
|
||||
RECOVERYstart:
|
||||
LD A,msgStrings.bootRecovery
|
||||
CALL POSTMSG
|
||||
;
|
||||
|
||||
; ‚ë¡®à à ¬¤¨áª ¤«ï ४ ¢¥à¨
|
||||
_mRECOVERYrdChooseTYPE RECOVERYrdChooseTYPE
|
||||
|
||||
; ¯à¨¡¨¢ ¥¬ ¯®á«¥¤¨© à ¬¤¨áª, ¥á«¨ § ïâ
|
||||
.killRAMdisk: LD A,SYS_PAGE.RAMD_KEYS.NUM-1
|
||||
LD (.RDkey),A
|
||||
@ -876,6 +872,7 @@ RECOVERYstart:
|
||||
JR NC,.setRAMdisk
|
||||
JR Z,.setRAMdisk
|
||||
RET ; ¥¯®ïâ ï ®è¨¡ª - ¢ë室¨¬
|
||||
;
|
||||
.setRAMdisk: LD A,(.RDkey)
|
||||
LD B,ROM_DISK.Pages.Size
|
||||
CALL EMM.GetMemRMD
|
||||
@ -883,15 +880,69 @@ RECOVERYstart:
|
||||
DEC A
|
||||
JR Z,.FreeMem ; ®è¨¡ª - ¥¤®áâ â®ç® ¯ ¬ïâ¨, ¢ë§ë¢ ¥¬ ®ç¨áâªã ¯ ¬ïâ¨
|
||||
RET ; ¥¯®ïâ ï ®è¨¡ª - ¢ë室¨¬
|
||||
;
|
||||
.FreeMem: CALL EMM.FullInit
|
||||
JR .killRAMdisk
|
||||
;
|
||||
|
||||
; ‚室: A - RAM block ID
|
||||
.IMGread:
|
||||
; ‚ ਠ⠪®¯¨à®¢ ¨ï ROM -> RAM disk
|
||||
_mRECOVERYmountTYPE RECOVERYmountTYPE
|
||||
;
|
||||
.IMGread: LD HL,TEMP
|
||||
CALL EMM.GetMemBlkPages ; ª¨¤ ¥¬ ¢ ¡ãä¥à ®¬¥à áâà ¨æ RAM disk
|
||||
|
||||
IN A,(SLOT3)
|
||||
LD (.slot3save),A
|
||||
;
|
||||
LD HL,ROM_DISK.Pages.Number
|
||||
LD B,0
|
||||
LD C,(HL)
|
||||
INC C
|
||||
LD DE,TEMP+ROM_DISK.Pages.Size
|
||||
LDIR ; ª¨¤ ¥¬ ¤ «ìè¥ ¢ ¡ãä¥à ®¬¥à áâà ¨æ ROM disk
|
||||
;
|
||||
LD A,CNF_PORT.EXTENSION
|
||||
OUT (CNF_PORT.vZX_ROM),A
|
||||
LD BC,#1FFD
|
||||
DEC A
|
||||
OUT (C),A
|
||||
;
|
||||
LD IY,TEMP+ROM_DISK.Pages.Size ; ROM_DISK.Pages.Number
|
||||
LD IX,TEMP
|
||||
LD B,(IY+0)
|
||||
|
||||
LD A,R
|
||||
PUSH AF
|
||||
DI
|
||||
;
|
||||
.loopIMGtoRAM: PUSH BC
|
||||
INC IY
|
||||
LD A,(IY+0)
|
||||
LD BC,#7FFD
|
||||
OUT (C),A
|
||||
LD A,(IX+0)
|
||||
OUT (SLOT3),A
|
||||
INC IX
|
||||
|
||||
LD HL,0
|
||||
LD DE,#C000
|
||||
LD BC,#4000
|
||||
LDIR
|
||||
|
||||
POP BC
|
||||
DJNZ .loopIMGtoRAM
|
||||
;
|
||||
XOR A
|
||||
LD BC,#7FFD
|
||||
OUT (C),A
|
||||
OUT (CNF_PORT.vBIOS),A
|
||||
LD B,#1F
|
||||
LD A,2
|
||||
OUT (C),A
|
||||
.slot3save+*: LD A,0
|
||||
OUT (SLOT3),A
|
||||
POP AF
|
||||
JP PO,.noInterrupts
|
||||
EI
|
||||
.noInterrupts: ;
|
||||
;Exit from "ROM Disk to RAM disk" procedure
|
||||
.RDkey+*: LD A,0
|
||||
OR DRIVE_CODES.SPRINTER.RAM
|
||||
@ -908,121 +959,122 @@ PrepareToBOOT: ;CALL INT_ON
|
||||
CALL INT_OFF
|
||||
; âãâ ¥ ¤®«¦® ¡ëâì ¨á¯®à祮 § 票¥ BC
|
||||
; [x] 05/07/2024 <CTRL for Recovery>
|
||||
INC BC
|
||||
LD A,B
|
||||
OR C
|
||||
JP Z,RECOVERYstart
|
||||
DEC BC
|
||||
; INC BC
|
||||
; LD A,B
|
||||
; OR C
|
||||
; JP Z,RECOVERYstart
|
||||
; DEC BC
|
||||
;
|
||||
CALL G_VALUE
|
||||
LD B,DRIVE_CODES.SPRINTER.FDD
|
||||
; CALL G_VALUE
|
||||
; LD B,DRIVE_CODES.SPRINTER.FDD
|
||||
; FDD
|
||||
OR A
|
||||
JR Z,FDSTART ; FDD A:
|
||||
INC B
|
||||
DEC A
|
||||
JR Z,FDSTART ; FDD B:
|
||||
; IDE
|
||||
LD B,DRIVE_CODES.SPRINTER.HDD
|
||||
DEC A
|
||||
JR Z,HDSTART
|
||||
INC B ;LD B,#81
|
||||
DEC A
|
||||
JR Z,HDSTART
|
||||
INC B ;LD B,#82
|
||||
DEC A
|
||||
JR Z,HDSTART
|
||||
INC B ;LD B,#83
|
||||
DEC A
|
||||
JR Z,HDSTART
|
||||
; RAM
|
||||
DEC A
|
||||
JR Z,RDSTART
|
||||
; ROM
|
||||
DEC A
|
||||
JP Z,RECOVERYstart
|
||||
; Error
|
||||
SCF
|
||||
RET
|
||||
; OR A
|
||||
; JR Z,FDSTART ; FDD A:
|
||||
; INC B
|
||||
; DEC A
|
||||
; JR Z,FDSTART ; FDD B:
|
||||
; ; IDE
|
||||
; LD B,DRIVE_CODES.SPRINTER.HDD
|
||||
; DEC A
|
||||
; JR Z,HDSTART
|
||||
; INC B ;LD B,#81
|
||||
; DEC A
|
||||
; JR Z,HDSTART
|
||||
; INC B ;LD B,#82
|
||||
; DEC A
|
||||
; JR Z,HDSTART
|
||||
; INC B ;LD B,#83
|
||||
; DEC A
|
||||
; JR Z,HDSTART
|
||||
; ; RAM
|
||||
; DEC A
|
||||
; JR Z,RDSTART
|
||||
; ; ROM
|
||||
; DEC A
|
||||
; JP Z,RECOVERYstart
|
||||
; ; Error
|
||||
; SCF
|
||||
; RET
|
||||
JP RECOVERYstart
|
||||
|
||||
FDSTART:
|
||||
PUSH BC
|
||||
PUSH BC
|
||||
LD A,msgStrings.bootFdd
|
||||
CALL POSTMSG
|
||||
POP AF
|
||||
CALL FDD_5x_RESET
|
||||
POP BC
|
||||
RET C
|
||||
JP OS_LOAD
|
||||
;!TODO
|
||||
CDSTART:
|
||||
PUSH BC
|
||||
LD A,msgStrings.bootCd
|
||||
CALL POSTMSG
|
||||
POP AF
|
||||
PUSH AF
|
||||
CALL PRINT_CHANEL
|
||||
;
|
||||
POP BC
|
||||
SET 6,B
|
||||
SCF
|
||||
RET
|
||||
; FDSTART:
|
||||
; PUSH BC
|
||||
; PUSH BC
|
||||
; LD A,msgStrings.bootFdd
|
||||
; CALL POSTMSG
|
||||
; POP AF
|
||||
; CALL FDD_5x_RESET
|
||||
; POP BC
|
||||
; RET C
|
||||
; JP OS_LOAD
|
||||
; ;!TODO
|
||||
; CDSTART:
|
||||
; PUSH BC
|
||||
; LD A,msgStrings.bootCd
|
||||
; CALL POSTMSG
|
||||
; POP AF
|
||||
; PUSH AF
|
||||
; CALL PRINT_CHANEL
|
||||
; ;
|
||||
; POP BC
|
||||
; SET 6,B
|
||||
; SCF
|
||||
; RET
|
||||
|
||||
RDSTART:
|
||||
LD A,msgStrings.bootRamDrv
|
||||
CALL POSTMSG
|
||||
LD B,DRIVE_CODES.SPRINTER.RAM ; 6 - ⨯ ¤à ©¢ RAM-DRV, 0 - ®¬¥à ¤à ©¢
|
||||
.loop: PUSH BC
|
||||
CALL OS_LOAD
|
||||
POP BC
|
||||
INC B
|
||||
LD A,DRIVE_CODES.SPRINTER.RAM + SYS_PAGE.RAMD_KEYS.NUM-1 ; ¬ ªá¨¬ «ìë© ®¬¥à à ¬¤¨áª
|
||||
SUB B
|
||||
JR NC,.loop
|
||||
RET
|
||||
; RDSTART:
|
||||
; LD A,msgStrings.bootRamDrv
|
||||
; CALL POSTMSG
|
||||
; LD B,DRIVE_CODES.SPRINTER.RAM ; 6 - ⨯ ¤à ©¢ RAM-DRV, 0 - ®¬¥à ¤à ©¢
|
||||
; .loop: PUSH BC
|
||||
; CALL OS_LOAD
|
||||
; POP BC
|
||||
; INC B
|
||||
; LD A,DRIVE_CODES.SPRINTER.RAM + SYS_PAGE.RAMD_KEYS.NUM-1 ; ¬ ªá¨¬ «ìë© ®¬¥à à ¬¤¨áª
|
||||
; SUB B
|
||||
; JR NC,.loop
|
||||
; RET
|
||||
|
||||
|
||||
HDSTART:
|
||||
IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
LD A,B
|
||||
;
|
||||
AND #03 ;R02 %00000011
|
||||
LD IY,IDE.INIT_TBL_IDE0
|
||||
JR Z,.next
|
||||
;
|
||||
LD IY,IDE.INIT_TBL_IDE1
|
||||
CP 1 ;R02
|
||||
JR Z,.next
|
||||
;
|
||||
LD IY,IDE.INIT_TBL_IDE2 ;R02
|
||||
CP 2 ;R02
|
||||
JR Z,.next
|
||||
;
|
||||
LD IY,IDE.INIT_TBL_IDE3 ;R02
|
||||
;
|
||||
.next: LD A,(IY+IDE.HDD_INIT_TABLE.DriveType)
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
EX AF,AF'
|
||||
CP IDE.Device.CDROM
|
||||
JP Z,CDSTART
|
||||
PUSH AF
|
||||
PUSH BC
|
||||
LD A,msgStrings.bootHdd
|
||||
CALL POSTMSG
|
||||
POP AF
|
||||
PUSH AF
|
||||
CALL PRINT_CHANEL
|
||||
; HDSTART:
|
||||
; IN A,(SLOT3)
|
||||
; EX AF,AF'
|
||||
; LD A,SYS_PAGE
|
||||
; OUT (SLOT3),A
|
||||
; LD A,B
|
||||
; ;
|
||||
; AND #03 ;R02 %00000011
|
||||
; LD IY,IDE.INIT_TBL_IDE0
|
||||
; JR Z,.next
|
||||
; ;
|
||||
; LD IY,IDE.INIT_TBL_IDE1
|
||||
; CP 1 ;R02
|
||||
; JR Z,.next
|
||||
; ;
|
||||
; LD IY,IDE.INIT_TBL_IDE2 ;R02
|
||||
; CP 2 ;R02
|
||||
; JR Z,.next
|
||||
; ;
|
||||
; LD IY,IDE.INIT_TBL_IDE3 ;R02
|
||||
; ;
|
||||
; .next: LD A,(IY+IDE.HDD_INIT_TABLE.DriveType)
|
||||
; EX AF,AF'
|
||||
; OUT (SLOT3),A
|
||||
; EX AF,AF'
|
||||
; CP IDE.Device.CDROM
|
||||
; JP Z,CDSTART
|
||||
; PUSH AF
|
||||
; PUSH BC
|
||||
; LD A,msgStrings.bootHdd
|
||||
; CALL POSTMSG
|
||||
; POP AF
|
||||
; PUSH AF
|
||||
; CALL PRINT_CHANEL
|
||||
|
||||
POP BC
|
||||
POP AF
|
||||
CP #FF
|
||||
SCF
|
||||
RET Z
|
||||
; POP BC
|
||||
; POP AF
|
||||
; CP #FF
|
||||
; SCF
|
||||
; RET Z
|
||||
OS_LOAD:
|
||||
LD HL,#0000
|
||||
LD IX,#0001
|
||||
|
||||
@ -1,26 +1,29 @@
|
||||
;
|
||||
MACRO ShowInfo text, in_disp
|
||||
/*
|
||||
DISPLAY ' '
|
||||
DISPLAY '[*] ', text
|
||||
IF in_disp
|
||||
DISPLAY 'ROM:'
|
||||
DISPLAY ' ORG: ',/H, $$$
|
||||
DISPLAY ' PAGE: ',/H, $$$$
|
||||
DISPLAY 'MEM:'
|
||||
DISPLAY ' DISP: ',/H, $
|
||||
DISPLAY ' PAGE: ',/H, $$
|
||||
ELSE
|
||||
DISPLAY 'ROM:'
|
||||
DISPLAY ' ORG: ',/H, $
|
||||
DISPLAY ' PAGE: ',/H, $$
|
||||
ENDIF
|
||||
DISPLAY '[X]'
|
||||
DISPLAY ' '
|
||||
*/
|
||||
; DISPLAY ' '
|
||||
; DISPLAY '[*] ', text
|
||||
; IF in_disp
|
||||
; DISPLAY 'ROM:'
|
||||
; DISPLAY ' ORG: ',/H, $$$
|
||||
; DISPLAY ' PAGE: ',/H, $$$$
|
||||
; DISPLAY 'MEM:'
|
||||
; DISPLAY ' DISP: ',/H, $
|
||||
; DISPLAY ' PAGE: ',/H, $$
|
||||
; ELSE
|
||||
; DISPLAY 'ROM:'
|
||||
; DISPLAY ' ORG: ',/H, $
|
||||
; DISPLAY ' PAGE: ',/H, $$
|
||||
; ENDIF
|
||||
; DISPLAY '[X]'
|
||||
; DISPLAY ' '
|
||||
ENDM
|
||||
;
|
||||
|
||||
MACRO SET_IMG_LABEL
|
||||
.Crazy_IMG_Label: DB "Crazy Blaster Image"
|
||||
ENDM
|
||||
|
||||
|
||||
;
|
||||
; ‚室: è¨à¨ á¯à ©â , ¢ëá®â , ª®®à¤¨ â X, ª®®à¤¨ â Y, ¤à¥á á¯à ©â ¢ ¯ ¬ïâ¨
|
||||
MACRO EasterTable width, height, Xcoord, Ycoord, addr
|
||||
@ -32,123 +35,6 @@
|
||||
ENDM
|
||||
;
|
||||
|
||||
;
|
||||
MACRO _mRECOVERYrdChooseTYPE vers
|
||||
IF vers = 1
|
||||
; ¥á«¨ RECOVERY ¥ ¯®¤à §ã¬¥¢ ¥â 90% ¡¥§®¯ á®áâì ¯®«ì§®¢ ⥫ì᪨å à ¬¤¨áª®¢
|
||||
; â® ¢ë¡¨à ¥¬ íâ®â ¢ ਠâ, ® èãáâ॥, ¯®¤ RECOVERY ¢á¥£¤ ¢ë¡¨à ¥âáï RAM Disk 15
|
||||
;
|
||||
|
||||
ELSEIF vers = 2
|
||||
|
||||
; ˆé¥¬ ᢮¡®¤ë© à ¬¤¨áª
|
||||
LD B,SYS_PAGE.RAMD_KEYS.NUM
|
||||
.getRDidLoop: LD A,B
|
||||
DEC A
|
||||
LD (RECOVERYstart.RDkey),A
|
||||
PUSH BC
|
||||
LD B,ROM_DISK.Pages.Size
|
||||
CALL EMM.GetMemRMD
|
||||
POP BC
|
||||
JR NC,RECOVERYstart.IMGread ; ᢮¡®¤ë© à ¬¤¨áª ©¤¥, ¢ë室¨¬ ¨§ 横«
|
||||
DEC A
|
||||
JR Z,RECOVERYstart.FreeMem ; ®è¨¡ª - ¥¤®áâ â®ç® ¯ ¬ïâ¨, ¢ë§ë¢ ¥¬ ®ç¨áâªã ¯ ¬ïâ¨
|
||||
DJNZ .getRDidLoop
|
||||
;
|
||||
|
||||
ELSE
|
||||
ASSERT 0, Invalid 'RECOVERYrdChooseTYPE' variant - RECOVERYrdChooseTYPE
|
||||
ENDIF
|
||||
ENDM
|
||||
;
|
||||
MACRO _mRECOVERYmountTYPE vers
|
||||
IF vers = 1 ; <20>®«¥¥ ¡ëáâàë©, ® § å प®¦¥ë© ¢ ਠâ
|
||||
|
||||
LD HL,TEMP
|
||||
CALL EMM.GetMemBlkPages ; ª¨¤ ¥¬ ¢ ¡ãä¥à ®¬¥à áâà ¨æ RAM disk
|
||||
|
||||
IN A,(SLOT3)
|
||||
LD (.slot3save),A
|
||||
|
||||
LD HL,ROM_DISK.Pages.Number
|
||||
LD B,0
|
||||
LD C,(HL)
|
||||
INC C
|
||||
LD DE,TEMP+ROM_DISK.Pages.Size
|
||||
LDIR ; ª¨¤ ¥¬ ¤ «ìè¥ ¢ ¡ãä¥à ®¬¥à áâà ¨æ ROM disk
|
||||
|
||||
LD IY,TEMP+ROM_DISK.Pages.Size ; ROM_DISK.Pages.Number
|
||||
LD IX,TEMP
|
||||
LD B,(IY+0)
|
||||
|
||||
LD A,R
|
||||
PUSH AF
|
||||
DI
|
||||
.loopIMGtoRAM: PUSH BC
|
||||
INC IY
|
||||
LD A,(IY+0)
|
||||
OUT (ROM.SLOT0),A
|
||||
LD A,(IX+0)
|
||||
OUT (SLOT3),A
|
||||
INC IX
|
||||
|
||||
LD HL,0
|
||||
LD DE,#C000
|
||||
LD BC,#4000
|
||||
LDIR
|
||||
|
||||
POP BC
|
||||
DJNZ .loopIMGtoRAM
|
||||
.slot3save+*: LD A,0
|
||||
OUT (SLOT3),A
|
||||
XOR A
|
||||
OUT (ROM.SLOT0),A
|
||||
OUT (CNF_PORT.vBIOS),A
|
||||
POP AF
|
||||
JP PO,.noInterrupts
|
||||
EI
|
||||
.noInterrupts:
|
||||
;
|
||||
|
||||
ELSEIF vers = 2 ; ¬¥¥¥ ¡ëáâàë©, ® ¡®«¥¥ ¯à ¢¨«ìë© ¢ ਠâ ç¥à¥§ äãªæ¨¨ ¡¨®á
|
||||
|
||||
LD (.ramdskID),A
|
||||
LD DE,0 ; ®¬¥à ᥪâ®à
|
||||
LD B,(ROM_DISK.Pages.Size * #4000)/512 ; áçñâ稪 - ª®«-¢ ᥪâ®à®¢ ¯® 512 ª¡
|
||||
.loop:
|
||||
;read rom disk
|
||||
PUSH BC
|
||||
LD A,1 ;à §¬¥à ᥪâ®à 256
|
||||
EX AF,AF'
|
||||
LD A,#46 ;ç⥨¥ ¨§ ROM-Disk
|
||||
EX AF,AF'
|
||||
LD HL,TEMP ; ¤à¥á ¡ãä¥à ¤ ëå
|
||||
LD B,2 ;ç¨á«® ᥪâ®à®¢
|
||||
CALL BLK_RD_WR
|
||||
|
||||
;write to ram disk
|
||||
PUSH DE ;®¬¥à ᥪâ®à
|
||||
DEC DE
|
||||
DEC DE
|
||||
|
||||
.ramdskID+*: LD A,0 ;¨¤¥â¨ä¨ª â®à ¡«®ª
|
||||
EX AF,AF'
|
||||
LD A,#FF ;§ ¯¨áì ¢ RAM-Disk
|
||||
EX AF,AF'
|
||||
LD HL,TEMP ; ¤à¥á ¡ãä¥à ¤ ëå
|
||||
LD B,2 ;ç¨á«® ᥪâ®à®¢
|
||||
CALL BLK_RD_WR
|
||||
|
||||
POP DE ;®¬¥à ᥪâ®à
|
||||
POP BC
|
||||
DJNZ .loop
|
||||
;
|
||||
|
||||
ELSE
|
||||
ASSERT 0, Invalid 'RECOVERYmountTYPE' variant - RECOVERYmountTYPE
|
||||
ENDIF
|
||||
ENDM
|
||||
;
|
||||
|
||||
;
|
||||
MACRO RST_to_BIOS
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
;=======================[All shared EQUs]=======================;
|
||||
BETA_BUILD EQU 6 ; ¤®¡ ¢«ï¥â áâப㠨 á®®¡é¥¨¥ ® â¥á⮢®© ᡮથ áâ à⮢®¬ íªà ¥
|
||||
;======================[All shared defines]=====================;
|
||||
DEFINE DEBUG 0 ;
|
||||
DEFINE SP2000_Loader_Flag #0107 ;
|
||||
DEFINE IDE_Optimization 1 ; á«¥£ª ®¯â¨¬¨§¨àã¥â ¥ª®â®àë¥ ¯à®æ¥¤ãàë à ¡®âë á HDD
|
||||
DEFINE NeedSafePort_Y 1 ; ¥á«¨ 0, â® ¢ ०¨¬¥ ¡¥§ ªá¥«ï ¥ª®â®àë¥ ¯à®æ¥¤ãàë ¬®£ãâ § áà âì íªà
|
||||
@ -15,7 +16,6 @@ BETA_BUILD EQU 6 ;
|
||||
;----------------------------[ TEST ]---------------------------;
|
||||
DEFINE HDDwriteProtect 0 ; áâ à ï ä¨èª ¤«ï äãªæ¨© 5x
|
||||
DEFINE RECOVERYmountTYPE 1 ; 1 - ¡ëáâàë© ¥¬®£® § å प®¦¥ë© ¢ ਠâ. 2 - ¡®«¥¥ "¯à ¢¨«ìë©"
|
||||
DEFINE RECOVERYrdChooseTYPE 1 ; 1 - RECOVERY £à㧨âáï ¢ ¤¨áª 15, 2 - ¨é¥âáï ᢮¡®¤ë© à ¬¤¨áª, ¥á«¨ ¥â, â® ¢ 15-ë©
|
||||
DEFINE FDD_NormalCount 0 ; !TODO
|
||||
DEFINE UnusedSettingsFeatures 0 ;
|
||||
;===============================================================;
|
||||
BIN
Crazy BIOS/shared/cb_boot.IMG
Executable file
BIN
Crazy BIOS/shared/cb_boot.IMG
Executable file
Binary file not shown.
@ -80,7 +80,7 @@ FAIL: CALL MESSAGE
|
||||
;
|
||||
MESSAGE: ;R01 Start
|
||||
XOR A
|
||||
OUT (SYS_PORT.ON),A
|
||||
OUT (CNF_PORT.vBIOS),A
|
||||
.loop: LD A,(HL) ;R01
|
||||
INC HL
|
||||
OR A
|
||||
@ -211,7 +211,7 @@ CONTINUE: LD HL,0
|
||||
.no_big_core: ;
|
||||
RUN_CORE: DI
|
||||
XOR A
|
||||
OUT (SYS_PORT.OFF),A
|
||||
OUT (CNF_PORT.vZX_ROM),A
|
||||
;
|
||||
LD A,#10
|
||||
LD BC,#7FFD
|
||||
@ -236,7 +236,7 @@ RUN_CORE: DI
|
||||
CALL MESSAGE
|
||||
;
|
||||
XOR A
|
||||
OUT (SYS_PORT.OFF),A
|
||||
OUT (CNF_PORT.vZX_ROM),A
|
||||
;
|
||||
LD A,(DRIVE)
|
||||
LD BC,Dss.BootDSK.Set
|
||||
|
||||
@ -43,8 +43,8 @@ RST_00:
|
||||
; <[BIOS API]>
|
||||
BLOCK 8-$,#C7 ; #C7 - "RST 0" opcode
|
||||
A0008: PUSH AF
|
||||
LD A,SYS_PORT.PAGE8
|
||||
OUT (SYS_PORT.ON),A
|
||||
LD A,CNF_PORT.BIOS
|
||||
OUT (CNF_PORT.vBIOS),A
|
||||
POP AF
|
||||
RET
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
@ -232,11 +232,11 @@ INITDVC_RET_DRIVE:
|
||||
AND A
|
||||
RET
|
||||
|
||||
INCLUDE 'dss/Drivers/media/shared-drv.asm'
|
||||
INCLUDE 'dss/Drivers/media/ide-drv.asm'
|
||||
INCLUDE 'dss/Drivers/media/fdd-drv.asm'
|
||||
INCLUDE 'dss/Drivers/media/ram_disk-drv.asm'
|
||||
INCLUDE "dss/Drivers/input/MOUSE.ASM"
|
||||
INCLUDE 'crazy estex dss/dss/Drivers/media/shared-drv.asm'
|
||||
INCLUDE 'crazy estex dss/dss/Drivers/media/ide-drv.asm'
|
||||
INCLUDE 'crazy estex dss/dss/Drivers/media/fdd-drv.asm'
|
||||
INCLUDE 'crazy estex dss/dss/Drivers/media/ram_disk-drv.asm'
|
||||
INCLUDE "crazy estex dss/dss/Drivers/input/MOUSE.ASM"
|
||||
/////////////////////////// [ DRIVE TABLES ] \\\\\\\\\\\\\\\\\\\\\\\\\\\;
|
||||
;
|
||||
;------------------------[shared-drv.asm table]------------------------;
|
||||
|
||||
@ -72,8 +72,8 @@ RST_0x00: JP RETFAR ; ;EXECUTE.ASM R12
|
||||
; <[BIOS API]> ;
|
||||
_mInfoBLOCK 8-$,#FF ;
|
||||
RST_0x08: PUSH AF ;
|
||||
LD A,SYS_PORT.PAGE8;
|
||||
OUT (SYS_PORT.ON),A ;
|
||||
LD A,CNF_PORT.BIOS ;
|
||||
OUT (CNF_PORT.vBIOS),A ;
|
||||
POP AF ;
|
||||
RET ;
|
||||
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
if sj.get_define("INCREASE_BUILD") > "0" then
|
||||
dss_build = increase_build("./DSS/build.txt")
|
||||
else
|
||||
dss_build = get_build("./DSS/build.txt")
|
||||
dss_build = get_build("./crazy estex dss/DSS/build.txt")
|
||||
end
|
||||
|
||||
if dss_build > 999 then
|
||||
|
||||
@ -8,6 +8,6 @@ EXP_ID.VER: EQU 0x00000003
|
||||
EXP_ID.MOD: EQU 0x00000006
|
||||
CNF_ID.VER: EQU 0x00000000
|
||||
CNF_ID.MOD: EQU 0x00000000
|
||||
msgStrings.str_ACEX_MODEL: EQU 0x0000244B
|
||||
msgRusStrings.str_ACEX_MODEL: EQU 0x00002E5B
|
||||
msgStrings.str_ACEX_MODEL: EQU 0x0000234B
|
||||
msgRusStrings.str_ACEX_MODEL: EQU 0x00002D5B
|
||||
BETA_BUILD: EQU 0x00000006
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
;ÛÛÛÛÛÛÛ ¨¨æ¨ «¨§ æ¨ï á¨á⥬ëå ¯®à⮢ Z84C15 ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
DI
|
||||
IM 1
|
||||
LD BC,#FF*256 + Z84.SYS.Control
|
||||
XOR A ; Z84.REG.WaitState_Ctrl
|
||||
OUT (C),A ; Z84.SYS.Control
|
||||
@ -14,7 +15,8 @@
|
||||
LD A,1 ; enable CS0, disable CS1
|
||||
OUT (C),A ; Z84.SYS.Data
|
||||
;ÛÛÛÛÛÛÛ ¨¨æ¨ «¨§ æ¨ï DCP ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
LD HL,ADD_PORTS.Code
|
||||
;LD HL,ADD_PORTS.Code
|
||||
LD HL,INIT_PORTS
|
||||
DCP_INIT: LD C,XL
|
||||
LD B,XH
|
||||
LD E,YL
|
||||
@ -111,15 +113,22 @@ ADD_PORTS: ;
|
||||
DB #E4 ; ¢¥è¨© #4004
|
||||
.Data.Size EQU $ - .Data
|
||||
;
|
||||
.Code: LD HL,ADD_PORTS.Data
|
||||
LD DE,#C480
|
||||
LD BC,ADD_PORTS.Data.Size
|
||||
LDIR
|
||||
.Code: ;LD DE,#C480
|
||||
; LD HL,ADD_PORTS.Data
|
||||
; LD BC,ADD_PORTS.Data.Size
|
||||
; LDIR
|
||||
;
|
||||
;ÛÛÛÛÛÛÛ ˆ¨æ¨ «¨§ æ¨ï ¯®à⮢ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
;LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON + CNF_PORT.PENT_RESET + CNF_PORT.SCORP_RESET + CNF_PORT.CNF_512
|
||||
;OUT (SYS_PORT.ROM),A
|
||||
INIT_PORTS: LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON
|
||||
OUT (SYS_PORT.ROM),A
|
||||
;ÛÛÛÛÛÛÛ ˆ¨æ¨ «¨§ æ¨ï áâà ¨æ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
INIT_SLOTS: LD BC,#1FFD
|
||||
LD A,1
|
||||
OUT (C),A
|
||||
LD B,#7F
|
||||
; LD A,#11
|
||||
OUT (C),A
|
||||
;
|
||||
XOR A
|
||||
@ -127,11 +136,8 @@ INIT_SLOTS: LD BC,#1FFD
|
||||
OUT (SLOT1),A
|
||||
LD A,2
|
||||
OUT (SLOT2),A
|
||||
LD A,SYS_PAGE
|
||||
LD A,DCP_PAGE
|
||||
OUT (SLOT3),A
|
||||
;ÛÛÛÛÛÛÛ ˆ¨æ¨ «¨§ æ¨ï ¯®à⮢ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON
|
||||
OUT (SYS_PORT.ROM),A
|
||||
;ÛÛÛÛÛÛÛ ˆ¨æ¨ «¨§ æ¨ï á⥪ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
LD SP,#4000
|
||||
;ÛÛÛÛÛÛÛ <20>¥à¥¡à®á ®á⠢襣®áï ª®¤ ¢ RAM ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
@ -149,18 +155,41 @@ INIT_SLOTS: LD BC,#1FFD
|
||||
; ’“’ Œ› “†… ‚ އ“ ‚ ’ŽŒ †… ŠŽ„… ˆ €„<E282AC>…‘…
|
||||
; áâà ¨æë 0,1,2,#FE
|
||||
;ÛÛÛÛÛÛÛ ˆ¨æ¨ «¨§ æ¨ï áâà ¨æ vROM ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
vROM_MAP: LD BC,#4000
|
||||
LD HL,RESERVED_PAGES.BIOS
|
||||
LD HL,#C900 ; Opcodes RET : NOP
|
||||
LD A,H
|
||||
LD (DOS_OFF),A
|
||||
LD (DOS_ON),HL
|
||||
vROM_MAP: LD HL,RESERVED_PAGES.BIOS
|
||||
LD DE,ADD_PORTS.Data
|
||||
LD A,RESERVED_PAGES.Size
|
||||
.loop: LD E,(HL)
|
||||
OUT (C),E
|
||||
INC C
|
||||
.loop: EX AF,AF'
|
||||
LD A,(HL)
|
||||
LD B,A
|
||||
LD A,(DE)
|
||||
CALL SET_PORTS
|
||||
INC HL
|
||||
INC DE
|
||||
EX AF,AF'
|
||||
DEC A
|
||||
JR NZ,.loop
|
||||
;
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
; ;ÛÛÛÛÛÛÛ ˆ¨æ¨ «¨§ æ¨ï áâà ¨æ vROM ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
; vROM_MAP: LD BC,#4000
|
||||
; LD HL,RESERVED_PAGES.BIOS
|
||||
; LD A,RESERVED_PAGES.Size
|
||||
; .loop: LD E,(HL)
|
||||
; OUT (C),E
|
||||
; INC C
|
||||
; INC HL
|
||||
; DEC A
|
||||
; JR NZ,.loop
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
;ÛÛÛÛÛÛÛ <20> ¡®ç¨© ª®¤ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
; ¤à¥á ¯à®æ¥¤ãàë ®è¨¡ª¨
|
||||
LD HL,ERROR
|
||||
PUSH HL
|
||||
@ -170,16 +199,15 @@ vROM_MAP: LD BC,#4000
|
||||
;ÛÛÛÛÛÛ “áâ ®¢ª áâà ¨æ ¤«ï § £à㧪¨ ¤ ëå ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
CALL Init_Mem
|
||||
;ÛÛÛÛÛÛ ‡ £à㧪 ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
; ¤®¯®«¨â¥«ìë¥ äãªæ¨¨
|
||||
CHECK_IMG: ;LD A,(RESERVED_PAGES.SYS_FN) ; áâà ¨æ ¡ãä¥à , ¥á«¨ ¤à¥á ¢ ®ª¥ #C000 (BLOCK_ID)
|
||||
LD B,1 ; ç¨á«® ç¨â ¥¬ëå ᥪâ®à®¢
|
||||
; ¯à®¢¥àª ID ¤¨áª á BIOS (¤®¯®«¨â¥«ìë¥ äãªæ¨¨)
|
||||
CHECK_IMG: LD B,1 ; ç¨á«® ç¨â ¥¬ëå ᥪâ®à®¢
|
||||
LD HL,#8000 ; ¤à¥á ¡ãä¥à ¤ ëå
|
||||
LD IX,0 ; ¡á®«îâë© ®¬¥à ᥪâ®à áâ àè ï ç áâì
|
||||
LD DE,0 ; ¡á®«îâë© ®¬¥à ᥪâ®à ¬« ¤è ï ç áâì
|
||||
PUSH HL
|
||||
CALL FN_HDD_READ
|
||||
POP HL
|
||||
;ÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
; áà ¢¥¨¥ ¬¥âª¨
|
||||
LD DE,CHECKING_LABEL
|
||||
LD B,CHECKING_LABEL.Size
|
||||
.loop: LD A,(DE)
|
||||
@ -194,6 +222,17 @@ LOAD_DATA: LD A,(RESERVED_PAGES.BIOS)
|
||||
LD B,RESERVED_PAGES.Size * #4000 / 512
|
||||
LD DE,1
|
||||
CALL FN_HDD_READ_NEXT
|
||||
RET C
|
||||
;
|
||||
IF DEBUG
|
||||
LD A,#41
|
||||
LD HL,#C000
|
||||
LD B,1
|
||||
LD D,L
|
||||
LD E,B
|
||||
CALL FN_HDD_READ_NEXT
|
||||
RET C
|
||||
ENDIF
|
||||
XOR A
|
||||
OUT (SLOT1),A
|
||||
JP .IN_RAM + #4000
|
||||
@ -202,11 +241,13 @@ LOAD_DATA: LD A,(RESERVED_PAGES.BIOS)
|
||||
XOR A
|
||||
OUT (C),A
|
||||
;
|
||||
XOR A ;CNF_PORT.BIOS
|
||||
; A = CNF_PORT.BIOS
|
||||
OUT (CNF_PORT.vBIOS),A
|
||||
LD A,#40
|
||||
LD A,DCP_PAGE
|
||||
OUT (SLOT3),A
|
||||
;
|
||||
LD IX,ACEX.Config_ID.Sp2000
|
||||
LD IY,SP2000_Loader_Flag
|
||||
RST 0
|
||||
;JP BEGIN_CB_IMG
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
@ -499,14 +540,46 @@ TEST_HDD_DRV: ;LD HL,#01FE
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
|
||||
ERROR: ;°°°°°°° Œ¨£ ¨¥ « ¬¯®çª®© âãà¡ë °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
.loop: CALL FLASH_LIGHT
|
||||
JR .loop
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
FLASH_LIGHT: PUSH AF
|
||||
PUSH DE
|
||||
PUSH BC
|
||||
LD E,6
|
||||
LD A,SYS_PORT.TURBO.OFF
|
||||
.big_loop: LD BC,0
|
||||
OUT (SYS_PORT.ROM),A
|
||||
OUT (SYS_PORT.RAM),A
|
||||
.loop: DEC BC
|
||||
INC B
|
||||
DJNZ .loop
|
||||
XOR 1
|
||||
JR .big_loop
|
||||
DEC E
|
||||
JR NZ,.big_loop
|
||||
;
|
||||
POP AF
|
||||
POP DE
|
||||
POP BC
|
||||
RET
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
; in: A - ¢ãâ२© ¯®àâ, B - § 票¥ ¤«ï § ¯¨á¨ ¢® ¢ãâ२© ¯®àâ
|
||||
; out: B - áâ ஥ § 票¥ ¢ãâ॥£® ¯®àâ ; <20>¥à¥¤ ¢ë室®¬ ¢®ááâ ¢«¨¢ ¥âáï ª®ä ¯à®¯¨á ï ¢ CONFIG_DE.
|
||||
SET_PORTS:
|
||||
CALL DOS_ON
|
||||
;
|
||||
LD (#C400),A ; ãáâ ®¢¨âì ¢ãâ२© ¯®àâ
|
||||
LD A,B
|
||||
LD BC,0
|
||||
; ‡ ¯¨áì ¯®àâ
|
||||
OUT (C),A ; ãáâ ®¢¨âì ®¢®¥ § 票¥ ¯®àâ
|
||||
;
|
||||
.End: XOR A
|
||||
LD (#C400),A ; ¢¥àãâì ¯®àâ
|
||||
JP DOS_OFF
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
@ -518,6 +591,9 @@ RESERVED_PAGES: ;
|
||||
DB #49 ; Recovery_2 Acex port: #E7
|
||||
DB #4B ; LOGO Acex port: #E4
|
||||
.Size EQU $-RESERVED_PAGES.BIOS
|
||||
IF DEBUG
|
||||
DB #41
|
||||
ENDIF
|
||||
DB #FF ; End of the block
|
||||
.Blocks EQU 1
|
||||
|
||||
@ -534,135 +610,56 @@ END_CB EQU $
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
;ÛÛÛÛÛÛÛ ’ ¡«¨æ DCP ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
DCP_DATA: DW %00'000'0'0100'0000
|
||||
DW %11'000'0'0110'1111
|
||||
DB ACEX.IDE_DATA_1F0
|
||||
DW %01'000'0'0100'0000
|
||||
DW %11'010'0'0110'1111
|
||||
DB ACEX.IDE_DATA_1F0
|
||||
DW %10'000'0'0100'0000
|
||||
DW %11'010'0'0110'1111
|
||||
DB ACEX.IDE_DATA_1F0
|
||||
DW %11'000'0'0100'0000
|
||||
DW %11'000'0'0110'1111
|
||||
DB ACEX.IDE_DATA_1F0
|
||||
;
|
||||
DW %00'000'0'0100'0001
|
||||
DW %00'010'1'1110'1111
|
||||
DB ACEX.IDE_ERROR_1F1
|
||||
DW %00'010'0'0100'0001
|
||||
DW %11'010'1'1110'1111
|
||||
DB ACEX.IDE_ERROR_1F1
|
||||
DW %11'010'0'0100'0001
|
||||
DW %11'010'1'1110'1111
|
||||
DW %00'000'1'1110'1111
|
||||
DB ACEX.IDE_ERROR_1F1
|
||||
;
|
||||
DW %00'000'0'0100'0010
|
||||
DW %00'010'1'1110'1111
|
||||
DB ACEX.IDE_COUNTER_1F2
|
||||
DW %00'010'0'0100'0010
|
||||
DW %11'010'1'1110'1111
|
||||
DB ACEX.IDE_COUNTER_1F2
|
||||
DW %11'010'0'0100'0010
|
||||
DW %11'010'1'1110'1111
|
||||
DW %00'000'1'1110'1111
|
||||
DB ACEX.IDE_COUNTER_1F2
|
||||
;
|
||||
DW %00'000'0'0100'0011
|
||||
DW %00'010'1'1110'1111
|
||||
DB ACEX.IDE_SECTOR_1F3
|
||||
DW %00'010'0'0100'0011
|
||||
DW %11'010'1'1110'1111
|
||||
DB ACEX.IDE_SECTOR_1F3
|
||||
DW %11'010'0'0100'0011
|
||||
DW %11'010'1'1110'1111
|
||||
DW %00'000'1'1110'1111
|
||||
DB ACEX.IDE_SECTOR_1F3
|
||||
;
|
||||
DW %00'000'0'0100'0100
|
||||
DW %00'010'1'1110'1111
|
||||
DB ACEX.IDE_CYLINDER_L_1F4
|
||||
DW %00'010'0'0100'0100
|
||||
DW %11'010'1'1110'1111
|
||||
DB ACEX.IDE_CYLINDER_L_1F4
|
||||
DW %11'010'0'0100'0100
|
||||
DW %11'010'1'1110'1111
|
||||
DW %00'000'1'1110'1111
|
||||
DB ACEX.IDE_CYLINDER_L_1F4
|
||||
;
|
||||
DW %00'000'0'0100'0101
|
||||
DW %00'010'1'1110'1111
|
||||
DB ACEX.IDE_CYLINDER_H_1F5
|
||||
DW %00'010'0'0100'0101
|
||||
DW %11'010'1'1110'1111
|
||||
DB ACEX.IDE_CYLINDER_H_1F5
|
||||
DW %11'010'0'0100'0101
|
||||
DW %11'010'1'1110'1111
|
||||
DW %00'000'1'1110'1111
|
||||
DB ACEX.IDE_CYLINDER_H_1F5
|
||||
;
|
||||
DW %00'000'0'1100'0010
|
||||
DW %00'010'1'1110'1111
|
||||
DB ACEX.IDE_DEVICE_HEAD_1F6
|
||||
DW %00'010'0'1100'0010
|
||||
DW %11'010'1'1110'1111
|
||||
DB ACEX.IDE_DEVICE_HEAD_1F6
|
||||
DW %11'010'0'1100'0010
|
||||
DW %11'010'1'1110'1111
|
||||
DW %00'000'1'1110'1111
|
||||
DB ACEX.IDE_DEVICE_HEAD_1F6
|
||||
;
|
||||
DW %00'000'0'1100'0011
|
||||
DW %00'010'1'1110'1111
|
||||
DB ACEX.IDE_STATUS_CMD_1F7
|
||||
DW %00'010'0'1100'0011
|
||||
DW %11'010'1'1110'1111
|
||||
DB ACEX.IDE_STATUS_CMD_1F7
|
||||
DW %11'010'0'1100'0011
|
||||
DW %11'010'1'1110'1111
|
||||
DW %00'000'1'1110'1111
|
||||
DB ACEX.IDE_STATUS_CMD_1F7
|
||||
;
|
||||
DW %00'000'0'1100'0100
|
||||
DW %00'010'1'1110'1111
|
||||
DB ACEX.IDE_CONTROL_3F6
|
||||
DW %00'010'0'1100'0100
|
||||
DW %11'010'1'1110'1111
|
||||
DB ACEX.IDE_CONTROL_3F6
|
||||
DW %11'010'0'1100'0100
|
||||
DW %11'010'1'1110'1111
|
||||
DW %00'000'1'1110'1111
|
||||
DB ACEX.IDE_CONTROL_3F6
|
||||
;
|
||||
DW %00'000'0'1100'0101
|
||||
DW %00'010'1'1110'1111
|
||||
DB ACEX.IDE_STATUS_3F7
|
||||
DW %00'010'0'1100'0101
|
||||
DW %11'010'1'1110'1111
|
||||
DB ACEX.IDE_STATUS_3F7
|
||||
DW %11'010'0'1100'0101
|
||||
DW %11'010'1'1110'1111
|
||||
DW %00'000'1'1110'1111
|
||||
DB ACEX.IDE_STATUS_3F7
|
||||
;
|
||||
DW %00'000'0'0010'1100
|
||||
DW %11'001'1'1111'1111
|
||||
DB ACEX.IDE_CHANEL_1
|
||||
DW %11'000'0'0010'1100
|
||||
DW %11'001'1'1111'1111
|
||||
DB ACEX.IDE_CHANEL_1
|
||||
;
|
||||
DW %00'000'0'0011'1100
|
||||
DW %11'001'1'1111'1111
|
||||
DB ACEX.IDE_CHANEL_2
|
||||
DW %11'000'0'0011'1100
|
||||
DW %11'001'1'1111'1111
|
||||
DB ACEX.IDE_CHANEL_2
|
||||
;
|
||||
DW %00'000'0'1010'1100
|
||||
DW %11'001'1'1111'1111
|
||||
DB ACEX.RESET
|
||||
DW %11'000'0'1010'1100
|
||||
DW %11'001'1'1111'1111
|
||||
DB ACEX.RESET
|
||||
;
|
||||
DW %00'000'0'0110'1101
|
||||
DW %10'000'1'1111'1111
|
||||
DB ACEX.Scorp_1FFD
|
||||
DW %11'000'0'0110'1101
|
||||
DW %11'000'1'1111'1111
|
||||
DB ACEX.Scorp_1FFD
|
||||
;
|
||||
DW %00'000'0'1110'1101
|
||||
DW %00'100'1'1110'1111
|
||||
@ -670,62 +667,29 @@ DCP_DATA: DW %00'000'0'0100'0000
|
||||
DW %00'100'0'1110'1101
|
||||
DW %11'110'1'1110'1111
|
||||
DB ACEX.Pent_7FFD
|
||||
DW %11'100'0'1110'1101
|
||||
DW %11'100'1'1110'1111
|
||||
DB ACEX.Pent_7FFD
|
||||
DW %10'000'0'0110'1101
|
||||
DW %11'100'1'1110'1111
|
||||
DB ACEX.Pent_7FFD
|
||||
;
|
||||
DW %00'000'0'0101'0110
|
||||
DW %11'001'1'1111'1111
|
||||
DB ACEX.ALL_MODE
|
||||
DW %11'000'0'0101'0110
|
||||
DW %11'001'1'1111'1111
|
||||
DB ACEX.ALL_MODE
|
||||
;
|
||||
DW %00'000'0'0010'0100
|
||||
DW %00'000'0'0010'1111
|
||||
DB ACEX.CNF_PORT
|
||||
;
|
||||
DW %00'000'0'0000'1010
|
||||
DW %00'010'0'0110'1111
|
||||
DB ACEX.SLOT0
|
||||
DW %00'010'0'0000'1010
|
||||
DW %11'010'0'0110'1111
|
||||
DB ACEX.SLOT0
|
||||
DW %11'010'0'0000'1010
|
||||
DW %11'010'0'0110'1111
|
||||
DW %00'000'0'0110'1111
|
||||
DB ACEX.SLOT0
|
||||
;
|
||||
DW %00'000'0'0010'1010
|
||||
DW %00'010'0'0110'1111
|
||||
DB ACEX.SLOT1
|
||||
DW %00'010'0'0010'1010
|
||||
DW %11'010'0'0110'1111
|
||||
DB ACEX.SLOT1
|
||||
DW %11'010'0'0010'1010
|
||||
DW %11'010'0'0110'1111
|
||||
DW %00'000'0'0110'1111
|
||||
DB ACEX.SLOT1
|
||||
;
|
||||
DW %00'000'0'0100'1010
|
||||
DW %00'010'0'0110'1111
|
||||
DB ACEX.SLOT2
|
||||
DW %00'010'0'0100'1010
|
||||
DW %11'010'0'0110'1111
|
||||
DB ACEX.SLOT2
|
||||
DW %11'010'0'0100'1010
|
||||
DW %11'010'0'0110'1111
|
||||
DW %00'000'0'0110'1111
|
||||
DB ACEX.SLOT2
|
||||
;
|
||||
DW %00'000'0'0110'1010
|
||||
DW %00'010'0'0110'1111
|
||||
DB ACEX.SLOT3
|
||||
DW %00'010'0'0110'1010
|
||||
DW %11'010'0'0110'1111
|
||||
DB ACEX.SLOT3
|
||||
DW %11'010'0'0110'1010
|
||||
DW %11'010'0'0110'1111
|
||||
DW %00'000'0'0110'1111
|
||||
DB ACEX.SLOT3
|
||||
; DCP END MARKER
|
||||
DW 0,0,0
|
||||
|
||||
18
Crazy/debug.asm
Normal file
18
Crazy/debug.asm
Normal file
@ -0,0 +1,18 @@
|
||||
INCLUDE 'Shared_Includes/constants/SP2000.inc'
|
||||
ORG 0
|
||||
.start: LD E,8
|
||||
LD A,SYS_PORT.TURBO.OFF
|
||||
.big_loop: LD BC,0
|
||||
OUT (CNF_PORT.vZX_ROM),A
|
||||
.loop: DEC BC
|
||||
INC B
|
||||
DJNZ .loop
|
||||
XOR 1
|
||||
DEC E
|
||||
JR NZ,.big_loop
|
||||
;
|
||||
LD BC,0
|
||||
.loop2: DEC BC
|
||||
INC B
|
||||
DJNZ .loop2
|
||||
JR .start
|
||||
@ -1,7 +1,7 @@
|
||||
|
||||
|
||||
INCLUDE 'Shared_Includes/constants/SP2000.inc'
|
||||
INCLUDE 'Build/updater.inc'
|
||||
INCLUDE 'Crazy BIOS/shared/CompMacro.asm'
|
||||
INCLUDE 'Crazy BIOS/shared/DEFINES.INC'
|
||||
;INCLUDE 'Shared_Includes/structures/FileSystem.inc'
|
||||
;INCLUDE 'Shared_Includes/macroses/macros.z80'
|
||||
;INCLUDE 'Shared_Includes/constants/BIOS_EQU.inc'
|
||||
@ -17,9 +17,8 @@
|
||||
DEFINE image_size_in_sectors flasher_size_in_sectors + bios_size_in_sectros
|
||||
DEFINE TYPE_OF_ACEX 3 ; 3 - 1K30, 5 - 1K50
|
||||
|
||||
MACRO SET_IMG_LABEL
|
||||
.Crazy_IMG_Label: DB "Crazy Blaster Image"
|
||||
ENDM
|
||||
DOS_OFF EQU #4000
|
||||
DOS_ON EQU #3D13
|
||||
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ[ FIRST SECTION - CONF ROM ]ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
@ -34,7 +33,7 @@ END_FIRST_SECTION EQU $
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
|
||||
|
||||
|
||||
/*
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ[ SECOND SECTION - IMAGE ON DRIVE ]ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
@ -51,4 +50,5 @@ END_SECOND_SECTION EQU $
|
||||
;
|
||||
DISPLAY "IMG size = ",/A,END_SECOND_SECTION - BEGIN_CB_IMG
|
||||
OUTEND
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
*/
|
||||
Loading…
Reference in New Issue
Block a user