SBC6502 - 66 - PROM 74188 - všetky verzie programu, all program version.

By Administrator at September 12, 2023 15:48
Filed Under: SBC6502

 

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ž tieto jednotlivé verzie aj v pôvodných článkoch tej-ktorej verzie). A pretože som už dlhšie 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 taktiež zverejnené dôležité adresy programu kde som časom pridal aj nové adresy RAM v programe ktoré sa využívajú od verzie 1.10n, ale to je dôležite iba pre tých ktorí radi plne rozumejú programu, pre používanie ak je všetko O.K. to nie sú až tak dôležité informácie.

(Pôvodne tieto informácie aj s programovým balíčkom boli uverejnené 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 na SBC6502 bolo k dispozícii 32kB RAM.)

 

22.12.2019 - ver. 1.01
08.01.2020 - ver. 1.02
04.01.2021 - ver. 1.03
02.02.2021 - ver. 1.04
20.03.2021 - ver. 1.04e
18.05.2021 - ver. 1.04g
02.06.2021 - ver. 1.05a
02.08.2021 - ver. 1.05b
10.12.2021 - ver. 1.07
02.06.2022 - ver. 1.09
09.08.2022 - ver. 1.09p
28.03.2023 - ver. 1.10
26.07.2023 - ver. 1.10n
21.10.2023 - diagnostic software
24.12.2023 - ver. 1.10s(pecial)
31.12.2023 - ver. 1.11(AllInOne)

 

Všetky verzie programu v jednom balíku:

Prom programmer all versions_31122023.zip (468,24 kb)

 

Pridám ešte toto upozornenie:

 

Pozor na to, že pred spustením programovacieho softvéru môže stav signálnych liniek portu 8255A za určitých podmienok aktivovať relé a pustiť do programátoru napaľovacie napätie, preto neodporúčam pri zapnutí napájania pre programátor mať v ňom založenú PROM !


Bezpečný spôsob použitia je spustiť vlastný program (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 túto chybu našiel - namiesto nesprávneho slovíčka lenght je tam už správne použité slovo 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 samotnú funkčnosť programu to žiaden 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 r.č.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 samostatný diagnostický software pre testovanie programátoru v prípade nejakých problémov s jeho hw časťou, napriek tomu dúfam že ho nebude treba nikdy reálne nasadiť - a 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(AllInOne).

___________________________________________________________

 

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 (a vyššie) 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 Laughing, 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 (a vyššie) - 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ú Foot in mouth - 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 (1977).

 

(Asi najzaujímavejšie na starších verziách programu 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í asi 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:

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: