SBC6809 - zápisky zo stavby. Construction notes. Part-3.

By Administrator at April 16, 2021 09:50
Filed Under: SBC8085-NCB85

SBC6809 - v prevádzke.

 

Tak si zhrniem stavbu SBC6809. Nešlo to tak jednoducho ako Micro UK101, boli nejaké drobnosti - o tom dnešný článok na začiatku aj bude. Doska s nepájivou maskou je fakt perfektná, naprosto parádna robota. Po kompletnom zapojení (teda to som si myslel ...) a následnej kontrole som zistil že na doske nemám prispájkované 4 vývody. Fajn, to sa napravilo rýchlo. Problém vidím v tom, že vonku bolo dosť zamračené a umelé svetlo na takúto robotu asi nie je to pravé orechové, od základnej dosky sa svetlo dosť odrážalo - a tak som to prehliadol, ale lupa pomohla odhaliť skryté problémy po pájkovaní. Ale to sa dalo naozaj rýchlo napraviť.

 

Upozornenie:

Zásahy do zariadenia sú na vlastné riziko majiteľa zariadenia. Autor týchto stránok nenesie žiadnu

zodpovednosť za škody spôsobené používaním zariadení postavených podľa tu uverejnených

schém alebo zobrazených úprav.

 


Vytiahol som programátor (TL866) a napálil som Eprom 27256. Založil som do SBC6809 - a nič. Tak išla Eprom von a nasledovala kontrola obsahu - jasné, napálil som blbý obsah - bol určený na iné SBC ... zle som si označil binárku a neskontroloval som si poriadne čo napaľujem ... brŕŕŕŕŕ, tak tu nasledovala vnútorná brzda, Eprom išla naspäť do mazačky a dal som si vďaka tomu štvrťhodinovú pauzu, ďalšie 27256-ky samozrejme mám k dispozícii, len som si dal malý time out - nech nevyrobím ďalšiu kravinu. Potom som už napálil správny obsah, založil Eprom, zapol - a zase nič. 

 

Nebudem napínať, problém v tomto prípade robil čip 6850, akonáhle som tam založil jeho rýchlejšiu verziu 68B50 tak všetko okamžite fungovalo ako po masle. Síce som našiel medzi ďalšími tromi čipmi 6850 ktoré vlastním jeden obvod ktorý tu na tomto mieste fungoval, ale aj ten asi po pol hodine prevádzky začal zamŕzať, takže som bádanie týmto smerom veľmi rýchlo ukončil. Takže tu len chcem upozorniť - dajte tam rovno požadovaný obvod 68B50 a nemusíte nič ďalšieho riešiť - vyskúšal som na tomto mieste tri kusy 68B50 ktoré takisto mám a tie všetky išli ako víno. Výrobcom jedného kusu 68B50 je Motorola a ten pri prevádzke citeľne hreje, ale v prevádzke funguje bezchybne (otestované 24 hodinovou nepretržitou prevádzkou), 2 kusy 68B50 od ST fakticky nehrejú vôbec, takže nakoniec som tam nechal kus od ST 68B50. Zaujímavé zistenie, zjavne bola použitá rozdielna technológia výroby toho istého typu čipu.

 

Dodatok:

"Pomalé" čipy 6850 som na skúšku následne založil do Micro UK101 - tam fungujú a komunikujú bez najmenších problémov aj na zvýšenej hodnote clocku =4MHz samotného procesoru 65C02. Zaujímavé zistenie, len mi to potvrdzuje môj predpoklad že je to asi vecou timingu v SBC6809. Samotné SBC6809 už teraz funguje na jednotku, takže nevidím dôvod sa v tom nejako ďalej vŕtať, každý čip 68B50 v SBC6809 funguje naprosto bezproblémovo.


___________________________________________________________


Doplnok 18.04.2021:  

Obvod 6850 od výrobcu ST nechce korektne bežať v SBC6809, jeho rýchlejšia verzia 68B50 v zapojení ide výborne. Zato čipy od Motoroly tu bežia aj v pomalšej verzii bez najmenších problémov. Medzitým som zohnal ďalšie 3 kusy čipov 6850 (výrobca Motorola), pritom tieto kusy idú v SBC6809 na jednotku. Takže skutočne to závisí od výrobcu a použitej technológie, proste bez vyskúšania rôznych čipov od rôznych výrobcov (tie Motoroly boli vypájkované zo zlých dosák Atari ST, nevedel som že Atari ST v sebe používala čipy 6850, doteraz som si myslel že sú tam 68B50 - ale tam to beží na 8MHz - to je už naozaj slušné) to nezistíme. Rôzna technológia výroby = rôzne dosahované max. rýchlosti v prevádzke.


