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

By Administrator at December 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:

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: