Эмуляция Xerox Alto

 


Интересно получилось - читал про 4битные процессоры и наткнулся на неведомую часть ALU. Стал читать про чип и увидел во Вракипедии упоминание об используемых компах, один оказался Xerox Alto, про который я раньше слышал. К счастью, нашлось немало эмуляторов, софта и документации. "К счастью" означает, что нет чехарды с образом ROM и пропавшими/нерабочими эмуляторами. Стал читать доки, пока накопал только небольшой список команд - ?(вывод каталога диска) и TYPE - просмотр текстового файла.

Взял эмулятор Contralto, посмотрел всякие игрушки и программы:


Давно меня интересует алгоритм, к сожаления не нашлось исходника :'(


А похожее я видел на Atari.

Стал искать средство работы с образами дисков, нашелся исходник aar.c. Я мало знаком с Си, поэтому каждая компиляция - это заноза в жопе. Исходник не компилируется, не находит объявленную функцию main(). Оказалось, что формат текста был не привычный для TinyC, а макинтошевый с 0D как возврат строки. Исправил.Компилятор подавился на неведомой функции bcopy. Нашел описание, заменил на memcpy(), заработало. У проги есть несколько опций для командной строки: l-просмотр списка файлов, x-извлечение файлов.

Для программирования нашлось два пакета - Ассемблер(рано пока что браться за него) и BCPL.

Для второго нашлась статья. Лучше всего взять образ диска tdisk4.dsk.Z на гитхабе.

Запустить bravo - это текстовый редактор. Запустить значит ввести bravo.

Нажать клавишу I и ввести текст:

// Hello world demo
get "streams.d"
external
[
Ws
]
let Main() be
[
Ws("Hello World!*N")
]

Выход из редактора с сохранением: нажать Esc, нажать P, ввести hello.bcpl и нажать Esc(!)

Компиляция и запуск:

bcpl hello.bcpl
bldr/d/l/v hello
hello

Извлек исходник с образа, вышло:

//h leolw rodld me
oeg ts"rtaesmd.
"xeetnrla[
W
s
]l
teM ia(n )eb[
W
(sH"leolW rodl*!"N
)
]

Короче, к программированию под BCPL попробую вернуться. Файлы тут

Дополнение. на диске есть NEPTUNE.RUN - файловая оболочка. Редактирование текстов в bravo сделано непривычно. Для чтения файла  - команда g, ввод имени, Esc. Для правки текста нужно кликнуть на позицию, ввести команду i и исправить текст.


Комментарии