Просмотр полной версии : Эмулятор НЕМИГА
Stepanych
27.01.2017, 17:33
Этого нет, но я думаю там по сути описание RT-11.
А нет информации, на сколько ОС Немиги является RT-11 ?
На Википедии сказано, что "Операционная система «НЕМИГА» (адаптированный вариант RT-11)". Может там есть какие-то принципиальные отличия ?
А нет информации, на сколько ОС Немиги является RT-11 ?
На Википедии сказано, что "Операционная система «НЕМИГА» (адаптированный вариант RT-11)". Может там есть какие-то принципиальные отличия ?
Эту фразу в Википедии я и написал -- как и всю статью "Немига (компьютер)".
Отличия только в урезанной функциональности и адаптации к русскому языку -- как у всех -- ФОДОС / РУДОС / ДВК ОС итп.
Плюс конечно отличия в драйверах устройств и их опциях.
- - - Updated - - -
https://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:NEMIGA_class.jpg -- посмотрел я ещё раз на эту фотку (получена от А. А. Петровского).
По-моему, изображение на экран приклеено прямо на фотку -- нет характерных для этого монитора искажений, горизонтальные линии параллельны фото, а не краям экрана.
- - - Updated - - -
IOSCAN побеждён -- см. http://zx-pk.ru/threads/20590-emulyator-nemiga.html?p=891570&viewfull=1#post891570
https://img-fotki.yandex.ru/get/151273/7448436.9/0_a5a73_266df39c_orig.bmp
Но загрузке в 4.05 / 4.06 это не помогло.
- - - Updated - - -
nzeemin, просто промотать рулон вниз?
Оно понятно, но это время, да и коряво.
В тестах я часто запускаю подряд несколько команд, а проверка на правильное выполнение команды идёт сравнением скриншотов. Поэтому хотелось иметь простую возможность очистить экран перед запуском следующего теста.
Stepanych
27.01.2017, 22:13
Помнится в 4-м фортране на ЕС-ках для очистки экрана выводили 25-30 символов перевода строки.
nzeemin, а там VT52 терминал эмулируется в процессе (ну как на уровне УК-НЦ) в плане ESC_последовательностей?
либо надо местные ESC где список брать изучать - что бы правильные экранные програмулины делать к примеру.
- - - Добавлено - - -
Эту фразу в Википедии я и написал
это великое признание ! )
http://s16.rimg.info/2859543a45af13fef0e9c601c22d1870.gif
- - - Добавлено - - -
Оно понятно, но это время, да и коряво.
а обычная clrl.sav под VT52 не работает?
- - - Добавлено - - -
нтересно, есть на Немиге какой-то простой способ очистить экран, стоя в командной строке RT-11?
Никит, пожалуйста состав дискеты выложи что там у тебя на системе под рукой что бы видеть а не додумывать
просто каталог системы с которой работаешь на Немиге
Хмм какая штука.
Драйвер SL от Сторожевых.
Вводим SET SL LET, а потом /H -- получаем вот такую справку:
https://img-fotki.yandex.ru/get/198786/7448436.9/0_a5a84_cf9cc8c7_orig.png
Драйвер SL от Сторожевых.
Вводим SET SL LET, а потом /H -- получаем вот такую справку:
Да! Красиво ) Стандартное управление драйвером надо сказать,
как выяснилось недавно автор ещё для УК-НЦ специализированную версию драйвера (за номером 9)
написал (есть в архиве).
попробуй вот этот файл
http://www.fayloobmennik.net/6832390
для очистки экрана вывести командой TY CLRS.TXT
А команду (если сработает) можешь уже SL-ем на удобное тебе сочетание повесить.
IOSCAN побеждён
А что было не так?
А что было не так?
https://github.com/nzeemin/nemigabtl/commit/65d97ed175e4a0fabfa85b6c10b1d454b4f68395
IOSCAN проходит по адресам 160000-177776 и показывает только те из них которые "отвечают", т.е. по этим адресам есть устройства, отдающие данные.
Нужно было сделать чтобы "дыры" между показанными диапазанами "не отвечали", что я и реализовал.
- - - Updated - - -
Сейчас я смотрю процесс загрузки на 4.05 и сравниваю его с 3.03, пытаясь понять что идёт не так.
Видно что на 4.05 читается MD.SYS и потом тишина.
http://www.emuverse.ru/wiki/%D0%9D%D0%B5%D0%BC%D0%B8%D0%B3%D0%B0_303_boot_M5
http://www.emuverse.ru/wiki/%D0%9D%D0%B5%D0%BC%D0%B8%D0%B3%D0%B0_405_boot_02A
Нужно было сделать чтобы "дыры" между показанными диапазонами "не отвечали", что я и реализовал.
Теперь интересно сколько памяти показывает команда SH CON.
И прогоните ещё программку MEMMAP* (http://www.classiccmp.org/PDP-11/RT-11/freeware/sigtapes/11s113/schor1/memmap.sav).
*- Программа не все устройства знает.
- - - Добавлено - - -
Видно что на 4.05 читается MD.SYS и потом тишина.
Если ещё Еnter понажимать, будет по буквенный ввод.
Сейчас я смотрю процесс загрузки на 4.05 и сравниваю его с 3.03, пытаясь понять что идёт не так.
Видно что на 4.05 читается MD.SYS и потом тишина.
http://www.emuverse.ru/wiki/%D0%9D%D0%B5%D0%BC%D0%B8%D0%B3%D0%B0_303_boot_M5
http://www.emuverse.ru/wiki/%D0%9D%D0%B5%D0%BC%D0%B8%D0%B3%D0%B0_405_boot_02A
Нашёл в чём отличие.
На 4.05 загрузчик MD BOOT читает MD.SYS и по смещению 00200 находит там не 000000, а 005727, это ему не нравится, и он уходит куда-то налево.
Помнится кто-то заменил на дискетах от BYTEMAN файл MD.SYS (взяв MD.SYS от системы 3.03) и назвал такие дискеты "fixed", но эти два MD.SYS очень разные, 4 блока и 11 блоков.
Вот кстати нашёл источник.
Страшная тайна :-)
в этой ветке была пачка дискет, там при внимательном рассмотрении есть очень даже загрузочные дискеты для Немиги. К примеру 02A, и загрузчик на ней MD и монитор какой надо, а вот грузиться нехочет.
Так вот страшная тайна в том, что там драйвер MD битый. Достаточно при помощи TC плагина заменить MD.SYS файл, на файл из ветки обсуждения эмулятора Немиги и выходит замечательная загрузочная дискета с монитором версии 5.02 и работающим знакогенератором и т.д и т.п.
- - - Updated - - -
Копаюсь с загрузкой 4.05 уже довольно долго.
Пока понял что загрузчик с дискеты для 4.05 несколько по-другому работает с регистром 177564 -- он хочет чтобы там было значение 0200 и только после этого пишет символ в 177566. ПЗУ в начале работы пишет в 177564 значение 200. Но загрузчик в некоторый момент в начале загрузки его там стирает. В общем тут некоторая непонятка как правильно работать с этой ячейкой.
Если ставлю заглушку чтобы оттуда всегда торчало 0200 -- то загрузка с диска 01A.DSK продолжается -- читает часть RT11SJ.SYS но затем опять останавливается, причину пока не понял.
Теперь интересно сколько памяти показывает команда SH CON.
И прогоните ещё программку MEMMAP* (http://www.classiccmp.org/PDP-11/RT-11/freeware/sigtapes/11s113/schor1/memmap.sav).
*- Программа не все устройства знает.
MEMMAP выводит тот же самый список, что и IOSCAN.
Должны быть какие-то различия?
https://img-fotki.yandex.ru/get/55231/7448436.9/0_a5a92_d3750e62_orig.png
Судя по исходному коду программы, она не может знать никаких устройств -- там нет списков известных регистров или чего-то подобного, т.е. это простой сканер, такой же как IOSCAN.
http://www.classiccmp.org/PDP-11/RT-11/freeware/sigtapes/11s113/schor1/memmap.mac
MEMMAP выводит тот же самый список, что и IOSCAN.
Это другой какой-то 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 - здесь. (http://www.ibiblio.org/pub/academic/computer-science/history/pdp-11/rt/sigtapes/tors84/util03/memmap.pas)
MEMMAP.SAV - здесь. (http://www.ibiblio.org/pub/academic/computer-science/history/pdp-11/rt/sigtapes/tors84/util03/memmap.sav)
MEMMAP.PAS - здесь. (http://www.ibiblio.org/pub/academic/computer-science/history/pdp-11/rt/sigtapes/tors84/util03/memmap.pas)
MEMMAP.SAV - здесь. (http://www.ibiblio.org/pub/academic/computer-science/history/pdp-11/rt/sigtapes/tors84/util03/memmap.sav)
https://img-fotki.yandex.ru/get/195132/7448436.9/0_a5a93_29d7992c_orig.png
Непонятно, почему память на IOSCAN от 160000- 170014, а здесь от 0. Наверно правильней должно быть 0 - 157776 и далее 160000- 170014.
Так что показывает SH CON?
Непонятно, почему память на IOSCAN от 160000- 170014, а здесь от 0. Наверно правильней должно быть 0 - 157776 и далее 160000- 170014.
Это потому что IOSCAN сканирует только начиная с адреса 160000.
Так что показывает SH CON?
https://img-fotki.yandex.ru/get/114207/7448436.9/0_a5a94_46e3d7b1_orig.png
Кстати, после того как я реализовал "дырки" в области портов, из SH CON исчезло упоминание двух устройств.
Кстати, после того как я реализовал "дырки" в области портов, из SH CON исчезло упоминание двух устройств.
Какие?
...
С памятью вроде всё понятно.
Пишет (прошивка 3.03)
Пульт>200000/
000000:000000
Пишет (прошивка 4.06)
Пульт>200000/?
Проверил на реальной Немиге (прошивка 4.06)
Получилось так:
Пульт>200000/
000000:000000
С памятью вроде всё понятно. В эмуляторе нет ограничения в диапазоне 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 в самом конце есть упоминание о защите.
Версия защищена от несанкционированной перезаписи
Copyright (C) НПЛ "МикроЦОС" 23/04/93 14:30:00
Но сначала, я думаю приоритетней отладить эмулятор с пр. 4.06 т.к. на реале.
Имелось в виду что RT11 по прежнему определяет 2777кб. Где-то идет отклик по памяти.
Думал что после 177776 не будет отклика.
Мне вот это не понятно, совсем. На шине невозможно выставить адрес 200000, там 16 разрядов.
То что на карте памяти нарисовано выше 177776 -- это условность, верхняя память доступна только через косвенную адресацию, через порты.
То что RT-11 пишет про 2777 КБ -- вероятно, она знает какое-то устройство маппинга памяти (вот этот "KT11 Memory Management Unit" видимо), адреса регистров которого совпали с какими-то из открытых у нас регистров, и возможно отвечают похожим образом.
- - - Updated - - -
Ну вот кстати почитал я описание этого устройства: http://bitsavers.trailing-edge.com/pdf/dec/pdp11/1145/KT11C_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 (http://radikal.ru/big/eqa9h423kh7qi)
Я посмотрел как SH CON обращается к портам 177572/177574 -- там только одно обращение:
READ 177572 value 177705
Дальше интереснее. Замена возвращаемого значения на 0 ничего не дала.
А вот генерация исключения по обращению к 177572 привела к исчезновению из SH CON строчки про "KT11 Memory Management Unit" -- возможно, что эта ячейка "только для записи".
Гипотеза себя НЕ оправдала -- регистр 177572 ДОЛЖЕН быть доступен по чтению -- иначе по-другому ведут себя IOSCAN и несколько игрушек -- это сразу выявилось повторным прогоном всех тестов.
Так что различия в SH CON я пока отношу к различиям RT-11 между для 3.03 и 4.0x.
Взываю к BYTEMAN, нужна живая машина 3.03 для тестов.
nzeemin, Обратите внимание что в эмуляторе с прш.4.06 по 200000 перехода нет на 000000. В реальной Немиге есть.
См.- http://zx-pk.ru/threads/20590-emulyator-nemiga.html?p=899505&viewfull=1#post899505
- - - Добавлено - - -
И ещё просьба- http://zx-pk.ru/threads/20590-emulyator-nemiga.html?p=892691&viewfull=1#post892691
Вообще правильная мысль -- надо отлаживать загрузку дискеты от 3.03 на прошивке 4.0x -- по поведению машины они у меня сейчас не отличаются, значит дело может быть только в том что прошивки 4.0x ожидают чего-то другого от регистров или по прерываниям.
Про ваши просьбы я все помню, у меня записано :-)
На этих выходных я в основном работал по тестовому стенду -- развивал его как средство написания тестов и средство трассировки.
Вообще правильная мысль -- надо отлаживать загрузку дискеты от 3.03 на прошивке 4.0x -- по поведению машины они у меня сейчас не отличаются, значит дело может быть только в том что прошивки 4.0x ожидают чего-то другого от регистров или по прерываниям.
В смысле не отличаются? На каком мониторе загрузка? У меня на реале прш.4.05 и 4.06 спокойно грузится одна и та-же дискета с монитором RT11SJ 5.02 (#)
Могу попробовать залить прш. 3.03 но навряд ли всё гладко выйдет.
На этих выходных я в основном работал по тестовому стенду -- развивал его как средство написания тестов и средство трассировки. Что за стенд?
В смысле не отличаются?
Я имею в виду, что эмулятор сейчас, как машина на которой работает код, одинаковый для всех прошивок, нет "аппаратных" различий между 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 (http://radikal.ru)
Вот это поворот.
Нашёл защиту в коде загрузки секторов прошивки 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 не ориентировался, хотя она и проще.
Насколько я в курсе схемотехнически там только в одной плате отличия...
Но сравнивать - не сравнивал, времени, увы, не хватает. Да и не хочется заниматься реверс-инжинирингом, когда первоисточники доступны.
Увы, это только одна из защит....
Прямо квест какой-то. :)
А главный техник-создатель уже, увы, ушёл....
В каком смысле ушел? Кто? Петровский?
Нашёл где зацикливается 4.06 при загрузке M5.DSK -- это DATE пытается вывести строку.
163744: CALL @177774
133050: HALT
Кто-то испортил полезную ячейку 177774.
И помнится kapitan-u говорил что SG.SYS нам всё портит.
А дело в том, что назначение этой ячейки разное -- в 3.03 это адрес знакогенератора, а в 4.0x это адрес подпрограммы вывода символа.
Нужно делать дискету M5 без SG.
Ну вот вам диск M5-40x.dsk и NemigaBTL 1.0.53 -- вместе оно загружается на 4.06.
Пруфпик:
https://img-fotki.yandex.ru/get/195518/7448436.9/0_a5ab3_1880a66f_orig.png
Без SG буквы только в верхнем регистре.
Я просто тупо удалил SG.SYS с диска. Но можно взять SG.SYS с дисков от новой системы.
Ну вот вам диск M5-40x.dsk и NemigaBTL 1.0.53 -- вместе оно загружается на 4.06.
Запустил эмуль) Не знаю, чего нажать в пульте чтобы загрузить систему с диска)
Напишите хоть хелп, который прилагайте к эмулю или на первой странице этой темы. Для чайников)
Запустил эмуль) Не знаю, чего нажать в пульте чтобы загрузить систему с диска)
Напишите хоть хелп, который прилагайте к эмулю или на первой странице этой темы. Для чайников)
http://www.emuverse.ru/wiki/%D0%9D%D0%B5%D0%BC%D0%B8%D0%B3%D0%B0 -- тут в начале есть команды Пульта.
Команда "D" начинает загрузку с диска MD0.
https://github.com/nzeemin/nemigabtl-testbench/raw/master/data/m5.dsk -- основной диск для загрузки в конфигурации 3.03 (в 4.0x он не грузится из-за драйвера SG.SYS).
http://zx-pk.ru/attachment.php?attachmentid=59582&d=1485734710 -- тут диск m5-40x.dsk, пока единственный для загрузки в 4.05/4.06.
https://github.com/nzeemin/nemigabtl-testbench/tree/master/data -- тут есть ещё несколько дисков.
Ну и если пройти по этой теме и соседним по Немиге то можно нарыть ещё с десяток дисков.
В целом пока более-менее работает конфигурация 3.03, но она для Немиги не основная -- бОльшая часть Немиг это 4.06.
Конфигурация 4.06 пока очень нестабильна, легко вылетает. Но собственно она и запустилась только сегодня ночью.
В каком смысле ушел? Кто? Петровский?
Петровский был скорее руководителем проекта. По технике главный умер.
Наверное, у меня акула попалась глухая) Ни одну игру на эмуле не смог запустить)
Причем даже саму систему удается запустить на 5-й раз)
Нажимаю D, Enter - она опять переходит в надпись ПУЛЬТ. И только на какой-то там раз начинает грузить систему.
А при попытке запустить игрушки типа BOB, DIG и т.д., иногда спрашивает 'РМУ?' (это эти игры спрашивают вначале перед стартом) и благополучно зависает. Таким образом, что кнопка 'RUN' на тулбаре выпадает и не нажимается до ресета.
Stepanych
30.01.2017, 14:01
Нажимаю D, Enter - она опять переходит в надпись ПУЛЬТ.
В пультовом режиме после D не нужно нажимать Enter.
иногда спрашивает 'РМУ?'
Вот на этот вопрос нужно просто нажать Enter, поскольку в эмуляторе у нас только РМП.
Вот на этот вопрос нужно просто нажать Enter, поскольку в эмуляторе у нас только РМП.
Нажимаю) Зависает)
Нажимаю) Зависает)
Я же говорю, 4.06 только-только заработала. Не гонял ещё толком.
Играйтесь с 3.03.
Stepanych
30.01.2017, 14:39
Сейчас попробовал запустить DIG на 3.03 - запускается.
- - - Добавлено - - -
Я же говорю, 4.06 только-только заработала. Не гонял ещё толком.
Так не терпится 64 символа в строке получить :-)
Сейчас попробовал запустить DIG на 3.03 - запускается.
Спасибо за наводку.
3.03 работает стабильнее, хотя Dig в итоге тоже вылетела в пульт.
Зато хоть посмотрел, наконец, что это за игры)
Выложил тут (http://zx-pk.ru/threads/20428-igry-dlya-nemigi.html?p=899658&viewfull=1#post899658) скриншоты.
Потрассировал SH DEV в поисках того где считается память.
В итоге увидел что искомое число инициализируется ещё до загрузки команды с диска.
Как я понял, SH DEV по $MEMPT смотрит на memory control block, в котором указана верхняя граница виртуальной памяти.
- - - Updated - - -
Не заметил сразу. IOSCAN показывает регистр 170014. В описании такого нет.
Регистры 170000-170004 -- используются микросхемой, выполняющей операции умножения и деления.
На тестовом стенде проверил копирование дисков под 3.03 -- работает.
В MD0: ставим диск M5.dsk
В MD1: ставим чистый диск
DIR MD1: -- даёт "Directory I/O error"
INIT MD1: -- инициализируем диск
DIR MD1: -- показывает пустой диск
COPY MD0:PIP.SAV MD1: -- проверяем копирование файла
DIR/BR/C:3 MD1: -- показывает PIP.SAV
COPY /DEVICE MD0: MD1: -- копируем диск на диск поблочно
DIR/BR/C:3 MD1: -- убеждаемся что новый диск такой же как M5.dsk
Теперь загрузимся с нового диска.
SET SG OFF -- как советует драйвер SG, возвращаем знакогенератор по умолчанию -- если этого не сделать то первые надписи при загрузке будут выводить мусор.
BOOT MD1: -- запускаем загрузку с нового диска
Stepanych
01.02.2017, 11:56
На тестовом стенде проверил копирование дисков под 3.03 -- работает
Тестовый стенд физический, или эмулятор ?
Тестовый стенд физический, или эмулятор ?
Вот тестовый стенд: https://github.com/nzeemin/nemigabtl-testbench
Это ядро эмулятора (папка emubase просто копируется из nemigabtl) + набор тестов.
Позволяет за минуту прогнать все тесты которые есть, убедиться что ничего не сломалось.
Плюс на нём я разбираю подробно отдельные случаи.
Из другой темы, но подходит для этой.
По Немиге нужно разобраться с режимом HALT, сейчас вход/выход из него для меня не особо понятен,
Как и говорил, после адреса 160000 ячейки заблокированы и с пульта не прочитаются до 170000.
На реале после включения (ром 4.05, 4.06)
170000/000000
170002/000000
170004/047764
170006/001412
170010/074010
170012/000000
170014/000000
Далее 170016 не откликается.
170020/001261
170022/000000
170024/000000
170026/000000
170030/000000
170032/000000
Далее.
177100/000271
177102/000377
177104/000127
177106/000106
И ещё ( с эмулятором совпадают).
177560/000000
177562/000012
177562/000200
177564/000000
177570/000000
177572/000000
177574/000000
На 4.06 для команды пульта '/' есть переменная 177744 с адресом, ниже которого можно смотреть ячейки. На остальных прошивках такого нет.
Правильное значение переменной 177744 равно 160000 и устанавливается только в одном месте, код на 161720:
161720: MOV #160000, @#177744
На это место мы переходим из двух точек: (1) прерывание HALT, (2) команда 'D'.
; Обработчик прерывания по сигналу/команде HALT
160210: CMP #056364, @#177776 ; Проверка, настроена ли память режима HALT
160216: BEQ 160224 ; Да, настроена
160220: JMP @#161720 ; Нет => выход на процедуру холодного старта
То есть, признаком того что нужно настроить 177744, является отсутствие значения 056364 по адресу 177776.
Теперь смотрим процедуру холодного старта:
; Холодный старт при включении питания
161726: MOV #001000, SP ; Устанавливаем стек
161732: CLR R0
161734: MOV #056364, -(R0) ; -> (177776)
161740: MOV #164042, -(R0) ; Адрес стандартной п/п вывода символа -> (177774)
То есть, сразу на холодном старте переменная 177776 будет установлена. В итоге переменная 177744 у меня оказывается не настроена, но на реале с ней всё в порядке.
Какой из этого вывод? видимо при холодном старте сразу после первой команды (настройки стека) возникает прерывание HALT.
- - - Updated - - -
NemigaBTL 1.0.77
Изменения с версии 53:
* Отладчик: подсказки для текущей инструкции.
* Режим экрана 896 x 624 увеличение 1.75 x 2
* Прерывание HALT на старте, только для конфигураций 4.05/4.06
- - - Updated - - -
Как итог, в этой версии заработала команда пульта '/', нужные ячейки стали открываться.
- - - Updated - - -
https://img-fotki.yandex.ru/get/404631/7448436.a/0_b18d6_38c45051_orig.bmp
nzeemin, На реале после включения пишет:
МРТИ КВ НЕМИГА 4.06 177777 РМП
ЖДИТЕ..._
И мигающий курсор. При этом на дисководе 0/1 загорается светодиод (двигатель не крутит).
Т.е в пульт самостоятельно не выходит, а только тогда когда будет нажата кнопка ПУСК.
- - - Добавлено - - -
Как итог, в этой версии заработала команда пульта '/', нужные ячейки стали открываться.
А состояние регистров устройств?
nzeemin, На реале после включения пишет:
МРТИ КВ НЕМИГА 4.06 177777 РМП
ЖДИТЕ..._
И мигающий курсор. При этом на дисководе 0/1 загорается светодиод (двигатель не крутит).
Т.е в пульт самостоятельно не выходит, а только тогда когда будет нажата кнопка ПУСК.
Думаю тут причина в том что функции сетевой платы пока не реализованы никак.
А состояние регистров устройств?
Буду делать постепенно, нужно разбираться с каждым отдельно.
Например, разница по 170004 -- эта ячейка используется микросхемой умножения/деления, пока не видел описания её работы.
эта ячейка используется микросхемой умножения/деления, пока не видел описания её работы.
Селектор адреса ВТ1 с аппаратным умножителем ВР2 с прошивкой 0006. ВГ1 управляется пр. 0007.
Кстати неверно что на emuverse указана прошивка 0005. Пр. 0005 и 0003 используются когда нет ап. умножителя. Т.е. умножение идет программно при этих прошивках.
На Немигах 4.05 и 4.06 ап. умножение. Да и на 3.03 судя по схеме тоже.
И ошибка MUL при тесте TSTVM2 при ап. умножителе, а при программном возможно её нет.
- - - Добавлено - - -
Буду делать постепенно, нужно разбираться с каждым отдельно.
Можно использовать программу TSTMD для правильной эмуляции дисководов.
- - - Добавлено - - -
И ещё баги.
В эмуляторе на пр.4.06.
Команда SH CON показывает память 3052Кб.
Команда SH МЕМ вылет в пульт.
Можно использовать программу TSTMD для правильной эмуляции дисководов.
Мысль правильная, тем более что я так уже делал для МС-0515.
В аттаче сырые треки, полученные после форматирования дискеты через TSTMD.
- - - Updated - - -
Ещё один аттачмент, сырые треки после форматирования в программе MF.SAV.
Отличие только в первом секторе дорожки 00:
0000000A: FF 17 -- правильное число секторов на дорожку, 23.
...
00000059: FF 17 -- правильное число секторов на дорожку, 23.
0000005A: FF 30
0000005B: FF 07
0000008A: 80 39 -- контрольная сумма
0000008B: FF 07 -- контрольная сумма
Поразбирался с драйвером MX.SYS, который называет себя "ДРАЙВЕР ГМД ФОРМАТА MX40/80 МИКРОЦОС LTD. V2.2"
Ожидания были такие что он соответствует драйверам MX от ДВК, описанному тут: http://zx-pk.ru/threads/20541-kontroller-kngmd-dvk-(-mx-)-i-rabotayushchie-s-nim-programmy.html
Но оказалось что он скорее "по мотивам".
Дорожка всегда читается и пишется целиком от начала до конца.
Структура дорожки которую ожидает этот драйвер.
Читаются первые 2841 байта от индекса.
Заголовок, 3 байта:
Маркер 0363.
Байт 0 (его можно рассматривать как старший байт от слова номера дорожки).
Байт номер дорожки.
Данные секторов, всего 11 секторов по 256+2 байт на сектор:
128 слов = 256 байт данные секторов
Слово контрольной суммы, полученное обычным сложением всех слов сектора.
Концевик
4 байта: 20 4F 54 01 (hex)
Слово: номер дорожки * 2
Все слова данных сектора, а также слово контрольной суммы, записываются в формате старший байт затем младший байт, что отличается от обычного представления слов в памяти (младший потом старший), поэтому после чтения сектора и перед записью выполняется SWAB над всеми словами.
Без концевика получается 3 + 11 * (256 + 2) = 2841 байт, именно столько читает драйвер, остальные байты до конца дорожки игнорируются (длина дорожки примерно 3125 байт).
При записи дорожки кроме заголовка и данных секторов пишется ещё 6 байт концевика.
Дорожка всегда читается и пишется целиком от начала до конца.
А разве для MX не всегда так?
>Структура дорожки которую ожидает этот драйвер.
Есть отличия от ДВКшного MX? Я только в двух словах концевика отличия увидел, так они у разных mx.sys на двк тоже отличаются.
>что он скорее "по мотивам". ..... выполняется SWAB над всеми словами
А как иначе? В ДВК кнгмд аппаратно работает со словами, а в Немиге - с байтами.
piotr433
22.04.2018, 22:20
У меня замечание к информации в emuverse по векторе прерывания 160006. Судя по листинге ПЗУ калькулятора Электроника МК-90, это вектор обработки прерывания от двойной ошибки шины в режиме HALT (в Немиге вызывает перезагрузку системы).
160000: .WORD 000000
160002: .WORD 160016, 000340
160006: .WORD 160022, 000340
160012: .WORD 160030, 000340
160016: CLR R0
160020: BR 160034
160022: MOV #000002,R0
160026: BR 160034
160030: MOV #000004,R0
160034: TST @#000050
160040: BEQ 160050
160042: ADD @#000050,R0
160046: JMP (R0)
160050: MOV (SP),R1
160052: MOV #001000,SP
160056: MOV 160116(R0),R0
160062: MOV R0,R5
160064: ADD #000025,R0 ;адрес конца строки
160070: MOV #000006,R4 ;число цифр
160074: JSR PC,100032 ;вывод восьмеричного числа
160100: MOV R5,R0
160102: MOVB (R0)+,R2
160104: BEQ 160114
160106: JSR PC,120034 ;вывод символа r2 на экран
160112: BR 160102
160114: BR 160114
160116: .WORD 006236 ;строка "ОСТ ПО АДРЕСУ 000000"
160120: .WORD 006265 ;строка "ДВ ОШ КАНАЛА 000000"
160122: .WORD 006314 ;строка "ОШ ВЕК ПРЕРЫВ 000000"
piotr433, спасибо. По 160006 я опираюсь на информацию из ТО: http://www.emuverse.ru/wiki/%D0%9D%D0%B5%D0%BC%D0%B8%D0%B3%D0%B0/%D0%A2%D0%9E
При нажатии на кнопку "ПУСК" на передней панели на выводах
8, 12 микросхемы D40 формируются сигналы начального пуска, которые
устанавливают микросхемы управляющей памяти и системного контролле-
ра в начальное положение и запускают микропрограмму начального пус-
ка. Данная микропрограмма формирует обращение процессорного ядра к
ячейкам памяти с адресами 160006 и 160010, где читает и устанавли-
вает программный счетчик и слово состояния процессора соответственно.
nzeemin, Ещё 4 бага.
Курсор не всегда мигает.
Положение курсора выходит за экран.
Кнопка забой неправильно функционирует.
При включении опции serial 176500 выдаёт ошибку "Failed to open COM port (0x00000002).
nzeemin, А каков сейчас статус эмулятора?
То что я вижу:
4.06 не работает вообще (после ввода D снова выдает приглашение пульта)
4.05 пробует грузиться, но я не нашел ни одного образа где бы загрузка пошла дальше вывода "MD Handler".
3.03 грузится, но ведёт себя странно.
пробовал версию 1.0 от 08.06.2016
В эмуляторе сейчас главная проблема это понять как должны правильно должны работать прерывания, и реализовать это видение.
Это должно решить большинство остальных проблемы, включая курсор, звук и общую стабильность.
А что для этого нужно?
Просто тут существует мнение (не моё) что не хватает образов дисков, и если изыскать несколько образов - то всё сразу завертится и чуть ли не сразу появится работающая версия эмулятора.
83444
Подскажите пожалуйста, каким образом можно запускать Бейсик и загружать исходный код?
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot