Tento materiál bol naposledy akualizovaný dňa: 31.12.2023
Upozornenie:
Všetko zverejnené programové vybavenie je určené pre programátor uverejnený v tomto článku:
SBC6502 - 33 - Programátor PROM 74188. PROM 74188 programmer. Part 1-4.
Nakoniec sa ukázalo že je záujem (i keď som s tým veľmi nepočítal) aby boli naďalej dostupné aj staršie verzie programu (čo ma naozaj potešilo, vďaka za maily !), takže som nakoniec všetky doteraz vydané verzie programového vybavenia pre programátor PROM 74188 zabalil do jedného, nasledovného balíčku (ponechal som taktiež jednotlivé verzie aj v pôvodných článkoch tej-ktorej verzie). A pretože som mal pocit že to začína byť mierne neprehľadné tak som vyhradil balíčku programových verzií nakoniec celý samostatný článok, sú tu tiež zverejnené dôležité adresy programu kde som časom pridal aj nové adresy RAM v programe ktoré sa využívajú od verzie 1.10n.
(Pôvodne tieto informácie aj s programovým balíčkom boli uverejnené priamo v článku pre programové verzie 1.09 a 1.09p - tam som to zrušil, dnes sú iba súčasťou tohoto článku.)
Dátumy vydania jednotlivých uvoľnených programových verzií:
(Všetky programové verzie vyžadujú aby pre SBC6502 bolo k dispozícii 32kB RAM.)
ver. 1.01 - 22.12.2019
ver. 1.02 - 08.01.2020
ver. 1.03 - 04.01.2021
ver. 1.04 - 02.02.2021
ver. 1.04e - 20.03.2021
ver. 1.04g - 18.05.2021
ver. 1.05a - 02.06.2021
ver. 1.05b - 02.08.2021
ver. 1.07 - 10.12.2021
ver. 1.09 - 02.06.2022
ver. 1.09p - 09.08.2022
ver. 1.10 - 28.03.2023
ver. 1.10n - 26.07.2023
diagnostic software - 21.10.2023
ver. 1.10s(pecial) - 24.12.2023
ver. 1.11(AIO) - 31.12.2023
Všetky verzie programu v jednom balíku:
Prom programmer all versions_31122023.zip (468,24 kb)
Ešte pridám toto upozornenie:
Pozor na to, že pred spustením programovacieho softvéru môže stav signálnych liniek portu 8255A aktivovať relé a pustiť do programátoru napaľovacie napätie, preto neodporúčam mať pri spustení založenú PROM ! Bezpečný spôsob použitia je spustiť vlastný program (tým príde k inicializácii čipu 8255A) a až potom na výzvu priamo z programu zapnúť napájanie pre vlastný pogramátor !
___________
12.09.2023
Urobené drobné opravy vo všetkých programových verziách kde som chybu našiel - namiesto nesprávneho slovíčka lenght je už správne použité length ... ako sa ukazuje prsty mi predbiehajú hlavu ... chyby kde to ešte náhodou nájdete - láskavo si to v danej verzii sami opravte, ďakujem. Jednoducho som to prehliadol, na funkčnosť programu to našťastie vplyv nemalo.
____________
Do všetkých zverejnených verzií bola dnes spätne aplikovaná lepšia kontrola CRC, zmena v programe sa týka úpravy v 2 programových riadkoch - a to konkrétne v r.č.8776 a č.8777, samozrejme bez problémov fungujú aj neupravené verzie.
__________________________________________________________
22.09.2023
- do programových verzií 1.09, 1.09p, 1.10 a 1.10n boli dnes aplikované nasledovné úpravy:
a. - celkom nový spôsob testovania povolenej dĺžky PGM pulzu
b. - nový spôsob testu stlačenia klávesy "C" pri spúšťaní Capture v Hypertermináli
__________________________________________________________
22.10.2023
Do archívu všetkých vydaných verzií bol dnes pridaný aj diagnostický software pre testovanie v prípade nejakých problémov s hw časťou samotného programátoru PROM 74188, napriek tomu dúfam že ho nebude treba nikdy použiť ...
__________________________________________________________
24.12.2023
Do archívu všetkých vydaných verzií bola dnes pridaná verzia 1.10s(pecial).
__________________________________________________________
31.12.2023
Do archívu všetkých vydaných verzií bola dnes pridaná posledná, záverečná verzia 1.11(AIO).
___________________________________________________________
SBC6502 + PROM 74188 programmer
Táto sekcia je určená len pre tých ktorí radi vedia čo sa deje vovnútri ...
(Pre vlastnú prácu to ale nie je potrebné vedieť.)
Použité adresy pre prácu s čipom 8255A /3x 8-bitová brána/, tu sa v adresácii nič nemenilo:
___________________
riadiaci register PCW:
adresa 32771d /8003h/, 137 - nastaví porty A a B port ako výstupné, port C je vstupný
(POKE 32771,137)
___________________
adresa:32768d /8000h/, výstup
port A - bity 0,1,2,3,4 - vývody adries A,B,C,D,E vlastnej PROM 74188
bit 5 - ovládanie CS(neg.) PROM
bit 6 - ovládanie prog.pulzu z 5V/10.5V/5V
bit 7 - ovládanie relé na On/Off pre pin 16 (Ucc) PROM 74188
ovládanie sa prevádza pomocu príkazu POKE
___________________
adresa:32769d /8001h/, výstup:
port B - bity 0,1,2,3,4,5,6,7
ovládanie tranzistorov T1÷T8, ktoré spínajú výstupy portu B do 0 pri programovaní,
pamäť PROM 74188 sa programuje postupne v rámci bytu vždy iba po bitoch, vždy
je zopnutý v jednom okamžiku iba jeden bit, v jednom momente spína iba jeden
tranzistor BS170, ovládanie sa prevádza pomocu príkazu POKE
___________________
adresa:32770d /8002h/, vstup:
port C - bity 0,1,2,3,4,5,6,7
čítanie obsahu PROM, čítanie obsahu PROM po naprogramovaní
ovládanie sa prevádza pomocu príkazu PEEK
___________________
Od verzie 1.09 a 1.09p programového vybavenia sa používajú
nové pamäťové miesta v programe:
Staré umiestnenie - verzia 1.01 až 1.07:
Umiestnenie pamäťových pozícií je nastavené v prvom programovom riadku:
adresy 31000÷31031d a 32032÷32039d
uvediem príklady:
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 historicky udržiaval "v chode", pôvodne tu bola rezerva na spracovávanie 256 bitov naraz /pôvodne som totiž plánoval rozloženie 32byte na jednotlivé bity, a to v jednom "záťahu" na to by bolo treba vyhradiť spomínaných 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 vo výsledku riešil cez premenné /vďaka tomu je to relokovateľné/ tak to bola príprava na budúce možné uvoľnenie zvoleného pamäťového priestoru - a dnes na tú zmenu došlo.)
Nové umiestnenie pamäťových miest - verzie 1.09 a 1.09p (a vyššie):
Hodnota voľnej RAM je teraz posunutá smerom nahor a to o celých 1500 byte, používajú sa nové adresy: 32500÷32531d a 32532÷32539d.
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 celých 1500 byte RAM, síce to nebolo a nie je z hľadiska funkčnosti potrebné, ale urobil som to - je to ú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ážka pre riadok 1000 platí pre konkrétny použitý x-tal = 4.000MHz, hodnoty pre nové umiestnenie sú vyznačené v premenných PD a PE.)
Prišlo k zmene dôležitých adries RAM pre programátor PROM 74188 verzií 1.09 a 1.09p - 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 napálenie do PROM 74188.
_____________________________________________
; Zaradená poznámka:
; nasleduje rozsah 32532÷32539d,
; tu je 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 verziách 1.09 a 1.09p nevyužívajú.
___________________________________________________________________
Doplňujúci údaj ktorý platí iba od verzie 1.10n (a vyššie):
- vďaka tomu že sa teraz v programe testuje ktorý byte konkrétne treba napáliť nanovo ak nepríde k jeho správnemu napáleniu tak pre túto novú kontrolu je potrebných v programe použiť dodatočných 32 byte pamäte RAM, 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
Nové, dodatkové adresy v programe sa používajú od verzie 1.10n (a vyššie) - 32540(d)÷32571(d):
32540(d) ; 1. kontrolný byte pre 2 kolo programovania ak nie
je správne naprogramovaný byte č. 1 v 1 kole
32541(d) ; 2. -//- byte č. 2 v 1 kole
32542(d) ; 3. -//- byte č. 3 v 1 kole
32543(d) ; 4. -//- byte č. 4 v 1 kole
... ......
... ......
32571(d) ; 32. -//- byte č.32 v 1 kole
____________________________________________________
Pripomeniem čo nastavujú premenné použité v riadku 1000:
U - konštanta pre prepočet rýchlosti ktorá platí pre hodnotu dĺžku pulzu =1msec,
(konštanta platí vždy pre konkrétny použitý x-tal), využíva sa aj pri voľbe (L)
DV - konštanta, ktorou sa prepočítávajú všetky čakacie programové slučky (mimo vlastného PGM
pulzu), vďaka tomu je možné adaptívne meniť pre rozličné hodnoty clocku správne dĺžky
čakacích programových slučiek
PP - premenná, ktorá nastavuje štandartne dĺžku PGM pulzu v 1.kole na 17ms (vzorec: PP=17*U)
(platí vždy pre konkrétny použitý x-tal)
LG - premenná, (new PGM pulse) ktorá určuje dĺžku PGM pulzu pre druhé kolo programovania, je to
výsledok PP=PP*LG, teda v druhom kole bude výsledný PGM pulz 1.5x dlhší
Upozornenie:
Pri testoch sa ukázalo že posun dát až na úplný koniec RAM (skúsil som použiť adresy 32700 a 32732d) nie je celkom dobrý nápad (pri testoch sa tu už prepisovali údaje - žeby tu bol umiestnený stack ? - asi áno) a preto som nastavenie adries umiestnil takto a nechal na konci dostupnej RAM ešte nejaký voľný priestor (jedná sa momentálne o 228 byte voľnej RAM. Poznámka: tento údaj klesne ešte o -32byte od verzie 1.10n), pri takto nastavenom využití RAM to beží korektne a bez najmenších problémov. Ako sa ukázalo nejakú RAM úplne na konci pamäťového priestoru využíva Basic pri niektorých veciach, takže ak s tým počítam tak sa žiadne problémy pri používaní programátoru nekonajú - možno tento poznatok bude niekomu užitočný.
Dosť obmedzujúcim faktorom je malá povolená dĺžka programového riadku - 72 znakov, inak by sa program program dal napísať omnoho efektívnejšie. Napriek tomuto obmedzeniu som si práve preto povedal že tento SBC6502 na to aj tak má a že to dokážem "rozbehať" aj na takomto starom počítači.
(Asi najzaujímavejšie na starších verziách je v REM riadkoch kompletný popis toho čo sa práve deje, v novších verziách v rámci úspory celkovej dĺžky programu je popis už vynechaný a REM riadky boli z programu ú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, bez popisu sa dá naozaj ľahko v programe "stratiť".
Ešte malá štatistika:
V budovanej verzii programu 1.10 je napríklad volanie príkazov GOSUB použité 111x, GOTO 61x, IF THEN 98x, PRINT /?/ 149x, FOR - NEXT 16x, tieto údaje sa nebudú veľmi líšiť od verzií 1.09 a 1.09p, ak áno tak len veľmi mierne. Ak bude niekedy dostupná nejaká novšia verzia tak tam asi bude tých volaní ešte o niečo viac ...
Doska programátoru PROM 74188.
_____________________________________________________
Návrat do všetkých pokračovaní o SBC6502:
http://blog.3b2.sk/igi/post/Directory-SBC6502.aspx
____________________________________________________________
Vaše hodnotenie, Rate post: