USBprog ver 4.01.

By Administrator at apríla 02, 2024 07:50
Filed Under: SBC8085-NCB85

Ako som už pred časom avizoval autor USBprogramátoru Štefan Kičina pracoval na ďalšej verzii zariadenia a to s vylepšenými vlastnosťami, dnes je to už USBprog verzie 4.01. Zameriam sa na rozdiely, základné veci zostali a teda tie popisovať nebudem, sú už popísané vo verzii 1.00 USBprog.


USBprogramátor verzia 4.01


Základný rozmer zariadenia sa nezmenil, zostalo aj pôvodné pripojenie cez microUSB konektor. Napájanie celého programátoru si aj táto verzia "berie" z USB konektoru /na výrobu potrebných napätí sú v ňom použité DC/DC meniče/ a tak teda netreba žiadne ďalšie napájanie, toto je hodne, hodne sympatické. ja som zase použil pomocnú doštičku pod programátor ktorá priamo podopiera microUSB konektor a teda bráni jeho možnému "vylomeniu", predsa len som radšej pri používaní opatrný. Zmenilo sa farebné označenie niektorých použitých LED diód, ale to samozrejme na funkčnosť nemá žiaden vplyv. Ak by nebola zmena vo farbe použitých LED tak sa podľa vrchnej strany ani nedá poznať že máme pred sebou novú verziu zariadenia.


Spodná strana - programátor USBprog verzia 4.01


Ak sa pozrieme na stranu súčiastok tak tu je vidieť že tých súčiastok je tu naozaj hodne /všetko SMD/ a že ich aj pribudlo, osadenie je naprosto bezchybné. Teraz máme k dispozícii automatické nastavovanie potrebného napaľovacieho napätia priamo programom /teda už ho netreba ručne nastavovať .../, toto je veľmi príjemná zmena, hlavne pre menej skúsených userov zariadenia. Procesor ATMEL 324 /beží na 16MHz/ teraz zvláda aj prepínanie medzi typmi EPROM 2716 a 2732 - teraz už netreba použiť pomocný socket pri programovaní obvodu 2732, zase je to vo výsledku jednoduchšie pri použití - za tieto pridané vlastnosti palec nahor !

 

Časy programovania Eprom 2716 a Eprom 2732 sú fakticky totožné s prvou verziou programátoru, takže ich tu neuvádzam, hlavne je to dané dĺžkou programovacieho pulzu, pri 50ms pulze trvá napálenie naozaj dlhšie ako keď je použitý 10ms pulz /týka sa niektorých Eprom/.

 

Teraz sa pozriem na tabuľku výberu možných obvodov na programovanie:

 

V programe pribudla ešte jedna vec - a to že na konci súborovej tabuľky sa vypíše CRC32 /kontrolný súčet/ - za toto zase palec nahor ! Uvedené typy Eprom z tabuľky veľmi často používajú dodnes počítačoví 8-bit nadšenci a moderné programátory to vo svojom portfóliu už viac-menej ignorujú - a to už dlhú dobu. Extra zmienim možnosť programovať "trojnapäťovú" Eprom 2708 a je tu aj 2532 - toto síce potrebuje malá skupinka, ale bez programátoru to akosi nejde, že ...

 

Ak sa nastavíte na konkrétny typ Eprom tak sa vypíše jej programovacie napätie a tak isto aj dĺžka  programovacieho pulzu.

 

Nasleduje programovanie PROM, všetky 3 typy sú tie isté ako v prvej verzii, pre programovanie je potrebné použiť rovnakú nadstavbu /redukciu/ ako predtým. Pri nastavení konkrétnej PROM nás program vyzve na založenie redukcie /robí vždy ak je redukcia potrebná/.

 

Dtto platí aj pre programovanie mikroprocesorov  8748 a 8749, zase treba použiť prípravok /redukciu - je rovnaká ako v prvej verzii/.


Poslednou pridanou funkciou tejto verzie programu je programovanie GAL obvodov. Tu je tak isto potrebné použiť prípravok /redukciu/ navyše. Zase je automaticky nastavené potrebné PGM napätie, v tomto prípade cez PWM moduláciu. Zase sa jedná o vec kde si nové programátory s niektorými konkrétnymi GAL obvodmi už nevedia "poradiť".


 

