BIOS starts, DSS loads

This commit is contained in:
Tolik 2024-08-02 02:52:29 +10:00
parent 9b9bb846d8
commit 8210691bd8
15 changed files with 404 additions and 480 deletions

View File

@ -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 MACRO Set_Block text, blk_addr
@ -11,9 +12,13 @@
;[--------------------------------------------------------------------------] ;[--------------------------------------------------------------------------]
ORG 0 ORG 0
DISPLAY '[ Building CB_IMG file ]' 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 ;PAGE #46 BIOS
INCBIN 'Build/Bin/EXP.BIN' INCBIN 'Build/Bin/EXP.BIN'
Set_Block 'EXP free space: ', #4000 Set_Block 'EXP free space: ', #4000
@ -30,7 +35,12 @@
;PAGE #4B LOGO ;PAGE #4B LOGO
INCBIN 'Build/Bin/LOGO.BIN' 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 OUTEND
DISPLAY '[_____________Building CB_IMG file done!_____________]' DISPLAY '[_____________Building CB_IMG file done!_____________]'

View File

@ -2,11 +2,26 @@
; ;
;************************************************************* ;*************************************************************
; ;
; EXPANSION VER 3.00 (C) Peters Plus Ltd. ; EXPANSION VER 3.00 (C) Peters Plus Ltd.
; EXPANSION VER 3.1 (C) Sprinter Team ; 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 *********** ;*********** BEGIN EXPANSION ***********
;*************************************** ;***************************************
@ -35,7 +50,7 @@ BOARD_INFO:
EXP_FNS_2_RET: EXP_FNS_2_RET:
PUSH AF PUSH AF
LD A,vROM.BIOS LD A,vROM.BIOS
OUT (CNF_PORT.vBIOS),A OUT (CNF_PORT.vZX_ROM),A
POP AF POP AF
JR RST_18_1 JR RST_18_1
;======================================= ;=======================================
@ -109,21 +124,13 @@ TABLE_X:
; ;
;======================================= ;=======================================
RESTARTS EQU #FFE0 ;RESTARTS EQU #FFE0
GLOBAL_RESET: ; GLOBAL_RESET:
DI ; DI
IM 1 ; ;
LD HL,RESTARTS ; FLASH_LIGHT
LD DE,RESTARTS_PROG ; ;
LD B,RESTARTS_PROG.Size ; JR NO_RESTART
.compare:
LD A,(DE)
CP (HL)
JR NZ,NO_RESTART
INC HL
INC DE
DJNZ .compare
JP RESTARTS
;======================================= ;=======================================
_mInfoBLOCK #66-$,0 _mInfoBLOCK #66-$,0
NMI_Point: NMI_Point:
@ -142,7 +149,6 @@ NMI_Point:
; IN B,(C) ; IN B,(C)
; CALL SET_ROM_PAGES+#C000 ; CALL SET_ROM_PAGES+#C000
; JP NO_SUMX_EQ ; JP NO_SUMX_EQ
;********************************** ;**********************************
;BEEP: ;BEEP:
@ -209,7 +215,9 @@ BoardID:
; ;
;-----[¯¥à¥å¢ â RESET ­¥ á®áâ®ï«áï]----- ;-----[¯¥à¥å¢ â RESET ­¥ á®áâ®ï«áï]-----
NO_RESTART: GLOBAL_RESET:
DI
IM 1
; á⥪ ¥éñ ­¥ ¨á¯®«ì§ã¥¬!!! ; á⥪ ¥éñ ­¥ ¨á¯®«ì§ã¥¬!!!
LD SP,IX ; á®åà ­¨âì §­ ç¥­¨¥ ¯¥à¥¤ ­­®¥ § £àã§ç¨ª®¬ ª®­äë (¥á«¨ áâ àâ ¯®á«¥ à¥á¥â ) LD SP,IX ; á®åà ­¨âì §­ ç¥­¨¥ ¯¥à¥¤ ­­®¥ § £àã§ç¨ª®¬ ª®­äë (¥á«¨ áâ àâ ¯®á«¥ à¥á¥â )
; ¨­¨æ¨ «¨§ æ¨ï ¢­ãâ७­¨å ¯®à⮢ Z84C15 ¤«ï POST-Tester-  ; ¨­¨æ¨ «¨§ æ¨ï ¢­ãâ७­¨å ¯®à⮢ Z84C15 ¤«ï POST-Tester- 
@ -534,6 +542,8 @@ POST_5_OK:
; ********************************** ; **********************************
ENDMODULE ENDMODULE
;FLASH_LIGHT
MODULE SET_CONFIG_ID MODULE SET_CONFIG_ID
IN A,(SLOT3) IN A,(SLOT3)
@ -544,6 +554,7 @@ POST_5_OK:
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
;-------------[Save IX:IY]-------------- ;-------------[Save IX:IY]--------------
; Don't use IY before this point if it`s normal booting!!! ; Don't use IY before this point if it`s normal booting!!!
LD IX,0 LD IX,0
@ -1001,23 +1012,6 @@ RES128_PROG:
LEN_RES128 EQU $-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]----------------------------; ;----------------------------[Setup Starter]----------------------------;
MODULE Setup_Starter MODULE Setup_Starter
; ¯à®£à ¬¬ , à §¬¥é ¥¬ ï ¯®  ¤à¥áã #C000 ; ¯à®£à ¬¬ , à §¬¥é ¥¬ ï ¯®  ¤à¥áã #C000
@ -1359,11 +1353,11 @@ kbd_loop2:
_mInfoALIGN 256,#FF _mInfoALIGN 256,#FF
; BLOCK #3F00-$,#FF ; BLOCK #3F00-$,#FF
ROM_DISK.Pages.Number: ROM_DISK.Pages.Number:
BYTE ROM_DISK.Pages.Size ; ç¨á«® áâà ­¨æ DB ROM_DISK.Pages.Size ; ç¨á«® áâà ­¨æ
; ã áâà ­¨æ ¢ëáâ ¢«¥­ bit4 ¤«ï ª®à४⭮© ¯®¤áâ ­®¢ª¨ ; ã áâà ­¨æ ¢ëáâ ¢«¥­ bit4 ¤«ï ª®à४⭮© ¯®¤áâ ­®¢ª¨
;(¯®¤à®¡­¥¥ ¢ sp2000.inc - <20>®àâ ã¯à ¢«¥­¨ï áâà ­¨æ ¬¨ <20>‡“) ;(¯®¤à®¡­¥¥ ¢ sp2000.inc - <20>®àâ ã¯à ¢«¥­¨ï áâà ­¨æ ¬¨ <20>‡“)
ROM_DISK.Pages: ; áâà ­¨æë ROM-Disk 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 .Size EQU $-ROM_DISK.Pages
;-----------------------------------------------------------------------; ;-----------------------------------------------------------------------;
;#######################################################################; ;#######################################################################;

View File

@ -667,12 +667,13 @@ INFO_MESSAGE:
CALL TSETUP ;!TODO ¬®¦¥â ¯¨å­ãâì ¥ñ ­  ¯à¥à뢠­¨ï? CALL TSETUP ;!TODO ¬®¦¥â ¯¨å­ãâì ¥ñ ­  ¯à¥à뢠­¨ï?
CALL CONFIGURE_IDE_DRIVES.START CALL CONFIGURE_IDE_DRIVES.START
CALL CTRLKEY ; CALL CTRLKEY
LD A,B ; LD A,B
; [x] 05/07/2024 <CTRL for Recovery> ; ; [x] 05/07/2024 <CTRL for Recovery>
BIT X_CTRL,A ; BIT X_CTRL,A
LD BC,#FFFF ; ¬ àª¥à ¤«ï PrepareToBOOT, ç⮡ £à㧨« Recovery ; LD BC,#FFFF ; ¬ àª¥à ¤«ï PrepareToBOOT, ç⮡ £à㧨« Recovery
JR NZ,RECOVERY_BOOT ; JR NZ,RECOVERY_BOOT
JR RECOVERY_BOOT
; ;
BIT X_ALT,A BIT X_ALT,A
JR NZ,ALT_BOOT JR NZ,ALT_BOOT
@ -689,16 +690,16 @@ RECOVERY_BOOT:
; ;
CALL INT_ON CALL INT_ON
ALT_BOOT: ALT_BOOT:
LD A,msgStrings.bootAltDrv ; LD A,msgStrings.bootAltDrv
LD E,COLORS.CGA.INC.LGREEN ; LD E,COLORS.CGA.INC.LGREEN
CALL POSTMSC ; CALL POSTMSC
LD BC,CMOS_CELL.BootDrives.Mask.AltSysDisk ;#7010 ; LD BC,CMOS_CELL.BootDrives.Mask.AltSysDisk ;#7010
CALL PrepareToBOOT ; CALL PrepareToBOOT
LD A,msgStrings.bootFail ; LD A,msgStrings.bootFail
LD E,COLORS.CGA.INC.LRED ; LD E,COLORS.CGA.INC.LRED
CALL C,POSTMSC ; CALL C,POSTMSC
CALL ScreenPOS.CRLF ; CALL ScreenPOS.CRLF
;NO START DISK - RESTART / SETUP / ZX SPECTRUM mode ;NO START DISK - RESTART / SETUP / ZX SPECTRUM mode
LD BC,CMOS_CELL.Options.Mask.RebootMSG ;#021D LD BC,CMOS_CELL.Options.Mask.RebootMSG ;#021D
@ -864,11 +865,6 @@ RESCREEN: ;R06
RECOVERYstart: RECOVERYstart:
LD A,msgStrings.bootRecovery LD A,msgStrings.bootRecovery
CALL POSTMSG CALL POSTMSG
;
; ‚ë¡®à à ¬¤¨áª  ¤«ï ४ ¢¥à¨
_mRECOVERYrdChooseTYPE RECOVERYrdChooseTYPE
; ¯à¨¡¨¢ ¥¬ ¯®á«¥¤­¨© à ¬¤¨áª, ¥á«¨ § ­ïâ ; ¯à¨¡¨¢ ¥¬ ¯®á«¥¤­¨© à ¬¤¨áª, ¥á«¨ § ­ïâ
.killRAMdisk: LD A,SYS_PAGE.RAMD_KEYS.NUM-1 .killRAMdisk: LD A,SYS_PAGE.RAMD_KEYS.NUM-1
LD (.RDkey),A LD (.RDkey),A
@ -876,6 +872,7 @@ RECOVERYstart:
JR NC,.setRAMdisk JR NC,.setRAMdisk
JR Z,.setRAMdisk JR Z,.setRAMdisk
RET ; ­¥¯®­ïâ­ ï ®è¨¡ª  - ¢ë室¨¬ RET ; ­¥¯®­ïâ­ ï ®è¨¡ª  - ¢ë室¨¬
;
.setRAMdisk: LD A,(.RDkey) .setRAMdisk: LD A,(.RDkey)
LD B,ROM_DISK.Pages.Size LD B,ROM_DISK.Pages.Size
CALL EMM.GetMemRMD CALL EMM.GetMemRMD
@ -883,15 +880,69 @@ RECOVERYstart:
DEC A DEC A
JR Z,.FreeMem ; ®è¨¡ª  - ­¥¤®áâ â®ç­® ¯ ¬ïâ¨, ¢ë§ë¢ ¥¬ ®ç¨áâªã ¯ ¬ï⨠JR Z,.FreeMem ; ®è¨¡ª  - ­¥¤®áâ â®ç­® ¯ ¬ïâ¨, ¢ë§ë¢ ¥¬ ®ç¨áâªã ¯ ¬ïâ¨
RET ; ­¥¯®­ïâ­ ï ®è¨¡ª  - ¢ë室¨¬ RET ; ­¥¯®­ïâ­ ï ®è¨¡ª  - ¢ë室¨¬
;
.FreeMem: CALL EMM.FullInit .FreeMem: CALL EMM.FullInit
JR .killRAMdisk JR .killRAMdisk
; ;
; ‚室: A - RAM block ID ; ‚室: A - RAM block ID
.IMGread: .IMGread: LD HL,TEMP
; ‚ à¨ ­â ª®¯¨à®¢ ­¨ï ROM -> RAM disk CALL EMM.GetMemBlkPages ; ª¨¤ ¥¬ ¢ ¡ãä¥à ­®¬¥à  áâà ­¨æ RAM disk
_mRECOVERYmountTYPE RECOVERYmountTYPE
; 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 ;Exit from "ROM Disk to RAM disk" procedure
.RDkey+*: LD A,0 .RDkey+*: LD A,0
OR DRIVE_CODES.SPRINTER.RAM OR DRIVE_CODES.SPRINTER.RAM
@ -908,121 +959,122 @@ PrepareToBOOT: ;CALL INT_ON
CALL INT_OFF CALL INT_OFF
; âãâ ­¥ ¤®«¦­® ¡ëâì ¨á¯®à祭® §­ ç¥­¨¥ BC ; âãâ ­¥ ¤®«¦­® ¡ëâì ¨á¯®à祭® §­ ç¥­¨¥ BC
; [x] 05/07/2024 <CTRL for Recovery> ; [x] 05/07/2024 <CTRL for Recovery>
INC BC ; INC BC
LD A,B ; LD A,B
OR C ; OR C
JP Z,RECOVERYstart ; JP Z,RECOVERYstart
DEC BC ; DEC BC
; ;
CALL G_VALUE ; CALL G_VALUE
LD B,DRIVE_CODES.SPRINTER.FDD ; LD B,DRIVE_CODES.SPRINTER.FDD
; FDD ; FDD
OR A ; OR A
JR Z,FDSTART ; FDD A: ; JR Z,FDSTART ; FDD A:
INC B ; INC B
DEC A ; DEC A
JR Z,FDSTART ; FDD B: ; JR Z,FDSTART ; FDD B:
; IDE ; ; IDE
LD B,DRIVE_CODES.SPRINTER.HDD ; LD B,DRIVE_CODES.SPRINTER.HDD
DEC A ; DEC A
JR Z,HDSTART ; JR Z,HDSTART
INC B ;LD B,#81 ; INC B ;LD B,#81
DEC A ; DEC A
JR Z,HDSTART ; JR Z,HDSTART
INC B ;LD B,#82 ; INC B ;LD B,#82
DEC A ; DEC A
JR Z,HDSTART ; JR Z,HDSTART
INC B ;LD B,#83 ; INC B ;LD B,#83
DEC A ; DEC A
JR Z,HDSTART ; JR Z,HDSTART
; RAM ; ; RAM
DEC A ; DEC A
JR Z,RDSTART ; JR Z,RDSTART
; ROM ; ; ROM
DEC A ; DEC A
JP Z,RECOVERYstart ; JP Z,RECOVERYstart
; Error ; ; Error
SCF ; SCF
RET ; RET
JP RECOVERYstart
FDSTART: ; FDSTART:
PUSH BC ; PUSH BC
PUSH BC ; PUSH BC
LD A,msgStrings.bootFdd ; LD A,msgStrings.bootFdd
CALL POSTMSG ; CALL POSTMSG
POP AF ; POP AF
CALL FDD_5x_RESET ; CALL FDD_5x_RESET
POP BC ; POP BC
RET C ; RET C
JP OS_LOAD ; JP OS_LOAD
;!TODO ; ;!TODO
CDSTART: ; CDSTART:
PUSH BC ; PUSH BC
LD A,msgStrings.bootCd ; LD A,msgStrings.bootCd
CALL POSTMSG ; CALL POSTMSG
POP AF ; POP AF
PUSH AF ; PUSH AF
CALL PRINT_CHANEL ; CALL PRINT_CHANEL
; ; ;
POP BC ; POP BC
SET 6,B ; SET 6,B
SCF ; SCF
RET ; RET
RDSTART: ; RDSTART:
LD A,msgStrings.bootRamDrv ; LD A,msgStrings.bootRamDrv
CALL POSTMSG ; CALL POSTMSG
LD B,DRIVE_CODES.SPRINTER.RAM ; 6 - ⨯ ¤à ©¢  RAM-DRV, 0 - ­®¬¥à ¤à ©¢  ; LD B,DRIVE_CODES.SPRINTER.RAM ; 6 - ⨯ ¤à ©¢  RAM-DRV, 0 - ­®¬¥à ¤à ©¢ 
.loop: PUSH BC ; .loop: PUSH BC
CALL OS_LOAD ; CALL OS_LOAD
POP BC ; POP BC
INC B ; INC B
LD A,DRIVE_CODES.SPRINTER.RAM + SYS_PAGE.RAMD_KEYS.NUM-1 ; ¬ ªá¨¬ «ì­ë© ­®¬¥à à ¬¤¨áª  ; LD A,DRIVE_CODES.SPRINTER.RAM + SYS_PAGE.RAMD_KEYS.NUM-1 ; ¬ ªá¨¬ «ì­ë© ­®¬¥à à ¬¤¨áª 
SUB B ; SUB B
JR NC,.loop ; JR NC,.loop
RET ; RET
HDSTART: ; HDSTART:
IN A,(SLOT3) ; IN A,(SLOT3)
EX AF,AF' ; EX AF,AF'
LD A,SYS_PAGE ; LD A,SYS_PAGE
OUT (SLOT3),A ; OUT (SLOT3),A
LD A,B ; LD A,B
; ; ;
AND #03 ;R02 %00000011 ; AND #03 ;R02 %00000011
LD IY,IDE.INIT_TBL_IDE0 ; LD IY,IDE.INIT_TBL_IDE0
JR Z,.next ; JR Z,.next
; ; ;
LD IY,IDE.INIT_TBL_IDE1 ; LD IY,IDE.INIT_TBL_IDE1
CP 1 ;R02 ; CP 1 ;R02
JR Z,.next ; JR Z,.next
; ; ;
LD IY,IDE.INIT_TBL_IDE2 ;R02 ; LD IY,IDE.INIT_TBL_IDE2 ;R02
CP 2 ;R02 ; CP 2 ;R02
JR Z,.next ; JR Z,.next
; ; ;
LD IY,IDE.INIT_TBL_IDE3 ;R02 ; LD IY,IDE.INIT_TBL_IDE3 ;R02
; ; ;
.next: LD A,(IY+IDE.HDD_INIT_TABLE.DriveType) ; .next: LD A,(IY+IDE.HDD_INIT_TABLE.DriveType)
EX AF,AF' ; EX AF,AF'
OUT (SLOT3),A ; OUT (SLOT3),A
EX AF,AF' ; EX AF,AF'
CP IDE.Device.CDROM ; CP IDE.Device.CDROM
JP Z,CDSTART ; JP Z,CDSTART
PUSH AF ; PUSH AF
PUSH BC ; PUSH BC
LD A,msgStrings.bootHdd ; LD A,msgStrings.bootHdd
CALL POSTMSG ; CALL POSTMSG
POP AF ; POP AF
PUSH AF ; PUSH AF
CALL PRINT_CHANEL ; CALL PRINT_CHANEL
POP BC ; POP BC
POP AF ; POP AF
CP #FF ; CP #FF
SCF ; SCF
RET Z ; RET Z
OS_LOAD: OS_LOAD:
LD HL,#0000 LD HL,#0000
LD IX,#0001 LD IX,#0001

View File

@ -1,26 +1,29 @@
; ;
MACRO ShowInfo text, in_disp MACRO ShowInfo text, in_disp
/* ; DISPLAY ' '
DISPLAY ' ' ; DISPLAY '[*] ', text
DISPLAY '[*] ', text ; IF in_disp
IF in_disp ; DISPLAY 'ROM:'
DISPLAY 'ROM:' ; DISPLAY ' ORG: ',/H, $$$
DISPLAY ' ORG: ',/H, $$$ ; DISPLAY ' PAGE: ',/H, $$$$
DISPLAY ' PAGE: ',/H, $$$$ ; DISPLAY 'MEM:'
DISPLAY 'MEM:' ; DISPLAY ' DISP: ',/H, $
DISPLAY ' DISP: ',/H, $ ; DISPLAY ' PAGE: ',/H, $$
DISPLAY ' PAGE: ',/H, $$ ; ELSE
ELSE ; DISPLAY 'ROM:'
DISPLAY 'ROM:' ; DISPLAY ' ORG: ',/H, $
DISPLAY ' ORG: ',/H, $ ; DISPLAY ' PAGE: ',/H, $$
DISPLAY ' PAGE: ',/H, $$ ; ENDIF
ENDIF ; DISPLAY '[X]'
DISPLAY '[X]' ; DISPLAY ' '
DISPLAY ' '
*/
ENDM ENDM
; ;
MACRO SET_IMG_LABEL
.Crazy_IMG_Label: DB "Crazy Blaster Image"
ENDM
; ;
; ‚室: è¨à¨­  á¯à ©â , ¢ëá®â , ª®®à¤¨­ â  X, ª®®à¤¨­ â  Y,  ¤à¥á á¯à ©â  ¢ ¯ ¬ï⨠; ‚室: è¨à¨­  á¯à ©â , ¢ëá®â , ª®®à¤¨­ â  X, ª®®à¤¨­ â  Y,  ¤à¥á á¯à ©â  ¢ ¯ ¬ïâ¨
MACRO EasterTable width, height, Xcoord, Ycoord, addr MACRO EasterTable width, height, Xcoord, Ycoord, addr
@ -32,123 +35,6 @@
ENDM 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 MACRO RST_to_BIOS

View File

@ -1,6 +1,7 @@
;=======================[All shared EQUs]=======================; ;=======================[All shared EQUs]=======================;
BETA_BUILD EQU 6 ; ¤®¡ ¢«ï¥â áâப㠨 á®®¡é¥­¨¥ ® â¥á⮢®© ᡮથ ­  áâ à⮢®¬ íªà ­¥ BETA_BUILD EQU 6 ; ¤®¡ ¢«ï¥â áâப㠨 á®®¡é¥­¨¥ ® â¥á⮢®© ᡮથ ­  áâ à⮢®¬ íªà ­¥
;======================[All shared defines]=====================; ;======================[All shared defines]=====================;
DEFINE DEBUG 0 ;
DEFINE SP2000_Loader_Flag #0107 ; DEFINE SP2000_Loader_Flag #0107 ;
DEFINE IDE_Optimization 1 ; á«¥£ª  ®¯â¨¬¨§¨àã¥â ­¥ª®â®àë¥ ¯à®æ¥¤ãàë à ¡®âë á HDD DEFINE IDE_Optimization 1 ; á«¥£ª  ®¯â¨¬¨§¨àã¥â ­¥ª®â®àë¥ ¯à®æ¥¤ãàë à ¡®âë á HDD
DEFINE NeedSafePort_Y 1 ; ¥á«¨ 0, â® ¢ ०¨¬¥ ¡¥§  ªá¥«ï ­¥ª®â®àë¥ ¯à®æ¥¤ãàë ¬®£ãâ § áà âì íªà ­ DEFINE NeedSafePort_Y 1 ; ¥á«¨ 0, â® ¢ ०¨¬¥ ¡¥§  ªá¥«ï ­¥ª®â®àë¥ ¯à®æ¥¤ãàë ¬®£ãâ § áà âì íªà ­
@ -15,7 +16,6 @@ BETA_BUILD EQU 6 ;
;----------------------------[ TEST ]---------------------------; ;----------------------------[ TEST ]---------------------------;
DEFINE HDDwriteProtect 0 ; áâ à ï ä¨èª  ¤«ï ä㭪権 5x DEFINE HDDwriteProtect 0 ; áâ à ï ä¨èª  ¤«ï ä㭪権 5x
DEFINE RECOVERYmountTYPE 1 ; 1 - ¡ëáâàë© ­¥¬­®£® § å à¤ª®¦¥­ë© ¢ à¨ ­â. 2 - ¡®«¥¥ "¯à ¢¨«ì­ë©" DEFINE RECOVERYmountTYPE 1 ; 1 - ¡ëáâàë© ­¥¬­®£® § å à¤ª®¦¥­ë© ¢ à¨ ­â. 2 - ¡®«¥¥ "¯à ¢¨«ì­ë©"
DEFINE RECOVERYrdChooseTYPE 1 ; 1 - RECOVERY £à㧨âáï ¢ ¤¨áª 15, 2 - ¨é¥âáï ᢮¡®¤­ë© à ¬¤¨áª, ¥á«¨ ­¥â, â® ¢ 15-ë©
DEFINE FDD_NormalCount 0 ; !TODO DEFINE FDD_NormalCount 0 ; !TODO
DEFINE UnusedSettingsFeatures 0 ; DEFINE UnusedSettingsFeatures 0 ;
;===============================================================; ;===============================================================;

BIN
Crazy BIOS/shared/cb_boot.IMG Executable file

Binary file not shown.

View File

@ -80,7 +80,7 @@ FAIL: CALL MESSAGE
; ;
MESSAGE: ;R01 Start MESSAGE: ;R01 Start
XOR A XOR A
OUT (SYS_PORT.ON),A OUT (CNF_PORT.vBIOS),A
.loop: LD A,(HL) ;R01 .loop: LD A,(HL) ;R01
INC HL INC HL
OR A OR A
@ -211,7 +211,7 @@ CONTINUE: LD HL,0
.no_big_core: ; .no_big_core: ;
RUN_CORE: DI RUN_CORE: DI
XOR A XOR A
OUT (SYS_PORT.OFF),A OUT (CNF_PORT.vZX_ROM),A
; ;
LD A,#10 LD A,#10
LD BC,#7FFD LD BC,#7FFD
@ -236,7 +236,7 @@ RUN_CORE: DI
CALL MESSAGE CALL MESSAGE
; ;
XOR A XOR A
OUT (SYS_PORT.OFF),A OUT (CNF_PORT.vZX_ROM),A
; ;
LD A,(DRIVE) LD A,(DRIVE)
LD BC,Dss.BootDSK.Set LD BC,Dss.BootDSK.Set

View File

@ -43,8 +43,8 @@ RST_00:
; <[BIOS API]> ; <[BIOS API]>
BLOCK 8-$,#C7 ; #C7 - "RST 0" opcode BLOCK 8-$,#C7 ; #C7 - "RST 0" opcode
A0008: PUSH AF A0008: PUSH AF
LD A,SYS_PORT.PAGE8 LD A,CNF_PORT.BIOS
OUT (SYS_PORT.ON),A OUT (CNF_PORT.vBIOS),A
POP AF POP AF
RET RET
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
@ -232,11 +232,11 @@ INITDVC_RET_DRIVE:
AND A AND A
RET RET
INCLUDE 'dss/Drivers/media/shared-drv.asm' INCLUDE 'crazy estex dss/dss/Drivers/media/shared-drv.asm'
INCLUDE 'dss/Drivers/media/ide-drv.asm' INCLUDE 'crazy estex dss/dss/Drivers/media/ide-drv.asm'
INCLUDE 'dss/Drivers/media/fdd-drv.asm' INCLUDE 'crazy estex dss/dss/Drivers/media/fdd-drv.asm'
INCLUDE 'dss/Drivers/media/ram_disk-drv.asm' INCLUDE 'crazy estex dss/dss/Drivers/media/ram_disk-drv.asm'
INCLUDE "dss/Drivers/input/MOUSE.ASM" INCLUDE "crazy estex dss/dss/Drivers/input/MOUSE.ASM"
/////////////////////////// [ DRIVE TABLES ] \\\\\\\\\\\\\\\\\\\\\\\\\\\; /////////////////////////// [ DRIVE TABLES ] \\\\\\\\\\\\\\\\\\\\\\\\\\\;
; ;
;------------------------[shared-drv.asm table]------------------------; ;------------------------[shared-drv.asm table]------------------------;

View File

@ -72,8 +72,8 @@ RST_0x00: JP RETFAR ; ;EXECUTE.ASM R12
; <[BIOS API]> ; ; <[BIOS API]> ;
_mInfoBLOCK 8-$,#FF ; _mInfoBLOCK 8-$,#FF ;
RST_0x08: PUSH AF ; RST_0x08: PUSH AF ;
LD A,SYS_PORT.PAGE8; LD A,CNF_PORT.BIOS ;
OUT (SYS_PORT.ON),A ; OUT (CNF_PORT.vBIOS),A ;
POP AF ; POP AF ;
RET ; RET ;
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';

View File

@ -10,7 +10,7 @@
if sj.get_define("INCREASE_BUILD") > "0" then if sj.get_define("INCREASE_BUILD") > "0" then
dss_build = increase_build("./DSS/build.txt") dss_build = increase_build("./DSS/build.txt")
else else
dss_build = get_build("./DSS/build.txt") dss_build = get_build("./crazy estex dss/DSS/build.txt")
end end
if dss_build > 999 then if dss_build > 999 then

View File

@ -8,6 +8,6 @@ EXP_ID.VER: EQU 0x00000003
EXP_ID.MOD: EQU 0x00000006 EXP_ID.MOD: EQU 0x00000006
CNF_ID.VER: EQU 0x00000000 CNF_ID.VER: EQU 0x00000000
CNF_ID.MOD: EQU 0x00000000 CNF_ID.MOD: EQU 0x00000000
msgStrings.str_ACEX_MODEL: EQU 0x0000244B msgStrings.str_ACEX_MODEL: EQU 0x0000234B
msgRusStrings.str_ACEX_MODEL: EQU 0x00002E5B msgRusStrings.str_ACEX_MODEL: EQU 0x00002D5B
BETA_BUILD: EQU 0x00000006 BETA_BUILD: EQU 0x00000006

View File

@ -1,5 +1,6 @@
;ÛÛÛÛÛÛÛ ¨­¨æ¨ «¨§ æ¨ï á¨á⥬­ëå ¯®à⮢ Z84C15 ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ; ;ÛÛÛÛÛÛÛ ¨­¨æ¨ «¨§ æ¨ï á¨á⥬­ëå ¯®à⮢ Z84C15 ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
DI DI
IM 1
LD BC,#FF*256 + Z84.SYS.Control LD BC,#FF*256 + Z84.SYS.Control
XOR A ; Z84.REG.WaitState_Ctrl XOR A ; Z84.REG.WaitState_Ctrl
OUT (C),A ; Z84.SYS.Control OUT (C),A ; Z84.SYS.Control
@ -14,7 +15,8 @@
LD A,1 ; enable CS0, disable CS1 LD A,1 ; enable CS0, disable CS1
OUT (C),A ; Z84.SYS.Data OUT (C),A ; Z84.SYS.Data
;ÛÛÛÛÛÛÛ ¨­¨æ¨ «¨§ æ¨ï DCP ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ; ;ÛÛÛÛÛÛÛ ¨­¨æ¨ «¨§ æ¨ï DCP ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
LD HL,ADD_PORTS.Code ;LD HL,ADD_PORTS.Code
LD HL,INIT_PORTS
DCP_INIT: LD C,XL DCP_INIT: LD C,XL
LD B,XH LD B,XH
LD E,YL LD E,YL
@ -111,15 +113,22 @@ ADD_PORTS: ;
DB #E4 ; ¢­¥è­¨© #4004 DB #E4 ; ¢­¥è­¨© #4004
.Data.Size EQU $ - .Data .Data.Size EQU $ - .Data
; ;
.Code: LD HL,ADD_PORTS.Data .Code: ;LD DE,#C480
LD DE,#C480 ; LD HL,ADD_PORTS.Data
LD BC,ADD_PORTS.Data.Size ; LD BC,ADD_PORTS.Data.Size
LDIR ; 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 INIT_SLOTS: LD BC,#1FFD
LD A,1 LD A,1
OUT (C),A OUT (C),A
LD B,#7F LD B,#7F
; LD A,#11
OUT (C),A OUT (C),A
; ;
XOR A XOR A
@ -127,11 +136,8 @@ INIT_SLOTS: LD BC,#1FFD
OUT (SLOT1),A OUT (SLOT1),A
LD A,2 LD A,2
OUT (SLOT2),A OUT (SLOT2),A
LD A,SYS_PAGE LD A,DCP_PAGE
OUT (SLOT3),A OUT (SLOT3),A
;ÛÛÛÛÛÛÛ ˆ­¨æ¨ «¨§ æ¨ï ¯®à⮢ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON
OUT (SYS_PORT.ROM),A
;ÛÛÛÛÛÛÛ ˆ­¨æ¨ «¨§ æ¨ï á⥪  ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ; ;ÛÛÛÛÛÛÛ ˆ­¨æ¨ «¨§ æ¨ï á⥪  ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
LD SP,#4000 LD SP,#4000
;ÛÛÛÛÛÛÛ <20>¥à¥¡à®á ®á⠢襣®áï ª®¤  ¢ RAM ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ; ;ÛÛÛÛÛÛÛ <20>¥à¥¡à®á ®á⠢襣®áï ª®¤  ¢ RAM ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
@ -149,18 +155,41 @@ INIT_SLOTS: LD BC,#1FFD
; ’“’ Œ› “†… އ“ ’ŽŒ †… ŠŽ„… ˆ €„<E282AC> ; ’“’ Œ› “†… އ“ ’ŽŒ †… ŠŽ„… ˆ €„<E282AC>
; áâà ­¨æë 0,1,2,#FE ; áâà ­¨æë 0,1,2,#FE
;ÛÛÛÛÛÛÛ ˆ­¨æ¨ «¨§ æ¨ï áâà ­¨æ vROM ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ; ;ÛÛÛÛÛÛÛ ˆ­¨æ¨ «¨§ æ¨ï áâà ­¨æ vROM ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
vROM_MAP: LD BC,#4000 LD HL,#C900 ; Opcodes RET : NOP
LD HL,RESERVED_PAGES.BIOS 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 LD A,RESERVED_PAGES.Size
.loop: LD E,(HL) .loop: EX AF,AF'
OUT (C),E LD A,(HL)
INC C LD B,A
LD A,(DE)
CALL SET_PORTS
INC HL INC HL
INC DE
EX AF,AF'
DEC A DEC A
JR NZ,.loop 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> ¡®ç¨© ª®¤ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ; ;ÛÛÛÛÛÛÛ <20> ¡®ç¨© ª®¤ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ; ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
LD A,SYS_PAGE
OUT (SLOT3),A
;  ¤à¥á ¯à®æ¥¤ãàë ®è¨¡ª¨ ;  ¤à¥á ¯à®æ¥¤ãàë ®è¨¡ª¨
LD HL,ERROR LD HL,ERROR
PUSH HL PUSH HL
@ -170,16 +199,15 @@ vROM_MAP: LD BC,#4000
;ÛÛÛÛÛÛ “áâ ­®¢ª  áâà ­¨æ ¤«ï § £à㧪¨ ¤ ­­ëå ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ; ;ÛÛÛÛÛÛ “áâ ­®¢ª  áâà ­¨æ ¤«ï § £à㧪¨ ¤ ­­ëå ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
CALL Init_Mem CALL Init_Mem
;ÛÛÛÛÛÛ ‡ £à㧪  ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ; ;ÛÛÛÛÛÛ ‡ £à㧪  ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
; ¤®¯®«­¨â¥«ì­ë¥ ä㭪樨 ; ¯à®¢¥àª  ID ¤¨áª  á BIOS (¤®¯®«­¨â¥«ì­ë¥ ä㭪樨)
CHECK_IMG: ;LD A,(RESERVED_PAGES.SYS_FN) ; áâà ­¨æ  ¡ãä¥à , ¥á«¨  ¤à¥á ¢ ®ª­¥ #C000 (BLOCK_ID) CHECK_IMG: LD B,1 ; ç¨á«® ç¨â ¥¬ëå ᥪâ®à®¢
LD B,1 ; ç¨á«® ç¨â ¥¬ëå ᥪâ®à®¢
LD HL,#8000 ;  ¤à¥á ¡ãä¥à  ¤ ­­ëå LD HL,#8000 ;  ¤à¥á ¡ãä¥à  ¤ ­­ëå
LD IX,0 ;  ¡á®«îâ­ë© ­®¬¥à ᥪâ®à  áâ àè ï ç áâì LD IX,0 ;  ¡á®«îâ­ë© ­®¬¥à ᥪâ®à  áâ àè ï ç áâì
LD DE,0 ;  ¡á®«îâ­ë© ­®¬¥à ᥪâ®à  ¬« ¤è ï ç áâì LD DE,0 ;  ¡á®«îâ­ë© ­®¬¥à ᥪâ®à  ¬« ¤è ï ç áâì
PUSH HL PUSH HL
CALL FN_HDD_READ CALL FN_HDD_READ
POP HL POP HL
;ÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ; ; áà ¢­¥­¨¥ ¬¥âª¨
LD DE,CHECKING_LABEL LD DE,CHECKING_LABEL
LD B,CHECKING_LABEL.Size LD B,CHECKING_LABEL.Size
.loop: LD A,(DE) .loop: LD A,(DE)
@ -194,6 +222,17 @@ LOAD_DATA: LD A,(RESERVED_PAGES.BIOS)
LD B,RESERVED_PAGES.Size * #4000 / 512 LD B,RESERVED_PAGES.Size * #4000 / 512
LD DE,1 LD DE,1
CALL FN_HDD_READ_NEXT 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 XOR A
OUT (SLOT1),A OUT (SLOT1),A
JP .IN_RAM + #4000 JP .IN_RAM + #4000
@ -202,11 +241,13 @@ LOAD_DATA: LD A,(RESERVED_PAGES.BIOS)
XOR A XOR A
OUT (C),A OUT (C),A
; ;
XOR A ;CNF_PORT.BIOS ; A = CNF_PORT.BIOS
OUT (CNF_PORT.vBIOS),A OUT (CNF_PORT.vBIOS),A
LD A,#40 LD A,DCP_PAGE
OUT (SLOT3),A OUT (SLOT3),A
; ;
LD IX,ACEX.Config_ID.Sp2000
LD IY,SP2000_Loader_Flag
RST 0 RST 0
;JP BEGIN_CB_IMG ;JP BEGIN_CB_IMG
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ; ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
@ -499,14 +540,46 @@ TEST_HDD_DRV: ;LD HL,#01FE
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; ;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
ERROR: ;°°°°°°° Œ¨£ ­¨¥ « ¬¯®çª®© âãà¡ë °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°; ERROR: ;°°°°°°° Œ¨£ ­¨¥ « ¬¯®çª®© âãà¡ë °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
.loop: CALL FLASH_LIGHT
JR .loop
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
FLASH_LIGHT: PUSH AF
PUSH DE
PUSH BC
LD E,6
LD A,SYS_PORT.TURBO.OFF LD A,SYS_PORT.TURBO.OFF
.big_loop: LD BC,0 .big_loop: LD BC,0
OUT (SYS_PORT.ROM),A OUT (SYS_PORT.RAM),A
.loop: DEC BC .loop: DEC BC
INC B INC B
DJNZ .loop DJNZ .loop
XOR 1 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 #49 ; Recovery_2 Acex port: #E7
DB #4B ; LOGO Acex port: #E4 DB #4B ; LOGO Acex port: #E4
.Size EQU $-RESERVED_PAGES.BIOS .Size EQU $-RESERVED_PAGES.BIOS
IF DEBUG
DB #41
ENDIF
DB #FF ; End of the block DB #FF ; End of the block
.Blocks EQU 1 .Blocks EQU 1
@ -534,135 +610,56 @@ END_CB EQU $
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ; ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
;ÛÛÛÛÛÛÛ ’ ¡«¨æ  DCP ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ; ;ÛÛÛÛÛÛÛ ’ ¡«¨æ  DCP ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
DCP_DATA: DW %00'000'0'0100'0000 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 DW %11'000'0'0110'1111
DB ACEX.IDE_DATA_1F0 DB ACEX.IDE_DATA_1F0
; ;
DW %00'000'0'0100'0001 DW %00'000'0'0100'0001
DW %00'010'1'1110'1111 DW %00'000'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
DB ACEX.IDE_ERROR_1F1 DB ACEX.IDE_ERROR_1F1
; ;
DW %00'000'0'0100'0010 DW %00'000'0'0100'0010
DW %00'010'1'1110'1111 DW %00'000'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
DB ACEX.IDE_COUNTER_1F2 DB ACEX.IDE_COUNTER_1F2
; ;
DW %00'000'0'0100'0011 DW %00'000'0'0100'0011
DW %00'010'1'1110'1111 DW %00'000'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
DB ACEX.IDE_SECTOR_1F3 DB ACEX.IDE_SECTOR_1F3
; ;
DW %00'000'0'0100'0100 DW %00'000'0'0100'0100
DW %00'010'1'1110'1111 DW %00'000'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
DB ACEX.IDE_CYLINDER_L_1F4 DB ACEX.IDE_CYLINDER_L_1F4
; ;
DW %00'000'0'0100'0101 DW %00'000'0'0100'0101
DW %00'010'1'1110'1111 DW %00'000'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
DB ACEX.IDE_CYLINDER_H_1F5 DB ACEX.IDE_CYLINDER_H_1F5
; ;
DW %00'000'0'1100'0010 DW %00'000'0'1100'0010
DW %00'010'1'1110'1111 DW %00'000'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
DB ACEX.IDE_DEVICE_HEAD_1F6 DB ACEX.IDE_DEVICE_HEAD_1F6
; ;
DW %00'000'0'1100'0011 DW %00'000'0'1100'0011
DW %00'010'1'1110'1111 DW %00'000'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
DB ACEX.IDE_STATUS_CMD_1F7 DB ACEX.IDE_STATUS_CMD_1F7
; ;
DW %00'000'0'1100'0100 DW %00'000'0'1100'0100
DW %00'010'1'1110'1111 DW %00'000'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
DB ACEX.IDE_CONTROL_3F6 DB ACEX.IDE_CONTROL_3F6
; ;
DW %00'000'0'1100'0101 DW %00'000'0'1100'0101
DW %00'010'1'1110'1111 DW %00'000'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
DB ACEX.IDE_STATUS_3F7 DB ACEX.IDE_STATUS_3F7
; ;
DW %00'000'0'0010'1100 DW %00'000'0'0010'1100
DW %11'001'1'1111'1111 DW %11'001'1'1111'1111
DB ACEX.IDE_CHANEL_1 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 %00'000'0'0011'1100
DW %11'001'1'1111'1111 DW %11'001'1'1111'1111
DB ACEX.IDE_CHANEL_2 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 %00'000'0'0110'1101
DW %10'000'1'1111'1111 DW %10'000'1'1111'1111
DB ACEX.Scorp_1FFD 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'000'0'1110'1101
DW %00'100'1'1110'1111 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 %00'100'0'1110'1101
DW %11'110'1'1110'1111 DW %11'110'1'1110'1111
DB ACEX.Pent_7FFD 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 %00'000'0'0101'0110
DW %11'001'1'1111'1111 DW %11'001'1'1111'1111
DB ACEX.ALL_MODE 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'0100
DW %00'000'0'0010'1111 DW %00'000'0'0010'1111
DB ACEX.CNF_PORT DB ACEX.CNF_PORT
; ;
DW %00'000'0'0000'1010 DW %00'000'0'0000'1010
DW %00'010'0'0110'1111 DW %00'000'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
DB ACEX.SLOT0 DB ACEX.SLOT0
; ;
DW %00'000'0'0010'1010 DW %00'000'0'0010'1010
DW %00'010'0'0110'1111 DW %00'000'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
DB ACEX.SLOT1 DB ACEX.SLOT1
; ;
DW %00'000'0'0100'1010 DW %00'000'0'0100'1010
DW %00'010'0'0110'1111 DW %00'000'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
DB ACEX.SLOT2 DB ACEX.SLOT2
; ;
DW %00'000'0'0110'1010 DW %00'000'0'0110'1010
DW %00'010'0'0110'1111 DW %00'000'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
DB ACEX.SLOT3 DB ACEX.SLOT3
; DCP END MARKER ; DCP END MARKER
DW 0,0,0 DW 0,0,0

18
Crazy/debug.asm Normal file
View 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

View File

@ -1,7 +1,7 @@
INCLUDE 'Shared_Includes/constants/SP2000.inc' INCLUDE 'Shared_Includes/constants/SP2000.inc'
INCLUDE 'Build/updater.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/structures/FileSystem.inc'
;INCLUDE 'Shared_Includes/macroses/macros.z80' ;INCLUDE 'Shared_Includes/macroses/macros.z80'
;INCLUDE 'Shared_Includes/constants/BIOS_EQU.inc' ;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 image_size_in_sectors flasher_size_in_sectors + bios_size_in_sectros
DEFINE TYPE_OF_ACEX 3 ; 3 - 1K30, 5 - 1K50 DEFINE TYPE_OF_ACEX 3 ; 3 - 1K30, 5 - 1K50
MACRO SET_IMG_LABEL DOS_OFF EQU #4000
.Crazy_IMG_Label: DB "Crazy Blaster Image" DOS_ON EQU #3D13
ENDM
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ; ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ[ FIRST SECTION - CONF ROM ]ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ; ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ[ FIRST SECTION - CONF ROM ]ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
@ -34,7 +33,7 @@ END_FIRST_SECTION EQU $
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ; ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
/*
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ; ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ[ SECOND SECTION - IMAGE ON DRIVE ]ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ; ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ[ SECOND SECTION - IMAGE ON DRIVE ]ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ; ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
@ -51,4 +50,5 @@ END_SECOND_SECTION EQU $
; ;
DISPLAY "IMG size = ",/A,END_SECOND_SECTION - BEGIN_CB_IMG DISPLAY "IMG size = ",/A,END_SECOND_SECTION - BEGIN_CB_IMG
OUTEND OUTEND
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ; ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
*/