Článok bol aktualizovaný 22.09.2023
SBC6502 + doska programátoru PROM 74188.
Od posledného vydania verzie 1.09 a 1.09p som pripravil ďalšiu verziu - 1.10 (teraz už 1.10n), program som naďalej upravoval k "obrazu svojmu", je to úprava kde som si to "šil" už vyslovene a hlavne pre moju potrebu. Ešte mám jednu vec ktorú chcem skúsiť dostať do programu - akurát musím prísť na to ako to ešte do programu zapracovať /pozn. - už zapracované vo verzii 1.10n/.
Štartovacia obrazovka programovej verzie.1.10n spolu s dodatočnými informáciami.
Zmeny v programe pre programátor PROM 74188, verzia 1.10, platia aj pre verziu 1.10n:
- po štarte sú všetky informácie na jednej obrazovke, úvodné informácie sa zobrazia iba pri štarte programu, nie sú v samostatnej obrazovke ako v predchádzajúcich verziách
- je možné programovať tiež PROM 74S288 /parametre programovania sú rovnaké, je to Schottky verzia čipu/, tiež existuje čip od fy Signetics s označením 82S123N, toto značenie pripomína timer 74123 /patentová ochrana pôvodného názvu - ?/, ale pozor je to zase len ďalšia verzia čipu 74188.
- SN74188N/ DM8223 /DM74188AN /DM8577 /75188N sú ďalšie kompatibilné značenia pre PROM 74188 od iných výrobcov
- základný PGM pulz má po štarte programu prednastavenú hodnotu na 17ms (predtým som vo verzii 1.10 dával 10ms), PGM pulz v druhom kole je vždy dvojnásobkom tejto nastavenej hodnoty, vďaka tomu môže druhý PGM pulz dosiahnuť hodnotu až 40ms, to postačuje fakticky na všetky možné potreby, pritom je to už väčšia hodnota ako je v datasheete. (Pri 17ms pulze v prvom kole platí pre pulz v druhom kole hodnota 34ms)
- PGM pulz sa dá cez P(GM) nastaviť v rozsahu od 1÷20ms, povolené sú hodnoty v krokoch po 1ms, po reštarte programu sa vždy nastaví predvolená hodnota v riadku 1000 bez ohľadu na predchádzajúce nastavenie cez P(GM)
- ak chcete mať inú základnú dĺžku nastavenia prvého PGM pulzu stačí urobiť zmenu v riadku 1000, najprv si pozrime nastavenie na 17ms:
1000 CLEAR:POKE 15,80:PD=32500:PE=PD+32:U=3.13:DV=6:PP=17*U:LG=2
zmena sa robí v premennej PP, namiesto číslice 17 (17ms, označené podčiarknutím) sem dosadíme novú hodnotu,
ktorú chceme, napríklad 10 (t.j. =10ms), zase je to označené podčiarknutím:
1000 CLEAR:POKE 15,80:PD=32500:PE=PD+32:U=3.13:DV=6:PP=10*U:LG=2
- zmena formy zápisu použitých pamäťových adries v prvom programovom riadku (1000), už sa používa prepočet priamo do premenných
- prišlo k zmene v menu, "zmizla" z neho voľba (L) - voľba dĺžky PGM pulzu - je teraz premenovaná na voľbu (P)GM, zmenilo sa poradie položiek v menu
- niektoré veci v programe som uložil do textových stringov, vyvolávajú sa potom pohodlne v programe ich výpisom
- je použitá lepšia informácia na displeji ak sa stlačí voľba (P), ľahšie sa dá vyznať v tom čo po nás program chce
- spustenie položiek (D), (H) a (R) a následne ukončenie práce v nich už neukončí samotný program tak ako doteraz, teraz je ponúknutá možnosť ďalej priamo pokračovať v programe, tu si treba uvedomiť že programovo vygenerované údaje treba stále odložiť cez príkaz Capture /Hyperterminál/, do programu sa dajú vložiť Data /riadok 9000 a vyššie/ iba po skončení programu a potom sa následne prihrajú k pôvodnému programu. Toto bol celkom slušný oriešok ako to doriešiť (teda pokračovanie položiek D,H,R) v programe tak aby sa dalo ďalej pokračovať, ale zadarilo sa.
- pribudla voľba (I), teraz je možné vyvolať na obrazovku základné parametre obvodov 74188, 74S288 a 82S123 spolu zo zapojením vývodov, inak povedané jedná sa jednoduchý datasheet
- z programu sú odstránené všetky zvukové prejavy pre PC speaker /i keď uznávam že pri zvukových prejavoch netreba ustavične civieť na monitor či je všetko O.K., zase raz moje rozhodnutie/, keď sa to tak zoberie vlastné napálenie netrvá dlho (osobne"trčím" pri SBC6502 až do konca programovania PROM)
- všetky použité slučky FOR-NEXT v programe majú odstránenú koncovku s názvom premennej, ak bol doteraz napríklad zápis programovej slučky FOR F=0 TO 2000:NEXT F, tak terajší zápis je: FOR F=0 TO 2000:NEXT
- prišlo k ďalšiemu "zdrcnutiu" programu do menšieho počtu riadkov, toto je moja ustavičná snaha o skrátenie samotného zápisu
- pridal som programovú verziu aj pre x-tal =2.0000MHz
Program - verzia 1.10 pre x-tal:
1.8432MHz
2.0000MHz
2.4576MHz
3.6864MHz
4.0000MHz
4.5000MHz
4.9152MHz
5.0000MHz
6.0000MHz
version 1.10.zip (41,12 kb)
_____________________________________________________
Najnovšia verzia 1.10n:
- plne nahrádza verziu 1.10, sú aplikované všetky zmeny, tu v článku sú tiež aktualizované prinscreeny
- táto verzia sa odlišuje od všetkých predchádzajúcich verzií v tom že som konečne našiel "odvahu" a zapracoval som do tejto verzie novinku, už sa v druhom kole nenapaľujú všetky byte kompletne nanovo, ale napaľujú sa iba tie byte ktoré neboli správne napálené v kole prvom, podstatne to urýchli programovanie v kole druhom (ak sa ukáže že to vôbec treba, platí to pre niektoré "odolnejšie" PROM, osobne som doteraz pri cca 60 kusoch napálených PROM 74188 našiel iba jednu ktorá potrebovala "šlupku" a to až 50ms pulz na preklopenie jediného bitíku ... (ostatné bity v rámci tejto PROM boli O.K. už po napaľovaní v kole prvom), takže prechod do druhého kola programovania PROM je keď sa to tak zoberie skutočne vec vcelku ojedinelá). Síce to napaľovanie všetkých byte nanovo v druhom kole nič nekazilo ale takto je to už plne korektné riešenie. Hodne dlho som nad tým rozmýšľal ale až teraz som našiel také riešenie s ktorým som skutočne spokojný. Napadlo ma to včera v noci tesne pred spaním ako na to, ráno som to skúsil, funguje to presne podľa mojej predstavy, celá inteligencia algoritmu predĺžila samotný program iba o 119byte + treba vyhradiť dodatočných 32byte v RAM (riešení ako na to som mal v hlave viacero, ale až toto bolo to pravé, kiežby som vedel vždy programovať tak efektívne). Táto zmena dĺžky programu je už premietnutá (prepočítaná) aj do tabuľky a výpočtu rozdielu oproti úplne prvej zverejnenej verzie 1.01. Prečo je to k dispozícii až teraz ? Nuž, doteraz som sa sústreďoval pri úpravách programu na celkom iné priority, zákonite to teda bolo v úzadí (napaľovanie fungovalo bez problémov vo všetkých doterajších verziách a doteraz mal som pocit že upraviť program bude celkom zložitá záležitosť).
Úprava sa týka iba týchto riadkov v programe, tučne sú vysádzané pridané veci v riadku (alebo ak je pridaný celý riadok) a zmeny ktoré robia uvedený algoritmus:
1092 TG=PD+40:IF ID<>32 THEN 8900
7010 FOR F=TG TO TG+31:POKE F,122:NEXT:GOTO 6005
7231 IF Z=2 AND PEEK(TG+G)=0 THEN 7480
8100 IF Q=R THEN OK=OK+1:POKE G+40,0:GOTO 8104
Poznámky k publikovaným 4 riadkom:
- riadok 1092, tu pribudlo definovanie premennej TG, tým sa definuje začiatočná adresa =32540d kde sa sleduje
či sú naprogramované Data v PROM po prvom kole programovania v poriadku
- riadok 7010 je úplne nový, pôvodne sa príkaz GOTO 6005 nachádzal v inom riadku programu, na adresy 32540
÷ 32571d uloží hodnotu =122 (treba opakovať zápis), číslo 122 som zvolil ako súčet <>, čiže môže tu byť aj iné
číslo, len potom je potrebné porovnávať voči nemu, všade na uvedených adresách sa uloží číslo ktoré hovorí že
treba opakovať zápis, zapisuje sa sem až po zvolení voľby zápisu do PROM
- riadok 7231 je úplne nový, ak je v druhé kolo napaľovania a obsah=0, tak preskoč napaľovanie a choď na ďalší
byte, ale ak je hodnota =122 tak napaľuj, týmto je zabezpečené že to platí iba pre druhé kolo programovania
- v riadku 8100 je verifikácia po prvom kole, ak je verifkácia OK zapíš na konkrétnu adresuvv rozsahu 32540 ÷
32571d hodnotu =0 (pribudol tu príkaz POKE atď), t.j. tento byte je v poriadku po prvom kole, ak nie je logicky
tu zostáva potom zapísaná hodnota =122, teda tu opakuj napaľovanie v kole druhom
Poradie v programe je najprv načítaný riadok 8100 a až po ňom nasleduje 7231. Zhrnuté - pribudli v programe iba
dva riadky a v ďalších dvoch sa pridali dodatočné príkazy.
- vďaka tomu že sa teraz v programe testuje ktorý byte konkrétne treba napáliť nanovo tak pre túto novú kontrolu je potrebných v programe použiť dodatočných 32 byte pamäte RAM (niekde ten medzivýsledok kontroly treba uložiť), používa sa rozsah na nových zvolených adresách 32540d÷32571d, čiže na konci RAM stále zostáva ešte voľných 196 byte (voľné miesto pre stack ?), zatiaľ sa voľná hodnota na konci RAM ukazuje ako dostatočná, ostatné rozsahy použitej RAM platia naďalej tak ako bolo popísané pri verziách 1.09 + 1.09p
- je opravená drobná chyba v programe ktorá sa nachádzala v zobrazení pri spustení voľby (W) v pôvodnej verzii 1.10 (nezobrazovali sa všetky informácie)
____________________________________________________________
Zobrazenie po prvom návrate niektorej voľby naspäť do menu.
Verzia 1.10n.
Program - verzia 1.10n je pre x-tal:
1.8432MHz
2.0000MHz
2.4576MHz
3.6864MHz
4.0000MHz
4.5000MHz
4.9152MHz
5.0000MHz
6.0000MHz
version 1.10n.zip (41,79 kb)
Obrazovka po stlačení "I".
_____________________________________________________________
Poznámka na záver:
Uvedomil som si že je možné urobiť reprogramovanie PROM74188 aj s verziami programu ktoré v sebe nemajú priamo zabudovanú možnosť reprogramovania - upozorňujem na to že je to zase hlavne pre tých "skúsenejších", týka sa to aj prípravy samotných dát pre takéto reprogramovanie. Postup ako na toje podrobne rozpísaný:
1.- súbor určený na naprogramovanie musí byť zostavený tak že akceptuje už napálené "bitíky"
a teda budeme reprogramovať len bity ktoré obsahujú "0" na novú hodnotu "1"
2.- nahráme vlastný program do SBC6502, spustíme ho, programátor má napájanie vypnuté !
3.- ďalej nahráme naše nové Data riadky /riadky 9000 až 9005/ do SBC6502
/napájanie pre programátor je naďalej vypnuté !/
4.- spustíme voľbu "W"
5.- akonáhle sa objaví hláška že je PROM čistá - tu "oklameme" vlastný programátor tým že je ešte
stále vypnutý, preto si myslí že je založená čistá PROM, teraz do ZIF pätičky založíme PROM
ktorú chceme reprogramovať
6.- program sa opýta či má spustiť napaľovanie - až teraz zapneme napájanie pre programátor
7.- následne potvrdením voľby "Y" potvrdíme napaľovanie a ...
8.- zbehne samotné reprogramovanie obvodu PROM 74188
9.- na záver nasleduje klasická kontrola obsahu a my máme prepísanú /reprogramovanú/ PROM 74188
Možno to vyzerá na pohľad zložito, ale pri dodržaní uvedeného postupu sa jedná o jednoduchú záležitosť. Toto "riešenie" umožňuje použiť na reprogramovanie PROM 74188 aj najnovšie verzie programu.
Prosím, používajte reprogramovanie s rozvahou - a s vedomím že jeden jediný zle zvolený bit Vám môže zlikvidovať správny obsah PROM !
Použitie reprogramovania PROM je výlučne na Vašu zodpovednosť !
Pre mňa práca na programovom vybavení pre programátor PROM 74188 bola po celú dobu príjemnou zábavou a určitou výzvou zároveň, naučil som sa popritom celkom slušne programovať MSBasic na SBC6502 a vytvoril som základné programové vybavenie vo viacerých verziách pre programátor PROM 74188. Program som postupne upravoval až po verziu 1.10n, ak niekomu táto predstava spracovania programu v tejto verzii nevyhovuje - stačí sa vrátiť k niektorej z predchádzajúcich programových verzií - napaľovanie funguje vo všetkých uverejnených verziách.
Keď som začal písať programové vybavenie ani vo sne ma nenapadlo že bude vydaných toľko verzií programu, jednoducho vždy keď som nejakú verziu dokončil tak ma postupne po pár dňoch (alebo týždňoch) napadli ďalšie veci a tie som následne vždy pretavil do novej verzie. Pekne sa to postupne vyvíjalo až som teraz na konci snaženia.
________________________________________________________________________________
V uvedenom odkaze sú uverejnené všetky vydané verzie programového vybavenia pre programátor PROM 74188:
SBC6502 - 66 - PROM 74188 - všetky verzie programu, all program version.
____________________________________________________________
Návrat do všetkých pokračovaní o SBC6502:
http://blog.3b2.sk/igi/post/Directory-SBC6502.aspx
____________________________________________________________
Vaše hodnotenie, Rate post: