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

By Administrator at October 21, 2023 12:55
Filed Under: SBC6502

 

 

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

 

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

 

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

 

Nasleduje pracovné menu.


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

 

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


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


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


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


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


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


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

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

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

           pri čísle 128 zapneme Ucc, modrá LED

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

           pri čísle  32 zapneme CS do log.1

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

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

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


Diagnostický program:

Diagnostic software.txt (5,13 kb)

 

Listing programu:

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

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

________________________________________________________________________________

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

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

____________________________________________________________

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

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

____________________________________________________________

Vaše hodnotenie, Rate post:

Info o autorovi

Volám sa Igor Gramblička, bydlisko: Bratislava, Slovakia. Môj nick: Igi. Blog je o mojich záujmoch, predtým som pracoval ako IT špecialista na počítačové siete a redakčné systémy pre viaceré denníky - až som pred rokmi nakoniec v jednom z nich zakotvil a kde som to potiahol až do konca mojej profesnej kariéry.

Rok, mesiac, počet článkov: