это как раз несложно, а будет ли работать простой советский MS Windows? :)
Вид для печати
Винда 3.1 должна работать как последняя, умеющая в 286-й. Собсно это я и постараюсь проверить, как дочиню свою машину. Сейчас пока что бьюсь с проблемами с памятью.
Как и ожидалось, 1842 отличается разными мелкими, но важными деталями от оригинала, и ТО было бы весьма в тему -- с полпинка не заводится. С пятого -- что-то получилось :)
Например, второй контроллер DMA кажется отсутствует, но обращения к похожим портам есть.
+ шрифт неплохой, да
https://i.imgur.com/Cakr4mC.png
+
https://i.imgur.com/GFAiNYp.png
Дизассемблированная (мной) прошивка клавиатуры ЕС1840.С000
https://github.com/rcgoff/es1840kb/
Программист прошивки явно не любил программировать структурно. В частности, при запуске и сбросе клавиатура должна вывести в компьютер 0xAA и потом коды залипших клавиш. Так вот в этой прошивке есть процедура вывода в порт "на общих основаниях" (при работе) и процедура вывода в порт при инициализации, две почти идентичных.
Сканирование для залипших клавиш при инициализации и сканирование при основной работе - также две отдельных процедуры.
Думаю, при небольшом рефакторинге код можно было бы хорошенько уменьшить.
Исходная клавиатура IBM (прошивка которой, да и схемотехника, совершенно другие) при заполнении своего буфера FIFO выдает в компьютер 0xFF. Клавиатура ЕС1840 просто теряет старые коды в буфере.
Клавиатура имеет ошибку. В отличие от клавиатур AT, где светодиоды зажигаются с компьютера, зажигание светодиодов в клавиатуре ЕС1840 выполняется прошивкой клавиатуры. При команде сброса с компьютера клавиатура гасит светодиоды ЛАТ и ЦИФ, но ничего не делает с РУС. (в коде это метка ledinit: ). Поэтому если перезагрузиться по Ctrl-Alt-Del с горящим светодиодом ЛАТ, после перезагрузки не будет гореть ни один светодиод.
Для устранения этой ошибки нужно после ledinit: anl p1,#3fh вставить зажигание РУС и соответственно изменить контрольную сумму.
Клавиатура при запуске выполняет самотест и проверяет контрольную сумму ПЗУ, должна быть 0x00.
shattered, вы пробовали разобраться, какие манипуляции с памятью (ещё до того, как запустить тест память) делает машина при старте? В частности, интересуют обращения к порту 77...
А откуда такая интересная дискетка с драйвером???
Не видел такого в прошивке 4202004.bin--4202007.bin -- она обращается к портам 72-73. Я пока отключил тест расширенной(?) памяти, потому что он затирает стек при старте.
Дискета когда-то пролетала в клубе Галерис, там ее и считал. Занятно, что на ней защита от копирования :)
dk_spb прав, писал по памяти и немного промахнулся, на пару адресов)))
Опишу текущую проблему с машиной, т.к. пока что попал в тупичок.
Перед тем, как проинициализировать видеокарту и запустить тест памяти, плата как-будто ломится в оперативку для "грубой" проверки на наличие памяти, ПОСЛЕ этого делает какие-то хитрые манипуляции с банками и уже после этого запускает основной тест.
На моей машине возможно два сценария запуска:
1) Просто включаем. Запускается тест, отсчитывает до 384К, и тут либо зависает, либо уходит в ребут (иногда с зависанием, иногда по сценарию 2).
2) Если при "грубой" проверке потыкать пинцетом по адресам РУшек одной из банок, этот предварительный тест "как-будто" меняет половинки памяти местами, И запускает тест. Тест доходит до 640К с "нормальной" скоростью и дальше медленно доковыляет до 1024К. Ошибок по памяти нет. При таком запуске дальше происходит самое интересное: ТПС успешно тестирует память без ошибок (в самом ТПС я выставлял конфигурацию, что у меня 640К основной и 384К расширенной). CheckIt ожидаемо видит только 640к. Если ему явно указать ещё 384К extended, он ее не тестирует все равно. Попытка запустить m286 приводит к зависанию машины.
Есть ощущение, что внутри машины, если банки не "ремаплены", то где-то проблемы с адресацией и после проверки первых 384К процессор улетает "вникуда". А если "ремап" был, то логика отрабатывает корректно.
Ввиду того, что на данный момент нет ни схем, ни док, по сути единственное действие осталось щёлкать перемычки и глянуть, есть ли какие различия в поведении. Пробежавшись по микросхемам в надежде найти что-нибудь 3-уровневое или залипшее, ничего интересного не нашел. Думал начать плясать от драйвера CAS на РУшках, но прозвонкой нашел только 33-омную резисторную сборку (на другом конце платы), а уже кто драйвит сборку - не нашел. Видимо, плохо искал)
В данный момент переключился на другой, чуть более успешный, проект, но плата 42-й лежит под столом и в любой момент готов продолжить любые эксперименты)
Вот фоточки, которые наделал за время ковыряния с ней. Были заменены несколько РУшек, потом внезапно "отгнил" один выход данных с одной из ПЗУ, прошил свежую. Пока были дохлые РУшки, тест ОЗУ при старте просто видел не всю память, сначала 512, потом 896К. А потом внезапно стало работать так, как сейчас.
https://photos.app.goo.gl/gTUEqbSQA4fB1E2d7
shattered, а образ дискетки как-то можно получить?)
Ковырял плату ЕС1840.0006, пользуясь статьей dk_spb http://oldpc.su/pc/ec1840/ec1840rep.html
В статье отличная картинка распределения битов по корпусам, но к некоторым местам статьи появились замечания.
1. В описании перемычек платы памяти обозначения SA1 и SA2 перепутаны относительно принципиальной схемы. В координате B1 согласно схемам находится SA1.
2.- это не так, порта управления в 1840.0006 нет.Цитата:
Перемычками SA1 задается адрес порта управления платы (при использовании нескольких плат ОЗУ в одной машине).
3.В реальности первые 2 символа (т.е. первый байт) указывают старший байт сегмента, а второй байт (вторая пара символов) - это XOR записанного и прочитанного, переведя который в двоичную систему можно определить сбоящий бит, но из сообщения не будет ясно, в четном или нечетном банке ошибка. Тест в ЕС1840 использован от IBM PC, где шина была 8-разрядная и такой проблемы не было.Цитата:
При наличии сбойных ячеек ОЗУ при включении компьютера на экран выводится ошибка, первые два байта которой показывают два старших разряда проблемного адреса в шестнадцатеричной форме. По ним можно установить проблемный банк. Понять какой бит сбоит и какую микросхему ОЗУ следует менять из сообщения об ошибке мне не удалось
Если вторая пара символов 00, это означает ошибку в бите паритета.
Если ошибка все же позволяет загрузить систему (т.е. если при приглашении "RESUME - PRESS F1" при нажатии Ctrl-Alt-Del проходит загрузка DOS), можно, не пользуясь сторонними утилитами, точно определить место сбоя. Для этого загружаем DOS, запускаем debug, отключаем контроль четности (0 в порт 0a0h), переписываем тест памяти из ПЗУ в ОЗУ и выполняем его, предварительно записав в DS и ES адрес сегмента, который высвечивается в сообщении об ошибке. По завершению теста посмотреть регистр DI, в нем будет смещение сбоящего байта.