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.
(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ť.
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: