nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 18 Dec 2018 08:05



Reply to topic  [ 2 posts ] 
Apple_I in Proteus 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
Ну что ж... модель 6502 окончательно проверена строгим тестом - можно что-либо и сделать на ней!
И мне давно хотелось начать с Apple I ! 8)

Тем более, что и делать-то особо ничего не пришлось - Apple I - это по сути компьютер,
который работает с терминалом, как PDP-8 примерно. Просто Возняк приделал очень простенький
терминал прямо на плату, чем, собственно, и сделал всем пользователям удобно.
Но, тем не менее, общается всё железо Apple I с внешним миром через БИС PIA 6820.
И во всём легендарном Woz Monitor-е - всего 2 процедуры общения с портами PIA:
Code:
;-------------------------------------------------------------------------
;  Subroutine to print a character to the terminal
;-------------------------------------------------------------------------
ECHO:
                BIT     DSP            ; DA bit (B7) cleared yet?
                BMI     ECHO           ; No! Wait for display ready
                STA     DSP            ; Output character. Sets DA
                RTS

;-------------------------------------------------------------------------
;  Load KBD character from PIA
;-------------------------------------------------------------------------
NEXTCHAR:
                LDA     KBDCR         ;  Wait for key press
                BPL     NEXTCHAR      ;  No key yet!
                LDA     KBD           ;  Load character. B7 should be '1'
Если не считать 4-х строчек настройки PIA 6820, больше никаких аппаратных зависимостей
в коде Woz Monitor-а практически нет.

Поэтому я решил, что поскольку модели 6820 в Proteus нет, но есть успешно работающая
UART MC6850, причем процедуры работы с ним практически идентичны, разве что у PIA 6820
контролируют бит 7, а у MC6850 - биты 0 и 1, значит можно заменить эти процедуры в
коде Woz Monitor-а. Тем более, что с виртуальным терминалом работать гораздо удобнее,
нежели тыкать в виртуальные кнопочки.

Весь этот процесс воплотился в жизнь весьма удачно, и вот что получилось:
Attachment:
Life2.gif
Life2.gif [ 28.42 KiB | Viewed 1424 times ]

Woz Monitor работает просто великолепно, все примеры работы с ним, взятые отсюда:
https://www.sbprojects.net/projects/apple1/wozmon.php
выполняет практически идентично, разве что вот в этом примере автор сайта ошибся:

40: A9 0 20 EF FF 38 69 0 4C 40 0 R
Code:
Addr:    HexDump   Dissassembly
------+----------+---------------
$0040    A9 00     LDA #$00
$0042    20 EF FF  JSR $FFEF
$0045    38        SEC
$0046    69 00     ADC #$00
$0048    4C 40 00  JMP $0040

Из кода видно, что на терминал всегда выводится "$00" - это символ "@" - он ещё и курсор
в терминале Apple I, но, к сожалению, он аппаратный - в модели его нет. :-?

Чтобы пример работал как задумано - выводил все символы на терминал - в конце должен
быть переход JMP $0042, вот так это будет правильно:

40: A9 0D 20 EF FF 38 69 00 4C 42 0 R

На скриншоте запущена игра "Жизнь" (Game_life.bin), которая вполне успешно работает.

 Скриншот Game_life
Attachment:
Life1.gif
Life1.gif [ 7.53 KiB | Viewed 1424 times ]

Игры для Apple I я скачал вот здесь:http://www.callapple.org/soft/ap1/games.html

К сожалению, код игр приходится немного адаптировать, поскольку вывод на консоль они
делают через стандарный вызов Woz Monitor-а, а вот клавиатуру читают сами, поскольку
в Мониторе Возняка стандартной процедуры чтения кода с клавиатуры нет, что и неудивительно
для 254-х байт! :kruto:
Поэтому игры дублируют вот эту процедру:
Code:
NEXTCHAR:
                LDA     KBDCR         ;  Wait for key press
                BPL     NEXTCHAR      ;  No key yet!
                LDA     KBD           ;  Load character. B7 should be '1'
её приходится искать и патчить. :osad:

Я адаптировал кроме "Life" еще 2 игры: "Посади спутник" (Game_lunar.bin) и мини-шахматы
(Game_chess.bin).
Игры загружаются в ОЗУ через механизм ПДП при начальном старте проекта.
Для удобства я положил в архиве 3 проекта:
Apple_I.DSN - загружает Game_life.bin, старт из Монитора: 2000R
Apple_I_.DSN - загружает Game_lunar.bin, старт из Монитора: 300R
Apple_Ich.DSN - загружает Game_chess.bin, старт из Монитора: 300R

Архив проекта:
Attachment:
Apple_I.zip [339.68 KiB]
Downloaded 30 times

Кроме того, в ПЗУ вместе с Монитором Возняка остался и 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 ! :wink:

_________________
iLavr


11 Aug 2018 21:26
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
ПРИЛОЖЕНИЯ к проекту:

Описание The Woz Monitor, взятое с сайта https://www.sbprojects.net/projects/apple1/wozmon.php
на английском, с полным корректным переводом на русский.
Attachment:
The Woz Monitor.zip [22.1 KiB]
Downloaded 34 times


Архив игр, скачанных с сайта http://www.callapple.org/soft/ap1/games.html :
Attachment:
A_Games.zip [105.99 KiB]
Downloaded 18 times
На примерах из архива видно, как игры были адаптированы.

_________________
iLavr


11 Aug 2018 21:56
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 2 posts ] 

Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.