diff --git a/BOOT/boot.asm b/BOOT/boot.asm index ce707cc..97f03a2 100644 --- a/BOOT/boot.asm +++ b/BOOT/boot.asm @@ -581,7 +581,7 @@ get_drive_letter: ld c,Dss.GSwitch ; выделить параметр ком. строки RST ToDSS ; - rra + ;rra rl b ; признак конца параметров ; ld de,buffer diff --git a/DSS/API/RmDir.asm b/DSS/API/RmDir.asm index d85e693..906f904 100644 --- a/DSS/API/RmDir.asm +++ b/DSS/API/RmDir.asm @@ -62,25 +62,13 @@ RMDIR: ;!TEST Current Dir ;[x] 15/10/23 PUSH BC PUSH HL PUSH IX - ; - ; IN A,(SLOT3) - ; PUSH AF - ; IN A,(SLOT0) - ; OUT (SLOT3),A - ; ; - ; LD DE,CORE_BUFFERS.SECTOR_BUFFER+#C000 - ; LD BC,1*256 + Dss.DRV.Read - ; LD A,(CORE_BUFFERS.FS_Buffer.DRIVE) - ; RST ToDSS.DRV - ; POP AF - ; OUT (SLOT3),A CALL READ_SECTOR ; !FIXIT нет проверки на ошибку ; - ;!HARDCODE 16 * 32 = 512; 32 - размер записи, 512 - размер считанного сектора + ;!HARDCODE sector size. 16 * 32 = 512; 32 - размер записи, 512 - размер считанного сектора LD B,16 LD HL,CORE_BUFFERS.SECTOR_BUFFER -.check_dir_loop: +.check_dir_loop:; LD A,(HL) OR A JP Z,.dir_empty @@ -106,10 +94,7 @@ RMDIR: ;!TEST Current Dir ;[x] 15/10/23 OR XL JR NZ,.no_inc_hl INC HL -.no_inc_hl: ; POP AF - ; DEC A - ; JR NZ,.read_dir_loop - POP BC +.no_inc_hl: POP BC DJNZ .read_dir_loop ; fat32 EXX diff --git a/DSS/build.txt b/DSS/build.txt index abc4eff..801f180 100644 --- a/DSS/build.txt +++ b/DSS/build.txt @@ -1 +1 @@ -46 \ No newline at end of file +47 \ 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 148864f..0ce4512 100644 --- a/DSS/drivers/media/ata_atapi-drv.asm +++ b/DSS/drivers/media/ata_atapi-drv.asm @@ -431,32 +431,48 @@ GetParams: EX DE,HL LD C,BIOS.DRV_GET_PAR RST ToBIOS POP IY - JR NC,.next + JR C,.error ; - CP BIOS.Error.BadNumber - SCF - JR Z,.error - LD A,BIOS.Error.NotReady - JR .error + ; CP BIOS.Error.BadNumber + ; SCF + ; JR Z,.error + ; LD A,BIOS.Error.NotReady + ; JR .error ; ; [ ] media change - убрать ;!FIXIT .next: EX AF,AF' JR NC,.NoMediaChange CP BIOS.Error.ATAPI.UnitAttention - SCF - JR NZ,.NoMediaChange - ; -.ReDEFINE: PUSH IX - PUSH IY + JR Z,.ReDEFINE + ;SCF + ;JR NZ,.NoMediaChange + ; PUSH HL PUSH DE + AND A + LD DE,#FFFF + LD L,(IY+LOGDRV.SIZE_IN_SECTORS+0) + LD H,(IY+LOGDRV.SIZE_IN_SECTORS+1) + SBC HL,DE + JR NZ,.ReDEFINE_SP + ; + LD L,(IY+LOGDRV.SIZE_IN_SECTORS+2) + LD H,(IY+LOGDRV.SIZE_IN_SECTORS+3) + SBC HL,DE + JR Z,.ReDEFINE_Skip + ; + ; +.ReDEFINE: PUSH HL + PUSH DE +.ReDEFINE_SP: PUSH IX + PUSH IY PUSH BC CALL ReDEFINE_PARTITIONS POP BC - POP DE - POP HL POP IY POP IX +.ReDEFINE_Skip: POP DE + POP HL ; .NoMediaChange: ; перетасовка регистров с результатом от BIOS EX DE,HL @@ -498,7 +514,7 @@ GetParams: EX DE,HL LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER) ;MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/... EX AF,AF' ; - ;AND A + AND A .error: POP IY POP IX RET diff --git a/Shared_Includes b/Shared_Includes index 89efc04..1b6a539 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 89efc04ac63ae8b6a3b79c4a0e521fc967636a64 +Subproject commit 1b6a539aea8d46b09a617a90a04a2e45dcb37b3f