diff --git a/Crazy BIOS/Info.txt b/Crazy BIOS/Info.txt new file mode 100644 index 0000000..6210e73 --- /dev/null +++ b/Crazy BIOS/Info.txt @@ -0,0 +1,115 @@ +; १ ⮢ #7C/#3C #74/#24 +CNF_PORT: +.ON EQU #74 +.OFF EQU #24 +; Data: +.TURBO.ON EQU 3 ; 祭 TURBO +.TURBO.OFF EQU 2 ; 몫祭 TURBO +.CNF_0 EQU #04 ; ⮢ 0 +.CNF_1 EQU #0C ; ⮢ 1 ( ० ⮣ zx spectrum) +.CNF_2 EQU #14 ; ⮢ 2 +.CNF_3 EQU #1C ; ⮢ 3 (० 㯠 ⠬ 93 ᨣ TR-DOS) +.PENT_RESET EQU #20 +.SCORP_RESET EQU #40 +.CNF_512 EQU #80 ; 祭 Pentagon 128 +.ZX_BIOS EQU #00 +.ZX_EXTENSION EQU #01 +; ਡ ﬨ #7C/#3C +SYS_PORT: +.ON EQU #7C +.OFF EQU #3C +.RAM EQU .OFF +.ROM EQU .ON +; Data: +.PAGE0 EQU 1 +.PAGE8 EQU 0 +.EXTENSION EQU .PAGE0 +.BIOS EQU .PAGE8 +.TURBO.ON EQU CNF_PORT.TURBO.ON +.TURBO.OFF EQU CNF_PORT.TURBO.OFF +.CNF_0 EQU CNF_PORT.CNF_0 +.CNF_1 EQU CNF_PORT.CNF_1 +.CNF_2 EQU CNF_PORT.CNF_2 +.CNF_3 EQU CNF_PORT.CNF_3 +.PENT_RESET EQU CNF_PORT.PENT_RESET +.SCORP_RESET EQU CNF_PORT.SCORP_RESET +.CNF_512 EQU CNF_PORT.CNF_512 +/* +--------------------------------------------------- +CNF_PORT 4 譨 (#7C/#3C #74/#24) १ ⮢. +SYS_PORT ﬨ #7C/#C + +SYS_PORT ⮫쪮 ४砥 RAM/ROM +CNF_PORT ⠫쭮, 1=0 ࠭ १ 0 + +CNF_PORT +bit0 - TURBO: off/on vROM: +; #24 - ࠭ . (#E0..#E3)/(#E4..#E7) +; #74 - ࠭ . #EB/#EF +bit1 - 1 - TURBO ena, 0 - ४祭 vROM page +bit2 - 1 - CNF ena +bit3 - \_ cnf0..cnf3 -\ +bit4 - / - \ +bit5 - CNF_PN[5..0]_RESET by 1 - . - -|---> ⮫쪮 bit2=1 +bit6 - CNF_SC_RESET by 1 - . - / +bit7 - CNF_PN[7..6]_RESET by 0 - -512 -/ + + ४祭 ࠭ vROM: +____________________________________________________ +| 祭 | 譨 : | +| . |____________________________________| +| | #24 ---- | | | | +| | #3C (-rom) | | | | +| ||| | #7C (+rom) | #74 | 1FFD | 7FFD | +| \|/ | bit1..0 | bit1..0 | bit1 | bit4 | +|_____________|____________|_________|______|______| +|E0 | 00 | | 1 | ... | +|E1 (+dos_on) | 00 | | 0 | ... | +|E2 | 00 | | 0 | 0 | +|E3 | 00 | | 0 | 1 | +|E4 | 01 | | 1 | ... | +|E5 (+dos_on) | 01 | | 0 | ... | +|E6 | 01 | | 0 | 0 | +|E7 | 01 | | 0 | 1 | +|EB | | 00 | ... | ... | BIOS +|EF | | 01 | ... | ... | EXTENSION +|_____________|____________|_________|______|______| +... - 祭 ஫ ࠥ + + ⠭ ࠭ ࠧ ᯥ㬠: + Page Name Int.Port Page Name Int.Port + #42 BASIC 128 #E2 | ??? ??? ??? ??? #E6 + #43 BASIC 48 #E3 | ??? ??? ??? ??? #E7 + #44 TR-DOS #E1 | ??? ??? ??? ??? #E5 + #45 BIOS (ZX_EXP) #E0 | ??? ??? ??? ??? #E4 + #46 BIOS (ZX_EXP) #EB + #47 BIOS (ZX_EXP2) #EF + +SYS_PORT: +bit0 - TURBO: on/off BIOS: Part1/Part0 +bit1 - 1 - TURBO ena, 0 - ४祭 BIOS-PAGE +bit2 - 1 - CNF ena +bit3 - \_ cnf0..cnf3 -\ +bit4 - / - \ +bit5 - CNF_PN[5..0]_RESET by 1 - . - -|---> ⮫쪮 bit2=1 +bit6 - CNF_SC_RESET by 1 - . - / +bit7 - CNF_PN[7..6]_RESET by 0 - -512 -/ + +㭪 bit0 । १ bit1 +bit7..bit3 ࠡ뢠 bit2 = 1 + + #7C 砥 0, #3C ⪫砥 + 0, ⮬ 7/3C 뢠 System/User. +४祭 ࠭ ࠡ⠥ ⮬ ਠ ⠪: + 16 ࠭ 0 15, #5C ४砥 bit3 xor /SYS (SYS_PORT bit[1..0] = b"0X" (BIOS: Part1/Part0)) + ᫨ ᤥ ld a,1 : out (sys_port_on),a - 㬥 ࠭ 㤥 ࠢ쭠 0 15, + ᫨ ᤥ ld a,0 : out (sys_port_on),a - 㬥 ࠭ 㤥 ஢ bit3: + ࠭ 0-7 㬥஢ 8-15 + ࠭ 8-15 㬥஢ 0-7 + ४祭 ࠭ ⮬ #5C ந室 ⮫쪮 ⪭⮩ १ sys_port. + ४ ࠭ १ ७ #8F, ⮣ bit4 ⮣ 砥 ᨣ . + 㬥 ࠭ ⠭ bit4. +---------------------------------------------------- + + +ROM.SLOT0 \ No newline at end of file diff --git a/Crazy BIOS/exp/DCP.ASM b/Crazy BIOS/exp/DCP.ASM index ac401be..ae1c7cd 100644 --- a/Crazy BIOS/exp/DCP.ASM +++ b/Crazy BIOS/exp/DCP.ASM @@ -625,7 +625,7 @@ SET_PORTS: OUT (C),A LD A,(SYS_PAGE.CONFIG_DE-#4000) OUT (C),D ; ࠭ - OUT (SYS_PORT.ROM),A + OUT (CNF_PORT.ROM),A ; CALL DOS_OFF ; @@ -648,7 +648,7 @@ SET_PORTS: CALL DOS_ON ; LD A,CNF_PORT.CNF_0 + ROM.BIOS - OUT (SYS_PORT.ROM),A + OUT (CNF_PORT.ROM),A ; LD C,SLOT2 ; ࠭ IN D,(C) diff --git a/Crazy BIOS/exp/EXP.asm b/Crazy BIOS/exp/EXP.asm index 719bbe5..050ad99 100644 --- a/Crazy BIOS/exp/EXP.asm +++ b/Crazy BIOS/exp/EXP.asm @@ -35,7 +35,7 @@ BOARD_INFO: EXP_FNS_2_RET: PUSH AF LD A,ROM.BIOS - OUT (SYS_PORT.RAM),A + OUT (CNF_PORT.ON),A POP AF JR RST_18_1 ;======================================= @@ -979,7 +979,7 @@ PrepareToZX: ; Setup HDD drives for ZX Spectrum mode PORTS_INIT: ; TURBO LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON - OUT (SYS_PORT.ROM),A + OUT (CNF_PORT.ON),A ; ; RESET to ISA ; LD BC,PORT_ISA ; LD A,#FF @@ -1081,7 +1081,7 @@ PORTS_INIT: ; ஫ ᪮ ; ஫ ᪠ ( ) LD A,CNF_PORT.CNF_3 + ROM.BIOS - OUT (SYS_PORT.ROM),A + OUT (CNF_PORT.ON),A OUT (FDC_93.DrvCTRL),A push hl pop hl diff --git a/Crazy BIOS/exp/EXTENDED/FDD_DRIVER_2.asm b/Crazy BIOS/exp/EXTENDED/FDD_DRIVER_2.asm index f87db7a..18d7f02 100644 --- a/Crazy BIOS/exp/EXTENDED/FDD_DRIVER_2.asm +++ b/Crazy BIOS/exp/EXTENDED/FDD_DRIVER_2.asm @@ -594,14 +594,14 @@ WR_SEC: LD D,5 ;RETRY COUNT SET_DOS_ON: EX AF,AF' LD A,CNF_PORT.CNF_3 + ROM.BIOS - OUT (SYS_PORT.ROM),A ; - OPEN + OUT (CNF_PORT.ROM),A ; - OPEN EX AF,AF' RET ; 㡠 㫥 ⮢ SET_DOS_OFF: EX AF,AF' LD A,CNF_PORT.CNF_0 + ROM.BIOS - OUT (SYS_PORT.ROM),A ; - CLOSE + OUT (CNF_PORT.ROM),A ; - CLOSE EX AF,AF' RET diff --git a/Crazy BIOS/exp/FUNC_RAM_ROM_DRV.ASM b/Crazy BIOS/exp/FUNC_RAM_ROM_DRV.ASM index 8668e4f..3a1c3c7 100644 --- a/Crazy BIOS/exp/FUNC_RAM_ROM_DRV.ASM +++ b/Crazy BIOS/exp/FUNC_RAM_ROM_DRV.ASM @@ -802,7 +802,7 @@ ROM_DISK: LD B,A XOR A OUT (ROM.SLOT0),A - OUT (SYS_PORT.ROM),A + OUT (CNF_PORT.ON),A LD A,B JP .readNext .stackDepth EQU 8 ; ﭨ 楤 設 ⥪. diff --git a/Crazy BIOS/exp/FUNC_SERVICE.asm b/Crazy BIOS/exp/FUNC_SERVICE.asm index 4f02b82..f2e108e 100644 --- a/Crazy BIOS/exp/FUNC_SERVICE.asm +++ b/Crazy BIOS/exp/FUNC_SERVICE.asm @@ -141,7 +141,7 @@ RST_CONF: DI ; ⠭ 㫥 ⮢ LD A,CNF_PORT.CNF_0 - OUT (SYS_PORT.ON),A + OUT (CNF_PORT.ON),A ; ⠪ ⭮ IN A,(SLOT3) ; ࠭塞 ⪭⮩ ࠭ PUSH AF @@ -223,7 +223,7 @@ RST_CONF: DI ; ⠭ 㫥 ⮢ LD A,CNF_PORT.CNF_0 - OUT (SYS_PORT.ON),A + OUT (CNF_PORT.ON),A ; ⠪ ⭮ IN A,(SLOT3) ; ࠭塞 ⪭⮩ ࠭ PUSH AF diff --git a/Crazy BIOS/exp/FUNC_SYS.ASM b/Crazy BIOS/exp/FUNC_SYS.ASM index 048d26c..0b27e9f 100644 --- a/Crazy BIOS/exp/FUNC_SYS.ASM +++ b/Crazy BIOS/exp/FUNC_SYS.ASM @@ -349,7 +349,7 @@ FN_TURBO: LD (SYS_PAGE.CONFIG_DE),A AND 3 ; - OUT (SYS_PORT.ROM),A + OUT (CNF_PORT.ROM),A LD A,B OUT (SLOT3),A AND A diff --git a/Crazy BIOS/rom/_not_used/CrazyBlaster.asm b/Crazy BIOS/rom/_not_used/CrazyBlaster.asm deleted file mode 100644 index bd2b183..0000000 --- a/Crazy BIOS/rom/_not_used/CrazyBlaster.asm +++ /dev/null @@ -1,1518 +0,0 @@ - - - INCLUDE 'Shared_Includes/constants/SP2000.inc' - INCLUDE 'Build/updater.inc' -;INCLUDE 'Shared_Includes/structures/FileSystem.inc' -;INCLUDE 'Shared_Includes/macroses/macros.z80' -;INCLUDE 'Shared_Includes/constants/BIOS_EQU.inc' - - DEFINE sec_high 0 - DEFINE sec_low 1 - DEFINE SYS_FN_PAGE 1 -;DEFINE ACEX_ROM_COPY_PAGE 0 - DEFINE bufer_adr #C000 - DEFINE sys_fn_in_sectors #4000 / #200 - DEFINE bios_size_in_sectors 512 - DEFINE flasher_size_in_sectors 1 - DEFINE image_size_in_sectors flasher_size_in_sectors + bios_size_in_sectros - DEFINE TYPE_OF_ACEX 3 ; 3 - 1K30, 5 - 1K50 - -;[ FIRST SECTION - CONF ROM ]; - OUTPUT './Build/CrazyBlaster.raw' - ORG #0000 - ; - ; 樠 ⥬ ⮢ Z84C15 ; -BEGIN_CB: DI - LD BC,#FF*256 + Z84.SYS.Control - XOR A ; Z84.REG.WaitState_Ctrl - OUT (C),A ; Z84.SYS.Control - INC C ; Z84.REG.WaitState_MemBound - OUT (C),A ; Z84.SYS.Data ; set 0 Waits - ; - DEC C - LD A,3 ; Z84.REG.Misc_Ctrl - OUT (C),A ; Z84.SYS.Control - INC C - ; boundary set! - LD A,1 ; enable CS0, disable CS1 - OUT (C),A ; Z84.SYS.Data - ; 樠 DCP ; - LD HL,INIT_SLOTS -DCP_INIT: LD C,XL - LD B,XH - LD E,YL - LD D,YH - EXX - ; - LD HL,#C000 - LD DE,#C001 - LD BC,#3FFF - LD (HL),L - LDIR - ; - LD IY,DCP_DATA - LD IX,.ret - ; -.loop: LD L,(IY) - LD H,(IY+1) - LD E,(IY+2) - LD D,(IY+3) - LD B,(IY+4) - JP .PARSE_TABLE - ; -.ret: LD BC,5 - ADD IY,BC - LD A,(IY+2) - OR (IY+3) - JR NZ,.loop - ; - EXX - LD XL,C - LD XH,B - LD YL,E - LD YH,D - ; First IN command - OPEN DCP - IN A,(SLOT3) - JP (HL) - ; -.PARSE_TABLE: LD A,L - AND E - LD L,A - ; - LD A,H - AND D - OR #C0 - LD H,A - ; - LD A,D - OR #C0 - LD D,A - ; -.loop_parse: LD (HL),B - ; - LD A,L ; ᪨஢ 塞 1- - OR E ; 宦 ७ - INC A ; 㢥 - JR Z,.carry ; ७ - ; - OR E - XOR E ; 㫨 塞 - LD C,A ; 塞 - ; - LD A,L - AND E ; 뤥 塞 - OR C - LD L,A ; 塞 - ; - JR .loop_parse ; 横 - ; A = 0 -.carry: LD A,L ; 塞 ﬨ - AND E - LD L,A - ; - LD A,H ; ᪨஢ 塞 1- - OR D ; 宦 ७ - INC A ; 㢥 - JR Z,.return - ; - OR D - XOR D - LD C,A ; 塞 - ; - LD A,H - AND D ; 뤥 塞 - OR C - LD H,A ; 塞 - JR .loop_parse -.return: JP (IX) - ; 樠 ࠭ ; -INIT_SLOTS: XOR A - OUT (SLOT0),A - OUT (SLOT1),A - DEC A - OUT (SLOT2),A - LD A,SYS_PAGE - OUT (SLOT3),A - ; 樠 ⮢ ; - LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON - OUT (SYS_PORT.ROM),A - ; 樠 ⥪ ; - LD SP,#4000 - ; ॡ ⠢襣 RAM ; - LD HL,0 - LD DE,#4000 - LD BC,END_CB - LDIR - XOR A - OUT (FastRAM.SLOT0),A - OUT (SYS_PORT.RAM),A - INC A - OUT (SLOT1),A - IN A,(FastRAM.OFF) - ; - ; ࠭ 0,1,2,#FE - ;; - ; 稩 ; - ;; - ; 楤 訡 - LD HL,ERROR - PUSH HL - ; 樠 HDD ; - CALL HDD_INIT - RET C - ; ⠭ ࠭ 㧪 ; - CALL Init_Mem - ; 㧪 ; - ; ⥫ 㭪樨 -LOAD_FNs: LD A,(RESERVED_PAGES.SYS_FN) ; ࠭ , ᫨ #C000 (BLOCK_ID) - LD B,sys_fn_in_sectors ; ᫮ ⠥ ᥪ஢ - LD HL,bufer_adr ; - LD IX,sec_high ; ᮫ ᥪ - LD DE,sec_low ; ᮫ ᥪ - PUSH HL - CALL FN_HDD_READ - ; ࠧ BIOS -LOAD_DATA: LD B,4 - LD IY,RESERVED_PAGES.BIOS - POP HL - CALL .LOADER - ; ⨭ - LD B,2 - CALL .LOADER - JP BEGIN_CB_IMG -.LOADER: ; 㧪 128 ᥪ஢ -.loop: PUSH HL - PUSH BC - LD A,(IY) - LD B,128 - LD DE,1 - CALL FN_HDD_READ_NEXT - LD BC,4 - ADD IY,BC - POP BC - POP HL - DJNZ .loop - RET - ;; - - - ;; - ; 楤 ; - ;; -; FOR LBA ONLY - NEXT_READ -; HL - bufer, A - page -; B - numer of sectors -; DE - add_par (next+DE) (d.b. 1 for NEXT) -FN_HDD_READ_NEXT: - AND A - INC B - DEC B - RET Z ; ret if 0 sectors - CALL HD_WAIT - RET C - CALL NEXT_ADD_SEC - JR FN_HDD_READ.L1 - ; -; HL - BUFER, A - PAGE, -FN_HDD_READ: AND A - INC B - DEC B - RET Z - CALL HD_WAIT - CALL NC,HD_PREPARE - RET C -.L1: EXX - LD C,SLOT3 - IN B,(C) - EXX - OUT (SLOT3),A - EX AF,AF' - ; - LD BC,IDE.Write.Command - LD A,IDE.ATA.ReadSectorsWithRetry - OUT (C),A -.L2: CALL WAIT_HDD - AND IDE.ControlByte.DataRequest - JR Z,.HD_RET - ; - LD BC,IDE.Read.Data - INIR - INIR - ; - LD A,H - OR L - JR NZ,.L2 - ; - LD A,SYS_PAGE - OUT (SLOT3),A - EX AF,AF' - LD H,high SYS_PAGE.RAMD_FAT ;!FIXIT ⠡ - LD L,A - LD A,(HL) - OUT (SLOT3),A - EX AF,AF' - LD HL,#C000 - JR .L2 - ; -.HD_RET: EXX - OUT (C),B - EXX - LD BC,IDE.Read.Error - IN A,(C) - AND A - SCF - RET NZ - ; - EX AF,AF' - AND A - RET - ;; - - ;; -NEXT_ADD_SEC: PUSH AF - ; - LD A,B - LD BC,IDE.Write.Counter ; ⠭ ᫮ ᥪ஢ - OUT (C),A - ; - DEC B - INC C - IN A,(C) ; IDE.Read.Sector - ADC A,E - INC B - OUT (C),A ; IDE.Write.Sector - ; - DEC B - INC C - IN A,(C) ; IDE.Read.CylinderLow - ADC A,D - INC B - OUT (C),A ; IDE.Write.CylinderLow - ; - DEC B - INC C - IN A,(C) ; IDE.Read.CylinderHigh - ADC A,0 - INC B - OUT (C),A ; IDE.Write.CylinderHigh - ; - LD BC,IDE.Read.Control - IN A,(C) - LD D,A - ADC A,0 - AND #0F - LD E,A - LD A,D - AND #F0 - OR E - INC B - OUT (C),A ; IDE.Write.DeviceHead - ; - POP AF - RET - ;; - - ;; -HD_PREPARE: PUSH AF - PUSH HL - ; HD_CALC_SECS - LD L,E - LD E,D - LD D,XL - LD A,XH - AND #0F ; LBA 28 - LD H,A - ; - LD A,B - LD BC,IDE.Write.Counter ; ⠭ ᫮ ᥪ஢ - OUT (C),A - ; - INC C - OUT (C),L - INC C - OUT (C),E - INC C - OUT (C),D - ; - LD BC,IDE.Read.Control - IN A,(C) - AND #F0 ; !!!!! ᬮ - OR H - INC B ; IDE.Write.DeviceHead - OUT (C),A - POP HL ; BUFER & PAGE - POP AF - AND A - RET - ;; - - ;; -HDD_INIT: LD A,IDE.Chanel.Primary - OUT (IDE.Chanel.Set),A - CALL TEST_HDD_DRV - SCF - RET NZ - ; - CALL WAIT_HDD - LD BC,IDE.Write.Command - LD A,IDE.ATA.IdentifyDevice ;!FIXIT । - OUT (C),A - CALL WAIT_HDD - AND IDE.ControlByte.DataRequest - SCF - RET Z - ; - LD BC,IDE.Read.Data - LD HL,SYS_PAGE.HD_IDF_ADR - INIR - INIR - ; B = 0 - LD H,B - LD L,B - LD A,(SYS_PAGE.HD_IDF_ADR.sectors) ; ᫮ ᥪ஢ - LD C,A - LD A,(SYS_PAGE.HD_IDF_ADR.heads) ; ᫮ -.loop: ADD HL,BC - DEC A - JR NZ,.loop - LD (SYS_PAGE.HD_IDF_ADR.sec_cyl),HL - CALL WAIT_HDD - LD BC,IDE.Read.Control - IN A,(C) - AND #10 - LD B,A - LD A,(SYS_PAGE.HD_IDF_ADR.heads) ; ᫮ - DEC A - AND #0F - OR IDE.Drive.Master - OR B - ; - LD H,A - LD A,(SYS_PAGE.HD_IDF_ADR.LBA_CHS) - AND %0000'0010 - SCF - RET Z ; NO_LBA - ; - SET 6,H - LD BC,IDE.Write.DeviceHead - OUT (C),H - LD A,(SYS_PAGE.HD_IDF_ADR.sectors) ; ᫮ ᥪ஢ -.HDD_CONFIGURED: - LD BC,IDE.Write.Counter - OUT (C),A - LD A,IDE.ATA.InitializeDeviceParameters ; SET HDD PARAMETERS -HD_CMD_EXE: CALL HD_WAIT - RET C - LD BC,IDE.Write.Command - OUT (C),A -HD_WAIT: PUSH DE - PUSH BC - PUSH AF - LD DE,0 -.loop: LD BC,IDE.Read.Status - IN A,(C) - AND IDE.ControlByte.Busy - JR Z,.EXIT - DEC DE - LD A,D - OR E - JR NZ,.loop - POP AF - POP BC - POP DE - SCF - RET ; error - ; -.EXIT: POP AF - POP BC - POP DE - AND A - RET - ;; - - ;; -WAIT_HDD: LD BC,IDE.Read.Status -.loop: IN A,(C) - BIT IDE.ControlBit.Busy,A - JR NZ,.loop - RET - ;; - - ;; -Init_Mem: LD HL,SYS_PAGE.RAMD_FAT; ; RAM FAT . - ; 塞 ⠡ - XOR A -.loopFree: LD (HL),A - INC L - JR NZ,.loopFree - ; १ࢨ㥬 ᯥ.࠭ ࠭ ZX - LD B,RESERVED_PAGES.Blocks - LD DE,RESERVED_PAGES ; ⠡ ⥬ ࠭ -.loop: LD A,(DE) - CP #FF - JR Z,.exitLoop -.loopBlk: INC DE - LD L,A - LD A,(DE) - LD (HL),A - CP #FF - JR NZ,.loopBlk -.exitLoop: INC DE - DJNZ .loop - LD L,A - LD (HL),A - RET - ;; - - ;; -TEST_HDD_DRV: ;LD HL,#01FE - LD BC,IDE.Write.Counter - OUT (C),L - INC C - OUT (C),H ; IDE.Write.Sector - ; - DEC C - DEC B - IN A,(C) ; IDE.Read.Counter - CP L - RET NZ - INC C - IN A,(C) ; IDE.Read.Sector - CP H - RET - ;; - -ERROR: ; 窮 ; - LD A,SYS_PORT.TURBO.OFF -.big_loop: LD BC,0 - OUT (SYS_PORT.ROM),A -.loop: DEC BC - INC B - DJNZ .loop - XOR 1 - JR .big_loop - ;; -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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - DB ACEX.Pent_7FFD - 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 - 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 - 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 - 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 - DB ACEX.SLOT3 - ; DCP END MARKER - DW 0,0,0 -;-----------------------------------------------------------------------; -RESERVED_PAGES:; [x] Block #1 - ᢮ ID 1 - ; ⥫ 楤 -.SYS_FN: DB SYS_FN_PAGE - ; ࠧ 訢 -.BIOS: DB #10,#11,#12,#13 - DB #14,#15,#16,#17 - DB #18,#19,#1A,#1B - DB #1C,#1D,#1E,#1F - ; ⨭ -.PICTURE: DB 2,3,4,5,6 - ; ࠧ 訢騪 -.FLASHER_RAM: DB 7,8 - DB #FF ; End of the block -.Blocks EQU 1 -.Size EQU $-RESERVED_PAGES -;-----------------------------------------------------------------------; -END_FIRST_SECTION EQU $ -; - DISPLAY "ROM size = ",/A,END_FIRST_SECTION - BEGIN_CB - OUTEND -;; -;; - - - - - -;; -;[ SECOND SECTION - IMAGE ON DRIVE ]; - OUTPUT './Build/CrazyBlasterIMG.raw' - ORG 0 -BEGIN_CB_IMG: LD HL,RESERVED_PAGES - LD DE,#4000 + RESERVED_PAGES_COPY - LD BC,RESERVED_PAGES.Size - LDIR - LD SP,#4000 - LD A,SYS_FN_PAGE - OUT (SLOT0),A - JP INIT_SCREEN - #4000 - ; -.start_code EQU $ - - ; 樠 ࠭ ; -INIT_SCREEN: CALL FN_SYNC - ; - LD IX,VideoModes.graf_mode320x256 - LD E,%00010001 - CALL WIN_OPEN - ; 樠 ; -INIT_PALETTE: ;IN A,(SLOT1) - ;PUSH AF - LD B,#FF - LD HL,PICTURE.bdPallete ;#8FBC ;!HARDCODE PICTURE.bdPallete - LD DE,0 - LD A,1 - CALL SET_PALETTE - CALL SET_PICTURE - CALL SET_BOARD_NUMBER - ; । 稯 - CALL DETECT_ROM - ; - - ; ⠭ ॣ஢ - - ; 릮 室 䫥 - - ;; -SET_BOARD_NUMBER: - IN A,(SLOT3) - EX AF,AF' - LD A,#18 ;!HARDCODE - OUT (SLOT3),A - ; - LD HL,(BOARD_ID_DATA.Start) - LD (BoardNumOffsets.Start),HL - LD HL,(BOARD_ID_DATA.Number) - LD (BoardNumOffsets.Number),HL - LD HL,(BOARD_ID_DATA.End) - LD (BoardNumOffsets.End),HL - LD A,(BOARD_ID_DATA.Type) - LD (BoardNumOffsets.Type),A - ; - LD A,#10 ;!HARDCODE - OUT (SLOT3),A - LD A,(FOR_ACEX) - LD (#C000 + expBIOS_Vars.msgStrings.str_ACEX_MODEL),A - LD (#C000 + expBIOS_Vars.msgRusStrings.str_ACEX_MODEL),A - ; - EX AF,AF' - OUT (SLOT3),A - RET - ;; -DISP_WINDOW EQU $ - DISP #4000 + DISP_WINDOW -DETECT_ROM: LD HL,0 - ADD HL,SP - LD SP,#4000 - LD (.sp_save),HL - ; - CALL TEST_ROM_CHIP ;!HARDCODE TEST_ROM_CHIP #8E59 - LD (TST_R.jp),BC ;!HARDCODE TST_R.jp #81D5 - ; -.sp_save+1: LD SP,0000 - XOR A - OUT (SYS_PORT.RAM),A - RET - ENT - ;; - ;; - ;; - ;; - ;; -SET_PICTURE: LD A,#FF - MAIN_PICTURE.PIC_Y -.loop_pic: PUSH AF - - LD A,#50 - OUT (SLOT1),A - - POP AF - OUT (PORT_Y),A - - LD HL,.pic_buffer - LD DE,#4000 + Screen_Offset + MAIN_PICTURE.PIC_X - ; - LD BC,MAIN_PICTURE.PIC_WIDTH - LDIR - ; - LD H,A - POP AF - OUT (SLOT1),A - PUSH AF - - LD A,H - DEC A - CP MAIN_PICTURE.PIC_Y-1 - JR NZ,.loop_pic - - POP AF - OUT (SLOT1),A - IM 1 - EI - RET -.pic_buffer: BLOCK MAIN_PICTURE.PIC_WIDTH,0 - ;; -; ⠭ ० -LP_MODE_LINE: BIT 0,(IX+Window_Variables.USER.MODE_S) - JP NZ,LP_MODE_LINE2 ; ᯥ - BIT 4,A - JP Z,LP_MODE_LINE3 ; 䨪! - DEC D - ; ⥪⮢ ०. - EX AF,AF' - LD A,#50 - OUT (SLOT3),A - LD A,L ; ⨪쭮 - CP #80 - JR NC,LP_EXIT_MODE - ; -LP_MODE_RECURSE: - LD A,D ; ਧ⠫쭮 - AND 7FH - SUB 80 - JR C,LP_MODE_LL - SUB 48 - NEG - ; - LD E,A ; - ADD A,D - LD D,A ; - ; - LD A,E ; ⠭ - RRA - AND 3FH - SUB C - JR NC,LP_EXIT_MODE - NEG - LD C,A ; 祭 C - JR LP_MODE_RECURSE - ; -LP_MODE_LL: NEG - RRA - AND 3FH - CP C - JR NC,LP_MODE_LR - LD C,A -LP_MODE_LR: EX AF,AF' - INC D -LP_MD_LL1: EX AF,AF' - LD A,D - OUT (PORT_Y),A - EX AF,AF' - LD (HL),A ; ० - INC D - EX AF,AF' - LD A,D - OUT (PORT_Y),A - EX AF,AF' - LD (HL),A ; ० - INC D - DEC C - JR NZ,LP_MD_LL1 - EX AF,AF' -LP_EXIT_MODE: LD A,SYS_PAGE - OUT (SLOT3),A - EX AF,AF' - RET - ; - -; ⠭ ० -; Spectrum mode -LP_MODE_LINE2: LD A,(IX+Window_Variables.WORK_2) - LD B,(IX+Window_Variables.WORK_1) - ; - DEC D - ; - EX AF,AF' - LD A,#50 - OUT (SLOT3),A - LD A,L ; ⨪쭮 - CP #80 - JR NC,LP_EXIT_MODE2 - ; -LP_MODE_RECURSE2: - LD A,D ; ਧ⠫쭮 - AND #7F - SUB 80 - JR C,LP_MODE_LL2 - SUB 48 - NEG - ; - LD E,A ; - ADD A,D - LD D,A ; - ; - LD A,E ; ⠭ - RRA - AND #3F - SUB C - JR NC,LP_EXIT_MODE2 - NEG - LD C,A ; 祭 C - JR LP_MODE_RECURSE2 - ; -LP_MODE_LL2: NEG - RRA - AND #3F - CP C - JR NC,LP_MODE_LR2 - LD C,A -LP_MODE_LR2: EX AF,AF' - INC D -LP_MD_LL2: EX AF,AF' - LD A,D - OUT (PORT_Y),A - EX AF,AF' - LD (HL),A ; ० - INC L - LD (HL),B - INC L - LD (HL),B - DEC L - DEC L - INC D - BIT 4,A - JR NZ,lp_md_ll3x - INC B -lp_md_ll3x: EX AF,AF' - LD A,D - OUT (PORT_Y),A - EX AF,AF' - LD (HL),A ; ० - INC L - LD (HL),B - INC L - LD (HL),B - DEC L - DEC L - INC D - INC B - JR NZ,LP_NO_ADD_40 - ADD A,#40 -LP_NO_ADD_40: DEC C - JR NZ,LP_MD_LL2 - EX AF,AF' -LP_EXIT_MODE2: LD A,SYS_PAGE - OUT (SLOT3),A - EX AF,AF' - LD (IX+Window_Variables.WORK_1),B - LD (IX+Window_Variables.WORK_2),A - RET - ; -; ⠭ ० -LP_MODE_LINE3: ; Grafic Mode - LD A,(IX+Window_Variables.WORK_1) - LD B,(IX+Window_Variables.WORK_2) - DEC D - EX AF,AF' - LD A,#50 - OUT (SLOT3),A - LD A,L ; ⨪쭮 - CP #80 - JR NC,LP_EXIT_MODE3 - ; -LP_MODE_RECURSE3: - LD A,D ; ਧ⠫쭮 - AND #7F - SUB 80 - JR C,LP_MODE_LL3 - SUB 48 - NEG - LD E,A ; - ADD A,D - LD D,A ; - LD A,E ; ⠭ - RRA - AND #3F - SUB C - JR NC,LP_EXIT_MODE3 - NEG - LD C,A ; 祭 C - JR LP_MODE_RECURSE3 - ; -LP_MODE_LL3: NEG - RRA - AND #3F - CP C - JR NC,LP_MODE_LR3 - LD C,A -LP_MODE_LR3: EX AF,AF' - INC D - BIT 5,B - JR Z,LP_GR_640 - ; -LP_MD_LL3: EX AF,AF' - LD A,D - OUT (PORT_Y),A - EX AF,AF' - LD (HL),B ; ० - INC L - LD (HL),A ; ० 2 - INC L - LD (HL),0 ; ० 2 - DEC L - DEC L - INC D - INC D - INC A - LD E,A - AND 7 - JR NZ,LP_NO_INC_B - LD A,E - SUB 8 - LD E,A - INC B -LP_NO_INC_B: LD A,E - DEC C - JR NZ,LP_MD_LL3 - ; -LP_640_RET: EX AF,AF' -LP_EXIT_MODE3: LD A,SYS_PAGE - OUT (SLOT3),A - EX AF,AF' - LD A,(IX+Window_Variables.WORK_1) - ADD A,8 - LD (IX+Window_Variables.WORK_1),A - RET - ; -LP_GR_640: EX AF,AF' - LD A,D - OUT (PORT_Y),A - EX AF,AF' - LD (HL),B ; ० 1 - INC L - LD (HL),A ; ० 2 - INC L - LD (HL),0 ; ० 3 - INC D - EX AF,AF' - LD A,D - OUT (PORT_Y),A - EX AF,AF' - LD (HL),0 ; ० 3 - DEC L - LD (HL),A ; ० 2 - DEC L - LD (HL),B ; ० 1 - INC D - INC A - LD E,A - AND 7 - JR NZ,LP_NO_INC_B6 - LD A,E - SUB 8 - LD E,A - INC B -LP_NO_INC_B6: LD A,E - DEC C - JR NZ,LP_GR_640 - JP LP_640_RET - ;; -; 室: HL - RGB, E - 砫 梥 -; D - ᫮ 梥⮢, B - PAL-mask, A - page PAL -SET_PALETTE: PUSH IX - ; - EX AF,AF' - IN A,(RGADR) - PUSH AF ; ࠭ RGADR - LD A,E - OUT (RGADR),A ; 砫 梥 - LD A,D ; ࠭ ᫮ 梥⮢ - EX AF,AF' ; ࠭ PAL - ; - BIT 7,H ; ஢ - LD C,SLOT3 ; ᫨ 8000h - LD D,#C3 ; .࠭ ࠭ 3 - JR Z,.NO_PAGE1 - LD D,#43 ; - LD C,SLOT1 ; ࠭ 1 -.NO_PAGE1: ADD A,A - ADD A,A - AND #1C - XOR #E0 ; 訩 PAL - LD E,A ; DE - - - PUSH DE - POP IX ; - ; - LD D,B ; ᪠ PAL - EX AF,AF' ; ᫮ 梥⮢ - LD B,A ; ᫮ 梥⮢ - ; - IN E,(C) ; ࠭ ࠭ 3 - LD A,#50 ; ࠭ ᪮ RAM - OUT (C),A -.loopPal: ; 横 ⠭ 梥⮢ - LD A,(HL) ; B - AND D - LD (IX+2),A - INC HL - ; - LD A,(HL) ; G - AND D - LD (IX+1),A - INC HL - ; - LD A,(HL) ; R - AND D - LD (IX+0),A - INC HL - ; - LD A,(HL) ; Y - AND D - LD (IX+3),A - INC HL - ; - IN A,(RGADR) - INC A - OUT (RGADR),A - DJNZ .loopPal ; 믮, 0 - ; -.exit: OUT (C),E ; ⠭ ࠭ 3 - POP AF - OUT (RGADR),A ; ⠭ Y_PORT - POP IX - AND A - RET - ;; -LP_OPEN_PG: IN A,(SLOT3) - LD C,A - LD A,SYS_PAGE - OUT (SLOT3),A - ; - LD A,C - LD (SYS_PAGE.COPY_SLOT3),A - IN A,(PORT_Y) - LD (SYS_PAGE.COPY_RGADR),A - RET -LP_CLOSE_PG: LD A,(SYS_PAGE.COPY_RGADR) - OUT (PORT_Y),A - LD A,(SYS_PAGE.COPY_SLOT3) - OUT (SLOT3),A - RET - ;; -WIN_OPEN: CALL LP_OPEN_PG - LD (SYS_PAGE.WIN_MAP_SC),IX ; - PUSH DE - LD HL,(SYS_PAGE.WIN_MAP_SC) - LD DE,WIN_ID_0 - LD BC,Window_UserVars - LDIR - LD IX,WIN_ID_0 - POP DE - LD L,(IX+Window_Variables.USER.PLACE_H) - LD H,(IX+Window_Variables.USER.PLACE_V) - LD (IX+Window_Variables.MODE_E),E - ; - LD A,L - ADD A,A - INC A ; ᫥ PORT_Y - BIT 4,E - JR NZ,.LP_SET_NO_OR - OR #80 ; ᫨ 뢮 ன ࠭ -.LP_SET_NO_OR: LD (IX+Window_Variables.H_BEG),A - LD D,A - LD A,(IX+Window_Variables.USER.SIZE_H) - ADD A,A - ADD A,D - LD (IX+Window_Variables.H_END),A - LD (SYS_PAGE.WIN_MODE_SC),DE ; ਧ⠫ ࠭ - LD A,H - AND #3F - ADD A,A - ADD A,A - LD L,A - LD H,#C3 - LD (SYS_PAGE.WIN_MODE_SH),HL ; ⨪ ᮬ - LD (IX+Window_Variables.V_BEG),A - LD A,(IX+Window_Variables.USER.SIZE_V) - ADD A,A - ADD A,A - ADD A,L - LD (IX+Window_Variables.V_END),A - ; - LD L,(IX+Window_Variables.V_BEG) - LD H,#C3 - LD B,(IX+Window_Variables.USER.SIZE_V) ; ࠧ ⨪ - ; - LD (IX+Window_Variables.WORK_1),0 - LD A,(IX+Window_Variables.USER.MODE) ; ० - LD (IX+Window_Variables.WORK_2),A - BIT 4,A - JR NZ,.LOOP ; 室, ᫨ ⥪⮢ ० - ; - AND #F0 - LD C,A - LD A,(IX+Window_Variables.USER.GR_X) - RRCA - RRCA - RRCA - LD D,A - AND #0F - OR C - LD (IX+Window_Variables.WORK_2),A - ; - LD A,D - AND #E0 - LD C,A - LD A,(IX+Window_Variables.USER.GR_Y) - AND #1F - OR C - RLCA - RLCA - RLCA - LD (IX+Window_Variables.WORK_1),A - ; -.LOOP: LD D,(IX+Window_Variables.H_BEG) ; D - 砫 ப (PORT_Y) - LD C,(IX+Window_Variables.USER.SIZE_H) ; ࠧ ਧ⠫ - LD A,(IX+Window_Variables.USER.MODE) ; ० - ; - PUSH BC - CALL LP_MODE_LINE - POP BC - INC L - INC L - INC L - INC L - DJNZ .LOOP - ; - LD A,(IX+Window_Variables.MODE_E) - AND 1 - OUT (RGMOD),A - CALL LP_CLOSE_PG - CALL LP_INI_P - CALL LP_SIZE - XOR A - RET - ; -LP_INI_P: EX AF,AF' - EXX - CALL LP_OPEN_PG - ; ⨥ ᪮ ࠭ - ; LP_INI_NO_ZG: - LD A,(WIN_ID_0.H_BEG) - LD D,A - LD A,(WIN_ID_0.V_BEG) - LD L,A - INC L - LD H,#C3 - - AND A - LD A,(WIN_ID_0.USER.MODE) - BIT 5,A - LD A,(WIN_ID_0.USER.SIZE_H) - JR NZ,LP_INI_40 - ADD A,A - SCF - ;!TODO - 믨 -LP_INI_40: LD B,A - LD (WIN_ID_0.SIZE_REL),A - EX AF,AF' - EXX - JP LP_END_P - ; -; WIN_MAP_SC - ࠭ -; 0 - hor size -; 1 - ver size -; 2 - hor place -; 3 - ver place -LP_SIZE: ; । size - CALL LP_OPEN_PG - LD DE,(WIN_ID_0.USER.SIZE_H) - LD A,(WIN_ID_0.USER.MODE) - BIT 5,A - CALL LP_CLOSE_PG - RET NZ - LD A,E - ADD A,A - LD E,A - RET - ; -LP_END_P: LD A,SYS_PAGE - OUT (SLOT3),A -.SYS_PAGE: EX AF,AF' - EXX - RLA - LD E,A - LD (WIN_ID_0.reg_HL),HL ; - LD (WIN_ID_0.reg_DE),DE - LD (WIN_ID_0.reg_BC),BC - CALL LP_CLOSE_PG - EXX - EX AF,AF' - AND A - RET -.short: EX AF,AF' - EXX - CALL LP_CLOSE_PG - EXX - EX AF,AF' - AND A - RET - ;; -FN_SYNC: LD A,Port_VSYNC.SET_320L - OUT (Port_VSYNC),A - LD C,SLOT3 - IN B,(C) - LD A,SYS_PAGE - OUT (C),A - LD A,(SYS_PAGE.VSyncAndWaits) - OR 1 - LD (SYS_PAGE.VSyncAndWaits),A - ; -.INT_DEF: LD DE,(SYS_PAGE.CONFIG_ALL) - OUT (C),B - LD IX,SCREEN_TABLES.PENTAGON - IN A,(SLOT3) - EX AF,AF' - LD A,SYS_PAGE - OUT (SLOT3),A - EX AF,AF' - LD (SYS_PAGE.COPY_SLOT3),A - IN A,(PORT_Y) - LD (SYS_PAGE.COPY_RGADR),A - LD (SYS_PAGE.CONFIG_ALL),IX - XOR A -;----[START]-----------------------[? 1] -.loop_1: OUT (PORT_Y),A - EX AF,AF' - LD A,#50 - OUT (SLOT3),A - LD HL,#C300 -;----[START]------------------[v 2]----- -.loop_2: LD C,(IX) -;----[START]-------------[v 3]---------- -.loop_3: ; 㦥 ࠭ - LD E,(IX+1) ; take adress of line X - LD D,(IX+2) -;----[START]--------[v 4]--------------- -.loop_4: - LD A,(DE) ; take counter in table 1, line X, column Y - INC DE - AND A - JR Z,.loop_4_exit ; exit if zero-counter - LD B,A - LD A,(DE) - INC DE -;----[START]---[v 5]-------------------- -.loop_5: - LD (HL),A - INC L - LD (HL),0 - INC L - LD (HL),0 - ; - EX AF,AF' - INC A - OUT (PORT_Y),A - EX AF,AF' - ; - LD (HL),0 - DEC L - LD (HL),0 - DEC L - LD (HL),A - ; - EX AF,AF' - INC A - OUT (PORT_Y),A - EX AF,AF' - DJNZ .loop_5 -;--------------[^ 5]-------------------- - JR .loop_4 -;-------------------[^ 4]--------------- -.loop_4_exit: INC HL ; next line - INC HL - INC HL - INC HL - IN A,(PORT_Y) - AND #80 - OUT (PORT_Y),A - DEC C - JR NZ,.loop_3 -;------------------------[^ 3]---------- - INC IX ; next counter - INC IX - INC IX - LD A,(IX) - AND A - JR NZ,.loop_2 -;-----------------------------[^ 2]----- - LD A,SYS_PAGE - OUT (SLOT3),A - LD IX,(SYS_PAGE.CONFIG_ALL) - - EX AF,AF' - ADD A,#80 - JR NC,.loop_1 -;----------------------------------[^ 1] - ; Exit - LD A,(SYS_PAGE.COPY_RGADR) - OUT (PORT_Y),A - LD A,(SYS_PAGE.COPY_SLOT3) - OUT (SLOT3),A -.exit: OR A - RET -;--- Screen data table 1: counter1, data1 .. counterX, dataX -SCREEN_TABLES:; | ᫮ | 祭 | -; | ப | | -; | /2 | ப | -.SCR: DB 41 , #F8 - DB 3 , #FC - DB 4 , #FC - DB 7 , #FC - DB 9 , #F8 - DB 0 -.INT: DB 40,#FC, 2,#FD, 6,#FC, 7,#FC, 9,#FC, 0 -.BLN: DB 41,#FC, 3,#FC, 4,#FC, 7,#FC, 9,#FC, 0 -.SNC: DB 41,#FC, 3,#FC, 4,#FC, 7,#FC, 9,#FC, 0 -.RES: DB 41,#F8, 3,#FE, 4,#FE, 7,#FE, 9,#F8, 0 -;--- Screen data tables 2: counter1, data address1 .. counterX, data addressX -; -; | - | 祭 | -; | ப | | -; | | ப | -.PENTAGON: DB 33 : DW .SCR - DB 1 : DW .INT ; DW .BLN - DB 3 : DW .SNC - DB 1 : DW .BLN - DB 1 : DW .SCR - DB 1 : DW .RES - DB 0 ; end - -;--- -VideoModes: -.text_mode80x32: - DB 40 - DB 32 - DB 0 - DB 0 - DB %00011011 - DB 0 - DB 0 - DB 0 -.graf_mode320x256: - DB 80 - DB 32 - DB 0 - DB 0 - DB %01100000 - DB 0 - DB 0 - DB 0 -;---------------------------------------------------------------------; - ;; - - ;; -RESERVED_PAGES_COPY: BLOCK RESERVED_PAGES.Size,#FF -.SYS_FN EQU RESERVED_PAGES.SYS_FN - RESERVED_PAGES -.BIOS EQU RESERVED_PAGES.BIOS - RESERVED_PAGES -.PICTURE EQU RESERVED_PAGES.PICTURE - RESERVED_PAGES -.FLASHER_RAM EQU RESERVED_PAGES.FLASHER_RAM - RESERVED_PAGES - ;; -;-----------------------------------------------------------------------; - BYTE "ACEX 1K" -FOR_ACEX: DB "0" + TYPE_OF_ACEX - BYTE "0" - - BYTE "FULL BOARD ID:" -BOARD_ID_DATA: -.Start: DW #5283 -.Number: DW 0 ; 뢮 5 : 0..99999 #0000..#270F -.End: DW #47E8 -.Type: DB 0 - BYTE "--<=END=>--" -END_SECOND_SECTION EQU $ -; - DISPLAY "IMG size = ",/A,END_SECOND_SECTION - BEGIN_CB_IMG - OUTEND -;; \ No newline at end of file diff --git a/Crazy BIOS/rom/_not_used/EasterSprites.asm b/Crazy BIOS/rom/_not_used/EasterSprites.asm deleted file mode 100644 index 981249e..0000000 --- a/Crazy BIOS/rom/_not_used/EasterSprites.asm +++ /dev/null @@ -1,41 +0,0 @@ -Sprites: -; 室 IX ⠡ 뢮묨 ࠩ⠬ - IN A,(SLOT1) - LD H,A - IN A,(PORT_Y) - LD L,A - PUSH HL - - LD A,#58 - OUT (SLOT1),A - -; ld ix,SP_Table - ld b,(ix+0) - inc ix -.loop: - push bc - LD A,(ix+str_EasterSprites.SpHeight) ; !!!!! न ⨭ Y + ⨭ - ld l,(ix+str_EasterSprites.SpAddress) - ld h,(ix+str_EasterSprites.SpAddress+1) -.putSprite: - DEC A - OUT (PORT_Y),A - LD E,(ix+str_EasterSprites.SpXCoord) ; !HARDCODE न ⨭ - LD D,(ix+str_EasterSprites.SpXCoord+1) - LD C,(ix+str_EasterSprites.SpWidth) ; !HARDCODE ਧ⠫쭮 ⨭ - LD B,(ix+str_EasterSprites.SpWidth+1) - LDIR - CP (IX+str_EasterSprites.SpYCoord) - JP NZ,.putSprite - ld c,str_EasterSprites - add ix,bc - pop bc - djnz .loop - - POP BC - LD A,B - OUT (SLOT1),A - LD A,C - OUT (PORT_Y),A - XOR A - RET \ No newline at end of file diff --git a/Crazy BIOS/rom/_not_used/LZ4_DEC.asm b/Crazy BIOS/rom/_not_used/LZ4_DEC.asm deleted file mode 100644 index f25c685..0000000 --- a/Crazy BIOS/rom/_not_used/LZ4_DEC.asm +++ /dev/null @@ -1,157 +0,0 @@ -;------------------------------------------------------------------------------ -;hl=src de=dst -lz4decrunch: - ld bc,7 - add hl,bc - ld c,(hl) - inc hl - ld b,(hl) ;quv} trp qpzp yx xps|r{p - px}u - inc hl - inc hl - inc hl ;~pp| wp tp~~ }uu~y #0B - - ld a,l - add a,c - ld (.endL+1),a - ld a,h - adc a,b - ld (.endH+1),a ;K~u~z ptu wp tp~~ - -.loop: - ld a,(hl) - inc hl - ld (.litteral+1),a - and #F0 - jr z,.copy ;E|y t|y~p pr~p 0, {yrp wu uutp~~u tp~~u - rrca - rrca - rrca - rrca - ld b,0 - ld c,a - cp #0F - call z,.getlength ;E|y t|y~p #0F, |y t|~yu|~ t|y~ - - ldir ;Puutpp ~py~pu |utuz y~}pyy t|y~u - -.copy: - ld a,l ;tys|y |y wpu tp~~u {~u~s ptup -.endL: - sub #FF - ld a,h -.endH: - sbc a,#FF - ret nc ;^u{yr~p ru{p zf=1 - - ld c,(hl) - inc hl - ld b,(hl) ;bc=2byte Xu~yu x~pu~y }uu~y - inc hl - -.litteral: - ld a,0 ;litteral uuyp xtu - and #0F - add a,#04 ;cf=0 - - push hl - ld h,d - ld l,e - sbc hl,bc ;hl=de-bc I|xzu tp~~u, {u wu q|y pyu~, r {puru y~y{p uutpy - - ld b,0 - ld c,a - cp #0F+#04 - ex (sp),hl - call z,.getlength - ex (sp),hl - - ldir ;Kyrp uu~ wu pxru~ tp~~ - pop hl - jp .loop - -.getlength: ;P|y t|y~ qpzp uurtp (q|u) bc=u{p }}p uurtp - ld a,(hl) - inc hl - cp #FF ;#FF trpyrpu {p{ x~p{, xp {} |utu y~}py t|y~u - jr nz,.addlen - inc b - dec bc ;bc += 255 - jr .getlength -.addlen: - add a,c - ld c,a - adc a,b - sub c - ld b,a ;bc=t|y~p uutprpu}s qpzp - ret - -;------------------------------------------------------------------------------ -;in: hl=~pp|~z ptu bc=t|y~p -;out: bcde=ux|p -crc32: - push hl - push bc - - ld de,#FFFF ; 0xFFFFFFFF ? ~pp|~u x~pu~yu CRC32, y|xu}s r ZIP - ld h,d - ld l,e - ld c,#20 ;{pu~yu - - exx - pop hl - dec hl - inc h - inc l - ld b,l - ld c,h - pop hl -.loop1: - ld a,(hl) - inc hl - exx - - xor e - ld b,8 -.loop2: - srl h - rr l - rr d - rra - jp nc,.skip - ld e,a - ld a,h - xor #ED - ld h,a - ld a,l - xor #B8 - ld l,a - ld a,d - xor #83 - ld d,a - ld a,e -; xor #20 - xor c -.skip: - djnz .loop2 - ld e,a - - exx - djnz .loop1 - dec c - jp nz,.loop1 - exx - - ld a,h ;CRC32, y|xu}z r ZIP, y~y}pu xor 0xFFFFFFFF r {~u - cpl - ld b,a - ld a,l - cpl - ld c,a - - ld a,d - cpl - ld d,a - ld a,e - cpl - ld e,a - ret diff --git a/Crazy BIOS/rom/_not_used/Logo_Depacker.asm b/Crazy BIOS/rom/_not_used/Logo_Depacker.asm deleted file mode 100644 index b5276d2..0000000 --- a/Crazy BIOS/rom/_not_used/Logo_Depacker.asm +++ /dev/null @@ -1,89 +0,0 @@ - CALL #E1D2 - DI - LD (RelocatedCode.SPsave),SP - LD HL,.START - LD DE,#D800 - LD BC,.END-.START - PUSH DE - LDIR - - LD HL,#E1D1 - LD DE,#FFFF - LD BC,#0850 - RET - -RelocatedCode: -.START: - LDDR - LD HL,#F7B0 - LD DE,#D900 - LD B,#00 - LD A,(HL) - BIT 7,A - JR NZ,#D94A - AND #0F - LD B,A - RLD - ADD A,#03 - LD C,A - INC HL - LD A,E - SUB (HL) - INC HL - LD SP,HL - LD H,(HL) - LD L,A - LD A,D - SBC A,B - LD B,H - LD H,A - LD A,B - LD B,#00 - LDIR - LD H,B - LD L,C - ADD HL,SP - JR #D929 - AND #7F - JR Z,#D967 - INC HL - BIT 6,A - JR NZ,#D958 - LD C,A - LDIR - JR #D928 - AND #3F - ADD A,#03 - LD B,A - LD A,(HL) - INC HL - LD C,(HL) - LD (DE),A - INC DE - DJNZ #D960 - LD A,C - JR #D929 - LD SP,#D85B - LD B,#03 - POP HL - DEC SP - POP AF - LD (HL),A - DJNZ #D96C -.SPsave+1: LD SP,#0000 - DI - RET - NOP - NOP - NOP - NOP - NOP - NOP - NOP - NOP - NOP - NOP - NOP -.END EQU $ -; ⨭ ⮢ ࠭ ᫥ ᢥ - INCBIN 'SP_LOGO.BIN' \ No newline at end of file diff --git a/Crazy/ACEX_RAM.ASM b/Crazy/ACEX_RAM.ASM new file mode 100644 index 0000000..97b5273 --- /dev/null +++ b/Crazy/ACEX_RAM.ASM @@ -0,0 +1,693 @@ + ; 樠 ⥬ ⮢ Z84C15 ; + DI + LD BC,#FF*256 + Z84.SYS.Control + XOR A ; Z84.REG.WaitState_Ctrl + OUT (C),A ; Z84.SYS.Control + INC C ; Z84.REG.WaitState_MemBound + OUT (C),A ; Z84.SYS.Data ; set 0 Waits + ; + DEC C + LD A,3 ; Z84.REG.Misc_Ctrl + OUT (C),A ; Z84.SYS.Control + INC C + ; boundary set! + LD A,1 ; enable CS0, disable CS1 + OUT (C),A ; Z84.SYS.Data + ; 樠 DCP ; + LD HL,INIT_SLOTS +DCP_INIT: LD C,XL + LD B,XH + LD E,YL + LD D,YH + EXX + ; + LD HL,#C000 + LD DE,#C001 + LD BC,#3FFF + LD (HL),L + LDIR + ; + LD IY,DCP_DATA + LD IX,.ret + ; +.loop: LD L,(IY) + LD H,(IY+1) + LD E,(IY+2) + LD D,(IY+3) + LD B,(IY+4) + JP .PARSE_TABLE + ; +.ret: LD BC,5 + ADD IY,BC + LD A,(IY+2) + OR (IY+3) + JR NZ,.loop + ; + EXX + LD XL,C + LD XH,B + LD YL,E + LD YH,D + ; First IN command - OPEN DCP + IN A,(SLOT3) + JP (HL) + ; +.PARSE_TABLE: LD A,L + AND E + LD L,A + ; + LD A,H + AND D + OR #C0 + LD H,A + ; + LD A,D + OR #C0 + LD D,A + ; +.loop_parse: LD (HL),B + ; + LD A,L ; ᪨஢ 塞 1- + OR E ; 宦 ७ + INC A ; 㢥 + JR Z,.carry ; ७ + ; + OR E + XOR E ; 㫨 塞 + LD C,A ; 塞 + ; + LD A,L + AND E ; 뤥 塞 + OR C + LD L,A ; 塞 + ; + JR .loop_parse ; 横 + ; A = 0 +.carry: LD A,L ; 塞 ﬨ + AND E + LD L,A + ; + LD A,H ; ᪨஢ 塞 1- + OR D ; 宦 ७ + INC A ; 㢥 + JR Z,.return + ; + OR D + XOR D + LD C,A ; 塞 + ; + LD A,H + AND D ; 뤥 塞 + OR C + LD H,A ; 塞 + JR .loop_parse +.return: JP (IX) + ; 樠 ࠭ ; +INIT_SLOTS: XOR A + OUT (SLOT0),A + OUT (SLOT1),A + DEC A + OUT (SLOT2),A + LD A,SYS_PAGE + OUT (SLOT3),A + ; 樠 ⮢ ; + LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON + OUT (SYS_PORT.ROM),A + ; 樠 ⥪ ; + LD SP,#4000 + ; ॡ ⠢襣 RAM ; + LD HL,0 + LD DE,#4000 + LD BC,END_CB + LDIR + XOR A + OUT (FastRAM.SLOT0),A + OUT (SYS_PORT.RAM),A + INC A + OUT (SLOT1),A + IN A,(FastRAM.OFF) + ; + ; ࠭ 0,1,2,#FE + ;; + ; 稩 ; + ;; + ; 楤 訡 + LD HL,ERROR + PUSH HL + ; 樠 HDD ; + CALL HDD_INIT + RET C + ; ⠭ ࠭ 㧪 ; + CALL Init_Mem + ; 㧪 ; + ; ⥫ 㭪樨 +LOAD_FNs: LD A,(RESERVED_PAGES.SYS_FN) ; ࠭ , ᫨ #C000 (BLOCK_ID) + LD B,sys_fn_in_sectors ; ᫮ ⠥ ᥪ஢ + LD HL,bufer_adr ; + LD IX,sec_high ; ᮫ ᥪ + LD DE,sec_low ; ᮫ ᥪ + PUSH HL + CALL FN_HDD_READ + ; ࠧ BIOS +LOAD_DATA: LD B,4 + LD IY,RESERVED_PAGES.BIOS + POP HL + CALL .LOADER + ; ⨭ + LD B,2 + CALL .LOADER + JP BEGIN_CB_IMG +.LOADER: ; 㧪 128 ᥪ஢ +.loop: PUSH HL + PUSH BC + LD A,(IY) + LD B,128 + LD DE,1 + CALL FN_HDD_READ_NEXT + LD BC,4 + ADD IY,BC + POP BC + POP HL + DJNZ .loop + RET + ;; + + + ;; + ; 楤 ; + ;; +; FOR LBA ONLY - NEXT_READ +; HL - bufer, A - page +; B - numer of sectors +; DE - add_par (next+DE) (d.b. 1 for NEXT) +FN_HDD_READ_NEXT: + AND A + INC B + DEC B + RET Z ; ret if 0 sectors + CALL HD_WAIT + RET C + CALL NEXT_ADD_SEC + JR FN_HDD_READ.L1 + ; +; HL - BUFER, A - PAGE, +FN_HDD_READ: AND A + INC B + DEC B + RET Z + CALL HD_WAIT + CALL NC,HD_PREPARE + RET C +.L1: EXX + LD C,SLOT3 + IN B,(C) + EXX + OUT (SLOT3),A + EX AF,AF' + ; + LD BC,IDE.Write.Command + LD A,IDE.ATA.ReadSectorsWithRetry + OUT (C),A +.L2: CALL WAIT_HDD + AND IDE.ControlByte.DataRequest + JR Z,.HD_RET + ; + LD BC,IDE.Read.Data + INIR + INIR + ; + LD A,H + OR L + JR NZ,.L2 + ; + LD A,SYS_PAGE + OUT (SLOT3),A + EX AF,AF' + LD H,high SYS_PAGE.RAMD_FAT ;!FIXIT ⠡ + LD L,A + LD A,(HL) + OUT (SLOT3),A + EX AF,AF' + LD HL,#C000 + JR .L2 + ; +.HD_RET: EXX + OUT (C),B + EXX + LD BC,IDE.Read.Error + IN A,(C) + AND A + SCF + RET NZ + ; + EX AF,AF' + AND A + RET + ;; + + ;; +NEXT_ADD_SEC: PUSH AF + ; + LD A,B + LD BC,IDE.Write.Counter ; ⠭ ᫮ ᥪ஢ + OUT (C),A + ; + DEC B + INC C + IN A,(C) ; IDE.Read.Sector + ADC A,E + INC B + OUT (C),A ; IDE.Write.Sector + ; + DEC B + INC C + IN A,(C) ; IDE.Read.CylinderLow + ADC A,D + INC B + OUT (C),A ; IDE.Write.CylinderLow + ; + DEC B + INC C + IN A,(C) ; IDE.Read.CylinderHigh + ADC A,0 + INC B + OUT (C),A ; IDE.Write.CylinderHigh + ; + LD BC,IDE.Read.Control + IN A,(C) + LD D,A + ADC A,0 + AND #0F + LD E,A + LD A,D + AND #F0 + OR E + INC B + OUT (C),A ; IDE.Write.DeviceHead + ; + POP AF + RET + ;; + + ;; +HD_PREPARE: PUSH AF + PUSH HL + ; HD_CALC_SECS + LD L,E + LD E,D + LD D,XL + LD A,XH + AND #0F ; LBA 28 + LD H,A + ; + LD A,B + LD BC,IDE.Write.Counter ; ⠭ ᫮ ᥪ஢ + OUT (C),A + ; + INC C + OUT (C),L + INC C + OUT (C),E + INC C + OUT (C),D + ; + LD BC,IDE.Read.Control + IN A,(C) + AND #F0 ; !!!!! ᬮ + OR H + INC B ; IDE.Write.DeviceHead + OUT (C),A + POP HL ; BUFER & PAGE + POP AF + AND A + RET + ;; + + ;; +HDD_INIT: LD A,IDE.Chanel.Primary + OUT (IDE.Chanel.Set),A + CALL TEST_HDD_DRV + SCF + RET NZ + ; + CALL WAIT_HDD + LD BC,IDE.Write.Command + LD A,IDE.ATA.IdentifyDevice ;!FIXIT । + OUT (C),A + CALL WAIT_HDD + AND IDE.ControlByte.DataRequest + SCF + RET Z + ; + LD BC,IDE.Read.Data + LD HL,SYS_PAGE.HD_IDF_ADR + INIR + INIR + ; B = 0 + LD H,B + LD L,B + LD A,(SYS_PAGE.HD_IDF_ADR.sectors) ; ᫮ ᥪ஢ + LD C,A + LD A,(SYS_PAGE.HD_IDF_ADR.heads) ; ᫮ +.loop: ADD HL,BC + DEC A + JR NZ,.loop + LD (SYS_PAGE.HD_IDF_ADR.sec_cyl),HL + CALL WAIT_HDD + LD BC,IDE.Read.Control + IN A,(C) + AND #10 + LD B,A + LD A,(SYS_PAGE.HD_IDF_ADR.heads) ; ᫮ + DEC A + AND #0F + OR IDE.Drive.Master + OR B + ; + LD H,A + LD A,(SYS_PAGE.HD_IDF_ADR.LBA_CHS) + AND %0000'0010 + SCF + RET Z ; NO_LBA + ; + SET 6,H + LD BC,IDE.Write.DeviceHead + OUT (C),H + LD A,(SYS_PAGE.HD_IDF_ADR.sectors) ; ᫮ ᥪ஢ +.HDD_CONFIGURED: + LD BC,IDE.Write.Counter + OUT (C),A + LD A,IDE.ATA.InitializeDeviceParameters ; SET HDD PARAMETERS +HD_CMD_EXE: CALL HD_WAIT + RET C + LD BC,IDE.Write.Command + OUT (C),A +HD_WAIT: PUSH DE + PUSH BC + PUSH AF + LD DE,0 +.loop: LD BC,IDE.Read.Status + IN A,(C) + AND IDE.ControlByte.Busy + JR Z,.EXIT + DEC DE + LD A,D + OR E + JR NZ,.loop + POP AF + POP BC + POP DE + SCF + RET ; error + ; +.EXIT: POP AF + POP BC + POP DE + AND A + RET + ;; + + ;; +WAIT_HDD: LD BC,IDE.Read.Status +.loop: IN A,(C) + BIT IDE.ControlBit.Busy,A + JR NZ,.loop + RET + ;; + + ;; +Init_Mem: LD HL,SYS_PAGE.RAMD_FAT; ; RAM FAT . + ; 塞 ⠡ + XOR A +.loopFree: LD (HL),A + INC L + JR NZ,.loopFree + ; १ࢨ㥬 ᯥ.࠭ ࠭ ZX + LD B,RESERVED_PAGES.Blocks + LD DE,RESERVED_PAGES ; ⠡ ⥬ ࠭ +.loop: LD A,(DE) + CP #FF + JR Z,.exitLoop +.loopBlk: INC DE + LD L,A + LD A,(DE) + LD (HL),A + CP #FF + JR NZ,.loopBlk +.exitLoop: INC DE + DJNZ .loop + LD L,A + LD (HL),A + RET + ;; + + ;; +TEST_HDD_DRV: ;LD HL,#01FE + LD BC,IDE.Write.Counter + OUT (C),L + INC C + OUT (C),H ; IDE.Write.Sector + ; + DEC C + DEC B + IN A,(C) ; IDE.Read.Counter + CP L + RET NZ + INC C + IN A,(C) ; IDE.Read.Sector + CP H + RET + ;; + +ERROR: ; 窮 ; + LD A,SYS_PORT.TURBO.OFF +.big_loop: LD BC,0 + OUT (SYS_PORT.ROM),A +.loop: DEC BC + INC B + DJNZ .loop + XOR 1 + JR .big_loop + ;; +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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + DB ACEX.Pent_7FFD + 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 + 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 + 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 + 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 + DB ACEX.SLOT3 + ; DCP END MARKER + DW 0,0,0 +;-----------------------------------------------------------------------; +RESERVED_PAGES:; [x] Block #1 - ᢮ ID 1 + ; ⥫ 楤 +.SYS_FN: DB SYS_FN_PAGE + ; ࠧ 訢 +.BIOS: DB #10,#11,#12,#13 + DB #14,#15,#16,#17 + DB #18,#19,#1A,#1B + DB #1C,#1D,#1E,#1F + ; ⨭ +.PICTURE: DB 2,3,4,5,6 + ; ࠧ 訢騪 +.FLASHER_RAM: DB 7,8 + DB #FF ; End of the block +.Blocks EQU 1 +.Size EQU $-RESERVED_PAGES +;-----------------------------------------------------------------------; \ No newline at end of file diff --git a/Crazy/IMG_PART.ASM b/Crazy/IMG_PART.ASM new file mode 100644 index 0000000..455487e --- /dev/null +++ b/Crazy/IMG_PART.ASM @@ -0,0 +1,783 @@ + LD HL,RESERVED_PAGES + LD DE,#4000 + RESERVED_PAGES_COPY + LD BC,RESERVED_PAGES.Size + LDIR + LD SP,#4000 + LD A,SYS_FN_PAGE + OUT (SLOT0),A + JP INIT_SCREEN - #4000 + ; +.start_code EQU $ + + ; 樠 ࠭ ; +INIT_SCREEN: CALL FN_SYNC + ; + LD IX,VideoModes.graf_mode320x256 + LD E,%00010001 + CALL WIN_OPEN + ; 樠 ; +INIT_PALETTE: ;IN A,(SLOT1) + ;PUSH AF + LD B,#FF + LD HL,PICTURE.bdPallete ;#8FBC ;!HARDCODE PICTURE.bdPallete + LD DE,0 + LD A,1 + CALL SET_PALETTE + CALL SET_PICTURE + CALL SET_BOARD_NUMBER + ; । 稯 + CALL DETECT_ROM + ; + + ; ⠭ ॣ஢ + + ; 릮 室 䫥 + + ;; +SET_BOARD_NUMBER: + IN A,(SLOT3) + EX AF,AF' + LD A,#18 ;!HARDCODE + OUT (SLOT3),A + ; + LD HL,(BOARD_ID_DATA.Start) + LD (BoardNumOffsets.Start),HL + LD HL,(BOARD_ID_DATA.Number) + LD (BoardNumOffsets.Number),HL + LD HL,(BOARD_ID_DATA.End) + LD (BoardNumOffsets.End),HL + LD A,(BOARD_ID_DATA.Type) + LD (BoardNumOffsets.Type),A + ; + LD A,#10 ;!HARDCODE + OUT (SLOT3),A + LD A,(FOR_ACEX) + LD (#C000 + expBIOS_Vars.msgStrings.str_ACEX_MODEL),A + LD (#C000 + expBIOS_Vars.msgRusStrings.str_ACEX_MODEL),A + ; + EX AF,AF' + OUT (SLOT3),A + RET + ;; +DISP_WINDOW EQU $ + DISP #4000 + DISP_WINDOW +DETECT_ROM: LD HL,0 + ADD HL,SP + LD SP,#4000 + LD (.sp_save),HL + ; + CALL TEST_ROM_CHIP ;!HARDCODE TEST_ROM_CHIP #8E59 + LD (TST_R.jp),BC ;!HARDCODE TST_R.jp #81D5 + ; +.sp_save+1: LD SP,0000 + XOR A + OUT (SYS_PORT.RAM),A + RET + ENT + ;; + ;; + ;; + ;; + ;; +SET_PICTURE: LD A,#FF - MAIN_PICTURE.PIC_Y +.loop_pic: PUSH AF + + LD A,#50 + OUT (SLOT1),A + + POP AF + OUT (PORT_Y),A + + LD HL,.pic_buffer + LD DE,#4000 + Screen_Offset + MAIN_PICTURE.PIC_X + ; + LD BC,MAIN_PICTURE.PIC_WIDTH + LDIR + ; + LD H,A + POP AF + OUT (SLOT1),A + PUSH AF + + LD A,H + DEC A + CP MAIN_PICTURE.PIC_Y-1 + JR NZ,.loop_pic + + POP AF + OUT (SLOT1),A + IM 1 + EI + RET +.pic_buffer: BLOCK MAIN_PICTURE.PIC_WIDTH,0 + ;; +; ⠭ ० +LP_MODE_LINE: BIT 0,(IX+Window_Variables.USER.MODE_S) + JP NZ,LP_MODE_LINE2 ; ᯥ + BIT 4,A + JP Z,LP_MODE_LINE3 ; 䨪! + DEC D + ; ⥪⮢ ०. + EX AF,AF' + LD A,#50 + OUT (SLOT3),A + LD A,L ; ⨪쭮 + CP #80 + JR NC,LP_EXIT_MODE + ; +LP_MODE_RECURSE: + LD A,D ; ਧ⠫쭮 + AND 7FH + SUB 80 + JR C,LP_MODE_LL + SUB 48 + NEG + ; + LD E,A ; + ADD A,D + LD D,A ; + ; + LD A,E ; ⠭ + RRA + AND 3FH + SUB C + JR NC,LP_EXIT_MODE + NEG + LD C,A ; 祭 C + JR LP_MODE_RECURSE + ; +LP_MODE_LL: NEG + RRA + AND 3FH + CP C + JR NC,LP_MODE_LR + LD C,A +LP_MODE_LR: EX AF,AF' + INC D +LP_MD_LL1: EX AF,AF' + LD A,D + OUT (PORT_Y),A + EX AF,AF' + LD (HL),A ; ० + INC D + EX AF,AF' + LD A,D + OUT (PORT_Y),A + EX AF,AF' + LD (HL),A ; ० + INC D + DEC C + JR NZ,LP_MD_LL1 + EX AF,AF' +LP_EXIT_MODE: LD A,SYS_PAGE + OUT (SLOT3),A + EX AF,AF' + RET + ; + +; ⠭ ० +; Spectrum mode +LP_MODE_LINE2: LD A,(IX+Window_Variables.WORK_2) + LD B,(IX+Window_Variables.WORK_1) + ; + DEC D + ; + EX AF,AF' + LD A,#50 + OUT (SLOT3),A + LD A,L ; ⨪쭮 + CP #80 + JR NC,LP_EXIT_MODE2 + ; +LP_MODE_RECURSE2: + LD A,D ; ਧ⠫쭮 + AND #7F + SUB 80 + JR C,LP_MODE_LL2 + SUB 48 + NEG + ; + LD E,A ; + ADD A,D + LD D,A ; + ; + LD A,E ; ⠭ + RRA + AND #3F + SUB C + JR NC,LP_EXIT_MODE2 + NEG + LD C,A ; 祭 C + JR LP_MODE_RECURSE2 + ; +LP_MODE_LL2: NEG + RRA + AND #3F + CP C + JR NC,LP_MODE_LR2 + LD C,A +LP_MODE_LR2: EX AF,AF' + INC D +LP_MD_LL2: EX AF,AF' + LD A,D + OUT (PORT_Y),A + EX AF,AF' + LD (HL),A ; ० + INC L + LD (HL),B + INC L + LD (HL),B + DEC L + DEC L + INC D + BIT 4,A + JR NZ,lp_md_ll3x + INC B +lp_md_ll3x: EX AF,AF' + LD A,D + OUT (PORT_Y),A + EX AF,AF' + LD (HL),A ; ० + INC L + LD (HL),B + INC L + LD (HL),B + DEC L + DEC L + INC D + INC B + JR NZ,LP_NO_ADD_40 + ADD A,#40 +LP_NO_ADD_40: DEC C + JR NZ,LP_MD_LL2 + EX AF,AF' +LP_EXIT_MODE2: LD A,SYS_PAGE + OUT (SLOT3),A + EX AF,AF' + LD (IX+Window_Variables.WORK_1),B + LD (IX+Window_Variables.WORK_2),A + RET + ; +; ⠭ ० +LP_MODE_LINE3: ; Grafic Mode + LD A,(IX+Window_Variables.WORK_1) + LD B,(IX+Window_Variables.WORK_2) + DEC D + EX AF,AF' + LD A,#50 + OUT (SLOT3),A + LD A,L ; ⨪쭮 + CP #80 + JR NC,LP_EXIT_MODE3 + ; +LP_MODE_RECURSE3: + LD A,D ; ਧ⠫쭮 + AND #7F + SUB 80 + JR C,LP_MODE_LL3 + SUB 48 + NEG + LD E,A ; + ADD A,D + LD D,A ; + LD A,E ; ⠭ + RRA + AND #3F + SUB C + JR NC,LP_EXIT_MODE3 + NEG + LD C,A ; 祭 C + JR LP_MODE_RECURSE3 + ; +LP_MODE_LL3: NEG + RRA + AND #3F + CP C + JR NC,LP_MODE_LR3 + LD C,A +LP_MODE_LR3: EX AF,AF' + INC D + BIT 5,B + JR Z,LP_GR_640 + ; +LP_MD_LL3: EX AF,AF' + LD A,D + OUT (PORT_Y),A + EX AF,AF' + LD (HL),B ; ० + INC L + LD (HL),A ; ० 2 + INC L + LD (HL),0 ; ० 2 + DEC L + DEC L + INC D + INC D + INC A + LD E,A + AND 7 + JR NZ,LP_NO_INC_B + LD A,E + SUB 8 + LD E,A + INC B +LP_NO_INC_B: LD A,E + DEC C + JR NZ,LP_MD_LL3 + ; +LP_640_RET: EX AF,AF' +LP_EXIT_MODE3: LD A,SYS_PAGE + OUT (SLOT3),A + EX AF,AF' + LD A,(IX+Window_Variables.WORK_1) + ADD A,8 + LD (IX+Window_Variables.WORK_1),A + RET + ; +LP_GR_640: EX AF,AF' + LD A,D + OUT (PORT_Y),A + EX AF,AF' + LD (HL),B ; ० 1 + INC L + LD (HL),A ; ० 2 + INC L + LD (HL),0 ; ० 3 + INC D + EX AF,AF' + LD A,D + OUT (PORT_Y),A + EX AF,AF' + LD (HL),0 ; ० 3 + DEC L + LD (HL),A ; ० 2 + DEC L + LD (HL),B ; ० 1 + INC D + INC A + LD E,A + AND 7 + JR NZ,LP_NO_INC_B6 + LD A,E + SUB 8 + LD E,A + INC B +LP_NO_INC_B6: LD A,E + DEC C + JR NZ,LP_GR_640 + JP LP_640_RET + ;; +; 室: HL - RGB, E - 砫 梥 +; D - ᫮ 梥⮢, B - PAL-mask, A - page PAL +SET_PALETTE: PUSH IX + ; + EX AF,AF' + IN A,(RGADR) + PUSH AF ; ࠭ RGADR + LD A,E + OUT (RGADR),A ; 砫 梥 + LD A,D ; ࠭ ᫮ 梥⮢ + EX AF,AF' ; ࠭ PAL + ; + BIT 7,H ; ஢ + LD C,SLOT3 ; ᫨ 8000h + LD D,#C3 ; .࠭ ࠭ 3 + JR Z,.NO_PAGE1 + LD D,#43 ; + LD C,SLOT1 ; ࠭ 1 +.NO_PAGE1: ADD A,A + ADD A,A + AND #1C + XOR #E0 ; 訩 PAL + LD E,A ; DE - - + PUSH DE + POP IX ; + ; + LD D,B ; ᪠ PAL + EX AF,AF' ; ᫮ 梥⮢ + LD B,A ; ᫮ 梥⮢ + ; + IN E,(C) ; ࠭ ࠭ 3 + LD A,#50 ; ࠭ ᪮ RAM + OUT (C),A +.loopPal: ; 横 ⠭ 梥⮢ + LD A,(HL) ; B + AND D + LD (IX+2),A + INC HL + ; + LD A,(HL) ; G + AND D + LD (IX+1),A + INC HL + ; + LD A,(HL) ; R + AND D + LD (IX+0),A + INC HL + ; + LD A,(HL) ; Y + AND D + LD (IX+3),A + INC HL + ; + IN A,(RGADR) + INC A + OUT (RGADR),A + DJNZ .loopPal ; 믮, 0 + ; +.exit: OUT (C),E ; ⠭ ࠭ 3 + POP AF + OUT (RGADR),A ; ⠭ Y_PORT + POP IX + AND A + RET + ;; +LP_OPEN_PG: IN A,(SLOT3) + LD C,A + LD A,SYS_PAGE + OUT (SLOT3),A + ; + LD A,C + LD (SYS_PAGE.COPY_SLOT3),A + IN A,(PORT_Y) + LD (SYS_PAGE.COPY_RGADR),A + RET +LP_CLOSE_PG: LD A,(SYS_PAGE.COPY_RGADR) + OUT (PORT_Y),A + LD A,(SYS_PAGE.COPY_SLOT3) + OUT (SLOT3),A + RET + ;; +WIN_OPEN: CALL LP_OPEN_PG + LD (SYS_PAGE.WIN_MAP_SC),IX ; + PUSH DE + LD HL,(SYS_PAGE.WIN_MAP_SC) + LD DE,WIN_ID_0 + LD BC,Window_UserVars + LDIR + LD IX,WIN_ID_0 + POP DE + LD L,(IX+Window_Variables.USER.PLACE_H) + LD H,(IX+Window_Variables.USER.PLACE_V) + LD (IX+Window_Variables.MODE_E),E + ; + LD A,L + ADD A,A + INC A ; ᫥ PORT_Y + BIT 4,E + JR NZ,.LP_SET_NO_OR + OR #80 ; ᫨ 뢮 ன ࠭ +.LP_SET_NO_OR: LD (IX+Window_Variables.H_BEG),A + LD D,A + LD A,(IX+Window_Variables.USER.SIZE_H) + ADD A,A + ADD A,D + LD (IX+Window_Variables.H_END),A + LD (SYS_PAGE.WIN_MODE_SC),DE ; ਧ⠫ ࠭ + LD A,H + AND #3F + ADD A,A + ADD A,A + LD L,A + LD H,#C3 + LD (SYS_PAGE.WIN_MODE_SH),HL ; ⨪ ᮬ + LD (IX+Window_Variables.V_BEG),A + LD A,(IX+Window_Variables.USER.SIZE_V) + ADD A,A + ADD A,A + ADD A,L + LD (IX+Window_Variables.V_END),A + ; + LD L,(IX+Window_Variables.V_BEG) + LD H,#C3 + LD B,(IX+Window_Variables.USER.SIZE_V) ; ࠧ ⨪ + ; + LD (IX+Window_Variables.WORK_1),0 + LD A,(IX+Window_Variables.USER.MODE) ; ० + LD (IX+Window_Variables.WORK_2),A + BIT 4,A + JR NZ,.LOOP ; 室, ᫨ ⥪⮢ ० + ; + AND #F0 + LD C,A + LD A,(IX+Window_Variables.USER.GR_X) + RRCA + RRCA + RRCA + LD D,A + AND #0F + OR C + LD (IX+Window_Variables.WORK_2),A + ; + LD A,D + AND #E0 + LD C,A + LD A,(IX+Window_Variables.USER.GR_Y) + AND #1F + OR C + RLCA + RLCA + RLCA + LD (IX+Window_Variables.WORK_1),A + ; +.LOOP: LD D,(IX+Window_Variables.H_BEG) ; D - 砫 ப (PORT_Y) + LD C,(IX+Window_Variables.USER.SIZE_H) ; ࠧ ਧ⠫ + LD A,(IX+Window_Variables.USER.MODE) ; ० + ; + PUSH BC + CALL LP_MODE_LINE + POP BC + INC L + INC L + INC L + INC L + DJNZ .LOOP + ; + LD A,(IX+Window_Variables.MODE_E) + AND 1 + OUT (RGMOD),A + CALL LP_CLOSE_PG + CALL LP_INI_P + CALL LP_SIZE + XOR A + RET + ; +LP_INI_P: EX AF,AF' + EXX + CALL LP_OPEN_PG + ; ⨥ ᪮ ࠭ + ; LP_INI_NO_ZG: + LD A,(WIN_ID_0.H_BEG) + LD D,A + LD A,(WIN_ID_0.V_BEG) + LD L,A + INC L + LD H,#C3 + + AND A + LD A,(WIN_ID_0.USER.MODE) + BIT 5,A + LD A,(WIN_ID_0.USER.SIZE_H) + JR NZ,LP_INI_40 + ADD A,A + SCF + ;!TODO - 믨 +LP_INI_40: LD B,A + LD (WIN_ID_0.SIZE_REL),A + EX AF,AF' + EXX + JP LP_END_P + ; +; WIN_MAP_SC - ࠭ +; 0 - hor size +; 1 - ver size +; 2 - hor place +; 3 - ver place +LP_SIZE: ; । size + CALL LP_OPEN_PG + LD DE,(WIN_ID_0.USER.SIZE_H) + LD A,(WIN_ID_0.USER.MODE) + BIT 5,A + CALL LP_CLOSE_PG + RET NZ + LD A,E + ADD A,A + LD E,A + RET + ; +LP_END_P: LD A,SYS_PAGE + OUT (SLOT3),A +.SYS_PAGE: EX AF,AF' + EXX + RLA + LD E,A + LD (WIN_ID_0.reg_HL),HL ; + LD (WIN_ID_0.reg_DE),DE + LD (WIN_ID_0.reg_BC),BC + CALL LP_CLOSE_PG + EXX + EX AF,AF' + AND A + RET +.short: EX AF,AF' + EXX + CALL LP_CLOSE_PG + EXX + EX AF,AF' + AND A + RET + ;; +FN_SYNC: LD A,Port_VSYNC.SET_320L + OUT (Port_VSYNC),A + LD C,SLOT3 + IN B,(C) + LD A,SYS_PAGE + OUT (C),A + LD A,(SYS_PAGE.VSyncAndWaits) + OR 1 + LD (SYS_PAGE.VSyncAndWaits),A + ; +.INT_DEF: LD DE,(SYS_PAGE.CONFIG_ALL) + OUT (C),B + LD IX,SCREEN_TABLES.PENTAGON + IN A,(SLOT3) + EX AF,AF' + LD A,SYS_PAGE + OUT (SLOT3),A + EX AF,AF' + LD (SYS_PAGE.COPY_SLOT3),A + IN A,(PORT_Y) + LD (SYS_PAGE.COPY_RGADR),A + LD (SYS_PAGE.CONFIG_ALL),IX + XOR A +;----[START]-----------------------[? 1] +.loop_1: OUT (PORT_Y),A + EX AF,AF' + LD A,#50 + OUT (SLOT3),A + LD HL,#C300 +;----[START]------------------[v 2]----- +.loop_2: LD C,(IX) +;----[START]-------------[v 3]---------- +.loop_3: ; 㦥 ࠭ + LD E,(IX+1) ; take adress of line X + LD D,(IX+2) +;----[START]--------[v 4]--------------- +.loop_4: + LD A,(DE) ; take counter in table 1, line X, column Y + INC DE + AND A + JR Z,.loop_4_exit ; exit if zero-counter + LD B,A + LD A,(DE) + INC DE +;----[START]---[v 5]-------------------- +.loop_5: + LD (HL),A + INC L + LD (HL),0 + INC L + LD (HL),0 + ; + EX AF,AF' + INC A + OUT (PORT_Y),A + EX AF,AF' + ; + LD (HL),0 + DEC L + LD (HL),0 + DEC L + LD (HL),A + ; + EX AF,AF' + INC A + OUT (PORT_Y),A + EX AF,AF' + DJNZ .loop_5 +;--------------[^ 5]-------------------- + JR .loop_4 +;-------------------[^ 4]--------------- +.loop_4_exit: INC HL ; next line + INC HL + INC HL + INC HL + IN A,(PORT_Y) + AND #80 + OUT (PORT_Y),A + DEC C + JR NZ,.loop_3 +;------------------------[^ 3]---------- + INC IX ; next counter + INC IX + INC IX + LD A,(IX) + AND A + JR NZ,.loop_2 +;-----------------------------[^ 2]----- + LD A,SYS_PAGE + OUT (SLOT3),A + LD IX,(SYS_PAGE.CONFIG_ALL) + + EX AF,AF' + ADD A,#80 + JR NC,.loop_1 +;----------------------------------[^ 1] + ; Exit + LD A,(SYS_PAGE.COPY_RGADR) + OUT (PORT_Y),A + LD A,(SYS_PAGE.COPY_SLOT3) + OUT (SLOT3),A +.exit: OR A + RET +;--- Screen data table 1: counter1, data1 .. counterX, dataX +SCREEN_TABLES:; | ᫮ | 祭 | +; | ப | | +; | /2 | ப | +.SCR: DB 41 , #F8 + DB 3 , #FC + DB 4 , #FC + DB 7 , #FC + DB 9 , #F8 + DB 0 +.INT: DB 40,#FC, 2,#FD, 6,#FC, 7,#FC, 9,#FC, 0 +.BLN: DB 41,#FC, 3,#FC, 4,#FC, 7,#FC, 9,#FC, 0 +.SNC: DB 41,#FC, 3,#FC, 4,#FC, 7,#FC, 9,#FC, 0 +.RES: DB 41,#F8, 3,#FE, 4,#FE, 7,#FE, 9,#F8, 0 +;--- Screen data tables 2: counter1, data address1 .. counterX, data addressX +; +; | - | 祭 | +; | ப | | +; | | ப | +.PENTAGON: DB 33 : DW .SCR + DB 1 : DW .INT ; DW .BLN + DB 3 : DW .SNC + DB 1 : DW .BLN + DB 1 : DW .SCR + DB 1 : DW .RES + DB 0 ; end + +;--- +VideoModes: +.text_mode80x32: + DB 40 + DB 32 + DB 0 + DB 0 + DB %00011011 + DB 0 + DB 0 + DB 0 +.graf_mode320x256: + DB 80 + DB 32 + DB 0 + DB 0 + DB %01100000 + DB 0 + DB 0 + DB 0 +;---------------------------------------------------------------------; + ;; + + ;; +RESERVED_PAGES_COPY: BLOCK RESERVED_PAGES.Size,#FF +.SYS_FN EQU RESERVED_PAGES.SYS_FN - RESERVED_PAGES +.BIOS EQU RESERVED_PAGES.BIOS - RESERVED_PAGES +.PICTURE EQU RESERVED_PAGES.PICTURE - RESERVED_PAGES +.FLASHER_RAM EQU RESERVED_PAGES.FLASHER_RAM - RESERVED_PAGES + ;; +;-----------------------------------------------------------------------; + BYTE "ACEX 1K" +FOR_ACEX: DB "0" + TYPE_OF_ACEX + BYTE "0" + + BYTE "FULL BOARD ID:" +BOARD_ID_DATA: +.Start: DW #5283 +.Number: DW 0 ; 뢮 5 : 0..99999 #0000..#270F +.End: DW #47E8 +.Type: DB 0 + BYTE "--<=END=>--" +;-----------------------------------------------------------------------; \ No newline at end of file diff --git a/CrazyBlaster.asm b/CrazyBlaster.asm new file mode 100644 index 0000000..b6f42f3 --- /dev/null +++ b/CrazyBlaster.asm @@ -0,0 +1,46 @@ + + + INCLUDE 'Shared_Includes/constants/SP2000.inc' + INCLUDE 'Build/updater.inc' +;INCLUDE 'Shared_Includes/structures/FileSystem.inc' +;INCLUDE 'Shared_Includes/macroses/macros.z80' +;INCLUDE 'Shared_Includes/constants/BIOS_EQU.inc' + + DEFINE sec_high 0 + DEFINE sec_low 1 + DEFINE SYS_FN_PAGE 1 +;DEFINE ACEX_ROM_COPY_PAGE 0 + DEFINE bufer_adr #C000 + DEFINE sys_fn_in_sectors #4000 / #200 + DEFINE bios_size_in_sectors 512 + DEFINE flasher_size_in_sectors 1 + DEFINE image_size_in_sectors flasher_size_in_sectors + bios_size_in_sectros + DEFINE TYPE_OF_ACEX 3 ; 3 - 1K30, 5 - 1K50 + +;; +;[ FIRST SECTION - CONF ROM ]; +;; + OUTPUT './Build/CrazyBlaster.raw' + ORG #0000 +BEGIN_CB: INCLUDE 'Crazy/ACEX_RAM.ASM' +END_FIRST_SECTION EQU $ +; + DISPLAY "ROM size = ",/A,END_FIRST_SECTION - BEGIN_CB + OUTEND +;; + + + +;; +;[ SECOND SECTION - IMAGE ON DRIVE ]; +;; +;OUTPUT './Build/CrazyBlasterIMG.raw' + OUTPUT './Build/CB_BIOS_IMG.raw' + ORG #0000 +;BEGIN_CB_IMG: INCLUDE 'Crazy/IMG_PART.ASM' +BEGIN_CB_IMG: INCLUDE 'Crazy/IMG_PART.ASM' +END_SECOND_SECTION EQU $ +; + DISPLAY "IMG size = ",/A,END_SECOND_SECTION - BEGIN_CB_IMG + OUTEND +;; \ No newline at end of file diff --git a/Shared_Includes b/Shared_Includes index 93ab939..4662474 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 93ab93917db326a86a0ffecc02a62f6f6ef7a938 +Subproject commit 4662474034c70f4b2627ff8eca10ccdf4a7d3525