Igiho knižnica 55 - spravodaj AKPraha ZO 602 4_90.

By Administrator at marca 16, 2024 06:40
Filed Under: Atari

 Spravodaj AKPraha ZO 602 4_90.

 

Počet strán:16

AKPraha 602 4_90.pdf (3,90 mb)

 

Príjemné čítanie !

___________________________________________________________

Vaše hodnotenie, Rate post:

Igiho knižnica 54 - spravodaj AKPraha ZO 602 3_90.

By Administrator at marca 14, 2024 08:00
Filed Under: Atari

 Spravodaj AKPraha ZO 602 3_90.

 

Počet strán:16

AKPraha 602 3_90.pdf (4,04 mb)

 

Príjemné čítanie !

___________________________________________________________

Vaše hodnotenie, Rate post:

Igiho knižnica 53 - spravodaj AKPraha ZO 602 2_90.

By Administrator at marca 12, 2024 10:26
Filed Under: Atari

 Spravodaj AKPraha ZO 602 2_90.

 

Počet strán:16

AKPraha 602 2_90.pdf (3,87 mb)

 

Príjemné čítanie !

___________________________________________________________

Vaše hodnotenie, Rate post:

Igiho knižnica 52 - spravodaj AKPraha ZO 602 1_90.

By Administrator at marca 10, 2024 09:38
Filed Under: Atari

 Spravodaj AKPraha ZO 602 1_90.

 

 

Počet strán:16

AKPraha 602 1_90.pdf (3,70 mb)

 

Príjemné čítanie !

___________________________________________________________

Vaše hodnotenie, Rate post:

Igiho knižnica 51 - spravodaj AKPraha ZO 602 4_89.

By Administrator at marca 09, 2024 13:55
Filed Under: Atari

 Spravodaj AKPraha ZO 602 4_89.

 

Počet strán:16

AKPraha 602 4_89.pdf (3,38 mb)

 

Príjemné čítanie !

___________________________________________________________

Vaše hodnotenie, Rate post:

Igiho knižnica 50 - spravodaj AKPraha ZO 602 3_89.

By Administrator at marca 08, 2024 10:20
Filed Under: Atari

 Spravodaj AKPraha ZO 602 3_89.

 

 

Počet strán:16

AKPraha 602 3_89.pdf (3,72 mb)

 

Príjemné čítanie !

___________________________________________________________

Vaše hodnotenie, Rate post:

Igiho knižnica 49 - spravodaj AKPraha ZO 602 2_89.

By Administrator at marca 06, 2024 06:14
Filed Under: Atari

Spravodaj AKPraha ZO 602 2_89.

 

Počet strán: 16

 

AKPraha 602 2_89.pdf (4,49 mb)


Príjemné čítanie !

___________________________________________________________

Vaše hodnotenie, Rate post:

Igiho knižnica 48 - spravodaj AKPraha ZO 602 1_89.

By Administrator at marca 03, 2024 06:41
Filed Under: Atari

V Prahe vzniklo Atari klubov niekoľko, jeden bol aj v 602.ZO Zväzarmu. Tam si musel tvrde vybojovať svoje miesto a podarilo sa mu tam tak isto vydávať svoj časopis - i keď rozsahom to bol skôr bulletin. Tak poďme na to:

 

 Spravodaj AKPraha ZO 602 1_89.

Počet strán:16

 

AKPraha 602 1_89.pdf (4,20 mb)

Príjemné čítanie !

___________________________________________________________

Vaše hodnotenie, Rate post:

03_2024 Blog, Notes.

By Administrator at marca 01, 2024 17:02
Filed Under: Blog

01.03.2024

Pekný materiál o počítačoch Atari pozbieraný z časopisu Byte:

Magazine Byte - Atari.

(Je to link na priame stiahnutie pdf súboru.)

_____________________________________________________

03.03.2024

Pražský  Atari klub 602 ZO:

Igiho knižnica 48 - spravodaj AKPraha ZO 602 1_89.

_____________________________________________________

06.03.2024

Pražský  Atari klub 602 ZO:

Igiho knižnica 49 - spravodaj AKPraha ZO 602 2_89.

_____________________________________________________

08.03.2024

Pražský  Atari klub 602 ZO:

Igiho knižnica 50 - spravodaj AKPraha ZO 602 3_89.

_____________________________________________________

09.03.2024

Pražský Atari klub 602 ZO:

Igiho knižnica 51 - spravodaj AKPraha ZO 602 4_89.

_____________________________________________________

10.03.2024

Pražský Atari klub 602 ZO:

Igiho knižnica 52 - spravodaj AKPraha ZO 602 1_90.

_____________________________________________________

12.03.2024

Pražský Atari klub 602 ZO:

Igiho knižnica 53 - spravodaj AKPraha ZO 602 2_90.

_____________________________________________________

14.03.2024

Pražský Atari klub 602 ZO:

Igiho knižnica 54 - spravodaj AKPraha ZO 602 3_90.

_____________________________________________________

16.03.2024

Pražský Atari klub 602 ZO:

Igiho knižnica 55 - spravodaj AKPraha ZO 602 4_90.

_____________________________________________________

Vaše hodnotenie, Rate post:

Magazine Byte - Atari.

By Administrator at marca 01, 2024 16:53
Filed Under: Atari

User savetz na atariage pre časom urobil "výcuc" článkov časopisu Byte kde sa písalo o Atari, celý materiál mám pekných 729 strán, je to naozaj príjemné čítanie. Materiál je uložený na archive.org.

 

 

Odkaz na priame stiahnutie pdf-ka:

Atari-Byte articles

(súbor má 203.4Mbyte ...)


Takže ešte raz - príjemné čítanie !

___________________________________________________________

Vaše hodnotenie, Rate post:

Igiho knižnica 47 - Atari Turbo Basic príručka - Hodonín 1989.

By Administrator at februára 29, 2024 07:00
Filed Under: Atari

Príručka pre najznámejší a najpopulárnejší Basic na malom Atari - Atari Turbo Basic.

Pre jednotlivé príkazy sú uvedené aj príklady použitia čo bola (a je) jedna z najžiadanejších vecí.


Počet strán: 86

 

Atari Turbo Basic Hodonín.pdf (9,09 mb)

Príjemné čítanie !

___________________________________________________________

Vaše hodnotenie, Rate post:

Easy Copy OS + Copy Basic to binary files.

By Administrator at februára 26, 2024 09:51
Filed Under: Atari

Existuje na webe program COPYOS ktorý je v strojáku, vyhodí potrebný súbor, ale je s pridanou hlavičkou 6byte ktorú treba odstrániť. Mám tu jednoduchý program napísaný v Basicu ktorý urobí to isté, ale výstupný  súbor už nemá dĺžku 16390 byte ale priamo nám potrebných 16384 byte.

Niekedy si chceme odložiť aj samotný obsah Basic ROM a chceme vedieť ktorú verziu Basicu (A, B alebo C?) máme v našom počítači.

Toto ocenia useri, ktorí akosi nemajú potrebné skúsenosti na to ako tú hlavičku odstrániť - pre nich je určený tento článok ako sa dostať k potrebným súborom čo najjednoduchšie. Takto priamo dostaneme potrebné binárne súbory ktoré sú určené priamo na napálenie do Eprom pamätí.

 

Pre OSIMG.ROM sa jedná o pamäť Eprom 27128, tu je priama výmena možná. Pre BASICIMG.ROM sa jedná o pamäť Eprom 2764 - tu je to potom o niečo zložitejšie na nasadenie, pretože je to pamäť s 28 nožičkami, kdežto ROM Basic má nožičiek iba 24, tu je to už potom na niekom kto sa v tom naozaj vyzná. Niektoré programátory vyžadujú koncovky vytvorených súborov ako *.BIN, v tom prípade v riadkoch 10 a 80 nahraďte koncovky NAME.ROM za NAME.BIN

 

Listing Basic programu:

 

4 GRAPHICS 0
5 POKE 559,0
6 ? "OSIMG"
10 OPEN #1,8,0,"D1:OSIMG.ROM":REM OS=16384 BYTES
20 POKE 54017,125
30 A=12*4096:L=4095:GOSUB 130
40 A=5*4096:L=2047:GOSUB 130
50 A=13*4096+2048:L=8192+2047:GOSUB 130
60 CLOSE #1:POKE 54017,253
70 ? "BASICIMG"
71 R=PEEK(43234)
72 ? "BASIC ver.";
73 IF R=162 THEN ? "A"
74 IF R=96 THEN ? "B"
75 IF R=234 THEN ? "C"
80 OPEN #1,8,0,"D1:BASICIMG.ROM":REM BASIC=8192 BYTES
90 A=10*4096:L=8192-1:GOSUB 130
100 POKE 559,34
110 ? :? "END":END
120 POKE 559,34:? :? "END":END
130 FOR D=A TO A+L:PUT #1,PEEK(D):NEXT D
140 RETURN

 

Stačí nabootovať z diskety napr. DOS 2.5 a skočiť do Basicu v počítači, jedná sa o krátky Basic program, ktorý sa dá ľahko "nadlapať" priamo z klávesnice. Zase len upozornenie pre menej znalých - nepoužite Turbo Basic !

Čo dodať k samotnému programu ?

 

- autorom prvej časti programu je rybags (+1050), známy na fóre atariage

- program som mierne upravil a pridal zistenie verzie programovej verzie Basic v počítači a tiež zápis obsahu Basic ROM do ďalšieho súboru, tak isto som pridal možnosť o niečo urýchliť samotné spracovanie súborov

- výhodou sú priame veľkosti bináriek OS a Basicu, samozrejme názvy výsledných súborov si môžete zvoliť vlastné

- nevýhoda (jedna), je to pomalé, ak zmažeme riadky 5 a 100 tak síce pôjde trvalé zobrazenie na displeji, ale zápis obidvoch súborov potrvá 4min a 35sec ...

- ak riadky 5 a 100 ponecháme získame rýchlosť navyše (viac ako o 30%), ale na displeji nič nebude, údaje sa objavia až po skončení programu, potom to celé zbehne za 3min a 40sec, čiže samotný program sa urýchli o 55sec.

- ak nepožadujem zápis súboru pre Basic tak vymažte riadky 70, 80 a 90, logicky sa výsledok dostaví o 1/3 rýchlejšie, stále sa pritom zobrazí inštalovaná Basic verzia, ale ukladáte iba samotný operačný systém

- dtto, ako v predchádzajúcom odstavci, ale nechceme údaje o verzii Basic - zmažte všetky riadky v rozsahu 70÷90, ukladáte iba samotný operačný systém

 

Nuž ak potrebujete výpis OS a obsah PROM Basic - spustite uvedený program, urobte si medzitým kávu a keď si ju prinesiete tak budete mať k dispozícii výsledok. Je to jednoduché, síce pomalé, ale k výsledku sa doberiete priamo a to bez nejakých ďalších potrebných úprav. Nakoniec - toto naozaj netreba robiť každý deň ...Tongue out

___________________________________________________________

Vaše hodnotenie, Rate post:

Igiho knižnica 46 - ZAK Praha 1989_06.

By Administrator at februára 25, 2024 08:00
Filed Under: Atari

Nasleduje Zpravodaj Atari klubu Praha, 1989/06, týmto je ročník ZAK Praha 1989 konečne uzatvorený.

 

 

Rozsah - 72 strán.

 

Z obsahu: Ponuka SYKO, nová verzia MYDOS 4.50, rozšírenie SYNFILE+, premiéra SPARTA DOS X, Tipy a triky, užívateľské programy, kútik techniky - pripojenie zapisovača Sharp, Alfiggraf.

 

ZAK Praha 1989_06.pdf (13,60 mb)

Príjemné čítanie !

___________________________________________________________

Vaše hodnotenie, Rate post:

02_2024 Blog, Notes.

By Administrator at februára 23, 2024 16:18
Filed Under: Blog

23.02.2024

Po 2 rokoch konečne pridaný ďalší materiál do Igiho knižnice ... Zpravodaj AKPraha 1989/05.

Igiho knižnica 45 - ZAK Praha 1989_05.

__________________________________________________________

25.02.2024

Zpravodaj AKPraha 1989/06. Toto číslo uzatvára rok 1989 pre ZAKPraha.

Igiho knižnica 46 - ZAK Praha 1989_06.

____________________________________________________

26.02.2024

Veľmi jednoduchý Basic program pre uloženie obsahu Atari OS a Basic PROM priamo do binárnych súborov:

Easy Copy OS + Copy Basic to binary files.

____________________________________________________

29.04.2024

Tak mám niečo aj k tomuto dátumu do mojej knižnice:

Igiho knižnica 47 - Atari Turbo Basic príručka - Hodonín 1989.

____________________________________________________

Vaše hodnotenie, Rate post:

Igiho knižnica 45 - ZAK Praha 1989_05.

By Administrator at februára 23, 2024 16:05
Filed Under: Atari

Po dlhom, dlhom čase pokračujem v Igiho knižnici, dnes je to Zpravodaj Atari klubu Praha 1989/05.


Rozsah - 48 strán.

 

Z obsahu:

Mimo obligátneho Sväzarmu nasleduje ponuka SYKO, Tipy a triky, Užívateľské programy, Kútik techniky - pripojenie BT100.

ZAK Praha 1989_05.pdf (9,82 mb)

 

Príjemné čítanie !

___________________________________________________________

Vaše hodnotenie, Rate post:

PBI PROM externý dekodér D5xxh - !CCTL. Atari 800XL.

By Administrator at januára 14, 2024 17:15
Filed Under: Atari

Už som písal o externom dekódovaní adresy D5xx (!CCTL) a obvod 8255A pre počítač Atari 800XL, tam boli potrebné 2 čipy a ešte bolo potrebné použiť obvod 74LS00 pre správne dekódovanie signálov Read a Write pre čip 8255A, teda nakoniec boli potrebné až 3 čipy. Dnešné riešenie ktoré som urobil vystačí iba s 2 čipmi (presnejšie 1 a 1/2 čipu) a to s PROM pamäťou 74S287 a ešte treba použiť 1/2 obvodu 74LS139, potom sa to už dá priamo pripojiť na čip 8255A, teda už máme k dispozícii kompletne všetko potrebné. Je zvolené externé napájanie 5V (ráta sa s ním aj pre napájanie 8255A a tiež ďalších obvodov). Nevyužitá druhá polovica čipu 74LS139 sa dá použiť na nejakú ďalšiu potrebnú adresáciu v budúcnosti.

 

Externý dekodér s MMU (PROM 74S287) pre Atari 800XL.

1/2 obvodu 74LS139 nahradzuje veľmi známe zapojenie 3 hradiel

74LS00 pre úpravu signálu RD a WR pre prácu s obvodom 8255A.


Pamäť PROM 74S287 tu slúži ako MMU (Memory Management Unit) a umožňuje použiť jej 4 výstupy pre potrebný výstupný adresný priestor. "Klasika" je zapojená na adresu D5xx - jumper je prepojený práve na túto adresáciu, dekódovanie prebieha v krokoch po 256byte. Zapojenie umožňuje použiť naraz len jednu adresáciu - ak v zapojení použijeme samostatne 4x odpory 4k7 pre jednotlivé výstupy B0÷B3 tak môžeme adresovať všetky 4 výstupy - teda ak na to máme pripravené potrebné periférie (osobne to ale nepotrebujem, moje potreby sú predsa len skromnejšie), obsah MMU som aj na toto riešenie už pripravil a obsahuje potrebné dekódovanie adries v požadovanom rozsahu.


Využitie všetkých 4 výstupov.

 

Dostupná adresácia tejto MMU:


D100h
÷D1FFh
D500h
÷D5FFh  /!CCTL
D600h
÷D6FFh
D700h
÷D7FFh

 

Na nasledovnom obrázku je obsah PROM 74S287:

 

 

Nasleduje binárka pre napálenie obsahu do PROM pamäte:

74S287_decoder_burner_atari.bin (256,00 bytes)

 

Nevýhody uvedeného riešenia sú dve:

- treba zohnať prázdnu PROM 74S287

- zohnať niekoho kto má programátor na uvedenú PROM-ku aby tam potrebný obsah naprogramoval

 

Nuž - obidve riešenia, teda aj popísané v minulom článku fungujú (to prvé ešte s dodatočným ďalším čipom) a teda interface sa dá postaviť podľa toho čo máme k dispozícii. Použitie obvodu s označením 8255A považujem za samozrejmosť, čip 8255 bez prípony A nemá dostatočnú rýchlosť vybavovania.

 

Tu len dodatok - rozsah D100÷D1FFh používa Atari 1090, ale to asi v našich končinách nie je rozšírené, takže toto by nás nemalo pri našom použití nejako zásadne obmedziť. Dtto sa týka D600÷D6FFh a D700÷D7FFh. Použitie adresácií D6xx a D7xx aj s ich možnými obmedzeniami pri využívaní bolo už popísané v predchádzajúcom článku.

_____________________________________________________

Dodatok:

Uvedené zapojenie samozrejme priamo funguje aj na Atari 600XL.

(Na Atari 600XL je na PBI zbernici priamo vyvedené aj napájanie 5V.)

_____________________________________________________

Vaše hodnotenie, Rate post:

01_2024 Blog, Notes.

By Administrator at januára 08, 2024 11:00
Filed Under: Blog

08.01.2024

Dnes som si neviem prečo spomenul na jednu moju príhodu ktorá sa udiala tesne pred Vianocami 1992, čiže nejaký ten liter borovičky odvtedy na Slovensku pretiekol mezi našim národom - a to od východu po západ (ak sú sviatky tak to tečie opačným smerom).Smile

Poberal som sa k švagrovi a švagrinej, polovička tam už bola na návšteve aj s našimi chlapcami niekoľko dní..

Cestou skutočne poriadne snežilo a keď som prišiel na pumpu v Galante (čas okolo 16.30, čiže vonku tma ako v pytli) výpadovka smer NZ (teraz je tam za ňou kúsok obrovitý kruháč), tak som zastavil a išiel som očistiť stierače a celé predné sklo, pretože to na ceste už robilo poctivých 15cm snehu. To najdôležitejšie som ale nepovedal, bola to Škoda 105, zadné svetlá ála žehlička. Bolo to vtedy moje prvé auto, ale samozrejme už malo niečo za sebou a nebol som prvým majiteľom.

Auto som nechal naštartované, kúrenie pustené, kľúčik v zapaľovaní, vyšiel som von iba vo svetri, zhrnúť ten sneh z okna som videl na minútku. Toto sa podarilo, prišiel som ku dverám, potiahol som kľučku - a tá mi zostala v rukách, dvere boli pevne zatvorené, zablokovali sa.

Auto v pohodičke, akurát ja stojím vonku pretože sa neviem dostať dovnútra, druhé bočné predné dvere zamknuté, situácia čo nevymyslíš. Ručná baterka a klieštiky vovnútri auta, na bok auta nebolo vôbec vidno, čiže tadiaľto cesta zarúbaná. Tak som tam chvíľu stál, tých možností naozaj veľa nebolo a tak som vošiel na pumpu a požiadal či tam niekto nemá k dispozícii hrubší tak 20cm dlhý drát. Síce v Galante po slovensky vedia ale vtedy som si pripadal že asi hovorím po čínsky pretože ma tam všetci totálne odignorovali - a to aj keď som ich niekoľkokrát slušne požiadal o pomoc.

A tak som sa vrátil k autu ktoré stálo tak 20 metrov od pumpy, v jej odbočke. Po niekoľkých minútach ma napadlo že na kraji prístupovej cesty by som niečo také na zemi asi mohol nájsť - a to aj sám, len treba pohľadať. Ľahko sa povie, ťažšie sa to prevedie, všade ležalo spomínaných 15cm snehu ...

Ako sa hovorí topiaci sa aj slamky chytá, kľakol som si a začal ten sneh prehŕňať. Asi po 10 sekundách som na vytúžený drát v tom snehu narazil - bol síce o niečo dlhší ale to pre moje potreby nevadilo. Vytvaroval som ho a prvýkrát (a aj posledný) v živote som sa vlúpal do auta (vlastného). Neviem ako som v tej tme drát do okna zastrčil ale podarilo sa mi po necelej polminúte vyháčkovať a otvoriť dvere ...

