Uzix | микроблог

#Pc

Спаял шляпу с PAL/NTSC кодером для EGA...

Спаял шляпу с PAL/NTSC кодером для EGA-видеокарты. У моей PEGA2A дорожки к разъёмам-колокольчикам, видимо, идут как попало, и на картинке есть заметные вертикальные полосы (т.н. jailbar), но если вывести картинку минуя цепи видеокарты - то всё нормально. Композитный CGA ожидаемо не заработал - для этого NTSC кодер должен тактироваться от того же источника, что и сама видеокарта, а на шляпе свой кварц. Завтра в порядке эксперимента попробую взять нужный тактовый сигнал с разъёма EGA feature connector.

Релиз Kharon-386

Публикую свой небольшой хобби-проект - Kharon-386. Это миниатюрный IBM-PC совместимый компьютер с 386 процессором, интегрированным VGA видео и звуком.

Технические характеристики:

  • M6117D SoC со встроенным ядром 386SX40 (по большей части совместимым с обычным i386) и чипсетом M1217B
  • 4 Мб ОЗУ
  • TVGA9000i VGA видео
  • ES1868F SoundBlasterPro-совместимый звук
  • SAM2695 MIDI-синтезатор
  • ESP8266 WiFi-модуль
  • PS/2 разъёмы для мыши и клавиатуры
  • 2xCOM порты
  • Слот CompactFlash
  • Встроенные часы с батарейкой
  • PC-спикер
  • Питание от microUSB БП 5.1В (можно использовать БП от Raspberry Pi)
  • Две четырёхслойные печатные платы размером 10x10см + печатная плата передней/задней заглушки корпуса
  • Корпус G738 или G706

Проект открытый и некоммерческий, исходники распространяются под лицензией CC-BY-SA-4.0. Все исходные файлы, файлы для производства и прочая информация доступны по ссылке:

https://github.com/UzixLS/pc-kharon-386

Закончил разработку GM BLASTER 5504...

Закончил разработку GM BLASTER 5504 - MIDI-дочки на базе чипа SAM5504B. Этот чип является более продвинутой версией привычного SAM2695 с улучшенной полифонией (81 одновременно звучащий голос против 64) и с внешней ПЗУ для загрузки собственных банков через USB. Так же по USB чип определяется как стандартный MIDI-выход и умеет проигрывать поступающий поток команд - потому на плате предусмотрен джек 3.5 - чтобы устройство можно было использовать самостоятельно, без звуковой карты.

Запустил китайскую GeForce FX5500...

Запустил китайскую GeForce FX5500 на PIII системнике от Kraftway со старой версией PCI. Для этого в порядке эксперимента подал 3.3В от внешнего источника питания. Драйвер не устанавливал, т.к. основной картой пока останется Matrox G450. Дальше закажу вот такую замечательную плату: https://www.vogons.org/viewtopic.php?t=85125 - после чего FX можно будет поселить в системнике на постоянной основе.

Продолжение истории про отсутствие звуковых эффектов в Tyrian на Хароне...

Продолжение истории про отсутствие звуковых эффектов в Tyrian на Хароне-386. Чтобы убедиться, что дело не в ошибке в схеме или в разводке плат Харона, приобрёл одноплатный компьютер на базе такого же чипа M6117D. И оказалось, что на нём точно такая же проблема. Наверное, лучшим выходом было бы использовать в Хароне стандартный 386 процессор + чипсет, но китайцы таковые не продают, а распаивать старые платы ради новоделов у меня рука не поднимется.

Играюсь с воспроизведением MIDI-музыки на Хароне-386...

Играюсь с воспроизведением MIDI-музыки на Хароне-386 через COM-порт. Raspberry Pi 1, к сожалению, никак не поддерживается проектом MT32-PI (даже сборку под ARMv6 не делают), зато на Raspberry Pi 3 и на обычном Wintel ПК (через связку Hairless MIDI Serial Bridge + loopMIDI + Midi Player) всё удалось настроить влёт. В принципе, особого смысла в такой конфигурации нет – т.к. на Хароне есть довольно неплохой встроенный MIDI-синтезатор на SAM2695 – но заставить работать всю эту цепочку было интересно.

