diff --git a/DSS/DOS_Proc.asm b/DSS/DOS_Proc.asm index 1bc60db..8720dd6 100644 --- a/DSS/DOS_Proc.asm +++ b/DSS/DOS_Proc.asm @@ -192,6 +192,7 @@ OPENDSK: ;!TEST DRV.Open RST ToDSS.DRV POP BC JR Z,.exit + JR C,.error JR .skip_open ;!FIXIT когда DRV.MediaCheck и DRV.Open будут отличаться ; .open: LD A,B diff --git a/DSS/build.txt b/DSS/build.txt index d99e90e..8580e7b 100644 --- a/DSS/build.txt +++ b/DSS/build.txt @@ -1 +1 @@ -29 \ No newline at end of file +30 \ No newline at end of file diff --git a/DSS/drivers/media/Shared.asm b/DSS/drivers/media/Shared.asm index abda541..9a4a8ad 100644 --- a/DSS/drivers/media/Shared.asm +++ b/DSS/drivers/media/Shared.asm @@ -182,7 +182,6 @@ MAKEDVC: LD C,A RET -;!FIXIT попеределывать тут вызовы через точки входа типа RST или вызовы типа LD C,0 : CALL HDDRIVE на прямые ;------------------------------------------------- ; RST 18h. Вектор дисковых устройств ; вход: a=номер устройства (0-25) diff --git a/DSS/drivers/media/ata_atapi-drv.asm b/DSS/drivers/media/ata_atapi-drv.asm index 8934286..b6be0c5 100644 --- a/DSS/drivers/media/ata_atapi-drv.asm +++ b/DSS/drivers/media/ata_atapi-drv.asm @@ -620,6 +620,7 @@ MediaCheck: PUSH IY ; CP DSS_Error.sys.UNKNOWN_FORMAT JR NZ,.exit + ; A != 0 AND A ; сброс ZF SCF ; [ ] media changed @@ -669,9 +670,6 @@ MediaCheck: PUSH IY CHECK_IDE_SECTOR_SIZE: ;RET LD E,(IY+LOGDRV.SECTOR_SIZE) LD D,(IY+LOGDRV.SECTOR_SIZE+1) - ; LD HL,DSS_MAX_SECTOR_SIZE - ; AND A - ; SBC HL,DE PUSH HL LD HL,-DSS_MAX_SECTOR_SIZE - 1 ADD HL,DE diff --git a/DSS/drivers/media/fdd-drv.asm b/DSS/drivers/media/fdd-drv.asm index e1d65f6..5ba7d07 100644 --- a/DSS/drivers/media/fdd-drv.asm +++ b/DSS/drivers/media/fdd-drv.asm @@ -178,8 +178,21 @@ Init: LD A,2 ; ; ; ; ; -Open: LD C,BIOS.DRV_RESET +Open: PUSH AF + LD C,BIOS.DRV_RESET RST ToBIOS + POP BC + RET C + ; + LD A,B + LD C,BIOS.DRV_GET_PAR + RST ToBIOS + LD DE,-DSS_MAX_SECTOR_SIZE - 1 ; [ ] 15/04/25 не будет читать сектор больше DSS_MAX_SECTOR_SIZE + ; ZF = 0 + LD A,DSS_Error.sys.UNKNOWN_FORMAT + OR A + ; + ADD IX,DE ; если размер сектора больше, то облом RET ; ; ; @@ -190,7 +203,9 @@ Close: XOR A ;!FIXIT проверять ВГ93 когда это станет возможным -MediaCheck: IF NON_REMOVABLE_FDD +MediaCheck: CALL Open + RET C + IF NON_REMOVABLE_FDD XOR A ELSE LD A,#FF @@ -234,13 +249,13 @@ GetBPB: LD IX,0 ; RET ; ; ; -; +; !FIXIT может умереть на размере сектора больше 512 байтов Read: LD C,BIOS.DRV_READ RST ToBIOS RET ; ; ; -; +; !FIXIT может умереть на размере сектора больше 512 байтов Write: LD C,BIOS.DRV_WRITE RST ToBIOS RET diff --git a/Shared_Includes b/Shared_Includes index a9f5915..bd4546a 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit a9f5915a3275f5ffbafa0994bb97c5846aab826c +Subproject commit bd4546a854905998edab6144547b79aa673404f6