Спасибо!
А скорость эмуляции не настраивается ? Попробовал запустить игрушку GARDEN - и жуки, и человечек очень быстро движутся.
Вид для печати
тоже пожалуй присоединюсь к просьбе, nzeemin, пожалуйста, сделайте замедление (нормализацию) скорости работы эмулятора.
Добавил регулировку пятиступенчатую коробку передач -- 25 / 50 / 100 / 200 / MAX.
Переключается в меню Emulator.
Со временем можно будет сделать плавную регулировку скорости, но пока не буду заморачиваться.
Сделал для эмулятора Немиги тестовый стенд.
Такая вещь помогает убедиться, что после очередной порции изменений не отломалось что-то что уже работало.
https://github.com/nzeemin/nemigabtl-testbench
Еще вопрос по эмулятору (а может и не совсем).
Вывожу список файлов через DIR/BRI. Список выводится в 4 столбца, но как-то странно - такое впечатление, что не хватает ширины окна, и он переносится построчно.
Типа такого:
BAD .SAV G8 .SYS MF .SAV RW .S
AV VD .COM
Прошивка 3.03.
Да, на 3.03 экран узкий -- используется только 50 символов в строке.
На дискете M5.dsk есть удобная команда -- DIR/BR/C:3 -- и алиас для команды есть -- "?" -- просто вводим знак вопроса.
- - - Updated - - -
На эмуляторе результат получился таким же. Но выполняется очень быстро, за 3 секунды.
https://img-fotki.yandex.ru/get/1959...e2246_orig.bmp
Интересно, есть на Немиге какой-то простой способ очистить экран, стоя в командной строке RT-11?
Команда CLS отрезана, Ctrl+L тоже не работает.
А загрузочный диск M5.DSK будет работать с прошивкой 4.05 ?
Я попробовал - доходит до надписи
NEMIGA-S V05.00
_
и все. Какое-то время в статус-строке выведено "Motor", потом и она исчезает.
- - - Добавлено - - -
Здесь народ программу использовал.
Ctrl+L работает, но только в пультовом режиме.
P.S.: В Техническом описании на Немигу есть ссылки на некое Руководство оператора (как я понимаю, по ОС). Им где-нибудь можно разжиться ?
Под 4.05 / 4.06 в эмуляторе пока ничего не работает.
Но вообще для 4.0x предназначены другие дискеты -- на них главный файл называется RT11SJ.SYS, а не NEMIGA.SYS. На загрузке с них мы пока застреваем.
Статус "Motor" показывает, крутится ли мотор дисковода.
Этого нет, но я думаю там по сути описание RT-11.Цитата:
P.S.: В Техническом описании на Немигу есть ссылки на некое Руководство оператора (как я понимаю, по ОС). Им где-нибудь можно разжиться ?
nzeemin, просто промотать рулон вниз?
Эту фразу в Википедии я и написал -- как и всю статью "Немига (компьютер)".
Отличия только в урезанной функциональности и адаптации к русскому языку -- как у всех -- ФОДОС / РУДОС / ДВК ОС итп.
Плюс конечно отличия в драйверах устройств и их опциях.
- - - Updated - - -
https://ru.wikipedia.org/wiki/%D0%A4...MIGA_class.jpg -- посмотрел я ещё раз на эту фотку (получена от А. А. Петровского).
По-моему, изображение на экран приклеено прямо на фотку -- нет характерных для этого монитора искажений, горизонтальные линии параллельны фото, а не краям экрана.
- - - Updated - - -
IOSCAN побеждён -- см. http://zx-pk.ru/threads/20590-emulya...l=1#post891570
https://img-fotki.yandex.ru/get/1512...df39c_orig.bmp
Но загрузке в 4.05 / 4.06 это не помогло.
- - - Updated - - -
Оно понятно, но это время, да и коряво.
В тестах я часто запускаю подряд несколько команд, а проверка на правильное выполнение команды идёт сравнением скриншотов. Поэтому хотелось иметь простую возможность очистить экран перед запуском следующего теста.
Помнится в 4-м фортране на ЕС-ках для очистки экрана выводили 25-30 символов перевода строки.
nzeemin, а там VT52 терминал эмулируется в процессе (ну как на уровне УК-НЦ) в плане ESC_последовательностей?
либо надо местные ESC где список брать изучать - что бы правильные экранные програмулины делать к примеру.
- - - Добавлено - - -
это великое признание ! )
http://s16.rimg.info/2859543a45af13f...01c22d1870.gif
- - - Добавлено - - -
а обычная clrl.sav под VT52 не работает?
- - - Добавлено - - -
Никит, пожалуйста состав дискеты выложи что там у тебя на системе под рукой что бы видеть а не додумывать
просто каталог системы с которой работаешь на Немиге
Хмм какая штука.
Драйвер SL от Сторожевых.
Вводим SET SL LET, а потом /H -- получаем вот такую справку:
https://img-fotki.yandex.ru/get/1987...cc8c7_orig.png
Да! Красиво ) Стандартное управление драйвером надо сказать,
как выяснилось недавно автор ещё для УК-НЦ специализированную версию драйвера (за номером 9)
написал (есть в архиве).
попробуй вот этот файл
http://www.fayloobmennik.net/6832390
для очистки экрана вывести командой TY CLRS.TXT
А команду (если сработает) можешь уже SL-ем на удобное тебе сочетание повесить.
https://github.com/nzeemin/nemigabtl...b1d454b4f68395
IOSCAN проходит по адресам 160000-177776 и показывает только те из них которые "отвечают", т.е. по этим адресам есть устройства, отдающие данные.
Нужно было сделать чтобы "дыры" между показанными диапазанами "не отвечали", что я и реализовал.
- - - Updated - - -
Сейчас я смотрю процесс загрузки на 4.05 и сравниваю его с 3.03, пытаясь понять что идёт не так.
Видно что на 4.05 читается MD.SYS и потом тишина.
http://www.emuverse.ru/wiki/%D0%9D%D...B0_303_boot_M5
http://www.emuverse.ru/wiki/%D0%9D%D...0_405_boot_02A
Теперь интересно сколько памяти показывает команда SH CON.
И прогоните ещё программку MEMMAP*.
*- Программа не все устройства знает.
- - - Добавлено - - -
Если ещё Еnter понажимать, будет по буквенный ввод.
Нашёл в чём отличие.
На 4.05 загрузчик MD BOOT читает MD.SYS и по смещению 00200 находит там не 000000, а 005727, это ему не нравится, и он уходит куда-то налево.
Помнится кто-то заменил на дискетах от BYTEMAN файл MD.SYS (взяв MD.SYS от системы 3.03) и назвал такие дискеты "fixed", но эти два MD.SYS очень разные, 4 блока и 11 блоков.
Вот кстати нашёл источник.
- - - Updated - - -
Копаюсь с загрузкой 4.05 уже довольно долго.
Пока понял что загрузчик с дискеты для 4.05 несколько по-другому работает с регистром 177564 -- он хочет чтобы там было значение 0200 и только после этого пишет символ в 177566. ПЗУ в начале работы пишет в 177564 значение 200. Но загрузчик в некоторый момент в начале загрузки его там стирает. В общем тут некоторая непонятка как правильно работать с этой ячейкой.
Если ставлю заглушку чтобы оттуда всегда торчало 0200 -- то загрузка с диска 01A.DSK продолжается -- читает часть RT11SJ.SYS но затем опять останавливается, причину пока не понял.
MEMMAP выводит тот же самый список, что и IOSCAN.
Должны быть какие-то различия?
https://img-fotki.yandex.ru/get/5523...50e62_orig.png
Судя по исходному коду программы, она не может знать никаких устройств -- там нет списков известных регистров или чего-то подобного, т.е. это простой сканер, такой же как IOSCAN.
http://www.classiccmp.org/PDP-11/RT-...or1/memmap.mac
Это другой какой-то MEMMAP. В эм. Патрона вывод такой:
- - - Добавлено - - -Код:.MEMMAP
MEMMAP 32 KW Memory Mapper
Andromeda Systems Incorporated
From To Words Vectors Description
------ ------ ---- --- --- -------------------------------
0 .. 157776 28K MEM11/MSV11 memory
172140 .. 172142 2.
172300 .. 172316 8. KT11 memory management
172340 .. 172356 8. KT11 memory management
172512 1.
172516 .. 172532 7. KT11 memory management
224 TM11 magnetic tape
174002 1.
174020 1.
176560 .. 176566 4. ? ? MSI11/DLV11 serial interface
177130 .. 177132 2.
177170 .. 177172 2. 264 FDC11/RX01/RX02 floppy disk
177514 .. 177516 2. 200 MSI11P/LPI11/LPV11 line printer
177550 .. 177566 8.
177572 .. 177616 11. 250 KT11 memory management
177640 .. 177656 8. KT11 memory management
177720 .. 177724 3.
177776 1. KDF11 processor status register
.
MEMMAP.PAS - здесь.
MEMMAP.SAV - здесь.
Непонятно, почему память на IOSCAN от 160000- 170014, а здесь от 0. Наверно правильней должно быть 0 - 157776 и далее 160000- 170014.
Так что показывает SH CON?
Это потому что IOSCAN сканирует только начиная с адреса 160000.
https://img-fotki.yandex.ru/get/1142...3d7b1_orig.pngЦитата:
Так что показывает SH CON?
Кстати, после того как я реализовал "дырки" в области портов, из SH CON исчезло упоминание двух устройств.
Тут не понял что имеется в виду.Цитата:
С памятью вроде всё понятно. В эмуляторе нет ограничения в диапазоне 0-177776.
Каком именно описании?Цитата:
И в описании неправильно обозначен диапазон как 0-200000 . Должно быть 0-177776.
Disclaimer: Не придираюсь, я видимо просто потерял нить обсуждения.
А вообще, спасибо вам за ваши усилия, мы сильно продвинулись за последнее время.
Имелось в виду что RT11 по прежнему определяет 2777кб. Где-то идет отклик по памяти.
Думал что после 177776 не будет отклика.
Тут может я не правильно понимаю описание т.к. по ячейки 200000 отклик по 000000. Или по 200010 отклик 000010.
Описание - http://www.emuverse.ru/wiki/Немига
По образам.
В образах есть защита от копирования, в частности в файлах RT11SJ и MD.SYS. Кто-то из них кого-то портит. Попробуйте обычный RT11SJ версии 5.02. В образе 02В, в файле NC.HLP в самом конце есть упоминание о защите.
Но сначала, я думаю приоритетней отладить эмулятор с пр. 4.06 т.к. на реале.Код:Версия защищена от несанкционированной перезаписи
Copyright (C) НПЛ "МикроЦОС" 23/04/93 14:30:00
Мне вот это не понятно, совсем. На шине невозможно выставить адрес 200000, там 16 разрядов.
То что на карте памяти нарисовано выше 177776 -- это условность, верхняя память доступна только через косвенную адресацию, через порты.
То что RT-11 пишет про 2777 КБ -- вероятно, она знает какое-то устройство маппинга памяти (вот этот "KT11 Memory Management Unit" видимо), адреса регистров которого совпали с какими-то из открытых у нас регистров, и возможно отвечают похожим образом.
- - - Updated - - -
Ну вот кстати почитал я описание этого устройства: http://bitsavers.trailing-edge.com/p...C_MaintMan.pdf
Походу, оно отвечает по адресам 177572 (SR0), 177574 (SR1) и 177576 (SR2) -- два из трёх как раз у нас открыты.
Возможно, поведение этих регистров должно быть немного другим, чтобы система не показывала такие объёмы памяти.
Я попробую потрассировать обращение SH CON к этим регистрам чтобы понять что происходит.
Я посмотрел как SH CON обращается к портам 177572/177574 -- там только одно обращение:
READ 177572 value 177705
Дальше интереснее. Замена возвращаемого значения на 0 ничего не дала.
А вот генерация исключения по обращению к 177572 привела к исчезновению из SH CON строчки про "KT11 Memory Management Unit" -- возможно, что эта ячейка "только для записи".
При этом строчка про "2777KB of memory" осталась -- значит, причина другая.
На реальной Немиге так:
http://s16.radikal.ru/i190/1701/bb/f2c1acbfa519t.jpg
Гипотеза себя НЕ оправдала -- регистр 177572 ДОЛЖЕН быть доступен по чтению -- иначе по-другому ведут себя IOSCAN и несколько игрушек -- это сразу выявилось повторным прогоном всех тестов.
Так что различия в SH CON я пока отношу к различиям RT-11 между для 3.03 и 4.0x.
Взываю к BYTEMAN, нужна живая машина 3.03 для тестов.
nzeemin, Обратите внимание что в эмуляторе с прш.4.06 по 200000 перехода нет на 000000. В реальной Немиге есть.
См.- http://zx-pk.ru/threads/20590-emulya...l=1#post899505
- - - Добавлено - - -
И ещё просьба- http://zx-pk.ru/threads/20590-emulya...l=1#post892691
Вообще правильная мысль -- надо отлаживать загрузку дискеты от 3.03 на прошивке 4.0x -- по поведению машины они у меня сейчас не отличаются, значит дело может быть только в том что прошивки 4.0x ожидают чего-то другого от регистров или по прерываниям.
Про ваши просьбы я все помню, у меня записано :-)
На этих выходных я в основном работал по тестовому стенду -- развивал его как средство написания тестов и средство трассировки.
Я имею в виду, что эмулятор сейчас, как машина на которой работает код, одинаковый для всех прошивок, нет "аппаратных" различий между 3.03/4.05/4.06.
https://github.com/nzeemin/nemigabtl-testbenchЦитата:
Что за стенд?
Сейчас попробовал сменить прошивку на 3.03, встала без проблем. Чтоб не возится с ультрафиолетом
(со стиранием м/х), поставил еепром AT28C16.
Далее загрузил туже дискету что и на 4.05/06 с монитором RT11SJ 5.02 (#). Что удивительно, монитор вроде совместим с ранними версиями Немиги и ни на что не ругнулся. Знакогенератор определил 50 символов, а на 4.05/06 писал 64.
http://s011.radikal.ru/i317/1701/60/aef349bf54cc.jpg
Вот это поворот.
Нашёл защиту в коде загрузки секторов прошивки 4.06.
Они при чтении ксорируют каждое слово два раза, используя при этом три байта из заголовка дорожки.
Поправил у себя заголовок дорожки, который автоматически подготавливается -- теперь 4.06 застревает там же где и 4.05, где-то уже после загрузки RT11SJ.SYS.
- - - Updated - - -
Вот структура дорожки:
Вот эти три байта помеченые звёздочками -- используются для ксорирования.Код:Track Header 10b
0343 Marker 1b
Track number 1b
023 Sectors on Track 1b
0 1b *
First Sector 2b
0xff 1b *
0xff 1b *
Checksum 2b
Sector 130b
Data 128b
Checksum 2b
...
Если они имеют значения 0/0xff/0xff -- ксорирование не оказывает эффекта, не изменяет данные секторов.
Увы, это только одна из защит....
Про отличия машин 3.xx от 4.xx вроде несколько раз уже писали, но тонкие подробности Byteman ленится узнать. А главный техник-создатель уже, увы, ушёл.... Не дождался пока Byteman до него дойдёт.
- - - Добавлено - - -
Я бы вообще в эмуле на 3.xx не ориентировался, хотя она и проще.
Насколько я в курсе схемотехнически там только в одной плате отличия...
Но сравнивать - не сравнивал, времени, увы, не хватает. Да и не хочется заниматься реверс-инжинирингом, когда первоисточники доступны.