-
101. Data: 2018-06-08 09:04:09
Temat: Re: Eksperymenty ze starymi procesorami - MOS6502
Od: "J.F." <j...@p...onet.pl>
Dnia Fri, 8 Jun 2018 08:43:31 +0200, Atlantis napisał(a):
> On 02.06.2018 18:53, Grzegorz Kurczyk wrote:
>> Pisałem o tym trochę wcześniej. Możesz spokojnie użyć peryferiów Intela.
>> Magistrala 6502 jest synchroniczna. Zapis do na magistralę następuje
>> przy opadającym zboczu Fi2 przy aktywnym stanie niskim sygnału R/W.
>
> Mam jeszcze jedno pytanie, związane z tym tematem.
> W roli kontrolera szeregowego używam układu 8251, z 8253 używanym w roli
> baudrate generatora. I teraz pytanie: czym taktować te układy?
> Powinienem wziąć sygnał zegarowy z Fi1 albo Fi2 procesora, czy też
> najlepiej będzie podać sygnał brany bezpośrednio z generatora (a
> właściwe dzielnika za nim)?
Rodzina 82xx jest raczej asynchroniczna, szczegolnie 8251, ktory
potrzebuje zegarow dopasowanych do transmisji, i wlasnie 8253, jesli
on ma te zegary generowac. Nie bez powodu w pececie pojawil sie
dodatkowy kwarc, 1.8costam.
A nie chcesz uzyc tego "pecetowego" ... 8250 ?
Natomiast ... tak mi cos chodzi po glowie, ze
-ktorys uklad wymagal doprowadzenia sygnalu zegarowego, bo mial
"konstrukcje dynamiczna" ... czy to wlasnie nie 8251 ?
pdf trzeba doczytac.
Byle jaki mial to byc zegar, byle dopuszczalnym w zakresie
czestotliwosci sie miescil, ale najprosciej z procka pociagnac
-moze sie okazac, ze cos tam jest sprawdzane w okreslonej fazie
zegara, jak np linie przerwan w procesorze. Akurat magistrali
peryferiow intela to nie powinno dotyczyc.
J.
-
102. Data: 2018-06-08 11:56:32
Temat: Re: Eksperymenty ze starymi procesorami - MOS6502
Od: Atlantis <m...@w...pl>
On 08.06.2018 09:04, J.F. wrote:
> Rodzina 82xx jest raczej asynchroniczna, szczegolnie 8251, ktory
> potrzebuje zegarow dopasowanych do transmisji, i wlasnie 8253, jesli
> on ma te zegary generowac. Nie bez powodu w pececie pojawil sie
> dodatkowy kwarc, 1.8costam.
To nie zmienia faktu, że 8251 posiada trzy wejścia zegarowe: TXC, RXC i
CLK. Do dwóch pierwszych podłącza się sygnał z baudrate generatora. CLK
ma być natomiast taktowany z zegara systemowego. W urządzeniach na 8080
podłączało sie tutaj wyjście zegarowe TTL układu 8224.
Chciałem jedynie wiedzieć skąd wziąć ten sygnał w systemie opartym na
6502. Do wyboru mam wyjście generatora (to samo, do którego podłączone
jest wejście Fi0 procesora) albo jedno z wyjść Fi1 i Fi2.
A w pecetach dodatkowy kwarc pojawiał się chyba tylko po to, żeby można
było tam łatwo zastosować częstotliwość dzielącą się bez reszty do
standardowej prędkości portu szeregowego. W moim przypadku nie ma to
wielkiego znaczenia, bo główny generator ma być napędzany kwarcem 4.032
MHz, który potem będzie dzielony przez 2 lub 4 (do wyboru zworką, w
zależności od typu procesora). Ta częstotliwość ładnie się dzieli na
potrzeby UART-a.
Podobne rozwiązanie zastosowałem w projekcie na MCY7880.
> A nie chcesz uzyc tego "pecetowego" ... 8250 ?
Parę sztuk 8251 oraz 8253 mam pod ręką. ;)
> Natomiast ... tak mi cos chodzi po glowie, ze
> -ktorys uklad wymagal doprowadzenia sygnalu zegarowego, bo mial
> "konstrukcje dynamiczna" ... czy to wlasnie nie 8251 ?
> pdf trzeba doczytac.
Tak. Właśnie 8251 posiada pin CLK, do którego podpinało się zegar systemowy.
> Byle jaki mial to byc zegar, byle dopuszczalnym w zakresie
> czestotliwosci sie miescil, ale najprosciej z procka pociagnac
Nie ma tutaj potrzeby zachowani synchroniczności czy coś? Nie ma
znaczenia którego"Fi" użyję?
-
103. Data: 2018-06-08 12:05:25
Temat: Re: Eksperymenty ze starymi procesorami - MOS6502
Od: ajt <a...@a...com.pl>
W dniu 2018-06-08 o 11:56, Atlantis pisze:
>
> Tak. Właśnie 8251 posiada pin CLK, do którego podpinało się zegar
systemowy.
>
>
>> Byle jaki mial to byc zegar, byle dopuszczalnym w zakresie
>> czestotliwosci sie miescil, ale najprosciej z procka pociagnac
>
> Nie ma tutaj potrzeby zachowani synchroniczności czy coś? Nie ma
> znaczenia którego"Fi" użyję?
>Nie ma znaczenia, ten zegar jest wyłącznie do taktowania części
nadawczo-odbiorczej.
--
Pozdrawiam
Andrzej
www.radom.city
-
104. Data: 2018-06-08 12:41:27
Temat: Re: Eksperymenty ze starymi procesorami - MOS6502
Od: "J.F." <j...@p...onet.pl>
Użytkownik "Atlantis" napisał w wiadomości grup
dyskusyjnych:5b1a52d1$0$610$6...@n...neostrada.
pl...
On 08.06.2018 09:04, J.F. wrote:
>> Rodzina 82xx jest raczej asynchroniczna, szczegolnie 8251, ktory
>> potrzebuje zegarow dopasowanych do transmisji, i wlasnie 8253,
>> jesli
>> on ma te zegary generowac. Nie bez powodu w pececie pojawil sie
>> dodatkowy kwarc, 1.8costam.
>To nie zmienia faktu, że 8251 posiada trzy wejścia zegarowe: TXC, RXC
>i
>CLK. Do dwóch pierwszych podłącza się sygnał z baudrate generatora.
>CLK
>ma być natomiast taktowany z zegara systemowego. W urządzeniach na
>8080
>podłączało sie tutaj wyjście zegarowe TTL układu 8224.
>Chciałem jedynie wiedzieć skąd wziąć ten sygnał w systemie opartym na
>6502. Do wyboru mam wyjście generatora (to samo, do którego
>podłączone
>jest wejście Fi0 procesora) albo jedno z wyjść Fi1 i Fi2.
http://www.nj7p.org/Manuals/PDFs/Intel/205222-002.pd
f
No i ciekawie pisza
No external inputs or outputs are referenced to CLK, but the frequency
of CLK
must be greater than 30 times the Receiver or Transmitter data bit
rates.
ale w tabelce na stronie 15 (2-18) ... clock Period
min 320, max 1350 ns. Czyli jakies 0.75-3MHz.
>A w pecetach dodatkowy kwarc pojawiał się chyba tylko po to, żeby
>można
>było tam łatwo zastosować częstotliwość dzielącą się bez reszty do
>standardowej prędkości portu szeregowego.
Zapewne.
Byc moze juz im tez chodzilo, ze systemowe zegary bedą rożnej
predkosci, wiec nie mozna na nich polegac.
>W moim przypadku nie ma to
>wielkiego znaczenia, bo główny generator ma być napędzany kwarcem
>4.032
>MHz, który potem będzie dzielony przez 2 lub 4 (do wyboru zworką, w
>zależności od typu procesora). Ta częstotliwość ładnie się dzieli na
>potrzeby UART-a.
Zalezy.
Jak chcesz 1200, zegar ma byc *16, to sie dzieli ladnie przez 210.
Jak chcesz 2400, to trzeba podzielic przez 105 ... i juz nie mozna
najpierw podzielic przez 2.
Jak chcesz 9600 ... to nie z tym kwarcem :-(
Podobne rozwiązanie zastosowałem w projekcie na MCY7880.
J.
-
105. Data: 2018-06-08 14:41:45
Temat: Re: Eksperymenty ze starymi procesorami - MOS6502
Od: Atlantis <m...@w...pl>
On 08.06.2018 12:41, J.F. wrote:
> Zalezy.
> Jak chcesz 1200, zegar ma byc *16, to sie dzieli ladnie przez 210.
> Jak chcesz 2400, to trzeba podzielic przez 105 ... i juz nie mozna
> najpierw podzielic przez 2.
> Jak chcesz 9600 ... to nie z tym kwarcem :-(
Hmm... Teraz właśnie jeszcze raz na to patrze i faktycznie, wygląda na
to, że zegar 2000000 Hz jest dużo lepszym rozwiązaniem. Po podzieleniu
przez 13 (8253), a potem jeszcze przez 16 (wewnątrz 8251) uzyskam
baudrate w okolicy 9615.
Okazuje się, że w komputerze z MCY7880 również powinienem podmienić
kwarc na 18 MHz. Wtedy także będę miał zegar 2MHz i identyczną sytuację.
W chwili obecnej mam kwarc 18.432MHz, co daje zegar 2.048 MHz i baudrate
około 9846... O dziwo działa...
Tak to jest, gdy kopiuje się rozwiązania z internetu, bez przeliczenia
na wszelki wypadek...
-
106. Data: 2018-06-08 14:53:41
Temat: Re: Eksperymenty ze starymi procesorami - MOS6502
Od: "J.F." <j...@p...onet.pl>
Użytkownik "Atlantis" napisał w wiadomości grup
dyskusyjnych:5b1a798a$0$681$6...@n...neostrada.
pl...
On 08.06.2018 12:41, J.F. wrote:
>> Jak chcesz 2400, to trzeba podzielic przez 105 ... i juz nie mozna
>> najpierw podzielic przez 2.
>> Jak chcesz 9600 ... to nie z tym kwarcem :-(
>Hmm... Teraz właśnie jeszcze raz na to patrze i faktycznie, wygląda
>na
>to, że zegar 2000000 Hz jest dużo lepszym rozwiązaniem. Po
>podzieleniu
>przez 13 (8253), a potem jeszcze przez 16 (wewnątrz 8251) uzyskam
>baudrate w okolicy 9615.
>Okazuje się, że w komputerze z MCY7880 również powinienem podmienić
>kwarc na 18 MHz. Wtedy także będę miał zegar 2MHz i identyczną
>sytuację.
>W chwili obecnej mam kwarc 18.432MHz, co daje zegar 2.048 MHz i
>baudrate
>około 9846... O dziwo działa...
Do 5% roznicy na krotkim kablu te uklady toleruja.
Odbiornik lapie poczatek bitu startu, odczekuje pol bitu czasu, i
lapie wartosc w polowie bitu.
Mozna sie o te pol bitu przestawic, a poniewaz bitow ok 10, to 5%,
no - 4% jeszcze dopuszcza.
>Tak to jest, gdy kopiuje się rozwiązania z internetu, bez
>przeliczenia
>na wszelki wypadek...
Albo ... po co jakies 8253 - uzyj DDS :-)
J.
-
107. Data: 2018-06-10 21:49:04
Temat: Re: Eksperymenty ze starymi procesorami - MOS6502
Od: Atlantis <m...@w...pl>
Udało mi się złożyć prosty komputerek z MOS6502AD. W tej chwili
konfiguracja wygląda następująco:
- 32kB RAM, adresowany bezpośrednio (pierwsza połowa przestrzeni adresowej).
- 16 kB pamięci EPROM (ostatnia ćwiartka przestrzeni adresowej)
- dekoder adresów na układach TTL-LS
- szyna adresowa buforowana przez dwa układy 74LS245
- port równoległy 8255
Poza tym na płytce znajdują się na razie nie obsadzone podstawki pod:
- dodatkowy chip pamięci RAM, dostępny jako cztery banki po 8kB
- port wyjściowy na 74LS373 do sterowania powyższym
- timer 8253 oraz UART 8251
Sygnały !WR oraz !RD na potrzeby pamięci oraz intelowskich peryferiów są
generowane przez następujący układ:
http://wilsonminesco.com/6502primer/RDnotWRnotCkt.jp
g
Podczas wstępnego rozruchu nie obyło się bez wpadki - okazało się, że
odwrotnie podłączyłem zasilanie do 8255. Popłynął za dużo prąd - nie na
tyle duży, żeby przepalić 3A bezpiecnzik, ale drucik wewnątrz się lekko
rozżarzył. Na wszelki wypadek po tym incydencie wymieniłem 8255 i CPU na
inne egzemplarze.
Na chwilę obecną układ przeszedł test "pracy na luzie" - podciągnąłem
linie danych za pomocą rezystorów, układając wartość 0xEA (NOP). Szyna
adresowa w tej sytuacji zachowuje się prawidłowo - na kolejnych liniach
pojawiają się impulsy o dwa razy większej długości niż na linii
poprzedniej. Dekoder adresów w tej sytuacji także zdaje się działać
prawidłowo, generując impulsy stanu niskiego we właściwej sekwencji.
Natomiast za nic nie udało mi się uruchomić programu. W EPROM-ie siedzi
w tej chwili coś takiego:
CTRLREG EQU $9000
PA_8255 EQU $9200
PB_8255 EQU $9201
PC_8255 EQU $9202
CONF_8255 EQU $9203
.ORG $C000
INIT:
LDX #$FF
TXS
LDA #$80
STA CONF_8255 ;tryb 0, wszystkie porty wyjsciowe
LOOP:
LDA #$01
STA PA_8255
JSR DELAY
LDA #$00
STA PA_8255
JSR DELAY
JMP LOOP
DELAY:
LDY #$FF
DELAY_LOOP1:
LDX #$FF
DELAY_LOOP2:
DEX
BNE DELAY_LOOP2
DEY
BNE DELAY_LOOP1
RTS
IRQ:
RTI
NMI:
RTI
.ORG $FFFA
DW NMI
DW INIT
DW IRQ
Program powinien "machać" stanem pinu PA0 układu 8255. Niestety, nie
robi tego. Oscyloskop pokazuje aktywność na liniach adresowych i danych,
a także na !WR !RD. Niestety linia CS sterująca 8255 jest nieaktywna,
podobnie jak wszystkie linie z obszaru I/O. Podczas pracy "na luzie"
linie te regularnie przełączały się na moment w stan niski.
Wstępnie sprawdziłem połączenia, przedzwaniając połączenia multimetrem.
Sprawdziłem też inny EPROM.
Ktoś ma jakiś pomysł? Może błąd tkwi w moim kodzie?
-
108. Data: 2018-06-10 23:31:08
Temat: Re: Eksperymenty ze starymi procesorami - MOS6502
Od: ajt <a...@a...com.pl>
W dniu 2018-06-10 o 21:49, Atlantis pisze:
> Wstępnie sprawdziłem połączenia, przedzwaniając połączenia multimetrem.
> Sprawdziłem też inny EPROM.
>
> Ktoś ma jakiś pomysł? Może błąd tkwi w moim kodzie?
>
Może upewnij się, czy wszystko trafia do EPROMu tam gdzie trzeba.
--
Pozdrawiam
Andrzej
www.radom.city
-
109. Data: 2018-06-11 07:59:48
Temat: Re: Eksperymenty ze starymi procesorami - MOS6502
Od: "J.F." <j...@p...onet.pl>
Dnia Sun, 10 Jun 2018 21:49:04 +0200, Atlantis napisał(a):
> Udało mi się złożyć prosty komputerek z MOS6502AD. W tej chwili
> - dodatkowy chip pamięci RAM, dostępny jako cztery banki po 8kB
> - port wyjściowy na 74LS373 do sterowania powyższym
Uzyj ten port do testow
> Natomiast za nic nie udało mi się uruchomić programu. W EPROM-ie siedzi
> w tej chwili coś takiego:
uprosc do
> CTRLREG EQU $9000
> PA_8255 EQU $9200
> PB_8255 EQU $9201
> PC_8255 EQU $9202
> CONF_8255 EQU $9203
>
> .ORG $C000
> INIT:
> LDX #$FF
> TXS
> LDA #$80
> STA CONF_8255 ;tryb 0, wszystkie porty wyjsciowe
> LOOP:
LDA #$05
> STA PA_8255
LDA #$FA
> STA PA_8255
> JMP LOOP
> IRQ:
> RTI
>
> NMI:
> RTI
> .ORG $FFFA
> DW NMI
> DW INIT
> DW IRQ
>
> Program powinien "machać" stanem pinu PA0 układu 8255. Niestety, nie
> robi tego. Oscyloskop pokazuje aktywność na liniach adresowych i danych,
> a także na !WR !RD. Niestety linia CS sterująca 8255 jest nieaktywna,
> podobnie jak wszystkie linie z obszaru I/O.
Oscyloskop z pamiecia masz ? najlepiej 4 kanaly :-)
To moze analizator Salae ?
-zobacz co sie dzieje na liniach adresowych - program chodzi w kolko,
to powinien byc w miare stabilny wzor na kilkanascie adresow,
po moich poprawkach jeszcze stabilniejszy
-masz teraz zapis adresu na stos - powinny sie regularnie !WR
pojawiac, i to tak w cyklach po 3 - zapis do 8255, potem dwa do RAM.
Ale bardzo rzadko - masz dlugie petle.
W moim tylko do 8255 i to czesto.
-jakie sa adresy w trakcie tych !WR
-dodaj w petli STA $0010 - bedzie mozna uzyc !WR RAM czy A15 do
wyzwalania oscyloskopu, nawet analogowego
-dodaj uklad pracy krokowej :-)
-czy na pewno dobrze EPROM zaprogramowales ?
Program jest w zakresie C000-FFFF, trzeba wpisac w 0000-3FFF kosci.
J.
-
110. Data: 2018-06-12 08:06:48
Temat: Re: Eksperymenty ze starymi procesorami - MOS6502
Od: Atlantis <m...@w...pl>
Okazało się, że winę ponosił uszkodzony procesor. O ile zachowywał się
prawidłowo podczas pracy na luzie, to po odpalaniu programu przez chwilę
zachowywał się dziwnie, a potem w ogóle przestawał pracować - aktywność
na liniach adresowych zamierała.
Po podmianie na inny egzemplarz MOS6502 wszystko zaczęło działać tak,
jak powinno. Pozostało mi teraz tylko odpalenie UART-a. Potem spróbuje
przeportować i uruchomić którąś wersję MS Basic, a także dopisać obsługę
ładowania programów przez port szeregowy. Gdy będzie mi się chciało,
może dorobię interfejs magnetofonowy. ;)