-
ВГ93
Уважаемые, подскажите, где почитать пожно по теме программирования ВГ93. не с точки зрения трдос. у профи при включении 5го бита, доступ к вг93 осуществляется из всего диапазона ОЗУ. вот я и изучаю сей феномен, но нет никакких материалов по вгшке. поделитесь инфой?
-
Ларченко и Родионов. TR DOS для пользователей и программистов. Там всё подробно описано о регистрах.
-
к сожалению, во всех книгах про трдос, пишут одно и тоже "к сожалению программировать контроллер напрямую нельзя". а мне то как раз напрямую то и можно...и в общем то нужно. потому алгоритм работы надо знать.
-
Sayman, есть книга - кажись дизасм тр-дос, там все должно быть разжевано. Да и кто тебе мешает вместо call #3d2f писать открытые процедуры, которые записаны в той же ПЗУ ТР-ДОС?
Но, имхо, все это не интересно, т.к. такой принцип программирования делает несовместимым работу прог и винта, если, конечно это не для дровеняки к твоей ОС делается.
-
сейчас пока для себя делаю гляделку монохромных бмп. это для того чтобы обкатать работу с вг и для того чтобы обкатать работу с экранами..есть кое какие идеи, но чтобы сделать,надо на чём то потренироваца. а так будет если погрущик бмп тех же, на них смогу откатать финт с экраном(и).
трдос в принцыипе не буду использовать. прога для меня самого не длоя народа (могет патом как нить), потому на совместимость с эмуляторами и с винтами совершенно пофиг. а вот на зизасм трдоса я подумаю.могно посмареть как и чё там делаеца..а то алгоритм пока нескорлько не отработан у мну чтота...путаюсь сильно.
-
А чё там путаться? Дал команду ВГшке, и опрашивай регистр состояния, пока не выставит флаг.(не помню только какой) и давай следующую. Вобщем в книге всё подробно описано.
---------- Post added at 11:27 ---------- Previous post was at 11:22 ----------
Только, вот, цикл задержек нужно реализовать на команды шага, чтоб головки успокоились. В тырдосе есть параметры этих задержек.
Да и действительно,- почему бы не использовать готовые процедуры тырдоса - обычным CALL?
-
В нескольких журналах ZX-Format были неплохие статейки.
-
Да элементарно, у ВГшки есть порты 1F, 3F, 5F, 7F. Есть также порт FF, но он реализуется не самой ВГшкой, а другими частями схемы Beta-Disk.
1F - регистр команд/состояния. Запись туда дает новую команду контроллеру, чтение - выясняет состояние контроллера.
3F - регистр дорожки (чтение/запись). Здесь хранится номер дорожки, на которой находится головка. Содержимое этого регистра автоматически обновляется при выполнении команд позиционировании головки.
5F - регистр сектора (чтение/запись). Здесь хранится номер сектора, который следует считать или записать
7F - регистр данных (чтение/запись). Отсюда считываются данные при чтении сектора, и сюда надо подавать данные при его записи.
FF - чтение/запись. При записи осуществляется выбор дисковода и режима ВГшки FM/MFM. При чтении считывается состояние двух сигналов: DRQ и IRQ. Они используются во время чтения и записи данных на диск. Сигнал DRQ активируется, когда пришел следующий байт данных при считывании (или нужно дать ВГшке следующий байт данных для записи). Сигнал IRQ активируется при завершении операции чтения или записи.
Точное расположение бит и наименование команд я уже забыл, но на эту тему полно информации в интернете, есть в свободном доступе датащит на иностранный аналог ВГ93, а также в книгах Ларченко и Родионова есть необходимые описания.
Если по прочтении этих документов будут вопросы - обращайся.
-
пока немного не понятно. вот например. сдвиг головы да? берём из одной статьи гед пишут:
Код:
di
ld a,d ;d - логический но-
;мер дорожки
srl a ; вычисляем физич.
; номер (a/2)
ld c,#7f; сюда надо помес-
; тить номер до-
; рожки,на которую
; я хочу отьехать.
call outc
ld a,#3c; выбор стороны
bit 0,d
jr z,l01
ld a,#2c
l01 ld c,#ff
call outc; устанавливаем
; нужные для
; нормальной ра-
;боты биты порта #ff и номер
;стороны регистр #3f устанавли-
;вать не надо, он должен сам по
;себе содержать номер текущей
;дорожки
ld a,#18; код команды пози-
;цион.
call out1
ld ix,#3ef5
call dos; ожидание выполне-
;ния
di ; команды.
jp cont
...
out1 ld c,#1f
outc ld ix,#2a53
dos push ix
jp #3d2f
далее:Что делает ВГ 93: при получении в регистр #1f кода #18, она дает
сигнал на раскрутку диска. Затем сравнивает значения регистров
#3f и #7f, определяет направление и количество шагов головки и
шагает, изменяя значение рег.#3f.
т.е. я так понимаю это: указываем трек на который хочу переместиться, в регистре #7f (Data reg). даём каманду #18
(Поиск, биты 3 и 4 - при этом бит 3 = загрузка головки, бит 4 обсолютный) и ВГ будет перемещать голову, изменяя содержимое регистра #3f (регистр номера река) к соответствию регистра #7f (регистр данных, где мы указали желаемый номер трека). так?
смотрим далее. если допустим при чтении сектора из какого-то трека, голова попрежнему сидит на том же треке. нам надо прочитать ещё оджин сектор из того же трека. как это лучше сделать?
например:
Код:
ld a,(ix+PHTRACK) ;текущее значение
out (#3f),a
ld c,a
ld a,(ix+TRACK) ;желаемый рек
ld (ix+phtrack),a
out (#7f),a ;устанавливаемое
cp c ;они равны?
jr nz,str2 ;нет seek track
.....
str2: Ld a,(settrk)
Out (WGCOM),a
res 2,a
ld (settrk),a
Call WAITBEG
т.е. суть такова, проверили трек в буфере и тот на который надо ехать. если совпали, то ничего не делать, т.е. каманду 18 не давать, а продолжать в том же духе. но. надоли при этом (если они совпали), задавать в соответствующие регистры эти номера? т.е. как я писал выше, только что прочитали сектор с трека и надо ещё с того же трека прочитать ещё сектор. сравнили - трек тот же..каковы дальнейшие действия? или мжет быть в любом случае без проверок, сразу указал номер трека , дал каманду 18 и пофигу на сравнения?
-
Sayman, а метод следственного эксперимента что дает в первом и втором случае? Ведь у тебя профик с открытыми портами - ты можешь это проверить.