diff --git a/Shared_Includes b/Shared_Includes index d3cdfc6..84d47b2 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit d3cdfc6e7644fab96ebe2c6e87959359cda6319c +Subproject commit 84d47b2818758fdceda21ecf2953324c1f339858 diff --git a/src/ZX_ROMS/new/SP_TRDOS.bin b/src/ZX_ROMS/new/SP_TRDOS.bin index d27c2b3..e074c44 100644 Binary files a/src/ZX_ROMS/new/SP_TRDOS.bin and b/src/ZX_ROMS/new/SP_TRDOS.bin differ diff --git a/src/ZX_ROMS/new/_SP_TRDOS.bin b/src/ZX_ROMS/new/_SP_TRDOS.bin deleted file mode 100644 index 787e971..0000000 Binary files a/src/ZX_ROMS/new/_SP_TRDOS.bin and /dev/null differ diff --git a/src/ZX_ROMS/new/rom4.bin b/src/ZX_ROMS/new/rom4.bin deleted file mode 100644 index bbdc321..0000000 Binary files a/src/ZX_ROMS/new/rom4.bin and /dev/null differ diff --git a/src/bios/exp/DCP.ASM b/src/bios/exp/DCP.ASM index 162b162..57b2668 100644 --- a/src/bios/exp/DCP.ASM +++ b/src/bios/exp/DCP.ASM @@ -504,8 +504,8 @@ DCP_CONFIG: AND A JP Z,PORTS_INIT - LD A,R - DI + LD A,R + DI PUSH AF PUSH IX @@ -526,7 +526,6 @@ DCP_CONFIG: RET PO EI RET - .PARSE_TABLE: LD A,L AND E diff --git a/src/bios/exp/FUNC_4x.ASM b/src/bios/exp/FUNC_4x.ASM index 6163ae0..68a7e59 100644 --- a/src/bios/exp/FUNC_4x.ASM +++ b/src/bios/exp/FUNC_4x.ASM @@ -565,6 +565,8 @@ FN_HDD_INIT: OUT (C),B INC A JR Z,FN_HDD_PART + + ; !FIXIT сделать тут выбор первого попавшегося из SYS.IDE_0-3 CALL TEST_HDD_DRV SCF RET NZ diff --git a/src/bios/exp/FUNC_RAM_ROM_DRV.ASM b/src/bios/exp/FUNC_RAM_ROM_DRV.ASM index 1ada46a..da58801 100644 --- a/src/bios/exp/FUNC_RAM_ROM_DRV.ASM +++ b/src/bios/exp/FUNC_RAM_ROM_DRV.ASM @@ -229,19 +229,21 @@ EMM.FreeMemRMD: ; Вход: A - НАЧАЛО ЦЕПОЧКИ ;EMM_FN3M: EMM.FreeMem: - AND A + AND A SCF - RET Z + RET Z + ; + LD L,A CP ZX_RAM_ID CALL Z,SET_ROM_FLAG_ZX - LD L,A - IN A,(SLOT3) - EX AF,AF' - LD A,SYS_PAGE - OUT (SLOT3),A + ; + IN A,(SLOT3) + EX AF,AF' + LD A,SYS_PAGE + OUT (SLOT3),A - LD H,high (SYS_PAGE.RAMD_FAT); - #4000 - #4000) ; !FIXIT SAFE_RGADR + - LD A,L + LD H,high (SYS_PAGE.RAMD_FAT); - #4000 - #4000) ; !FIXIT SAFE_RGADR + + LD A,L EMM_F3M_L1: LD L,A LD A,(HL) ; следующий блок @@ -253,14 +255,13 @@ EMM_F3M_L1: EX AF,AF' OUT (SLOT3),A - XOR A ;!FIXIT недокументировано - ;AND A + XOR A ; no error code RET EMM_FN3M_ERR: EX AF,AF' OUT (SLOT3),A - LD A,2 ;!FIXIT недокументировано + LD A,2 ;!HARDCODE error code SCF RET ;----------------------------------------------------------------------; @@ -710,7 +711,7 @@ ROM_DISK: PUSH BC LD A,E - AND 63 ; ADRESS in ROM-Page + AND #3F ; ADRESS in ROM-Page PUSH AF ; сохранить адрес EX DE,HL ; DE - адрес буфера @@ -732,73 +733,73 @@ ROM_DISK: ; B - число секторов ; A - ROM-Page .loopRead: - PUSH HL ; откуда - PUSH DE ; куда + PUSH HL ; откуда + PUSH DE ; куда - LD HL,-.stackDepth - .readProcedure.size ; memory stack use! - ADD HL,SP ; stack + LD HL,-.stackDepth - .readProcedure.size ; memory stack use! + ADD HL,SP ; stack - PUSH HL ; адрес программы .readProcedure + PUSH HL ; адрес программы .readProcedure - LD DE,.readProcedure ; перенести программу на стек + LD DE,.readProcedure ; перенести программу на стек EX DE,HL LD BC,.readProcedure.size - LDIR ; программа на стеке - LD BC,#100 ; длина сектора - RET ; исполнить программу .readProcedure, на стеке адреса буфера и ROM + LDIR ; программа на стеке + LD BC,#100 ; длина сектора + RET ; исполнить программу .readProcedure, на стеке адреса буфера и ROM ; DE - next address ; HL - ROM address .readNext: - POP BC ; число секторов + POP BC ; число секторов - INC C ; счетчик считанных секторов - DEC B ; сектора кончились? + INC C ; счетчик считанных секторов + DEC B ; сектора кончились? JR Z,.normExit - BIT 6,H ; чтение не закончено + BIT 6,H ; чтение не закончено - PUSH BC ; сохранить счетчики - JR Z,.loopRead ; читать дальше + PUSH BC ; сохранить счетчики + JR Z,.loopRead ; читать дальше POP BC - POP HL ; номер сектора + POP HL ; номер сектора LD A,B LD B,0 ADD HL,BC - LD B,A ; вычислить след.сектор + LD B,A ; вычислить след.сектор - EX DE,HL ; теперь HL - адрес, DE сектор, B - сколько еще читать + EX DE,HL ; теперь HL - адрес, DE сектор, B - сколько еще читать - JP .loop ; начать все снова! + JP .loop ; начать все снова! ; чтение закончено -.normExit: - POP HL ; сектор, откуда велось чтение - ADD HL,BC ; по возврату: HL - след.адрес - EX DE,HL ; DE - след.сектор - AND A - RET +.normExit: + POP HL ; сектор, откуда велось чтение + ADD HL,BC ; по возврату: HL - след.адрес + EX DE,HL ; DE - след.сектор + AND A + RET ; ошибка .errorExit: ; !TODO сделать, чтоб на выходе показывалось количество прочитанных секторов - POP BC - POP DE - SCF - RET + POP BC + POP DE + SCF + RET ; процедура, переносимая на стек для чтения из ROM-Disk ; осторожнее с PUSH, если надо много, то увеличивай .stackDepth .readProcedure: - POP DE ; куда - POP HL ; откуда - OUT (ROM.SLOT0),A ; ROM_PAGE - LDIR ; здесь читается из ROM-Disk - LD B,A - XOR A - OUT (ROM.SLOT0),A - OUT (SYS_PORT.ROM),A - LD A,B - JP .readNext -.stackDepth EQU 8 ; расстояние от конца процедуры до вершины стека. -.readProcedure.size EQU $-.readProcedure + POP DE ; куда + POP HL ; откуда + OUT (ROM.SLOT0),A ; ROM_PAGE + LDIR ; здесь читается из ROM-Disk + LD B,A + XOR A + OUT (ROM.SLOT0),A + OUT (SYS_PORT.ROM),A + LD A,B + JP .readNext +.stackDepth EQU 8 ; расстояние от конца процедуры до вершины стека. +.readProcedure.size EQU $-.readProcedure ;----------------------------------------------------------------------; ; diff --git a/src/bios/exp/FUNC_SERVICE.asm b/src/bios/exp/FUNC_SERVICE.asm index afe091e..b873ab9 100644 --- a/src/bios/exp/FUNC_SERVICE.asm +++ b/src/bios/exp/FUNC_SERVICE.asm @@ -406,17 +406,16 @@ REINIT: DEC B ; ;----------------------------------------------------------------------; SET_ROM_FLAG_ZX: - LD C,A - IN A,(SLOT3) - PUSH AF + EX AF,AF' + IN A,(SLOT3) + EX AF,AF' LD A,Spec_Page OUT (SLOT3),A XOR A LD (Spec_Page.flag_Z),A LD (Spec_Page.flag_X),A - POP AF + EX AF,AF' OUT (SLOT3),A - LD A,C RET ;----------------------------------------------------------------------; ; \ No newline at end of file diff --git a/src/bios/exp/FUNC_SYS.ASM b/src/bios/exp/FUNC_SYS.ASM index dc29477..953a927 100644 --- a/src/bios/exp/FUNC_SYS.ASM +++ b/src/bios/exp/FUNC_SYS.ASM @@ -23,27 +23,6 @@ EMM.GetBanksPorts: RET ;84t .error: SCF RET ;74t - -; old version - ; LD C,SLOT0 - ; IN B,(C) - ; AND A - ; RET Z ;34t - ; LD C,SLOT1 - ; IN B,(C) - ; DEC A - ; RET Z ;62t - ; LD C,SLOT2 - ; IN B,(C) - ; DEC A - ; RET Z ;90t - ; LD C,SLOT3 - ; IN B,(C) - ; DEC A - ; RET Z ;118t - ; SCF - ; RET ;150t - ;----------------------------------------------------------------------; ;----------------------------------------------------------------------; @@ -75,18 +54,12 @@ FN_VERSION: ;----------------------------------------------------------------------; ;----------------------------------------------------------------------; +; [ ] 28/01/24 добавлена подфункция выдачи инфы про Acex FN_CRIPT: - DEC B - JR Z,.board_id - DEC B - SCF - RET NZ - ; [ ] 25/01/24 -.Acex_ver: - ;!TODO - AND A - RET + DJNZ .Acex_ver ; + ; BoardID_start old address #312A + ; BoardID_end old address #312D .board_id: LD HL,(ROM_NUMBER.part1) ;rdlow-ok LD A,(ROM_NUMBER.part2) ;rdlow-ok @@ -94,8 +67,73 @@ FN_CRIPT: LD DE,(BoardID.end) ;rdlow-ok AND A RET -; BoardID_start old address #312A -; BoardID_end old address #312D + ; +.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 + RET + ; +.choose_chip: + XOR A + LD HL, - ACEX.Chip_ID.K30 + ADD HL,DE + LD HL,.chip_ID_TXT.K30 + RET Z + INC A + LD HL, - ACEX.Chip_ID.K50 + ADD 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 ;----------------------------------------------------------------------; ;----------------------------------------------------------------------; @@ -201,7 +239,7 @@ INIT_VSyncAndWaits: .cmos_OK: and CMOS.Cell.ScreenSET.Mask.Sinc - bit 6,a + and #40 ld a,3 ; 320 lines & no waits jr z,.setVSyncAndWaits dec a ; 312 lines & no waits @@ -444,24 +482,21 @@ LOOP_EQ: ; ; START_DI: ; PUSH AF ; LD A,R -; JP PE,XX_DI -; LD A,R -; XX_DI: LD A,#80 +; LD A,#80 ; JP PE,XX_DI2 ; XOR A ; XX_DI2: LD R,A ; DI ; POP AF ; RET - +; ; END_DI: PUSH AF ; LD A,R -; BIT 7,A +; AND #80 ; JR Z,XX_DI3 ; EI ; POP AF ; PE ; RET - ; XX_DI3: DI ; POP AF ; PO ; RET diff --git a/src/bios/shared/VERSION.inc b/src/bios/shared/VERSION.inc index d865884..2815b37 100644 --- a/src/bios/shared/VERSION.inc +++ b/src/bios/shared/VERSION.inc @@ -28,14 +28,7 @@ Disk_subsystem_ver_hex EQU ROM_ID.VER*256+ROM_ID.MOD DEFINE Disk_subsystem_ver_txt '0'+ROM_ID.VER, '.', '0'+ROM_ID.MOD/10, '0'+ROM_ID.MOD-(ROM_ID.MOD/10)*10 ;--------------------------------------- - DEFINE SPTeam_year '2023' + DEFINE SPTeam_year '2024' DEFINE SetupVer '1.60' - - -; -;2.48 New BIOS for Sp2000 -;2.50 02-08-2001 ADD BUILD-IN CD DRIVER (Not release) -;2.51 14-09-2001 Removed 2 IDE (if with_2ide) and added print board serial number -;2.52 Add new items to SETUP Utility for screen position. -;2.53 Add CMOS install routine. Disabled TRDOS install. -;======================================= \ No newline at end of file +;======================================= +; \ No newline at end of file