Padol som do sedadla a dal som si desaťminútovú pauzu aby som "strávil" čo sa mi práve stalo, potom som pokračoval do cieľa cesty, odomkol som ale pre istotu všetky dvere, už som nemal chuť zase niekde zamrznúť.

Potom som ešte 70km pokračoval k švagrovi kde sme ešte v ten večer v garáži dostali kľučku na jej miesto a aj sme ju poriadne prichytili.   

Takže ak sa na Vás aj po smole následne rýchlo prilepí šťastena tak to treba využiť, dodnes neviem ako sa mi podarilo na ten drát tak rýchlo natrafiť.

Na druhý deň ráno som znova na dvore u švagra skúšal dvere nanovo vyháčkovať - tušíte správne, už sa mi to nepodarilo, šťastenu som si vybral deň predtým.

A odvtedy ak niekedy idem cez Galantu tak sa dodnes spomínanej pumpe s jej hajzlíkmi vo vtedajšom osadenstve oblúkom vyhýbam, nakoniec stačilo povedať: "Nič také nemáme.", no ale už vtedy bola nová doba ...

Takže síce je po Novom roku. ale každému želám aby niekedy v živote mali poriadne šťastie a to vtedy kedy to najviac treba - nakoniec nie nadarmo sa vraví  že ak sa šťastie unaví sadne aj na v..a (môj prípad).

SmileSmileSmile


_____________________________________________________________

13.01.2024

Nová doba platí aj teraz:

Pri dopravnej nehode stačí odísť domov, netreba volať policajtov, stačí iba zavolať ministrovi vnútra.

A o fúkanie sa tiež netreba starať, vonku predsa fúka dostatočne aj tak.

Odporúča kapitán D....o.

Dodatok 15.01.2024 - srandista, fúkal po 15 hodinách ... a toto nám kandiduje na prezidenta.

_____________________________________________________________

14.01.2024

Riešenie pripojenia čipu 8255A cez PBI pomocou PROM 74S287 v Atari 800XL (Atari 600XL) ktorá v zapojení slúži ako MMU:

PBI PROM externý dekodér D5xxh - !CCTL. Atari 800XL.

(Zapojenie ušetrí jeden čip 74LS00.)

_____________________________________________________________

Vaše hodnotenie, Rate post:

SBC6502 - 70 - PROM 74188 - program ver.1.11.(All In One).

By Administrator at decembra 31, 2023 09:00
Filed Under: SBC6502

SBC6502 s nasadenou doskou programátoru PROM 74188.

 

Ako som spomenul pred pár dňami na Vianoce - záverečnú verziu programu som si nechal aj na Silvestra (mal som teda na prerábku týždeň) - je to program pre programátor PROM 74188 ktorý v sebe integruje verziu 1.10s a priamu voľbu na všetky typy doteraz použitých x-talov. Na začiatku sa zvolí hodnota clocku ktorý používa Váš konkrétny SBC6502 - ďalej sa už pokračuje známym obsahom, toto je základný rozdiel oproti verzii 1.10 (taktiež v.1.10N a v.1.10S) Jednoducho mi nedalo aby som neskúsil dostať všetko priamo do jedného programu. Snažil som sa o čo najmenej potrebných zmien, tak aby zostalo všetko tak ako doteraz. Boli prevedené len kozmetické úpravy vzhľadu samotného menu.

Výhoda tejto verzie ? - stačí mať teraz iba jeden program pre 10 rozličných možných nasadených x-talov v SBC6502.

 

Úvodná obrazovka voľby hodnoty clocku SBC6502.


Rozšírené menu po spustení o položku (A).

(Zvolený x-tal 4.9152MHz.)


Pracovné menu, hodnota nastaveného clocku sa zobrazuje v záhlaví.

 

Zmeny:

 

Výpis dĺžky PGM pulzu v základnom menu sa zjednodušil, je použitá skrátená verzia (r1= round no.1, r2= round no.2).

 

Nový príkaz v menu:

V základnom menu pribudol príkaz (A)djust kde môžeme aj počas chodu programu meniť hodnotu použitého x-talu. Pozor, ak zmenu použijeme počas chodu programu tak sa vždy nastavia základné parametre pre PGM pulz na prednastavené hodnoty - a to pre 1.kolo=10msec pulz a pre 2.kolo=20msec pulz, pomocou príkazu (P) zase môžeme zmeniť a nastaviť nám vyhovujúce hodnoty dĺžky PGM pulzu ktoré potom následne budú platiť počas chodu programu až do jeho nového štartu (alebo následnej zmeny základného clocku).

 

Nevýhodou uvedeného riešenia je to že treba pri štarte tejto verzie programu vždy zvoliť správnu hodnotu použitého x-talu v SBC6502.

 

Verzia programu 1.11 (All in One):

74188 programmer_v111AiO.txt (14,12 kb)

____________________


Výpis programu ver.1.11 AiO:

 1000 CLEAR:POKE 15,80:PD=32500:PE=PD+32:DV=5:NS=1
 1004 B$="0123456789ABCDEF":R$="31.12.2023,x-tal = "
 1005 E$="- Best 74188 PROM programmer,Igi(c)":N$=" BLANK PROM !"
 1006 F$="76543210 fy: 76543210":G$="te:  bit:   ri    bit:"
 1007 M$="msec":K$=" DATA":J$="by   DATA   Ve    PROM"
 1008 Q$="2023_ver.1.11 (All in One)":S$=" + generate DATA rows"
 1009 X$="-->  ":W$="|               |":Z$=" --------"
 1010 PA=32768:PB=PA+1:PC=PA+2:CWR=PA+3:POKE CWR,137
 1015 ?CHR$(12):?SPC(24)"Special edition v.1.11 - AiO"
 1020 ?:?SPC(27)"No PROM in ZIF socket!":?
 1022 GOSUB 2600:?"(0) - 1.8432MHz":GOSUB 2600:?"(1) - 2.0000MHz"
 1026 GOSUB 2600:?"(2) - 2.4576MHz":GOSUB 2600:?"(3) - 2.5000MHz"
 1028 GOSUB 2600:?"(4) - 3.6864MHz":GOSUB 2600:?"(5) - 4.0000MHz"
 1030 GOSUB 2600:?"(6) - 4.5000MHz":GOSUB 2600:?"(7) - 4.9152MHz"
 1032 GOSUB 2600:?"(8) - 5.0000MHz":GOSUB 2600:?"(9) - 6.0000MHz"
 1034 GOSUB 2600:?"(Q)uit program"
 1036 ?:GOSUB 2600:?"Your SBC clock:";:INPUT V$
 1040 IF V$="0" THEN U=1:DV=2.25:U$="1.8432MHz"
 1041 IF V$="1" THEN U=1.09:DV=2.44:U$="2.0000MHz"
 1042 IF V$="2" THEN U=1.47:DV=3.15:U$="2.4576MHz"
 1043 IF V$="3" THEN U=1.5:DV=3.2:U$="2.5000MHz"
 1044 IF V$="4" THEN U=2.33:DV=4.5:U$="3.6864MHz"
 1045 IF V$="5" THEN U=2.53:DV=5:U$="4.0000MHz"
 1046 IF V$="6" THEN U=2.82:DV=5.6:U$="4.5000MHz"
 1047 IF V$="7" THEN U=3.13:DV=6:U$="4.9152MHz"
 1048 IF V$="8" THEN U=3.18:DV=6.2:U$="5.0000MHz"
 1049 IF V$="9" THEN U=3.8:DV=7.44:U$="6.0000MHz"
 1050 IF V$="0" OR V$="1" OR V$="2" OR V$="3" OR V$="4" THEN 1058
 1052 IF V$="5" OR V$="6" OR V$="7" OR V$="8" OR V$="9" THEN 1058
 1054 IF V$="Q" THEN END
 1056 ?:? SPC(30);:GOSUB 1999:GOSUB 2000:RUN
 1058 LG=2:PP=10*U:BN=0:D=0:B=0:JJ=PP:JW=LG:D$="Default setting for "
 1060 ?CHR$(12);SPC(29)"SBC6502/32kB RAM+8255A"
 1065 ?SPC(22)"Turn ON the power to the programmer !"
 1090 GOSUB 2400:GOSUB 9000:Z=0:X=0:Y=0:E=0:J=0:NS=1:FG=0:JK=0
 1092 OC=0:RP=0:TG=PD+40:IF ID<>32 THEN 8900
 1095 IF BN=1 THEN ?CHR$(12)
 1098 GOSUB 1700:?Z$;E$;Q$;Z$:GOSUB 2995:?SPC(4)R$;U$;:GOSUB 2990
 1100 GOSUB 8781:?" -"SPC(20)"(P)GM pulse r1 ="PP/U;M$;
 1102 ?",r2 ="PP/U*LG;M$;:GOSUB 2990
 1104 GOSUB 2995:?"(A)djust new SBC6502 clock  parameter";:GOSUB 2990
 1106 GOSUB 2995:?"(C)ontent info  "Z$"  "K$" rows";:GOSUB 2990
 1108 GOSUB 2995:?"(D)ec input"K$;S$;:GOSUB 2990
 1110 GOSUB 2995:?"(H)ex input"K$;S$;:GOSUB 2990
 1112 GOSUB 2995:?"(I)nfo datasheet 74188,74S288,82S123,";:GOSUB 2990
 1114 GOSUB 2995:?"SN74188N,DM8223,DM74188A,DM8577,75188";:GOSUB 2990
 1118 GOSUB 2995:?"(R)ead  P R O M ";S$;:GOSUB 2990
 1120 GOSUB 2995:?"(T)est  P R O M "Z$"/is empty ?/";:GOSUB 2990
 1122 GOSUB 2995:?"(V)erification PROM against"K$" rows";:GOSUB 2990
 1124 GOSUB 2995:?"(W)riting "K$" - direct into P R O M";:GOSUB 2990
 1126 GOSUB 2995:?"(S)pecial   r.e.b.u.r.n.i.n.g.   mode";:GOSUB 2990
 1127 GOSUB 2995:?"(Q)uit program";:GOSUB 2990:GOSUB 8781
 1128 GOSUB 2995:?"  "K$" /rows/ file name:";:GOSUB 2990:GOSUB 2995
 1130 ?"   "C$;TAB(78)"-":GOSUB 8776:IF BN=1 THEN ?
 1132 ?SPC(34)"Your choice:";:INPUT A$:BN=1:IF A$="I" THEN 8600
 1134 IF A$="A" THEN 1015
 1136 IF A$="P" THEN D=1:GOSUB 5500:GOTO 1600
 1138 IF A$="C" THEN GOSUB 5500:GOTO 3500
 1140 IF A$="D" THEN GOSUB 5500:GOTO 4300
 1142 IF A$="H" THEN GOSUB 5500:GOTO 4200
 1144 IF A$="R" THEN IG=2:GOSUB 5500:GOTO 5000
 1146 IF A$="T" THEN GOSUB 5500:GOTO 6000
 1148 IF A$="V" THEN E=1:GOTO 8000
 1150 IF A$="W" THEN E=9:GOSUB 5500:GOTO 7000
 1152 IF A$="S" THEN E=9:RP=1:GOSUB 5500:GOTO 1800
 1154 IF A$="Q" THEN GOSUB 5500:END
 1156 GOTO 1090
 1600 PP=JJ:?D$"PGM pulse (round 1)="PP/U;M$
 1602 ?SPC(12)"(range 1-20, stepping 1 "M$")"
 1604 ?SPC(17)"New length pulse,"M$":";:INPUT B:V=1
 1606 IF V>20 OR V<1 THEN GOSUB 1999:GOSUB 2000:GOTO 1604
 1608 IF B=V THEN 1630
 1625 V=V+1:GOTO 1606
 1630 LG=JW:?:?SPC(7)D$"multiplier = x"LG
 1631 ? SPC(17)"(range 1-4, stepping 1)"
 1632 ?SPC(14)" New multiplier (round 2):";:INPUT W
 1635 IF W=1 OR W=2 OR W=3 OR W=4 THEN 1640
 1637 GOSUB 1999:GOSUB 2000:GOTO 1630
 1640 LG=W:?SPC(20)"PGM pulse (round 2):";B*LG;M$
 1645 IF B*LG>20 THEN ?:?"Long PGM pulse - at your own risk ..."
 1650 B=B*U:GOSUB 1700:NS=2:GOSUB 2000:GOTO 1090
 1700 IF B=0 THEN 1730
 1720 PP=B
 1730 RETURN
 1800 ?SPC(22)"Intended for experienced users !":?
 1802 ?SPC(20)"Special mode - here are two options:":?
 1804 ?SPC(11)"New PROM burning after an unsuccessful via the (W)rite"
 1806 ?SPC(14)"command attempt or we want to try reprogramming."
 1807 ?:IF CRC>0 THEN ?SPC(32)"Active Data !":RP=RP+1:GOTO 1810
 1808 ?SPC(32)"No active Data line !"
 1810 O=0:A=0:POKE PB,0:POKE PA,128:GOSUB 2050
 1815 O=128+A:POKE PA,O:OC=OC+PEEK(PC)
 1820 A=A+1:IF A=32 THEN GOTO 1850
 1825 GOTO 1815
 1850 IF OC>0 THEN ?SPC(32)"Active PROM !":RP=RP+1
 1855 IF OC=0 THEN ?SPC(32)"No active PROM !"
 1860 IF RP<3 THEN GOSUB 2400:GOSUB 1900:GOSUB 8990:GOTO 1090
 1866 IF RP=3 THEN Z=1:?SPC(31)"I will burn ...":GOSUB 2400:GOTO 7046
 1900 ?:?SPC(26)"PROM burning is cancelled ...":?:RETURN
 1999 ?SPC(3)"Wrong input !":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
 2300 GOSUB 2500
 2301 ?SPC(18)X$;"No valid"K$" !"SPC(8)"CRC="CRC;:GOSUB 2990
 2400 POKE PA,0:POKE PB,0:RETURN
 2500 ?" -";:RETURN
 2600 ?SPC(31);:RETURN
 2990 ?TAB(78)"-":RETURN
 2995 ?" -"SPC(20);:RETURN
 3010 ?CHR$(12);:T=0:Q=0:X=0:Y=0:A=0:Y=0:OK=0:ER=0:JK=7
 3015 ?SPC(25)"Igi"CHR$(39)"s byte to bit analyzer:"
 3020 ?SPC(15)J$"   "J$:?SPC(15)G$"   "G$
 3025 ?SPC(18)F$"    "F$: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 ?"<";
 3250 ?"  ";:GOSUB 3400: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:IF INT(Y)=0 THEN 3424
 3422 GOTO 3412
 3424 RETURN
 3500 ?SPC(12)"Name: "C$:I=PD
 3503 ?SPC(12)"CRC :"L"(dec)";:IF L=0 THEN ?"=no active PROM"
 3505 ?:IF L>0 THEN ?
 3506 ?SPC(11)K$;" hex:":?SPC(12)"0000:";:FOR F=PD TO PD+15
 3510 N=PEEK(F):GOSUB 3720:NEXT:?:?SPC(12)"0010:";
 3512 FOR F=PD+16 TO PD+31:N=PEEK(F):GOSUB 3720:NEXT:?:?
 3514 ?SPC(11)K$;" dec:":?SPC(12)"9001"K$;:GOSUB 8970
 3516 ?SPC(12)"9002"K$;:GOSUB 8970:?SPC(12)"9003"K$;:GOSUB 8970
 3520 ?SPC(12)"9004"K$;:GOSUB 8970:GOTO 7046
 3720 L=N AND 15:H=(N-L)/16
 3730 ?MID$(B$,H+1,1)MID$(B$,L+1,1);" ";: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 4900:DF=PD:N=0:GOSUB 4290
 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
 4275 IF N=16 THEN GOSUB 4290
 4279 IF DF=PD+32 THEN GOSUB 8700:?:GOTO 8800
 4280 GOTO 4206
 4290 ?"Adress: "K$":":?"(hex)    (hex)":RETURN
 4300 J=PD:S=0:GOSUB 4900:GOSUB 4950
 4303 IF S<10 THEN ?" "S,
 4304 IF S>=10 THEN ?S,
 4306 INPUT Q:IF Q>255 THEN GOSUB 1999:GOTO 4303
 4308 POKE J,Q:J=J+1:S=S+1:IF S=16 THEN GOSUB 4950
 4309 IF J=PD+32 THEN GOSUB 8700:?:GOTO 8800
 4310 GOTO 4303
 4900 ?SPC(20)"<-- name = length max. 40 characters ";X$
 4910 ?SPC(3)"PROM"K$" NAME:";:INPUT C$
 4930 IF LEN (C$)>40 THEN GOSUB 1999:GOTO 4900
 4940 ?:RETURN
 4950 ?"Adress:"SPC(5)K$":":?"(dec)"SPC(8)"(dec)":RETURN
 5000 ?SPC(16)"Read PROM and Write to"K$" rows ";
 5001 CRC=0:R=50:IF IG=2 THEN R=0
 5010 POKE PB,0:O=0:A=0:POKE PA,128:GOSUB 2050
 5035 O=128+A:POKE PA,O: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 ?N$:GOTO 5160
 5130 ?" ACTIVE PROM !":GOSUB 2400
 5150 GOSUB 4900:GOSUB 8700:?:GOTO 8800
 5160 GOSUB 2400:NS=1:GOSUB 2000:GOTO 1090
 5500 ?CHR$(12):?"   Your choice - "A$:?:RETURN
 6000 ?SPC(18)"Test - read PROM ";
 6010 O=0:A=0:POKE PB,0:POKE PA,128:GOSUB 2050
 6035 O=128+A:POKE PA,O:OC=PEEK(PC):IF OC=0 THEN 6070
 6060 ?" - Not a"N$:?SPC(26)"Insert"N$
 6065 GOSUB 2400:GOSUB 2000:GOTO 1090
 6070 A=A+1:IF A=32 THEN 6100
 6090 GOTO 6035
 6100 ?" Good,"N$:GOSUB 2400:IF Z=1 THEN 7020
 6110 NS=1.5:GOSUB 2000:GOTO 1090
 7000 ?SPC(30)"Writing to PROM >":?:Z=1
 7010 FOR F=TG TO TG+31:POKE F,122:NEXT:GOTO 6000
 7020 GOSUB 9000:?:?SPC(17)" Name"K$" file: "C$
 7030 GOSUB 9005:?SPC(34)"CRC="CRC:NS=2
 7035 IF CRC=0 THEN ?SPC(29)" No valid"K$" !":GOSUB 2000:GOTO 1090
 7042 IF 32-OK<>0 AND E=1 THEN GOSUB 2000:GOTO 1090
 7046 ?:?SPC(32)"CONTINUE Y/N";:INPUT A$
 7047 IF A$="N" AND RP=3 THEN 1090
 7048 IF A$="N" THEN END
 7051 IF A$<>"Y" THEN GOSUB 1999:GOTO 7042
 7052 IF JK=7 THEN 7056
 7054 IF A$="Y" AND E=9 THEN 7070
 7056 IF A$="Y" AND Z=>0 OR Z<=3 THEN 1090
 7070 O=0:A=0:RESTORE:FOR G=PD TO PD+31:READ M:POKE G,M:NEXT
 7200 POKE PA,128:POKE PB,0:GOSUB 2050:?SPC(29)"Programming bytes ..."
 7204 ?SPC(30)"PGM pulse =";:IF Z=2 AND D=1 THEN ?B/U*LG;:GOTO 7217
 7208 IF Z=1 AND D=0 THEN ?PP/U;:GOTO 7217
 7210 IF Z=1 THEN ?TAB(30)PP/U;:GOTO 7217
 7212 IF Z=2 AND D=0 THEN ?PP/U*LG;
 7217 ?M$:?:?TAB(8);: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;
 7231 IF Z=2 AND PEEK(TG+G)=0 THEN 7480
 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 O=0 TO 7:S=PEEK(PE+O):IF S=0 THEN 7480:GOSUB 1700
 7420 PP=JJ:POKE PA,128:GOSUB 2050:IF Z=2 AND D=1 THEN PP=B*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:O=0:GOSUB 2000
 8000 RESTORE:POKE PA,128:POKE PB,0:GOSUB 2050:A=0:L=0:O=0
 8013 ?CHR$(12):OK=0:ER=0:IF A$="V" THEN X=1
 8014 FOR G=PD TO PD+31:READ M:POKE G,M:Q=PEEK(G):L=L+Q:NEXT:A=0
 8085 FOR G=PD TO PD+31:O=128+A:POKE PA,O:Q=PEEK(PC):R=PEEK(G)
 8100 IF Q=R THEN OK=OK+1:POKE G+40,0:GOTO 8104
 8102 X=1:ER=ER+1
 8104 A=A+1:NEXT:POKE PA,0:OK=0:ER=0:?
 8120 IF Y=1 AND X=1 OR X=1 AND E=1 AND Y=0 THEN 8200
 8122 IF Y=1 AND X=2 THEN 8130
 8125 IF L=0 THEN ?N$:POKE PA,0:GOSUB 2000:GOTO 1090
 8126 IF X=1 THEN 8150
 8127 IF X=1 THEN Y=0:POKE PA,0:GOSUB 2100:X=X+1
 8128 IF X=2 THEN Y=1:POKE PA,0:GOTO 7070
 8130 GOTO 8200
 8150 ?SPC(24)"New attempt to burn round no."Z: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 E=9 THEN 7046
 8212 IF OK=32 AND E=1 THEN 8500
 8214 ?SPC(34)"- bad PROM ...";:GOSUB 2400:GOSUB 2000:GOTO 7042
 8500 ?SPC(32)"- good verifying !";:NS=2.5:GOSUB 2000:GOTO 1090
 8600 GOSUB 5500:?SPC(4)"+------\ /------+"SPC(25)"32x 8bit PROM:"
 8602 ?SPC(4)W$:?" 01-+ Y1"SPC(8)"Vcc +-16";
 8604 ?SPC(17)"74188    74S288    82S123":?SPC(4)"|"SPC(9)"__ __ |"
 8606 ?" 02-+ Y2"SPC(6)"CS/EN +-15"SPC(4)"Vcc:";
 8608 ?SPC(19)"+5V":?SPC(4)W$
 8610 ?" 03-+ Y3"SPC(9)"E  +-14"SPC(4)"Icc:";
 8612 ?SPC(10)"60mA"SPC(5)"70mA"SPC(6)"95mA":?SPC(4)W$
 8614 ?" 04-+ Y4"SPC(9)"D  +-13"SPC(4)"Acces time:";
 8616 ?"  <50ns    <25ns     <20ns":?SPC(4)W$
 8618 ?" 05-+ Y5"SPC(9)"C  +-12"SPC(4)"max.Yout:";
 8620 ?SPC(14)"12.5mA":?SPC(4)W$
 8622 ?" 06-+ Y6"SPC(9)"B  +-11"SPC(4)"PGM pulse:";
 8624 ?SPC(13)"1-20ms":?SPC(4)W$
 8626 ?" 07-+ Y7"SPC(9)"A  +-10";:?SPC(19)"Open Collector Output"
 8627 ?SPC(4)W$
 8628 ?" 08-+ Gnd"SPC(8)"Y8 +-09";"    Russian version: K155RE3"
 8630 ?SPC(4)W$:?SPC(4)"+---------------+":GOTO 7046
 8700 ?:?" Now it's time to start capturing text";:GOSUB 8850
 8702 GOSUB 8990
 8706 ?:?" Rows"K$" generator:":?:I=PD:L=0
 8708 ?"9000 C$=";CHR$(34);C$;CHR$(34);":ID=32:RETURN"
 8710 ?"9001"K$;:GOSUB 8970:?"9002"K$;:GOSUB 8970
 8712 ?"9003"K$;:GOSUB 8970:?"9004"K$;:GOSUB 8970
 8714 FOR G=PD TO PD+31:Q=PEEK(G):L=L+Q:NEXT
 8716 ?"9005 CRC="L":RETURN:REM CRC(dec!)":?:GOTO 8800
 8776 GOSUB 4100:GOSUB 9005:IF L<>CRC THEN 8900
 8777 IF L=0 THEN 8780
 8778 GOSUB 2500:?SPC(18)X$;"Valid"K$" in memory ! CRC="CRC;
 8779 GOSUB 2990:GOTO 8781
 8780 GOSUB 2300
 8781 ?" ";:FOR F=2 TO 78:?"-";:NEXT:GOSUB 2990:RETURN
 8800 ?" Save this"K$" rows in the specified positions"
 8802 ?SPC(8)"and then run the program again !"
 8804 ?:?SPC(8)"You can now stop capture text to"
 8805 ?SPC(11)"the file";:GOSUB 8850:FG=1:GOTO 7046
 8850 ?" in HyperTerminal.":RETURN
 8900 REM ?CHR$(12);
 8901 ?"Problem ...":?"Bad verification result or ID"
 8904 ?SPC(5)"difference in:":?"  computer"SPC(7)K$
 8905 ?SPC(3)K$;SPC(10)"rows":?SPC(4)"CRC:   < >    CRC:"
 8906 ?SPC(4)L;TAB(18)CRC:?SPC(9)"ID ="ID:END
 8970 FOR G=I TO I+6:?PEEK(G)",";:NEXT:?PEEK(I+7):I=I+8:RETURN
 8990 ?" Press C to continue ...";:INPUT A$:IF A$<>"C" THEN 8990
 8992 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 !

