50 výročie vzniku Atari. 50 years since the founding of Atari.

By Administrator at June 24, 2022 18:32
Filed Under: Atari

 

 

Na budúci týždeň v pondelok  si pripomenieme 50 rokov od založenia firmy Atari:


Dňa 27.06.1972 podali dve osoby - Nolan Bushnell a Ted Dabney žiadosť na registráciu Atari Incorporated. Týmto dátumom môžeme povedať že vznikol priemysel videohier, dovtedy o tomto pojme nikto ani nechyroval. Bolo to v meste Santa Clara, na Scott Blvd. 2962, tu na tomto mieste malo ATARI svoju prvú obchodnú základňu.

Koho to zaujíma podrobnejšie choďte na tento odkaz:

Do začiatku 80-tych rokov udávala smer herného biznisu a písala históriu počítačových hier, ale postupne sa dostala mimo hlavného prúdu /viď odkaz/ a dnes je z pôvodnej firmy len tieň. Teraz to skúša aj v hotelierstve a tiež má novú konzolu Atari VCS.

Toto veľké výročie chce firma vo veľkom osláviť, oslava by mala trvať celý rok a tak nám firma predstavuje svoje výročné logo. Volá sa GoldSchool Sunnyvale a je inšpirované legendárnym pôvodným štúdiom Atari, ktoré sídlilo práve v spomenutom Sunnyvale. V rámci osláv Atari chce tiež predstaviť nové hry a aj nové spolupráce v rámci ktorých licencuje svoje značky iným štúdiám. Na programe sú vraj aj ďalšie oznámenia a tak uvidíme čo si pre nás táto legenda pripravila.

 

Takže je to naozaj už hodne veľké číslo, skalní si to užijú a dajú si dopredu chladiť šampanské - i keď to čo dnes z firmy zostalo príliš dôvodov k oslave neposkytuje, ale napriek všetkému - mnohí z nás začínali práve na 8 bitovom Atari, alebo sa k nemu postupne dopracovali a atmosféra tej doby kedy sme ich používali je skutočne neopakovateľná, v tom sa asi zhodneme všetci - a naše mašinky nebudeme mať menej radi. Teraz už nezostáva nič iného - len dúfať že legenda úplne nezomrie.

29.06.2022

P.S.:

Je hodne, hodne smutné že jeden nemenovaný (ručne moderovaný) web túto informáciu (mimo iného) prešiel absolútnym mlčaním ...

___________________________________________________

Vaše hodnotenie, Rate post:

Photo - desoldered motherboard Atari 130XE.

By Administrator at June 23, 2022 13:22
Filed Under: Atari

Vždy by bolo zaujímavé mať k dispozícii fotografiu odstrojenej základnej dosky Atari 130XE - a to v poriadnom rozlíšení. Síce na webe sa na danú tému vždy niečo našlo, ale stále iba v nízkom rozlíšení a teda na nejaké to hľadanie konkrétnej súčiastky priamo na doske to bolo fakticky nepoužiteľné. Časy sa našťastie ale menia, MrFish nafotil hornú aj dolnú stranu odstrojeného motherboardu (vďaka !!!) a tak si to môžete pozrieť vo väčšom rozlíšení. Potom sa už dá veľmi slušne vyhľadať a identifikovať hľadaná súčiastka - je to naozaj veľmi hľadaná a vítaná pomôcka.

 

Atari 130XE motherboard - top. Foto: MrFish/atariage.com

/Pre plné rozlíšenie treba kliknúť priamo na obrázok./

 

Atari 130XE motherboard - bottom. Foto: MrFish/atariage.com

/Pre plné rozlíšenie treba kliknúť priamo na obrázok./

 

Osobne mňa dostupnosť týchto fotografií skutočne hodne potešila, je to výborný pomocník. Samozrejme sú aj iné možnosti identifikácie miesta súčiastky ale táto naprosto spoľahlivá "metóda" doteraz chýbala. No, ale ako vidieť časy sa menia a to k lepšiemu, našťastie.

___________________________________________________________

Vaše hodnotenie, Rate post:

Dual power supply Atari 1050 /Atari XF551/.

By Administrator at June 22, 2022 19:28
Filed Under: Atari

Pred časom som uverejnil jednu snímku tohoto zdroja - viac obrázkov som nemal k dispozícii. Našťastie teraz sa spomenutý stav zmenil a tak je k dispozícii pár ďalších záberov. Bohužiaľ, stále nie z vnútrajšku. Možnosti sú pritom len dve - jeden transformátor s dvomi oddelenými vinutiami alebo sú tam transformátory dva. Osobne sa prikláňam k prvej verzii - zaberá to menej miesta a je to aj vo výsledku lacnejšie.

Výrobcom uvedeného zdroja bola firma Futuretronics. Čo je zaujímavé - bol skonštruovaný na napájanie napätím 240V/AC, výstupné napätie dosahovalo vtedy 8.5V/AC čo naprosto postačovalo, pritom dokonca zdroj poskytoval väčší výstupný prúd ako originálne zdroje (tie boli na 3A, tu je  výstup dimenzovaný až na 3.4A  i keď medzi nami tie 3A sa reálne neodoberali nikdy). Výhoda ? - sú tu dva zdroje v jednej krabici - teda stačí na 2 zdroje v jednom použiť iba jeden prívod napájania.


Vlastná interná elektronika je veľmi jednoduchá - je tu iba priamy výstup z transformátoru na výstupný káblik pre jednu floppy jednotku a dtto platí aj pre druhú. Tu sa len už môžeme dohadovať či sú v ceste použité aj nejaké poistky (minimálne primár, dúfam). Škoda že nie je k dispozícii sieťový vypínač a "bodla" by aj nejaká indikácia že je to zapnuté. No nič, bez nich sú náklady na zdroj nižšie ...

 

 

No, možno sa niekedy dočkáme aj toho že bude k dispozícii aj fotka "vnútorností". Idea dvojnásobného zdroja rozhodne nebola na zahodenie, v dnešnej dobe zástancov používania pôvodných disketových jednotiek rýchlo ubúda a tak teda to už nie je taká horúca téma ako pred tými rokmi ... ale je zaujímavé že sa objavila len táto verzia duálneho zdorja, oficiálne o inom výrobcovi duálneho zdroja dodnes neviem.

 

Firma Futuretronics existuje stále, aj v dnešnej dobe, sídlo má v Austrálii a doteraz sa hrdo hlási k tomu že vyrábala veci  pre Atari, tak isto podporuje aj jej retro výrobky.