Programové vybavenie veľkostne výrazne "nabobtnalo", to je ale naprosto v poriadku, programátor poskytuje na displeji skutočne hodne dodatočných informácií a tak uľahčuje našu prácu pri jeho používaní. Je to stále malé, ľahké, vie toho výrazne viac a hlavne pracuje zo súčiastkami s ktorými už nové programátory vôbec nepočítajú a teda nemajú v ich svojom zozname podporovaných obvodov, alebo majú výrazne menší rozsah použitých typov s ktorými ešte ako-tak spolupracujú.

 

USBprog ver. 4.01 je malý šikovný pomocník ktorý mimo iného môže byť vhodným doplnkom pre niekoho kto má doma napríklad TL866(II) a nevie pracovať zo súčiastkami ktoré moderný programátor už jednoducho nemá k dispozícii.  


Ja už len dodám že tento programátor /a aj dodatočné redukcie/ s novým programovým vybavením autor zariadenia práve ponúka na predaj na stránkach bazos.sk, autor k zariadeniu  posiela mailom kompletné programové vybavenie, podrobný manuál + bootloader pre nový firmware.


/Popis redukcií pre PROM, mikroprocesory 8748 a 8749 bol popísaný pri popise USBprog verzie 1.00./

Odkazy na články o USBprog verzia 1.0:

USBprog - Part12. Čítanie (read) procesorov 8048 + 8049.

USBprog - Part11. Bipolárne PROM - zapojenie vývodov.

USBprog - Part10. Obsahy-contents PROM 74287, 74S287, 74571, 74S571.

USBprog - Part9. HW patch for shield for 8748H-8749H.

USBprog - programmer. Part8. Obsahy-contents 8048,8049,8748,8749.

USBprog - Eprom + Prom programmer. Part7. Shield for 74188,74S287,74S571.

USBprog - Eprom + Prom programmer. Part6. Shield for 8748-8749.

USBprog - Eprom + Prom programmer. Part5. Eprom 2732B ... pffffffff ...

USBprog - Eprom + Prom programmer. Part4. Prepínač Vpp. Vpp selector.

USBprog - Eprom+ Prom programmer. Tabuľka Eprom pamätí. Part3.

USBprog - Eprom+ Prom programmer. Shield 2732. Part2.

USBprog - Eprom + Prom programmer. Part1.

______________________________________________________

Vaše hodnotenie, Rate post:

Currently rated 5.0 by 21 people

  • Currently 5.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Igiho knižnica 59 - spravodaj AKPraha ZO 602 4_91.

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

 Spravodaj AKPraha ZO 602 4_91.

 

Počet strán:16

AKPraha 602 4_91.pdf (3,75 mb)

 

Príjemné čítanie !

___________________________________________________________

Vaše hodnotenie, Rate post:

Currently rated 5.0 by 5 people

  • Currently 5.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Igiho knižnica 58 - spravodaj AKPraha ZO 602 3_91.

By Administrator at marca 24, 2024 12:00
Filed Under: Atari

 Spravodaj AKPraha ZO 602 3_91.

 

Počet strán:16

AKPraha 602 3_91.pdf (3,90 mb)

 

Príjemné čítanie !

___________________________________________________________

Vaše hodnotenie, Rate post:

Currently rated 5.0 by 6 people

  • Currently 5.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Igiho knižnica 57 - spravodaj AKPraha ZO 602 2_91.

By Administrator at marca 22, 2024 10:15
Filed Under: Atari

 Spravodaj AKPraha ZO 602 2_91.

 

Počet strán:16

AKPraha 602 2_91.pdf (4,23 mb)

 

Príjemné čítanie !

___________________________________________________________

Vaše hodnotenie, Rate post:

Currently rated 5.0 by 6 people

  • Currently 5.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Igiho knižnica 56 - spravodaj AKPraha ZO 602 1_91.

