|
@@ -0,0 +1,404 @@
|
|
|
|
+10 !
|
|
|
|
+20 ! I************************* HEXJED ********************************
|
|
|
|
+30 ! I
|
|
|
|
+40 ! I Program f|r konvertering av palasm:s hexformat till jedecformat
|
|
|
|
+50 ! I Ver 2.00 Luxor Datorer AB Anders Hallqvist
|
|
|
|
+60 ! I
|
|
|
|
+70 ! I*******************************************************************
|
|
|
|
+80 !
|
|
|
|
+90 INTEGER : EXTEND
|
|
|
|
+100 ; CHR$(12)
|
|
|
|
+110 !
|
|
|
|
+120 !
|
|
|
|
+130 DIM Fusepat(39,79)
|
|
|
|
+140 DIM Knowntypes$=400
|
|
|
|
+150 DIM Line$=200
|
|
|
|
+160 DIM Hexline$=200
|
|
|
|
+170 Pos=1
|
|
|
|
+180 !
|
|
|
|
+190 DEF FNVersal$(Str$)
|
|
|
|
+200 FOR I=1 TO LEN(Str$)
|
|
|
|
+210 Ch$=MID$(Str$,I,1)
|
|
|
|
+220 IF (ASCII(Ch$)<96) OR (ASCII(Ch$)>126) THEN GOTO 240
|
|
|
|
+230 MID$(Str$,I,1)=CHR$(ASCII(MID$(Str$,I,1)) AND 95)
|
|
|
|
+240 NEXT I
|
|
|
|
+250 RETURN Str$
|
|
|
|
+260 FNEND
|
|
|
|
+270 !
|
|
|
|
+280 DEF FNGemen$(Str$)
|
|
|
|
+290 FOR I=1 TO LEN(Str$)
|
|
|
|
+300 Ch$=MID$(Str$,I,1)
|
|
|
|
+310 IF (ASCII(Ch$)<64) OR (ASCII(Ch$)>94) THEN GOTO 330
|
|
|
|
+320 MID$(Str$,I,1)=CHR$(ASCII(MID$(Str$,I,1)) OR 32)
|
|
|
|
+330 NEXT I
|
|
|
|
+340 RETURN Str$
|
|
|
|
+350 FNEND
|
|
|
|
+360 !
|
|
|
|
+370 DEF FNGethex$
|
|
|
|
+380 ON ERROR GOTO 500
|
|
|
|
+390 IF Pos>=LEN(Hexline$) THEN INPUT LINE #1 Hexline$ : Pos=1
|
|
|
|
+400 WHILE ASCII(MID$(Hexline$,Pos,1))<=47 ! Skip periodsymbols to
|
|
|
|
+410 Pos=Pos+1
|
|
|
|
+420 IF Pos>LEN(Hexline$) THEN GOTO 440
|
|
|
|
+430 WEND
|
|
|
|
+440 IF Pos<LEN(Hexline$) THEN GOTO 460
|
|
|
|
+450 INPUT LINE #1 Hexline$ : Pos=1 : GOTO 400
|
|
|
|
+460 IF Nrofpins=24 THEN H$=MID$(Hexline$,Pos,2) : Pos=Pos+2
|
|
|
|
+470 IF Nrofpins=20 THEN H$=MID$(Hexline$,Pos,1) : Pos=Pos+1
|
|
|
|
+480 ON ERROR GOTO
|
|
|
|
+490 RETURN H$
|
|
|
|
+500 IF (ERRCODE<>34) AND (ERRCODE<>50) THEN 520
|
|
|
|
+510 H$="eof" : RESUME 480
|
|
|
|
+520 ; "Error ";ERRCODE : STOP
|
|
|
|
+530 FNEND
|
|
|
|
+540 !
|
|
|
|
+550 DEF FNFalsehex(H$)
|
|
|
|
+560 H1$=MID$(H$,1,1)
|
|
|
|
+570 IF Nrofpins=24 THEN H2$=MID$(H$,2,1) ELSE H2$=H1$
|
|
|
|
+580 H1=ASCII(H1$) : H2=ASCII(H2$)
|
|
|
|
+590 False1=(H1<48) OR (H1>71) OR ((H1>57) AND (H1<65))
|
|
|
|
+600 False=(H2<48) OR (H2>71) OR ((H2>57) AND (H2<65)) OR False1
|
|
|
|
+610 RETURN False
|
|
|
|
+620 FNEND
|
|
|
|
+630 !
|
|
|
|
+640 DEF FNPutext$(Name$,Ext$) LOCAL Gemen
|
|
|
|
+650 Gemen=0
|
|
|
|
+660 FOR I=1 TO LEN(Name$)
|
|
|
|
+670 IF ASCII(MID$(Name$,I,1))>96 THEN Gemen=-1 : GOTO 690
|
|
|
|
+680 NEXT I
|
|
|
|
+690 IF Gemen=-1 THEN E$=FNGemen$(Ext$) ELSE E$=FNVersal$(Ext$)
|
|
|
|
+700 RETURN Name$+"."+E$
|
|
|
|
+710 FNEND
|
|
|
|
+720 !
|
|
|
|
+730 PRINT CUR(0,0) "Conversion of HEX to JEDEC"
|
|
|
|
+740 PRINT "Ver 2.00"
|
|
|
|
+750 Knowntypes$=""
|
|
|
|
+760 Knowntypes$=Knowntypes$+"PAL12H10 PAL12L10 PAL14H8 PAL14L8 PAL16H6 "
|
|
|
|
+770 Knowntypes$=Knowntypes$+"PAL16L6 PAL18H4 PAL18L4 PAL20C1 PAL20H2 "
|
|
|
|
+780 Knowntypes$=Knowntypes$+"PAL20L2 PAL20L10 PAL20X10 PAL20X4 PAL20X8 "
|
|
|
|
+790 Knowntypes$=Knowntypes$+"PAL20R4 PAL10H8 PAL10L8 PAL12H6 PAL12L6 "
|
|
|
|
+800 Knowntypes$=Knowntypes$+"PAL14H4 PAL14L4 PAL16C1 PAL16H2 PAL16L2 "
|
|
|
|
+810 Knowntypes$=Knowntypes$+"PAL16L8 PAL16R8 PAL16R4 PAL16X4 PAL16R6 "
|
|
|
|
+820 Knowntypes$=Knowntypes$+"PAL20L8 PAL20R6 PAL20R8 "
|
|
|
|
+830 !
|
|
|
|
+840 Row=3
|
|
|
|
+850 ; CUR(Row,0) SPACE$(70) : ; CUR(Row,0);
|
|
|
|
+860 INPUT "Enter filename for hexfile "Hexfile$
|
|
|
|
+870 IF LEN(Hexfile$)=0 THEN GOTO 850
|
|
|
|
+880 Per=INSTR(1,Hexfile$,".")
|
|
|
|
+890 IF Per=0 THEN Nam$=Hexfile$ : Ext$="hex" : GOTO 910
|
|
|
|
+900 Nam$=LEFT$(Hexfile$,Per-1) : Ext$=RIGHT$(Hexfile$,Per+1)
|
|
|
|
+910 Hexfile$=FNPutext$(Nam$,Ext$)
|
|
|
|
+920 ; CUR(Row,27) Hexfile$
|
|
|
|
+930 !
|
|
|
|
+940 ON ERROR GOTO 990
|
|
|
|
+950 OPEN Hexfile$ AS FILE 1
|
|
|
|
+960 ON ERROR GOTO
|
|
|
|
+970 ; CUR(Row+1,0) SPACE$(70)
|
|
|
|
+980 GOTO 1050
|
|
|
|
+990 !
|
|
|
|
+1000 IF (ERRCODE<>21) AND (ERRCODE<>2) THEN GOTO 1030
|
|
|
|
+1010 ; CUR(Row+1,0) SPACE$(70)
|
|
|
|
+1020 ; CUR(Row+1,0) "Nonexisting file ";Hexfile$ : RESUME 840
|
|
|
|
+1030 ; "Error ";ERRCODE : CLOSE : STOP
|
|
|
|
+1040 !
|
|
|
|
+1050 Row=Row+2
|
|
|
|
+1060 ; CUR(Row,0);
|
|
|
|
+1070 INPUT "Enter filename for jedecfile "Jedfile$
|
|
|
|
+1080 IF LEN(Jedfile$)<>0 THEN GOTO 1100
|
|
|
|
+1090 Jedfile$=LEFT$(Hexfile$,INSTR(1,Hexfile$,".")-1)
|
|
|
|
+1100 Per=INSTR(1,Jedfile$,".")
|
|
|
|
+1110 IF Per=0 THEN Nam$=Jedfile$ : Ext$="jed" : GOTO 1130
|
|
|
|
+1120 Nam$=LEFT$(Jedfile$,Per-1) : Ext$=RIGHT$(Jedfile$,Per+1)
|
|
|
|
+1130 Jedfile$=FNPutext$(Nam$,Ext$)
|
|
|
|
+1140 ; CUR(Row,29) Jedfile$
|
|
|
|
+1150 PREPARE Jedfile$ AS FILE 2
|
|
|
|
+1160 !
|
|
|
|
+1170 INPUT "Enter PAL-type "Paltyp$
|
|
|
|
+1180 IF LEN(Paltyp$)<4 THEN Paltyp$="FINNS EJ"
|
|
|
|
+1190 Paltyp$=FNVersal$(Paltyp$)+" "
|
|
|
|
+1200 IF ASCII(Paltyp$)<>80 THEN Paltyp$="PAL"+Paltyp$
|
|
|
|
+1210 Paltype=INSTR(1,Knowntypes$,Paltyp$)
|
|
|
|
+1220 IF Paltype=0 THEN PRINT "Unknown PAL-type " : GOTO 1170
|
|
|
|
+1230 Paltype=Paltype/10+1
|
|
|
|
+1240 !
|
|
|
|
+1250 ! I****************** INITIATE PINDEF TABLE ****************************
|
|
|
|
+1260 !
|
|
|
|
+1270 ! I In inpline$ P means present and N means not present
|
|
|
|
+1280 ! I In outputs$ 0 means pin is input. Another figure is
|
|
|
|
+1290 ! I the number of product lines connected to the output
|
|
|
|
+1300 ! I in question. The first half of the table contains
|
|
|
|
+1310 ! I 24 pins PALs and the second half 20 pin ones.
|
|
|
|
+1320 ! I If you want to add new PAL types don't forget to update
|
|
|
|
+1330 ! I the On PALTYPE goto line following this text.
|
|
|
|
+1340 ! I The value of paltype will depend on were in knowntypes$
|
|
|
|
+1350 ! I the name of the paltype is found. Each name is to take
|
|
|
|
+1360 ! I up a space of 10 positions in this string in order to
|
|
|
|
+1370 ! I correctly compute the value of paltype
|
|
|
|
+1380 !
|
|
|
|
+1390 ;
|
|
|
|
+1400 ; "Initiating pindef table"
|
|
|
|
+1410 !
|
|
|
|
+1420 ON INT((Paltype-1)/10)+1 GOTO 1430,1440,1460,1480,1500
|
|
|
|
+1430 ON Paltype GOTO 1520,1520,1570,1570,1620,1620,1670,1670,1720,1720
|
|
|
|
+1440 Paltype=Paltype-10
|
|
|
|
+1450 ON Paltype GOTO 1720,1780,1780,1780,1780,1840,1940,1940,1990,1990
|
|
|
|
+1460 Paltype=Paltype-20
|
|
|
|
+1470 ON Paltype GOTO 2040,2040,2090,2090,2090,2140,2140,2140,2140,2140
|
|
|
|
+1480 Paltype=Paltype-30
|
|
|
|
+1490 ON Paltype GOTO 1840,1840,1840
|
|
|
|
+1500 STOP
|
|
|
|
+1510 !
|
|
|
|
+1520 ! PAL12H10, PAL12L10
|
|
|
|
+1530 Inpline$="PPPPPPNNPPNNPPNNPPNNPPNNPPNNPPNNPPNNPPPP"
|
|
|
|
+1540 Outputs$="000000000000022222222220"
|
|
|
|
+1550 GOTO 1890
|
|
|
|
+1560 !
|
|
|
|
+1570 ! PAL14H8, PAL14L8
|
|
|
|
+1580 Inpline$="PPPPPPPPPPNNPPNNPPNNPPNNPPNNPPNNPPPPPPPP"
|
|
|
|
+1590 Outputs$="000000000000004222222400"
|
|
|
|
+1600 GOTO 1890
|
|
|
|
+1610 !
|
|
|
|
+1620 ! PAL16H6, PAL16L6
|
|
|
|
+1630 Inpline$="PPPPPPPPPPPPPPNNPPNNPPNNPPNNPPPPPPPPPPPP"
|
|
|
|
+1640 Outputs$="000000000000000442244000"
|
|
|
|
+1650 GOTO 1890
|
|
|
|
+1660 !
|
|
|
|
+1670 ! PAL18H4, PAL18L4
|
|
|
|
+1680 Inpline$="PPPPPPPPPPPPPPPPPPNNPPNNPPPPPPPPPPPPPPPP"
|
|
|
|
+1690 Outputs$="000000000000000064460000"
|
|
|
|
+1700 GOTO 1890
|
|
|
|
+1710 !
|
|
|
|
+1720 ! PAL20C1, PAL20H2, PAL20L2
|
|
|
|
+1730 Inpline$=STRING$(40,80)
|
|
|
|
+1740 Outputs$="000000000000000008800000"
|
|
|
|
+1750 GOTO 1890
|
|
|
|
+1760 !
|
|
|
|
+1770 !
|
|
|
|
+1780 ! PAL20L10, PAL20X10, PAL20X4, PAL20X8
|
|
|
|
+1790 Inpline$=STRING$(40,80)
|
|
|
|
+1800 Outputs$="000000000000044444444440"
|
|
|
|
+1810 GOTO 1890
|
|
|
|
+1820 !
|
|
|
|
+1830 !
|
|
|
|
+1840 ! PAL20R4, PAL20L8, PAL20R6, PAL20R8
|
|
|
|
+1850 Inpline$=STRING$(40,80) ! All inputlines are present
|
|
|
|
+1860 Outputs$="000000000000008888888800"
|
|
|
|
+1870 GOTO 1890
|
|
|
|
+1880 !
|
|
|
|
+1890 Nrofpins=24 : Maxinpline=39 : Maxline=79
|
|
|
|
+1895 Maxoutput=23 : Minoutput=14
|
|
|
|
+1900 GOTO 2210
|
|
|
|
+1910 !
|
|
|
|
+1920 ! I******* HERE STARTS DESCRIPTION OF 20 PIN PALS *****************
|
|
|
|
+1930 !
|
|
|
|
+1940 ! PAL10H8, PAL10L8
|
|
|
|
+1950 Inpline$="PPPPPPNNPPNNPPNNPPNNPPNNPPNNPPPP"
|
|
|
|
+1960 Outputs$="00000000000222222220"
|
|
|
|
+1970 GOTO 2190
|
|
|
|
+1980 !
|
|
|
|
+1990 ! PAL12H6, PAL12L6
|
|
|
|
+2000 Inpline$="PPPPPPPPPPNNPPNNPPNNPPNNPPPPPPPP"
|
|
|
|
+2010 Outputs$="00000000000042222400"
|
|
|
|
+2020 GOTO 2190
|
|
|
|
+2030 !
|
|
|
|
+2040 ! PAL14H4, PAL14L4
|
|
|
|
+2050 Inpline$="PPPPPPPPPPPPPPNNPPNNPPPPPPPPPPPP"
|
|
|
|
+2060 Outputs$="00000000000004444000"
|
|
|
|
+2070 GOTO 2190
|
|
|
|
+2080 !
|
|
|
|
+2090 ! PAL16C1, PAL16H2, PAL16L2
|
|
|
|
+2100 Inpline$=STRING$(32,80)
|
|
|
|
+2110 Outputs$="00000000000000880000"
|
|
|
|
+2120 GOTO 2190
|
|
|
|
+2130 !
|
|
|
|
+2140 ! PAL16L8, PAL16R8, PAL16R4, PAL16X4, PAL16R6
|
|
|
|
+2150 Inpline$=STRING$(32,80)
|
|
|
|
+2160 Outputs$="00000000000888888880"
|
|
|
|
+2170 GOTO 2190
|
|
|
|
+2180 !
|
|
|
|
+2190 Nrofpins=20 : Maxinpline=31 : Maxline=63
|
|
|
|
+2195 Maxoutput=19 : Minoutput=12
|
|
|
|
+2200 !
|
|
|
|
+2210 ! I********************* SET UP FUSE PATTERN **************************
|
|
|
|
+2220 !
|
|
|
|
+2230 ; "Setting up fuse pattern"
|
|
|
|
+2240 FOR Half=0 TO (Maxline+1)/2 STEP (Maxline+1)/2
|
|
|
|
+2250 FOR Prodline=0 TO 7
|
|
|
|
+2260 FOR Inpline=0 TO Maxinpline
|
|
|
|
+2270 H$=FNGethex$
|
|
|
|
+2280 IF FNFalsehex(H$) THEN GOTO 2270
|
|
|
|
+2290 Msb=ASCII(MID$(H$,1,1))
|
|
|
|
+2300 IF Nrofpins=24 THEN Lsb=ASCII(MID$(H$,2,1)) ELSE Lsb=Msb
|
|
|
|
+2310 IF Msb=49 THEN Bin(4)=1 ELSE Bin(4)=0
|
|
|
|
+2320 IF Lsb>=56 THEN Bin(3)=1 ELSE Bin(3)=0
|
|
|
|
+2330 IF Lsb>=67 OR (Lsb>=52 AND Lsb<=55) THEN Bin(2)=1 ELSE Bin(2)=0
|
|
|
|
+2340 IF Lsb=50 OR Lsb=51 OR Lsb=54 OR Lsb=55 THEN Bin(1)=1 ELSE Bin(1)=0
|
|
|
|
+2350 IF Lsb=65 OR Lsb=66 OR Lsb=69 OR Lsb=70 THEN Bin(1)=1
|
|
|
|
+2360 IF Lsb<58 THEN IF MOD(Lsb,2)=1 THEN Bin(0)=1 ELSE Bin(0)=0
|
|
|
|
+2370 IF Lsb>64 THEN IF MOD(Lsb,2)=1 THEN Bin(0)=0 ELSE Bin(0)=1
|
|
|
|
+2380 IF Nrofpins=24 THEN Maxi=4 ELSE Maxi=3
|
|
|
|
+2390 FOR I=0 TO Maxi
|
|
|
|
+2400 Fusepat(Inpline,I*8+Prodline+Half)=Bin(I)
|
|
|
|
+2410 NEXT I
|
|
|
|
+2420 NEXT Inpline
|
|
|
|
+2430 NEXT Prodline
|
|
|
|
+2440 NEXT Half
|
|
|
|
+2450 !
|
|
|
|
+2460 ! I********************* MARK PHANTOM FUSES ****************************
|
|
|
|
+2470 !
|
|
|
|
+2480 ; "Marking phantom fuses"
|
|
|
|
+2490 FOR Inpline=0 TO Maxinpline
|
|
|
|
+2500 IF MID$(Inpline$,Inpline+1,1)="P" THEN GOTO 2540
|
|
|
|
+2510 FOR Line=0 TO Maxline
|
|
|
|
+2520 Fusepat(Inpline,Line)=255 ! MARKS FUSE AS PHANTOM
|
|
|
|
+2530 NEXT Line
|
|
|
|
+2540 NEXT Inpline
|
|
|
|
+2550 !
|
|
|
|
+2560 FOR Output=Minoutput TO Maxoutput
|
|
|
|
+2570 Nrprodlines=ASCII(MID$(Outputs$,Output,1))-48
|
|
|
|
+2580 IF Nrprodlines=8 THEN GOTO 2650
|
|
|
|
+2590 Stline=(Maxoutput-Output)*8 : Endline=Stline+7
|
|
|
|
+2600 FOR Line=Stline+Nrprodlines TO Endline
|
|
|
|
+2610 FOR Inpline=0 TO Maxinpline
|
|
|
|
+2620 Fusepat(Inpline,Line)=255 ! MARKS FUSE AS PHANTOM
|
|
|
|
+2630 NEXT Inpline
|
|
|
|
+2640 NEXT Line
|
|
|
|
+2650 NEXT Output
|
|
|
|
+2660 !
|
|
|
|
+2670 ! I********************** GENERATE OUTPUT FILE ***************************
|
|
|
|
+2680 !
|
|
|
|
+2690 ; "Generating output file"
|
|
|
|
+2700 PRINT
|
|
|
|
+2710 REM ; #2 CHR$(2);
|
|
|
|
+2720 ; Paltyp$ : ; #2 Paltyp$
|
|
|
|
+2730 ; "Conversion from hextable generated by PALASM 24"
|
|
|
|
+2740 ; #2 "Conversion from hextable generated by PALASM 24"
|
|
|
|
+2750 ; "*" : ; #2 "*"
|
|
|
|
+2760 ; "QP"+NUM$(Nrofpins)+"*" : ; #2 "QP"+NUM$(Nrofpins)+"*"
|
|
|
|
+2770 !
|
|
|
|
+2780 ! COMPUTE THE NUMBER OF FUSES IN THE CURRENT PAL TYPE
|
|
|
|
+2790 !
|
|
|
|
+2800 Nrinpline=0
|
|
|
|
+2810 FOR I=1 TO LEN(Inpline$)
|
|
|
|
+2820 IF MID$(Inpline$,I,1)="P" THEN Nrinpline=Nrinpline+1
|
|
|
|
+2830 NEXT I
|
|
|
|
+2840 !
|
|
|
|
+2850 Nrprodline=0
|
|
|
|
+2860 FOR I=Minoutput TO Maxoutput
|
|
|
|
+2870 Nrprodline=Nrprodline+ASCII(MID$(Outputs$,I,1))-48
|
|
|
|
+2880 NEXT I
|
|
|
|
+2890 Nrfuses=Nrinpline*Nrprodline
|
|
|
|
+2900 ; "QF"+NUM$(Nrfuses)+"*" : ; #2 "QF"+NUM$(Nrfuses)+"*"
|
|
|
|
+2910 ; "L0000"; : ; #2 "L0000";
|
|
|
|
+2920 !
|
|
|
|
+2930 FOR Line=0 TO Maxline
|
|
|
|
+2940 Nextfuse=Fusepat(0,Line)
|
|
|
|
+2950 Jedline$=""
|
|
|
|
+2960 FOR Inpline=0 TO Maxinpline
|
|
|
|
+2970 Currfuse=Fusepat(Inpline,Line)
|
|
|
|
+2980 IF Currfuse=255 THEN GOTO 3010
|
|
|
|
+2990 IF Currfuse=1 THEN Jedline$=Jedline$+"1" : GOTO 3010
|
|
|
|
+3000 IF Currfuse=0 THEN Jedline$=Jedline$+"0" ELSE STOP
|
|
|
|
+3010 NEXT Inpline
|
|
|
|
+3020 IF LEN(Jedline$)=0 THEN 3040
|
|
|
|
+3030 PRINT : PRINT Jedline$; : PRINT #2 : PRINT #2 Jedline$;
|
|
|
|
+3040 IF Line=Maxline THEN PRINT "*" : PRINT #2 "*"
|
|
|
|
+3050 NEXT Line
|
|
|
|
+3060 !
|
|
|
|
+3070 CLOSE 1
|
|
|
|
+3080 !
|
|
|
|
+3090 ! I************************* FUSE PLOTTING *****************************
|
|
|
|
+3100 !
|
|
|
|
+3110 PRINT
|
|
|
|
+3120 !
|
|
|
|
+3130 Row=22
|
|
|
|
+3140 ; CUR(Row,0);
|
|
|
|
+3150 INPUT "Output file for fuseplot "File$
|
|
|
|
+3160 IF LEN(File$)=0 THEN GOTO 3490
|
|
|
|
+3170 Per=INSTR(1,File$,".")
|
|
|
|
+3180 IF Per=0 THEN Nam$=File$ : Ext$="plt" : GOTO 3200
|
|
|
|
+3190 Nam$=LEFT$(File$,Per-1) : Ext$=RIGHT$(File$,Per+1)
|
|
|
|
+3200 File$=FNPutext$(Nam$,Ext$)
|
|
|
|
+3210 ; CUR(Row,25) File$ : PREPARE File$ AS FILE 1
|
|
|
|
+3220 PRINT
|
|
|
|
+3230 !
|
|
|
|
+3240 Col1$=" 11 1111 1111 2222 2222 2233 3333 3333"
|
|
|
|
+3250 Col2$=" 0123 4567 8901 2345 6789 0123 4567 8901 2345 6789"
|
|
|
|
+3260 IF Nrofpins=24 THEN ; Col1$ : ; Col2$
|
|
|
|
+3270 IF Nrofpins=20 THEN ; LEFT$(Col1$,43) : ; LEFT$(Col2$,43)
|
|
|
|
+3280 PRINT
|
|
|
|
+3290 IF Nrofpins=24 THEN ; #1 Col1$ : ; #1 Col2$
|
|
|
|
+3300 IF Nrofpins=20 THEN ; #1 LEFT$(Col1$,43) : ; #1 LEFT$(Col2$,43)
|
|
|
|
+3310 PRINT #1
|
|
|
|
+3320 FOR Line=0 TO Maxline
|
|
|
|
+3330 IF Line<10 THEN ; "0";NUM$(Line); ELSE ; NUM$(Line);
|
|
|
|
+3340 IF Line<10 THEN ; #1 "0"+NUM$(Line); ELSE ; #1 NUM$(Line);
|
|
|
|
+3350 ; " "; : ; #1 " ";
|
|
|
|
+3360 FOR Inpline=0 TO Maxinpline
|
|
|
|
+3370 Currfuse=Fusepat(Inpline,Line)
|
|
|
|
+3380 IF Currfuse=255 THEN PRINT "0"; : PRINT #1 "0";
|
|
|
|
+3390 IF Currfuse=1 THEN PRINT "-"; : PRINT #1 "-";
|
|
|
|
+3400 IF Currfuse=0 THEN PRINT "X"; : PRINT #1 "X";
|
|
|
|
+3410 IF MOD(Inpline,4)=3 THEN ; " "; : ; #1 " ";
|
|
|
|
+3420 NEXT Inpline
|
|
|
|
+3430 PRINT : PRINT #1
|
|
|
|
+3440 IF MOD(Line,8)=7 THEN PRINT : PRINT #1
|
|
|
|
+3450 NEXT Line
|
|
|
|
+3460 CLOSE 1
|
|
|
|
+3470 !
|
|
|
|
+3480 !
|
|
|
|
+3490 ! ************* READ TEST VECTORS ****************************
|
|
|
|
+3500 !
|
|
|
|
+3510 Row=22
|
|
|
|
+3520 ; CUR(Row,0) SPACE$(70) : ; CUR(22,0);
|
|
|
|
+3530 INPUT "Enter filename for testvectors "Vec$
|
|
|
|
+3540 IF LEN(Vec$)=0 THEN GOTO 4010
|
|
|
|
+3550 Per=INSTR(1,Vec$,".")
|
|
|
|
+3560 IF Per=0 THEN Nam$=Vec$ : Ext$="vec" : GOTO 3580
|
|
|
|
+3570 Nam$=LEFT$(Vec$,Per-1) : Ext$=RIGHT$(Vec$,Per+1)
|
|
|
|
+3580 Vec$=FNPutext$(Nam$,Ext$)
|
|
|
|
+3590 ; CUR(Row,31) Vec$
|
|
|
|
+3600 ; CUR(Row+1,0) SPACE$(70); ! radera ev felutskrift
|
|
|
|
+3610 !
|
|
|
|
+3620 ON ERROR GOTO 3680
|
|
|
|
+3630 OPEN Vec$ AS FILE 1
|
|
|
|
+3640 ON ERROR GOTO
|
|
|
|
+3650 ; CUR(Row+1,0) SPACE$(70)
|
|
|
|
+3660 GOTO 3720
|
|
|
|
+3670 !
|
|
|
|
+3680 IF (ERRCODE<>21) AND (ERRCODE<>2) THEN 3700
|
|
|
|
+3690 ; CUR(23,0) "Nonexisting file ";Vec$; : RESUME 3520
|
|
|
|
+3700 ; "Error ";ERRCODE : CLOSE : STOP
|
|
|
|
+3710 !
|
|
|
|
+3720 WHILE LEN(Line$)<=2
|
|
|
|
+3730 INPUT LINE #1 Line$ ! skip CR LF lines only
|
|
|
|
+3740 WEND
|
|
|
|
+3750 !
|
|
|
|
+3760 Pos=1
|
|
|
|
+3770 WHILE ASCII(MID$(Line$,Pos,1))<=32 : Pos=Pos+1 : WEND ! skip blanks
|
|
|
|
+3780 IF MID$(Line$,Pos,1)<>"1" THEN Line$="" : GOTO 3720
|
|
|
|
+3790 !
|
|
|
|
+3800 WHILE INSTR(1,Line$,"PASS SIMULATION")=0
|
|
|
|
+3810 !
|
|
|
|
+3820 Pos=1 : V$=""
|
|
|
|
+3830 WHILE ASCII(Line$)<=32 : Line$=RIGHT$(Line$,2) : WEND
|
|
|
|
+3840 WHILE ASCII(Line$)>=33
|
|
|
|
+3850 V$=V$+MID$(Line$,1,1) : Line$=RIGHT$(Line$,2)
|
|
|
|
+3860 WEND
|
|
|
|
+3870 WHILE ASCII(Line$)<=32 : Line$=RIGHT$(Line$,2) : WEND
|
|
|
|
+3880 Line$=RIGHT$(Line$,Pos)
|
|
|
|
+3890 V$="0000"+V$ : V$=RIGHT$(V$,LEN(V$)-3) : V$="V"+V$+" "
|
|
|
|
+3900 !
|
|
|
|
+3910 MID$(Line$,Nrofpins/2,1)="N" : MID$(Line$,Nrofpins,1)="N"
|
|
|
|
+3920 Line$=V$+LEFT$(Line$,LEN(Line$)-2)+"*"
|
|
|
|
+3930 ; Line$ : ; #2 Line$
|
|
|
|
+3940 INPUT LINE #1 Line$
|
|
|
|
+3950 WHILE LEN(Line$)<=2
|
|
|
|
+3960 INPUT LINE #1 Line$ ! SKIP CRLF ONLY LINES
|
|
|
|
+3970 WEND
|
|
|
|
+3980 !
|
|
|
|
+3990 WEND
|
|
|
|
+4000 ; "T00*" : ; #2 "T00*"
|
|
|
|
+4010 CLOSE 1,2
|
|
|
|
+4020 END
|