И мне давно хотелось начать с
Apple I !
Тем более, что и делать-то особо ничего не пришлось -
Apple I - это по сути компьютер,
который работает с терминалом, как
PDP-8 примерно. Просто
Возняк приделал очень простенький
терминал прямо на плату, чем, собственно, и сделал всем пользователям удобно.
Но, тем не менее, общается всё железо
Apple I с внешним миром через БИС
PIA 6820.
И во всём легендарном
Woz Monitor-е - всего 2 процедуры общения с портами
PIA:
Если не считать 4-х строчек настройки
PIA 6820, больше никаких аппаратных зависимостей
в коде
Woz Monitor-а практически нет.
Поэтому я решил, что поскольку модели
6820 в
Proteus нет, но есть успешно работающая
UART MC6850, причем процедуры работы с ним практически идентичны, разве что у
PIA 6820контролируют
бит 7, а у
MC6850 -
биты 0 и 1, значит можно заменить эти процедуры в
коде
Woz Monitor-а. Тем более, что с виртуальным терминалом работать гораздо удобнее,
нежели тыкать в виртуальные кнопочки.
Весь этот процесс воплотился в жизнь весьма удачно, и вот что получилось:
Woz Monitor работает просто великолепно, все примеры работы с ним, взятые отсюда:
https://www.sbprojects.net/projects/apple1/wozmon.phpвыполняет практически идентично, разве что вот в этом примере автор сайта ошибся:
40: A9 0 20 EF FF 38 69 0 4C 40 0 RИз кода видно, что на терминал всегда выводится "
$00" - это символ "
@" - он ещё и курсор
в терминале
Apple I, но, к сожалению, он аппаратный - в модели его нет.
Чтобы пример работал как задумано - выводил все символы на терминал - в конце должен
быть переход
JMP $0042, вот так это будет правильно:
40: A9 0D 20 EF FF 38 69 00 4C 42 0 RНа скриншоте запущена игра "
Жизнь" (
Game_life.bin), которая вполне успешно работает.
Скриншот Game_lifeИгры для
Apple I я скачал вот здесь:
http://www.callapple.org/soft/ap1/games.htmlК сожалению, код игр приходится немного адаптировать, поскольку вывод на консоль они
делают через стандарный вызов
Woz Monitor-а, а вот клавиатуру читают сами, поскольку
в
Мониторе Возняка стандартной процедуры чтения кода с клавиатуры нет, что и неудивительно
для 254-х байт!
Поэтому игры дублируют вот эту процедру:
её приходится искать и патчить.

Я адаптировал кроме "
Life" еще 2 игры: "
Посади спутник" (
Game_lunar.bin) и
мини-шахматы(
Game_chess.bin).
Игры загружаются в ОЗУ через механизм ПДП при начальном старте проекта.
Для удобства я положил в архиве 3 проекта:
Apple_I.DSN - загружает
Game_life.bin, старт из Монитора:
2000RApple_I_.DSN - загружает
Game_lunar.bin, старт из Монитора:
300RApple_Ich.DSN - загружает
Game_chess.bin, старт из Монитора:
300RАрхив проекта:
Кроме того, в ПЗУ вместе с
Монитором Возняка остался и
OSI-BASIC.
Он запускается из
Монитора вот так:
FB00R, или нажатием кнопки
NMI.
По адресу
http://www.callapple.org/soft/ap1/games.html есть игры для
Apple I и на
Бейсике,
но я не проверял, работают ли они под
OSI-BASIC.
Программы на
BASIC можно загрузить в сам
BASIC посредством "
copy-paste" в окно терминала.
При старте любого из проектов вначале происходит загрузка в ОЗУ программы через ПДП.
Справа - один индикатор красный, второй под ним - мигает, обозначая процесс загрузки.
Далее управление получает
Woz Monitor, он выводит "
\ " и ждет ввода команд.
Три индикатора в проекте показывают, что процессор читает из памяти, что пишет в память
и что пишет в
UART. В принципе - их можно безболезненно удалить вместе с регистрами,
и проект будет работать быстрее, но по ним неплохо видно, делает ли что-либо процессор
или просто завис...
Желаю приятного общения с этой простой репликой
Apple I !
