про лазердиск от живого владельца :)
http://zx.pk.ru/showpost.php?p=586219&postcount=534
Вид для печати
про лазердиск от живого владельца :)
http://zx.pk.ru/showpost.php?p=586219&postcount=534
Вопрос по системе ПРОС: кто знает, что за EMT 377 на этой системе? Все игры под ПРОС усиленно туда обращаются.
А не вывод ли это строки на экран или в определённую область экрана в RSX,
по аналогии с EMT44 на УК-НЦ? > поиск находит эту команду в сообщении от Alex_K :
Цитата:
Сообщение от Alex_K 01.12.2011 20:11
---------- Post added at 16:35 ---------- Previous post was at 16:32 ----------
Все директивы в RSX системе используют EMT 377. Код директивы либо заносится в стек последним аргументом либо в стек заносится адрес блока аргументов. Код директивы всегда нечетный. Узнать директиву по коду можно на стакане командой "HELP EXE DIC", описание директивы выдается по "HELP EXE dirname", подробное описание с примером блока аргументов есть в Executive Reference Manual.
Не встретились потому что таких нет.
Читай внимательнее - я написал, что коды директив ОБЯЗАТЕЛЬНО нечетные. Если это четное число, значит это адрес блока параметров в котором код директивы лежит первым словом :)
---------- Post added at 23:33 ---------- Previous post was at 23:32 ----------
Кстати еще фича: код директивы состоит из двух байтов, один - код директивы, второй - длина блока параметров в словах.
Он сумбурный, просто дизассемблированный дамп памяти размером 30 с лишним килобайт с некими пометками. К тому же, у меня свой дизассемблер, понятный мне, но не очень дружественный любителям PDP11, с 16-ричными числами и некими сокращениями и упрощениями.
Пример:
Звездочками помечаю те строчки, которые убираю, чтобы трассировать дальше, пропуская ненужные системные вызовы.Код:7558 17C1 0028 MOV (#$0028),R1
755C 031D BEQ $7598
755E 1C42 0004 MOV $4(R1),R2
7562 1089 MOV R2,(R1)
7564 0A0A CLR (R2)
7566 1C43 0006 MOV $6(R1),R3
756A E083 SUB R2,R3
756C 0A83 INC R3
756E 10F2 0002 MOV R3,$2(R2)
7572 15F1 8080 0044 MOV #$8080,$44(R1)
7578 1042 MOV R1,R2
757A 65C2 000C ADD #$000C,R2
*757E 10A6 PUSH R2
*7580 15E6 023F PUSH #$023F ; $GTSK (Get Task Parameters)
*7584 88FF EMT $FF
; Получить 16-словный массив параметров таска по адресу $72F4
; R2 - указатель на массив параметров
7586 8703 BCS $758E ; Если ошибка, то -> $758E
7588 1CB1 000E 0044 MOV $E(R2),$44(R1) ; Параметр 7 (User Identification Code) -> ($72E8 + $44)
758E 15F1 FFFF 0028 MOV #$FFFF,$28(R1)
7594 0A31 003E CLR $3E(R1)
7598 0087 RTS
Пока что уперся в сообщение: PASCAL -- Fatal initialization error
Очень неудобно смотреть - в шестнадцатеричном виде теряется наглядность и охрененно затрудняется запрос хелпа по директивам. Когда я пишу в интеле или просто на C (кроме кода, относящегося к PDP-11), я использую шестнадцатеричные числа для нагладности, но использовать их для потери таковой... :)
Я тоже работал с шестнадцатеричными числами во много раз больше чем с восьмеричными несмотря на солидный стаж PDP-11 (единственная архитектура где я применяю восьмеричку, а их было много), но тем не менее я от этого не пытаюсь переводить вообще все в шестнадцатеричную систему: это всего лишь приведет в данном случае к отсутствию наглядности (переводить код в инструкции и даже просто узнать код который ошибочно [не]дизассеблировался придется с вычислениями), а уж когда дело доходит до понимания что собственно делается - начинается полное счастье так как в справочниках и доках разумеется все в восьмеричном :)
Вот если бы речь шла о том, чтобы с этими числами вычисления проводить или разбирать на отдельные байты - тут был бы смысл :)
Есть задачка важная, может кто-то сможет помочь - очень нужно "починить" один файлик из набора автотеста, т.к. загрузка Э-85 затыкается на проверке КС одного модуля.
Разные цитаты:
;ПРОИЗВЕСТИ КОНТРОЛЬНОЕ СУММИРОВАНИЕ СОДЕРЖИМОГО ПЗУ МОДУЛЯ
;КОЛИЧЕСТВО СУММИРУЕМЫХ ЯЧЕЕК РАВНО СОДЕРЖИМОМУ БАЙТА 7 ПЗУ, УМНОЖЕННОМУ НА 200
В R0 - уже занесена емкость ПЗУ (из мл. и ст. байтов 6,7), это число известно заранее и прописано в этой же ПЗУ
Дописал, как, я понимаю, там проводится эта проверка:
В общем как можно узнать _какое именно_ значение КС (т.е. два байта) _должно быть записано_ в конец ПЗУ что бы TST 1020 в итоге дал 0?..Код:BIS #-1,1020 (либо MOV #177777,1020) ; начальное значение в рабочей ячейке КС
1S: MOV #200,R1 ; Начинаем новый цикл по 200 байт
2S: MOVB 174200,1022 ; каждое чтение по адресу слота 174200 даст следующий байт из содержимого ПЗУшки
MOVB 174200,1023 ; (там аппаратно увеличивается внутренний указатель на данные)
MOV 1022,R2 ; таким образом считали 2 байта из ПЗУ
; сама кухня КС:
XOR R2,1020 ; "Исключающее ИЛИ" считанных 16 бит (R2) и накопительным значением текущей КС (содержимым 1020)
CLC ; очистили флаг переноса
ROL 1020 ; сдвинули влево накопительное значение текущей КС (повышаем надёжность?)
ADC 1020 ; (зачем-то прибавили туда перенос)
SOB R1,2S ; R1-- 200 раз пока не == 0
SOB R0,1S ; R0--, достигли окончания данных в ПЗУ? (зависит от емкости ПЗУ)
TST 1020 ; КС=0? ДА - ОК, ЕСЛИ НЕТ - ОШИБКА КС СОДЕРЖИМОГО ПЗУ МОДУЛЯ
В идеале переписать бы на С пример для универсального подсчета по массиву байтов :v2_rolley.
В аттаче - корректные файлы ПЗУ для примеров, ну и описание полей...
Эта конструкция равносильна обычному циклическому сдвигу влево, но без бита переноса. А так как ROL через бит переноса, то идет пред и посткоррекция.
Т.е. весь алгоритм подсчета контрольной суммы - это:
1) a = a ^ b
2) a = a rol 1 (циклический сдвиг без бита переноса)
---------- Post added at 22:33 ---------- Previous post was at 22:29 ----------
Ну и разумеется, в конец ПЗУ должно быть записано значение КС всех слов без последнего.
---------- Post added at 22:35 ---------- Previous post was at 22:33 ----------
На Си, очевидно, алгоритм подсчета будет выглядеть так:
unsigned short a, b;
a = a ^ b;
a = (a << 1) | (a >> 15);
Давно хотел выложить маленькую антологию плат сопроцессора MS-DOS для Электроники 85:
плата БA-86M (на плате маркировка дат: 29.02.8_(последняя цифра непонятная то ли 8 то ли 9))
http://img-fotki.yandex.ru/get/9256/...29720ebe_L.jpg
http://img-fotki.yandex.ru/get/9364/...18206511_L.jpg
Описание в прошивке: 052291 "ЦНИИ ЦИКЛОН"; дата биоса: 22/05/91. (разогнанный вариант, 640К ОЗУ)
плата МС-1702 (на плате маркировка дат: 29.06.88):
http://img-fotki.yandex.ru/get/4013/...5aeb7fcf_L.jpg
http://img-fotki.yandex.ru/get/4108/...5bfec7fe_L.jpg
платы МС-1702 (на платах маркировка дат: 9.10.90):
http://img-fotki.yandex.ru/get/9311/...c98f7ecb_L.jpg
http://img-fotki.yandex.ru/get/9060/...26f3fe11_L.jpg
Описание в прошивках: 030387 "ЦНИИ ЦИКЛОН"; дата биоса: 17/11/88
Продолжу...
Следующий сет: Контроллер МОС-80 (БА-80), аналог PRO-CP/M (PC3XS-AA) Card ID: 000043
Плата 7.102.291 (на базе CPU Z80):
http://img-fotki.yandex.ru/get/9110/...7ffa335c_L.jpg
http://img-fotki.yandex.ru/get/9263/...64b74776_L.jpg
Характеристики:
http://img-fotki.yandex.ru/get/9161/...2a4b2a14_L.png
Операционная система CP/M-80:
http://img-fotki.yandex.ru/get/9109/...f1f82ed2_L.png
http://img-fotki.yandex.ru/get/6709/...692fe75b_L.png
ОС МОС-80 (адаптация МЭП СССР, ИПИ АН СССР)
http://img-fotki.yandex.ru/get/9152/..._4effef4_L.png
Сейчас позвоним...
Образ RD52-A (Quantum Q540) от DEC Pro 380.
44 сектора не прочитались - в образе такие сектора заполнены значением 0xADDE.
Установлена P/OS 3.0. Образ проверен XHomer-ом от anasana - P/OS загрузилась.
http://rghost.net/48065881
mvb, спасибо!!
На диске установлен DECNET версии 2.0, в сети встречал пока только его первую и 2.1 версии.
P.S.:
в конфиг Xhomer'а прописать: rd0 = rd52.bin, 8, 512, 16
логин: system
пароль: system
P.P.S. Хе, да и сама ось 3.0... Супер.
Дистриб P/OS в сети я видел только версии 3.2, а тут четко 3.0 установлен.
А сетевую эмулировать некому. Хотя вариант по коммуникационным портам ещё остается.
Некому в смысле "нет документации"?
Если не ошибаюсь, сетевая карточка все-равно так и не была реализована в DECnet для P/OS (хотя мои сведения могут и устаревшими быть), так, что речь все-равно идет о сериал порте :)
В тему прошивок:
Информация о прошивках для Pro-шного HDD контроллера:
Те прошивки, которые ранее выкладывал anasana, являются самыми последними (071B2 072B2 073B2). Я сравнил их со своими прошивками от контроллера, который работает с RD52A и чипы имеют на себе соответствующую маркировку - образы совпали.Цитата:
First released controller for RD50 ONLY had the following ROMS
013B2 014B2 015B2
ROM Change
013B2 014B2 021B2
ROM Change
013B2 014B2 063B2 (the 63 might have been 61 or 62, don't know for sure)
LAST Change
071B2 072B2 073B2
The last change provided support for ALL disks that are available fro the PRO
from the RD50 thru the RD53 as well as the RD31 and RD32.
The only thing you need to worry about if you have the ROMS on your controller is the REV of P/OS necessary to support the disk.
Если плату расположить интерфейсным разъёмом вниз, то расположение чипов с прошивками следующее:
и заодно для МС0585:Код:[> 073B2 ] [> 072B2 ] [ ]
[ ] [ ] [> 071B2 ]
т.е. соответствие кодов чипов именам файлов anasana следующее: 073B2 - это winie17, 072B2 - winie11, 071B2 - winie2Код:D17 D11 D5
[> RE3-06] [> RE3-05] [> RE3-04]
У одного из контроллеров были установлены прошивки предпоследней редакции. Интерес представляют сугубо исторический - прошивки в аттаче.
Кроме того, были считаны прошивки от контроллера HDD МС0585. Два набора чипов совпали по содержимому друг с другом, но не совпали с обоими наборами Pro-шных прошивок.
Теперь по Pro-шному контроллеру дисковода RX50:
У всех моих контроллеров наборы прошивок PROM и 8051 идентичны, от прошивок anasana отличаются.
И на последок славно известный PC Bridge:
http://img41.imageshack_.us/img41/6387/2lxl.jpg
http://img209.imageshack_.us/img209/2843/1640.jpg
P.S. Софт для него должен быть в образе RD52A, который выкладывался чуть ранее.
я в книге читал что карточку для Э-85 таки сделали. Я в роуминговой командировке, поэтому до сих пор так кратко и скан приложить не могу.Цитата:
form
Если не ошибаюсь, сетевая карточка все-равно так и не была реализована в DECnet для P/OS
Описательная документация к микросхеме и плате есть (правда без расшифровки выдаваемых селф-тестом ошибок, поэтому, что именно проверяет каждый конкретный участок кода придется догадываться), да и навороченная она.Цитата:
shattered
Некому в смысле "нет документации"?
Единственное "но" - нарытое диагностическое ПЗУ с платы DECNA было считано с многочисленными ошибками, или может микросхема такая у них была, или программатор поучаствовал, в общем, контрольная сумма по тому что мне прислали не сходится и каша начинается прямо с точки входа после заголовка.
mvb, я потрясен :)
На плате две микросхемы HM6264Р-12 это получается в них младший и старший байты БИОСа со стороны процессора 8086 (наверное это "масочные" аналоги 2764, но надо по количеству ножек проверить наверняка и очень желательно их тоже попробовать считать, так как им генерируется таблица векторов прерываний для платы).
А какая маркировка у микросхем памяти? сколько там на борту ОЗУ в сумме получается?
Видеоадаптер интегрирован, полноценные часы... И похоже софт от нашей 1702 совсем не подойдет.
Я разбил дизассемблированный дамп DIAROM PC-Bridge по секциям, и для сравнения приаттачил так же и рабочие уточняющиеся черновики пока частично прокоментированых МОС80 (Z80) с МС1702, похоЖесть и родословная для меня оказались неожиданными.
P.S. Обновленную инфу по прошивкам из RD/RX и НМД/НГМД теперь можно будет вполне поскладывать с фотками разных ревизий от Denkixot.
ИС 6264-12 - это СОЗУ 8 кбайт, 120 нс, в 28-пин корпусе Джедек.
Если на плате точно нет ПЗУ - значит, инфа в эти СОЗУ грузится при загрузке ОС -
драйвером.
anasana
Фото ОЗУ с других ракурсов:
http://img694.imageshack_.us/img694/3093/6lq7.png
http://img827.imageshack_.us/img827/1263/vzii.png
Мои дампы ПЗУ DECNA-K и TMS совпали с твоими, поэтому я о них и не упомянул. Т.е. твой enete29.rom корректный. А извлечение/установка ПЗУ пошли DECNA-K на пользу - ошибка начального теста ушла.
Речь не о карточке. Речь о софте для нее. По моим последним сведениям, единственный софт для DECNA - драйвер для RT-11. Можно TCP/IP для RT-11 запустить :)
А вот для DECnet/POS вроде драйвера не было. Ну и для DECnet/RT-11 по определению нет.
Но могу и ошибаться. Надо просто попробовать поставить да посмотреть что он там предлагает.
shattered, ну в общем теперь как-то вот так:
http://img-fotki.yandex.ru/get/9361/..._6468aff_L.png
Код:DFCFILE11A
000000 .dir
corimg .sys
indexf .sys
pos .sys
bitmap .sys
zzsys .dir
posres .tsk
sas .com
startup .tsk
mcrmu .tsk
sascom .tsk
sys .tsk
sumpbb .tsk
indirect .tsk
sumfbi .tsk
pip .tsk
fcsres .tsk
sas .com
rsx .dir
Обновилась документация на bitsavers.
Есть вопросик... В Э-85 и Pro контроллерах дисководов есть такая функция в прошивке c микрокодом управления 1818ВГ93:
(в терминах Xhomer)
PRO_RX_CMD_RFORMAT - Чтение параметров формата выбранного ГМД
Возвращает:
- число дорожек на диске (0120 – для 80-дорожечного ГМД, 050 – для 40-дорожечного ГМД)
- код длины сектора (128 / 256 / 512 / 1024)
- максимальный номер сектора на дорожке (до 12-ти)
- поперечная плотность дорожек используемого ГМД (1,5 дорожки/мм (40-дорож. диск) / 3 дорожки/мм (80-дорож. диск); нарыл какой-то ГОСТ 28272-89)
При неудаче: в РОШ Код ошибки - Характер ошибки
0344 - Ошибка при чтении параметров формата выбранного ГМД
0340 - Плохо форматированный или чистый ГМД (насчет этой не уверен что сюда относится)
Как по вставленному в дисковод дискету привод/контроллер определяет такие возможности у носителя, или это опрашиваются аппаратные свойства самого дисковода?
P.S. Ещё софтовая диагностика определяет и количество рабочих поверхностей, но я пока не определил из откуда и что она считает за пруф.
P.P.S. Соответственно есть и:
PRO_RX_CMD_SFORMAT - Установка параметров микропрограммы в соответствии с форматом используемого ГМД
параметры такие же, а ошибка из списка подходит, думаю, такая:
354 - Попытка установить недопустимые параметры микропрограммы
Наконец-то убрал мусор со своего варианта эмуляции платы расширения MSC11-CK (256 Kb MEMORY MODULE).
В Xhomer в слоту стояла только общая рыба-заглушка по регистрам.
Самая жесть была в том как обработать WROP (Diagnostic Write Opposite; тест XX0004),
по остальным тестам было достаточно понятно что они могут хотеть от платы.
http://img-fotki.yandex.ru/get/9493/...62cf7e77_L.png
Кстати в CHARON-11 программисты забили на полную предварительную обработку ошибок при старте и подкорректировали проверочное ПЗУ убрав оттуда какой-то из тестов :).
Также не стал добавлять случайные Parity-ошибки во время штатной работы модуля в системе, и так глюков достаточно :).