___________________________________________________________

Vaše hodnotenie, Rate post:

SKYDATA SK551 Atari floppy unit - made by Argentina.

By Administrator at June 10, 2022 13:35
Filed Under: Atari

ο

 

Občas sa ešte aj po tých rokoch objavia veci o ktorých sme doteraz nevedeli - na portáli ebay sa objavila na predaj disketová jednotka kompatibilná s Atari XF551 s označením SKYDATA SK551 /firma ktorá zastupovala Atari v Argentíne/. Výrobca tejto jednotky sídlil v Argentíne (San Luis), z Južnej Ameriky výrobcov takéhoto zariadenia akosi je veľmi, veľmi málo. Je pravdepodobné že základná doska je variantou originálnej dosky a teda aj výsledné vlastnosti jednotky budú (boli, sú) identické s jednotkou originálnou. Zmena oproti originálu je v prívodnom kábliku (je napevno) a vďaka tomu postačuje na zadnej strane iba jeden SIO konektor.

 

Jednotka sa na uvedenom portáli veľmi rýchlo predala za "baťovskú" cenu 199.99 USD.

 

Viac informácií priamo nie je dostupných, ale sú k dispozícii aspoň slušné obrázky a vďaka nim som predsa len niečo navyše zistil. Krabica a manuál síce nie sú v najlepšom stave - ale nie je tu zase ani nič extrémne rozpadnuté. Veľkosť vlastnej jednotky je skutočne príjemným prekvapením, vlastné púzdro jednotky je kovové, krabica je oproti XF551 vďaka tomu omnoho menšia. Na iné miesto je presťahovaný prepínač ID čísla nastavenia disketovej jednotky. Pretože je použitý iba jeden konektor v napájacej časti - takže to vyzerá na to že na napájanie sa používa štandartný 9V/AC/3A transformátor /zdroj na foto nie je/. Je teda pravdepodobné že aj zdrojová časť bude identická - akurát tu je využitý kovový obal ako chladič stabilizátorov, potom je chladenie jednotky dostatočné /použitie spínaných zdrojov v tej dobe je vysoko nepravdepodobné - boli by príliš drahé/. Čo ma zarazilo - chladenie jednotky je riešené neuveriteľne nešikovne /vcelku charakteristický rys vtedajšej doby/ - na spodnej strane jednotky nie sú žiadne chladiace otvory pre dobré prúdenie vzduchu ... alebo zjavne pred tými rokmi vedel vzduch prúdiť v disketových jednotkách celkom inak ako sa to deje v dnešných časoch. Tongue out

 

Vlastné rozmery tejto jednotky:

Dĺžka  - 286 mm

Šírka  - 147 mm

Výška -  49mm

Rozmer predného panelu presne zodpovedá vloženej disketovej jednotke.

 

Ako som už písal, vlastnosti sú identické s jednotkou XF551 /v jednotke je použitý mikroprocesor 8040, čo len potvrdzuje že je to zvnútra zapojením identické/, pracuje s disketami hustoty Single (90kB), Medium (128kB), Double (180kB) a Double Side Double Density (360kB). Ak je použitý aj rovnaký firmware ako v XF551 tak potom zdedila táto jednotka aj rovnaké problémy pri správnom načítaní hustoty založenej diskety. Našťastie toto vie odstrániť patchovaný firmware 7.7. Oproti originálu má na prednej stene vyvedenú aj indikáciu pomocou LED ktorá oznamuje zapnutie napájaniea /to je príjemný bonus/. Podľa štítku na spodnej strane sa dá zistiť že sa jedná o sériu "D", t.j. nejedná sa o prvú verziu tejto jednotky.

 

Teraz už len nasledujú fotografie:

 

 

 

 

 

 

 

 

 

___________________________________________________________

Vaše hodnotenie, Rate post:

X-tal oscillator board - no.5. X-tal tester shield.

By Administrator at June 10, 2022 10:09
Filed Under: Non-Atari

Doštička x-tal oscillator no.5

/tu ešte bez neskôr prevedenej úpravy, t.j. bez dodatočného jumperu a kapacity/

 

Prešlo pár dní -  a rozhodol som sa rozšíriť možnosti testeru x-talov, postavil som samostatnú malú doštičku (shield), ktorá sa zakladá na miesto TTL oscilátoru č.2, použité odpory majú veľkosť 470Ω. Výhody sú jasné - máme teraz na testovanie x-talu celkove 3 možnosti (odpory sú buď 2k2, 1k alebo 470Ω).

 

Pozrime si zapojenie - oscilátor č.5:


Z použitého obvodu 74LS04 je tu využitá iba jeho 1/2, teda iba 3 hradlá. Zostávajúce, nepoužité 3 hradlá sú zapojené tak aby boli ošetrené ich vstupy.


Na tomto mieste dobre poslúži aj obyčajná pätička. a vlastnej doske oscilátorov pribudla ešte jedna pätička - dummy, je v strede obrázku, úplne na spodku. Slúži len na odkladanie oscilátoru č.5 ak sa nepoužíva, t.j. jej vývody sú úplne voľné.

 

Oscilátor č.5 na  svojom mieste "odpočinku", t.j. ak sa nepoužíva.

V napájaní som použil dve kapacity - 47uF a M1.

 

Oscilátor č.5 osadený v pracovnej pozícii č.2, ešte nie je pripojený skúšaný x-tal. Použitý kondenzátor 47uF/6.3V na doštičke priamo v napájaní nie je nutnosťou, nie je zakreslený ani v schéme, stačí ak je použitá iba kapacita M1. Tu na doštičke sú osadené obidva spomenuté kondenzátory.


Teraz pôjdem na "perličky" ktoré som objavil počas testovania:


x-tal 8.388608MHz na obrázku pod týmto textom pri odporoch 2k2 kmitá pekne na uvedenej frekvencii. Ale ak majú odpory hodnotu =1k tak už kmitá na 3.harmonickej, t.j. na trojnásobku uvedenej hodnoty - 25.165MHz. A ďalej - ak majú odpory hodnotu =470Ω tak zase pekne kmitá na pôvodnej hodnote ... toto je naozaj dobré vedieť.

 

x-tal 8.388608MHz


Ďalší príklad zaujímavého zistenia - x-tal 2MHz - ak sú odpory =470Ω kmitá na druhej harmonickej, t.j. na 4MHz, inak pri 2k2 alebo 1k poslušne frčí na pôvodných 2MHz. Takže tie testy sú skutočne zaujímavé a občas zistíme o x-tale celkom zaujímavé informácie.

x-tal 2MHz


x-tal 33.500MHz - napravo, na foto pre porovnanie veľkosti je tu štandartný x-tal 24MHz


Tak táto potvora /x-tal 33.500MHz/ mi trvale a nezameniteľne beží iba na 1/3 uvedenej hodnoty (11.166MHz), proste s tým čo mám ho nedokážem dostatočne vybudiť, tiež vcelku perlička. Tieto x-taly (mám ich 5) asi len odložím bokom bez toho aby som s nim nejako ďalej rátal. Aj x-tal 24.00MHz z obrázku kmitá na 1/3, tj. na 8MHz.


A ešte niečo čo sa týka bytostne Atari - a nesúvisí priamo s predchádzajúcou časťou článku:

Testovaný 3x  TTL oscilátor 8.333MHz - určené pre jednotku Atari XF551.


Fakt presné oscilátory, všetky tri ukazujú naprosto zhodne túto hodnotu.


Pri testovaní sa ukázalo že postaviť túto doplnkovú dosku bolo naozaj dobré rozhodnutie. Pre niekoho bude dobrým riešením postaviť si tento oscilátor č.5 priamo na oscilátorovú dosku, ja skôr počítam iba s jeho občasným použitím takže tak ako to je teraz mi vcelku vyhovuje /nechcem si zaplniť miesto na doske tam kde môže byť osadená vstupná časť pre merač frekvencie/.

___________________________________________________________

08.07.2022

Ukázalo sa, že na tejto doske sa dá urobiť ešte jedno drobné vylepšenie pre testovanie x-talov, stačí priamo do cesty x-talu /do série/ vložiť 22pF÷39pF kondenzátor. V prípade ak ho pri testovaní nechceme /alebo nepotrebujeme/ - tak ho iba skratujeme cez prepojku Ju. Zmena na doštičke na túto úpravu je naozaj veľmi jednoduchá.

 

Upravená doska - tester x-tal ver.5

 

A takto vyzerá prevedená úprava v reáli.

Pribudol jumper a kapacita 22÷39pF.

(Na foto je jumper rozpojený.)


Dtto.

___________________________________________________________

Vaše hodnotenie, Rate post:

SBC6502 - 56 - PROM 74188 - last, best program v.1.09 lite, 1.09patch.

By Administrator at June 02, 2022 08:54
Filed Under: SBC6502

SBC6502 + PROM 74188 programmer

/už aj s vynovenou "kapotážou"/

 

S touto verziou (1.09, 1.09p) 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 už prevedené a uplatnené.


Program - verzia 1.09 je pre x-tal:
1.8432MHz
2.4576MHz
3.6864MHz
4.0000MHz
4.5000MHz
4.9152MHz
5.0000MHz
6.0000MHz

version 1.09.zip (35,09 kb)


Verzia 1.09 lite: - je prevedených množstvo ďalších úprav, tu som si dovolil nasadiť aj niektoré doteraz nepoužité úpravy

 

- previedol som presun pamäťových adries na nové miesto, uvoľnilo to viac miesta pre program - i keď toto naozaj nebolo nutné, jednoducho skúšam čo to dá

 
- 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 teraz "roztiahnuté" na obrazovke 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, za to to stojí

 

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 nemusí byť vždy celkom samozrejmosťou, vyhodil som skúšobne CLEAR pretože som si myslel že mazanie premenných 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 sa ukázal ako potrebný, vyhol som sa dodatočným problémom. Kto neverí - môže si to vyskúšať na vlastnej koži ... za starosti ktoré môžu nastať tých pár byte navyše ak tam nedám spomenutý príkaz do programu to naozaj nestojí.

 
- hodnota premennej LG=1.5 je tu v programe trvale nastavená na uvedenú hodnotu, odstránil som v programe jej kontrolu (ukázalo sa že LG=1.5 vyhovuje pre naozaj všetky prípady). Napríklad: nastavenie PGM pulzu v prvom kole na =50msec. dá potom v druhom kole PGM pulz =75msec., čo sa ukázalo viac ako dostatočná hodnota (overené priamo v prevádzke počas dlhšej doby), ak s takýmito PGM pulzami ani tak nedokážete Vašu PROM napáliť tak je naozaj vhodná iba na jednu vec - a to do koša. A to už s uvedenými parametrami PGM pulzu ideme hodne mimo datasheetových údajov.

 
- je prepracovaný Line Data generator, teraz je pod názvom Rows Data generator

 

- vo verzii 1.09 a 1.09.p je použitá zvuková signalizácia ako vo verzii 1.07 a to cez PC speaker

 

- vlastné spracovanie dávky 8 byte v Rows Data generátore tu zbieha v podprograme, ten sa potom 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 v podobe
POKE X,Y+Z, program v SBC6502 zátvorky 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),(H) a (R) 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). Po voľbe (R) príde po výpise k ukončeniu programu.

Riešením bez oznamu by bolo spustenie Capture hneď pri štarte programu, alebo pre "tvrďasov" je tu stále možnosť 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é, 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 /ak sú tam samé nuly/.

 

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 procesor 65C02 poskytuje kratšie impulzy pre zýpis a čítanie ako potrebuje pre svoju činnosť obvod 8255A, takže čip nemusí potom na spomenutý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 clock je tá najlepšia voľba vlastného taktu procesoru.

 
Záverom:

Týmto práce na programovom vybavení verzie 1.09 a 1.09p považujem za ukončené. 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 čo tam už je nie je možné prepísať, iba ak sa zmaže celá obrazovka. Za posledné mesiace som sa v programe vcelku dosť  "vŕtal" a hľadal možnosti skrátenia celkovej dĺžky programu. A zadarilo sa.

__________________________________________________________

09.08.2022