____________________________________________________________

 

Záver:

Od uverejnenia prvých programových verzií 1.01 a 1.02 pre PROM7188 programátor práve ubehli 4 roky ± nejaký ten deň (týždeň) navyše, za tú dobu som vydal postupne viacero verzií programového vybavenia. Všetky postupné verzie programového vybavenia boli napísané a aj editované v Notepade, ani raz som pri vytváraní nových verzií nepoužil výpis listingu na tlačiareň, bolo to síce pri tvorbe programu vďaka tomu o niečo náročnejšie, ale je to malý dôvod na hrdosť že som to takto zvládol.

Programovanie programátoru PROM 74188 na SBC6502 bolo pre mňa skutočne zábavou a za tú dobu som sa poriadne precvičil v programovaní - hlavne preto že štandartná príručka (september 1978) pre jazyk OSI 6502 BASIC VERSION 1.0 REV 3.2 COPYRIGHT 1977 BY MICROSOFT CO. má rozsah = celých 18 strán ... (uvedené číslo počtu strán je správne - pričom z toho je prvá strana len nadpis a strana č.2 je úplne čistá, takže reálne sme na čísle 16) a to je všetko čo sa týka programovania. To naozaj nie je veľa a práve preto som vtedy (rok 2019) považoval za výzvu niečo "väčšieho" na tomto SBC naprogramovať.

____________

Je to myslím si že už tak akurát aby som s tvorbou programového vybavenia pre pre programátor PROM 74188  definitívne skončil (pritom všetky vydané verzie dokázali bez problémov naprogramovať PROM 74188, akurát som sa snažil vždy niečo ďalšie v programe vylepšiť) - avizoval som to už viackrát, ale ako vidieť doteraz som úplné ukončenie prác na programovom vybavení akosi stále nedodržal, už to teraz skutočne hodlám napraviť.Smile

Aby bolo jasné - rozhodne netvrdím že by sa stávajúci program nedal ešte vylepšiť, ale smerujem svoje úsilie už do niečoho iného.

____________

Na druhú stranu - naozaj sa nedá povedať že by som počas uvedenej doby nepodporoval programátor PROM 74188 novým programovým vybavením (vydal som celkove 15 verzií, sakrble - na tie 4 roky čo prešli mi to spätne pripadá naozaj dosť ...). Rok 2021 bol rokom najviac vydaných verzií - hľadal som vtedy optimálne riešenie, ale v uvedenom roku som ho nenašiel, bola to tzv. "slepá vývojová cesta" - rozumej = príliš komplikované pri používaní ak sa chceli využiť všetky funkcie (hlavne reburning). Dobré riešenie som objavil až o rok neskôr - následne som potom v ďalších verziách už len doťahoval detaily. Aj tu všeobecne platí že najlepšie je začať používať najnovšie dostupnú verziu programu pretože tá vie toho najviac.

Takže - držím palce pri pálení PROM 74188 !

____________________________________________________________

V uvedenom odkaze sú uverejnené všetky vydané verzie programového vybavenia pre programátor PROM 74188:

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

_____________________________________________________________

Vaše hodnotenie, Rate post:

SBC6502 - 69 - PROM 74188 - program ver.10.s(pecial).

By Administrator at decembra 24, 2023 09:00
Filed Under: SBC6502

"Vianočná nádielka 2023" - programová verzia 1.10s(pecial)

pre programátor PROM 74188:


SBC6502 s nasadenou doskou programátoru PROM 74188.

 

Igiho motto:

"Žiaden vytvorený program nie je tak dokonalý aby sa nenašlo niečo vďaka čomu sa program dá ešte vylepšiť alebo upraviť."

(Alebo aj úplne zhovadiť ...)Smile

 

Úvodná obrazovka.

 

Pozrime sa na programovú verziu 1.10s (special):

 

- z menu som odstránil zobrazenie nastavenia hodnôt v premenných ktoré určujú základné nastavenie, nie je to teraz až tak potrebné aby sa trvale zobrazovali

 

- nastavenie novej dĺžky (P)GM pulzu sa presunulo naspäť na začiatok menu, je to takto prehľadnejšie ako v strede menu, proste po čase sa ukazuje že takto to bude najlepšie

 

- verzia 1.10s je vďaka niektorým úpravám vhodné pre tých ktorí radi experimentujú (a pritom sa vôbec nemusia vôbec vŕtať v programovom vybavení)

 

- zásadná zmena nastala pri voľbe (P)GM:

Voľba (P)GM pulzu pre prvé kolo je stále v rozpätí 1÷20msec v kroku po 1msec a pribudla možnosť po nastavení novej dĺžky PGM pulzu meniť násobiteľom dĺžku pulzu pre kolo druhé a to v rozsahu 1÷4x násobku hodnoty ktorá platí pre prvé kolo programovania. S touto zmenou pozor, štandartné nastavenie je teraz 10ms (oproti verzii 1.10n kde to bolo 17msec) pre kolo číslo jedna, teda potom tu platí pre kolo druhé PGM pulz = 20ms. Ak sa nám nepodarí napáliť správne PROM po absolovaní obidvoch kôl programovania tak treba postupovať cez novú voľbu (S)pecial reburning mode, keď si ešte predtým zmeníme cez voľbu (P)GM dĺžku pulzov.


Pracovná obrazovka.

 

V menu pribudla nová položka (S)pecial r.e.b.u.r.n.i.n.g. mode.

(Uvedený mód veľmi zjednodušuje možnosť reprogramovania.)

 

Hodne, hodne dlho som rozmýšľal či túto možnosť vôbec mám zaradiť do menu, ale nakoniec som sa rozhodol reburning nanovo zaradiť do menu, pre určité situácie je skutočne potrebný (a nenahraditeľný).

Špeciálny "reprogramovací" mód slúži na 2 veci:

- v prvom prípade je určený na to aby bolo možné správne naprogramovať PROM, ktorej nestačí 10ms pulz v prvom kole a ani 20ms PGM pulz v kole druhom. Cez voľbu (P)GM nastavíme väčšie hodnoty a môžeme to skúsiť nanovo. Cez voľbu (W)rite nie je možné programovať PROM ktorá má v sebe už napálené nejaké údaje ! (tam sa kontroluje či je na začiatku založená "čistá" PROM, t.j. taká ktorá obsahuje iba samé nuly) - je to možné iba cez tento špeciálny mód.

Ešte pár slov k reprogramovaniu PROM (trebárs ak sa nepodarí správne naprogramovať trebárs jediný bit) - z menu zadajte pre prvé kolo cez (P)GM pulz na 20ms a násobiteľ nastavte na 3, t.j. v druhom kole bude mať PGM pulz dĺžku 60ms - následne stlačte (S)pecial reburning mode, PROM je založená, program skontroluje či sú platné Data v riadkoch 9001 9004 a či je založená PROM s už nejakými napálenými údajmi, ak ani potom nezbehne správne naprogramovanie dajte násobiteľ na 4, teda v druhom kole bude PGM pulz trvať 80msec - toto by už malo poraziť aj slona ... Ak ani potom nepôjde PROM správne naprogramovať - tak ju bezpečne môžete vyhodiť do koša, je jasné že je to totálny nepodarok určený do smetí - ale ešte som ale taký kus čo by nešiel prepáliť a vytrvale by odmietal do seba zapísať správnu hodnotu nenašiel - moja jedna "blbá" PROM potrebovala na zápis jeden jediný zlý bitík použiť 50ms programovací pulz, potom už bolo všetko O.K. (Bola to TESLA produkcia.) Pri cca 55 napálených kusoch to bola u mňa jedna jediná PROM ktorá vyžadovala tento zásah, všetkým ostatným PROM pritom na napálenie stačili 10ms PGM pulzy - a to hneď v kole prvom, teda vôbec neprichádzalo k spusteniu druhého kola PGM pulzu o predĺženej hodnote. 

Pri nastavení prekročenia dĺžky >20msec napaľovacieho PGM pulzu pre druhé kolo sa zobrazí upozorenie že je to nastavenie už iba na Vašu zodpovednosť, pretože je prekročená hodnota uverejnená v datasheete (ak nie je správne napálený obsah v PROM - aj tak inú možnosť ako následne predĺžiť PGM pulz už nemáme ...).


Tu platí - násobiteľ zmeňte z čísla 2 na vyššiu hodnotu len vtedy ak ste si vedomý možných následkov ! (možné zničenie PROM). Ak zadáte číslo 1 tak v druhom kole programovania je dĺžka PGM pulzu identická s kolom prvým (vhodné ak potrebujeme zistiť kedy príde k naprogramovaniu konkrétneho bitu alebo byte). Ako som sám testoval - vo veľkej väčšine prípadov (vyzerá že je to viac ako v 99%) stačí iba 1msec PGM pulz na napálenie bitu do log.1, takže 10msec pulz je celkom dobrá voľba a istí to napálenie správneho obsahu už v kole prvom, v druhom kole máme automaticky 20msec PGM pulz, toto platí pre PROM 74188 pamätí TESLA (iný typ k dispozícii na otestovanie nemám).

- tak isto som urobil aj takú úpravu kedy je možné násobiteľ pre 2.kolo krokovať v rozsahu 1÷4 po krokoch x 0.1, t.j. trebárs 2.7 a pod., na konci článku je uvedené ktoré riadky teba prepísať aby to bolo funkčné s takýmto násobiteľom, ale táto úprava programu nie je vyžadovaná, toto je zase pre tých ktorí radi experimentujú

 

- v druhom prípade ak potrebujeme doprogramovať voľné byte v PROM, alebo potrebujeme upraviť obsah PROM, pozor toto je iba pre niekoho kto tomu rozumie !, zapísané jednotky už nie je možné spätne prepísať do nuly ! Pozor, tieto data musia byť uložené priamo v DATA riadkoch !

Tu v tomto druhom prípade sa kontrolujú 2 veci - či sú aktívne data v Data riadkoch a či je už niečo v PROM napálené, ak sú splnené tieto 2 podmienky tak len vtedy je povolený zápis.

Táto voľba nie je určená pre napaľovanie do čistej PROM, na to slúži iná voľba - a to (W)rite.

Prvý prípad je jasný, tam len len napravujeme chybný obsah, v druhom prípade sa počíta s tým že viete čo robíte a teda sú k dispozícii správne údaje a správna PROM ktorá sa dá svojím obsahom reprogramovať - toto je naozaj určené len pre tých naozaj "skúsených" userov.

 

Aktívne Data - ale iba čistá prázdna PROM = nevhodné na reprogramovanie.


Aktívne Data - PROM už má obsah = vhodné na reprogramovanie.


Poznámka:

Toto riešenie sa javí o poznanie lepšie ako keď som skúšal nasadiť reprogramovanie vo verziách 1.3, 1.4 a 1.5 (v spomínaných verziách to bolo značne nedokonalé a hlavne komplikované pre následné použitie), teraz po čase som našiel riešenie ktoré vyhovuje

 

- do predchádzajúcich verzií 1.09, 1.09p, 1.10 a 1.10n boli spätne aplikované dve úpravy ktoré som otestoval práve pri príprave verzie 1.10s a to nový spôsob testovania povolenej dĺžky PGM pulzu a tiež spôsob testu stlačenia klávesy "C" pri spúšťaní Capture v Hypertermináli (hodil som testovanie do podprogramu, doteraz za istých okolností neprišlo k správnemu vyhodnoteniu stlačenia klávesy, teraz je to v poriadku). Tieto úpravy som taktiež premietol do uvedených verzií dňa 22.09.2023 (jednoducho to bolo tak dobré že som to nasadil aj tam).


- pri (D)ec a aj (H)ex zápise údajov je teraz vždy pekne po 16 byte (dec-10, hexa-0F) nanovo vypísaná hlavička, pretože pri zápise 32 byte už úvodná hlavička nie je v terminálovom okne vidieť, prispieva to k prehľadnost pri zápise údajov


- niektoré premenné v programe ktoré doteraz používali 2 znaky v názve vo verzii 1.10s boli nahradené premennými ktoré majú dĺžku 1 znak (kratší zápis)


- napriek všetkým možným úpravám programu zostáva stále voľných cca 21kB RAM z celkových 32kB RAM / príkaz ? FRE(0)-268/

  (268 je počet byte RAM na konci pamäte ktorá je využívaná programom a aj vyhradené miesto pre stack)

 

- pribudol program pre SBC6502 s x-talom 2.500MHz

 

___________________________________________________________

Nový  videomanuál k verzii 1.10s:

video

Videomanual v.1.10s.zip

(Vo videu nie sú prevedené všetky zmeny vzhľadu vo výpise menu, preto sa to v jeho zobrazení môže mierne líšiť - už som nerobil nové video pretože sa jedná naozaj a skutočne iba o drobné kozmetické úpravy.)

___________________________________________________________

 

 Program - verzia 1.10s je pre x-tal:

1.8432MHz

2.0000MHz

2.4576MHz

2.5000MHz

3.6864MHz

4.0000MHz

4.5000MHz

4.9152MHz

5.0000MHz

6.0000MHz


Vlastné programové vybavenie:

74188 programmer 1_8432MHz_v110s.txt (12,83 kb)

74188 programmer 2_0000MHz_v110s.txt (12,83 kb)

74188 programmer 2_4576MHz_v110s.txt (12,83 kb)

74188 programmer 2_5000MHz_v110s.txt (12,83 kb)

74188 programmer 3_6864MHz_v110s.txt (12,83 kb)

74188 programmer 4_0000MHz_v110s.txt (12,83 kb)

74188 programmer 4_5000MHz_v110s.txt (12,83 kb)

74188 programmer 4_9152MHz_v110s.txt (12,83 kb)

74188 programmer 5_0000MHz_v110s.txt (12,83 kb)

74188 programmer 6_0000MHz_v110s.txt (12,83 kb)

 

___________________________________________________________

Poznámka:

Ak niekto túži mať k dispozícii násobiteľ do druhého kola programovania jemnejšie odstupňovaný (v rozsahu 1.0÷4.0 to bude v kroku po 0.1, napríklad 1, 1.7, 2.2, 3.3 a pod.) tak stačí v programe vymazať riadky 1600÷1730 a dosadiť tam tieto riadky (toto je naozaj určené iba pre fajnšmekrov), platí to pre všetky typy x-talov vo verzii 1.10s:

 

Jemnejšia možnosť odstupňovania násobiteľa pre 2 kolo programovania:

 1600 PP=JJ:?D$"PGM pulse (round 1)="PP/U;M$
 1602 ?SPC(12)"(range 1-20, stepping 1 "M$")"
 1604 ?SPC(17)"New length pulse,"M$":";:INPUT B:V=1
 1606 IF V>20 OR V<1 THEN GOSUB 1999:GOSUB 2000:GOTO 1604
 1608 IF B=V THEN 1630
 1625 V=V+1:GOTO 1606
 1630 LG=JW:?:?SPC(7)D$"multiplier = x"LG
 1631 ? SPC(11)"(range 1.0-4.0, stepping 0.1)"
 1632 ?SPC(14)" New multiplier (round 2):";:INPUT QG:QG=QG*10:W=10
 1635 IF QG>40 OR QG<1 THEN GOSUB 1999:GOSUB 2000:GOTO 1632
 1636 IF QG=W THEN LG=QG/10:GOTO 1640
 1638 W=W+1:GOTO 1635
 1640 ?SPC(20)"PGM pulse (round 2):";B*LG;M$
 1645 IF B*LG>20 THEN ?:?" At your own risk ..."
 1650 B=B*U:GOSUB 1700:NS=2:GOSUB 2000:GOTO 1090
 1700 IF B=0 THEN 1730
 1720 PP=B
 1730 RETURN

