|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
|
Page 1 of 1
|
[ 13 posts ] |
|
Author |
Message |
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
И мне давно хотелось начать с 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 !
_________________ iLavr
|
11 Aug 2018 20:26 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
ПРИЛОЖЕНИЯ к проекту:Описание The Woz Monitor, взятое с сайта https://www.sbprojects.net/projects/apple1/wozmon.phpна английском, с полным корректным переводом на русский. Архив игр, скачанных с сайта http://www.callapple.org/soft/ap1/games.html : На примерах из архива видно, как игры были адаптированы.
_________________ iLavr
|
11 Aug 2018 20:56 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Приспичило мне в связи с этой вот идеей MC6850 попрограммировать... А я и забыл, как это делается... Пришлось 8250 по-быстрому использовать. И как назло в этой ветке процедуру инициализации MC6850 я не выложил! На будущее выкладываю здесь архивчик, как MC6850 программировать, с примером на ассемблере 6502.
_________________ iLavr
|
10 Sep 2020 17:13 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Терминал Возняк сконструировал на сдвиговых регистрах 2504, как на наиболее доступном в то время ОЗУ большого объёма. Ну и поскольку модель сдвигового регистра 2504 в Proteus, я написал: Можно будет попробовать как-нибудь собрать модель терминала Apple I от Возняка. Полное описание этого терминала можно взять здесь в архиве: А полную схему Apple I и её описания - скачать здесь: https://www.sbprojects.net/projects/apple1/В общем-то ничего выдающегося в терминале от Возняка, кроме компактности, собственно, и нет. Но зато может получиться полностью ТРУ Apple_I in Proteus...
_________________ iLavr
|
13 Jun 2021 03:56 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
| | | | Lavr wrote: К сожалению, код игр приходится немного адаптировать, поскольку вывод на консоль они делают через стандарный вызов Woz Monitor-а, а вот клавиатуру читают сами, поскольку в Мониторе Возняка стандартной процедуры чтения кода с клавиатуры нет, что и неудивительно для 254-х байт! Поэтому игры дублируют вот эту процедру: её приходится искать и патчить. | | | | |
Я долго искал игру "Ханойские башни" под компьютер с микропроцессором 6502, желательно вот как раз Apple I, потому как на вывод он работает с терминалом по сути, да и сам по себе архи-прост... " Ханойские башни" я так и не нашел, но нашел похожую игру на странице одного автора, похожа она лишь тем, что работает с игровым полем на терминале, а я как раз хотел посмотреть, как это в условиях терминала пишут. Как собрать Apple 1 и написать для него игруИ когда я собирался поработать с игрой выяснилась пренеприятнейшая вещь: ВСЕ ЭМУЛЯТОРЫ Apple I, КОТОРЫЕ Я НАСОБИРАЛ В РАМКАХ ФОРУМА 65XX, НЕ РАБОТАЮТ ПОД WINDOWS 7 !!! ( Кроме браузерных на JS, но с ними весьма трудно работать, а не играть в игры... ) И вспомнил я тут, что есть у меня вот этот хитрый, не полностью совместимый с Apple I, эмулятор! Игру пришлось подшаманить на процедуры ввода с терминала, они у меня отличаются от оригинального Apple I... В итоге игра успешно запустилась на этой моей самоделке, и заиграла! Вот тут-то я вдруг понял, что к своему удивлению я ничего не знаю про "GAME 2048"! Пришлось про неё прочесть: https://ru.wikipedia.org/wiki/2048_(игра)Игра совсем не старая оказалась, написана она под браузеры, но кто хочет пощупать игру эту на тёплом, ламповом Apple I - вот проект: В архиве: GAME2048.BIN - оригинальный файл под Apple I; Game_2048.bin - файл пропатченный под мой здешний Apple I... P.S. И с патчем пришлось голову поломать: я сразу сюда полез, но спустя время и мне было затруднительно, что же конкретно патчить... А искать надо сигнатуры D011, D010 и патчить вот такие участки кода: Тут я снова удивился, а куда ведут: JSR $3FD0 и JSR $3FD0? у Apple I там ничего нет! Но, как оказалось, у меня на этих адресах подпрограммы подмены PIA 6820 на UART MC6850! Всё же различия между PIA 6820 и UART MC6850 есть, в 3 байта не заменишь... Надеюсь, если мне ещё раз приспичит делать этот трюк, данный пост мне всё напомнит!
_________________ iLavr
|
21 Feb 2022 17:25 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Вот только отладчика нет в моём хитром эмуляторе, потому как он полу-аппаратный... И я задумался, а не использовать ли эмулятор emu.exe? В нём нет Эпплов, но есть " Агат-7", а он - "почти что" Apple II, по крайней мере так говорили... И мне казалось, что даже PIA 6820 на своём месте! Но, видимо, чтобы заюзать PIA 6820, к Apple II следует подключить терминал... А Apple II - не для этого выдумывали! Родные клавиатура и дисплей у него обслуживаются иначе, но ненамного сложнее... Обслуживание клавиатуры - фактически один к одному влезает в патч по размеру: А для вывода на экран есть служебная функция "Монитора": Собственно, и для опроса клавиатуры служебная функция "Монитора" есть: Но она моргает курсором, как привычная нам 0F803H. Ещё одна засада нехорошая в том, что кодировка символов у Apple II - не совсем ASCII... А у " Агат-7" и того хуже - ещё и русские символы впёрли, хотя в описании пишут, что почти КОИ-8... Вот вокруг этого всего и танцевал я с бубном, подправляя все косяки " грязными хаками", как Шаос любит говаривать! Но в итоге эта Игра-2048 на " Агат-7" у меня заработала! И даже - в реальном времени - зело пошустрее, чем в моём хитром эмуляторе! Игру под " Агат-7" прилагаю в архиве, если вдруг кто взыграть возжелает: Запускаем emu.exe, выбираем в меню " Агат-7", удерживая ПРОБЕЛ, жмём мышью красную кнопочку RESET ( как учили). После курсора " *" набираем R: *R[ Enter] В меню загрузки выбираем GAME2048.bПосле загрузки: *280G[ Enter] Я даже сам поиграл... минут 15... чем-то на "пятнашки" похоже... но " грязные хаки" - гораздо интереснее же! Тем более, что эмулятор с отладчиком теперь имеется... P.S. Под эмуляторами оригинального Apple II игра работать не будет - системные вызовы надо подправить...
_________________ iLavr
|
22 Feb 2022 18:41 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
| | | | Lavr wrote: Ещё одна засада нехорошая в том, что кодировка символов у Apple II - не совсем ASCII... А у " Агат-7" и того хуже - ещё и русские символы впёрли, хотя в описании пишут, что почти КОИ-8... | | | | |
Вот такой примерно странненький знакогенератор у " Агат-7": В интернете нигде не нашел его таблицу... После символа 81Н до 0С0Н у меня где-то вывод на экран срывается, видимо - спецсимвол попадается. Не отследил код... лениво было... Кстати... полезную книгу по " Агат-7" мы упоминали здесь: http://www.nedopc.org/forum/viewtopic.php?p=102344#p102344Но в ней местами ошибочки тоже имеются: путается автор между " Агат-7" и Apple II...
_________________ iLavr
|
22 Feb 2022 21:31 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Решил отследить-таки поточнее, где спецсимволы попадаются... А попадаются они в диапазоне от 80Н до 9FН. В остальном знакогенератор вот такой у " Агат-7": Вывод на экран служебной функцией Монитора COUT = $FDD7 (для " Агат-7"). Для Apple II эта функция: COUT = $FDED.
_________________ iLavr
|
24 Feb 2022 02:29 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Официально по книге Мымрина интерпретируются следующие управляющие коды:
_________________ iLavr
|
24 Feb 2022 07:01 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
На самом деле: 8D - перевод строки; Это привычные всем 0DН, но со взведенным старшим битом.ПЭВМ АГАТ_Руководство программиста 1989И геометрия экрана " Агат-7" - это - совсем, совсем не Apple II (40x24)... Я немного тормознулся написать " Ханойские башни" под 6502 из-за этих несоответствий... С одной стороны у Apple II в текстовом режиме вроде как официально цвета нет. Должны быть лишь инверсия символа и мерцание... Но у " Агат-7", получается, что цвет текста есть: С другой стороны многие примеры из книги Мымрина на emu.exe (aka " Агат-7") не работают. Причем очевидно даже мне, что ошибки из-за несоответствия Apple II и " Агат-7". Мне, собственно, и цвет-то не нужен, но изображение в символов в текстовом режиме " Агат-7" какое-то блёкло-серое, а не ярко белое, как у Apple II: Очевидно же, что текст у Apple II не цветной, но нормальный белый, если сравнить с " Агат-7":
_________________ iLavr
|
25 Feb 2022 07:21 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Оказывается, всё на самом деле так и есть, потому как: Агат не является клоном Apple IIЭто я поддался распространенному заблуждению, оказывается... Но знакогенератор, выведенный на экран " Агат-7", с официальной версией тоже несколько не совпадает... Хотя в основных чертах - похож...
_________________ iLavr
|
25 Feb 2022 11:14 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Все засады и неприятности я-таки преодолел, и написал игру "Ханойские башни" под компьютер с микропроцессором 6502! И уже собрался я перенести код под эту самую модель Apple I, как вдруг обнаружил еще одну засаду, и на этот раз, похоже, что непреодолимую... Всё дело в том, что во встроенном терминале Возняка в Apple I, чтобы очистить экран, выдают в терминал 24 кода перевода строки - 0DH, и изображение просто выталкивают за экран, а потом рисуют новое. Для игр это весьма некрасиво выглядит, но в Apple I из-за аппаратных особенностей другого варианта просто нет. Я же рассчитывал на то, что в моей модели Apple I терминал пытается быть настоящим, поэтому поддерживает некоторые управляющие коды ASCII. И хотя в файлах HELP терминала под Prоteus пишут: это не совсем правда... Я исследовал коды терминала вот в этом проекте и выяснил, что поддерживает он и некоторые другие управляющие коды ASCII. В частности, по памяти мне казалось, что поддерживаются коды CURSOR HOME - курсор в верхний левый угол экрана и очистка экрана + CURSOR HOME... Я взял отсюда мой собственный проект, чтобы проверить это, и к большому сожалению выяснил, что насчет кода CURSOR HOME я заблуждался... а вот очистка экрана + CURSOR HOME - такой управляющий код ASCII, действительно, есть - 0CH. Коды же 1CH и 1FH, на которые я рассчитывал - не работают... В общем, если перенести код игры "Ханойские башни" под эту модель Apple I, будет выглядеть хотя и лучше, чем в оригинале у Возняка, но неприятно: экран моргнул черным, и нарисовались новые баши и т.д. Код CURSOR HOME, на который я рассчитывал, такого эффекта не создавал бы...
_________________ iLavr
|
03 Mar 2022 00:30 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Надумал я на платформу "Денди" портировать эту игру " 2048" и никак не смог найти её исходник по всем своим флешкам, хотя точно помню, что делал её реверс-инжиниринг... Сделал реверс заново, и пусть исходники здесь будут в тематической подборке. Программа хороша тем, что небольшая и практически аппаратно-независима. Её удобно переносить по платформам 6502. Но у оригинала стартовый адрес 0280Н очень неудобен для платформы NES-"Денди"...
_________________ iLavr
|
30 Jul 2022 23:47 |
|
|
|
Page 1 of 1
|
[ 13 posts ] |
|
Who is online |
Users browsing this forum: No registered users and 4 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
|
|