Dnes uvoľnená verzia 1.09p (=patch, jedná sa o úpravy a skrátenie niektorých zápisov programových riadkov /ukázalo sa že zápis sa ešte stále dá skrátiť/, je tu oprava v riadku 1630, kde bola v zápise použitá dvojitá dvojbodka /moja chyba, ale program fungoval bez problémov/. Ostatné úpravy sa týkajú viacerých programových riadkov, pretože sa dal ich zápis ďalej zjednodušiť. Spomenutá chyba verzie 1.09 je už priamo v programe opravená.

Zdôrazňujem - pôvodná verzia 1.09 bola plne funkčná aj bez patchu a opravy spomenutého riadku.


Vrelo odporúčam poslednú verziu 1.09p programového vynavenia.

 

menu - verzia 1.09p

 

Uvediem názorný príklad pôvodného zápisu programového riadku vo verzii 1.09:

 1105 GOSUB 2995:? "   U=";U;"DV=";DV;"PP=";PP;"LG=";LG;


Nový zápis toho istého programového riadku vo verzii 1.09p:

 1105 GOSUB 2995:? "   U="U"DV="DV"PP="PP"LG="LG;


Program - verzia 1.09patch je pre x-tal:


1.8432MHz
2.4576MHz
3.6864MHz
4.0000MHz
4.5000MHz
4.9152MHz
5.0000MHz
6.0000MHz

version 1.09patch.zip (34,89 kb)

 

Poznámka (25.10.2022):

Pretože som tu robil opravu tak som priamo do tejto verzie ešte urobil úpravu zobrazenia pri použití výberu (L), je to teraz prehľadnejšie.


SBC6502 + doska programátoru PROM74188 v jednom celku

 

Listing programu - verzia 1.09p pre x-tal = 4.9152MHz:


 1000 CLEAR:POKE 15,80:PD=32500:PE=32532:U=3.13:DV=6:PP=17*U:LG=1.5
 1004 B$="0123456789ABCDEF":R$="09.08.2022, x-tal = 4.9152MHz"
 1006 Q$="2022_ver.1.09/patch/ ------------"
 1010 PA=32768:PB=32769:PC=32770:CWR=32771:POKE CWR,137
 1014 ? CHR$(12):?:? SPC(27)"SBC6502 (32kB RAM + 8255A)"
 1065 ? SPC(15)"Turn ON (+ PC sound) the power to the programmer !"
 1066 NS=1.5:PG=0:DD=0:? SPC(25)R$:GOSUB 2000
 1090 GOSUB 2400:Z=0:X=0:Y=0:VP=0:IG=0:GH=0:NS=1:GOSUB 9000
 1100 ? CHR$(12):GOSUB 1700:?:IF ID<>32 THEN 8900
 1101 ?" ----------- Best 74188 PROM programmer,Igi(c)"Q$
 1105 GOSUB 2995:? "   U="U"DV="DV"PP="PP"LG="LG;
 1106 GOSUB 2990:GOSUB 8781
 1108 GOSUB 2995:? "(L)enght  PGM pulse  ="PP/U"msec";:GOSUB 2990
 1110 GOSUB 2995:? "   pulse for 2 round ="PP/U*LG"msec";
 1112 GOSUB 2990:GOSUB 8781
 1113 GOSUB 2995:? "(C)ontent Data  Rows";:GOSUB 2990
 1114 GOSUB 2995:? "(D)ec input data";:GOSUB 2997:GOSUB 2990
 1116 GOSUB 2995:? "(H)ex input data";:GOSUB 2997:GOSUB 2990
 1118 GOSUB 2995:? "(R)ead  P R O M ";:GOSUB 2997:GOSUB 2990
 1120 GOSUB 2995:? "(T)est  P R O M"SPC(10)"/is empty ?/";:GOSUB 2990
 1122 GOSUB 2995:? "(V)erification PROM against Data rows";:GOSUB 2990
 1124 GOSUB 2995:? "(W)riting Data   direct into P R O M/";:GOSUB 2990
 1126 GOSUB 2995:? "(Q)uit program";:GOSUB 2990:GOSUB 8781
 1128 GOSUB 2995:? "   Data /rows/ file name:";:GOSUB 2990
 1130 GOSUB 2995:? "   "C$;TAB(78)"-":GOSUB 8776:?
 1140 ? SPC(31)"Your choice:";:INPUT A$:IF A$="L" THEN DD=1:GOTO 1600
 1141 IF A$="C" THEN Z=3:GOTO 3500
 1142 FG=1:IF A$="D" THEN 4300
 1144 IF A$="H" THEN 4200
 1146 IF A$="R" THEN IG=2:GOTO 5000
 1148 FG=0:IF A$="T" THEN 6000
 1150 IF A$="V" THEN VP=1:GOTO 8000
 1152 IF A$="W" THEN VP=9:GOTO 7000
 1154 IF A$="Q" THEN END
 1200 GOTO 1090
 1600 GOSUB 5500:? " Duration of PGM pulse:"PP/U;"msec (normal max.20)"
 1610 INPUT " New lenght PGM pulse (allowed range: 1-50msec)";PG:?
 1620 IF PG<1 OR PG>50 THEN GOSUB 2200:GOTO 1600
 1630 IF PG>20 THEN ? " At your own risk ...":GOSUB 2302:NS=1.5
 1640 ? " PGM pulse for 2 rounds=";PG*LG;"msec"
 1650 PG=PG*U:GOSUB 1700:GOSUB 2000:GOTO 1090
 1700 IF PG=0 THEN 1730
 1720 PP=PG
 1730 RETURN
 1999 ? SPC(3)"Wrong input !":GOSUB 2302:RETURN
 2000 FOR F=0 TO DV*2000*NS:NEXT:RETURN
 2050 FOR F=0 TO DV*20:NEXT:RETURN
 2100 FOR F=0 TO DV*100:NEXT:RETURN
 2200 NS=0.6:FOR GI=1 TO 3:GOSUB 2302:GOSUB 2000:NEXT
 2300 GOSUB 2500
 2301 ? SPC(18)"-->  No valid data !"SPC(8)"CRC="CRC;:GOSUB 2990
 2302 ? CHR$(7);:RETURN
 2400 POKE PA,0:POKE PB,0:RETURN
 2500 ? " -";:RETURN
 2990 ? TAB(78)"-":RETURN
 2995 ? " -"SPC(20);:RETURN
 2997 ? " + generate Data rows";:RETURN
 3010 ? CHR$(12);:T=0:Q=0:X=0:Y=0:A=0:Y=0:OK=0:ER=0
 3015 ? SPC(25)"Igi"CHR$(39)"s byte to bit analyzer:"
 3020 ? SPC(15)"by   Data   Ve    PROM   by   Data   Ve    PROM"
 3022 ? SPC(15)"te:  bit:   ri    bit:   te:  bit:   ri    bit:"
 3025 ? SPC(18)"76543210 fy: 76543210    76543210 fy: 76543210"
 3030 GOSUB 8781
 3055 GOSUB 3200:Q=Q+1:T=T+1:GOSUB 3200:Q=Q+1:IF Q=2 THEN ?:Q=0
 3082 T=T+1:IF T=32 THEN POKE PA,0:GOTO 3100
 3090 GOTO 3055
 3100 IF IG=3 THEN 8210
 3200 POKE PA,128:GOSUB 2050:IF T<10 THEN ? TAB(14)" "T;
 3220 IF T>=10 THEN ? TAB(14)T;
 3230 X=PEEK(PD+T):GOSUB 3400:IF IG=3 THEN 3237
 3237 POKE PA,128+T:U1=PEEK(PC):U2=PEEK(PD+T):X=PEEK(PC)
 3239 IF U1=U2 THEN ? " === ";:OK=OK+1
 3240 IF U1<U2 THEN ? " >>> ";
 3242 IF U1>U2 THEN ? " <<< ";
 3249 GOSUB 3400
 3250 RETURN
 3400 Y=128
 3412 A=INT(X/Y):IF A=0 THEN 3416
 3414 ? "1";:X=X-Y:GOTO 3418
 3416 ? "0";
 3418 Y=Y/2
 3420 IF INT(Y)=0 THEN 3424
 3422 GOTO 3412
 3424 RETURN
 3500 GOSUB 5500:? SPC(12)"Name: "C$:I=PD
 3501 ? SPC(12)"CRC :"L"(dec)";
 3503 IF L=0 THEN ?"=no active PROM"
 3505 ?:IF L>0 THEN ?
 3506 ? SPC(12)"Data":? SPC(12)"hex :":? SPC(12)"0000: ";
 3508 FOR F=PD TO PD+15:N=PEEK(F):GOSUB 3720:NEXT
 3510 ?:? SPC(12)"0010: ";
 3512 FOR F=PD+16 TO PD+31:N=PEEK(F):GOSUB 3720:NEXT
 3514 ?:?:? SPC(12)"Data":?SPC(12)"dec :"
 3516 ? SPC(12)"9001 DATA";:GOSUB 8970
 3518 ? SPC(12)"9002 DATA";:GOSUB 8970
 3520 ? SPC(12)"9003 DATA";:GOSUB 8970
 3522 ? SPC(12)"9004 DATA";:GOSUB 8970:GOTO 7046
 3720 L=N AND 15:H=(N-L)/16
 3730 ? MID$(B$,H+1,1)MID$(B$,L+1,1);" ";
 3740 RETURN
 4100 RESTORE:L=0:FOR G=PD TO PD+31:READ M:POKE G,M
 4140 L=L+PEEK(G):NEXT:RETURN
 4200 GOSUB 5500:GOSUB 4900:DF=PD:N=0
 4203 ? "Adress:  data:":? "(hex)    (hex)"
 4206 L=N AND 15:H=(N-L)/16
 4207 ?" :";MID$(B$,H+1,1)MID$(B$,L+1,1);"     ";:INPUT A$
 4209 IF LEN (A$)<>2 THEN GOSUB 1999:GOTO 4207
 4210 H$=LEFT$(A$,1):L$=RIGHT$(A$,1):QQ=1
 4212 IF QQ=17 THEN GOSUB 1999:GOTO 4207
 4213 IF MID$(B$,QQ,1)=H$ THEN QQ=1:GOTO 4217
 4214 QQ=QQ+1:GOTO 4212
 4216 IF QQ=17 THEN GOSUB 1999:GOTO 4207
 4217 IF MID$(B$,QQ,1)=L$ THEN 4225
 4218 QQ=QQ+1:GOTO 4216
 4225 IF H$="F" THEN HI=15:GOTO 4244
 4226 IF H$="E" THEN HI=14:GOTO 4244
 4227 IF H$="D" THEN HI=13:GOTO 4244
 4228 IF H$="C" THEN HI=12:GOTO 4244
 4229 IF H$="B" THEN HI=11:GOTO 4244
 4230 IF H$="A" THEN HI=10:GOTO 4244
 4231 HI=VAL(H$)
 4244 IF L$="F" THEN LO=15:GOTO 4270
 4245 IF L$="E" THEN LO=14:GOTO 4270
 4246 IF L$="D" THEN LO=13:GOTO 4270
 4247 IF L$="C" THEN LO=12:GOTO 4270
 4248 IF L$="B" THEN LO=11:GOTO 4270
 4249 IF L$="A" THEN LO=10:GOTO 4270
 4250 LO=VAL(L$)
 4270 POKE DF,HI*16+LO:N=N+1:DF=DF+1
 4279 IF DF=PD+32 THEN GOSUB 8700:?:GOTO 8800
 4280 GOTO 4206
 4300 GOSUB 5500:GH=PD:S=0:GOSUB 4900
 4302 ? "Adress:"SPC(6)"data:":? "(dec)"SPC(8)"(dec)"
 4303 IF S<10 THEN ? " "S,
 4304 IF S>=10 THEN ? S,
 4305 INPUT Q:IF Q>255 THEN GOSUB 1999:GOTO 4302
 4308 POKE GH,Q:GH=GH+1:S=S+1
 4309 IF GH=PD+32 THEN GOSUB 8700:?:GOTO 8800
 4310 GOTO 4303
 4900 ? SPC(19)"(..File name = lenght max.40 characters..)"
 4910 ? SPC(3)"PROM DATA NAME:";:INPUT C$
 4930 IF LEN (C$)>40 THEN GOSUB 1999:GOTO 4900
 4940 ?:RETURN
 5000 GOSUB 5500:? SPC(16)"Read PROM and Write to Data rows ";
 5001 CRC=0:NS=0.2:GOSUB 2000:R=50:IF IG=2 THEN R=0
 5010 POKE PB,0:QW=0:A=0:POKE PA,128:GOSUB 2050
 5035 QW=128+A:POKE PA,QW:OC=PEEK(PC):POKE PD+A+R,OC:CRC=CRC+OC:A=A+1
 5095 IF A=32 AND IG=1 THEN 3010
 5100 IF A=32 THEN 5120
 5110 GOTO 5035
 5120 IF CRC=0 THEN ? " BLANK PROM !":GOTO 5160
 5130 IF CRC>0 THEN ? " ACTIVE PROM !"
 5140 GOSUB 2400
 5150 IF CRC>0 THEN GOSUB 4900:GOSUB 8700:?:GOSUB 8800:END
 5160 GOSUB 2400:NS=0.5:GOSUB 2200:GOTO 1090
 5500 ? CHR$(12):? "   Your choice - "A$:?:RETURN
 6000 GOSUB 5500:? SPC(15)"Test - read blank PROM ";
 6010 QW=0:A=0:POKE PB,0:POKE PA,128:GOSUB 2050
 6035 QW=128+A:POKE PA,QW:OC=PEEK(PC):IF OC=0 THEN 6070
 6060 ? "- Not a blank PROM"SPC(26)"Insert blank PROM!"
 6065 GOSUB 2400:GOSUB 2200:GOTO 1090
 6070 A=A+1:IF A=32 THEN 6100
 6090 GOTO 6035
 6100 ? " Good, blank PROM !":GOSUB 2400:IF Z=1 THEN 7020
 6110 NS=1.5:GOSUB 2000:GOTO 1090
 7000 GOSUB 5500
 7012 ? SPC(30)"Writing PROM 74188 ...":?:Z=1:GOTO 6000
 7020 GOSUB 9000:?:? SPC(17)" Name Data file: "C$
 7030 GOSUB 9005:? SPC(34)"CRC="CRC
 7035 IF CRC=0 THEN ? SPC(29)" No valid data !":GOSUB 2200:GOTO 1090
 7042 IF 32-OK<>0 AND VP=1 THEN GOSUB 2000:GOTO 1090
 7046 ?:? SPC(32)"CONTINUE Y/N";:INPUT A$
 7047 IF A$="N" AND Z=3 THEN END
 7048 IF A$="N" THEN 1090
 7049 IF A$="Y" AND Z=3 THEN 1090
 7050 IF A$="Y" THEN 7070
 7055 GOSUB 1999:GOTO 7042
 7070 QW=0:A=0
 7100 RESTORE:FOR G=PD TO PD+31:READ M:POKE G,M:NEXT G:POKE PA,128
 7200 POKE PB,0:GOSUB 2050:? TAB(29)"Programming bytes ..."
 7201 ? SPC(30)"PGM pulse =";
 7206 IF Z=2 AND DD=1 THEN ? PG/U*LG;:GOTO 7217
 7208 IF Z=1 AND DD=0 THEN ? PP/U;:GOTO 7217
 7210 IF Z=1 THEN ? TAB(30)PP/U;:GOTO 7217
 7212 IF Z=2 AND DD=0 THEN ? PP/U*LG;
 7217 ? "msec":?:? TAB(8);
 7225 FOR G=PD TO PD+31:IF A<10 THEN ? " "A;
 7227 IF A>=10 AND A=<15 THEN ? A;
 7229 IF A=15 THEN ?:?:? TAB(8);
 7230 IF A>15 THEN ? A;
 7240 K=PEEK(G):FOR F=PE TO PE+7:POKE F,0:NEXT
 7260 IF K>=128 THEN POKE PE+7,128:K=K-128
 7270 IF K>=64 THEN POKE PE+6,64:K=K-64
 7280 IF K>=32 THEN POKE PE+5,32:K=K-32
 7290 IF K>=16 THEN POKE PE+4,16:K=K-16
 7300 IF K>=8 THEN POKE PE+3,8:K=K-8
 7310 IF K>=4 THEN POKE PE+2,4:K=K-4
 7320 IF K>=2 THEN POKE PE+1,2:K=K-2
 7330 IF K>=1 THEN POKE PE+0,1:K=K-1
 7365 FOR QW=0 TO 7:S=PEEK(PE+QW):IF S=0 THEN 7480:GOSUB 1700
 7420 PP=17*U:POKE PA,128:GOSUB 2050:IF Z=2 AND DD=1 THEN PP=PG*LG
 7424 IF Z=2 THEN PP=PP*LG
 7430 POKE PA,A+128:POKE PB,S:POKE PA,A+224
 7450 POKE PA,A+192:FOR F=0 TO PP:NEXT:POKE PA,A+160
 7470 POKE PA,128:GOSUB 2400:GOSUB 2050
 7480 NEXT:A=A+1:GOSUB 2050:NEXT:?:?:A=0:G=0
 7980 ? SPC(23)"End of the round no."Z"of programming":Z=Z+1
 7990 GOSUB 2400:A=0:QW=0:GOSUB 2000
 8000 RESTORE
 8012 POKE PA,128:POKE PB,0:GOSUB 2050:A=0:L=0:QW=0
 8013 ? CHR$(12):OK=0:ER=0
 8014 ? TAB(29);"Verifying PROM <-> DATA:"
 8020 FOR G=PD TO PD+31
 8030 READ M:POKE G,M:Q=PEEK(G):L=L+Q:NEXT G
 8080 A=0:FOR G=PD TO PD+31:QW=128+A
 8085 POKE PA,QW:Q=PEEK(PC):R=PEEK(G)
 8100 IF Q=R THEN OK=OK+1:GOTO 8104
 8102 X=1:ER=ER+1
 8104 A=A+1:NEXT G
 8106 ?:? TAB(26)"Pass ="OK"byte,  Error="ER"byte"
 8108 POKE PA,0:OK=0:ER=0:?
 8121 IF Y=1 AND X=1 THEN 8200
 8122 IF Y=1 AND X=2 THEN 8130
 8123 IF X=1 AND VP=1 AND Y=0 THEN 8200
 8125 IF L=0 THEN ? " Blank PROM!":POKE PA,0:GOSUB 2200:GOTO 1090
 8126 IF X=1 THEN 8150
 8127 IF X=1 THEN Y=0:POKE PA,0:GOSUB 2000:X=X+1
 8128 IF X=2 THEN Y=1:POKE PA,0:GOSUB 2000:GOTO 7070
 8130 POKE PA,0:?:? SPC(33)"Verification O.K. !"
 8140 NS=2:GOSUB 2000:GOTO 1090
 8150 ? SPC(18)"New attempt to burn round no."Z;
 8160 ? "- please wait.":POKE PA,0:GOTO 8127
 8200 POKE PA,0:GOSUB 2050:IG=3:GOTO 3010
 8210 ? SPC(27)"Pass="OK"byte, Error="32-OK"byte"
 8211 IF OK=32 AND VP=9 THEN 7046
 8212 IF OK=32 AND VP=1 THEN 8500
 8214 ? SPC(34)"- bad PROM ...";:GOSUB 2200:GOSUB 2400:GOTO 7042
 8500 ? SPC(32)"- good verifying !";: GOSUB 2302:NS=2.5:GOSUB 2000
 8502 GOTO 1090
 8700 ?:? "Now it's time to start capturing text in ";
 8702 ? "HyperTerminal."
 8704 ?"   Press (C) to continue ...";:INPUT A$
 8710 ?:? "Rows data generator:":?:I=PD:L=0
 8711 ? "9000 C$=";CHR$(34);C$;CHR$(34);":ID=32:RETURN"
 8712 ? "9001 DATA";:GOSUB 8970:? "9002 DATA";:GOSUB 8970
 8714 ? "9003 DATA";:GOSUB 8970:? "9004 DATA";:GOSUB 8970
 8715 FOR G=PD TO PD+31:Q=PEEK(G):L=L+Q:NEXT
 8716 ? "9005 CRC="L":RETURN:REM CRC(dec!)":?
 8740 IF FG=1 THEN 8800
 8776 GOSUB 4100:IF L=0 THEN 8780
 8777 GOSUB 9005:IF L<>CRC THEN 8900
 8778 GOSUB 2500:? SPC(18)"-->  Valid data in memory ! CRC="CRC;
 8779 GOSUB 2990:GOTO 8781
 8780 GOSUB 2300
 8781 ? " -";:FOR GI=2 TO 77:? "-";:NEXT:GOSUB 2990:RETURN
 8800 ? "  Save this data rows (9000-9005) in the specified"
 8802 ? "   rows positions and then run the program again!"
 8804 ?:? "You can now stop writing to the file in ";
 8806 ? "Hyperterminal.":GOSUB 2302:END
 8900 ? CHR$(12)
 8901 ? SPC(8)"Problem ...":? "Bad verification result or ID"
 8904 ? SPC(5)"difference in:":? "  computer"SPC(8)"Data"
 8905 ? SPC(4)"data"SPC(10)"rows":? SPC(4)"CRC:   < >    CRC:"
 8906 ? SPC(4)L;TAB(18)CRC:? SPC(9)"ID ="ID:GOSUB 2200:END
 8970 FOR G=I TO I+6:? PEEK(G)",";:NEXT:? PEEK(I+7):I=I+8
 8975 RETURN
 9000 C$="All DATA bytes =0":ID=32:RETURN
 9001 DATA 0,0,0,0,0,0,0,0
 9002 DATA 0,0,0,0,0,0,0,0
 9003 DATA 0,0,0,0,0,0,0,0
 9004 DATA 0,0,0,0,0,0,0,0
 9005 CRC=0:RETURN:REM CRC in dec form !

_____________________________________________________________

 

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

___________________


Verzie 1.09 a 1.09p programového vybavenia 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 - verzia 1.09 a 1.09p:

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 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 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ú.

 

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, ktorá prepočítava všetky čakacie programové slučky (okrem vlastného PGM pulzu),

       (hodnota zase platí pre konkrétny použitý x-tal)

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 až na úplný koniec RAM (skúsil som použiť adresy 32700 a 32732d) nie je celkom dobrý nápad (pri testoch sa prepisovali údaje, aby som bol konkrétny) 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 takto nastavenom využití RAM to stále 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ý.


Ďalšia vec ktorá sa objavila - riadok 8704 vo verziách 1.09 a 1.09p nekontroluje či ste skutočne stlačili "C", ak zadám riadok v programe nasledovne:

8704 ?"   Press (C) to continue ...";:INPUT A$:IF A$<>"C" THEN 8704

tak ho nedokáže správne spracovať, jednoducho tú podmienku odignoruje, nedokáže ani vypísať ak zadám v riadku ? A$. Zjavne som sa dostal počtom premenných a stringov na "doraz" pre použitý interpreter jazyku BASIC a tak sa tu nekontroluje či je skutočne stlačené "C", berie akúkoľvek klávesu, možno by tam malo byť presnejšie "press any key + Enter". Takže toto je jedna vec čo vyskočila pri testovaní, riadok 8704 teda vyzerá takto:

8704 ?"   Press (C) to continue ...";:INPUT A$

Potvrdilo sa mi to keď som chcel do programu vložiť ďalšiu položku do menu - už to začalo vo veľkom robiť chyby na miestach kde to bolo dovtedy bez najmenších problémov chodivé - výsledok ? Už som ďalšiu položku do menu nezabudoval /dodatčoné riadky som vyhodil/ - a všetko funguje tak ako má. Jednoducho už som chcel programovo po tejto "mašinke" príliš veľa.

Overil som si to tiež tak že som v testovacej verzii kde si celý program "šijem" na mieru pre vlastné použitie /má označenie 1.10, táto verzia sa ešte vyvíja, takže zatiaľ nie je uvoľnená/, niektoré premenné som z programu vypustil a aha ! - riadok 8704 zrazu už môže byť v plnej verzii a bezproblémovo funguje. Napríklad bez zmenšenia programu zrazu nebola správna hodnota dĺžky pulzu pre 2 programové kolo, akonáhle som vyhodil nové, dodatočné riadky tak všetko bolo zase O.K.

Takže na kritickú hranicu zaplnenia premennými pozor !

Ničím to na seba neupozorní - leda tým že veci v programe prestávajú robiť to čo doteraz bezproblémovo robili.

Dost obmedzujúcim faktorom je malá povolená dĺžka programového riadku - iba 72 znakov, inak by sa program program dal napísať aj omnoho efektívnejšie. Napriek tomuto obmedzeniu som si práve preto povedal že urobím program práve na takomto počítači - že aj tu sa dajú robiť veci a že tento stroj na to má.

 

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.

____________________________________________________________

Záverečná poznámka:

Síce neviem koľko hodín som nad výslednými programovými verziami odsedel (radšej to ani nechcem vedieť ...), ale viem že dohromady to bolo skutočne pekných "pár hodín", len dúfam že výsledok úsilia stojí za ten strávený čas. To že v tom budem nakoniec toľko sedieť ma na úplnom začiatku roboty ani vo sne nenapadlo, zase na druhú stranu ma to skutočne bavilo - a hlavne som sa vďaka tomu naučil celkom slušne programovať vlastný SBC6502. Všetko programové vybavenie (teda zápisy v Basicu a aj nasledovné úpravy) bolo napísané priamo v Notepade a odtiaľ to išlo priamo cez Hyperterminál do SBC6502 - ani raz som nepoužil výpis listingu na tlačiarni, všetko sa to spracovalo priamo v notebooku.

Želám príjemnú zábavu pri napaľovaní PROM !

____________________________________________________________


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 programového vybavenia pre programátor PROM 74188 zabalil do jedného, nasledovného balíčku (ponechal som jednotlivé verzie aj v pôvodných článkoch v tej-ktorej verzie):


Dátumy vydania jednotlivých verzií:

verzia 1.01  - 22.12.2019
verzia 1.02  - 08.01.2020
verzia 1.03  - 04.01.2021
verzia 1.04  - 02.02.2021
verzia 1.04e - 20.03.2021
verzia 1.04g - 18.05.2021
verzia 1.05a - 02.06.2021
verzia 1.05b - 02.08.2021
verzia 1.07  - 10.12.2021
verzia 1.09  - 02.06.2022
verzia 1.09p - 09.08.2022

 

Prom programmer all versions.zip (290,19 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, v novších verziách v rámci úspory celkovej dĺžky programu je popis vynechaný a REM riadky sú 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á ľahko v programe "stratiť".


Doska samotného programátoru PROM 74188.

_____________________________________________________

25.10.2022

V programových verziách rady 1.07 až 1.09, 1.09p bola chyba ktorá spôsobovala že po naprogramovaní pamäte sa automaticky priamo spúšťalo druhé kolo programovania s následne predĺženým PGM pulzom- síce tento stav nespôsobuje poškodenie správneho obsahu už napálenej PROM, ale nebolo to určite to čo sa od programu očakávalo. Chyba je už opravená, na webe sú už opravené programy týchto verzií. Nastalo to po vypadnutí jedného programového riadku z programu pri prepise častí programu do nových verzií programu - moja chyba, ospravedlňujem sa. Tiež je to opravené aj v súhrne programových verzií.

Ak sa objavia nejaké "drobotiny", ktoré stoja za úpravu tak sú automaticky do uvedených verzií premietnuté.

____________________________________________________________

Vaše hodnotenie, Rate post:

06_2022 Blog, Notes.

By Administrator at June 01, 2022 14:33
Filed Under: Blog

01.06.2022

Občas sa oplatí hľadať na ebay ...:

Atari - čriepky. Atari tidbits. 17.

_____________________________________________________

02.06.2022

Posledná verzia programového vybavenia pre programátor 74188:

SBC6502 - 56 - PROM 74188 - last, best program v.1.09 lite.

_____________________________________________________

04.06.2022

Dnes som našiel krásne skonštatovanie stavu jedného poslanca ktorý je teraz najväčším miláčikom deštruktora od čias nákupu ruskej vakcíny a následnej návštevy Maďarska:

"Každá dedina mala svojho blázna. V modernej dobe každá politická strana má svojho blázna. A niekto to zdokonalil - blázon má svojho blázna."

_____________________________________________________

10.06.2022

Pre tester x-talov dorobená ešte jedna doplnková doštička:

X-tal oscillator board - no.5. X-tal tester shield.

_________

Disketová jednotka pre Atari z Južnej Ameriky, ešte pred niekoľkými dňami som o jej existencii vôbec nevedel  ...

SKYDATA SK551 Atari floppy unit - made by Argentina.

_____________________________________________________

12.06.2022

Slovenské medvede zjavne nečítajú nedávne vyhlásenie ministra Budaja:

Maco vegetarián - v praxi

___________________________________________________________

22.06.2022

Dvojitý napájací zdroj pre disketové jednotky  Atari - z Austrálie:

Dual power supply Atari 1050 /Atari XF551/.

_____________________________________________________

23.06.2022

Tak sme sa predsa len dočkali, konečne sú k dispozícii fotografie odstrojenej základnej dosky pre Atari 130XE a to v slušnom rozlíšení:

Photo - desoldered motherboard Atari 130XE.

_____________________________________________________

24.06.2022

Dńa 27.06.2022 uplynie presne 50 rokov od založenia legendárnej firmy Atari:

50 výročie vzniku Atari. 50 years since the founding of Atari.

_____________________________________________________

27.06.2022

Day "D" je tu, 50-ka Atari ...

_____________________________________________________

Vaše hodnotenie, Rate post:

Atari - čriepky. Atari tidbits. 17.

By Administrator at June 01, 2022 11:36
Filed Under: Atari

Dnes to bude o tom čo sa podarilo - a je to k dostaniu napríklad na ebay.de a týka sa malého Atari. Bude to vlastne len také obrázkové leporelo, ale kto niečo na atárko zháňa si dosť pravdepodobne nájde to čo mu doma tlačí pätu. Keď sa na to pozerám tak sa zdá že nie sme na tom až tak zle a možno to ešte bude časom lepšie a lepšie. Bodaj by ...

Obrázky v článku sú prevzaté z ebay.de.



16MByte RAM, to by fakt už malo stačiť naozaj každému.


Adapter EPROM_FLASH_OS DIP32 PIN - AM27C010 to DIP28 PIN - AM27C256 8 bits_word

(Určené pre tých ktorí majú stály nedostatok potrebného priestoru v Eprom-ke.)

 

Adapter from the MOS 6502 to MOS 6502C SALLY processor for Atari XL _XE


Atari 400 800 130 and 65XE test cartridge


Atari FREDDIE CO61991-29

(náhrada obvodu Freddie)


Atari GTIA FIXER - CO14889-01

(oprava GTIA čipu)


ATARI XE 64KB to 128KB RAM Upgrade, C025953 RAMcontroller 130XE

ATARI XE Tastatur Membrane keyboard HQ

 

ATARI XF551 OS Hyper XF 5.25 or  3.5 ROM Chip


ATARI XL_ XE 2xOS ROM Kit 65XE  800XL_XE_ 130XE


DELAY LINE CO60472 ATARI 600XL 800XL

(náhrada originálnej oneskorovacej linky)

 

QARTZ ATARI CO12285 - quartz generator to ATARI 600XL 800XL


Quartz generator to ATARI XF551 CB101219 - 8.3333 MHz

(33.33MHz:4)


MMMU C025953 ATARI 65XE, 800XE, 130XE

 

Niečo pre milovníkov Atari 1050:

 

TOMS Multi Drive & HAPPY WARP 7.1 - TURBO TO ATARI 1050


TOP DRIVE - TURBO TO ATARI 1050

 

No a zlatý hrebíček (doslovne) som si ponechal na koniec,

sú dostupné dve verzie dosky pre Atari 800XL:

 

Pozlátená doska - Atari 800XL C061851 REV D remake black

 

Pozlátená doska - Atari 800XL C061851 REV D remake black

 

Pozlátená doska - Atari 800XL C061851 REV D remake blue


Pozlátená doska - Atari 800XL C061851 REV D remake blue

___________________________________________________________

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: