Page 2 of 2

Re: Эмуляция дисковода

PostPosted: 17 Apr 2014, 22:45
by deathsoft
Александр Бухаров wrote:Есть старый эмуль версии 0.2 у того норм диск загружается.
а есть современный 38.ххх у него появляется кант реад диск...
хотя там и там диск один и тот же...

Не работает, т.к. пишет в порт 0x85 невалидную комбинацию выбора диска (00), хотя должен писать (01).
Порт управления дисководом:
CP/M-80
Адрес 85H (A4,A3,/IORQ = 0; A7,A2 = 1)
Назначение разрядов порта (только запись):
D1,D0 - Биты выборки FDD
01 - выборка устройства A:
10 - выборка устройства B:

TRDOS:
Адрес 0FFh (/IORQ = 0; A7,A0 = 1)
Запись:
D1,D0 - Адрес выбранного дисковода
00 - выборка устройства A:
01 - выборка устройства B:
10 - выборка устройства C:
11 - выборка устройства D:

Re: Эмуляция дисковода

PostPosted: 17 Apr 2014, 23:06
by fk0
Ты мыслишь как программист. При записи 00 небось работают два дисковода впараллель. У не-программистов.

Re: Эмуляция дисковода

PostPosted: 17 Apr 2014, 23:29
by deathsoft
Похоже еще в унриале какаято проблема из за изменений со стартом/стопом мотора.

Re: Эмуляция дисковода

PostPosted: 17 Apr 2014, 23:33
by deathsoft
Вот лог аутов в порт 85
Code: Select all
out85(85,0)
WD1793::out(FF, 13)
out85(85,21)
WD1793::out(FF, 30)
out85(85,0)
WD1793::out(FF, 13)


В кворуме используется "усовершенствованный" контроллер дисковода, не совместимый со стандартным betadisk контроллером (совершенно по другому сделана схема управления мотором дисковода). В кворуме бит D5 порта 85(FF) трдоса управляет включением/выключением мотора дисковода, при этом автоматическое включение/выключение мотора от ВГ93 не используется. Во всех командах ВГ93 где есть бит H - загрузка головки в биосе кворума стоит ноль, т.е. головка не загружена, в обычном трдос контроллере это означает, что мотор дисковода выключен, и в новых версиях унриала именно это поведение и реализовано. Далее, если мотор дисковода не крутится, то в порте 1F (регистр статуса ВГ93) выставлен старший бит, который означает, что дисковод не готов. Биос кворума этот бит опрашивает, предварительно включив мотор дисковода через бит D5 порта 85, но не подав ни одной команды на ВГ93. В новых версиях унриала при этом мотор дисковода не работает, т.к. реализован стандартный трдос контроллер.

В тестовой версии, я сделал костыль (запретил отключение мотора дисковода), если установлен бит D5 порта 85(FF). После этого cp/m для кворума, который давал мне caro стал грузится, а диск с бейсиком все равн оне работает, стартует частично (рисует картинку) а потом пишет can't read disk.

Re: Эмуляция дисковода

PostPosted: 07 Jun 2014, 13:17
by deathsoft
Александр Бухаров wrote:Еще такую фишку заметил:
Есть старый эмуль версии 0.2 у того норм диск загружается.
а есть современный 38.ххх у него появляется кант реад диск...
хотя там и там диск один и тот же...

Опробуй вот эту версию http://dlcorp.nedopc.com/download/file.php?id=2610
(в .ini файле обязательно в разделе [BETA128] выставить Traps=0 Fast=0).