Столкнулся с неработоспособностью DOSLFN на Хароне...

Столкнулся с неработоспособностью DOSLFN на Хароне-386: программы с поддержкой длинных имён файлов либо не видели их, либо (если запущен EMM) падали с сообщением об ошибке. Сначала грешил на проблемную CF-карту, на битую память, на ошибку в схеме по части подключения CF, но в итоге стало понятно что проблема, скорее всего, программная. Я долго не хотел лезть в эту проблему т.к. совершенно ничего не знаю ни об отладке в MSDOS, ни даже ассемблера x86 (спойлер: если бы знал, проблема бы решилась спустя 30 минут после прочтения сообщения об ошибке). В общем, пришлось погрузиться в этот мир на пару вечеров. В обнимку с debug.exe (а позднее уже и Turbo Debugger) и документацией по DOS API, скачанной с самых задворков интернета, написал небольшую программку, которая всё что делает - это простое обращение к LFN API для поиска файла по длинному имени. Ожидаемо, на Хароне это обращение проваливалось - с ошибкой “файл не найден”, в то время как на любой другой машине проходило.

Долго ли, коротко ли - трассировка привела к замечательной функции в исходниках DOSLFN:

proc GlobbingEx
 mov di,[CurPathComp]
 xchg si,di
 call Globbing
 xchg si,di
 db 0D6h ;setalc
 or al,al
_glob_ret:
 ret
endp

Эта функция вызывается для каждого файла в каталоге и сопоставляет его длинное имя с искомым. И трассировка показала, что именно в этой функции есть странная инструкция “db 0D6h ;setalc”, которая на Хароне выполняется не так, как на других машинах! Оказалось, это недокументированная инструкция, которая по факту есть во всех процессорах начиная с 8086. Во всех, но, не в M6117D, который используется в Хароне! И который вроде как заявляется как полностью 386SX-совместимый. После замены этой инструкции на стандартную “sbb al,al”, которая делает то же самое, но занимает на 1 байт больше места (вот так “экономия”!), DOSLFN прекрасно заработал. Вот такой мини-детектив. Письмо мейнтейнеру DOSLFN я написал, надеюсь, это исправление войдёт в следующую версию.

Давненько ничего не писал про Харон-386...

Давненько ничего не писал про Харон-386. Ещё в прошлом году столкнулся с проблемой в работе звукового чипа ES1868 - назначался неправильный IRQ при загрузке драйвера. Т.е., например, драйвер назначает карте IRQ 5, а она оказывается на IRQ 7. Искал проблему в схеме, на плате, перебирал драйвера, перечитывал документацию, прозванивал, сравнивал с аналогичными картами - всё без результата. Так и забросил на полку почти на полгода. Сейчас просто решил сдуть чип и запаять другой - и всё завелось как надо… Что это было? Может быть перемаркировка другого чипа, или, может быть на заводе зашили другое содержимое встроенного ПЗУ (в котором и хранятся номера IRQ) - непонятно.

Движемся дальше - нет звуковых эффектов в Tyrian (а MIDI/FM музыка есть). Посмотрим сколько времени займёт эта проблема…

Наладил TCP/IP через WiFi на Хароне...

Наладил TCP/IP через WiFi на Хароне, но пока весьма костыльным способом - поднял на Linux-машине SLIP-туннель на виртуальном последовательном порте, расшарил с помощью socat этот порт через TCP, на Хароне в WiFi-модем залил прошивку Zimodem, подключился через неё на этот TCP-порт, и, наконец, подключил к COM-порту wifi-модема пакетный драйвер с поддержкой SLIP - ethersl. В общем, “в зайце утка, в утке яйцо”… Эту цепочку можно сильно сократить если использовать прошивку esp_slip_router, но этим займусь уже потом.