___________________________________________________________

 

V doske už osadený rýchlejší variant čipu 6850.

 

Do tejto dosky som osadil iba širokú pätičku pre pamäť RAM, tu nevidím dôvod osadzovať na tomto stroji pätičky pre "úzky a aj pre široký rozchod". Nakoniec v Micro UK101 viem RAM-ky pustiť na 4MHz, čo na väčšinu testovania postačuje. Tiež som tu otestoval v doske aj 32kB RAM čip AMIC A625308A, ktorý som už spomínal v súvislosti z jeho použitím a nasadením v Micro UK101, tu tak isto pracuje bez najmenších problémov.

 

Zatiaľ používam klasický null modemový káblik (7 vodičová verzia) popísaný v prvej časti, časom sa určite dopracujem k niečomu rozmerovo skladnejšiemu, teraz na testy a prvotné zoznamovanie s vlastným SBC6809 postačuje aj táto klasika - len ho treba mať pripravený (samodomo postavený, alebo zakúpený). Použitý null modemový káblik má vlastnú dĺžku =1.8m a prenosová rýchlosť 115.200Bd funguje bez najmenších problémov.

 

Jedna vec ktorá mi tu vyslovene vadí je to, že SBC6809 po zapnutí prevedie síce studený (Cold) reset, ale v prevádzke potom už máme k dispozícii iba teplý (Warm) reset (program zostáva prítomný v pamäti SBC6809 aj po resete). Je to niečo podobného ako na malom Atari, do "surového" stavu" to dostanete iba vypnutím napájania. Ak niečo testujete a podarí sa Vám v zápale testovania nejakého programu prepísať dôležité pracovné adresy a následne musíte počas 10 minút cca 15x vytiahnuť napájanie z konektoru SBC dosky aby počítač zase správne reagoval tak Vás nadšenie rýchlo prejde (príklad - keď som hľadal spodnú a hornú hranicu možného otestovania RAM). Áno, nastáva to len pri bádaní čo a ako, ale dokáže to skutočne poriadne otráviť. Najjednoduchšia cesta ako si poradiť - zaradiť do výstupu zdroja tlačítko (rozpínací kontakt) ktoré dokáže odpojiť napájanie a máme tak potom potrebný studený štart k dispozícii. (Alebo treba nájsť v SBC6809 adresu kde sa zapíše správna hodnota aby si počítač myslel že treba previesť studený štart, toto som ale za takú krátku chvíľu ešte nenašiel a priznám sa že ak aj takáto adresa existuje tak zapisovať nejaký POKE x,y pre reštart nepovažujem za pravé orechové.) Podobný problém u SBC6502 a Micro UK101 neexistuje, pretože tie obidva po resete priamo ponúkajú možnosť skočiť do studeného alebo teplého štartu.


Označenie konektoru samolepkou že sa používa iba 5V napájanie považujem za samozrejmosť (tiež po napálení a overení funkčnosti prelepenie okienka na Eprom-ke pre ochranu obsahu pred UV žiarením). Tu len podotýkam, že napríklad žiarivka dokáže vymazať obsah Eprom po cca 1-ročnom dennom svietení ak nie je okienko na Eprom prelepené. Samozrejme záleží to aj na vzdialenosti od zdroja UV žiarenia, takže tu odo mňa nejaké exaktné tabuľky na danú tému nečakajte, ak sa prelepí okienko na Eprom tak nemusíte v tejto oblasti nič ďalšie riešiť.

 

Ochranu proti prepätiu by som riešil 5W ZD na 5.6V, ktorá sa pripojí paralelne k dióde 1N400x ktorá je pri konektore napájania. (Lepšia nakoniec iba jedna spálená a skratovaná Zenerka ako zničený celý SBC ...)


