From 66d3e3bb6b481125507478e63eef1765cde741f2 Mon Sep 17 00:00:00 2001 From: Anatoliy Belyanskiy Date: Mon, 29 Jan 2024 00:19:10 +1000 Subject: [PATCH] SetHDD --> HDD --- SP_TRDOS.ASM | 2 + TRDOS/TR_MSD_2.ASZ | 2 +- TRDOS/TR_MSD_3.ASZ | 11 ++++- TRDOS/TR_MSD_4.ASZ | 101 +++++++++++++++++++++++++++++++++++++++++++++ TRDOS/TR_RMD_S.ASZ | 80 +---------------------------------- 5 files changed, 114 insertions(+), 82 deletions(-) create mode 100644 TRDOS/TR_MSD_4.ASZ diff --git a/SP_TRDOS.ASM b/SP_TRDOS.ASM index 2989ddf..b1a6fa4 100644 --- a/SP_TRDOS.ASM +++ b/SP_TRDOS.ASM @@ -1155,6 +1155,7 @@ WG93_EXE_: JP WG93_EXE ;************************************** DISPLAY "2k" + ;INCLUDE 'trdos/tr_msd_4.asz' BLOCK #0840-$,255 INCLUDE 'trdos/tr_msd_3.asz' @@ -1215,6 +1216,7 @@ ZG_RUS: ; ;************************************** ;************************************** + INCLUDE 'trdos/tr_msd_4.asz' BLOCK #1000 - $,255 ;************************************** diff --git a/TRDOS/TR_MSD_2.ASZ b/TRDOS/TR_MSD_2.ASZ index f68ecc2..95974eb 100644 --- a/TRDOS/TR_MSD_2.ASZ +++ b/TRDOS/TR_MSD_2.ASZ @@ -249,7 +249,7 @@ LOOP_FIND: LD A,(DE) CP 13 JR Z,CMD_EXE1 - CP 20H + CP ' ' JR Z,CMD_EXE JR NEXT_WORD2 CMD_EXE: diff --git a/TRDOS/TR_MSD_3.ASZ b/TRDOS/TR_MSD_3.ASZ index 6f8675a..be188e1 100644 --- a/TRDOS/TR_MSD_3.ASZ +++ b/TRDOS/TR_MSD_3.ASZ @@ -275,7 +275,7 @@ SKEEP_XX1: ;***************************************** MADE_next_blk: PUSH BC - LD C,#95 ;!HARDCODE BIOS.GetMemPageNext (#C7) + LD C,BIOS.GetMemPageNext CALL EXP_FNS POP BC INC L ; SET ZF, if END BLK !!! @@ -441,9 +441,15 @@ FAT_ALL: POP AF SCF RET +;----------------------------------------------------------------------- + ;INCLUDE 'trdos/tr_msd_4.asz' + +;----------------------------------------------------------------------- BLOCK #09FF-$, #FF - BLOCK #0A01-$, #FF + ;родионовский вектор прерывания + DW #FFFF +;----------------------------------------------------------------------- NO_END_CLAST: ; PUSH AF @@ -605,6 +611,7 @@ HDD_ERROR: HDD_PROG_E: LD HL,HD_TX2 JP AUTO_03E4 + ; ;*************************************************************************** diff --git a/TRDOS/TR_MSD_4.ASZ b/TRDOS/TR_MSD_4.ASZ new file mode 100644 index 0000000..9900652 --- /dev/null +++ b/TRDOS/TR_MSD_4.ASZ @@ -0,0 +1,101 @@ + +HDD_SET:;!TEST +.loop: LD A,(DE) + INC DE + CP ' ' + JR Z,.loop + CP #0D + JR Z,.init + ; + DEC DE + DEC DE + JP CHOOSE_HDD + ; + +.init: ;!TEST 06/01/2024 убираем лишние телодвижения + ;LD C,BIOS.HDD_INIT and #BF + ;CALL HD_CMD + LD C,BIOS.HDD_INIT + CALL EXP_FNS + ; + JP C,HDD_PROG_E + + LD A,(ZX_VARS.OPER_DISK) + LD B,A + XOR A + LD C,BIOS.HDD_TO_DRV + ;!TEST 06/01/2024 сохраняем состояние прерываний зачем-то + JP EXP_FNS + ;CALL EXP_FNS + ;EI + ;RET + ; + +;[ ] 07/01/2024 +;выход: A: bit1 - Primary/Secondary, bit0 - master/slave, bit2..3: использующийся раздел в MBR +CHOOSE_HDD: + PUSH DE + LD A,(ZX_VARS.OPER_DISK) + LD C,BIOS.GET_DRV_ST + CALL EXP_FNS + POP DE + JR C,.error + AND #40 ;!HARDCODE HDD + CALL Z,.setUp_HDD + ; +.loop: LD A,(DE) + INC DE + CP ' ' + JR Z,.loop + LD A,(DE) + CP #0D + JR Z,.error +.cont: ; номер раздела + ;INC DE + LD A,(DE) + CP "4" + JR NC,.error + CP "0" + JR C,.error + SUB "0" + RLA + RLA + LD C,A + ; ; master/slave + ; DEC DE + ; LD A,(DE) + ; CP "2" + ; JR NC,.error + ; CP "0" + ; JR C,.error + ; SUB "0" + ; RLA + ; OR C + ; LD C,A + ; Primary/Secondary, master/slave + DEC DE + LD A,(DE) + CP "4" + JR NC,.error + CP "0" + JR C,.error + SUB "0" + OR C + ; + LD C,BIOS.HDD_PART + CALL EXP_FNS + RET NC + ; +.error: LD HL,MSG_3 + JP ERR_EXIT + ; +.setUp_HDD: + LD A,(ZX_VARS.OPER_DISK) + LD B,A + XOR A + LD C,BIOS.HDD_TO_DRV + PUSH DE + CALL EXP_FNS + POP DE + RET +; \ No newline at end of file diff --git a/TRDOS/TR_RMD_S.ASZ b/TRDOS/TR_RMD_S.ASZ index 469e611..c78a596 100644 --- a/TRDOS/TR_RMD_S.ASZ +++ b/TRDOS/TR_RMD_S.ASZ @@ -439,25 +439,6 @@ FDD_SET: ;RET ; -HDD_SET:;!TEST 06/01/2024 убираем лишние телодвижения - ;LD C,BIOS.HDD_INIT and #BF - ;CALL HD_CMD - LD C,BIOS.HDD_INIT - CALL EXP_FNS - ; - JP C,HDD_PROG_E - - LD A,(ZX_VARS.OPER_DISK) - LD B,A - XOR A - LD C,BIOS.HDD_TO_DRV - ;!TEST 06/01/2024 сохраняем состояние прерываний зачем-то - JP EXP_FNS - ;CALL EXP_FNS - ;EI - ;RET - ; - RAMD_SET: CALL RAMD_SYM RET C @@ -500,63 +481,4 @@ RAMD_SYM: RAMD_SYM_OK: POP AF RET - - -;[ ] 07/01/2024 -CHOOSE_HDD: - PUSH DE - LD A,(ZX_VARS.OPER_DISK) - LD C,BIOS.GET_DRV_ST - CALL EXP_FNS - POP DE - JR C,.error - AND #40 ;!HARDCODE HDD - JR Z,.error - ; -.loop: LD A,(DE) - INC DE - CP ' ' - JR Z,.loop - LD A,(DE) - CP #0D - JR Z,.error - ; номер раздела - ;INC DE - LD A,(DE) - CP "4" - JR NC,.error - CP "0" - JR C,.error - SUB "0" - RLA - RLA - LD C,A - ; ; master/slave - ; DEC DE - ; LD A,(DE) - ; CP "2" - ; JR NC,.error - ; CP "0" - ; JR C,.error - ; SUB "0" - ; RLA - ; OR C - ; LD C,A - ; Primary/Secondary, master/slave - DEC DE - LD A,(DE) - CP "4" - JR NC,.error - CP "0" - JR C,.error - SUB "0" - OR C - ; - LD C,BIOS.HDD_PART - CALL EXP_FNS - RET NC - ; -.error: LD HL,MSG_3 - JP ERR_EXIT - -;bit0: Primary/Secondary, bit1 - master/slave, bit2..3: использующийся раздел в MBR \ No newline at end of file +;