ZXNet эхоконференция «zxnet.pc»
тема: чтение zx-дисков в писюке
от: Kirill Frolov
кому: All
дата: 24 Mar 2002
Hемедленно нажми на RESET, All!
Hе читались в пц никакие спектрумовские диски отформатированные командой
FORMAT в тр-дос.
Разобрал дисковод и передвинул датчик индексного отверстия ближе к морде
дисковода -- теперь
успешно читаются все диски которые читаются и на спектруме.
Получилось пофиксить таким образом 2 дисковода: TEAC-fd55a и
электроника-MC5311. Датчик (фотодиод) находится сверху, у TEAC на той плате где
и светодиод индикации обращения (плата
крепится винтами и может перемещаться вдоль оси перемещения головок), на 5311
это отдельный
элемент крепящийся винтом (тоже допускается перемещение). Перемещать фотодиод
нужно до
того как диски не начнут читаться + ещё немного, а не до упора, когда
индексный импульс
пропадает вообще.
Остаётся вопрос: можно-ли настроенные таким образом дисководы устанавливать
в спектрум?
Стал ли индексный импульс короче, или же он сместился по времени? В первом
случае всё ок,
а во втором случае диски записанные на таком дисковода установленном в
спектрум прочитать на пц
будет непростой задачей. Было бы неплохо, если бы кто-нибудь этот вопрос
разрешил путём
вышеописанной настройки и последующей проверкой форматом на спеке и чтением на
пц. Мне этого
не сделать -- спек не работает (доапгрейдился... кулибинство маздай... Hемо
был прав...)
Для 3.5 дисководов настраивать нечего (а может и есть, просто я не знаю?)
Проверять чтение дисков в linux можно таким скриптом (при наличии fdutils):
=== Cut ===
#!/bin/bash
# 80 too slow
tracks=16
drive=0
sides=2
sectors=16
tries=2
fdrawcmd recalibrate 0 2> /dev/null
for ((cyl=0; cyl
for ((head=0; head
echo ----------------- track: $cyl head: $head -------------------
echo -e "sect: size: cyl: head: st0: st1: st2:"
((dsel=$head<<2))
fdrawcmd seek $dsel $cyl 2> /dev/null
a=($(fdrawcmd rate=2 repeat=$(($sectors*$tries)) readid $dsel 2>&1))
p=(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
total=0
for ((n=0; n<${#a[*]}-1; n++)); do
case ${a[n]} in
0:) st0=${a[((n=$n+1))]};;
1:) st1=${a[((n=$n+1))]};;
2:) st2=${a[((n=$n+1))]};;
3:) c=${a[((n=$n+1))]};;
4:) h=${a[((n=$n+1))]};;
5:) s=${a[((n=$n+1))]} ;;
6:) sz=${a[((n=$n+1))]}
case $sz in
0) sz=128 ;;
1) sz=256 ;;
2) sz=512 ;;
3) sz=1024 ;;
esac
if [ ${p[0x$s]} == 0 ]; then
echo -e "$s $sz $c $h $st0 $st1 $st2"
p[0x$s]=1
((total++ ))
fi ;;
esac
done
echo total: $total sectors on track $cyl side $head
done
done
fdrawcmd recalibrate 0 2> /dev/null
=== Cut ===
|