A
aleksa
I want to simulate a PATA hard disk, in PIO mode 0.
Basically, I want to respond to two commands:
Identify Drive (0ECh), and Read Sector (20h, 21h, 0C4h).
I use two motherboards to test my hardware,
one from 1997 and one from 2005.
This is how the old motherboard behaves:
BIOS recognizes the 'disk' as PIO mode 0.
BIOS loads the IdentifyDrive data in mode 0.
BIOS loads the ReadSector data in mode 0.
This is how the new motherboard behaves:
BIOS recognizes the 'disk' as PIO mode 0.
BIOS loads the IdentifyDrive data in mode 0.
*BUT*, BIOS loads the ReadSector data in mode 1.
Currently, my hardware cannot support
modes other than PIO mode 0.
Is the BIOS on my new motherboard buggy (who has a disk so old,
right?)
or is my IdentifyDrive data wrong?
This is what I return on Identify Drive command:
PATA_IDsector word 00C5Ah ;0
word 685 ;1
word 0 ;2
word 16 ;3
word 24662 ;4
word 649 ;5
word 38 ;6
word 00030h ;7
word 0000Ah ;8
word 00000h ;9
word " " ;10
word " " ;11
word " " ;12
word " " ;13
word " " ;14
word " " ;15
word " " ;16
word " " ;17
word " " ;18
word " " ;19
word 3 ;20
word 64 ;21
word 4 ;22
word " " ;23
word " " ;24
word " " ;25
word " " ;26
word "PA" ;27
word "TA" ;28
word " T" ;29
word "ES" ;30
word "T " ;31
word " " ;32
word " " ;33
word " " ;34
word " " ;35
word " " ;36
word " " ;37
word " " ;38
word " " ;39
word " " ;40
word " " ;41
word " " ;42
word " " ;43
word " " ;44
word " " ;45
word " " ;46
word 08001h ;47
word 0 ;48
word 00401h ;49
word 0 ;50
word 0 ;51
word 0 ;52
word 2 ;53
word 685 ;54
word 16 ;55
word 38 ;56
word 6 ;57
word 23264 ;58
word 00101h ;59
word 00000h ;60
word 00000h ;61
word 00000h ;62
word 0 ;63
word 0 ;64
word 0 ;65
word 0 ;66
word 600 ;67
word 600 ;68
word 00000h ;69
word 00000h ;70
Words 71-255 are zeros.
Anyone knows what am I doing wrong here?
BTW, the original data for the Identintify Drive command were
taken from old Conner ~230MB and then changed to support only
PIO mode 0, no DMA, etc..
Basically, I want to respond to two commands:
Identify Drive (0ECh), and Read Sector (20h, 21h, 0C4h).
I use two motherboards to test my hardware,
one from 1997 and one from 2005.
This is how the old motherboard behaves:
BIOS recognizes the 'disk' as PIO mode 0.
BIOS loads the IdentifyDrive data in mode 0.
BIOS loads the ReadSector data in mode 0.
This is how the new motherboard behaves:
BIOS recognizes the 'disk' as PIO mode 0.
BIOS loads the IdentifyDrive data in mode 0.
*BUT*, BIOS loads the ReadSector data in mode 1.
Currently, my hardware cannot support
modes other than PIO mode 0.
Is the BIOS on my new motherboard buggy (who has a disk so old,
right?)
or is my IdentifyDrive data wrong?
This is what I return on Identify Drive command:
PATA_IDsector word 00C5Ah ;0
word 685 ;1
word 0 ;2
word 16 ;3
word 24662 ;4
word 649 ;5
word 38 ;6
word 00030h ;7
word 0000Ah ;8
word 00000h ;9
word " " ;10
word " " ;11
word " " ;12
word " " ;13
word " " ;14
word " " ;15
word " " ;16
word " " ;17
word " " ;18
word " " ;19
word 3 ;20
word 64 ;21
word 4 ;22
word " " ;23
word " " ;24
word " " ;25
word " " ;26
word "PA" ;27
word "TA" ;28
word " T" ;29
word "ES" ;30
word "T " ;31
word " " ;32
word " " ;33
word " " ;34
word " " ;35
word " " ;36
word " " ;37
word " " ;38
word " " ;39
word " " ;40
word " " ;41
word " " ;42
word " " ;43
word " " ;44
word " " ;45
word " " ;46
word 08001h ;47
word 0 ;48
word 00401h ;49
word 0 ;50
word 0 ;51
word 0 ;52
word 2 ;53
word 685 ;54
word 16 ;55
word 38 ;56
word 6 ;57
word 23264 ;58
word 00101h ;59
word 00000h ;60
word 00000h ;61
word 00000h ;62
word 0 ;63
word 0 ;64
word 0 ;65
word 0 ;66
word 600 ;67
word 600 ;68
word 00000h ;69
word 00000h ;70
Words 71-255 are zeros.
Anyone knows what am I doing wrong here?
BTW, the original data for the Identintify Drive command were
taken from old Conner ~230MB and then changed to support only
PIO mode 0, no DMA, etc..