Overclocking - procesor (68B09P) má oscilátor priamo zabudovaný v svojom tele a ide (papierovo) maximálne na 8MHz (teda reálne :4 t.j. beží max. na 2MHz). Tu si overclocking zatiaľ odpustím, tu mi tých 1.8432MHz ktoré sú k dispozícii zatiaľ musí stačiť. Tu len dodám že originál Tandy Coco 2 bežal na 0.895 MHz, čiže tu už vlastne v skutočnosti overclocking prevedený mám - SBC6809 beží 2.06x rýchlejšie. Je pravdepodobné že bez nejakých problémov by to malo bežať aj na clocku =10MHz/4, ale zatiaľ to neskúšam, pretože:


a. - musel by som robiť zásah priamo do dosky a vymieňať x-tal, čo naozaj robiť nechcem (alebo by som musel vyrobiť samostatnú doštičku pre procesor kde by na doštičke bol nový oscilátor, zase by sa to celé zastoklo na pôvodné miesto procesoru, pri tomto type procesoru je totiž možné použiť aj externý oscilátor pre clock)

 

b. - tiež by som musel buď prerušiť prívod z procesoru na Tx/Rx pre obvod 68B50 a priviesť sem clock=1.8432MHz zo samostatného zdroja o tejto hodnote (tu by ale napríklad pomohla nová samostatná doštička, tak ako v Micro UK101, ktorá by na sebe mala oscilátor a 68B50, celé by sa to následne zastoklo do pätičky 68B50, čiže tu by sa potom na základnej doske nemusel robiť žiaden zásah)

 

c.- obidve veci (a + b) sa síce dajú previesť a mali by byť funkčné, ale zatiaľ nepociťujem potrebu to riešiť

 
d. - ak by sa celková rýchlosť procesoru zvýšila na 2.5MHz (ak je x-tal=10MHz), (zisk by bol potom pridaných 685.800kHz na rýchlosti procesoru), ak by bol k dispozícii procesor od Hitachi kde oscilátor beží na 12MHz, tým by procesor reálne bežal na 3MHz - to už by bola iná káva ...


e. - je tu zjavne použitý iný timing a teda zvýšila by sa pravdepodobnosť že by nemuseli stíhať ďalšie obvody pri možnom rozšírení dosky o nejakú tú perifériu - a to by mi naozaj hodne vadilo, toto je zatiaľ najsilnejší argument proti možnému nasadeniu overclockingu

 