(Aby som pravdu povedal, toto jemnejšie odstupňovanie nie je potrebné, ale ak si to chce niekto vyskúšať - prosím, dá sa.)

 

_______________________________________________________________________________

 

Vlastný výpis programu pre x-tal=4.9152MHz:

 

 1000 CLEAR:POKE 15,80:PD=32500:PE=PD+32:U=3.13:DV=6:PP=10*U:LG=2
 1004 B$="0123456789ABCDEF":R$="24.12.2023, x-tal = 4.9152MHz"
 1005 E$="- Best 74188 PROM programmer,Igi(c)":N$=" BLANK PROM !"
 1006 F$="76543210 fy: 76543210":G$="te:  bit:   ri    bit:"
 1007 M$="msec":K$=" DATA":J$="by   DATA   Ve    PROM"
 1008 Q$="2023_ver.1.10special":S$=" + generate DATA rows"
 1009 X$="-->  ":W$="|               |":Z$=" -----------"
 1010 PA=32768:PB=PA+1:PC=PA+2:CWR=PA+3:POKE CWR,137
 1014 BN=0:D=0:B=0:JJ=PP:JW=LG:D$="Default setting for "
 1016 ?CHR$(12);SPC(29)"SBC6502/32kB RAM+8255A"
 1065 ?SPC(22)"Turn ON the power to the programmer !"
 1090 GOSUB 2400:GOSUB 9000:Z=0:X=0:Y=0:E=0:J=0:NS=1:FG=0:JK=0
 1092 OC=0:RP=0:TG=PD+40:IF ID<>32 THEN 8900
 1095 IF BN=1 THEN ?CHR$(12)
 1098 GOSUB 1700:?Z$;E$;Q$;Z$:GOSUB 2995:?SPC(4)R$;:GOSUB 2990
 1100 GOSUB 8781:?" -"SPC(13)"(P)GM pulse length,round 1="PP/U;M$;
 1102 ?",round 2="PP/U*LG;M$;:GOSUB 2990:GOSUB 8781
 1106 GOSUB 2995:?"(C)ontent info "Z$;K$" rows";:GOSUB 2990
 1108 GOSUB 2995:?"(D)ec input"K$;S$;:GOSUB 2990
 1110 GOSUB 2995:?"(H)ex input"K$;S$;:GOSUB 2990
 1112 GOSUB 2995:?"(I)nfo datasheet 74188,74S288,82S123,";:GOSUB 2990
 1114 GOSUB 2995:?"SN74188N,DM8223,DM74188A,DM8577,75188";:GOSUB 2990
 1118 GOSUB 2995:?"(R)ead  P R O M ";S$;:GOSUB 2990
 1120 GOSUB 2995:?"(T)est  P R O M "Z$"/is empty ?/";:GOSUB 2990
 1122 GOSUB 2995:?"(V)erification PROM against"K$" rows";:GOSUB 2990
 1124 GOSUB 2995:?"(W)riting "K$" - direct into P R O M";:GOSUB 2990
 1126 GOSUB 2995:?"(S)pecial   r.e.b.u.r.n.i.n.g.   mode";:GOSUB 2990
 1127 GOSUB 2995:?"(Q)uit program";:GOSUB 2990:GOSUB 8781
 1128 GOSUB 2995:?"  "K$" /rows/ file name:";:GOSUB 2990:GOSUB 2995
 1130 ?"   "C$;TAB(78)"-":GOSUB 8776:IF BN=1 THEN ?
 1132 ?SPC(34)"Your choice:";:INPUT A$:BN=1:IF A$="I" THEN 8600
 1134 IF A$="P" THEN D=1:GOSUB 5500:GOTO 1600
 1136 IF A$="C" THEN GOSUB 5500:GOTO 3500
 1138 IF A$="D" THEN GOSUB 5500:GOTO 4300
 1140 IF A$="H" THEN GOSUB 5500:GOTO 4200
 1142 IF A$="R" THEN IG=2:GOSUB 5500:GOTO 5000
 1144 IF A$="T" THEN GOSUB 5500:GOTO 6000
 1146 IF A$="V" THEN E=1:GOTO 8000
 1148 IF A$="W" THEN E=9:GOSUB 5500:GOTO 7000
 1150 IF A$="S" THEN E=9:RP=1:GOSUB 5500:GOTO 1800
 1152 IF A$="Q" THEN GOSUB 5500:END
 1154 GOTO 1090
 1600 PP=JJ:?D$"PGM pulse (round 1)="PP/U;M$
 1602 ?SPC(12)"(range 1-20, stepping 1 "M$")"
 1604 ?SPC(17)"New length pulse,"M$":";:INPUT B:V=1
 1606 IF V>20 OR V<1 THEN GOSUB 1999:GOSUB 2000:GOTO 1604
 1608 IF B=V THEN 1630
 1625 V=V+1:GOTO 1606
 1630 LG=JW:?:?SPC(7)D$"multiplier = x"LG
 1631 ? SPC(17)"(range 1-4, stepping 1)"
 1632 ?SPC(14)" New multiplier (round 2):";:INPUT W
 1635 IF W=1 OR W=2 OR W=3 OR W=4 THEN 1640
 1637 GOSUB 1999:GOSUB 2000:GOTO 1630
 1640 LG=W:?SPC(20)"PGM pulse (round 2):";B*LG;M$
 1645 IF B*LG>20 THEN ?:?"Long PGM pulse - at your own risk ..."
 1650 B=B*U:GOSUB 1700:NS=2:GOSUB 2000:GOTO 1090
 1700 IF B=0 THEN 1730
 1720 PP=B
 1730 RETURN
 1800 ?SPC(22)"Intended for experienced users !":?
 1802 ?SPC(20)"Special mode - here are two options:":?
 1804 ?SPC(11)"New PROM burning after an unsuccessful via the (W)rite"
 1806 ?SPC(14)"command attempt or we want to try reprogramming."
 1807 ?:IF CRC>0 THEN ?SPC(32)"Active Data !":RP=RP+1:GOTO 1810
 1808 ?SPC(32)"No active Data line !"
 1810 O=0:A=0:POKE PB,0:POKE PA,128:GOSUB 2050
 1815 O=128+A:POKE PA,O:OC=OC+PEEK(PC)
 1820 A=A+1:IF A=32 THEN GOTO 1850
 1825 GOTO 1815
 1850 IF OC>0 THEN ?SPC(32)"Active PROM !":RP=RP+1
 1855 IF OC=0 THEN ?SPC(32)"No active PROM !"
 1860 IF RP<3 THEN GOSUB 2400:GOSUB 1900:GOSUB 8990:GOTO 1090
 1866 IF RP=3 THEN Z=1:?SPC(31)"I will burn ...":GOSUB 2400:GOTO 7046
 1900 ?:?SPC(26)"PROM burning is cancelled ...":?:RETURN
 1999 ?SPC(3)"Wrong input !":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
 2300 GOSUB 2500
 2301 ?SPC(18)X$;"No valid"K$" !"SPC(8)"CRC="CRC;:GOSUB 2990
 2400 POKE PA,0:POKE PB,0:RETURN
 2500 ?" -";:RETURN
 2990 ?TAB(78)"-":RETURN
 2995 ?" -"SPC(20);:RETURN
 3010 ?CHR$(12);:T=0:Q=0:X=0:Y=0:A=0:Y=0:OK=0:ER=0:JK=7
 3015 ?SPC(25)"Igi"CHR$(39)"s byte to bit analyzer:"
 3020 ?SPC(15)J$"   "J$:?SPC(15)G$"   "G$
 3025 ?SPC(18)F$"    "F$: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 ?"<";
 3250 ?"  ";:GOSUB 3400: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:IF INT(Y)=0 THEN 3424
 3422 GOTO 3412
 3424 RETURN
 3500 ?SPC(12)"Name: "C$:I=PD
 3503 ?SPC(12)"CRC :"L"(dec)";:IF L=0 THEN ?"=no active PROM"
 3505 ?:IF L>0 THEN ?
 3506 ?SPC(11)K$;" hex:":?SPC(12)"0000:";:FOR F=PD TO PD+15
 3510 N=PEEK(F):GOSUB 3720:NEXT:?:?SPC(12)"0010:";
 3512 FOR F=PD+16 TO PD+31:N=PEEK(F):GOSUB 3720:NEXT:?:?
 3514 ?SPC(11)K$;" dec:":?SPC(12)"9001"K$;:GOSUB 8970
 3516 ?SPC(12)"9002"K$;:GOSUB 8970:?SPC(12)"9003"K$;:GOSUB 8970
 3520 ?SPC(12)"9004"K$;:GOSUB 8970:GOTO 7046
 3720 L=N AND 15:H=(N-L)/16
 3730 ?MID$(B$,H+1,1)MID$(B$,L+1,1);" ";: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 4900:DF=PD:N=0:GOSUB 4290
 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
 4275 IF N=16 THEN GOSUB 4290
 4279 IF DF=PD+32 THEN GOSUB 8700:?:GOTO 8800
 4280 GOTO 4206
 4290 ?"Adress: "K$":":?"(hex)    (hex)":RETURN
 4300 J=PD:S=0:GOSUB 4900:GOSUB 4950
 4303 IF S<10 THEN ?" "S,
 4304 IF S>=10 THEN ?S,
 4306 INPUT Q:IF Q>255 THEN GOSUB 1999:GOTO 4303
 4308 POKE J,Q:J=J+1:S=S+1:IF S=16 THEN GOSUB 4950
 4309 IF J=PD+32 THEN GOSUB 8700:?:GOTO 8800
 4310 GOTO 4303
 4900 ?SPC(20)"<-- name = length max. 40 characters ";X$
 4910 ?SPC(3)"PROM"K$" NAME:";:INPUT C$
 4930 IF LEN (C$)>40 THEN GOSUB 1999:GOTO 4900
 4940 ?:RETURN
 4950 ?"Adress:"SPC(5)K$":":?"(dec)"SPC(8)"(dec)":RETURN
 5000 ?SPC(16)"Read PROM and Write to"K$" rows ";
 5001 CRC=0:R=50:IF IG=2 THEN R=0
 5010 POKE PB,0:O=0:A=0:POKE PA,128:GOSUB 2050
 5035 O=128+A:POKE PA,O: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 ?N$:GOTO 5160
 5130 ?" ACTIVE PROM !":GOSUB 2400
 5150 GOSUB 4900:GOSUB 8700:?:GOTO 8800
 5160 GOSUB 2400:NS=1:GOSUB 2000:GOTO 1090
 5500 ?CHR$(12):?"   Your choice - "A$:?:RETURN
 6000 ?SPC(18)"Test - read PROM ";
 6010 O=0:A=0:POKE PB,0:POKE PA,128:GOSUB 2050
 6035 O=128+A:POKE PA,O:OC=PEEK(PC):IF OC=0 THEN 6070
 6060 ?" - Not a"N$:?SPC(26)"Insert"N$
 6065 GOSUB 2400:GOSUB 2000:GOTO 1090
 6070 A=A+1:IF A=32 THEN 6100
 6090 GOTO 6035
 6100 ?" Good,"N$:GOSUB 2400:IF Z=1 THEN 7020
 6110 NS=1.5:GOSUB 2000:GOTO 1090
 7000 ?SPC(30)"Writing to PROM >":?:Z=1
 7010 FOR F=TG TO TG+31:POKE F,122:NEXT:GOTO 6000
 7020 GOSUB 9000:?:?SPC(17)" Name"K$" file: "C$
 7030 GOSUB 9005:?SPC(34)"CRC="CRC:NS=2
 7035 IF CRC=0 THEN ?SPC(29)" No valid"K$" !":GOSUB 2000:GOTO 1090
 7042 IF 32-OK<>0 AND E=1 THEN GOSUB 2000:GOTO 1090
 7046 ?:?SPC(32)"CONTINUE Y/N";:INPUT A$
 7047 IF A$="N" AND RP=3 THEN 1090
 7048 IF A$="N" THEN END
 7051 IF A$<>"Y" THEN GOSUB 1999:GOTO 7042
 7052 IF JK=7 THEN 7056
 7054 IF A$="Y" AND E=9 THEN 7070
 7056 IF A$="Y" AND Z=>0 OR Z<=3 THEN 1090
 7070 O=0:A=0:RESTORE:FOR G=PD TO PD+31:READ M:POKE G,M:NEXT
 7200 POKE PA,128:POKE PB,0:GOSUB 2050:?SPC(29)"Programming bytes ..."
 7204 ?SPC(30)"PGM pulse =";:IF Z=2 AND D=1 THEN ?B/U*LG;:GOTO 7217
 7208 IF Z=1 AND D=0 THEN ?PP/U;:GOTO 7217
 7210 IF Z=1 THEN ?TAB(30)PP/U;:GOTO 7217
 7212 IF Z=2 AND D=0 THEN ?PP/U*LG;
 7217 ?M$:?:?TAB(8);: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;
 7231 IF Z=2 AND PEEK(TG+G)=0 THEN 7480
 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 O=0 TO 7:S=PEEK(PE+O):IF S=0 THEN 7480:GOSUB 1700
 7420 PP=JJ:POKE PA,128:GOSUB 2050:IF Z=2 AND D=1 THEN PP=B*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:O=0:GOSUB 2000
 8000 RESTORE:POKE PA,128:POKE PB,0:GOSUB 2050:A=0:L=0:O=0
 8013 ?CHR$(12):OK=0:ER=0:IF A$="V" THEN X=1
 8014 FOR G=PD TO PD+31:READ M:POKE G,M:Q=PEEK(G):L=L+Q:NEXT:A=0
 8085 FOR G=PD TO PD+31:O=128+A:POKE PA,O:Q=PEEK(PC):R=PEEK(G)
 8100 IF Q=R THEN OK=OK+1:POKE G+40,0:GOTO 8104
 8102 X=1:ER=ER+1
 8104 A=A+1:NEXT:POKE PA,0:OK=0:ER=0:?
 8120 IF Y=1 AND X=1 OR X=1 AND E=1 AND Y=0 THEN 8200
 8122 IF Y=1 AND X=2 THEN 8130
 8125 IF L=0 THEN ?N$:POKE PA,0:GOSUB 2000:GOTO 1090
 8126 IF X=1 THEN 8150
 8127 IF X=1 THEN Y=0:POKE PA,0:GOSUB 2100:X=X+1
 8128 IF X=2 THEN Y=1:POKE PA,0:GOTO 7070
 8130 GOTO 8200
 8150 ?SPC(24)"New attempt to burn round no."Z: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 E=9 THEN 7046
 8212 IF OK=32 AND E=1 THEN 8500
 8214 ?SPC(34)"- bad PROM ...";:GOSUB 2400:GOSUB 2000:GOTO 7042
 8500 ?SPC(32)"- good verifying !";:NS=2.5:GOSUB 2000:GOTO 1090
 8600 GOSUB 5500:?SPC(4)"+------\ /------+"SPC(25)"32x 8bit PROM:"
 8602 ?SPC(4)W$:?" 01-+ Y1"SPC(8)"Vcc +-16";
 8604 ?SPC(17)"74188    74S288    82S123":?SPC(4)"|"SPC(9)"__ __ |"
 8606 ?" 02-+ Y2"SPC(6)"CS/EN +-15"SPC(4)"Vcc:";
 8608 ?SPC(19)"+5V":?SPC(4)W$
 8610 ?" 03-+ Y3"SPC(9)"E  +-14"SPC(4)"Icc:";
 8612 ?SPC(10)"60mA"SPC(5)"70mA"SPC(6)"95mA":?SPC(4)W$
 8614 ?" 04-+ Y4"SPC(9)"D  +-13"SPC(4)"Acces time:";
 8616 ?"  <50ns    <25ns     <20ns":?SPC(4)W$
 8618 ?" 05-+ Y5"SPC(9)"C  +-12"SPC(4)"max.Yout:";
 8620 ?SPC(14)"12.5mA":?SPC(4)W$
 8622 ?" 06-+ Y6"SPC(9)"B  +-11"SPC(4)"PGM pulse:";
 8624 ?SPC(13)"1-20ms":?SPC(4)W$
 8626 ?" 07-+ Y7"SPC(9)"A  +-10";:?SPC(19)"Open Collector Output"
 8627 ?SPC(4)W$
 8628 ?" 08-+ Gnd"SPC(8)"Y8 +-09";"    Russian version: K155RE3"
 8630 ?SPC(4)W$:?SPC(4)"+---------------+":GOTO 7046
 8700 ?:?" Now it's time to start capturing text";:GOSUB 8850
 8702 GOSUB 8990
 8706 ?:?" Rows"K$" generator:":?:I=PD:L=0
 8708 ?"9000 C$=";CHR$(34);C$;CHR$(34);":ID=32:RETURN"
 8710 ?"9001"K$;:GOSUB 8970:?"9002"K$;:GOSUB 8970
 8712 ?"9003"K$;:GOSUB 8970:?"9004"K$;:GOSUB 8970
 8714 FOR G=PD TO PD+31:Q=PEEK(G):L=L+Q:NEXT
 8716 ?"9005 CRC="L":RETURN:REM CRC(dec!)":?:GOTO 8800
 8776 GOSUB 4100:GOSUB 9005:IF L<>CRC THEN 8900
 8777 IF L=0 THEN 8780
 8778 GOSUB 2500:?SPC(18)X$;"Valid"K$" in memory ! CRC="CRC;
 8779 GOSUB 2990:GOTO 8781
 8780 GOSUB 2300
 8781 ?" ";:FOR F=2 TO 78:?"-";:NEXT:GOSUB 2990:RETURN
 8800 ?" Save this"K$" rows in the specified positions"
 8802 ?SPC(8)"and then run the program again !"
 8804 ?:?SPC(8)"You can now stop capture text to"
 8805 ?SPC(11)"the file";:GOSUB 8850:FG=1:GOTO 7046
 8850 ?" in HyperTerminal.":RETURN
 8900 REM ?CHR$(12);
 8901 ?"Problem ...":?"Bad verification result or ID"
 8904 ?SPC(5)"difference in:":?"  computer"SPC(7)K$
 8905 ?SPC(3)K$;SPC(10)"rows":?SPC(4)"CRC:   < >    CRC:"
 8906 ?SPC(4)L;TAB(18)CRC:?SPC(9)"ID ="ID:END
 8970 FOR G=I TO I+6:?PEEK(G)",";:NEXT:?PEEK(I+7):I=I+8:RETURN
 8990 ?" Press C to continue ...";:INPUT A$:IF A$<>"C" THEN 8990
 8992 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 !

- - - - - - - - - - - - - - - - - - - - - - - - - -

Keď som túto programovú verziu dokončil tak ma napadlo že by bolo dobré dostať všetky verzie x-talov pod jednu strechu (teda všetko v jednom) - ak sa zadarí tak výsledok uvidíte na Silvestra - mám na takúto úpravu programu ešte celý týždeň ...

___________________________________________________________

Info:

Tento článok bol počas jeho tvorby nedopatrením na istý čas uvoľnený na web už dňa 01.10.2023, teda ešte počas jeho zásadnej tvorby - program pritom nebol dotiahnutý do finálnej fázy, takže tomu kto sa v tom čase k nemu na stránke dostal sa zhlboka ospravedlňujem ... proste museli ste si počkať do Vianoc, otestovanie programu a aplikácia niektorých úprav je vec ktorá nejaký čas zaberie. Takže - hotovo a dnes to ide do sveta. Funkčnosť programu bola overená napálením správneho obsahu do niekoľkých kusov PROM 74188.

_________________________________________________________________________________

V uvedenom odkaze sú uverejnené všetky vydané verzie programového vybavenia pre programátor PROM 74188:

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

___________________________________________________________

Vaše hodnotenie, Rate post:

12_2023 Blog, Notes.

By Administrator at decembra 24, 2023 09:00
Filed Under: Blog

24.12.2023

