
SBC6502 + PROM 74188 programmer
/už aj s "kapotážou"/
S touto záverečnou verziou (1.09) programového vybavenia ako vidieť som si už dal dlhšiu pauzu. Medzitým som si povedal že tu prevediem niektoré veci ktoré som síce chcel už vyskúšať aj predtým, ale akosi som sa k tomu nedostal. Teraz už áno a pretože bolo dosť času na jej skúšanie a otestovanie tak tie zmeny sú v tejto verzii prevedené a uplatnené.
Verzia 1.09 lite:
- je prevedených množstvo ďalších úprav, považujem to za naozaj poslednú verziu programu, tak som si dovolil aj niektoré doteraz nepoužité úpravy
- previedol som tiež presun pamäťových adries na nové miesto (síce to nebolo nutné, ale keďže to nebol problém tak to tu je urobené)
- jedná sa o upravenú verziu pôvodnej verzie "lite" 1.07, pracovná verzia 1.08 bola zase iba neverejná, v nej sa robili potrebné úpravy a zmeny až z toho vyšla táto stabilná verzia 1.09 lite
- vlastné menu je "roztiahnuté" na obrazovke už na celú šírku, väčšia šírka menu podľa mňa na displeji vyzerá lepšie (už to nebude pripomínať niečo ako VIC-20), cena za túto inováciu ? - v konečnom dôsledku je to iba o pár byte (cca 20) dlhší program

Menu - verzia 1.09
- zápis programu používa teraz príkaz ? = PRINT, pri nahratí programu sa automaticky ? zmení na PRINT, vďaka tejto drobnosti je vlastný zápis programu kratší o vyše 500 byte (šikovné, ale tak isto to nie je pre prácu nevyhnutné)
- pri tejto verzii som prišiel na to že automatické mazanie obsahu premenných pri štarte programu akosi nie je celkom samozrejmosťou, vyhodil som skúšobne CLEAR pretože som si myslel že mazanie zbehne pri štarte programu aj tak, ale ukázalo sa že CLEAR v prvom riadku je skutočne potrebné zachovať, boli situácie kedy sa mazanie premenných nepreviedlo pri novom štarte programu. Síce si už nepamätám za akých okolností to bolo, ale CLEAR je proste potrebný, vyhol som sa tým dodatočným problémom. Kto neverí - môže skúšať na vlastnej koži ...
- hodnota premennej LG=1.5 je teraz v programe trvale nastavená na uvedenú hodnotu, odstránil som v programe jej kontrolu (ukázalo sa že LG=1.5 vyhovuje pre všetky prípady). Napríklad: nastavenie PGM pulzu v prvom kole na =50msec. dá v druhom kole PGM pulz =75msec., čo sa ukázalo viac ako dostatočná hodnota (overené priamo v prevádzke).
- tak isto je prepracovaný samotný Line Data generator, teraz už vystupuje pod novým názvom Rows Data generator
- vlastné spracovanie dávky 8 byte v Rows Data generátore teraz zbieha v podprograme, ten sa iba 4x vyvolá, program je vďaka tejto úprave zase o kus kratší
- v príkazoch programu napr. POKE X,(Y+Z) boli odstránené zátvorky - teda teraz je zápis POKE X,Y+Z, program v SBC6502 ich použitie nevyžaduje
- oddeľovač v menu (riadok kde sú samé ---) bol nahradený jednoduchým generovaním postupnosti znaku priamo v jednom podprograme
- pribudol oznam pri zápise dát cez (D) alebo (H) aby ste si zapli odchytávanie textu v Hypertermináli, už nemusíte na to dopredu myslieť, ak ste na to predtým zabudli tak sa musel program nanovo spustiť a potrebný obsah sa musel odznova pekne-krásne ručne nadlapať ... (ručné spustenie odchytávania sa Vám ale aj tak nevyhne, toto je len upozornenie na to že ho treba spustiť a dá sa pokračovať ďalej)
Riešením bez oznamu by bolo spustenie Capture hneď pri štarte programu, alebo pre "tvrďasov" prepísanie Data riadkov priamo z printscreenu ...
- následne po vypísaní Data riadkov cez Rows Data generator Vás program vyzve na ukončenie odchytávania textu (potrebné údaje sú už odchytené, zase ručne treba zápis cez Capture ukončiť)

Animácia výpisu pre zapnutie a vypnutie odchytávania textu.
- ďalšie úpravy vzhľadu a textu v menu, tu som mimo iného koketoval s verziou voľby dĺžky PGM pulzu pomocou klávesy (P) - chvíľu som to aj tak mal, ale nakoniec som ponechal výber cez už "zabehanú" klávesu (L)
- zmena v menu, pribudol nový riadok - výpis obsahu Data riadkov - je tu v dec forme a aj v hex forme, voľba sa prevedie stlačením (C). Výpis prebehne vždy, teda aj pri prázdnom obsahu Data riadkov

výpis konkrétneho obsahu Data riadkov - voľba (C)
- úprava vzhľadu výpisu pre 2 kolo programovania (PGM pulz)
- úprava pozície výpisu v Data rows file name
- dtto sa týka pozície výpisu platné, alebo neplatné Data v datových riadkoch
- zarovnanie výpisu vlastného kontrolného súčtu (CRC),
- zarovnanie výpisu bolo prevedené aj v chybových hláškach
- kontrola správnosti ID teraz zbieha v tej istej sekvencii ako kontrola CRC
- je "prekopaný" vzhľad hlavičky v Igi´s byte to bit analyzéri

Igi´s byte to bit analyzér, tu konkrétne porovnaný obsah Data riadkov s čistou nenapálenou PROM
- zarovnanie výpisu pri voľbe (W)rite
- použitý nový príkaz v programe, teraz je napr.: PRINT SPC(5)"text" v programe namiesto pôvodného PRINT TAB(5)"text", nahradené všetky príkazy kde to bolo možné, na kritických miestach kde je to potrebné PRINT TAB zostáva, viď napr. programový riadok č.2990
- z programu vyhodené bodkočiarky za PRINT TAB(X);"text" zistil som že ich netreba, teda teraz je zápis PRINT TAB(X)"text"
- slučky napr.: FOR F=0 TO 10:NEXT F majú skrátený zápis na FOR F=0 TO 10:NEXT ktorému SBC6502 tak isto dokonale rozumie
- posunul som umiestnenie údajov z Data riadkov z adresy 31000d na novú adresu 32500d, dtto sa týka rozkladu byte na jednotlivé bity, presunuté z adresy 31032d na adresu 32532d (o tomto podrobnejšie na konci článku)
- nakoniec som rozšíril program aj pre ďalšie hodnoty použitého x-talu a to pre: 3.6864MHz, 4.9152MHz a 6.000MHz
Tu len upozorním že v prípade práce dosky SBC6502 s x-talmi 4.91524MHz, 5.0000MHz a 6.0000MHz asi už bude potrebné použiť rýchlu verziu 82C55A (tá ide do 10MHz), alebo je možné že bude treba už vyberať aj z 5MHz verzií 8255A (ak máte šťastie tak vyberať netreba). Problém môže byť v tom, že 65C02 poskytuje kratšie impulzy ako potrebuje 8255A, takže čip nemusí potom na spomínaných x-taloch korektne fungovať. 5MHz verzie 8255A spoľahlivo idú na 4MHz clocku procesoru, takže asi bude treba trochu experimentovať. Ak nemáte chuť, potom 4MHz sú tou najlepšou voľbou taktu procesoru.
Záverom:
Týmto práce na programovom vybavení považujem za skutočne definitívne ukončené (i keď toto som už avizoval niekoľkokrát, teraz to už chcem dodržať). Vyrobil som pre programátor PROM 74188 viacero verzií programového vybavenia, snahou bolo v každej ďalšej verzii niečo pridať do ovládania a poskytnúť čo najviac doplnkových funkcií. Či sa mi to podarilo - tak to už ponechám na Vaše posúdenie. Dĺžka programu sa teraz dostala na približne polovicu pôvodnej veľkosti, pritom z možností programu "vypadla" iba jedna vec a to reprogramovanie a zároveň pribudla nová možnosť výpisu obsahu, takže to skrátenie dĺžky programu považujem za celkom slušný úspech. Významným obmedzením pri tvorbe je to, že nie je možný zápis priamo do obrazovky (teda niečo ako PRINT AT a podobne), t.j. ak sa zapíše riadok tak to už nie je možné prepísať, iba ak sa zmaže celá obrazovka. Za posledných 8 mesiacov som sa v programe ešte vcelku dosť "vŕtal" a hľadal možnosti skrátenia celkovej dĺžky programu.
Program pre programátor pamätí PROM 74188, verzia 1.09 lite, celkove pre 8 rôznych x-talov:

74188 programmer 1_8432MHz_v109.txt (10,61 kb)

74188 programmer 2_4576MHz_v109.txt (10,62 kb)

74188 programmer 3_6864MHz_v109.txt (10,62 kb)

74188 programmer 4_0000MHz_v109.txt (10,61 kb)

74188 programmer 4_5000MHz_v109.txt (10,62 kb)

74188 programmer 4_9152MHz_v109.txt (10,61 kb)

74188 programmer 5_0000MHz_v109.txt (10,62 kb)

74188 programmer 6_0000MHz_v109.txt (10,62 kb)

