diff --git a/DSS/drivers/media/atapi-drv.asm b/DSS/drivers/media/atapi-drv.asm index a43af79..3d03c86 100644 --- a/DSS/drivers/media/atapi-drv.asm +++ b/DSS/drivers/media/atapi-drv.asm @@ -247,7 +247,7 @@ INIT_H: PUSH IY LD A,C OUT (SLOT3),A JR Z,.NO_HARDS - LD C,#80 ;!HARDCODE - ID ATA для процедуры BIOS.DRV_DETECT + LD C,DRIVE_CODES.SPRINTER.ATA CALL .NX_DVCI ; @@ -255,7 +255,7 @@ INIT_H: PUSH IY JR Z,.skip_atapi ; LD B,A - LD C,#C0 ;!HARDCODE - ID ATAPI для процедуры BIOS.DRV_DETECT + LD C,DRIVE_CODES.SPRINTER.ATAPI CALL .NX_DVCI ; .skip_atapi: POP IY @@ -588,11 +588,38 @@ DEFINE_PARTITIONS: ; CP PartitionSysTypes.Win_Ext_LBA JR Z,.SubLevel - JR .NextPartition ; раздел не поддерживается - -.ATAPI_TST: ;!FIXIT CDFS + JP .NextPartition ; раздел не поддерживается + ; + +.ATAPI_TST: ;JR .check_atapi ;!FIXIT CDFS + ;SCF + ;RET +.check_atapi: LD A,(DRV_NUM) + AND #F0 + CP DRIVE_CODES.SPRINTER.ATAPI SCF - RET + RET NZ + ; + ; No Media + XOR A + ;BPB SECTOR + LD IX,(OFFSECT) + LD (IX + LOGDRV.SECTOR_OFFSET + 0),A + LD (IX + LOGDRV.SECTOR_OFFSET + 1),A + LD (IX + LOGDRV.SECTOR_OFFSET + 2),A + LD (IX + LOGDRV.SECTOR_OFFSET + 3),A + ;SIZE DISK + LD (IX + LOGDRV.SIZE_IN_SECTORS + 0),A + LD (IX + LOGDRV.SIZE_IN_SECTORS + 1),A + LD (IX + LOGDRV.SIZE_IN_SECTORS + 2),A + LD (IX + LOGDRV.SIZE_IN_SECTORS + 3),A + ; для правильного выхода из парсера разделов + LD B,1 + PUSH BC + ;загрузка с активного раздела, а не с первого + DEC A + JR .not_supported + ; .BEGIN: ;CP IDE.Device.HDD ;RET NZ @@ -603,7 +630,10 @@ DEFINE_PARTITIONS: CALL .Start POP AF OUT (SLOT3),A - RET + RET + ; + + ; .Start: LD IX,0 LD DE,0 LD (EXTDOSL),DE ;R01 @@ -612,9 +642,9 @@ DEFINE_PARTITIONS: .LOOP: LD (CURRENT_SECTOR_L),DE LD (CURRENT_SECTOR_H),IX CALL .LOAD_SECTOR - RET C + JR C,.check_atapi ; - LD HL,(PARTITION_BUFFER.MBR_SIGNATURE) +.check_sign: LD HL,(PARTITION_BUFFER.MBR_SIGNATURE) LD DE,#AA55 AND A SBC HL,DE @@ -638,7 +668,7 @@ DEFINE_PARTITIONS: CP PartitionSysTypes.Extended JR Z,.SubLevel CP PartitionSysTypes.Win_Ext_LBA - JR NZ,.NotExtended + JP NZ,.NotExtended ; .SubLevel: PUSH IY LD DE,(CURRENT_SECTOR_L) diff --git a/Shared_Includes b/Shared_Includes index ab51192..6f28f9f 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit ab51192affb0fbcb8cc9df8e463044e33613c35a +Subproject commit 6f28f9f83e4737733b76053891bd9be121aed186