From ce7da51b4ce528a7fccab4593d6611ec7f662778 Mon Sep 17 00:00:00 2001 From: Anatoliy Belyanskiy Date: Fri, 17 Nov 2023 03:10:43 +1000 Subject: [PATCH] -bug in EMM.FreeMemRMD --- Shared_Includes | 2 +- src/ZX_ROMS/new/SP_TRDOS.bin | Bin 16384 -> 16384 bytes src/ZX_ROMS/new/ZX_EXP2.bin | Bin 16384 -> 16384 bytes src/ZX_ROMS/new/_SP_TRDOS.bin | Bin 0 -> 16384 bytes src/bios/exp/BIOS_FUNC.asm | 64 ++++++++++++------------- src/bios/exp/EXTENDED/HDD_DRIVER_6.asm | 2 +- src/bios/exp/FUNC_RAM_ROM_DRV.ASM | 10 ++-- src/bios/rom/ZX/ZX_MENU.ASM | 14 +++--- src/bios/shared/RECOVERY.IMG | Bin 98304 -> 98304 bytes 9 files changed, 46 insertions(+), 46 deletions(-) create mode 100644 src/ZX_ROMS/new/_SP_TRDOS.bin diff --git a/Shared_Includes b/Shared_Includes index 809ea1f..b69773d 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 809ea1f0b204f2d56555497c1c808806833d6315 +Subproject commit b69773d50cb2c0e1da44f7f20c7daa32871f2308 diff --git a/src/ZX_ROMS/new/SP_TRDOS.bin b/src/ZX_ROMS/new/SP_TRDOS.bin index 787e9717a5752bc7048c68aa446cca92524de409..e7432e797f33b64fdea965e9d6e02db50494211d 100644 GIT binary patch delta 18 ZcmZo@U~Fh$+`w$W%<_g~Gn>ILegHRl1=9ck delta 18 ZcmZo@U~Fh$+`w$WZ1TopGn>ILegHZd1~UKv diff --git a/src/ZX_ROMS/new/ZX_EXP2.bin b/src/ZX_ROMS/new/ZX_EXP2.bin index 20c59953d0dfd8001818a794102abf71151b9a28..997d297ccc75aac3108c97bc96e40f0c2c8afa58 100644 GIT binary patch delta 54 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 lW>!v#$n+^_?F7N{{ey)(?I|L literal 0 HcmV?d00001 diff --git a/src/bios/exp/BIOS_FUNC.asm b/src/bios/exp/BIOS_FUNC.asm index 1589ce1..3d7726d 100644 --- a/src/bios/exp/BIOS_FUNC.asm +++ b/src/bios/exp/BIOS_FUNC.asm @@ -2,45 +2,45 @@ MACRO _mNoDrive_5xTable numberOFdrives, byteOFword IF byteOFword DUP numberOFdrives - DB high FN_RESERVED_5x ;#50 - Дубль. На эту функцию прыгает из основного обработчика + DB high FN_RESERVED_5x ;#50 - Дубль. На эту функцию прыгает из основного обработчика - DB high FN_ABSENT_5x ;#51 - DB high FN_ABSENT_5x ;#52 - DB high FN_ABSENT_5x ;#53 - DB high FN_ABSENT_5x ;#54 - DB high FN_ABSENT_5x ;#55 - DB high FN_ABSENT_5x ;#56 - DB high FN_ABSENT_5x ;#57 - DB high FN_ABSENT_5x ;#58 - DB high FN_ABSENT_5x ;#59 + DB high FN_ABSENT_5x ;#51 + DB high FN_ABSENT_5x ;#52 + DB high FN_ABSENT_5x ;#53 + DB high FN_ABSENT_5x ;#54 + DB high FN_ABSENT_5x ;#55 + DB high FN_ABSENT_5x ;#56 + DB high FN_ABSENT_5x ;#57 + DB high FN_ABSENT_5x ;#58 + DB high FN_ABSENT_5x ;#59 - DB high DRV_VERSION ;#5A - Дубль. На эту функцию прыгает из основного обработчика - DB high FN_RESERVED_5x ;#5B - Дубль. На эту функцию прыгает из основного обработчика - DB high FN_RESERVED_5x ;#5C - Дубль. На эту функцию прыгает из основного обработчика - DB high FN_RESERVED_5x ;#5D - Дубль. На эту функцию прыгает из основного обработчика - DB high FN_RESERVED_5x ;#5E - Дубль. На эту функцию прыгает из основного обработчика - DB high DRV_LIST ;#5F - Дубль. На эту функцию прыгает из основного обработчика + DB high DRV_VERSION ;#5A - Дубль. На эту функцию прыгает из основного обработчика + DB high FN_RESERVED_5x ;#5B - Дубль. На эту функцию прыгает из основного обработчика + DB high FN_RESERVED_5x ;#5C - Дубль. На эту функцию прыгает из основного обработчика + DB high FN_RESERVED_5x ;#5D - Дубль. На эту функцию прыгает из основного обработчика + DB high FN_RESERVED_5x ;#5E - Дубль. На эту функцию прыгает из основного обработчика + DB high DRV_LIST ;#5F - Дубль. На эту функцию прыгает из основного обработчика EDUP ELSE DUP numberOFdrives - DB low FN_RESERVED_5x ;#50 - Дубль. На эту функцию прыгает из основного обработчика + DB low FN_RESERVED_5x ;#50 - Дубль. На эту функцию прыгает из основного обработчика - DB low FN_ABSENT_5x ;#51 - DB low FN_ABSENT_5x ;#52 - DB low FN_ABSENT_5x ;#53 - DB low FN_ABSENT_5x ;#54 - DB low FN_ABSENT_5x ;#55 - DB low FN_ABSENT_5x ;#56 - DB low FN_ABSENT_5x ;#57 - DB low FN_ABSENT_5x ;#58 - DB low FN_ABSENT_5x ;#59 + DB low FN_ABSENT_5x ;#51 + DB low FN_ABSENT_5x ;#52 + DB low FN_ABSENT_5x ;#53 + DB low FN_ABSENT_5x ;#54 + DB low FN_ABSENT_5x ;#55 + DB low FN_ABSENT_5x ;#56 + DB low FN_ABSENT_5x ;#57 + DB low FN_ABSENT_5x ;#58 + DB low FN_ABSENT_5x ;#59 - DB low DRV_VERSION ;#5A - Дубль. На эту функцию прыгает из основного обработчика - DB low FN_RESERVED_5x ;#5B - Дубль. На эту функцию прыгает из основного обработчика - DB low FN_RESERVED_5x ;#5C - Дубль. На эту функцию прыгает из основного обработчика - DB low FN_RESERVED_5x ;#5D - Дубль. На эту функцию прыгает из основного обработчика - DB low FN_RESERVED_5x ;#5E - Дубль. На эту функцию прыгает из основного обработчика - DB low DRV_LIST ;#5F - Дубль. На эту функцию прыгает из основного обработчика + DB low DRV_VERSION ;#5A - Дубль. На эту функцию прыгает из основного обработчика + DB low FN_RESERVED_5x ;#5B - Дубль. На эту функцию прыгает из основного обработчика + DB low FN_RESERVED_5x ;#5C - Дубль. На эту функцию прыгает из основного обработчика + DB low FN_RESERVED_5x ;#5D - Дубль. На эту функцию прыгает из основного обработчика + DB low FN_RESERVED_5x ;#5E - Дубль. На эту функцию прыгает из основного обработчика + DB low DRV_LIST ;#5F - Дубль. На эту функцию прыгает из основного обработчика EDUP ENDIF ENDM diff --git a/src/bios/exp/EXTENDED/HDD_DRIVER_6.asm b/src/bios/exp/EXTENDED/HDD_DRIVER_6.asm index ea9b818..80bf3ae 100644 --- a/src/bios/exp/EXTENDED/HDD_DRIVER_6.asm +++ b/src/bios/exp/EXTENDED/HDD_DRIVER_6.asm @@ -428,7 +428,7 @@ HERRWR0 LD B,A LD A,B LD B,C SCF ;R03 - EX AF,AF' ;R03 + EX AF,AF' ;R03 ;!FIXIT намудрил он чёт в этом R03 RST8WRR EXX POP BC OUT (C),B diff --git a/src/bios/exp/FUNC_RAM_ROM_DRV.ASM b/src/bios/exp/FUNC_RAM_ROM_DRV.ASM index 417eb98..5b22aab 100644 --- a/src/bios/exp/FUNC_RAM_ROM_DRV.ASM +++ b/src/bios/exp/FUNC_RAM_ROM_DRV.ASM @@ -192,11 +192,12 @@ EMM.GetMemRMD: RET NC .error2: LD L,2 ; RAM-Disk занят ;!TODO перечислить все варианты ошибок и их номера как для ДСС + LD A,L RET .error1: - POP AF ; нет памяти - LD L,1 - SCF + POP HL ; чистим стек + LD L,A + ;SCF RET ;----------------------------------------------------------------------; ; @@ -216,7 +217,7 @@ EMM.FreeMemRMD: LD B,A LD A,SYS_PAGE OUT (SLOT3),A - LD H,high SYS_PAGE.RAMD_FAT; - #4000 - #4000 + LD H,high SYS_PAGE.RAMD_KEYS; - #4000 - #4000 LD (HL),0 LD A,B OUT (SLOT3),A @@ -977,6 +978,7 @@ BLK_BUSY: OUT (SLOT3),A SCF POP HL + LD A,L RET ;----------------------------------------------------------------------; ; diff --git a/src/bios/rom/ZX/ZX_MENU.ASM b/src/bios/rom/ZX/ZX_MENU.ASM index 518f7ac..a7e543d 100644 --- a/src/bios/rom/ZX/ZX_MENU.ASM +++ b/src/bios/rom/ZX/ZX_MENU.ASM @@ -423,14 +423,12 @@ CLEAR_RAM: DI LD C,BIOS.FullInit RST_to_BIOS - ;CALL ToBIOS_3D13 - ; при очистке памяти из меню спектрума возврат в DSS по CAD - ; будет опасным (RAM Blocks освободились), - ; поэтому отключаем перехват ресета. - ;!TODO придумать как отключать перехват только на возврат в DSS - LD A,ACEX.RET_PORT - LD BC,BIOS.SET_PORTS - CALL ToBIOS_3D13 + ; при очистке памяти из меню спектрума возврат в DSS по CAD + ; будет опасным (RAM Blocks освободились), + ; поэтому отключаем перехват ресета. + LD A,ACEX.RET_PORT + LD BC,BIOS.SET_PORTS + CALL ToBIOS_3D13 EI RET diff --git a/src/bios/shared/RECOVERY.IMG b/src/bios/shared/RECOVERY.IMG index 168e32a3330ac8cb8525fd8f19a84166ab324f0b..90cfc87d3caecdf6453ed876927521e6556b2879 100755 GIT binary patch delta 6731 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 B-K+or