Vec čo ma zase na druhú stranu vyslovene potešila je to že je tu vyvedená externá Bus zbernica na konektor, takto je možné pridať buď RAM (získať sa dá +8kB RAM navyše, teda je možné mať k dispozícii 40kB RAM), alebo je tu možné pripojiť niečo na spôsob 6521, 6522 alebo 8255A, teda budeme mať vstupy a výstupy pre viacportové využitie, malo by stačiť mimo spomenutých čipov pridať ešte 2ks LS čipov. Použitie prídavnej 8kB RAM potrebuje tiež ešte 2ks LS čipov (dá sa skombinovať). Považujem na tejto doske SBC6809 za skvelú výhodu že sa tu priamo ráta s možnosťou rozšírenia - a aby som nezabudol, na ext. bus je vyvedený aj reset a teda na novej doštičke nejakého interface môže byť aj nové resetovacie tlačítko ktoré bude vyvedené spredu a stále máme k dispozícii aj invertovaný reset pre čip 8255A. Vzhľadom k timingu je ale možné že treba rátať s možným problémom výberu čipov pre "chodivé" rozšírenia portov, stále platí že ak nasadíme rýchlejší čip tak to bude určite lepšie. A ak máme čas (a nervy) tak následne môžeme skúsiť použiť aj čipy o ktorých si myslíme že by už v tomto zapojení nemuseli stíhať. Ak naozaj nebude, nevadí, nasadíme naspäť rýchlejšiu verziu konkrétneho čipu. Práve pre toto na takýchto doskách preferujem použitie pätičiek. (Ak čipy natvrdo zaspájkujem do dosky možnosti otestovania rôznych čipov sú v háji - ak by som urobil nesprávny výber použitých čipov mám zarobené na slušný problém, musím súčiastky ťahať von z dosky - pritom to je moja najneobľúbenejšia činnosť - práve preto sa jej snažím vyhnúť ako sa dá.

Pri takomto rozšírení sa už pohybujeme na hranici 10 čipov a možno ešte aj o jeden, dva čipy navyše, ale to som ešte ochotný akceptovať, pretože sa rozširujú možnosti počítača. V základe to ide aj samé bez rozšírení a teda ďalšie rozširovanie možností je už skutočne iba záležitosťou majiteľa  - teda či do toho ide - teda ak to potrebuje.

 

Ešte znova pripomínam - treba použiť tento typ procesoru !

(u mňa konkrétne: MC68B09CP)

Ako tak pozerám, čitateľnosť  označenia čipov je občas fakt mizerná, napravo

je čip 74LS00 - a tiež sa to v podstate nedá prečítať ...

 

Zaujímavé je rozloženie voľnej RAM (teda oproti SBC6502 a Micro UK101), tie majú úplne voľné aj najvyššie adresy RAM, u SBC6809 to ale neplatí. Zatiaľ som zistil že SB6809 používa pre seba adresy na hornom konci adresného priestoru a to 32504 ÷ 32767(dec), takže test vlastnej pamäte RAM musí byť organizovaný inak. Tzv. dolná voľná RAM začína od adresy 543 (teda ak nemám nahratý žiaden program), začiatok voľnej RAM je posadený omnoho nižšie ako u spomínaných SBC ktoré majú v sebe procesor 65C02.

___________________________________________________________


Na konci pridávam svoju klasiku - programy pre test RAM na SBC6809 napísané v programe Basic (všetky 3 programy už využívajú možnosť zápisu do dlhého programového riadku ktorú SBC6809 poskytuje):

 

Prvý program robí naozaj len tú najrýchlejšiu a naozaj najnutnejšiu diagnostiku, ale je zase najrýchlejší, ak prejde bez chyby tak je veľká pravdepodobnosť že je všetko v poriadku. Začiatok testovanej RAM je vygenerovaný v riadku 10 (obsah premennej A), rozsah konca testovanej RAM je vždy pevný (= obsah premennej B) - toto platí pre všetky 3 programy. Testujú sa bunky RAM iba na 2 hodnoty - 85 a 170, čo je binárne 01010101 a  následne 10101010. Rýchlosť je vysoká a tak začiatočný riadok programu pri výpise na obrazovku asi ani vôbec nezaregistrujete. Testovaný rozsah RAM je: 765÷32503.


PROGRAM 1:

 

1 PRINT CHR$(12):A=32559-MEM:PRINT "TINY RAM MEMORY TEST 1": ? "(c)2021 Igi":PRINT " Adress:":FOR F=A TO 32503:PRINT F:POKE F,85:IF PEEK(F)<>85 THEN 4
2 POKE F,170:IF PEEK(F)<>170 THEN 4
3 NEXT :END
4 PRINT "Problem at adress - data":PRINT F, PEEK(F)

 

P.S.: zápis programu sa dá ešte skrátiť a teda získať ďalších pár byte RAM na testovanie naviac (705÷32503):


1 PRINT CHR$(12):A=32559-MEM:PRINT " Adress:":FOR F=A TO 32503:PRINT F:POKE F,85:IF PEEK(F)<>85 THEN 4
2 POKE F,170:IF PEEK(F)<>170 THEN 4
3 NEXT:
END
4 PRINT "Problem :":PRINT F, PEEK(F)

 

Poznámka:

Číslo 32559 v prvom riadku dostávam ako hodnotu pamäte 32016 pre program - hodnota MEM + číslo 543, vyjadrené zápisom: A=32016-MEM+543. Číslo 32503 je najvyššia voľná pamäťová bunka RAM na testovanie.

_____________________


PROGRAM 2:

 

Druhý program vždy jednu pamäťovú bunku naplní postupne hodnotami od 0÷255 a porovná obsah. Ak je O.K., ide sa ďalej, ak nie program končí výpisom chyby. Ak použijete tento program tak testovaný pamäťový rozsah RAM bude =  757÷32503

 
1 PRINT CHR$(12):A=32559-MEM:PRINT "LONG SBC6809 RAM TEST 2":PRINT "Range:";A;"- 32503":PRINT "(c)2021 Igi":? " Adress:" :FOR F=A TO 32503:PRINT F:FOR X=0 TO 255:POKE F,X:IF PEEK(F)<>X THEN 3
2 NEXT:NEXT:END
3 PRINT "Problem:":PRINT F, PEEK(F):END

 

P.S.: aj tento zápis programu sa dá skrátiť a získať dodatočných pár byte RAM na testovanie naviac (675÷32503):

 
1 PRINT CHR$(12):A=32559-MEM:FOR F=A TO 32503:PRINT F:FOR X=0 TO 255:POKE F,X:IF PEEK(F)<>X THEN 3
2 NEXT :NEXT
:END

3 PRINT "Problem":PRINT F, PEEK(F)

 

Výpis v riadku 3 sa objaví ak je obsah RAM odlišný od požadovaného stavu. Toto je absolútne najnižšia hodnota aká sa dá otestovať týmto druhým programom.  Program počas testu neposkytuje žiadne informácie, iba vypisuje číslo testovanej bunky RAM.

_____________________

 

PROGRAM 3:

 

Tretí program na to ide inak, najprv vždy celý rozsah dostupnej RAM naplní 0, potom 1, atď. až nakoniec 255. Tu sa testuje obsah až s časovým odstupom, preto skôr dokáže odhaliť problém s niektorou pamäťovou bunkou RAM (teda či dokáže v sebe "podržať" správny obsah). Ak použijete tento program tak testovaný pamäťový rozsah RAM bude =  868÷32503:


1 PRINT CHR$(12):A=32559-MEM:PRINT "LONG SBC6809 RAM TEST 3":PRINT "Address:";A;"- 32503":PRINT "Test - Igi(c)2021":PRINT "data: W R result:":FOR F=0 TO 255:IF F<10 THEN PRINT" ";
2 IF F<100 THEN PRINT" ";
3 PRINT F;" W";:FOR G=A TO 32503:POKE G,F:NEXT:PRINT " R";:FOR G=A TO 32503:IF PEEK (G)<>F THEN 5
4 NEXT:PRINT "  O.K.":NEXT F:END
5 PRINT "Problem at address - data":PRINT G,F,PEEK(G)


Pretože tento program je dlhší, tak aj testovaná najnižšia bunka RAM je už samozrejme posadená vyššie, vlastný testovací program musí byť niekde "usadený" v pamäti a tak teda zaberá nejaké miesto v dostupnej RAM. Čím je dlhší tým menej RAM zostáva na testovanie k dispozícii, ako som už spomínal najnižšiu možnú voľnú RAM pamäťovú bunku dynamicky podľa veľkosti vlastného nahratého programu vypočíta príkaz v riadku č.10.


Po "ohlodaní" tohoto programu na jeho minimum sa dostaneme na testovaný rozsah  RAM = 799÷32503:

 

1 PRINT CHR$(12):A=32559-MEM:PRINT "Range:";A;"- 32503":PRINT "data: W R result:":FOR F=0 TO 255:IF F<10 THEN PRINT" ";
2 IF F<100 THEN PRINT" ";
3 PRINT F;" W";:FOR G=A TO 32503:POKE G,F:NEXT :PRINT " R";:FOR G=A TO 32503:IF PEEK (G)<>F THEN 5
4 NEXT:PRINT " OK":NEXT:END
5 PRINT "Problem:":PRINT G,F,PEEK(G)

 

P.S.: aj tu sa ešte dá ušetriť, výpis síce nebude zarovnaný ale rozsah testovanej RAM takto upraveného tretieho programu je v ňom najväčší = 760÷32503:

 
1 PRINT CHR$(12):A=32559-MEM:PRINT "Range:";A;"- 32503":PRINT "data: W R result:":FOR F=0 TO 255:PRINT F;" W";:FOR G=A TO 32503:POKE G,F:NEXT :PRINT " R";:FOR G=A TO 32503:IF PEEK (G)<>F THEN 3
2 NEXT:PRINT " OK":NEXT:END
3 PRINT "Problem:":PRINT G,F,PEEK(G)

------------------------------------

 

Nakoniec som sa ešte pohral s možným vzhľadom výpisu programu, rozsah testovaných buniek RAM je priamo vo výpise v Hypertermináli:


1 PRINT CHR$(12):A=32559-MEM:PRINT "Range:";A;"- 32503":PRINT "data: W/R result:":FOR F=0 TO 255:PRINT F;"   W";:FOR G=A TO 32503:POKE G,F:NEXT:PRINT CHR$(8);"R";:FOR G=A TO 32503:IF PEEK (G)<>F THEN 3
2 NEXT:PRINT CHR$(8);"     OK":NEXT:END
3 PRINT "Problem:":PRINT G,F,PEEK(G)

 

Testuje sa uvedený rozsah RAM, momentálne sa tam zapisuje 0.

 

Číta sa a kontroluje obsah v uvedenom rozsahu na zhodu s číslom 0.

 

Záver: test na uloženú hodnotu 0 prešiel, teraz sa zapisuje 1 (postupne až do 255)

 

Tu som si  v programe vyskúšal techniku "návratu" v riadku o jednu pozíciu doľava pomocou príkazu PRINT CHR$(8), funguje to.

_____________________

 

Uvedené trable v článku síce boli poväčšine moja "zásluha", ale aj napriek tomu odstránenie problémov skutočne netrvalo dlho a odvtedy sa môžem tešiť z ďalšieho malého SBC, ktorý je naozaj zaujímavý a rozhodne ho budem ďalej skúšať a zoznamovať sa s jeho programovacím jazykom Basic.

 

Na tomto SBC ma skutočne "dorazila" povolená možná dĺžka programového riadku, to je naozaj komfortná vymoženosť, tu sa bude dobre programovať ! Toto bolo jedno z najpríjemnejších prekvapení ktorého som sa po spustení SBC6809 dočkal.

 

SBC6809 počtom použitých čipov (=7) je hlboko pod hranicou 10 čipov ktoré považujem za naozaj "malý" SBC, je zaujímavé ako sa takéto malé mašinky majú k životu a pre mňa sú zárukou učenia sa a sú aj zdrojom zábavy. A kvitujem, že aj takéto malé SBC je životaschopné a dá sa bez problémov prevádzkovať. Pred tými rokmi (2015) som ani nehľadal či existuje na webe dostupná nejaká doska ktorá by umožnila postaviť takýto počítač, neviem, vtedy som sa ani takouto možnosťou nezaoberal (a môžem skonštatovať že vtedy táto doska našťastie neexistovala, inak by som určite nemal SBC6502). Vtedy som si postavil moju verziu SBC6502 a vydržal som pri tej mašinke skutočne dosť dlho. Po rokoch teraz nasledovali v rýchlom slede u mňa Micro UK101 a SBC6809, takže vyhradím si jeden šuplík pre tieto SBC, zaberajú málo miesta a každý z nich má svoje čaro. A už teraz viem že s najväčšou pravdepodobnosťou rezignujem na rozšírovanie Micro UK101, pretože SBC6809 má na to omnoho lepšie možnosti (hlavne ten vyvedený ext. bus ... to je naozaj paráda). Mám v hlave ako na to aj u Micro UK101, ale bolo by to dosť komplikované (nechcem robiť zásah do základnej dosky) a teda ak tu mám niečo kde sa to dá previesť omnoho ľahšie - tak volím cestu menšieho odporu. Kto si to neskúsil sám tak nevie čo to je si postaviť vlastnú mašinku a čakať či nabehne správny štart pri jeho prvom zapnutí. A ak sa aj objaví problém tak si viem problém identifikovať, nájsť a opraviť si to, síce niekedy sa kýžený výsledok dostaví o niečo neskôr ako autor dúfal - viď stavba SBC6502, niekedy okamžite - Micro UK101, niekedy s drobnými problémami - SBC6809, ale ak sa to dotiahne zdarne do konca tak je potom namieste naozaj dobrý pocit z dosiahnutého výsledku.  

____________________________________________________________

Vaše hodnotenie, Rate post:

Comments

4/16/2021 9:50:49 AM #

trackback

Directory SBC.

Directory SBC.

Igi blog |

Comments are closed

Info o autorovi

Volám sa Igor Gramblička, bydlisko: Bratislava, Slovakia. Môj nick: Igi. Blog je o mojich záujmoch, predtým som pracoval ako IT špecialista na počítačové siete a redakčné systémy pre viaceré denníky - až som pred rokmi nakoniec v jednom z nich zakotvil a kde som to potiahol až do konca mojej profesnej kariéry.

Rok, mesiac, počet článkov: