nedoPC.org

Community of electronics hobbyists established in 2002

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



Reply to topic  [ 34 posts ]  Go to page Previous  1, 2, 3
Эмуляторы и аналоги 6502 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Поскольку модель 6502 работоспособна, решил проверить её на чем-то серьёзном,
чтобы можно было ощутимо увидеть результат.

Поэтому убрал из схемы все излишества от Commodore 64, изменил карту памяти и
собрал схему, аналогичную OSI Computer в упрощенном варианте от Grant Searle,
добавив в схему этот самый пресловутый ACIA MC6850.
Attachment:
6502_POKE.gif
6502_POKE.gif [ 23.4 KiB | Viewed 105 times ]
Результат превзошел все ожидания - OSI 6502 MICROSOFT BASIC работает! :kruto:

 Grant Searle Sin(A)
Attachment:
6502_SinA.gif
6502_SinA.gif [ 9.38 KiB | Viewed 105 times ]

Attachment:
6502_SPdec.gif
6502_SPdec.gif [ 6.21 KiB | Viewed 105 times ]
Я сразу сделал карту памяти УВВ, соответствующую "Специалисту_МХ" - 32 байта
по адресам 0FFE0...0FFFF дешифруются по 4 байта причем верхние 8 байт из-за
специфики 6502 работают сложнее: на чтение - это байты из ПЗУ, у 6502 здесь
основные вектора запуска и прерываний:
Code:
.segment "VECTS"
.org $FFF8
  .word  $AA55    ;
  .word  Reset    ; NMI
  .word  Reset    ; RESET
  .word  Reset    ; IRQ

На запись эти ячейки работают в порты вывода - у "Специалиста_МХ" здесь
переключатель страниц, работает только на запись. Сюда же можно перекинуть
и другие порты "только на запись".

На первом скриншоте видно, как оператором BASIC POKE 65535,85 в порт 0FFFH
записано число 55Н.

_________________
iLavr


12 Jul 2018 12:26
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Если у кого есть желание поиграть в OSI 6502 MICROSOFT BASIC на процессоре
6502 из логики - прилагаю файлы проекта:
Attachment:
6502_BAS.zip [112.84 KiB]
Downloaded 2 times


Скорость работы BASIC даже на моём дохлом по нынешним меркам ноутбуке PII - 366 MHz
ПРИЕМЛЕМАЯ! Скорость работы ассемблерных программ - хорошая...

Прилагаю также мануал по OSI 6502 MICROSOFT BASIC:
Attachment:
8K-OSI-BASIC.pdf [597.89 KiB]
Downloaded 2 times

Как всё раньше было просто - ВСЕГО 16 станиц :o - и всё понятно! :wink:

_________________
iLavr


12 Jul 2018 12:31
Profile
Fanat

Joined: 20 Sep 2015 03:50
Posts: 55
Reply with quote
Доброго времени суток.
Написал эмулятор 6502 на микроконтроллере.
Подключил "ROM" как раз "OSI 6502 MICROSOFT BASIC", код взял с сайта "Grand"
Что то пошло не так. Результат работы эмулятора всегда один.
"?0M ERROR"
"MEMORY SIZE?"

Свои программки эмулируются вполне правильно.
Для этого пришлось написать потоковый Дисассемблер.
Исполняемый код соответствует дисассемлерному листингу.
Скорей всего ошибка в моей логиге интрепретации команды 6502.
Как выловить ошибку я не пойму.
Может есть у кого тест всех команд 6502 на асме.

На фото листинг потокового дисассембела.
Attachment:
DisAsm_Code_6502.jpg
DisAsm_Code_6502.jpg [ 91.92 KiB | Viewed 100 times ]



Lavr: О том, как найти нужное на форуме, перенёс сюда: ПОИСК ПО ФОРУМУ


12 Jul 2018 13:49
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
И вот еще один момент может повлиять на поведение этого BASICА.
В исходниках от Grant Searle стартовый код вот такой:
Code:
; STARTUP AND SERIAL I/O ROUTINES ===========================================================
; BY G. SEARLE 2013 =========================================================================
ACIA := $A000
ACIAControl := ACIA+0
ACIAStatus := ACIA+0
ACIAData := ACIA+1

.segment "IOHANDLER"
 .org $FF00
Reset:
  LDX     #STACK_TOP
  TXS

Поскольку я менял адрес ACIA := $A000 на ACIA := $FFF4, я этот BASIC перекомпилировал,
ну и поскольку глюки при старте у меня редко, но случались, я добавил в самое начало кода
две строчки, которые обычно есть почти всегда, но почему их вставляют, мне никто не сказал... :wink:
Code:
        SEI                     ; Запрет маск. прерываний INT
        CLD                     ; Сброс десятичного режима 

Не знаю, насколько это серьёзно - с одной стороны, прерываний вроде нет. С другой стороны -
процессоры-то самодельные, может что-то ненароком "отлавливают".

Так что стартовый код BASICА у меня теперь вот такой:
Code:
; STARTUP AND SERIAL I/O ROUTINES ===========================================================
; BY G. SEARLE 2013 =========================================================================
ACIA := $FFF4
ACIAControl := ACIA+0
ACIAStatus := ACIA+0
ACIAData := ACIA+1

.segment "IOHANDLER"
 .org $FF00
Reset:
  SEI        ; disable IRQs
  CLD        ; disable decimal mode

  LDX     #STACK_TOP
  TXS


P.S. Да, и коды ошибок есть в мануале BASICА, который я выложил постом выше.
Но
"?0M ERROR" какая-то нехарактерная ошибка, если в памяти ещё нет программы... :-?

_________________
iLavr


12 Jul 2018 17:02
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 34 posts ]  Go to page Previous  1, 2, 3

Who is online

Users browsing this forum: No registered users and 1 guest


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.