Vianočná programová verzia pre programátor PROM 74188:

SBC6502 - 69 - PROM 74188 - program ver.10.s(pecial).

____________________________________________________

 

Všetkým čitateľom želám pekné Vianoce a všetko dobré do Nového roku:

 

PF ŠNR 2024 ...

Laughing

_____________________________________________________________

31.12.2023

Záverečná verzia programu pre programátor PROM 74188 (AllInOne) t.j. všetky typy x-talov sú v jednom programe:

SBC6502 - 70 - PROM 74188 - program ver.1.11.(All In One).

_________

"Koncoročná" poznámka:

Ako vidieť vyzerá to tak že som úplne na blog nezanevrel a sem-tam niečo ešte pridávam, rozhodne som zmenšil tempo pridávania článkov, prospieva mi to. Takže je dosť pravdepodobné že ešte nejaké veci pribudnú aj nasledujúci rok ... uvidím. Teraz si určite dám dlhšiu pauzu.

_____________________________________________________________

Vaše hodnotenie, Rate post:

SBC6809 - CoCo books. Part11.

By Administrator at novembra 25, 2023 17:36
Filed Under: SBC8085-NCB85

PDF ohľadne Coco, hlavne je to o príkazoch jazyka Basic a samozrejme aj o inom.


 

Je to v jednom väčšom (71.8MByte), zazipovanom súbore:

Coco.zip

______________________________________________________

Vaše hodnotenie, Rate post:

PBI externý dekodér D5xxh - !CCTL. Atari 800XL.

By Administrator at novembra 21, 2023 09:30
Filed Under: Atari

Ak potrebujete pripojiť čip 8255 (8255A) k malému Atari tak existuje viacero možností.

 

Najprv nasleduje odkaz na pôvodné zapojenie ktoré som uverejnil pre pripojenie 8255(A) cez slot pre cartridge a je tam aj verzia ktorá ráta zo zabudovaním interface priamo do Atari:

http://blog.3b2.sk/igi/post/ATARI-interface-8255.aspx

(toto by nás malo priviesť do danej problematiky).

 

Dnes si pozrieme pripojenie cez PBI port, t.j. cez zadný konektor počítača Atari 800XL (U počítačov Atari 800XE a Atari 130XE je to iné - vďaka inej konštrukcii je tam signál !CCTL priamo už k dispozícii).


Základný rozdiel je v tom, že v slote pre cartridge máme už priamo potrebný signál !CCTL t.j. kde sa adresuje priestor D5xxh, toto na zadnom PBI konektore nemáme - a preto si tento signál potrebujeme nanovo "vyrobiť". (!=aktívne v nule)

Ak potrebujeme vytvoriť adresáciu uvedeného priestoru na externom výstupe PBI zbernice tak je tu jedno pekné zapojenie ktoré bolo pred časom uverejnené na poľských Atari stránkach:


PBI dekodér D1xx  a D5xx - !CCTL, ostatná adresácia viď ďalší text.

Zapojenie prevzaté z:  www.atari.org.pl



Ako vidieť potrebujeme na to použiť 2 čipy - 74HCT00 (74LS00) a 74HCT138 (74LS138). Na obrázku sú použité čipy HCT, ale v tomto zapojení to funguje aj s čipmi uvedenými v zátvorke, HCT rada je rýchlejšia, iný rozdiel tam nie je - v dnešnej dobe skôr zoženiete HCT čipy ako LS radu - záleží na tom čo máte doma k dispozícii. (Označenie čipov ako U1 a U3 je prevzaté.) Na dekódovanie je použitých 8 horných adresných vodičov - A15÷A8, čip 74xx00 robí pomocnú logiku pre dekodér. Už len dodám klasiku - nezabudnite ku každému čipu pridať keramiku 100nF na filtráciu jeho napájania, je to dôležité pre správnu činnosť obvodov.

