diff --git a/Shared_Includes b/Shared_Includes index 4f546cb..77a5168 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 4f546cb1d2cd8eeb1aec0de2c3e9902d1bb52fee +Subproject commit 77a51684d4d63ad2fdccf416793951df00276b17 diff --git a/src/ZX_ROMS/new/SP_TRDOS.bin b/src/ZX_ROMS/new/SP_TRDOS.bin index cc1a621..57ff6bd 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/bios/exp/BIOS_FUNC.asm b/src/bios/exp/BIOS_FUNC.asm index 4e4cbd3..fa6f841 100644 --- a/src/bios/exp/BIOS_FUNC.asm +++ b/src/bios/exp/BIOS_FUNC.asm @@ -133,8 +133,8 @@ TAB_FNS: DB low EMM.GetBanksPorts ; #96 получить адреса портов DB low EMM.CheckColdInit ; #97 проверка на холодный старт и инициализации если он ;????? нужна ли как API? DB low RAMD_CALC_PAGE ; #98 Вычисление страницы и адреса в RAM-Disk по абсолютному номеру сектора - DB low SET_DISK_TYPE ; #99 ;????? - DB low DISK_REDIR ; #9A ;????? + DB low SET_DISK_REDIR ; #99 Установить на текущий драйв переназначение (старая функция для TR-DOS!) ;????? + DB low GET_DISK_REDIR ; #9A Получить тип назначения на текущий драйв (старая функция для TR-DOS!) DB low GET_RAMD_NUM ; #9B получить номер ram disk по его block id DB low SWAP_RAM_DRIVES ; #9C сменить набор рамдисков ZX <-> Sp2000 DB low EMM.DivMemBlocks ; #9D разделения блока на два. @@ -325,8 +325,8 @@ TAB_FNS: DB high EMM.GetBanksPorts DB high EMM.CheckColdInit DB high RAMD_CALC_PAGE - DB high SET_DISK_TYPE - DB high DISK_REDIR + DB high SET_DISK_REDIR + DB high GET_DISK_REDIR DB high GET_RAMD_NUM DB high SWAP_RAM_DRIVES DB high EMM.DivMemBlocks diff --git a/src/bios/exp/EXP.asm b/src/bios/exp/EXP.asm index 42c86f5..12c2ec1 100644 --- a/src/bios/exp/EXP.asm +++ b/src/bios/exp/EXP.asm @@ -951,7 +951,21 @@ PrepareToZX: ; Setup HDD drives for ZX Spectrum mode JR Z,.start_zx ; find first good partition ; + + IN A,(SLOT3) + EX AF,AF + LD A,SYS_PAGE + OUT (SLOT3),A + ; XOR A + LD H,A + LD L,A + LD (SYS_PAGE.CURRENT_DIR_SEC_L),HL + LD (SYS_PAGE.CURRENT_DIR_SEC_H),HL + EX AF,AF + OUT (SLOT3),A + EX AF,AF + .loop: CALL FN_HDD_PART JR NC,.start_zx POP AF diff --git a/src/bios/exp/FUNC_4x.ASM b/src/bios/exp/FUNC_4x.ASM index 27b443f..43e366e 100644 --- a/src/bios/exp/FUNC_4x.ASM +++ b/src/bios/exp/FUNC_4x.ASM @@ -691,8 +691,8 @@ FN_HDD_INIT: LD A,D OUT (SLOT3),A LD A,IDE.ATA.InitializeDeviceParameters ; SET HDD PARAMETERS - CALL HD_CMD_EXE - RET + ;CALL HD_CMD_EXE + ;RET HD_CMD_EXE: CALL HD_WAIT RET C @@ -762,7 +762,7 @@ HD_CALC_SECS: LD E,D LD D,XL LD A,XH - AND #0F ; ограничение на ~127 гигов + AND #0F ; LBA 28 LD H,A RET ; CHS diff --git a/src/bios/exp/FUNC_FOR_TRDOS.ASM b/src/bios/exp/FUNC_FOR_TRDOS.ASM index c7a9c3b..10fc2fa 100644 --- a/src/bios/exp/FUNC_FOR_TRDOS.ASM +++ b/src/bios/exp/FUNC_FOR_TRDOS.ASM @@ -1,6 +1,6 @@ ;!TODO исправить SLOT2 на SLOT3 и затестить ;!TODO добавить описание -DISK_REDIR: +GET_DISK_REDIR: PUSH HL LD HL,SYS_PAGE.DISK_TYPE-#4000 IN A,(SLOT2) @@ -21,7 +21,7 @@ DISK_REDIR: ;!TODO исправить SLOT2 на SLOT3 и затестить, но не пользоваться стеком тогда ;!TODO добавить описание -SET_DISK_TYPE: +SET_DISK_REDIR: PUSH HL LD HL,SYS_PAGE.DISK_TYPE-#4000 IN A,(SLOT2) @@ -104,13 +104,15 @@ RAMD_TO_DRV: ; HDD A, DRV - B HDD_TO_DRV: AND #0F + OR #40 + LD C,A LD A,B CP 4 CCF RET C ; - LD HL,SYS_PAGE.DISK_TYPE-#4000 + LD H,high (SYS_PAGE.DISK_TYPE-#4000) LD L,B ; IN A,(SLOT2) @@ -118,7 +120,6 @@ HDD_TO_DRV: LD A,SYS_PAGE OUT (SLOT2),A LD A,C - ADD A,#40 LD (HL),A LD A,B OUT (SLOT2),A diff --git a/src/bios/exp/FUNC_RAM_ROM_DRV.ASM b/src/bios/exp/FUNC_RAM_ROM_DRV.ASM index 0eae097..68aa86a 100644 --- a/src/bios/exp/FUNC_RAM_ROM_DRV.ASM +++ b/src/bios/exp/FUNC_RAM_ROM_DRV.ASM @@ -91,7 +91,9 @@ EMM.InitMem: RESERVED_PAGES: ; [x] Block #1 - можно освободить по ID 1 DB 1,3,4,6,7,8,9,10,11,12,13,14,15 ; for Spectrum - ; эмулятор ПЗУ ;!FIXIT ROM-Emulator сделать динамические страницы + ;!FIXIT страницы 16..31 не зарезервированы, но используются в Pentagon 512 + ; + ; эмулятор ПЗУ ;!FIXIT ROM-Emulator сделать динамические страницы DB #42,#43,#44,#45,#46,#47;,#48,#49,#4A,#4B ; For (BASIC128, BASIC48, TRDOS, SCORP_ROM)*2, vBIOS, vEXTENSION DB #FF ; End of the block ;