By Administrator at marca 19, 2024 08:45
Filed Under: Atari

 Spravodaj AKPraha ZO 602 1_91.

 

Počet strán:16

AKPraha 602 1_91.pdf (3,80 mb)

 

Príjemné čítanie !

___________________________________________________________

Vaše hodnotenie, Rate post:

Currently rated 5.0 by 6 people

  • Currently 5.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

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:

Currently rated 5.0 by 5 people

  • Currently 5.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

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:

Currently rated 5.0 by 5 people

  • Currently 5.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

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:

Currently rated 5.0 by 5 people

  • Currently 5.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

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:

Currently rated 5.0 by 5 people

  • Currently 5.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

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:

Currently rated 5.0 by 5 people

  • Currently 5.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

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:

Currently rated 5.0 by 4 people

  • Currently 5.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

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:

Currently rated 5.0 by 5 people

  • Currently 5.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

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:

Currently rated 5.0 by 6 people

  • Currently 5.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

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.

_____________________________________________________

19.03.2024

Pražský Atari klub 602 ZO:

Igiho knižnica 56 - spravodaj AKPraha ZO 602 1_91.

_____________________________________________________

22.03.2024

Pražský Atari klub 602 ZO:

Igiho knižnica 57 - spravodaj AKPraha ZO 602 2_91.

_____________________________________________________

24.03.2024

Pražský Atari klub 602 ZO:

Igiho knižnica 58 - spravodaj AKPraha ZO 602 3_91.

_____________________________________________________

27.03.2024

Pražský Atari klub 602 ZO:

Igiho knižnica 59 - spravodaj AKPraha ZO 602 4_91.

Tak si myslím že na tento mesiac je vystarané ...

_____________________________________________________

Vaše hodnotenie, Rate post:

Currently rated 5.0 by 7 people

  • Currently 5.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

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:

Currently rated 5.0 by 10 people

  • Currently 5.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

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:

Currently rated 5.0 by 11 people

  • Currently 5.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

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 6-tich byte 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 ktorý potom stačí priamo napáliť do Eprom pamäte.

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 - a popritom nebazírujú na rýchlosti záznamu. Takto priamo dostaneme potrebné binárne súbory ktoré sú určené priamo na napálenie do Eprom pamätí.

Program sa spúšťa pod DOS 2.5 a podobne.

 

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

 

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 k jeho spusteniu Turbo Basic !

 

Čo dodať k samotnému programu ?

  

- autorom prvej časti programu je rybags (+1050), známi useri 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 nám pôjde trvalé zobrazenie na displeji, ale zápis obidvoch súborov potrvá 4min a 35sec ...