SBC6502 + doska programátoru PROM74188 (kapotované)
_____________________________________________________________
Táto sekcia je určená už len pre tých ktorí radi vedia čo sa deje vovnútri ...
Verzia 1.09 programového vybavenia používa nové, zmenené pamäťové miesta na svoju prácu:
Umiestnenie pamäťových pozícií je nastavené v prvom programovom riadku,
pôvodne v predchádzajúcich programových verziách to bolo na pozíciách:
adresy 31000÷31031d a 32032÷32039d:
verzia 1.04:
1000 CLEAR:PD=31000:PE=31032:POKE 15,80:REM 80 column.
verzia 1.05:
1000 CLEAR:PD=31000:PE=31032:POKE 15,80:B$="0123456789ABCDEF"
verzia 1.07:
1000 CLEAR:PD=31000:PE=31032:POKE 15,80:U=1:DV=2.25:PP=17*U:LG=1.5
(tieto adresy som len historicky udržiaval, pôvodne tam bola rezerva na spracovávanie 256 bitov naraz /rozloženie 32byte na jednotlivé bity, bolo by treba 256 byte/, ale od toho som už dávno upustil, zvolené umiestnenie pritom nerobilo problém ani v jednej doterajšej verzii a tak som to ponechal ako to bolo, to že som to riešil v premenných /vďaka tomu je to relokovateľné/ tak to bola príprava na možné uvoľnenie zvoleného pamäťového priestoru - a dnes na to došlo)
Teraz sú v programe nastavené pamäťové miesta na hodnote + 1500 byte smerom nahor, teda používajú sa adresy 32500÷32531d a 32532÷32539d:
verzia 1.09:
1000 CLEAR:POKE 15,80:PD=32500:PE=32532:U=2.53:DV=5:PP=17*U:LG=1.5
(na funkčnosť programu premiestnenie týchto adries nemá vplyv, ide to cez použité premenné, takže táto zmena je veľmi jednoduchá, zmenia sa čísla len v 2 premenných - ale uvoľní sa týmto posunom 1500 byte RAM, síce to nie je z hľadiska funkčnosti potrebné, ale urobil som to - je to posledná úprava v programe, nakoniec ak to funguje tomu kto sa v tom nechce vŕtať je to jedno, program funguje aj pôvodnom stave - a aj v novom
, kto neverí môže skúsiť zadať pôvodné hodnoty umiestnenia, program stále pobeží bez najmenších problémov)
(Použité ukážky riadkov sú vždy pre konkrétny použitý x-tal = 4.000MHz)
Pretože prišlo k zmene dôležitých adries pre programátor PROM 74188 verzie 1.09 tak tu je ich prehľad:
adresa: obsah:
32500(d) ; 32 byte - obsah = Data riadky 9001 ÷ 9004
... ; rozsah 32500d÷32531d
... ; Vždy sú tu uložené iba údaje z týchto Data riadkov !
... ; Údaje sú vždy nanovo načítané ak je na displeji
... ; zobrazené MENU. Tu sa vždy nachádzajú DATA
32531(d) ; pre PROM 74188.
______________________________________________________
; nasleduje rozsah 32532÷32539d,
; je tu umiestnená rozložená
; bitová postupnosť obsahu jedného byte,
; takto to bit po bite napaľuje programátor
______________________________________________________
32532(d) ; rozklad - one byte to bit, pozícia bitu 0
32533(d) ; rozklad - one byte to bit, pozícia bitu 1
32534(d) ; rozklad - one byte to bit, pozícia bitu 2
32535(d) ; rozklad - one byte to bit, pozícia bitu 3
32536(d) ; rozklad - one byte to bit, pozícia bitu 4
32537(d) ; rozklad - one byte to bit, pozícia bitu 5
32538(d) ; rozklad - one byte to bit, pozícia bitu 6
32539(d) ; rozklad - one byte to bit, pozícia bitu 7
Iné adresy ako tu uvedené sa vo verzii (1.09) nevyužívajú, pri testoch sa ukázalo že posun až na úplný koniec RAM (skúsil som použiť adresy 32700 a 32732d) nie je dobrý nápad (pri testoch sa prepisovali údaje, aby som bol konkrétny - jednalo sa o pár byte od adresy 32700d, tuším 8byte, smerom vyššie to zostávalo O.K.) a preto som to umiestnil takto a nechal na konci dostupnej RAM ešte nejaký voľný priestor (jedná sa o 228 byte voľnej RAM), pri teraz použitom riešení nastavenia týchto dôležitých adries to beží korektne a bez najmenších problémov.
____________________________________________________________
Záverečná poznámka:
Síce neviem koľko hodín som nad programom odsedel, ale viem že to bolo skutočne "pekných pár hodín", už len dúfam že výsledok úsilia stojí za ten strávený čas.
Želám príjemnú zábavu pri napaľovaní PROM !
____________________________________________________________
04.07.2022
Nakoniec sa ukázalo že je záujem (i keď som veľmi s tým už nepočítal) aby boli naďalej dostupné aj staršie verzie programu (čo ma naozaj potešilo, vďaka za maily !), takže som všetky doteraz vydané verzie (je ich 10, len staršie verzie nemajú v sebe taký veľký rozsah použitých x-talov) programového vybavenia pre programátor PROM 74188 zabalil do jedného, nasledovného balíčku:

all_versions_prg_programmer74188.zip (239,67 kb)
(Ono asi najzaujímavejšie je to že v starších verziách je v REM riadkoch kompletný popis toho čo sa práve deje, kdežto v novších verziách práve v rámci úspory celkovej dĺžky programu je už popis vynechaný a REM riadky sú úplne odstránené, z toho plynie že v starších verziách sa dá celkom dobre "vŕtať" a upravovať. V novších verziách "samodomo" úpravy programu už veľmi neodporúčam.)

Doska programátoru PROM 74188.
____________________________________________________________
Vaše hodnotenie, Rate post: