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

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

 

Tento materiál bol naposledy akualizovaný dňa: 22.10.2023

 

Upozornenie: 

Všetko 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 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 nakoniec všetky doteraz vydané verzie programového vybavenia pre programátor PROM 74188 zabalil do jedného, nasledovného balíčku (ponechal som tiež 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 tento samostatný článok, sú tu tiež zverejnené dôležité adresy programu.

(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í:

 

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
ver. 1.10s(pecial) - 24.12.2023
ver. 1.11(AIO) - 31.12.2023


Všetky verzie programu už 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 aktivovať relé a pustiť do programátoru napaľovacie napätie.

Bezpečný spôsob použitia je spustiť vlastný program a až potom na výzvu v programe zapnúť vlastný hw pogramátoru !

___________

12.09.2023

Urobené 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 dosť často predbiehajú hlavu ... chyby kde to ešte náhodou nájdete - láskavo to prosím prehliadnite, alebo si to v danej verzii sami opravte, ďakujem.

____________

Do všetkých zverejnených verzií bola dnes tiež spätne aplikovaná lepšia kontrola CRC, zmena v programe sa týkala úpravy v 2 programových riadkoch - a to v č.8776 a č.8777.

__________________________________________________________

22.09.2023

- do verzií 1.09, 1.09p, 1.10 a 1.10n boli spätne 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.

__________________________________________________________

24.12.2023

Do archívu pridaná verzia 1.10s(pecial).

__________________________________________________________

31.12.2023

Do archívu pridaná verzia 1.11(AIO).

___________________________________________________________

 

SBC6502 + PROM 74188 programmer

 

Táto sekcia je určená už 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:


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

uveďme si 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, 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)

 

Nové umiestnenie pamäťových miest - verzie 1.09 a 1.09p (a vyššie):

Hodnota je posunutá smerom nahor a to o celých 1500 byte, teda 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 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ážky riadkov sú vždy pre konkrétny použitý x-tal = 4.000MHz)

 

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.                
                  _____________________________________________
                 ;                     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 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é, doplnkové adresy 32540(d)÷32571(d) sa používajú od verzie 1.10n:


32540(d) ;             1. kontrolný byte pre 2 kolo programovania ak nie je správne naprogramovaný v 1 kole

32541(d) ;             2.                                                                             -//-

32542(d) ;             3.                                                                             -//-

32543(d) ;             4.                                                                             -//-

...                                                                                                             ......

...                                                                                                             ......

32571(d) ;           32. kontrolný byte                                                -//-

____________________________________________________

 

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 prepisovali údaje - žeby stack ?) a preto som to 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 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.

(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 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 viac ...


Doska samotného programátoru PROM 74188.

____________________________________________________

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: