вв51 i8251

8-битные микроконтроллеры и микропроцессоры от Intel и их клоны, а также компьютеры на них построенные

Moderator: Shaos

User avatar
Lavr
Supreme God
Posts: 16639
Joined: 21 Oct 2009 15:08
Location: Россия

Re: i8251 & MC6850

Post by Lavr »

Lavr wrote:В оригинале эта игра у меня функционирует под 6502 через ACIA 6850.
Grant Searle в своих поделиях цеплял ACIA 6850 в схему с процессором z80,
причем и рисунок схемы у него выполнен под Proteus, но у меня по его
схеме ACIA 6850 не заработала. Всё же её интерфейс расточен под 6502. :-?
Это уже немножко оффтопик по сабжу, но логически - продолжение...
Допилил я включение ACIA 6850 в схему с процессором, отличным от 6800 и 6502.

MC6850.png
MC6850.png (29.26 KiB) Viewed 451 times

Здесь всё зависит от правильного формирования сигнала Е, которого нет ни у z80, ни у i8080 и иже с ним.
Я снизу прицепил кусок схемы от ALTAIR-8800, они там тоже заколбасились аж с конденсатором, формируя
правильный сигнал Е. :wink:
В общем Е делается из /RD и /WR (/IORD и /IOWR), как видно по схеме, но передний фронт желательно
чуть подзадержать, хотя это и не критично.

А вот /WR (или /IOWR), приходящий на R/W желательно удлинить.
Срез Е должен закончиться раньше фронта R/W, именно /W.

MC6850O3.PNG
MC6850O3.PNG (5.87 KiB) Viewed 451 times

Частота OSC = 921600 Hz (делится на 16 до BAUDRATE=57600)

Настройка ACIA 6850:

Code: Select all

    LDA #$95 ; 
    STA $A000; 
;      95H  =  10010101    00 - F/1
;              ||||||^^_ = 01 - F/16
;              ||||||      10 - F/64
;              ||||||      11 - Reset
;              |||^^^___ = 101- 8 BITS, NO PARITY, 1 STOP
;              |^^______ = 00 - RTS Low Transmitter NO INTERRUPTS
;              ^________ = 1 - RECEIVER INT enabled
Чтение с терминала:

Code: Select all

;------------------------------------------------------
; Прочитать код нажатия клавиши пользователем в A
; для адаптера 6850
INCH:
  LDA  $A000    ; для адаптера 6850
  AND  #$01     ; тест регистра Статуса
  CMP  #$01     ; адаптера 6850
  BNE  INCH     ; ожидаем нажатия клавиши
INCH2:
  LDA  $A001    ; читаем код клавиши с терминала
  RTS
Вывод на терминал:

Code: Select all

; - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Печать символа ASCII на терминале пользователя
;
ECHO:
$FB79    48        PHA

$FBA6    AD 00 A0  LDA $A000
$FBA9    29 02     AND #$02
$FBAB    C9 02     CMP #$02
$FBAD    D0 F7     BNE $FBA6

$FBC9    68        PLA

$FBD0    8D 01 A0  STA $A001
$FBD5    60        RTS
Примеры в кодах микропроцессора 6502, думаю, они прозрачно понятны.

В общем пока что модель MC6850 показалась мне менее капризной, нежели i8251.
iLavr
Post Reply