Для начала хотелось бы определиться с тем. какие комплектующие мне понадобятся, поскольку я бы хотел воспроизвести большую часть логики именно IMSAI, хотя и с небольшим дополнением, то есть полная реплика не планируется. Хотелось бы обойтись без микроконтроллеров, но использовать более современную элементную базу, если это позволит упростить конструкцию.
Хотелось бы сохранить такие фичи:
1. Во время работы процессора на полной скорости, тумблеры не мешают ему, но компьютер может посмотреть состояние верхних восьми тумблеров, обратившись к порту 0xFF командой IN.
2. Нижние восемь тумблеров могут записывать данные как в шину адреса, так и в шину данных в зависимости от того какой управляющий тумблер (без фиксации) был активирован.
3. Имеется возможность обратиться как по адресу на панели, так и по следующему за ним адресу ( Deposit next, Examine next).
4. При записи в порт 0xFF это меняет состояние верхних светодиодов, причём они сохраняют состояние до выключения компа или следующей записи. Почему-то у оригинала светодиоды показывали переданное значение в инверсии, то есть 0x00 - все светодиоды горят, 0xFF - все потушены, 0x7F - все горят кроме крайнего слева. Я бы сделал так как схемотехнически будет проще.
Так же хотелось бы добавить фичу аналогичную пункту 3, но с шагом назад, иначе если вспомнил про ошибку, придётся возвращаться к старому адресу, набивая его на тумблерах. Хотелось бы иметь возможность листать адреса и назад тоже, чего у оригинала не было.
Такому компьютеру не требуется ROM, поскольку произвольную программу можно набрать и отладить, а так же посмотреть результаты её исполнения, используя панель управления. Тем не менее хотелось бы оставить возможность добавить ещё кое-какие фичи:
- ROM чип с часто используемыми программами.
- Многоразрядный семисегментный индикатор, доступный через какой-нибудь порт или например по порту на каждый разряд с софтовой дешифрацией.
- 4x4 клавитура
- RS-232 или UART 5V для обмена данными с другими компьютерами, а так же для загрузки программ с внешних носителей.
- Я так понимаю, состояние шины адреса должно где-то хранится, если это не умеет сам остановленный процессор или память, понадобится сделать регистр адреса, причём умеющий делать инкремент и в идеале декремент.
- Для программируемых светодиодов понадобится восьмибитный регистр, который помнит их значение.
- Понадобится буфер для переключения нижних тумблеров между шиной данных и шиной адреса иъ верхних между портом 0xFF и шиной адреса
- У буфера должно быть состояние высокого импеданса, чтобы не мешать обмену между процессором и памятью.
- Понадобится какой-нибудь контроллер ввода-вывода, который можно подключить к компьютеру, дисководу, читалке перфоленты, магнитофону или ещё чему-то такому. В идеале какой-нибудь недорогой.
- Понадобится кварцевый резонатор для процессора в режиме полной скорости. Я думаю, можно взять на 1 МГц для удобства подсчёта таймингов.
- Понадобятся какие-нибудь микросхемы для debounce управляющих команд.
В эмуляторе IMSAI, который на скриншоте сверху, впрочем, у меня вполне неплохо получается работать - забивать программы в машинных кодах и запускать их. Хотелось бы попробовать такое же, но в железе.