- ak riadky č.5 a č.100 ponecháme tak získame rýchlosť navyše (je to 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 potom 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 požadovaný 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, len je možné že budete musieť koncovku vytvoreného súboru premenovať z *.ROM na *.BIN pretože nie každý programátor pracuje s koncovkou *.ROM.

Že to dlhšie trvá - väčšinou to nevadí, nakoniec, toto naozaj netreba robiť každý deň ...Tongue out a časom určite uverejním verziu ktorá má v sebe pridaný "celý" jeden riadok v strojáku a rýchlosť celého programu bude potom podstatne vyššia.

___________________________________________________________

Pre tých "skúsenejších" je tu verzia výpisu OS v strojáku (program COPY OS - ale s uvedenou 6-byte hlavičkou na začiatku súboru):

OS dump

_____________________________________________________

07.06.2024

Vytvoril som verziu ktorá je pri spracovaní podstatne rýchlejšia, stačil na to jeden riadok v "strojáku":

Easy Copy OS + Copy Basic to binary files - Basic + assembler.

___________________________________________________________

Vaše hodnotenie, Rate post:

Currently rated 5.0 by 9 people

  • Currently 5.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

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:

Currently rated 5.0 by 7 people

  • Currently 5.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

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

Tak mám niečo aj k dnešnému dátumu do knižnice:

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

____________________________________________________

Vaše hodnotenie, Rate post:

Currently rated 5.0 by 5 people

  • Currently 5.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

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:

Currently rated 5.0 by 6 people

  • Currently 5.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

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 D5xxh (!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 D5xxh - jumper je prepojený práve na túto adresáciu, dekódovanie adries 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í D6xxh a D7xxh aj s ich možnými obmedzeniami pri využívaní bolo už popísané v predchádzajúcom článku.

_______________________________________________________________________________

 

Existuje aj jednoduchšie riešenie problému ako získať potrebný signál adresného dekodéru

!CCTL (D5xxh) ak pracujeme cez PBI zbernicu - ale to si už vyžaduje urobiť mierny hw

zásah do počítača.


Ak máte viacero počítačov - môžete si na jednom stroji na PBI zbernici na jeho voľný pin konektoru priviesť signál !CCTL priamo z konektoru pre cartridge - ušetríte si tým stavbu potrebného dekodéru týchto adries a teda ušetríte takto 1÷2 čipy. Nemalo by to vadiť, pretože je veľmi málo pravdepodobné že by ste si  napríklad zohnali novú perifériu Atari 1090 kde by to už mohlo s niečím už kolidovať. Na PBI sú k dispozícii tieto voľné piny 33, 37 a 39 - ďalšie piny 47 a 48 pri ATARI 800XL neodporúčam obsadiť nejakým dodatočným signálom, pretože pri Atari 600XL je sem privedených +5V (ak si na Atari 800XL pripojíme na piny 47 a 48 +5V tak máme PBI zbernicu úplne rovnakú ako má Atari 600XL). Ak signál !CCTL skutočne na PBI zbernici použijete (odporúčam ho pripojiť na pin č.33 na PBI) - je dobré do cesty tohoto signálu zapojiť vypínač - tým potom pri prerušenej ceste signálu na PBI zbernicu máme k dispozícii úplne pôvodný počítač.

Pracovať cez PBI zbernicu je elegantné riešenie, ale je spojené s jednou veľkou neznámou - a to celkovou dostupnosťou 50-pinového konektoru pre túto zbernicu ...

 

Ďalšou možnosťou ako sa dostať k potrebným signálom z Atari je vyviesť ich z konektoru pre cartridge, je tam všetko potrebné a tak isto je tu priamo aj signál !CCTL. (Ale to už nehovorím o zbernici PBI, to som už mierne odbočil od témy, ale nedalo mi uviesť aj túto možnosť.) Výhod je vcelku dosť, nevýhoda - prívod "trčí" priamo nad Atari, je potrebné urobiť krabičku na výstup - inak hrozí pri používaní skrat na zbernici cartridge.


Pozrime si príklad takého riešenia - napaľovačka Eprom od Ralpha Davida:


___________________________________________________________

Cartridge konektor pre Atari 600XL a Atari 800XL:


 

Konektor paralelnej zbernice PBI, 50-pin samec na strane počítača (rada Atari XL):


Pohľad zo zadnej strany počítača.


Obsadenie signálov na PBI zbernici pre Atari 600XL, Atari 800XL:

_____________________________________________________

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:

Currently rated 5.0 by 20 people

  • Currently 5.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

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:

Currently rated 5.0 by 5 people

  • Currently 5.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

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 na tohtoročného Silvestra (na prerábku programu som mal týždeň) - je to pre programátor PROM 74188 kde to v sebe integruje verziu 1.10s a pridáva 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ž pri práci pokračuje zo 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. Následne boli prevedené iba 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 menu:

 

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 AllInOne je to že pri štarte tejto verzie programu treba vždy zvoliť správnu hodnotu použitého x-talu v SBC6502 - toto sa samozrejme dá obísť tým že v programe nájdeme riadok na ktorý má program priamo skočiť.

_____________________________________________________

Ak chceme túto verziu programu používať skutočne iba na jednej konkrétnej rýchlosti procesoru / uvediem príklad pre 4.9152MHz/ stačí v programe zmeniť v riadku č.1036 (najprv pôvodné znenie):

 1036 ?:GOSUB 2600:?"Your SBC clock:";:INPUT V$

urobiť nasledujúcu zmenu na:

 1036 ?:GOSUB 2600:?"Your SBC clock:";:V$="7":?

Teda V$ už obsahuje priamo číslicu nami požadovanej hodnoty x-talu (viď úvodné menu).

Samozrejme by sa toho dalo z programu pri jednoúčelovom nastavení  "vyhodiť" viac, ale toto je najjednoduchšie riešenie pre "pevné" nastavenie. Síce to potlačí vlastný zmysel možností voľby, ale ako vidieť dá sa to previesť hodne jednoducho. Smile

(Touto úpravou eliminujeme výber z viacerých možností ktoré má program dovtedy k dispozícii - a teda úspešne tým suplujeme predchádzajúcu verziu programu kde sú použité samostatné programové súbory pre každý jednotlivý x-tal ...)

_____________________________________________________


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í tohoto SBC - hlavne preto že štandartná dostupná 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 ... (áno - 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 skúsiť 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.

____________________________________________________________

Návrat do všetkých pokračovaní o SBC6502:

http://blog.3b2.sk/igi/post/Directory-SBC6502.aspx

____________________________________________________________

Vaše hodnotenie, Rate post:

Currently rated 5.0 by 22 people

  • Currently 5.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

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.

___________________________________________________________

Návrat do všetkých pokračovaní o SBC6502:

http://blog.3b2.sk/igi/post/Directory-SBC6502.aspx

___________________________________________________________

Vaše hodnotenie, Rate post:

Currently rated 5.0 by 20 people

  • Currently 5.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

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:

Currently rated 5.0 by 5 people

  • Currently 5.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

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:

Currently rated 5.0 by 14 people

  • Currently 5.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

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 dovnútra Atari:

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

(toto by nás malo uviesť 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 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-D6FFh RI  

Región D6E0h-D6FFh D3h je vyhradený až po D6FFh. Adresný priestor CPU od D600h do D7FFh je vždy mapovaný na EBI a nevyž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 a teda 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 (leda ak s Q-MEG-om nerátame).

 

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:

Currently rated 4.8 by 23 people

  • Currently 4.8/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

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 ten "novší".

Je v 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.

Ako vidieť - zmenila sa farba bočníc spodného dielu.


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


A 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. Pôvodne som si ho chcel postaviť - aby som ho mal taktiež vo svojej zbierke, ale prv ako som sa k samotnej stavbe "rozhýbal" (schému zapjenia mám) tak som získal funkčný POD, rozhodne ma to potešilo - a ušetrilo mi to jeho stavbu.


Diagnostic POD type I - spodná strana.


Modul 2051 pre programovanie mikroprocesorov rady 89C2051, presnejšie 89C1051, 89C2051 a 89C4051. Takže ak ich chcete naprogramovať cez PREPROM-02aLV - tak treba mať k dispozícii ďalší, samostatný 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 pre PREPROM-02aLV som už neskenoval (tá moja má rok vydania 2002), je k dispozícii v 1.článku o tomto programátore (pdf súbor) tak to tu nebudem dupľovať. Začínam mať v poslednej dobe pocit že som na prácu zo staršími Eprom pamäťami už celkom dobre zabezpečený ...

_____________________________________________________________

Vaše hodnotenie, Rate post:

Currently rated 5.0 by 22 people

  • Currently 5.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

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. Princíp zostáva rovnaký ako u SBC6502 - najprv prebieha zápis do tieňovej obrazovkovej RAM odkiaľ sa naraz vždy prepisuje celá obrazoka vždy po vykonaní nejakej akcie.

 

Úvodná obrazovka.


Tiež sa tu počíta s tým že aj na Micro UK101 je dostupná RAM o veľkosti 32kB, je to dané pevnými adresami v programe pre použité dvojrozmerné pole. U týchto malých SBC je ale použitie 32kB RAM nepísaným štandartom takže tu nemáme problém s veľkosťou dostupnej 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 hodnoty v obsahu 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:

Currently rated 5.0 by 19 people

  • Currently 5.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

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 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 ráta aj pri SBC6809 s dostupnou 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 sa o to pokú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 obsahu použitej 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:

Currently rated 5.0 by 17 people

  • Currently 5.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

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: