Текущий план проекта мэсм-6
Apr. 11th, 2019 03:13 pmПо хардверу
(*) Добавить регистры-модификаторы режима прерываний: так называемые К[] регистры.
(*) Сделать экстракоды
(*) Сделать команду IJ - выход из прерывания.
(*) Реализовать внешние прерывания.
(*) FPGA: соорудить систему-на-кристалле для Altera Max 10. Для начала процессор, память данных, память команд.
(*) FPGA: система-на-кристалле для Xilinx Spartan-7.
(*) Контроллер внешних прерываний.
(*) Последовательный асинхронный порт UART.
(*) Таймер.
(*) Порты GPIO.
(*) Порты SPI.
(*) Порты I2C.
(*) Схема платы МЭСМ-6.
(*) Разводка платы.
(*) Изготовление платы.
По софту
(*) Собрать Паскаль-Монитор компилятором FreePascal. Добиться, чтобы он выдавал ровно тот же объектный код.
(*) Документировать объектный код, выдаваемый компилятором (так называемый "стандартный массив").
(*) Дизассемблер для этого объектного код, на основе имеющегося DTRAN.
(*) Линкер для этого объектного кода.
(*) Ассемблер, принимающий на вход упрощённый БЕМШ/Madlen, и выдающий совместимый объектный код.
(*) Переписать рантайм библиотеку Паскаля на этот ассемблер. Адаптировать к нуждам приложений Arduino.
(*) Библиотеки обслуживания прерываний, таймера, портов UART, GPIO, SPI, I2C. Всё в стиле Ардуино, но на Паскале и ассемблере.
(*) Набор примеров простых ардуинных приложений на Паскале.
(*) Руководство по компилятору на основе имеющейся документации Паскаль-Монитор.
(*) Пакет plug-in для стандартной среды Arduino, добавляющий компилятор Паскаль, библиотеки и примеры для платы МЭСМ-6.
Планы наполеоновские, но есть шанс постепенно осилить. Кто за что готов из этого списка взяться - объявляйтесь. Тут работы на роту хватит.
План не высечен в граните: будем менять по мере продвижения и изменения концепции.
no subject
Date: 2019-04-12 10:27 pm (UTC)Куда спешить, на 120-то МГц? И откуда возьмется отсутствующая область памяти?
Переменные компилятор кладет в common-block P/1D, а вот константы - в конец кода.
В том-то и идея, что переписывать надо не на С, а на С++. Тогда при правильной огранизации битовых полей и 064 в старших разрядах можно магическим образом получать, и множества из [....] превращаются просто в BESM6Set("[....]"), и вложенные функции становятся методами классов, и т.п. В итоге а) затраты труда будут сравнимы с переносом под FreePascal, если не меньше, и б) потенциальный круг читателей/понимателей/участников сильно возрастает.
no subject
Date: 2019-04-12 11:44 pm (UTC)Лучше сохранять PC и состояние в регистрах. Дальше пусть софт решает, как их запихивать в стек, если надо.
Можно и на Си++. На усмотрение разработчика. Но мне кажется, там немного осталось допиливать под FreePascal.
no subject
Date: 2019-04-13 02:04 am (UTC)Или как-то разработать некий аналог ДИСПАК (чего-то подобного на уровне команд пользователя) чтобы помимо пакетного режима был многопользовательский режим. Вход в многопользовательский режим через некий ардуиновский шилд, на котором будет работать эмулятор текстовых терминалов и телнет сервер.
Может стоит retrobsd портировать когда будет Си :)
no subject
Date: 2019-04-17 04:45 am (UTC)Зато для обучения низкоуровневому программированию МЭСМ-6 очень даже подойдёт. Уровень Ардуино: Паскаль и ассемблер.