From 883bbf0aeb543ab14c7aa6cde4332c39102f5ecd Mon Sep 17 00:00:00 2001 From: Tolik <85737314+Tolik-Trek@users.noreply.github.com> Date: Fri, 27 Dec 2024 00:49:35 +1000 Subject: [PATCH] =?UTF-8?q?ATAPI=20=D1=83=D1=81=D1=82=D1=80=D0=BE=D0=B9?= =?UTF-8?q?=D1=81=D1=82=D0=B2=D0=BE=20=D0=B2=D1=81=D0=B5=D0=B3=D0=B4=D0=B0?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B0=D0=B5=D1=82=20=D0=B1?= =?UTF-8?q?=D1=83=D0=BA=D0=B2=D1=83,=20=D0=B4=D0=B0=D0=B6=D0=B5=20=D0=B1?= =?UTF-8?q?=D0=B5=D0=B7=20=D0=BD=D0=BE=D1=81=D0=B8=D1=82=D0=B5=D0=BB=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DSS/drivers/media/atapi-drv.asm | 50 ++++++++++++++++++++++++++------- Shared_Includes | 2 +- 2 files changed, 41 insertions(+), 11 deletions(-) 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