Pozor - pre plnú súčinnosť s obvodom 8255A ešte treba použiť ďalší t.j. tretí čip, napríklad veľmi známe zapojenie 74LS00 ktorý príslušne upraví signály RD a WR. Zapojenie s čipom 74LS00 je uverejnené v odkaze na začiatku tohoto článku, využíva tri hradlá zo štyroch (prvý obrázok v odkaze, štvrté hradlo slúži ako invertor pre signál RESET (druhý obrázok v odkaze).

Ak sa pozriete bližšie na zapojenie tak tu máme k dispozícii dekódovanie v rozsahoch:


D000h
÷D0FFh
D100h
÷D1FFh
D200h
÷D2FFh
D300h
÷D3FFh
D400h
÷D4FFh
D500h
÷D5FFh  /!CCTL
D600h
÷D6FFh
D700h
÷D7FFh


t.j. adresácia "ide" pekne po násobkoch 256byte.


Niektoré tu uvedené adresy používa systém a tak nám "zostáva" voľný rozsah na použitie iba D100
÷D1FFh a D500÷D5FFh (toto je !CCTL). Tieto dva rozsahy by mali postačovať na naše experimenty.


Tu len dodatok - rozsah D100÷D1FFh používa Atari 1090, ale to asi v našich končinách nie je rozšírené, takže toto by nás nemalo pri našom použití nejako zásadne obmedziť. Dtto sa týka D600÷D6FFh a D700÷D7FFh.


PBI mapovanie na D1xx.

Adresný priestor CPU od D600H do D7FFH je vyhradený pre zariadenia EBI nasledovne:
Veľkosť rozsahu zariadenia:
------ ----- ----
D0 D600H-D61FH 32 byte
D1 D620H-D63FH 32 byte
D2 D640H-D65FH 32 byte
D3 D660H-D67FH 32 byte
D4 D680H-D69FH 32 byte
D5 D6A0H-D6BFH 32 byte
D6 D6C0H-D6DFH 32 byte
D7 D6E0H-D6FFHRI  

Región D6E0H-D6FFH 3 je vyhradený pre D6FF07 pre použitie od 3 do D6FFH. Adresný priestor CPU od D600H do D7FFH je vždy mapovaný na EBI anevyžaduje protokol EXTENB/EXTSEL'.

 

Takže - môžeme používať rozsahy D600÷D6FFh a D700÷D7FFh - len tu pozor, tieto priestory už využíva operačný systém QMEG a ak ich použijeme vtedy musíme mať prepnuté na pôvodný operačný systém - takže ak sa dá, radšej sa tomuto pamäťovému priestoru na osobné použitie vyhýbajte.

 

Táto adresácia sa dá vytvoriť aj inak, ale o tom zase niekedy inokedy - záleží to na tom či potrebné veci zoženiem, pretože by som to rád postavil (písať o niečom čo nemám ma až tak nebaví) a potom by som o tom napísal zase pár riadkov.

_____________________________________________________

Dodatok:

Uvedené zapojenie samozrejme priamo funguje aj na Atari 600XL.

(Na Atari 600XL je na PBI zbernici priamo vyvedené aj napájanie 5V.)

_____________________________________________________

Vaše hodnotenie, Rate post:

Programátor PREPROM-02aLV. Programmer PREPROM-02aLV. Doplnky. Part5.

By Administrator at novembra 15, 2023 11:33
Filed Under: Non-Atari

Môj "vozový" park programátorov od firmy ELNEC sa pomaly ale isto rozrastá. Mimo toho že mi pribudol ďalší programátor PREPROM_02aLV tak mám k dispozícii k nemu aj ďalšie veci (moduly) čo som doteraz nemal. Cena sa mi zdala primeraná a tak som do toho šiel. Dnes to bude taká malá malá obrazová galéria.

 

Programátory PREPROM-02aLV, môj starší kus je vľavo, napravo je "nový".

Programátor je o "chlp"v lepšom stave ako ten prvý, fungujú obidva.


Programátor PREPROM-02aLV, starší kus. Tu je bočnica ešte rovnakej farby ako

vrchný kryt.


Programátor PREPROM-02aLV, starší kus.


Programátor PREPROM-02aLV, "novší" kus.

Zmenila sa farba bočníc spodného dielu.


Programátor PREPROM-02aLV, "novší" kus. 


A teraz mám ďalší napájací zdroj pre programátory rady PREPROM-02(aLV).

Jedná sa o nestabilizovaný zdroj, naprázdno dodáva na výstupe 17.12V/DC.


Modul prevodu 28 pin DIL↔PLCC 32pin.


Modul prevodu 32 pin DIL↔PLCC 32pin.

 

Nejaký ten pokec na danú tému a to priamo od fy. Elnec:

Konvertor DIL_PLCC.pdf (1,31 mb)


Nasleduje diagnostic POD type I - ten som už popísal v 1.časti.


Diagnostic POD type I - spodná strana.


Modul 2051 pre programovanie mikroprocesorov rady 89C2051, presnejšie 89C1051,

89C2051 a 89C4051. Takže na toto treba mať k dispozícii  extra modul ...


Modul 2051, spodná strana.

 

Modul MCU1-LV, je známy aj pod iným názvom "modul PIC-LV" - programuje všetky

MICROCHIP PIC, od 8÷40 pinov, rodina 12Cxxx, 14Cxxx a 16Cxxx.


MCU1-LV modul, spodná strana.

 

Originálnu príručku som už neskenoval (tá moja má rok vydania 2002), je k dispozícii v 1.časti (pdf súbor) tak to tu nebudem dupľovať. Začínam mať pocit že som na prácu zo staršími Eprom pamäťami už celkom dobre zabezpečený ...

_____________________________________________________________

Vaše hodnotenie, Rate post:

The Micro UK101 - COMPUKIT UK101, basic program - Battleship. Part-7.

By Administrator at novembra 11, 2023 09:18
Filed Under: SBC8085-NCB85

Je už urobená hra Battleship SBC6502 pre SBC6502 a urobil som konverziu tejto hry aj pre SBC6809 - Battleship SBC6809 - tak som si povedal treba urobiť konverziu hry aj pre Micro UK101. Tu som sa  už pokúsil dodržať zobrazenie ako pri SBC6809, generovanie RND je pritom rovnaké ako u SBC6502, ASCII znaky na začiatku nevie správne zobraziť taktiež, o zábavu bolo postarané - ale táto konverzia bola najľahšia. Čakacie slučky v programe sú urobené pre x-tal 4.000MHz, bez zmeny budú vyhovovať aj pre použitie x-talu  4.9152MHz.

 

Úvodná obrazovka.


Tiež sa tu počíta s tým že na Micro UK101 že je dostupná RAM o veľkosti 32kB, je to dané pevnými adresami pre dvojrozmerné pole. U týchto malých SBC je 32kB RAM nepísaným štandartom takže tu nemáme  problém s veľkosťou RAM.


Vzhľad hracieho poľa je identický ako u SBC6809.

S_battle_4_000MHz_UK101.txt (5,23 kb)


Takže teraz sú urobené 3 verzie tej istej hry - a to pre SBC6502, SBC6809 a Micro UK101, Basic je na všetkých troch spomenutých SBC ale mierne odlišný a tak boli potrebné drobné úpravy vždy pre konkrétny typ. Čo mierne prekvapuje je to, že SBC6502 a Micro UK101 používajú rovnakú verziu Basic-u a pritom nie sú na 100% kompatibilné, ale napriek tomu hra teraz funguje bez problémov na všetkých spomenutých troch typoch SBC.

 

Micro UK101

____________________________________________________________

Listing programe pre Micro UK101:

 

 1000 CLEAR:POKE 15,80:? CHR$(12):?:A=31000:B=124:REM 05.11.2023
 1160 ?:?:? TAB(24)"- Micro UK101 - Battleships game -"
 1170 ? TAB(22);"by Igi(c)2023 - http://blog.3b2.sk/igi";
 1172 GOSUB 9999
 1200 ? CHR$(12):GOSUB 2500:GOSUB 2700
 1400 ?:? CHR$(12);
 1410 ? TAB(5)"+- 20 battleships in this game,you have to destroy";
 1415 ? " at least 14 ships -+"
 1417 ? TAB(4)"+-------------+--";
 1420 ? "+....X....1111111111222222222233333333334";
 1422 ? "+-----------+"
 1425 ? TAB(18)"+Y +1234567890123456789012345678901234567890+"
 1430 GOSUB 5100
 1700 A=31000:GOSUB 2900:A=31050:GOSUB 2900:A=31100:GOSUB 2900
 1706 A=31150:GOSUB 2900:A=31200:GOSUB 2900:A=31250:GOSUB 2900
 1714 A=31300:GOSUB 2900:A=31350:GOSUB 2900:A=31400:GOSUB 2900
 1720 A=31450:GOSUB 2900:A=31500:GOSUB 2900:A=31550:GOSUB 2900
 1726 A=31600:GOSUB 2900:A=31650:GOSUB 2900
 1800 GOSUB 5100
 1805 ? TAB(18)"+Score:";:IF SC<10 THEN ?" "SC;
 1820 IF SC=>10 THEN ? SC;
 1825 ? TAB(46)"Gun shots: "GS;
 1830 IF GS<10 THEN ? "  +"
 1835 IF GS=>10 AND GS <100 THEN ? " +"
 1840 IF GS=>100 THEN ? "+"
 1845 ? TAB(18)"+------------- X or Y=0 -> End -------------+"
 1850 IF SC=14 THEN 2940
 1880 ? TAB(28)"Your choice X (1-40)";:INPUT X
 1885 IF X=0 THEN 2950
 1890 IF X>40 THEN GOSUB 9988:GOTO 1400
 1900 ? TAB(28)"Your choice Y (1-14)";:INPUT Y
 1905 IF Y=0 THEN 2950
 1910 IF Y>14 THEN GOSUB 9988:GOTO 1400
 2000 T=31700:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2002 T=31702:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2004 T=31704:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2006 T=31706:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2008 T=31708:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2010 T=31710:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2012 T=31712:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2014 T=31714:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2016 T=31716:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2018 T=31718:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2020 T=31720:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2022 T=31722:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2024 T=31724:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2026 T=31726:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2028 T=31728:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2030 T=31730:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2032 T=31732:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2034 T=31734:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2036 T=31736:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2038 T=31738:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000  
 2050 GS=GS+1
 2055 IF X<>X1 OR Y<>Y1 THEN 4000
 2250 C=C+1:?C;:FOR F=A+4 TO A+43:POKE F,46:NEXT F:RETURN
 2500 GS=0:SC=0:C=0:?"I am generating a line no.:"
 2552 A=31000:GOSUB 2250
 2555 POKE A,B:POKE A+1,32:POKE A+2,49:POKE A+3,B:POKE A+44,B
 2560 A=31050:GOSUB 2250
 2562 POKE A,B:POKE A+1,32:POKE A+2,50:POKE A+3,B:POKE A+44,B
 2570 A=31100:GOSUB 2250
 2572 POKE A,B:POKE A+1,32:POKE A+2,51:POKE A+3,B:POKE A+44,B
 2580 A=31150:GOSUB 2250
 2582 POKE A,B:POKE A+1,32:POKE A+2,52:POKE A+3,B:POKE A+44,B
 2590 A=31200:GOSUB 2250
 2592 POKE A,B:POKE A+1,32:POKE A+2,53:POKE A+3,B:POKE A+44,B
 2600 A=31250:GOSUB 2250
 2602 POKE A,B:POKE A+1,32:POKE A+2,54:POKE A+3,B:POKE A+44,B
 2610 A=31300:GOSUB 2250
 2612 POKE A,B:POKE A+1,32:POKE A+2,55:POKE A+3,B:POKE A+44,B
 2620 A=31350:GOSUB 2250
 2622 POKE A,B:POKE A+1,32:POKE A+2,56:POKE A+3,B:POKE A+44,B
 2630 A=31400:GOSUB 2250
 2632 POKE A,B:POKE A+1,32:POKE A+2,57:POKE A+3,B:POKE A+44,B
 2640 A=31450:GOSUB 2250
 2642 POKE A,B:POKE A+1,49:POKE A+2,48:POKE A+3,B:POKE A+44,B
 2650 A=31500:GOSUB 2250
 2652 POKE A,B:POKE A+1,49:POKE A+2,49:POKE A+3,B:POKE A+44,B
 2660 A=31550:GOSUB 2250
 2662 POKE A,B:POKE A+1,49:POKE A+2,50:POKE A+3,B:POKE A+44,B
 2670 A=31600:GOSUB 2250
 2672 POKE A,B:POKE A+1,49:POKE A+2,51:POKE A+3,B:POKE A+44,B
 2680 A=31650:GOSUB 2250
 2682 POKE A,B:POKE A+1,49:POKE A+2,52:POKE A+3,B:POKE A+44,B
 2684 ?:RETURN
 2700 Q=31700:?:?"I am generating 20 battleships ..."
 2705 FOR I=1 TO 20
 2710 D=INT(RND(1)*14):D=D+1:POKE Q,D
 2720 E=INT(RND(1)*40):E=E+1:POKE Q+1,E
 2725 Q=Q+2:? I;:FOR R=0 TO 650:NEXT:NEXT:RETURN
 2800 Y1=PEEK(T):X1=PEEK(T+1):RETURN
 2900 ? TAB(18);:FOR F=A TO A+44:? CHR$(PEEK(F));:NEXT F:?
 2905 RETURN
 2940 ?TAB(16)"Congratulations! You destroyed the enemy's fleet."
 2945 GOTO 2955
 2950 ? CHR$(12)
 2955 ?:?TAB(28)"(N)ew game or (Q)uit:";:INPUT A$
 2960 IF A$="N" THEN 1200
 2965 IF A$="Q" THEN END
 2970 GOTO 2950
 3000 ?TAB(35)"Bingo !!!";:GOSUB 9998:SC=SC+1:OP=134:GOSUB 5000
 3080 GS=GS+1:GOTO 1400
 4000 ?TAB(36)"Miss !!!";:GOSUB 9998:OP=120:GOSUB 5000:GOTO 1400
 5000 IF Y=1 THEN POKE (31004+X-1),OP
 5010 IF Y=2 THEN POKE (31054+X-1),OP
 5015 IF Y=3 THEN POKE (31104+X-1),OP
 5025 IF Y=4 THEN POKE (31154+X-1),OP
 5030 IF Y=5 THEN POKE (31204+X-1),OP
 5035 IF Y=6 THEN POKE (31254+X-1),OP
 5040 IF Y=7 THEN POKE (31304+X-1),OP
 5045 IF Y=8 THEN POKE (31354+X-1),OP
 5050 IF Y=9 THEN POKE (31404+X-1),OP
 5055 IF Y=10 THEN POKE (31454+X-1),OP
 5060 IF Y=11 THEN POKE (31504+X-1),OP
 5065 IF Y=12 THEN POKE (31554+X-1),OP
 5070 IF Y=13 THEN POKE (31604+X-1),OP
 5075 IF Y=14 THEN POKE (31654+X-1),OP
 5080 RETURN
 5100 ? TAB(18)"+-------------------------------------------+"
 5102 RETURN
 9988 ?TAB(37)"Error ...";:GOSUB 9998:RETURN
 9998 FOR F=0 TO 6000:NEXT:RETURN
 9999 FOR F=0 TO 20000:NEXT:RETURN

____________________________________________________________

Upozornenie:


Zobrazenie krížiku platí pre nastavenie fontu v Hypertermináli, kedy je jeho okno zmenšené - písmo Lucida Console, veľkosť písma 8, osobne používam najradšej túto veľkosť Hyperterminálového okna:

 

 

Ak ponecháme základné nastavenie fontu čo je písmo Terminal, veľkosť písma 14:

 

 

tak musíme v programovom riadku číslo 3000 urobiť zmenu:

pôvodný text

 3000 ?SPC(35)"Bingo !!!";:GOSUB 9998:SC=SC+1:OP=134:GOSUB 5000

nahradíme:

 3000 ?SPC(35)"Bingo !!!";:GOSUB 9998:SC=SC+1:OP=127:GOSUB 5000

Čiže je tu zmena v premennej OP - po tejto zmene sa zobrazí namiesto krížiku pri zásahu lodička , ak sa zmena neprevedie bude sa zobrazovať iný, vzhľadom nie vhodný  znak. Toto samozrejme platí aj v opačnom garde. Je to dané tým, že uvedené dva fonty používajú mierne odlišnú znakovú sadu.

______________________________________________________

Vaše hodnotenie, Rate post:

SBC6809 - Basic game: Battleships. Part-10.

By Administrator at novembra 10, 2023 08:08
Filed Under: SBC8085-NCB85

Keď som napísal hru Battleship pre SBC6502 tak som si povedal - musí to priamo fungovať aj pre SBC6809. Chyba lávky, ako obyčajne ak si myslím že niečo bude hodne jednoduché tak som sa zase mýlil. Ako sa ukázalo - nedala sa hra napísaná pre SBC6502 priamo spustiť aj na SBC6809, niektoré ASCII znaky to z nejakých príčin čiastočne ignoruje a tak som musel urobiť čiastočnú prerábku /konverziu/ tejto hry - vďaka tomu tu "odpadla" úvodná ASCII obrazovka lode. Pri ďalšom som zistil že tiež generovanie RND vyžadovalo v sebe urobiť zmenu. Ďalšia vec - SBC6809 nepozná príkaz SPC(číslo), čiže som ho všade musel nahradiť príkazom TAB(číslo). Riadky v programe som chcel "zahustiť", boli by podstatne dlhšie ako pri SBC6502, pretože toto SBC6809 pri písaní programu dovoľuje, teda obsahy riadkov by boli extrémne dlhé, parádne to môže skrátiť zápis, na druhú stranu je to potom na úkor prehľadnosti, rozhodne sa to zle číta v terminálovom okne, takže som zostal pri pôvodnej dĺžke riadkov. Na druhú stranu - je tu len jedna verzia programu, pretože procesor 6809 beží na 1.8432MHz a teda tu nejaké zmeny clocku príliš nehrozia. Program naďalej ráta s 32kB RAM, je to dané umiestnením dvojrozmerného poľa v RAM.

No a čo dodať na záver? - teraz tomu síce chýba efektná úvodná obrazovka ale program funguje.


Jednoduchá úvodná obrazovka.

 

Aj hracie pole vďaka neschopnosti "tlačiť" niektoré znaky na obrazovku je pozmenené

a tedy prišlo k úprave vzhľadu hracej plochy.


Síce viem tam tie znaky dostať aj inakším spôsobom, ale bolo by to zbytočne zložité a tak som sa rozhodol hru nekomplikovať a vyriešil som to tak ako to je teraz. V hracom poli je to iné, tam sa zapisuje pomocou POKE priamo do RAM, tam to ide jednoduchšie a teda tam je problém na 100% vyriešený. Vyznať sa v tom dá - a hrať sa to dá tak isto. Môžem skonštatovať že teraz aj SBC6809 má funkčnú konverziu uvedenej hry.

S_battle_1_8432MHz_SBC6809.txt (5,23 kb)


SBC6809

______________________________________________________

12.11.2023

Pre tých ktorí majú radi dlhé riadky ktoré umožňuje zápis v  SBC6809 ... je tu hra uložená aj v tomto formáte, aspoň som to skúsil, funguje tak isto:

S_battle_1_8432MHz_SBC6809_long_rows.txt (4,95 kb)

(Pritom sa tu ani zďaleka nevyužíva plná dĺžka programového riadku - je to až 250 znakov.)

____________________________________________________________

Listing programu pre SBC6809:

 

 1000 CLEAR:POKE 15,80:? CHR$(12):?:A=31000:B=124:REM 05.11.2023
 1160 ?:?:? TAB(26)"- SBC6809 - Battleships game -"
 1170 ? TAB(22);"by Igi(c)2023 - http://blog.3b2.sk/igi";
 1172 GOSUB 9999
 1200 ? CHR$(12):GOSUB 2500:GOSUB 2700
 1400 ?:? CHR$(12);
 1410 ? TAB(5)"+- 20 battleships in this game,you have to destroy";
 1415 ? " at least 14 ships -+"
 1417 ? TAB(4)"+-------------+--";
 1420 ? "+....X....1111111111222222222233333333334";
 1422 ? "+-----------+"
 1425 ? TAB(18)"+Y +1234567890123456789012345678901234567890+"
 1430 GOSUB 5100
 1700 A=31000:GOSUB 2900:A=31050:GOSUB 2900:A=31100:GOSUB 2900
 1706 A=31150:GOSUB 2900:A=31200:GOSUB 2900:A=31250:GOSUB 2900
 1714 A=31300:GOSUB 2900:A=31350:GOSUB 2900:A=31400:GOSUB 2900
 1720 A=31450:GOSUB 2900:A=31500:GOSUB 2900:A=31550:GOSUB 2900
 1726 A=31600:GOSUB 2900:A=31650:GOSUB 2900
 1800 GOSUB 5100
 1805 ? TAB(18)"+Score:";:IF SC<10 THEN ?" "SC;
 1820 IF SC=>10 THEN ? SC;
 1825 ? TAB(17)"Gun shots: "GS;
 1830 IF GS<10 THEN ? "  +"
 1835 IF GS=>10 AND GS <100 THEN ? " +"
 1840 IF GS=>100 THEN ? "+"
 1845 ? TAB(18)"+------------- X or Y=0 -> End -------------+"
 1850 IF SC=14 THEN 2940
 1880 ? TAB(28)"Your choice X (1-40)";:INPUT X
 1885 IF X=0 THEN 2950
 1890 IF X>40 THEN GOSUB 9988:GOTO 1400
 1900 ? TAB(28)"Your choice Y (1-14)";:INPUT Y
 1905 IF Y=0 THEN 2950
 1910 IF Y>14 THEN GOSUB 9988:GOTO 1400
 2000 T=31700:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2002 T=31702:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2004 T=31704:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2006 T=31706:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2008 T=31708:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2010 T=31710:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2012 T=31712:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2014 T=31714:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2016 T=31716:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2018 T=31718:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2020 T=31720:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2022 T=31722:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2024 T=31724:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2026 T=31726:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2028 T=31728:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2030 T=31730:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2032 T=31732:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2034 T=31734:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2036 T=31736:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2038 T=31738:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000  
 2050 GS=GS+1
 2055 IF X<>X1 OR Y<>Y1 THEN 4000
 2250 C=C+1:?C;:FOR F=A+4 TO A+43:POKE F,46:NEXT F:RETURN
 2500 GS=0:SC=0:C=0:?"I am generating a line no.:"
 2552 A=31000:GOSUB 2250
 2555 POKE A,B:POKE A+1,32:POKE A+2,49:POKE A+3,B:POKE A+44,B
 2560 A=31050:GOSUB 2250
 2562 POKE A,B:POKE A+1,32:POKE A+2,50:POKE A+3,B:POKE A+44,B
 2570 A=31100:GOSUB 2250
 2572 POKE A,B:POKE A+1,32:POKE A+2,51:POKE A+3,B:POKE A+44,B
 2580 A=31150:GOSUB 2250
 2582 POKE A,B:POKE A+1,32:POKE A+2,52:POKE A+3,B:POKE A+44,B
 2590 A=31200:GOSUB 2250
 2592 POKE A,B:POKE A+1,32:POKE A+2,53:POKE A+3,B:POKE A+44,B
 2600 A=31250:GOSUB 2250
 2602 POKE A,B:POKE A+1,32:POKE A+2,54:POKE A+3,B:POKE A+44,B
 2610 A=31300:GOSUB 2250
 2612 POKE A,B:POKE A+1,32:POKE A+2,55:POKE A+3,B:POKE A+44,B
 2620 A=31350:GOSUB 2250
 2622 POKE A,B:POKE A+1,32:POKE A+2,56:POKE A+3,B:POKE A+44,B
 2630 A=31400:GOSUB 2250
 2632 POKE A,B:POKE A+1,32:POKE A+2,57:POKE A+3,B:POKE A+44,B
 2640 A=31450:GOSUB 2250
 2642 POKE A,B:POKE A+1,49:POKE A+2,48:POKE A+3,B:POKE A+44,B
 2650 A=31500:GOSUB 2250
 2652 POKE A,B:POKE A+1,49:POKE A+2,49:POKE A+3,B:POKE A+44,B
 2660 A=31550:GOSUB 2250
 2662 POKE A,B:POKE A+1,49:POKE A+2,50:POKE A+3,B:POKE A+44,B
 2670 A=31600:GOSUB 2250
 2672 POKE A,B:POKE A+1,49:POKE A+2,51:POKE A+3,B:POKE A+44,B
 2680 A=31650:GOSUB 2250
 2682 POKE A,B:POKE A+1,49:POKE A+2,52:POKE A+3,B:POKE A+44,B
 2684 ?:RETURN
 2700 Q=31700:?:?"I am generating 20 battleships ..."
 2705 FOR I=1 TO 20
 2710 D=INT(RND(0)*14):D=D+1:POKE Q,D
 2720 E=INT(RND(0)*40):E=E+1:POKE Q+1,E
 2725 Q=Q+2:? I;:FOR R=0 TO 300:NEXT:NEXT:RETURN
 2800 Y1=PEEK(T):X1=PEEK(T+1):RETURN
 2900 ? TAB(18);:FOR F=A TO A+44:? CHR$(PEEK(F));:NEXT F:?
 2905 RETURN
 2940 ?TAB(16)"Congratulations! You destroyed the enemy's fleet."
 2945 GOTO 2955
 2950 ? CHR$(12)
 2955 ?:?TAB(28)"(N)ew game or (Q)uit:";:INPUT A$
 2960 IF A$="N" THEN 1200
 2965 IF A$="Q" THEN END
 2970 GOTO 2950
 3000 ?TAB(35)"Bingo !!!";:GOSUB 9998:SC=SC+1:OP=134:GOSUB 5000
 3080 GS=GS+1:GOTO 1400
 4000 ?TAB(36)"Miss !!!";:GOSUB 9998:OP=120:GOSUB 5000:GOTO 1400
 5000 IF Y=1 THEN POKE (31004+X-1),OP
 5010 IF Y=2 THEN POKE (31054+X-1),OP
 5015 IF Y=3 THEN POKE (31104+X-1),OP
 5025 IF Y=4 THEN POKE (31154+X-1),OP
 5030 IF Y=5 THEN POKE (31204+X-1),OP
 5035 IF Y=6 THEN POKE (31254+X-1),OP
 5040 IF Y=7 THEN POKE (31304+X-1),OP
 5045 IF Y=8 THEN POKE (31354+X-1),OP
 5050 IF Y=9 THEN POKE (31404+X-1),OP
 5055 IF Y=10 THEN POKE (31454+X-1),OP
 5060 IF Y=11 THEN POKE (31504+X-1),OP
 5065 IF Y=12 THEN POKE (31554+X-1),OP
 5070 IF Y=13 THEN POKE (31604+X-1),OP
 5075 IF Y=14 THEN POKE (31654+X-1),OP
 5080 RETURN
 5100 ? TAB(18)"+-------------------------------------------+"
 5102 RETURN
 9988 ?TAB(37)"Error ...";:GOSUB 9998:RETURN
 9998 FOR F=0 TO 2255:NEXT:RETURN
 9999 FOR F=0 TO 7518:NEXT:RETURN

_____________________________________________________________

Upozornenie:


Zobrazenie krížiku platí pre nastavenie fontu v Hypertermináli, kedy je jeho okno zmenšené - písmo Lucida Console, veľkosť písma 8, osobne používam najradšej túto veľkosť Hyperterminálového okna:

 

 

Ak ponecháme základné nastavenie fontu čo je písmo Terminal, veľkosť písma 14:

 

 

tak musíme v programovom riadku číslo 3000 urobiť zmenu:

pôvodný text

 3000 ?SPC(35)"Bingo !!!";:GOSUB 9998:SC=SC+1:OP=134:GOSUB 5000

nahradíme:

 3000 ?SPC(35)"Bingo !!!";:GOSUB 9998:SC=SC+1:OP=127:GOSUB 5000

Čiže je tu zmena v premennej OP - po tejto zmene sa zobrazí namiesto krížiku pri zásahu lodička , ak sa zmena neprevedie bude sa zobrazovať iný, vzhľadom nie vhodný  znak. Toto samozrejme platí aj v opačnom garde. Je to dané tým, že uvedené dva fonty používajú mierne odlišnú znakovú sadu.

 

____________________________________________________________

Vaše hodnotenie, Rate post:

SBC6502 - 68 - basic programs - "Battleships".

By Administrator at novembra 07, 2023 13:25
Filed Under: SBC6502

Tak na tento program som sa chystal dlho, veľmi dlho, úvodnú hlavičku som vyrobil v roku 2020, rozvrhol som nejaké schémy ako na to, časti programu som aj napísal  - ale stále to bolo akosi priveľmi komplikované a tak som to radšej založil do šuplíku a spalo to tam doteraz - a to ešte pred pár dňami. Teraz som vzal zo starého, rozrobeného a nedokončeného programu iba jeho pôvodnú hlavičku, kompletne všetko ostatné som urobil a napísal odznova - a to po novom, celkom inak, program je napísaný pre SBC6502 s 32kB RAM (dané pevnou lokáciou adries tieňovej obrazovky v RAM). Nemyslím že by tie pevne nastavené lokácie v RAM nejako vadili, tých 32kB RAM na takýchto SBC je dnes dá sa povedať už nepísaným štandartom. Chcel som vyskúšať ako na to viem ísť "po vlastnej osi", takže nemal som (ani som nehľadal) žiadnu inšpiráciu z podobnej hry - a teda použité riešenie je naozaj jedinečné a nie je okopírované. Možno by stálo za to tu vyskúšať použiť v programe príkaz DIM, tu som to ale nepoužil, rozhodol som sa vytvoriť si potrebné dvojrozmerné hráčske pole priamo vo voľnej RAM, pripadalo mi to zábavnejšie pri písaní programu (a vďaka tomu je program aj o poznanie kratší).


 

 

Čo ma viedlo k napísaniu tejto hry? Nuž mimo iného je to dané aj tým že hier čo sa hrajú v terminálovom okne v dnešnej dobe akosi niet - nakoniec výpis pri štarte samotného SBC6502 uvádza rok 1977 ... (letí to ...) a zatiaľ som len preberal a konvertoval nejaké hry, už bolo načase nadlapať svoju vlastnú jednoduchú hru. Program spolupracuje s programom Hyperterminál pod Win, iný terminálový program som na spoluprácu netestoval. Pre mazanie obrazovky je použitý typický terminálový príkaz ? CHR$(12) namiesto príkazu CLS ktorý MS BASIC pre SBC6502 nemá.

Je tu jedna vlastnosť ktorá sa nedá obísť - tu totiž nie je možné prepisovať veci po celej obrazovke a návrat pozície kurzoru je možný len o pár znakov - a to tiež len obmedzene a teda pri potrebnej zmene je potom potrebné prepisovať celú obrazovku. Vo výsledku to znamenalo urobiť si v RAM pamäti tieňovú obrazovku a zmeny prevádzať v nej a až keď je tam prevedená zmena tak následne zmazať displej a potom to celé naraz nanovo vypísať na obrazovku terminálu. Je to síce také škrabanie sa za uchom opačnou rukou - ale na lepší systém ako na to som doteraz neprišiel (kto vie lepšie riešene - sem s ním !). Urobil som jednoduchú hru Battleships, kde sa snažíte na ploche 40 x 14 štvorčekov nájsť umiestnenie jednotlivých lodí a teda snažíte sa túto bojovú flotilu postupne likvidovať.

 

Čisté hracie pole.

 

Program vytvorí spomenuté hracie pole a potom do neho náhodne vygeneruje rozmiestnenie 20 bojových lodí nášho protivníka, našou úlohou je nájsť ich lokáciu. Pre základné zničenie nepriateľskej flotily postačuje zlikvidovať minimálne 14 lodí, potom je ich bojaschopnosť úplne ochromená. Vzhľadom k tomu že je tu k dispozícii celkove 560 možných lokácií tak o dlhú zábavu je postarané - a to nemusíme pritom ani nájsť všetky lode protivníka. Na displeji zadávame údaje o lokácii v poradí - najprv treba zadať os X (1÷40) a potom os Y (1÷14), povolený rozsah týchto hodnôt program kontroluje. Ak použijete v zadaní X alebo Y hodnotu 0 = koniec programu.

 

 

Na tomto obrázku som nechal nájsť všetkých 14 potrebných lodí (ako priamo na to - tak túto fintu neuvádzam), pekne však vidieť že sa skutočne jedná vždy o náhodné rozmiestnenie lodí protivníka a teda situáciu pri ich hľadaní nám počítač rozhodne neuľahčuje. Pozícia zničenej lode je značená krížikom - , nepoužité pole pri našom poľovaní je vyznačené bodkou  . , program počíta celkové skóre, tak isto počíta počet potrebných striel na dosiahnutie uvedeného skóre.

 

Takto to vyzerá priamo v hre - vidíme zásahy - a tak isto ak trafíme vedľa - x

 

Obmedzujúcim prvkom je tu maximálne použiteľné vertikálne rozlíšenie (dané terminálovým oknom), je k dispozícii iba 22 riadkov a teda musím si vystačiť s tým čo je k dispozícii. Komunikačné riadky pod poľom majú k dispozícii 3 riadky z 22 a sú tu maximálne využité, to potom stanovilo aj maximálny počet riadkov v osi Y na 14.

 

Program mám v 2 verziách,

jedna je pre x-tal 1.8432MHz:

S_battle_1_8432MHz.txt (6,47 kb)

druhá je pre x-tal 4.9152MHz:

S_battle_4_9152MHz.txt (6,47 kb)

 

 

Záver:

Medzi nami - vedel by som to hracie pole roztiahnuť a zväčšiť trebárs aj na 78 x 18 štvorčekov (to by už bolo 1404 pozícií na hľadanie), otázka je iná - nemám pocit že by to potom ešte niekoho bavilo, aj tak je to teraz už hodne zložité, to je jediný dôvod prečo som nešiel do extrému. Hra má pokiaľ možno baviť, nie otráviť.

No a keď som toto dokončil /hru som napísal v priebehu 2 dní/ som si povedal: "Skús previesť konverziu tohoto programu pre SBC6809 a tiež pre Micro UK101 ..., nemal by to byť problém." - ale o tom ako to dopadlo zase už niekedy inokedy.

____________________________________________________________

Ukážka - listing programu pre SBC6502 a x-tal 1.8432MHz:

 

 1000 CLEAR:POKE 15,80:? CHR$(12):?:A=31000:B=124:REM 05.11.2023
 1030 ? SPC(12)"    _           _   _   _           _     _ "       
 1032 ? SPC(12)"   | |         | | | | | |         | |   (_)"     
 1034 ? SPC(12)"   | |__   __ _| |_| |_| | ___  ___| |__  _ _ __  ___"
 1036 ? SPC(12)"   | '_ \ / _` | __| __| |/ _ \/ __| '_ \| | '_ \/ __|"
 1038 ? SPC(12)"   | |_) | (_| | |_| |_| |  __/\__ \ | | | | |_) \__ \"
 1040 ? SPC(12)"   |_.__/ \__,_|\__|\__|_|\___||___/_| |_|_| .__/|___/"
 1042 ? SPC(12)"                                           | | SBC6502"
 1044 ? SPC(12)"                                           |_|"
 1046 ? SPC(12)"                                )_("
 1048 ? SPC(12)"                         ________|_ "        
 1050 ? SPC(12)"             ______     /==========|   ___/"
 1052 ? SPC(12)"____   _____   [\\\]___/___________|__[///]    __/"
 1054 ? SPC(12)"\ o \____[\\]__/__________________________\___[//]___"
 1056 ? SPC(12)" \   2311     |__O__O__||__O__O__||__O__O__||__O__O__|"
 1058 ? SPC(12)"  \                                                 /"
 1060 ? SPC(12)"";:FOR F=1 TO 55:?CHR$(126);:NEXT:GOSUB 9998
 1065 FOR H=1 TO 5:? CHR$(8);:NEXT:? CHR$(94);:GOSUB 9998
 1070 FOR H=1 TO 4:GOSUB 9970:NEXT:? CHR$(8)CHR$(126)
 1170 ? TAB(22);"by Igi(c)2023 - http://blog.3b2.sk/igi";
 1172 GOSUB 9999
 1200 ? CHR$(12):GOSUB 2500:GOSUB 2700
 1400 ?:? CHR$(12);
 1410 ? SPC(5)"+- 20 battleships in this game,you have to destroy";
 1415 ? " at least 14 ships -+"
 1417 ? SPC(5)"+----------+    ";
 1420 ? "|X        1111111111222222222233333333334 ";
 1422 ? " +----------+"
 1425 ? SPC(16)"+-+ Y|1234567890123456789012345678901234567890 -+"
 1430 GOSUB 5100
 1700 A=31000:GOSUB 2900:A=31050:GOSUB 2900:A=31100:GOSUB 2900
 1706 A=31150:GOSUB 2900:A=31200:GOSUB 2900:A=31250:GOSUB 2900
 1714 A=31300:GOSUB 2900:A=31350:GOSUB 2900:A=31400:GOSUB 2900
 1720 A=31450:GOSUB 2900:A=31500:GOSUB 2900:A=31550:GOSUB 2900
 1726 A=31600:GOSUB 2900:A=31650:GOSUB 2900
 1800 GOSUB 5100
 1805 ? SPC(18)"|Score:";:IF SC<10 THEN ?" "SC;
 1820 IF SC=>10 THEN ? SC;
 1825 ? SPC(17)"Gun shots: "GS;
 1830 IF GS<10 THEN ? "  |"
 1835 IF GS=>10 AND GS <100 THEN ? " |"
 1840 IF GS=>100 THEN ? "|"
 1845 ? SPC(18)"+------------- X or Y=0 -> End -------------+"
 1850 IF SC=14 THEN 2940
 1880 ? SPC(28)"Your choice X (1-40)";:INPUT X
 1885 IF X=0 THEN 2950
 1890 IF X>40 THEN GOSUB 9988:GOTO 1400
 1900 ? SPC(28)"Your choice Y (1-14)";:INPUT Y
 1905 IF Y=0 THEN 2950
 1910 IF Y>14 THEN GOSUB 9988:GOTO 1400
 2000 T=31700:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2002 T=31702:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2004 T=31704:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2006 T=31706:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2008 T=31708:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2010 T=31710:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2012 T=31712:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2014 T=31714:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2016 T=31716:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2018 T=31718:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2020 T=31720:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2022 T=31722:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2024 T=31724:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2026 T=31726:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2028 T=31728:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2030 T=31730:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2032 T=31732:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2034 T=31734:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2036 T=31736:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000
 2038 T=31738:GOSUB 2800:IF X=X1 AND Y=Y1 THEN 3000  
 2050 GS=GS+1
 2055 IF X<>X1 OR Y<>Y1 THEN 4000
 2250 C=C+1:?C;:FOR F=A+4 TO A+43:POKE F,46:NEXT F:RETURN
 2500 GS=0:SC=0:C=0:?"I am generating a line no.:"
 2552 A=31000:GOSUB 2250
 2555 POKE A,B:POKE A+1,32:POKE A+2,49:POKE A+3,B:POKE A+44,B
 2560 A=31050:GOSUB 2250
 2562 POKE A,B:POKE A+1,32:POKE A+2,50:POKE A+3,B:POKE A+44,B
 2570 A=31100:GOSUB 2250
 2572 POKE A,B:POKE A+1,32:POKE A+2,51:POKE A+3,B:POKE A+44,B
 2580 A=31150:GOSUB 2250
 2582 POKE A,B:POKE A+1,32:POKE A+2,52:POKE A+3,B:POKE A+44,B
 2590 A=31200:GOSUB 2250
 2592 POKE A,B:POKE A+1,32:POKE A+2,53:POKE A+3,B:POKE A+44,B
 2600 A=31250:GOSUB 2250
 2602 POKE A,B:POKE A+1,32:POKE A+2,54:POKE A+3,B:POKE A+44,B
 2610 A=31300:GOSUB 2250
 2612 POKE A,B:POKE A+1,32:POKE A+2,55:POKE A+3,B:POKE A+44,B
 2620 A=31350:GOSUB 2250
 2622 POKE A,B:POKE A+1,32:POKE A+2,56:POKE A+3,B:POKE A+44,B
 2630 A=31400:GOSUB 2250
 2632 POKE A,B:POKE A+1,32:POKE A+2,57:POKE A+3,B:POKE A+44,B
 2640 A=31450:GOSUB 2250
 2642 POKE A,B:POKE A+1,49:POKE A+2,48:POKE A+3,B:POKE A+44,B
 2650 A=31500:GOSUB 2250
 2652 POKE A,B:POKE A+1,49:POKE A+2,49:POKE A+3,B:POKE A+44,B
 2660 A=31550:GOSUB 2250
 2662 POKE A,B:POKE A+1,49:POKE A+2,50:POKE A+3,B:POKE A+44,B
 2670 A=31600:GOSUB 2250
 2672 POKE A,B:POKE A+1,49:POKE A+2,51:POKE A+3,B:POKE A+44,B
 2680 A=31650:GOSUB 2250
 2682 POKE A,B:POKE A+1,49:POKE A+2,52:POKE A+3,B:POKE A+44,B
 2684 ?:RETURN
 2700 Q=31700:?:?"I am generating 20 battleships ..."
 2705 FOR I=1 TO 20
 2710 D=INT(RND(1)*14):D=D+1:POKE Q,D
 2720 E=INT(RND(1)*40):E=E+1:POKE Q+1,E
 2725 Q=Q+2:? I;:FOR R=0 TO 300:NEXT:NEXT:RETURN
 2800 Y1=PEEK(T):X1=PEEK(T+1):RETURN
 2900 ? SPC(18);:FOR F=A TO A+44:? CHR$(PEEK(F));:NEXT F:?
 2905 RETURN
 2940 ?SPC(16)"Congratulations! You destroyed the enemy's fleet."
 2945 GOTO 2955
 2950 ? CHR$(12)
 2955 ?:?SPC(28)"(N)ew game or (Q)uit:";:INPUT A$
 2960 IF A$="N" THEN 1200
 2965 IF A$="Q" THEN END
 2970 GOTO 2950
 3000 ?SPC(35)"Bingo !!!";:GOSUB 9998:SC=SC+1:OP=134:GOSUB 5000
 3080 GS=GS+1:GOTO 1400
 4000 ?SPC(36)"Miss !!!";:GOSUB 9998:OP=120:GOSUB 5000:GOTO 1400
 5000 IF Y=1 THEN POKE (31004+X-1),OP
 5010 IF Y=2 THEN POKE (31054+X-1),OP
 5015 IF Y=3 THEN POKE (31104+X-1),OP
 5025 IF Y=4 THEN POKE (31154+X-1),OP
 5030 IF Y=5 THEN POKE (31204+X-1),OP
 5035 IF Y=6 THEN POKE (31254+X-1),OP
 5040 IF Y=7 THEN POKE (31304+X-1),OP
 5045 IF Y=8 THEN POKE (31354+X-1),OP
 5050 IF Y=9 THEN POKE (31404+X-1),OP
 5055 IF Y=10 THEN POKE (31454+X-1),OP
 5060 IF Y=11 THEN POKE (31504+X-1),OP
 5065 IF Y=12 THEN POKE (31554+X-1),OP
 5070 IF Y=13 THEN POKE (31604+X-1),OP
 5075 IF Y=14 THEN POKE (31654+X-1),OP
 5080 RETURN
 5100 ? SPC(18)"|-------------------------------------------|"
 5102 RETURN
 9970 ? CHR$(8)CHR$(126)CHR$(94);:GOSUB 9998:RETURN
 9988 ?SPC(37)"Error ...";:GOSUB 9998:RETURN
 9998 FOR F=0 TO 2255:NEXT:RETURN
 9999 FOR F=0 TO 7518:NEXT:RETURN

_____________________________________________________________

Upozornenie:


Zobrazenie krížiku platí pre nastavenie fontu v Hypertermináli, kedy je jeho okno zmenšené - písmo Lucida Console, veľkosť písma 8, osobne používam najradšej túto veľkosť Hyperterminálového okna:

 

 

Ak ponecháme základné nastavenie fontu čo je písmo Terminal, veľkosť písma 14:

 

 

tak musíme v programovom riadku číslo 3000 urobiť zmenu:

pôvodný text

 3000 ?SPC(35)"Bingo !!!";:GOSUB 9998:SC=SC+1:OP=134:GOSUB 5000

nahradíme:

 3000 ?SPC(35)"Bingo !!!";:GOSUB 9998:SC=SC+1:OP=127:GOSUB 5000

Čiže je tu zmena obsahu v premennej OP - po tejto zmene sa zobrazí namiesto krížiku pri zásahu lodička , ak sa zmena neprevedie bude sa zobrazovať iný, vzhľadom nie príliš vhodný  znak. Toto samozrejme platí aj v opačnom garde. Je to dané tým, že uvedené dva fonty používajú mierne odlišnú znakovú sadu.

______________________________________________________

Vaše hodnotenie, Rate post:

11_2023 Blog, Notes.

By Administrator at novembra 02, 2023 13:11
Filed Under: Blog

02.11.2023

Dnes sa pozriem na odbery programátoru PREPROM-02aLV pri napájaní stabilizovanými 15V/DC a aj pri 12V/DC:

Programátor PREPROM-02aLV. Programmer PREPROM-02aLV. Part4.

V článku je mimo iného aj popis stavby maléh, vcelku dá sa povedať univerzálneho domáceho zdroja pre napájanie rozličných zariadení, s prepínateľnými hodnotami na jeho výstupe na 5V-12V-15V/DC.

______________________

Dodatok 04.11.2023:

V článku mi "vypadli" niektoré namerané údaje, už je to tam opravené a uvedené na správnu mieru.

_____________________________________________________

03.11.2023

Asi každý má doma nejakú krabicu s odloženými rozličnými kabelážami - všelijaké USB, RS232, paralelný kábliky a pod. Dnes doobeda som hľadal v krabici jeden konkrétny prepojovací káblik a zaskočila ma halda ošúpanej izolácie z kábla na dne krabice - to tu predtým nikdy nebolo. Po chvíľke hľadania som autora uvedeného javu objavil:

 

Takže takto to dopadne ak sa použijú nevhodné materiály na izoláciu pre USB káblik (myš za toto rozhodne nemôže), krabica je trvale uzavretá kvalitným vrchnákom. A krabica nie je umiestnená na slnečnom mieste, takže v tom nemá prsty ani slnko. Našťastie túto jesennú "úpravu" zhadzovania izolácie predviedol tento jediný káblik. Kam s ním teraz ? Akurát do koša - kde som ho aj vyfotil. Inak povedané - zase jedno parádne kurvítko v praxi.

_______________

Ďalší poznatok - Igiho zákon o uloženej kabeláži:

"Môžete do veľkej krabice uložiť kabeláž pekne stočenú, pekne kus po kuse - keď to po čase vytiahnete a vysypete - je to všetko tak neuveriteľne prepojené a zamotané že Vám začína byť jasné že prechádzajúca robota bola vlastne úplne zbytočná, dopadlo to rovnako ako keby ste to tam len tak nahádzali."

____________________________________________________________

07.11.2023

Nová hra napísaná v jazyku BASIC pre SBC6502:

SBC6502 - 68 - basic programs - "Battleships".

_____________________________________________________

10.11.2023

Konverzia hry Battleships pre SBC6809:

SBC6809 - Basic game: Battleships. Part-10.

_____________________________________________________

11.11.2023

Konverzia hry Battleships pre SBC Micro UK101:

The Micro UK101 - COMPUKIT UK101, basic program - Battleship. Part-7.

_____________________________________________________

15.11.2023

Dnes som sa stal majiteľom ďalšieho kusu programátoru PREPROM-02aLV a k tomu aj nejakých ďalších vecí ktoré som doteraz nevlastnil:

Programátor PREPROM-02aLV. Programmer PREPROM-02aLV. Doplnky. Part5.

_____________________________________________________

25.11.2023

Základná literatúra pre SBC6809:

SBC6809 - CoCo books. Part11.

_____________________________________________________

Vaše hodnotenie, Rate post:

Programátor PREPROM-02aLV. Programmer PREPROM-02aLV. Part4.

By Administrator at novembra 02, 2023 13:10
Filed Under: Non-Atari

Pozriem sa na základné odbery programátoru PREPROM-02aLV pri programovaní 2 typov starých Eprom pamätí (2716 a 2732A) - ale dnes článok začnem hodne zoširoka, viac ako býva u mňa obvyklé.

 

PREPROM-02aLV a v ňom založená EPROM 2716

 

Už som spomenul že som si chcel postaviť nový napájací zdroj, rozhodol som sa pre taký mix klasiky transformátoru a následného nízkonapäťového DC/DC meniča. Výstupné napätie je možné prepínať na tri rozličné hodnoty 5V-12V-15V/DC (3IN_ONE Smile), prepínač ešte nie je celkom doriešený - akosi na prednom paneli nie je dosť miesta, z jeho zadnej strany je na ňom totiž pripojený a umiestneny aj samotný DC/DC menič - toto zásadne ovplyvnilo aj rozloženie výstupných svoriek. Pretože svorky som mal len rovnakej farby tak som použil farebné LED ktoré teraz aj priamo značia polaritu výstupu. Iné riešenie by mi už nedovolilo umiestniť na predný panel sieťový vypínač. Veľkostne som zdroj riešil tak že môže napríklad (mimo iného) trvale napájať trebár aj počítače SBC6502 (12V/DC), SBC6809 (5V/DC) a UK101 (12÷15V/DC) a teda bude k nim aj výzorom "ladiť" - a trebárs aj ešte nejaké ďalšie SBC čo ešte postavím. Tak isto môže reálne poslúžiť pre napájanie dodatočnej doštičky PROM 74188, 74S287, 74S571 pre programátor USBprog (tam treba 15V/DC), čiže tá jeho univerzálnosť použitia pre viacero zariadení sa skutočne oplatí - akurát treba potom vždy myslieť na správnu polaritu výstupného napätia na konektore, pomáha tomu výrazné značenie na použitej kabeláži k príslušnému zariadeniu.

 

Upozornenie:

Zásahy do zariadenia sú na vlastné riziko majiteľa zariadenia. Autor týchto stránok nenesie žiadnu

zodpovednosť za škody spôsobené používaním zariadení postavených podľa tu uverejnených

schém alebo zobrazených úprav.


Všetky veci pre stavbu tohoto zdroja som mal doma k dispozícii, nekupoval som na jeho stavbu a následné sprevádzkovanie ani jednu jedinú súčiastku, stačila k tomu skutočne len dostupná domáca súčiastková základňa. Transformátor som pred časom dostal od známeho (bolo to z nejakého zabezpečovacieho zariadenia, ja som sa dostal len k tomu transformátoru) a teda čakal na svoju príležitosť, dočkal sa.


Interné riešenie zdroja 5V-12V-15V/DC

Na trafáku je zaujímavé že jeho primár je na 240V/AC.


Aha - aby som nezabudol - všetky 3 výstupné napätia v tomto zdroji sa dajú presne nastaviť viacotáčkovými trimrami, takže výstupné napätie nemusí byť iba také aké som uviedol, záleží to od toho aké napätia potrebujeme. Na prednom paneli je urobený otvor ktorým je možné nastaviť základné výstupné napätie 15V, trimer je priamo na základnej doske DC/DC meniča. Pridané trimre (2ks) - trimer vľavo nastavuje 5V, trimer napravo nastavuje 12V výstup, vlastne sa pripájajú paralelne k pôvodnému trimru a dokážu znižovať výsledné výstupné napätie, odvodené teraz od hodnoty 15V. Je tu vidieť aj pridaný chladič na doske DC/DC meniča.


Zdroj je napájaný transformátorom 240V/AC→20V/AC, takže na napájanie vlastného meniča je po usmernení k dispozícii cca 25÷26V/DC. Doska DC/DC meniča dostala zo zadnej strany malý prídavný chladič lebo pri napájaní uvedeným DC napätím už celkom slušne hriala (na vine je stabilizátor pre LED displej). Na jeho dosku zo zadnej strany prišla tenká nevodivá silikónová podložka s aplikovanou teplovodivou pastou (izolácia je potrebná, inak by mohol nastať skrat na zadnej strane, vedú tam na doske prívody), nasleduje malý chladič zase s ďalšou teplovodivou pastou, na dosku je prichytený pomocou 5min Epoxy (pekne kol dokola), pri lepení bol chladič poriadne pritlačený voči doske meniča. Teplovodivá pasta je teraz zo všetkých strán pekne uzavretá a nehrozí jej vyschnutie, teplota dosky meniča sa v prevádzke skutočne výrazne znížil, teraz je iba mierne vlažný.

 

Síce to tu neveľmi vidno, ale sieťový  vypínač  je voči okoliu krytý priehľadným plastom proti náhodnému dotyku (lepšie vidieť na predchádzajúcom obrázku - bezpečnosť zdroja predovšetkým). Na výstupe DC zdroja napätia do DC/DC meniča je použitá 1.6A poistka. Graetz má na svojom striedavom vstupe paralelne pripojenú kapacitu 10nF (keramika), po usmernení a vyhladení 3 kapacitami ktoré majú spolu cca 2500uF (2x 1000uF/50V + 1x 470uF/35V) nasledujú ešte na DC výstupe paralelne pripojené kapacity 1nF, 10nF a 100nF (M1), všetko keramiky (slúžia pre vf odrušenie zdroja).

 

Ako som už spomenul zdroj ešte nie je celkom hotový (týka sa to už iba časti predného panelu) a nemá na sebe kryt pre displej (červené plexi) a chýbajú popisky pre prepínanie výst. napätia, prepínanie jednotlivých napätí je riešené jumperom, nepredpokladám tu však nejaké zbesilé prepínanie medzi potrebnými výstupnými napätiami takže mi to takto vyhovuje (a aj priestorovo). Je to riešené ako taký univerzálny napájací zdroj a teda mimo iného môžem ním napájať programátor PREPROM-02aLV (PREPROM-02 samozrejme tak isto) a ak treba - aj s jeho prídavnými modulmi. Osobne počítam s možným prúdovým odberom z tohoto zdroja maximálne niekde okolo hodnoty 1.5A, čo podľa mňa postačuje na napájanie pre hodne široky okruh rozličných (možných) pripojených zariadení.

Napájanie programátoru laboratórnym zdrojom akosi považujem za riešenie ísť poľovať na komára slonom, tento zdroj sa dá použiť aj iné veci a pre napájanie programátoru stačí použiť jednoduchý 12÷15V/DC/1A spínaný zdroj - a je po vtákoch, ale keď som zdroj už postavil tak som si povedal - pozri sa tiež na odbery PREPROM-02aLV ... a tiež som bol zvedavý ako bude programátor fungovať aj na deklarovaných 12V/DC - dopredu hovorím že samotné testovanie zbehlo bez najmenších problémov aj pri tejto hodnote.

 

Tak poďme na tie odbery PREPROM-02aLV pri napájaní stabilizovanými 15V/DC a zmerané následne aj pri nastavení na 12V/DC, na testy boli použité Eprom pamäte 2716 (2kB, PGM napätie=25V) a 2732A (4kB, PGM napätie=21V). Zameral som na na tieto 2 typy Eprom pamätí, pretože novšie Eprom programátory už zvyčajne nepodporujú uvedené typy v ich celej šírke, t.j. nedokážu ich vždy napáliť, zvyčajne "naplno idú až od typu 2764 a vyššie.

 

Napájanie stabilizovaný zdroj 15V/DC:

- kľudový odber programátoru 0.12A

- pamäť Eprom 2716 (25V/write)

   zápis - 0.32A

  čítanie a verifikácia - 0.15A

- pamäť Eprom 2732A (21V/write)

   zápis - 0.30A

- čítanie a verifikácia - 0.15A

 

Napájanie stabilizovaný zdroj 12V/DC:

- kľudový odber programátoru 0.09A

- pamäť Eprom 2716 (25V/write)

  zápis - 0.34A

  čítanie a verifikácia - 0.16A

- pamäť Eprom 2732A (21V/write)

  zápis - 0.32A

  čítanie a verifikácia - 0.16A

 

Takže - vidieť že programátor naprosto v pohode funguje aj pri napájaní 12V/DC, akurát si pri práci "cucne" zo zdroja o niečo väčší prúdový odber, hlavne pri programovaní. Vidieť že Eprom 2732 používa novšiu technológiu a teda odber zo zdroja je potom pri programovaní o niečo menší. Odber pri programovaní EPROM nie je nijako hrozivý, takže na základné veci pre programátor naprosto postačuje aj zdroj 12V/DC/1A, ale ak máme pripojené aj prídavné moduly - tak radšej použite napájanie zdrojom 15V/DC/1A, nepôjdeme tak na "doraz" schopností zdroja dodať požadovaný prúd, mať poruke rezervu je vždy dobré.


Zapojenie tu uvedeného zdroja slúži len pre inšpiráciu, nie je návodom na stavbu, dnes si spústa (= absolútna väčšina) ľudí radšej priamo hotový jednoúčelový zdroj kúpi (alebo ho má doma k dispozícii už dávno) a ďalej to nerieši, toto je skôr pre tých ktorí radi bastlia a majú dobrý pocit z toho že si postavia niečo sami a potom po zhotovení to funguje presne podľa ich predstáv.

_____________________________________________________________

12.11.2023

Možností napájania je skutočne viacero - samozrejme existuje aj jednoduchšie riešenie kedy nemusíme stavať celý nový zdroj, existuje aj možnosť kedy netreba do použitého kúpeného zdroja robiť žiaden zásah - stačí si vyrobiť tzv. konverznú prepojku ktorá nám "vyrobí" opačnú polaritu pre programátory Elnec.  Je dobré si ju potom výrazne označiť aby bolo jasné na aký účel má slúžiť. Nevýhodou takýchto univerzálnych riešení je to že sa po čase môžeme pozabudnúť - a malér je na svete. Síce si nezničíme programátoy od fy. ELNEC, tie sú dobre chránené (majú v sérii zapojenú diódu, čiže opačná polarita na vstupe im neublíži, akurát nebudú fungovať) ale ak to pripojíme ako zdroj napájania na zariadenie ktorému tým dodáme opačnú polaritu ... - no, mýliť sa síce je ľudské - ale poväčšine je to potom aj drahá záležitosť.

 

Na druhú stranu - takýto zdroj bez konverznej prepojky môžeme naďalej využívať na pôvodný účel pretože bez "invertorového medzikusu" dodáva na svojom výstupe potrebné napätie a aj potrebnú polaritu pre napájanie iných zariadení.

 

Trebárs takto môže vyzerať vyrobená konverzná prepojka pre zmenu polarity na svojom

výstupe - "medzikus" /polarity changer adapter/ pre zmenu polarity na svojom výstupe.


Vľavo invertovaný výstup 15V - pól je na strednom kolíku, vpravo je vstup 15V, + pól v strede. 15V/DC spínané zdroje používajú konektor, ktorý má stredový kolík o niečo väčší, teda protiľahlý kus má v sebe kolík o väčšom priemere ako pri zdrojoch 12V/DC. Toto zabezpečuje "nevýmennosť" pripojenia zdrojov do takejto invertorovej predlžovačky.

Poznámka:

Len tak mimochodom - je to rozmer konektoru ktorý presne "pasuje" do disketovej jednotky Atari 1050 - len pozor, tam treba dodávať do jednotky striedavé napätie a to 9V/AC/3A, takže táto informácia sa hodí iba ako zdroj získania potrebného konektoru, ale to som už hodne odbočil od obsahu a zamerania tohoto článku. 


Takto vyzerá spodná strana napäťového invertoru,  výstup vpravo. Celé je to zapojené na kúsku univerzálnej doštičky kde je to vzájomne pospájkované - tu sa mení polarita zdroja na výstupe, následne je to potom pokryté teplom zmrštiteľnou bužírkou, tá to potom zároveň izoluje voči okoliu. Výstup z inventoru sa potom zapojí priamo do programátoru PREPROM-02 alebo PREPROM-02aLV, dobre poslúži pre obidva typy.


Na napájanie je použitý neupravovaný zdroj 15V/DC/1A. Jasne vidieť

že takýto spínaný napájací zdroj je naozaj malý.

 

Stále platí - tak ako vždy - jednoúčelové zdroje na jednu vec sú proste najlepšie, i keď potom občas márne pátrame kde ten konkrétny potrebný zdroj, potvora, je niekde (zase ...) naozaj dobre založený (a odložený). Ak veci skladujeme pekne spolu, pohromade (t.j. navzájom), alebo to máme na stole trvale zostavené = zvyčajne najlepšia cesta že nič po poskladaní a následnom zapnutí zariadenia nepohnojíme a tiež nestrávime doobedie (alebo poobedie) hrešením a márnym hľadaním niečoho čo ste pred časom niekde videli ale za toho anciáša neviete kde to bolo a kedy - strýčkovi Alzheimerovi jednoducho netreba robiť radosť.

Smile

Predviedol som tu v článkoch niekoľko možných zdrojov napájania pre tento programátor - takže konečné rozhodnutie čo použijete na takýto účel je len a len na Vás.

_____________________________________________________________

Vaše hodnotenie, Rate post:

SBC6502 - 67 - PROM 74188 - diagnostic program for 74188 programmer.

By Administrator at októbra 21, 2023 12:55
Filed Under: SBC6502

 

 

Ak všetko funguje tak ako má - fajn, inak nastanú starosti. Ak pri stavbe niečo nefunguje alebo keď nám začne programátor PROM 74188 z rozličných príčin "blbnúť" tak by bolo vítanou pomôckou mať nejaký pomocný program na základné otestovanie funkčnosti jednotlivých celkov - a tak som sa (po dlhom čase) rozhodol ho napísať. Stačí zadať hodnotu použitého x-talu ktorý slúži ako informácia o základnom clocku hodín procesoru a tým sa nastavia jednotlivé hodnoty pre fungovanie programu ako takého, vďaka tomuto nastaveniu vyhovuje potom program priamo pre všetky uvedené hodnoty x-talov ktoré má uvedené vo svojom zozname.

 

Pri testovaní nesmie byť založená PROM !

 

Vstupné menu pre nastavenie hodnôt pre použitý x-tal

 

Nasleduje pracovné menu.


K dispozícii je celkove 7 (označenie v menu je číslami 0 ÷ 6) pomocných testovacích podprogramov:

 

0.- test pripne na pin č.16 ZIF pätičky programátoru napájacie napätie Ucc (cca +4.75V) po dobu 20sekúnd, hodnota sa meria proti pinu č.8 čo je Gnd, po celú dobu svieti zelená a modrá LED, následne sa Ucc odpojí a vráti sa naspäť do menu


1.- testuje sa zapnutie Vpp + 10.5V na pin č.16 pätičky ZIF, meria sa voči pinu 8 (Gnd), napätie je dostupné po dobu 20 sekúnd, potom sa odpojí Vpp a program sa vráti naspäť do menu , pri teste svietia zelená a červená LED


2.-  test pre chip select (neg.), na 20 sekúnd sa na pine č.15 ZIF pätice objaví log.1, potom na 20 sekúnd padne do log.0 a následne sa odpojí napájanie, pri tomto teste svieti zelená a modrá LED, po celú dobu testu a je aktívne Ucc


3.- je to súhrn testov 0+1+2 v jednom, najprv na 2 sekundy je na pine 16 Ucc (v tom istom okamihu ide do log.1 CS), následne je "prebité" pripojením Vpp, potom sa po 20 sekundách vypne Ucc a Vpp a tiež CS. Počas testu svieti zelená + modrá + po 2sec červená LED, v druhej časti potom zhasnú modrá+červená LED


4.- cyklický test (4x test č.3), teda zbieha niekoľko krát za sebou


5.- testuje sa čip 8255A - na jeho port B sa posielajú postupne data v rozmedzí 0÷255d ktoré potom spätne čítame cez jeho port C. Treba si uvedomiť že výstup z portu B ide ešte cez tranzistory a je teda negovaný. V programe je to vyriešené tak že načítané data z portu C sa následne negujú a až potom sa výsledok porovná. Tento test je tiež cyklický, zbieha celkove 7x za sebou. V prípade chyby sa test zastaví a vypíše kde sa objavil problém.


6.- ak máte pocit že sa netestuje port A čipu 822A, nuž tu je odpoveď - áno sa testuje, jeho horné 3 bity (bit 7 - pripája napätie Ucc, bit 6 pripája Vpp,  bit 5 ovláda chip select), bity 4,3,2,1,0 ovládajú vstupy E (pin 14), D (pin 13), C (pin 12), B (pin 11), A (pin 10) priamo na ZIF pätici.

* Tu máme možnosť zaslaním údaju 0÷31d na tento port sledovať binárnu hodnotu na uvedených adresách bitov. Údaj zostáva platný po dobu 20 sekúnd po potvrdení, potom sa vráti do menu. Svieti iba zelená LED - platí to ak zadáme číslo do 31d, inak viď ďalej.

Ohľadne "hornej" trojice spomenutých bitov:

           pri čísle 128 zapneme Ucc, modrá LED

           pri čísle  64 zapneme Vpp, červená LED

           pri čísle  32 zapneme CS do log.1

Kombináciou týchto čísel môžeme zapnúť aj všetky 3 bity naraz: je to číslo 224, ak zadáme 255 tak všetky bity na porte A budú v log.1.

Táto voľba č.6 umožňuje testovať všetky bity portu A a ak treba aj jednotlivo.

* - pre bity 4,3,2,1,a 0 portu A je v ceste ešte čip 7417


Diagnostický program:

Diagnostic software.txt (5,13 kb)

 

Listing programu:

  992 REM Output:
  993 REM port A - bits 0,1,2,3,4 - PROM 74188
  994 REM       adress: A,B,C,D,E
  995 REM        
  996 REM          bit 5 - CS(neg.) PROM pin 15
  997 REM          bit 6 - PGM pulz 5V/10.5V/5V PROM pin 16
  998 REM          bit 7 - relay On/Off pin 16 (Ucc) PROM 74188
  999 REM
 1000 CLEAR:POKE 15,80:BN=0:NS=7:DV=0
 1005 PA=32768:PB=PA+1:PC=PA+2:CWR=PA+3:POKE CWR,137
 1010 ?CHR$(12);SPC(29)"SBC6502/32kB RAM+8255A"
 1015 ?SPC(16)"Turn ON the power to the PROM 74188 programmer !"
 1017 ?SPC(29)"No PROM in ZIF socket!"
 1020 A$="1.8432MHz":B$="2.0000MHz":C$="2.4576MHz":D$="2.5000MHz"
 1021 E$="3.6864MHz":F$="4.0000MHz":G$="4.5000MHz":H$="4.9152MHz"
 1022 I$="5.0000MHz":J$="6.0000MHz"
 1023 R$="20 sec active in ZIF socket, then off"
 1024 T$="20 sec CS in log.1, 20 sec log.0 and off
 1025 GOSUB 2030:GOTO 1035
 1030 IF BN=1 THEN ?CHR$(12):?
 1035 GOSUB 2700:?" -";SPC(5);"Diagnostic software - ver.1.0,";
 1100 ?" Igi(c)22.10.2023, for x-tal version:";
 1101 GOSUB 2040:GOSUB 2700:GOSUB 2050:GOSUB 2040
 1102 GOSUB 2050:?"(0) - "A$;:GOSUB 2040
 1104 GOSUB 2050:?"(1) - "B$;:GOSUB 2040
 1106 GOSUB 2050:?"(2) - "C$;:GOSUB 2040
 1108 GOSUB 2050:?"(3) - "D$;:GOSUB 2040
 1110 GOSUB 2050:?"(4) - "E$;:GOSUB 2040
 1112 GOSUB 2050:?"(5) - "F$;:GOSUB 2040
 1114 GOSUB 2050:?"(6) - "G$;:GOSUB 2040
 1116 GOSUB 2050:?"(7) - "H$;:GOSUB 2040
 1118 GOSUB 2050:?"(8) - "I$;:GOSUB 2040
 1120 GOSUB 2050:?"(9) - "J$;:GOSUB 2040
 1122 GOSUB 2050:GOSUB 2040:GOSUB 2050:?"(Q)uit program";
 1124 GOSUB 2040:GOSUB 2700:GOSUB 2080:BN=1
 1134 IF X$="0" THEN DV=2.25:S$=A$
 1136 IF X$="1" THEN DV=2.44:S$=B$
 1138 IF X$="2" THEN DV=3.15:S$=C$
 1140 IF X$="3" THEN DV=3.2:S$=D$
 1142 IF X$="4" THEN DV=4.5:S$=E$
 1144 IF X$="5" THEN DV=5:S$=F$
 1146 IF X$="6" THEN DV=5.6:S$=G$
 1148 IF X$="7" THEN DV=6:S$=H$
 1150 IF X$="8" THEN DV=6.2:S$=I$
 1152 IF X$="9" THEN DV=7.14:S$=J$
 1154 IF X$="Q" THEN ? "End program ...":END
 1156 IF DV<>0 THEN GOTO 1200
 1158 GOTO 1030
 1200 ?CHR$(12):GOSUB 2700:GOSUB 2030
 1204 ?" -";SPC(7);"Diagnostic software -";
 1206 ?"x-tal version: "S$SPC(10)"LED:";:GOSUB 2040:GOSUB 2700
 1210 GOSUB 2060:?"(0) - test 5V /Ucc-pin16, Gnd-pin 8,";
 1212 ?SPC(15)"Green+Blue";:GOSUB 2040:GOSUB 2070
 1214 ?R$;:GOSUB 2040:GOSUB 2060
 1216 ?"(1) - test 10.5V /Vpp-pin 16, Gnd-pin 8,";SPC(11)"Green+Red";
 1218 GOSUB 2040:GOSUB 2070:?R$;:GOSUB 2040
 1220 GOSUB 2060:?"(2) - test chip select, ZIF socket pin 15,";
 1222 ?SPC(9)"Green+Blue";:GOSUB 2040:GOSUB 2070:?T$;:GOSUB 2040
 1224 GOSUB 2060:?"(3) - test 5V Ucc + 10.5V Vpp + CS together,";
 1226 ?SPC(7)"Green+Blue+Red";:GOSUB 2040
 1228 GOSUB 2070:?"2sec Vcc+cs-> +20sec Vpp, then off";
 1229 GOSUB 2040:GOSUB 2060:?"(4) - cyklic ";
 1230 ?"test no.:0+1+2,";SPC(23)"Green/+B+R_on/off";:GOSUB 2040
 1232 GOSUB 2070:?"(4x all 5 sec on/5 sec off)";:GOSUB 2040
 1234 GOSUB 2060:?"(5) - cyklic test Data Out to port B and read";
 1236 ? SPC(6)"Green+Blue";:GOSUB 2040:GOSUB 2070
 1238 ?"in to port C /complet range 0-255d, 7x/";:GOSUB 2040
 1240 GOSUB 2060:?"(6) - test Data Out in port A /range 0-255/";
 1242 ? SPC(8)"Green+Out bits";:GOSUB 2040
 1244 GOSUB 2070:?"20 sec active bits in ZIF socket, then off";
 1295 GOSUB 2040:GOSUB 2050:GOSUB 2040
 1300 GOSUB 2060:?SPC(14)"(Q)uit to main menu";:GOSUB 2040
 1310 GOSUB 2700:GOSUB 2080:BN=1:?
 1312 IF X$="4" OR X$="5" THEN ?SPC(31)"Active test --> x";:GOTO 1320
 1315 ?SPC(33)"Active test --> ";
 1320 IF X$="0" THEN GOSUB 2100:GOTO 1200
 1325 IF X$="1" THEN GOSUB 2200:GOTO 1200
 1330 IF X$="2" THEN GOSUB 2300:GOTO 1200
 1335 IF X$="3" THEN GOSUB 2400:GOTO 1200
 1340 IF X$="4" THEN GOSUB 2500:GOTO 1200
 1345 IF X$="5" THEN GOSUB 2600:GOTO 1200
 1350 IF X$="6" THEN GOSUB 2650:GOTO 1200
 1355 IF X$="Q" THEN 1030
 1999 GOTO 1200
 2000 FOR F=0 TO DV*2000*NS:NEXT:RETURN
 2005 FOR F=0 TO (DV*2000*NS)/10:NEXT:RETURN
 2010 FOR Q=1 TO NS:FOR F=0 TO DV*1200:NEXT F:?".";:NEXT Q:RETURN
 2020 FOR F=1 TO DV*300*NS:NEXT F:RETURN
 2030 POKE PA,0:POKE PB,0:RETURN
 2040 ?TAB(78)"-":RETURN
 2050 ?" -"SPC(31);:RETURN
 2060 ?" -"SPC(7);:RETURN
 2070 ?" -"SPC(13);:RETURN
 2080 ?SPC(30)"   Your choice - ";:INPUT X$:RETURN
 2100 POKE PA,128:GOSUB 2010:GOSUB 2670:RETURN
 2200 POKE PA,64:GOSUB 2010:GOSUB 2670:RETURN
 2300 POKE PA,160:GOSUB 2010:POKE PA,128:GOSUB 2010:GOSUB 2670
 2305 RETURN
 2400 POKE PA,128:GOSUB 2005:POKE PA,192:GOSUB 2010:POKE PA,0
 2405 GOSUB 2670:RETURN
 2500 FOR WE=1 TO 4:? WE;
 2502 POKE PA,224:GOSUB 2020:POKE PA,0:GOSUB 2020
 2504 NEXT:GOSUB 2670:RETURN
 2600 POKE PA,128:FOR TE=1 TO 7:?TE;
 2602 FOR DT=0 TO 255:POKE PB,DT:IN=PEEK(PC):VE=255-IN
 2610 IF DT=VE THEN 2625
 2615 ?:? "PROBLEM:":?"DATA out      Input"
 2620 ?" portB:       portC:":? DT,VE:GOSUB 2030:END
 2625 NEXT:NEXT:? " <- O.K.!";:GOSUB 2030:GOSUB 2020:RETURN
 2650 ?CHR$(12):?:? SPC(26)"Test no.6 - Data Out in port A.":?
 2652 ?SPC(23)"Data range 0-255, your input DATA:";:INPUT A
 2654 IF A>255 THEN ?SPC(37)"Wrong input !":GOTO 2652
 2656 POKE PA,A:?SPC(34)"Active:";:GOSUB 2010:GOSUB 2670:RETURN
 2670 GOSUB 2030:?"End";:GOSUB 2005:RETURN
 2700 ?" ";:FOR F=2 TO 78:?"-";:NEXT:GOSUB 2040:RETURN

Tento program slúži pre jednoduchú a rýchlu diagnostiku zistených problémov (ak sa nejaké objavia) na PROM 74188 programátore. Ako autor hw a sw si vystačím iba s jednotlivými POKE a PEEK príkazmi a diagnostický program vlastne vôbec nepotrebujem, lenže nie každý má potrebné znalosti ako si poradiť ak vzniknú nejaké problémy, pre tých je tento program aj určený. Čo je zaujímavé - dĺžka diagnostického programu činí približne 1/2 dĺžky plnej programovej verzie 1.10, diagnostický program bol pridaný aj do archívu všetkých programových verzií.

_________________________________________________________________________________

V uvedenom odkaze sú uverejnené všetky vydané verzie programového vybavenia pre programátor PROM 74188:

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

_____________________________________________________________

Vaše hodnotenie, Rate post:

10_2023 Blog, Notes.

By Administrator at októbra 01, 2023 07:33
Filed Under: Blog

01.10.2023

VOSR - Petrohrad 1917, prešlo odvtedy 106 rokov a je tu VOSR Bratislava - 2023, no comment ...

____________

Info:

Článok o programovej verzii 1.10s pre programátor PROM 74188  bol počas jeho tvorby mojím nedopatrením na istý čas uvoľnený na web počas dňa 01.10.2023, teda ešte počas jeho zásadnej tvorby a teda v ňom obsiahnutý program nebol dotiahnutý do finálnej fázy vrátane popisov, takže tomu kto sa v tom čase k nemu dostal sa zhlboka ospravedlňujem ... proste musíte si počkať do Vianoc, zásadné otestovanie novej verzie programu a aplikácia niektorých úprav do programového vybavenia je naozaj vec ktorá nejaký čas zaberie. Jediná vec ktorá z toho vyplýva - že bude ešte jedna verzia programového vybavenia - budú tam nápady ktoré tam ešte chcem zrealizovať.

___________________________________________________________________

22.10.2023

Diagnostický software pre riešenie potiaží (ak vzniknú) pre programátor PROM 74188:

SBC6502 - 67 - PROM 74188 - diagnostic program for 74188 programmer.

___________________________________________________________

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: