Это уже немножко оффтопик по сабжу, но логически - продолжение...Lavr wrote:В оригинале эта игра у меня функционирует под 6502 через ACIA 6850.
Grant Searle в своих поделиях цеплял ACIA 6850 в схему с процессором z80,
причем и рисунок схемы у него выполнен под Proteus, но у меня по его
схеме ACIA 6850 не заработала. Всё же её интерфейс расточен под 6502.![]()
Допилил я включение ACIA 6850 в схему с процессором, отличным от 6800 и 6502. Здесь всё зависит от правильного формирования сигнала Е, которого нет ни у z80, ни у i8080 и иже с ним.
Я снизу прицепил кусок схемы от ALTAIR-8800, они там тоже заколбасились аж с конденсатором, формируя
правильный сигнал Е.

В общем Е делается из /RD и /WR (/IORD и /IOWR), как видно по схеме, но передний фронт желательно
чуть подзадержать, хотя это и не критично.
А вот /WR (или /IOWR), приходящий на R/W желательно удлинить.
Срез Е должен закончиться раньше фронта R/W, именно /W. Частота 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
В общем пока что модель MC6850 показалась мне менее капризной, нежели i8251.