mirror of
https://github.com/ISpillMyDrink/OpenSuperClone.git
synced 2026-05-04 22:10:49 +00:00
393 lines
6.1 KiB
Plaintext
393 lines
6.1 KiB
Plaintext
|
|
|
|
seti $printhelp = $printhelp
|
|
seti $help = $help
|
|
if $help = 1
|
|
echo 'Western Digital ROYL read data table.'
|
|
echo 'This requires the text variable "file" to be set.'
|
|
|
|
if $printhelp = 1
|
|
exit 0
|
|
endif
|
|
echo 'Hit ENTER to continue...'
|
|
userinput $choicestring
|
|
previousscript
|
|
endif
|
|
|
|
include good_subroutines.osc
|
|
|
|
# set a blank string variable to compare with user input
|
|
# make sure not to set this anyplace else
|
|
sets $null = ""
|
|
|
|
# set this to itself for use with the menu system
|
|
# make sure not to set this anyplace else
|
|
# if it was not previously set it will = 0
|
|
seti $using_menu = $using_menu
|
|
|
|
# set the file name to be written
|
|
while 1 = 0
|
|
variablecheck $file
|
|
if $error_level < 16
|
|
seti $ask = 1
|
|
elseif $using_menu = 1
|
|
seti $ask = 1
|
|
endif
|
|
if $ask = 1
|
|
echo "Enter file name:"
|
|
userinput $choicestring
|
|
if $choicestring != $null
|
|
sets $file = $choicestring
|
|
break
|
|
else
|
|
echo "Choice cannot be blank!"
|
|
endif
|
|
else
|
|
break
|
|
endif
|
|
done
|
|
|
|
|
|
gosub enable_vsc
|
|
|
|
# vsc to prepare to get drive data table
|
|
echo "prepare to get data table"
|
|
buffersize 0x200
|
|
clearbuffer
|
|
setbuffer 0
|
|
0d 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
endbuffer
|
|
setwritepio
|
|
ata28cmd 0xd6 0x01 0xbe 0x4f 0xc2 0xa0 0xb0
|
|
# check if command failed
|
|
gosub status_check
|
|
|
|
# vsc to get to get drive data table
|
|
echo "getting data table"
|
|
buffersize 0x200
|
|
clearbuffer
|
|
setreadpio
|
|
ata28cmd 0xd5 0x01 0xbf 0x4f 0xc2 0xa0 0xb0
|
|
# check if command failed
|
|
gosub status_check
|
|
copybuffertoscratchpad 0 0 512
|
|
|
|
gosub disable_vsc
|
|
|
|
echo "data table read done"
|
|
|
|
printscratchpad 0 512
|
|
|
|
seti $offset = 0
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
seti $offset = 2
|
|
seti $bytes = 1
|
|
gosub process_offset
|
|
|
|
seti $offset = 10
|
|
seti $bytes = 1
|
|
gosub process_offset
|
|
|
|
seti $offset = 18
|
|
seti $bytes = 1
|
|
gosub process_offset
|
|
|
|
seti $offset = 26
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
seti $offset = 28
|
|
seti $bytes = 1
|
|
gosub process_offset
|
|
|
|
seti $offset = 29
|
|
seti $bytes = 1
|
|
gosub process_offset
|
|
|
|
seti $offset = 30
|
|
seti $bytes = 1
|
|
gosub process_offset
|
|
|
|
seti $offset = 31
|
|
seti $bytes = 1
|
|
gosub process_offset
|
|
|
|
seti $offset = 32
|
|
seti $bytes = 1
|
|
gosub process_offset
|
|
|
|
seti $offset = 33
|
|
seti $bytes = 1
|
|
gosub process_offset
|
|
|
|
seti $offset = 34
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
seti $offset = 36
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
seti $offset = 38
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
seti $offset = 40
|
|
seti $bytes = 4
|
|
gosub process_offset
|
|
|
|
seti $offset = 44
|
|
seti $bytes = 1
|
|
gosub process_offset
|
|
|
|
seti $offset = 45
|
|
seti $bytes = 1
|
|
gosub process_offset
|
|
|
|
seti $offset = 46
|
|
seti $bytes = 1
|
|
gosub process_offset
|
|
|
|
seti $offset = 47
|
|
seti $bytes = 1
|
|
gosub process_offset
|
|
|
|
seti $offset = 48
|
|
seti $bytes = 1
|
|
gosub process_offset
|
|
|
|
seti $offset = 49
|
|
seti $bytes = 1
|
|
gosub process_offset
|
|
|
|
seti $offset = 50
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
seti $offset = 52
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
seti $offset = 54
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
seti $offset = 56
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
seti $offset = 58
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
seti $offset = 60
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
seti $offset = 62
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
seti $offset = 64
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
seti $offset = 66
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
seti $offset = 68
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
seti $offset = 70
|
|
seti $bytes = 1
|
|
gosub process_offset
|
|
|
|
seti $offset = 71
|
|
seti $bytes = 1
|
|
gosub process_offset
|
|
|
|
seti $offset = 72
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
seti $offset = 74
|
|
seti $bytes = 1
|
|
gosub process_offset
|
|
|
|
seti $offset = 76
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
seti $offset = 78
|
|
seti $bytes = 1
|
|
gosub process_offset
|
|
|
|
seti $offset = 86
|
|
seti $bytes = 1
|
|
gosub process_offset
|
|
|
|
seti $offset = 94
|
|
seti $bytes = 4
|
|
gosub process_offset
|
|
|
|
seti $offset = 118
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
seti $offset = 120
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
seti $offset = 122
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
seti $offset = 124
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
seti $offset = 126
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
seti $offset = 128
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
seti $offset = 130
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
seti $offset = 132
|
|
seti $bytes = 4
|
|
gosub process_offset
|
|
|
|
seti $offset = 136
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
seti $offset = 138
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
seti $offset = 140
|
|
seti $bytes = 1
|
|
gosub process_offset
|
|
|
|
seti $offset = 142
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
seti $offset = 144
|
|
seti $bytes = 1
|
|
gosub process_offset
|
|
|
|
seti $offset = 148
|
|
seti $bytes = 4
|
|
gosub process_offset
|
|
|
|
seti $offset = 156
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
seti $offset = 158
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
seti $offset = 160
|
|
seti $bytes = 1
|
|
gosub process_offset
|
|
|
|
seti $offset = 164
|
|
seti $bytes = 1
|
|
gosub process_offset
|
|
|
|
seti $offset = 165
|
|
seti $bytes = 1
|
|
gosub process_offset
|
|
|
|
seti $offset = 166
|
|
seti $bytes = 1
|
|
gosub process_offset
|
|
|
|
seti $offset = 167
|
|
seti $bytes = 1
|
|
gosub process_offset
|
|
|
|
seti $offset = 168
|
|
seti $bytes = 1
|
|
gosub process_offset
|
|
|
|
seti $offset = 170
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
seti $offset = 172
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
seti $offset = 0
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
seti $offset = 0
|
|
seti $bytes = 2
|
|
gosub process_offset
|
|
|
|
|
|
|
|
previousscript
|
|
end
|
|
|
|
|
|
|
|
subroutine process_offset
|
|
if $bytes = 1
|
|
seti $value = scratchpad $offset b
|
|
elseif $bytes = 2
|
|
seti $value = scratchpad $offset w
|
|
elseif $bytes = 4
|
|
seti $value = scratchpad $offset dw
|
|
elseif $bytes = 8
|
|
seti $value = scratchpad $offset qw
|
|
else
|
|
seti $value = 0
|
|
echo "BYTE COUNT OUT OF RANGE"
|
|
endif
|
|
hex
|
|
sets $offset_string = "0x" $offset
|
|
sets $value_string = "0x" $value
|
|
sets $bytes_string = "0x" $bytes
|
|
decimal
|
|
echo "offset=" $offset " (" $offset_string ") value=" $value " (" $value_string ")(" $bytes " bytes)"
|
|
endsubroutine
|
|
|
|
subroutine enable_vsc
|
|
# enable vendor specific commands
|
|
echo "enable vsc"
|
|
buffersize 0
|
|
setreadpio
|
|
ata28cmd 0x45 0x0b 0x00 0x44 0x57 0xa0 0x80
|
|
# check if command failed
|
|
gosub status_check
|
|
endsubroutine
|
|
|
|
|
|
|
|
subroutine disable_vsc
|
|
# disable vendor specific commands
|
|
echo "disable vsc"
|
|
buffersize 0
|
|
setreadpio
|
|
ata28cmd 0x44 0x0b 0x00 0x44 0x57 0xa0 0x80
|
|
# check if command failed
|
|
gosub status_check
|
|
endsubroutine
|
|
|
|
|
|
|