From 4fb389c80b45f856a40cd4fac4dc5eed1c718b8a Mon Sep 17 00:00:00 2001 From: Tolik <85737314+Tolik-Trek@users.noreply.github.com> Date: Thu, 18 Jul 2024 05:40:16 +1000 Subject: [PATCH] in progress: current dir for TR-DOS HDD --- Shared_Includes | 2 +- src/ZX_ROMS/new/SP_TRDOS.bin | Bin 16384 -> 16384 bytes src/bios/exp/BIOS_FUNC.asm | 8 ++++---- src/bios/exp/EXP.asm | 14 ++++++++++++++ src/bios/exp/FUNC_4x.ASM | 6 +++--- src/bios/exp/FUNC_FOR_TRDOS.ASM | 9 +++++---- src/bios/exp/FUNC_RAM_ROM_DRV.ASM | 4 +++- 7 files changed, 30 insertions(+), 13 deletions(-) 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 cc1a621371ccc3fbaceb3677e802996c8ee5b4cf..57ff6bdfd8aa3676d561ff540f0531436aaf93fd 100644 GIT binary patch delta 1291 zcmZuxeM}o=81LIFrL@hAZe|`OslodHH|*9 zPR*jzxGsBSTSA=lO)?TXpCcJM1L@t(E;n60^#!R_B(YVLh=Vol^95mhf*;Zr7(@ zNi1zdNZ}CO)R4MXcVFefWs4p?;H%Mn;^Q;E!op~A#@vKWdd7D)O*P@Xis%$jiW-R? zZ5m6qq#I-kVKx9^c{b4!*7$-kqWl^-g}u0iG4`ExNg+uN%o zJN7D;#8N7b7i#`o-c2(I#Qt)O-6=ZM-@~X;lqTh|6~vdShe~Hmc#Pt8fn8B&;q}0y#rXENtWJiI zBb>%g52Xd_AS~ltPCWEMPCLRaDk(FIuW^8ra64BCM&V(u-1T0jJ7%^5BaYKV{fIvs z8ii-L9$N)JW1=QABdLHTJZs!T!6rW9Y!tO-5iJIj9e>NXusBY-4}Q#V&MFsDnit0T zoz@|qH!x{ApbkM+V2WfxT9<1R-Ia!CseVb96S?{)q!zQXZXW)}6;$i|+rSH^{65uTPQOn!ike^I}QAl&38eC7%q@ zcNXvtc=syF7Mpf-!clntiJA@m3cM!{?MBr|E!&*j>brBJ8yE~v`74!-aKXD@@%C+~ zdio^0);W?hX(*uYdJiaDqshh>l%Bq1i(8XCT26@m*UM*C?A~x3qi_$eD10Nh4ga66 z1f!rAx}_4}g}g+A=2)ln6@awG1wm~qRYO<02s689j3HJX@-Nq;mcO=_Zzk(T>sM7!N1DbPU(If_)IM+Hr;sH7saCW~`O`^(AhJM%vC zJny{o&SVA#z`y{w_8M8)&+hX`F19|<+}7FE-qqT})&@=mn!20Y_OiI04s@S-y{nTI z_X;9=yoar7dNVc`=xpv{kDPAm#H6B{z}tcDIxj&4zaqcUg96xU90DRtO>lyXurlF$ z@Bq@L5{y)uN{mb?+ANtLH9?ulD=3h;S+n{J$^9I&=}8*PKi15ATtm-m?5R{&tMK~UJj%4 zSaHyLBxzj8dMuVNs2cUP8S_bL+7z z(TF&Ig?7yO5uoq@ZP4mI`+O57@&%vobCImA@_j90r2Zq5 zuGUv&)Yp|AJvc?{E33u>11|owv~Q*Kc9i*V(R5sI zE?sj9nVKNkW`)$$>Wr9c#%{u_aGg1XB~#o3vznW=a}wcLkTJ;ZzXwl}{BYv$22c_F z!`d4UZorQ0w*Vbn%s!(76Tt@VCq`FDLs4LXJ$O`T)Vr5QagY^qI}s%^hORp`y%et{ zOBVH4FRGB_N&o0Fa%HP0vuE|VUea%Fepy|F5oac-fSNNc|B{I7ttIn@h_a^M%f{Ab z+osN65<|Tr_6oXu;m1*iR^{FH)fi%S7Un|FD7RapWqi zjh0X}f2fGBTsiXO8PSnSACV&VmRn__=sTZx0q=1@a#!X%NxKDM_j2BLbkyi>tA ztnp;vccR^M5Wf?{p6Z;lo`hE8%+fzmWz2rZpZBA`Pb;{kHVEsxa6=MgWfr^|ER(MS k2#P8h2b*Ul4SaJh>ku4;u(9YautRt8XW(HF6&LFM1-cINeE 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 ;