From c19ce52143220e235b1331d61f474e82f0ef1f1a Mon Sep 17 00:00:00 2001 From: Tolik <85737314+Tolik-Trek@users.noreply.github.com> Date: Thu, 6 Mar 2025 03:31:14 +1000 Subject: [PATCH] =?UTF-8?q?=D0=BC=D0=B5=D0=BB=D0=BA=D0=B8=D0=B5=20=D1=84?= =?UTF-8?q?=D0=B8=D0=BA=D1=81=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DSS/DOS_Proc.asm | 10 ------- DSS/build.txt | 2 +- DSS/drivers/media/ata_atapi-drv.asm | 45 ++++++++++++++++------------- SHELL/Commands/DIR.ASM | 8 +++-- SHELL/Commands/PAUSE.ASM | 2 +- SHELL/Messages/main_txt.asm | 6 +++- SHELL/build.txt | 2 +- Shared_Includes | 2 +- 8 files changed, 40 insertions(+), 37 deletions(-) diff --git a/DSS/DOS_Proc.asm b/DSS/DOS_Proc.asm index 696efd3..191715f 100644 --- a/DSS/DOS_Proc.asm +++ b/DSS/DOS_Proc.asm @@ -233,16 +233,6 @@ OPENDSK: ;!TEST DRV.Open ; LD A,DSS_Error.sys.NOT_READY RET - -/* -0000 0010 02 -0001 1100 1c -0000 1101 0d - -0001 0011 -*/ - - ; ;[x] 29/02/2024 fix "open drive error"; 20/06/2024 fixed .error_bpb: PUSH AF ; сохраняем номер ошибки diff --git a/DSS/build.txt b/DSS/build.txt index 8fdd954..cabf43b 100644 --- a/DSS/build.txt +++ b/DSS/build.txt @@ -1 +1 @@ -22 \ No newline at end of file +24 \ No newline at end of file diff --git a/DSS/drivers/media/ata_atapi-drv.asm b/DSS/drivers/media/ata_atapi-drv.asm index 4c97955..8934286 100644 --- a/DSS/drivers/media/ata_atapi-drv.asm +++ b/DSS/drivers/media/ata_atapi-drv.asm @@ -323,11 +323,16 @@ Init: PUSH IY ; LD A,DSS_Error.drv.UNKNOWN_FORMAT ; RET ; -; переделать тут проверку на размер сектора? -;HL:IX - SECTOR -; DE - ADDRESS -; B - COUNTER -; A - HDD LOG NUMBER + + +; A - HDD LOG NUMBER +SelectDrive.NoSector: + LD HL,0 + LD IX,0 + ;HL:IX - SECTOR + ; DE - ADDRESS + ; B - COUNTER + ; A - HDD LOG NUMBER SelectDrive: PUSH DE PUSH HL ; @@ -354,8 +359,8 @@ SelectDrive: PUSH DE JR C,.error_pop2 ; POP DE - LD A,DSS_Error.drv.SECTOR_NOT_FOUND - RET C + ; LD A,DSS_Error.sys.SECTOR_NOT_FOUND + ; RET C ; LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER) RET @@ -496,10 +501,7 @@ GetParams: EX DE,HL PUSH HL PUSH DE PUSH BC - LD A,(IY + LOGDRV.PHISICAL_DRV_NUMBER) - LD (CURRENT_DRIVE.Number),A - LD (LOGDRV_OFFSET),IY - CALL DEFINE_PARTITIONS + CALL ReDEFINE_PARTITIONS POP BC POP DE POP HL @@ -613,7 +615,7 @@ Open: CALL MediaCheck ; POP IY ; RET MediaCheck: PUSH IY - CALL SelectDrive + CALL SelectDrive.NoSector JR NC,.next_step ; CP DSS_Error.sys.UNKNOWN_FORMAT @@ -646,14 +648,8 @@ MediaCheck: PUSH IY XOR A RET ; -.Reinit: LD A,DSS_MAX_DRIVES_AMOUNT - 1 ; ограничитель, чтоб не детектить больше 1 раздела - LD (Init.count),A - LD A,(IY + LOGDRV.PHISICAL_DRV_NUMBER) - LD (CURRENT_DRIVE.Number),A - LD (LOGDRV_OFFSET),IY - ;RES 1,(IY + LOGDRV.MediaParameters) - сбрасывается в DEFINE_PARTITIONS - PUSH IY - CALL DEFINE_PARTITIONS +.Reinit: PUSH IY + CALL ReDEFINE_PARTITIONS POP IY POP AF ; Восстанавливаем CF и код ошибки UNKNOWN_FORMAT, если CF=1 CALL C,SelectDrive.get_data @@ -683,6 +679,15 @@ CHECK_IDE_SECTOR_SIZE: ;RET RET ; +ReDEFINE_PARTITIONS: + LD A,DSS_MAX_DRIVES_AMOUNT - 1 ; ограничитель, чтоб не детектить больше 1 раздела + LD (Init.count),A + LD A,(IY + LOGDRV.PHISICAL_DRV_NUMBER) + LD (CURRENT_DRIVE.Number),A + LD (LOGDRV_OFFSET),IY + ;RES 1,(IY + LOGDRV.MediaParameters) - сбрасывается в DEFINE_PARTITIONS + JP DEFINE_PARTITIONS + ;HL:IX - SECTOR ; DE - ADDRESS diff --git a/SHELL/Commands/DIR.ASM b/SHELL/Commands/DIR.ASM index 1944926..1a03623 100644 --- a/SHELL/Commands/DIR.ASM +++ b/SHELL/Commands/DIR.ASM @@ -136,13 +136,17 @@ cmd_dir: push de .key_p+1: and #ff dec a jr nz,.skip_wait - ld de,MAIN_MSG.PAUSE + ld de,MAIN_MSG.DIRPAUSE call ECHO_MESSAGE ; вывести строку ld c,Dss.WaitKey rst ToDSS + PUSH DE + ld de,MAIN_MSG.CLSLINE + call ECHO_MESSAGE + POP DE dec d ld de,MAIN_MSG.DIR_ESCAPE - jp z,ECHO_MESSAGE ; закончить по ESC + jp z,ECHO_MESSAGE ; закончить по ESC ;jr nz,.skip_esc ;xor a ;ld (.key_p),a ; отменяем ESC diff --git a/SHELL/Commands/PAUSE.ASM b/SHELL/Commands/PAUSE.ASM index c852082..0c39baf 100644 --- a/SHELL/Commands/PAUSE.ASM +++ b/SHELL/Commands/PAUSE.ASM @@ -4,7 +4,7 @@ ; ;/////////////////////////////////////////////////// cmd_pause: - LD de,MAIN_MSG.PAUSE ; индекс "Press any key to continue ..." + LD de,MAIN_MSG.PAUSE ; индекс "Press any key to continue ..." CALL ECHO_MESSAGE ; вывод строки LD A,LF LD C,Dss.PutChar diff --git a/SHELL/Messages/main_txt.asm b/SHELL/Messages/main_txt.asm index 4237a7e..f274f7d 100644 --- a/SHELL/Messages/main_txt.asm +++ b/SHELL/Messages/main_txt.asm @@ -24,6 +24,8 @@ MAIN_MSG: .CRLF EQU .CRLF_ .INFO_1 EQU .INFO_1_ .INFO_2 EQU .INFO_2_ +.DIRPAUSE EQU .DIRPAUSE_ +.CLSLINE EQU .CLSLINE_ ; !txtCounter DEFL 0 ; ; не сдвигать____ @@ -40,7 +42,7 @@ MAIN_MSG: stN .DATE_ : DZ "Current date: %1, %2\r\n" ; [x] вывод дня недели 26/01/2023 stN .TIME_ : DZ "Current time: %1\r\n" stN .PAUSE_ : DZ "Press any key to continue . . .\r" - stN .DIR_ESC_ : DZ "Command 'DIR' aborted by user \r\n\n" + stN .DIR_ESC_ : DZ "Command 'DIR' cancelled by user\r\n\n" stN .INV_ : DZ "Invalid parametr\r\n" stN .ECHO_ : DZ "Echo is %1\r\n" stN .ON_ : DZ "on" @@ -57,6 +59,8 @@ MAIN_MSG: stN .CALC_ : DZ "Calculating free space...\r" stN .INFO_1_ : DZ "\r\nDrive File System Label Serial number Size in bytes\r\n" stN .INFO_2_ : DZ " %9 \r\t %8\r\t\t\t %7\r\t\t\t\t\t %4\r\t\t\t\t\t\t\t %5\r\n" + stN .DIRPAUSE_ : DZ "Press ESC to cancel or any other key to continue . . .\r" + stN .CLSLINE_ : DZ " \r" ; ;R11 db 0 DZ "Unknown command" diff --git a/SHELL/build.txt b/SHELL/build.txt index 2da4325..4754f24 100644 --- a/SHELL/build.txt +++ b/SHELL/build.txt @@ -1 +1 @@ -457 \ No newline at end of file +461 \ No newline at end of file diff --git a/Shared_Includes b/Shared_Includes index 2b1e30c..60b5ff6 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 2b1e30c6108f0a5c271f84558e1e5f804a6d623a +Subproject commit 60b5ff6a74b57614b1f54fbe5611585cd46582ab