про схемы навешивания винтов /2

ZXNet echo conference «real.speccy»

From Valerij Kozhevnikov (500:95/462. To All 6 June 1998


Hello All!

У меня лежит тут что-то, я почти уверен, что это кусок диско-
вой системы Спринтера. Причем именно тот кусок, который рабо-
тает с винтом.
Вот тут немного:

============= Import begin ===============

HD_DRV::
; описание портов контроллера
hd_dat equ 0fh ; порт данных
hd_err equ 2fh ; порт ошибок
hd_seccnt equ 4fh ; порт счетчика секторов
hd_sect equ 6fh ; номер сектора
hd_cyllo equ 8fh ; мл. байт номера цилиндра
hd_cylhi equ 0afh ; ст. байт номера цилиндра
hd_head equ 0cfh ; номер головки
hd_comm equ 0efh ; порт команды
; Поскольку HDD имеет 16 разрядную шину а процесор 8-разрядную при операциях
; записи/чтения cтарший байт защелкивается в спец. буфер (адрес 010F)

; таблица команд драйвера
DW HD_RES ; сброс HD
DW HD_SEEK ; позиционирование HD
DW HD_FRM ; форматирование HD
DW HD_REC ; рекалибровка HD
DW HD_RD ; чтение сектора
DW HD_NOP
DW HD_WR ; запись сектора

[хомяк погрыз]

; чтение сектора
HD_RD: call HD_tst ; проверка наличия HDD (если надо)
ld d,1 ; счетчик секторов
call hd_set_rw ; подготовка к чтению
ld a,20h
out (c),a ; команда чтение
call HD_wait ; ожидание готовности HDD
or a
ret nz
ld hl,(DCBUF) ; буфер для чтения
ld bc,hd_dat ; порт данных
inir ; чтение 1-х 256 байт
inir ; чтение 2-x 256 байт
; ^^^^^^^^^^^^^^^^^^^^
ld bc,hd_comm
in a,(c)
and 8
ret z
ld a,_OVERRUN
ret

=============== Import end ===============

Вот такие штуковины. Имхо, нигде в CP/M-e INIR/OTIR не приме-
няется (у i8080 команд таких нет) => это Спринтер. Или MSX.
Копирайтов в исходнике нету, так что могу только гадать.

Или вот кусок исходника дрйвера к схеме ZXNext:

============= Import begin ===============


LLC140 INF
DEC A
JR NZ,LLC140
LD A,#40
LL1 LD B,E
INI
INI
LD B,E
INI
INI
DEC A
JR NZ,LL1

LD B,#C6
LLC156 IN A,(C)
BIT 7,A
JR NZ,LLC156

BIT 3,A
JR Z,LLC19A
LD B,#EE
IN A,(C)
LD A,#80
JR NZ,LL1
SRL D
JR C,LL1

LLC16C LD B,E
INI
INI
DEC A
JR NZ,LLC16C

LD A,#80
LD B,E
LLC177 INF
DEC A
JR NZ,LLC177
JR LLC194

LLC17E LD A,#80
SRL D
JR NC,LLC16C
LD B,E
LLC185 INF
DEC A
JR NZ,LLC185
LD A,#80
LLC18C LD B,E
INI
INI
DEC A
JR NZ,LLC18C

LLC194 LD B,#C6
IN A,(C)
CP #50
LLC19A RRCA
LD A,#00
RET NC
LD A,#07
RET
=============== Import end ===============

А заставить трдос работать на винте - не так уж и сложно.
Вся работа с диском в конечном итоге сводится к чтению/записи
группы секторов (функции трдоса 5 и 6). Что надо сделать:

1. Взять физическую (абсолютную) координату текущего подклю-
ченного образа трдос дискеты (цилиндр/головка/сектор).
2. Взять значение пары DE (которое для комманд 5 или 6).
Кто не помнит: дорожка/сектор на дискете. Это вроде как от-
носительная координата.
3. Сложить п.1 и п.2 с учетом того, что на винте сектор #200
байт а в трдосе - #100. Получим физическую координату начала
требуемой области на винте, т.е. того места, где лежит то, что
нам надо прочитать.
4. Прочитать (начиная с кординаты полученной в п.3) нужное
кол-во секторов на требуемый адрес в памяти.
5. Внести изменения в переменные трдос, дабы прога думала что
она это все с дисковода прочитала.
6. Вернуть управление этой самой проге.

Отладить сие можно недели за три максимум. Hо если отводить
на софтонаписательство, ну скажем 1 час в месяц, то немудрено
и на 3 года растянуть.

ЗЫ: Я не говорю что Смук - это плохо. Зонов - хороший, даже
_очень_ хороший схемщих и железячник => Скорп рулезз!

ЗЫЫ: Hо _СТРАТЕГИЯ_ фирмы ДОЛЖHА стать более дружественной к
пользователю. В первую очередь - открытой информацией о пор-
тах, их возможностях и их использовании. Пусть шкурят микрос-
хемы и засекречивают ПЛМ, для _софтонаписательства_ этого мож-
но не знать, но КАК можно _писать_ под железо, ничего о нем не
зная???
И обязательно надо поубивать нечистых на руку трейдеров!

ЗЫЫЫ Если пользователю не дают информации о том, что он поку-

пает => ему не доверяют.

И если этот пользователь - _программист_ то такое недоверие
равносильно неуважению.

ЗЫЫЫЫ: В GMX скорпионщики это наконец-то поняли. Подробное ин-
фо по GMX имеется уже сейчас. И именно поэтому я его может да-
же куплю.

Jason.

Powered by ScorpionZS256turbo+/SMUC/HDD'IDE130Mb/FDD'800/
/CMOS/Cache8k/Covox/ATkbd/Mouse/CDOS...