diff --git a/Crazy BIOS/BIOS.asm b/Crazy BIOS/BIOS.asm index 47a6533..4e3a86f 100644 --- a/Crazy BIOS/BIOS.asm +++ b/Crazy BIOS/BIOS.asm @@ -16,7 +16,7 @@ ;---------------------------------------; ;-----------[Shared Includes]----------- - INCLUDE 'src/bios/shared/includes.inc' ; Includes + INCLUDE 'crazy bios/shared/includes.inc' ; Includes ;--------------------------------------- @@ -30,50 +30,6 @@ ENDLUA - IF PACKED_MAIN -;------------[MAIN prebuild]------------; - LUA PASS1 - -- настраиваем путь до упаковщика - detected_os = Detect_os() - print ("OS detected:", detected_os) - print () - - if detected_os == "Windows" then - pack_prog = "src\\bin\\hrust.exe Build\\Bin\\temp\\MAIN.PAK Build\\Bin\\temp\\MAIN.BIN" - elseif detected_os == "MacOS" then - pack_prog = "src/bin/mhmt -hst -zxh Build/Bin/temp/MAIN.BIN Build/Bin/temp/MAIN.PAK" - elseif detected_os == "Linux" then - pack_prog = "src/bin/mhmt -hst -zxh Build/Bin/temp/MAIN.BIN Build/Bin/temp/MAIN.PAK" - end - - - -- компиляция для получения сжатого файла MAIN и холостой проход Set_Pictures.asm - if (os.execute("sjasmplus -DPREBUILD=1 -Wall --msg=war --nologo --syntax=w --fullpath --lst=Build/Prebuilds.LST SRC/BIOS/ROM/SETUP/MAIN.ASM")) then - print("--[ MAIN.ASM Prebuild DONE ]--") - if (os.execute(pack_prog)) then - print("--[ Hrusting MAIN.BIN DONE ]--") - print(" ") - else - print("--[ Hrusting MAIN.BIN ERROR!!! ]--") - os.exit(1) - end - else - print("--[ MAIN.ASM Prebuild ERROR!!! ]--") - os.exit(1) - end - ENDLUA -;---------------------------------------; - ENDIF - - IF PACKED_MAIN -;----------[MAIN's referenses]----------; Компиляция для получения адресов меток и процедур - MMU 2 e, 18 ; страница 18 в банку 2 и проверка на границы. - ORG COMPILE_ADDR.MAIN - INCLUDE 'src/bios/ROM/SETUP/MAIN.asm' -;--------------------------------------- - ENDIF - - ; Building page 8 of Sprinter ROM ;-----------------[EXP]----------------- MMU 0 e, 8 ; страница 8 в банку 0 и проверка на границы @@ -81,7 +37,7 @@ DEFINE+ IsInBIOS 1 OUTPUT 'Build/Bin/EXP.BIN' ShowInfo 'EXP block Start', 0 ; !!!!! test - INCLUDE 'src/bios/EXP/EXP.asm' + INCLUDE 'crazy bios/EXP/EXP.asm' ShowInfo 'EXP block End', 0 ; !!!!! test OUTEND ;--------------------------------------- @@ -95,7 +51,7 @@ DEFINE+ IsInBIOS 0 OUTPUT 'Build/Bin/ROM.BIN' ShowInfo 'ROM block Start', 0 ; !!!!! test - INCLUDE 'src/bios/ROM/ROM.asm' + INCLUDE 'crazy bios/ROM/ROM.asm' ShowInfo 'ROM block End', 0 ; !!!!! test OUTEND UNDEFINE IsInBIOS @@ -106,25 +62,25 @@ ; Building page 12 of Sprinter ROM ;------[Loader with bitstream K30]------ - MMU 0 3, 12 ; страницы 12-15 в банки 0-3. - ORG ROM_MAP.LOADER - OUTPUT 'Build/Bin/LOADER_K30.BIN' - Conf_loader K30 - BLOCK #10000-$,#FF - OUTEND + ; MMU 0 3, 12 ; страницы 12-15 в банки 0-3. + ; ORG ROM_MAP.LOADER + ; OUTPUT 'Build/Bin/LOADER_K30.BIN' + ; Conf_loader K30 + ; BLOCK #10000-$,#FF + ; OUTEND ;--------------------------------------- ; Building page 22 of Sprinter ROM ;------[Loader with bitstream K50]------ - MMU 0 3, 22 ; страницы 22-25 в банки 0-3. - ORG ROM_MAP.LOADER - OUTPUT 'Build/Bin/LOADER_K50.BIN' -;!TODO сделать упаковщик битстрима тут на LUA - Conf_loader K50 - BLOCK #10000-$,#FF - OUTEND +; MMU 0 3, 22 ; страницы 22-25 в банки 0-3. +; ORG ROM_MAP.LOADER +; OUTPUT 'Build/Bin/LOADER_K50.BIN' +; ;!TODO сделать упаковщик битстрима тут на LUA +; Conf_loader K50 +; BLOCK #10000-$,#FF +; OUTEND ;--------------------------------------- ; @@ -133,7 +89,7 @@ MMU 1 e, 1 ; страница 1 в банку 1 и проверка на границы. ORG ROM_MAP.LOGO OUTPUT 'Build/Bin/LOGO.BIN' - INCLUDE 'src/bios/logo/Set_Pictures.asm' + INCLUDE 'crazy bios/logo/Set_Pictures.asm' OUTEND ;--------------------------------------- ; @@ -142,7 +98,7 @@ EXPORT BOARD_INFO.type EXPORT BoardID.start EXPORT BoardID.end - EXPORT FN_CRIPT.cnf + ;EXPORT FN_CRIPT.cnf EXPORT ID_SPRINTER.bitstream_ver EXPORT bitstream_ver_hex ;EXPORT ID_Version diff --git a/Crazy BIOS/BUILD.a80 b/Crazy BIOS/BUILD.a80 index 8b12e51..0917a1d 100644 --- a/Crazy BIOS/BUILD.a80 +++ b/Crazy BIOS/BUILD.a80 @@ -1,28 +1,6 @@ -/* -;------------[LUA functions]------------; - includelua 'Shared_Includes/LUA/Functions.lua' -;---------------------------------------; - DEFINE PICTURE_FILE './src/bios/logo/psfathers.bmp' - - - LUA PASS1 - -- Проверяем BMP, достаём из него параметры, режем на куски - bmp_width, bmp_height, bmp_image_size, bmp_image_offset, bmp_colors = Get_bmp8bit_values (sj.get_define("PICTURE_FILE")) - - if bmp_width ~= 128 then sj.error("Invalid BMP width", bmp_width) end - if bmp_height ~= 72 then sj.error("Invalid BMP height", bmp_height) end - if bmp_colors ~= 256 then sj.error("Invalid BMP number of colors", bmp_colors) end - - if not File_save(sj.get_define("PICTURE_FILE"), "./Build/Bin/LOGO_PAL.BIN", bmp_image_offset-1024, 1024) then sj.error("Palete save error!") end - if not File_save(sj.get_define("PICTURE_FILE"), "./Build/Bin/LOGO_DAT.BIN", bmp_image_offset, bmp_image_size) then sj.error("Image data save error!") end - - ENDLUA -*/ - INCLUDE 'shared/defines.inc' - - DEFINE IMG_RECOVERY 'src/bios/shared/recovery.img' - ;DEFINE IMG_RECOVERY 'src/bios/shared/recovery_tst.img' + INCLUDE 'shared/defines.inc' + DEFINE IMG_RECOVERY 'crazy bios/shared/cb_sys.img' ; ;[--------------------------------------------------------------------------] MACRO Set_Block text, blk_addr @@ -31,81 +9,29 @@ DISPLAY text, /H, $-.tmp ENDM ;[--------------------------------------------------------------------------] - - DEFINE SP_128_BIN INCBIN 'src/ZX_ROMS/NEW/SP_128.BIN' - DEFINE SP__48_BIN INCBIN 'src/ZX_ROMS/NEW/SP__48.BIN' - DEFINE SP_TRDOS_BIN INCBIN 'src/ZX_ROMS/NEW/SP_TRDOS.BIN' + ORG 0 + DISPLAY '[ Building CB_IMG file ]' + OUTPUT 'Build/CB_BIOS.RAW' ;[--------------------------------------------------------------------------] - MACRO ROM_BUILD bitstream - -;PAGE 0 - INCBIN 'Build/Bin/ROM.BIN' - Set_Block 'ROM free space: ', #4000 -; -;PAGE 1 -; INCBIN 'Build/Bin/LOGO_PAL.BIN' -; INCBIN 'Build/Bin/LOGO_DAT.BIN' - INCBIN 'Build/Bin/LOGO.BIN' - Set_Block 'LOGO free space: ', #8000 ; +;PAGE #46 BIOS + INCBIN 'Build/Bin/EXP.BIN' + Set_Block 'EXP free space: ', #4000 -; -;PAGE 2 ZX Page - #42 - SP_128_BIN - Set_Block 'SP_128 free space: ', #C000 -; -;PAGE 3 ZX Page - #43 - SP__48_BIN - Set_Block 'SP_48 free space: ', #10000 -; -;PAGE 4 ZX Page - #44 - SP_TRDOS_BIN - Set_Block 'SP_TRD free space: ', #14000 -; -;PAGE 5 Recovery image part 1 - INCBIN IMG_RECOVERY,0,#C000 - DISPLAY "ROM Disk recovery part1, pages 5..7: 1x4000..2x0000" -; +;PAGE #47 EXTENSION + INCBIN 'Build/Bin/ROM.BIN' + Set_Block 'ROM free space: ', #8000 +;PAGE #48..#49 Recovery image + INCBIN IMG_RECOVERY,0,#8000 -; -;PAGE 8 - INCBIN 'Build/Bin/EXP.BIN' - ;INCBIN 'Build/CrazyBlaster.raw' - Set_Block 'EXP free space: ', #24000 -; -;PAGE 9-11 (#09, #0A, #0B) Recovery image part 2 - INCBIN IMG_RECOVERY,#C000,#C000 - DISPLAY "ROM Disk recovery part2, pages 9..11: 2x4000..3x0000" + DISPLAY "vROM Disk with Crazy Blaster DSS: 1x4000..2x0000" + Set_Block 'Empty space: ', #10000 - Set_Block 'Empty space: ', #30000 -; -;PAGE 12-15 (#0C, #0D, #0E, #0F) - INCBIN bitstream - Set_Block 'Loader & Bitstream free space: ', #40000 -; - ENDM +;PAGE #4B LOGO + INCBIN 'Build/Bin/LOGO.BIN' + Set_Block 'LOGO free space: ', #14000 ;[--------------------------------------------------------------------------] - - - - -;[--------------------------------------------------------------------------] - ORG 0 - DISPLAY '[ Building ROM for 1K30 ]' - OUTPUT 'Build/_SPRIN.BIN' - ROM_BUILD 'Build/Bin/LOADER_K30.BIN' - OUTEND - DISPLAY '[ Building ROM for 1K30 done ]' - DISPLAY ' ' - - - DISP 0 - DISPLAY '[ Building ROM for 1K50 ]' - OUTPUT 'Build/_SPRIN50.BIN' - ROM_BUILD 'Build/Bin/LOADER_K50.BIN' - OUTEND - DISPLAY '[ Building ROM for 1K50 done ]' - ENT -;[--------------------------------------------------------------------------] -; \ No newline at end of file + OUTEND + DISPLAY '[_____________Building CB_IMG file done!_____________]' +;[--------------------------------------------------------------------------] \ No newline at end of file diff --git a/Crazy BIOS/Info.txt b/Crazy BIOS/Info.txt index 6210e73..ec0a4a5 100644 --- a/Crazy BIOS/Info.txt +++ b/Crazy BIOS/Info.txt @@ -1,10 +1,14 @@ ; замаплен через карту портов на #7C/#3C и #74/#24 CNF_PORT: -.ON EQU #74 +.ON EQU #74 .OFF EQU #24 -; Data: -.TURBO.ON EQU 3 ; данные для включения TURBO +.vBIOS EQU .ON +.vZX_ROM EQU .OFF +; Data: +.BIOS EQU 0 +.EXTENSION EQU 1 .TURBO.OFF EQU 2 ; данные для выключения TURBO +.TURBO.ON EQU 3 ; данные для включения TURBO .CNF_0 EQU #04 ; карта портов 0 .CNF_1 EQU #0C ; карта портов 1 (для режима почти чистого zx spectrum) .CNF_2 EQU #14 ; карта портов 2 @@ -34,7 +38,7 @@ SYS_PORT: .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 @@ -65,23 +69,23 @@ ____________________________________________________ |_____________|____________|_________|______|______| |E0 | 00 | | 1 | ... | |E1 (+dos_on) | 00 | | 0 | ... | -|E2 | 00 | | 0 | 0 | +|E2 | 00 | | 0 | 0 | |E3 | 00 | | 0 | 1 | -|E4 | 01 | | 1 | ... | +|E4 | 01 | | 1 | ... | LOGO #4B |E5 (+dos_on) | 01 | | 0 | ... | -|E6 | 01 | | 0 | 0 | -|E7 | 01 | | 0 | 1 | -|EB | | 00 | ... | ... | BIOS -|EF | | 01 | ... | ... | EXTENSION +|E6 | 01 | | 0 | 0 | Recovery_1 #48 +|E7 | 01 | | 0 | 1 | Recovery_2 #49 +|EB | | 00 | ... | ... | BIOS #46 +|EF | | 01 | ... | ... | EXTENSION #47 |_____________|____________|_________|______|______| ... - значение роли не играет Стандартные страницы ОЗУ для образов ПЗУ спектрума: 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 + #42 BASIC 128 #E2 | #48 ??? ??? ??? #E6 + #43 BASIC 48 #E3 | #49 ??? ??? ??? #E7 + #44 TR-DOS #E1 | #4A ??? ??? ??? #E5 + #45 BIOS (ZX_EXP) #E0 | #4B ??? ??? ??? #E4 #46 BIOS (ZX_EXP) #EB #47 BIOS (ZX_EXP2) #EF @@ -111,5 +115,5 @@ bit7..bit3 Так же этот порт даёт прямую нумерацию страниц при установленном bit4. ---------------------------------------------------- - -ROM.SLOT0 \ No newline at end of file +;!TODO +апдейтер должен сам вставлять номер платы и тип битстрима \ No newline at end of file diff --git a/Crazy BIOS/exp/DCP.ASM b/Crazy BIOS/exp/DCP.ASM index ae1c7cd..84675cb 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 (CNF_PORT.ROM),A + OUT (CNF_PORT.vBIOS),A ; CALL DOS_OFF ; @@ -648,7 +648,7 @@ SET_PORTS: CALL DOS_ON ; LD A,CNF_PORT.CNF_0 + ROM.BIOS - OUT (CNF_PORT.ROM),A + OUT (CNF_PORT.vBIOS),A ; LD C,SLOT2 ; получить страницу IN D,(C) diff --git a/Crazy BIOS/exp/EXP.asm b/Crazy BIOS/exp/EXP.asm index 050ad99..ee840cd 100644 --- a/Crazy BIOS/exp/EXP.asm +++ b/Crazy BIOS/exp/EXP.asm @@ -34,8 +34,8 @@ BOARD_INFO: ;программа для вызова BIOS через RST8 из RAM0 EXP_FNS_2_RET: PUSH AF - LD A,ROM.BIOS - OUT (CNF_PORT.ON),A + LD A,vROM.BIOS + OUT (CNF_PORT.vBIOS),A POP AF JR RST_18_1 ;======================================= @@ -74,44 +74,9 @@ RST_30: ;======================================= BLOCK #38-$,0 ; INTERUPT Point -RST38: IF TEST_INT - ;INT: - PUSH BC - PUSH AF +RST38: EI + RETI - LD C,SLOT3 - IN B,(C) - LD A,SYS_PAGE - OUT (C),A - - LD A,(SYS_PAGE.INT_ID) - CP #AA - JR Z,YESINT - OUT (C),B - JP NOINT -YESINT: PUSH HL - LD HL,(SYS_PAGE.INT_ADRESS) - LD A,H - OR L - LD A,(SYS_PAGE.INT_PAGE) - OUT (C),B - PUSH DE - CALL NZ,EXTINT - POP DE - POP HL -NOINT: POP AF - POP BC - EI - RETI - ELSE - -; PUSH AF -; 1: DEC A -; JR NZ,1B -; POP AF - EI - RETI - ENDIF ;RST10: ; CALL_48 10h ; RET @@ -119,7 +84,6 @@ NOINT: POP AF ;======================================= - IFN TEST_INT _mInfoALIGN #10,0 ; any adress < #C0 with mask %xxxx0000 ; таблица для Sprinter POST-Tester-a @@ -140,13 +104,11 @@ TABLE_X: .vD: DB 10110000b ; "D" .vE: DB 01100010b ; "E" .vF: DB 01100011b ; "F" - ENDIF ;======================================= ; ; ;======================================= - IFN TEST_INT RESTARTS EQU #FFE0 GLOBAL_RESET: DI @@ -162,7 +124,6 @@ GLOBAL_RESET: INC DE DJNZ .compare JP RESTARTS - ENDIF ;======================================= _mInfoBLOCK #66-$,0 NMI_Point: @@ -244,59 +205,7 @@ BoardID: .start: WORD BoardID_start ; BoardID_start .end: WORD BoardID_end ; BoardID_end -; ;======================================= -; BLOCK #100-$,0 - - ;======================================= - IF TEST_INT - _mInfoALIGN #10,0 -; any adress < #C0 with mask %xxxx0000 -; таблица для Sprinter POST-Tester-a -TABLE_X: ; таблица для Sprinter POST-Tester-a -.v0: DB %00101000 ; "0" a -.v1: DB %10111101 ; "1" ___ -.v2: DB %00110010 ; "2" f | g | b -.v3: DB %00110100 ; "3" |___| -.v4: DB %10100101 ; "4" e | | c -.v5: DB %01100100 ; "5" |___| -.v6: DB %01100000 ; "6" d -.v7: DB %00111101 ; "7" -.v8: DB %00100000 ; "8" a - 7 -.v9: DB %00100100 ; "9" b - 6 -.vA: DB %00100001 ; "A" f - 4 -.vB: DB %11100000 ; "B" g - 3 -.vC: DB %01101010 ; "C" e - 2 -.vD: DB %10110000 ; "D" c - 1 -.vE: DB %01100010 ; "E" d - 0 -.vF: DB %01100011 ; "F" - ENDIF -;======================================= -; - -; -;======================================= - IF TEST_INT -RESTARTS EQU #FFE0 -; полный перехват ресета сразу после проливки конфы и CAD. -; закидывается в карту портов, поэтому использовать надо хитро. -GLOBAL_RESET: - DI - IM 1 - LD HL,RESTARTS - LD DE,RESTARTS_PROG - LD B,RESTARTS_PROG.Size -.compare: - LD A,(DE) - CP (HL) - JR NZ,NO_RESTART - INC HL - INC DE - DJNZ .compare - JP RESTARTS - ENDIF -;======================================= -; ; ;-----[перехват RESET не состоялся]----- @@ -331,81 +240,6 @@ NO_RESTART: OUT (C),A ; Z84.SYS.Data JP POST_TEST.START ;--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--== - IF TEST_INT -;----------------[int]------------------ -EXTINT: OR A - RET Z - - BIT 7,H - JR Z,.L2 - LD C,SLOT2 - BIT 6,H - JR Z,.L1 - LD C,SLOT3 - -.L1: IN B,(C) - PUSH BC - OUT (C),A - CALL .JPHL - POP BC - OUT (C),B - RET - ; проверка на нулевой слот -.L2: BIT 6,H - LD C,SLOT1 - JR NZ,.L1 ; продолжаем если ненулевой слот - - PUSH HL - - LD HL,-.stackDepth - .switchProcedure.size + .patch-2 - ADD HL,SP - PUSH HL - - LD HL,-.stackDepth - .switchProcedure.size ; memory stack use! - ADD HL,SP ; stack - PUSH HL ; адрес программы .readProcedure - - LD DE,.switchProcedure ; перенести программу на стек - EX DE,HL - LD BC,.switchProcedure.size - LDIR - RET - -; процедура, переносимая на стек для вызова прерывания пользователя из SLOT0 -; осторожнее с PUSH, если надо много, то увеличивай .stackDepth -.switchProcedure: - DEC DE - POP HL - LD (HL),E - INC HL - LD (HL),D - - LD C,SLOT0 - IN B,(C) - POP HL - PUSH BC - OUT (C),A - - XOR A - OUT (SYS_PORT.RAM),A - -.patch EQU $+1-.switchProcedure - CALL .JPHL - - DI - - XOR A - OUT (SYS_PORT.ROM),A - - POP BC - OUT (C),B - - RET -.JPHL: JP (HL) -.stackDepth EQU 64 ; расстояние от конца процедуры до вершины стека. -.switchProcedure.size EQU $-.switchProcedure - ENDIF -;--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--== ; ==== POST PROCs ================= @@ -784,143 +618,8 @@ set_config: OUT (BorderColor),A CALL EMM.CheckColdInit ; инициализация памяти POP HL ; конфигурация - JR Reset_Handler.start -; ************************************* -; Считаем, что вход в SETUP всегда !!! -; ************************************* - -; LD A,H -; CP #FF -; JR NZ,NO_SETUP_1 -; LD A,L - - -; JR NZ,NO_SETUP_2 - + ;JR Reset_Handler.start ;[---------------------------------------------------------------------] - - MODULE Reset_Handler -start: DI - IN A,(SLOT3) - PUSH AF -;----[перехват soft reset #EE port]----- -Check_EE_Port: LD A,ACEX.RET_PORT - LD B,0 - ;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23 - ;LD C,BIOS.SET_PORTS - ;CALL @ToBIOS_3D13 ; переустановить внутр. порт #EE - CALL SET_PORTS - ; - LD A,B - AND A - JR Z,Check_Spec_Page - ; - OUT (SLOT3),A ; Set restart page -.After_Hard_Rst: - LD HL,(Spec_Page.RET_addr) ; prog address - LD A,(Spec_Page.page_0) ; PAGE0 - OUT (SLOT0),A - LD A,(Spec_Page.page_1) ; PAGE1 - OUT (SLOT1),A - LD A,(Spec_Page.page_2) ; PAGE2 - OUT (SLOT2),A - LD A,(Spec_Page.Reload_Version) - CP #FF - JR Z,.JPHL ; olg logic - ; new logic -.ver_2: EXX - LD HL,(Spec_Page.Stack_Point) - LD SP,HL - EXX - AND A - LD A,#FF - LD (Spec_Page.Reload_Version),A - LD A,(Spec_Page.page_3) ; PAGE3 - OUT (SLOT3),A - JR Z,.JPHL - PUSH HL - JP EXP_FNS_2_RET -.JPHL: JP (HL) -; -;--[перехват soft/hard reset #41 page]-- -Check_Spec_Page: - LD A,Spec_Page - OUT (SLOT3),A - ; Check for hardreset flag - LD A,(Spec_Page.flag_R) - CP 'R' - JR NZ,No_Reset_handlers - LD A,(Spec_Page.flag_S) - CP 'S' - JR NZ,No_Reset_handlers - LD A,(Spec_Page.flag_T) - CP 'T' - JR NZ,No_Reset_handlers - ; - XOR A - LD (Spec_Page.flag_R),A - JR Check_EE_Port.After_Hard_Rst - ; -;--------------------------------------- -No_Reset_handlers:/* - ; Check ZX ROMS Loaded - LD A,(Spec_Page.flag_Z) - CP 'Z' - JR NZ,.Load_ZXROMS - LD A,(Spec_Page.flag_X) - CP 'X' - JR NZ,.Load_ZXROMS - ; [x] 31/12/23 подстраховка от недоутечки памяти - LD A,R - AND #80 - JR Z,No_Need_To_Load_ZXROMS -.Load_ZXROMS: XOR A - LD R,A - ; - ; Load ZX ROM's -init_rom_address EQU #8200 ;!HARDCODE - ; - LD HL,init_zx_roms - LD DE,init_rom_address - LD BC,init_zx_roms.length - LDIR - ; - CALL init_rom_address - ; - LD HL,#C000 - LD DE,#C001 - LD BC,#3FFF - LD (HL),C - LDIR ; забить FF-ами - ; ставим метку если прогрузили ПЗУ спектрума - DEC DE ; Spec_Page.flag_X - LD A,'X' - LD (DE),A - DEC DE ; Spec_Page.flag_Z - LD A,'Z' - LD (DE),A - ; Заглушка для страницы #41 на всякий пожарный - LD HL,PROG_NO_ROM - LD DE,#C000+Spec_Page.no_zx_rom - LD BC,PROG_NO_ROM.size - LDIR - ; - LD HL,RAM_BIOS_PROG - LD DE,#C000+Spec_Page.to_bios - LD BC,RAM_BIOS_PROG.Length - LDIR - */ -;No_Need_To_Load_ZXROMS: - POP AF - OUT (SLOT3),A -;-------------------------------------------------------------------------------------------------------------------; -;!TODO сделать выбор в Setup, что грузить в vПЗУ при старте. Варианты: -;[ ] 0 - Не грузить ПЗУ спектрума, инитить страницу #41 как в 3.04 -;[ ] 1 - Грузит ПЗУ спектрума из ROM при старте если нет флага ZX -;[ ] 2 - Грузит ПЗУ спектрума из ROM при каждом перезапуске (может быть опасно) -;[ ] 3 - Не грузить ПЗУ спектрума, инитить страницу #41 так, чтоб код в ней подгружал ПЗУ спектрума при обращении -;-------------------------------------------------------------------------------------------------------------------; - ENDMODULE ; ;************************************** ; @@ -979,7 +678,7 @@ PrepareToZX: ; Setup HDD drives for ZX Spectrum mode PORTS_INIT: ; включить TURBO LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON - OUT (CNF_PORT.ON),A + OUT (CNF_PORT.vBIOS),A ; ; RESET to ISA ; LD BC,PORT_ISA ; LD A,#FF @@ -1068,9 +767,10 @@ PORTS_INIT: LD A,#FF OUT (C),A ; глушим ковокс - XOR A - OUT (CBL.SYS_PORT),A - LD BC,CBL.OUT + ;XOR A + ;OUT (CBL.SYS_PORT),A + ;LD BC,CBL.OUT + LD BC,0 LD A,#80 .CBL_MUTE: OUT (C),A DJNZ .CBL_MUTE @@ -1081,7 +781,7 @@ PORTS_INIT: ; Сброс контроллера дисковода ; Включить доступ к контроллеру диска (третья конфа) LD A,CNF_PORT.CNF_3 + ROM.BIOS - OUT (CNF_PORT.ON),A + OUT (CNF_PORT.vBIOS),A OUT (FDC_93.DrvCTRL),A push hl pop hl @@ -1092,16 +792,16 @@ PORTS_INIT: XOR A OUT (FDC_93.Command),A ; Выключить доступ к контроллеру диска - LD A,CNF_PORT.CNF_0 + ROM.BIOS - OUT (SYS_PORT.ROM),A + LD A,CNF_PORT.CNF_0 + vROM.BIOS + OUT (CNF_PORT.vBIOS),A ; set HDD1/not-HDD2 LD A,IDE.Chanel.Primary OUT (IDE.Chanel.Set),A LD BC,#7FFD - LD A,#10 + XOR A OUT (C),A ; BASIC_48 mode LD B,#1F - LD A,01 + LD A,2 OUT (C),A ; RAM-0 mode !!! ; очистка буферов клавиатуры и мыши в SIO CALL .clean_kbd_buf @@ -1132,7 +832,7 @@ PORTS_INIT: INCLUDE 'FUNC_SERVICE.asm' INCLUDE 'FLEX.asm' - ; INCLUDE 'EXP_SCR.ASZ' + ; INCLUDE 'EXP_SCR.ASZ' INCLUDE 'FUNC_PIC.ASM' INCLUDE 'FUNC_RAM_ROM_DRV.ASM' INCLUDE 'FUNC_SYS.ASM' @@ -1166,88 +866,6 @@ ZG_ADDRESS: INCLUDE 'FONT.ASM' ; ; _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ [___FOR ZX-MODE___] _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ ; - -/* -; -;------------------------[copy zx-roms to zx-pages]---------------------; -; SLOT0 - ROM 8, sys_port - on. -; RAM SLOT0 - page 0 -; для режима zx spectrum -; ВЫПОЛНЯЕТСЯ ИЗ ОЗУ -; !HARDCODE номера страниц для эмулятора ПЗУ -init_zx_roms: - DISP Reset_Handler.init_rom_address - - IN A,(SLOT3) - EX AF,AF' - - DI - LD A,SYS_PORT.EXTENSION - OUT (SYS_PORT.ROM),A - INC A ;!HARDCODE LD A,2 - LD B,3 ; zx-rom number of pages - ; -.loop: EXX - ; - out (ROM.SLOT0),a - or %0100'0000 ; !HARDCODE номера страниц для эмулятора ПЗУ - out (SLOT3),a - and %1011'1111 ; !HARDCODE номера страниц для эмулятора ПЗУ - - LD HL,0 - LD DE,#C000 - LD BC,#4000 - LDIR - - INC A - EXX - DJNZ .loop - - xor a - out (ROM.SLOT0),a - OUT (SYS_PORT.ROM),A - EX AF,AF' - out (SLOT3),a - -;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23 - LD A,ACEX.vROM.BASIC_128 ; ROM-ID - BASIC 128 - LD B,#42 ;!HARDCODE page - CALL SET_PORTS - ; - - LD A,ACEX.vROM.BASIC_48 ; ROM-ID - BASIC 48 - LD B,#43 ;!HARDCODE page - CALL SET_PORTS - ; - - LD A,ACEX.vROM.TR_DOS ; ROM-ID - TR-DOS - LD B,#44 ;!HARDCODE page - CALL SET_PORTS - ; - - ; эти страницы пока не используются - LD A,ACEX.vROM.BIOS ; ROM-ID - BIOS - ;LD B,#45 ;!HARDCODE page - LD B,#41 - CALL SET_PORTS - ; - LD A,ACEX.vROM.BIOS_3 ; ROM-ID - BIOS-1 - ;LD B,#46 ;!HARDCODE page - LD B,#41 - CALL SET_PORTS - ; - LD A,ACEX.vROM.BIOS_4 ; ROM-ID - BIOS-2 - ;LD B,#47 ;!HARDCODE page - LD B,#41 - JP SET_PORTS - ; можно задействовать ещё 4 страницы на порты #E4..#E7 - - ENT -.length EQU $-init_zx_roms -;-----------------------------------------------------------------------; -;*/ - -;-----------------------------------------------------------------------; ;!TODO задействовать GOTO_SPEC: IN A,(SLOT3) @@ -1322,8 +940,8 @@ BASIC_128: ;--------[ Программа, размещаемая с #5B00 для запуска Spectrum ]--------; RES128_PROG: DISP ZX_VARS.PRINTER_BUFFER ;#5B00 - LD A,ROM.BIOS - OUT (SYS_PORT.RAM),A ; Возврат в 128k ROM + LD A,vROM.BIOS + OUT (CNF_PORT.vZX_ROM),A ; Возврат в 128k ROM LD C,SLOT3 IN B,(C) LD A,SYS_PAGE @@ -1339,7 +957,7 @@ RES128_PROG: OUT (C),A ; 128 порт LD A,E ; установка конфигурации и режима TURBO - OUT (SYS_PORT.RAM),A ; CONFIG_SET + OUT (CNF_PORT.vZX_ROM),A ; CONFIG_SET INC D DEC D @@ -1402,46 +1020,31 @@ RESTARTS_PROG: ; !TODO LDConf ;----------------------------[Setup Starter]----------------------------; MODULE Setup_Starter -; программа, размещаемая по адресу 0C000h +; программа, размещаемая по адресу #C000 ; для запуска Setup Start: DISP COMPILE_ADDR.SETUP_STARTER Exec: - LD A,CNF_PORT.CNF_0 + ROM.EXTENSION - OUT (SYS_PORT.ROM),A + LD A,CNF_PORT.CNF_0 + vROM.EXTENSION + OUT (CNF_PORT.vBIOS),A LD HL,ROM_MAP.SETUP LD DE,MEM_MAP.SETUP LD BC,BLOCK_Setup.Length LDIR - LD A,CNF_PORT.CNF_0 + ROM.BIOS - OUT (SYS_PORT.ROM),A + LD A,CNF_PORT.CNF_0 + vROM.BIOS + OUT (CNF_PORT.vBIOS),A -;-----------[Check SPACE] - LD A,#FE ; !HARDCODE - LD BC,Port_All_Mode ; keyboard int & acc off - OUT (C),A - LD A,high ZXKeys.Line_7 - IN A,(ZXKeys) - CPL - AND 1 -; в регистре A передаётся нажата ли клавиша SPACE. -; потом проверяется в main.asm [space_check] -; и если нажата, то происходит игнор параметра -; "Быстрый старт ПЗУ" во время перезагрузки - EX AF,AF' LD A,#FF ; !HARDCODE + LD BC,Port_All_Mode OUT (C),A ; keyboard int & acc on, zx_screen & original waits off (for conf >= 3.05) - - EX AF,AF' ;----------------------[] DI POP HL ; адрес возврата в EXP из SETUP LD SP,#8000 ;!HARDCODE PUSH HL - PUSH AF JP SETUP_MAIN ENT Length EQU $-Setup_Starter.Start @@ -1453,8 +1056,8 @@ Length EQU $-Setup_Starter.Start RAM_BIOS_PROG: ; for CALL BIOS in #41 page DISP Spec_Page.to_bios PUSH AF - LD A,ROM.BIOS - OUT (SYS_PORT.ROM),A + LD A,vROM.BIOS + OUT (CNF_PORT.vBIOS),A POP AF RET ENT @@ -1565,8 +1168,8 @@ JP_HL_48: ;!FIXIT assert with ROM PUSH HL SW_ROM: ;!FIXIT assert with ROM PUSH AF - LD A,ROM.BIOS ;!FIXIT неправильное название константы - OUT (SYS_PORT.RAM),A + LD A,vROM.BIOS + OUT (CNF_PORT.vZX_ROM),A POP AF RET ;*************************************** @@ -1772,8 +1375,8 @@ ROM_DISK.Pages: ; ; Для вызова функций биоса из страницы 0 ПЗУ (Extension) RET_to_EXTENSION: PUSH AF - LD A,ROM.EXTENSION - OUT (SYS_PORT.ROM),A + LD A,vROM.EXTENSION + OUT (CNF_PORT.vBIOS),A POP AF RST ToBIOS_18 JP RET_to_EXTENSION @@ -1800,8 +1403,8 @@ RET_to_EXTENSION: _mInfoBLOCK #3FE8-$,#FF EXP_HDD: PUSH AF - LD A,ROM.EXTENSION - OUT (SYS_PORT.ROM),A + LD A,vROM.EXTENSION + OUT (CNF_PORT.vBIOS),A POP AF RET ;--------------------------------------- @@ -1822,8 +1425,8 @@ EXP_HDD: ; Точка входа/выхода для TR-DOS EXP_FNS_RET: PUSH AF - LD A,ROM.BIOS - OUT (SYS_PORT.RAM),A ; Точка входа/выхода из/в TR-DOS при вызове функций BIOS #80..#FF + LD A,vROM.BIOS + OUT (CNF_PORT.vZX_ROM),A ; Точка входа/выхода из/в TR-DOS при вызове функций BIOS #80..#FF JP EXP_FNS ;--------------------------------------- ; diff --git a/Crazy BIOS/exp/EXTENDED/FDD_DRIVER_2.asm b/Crazy BIOS/exp/EXTENDED/FDD_DRIVER_2.asm index 18d7f02..559ed97 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 (CNF_PORT.ROM),A ; - OPEN + OUT (CNF_PORT.vBIOS),A ; - OPEN EX AF,AF' RET ; Врубает нулевую карту портов SET_DOS_OFF: EX AF,AF' LD A,CNF_PORT.CNF_0 + ROM.BIOS - OUT (CNF_PORT.ROM),A ; - CLOSE + OUT (CNF_PORT.vBIOS),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 3a1c3c7..efc2f48 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 (CNF_PORT.ON),A + OUT (CNF_PORT.vBIOS),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 f2e108e..15fe3c2 100644 --- a/Crazy BIOS/exp/FUNC_SERVICE.asm +++ b/Crazy BIOS/exp/FUNC_SERVICE.asm @@ -78,7 +78,7 @@ RST_CONF: LD C,SLOT3 IN B,(C) OUT (C),A ; PAGE с прошивкой - LD DE,(#C090) ; PLD-ID + LD DE,(#C090) ; PLD-ID OUT (C),B ; RET page ;--[] ;JR INT_PLD .INT_PLD: ; only for old FLEX10K soft compatible @@ -95,7 +95,8 @@ RST_CONF: JR Z,.YES_CBL XOR A .YES_CBL: - LD BC,CBL.SYS_PORT + ;LD BC,CBL.SYS_PORT + LD BC,0 OUT (C),A LD A,E ; config-byte @@ -141,7 +142,7 @@ RST_CONF: DI ; устанавливаем нулевую карту портов LD A,CNF_PORT.CNF_0 - OUT (CNF_PORT.ON),A + OUT (CNF_PORT.vBIOS),A ; и так понятно что делает IN A,(SLOT3) ; сохраняем номер воткнутой страницы PUSH AF @@ -223,7 +224,7 @@ RST_CONF: DI ; устанавливаем нулевую карту портов LD A,CNF_PORT.CNF_0 - OUT (CNF_PORT.ON),A + OUT (CNF_PORT.vBIOS),A ; и так понятно что делает IN A,(SLOT3) ; сохраняем номер воткнутой страницы PUSH AF @@ -418,7 +419,7 @@ REINIT: DEC B LD A,RESET_PAGE OUT (SLOT3),A LD A,CNF_PORT.TURBO.OFF - OUT (SYS_PORT.ROM),A + OUT (CNF_PORT.vBIOS),A .loop2: LD (#C000),A ; Soft RESET !!! JR .loop2 ; diff --git a/Crazy BIOS/exp/FUNC_SYS.ASM b/Crazy BIOS/exp/FUNC_SYS.ASM index 0b27e9f..a733581 100644 --- a/Crazy BIOS/exp/FUNC_SYS.ASM +++ b/Crazy BIOS/exp/FUNC_SYS.ASM @@ -58,7 +58,7 @@ FN_VERSION: ;----------------------------------------------------------------------; ; [x] 28/01/24 добавлена подфункция выдачи инфы про Acex FN_CRIPT: - DJNZ .Acex_ver + DJNZ .error ; ; BoardID_start old address #312A ; BoardID_end old address #312D @@ -73,74 +73,6 @@ FN_CRIPT: .error: LD A,BIOS.Error.InvalidSubFunction SCF RET - ; -.Acex_ver: - DJNZ .error - PUSH HL - LD A,R - DI - PUSH AF - ; - LD HL,-.stackDepth - .readProcedure.size ; memory stack use! - ADD HL,SP - PUSH HL ; адрес программы .readProcedure - LD DE,.readProcedure ; перенести программу на стек - EX DE,HL - LD BC,.readProcedure.size - LDIR ; программа на стеке - LD A,+(12 xor %0000'1000) ; !HARDCODE bitstream page in rom - RET -.return:; - POP AF - JP PO,.no_EI - EI -.no_EI: CALL .choose_chip - POP DE - LD BC,.chip_ID_TXT.RecordSize - LDIR -.cnf+1: LD DE,bitstream_ver_hex - AND A - RET - ; -.choose_chip: - XOR A - LD HL, - ACEX.Chip_ID.K30 - ADC HL,DE - LD HL,.chip_ID_TXT.K30 - RET Z - OR A ; снять CF - INC A - LD HL, - ACEX.Chip_ID.K50 - ADC HL,DE - LD HL,.chip_ID_TXT.K50 - RET Z - POP HL ; баланс стека -.error_unknownChip: - SCF - POP HL - LD A,BIOS.Error.UnknownDevice - RET - ; -; процедура, переносимая на стек для чтения Acex ID -; осторожнее с PUSH, если надо много, то увеличивай .stackDepth -.readProcedure: - OUT (ROM.SLOT0),A ; ROM_PAGE - LD DE,(#100 + 3) ; !HARDCODE здесь читается Acex ID - XOR A - OUT (ROM.SLOT0),A - OUT (SYS_PORT.ROM),A - JP .return -.stackDepth EQU 2 ; расстояние от конца процедуры до вершины стека. -.readProcedure.size EQU $-.readProcedure - ; -.chip_ID_TXT: -.chip_ID_TXT.K30: DZ "K30" -.chip_ID_TXT.RecordSize EQU $-.chip_ID_TXT -.chip_ID_TXT.K50 DZ "K50" -;.chip_ID_TXT.K100 DZ "K100" -.chip_ID_TXT.Size EQU $-.chip_ID_TXT -;----------------------------------------------------------------------; - ;----------------------------------------------------------------------; ;EMM_FN7 EMM.CheckColdInit: @@ -349,7 +281,7 @@ FN_TURBO: LD (SYS_PAGE.CONFIG_DE),A AND 3 ; - OUT (CNF_PORT.ROM),A + OUT (CNF_PORT.vBIOS),A LD A,B OUT (SLOT3),A AND A diff --git a/Crazy BIOS/loader/bitstream_header.inc b/Crazy BIOS/loader/bitstream_header.inc deleted file mode 100644 index 6093006..0000000 --- a/Crazy BIOS/loader/bitstream_header.inc +++ /dev/null @@ -1,5 +0,0 @@ -; Header of bitstream which non packed - DB #FF,#FF,#62,#7B,#39,#00;,#FF,#FF ; 1k30 -; Packed: - ;DB #FF,#FF,#62,#7B,#3C,#00;,#01,#FF ; 1k50 -; \ No newline at end of file diff --git a/Crazy BIOS/loader/loader.asm b/Crazy BIOS/loader/loader.asm deleted file mode 100644 index 21158c3..0000000 --- a/Crazy BIOS/loader/loader.asm +++ /dev/null @@ -1,169 +0,0 @@ -; -;**********************************; -; ACEX Loading program ; -;**********************************; - MACRO Conf_loader altera_chip -.START: DI - LD BC,#FF*256 + Z84.SYS.Control - XOR A ; Z84.REG.WaitState_Ctrl - register - waits - OUT (C),A ; Z84.SYS.Control - INC C ; LD BC,#FFEF - LD A,4 ; Memory waits set to 1 - OUT (C),A ; Z84.SYS.Data - - DEC C ; Z84.SYS.Control - DEC A ; LD A,3 - 3-nd register - boundaries - OUT (C),A ; Z84.REG.Misc_Ctrl - INC C ; cs0 enable, cs1 enable, 32-Bit CRC disable, reset output enable, Clock Divide-by-two - OUT (C),A ; Z84.SYS.Data - - DEC C ; Z84.SYS.Control - DEC A ; LD A,2 - Z84.REG..CS_Boundary 2-nd register - boundaries - OUT (C),A ; Z84.SYS.Data - INC C - LD A,#FE ; boundaries FFFF..F000 - CS1 - OUT (C),A ; EFFF..0000 - CS0 - - JR .LOOP_S1 -;************************************** - BLOCK #38-$,#FF - JP 0 -;************************************** - -.LOOP_S1: - LD HL,#FEF0 ; !HARDCODE - LD DE,.STRING -.LOOP_S: - LD A,(DE) - CP (HL) - JR NZ,.NO_CNF_RAM - INC E - INC L - JR NZ,.LOOP_S ; !!!!! привязка к адресу в HL - -; !TODO убрать вейты для кэша? - LD BC,#FF*256 + Z84.SYS.Control - LD A,Z84.REG.CS_Boundary - OUT (C),A ; 0 register - waits - INC C - LD A,#F0 - OUT (C),A ; boundaries FFFF..1000 - CS1 -; ; 0FFF..0000 - CS0 - LD HL,#1000 ; !!!!! Load bitstream from Fast-RAM - - JR .NEW_SHM - -;************************************** - BLOCK #66-$,#FF - JP 0 -;************************************** - -.NO_CNF_RAM: - LD HL,#0100 ; !!!!! Load bitstream from ROM -.NEW_SHM: -;--------------[conf check]------------- - LD A,H ; сохраняем старший адрес начала конфы, -; начало конфы должно быть с младшим адресом = 0 - EXX - LD L,0 - LD H,A - EX AF,AF' - - ; в HL адрес первого байта конфы - LD DE,.Conf_header - LD B,.Conf_header.length -.conf_header_loop: - LD A,(DE) - CP (HL) - JR NZ,.Conf_Packed - INC DE - INC L - DJNZ .conf_header_loop - - ;XOR A - JR .exit_conf_check -.Conf_Packed: - SCF -.exit_conf_check: - EX AF,AF' - EXX -;--------------------------------------- - - LD DE,#FE00 ;!HARDCODE ; !!!!! Check flag "don't erase fast-ram bitstream" - "IM" - LD A,(#FEE0) - CP "I" - JR NZ,.ONES_CONFIG - LD A,(#FEE1) - CP "M" - JR NZ,.ONES_CONFIG - - DEC D ; multiple config! - -.ONES_CONFIG: - LD IY,SP2000_Loader_Flag - ;LD IX,#FFFD - LD IX,ACEX.Config_ID.Sp2000 - -.LOOP1: - LD A,(HL) - - ex af,AF' - ld b,1 - jr nc,.no_packed_loop - ex af,AF' - - LD B,A ; save byte to B to check later if we worked with zero - OR A - JR NZ,.LOOP1A - INC HL - LD C,(HL) ; set counter - jr .LOOP1A -.no_packed_loop: - ex af,AF' -.LOOP1A: -;---[Sending bits to Altera]---[v] - DUP 7 - LD (DE),A - RRCA - EDUP - LD (DE),A -;------------------------------[^] - INC E - - LD A,B ; was it zero? - OR A - JR NZ,.LOOP1E -; it was zero so we need to decrement counter - DEC C - JR NZ,.LOOP1A -; end of the counter reached -.LOOP1E: - INC HL - JR .LOOP1 - -.STRING: DB ACEX.RELOAD_STRING - -.Conf_header: include 'src/bios/Loader/bitstream_header.inc' -.Conf_header.length EQU $-.Conf_header - -;----------------------; - BLOCK #FE-$,#FF -; Это, скорее всего, рудимент, тот самый байт описателя конфы, -; который ищет загрузчик для Sp97 по старому адресу #C090. -; Воткнул его в конце загрузчика, может потом пригодится. -.DEF_SYM: DW ACEX.Config_ID.Sp2000 -;------------------------------[Loader end] - - DEFINE Altera_Chip altera_chip - LUA - local file_path = 'Build/ACEX/' - local file_ext = '.BIN' - local altera_ver = sj.get_define("Altera_Chip") - sj.insert_define("Altera_File", '"' .. file_path .. altera_ver .. file_ext .. '"') - ENDLUA - UNDEFINE Altera_Chip - - INCBIN Altera_File - UNDEFINE Altera_File - ENDM -; diff --git a/Crazy BIOS/logo/Projects/MAIN.xcf b/Crazy BIOS/logo/Projects/MAIN.xcf deleted file mode 100644 index 853b628..0000000 Binary files a/Crazy BIOS/logo/Projects/MAIN.xcf and /dev/null differ diff --git a/Crazy BIOS/logo/Projects/NY_Kokoshnik.PAK b/Crazy BIOS/logo/Projects/NY_Kokoshnik.PAK deleted file mode 100644 index 589defc..0000000 Binary files a/Crazy BIOS/logo/Projects/NY_Kokoshnik.PAK and /dev/null differ diff --git a/Crazy BIOS/logo/Projects/NY_Kokoshnik.bmp b/Crazy BIOS/logo/Projects/NY_Kokoshnik.bmp deleted file mode 100644 index 0c5589e..0000000 Binary files a/Crazy BIOS/logo/Projects/NY_Kokoshnik.bmp and /dev/null differ diff --git a/Crazy BIOS/logo/Projects/NY_mustache.PAK b/Crazy BIOS/logo/Projects/NY_mustache.PAK deleted file mode 100644 index a0fee19..0000000 Binary files a/Crazy BIOS/logo/Projects/NY_mustache.PAK and /dev/null differ diff --git a/Crazy BIOS/logo/Projects/NY_mustache.bmp b/Crazy BIOS/logo/Projects/NY_mustache.bmp deleted file mode 100644 index e423e27..0000000 Binary files a/Crazy BIOS/logo/Projects/NY_mustache.bmp and /dev/null differ diff --git a/Crazy BIOS/logo/Projects/test.png b/Crazy BIOS/logo/Projects/test.png deleted file mode 100644 index d8ae63e..0000000 Binary files a/Crazy BIOS/logo/Projects/test.png and /dev/null differ diff --git a/Crazy BIOS/logo/Set_Pictures.asm b/Crazy BIOS/logo/Set_Pictures.asm index da95671..7407f73 100644 --- a/Crazy BIOS/logo/Set_Pictures.asm +++ b/Crazy BIOS/logo/Set_Pictures.asm @@ -51,149 +51,4 @@ Pallete: Raster: INCBIN 'Build/Bin/LOGO_DAT.BIN' .length EQU $-Raster - - IF Pashalki -; !TODO сделать тут табличку-ссылки на нужную таблицу спрайтов и завязать это на даты - - - MACRO _PASHALKI_CODE - IN A,(SLOT3) - EX AF,AF' - LD A,SYS_PAGE - OUT (SLOT3),A - - ld e,(RebootDate.month) - SLA e - xor a - ld - - EX AF,AF' - OUT (SLOT3),A - - - ENDM - -months_table: - WORD days_table.January - WORD days_table.February - WORD days_table.March - WORD days_table.April - WORD days_table.May - WORD days_table.June - WORD days_table.July - WORD days_table.August - WORD days_table.September - WORD days_table.October - WORD days_table.November - WORD days_table.December - -days_table: -.January: DZ 1,2,3,4,5,6,7 -.February EQU 0 -.March EQU 0 -.April EQU 0 -.May EQU 0 -.June EQU 0 -.July EQU 0 -.August EQU 0 -.September EQU 0 -.October EQU 0 -.November EQU 0 -.December: DZ 31 - -NewYear: INCLUDE './src/bios/logo/use/New_Year.inc' -;.March8: INCLUDE './src/bios/logo/use/March_8.inc' - - ENDIF - -/* - - and a - ld b,0 - ld hl,months_table - ld de,months_table+1 - ld a,month - call FIND_NEXT - - ld hl,days_table - adc hl,de - ld ix,hl - ld e,(hl) - inc hl - ld d,(hl) - ex de,hl - ld de,days_table+1 - ld a,day - call FIND_NEXT - - ld hl,sprites_table - adc hl,de - - call Sprites ; в hl адрес в таблице адресов таблиц спрайтов (SP_Table) - - -FIND_NEXT: - ld c,(hl) ; берём длину таблицы BYTE - inc hl - CPIR - jr nz,.nothing - sbc hl,de - sla l - ex de,hl - ret - -days_table: - WORD december_days_table - WORD january_days_table - WORD march_days_table - WORD december_days_table -;----------------[Months table]----------------[v] -months_table: - BYTE months_table.length-1 -.months: - BYTE 01 ; Январь - BYTE 03 ; Март - BYTE 12 ; Декабрь -.length equ $-months_table - - ASSERT months_table.length < 14, ERROR!!! "months_table" should be less than 14 bytes! -;----------------------------------------------[^] - -;-------------[December days table]------------[v] -december_days_table: - BYTE december_days_table.length-1 -.months: - BYTE 31 ; Новый год -.length equ $-december_days_table - - ASSERT december_days_table.length < 33, ERROR!!! "december_days_table" should be less than 33 bytes! -;----------------------------------------------[^] - -;-------------[January days table]-------------[v] -january_days_table: - BYTE january_days_table.length-1 -.months: - BYTE 01 ; Новый год - BYTE 02 ; Новый год - BYTE 03 ; Новый год - BYTE 04 ; Новый год - BYTE 05 ; Новый год - BYTE 06 ; Новый год - BYTE 07 ; Рождество -.length equ $-january_days_table - - ASSERT january_days_table.length < 33, ERROR!!! "january_days_table" should be less than 33 bytes! -;----------------------------------------------[^] - -;-------------[March days table]------------[v] -march_days_table: - BYTE december_days_table.length-1 -.months: - BYTE 08 ; Клара Цеткин и Роза Люксембург -.length equ $-december_days_table - - ASSERT december_days_table.length < 33, ERROR!!! "december_days_table" should be less than 33 bytes! -;----------------------------------------------[^] -*/ - ENDMODULE diff --git a/Crazy BIOS/logo/psfathers.bmp b/Crazy BIOS/logo/psfathers.bmp deleted file mode 100644 index 3ceffb5..0000000 Binary files a/Crazy BIOS/logo/psfathers.bmp and /dev/null differ diff --git a/Crazy BIOS/logo/use/NY_Kokoshnik.bmp b/Crazy BIOS/logo/use/NY_Kokoshnik.bmp deleted file mode 100644 index 0c5589e..0000000 Binary files a/Crazy BIOS/logo/use/NY_Kokoshnik.bmp and /dev/null differ diff --git a/Crazy BIOS/logo/use/NY_Kokoshnik_DAT.BIN b/Crazy BIOS/logo/use/NY_Kokoshnik_DAT.BIN deleted file mode 100644 index 061d443..0000000 --- a/Crazy BIOS/logo/use/NY_Kokoshnik_DAT.BIN +++ /dev/null @@ -1 +0,0 @@ -        Ё                              Ё                ё ЁЁ                        ЁЁ Ё                ф                              ф                   ф                        ф                   ф                           ё  ф                   ф                        ф                   ф  ё                        ё  ф                ю  ф                        ф  ю                х фю                        юф х               ┴вв╬ф                        ф╬би┴             и└и╬nф                        х\╬и╬и          ╬Ы╬Ыsи╡ф                        фз╡sЩ╠в╬       ┴┴║ns3бф└                        ╞фи3sd║┴╬     ╬╡║3~\T╠┌и                        и┌╠Ti~3╡╗╬    Ыо▒y▒▒╬╫з                        ╡╫╬б╚yбТбв   ╡╞KiбndИ║╫в                        в╫иЩddТЖ@└╗ ┴иСK╨└Щ~n╬╠в╗                      ╬в╠┴~С└╫Ty╗┴и╬@┌yб╨sви╞вв                      ║Щ╞ви~╠бn┌K╬╡Ы╬7╫y╒Ж~\└╣з╬                     ЫС╞╗q~yх~╫7╬Ы╡┴С└└~Щ\\╬║~в                    ЩЩ~║┴nTИИ┴╠И┴│ ╬T╠ЙsK3╬║\ЩЫЫ                  вЫИn╣╬3Ks╫K╠И   и╬Ии╠ЩnС╔╡sЩyС                ЫiС~о┴ТnЩ└║╬и    ╬Що@┌ю╬~╫└y~nЩ\и            ╡dЙС~y║╫~└ю┌Kвв╬    ╗╠\С║Kи╡И╬║y~yЩn\Щ╡┴╬  ╬┴╡ЫTKЫЩ~Й║╠Ии║@обT╞┴    б└7фy╡┌С~С╬└Ыss~СЩСССИЙСИЩСЩЩ~sЫ║╬Ы~╨╡Иф@║и    ╗║3╠з╠┌Щ~▒╒└╬оСnssn\TTTTnnyssС╡╔┴╕╒~~╨╨з╠3о┴    ╗╬\И╠в~3\ysnв║╬╡овidTsnddiво╡╬║иssy\3~Ы╨СK╬╗     ╡└yK╠╠СЫ╠ЩsnЙ║╬║╫╣╞оо╞║╫║╬║СdsЖ╠ЫЙ╠╠Tq║╣       Ы╞└║Tи┌о\╡╫~nхебi╡з╔╔ииqТ╕╒Ж~╫║\офиT╣└╬Ы          иС║Ы└3~з┌ds╚╚dИ╣╒╒╔Иdi┬╒n\┌зИ7║и║Ыи             ╡иy╠7╣х┌nsТ~┴╠╣╨┌╣└╬~yЫyT┌ъ╣@└в╗              и╬T┌СsзЩ737И┌Ы@\ЩЩ\@Ы┌С733~зИЖ┌\╬и               ║╡@╬└СвС╞╞хЫ~╣╣T@з┴ЩСх╠╠СбС└╫@и┴                ╬в└в@иСи│i╠3з╚ю~sххз3╠sб│Си@в║и╬                  иС┴└║б┬└Ы3KИЩ┌┌ЩИd3С╬▒││╞║Ыи                      ╗из╬3@╫y77в║ио73y┌K7╬ии│                           │╬\│╫╠└└└└╠╫║ИK╠╗                               и╬n333╬иб╬373\└╡                                 Ы╬yТ╒╬╕╒╫▒╕n╬Ы                                   ╗╗║╬└└╠╡╗┴                                      ┴╗└┴┴║╗┴                                          ╗вв╗                       \ No newline at end of file diff --git a/Crazy BIOS/logo/use/NY_mustache.bmp b/Crazy BIOS/logo/use/NY_mustache.bmp deleted file mode 100644 index 189fcbd..0000000 Binary files a/Crazy BIOS/logo/use/NY_mustache.bmp and /dev/null differ diff --git a/Crazy BIOS/logo/use/NY_mustache_DAT.BIN b/Crazy BIOS/logo/use/NY_mustache_DAT.BIN deleted file mode 100644 index 35eb991..0000000 --- a/Crazy BIOS/logo/use/NY_mustache_DAT.BIN +++ /dev/null @@ -1 +0,0 @@ -            ■■■■■¤√■■■■■■■■■■∙ъ┘┼       ┘∙■      ■■■■■■■■■■■■■■■■■■■■√ъ┘    ъ■■■ўёъъъў■■■■■■■■■■■■■√ёёёЁў√ ■ў┼  ┘■ё┘┼■■■■■■┼┘ў■■√ъў■■√ъ┘■■■■■■■┘ъ■ё ┘ў┘■■■      ■■■┼┼■■■╖┼■■■       ■■┼∙┘ж┼■            ■■   ■■            ■┼┼ \ No newline at end of file diff --git a/Crazy BIOS/logo/use/New_Year.inc b/Crazy BIOS/logo/use/New_Year.inc deleted file mode 100644 index 5489409..0000000 --- a/Crazy BIOS/logo/use/New_Year.inc +++ /dev/null @@ -1,16 +0,0 @@ - MODULE _mNewYear - - LUA PASS1 - make_pic_files ("./src/bios/logo/use/NY_Kokoshnik", 0, 1) - make_pic_files ("./src/bios/logo/use/NY_mustache", 0, 1) - print() - ENDLUA - - BYTE 2 ; количество спрайтов - EasterTable 48, 42, 13, 2, sprite1 - EasterTable 37, 6, 69, 26, sprite2 -sprite1: INCBIN './src/bios/logo/use/NY_Kokoshnik_DAT.bin' -sprite2: INCBIN './src/bios/logo/use/NY_mustache_DAT.bin' - - ENDMODULE -; \ No newline at end of file diff --git a/Crazy BIOS/logo/use/brick.bmp b/Crazy BIOS/logo/use/brick.bmp new file mode 100644 index 0000000..a923a17 Binary files /dev/null and b/Crazy BIOS/logo/use/brick.bmp differ diff --git a/Crazy BIOS/logo/use/pfathers.bmp b/Crazy BIOS/logo/use/pfathers.bmp new file mode 100644 index 0000000..5054b67 Binary files /dev/null and b/Crazy BIOS/logo/use/pfathers.bmp differ diff --git a/Crazy BIOS/rom/MEM_MAP.inc b/Crazy BIOS/rom/MEM_MAP.inc index 1852c02..76b95a3 100644 --- a/Crazy BIOS/rom/MEM_MAP.inc +++ b/Crazy BIOS/rom/MEM_MAP.inc @@ -11,11 +11,7 @@ ROM_MAP: .ROM EQU 0 .LOADER EQU 0 .LOGO EQU 0 - IF PACKED_MAIN -.SETUP EQU #1000 - ELSE .SETUP EQU BLOCK_Setup - ENDIF ; ; @@ -45,27 +41,3 @@ COMPILE_ADDR: .SETUP EQU #8000 .DEPACK EQU #D000 .SETUP_STARTER EQU #C000 -; -; ██████╗ ███████╗██████╗ █████╗ ██████╗██╗ ██╗███████╗██████╗ -; ██╔══██╗██╔════╝██╔══██╗██╔══██╗██╔════╝██║ ██╔╝██╔════╝██╔══██╗ -; ██║ ██║█████╗ ██████╔╝███████║██║ █████╔╝ █████╗ ██████╔╝ -; ██║ ██║██╔══╝ ██╔═══╝ ██╔══██║██║ ██╔═██╗ ██╔══╝ ██╔══██╗ -; ██████╔╝███████╗██║ ██║ ██║╚██████╗██║ ██╗███████╗██║ ██║ -; ╚═════╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ -; - IF PACKED_MAIN - - IFNDEF PREBUILD ; неизвестные метки при прекомпиляции MAIN.BIN -DEPACKER: -.Addr EQU SETUP_MAIN.Depacker -.WorkAddr EQU COMPILE_ADDR.DEPACK -.PackedMAIN EQU UnPacker.PackedMAIN -.UnpackAddr EQU COMPILE_ADDR.MAIN -.CodeLength EQU UnPacker.Length -.UnpackedEXECaddr EQU MAIN_START -.Length EQU DEPACK_DATA.length -;Depacker_start EQU #D000 -;Depacked_logo_start EQU #D900 - ENDIF - - ENDIF diff --git a/Crazy BIOS/rom/ROM.asm b/Crazy BIOS/rom/ROM.asm index e1dc925..b07ab7f 100644 --- a/Crazy BIOS/rom/ROM.asm +++ b/Crazy BIOS/rom/ROM.asm @@ -15,32 +15,8 @@ Check_Sum: RET ;--------------------------------------- -;!TODO прикрутить к ROM.BIOS ;----------------[int]------------------ BLOCK #38-$,#FF -; INT: PUSH BC -; PUSH AF - -; LD C,SLOT3 -; IN B,(C) -; LD A,SYS_PAGE -; OUT (C),A - -; LD A,(SYS_PAGE.INT_ID) -; CP #AA -; JR Z,YESINT -; OUT (C),B -; JR NOINT -; YESINT: PUSH HL -; LD HL,(SYS_PAGE.INT_ADRESS) -; LD A,H -; OR L -; LD A,(SYS_PAGE.INT_PAGE) -; OUT (C),B -; CALL NZ,EXTINT -; POP HL -; NOINT: POP AF -; POP BC EI RETI ;--------------------------------------- @@ -50,93 +26,6 @@ Check_Sum: NMI: RETN ;--------------------------------------- -; ;----------------[int]------------------ -; EXTINT: OR A -; RET Z - -; ;LD C,SLOT1 -; BIT 7,H -; JR Z,.L2 -; LD C,SLOT2 -; BIT 6,H -; JR Z,.L1 -; LD C,SLOT3 - -; .L1: IN B,(C) -; PUSH BC -; OUT (C),A -; CALL .JPHL -; POP BC -; OUT (C),B -; RET -; ; проверка на нулевой слот -; .L2: BIT 6,H -; LD C,SLOT1 -; JR NZ,.L1 ; продолжаем если ненулевой слот -; ; ВОТ ТУТ МОЖНО ВЛУПИТЬ ПРОЦЕДУРУ ДЛЯ ПОДСТАНОВКИ СТРАНИЦЫ В SLOT0 И -; ; ПЕРЕХОД ПО ПРЕРЫВАНИЮ В ОБРАБОТЧИК ПОЛЬЗОВАТЕЛЯ ЧЕРЕЗ процедуру на стэк, например - - -; IF TEST_INT -; LD HL,-.stackDepth - .switchProcedure.size + .patch+2 -; ADD HL,SP -; PUSH HL - -; LD HL,-.stackDepth - .switchProcedure.size ; memory stack use! -; ADD HL,SP ; stack -; PUSH HL ; адрес программы .readProcedure - -; LD DE,.switchProcedure ; перенести программу на стек -; EX DE,HL -; LD BC,.switchProcedure.size -; LDIR -; RET - -; ; процедура, переносимая на стек для вызова прерывания пользователя из SLOT0 -; ; осторожнее с PUSH, если надо много, то увеличивай .stackDepth -; .switchProcedure: -; DEC DE -; POP HL -; LD (HL),E -; INC HL -; LD (HL),D - - -; LD C,SLOT0 -; IN B,(C) -; PUSH BC -; OUT (C),A - -; XOR A -; OUT (SYS_PORT.RAM),A -; .patch EQU $+1-.switchProcedure -; CALL .JPHL - -; DI - -; XOR A -; OUT (SYS_PORT.ROM),A - -; POP BC -; OUT (C),B - -; RET -; .JPHL: JP (HL) -; .stackDepth EQU 32 ; расстояние от конца процедуры до вершины стека. -; .switchProcedure.size EQU $-.switchProcedure -; ELSE - -; SCF -; RET -; .JPHL: JP (HL) -; ENDIF -;--------------------------------------- - -/* - - - -*/ ; ; _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ [___FOR ZX-MODE___] _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ ; @@ -160,49 +49,11 @@ NMI: RETN BLOCK_Setup EQU $ ; - IF PACKED_MAIN - BLOCK ROM_MAP.SETUP-$,#FF - - DISP COMPILE_ADDR.SETUP - -; Depacker version -SETUP_MAIN: - LD HL,DEPACKER.UnpackedEXECaddr; точка входа в распакованном коде - PUSH HL - LD DE,DEPACKER.WorkAddr ; адрес процедуры депакера - PUSH DE - - LD HL,DEPACKER.Addr - LD BC,DEPACKER.Length - LDIR - - LD HL,DEPACKER.PackedMAIN ; где архив - LD DE,DEPACKER.UnpackAddr ; куда распаковывать - RET - -.Depacker EQU $ - ENT - -;-----------------[v] -DEPACK_DATA: - DISP DEPACKER.WorkAddr - MODULE UnPacker - INCLUDE 'src/bios/ROM/SETUP/DEHRUST.asm' ; !TODO сделать на LUA автовыбор декомпрессора и компрессора -PackedMAIN: INCBIN 'Build/Bin/temp/MAIN.PAK' - ENDMODULE - ENT -DEPACK_DATA.length EQU $-DEPACK_DATA -;-----------------[^] - - - ELSE DISP COMPILE_ADDR.SETUP ShowInfo 'Setup block DISP start', 1 ; !!!!! test -SETUP_MAIN: INCLUDE 'src/bios/ROM/SETUP/Main.asm' +SETUP_MAIN: INCLUDE 'crazy bios/ROM/SETUP/Main.asm' ShowInfo 'Setup block DISP end', 1 ; !!!!! test ENT - ENDIF - ShowInfo 'Setup block of ROM end', 0 ; !!!!! test BLOCK_Setup.Length EQU $-BLOCK_Setup @@ -210,30 +61,6 @@ BLOCK_Setup.Length EQU $-BLOCK_Setup ; - - - -; -; !FIXIT сделать эти фиксированные адреса отдельным файлом и с IF/ELSE и подключать их потом куда надо. -;----------------------------------------------------------------------; -; BLOCK #3CC0-$,255 - ; no-magics! -;MAGIC_1: ; ЗАГЛУШКА ДЛЯ MAGIC -; PUSH AF -; LD A,ROM.EXT -; OUT (SYS_PORT.OFF),A -; POP AF -; JP MAGIC_1 -;MAGIC_3: -; PUSH AF -; LD A,ROM.EXT -; OUT (SYS_PORT.OFF),A -; POP AF -; RETN -;MAGIC_2: -;; CALL MG_BEGIN -; JR MAGIC_3 - ;************************* _mInfoBLOCK #3CE0-$,#FF ;!TEST 0 ;SW_ROM_1: @@ -263,24 +90,14 @@ BLOCK_Setup.Length EQU $-BLOCK_Setup PUSH HL ;SW_ROM: PUSH AF - LD A,ROM.BIOS - OUT (SYS_PORT.RAM),A + LD A,vROM.BIOS + OUT (CNF_PORT.vZX_ROM),A POP AF RET ;*************************************** ;----------------------------------------------------------------------; ; -;!TODO спектрумовские утилиты -;----------------------------------------------------------------------; - ; _mInfoBLOCK #3CFA-$,#FF - ; LD A,0 ;!HARDCODE - ; OUT (SYS_PORT.OFF),A - ; POP AF -;----------------------------------------------------------------------; -; - - ; ;----------------------------------------------------------------------; _mInfoBLOCK #3D00-$,#FF @@ -289,12 +106,6 @@ BLOCK_Setup.Length EQU $-BLOCK_Setup RET ;*************************************** -;*************************************** -; BLOCK #3D02-$,FF -; !TODO можно оприходовать тут 17 байтов -; -;*************************************** - ;*************************************** _mInfoBLOCK #3D13-$,#FF NOP @@ -302,12 +113,6 @@ BLOCK_Setup.Length EQU $-BLOCK_Setup JP DOS_OFF ;*************************************** -;*************************************** -; BLOCK #3D17-$,FF -; !TODO можно оприходовать тут 233 байта -; -;*************************************** - ;*************************************** _mInfoBLOCK #3E00-$,#FF ;DOS_OFF: @@ -332,36 +137,12 @@ BLOCK_Setup.Length EQU $-BLOCK_Setup ;*************************************** -;*************************************** -; BLOCK #3E16-$,FF -; !TODO можно оприходовать тут 10 байтов -; -;*************************************** -; - - - -; -;--------------------------------------- -; _mInfoBLOCK #3FC6-$,#FF -;!FIXIT переделать ПЗУ трдоса и спектрумов под правильный вызов функций биоса (а не вместо функций 4x функции 0x) -; или можно добавить функции -; TRDOS_HD_CMD: -; ; LD A,C -; ; OR #40 -; ; LD C,A -; POP AF -; SET 6,C -; RST_to_BIOS -; JR RET_TO_TRDOS -;--------------------------------------- -; ;--------------[GOTO BIOS]-------------- ; call BIOS from EXTENSION _mInfoBLOCK #3FD0-$,#FF ; ToBIOS_FromEXT PUSH AF - LD A,ROM.BIOS ; set BIOS to slot0 - OUT (SYS_PORT.ROM),A + LD A,vROM.BIOS ; set BIOS to slot0 + OUT (CNF_PORT.vBIOS),A POP AF RET ;--------------------------------------- @@ -378,48 +159,18 @@ TRDOS_HD_CMD: ;--------------------------------------- -;!FIXIT остатки от тестов Ивана со звуковой картой -;-------------[SND_TEST_RET]------------- - _mInfoBLOCK #3FE0-$,#FF -; SND_TEST_RET: -; LD A,ROM.BIOS -; OUT (SYS_PORT.RAM),A -; ;JP SOUND_TEST -; JP #0000 -;--------------------------------------- - - -;------------[HDD_5x portal]------------ -; точка входа/выхода для функций 5х из BIOS - _mInfoBLOCK #3FE8-$,#FF -;RET_TO_EXP: - ; PUSH AF - ; LD A,ROM.BIOS - ; OUT (SYS_PORT.ROM),A - ; JP HDD_FN_5x -;--------------------------------------- - - ;!FIXIT Можно поправить номера функций при вызовах из TR-DOS и прыгать сразу в BIOS ;-------[ From TR-DOS to API 4x ]------- _mInfoBLOCK #3FF0-$,#FF RET_TO_TRDOS: PUSH AF DI - LD A,ROM.BIOS - OUT (SYS_PORT.RAM),A + LD A,vROM.BIOS + OUT (CNF_PORT.vZX_ROM),A JR TRDOS_HD_CMD ; тут не хватило места в 1 байт, чтоб сразу сделать JP ;--------------------------------------- - -;-----[???????????????????????????]----- - _mInfoBLOCK #3FF8-$,#FF - ; PUSH AF - ; LD A,ROM.BIOS - ; OUT (SYS_PORT.RAM),A - ; JP #0000 -;--------------------------------------- _mInfoBLOCK #4000-$,#FF ;======================================= diff --git a/Crazy BIOS/rom/SETUP/DEHRUST.asm b/Crazy BIOS/rom/SETUP/DEHRUST.asm deleted file mode 100644 index c416a5d..0000000 --- a/Crazy BIOS/rom/SETUP/DEHRUST.asm +++ /dev/null @@ -1,242 +0,0 @@ -; INCLUDE '../mem_map.inc' - -; ORG Depacker_start - -; DeHRUSTer v1.2 -; HL - начало архива -; DE - адрес распаковки - -;--------------[DEPACKER]--------------- -DEHRUST: - PUSH DE - PUSH HL - INC HL - INC HL - LD C,(HL) - INC HL - LD B,(HL) - INC HL - DEC BC - EX DE,HL - ADD HL,BC - EX DE,HL - LD C,(HL) - INC HL - LD B,(HL) - DEC BC - POP HL - ADD HL,BC - SBC HL,DE - ADD HL,DE - JR C,.LL4019 - LD D,H - LD E,L -.LL4019: - LDDR - EX DE,HL - POP DE - LD C,#0C - ADD HL,BC - PUSH HL - POP IX - LD A,#03 -.LL4025: - DEC HL - LD B,(HL) - DEC HL - LD C,(HL) - PUSH BC - DEC A - JR NZ,.LL4025 - LD B,A - EXX - LD D,#BF - LD C,#10 - CALL .LL4115 -.LL4036: - LD A,(IX+#00) - INC IX - EXX -.LL403C: - LD (DE),A - INC DE -.LL403E: - EXX -.LL403F: - ADD HL,HL - DJNZ .LL4045 - CALL .LL4115 -.LL4045: - JR C,.LL4036 - LD E,#01 -.LL4049: - LD A,#80 -.LL404B: - ADD HL,HL - DJNZ .LL4051 - CALL .LL4115 -.LL4051: - RLA - JR C,.LL404B - CP #03 - JR C,.LL405D - ADD A,E - LD E,A - XOR C - JR NZ,.LL4049 -.LL405D: - ADD A,E - CP #04 - JR Z,.LL40C4 - ADC A,#FF - CP #02 - EXX -.LL4067: - LD C,A -.LL4068: - EXX - LD A,#BF - JR C,.LL4082 -.LL406D: - ADD HL,HL - DJNZ .LL4073 - CALL .LL4115 -.LL4073: - RLA - JR C,.LL406D - JR Z,.LL407D - INC A - ADD A,D - JR NC,.LL4084 - SUB D -.LL407D: - INC A - JR NZ,.LL408D - LD A,#EF -.LL4082: - RRCA - CP A -.LL4084: - ADD HL,HL - DJNZ .LL408A - CALL .LL4115 -.LL408A: - RLA - JR C,.LL4084 -.LL408D: - EXX - LD H,#FF - JR Z,.LL409B - LD H,A - INC A - LD A,(IX+#00) - INC IX - JR Z,.LL40A6 -.LL409B: - LD L,A - ADD HL,DE - LDIR -.LL409F: - JR .LL403E -.LL40A1: - EXX - RRC D - JR .LL403F -.LL40A6: - CP #E0 - JR C,.LL409B - RLCA - XOR C - INC A - JR Z,.LL40A1 - SUB #10 -.LL40B1: - LD L,A - LD C,A - LD H,#FF - ADD HL,DE - LDI - LD A,(IX+#00) - INC IX - LD (DE),A - INC HL - INC DE - LD A,(HL) - JP .LL403C -.LL40C4: - LD A,#80 -.LL40C6: - ADD HL,HL - DJNZ .LL40CC - CALL .LL4115 -.LL40CC: - ADC A,A - JR NZ,.LL40F3 - JR C,.LL40C6 - LD A,#FC - JR .LL40F6 -.LL40D5: - LD B,A - LD C,(IX+#00) - INC IX - CCF - JR .LL4068 -.LL40DE: - CP #0F - JR C,.LL40D5 - JR NZ,.LL4067 - LD B,#03 - EX DE,HL -.LL40E7: - POP DE - LD (HL),E - INC HL - LD (HL),D - INC HL - DJNZ .LL40E7 - LD HL,#2758 - EXX - RET -.LL40F3: - SBC A,A - LD A,#EF -.LL40F6: - ADD HL,HL - DJNZ .LL40FC - CALL .LL4115 -.LL40FC: - RLA - JR C,.LL40F6 - EXX - JR NZ,.LL40B1 - BIT 7,A - JR Z,.LL40DE - SUB #EA - ADD A,A - LD B,A -.LL410A: - LD A,(IX+#00) - INC IX - LD (DE),A - INC DE - DJNZ .LL410A - JR .LL409F -.LL4115: - LD B,C - LD L,(IX+#00) - INC IX - LD H,(IX+#00) - INC IX - RET -Length EQU $-DEHRUST - - in a,(#FF) - -;--------------------------------------- - -;---------------[MAIN.HR]--------------- -;Depacker.packcode EQU $$$ -;PackedMAIN EQU $ -; INCBIN 'Build/Bin/temp/MAIN.HR' -;--------------------------------------- -; \ No newline at end of file diff --git a/Crazy BIOS/rom/SETUP/MAIN.asm b/Crazy BIOS/rom/SETUP/MAIN.asm index 78968e4..3bedb02 100644 --- a/Crazy BIOS/rom/SETUP/MAIN.asm +++ b/Crazy BIOS/rom/SETUP/MAIN.asm @@ -48,7 +48,7 @@ ; ENCODING "DOS" DEVICE ZXSPECTRUM4096 ; модель с 4 метрами памяти MMU 2 e, 0 ; страница 0 в банку 2 и проверка на границы. - INCLUDE 'src/bios/shared/includes.inc' + INCLUDE 'crazy bios/shared/includes.inc' ORG COMPILE_ADDR.MAIN OUTPUT 'Build/Bin/temp/MAIN.BIN' ENDIF @@ -82,13 +82,11 @@ TPOINTD EQU TEMP - SYS_PAGE.RAMD_KEYS.NUM - SYS_PAGE.Sp_RAMD_KEYS.NUM ; [x] 4/11 ;======================================= ;SETUP_MAIN: MAIN_START: - POP AF POP HL LD SP,STACK PUSH HL LD (RET_TO_EXP_ADDR),hl JP START -; DB "(C) 2002 PETERS PLUS LTD " RET_TO_EXP_ADDR: WORD 0000 ; place for save ret address to exp ; @@ -372,8 +370,8 @@ EXIT_SETUP: ; JR Z,XFLEX ; LD A,#EA ;SPECTRUM ;XFLEX: - LD A,ROM.BIOS - OUT (SYS_PORT.ROM),A + LD A,vROM.BIOS + OUT (CNF_PORT.vBIOS),A POP HL ; пихается в EXP.ASM в процедуре JP (HL) ; LD (JMPHL),HL @@ -457,7 +455,6 @@ Start_again: ld sp,STACK-2 START: DI - PUSH AF XOR A LD (ERRSUM),A LD (ERRSUM.ErrDateTime),A @@ -527,10 +524,6 @@ START: ;R06 LD BC,CMOS_CELL.BootUpParams.Mask.QuickStartROM ;#010E CALL G_VALUE - POP BC - INC B - DEC B - JR NZ,QIGNORE ; результат проверки Space из exp.asm [space_check] PUSH AF LD C,SLOT3 IN B,(C) @@ -1305,32 +1298,8 @@ ZXCLS: LD HL,#4000 RET GET_ID: LD HL,memBUFFER.ID - ;LD C,BIOS.FN_VERSION - ;JP_to_BIOS JP FN_VERSION - -;R01GET_ID -;R01 LD A,#10 -;R01 LD BC,#1FFD -;R01 OUT (C),A -;R01 LD C,SLOT3 -;R01 IN B,(C) -;R01 PUSH BC -;R01 LD A,#EE -;R01 OUT (C),A -;R01 LD HL,#FFD0 -;R01 LD DE,ID_BUFFER -;R01 LD BC,#30 -;R01 LDIR -;R01 POP BC -;R01 OUT (C),B -;R01 XOR A -;R01 LD BC,#1FFD -;R01 OUT (C),A -;R01 RET - - RCHAIN: LD E,L LDI @@ -1584,49 +1553,6 @@ ZXMODE_SETUP: IN A,(SLOT3) PUSH AF LD A,Spec_Page OUT (SLOT3),A - ; - LD BC,CMOS_CELL.Options.Mask.LoadZXroms - CALL G_VALUE - ; - OR A - JR Z,.init_41h - DEC A - JR Z,.CheckAndLoad - DEC A - JR Z,.Load_ZXROMS - ;!TODO - ;DEC A - ;JR Z,.New_init_41h - ; - ; Check ZX ROMS Loaded -.CheckAndLoad: LD A,(Spec_Page.flag_Z) - CP 'Z' - JR NZ,.Load_ZXROMS - LD A,(Spec_Page.flag_X) - CP 'X' - JR NZ,.Load_ZXROMS - ; [x] 31/12/23 подстраховка от недоутечки памяти - LD A,R - AND #80 - JR Z,.No_Need_To_Load_ZXROMS -.Load_ZXROMS: XOR A - LD R,A - ; - ; Load ZX ROM's - call init_zx_roms - ; - LD HL,#C000 - LD DE,#C001 - LD BC,#3FFF - LD (HL),C - LDIR ; забить FF-ами - ; ставим метку если прогрузили ПЗУ спектрума - DEC DE ; Spec_Page.flag_X - LD A,'X' - LD (DE),A - DEC DE ; Spec_Page.flag_Z - LD A,'Z' - LD (DE),A ; Заглушка для страницы #41 на всякий пожарный .init_41h: LD HL,PROG_NO_ROM LD DE,#C000 + Spec_Page.no_zx_rom @@ -1642,78 +1568,8 @@ ZXMODE_SETUP: IN A,(SLOT3) OUT (SLOT3),A RET -; -;--------------------[copy zx-roms to zx-pages]-----------------; -; SLOT0 - ROM 8, sys_port - on. -; RAM SLOT0 - page 0 -; для режима zx spectrum -; ВЫПОЛНЯЕТСЯ ИЗ ОЗУ -; !HARDCODE номера страниц для эмулятора ПЗУ -init_zx_roms: IN A,(SLOT3) - EX AF,AF' - ; - DI - LD A,SYS_PORT.EXTENSION - OUT (SYS_PORT.ROM),A - INC A ;!HARDCODE LD A,2 - LD B,3 ; zx-rom number of pages - ; -.loop: EXX - ; - out (ROM.SLOT0),a - or %0100'0000 ; !HARDCODE номера страниц для эмулятора ПЗУ - out (SLOT3),a - and %1011'1111 ; !HARDCODE номера страниц для эмулятора ПЗУ - ; - LD HL,0 - LD DE,#C000 - LD BC,#4000 - LDIR - ; - INC A - EXX - DJNZ .loop - ; - xor a - out (ROM.SLOT0),a - OUT (SYS_PORT.ROM),A - EX AF,AF' - out (SLOT3),a - ; - ;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23 - LD A,ACEX.vROM.BASIC_128 ; ROM-ID - BASIC 128 - LD B,#42 ;!HARDCODE page - CALL SET_PORTS - ; - LD A,ACEX.vROM.BASIC_48 ; ROM-ID - BASIC 48 - LD B,#43 ;!HARDCODE page - CALL SET_PORTS - ; - LD A,ACEX.vROM.TR_DOS ; ROM-ID - TR-DOS - LD B,#44 ;!HARDCODE page - CALL SET_PORTS - ; - ; эти страницы пока не используются - LD A,ACEX.vROM.BIOS ; ROM-ID - BIOS - ;LD B,#45 ;!HARDCODE page - LD B,#41 - CALL SET_PORTS - ; - LD A,ACEX.vROM.BIOS_3 ; ROM-ID - BIOS-1 - ;LD B,#46 ;!HARDCODE page - LD B,#41 - CALL SET_PORTS - ; - LD A,ACEX.vROM.BIOS_4 ; ROM-ID - BIOS-2 - ;LD B,#47 ;!HARDCODE page - LD B,#41 - JP SET_PORTS - ; можно задействовать ещё 4 страницы на порты #E4..#E7 -;---------------------------------------------------------------------[] - - ;--------------------------------------- - INCLUDE 'src/bios/ROM/SETUP/messages.z80' + INCLUDE 'crazy bios/ROM/SETUP/messages.z80' ;--------------------------------------- ; @@ -1741,7 +1597,7 @@ STACK EQU #C000 DISPLAY '-----[Set_Pictures Prebuild start]-----' MMU 1 e, 0 ; страница 0 в банку 0 и проверка на границы. ORG ROM_MAP.LOGO - INCLUDE 'src/bios/logo/Set_Pictures.asm' + INCLUDE 'crazy bios/logo/Set_Pictures.asm' DISPLAY '-----[Set_Pictures Prebuild done ]-----' ELSE DISPLAY '------------------[Main.asm]------------------' diff --git a/Crazy BIOS/rom/SETUP/SETTINGS.asm b/Crazy BIOS/rom/SETUP/SETTINGS.asm index 175269b..61c751c 100644 --- a/Crazy BIOS/rom/SETUP/SETTINGS.asm +++ b/Crazy BIOS/rom/SETUP/SETTINGS.asm @@ -68,20 +68,6 @@ SETTINGS: CALL POSTMSG LD BC,SettingsItemsTabsAddrs.max*256 - - IF NEW_FEATURE - - ; LD HL,CurrentDateTime - ; CALL GETTIME - - ; LD HL,CurrentDateTime - - ; LD A,(HL) - ; AND #F0 - - ENDIF - - STT1: LD A,C LD (ITEM),A PUSH BC @@ -136,15 +122,6 @@ AGAIN: LD HL,AGAIN JP Z,INCVAL CP "-" JP Z,DECVAL - - IF NEW_FEATURE -; ENTER - LD HL,#280D - AND A - SBC HL,DE - JP Z,pressedEnter - ENDIF - ; F2 LD HL,#3C00 AND A @@ -288,36 +265,6 @@ PTEXT: call Get_Item_Address JP PITEM ;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[v] - IF NEW_FEATURE -; New procedure with IY reg -LocateCursor: - call Get_Item_Address - LD E,(IY+MenusItem.Column) - LD D,(IY+MenusItem.Line) - ld a,(IY+MenusItem.Name) - push iy - call FindStringAddr - LD BC,#0100 - XOR A - CPIR - LD A,#FF - SUB C - ADD A,E - LD E,A - ;CALL ScreenPOS.LOCAT - CALL LP_SET_PLACE - pop iy - ld a,(iy+MenusItem.FirstString) - call FindStringAddr - LD BC,#0100 - XOR A - CPIR - LD A,#FF - SUB C - LD B,A - ret - - ELSE LocateCursor: call Get_Item_Address LD E,(HL) @@ -350,7 +297,6 @@ LocateCursor: SUB C LD B,A ret - ENDIF ;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[^] PCURSOR: @@ -393,68 +339,6 @@ WRMCLR: DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INC.WHITE ;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[v] - IF NEW_FEATURE -; New procedure with IY reg -INCVAL: call Get_Item_Address - ld A,(IY+MenusItem.Type) - AND A - RET NZ ; проверка на тип, дальше если paramLine - - LD A,(IY+MenusItem.CMOSreg) - PUSH AF - CALL READCMS - LD C,A - AND (IY+MenusItem.ValueMask) - CP (IY+MenusItem.ValueMax) - LD A,C - JR Z,OVERI - LD B,(IY+MenusItem.ValueMask) - CALL ADDVAL - ADD A,B - JR OVER -OVERI: XOR (IY+MenusItem.ValueMax) -OVER: LD B,A - POP AF - CALL WRITCMS - PUSH IY - PUSH IY - POP HL - CALL PITEM - POP IY - ld l,(IY+MenusItem.Action) - ld h,(IY+MenusItem.Action+1) - jp (hl) - -DECVAL: call Get_Item_Address - ld A,(IY+MenusItem.Type) - AND A - RET NZ ; проверка на тип, дальше если paramLine - - LD A,(IY+MenusItem.CMOSreg) - PUSH AF - CALL READCMS - LD C,A - AND (IY+MenusItem.ValueMask) - LD A,C - JR Z,OVERD - LD B,(IY+MenusItem.ValueMask) - CALL ADDVAL - SUB B - JR OVER -OVERD: OR (IY+MenusItem.ValueMax) - JR OVER - - -pressedEnter: -; !TODO New Feature - ld a,(iy+MenusItem.Type) - and a - ret z - ld l,(iy+MenusItem.Action) - ld h,(iy+MenusItem.Action+1) - jp (HL) - - ELSE INCVAL: call Get_Item_Address INC HL INC HL @@ -508,8 +392,6 @@ DECVAL: call Get_Item_Address OVERD: OR (HL) JR OVER - - ENDIF ;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[^] ; B - MASK @@ -524,48 +406,6 @@ ADDV2: RLC B RET ;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[v] - IF NEW_FEATURE -; IY - item's address -; New procedure with IY reg -PITEM: LD E,(IY+MenusItem.Column) ; x-coordinate - LD D,(IY+MenusItem.Line) ; y-coordinate - ;CALL ScreenPOS.LOCAT - CALL LP_SET_PLACE ; set position of item - LD A,(IY+MenusItem.Name) - CALL POSTMSG - - PUSH IY - LD BC,MenusItem.FirstString - ADD IY,BC - EX (SP),IY - POP HL ; тут адрес строки первого параметра - - LD A,(IY+MenusItem.Type) - AND A - JR NZ,.printParameter ; если это не строка с изменяемым параметром, то просто печать - - LD A,(IY+MenusItem.CMOSreg) ; address of next parametr - CALL READCMS ; read item`s value from cmos - - LD B,(IY+MenusItem.ValueMask) ; item's value mask - AND B -.getParameterNum: - RRCA - RRC B - JR NC,.getParameterNum - RLCA - OR A - jr Z,.printParameter ; первый параметр выводим? - - ld c,a - xor a - ld b,a - add hl,bc ; находим номер параметра -.printParameter: - ld a,(hl) - jp POSTMSG - - ELSE ; !FIXIT вызовы процедур биоса надеются на то, что некоторые регистры не портятся ; HL - item's address PITEM: LD E,(HL) ; x-coordinate @@ -600,7 +440,6 @@ PITEM: LD E,(HL) ; x-coordinate .printParameter: ld a,(hl) jp POSTMSG - ENDIF ;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[^] ; Не портит HL @@ -743,24 +582,6 @@ SETDEF: ;!TODO RET ;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[v] -; New procedure with IY reg - IF NEW_FEATURE -Get_Item_Address: - LD A,(ITEM) - LD L,A - LD H,0 - LD DE,SettingsItemsTabsAddrs - ADD HL,HL - ADD HL,DE - LD A,(HL) - INC HL - LD H,(HL) - LD L,A - PUSH HL - POP IY - RET - - ELSE Get_Item_Address: LD A,(ITEM) LD L,A @@ -775,7 +596,6 @@ Get_Item_Address: INC HL INC HL RET - ENDIF ;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[^] ; MODULE OnChangeAction @@ -784,44 +604,6 @@ nothing: ; !TODO New Feature ; !TODO замутить что-то типа API для рисования всплывающих окон - IF NEW_FEATURE -SetTime: - xor a - ld hl,#050E - ld de,#0C20 - ld ix,memBUFFER.Shared - CALL WIN_COPY - - LD DE,#0C20 ; !HARDCODE - ld b,5 - DI - -.loop: push bc - push de - CALL LP_SET_PLACE - ; печать атрибутов - LD E,COLORS.CGA.INC.RED - LD B,#0E - CALL LP_PRINT_ATR - - pop de - inc d - pop bc - DJNZ .loop - - CALL setFRAME.single - LD DE,#0C20 ;yx. y=0..1F, x=0..4F координаты левого верхнего угла - LD BC,#050E ;yx. длина и высота линии - CALL PBORDER - - CALL KEY - xor a - ld hl,#050E - ld de,#0C20 - ld ix,memBUFFER.Shared - JP WIN_RESTORE - ENDIF - setXYpos: JP RESCREEN diff --git a/Crazy BIOS/rom/SETUP/VIDEO_IO.asm b/Crazy BIOS/rom/SETUP/VIDEO_IO.asm index 522133d..ba188d3 100644 --- a/Crazy BIOS/rom/SETUP/VIDEO_IO.asm +++ b/Crazy BIOS/rom/SETUP/VIDEO_IO.asm @@ -259,9 +259,10 @@ SHOW_LOGO: LD IX,win_descriptor.tab320x256 SAFE_PORTY DI - LD A,1 - OUT (SYS_PORT.ON),A - OUT (ROM.SLOT0),A + LD A,CNF_PORT.EXTENSION + OUT (CNF_PORT.vZX_ROM),A + LD BC,#1FFD + LD A,#10 ;!HARDCODE LD HL,MAIN_LOGO.Pallete LD DE,memBUFFER.Shared @@ -269,8 +270,7 @@ SHOW_LOGO: LD IX,win_descriptor.tab320x256 LDIR XOR A - OUT (ROM.SLOT0),A - OUT (SYS_PORT.ON),A + OUT (CNF_PORT.vBIOS),A EI LD HL,memBUFFER.Shared @@ -283,24 +283,15 @@ SHOW_LOGO: LD IX,win_descriptor.tab320x256 SAFE_PORTY DI - LD A,1 - OUT (SYS_PORT.ON),A - ;LD A,1 - OUT (ROM.SLOT0),A + LD A,CNF_PORT.EXTENSION + OUT (CNF_PORT.vZX_ROM),A LD HL,MAIN_LOGO.Raster ; начало картинки в банке ПЗУ ; CALL DECODE CALL LOGO_TO_SCREEN - ; - ;--------------[Пасхалка]--------------[] - IF Pashalki - _PASHALKI_CODE - ENDIF - ;--------------------------------------[] - ; + XOR A - OUT (SYS_PORT.ON),A - OUT (ROM.SLOT0),A + OUT (CNF_PORT.vBIOS),A EI RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -411,59 +402,6 @@ LOGO_TO_SCREEN: XOR A RET - ; IF !ROM_LOGO_TEST - ; LOGPAL: ; palitre for logotype - ; IF TEST_Build - ; INCBIN './test/test2_pal.bin' - ; ELSE - ; INCBIN './original/logo_pal.bin' - ; ENDIF - ; - ; IF ($-LOGPAL) < 1024 - ; BLOCK +(1024-($-LOGPAL)),0 - ; ENDIF - ; ENDIF - -; Original hardcoded pallete for Peters logotype - ; B G R - ; DB #FF,#FF,#FF,#00 - ; DB #8C,#A5,#A5,#00 - ; DB #42,#EF,#EF,#00 - ; DB #DE,#CE,#C6,#00 - ; DB #84,#39,#39,#00 - ; DB #CE,#8C,#84,#00 - ; DB #A5,#39,#31,#00 - ; DB #84,#7B,#7B,#00 - ; DB #63,#5A,#5A,#00 - ; DB #BD,#39,#39,#00 - ; DB #84,#08,#08,#00 - ; DB #AD,#08,#08,#00 - ; DB #18,#00,#00,#00 - ; DB #63,#08,#10,#00 - ; DB #94,#08,#18,#00 - ; DB #00,#00,#00,#00 - - ; PALCOL: - ; ; B G R - ; DB #FF,#FF,#FF,#00 - ; DB #8C,#BD,#BD,#80 - ; DB #BD,#CE,#BD,#00 - ; DB #EF,#CE,#BD,#00 - ; DB #BC,#73,#73,#00 - ; DB #9C,#63,#63,#00 - ; DB #DE,#8C,#8C,#00 - ; DB #8C,#52,#52,#00 - ; DB #BD,#63,#63,#00 - ; DB #52,#10,#10,#00 - ; DB #21,#00,#00,#00 - ; DB #8C,#00,#00,#00 - ; DB #AD,#00,#00,#00 - ; DB #AD,#10,#21,#00 - ; DB #8C,#00,#10,#00 - ; DB #00,#00,#00,#00 - - - SET_CGA: CALL SETPAL4 LD A,4 ; page_pal diff --git a/Crazy BIOS/rom/SETUP/messages.z80 b/Crazy BIOS/rom/SETUP/messages.z80 index 596260e..6d6ecec 100644 --- a/Crazy BIOS/rom/SETUP/messages.z80 +++ b/Crazy BIOS/rom/SETUP/messages.z80 @@ -57,8 +57,6 @@ "TrDosB", -- 3 "TrDosC", -- 4 "TrDosD", -- 5 - "SetTime", -- 6 DEFINES.INC --> NEW_FEATURE - "HddWrPr", -- 7 DEFINES.INC --> HDDwriteProtect -- 8 -- 9 -- 10 @@ -71,14 +69,10 @@ -- 17 } } - DeleteValueByDEFINE(SettingsTabsOrder,"NEW_FEATURE","SetTime") - DeleteValueByDEFINE(SettingsTabsOrder,"HDDwriteProtect","HddWrPr") DeleteValueByDEFINE(SettingsTabsOrder,"UnusedSettingsFeatures","MemTest") DeleteValueByDEFINE(SettingsTabsOrder,"UnusedSettingsFeatures","UpdBios") DeleteValueByDEFINE(SettingsTabsOrder,"UnusedSettingsFeatures","TypRate") DeleteValueByDEFINE(SettingsTabsOrder,"UnusedSettingsFeatures","TypDelay") - -- DeleteValueByDEFINE(SettingsTabsOrder,"UnusedSettingsFeatures","") - -- DeleteValueByDEFINE(SettingsTabsOrder,"UnusedSettingsFeatures","") ENDLUA ; @@ -130,26 +124,6 @@ ;----------------------------[Settings items table]----------------------------[v] ; - IF NEW_FEATURE -; New structure for procedure with IY reg - STRUCT MenusItem -Action WORD -Type BYTE -Column BYTE -Line BYTE -Name BYTE -CMOSreg BYTE -ValueMask BYTE -ValueMax BYTE -FirstString BYTE - ENDS - -paramLine EQU 0 -folderLine EQU 1 - - ENDIF -; - firstColumn EQU 03 ; смещение по X для первого столбца secondColumn EQU 43 ; смещение по X для второго столбца firstLine EQU 07 ; смещение по Y для первой строки @@ -158,7 +132,6 @@ SettingsItemsTabs: _mSETitemParams Lang DW OnChangeAction.setLang ; действие при изменении - IF NEW_FEATURE : DB paramLine : ENDIF ; тип параметра (строка со значением или каталог) DB columnNum,lineNum ; столбец, строка DB paramName ; Название параметра DW CMOS_CELL.BootUpParams.Mask.Language : DB %0000'0100 ; CMOS : MASK @@ -169,7 +142,6 @@ SettingsItemsTabs: IF UnusedSettingsFeatures ; !TODO _mSETitemParams MemTest DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName DW CMOS_CELL.BootUpParams.Mask.MemTest : DB %1000'0000 @@ -179,7 +151,6 @@ SettingsItemsTabs: _mSETitemParams SaveRAMdrvs DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName DW CMOS_CELL.BootUpParams.Mask.SaveRAMdisks : DB %0100'0000 @@ -189,7 +160,7 @@ SettingsItemsTabs: IF UnusedSettingsFeatures ; !TODO _mSETitemParams UpdBios DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF + DB columnNum,lineNum DB paramName DW CMOS_CELL.BootUpParams.Mask.UpdBios : DB %0010'0000 @@ -199,7 +170,6 @@ SettingsItemsTabs: _mSETitemParams StartDelay DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName DW CMOS_CELL.BootUpParams.Mask.StartDelay : DB %0001'0000 @@ -210,7 +180,7 @@ SettingsItemsTabs: IF UnusedSettingsFeatures ; !TODO _mSETitemParams TypRate DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF + DB columnNum,lineNum DB paramName DW CMOS_CELL.Typematic.Mask.Rate : DB %0000'0111 @@ -227,7 +197,7 @@ SettingsItemsTabs: IF UnusedSettingsFeatures ; !TODO _mSETitemParams TypDelay DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF + DB columnNum,lineNum DB paramName DW CMOS_CELL.Typematic.Mask.Delay : DB %0110'0000 @@ -239,7 +209,6 @@ SettingsItemsTabs: _mSETitemParams RebootMsg DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName DW CMOS_CELL.Options.Mask.RebootMSG : DB %0000'0010 @@ -248,7 +217,6 @@ SettingsItemsTabs: _mSETitemParams SysDsk DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName DW CMOS_CELL.BootDrives.Mask.SysDisk : DB %0000'0111 @@ -263,7 +231,6 @@ SettingsItemsTabs: _mSETitemParams AltSysDsk DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName DW CMOS_CELL.BootDrives.Mask.AltSysDisk : DB %0111'0000 @@ -278,7 +245,6 @@ SettingsItemsTabs: _mSETitemParams FddFirst DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName DW CMOS_CELL.DrivesSetup_1.Mask.FirstFDD : DB %0000'0000 @@ -289,7 +255,6 @@ SettingsItemsTabs: _mSETitemParams FddSecond DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName DW CMOS_CELL.DrivesSetup_1.Mask.SecondFDD : DB %0000'0000 @@ -300,7 +265,6 @@ SettingsItemsTabs: _mSETitemParams PriIdeMA DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName DW CMOS_CELL.DrivesSetup_1.Mask.PriIDEmaster : DB %0011'0000 @@ -311,7 +275,6 @@ SettingsItemsTabs: _mSETitemParams PriIdeSl DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName DW CMOS_CELL.DrivesSetup_1.Mask.PriIDEslave : DB %1100'0000 @@ -322,7 +285,6 @@ SettingsItemsTabs: _mSETitemParams SecIdeMA DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName DW CMOS_CELL.DrivesSetup_2.Mask.SecIDEmaster : DB %0011'0000 @@ -333,7 +295,6 @@ SettingsItemsTabs: _mSETitemParams SecIdeSl DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName DW CMOS_CELL.DrivesSetup_2.Mask.SecIDEslave : DB %1100'0000 @@ -345,7 +306,7 @@ SettingsItemsTabs: IF HDDwriteProtect _mSETitemParams HddWrPr DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF + DB columnNum,lineNum DB paramName DW CMOS_CELL.Options.Mask.HDDwriteProtect : DB %0000'0001 @@ -355,7 +316,6 @@ SettingsItemsTabs: _mSETitemParams ScreenY DW OnChangeAction.setXYpos - IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName DW CMOS_CELL.ScreenPosition.Mask.X : DB %1110'0000 @@ -377,7 +337,6 @@ SettingsItemsTabs: _mSETitemParams ScreenX DW OnChangeAction.setXYpos - IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName DW CMOS_CELL.ScreenPosition.Mask.Y : DB %0000'1110 @@ -399,7 +358,6 @@ SettingsItemsTabs: _mSETitemParams FrameInt DW OnChangeAction.setInt - IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName DW CMOS_CELL.ScreenSET.Mask.Int : DB %0011'0000 @@ -410,7 +368,6 @@ SettingsItemsTabs: _mSETitemParams VSync DW OnChangeAction.setVsinc - IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName DW CMOS_CELL.ScreenSET.Mask.Sinc : DB %1000'0000 @@ -420,7 +377,6 @@ SettingsItemsTabs: _mSETitemParams QuickStartROM DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName DW CMOS_CELL.BootUpParams.Mask.QuickStartROM : DB %0000'0001 @@ -429,7 +385,6 @@ SettingsItemsTabs: _mSETitemParams TrDosA DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName DW CMOS_CELL.TRDOSmount.Mask.A : DB %0000'0010 @@ -439,7 +394,6 @@ SettingsItemsTabs: _mSETitemParams TrDosB DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName DW CMOS_CELL.TRDOSmount.Mask.B : DB %0000'1000 @@ -449,7 +403,6 @@ SettingsItemsTabs: _mSETitemParams TrDosC DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName DW CMOS_CELL.TRDOSmount.Mask.C : DB %0010'0000 @@ -459,7 +412,6 @@ SettingsItemsTabs: _mSETitemParams TrDosD DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName DW CMOS_CELL.TRDOSmount.Mask.D : DB %1000'0000 @@ -469,23 +421,12 @@ SettingsItemsTabs: _mSETitemParams LoadZXroms DW OnChangeAction.nothing - IF NEW_FEATURE : DB paramLine : ENDIF DB columnNum,lineNum DB paramName DW CMOS_CELL.Options.Mask.LoadZXroms : DB %0000'1000 DB msgStrings.valLoadZXromsManually DB msgStrings.valLoadZXromsFlag DB msgStrings.valLoadZXromsCAD - - IF NEW_FEATURE - _mSETitemParams SetTime - DW OnChangeAction.SetTime - DB folderLine - DB columnNum,lineNum - DB paramName - DB #00,%0000'0000,%0000'0000 - DB msgStrings.valFolder - ENDIF ;--------------------[Items Addresses table]--------------------[] SettingsItemsTabsAddrs: _mCreateSettingsItemsTabsAddrs @@ -666,10 +607,6 @@ msgStrings: _mSetStr valLoadZXromsFlag, tmp_Counter : DZ 'By ZX flag' _mSetStr valLoadZXromsCAD, tmp_Counter : DZ 'On restart' ; _mSetStrRus valLoadZXromsAuto, tmp_Counter : DZ 'On call ' - IF NEW_FEATURE - _mSetStr parSetTime, tmp_Counter : DZ 'Date and time setup : ' - _mSetStr valFolder, tmp_Counter : DB 16,'ENTER',17,0 - ENDIF IF BETA_BUILD > 0 _mSetStr testBIOSmsg, tmp_Counter : DZ 'Test build! ',BUILD_DATE,', ',__TIME__ ENDIF @@ -824,10 +761,6 @@ msgRusStrings: _mSetStrRus valLoadZXromsFlag, tmp_Counter : DZ 'По флагу ZX ' _mSetStrRus valLoadZXromsCAD, tmp_Counter : DZ 'При рестарте' ; _mSetStrRus valLoadZXromsAuto, tmp_Counter : DZ 'При вызове ' - IF NEW_FEATURE - _mSetStrRus parSetTime, tmp_Counter : DZ 'Дата и время : ' - _mSetStrRus valFolder, tmp_Counter : DB 16,'ВВОД',17,0 - ENDIF IF BETA_BUILD > 0 _mSetStrRus testBIOSmsg, tmp_Counter : DZ 'Тестовая сборка! ',BUILD_DATE,', ',__TIME__ ENDIF diff --git a/Crazy BIOS/rom/ZX/ZX_MENU.ASM b/Crazy BIOS/rom/ZX/ZX_MENU.ASM index 1b781ec..c87ee1b 100644 --- a/Crazy BIOS/rom/ZX/ZX_MENU.ASM +++ b/Crazy BIOS/rom/ZX/ZX_MENU.ASM @@ -140,7 +140,7 @@ MN_128_S: ;************************************** MENU_128: XOR A - OUT (SYS_PORT.RAM),A + OUT (CNF_PORT.vZX_ROM),A CALL ZX_VARS.PROG.SWAP_ROM CALL NEW_SP @@ -166,8 +166,8 @@ SH_4: LD HL,MENU_DAT - MENU_128 EX AF,AF' ;LD A,0 ;OUT (CNF_PORT),A - LD A,SYS_PORT.EXTENSION - OUT (SYS_PORT.ROM),A ;!!!!! версия для ПЗУ + LD A,vROM.EXTENSION + OUT (CNF_PORT.vBIOS),A ;!!!!! версия для ПЗУ EX AF,AF' RET MENU_DAT: @@ -311,7 +311,7 @@ DOS_PROG: //DOS_PROG: .Exec: PUSH AF XOR A - OUT (SYS_PORT.RAM),A + OUT (CNF_PORT.vZX_ROM),A POP AF //DOS_PROG_A+1: .Patch+2: CALL #3D03 ;!HARDCODE @@ -319,8 +319,8 @@ DOS_PROG: ;!FIXIT сделать через условие компиляции ZX_ROM_BIOS //LD A,0 //OUT (CNF_PORT),A - LD A,SYS_PORT.EXTENSION - OUT (SYS_PORT.ROM),A ;!!!!! версия для ПЗУ + LD A,vROM.EXTENSION + OUT (CNF_PORT.vBIOS),A ;!!!!! версия для ПЗУ POP AF RET //DOS_PROG_LEN @@ -601,7 +601,7 @@ CONFIG_SET: POP DE LD A,E - OUT (SYS_PORT.ROM),A + OUT (CNF_PORT.vBIOS),A IM 1 EI @@ -615,7 +615,7 @@ SPRINTER_reset: _SET_CNF: DI LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON - OUT (SYS_PORT.ROM),A + OUT (CNF_PORT.vBIOS),A RET CNF_SC_312: @@ -628,11 +628,6 @@ CNF_PN_320: OUT (Port_VSYNC),A RET -; LD A,CNF_0 -; OUT (SYS_PORT.ROM),A -; CALL DOS_OFF -; JP 0 - ;***************************** ; *** MENU UTILITES *** ;***************************** diff --git a/Crazy BIOS/shared/RECOVERY.IMG b/Crazy BIOS/shared/CB_SYS.IMG similarity index 98% rename from Crazy BIOS/shared/RECOVERY.IMG rename to Crazy BIOS/shared/CB_SYS.IMG index 4786914..fde1ead 100755 Binary files a/Crazy BIOS/shared/RECOVERY.IMG and b/Crazy BIOS/shared/CB_SYS.IMG differ diff --git a/Crazy BIOS/shared/CompMacro.asm b/Crazy BIOS/shared/CompMacro.asm index 58b5522..c6f4e49 100644 --- a/Crazy BIOS/shared/CompMacro.asm +++ b/Crazy BIOS/shared/CompMacro.asm @@ -103,7 +103,7 @@ OUT (SLOT3),A XOR A OUT (ROM.SLOT0),A - OUT (SYS_PORT.ROM),A + OUT (CNF_PORT.vBIOS),A POP AF JP PO,.noInterrupts EI diff --git a/Crazy BIOS/shared/DEFINES.INC b/Crazy BIOS/shared/DEFINES.INC index 3836ab1..d384019 100644 --- a/Crazy BIOS/shared/DEFINES.INC +++ b/Crazy BIOS/shared/DEFINES.INC @@ -1,12 +1,10 @@ ;=======================[All shared EQUs]=======================; BETA_BUILD EQU 6 ; добавляет строку и сообщение о тестовой сборке на стартовом экране ;======================[All shared defines]=====================; - DEFINE PACKED_MAIN 0 ; паковать MAIN или влезает без этого? DEFINE SP2000_Loader_Flag #0107 ; DEFINE IDE_Optimization 1 ; слегка оптимизирует некоторые процедуры работы с HDD DEFINE NeedSafePort_Y 1 ; если 0, то в режиме без акселя некоторые процедуры могут засрать экран - DEFINE Pashalki 0 ; - DEFINE PICTURE_FILE './src/bios/logo/psfathers.bmp' ; + DEFINE PICTURE_FILE './crazy bios/logo/use/brick.bmp' ; DEFINE StandartCGApallete 1 ; Подключать палитру из standart_colors.inc DEFINE BitStream_SizeInPages 4 ; DEFINE USE_E1_SCANCODE 0 ; @@ -15,8 +13,6 @@ BETA_BUILD EQU 6 ; DEFINE LOGO_DELAY_NORM 100 ; DEFINE LOGO_DELAY_MAX 130 ; ;----------------------------[ TEST ]---------------------------; - DEFINE TEST_INT 1 ; Тестовый обработчик пользовательского INT - DEFINE NEW_FEATURE 0 ; !TODO пункты в сетап DEFINE HDDwriteProtect 0 ; старая фишка для функций 5x DEFINE RECOVERYmountTYPE 1 ; 1 - быстрый немного захардкоженый вариант. 2 - более "правильный" DEFINE RECOVERYrdChooseTYPE 1 ; 1 - RECOVERY грузится в диск 15, 2 - ищется свободный рамдиск, если нет, то в 15-ый diff --git a/Crazy BIOS/shared/VERSION.inc b/Crazy BIOS/shared/VERSION.inc index 1fda053..125cbeb 100644 --- a/Crazy BIOS/shared/VERSION.inc +++ b/Crazy BIOS/shared/VERSION.inc @@ -8,11 +8,11 @@ BIOS_ver_hex EQU EXP_ID.VER*256+EXP_ID.MOD DEFINE BIOS_ver_string '0'+EXP_ID.VER, '.', '0'+EXP_ID.MOD/10, '0'+EXP_ID.MOD-(EXP_ID.MOD/10)*10 IF BETA_BUILD > 0 - DEFINE BETA_str_ver "BETA ","0"+BETA_BUILD + DEFINE BETA_str_ver "Crazy Beta ","0"+BETA_BUILD ENDIF ;--------------------------------------- - DEFINE BoardID_start #5283 - DEFINE BoardID_end #47E8 + DEFINE BoardID_start 0 ;#5283 + DEFINE BoardID_end 0 ;#47E8 DEFINE MotherBoardID #0000 DEFINE MotherBoardType #00 ; !TODO 0 - Legacy, 1 - DX, 2 - Max ;======================================= @@ -29,8 +29,8 @@ Disk_subsystem_ver_hex EQU ROM_ID.VER*256+ROM_ID.MOD ;============[For CNF part]============= CNF_ID: -.VER EQU 3 ; Номер версии менять тут! -.MOD EQU 05 ; Номер версии менять тут! +.VER EQU 0 ;3 ; Номер версии менять тут! +.MOD EQU 00 ;05 ; Номер версии менять тут! bitstream_ver_hex EQU CNF_ID.VER*256+CNF_ID.MOD DEFINE bitstream_ver_string '0'+CNF_ID.VER, '.', '0'+CNF_ID.MOD/10, '0'+CNF_ID.MOD-(CNF_ID.MOD/10)*10 diff --git a/Crazy BIOS/shared/includes.inc b/Crazy BIOS/shared/includes.inc index 3773dee..17b83bf 100644 --- a/Crazy BIOS/shared/includes.inc +++ b/Crazy BIOS/shared/includes.inc @@ -1,19 +1,15 @@ ; ;---------[All shared includes]--------- - INCLUDE 'src/bios/shared/DEFINES.INC' ; Shared defines - IF Pashalki - INCLUDE 'Shared_Includes/structures/EasterSprites.inc' - ENDIF + INCLUDE 'crazy bios/shared/DEFINES.INC' ; Shared defines INCLUDE 'Shared_Includes/structures/FileSystem.inc' - INCLUDE 'src/bios/Loader/Loader.asm' ; Bitstream loader as macros - INCLUDE 'src/bios/shared/CompMacro.asm' ; макросы + INCLUDE 'crazy bios/shared/CompMacro.asm' ; макросы INCLUDE 'Shared_Includes/constants/SP2000.inc' ; константы INCLUDE 'Shared_Includes/constants/zx_char_codes.inc' ; константы INCLUDE 'Shared_Includes/constants/zx_vars.inc' ; INCLUDE 'Shared_Includes/macroses/macros.z80' - INCLUDE 'src/bios/ROM/MEM_MAP.inc' ; карта памяти - INCLUDE 'src/bios/shared/VERSION.inc' ; Версия EXP и ROM + INCLUDE 'crazy bios/ROM/MEM_MAP.inc' ; карта памяти + INCLUDE 'crazy bios/shared/VERSION.inc' ; Версия EXP и ROM INCLUDE 'Shared_Includes/constants/BIOS_EQU.inc' - INCLUDE 'src/bios/ROM/BIOS.inc' + INCLUDE 'crazy bios/ROM/BIOS.inc' ;--------------------------------------- ; diff --git a/Crazy Updater/UPDATER.ASM b/Crazy Updater/UPDATER.ASM index cef8c65..766174b 100644 --- a/Crazy Updater/UPDATER.ASM +++ b/Crazy Updater/UPDATER.ASM @@ -107,7 +107,7 @@ program_start EQU Flasher_Start MODULE expBIOS_Vars - INCLUDE 'constants/BIOS_EXP.INC' + INCLUDE '../Flasher/constants/BIOS_EXP.INC' ENDMODULE INCLUDE 'Versions.inc' diff --git a/Crazy Updater/constants/BIOS_EXP.inc b/Crazy Updater/constants/BIOS_EXP.inc index d0ff179..df5bc29 100644 --- a/Crazy Updater/constants/BIOS_EXP.inc +++ b/Crazy Updater/constants/BIOS_EXP.inc @@ -1,14 +1,13 @@ BOARD_INFO.number: EQU 0x00000003 BOARD_INFO.type: EQU 0x00000005 -BoardID.start: EQU 0x0000008F -BoardID.end: EQU 0x00000091 -FN_CRIPT.cnf: EQU 0x000019EA -ID_SPRINTER.bitstream_ver: EQU 0x00000089 -bitstream_ver_hex: EQU 0x00000305 +BoardID.start: EQU 0x00000095 +BoardID.end: EQU 0x00000097 +ID_SPRINTER.bitstream_ver: EQU 0x0000008F +bitstream_ver_hex: EQU 0x00000000 EXP_ID.VER: EQU 0x00000003 EXP_ID.MOD: EQU 0x00000006 -CNF_ID.VER: EQU 0x00000003 -CNF_ID.MOD: EQU 0x00000005 -msgStrings.str_ACEX_MODEL: EQU 0x000024DD -msgRusStrings.str_ACEX_MODEL: EQU 0x00002EED +CNF_ID.VER: EQU 0x00000000 +CNF_ID.MOD: EQU 0x00000000 +msgStrings.str_ACEX_MODEL: EQU 0x0000244B +msgRusStrings.str_ACEX_MODEL: EQU 0x00002E5B BETA_BUILD: EQU 0x00000006 diff --git a/Crazy/ACEX_RAM.ASM b/Crazy/ACEX_RAM.ASM index 97b5273..e81bf36 100644 --- a/Crazy/ACEX_RAM.ASM +++ b/Crazy/ACEX_RAM.ASM @@ -14,7 +14,7 @@ LD A,1 ; enable CS0, disable CS1 OUT (C),A ; Z84.SYS.Data ;███████ инициализация DCP ████████████████████████████████████; - LD HL,INIT_SLOTS + LD HL,ADD_PORTS.Code DCP_INIT: LD C,XL LD B,XH LD E,YL @@ -102,11 +102,30 @@ DCP_INIT: LD C,XL LD H,A ; добавить изменяемую часть JR .loop_parse .return: JP (IX) + ;███████ Добавление портов #4000..#4004 ███████████████████████; +ADD_PORTS: ; внутренние порты эмулятора ПЗУ мапятся на внешние +.Data: DB #EB ; внешний #4000 + DB #EF ; внешний #4001 + DB #E6 ; внешний #4002 + DB #E7 ; внешний #4003 + DB #E4 ; внешний #4004 +.Data.Size EQU $ - .Data + ; +.Code: LD HL,ADD_PORTS.Data + LD DE,#C480 + LD BC,ADD_PORTS.Data.Size + LDIR ;███████ Инициализация страниц ████████████████████████████████; -INIT_SLOTS: XOR A +INIT_SLOTS: LD BC,#1FFD + LD A,1 + OUT (C),A + LD B,#7F + OUT (C),A + ; + XOR A OUT (SLOT0),A OUT (SLOT1),A - DEC A + LD A,2 OUT (SLOT2),A LD A,SYS_PAGE OUT (SLOT3),A @@ -125,9 +144,20 @@ INIT_SLOTS: XOR A OUT (SYS_PORT.RAM),A INC A OUT (SLOT1),A + ; IN A,(FastRAM.OFF) ; ТУТ МЫ УЖЕ В ОЗУ В ТОМ ЖЕ КОДЕ И АДРЕСЕ ; страницы 0,1,2,#FE + ;███████ Инициализация страниц 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 ;██████████████████████████████████████████████████████████████; ;███████ Рабочий код ██████████████████████████████████████████; ;██████████████████████████████████████████████████████████████; @@ -141,35 +171,44 @@ INIT_SLOTS: XOR A 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 ; абсолютный номер сектора младшая часть +CHECK_IMG: ;LD A,(RESERVED_PAGES.SYS_FN) ; страница буфера, если адрес в окне #C000 (BLOCK_ID) + LD B,1 ; число читаемых секторов + LD HL,#8000 ; адрес буфера данных + LD IX,0 ; абсолютный номер сектора старшая часть + LD DE,0 ; абсолютный номер сектора младшая часть 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,CHECKING_LABEL + LD B,CHECKING_LABEL.Size +.loop: LD A,(DE) + CP (HL) + RET NZ ; error + INC DE + INC HL + DJNZ .loop + ; Образ BIOS +LOAD_DATA: LD A,(RESERVED_PAGES.BIOS) + LD HL,#C000 + LD B,RESERVED_PAGES.Size * #4000 / 512 LD DE,1 CALL FN_HDD_READ_NEXT - LD BC,4 - ADD IY,BC - POP BC - POP HL - DJNZ .loop - RET + XOR A + OUT (SLOT1),A + JP .IN_RAM + #4000 + ; кусок в 1 слоте +.IN_RAM: LD BC,#1FFD + XOR A + OUT (C),A + ; + XOR A ;CNF_PORT.BIOS + OUT (CNF_PORT.vBIOS),A + LD A,#40 + OUT (SLOT3),A + ; + RST 0 + ;JP BEGIN_CB_IMG ;██████████████████████████████████████████████████████████████; @@ -469,6 +508,22 @@ ERROR: ; XOR 1 JR .big_loop ;░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░; + + ;░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░; +RESERVED_PAGES: ; Образ БИОСа для рестарта + +.BIOS: DB #46 ; BIOS Acex port: #EB + DB #47 ; EXTENSION Acex port: #EF + DB #48 ; Recovery_1 Acex port: #E6 + DB #49 ; Recovery_2 Acex port: #E7 + DB #4B ; LOGO Acex port: #E4 +.Size EQU $-RESERVED_PAGES.BIOS + DB #FF ; End of the block +.Blocks EQU 1 + +CHECKING_LABEL: SET_IMG_LABEL +.Size EQU $ - CHECKING_LABEL + ;░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░; END_CB EQU $ ;██████████████████████████████████████████████████████████████████████; @@ -675,19 +730,51 @@ DCP_DATA: DW %00'000'0'0100'0000 ; 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 +; 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 +;-----------------------------------------------------------------------; +; ;██████ Загрузка ██████████████████████████████████████████████; +; ; дополнительные функции +; 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 ;-----------------------------------------------------------------------; \ No newline at end of file diff --git a/Crazy/BUILD_BIOS.a80 b/Crazy/BUILD_BIOS.a80 new file mode 100644 index 0000000..4149097 --- /dev/null +++ b/Crazy/BUILD_BIOS.a80 @@ -0,0 +1,25 @@ + +;[--------------------------------------------------------------------------] + MACRO Set_Block text, blk_addr +.tmp equ $ + BLOCK blk_addr-.tmp,#FF + DISPLAY text, /H, $-.tmp + ENDM +;[--------------------------------------------------------------------------] + ORG 0 + DISPLAY '[ Building ROM for 1K30 ]' + OUTPUT 'Build/_SPRIN.BIN' +;PAGE 0 + Set_Block 'ROM free space: ', #20000 + +;PAGE 8 + INCBIN 'Build/CrazyBlaster.raw' + Set_Block 'EXP free space: ', #30000 + +;PAGE 12-15 (#0C, #0D, #0E, #0F) + INCBIN '../SP_Core/Build/Bin/LOADER_K30.BIN' + Set_Block 'Loader & Bitstream free space: ', #40000 +;[--------------------------------------------------------------------------] + DISPLAY '[ Building ROM for 1K30 done ]' +;[--------------------------------------------------------------------------] +;'Build/Bin/LOADER_K30.BIN' \ No newline at end of file diff --git a/CrazyBlaster.asm b/CrazyBlaster.asm index b6f42f3..110742c 100644 --- a/CrazyBlaster.asm +++ b/CrazyBlaster.asm @@ -17,6 +17,10 @@ DEFINE image_size_in_sectors flasher_size_in_sectors + bios_size_in_sectros DEFINE TYPE_OF_ACEX 3 ; 3 - 1K30, 5 - 1K50 + MACRO SET_IMG_LABEL +.Crazy_IMG_Label: DB "Crazy Blaster Image" + ENDM + ;██████████████████████████████████████████████████████████████████████; ;█████████████████████[ FIRST SECTION - CONF ROM ]█████████████████████; ;██████████████████████████████████████████████████████████████████████; @@ -35,10 +39,14 @@ END_FIRST_SECTION EQU $ ;██████████████████[ SECOND SECTION - IMAGE ON DRIVE ]█████████████████; ;██████████████████████████████████████████████████████████████████████; ;OUTPUT './Build/CrazyBlasterIMG.raw' - OUTPUT './Build/CB_BIOS_IMG.raw' - ORG #0000 + OUTPUT './Build/CB_BIOS_IMG.IMG' + ORG #0000 + SET_IMG_LABEL + BLOCK 512 - $,#FF +; ;BEGIN_CB_IMG: INCLUDE 'Crazy/IMG_PART.ASM' -BEGIN_CB_IMG: INCLUDE 'Crazy/IMG_PART.ASM' +BEGIN_CB_IMG: INCBIN 'Build/CB_BIOS.RAW' + END_SECOND_SECTION EQU $ ; DISPLAY "IMG size = ",/A,END_SECOND_SECTION - BEGIN_CB_IMG diff --git a/Shared_Includes b/Shared_Includes index 4662474..d357c4c 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 4662474034c70f4b2627ff8eca10ccdf4a7d3525 +Subproject commit d357c4cc2a8af41e47136c245161e11355612a96