' JJJJ ?\>' L-=l>  ԠéԠˠ#~?  xDIR ERA TYPESAVEREN USERv^!yO#< Ty#O 3ǯ21y_͸2y2ͽ:ķ˜1͘A͌>>͌92^ :˷¥.!_~#fow]ɭʎʥ!v"!çREAD ERRORçNO FILE^:˷#͘*~ "Ʒ"͌#>?͌͘ =_.:;<> Oƅo$>!Y2*O"ʉ@G:ʐ:wÖx2p0ʹ#*©6?ëw˜0ï#6 ¹.0#*6?w0#6 #6"  Ň!˶2:2a{_:˷ʖ:˷>Ľʖ:=2–!B!6#5ʖ:˷Ľ!ͬʧ )!F#xʺ~0wëw!" !~6ͽ:ý(!\XDIRRDK;/ COPY E:=A:***;E:;/ RUN;RUNGITAL RESEARCH _͌> ͒> Ò> Ò͘~#͌ì _2<į2͔TP4@,( L̀H0 EUQ5A-) Ḿ I1y୽y: :):>:(y2E!|"*wɍ`JX)^>EEP?+ ԩ ~~~~~~ĭ ?  JL ``LLL>2:Py22222PKASO-DRIVER˹>2y >/ͻ!:w  >7û >'û' ͦ æ^ ͦ'ͦÍ 0! ~G/////2>2! >2! - % }\X<!%9]Y=$8<}D $Lq<`ΧԠĠڸčԠԠ͠Ԡ؍2>o:= gw8H<8H=` }Hx / hJ Leh<> > @A @A>i =<>+ LeÍڍh@(L>*// -П( ( $8` %  ZNx`. }x$50x.$50xL JJJJ`Hjf5 }h $50x`  Ȍ` Hx  -(hL(h8֩`Lx (`H݌hHhHh݌>?F؅G(jf5(  ;  R( FGj 0x j $xxH` ( Rh RL.xxH h  !"#$%&'()*+,-./0123456789:;<=>?x&& 8 , P ; ' / \ ; & ; x)*++`FGG8`0($ p,&" cI꽌ɪVɭ&Y & &Y &   꽌ɪ\8`&&꽌ɪɖ'*&%&,E'зЮ꽌ɪФ`V0 ^ *^ *>`+*xS&x'8*3IxiU ,>J>V J>V `8'x0| &HhHh V Y V '&Y V x ꪽV ' `Hh` ! ~ 3#0 Wx x ƀ Ƃ G ~ # 3x~#B!Y~ɯ2:˷=!˾ý:˷=!˾:ý^T!~  6?#ˆ:`O> K{͘A͒>:͒͢>:͒͢xK > K > ͒x  ͢ØÆ^ BRͧ9!5‚#~Y‚#"T<ÆALL (Y/N)?^ Tʧ͘!6!~ڇ ɯw4!Y~ʆ͌†t=ʆf ^ T ɯ2o&)|+!<ͧЯ2*C!!~~#~O~G#n,-.‹! w! yG!x͢.:E<ʄ! q!pQ:E<. ʄ$.:E<ʄi6}2ExN! ~态O>G~G!~G} *C!r#r#r ^ͥ_y#x#{2>2T*CGͻ:ẅ́n>2;O ^DM;}H>"*C :ٷ:ddslO s#r:EϷ͊:==»y==»*Ww#*"͸*:G#š"͸:!پw4!iw:Z!E~=26 w ~>2!E5T*C!"C"C!w# F! w͌xѯ2͢*C ~<wʃG:٠!٦ʎì 4~ʶ¬:<ʶ$ʶïZͻЯx>2>2ͻ:!پZկ2:EϷẅ́͊Ͳ> *C ^OT *C~wD -'  -@ͦ~^*C Ox! N!Fwyxʋ>ڋ>*Cw~#+w#w+ɯ2E22i^ *C :ٷ~w~͔͔# # ::/GyO>2!q*C"͡ʔ*JҔ^:Oyʃ?|x | sӖ-|N-# S:2E!~Яw>T D^6k-äPYy 5*{zBK5:AϾ#~$=2Ek͌ ):BO!yoxg*:BO}!N#F "*#*s#r^ ~!J! J*:مo$*C~i6iw**{#zr+s{ozg**͕** Ѿ,w͜͸Ͳ!!N#F$**O!~#O: \зSЀ*C :ٷqn& ^#V>O^"*}:*)=":O:١o"*C *C!ͮ~2~2ͦ:٦2ͮ:ЯO:فw:w |g}o*ٯ# 2E>! ^#V w#P:BO|^#V#"##"##"##"!O*!O*|!6ʝ6>گ*w#w*w#w'û*ڷ! J*""!N#F*^#V*~#foyx*{_zW+*x: 2 p&x~+é7ͯ2 H! >w_: ! Ͼ5ͤNkͱ¦ͱxʊ#Nx: Ϸ! ϖ2 ͤ! 5™#wO~x½p Hy<< ڷʑ :!qMD# O͐  :ϷE B 2>: Ϸb# : Ϸy! 4 5~yy5 6yҐ^H@Oy H H: –ͬ  #H: ! Ͼ Hù H H $O͐: 2 *CN# ʽv^̙̥̫̱"C{2!"E9"1Aϯ22!ty)K!G_^#V*Cΐ~؃E؜إث ,&-AGMSϛ!!ô!ô!Bdos Err On : $Bad Sector$Select$File R/O$:BA2!~6=qf^!~2>`~2˯2\!!B!~> >#0~O#Cx2͘1)ͽÂf zͧÆBAD LOADCOMf^: !˶ Â$$$ SUBÆNO SPACE^ :Ty!B*O=?_s#"^sG!~Yʸpsp2mÆÆf ͧÆFILE EXISTS _: É: :˷ʉ=2)ͽÉ T!@k!}|qs+p+q-*C ͥ!!q#p#w*:BOYG}*MD "ã:!BϾw!>2*C~=2u:B2~2wE:A*C϶w>"!""ٯ2B!"!rQQQâ~?ͦ~?rQ*"CQ-Q͜QüQrQ$Q*):B"*)*)Q;*"E:;:A2AQÓQÜQ*C}/_|/*٤W}_*"}o|g":ٷʑ*C6:ٷʑw:2E**E}DQ>2C0T"I !>"H>2J: !͢:d::d!s~B#1!P!J߇o~,foɷp:BB Apple ][ CP/M 56K Ver. 2.20B (C) 1980 Microsoft ;ۯ2>EE??++B#1!P!J߇o~,foɷp;ۯ2:޷;ۯ2e ]~6(*} *:޽ y(3:޷s:2G<2x/a2:oa":޷zޯ2{![:޷ <2:>sɯ2>!>2!;:*     1>2>2*"?ۯ2:08 !"Y"BT"->2:8Y"/:8Y"F~!xq!;`~0,~!M;!x~>.~8[q>:޷ 2y2!!{o!:=8 ~y!3w.y2Cɯ2>!w#w#wOa."y .:g"*"!~((5:# :*޽ :޼ $| 8g,"ޯ2!"_!ޅoN!޷((+! ~O#O:x >2ޯ2:޷*(*D*:wk*(:$_"~28 ?@wx( !;!܅ony 2$8!2E!y>>?22!ɯog"$2E!.B...X&*}(8.|8&"$պ`~(,qy2E[22G: 2:O*:P!O#~#'۹~y/:02?"2O: K*:*(0**:8'(*:08* *: 8(*7!w˹#~(=5:!( +_ywɷ+ͱ*:]lc_O{- OMG!~_ :( 6>83! ~èCfuÇKmVÉÎÓãݯ`iޓښ:ޓڦJޓڲZޓھjޓzޓߊ / !~ `66= !; !{g1:Q!͢گ22>2!"2!"͎>2UDCNT AT> PAL20I OR PAL20I OR !"#$%&'()PAL20I OR*+,-./0123456789PAL20I OR :;<=PAL24I OR>?@ABCDEFGHIJKLMPAL24I ORNOPQRSTUVWXYZ[\]PAL24I ORk^_`abcdefghijk* I2*/I1*/I0 ;SHIFT LEFT + ( A1)* I2* I1*/I0*( A0)* RIO ;INCREMENT + (/A1)* I2* I1* I0*(/A0)* RIO ;DECREMENT + CLR ;CLEAR B0 B1 B2 B3 I2 CLR GND /OC /LIO NC A3 A2 A1 A0 NC /RIO VCC IF (/I2* I1*/I0) RIO = (A0) ;SHIFT RIGHT /A0 := (/A0)*/I2*/I1*/I0 ;HOLD A0 + (/B0)*/I2*/I1* I0 ;SHFIT LEFT + ( A0)* I2* I1*/I0* RIO ;INCREMENT + (/A0)* I2* I1* I0* RIO ;DECREMENT + CLR ;CLEAR /A2 := (/A2)*/I2*/I1*/I0 BBCD ATlmBFLIP AT+nopqrsBGATES ATtuvCNT10 AT)wxyz{|EDG AT}~GO COMEXAMPLE DAT/I0 ;INCREMENT + RIO* I2* I1* I0 ;DECREMENT + CLR ;CLEAR /A1 := (/A1)*/I2*/I1*/I0 ;HOLD A1 + ( ;LOAD A0 + (/A1)*/I2* I1*/I0 ;SHIFT RIGHT + (/A0)* I2* I1 ;HOLD (INC AND DEC) :+: /RIO* I2*/I1*/I0 ;SHIFT LEFT + RIO* I2* I1* ;HOLD A2 + (/B2)*/I2*/I1* I0 ;LOAD A2 + (/A3)*/I2* I1*/I0 ;SHIFT RIGHT + (/A2)* I2* I1 ;HOLD (INC AND DEC) :+: (/A1) PAL16X4 PAL DESIGN SPECIFICATION UDCNT BIRKNER/COLI 07/07/81 4-BIT UP/DOWN COUNTER WITH SHIFT AND THREE STATE OUTPUTS MMI SUNNYVALE, CALIFORNIA CLK I0 I1/B1)*/I2*/I1* I0 ;LOAD A1 + (/A2)*/I2* I1*/I0 ;SHIFT RIGHT + (/A1)* I2* I1 ;HOLD (INC AND DEC) :+: (/A0)* I2*/I1*/I0 /A3 := (/A3)*/I2*/I1*/I0 ;HOLD A3 + (/B3)*/I2*/I1* I0 ;LOAD A3 + /I2* I1*/I0*/LIO ;SHIFT RIGHT + (/A3)* I2* I1 HHLH SHIFT LEFT IN A H C L L HLL XXXX H H HLHH SHIFT LEFT IN A H C L L HLL XXXX L H LHHH SHIFT LEFT IN A H C L L HLL XXXX H H HHHH SHIFT LEFT IN A H C L L LHL XXXX XXXX X H HHLL DECREMENT C L L HHH XXXX X H HLHH DECREMENT C L L HHH XXXX X H HLHL DECREMENT C L L HHH XXXX X H HLLH DECREMENT C L L HHH XXXX X H HLLL CTION TABLE CLK /OC CLR I2 I1 I0 B3 B2 B1 B0 LIO RIO A3 A2 A1 A0 ;--CONTROL-- INST INPUT OUTPUT ;CLK /OC CLR III BBBB L R AAAA ; 210 3210 IO IO 3210 COMMENTS ------------------------------------------LLLL SHIFT LEFT IN A L C L L LHL XXXX H L HLLL SHIFT RIGHT IN A H C L L LHL XXXX L L LHLL SHIFT RIGHT IN A L C L L LHL XXXX L L LLHL SHIFT RIGHT IN A L C L L LHL XXXX L HHL XXXX X H HLHH INCREMENT C L L HHL XXXX X H HHLL INCREMENT C L L HHL XXXX X H HHLH INCREMENT C L L HHL XXXX X H HHHL INCREMENT C L L HHL XXXX X H ;HOLD (INC AND DEC) :+: (/A2)* I2*/I1*/I0 ;SHIFT LEFT + ( A2)* I2* I1*/I0*( A1)*( A0)* RIO ;INCREMENT + (/A2)* I2* I1* I0*(/A1)*(/A0)* RIO ;DECREMENT + CLR H XXXX X H LLHH DECREMENT C L L HHH XXXX X H LLHL DECREMENT C L L HHH XXXX X H LLLH DECREMENT C L L HHH XXXX X H LLLL DECREMENT C L L HLL XXXX L H LLLH DECREMENT C L L HHH XXXX X H LHHH DECREMENT C L L HHH XXXX X H LHHL DECREMENT C L L HHH XXXX X H LHLH DECREMENT C L L HHH XXXX X H LHLL DECREMENT C L L HH--------------------- C H X XXX XXXX X X ZZZZ TEST HI-Z C L L LLH LLLL Z Z LLLL LOAD ZEROS C L L LLL XXXX Z Z LLLL HOLD C L L HHL XXXX X H LLLH INCREMENT C L L H LLLH SHIFT RIGHT IN A L C L L LHL XXXX L L LLLL SHIFT RIGHT IN A L C L L HLH XXXX L Z HHHH SET C L L HLL XXXX H L HHHL SHIFT LEFT IN A L C L L HLL XXXX H H HHHH INCREMENT C L H XXX XXXX Z Z LLLL CLEAR C L L LHH XXXX Z Z HHHH SET C L L HHH XXXX X H HHHL DECREMENT C L L HHH XXXX X H HHLH DECREMENT C L L HHH ;CLEAR IF ( I2) LIO = I2*/I1*/I0*( A3) ;SHIFT LEFT + I2* I1*/I0*( A3)*( A2)*( A1)*( A0)* RIO ;INCREMENT + I2* I1* I0*(/A3)*(/A2)*(/A1)*(/A0)* RIO ;DECREMENT FUN SHIFT LEFT IN A H C L L HLL XXXX L L LLHL SHIFT LEFT IN A L C L L HLL XXXX L L LHLL SHIFT LEFT IN A L C L L HLL XXXX H L HLLL SHIFT LEFT IN A L C L L HLL XXXX L L HHL INCREMENT C L L HHL XXXX X H LHHH INCREMENT C L L HHL XXXX X H HLLL INCREMENT C L L HHL XXXX X H HLLH INCREMENT C L L HHL XXXX X H HLHL INCREMENT C L L HHL XXXX X H LLHL INCREMENT C L L HHL XXXX X H LLHH INCREMENT C L L HHL XXXX X H LHLL INCREMENT C L L HHL XXXX X H LHLH INCREMENT C L L HHL XXXX X H L L H LHHH SHIFT RIGHT IN A L C L L LHL XXXX H H HLHH SHIFT RIGHT IN A H C L L LHL XXXX H H HHLH SHIFT RIGHT IN A H C L L LHL XXXX H L HHHL SHIFT RIGHT IN A H C L L LHL ) C C / COMPLEMENT C * AND, PRODUCT C + OR, SUM C :+: EXCLUSIVE OR C MERS. C C INPUT: PAL DESIGN SPECIFICATION ASSIGNED C TO RPD(1). OPERATION CODES ARE C ASSIGNED TO ROP(5). C C OUTPUT: ECHO, --------------------------- X H X X X X X X X Z HI-Z C L H X X X X X X L CLEAR C L L L L L X X X A HOLD C L L L L H C A = B*C + D C C A := B*C + D C C IF( A*B ) C = D + E C C A2 := (A1:*:B1) + /C C C ~ # x2& "<1;!)ͮ:8, 0ں:ں:K ں: O)))) - & 2 2 9h8 addr:Hex Dec Binary Ascii Entec8ͺ/>~5 h88~Gʹ/8xͦ/8ẍ́/8x> >-8x  97@ 88h8 :h8h86*w#x/! XXXX H H HHHH SHIFT RIGHT IN A H ---------------------------------------------------------------- DESCRIPTION THE UP/DOWN COUNTER WITH SHIFT WILL LOAD, SHIFT, COUNT UP, COUNT DOWN, CLEAR, OR HOLD ON THE RISING EDGE OF THE CLOCK AS ERROR MESSAGES ARE ASSIGNED TO C PMS(6). C C PART NUMBER: THE PAL PART NUMBER MUST C APPEAR IN COLUMN ONE OF LINE ONE C C SIMULATION, AND FUSE PATTERN C ARE ASSIGNED TO POF(6). HEX AND C BINARY PROGRAMMING FORMATS ARE C ASSIGNED TO PDF(6). PROMPTS AND C B X X B LOAD B C L L L H L X RI A1 SHIFT RT RI SHIFT RIGHT C L L L H H X X X H SET C L L H L L X A2 LI SHIFT LT LI SHIFT LEFT ALL CHARACTERS FOLLOWING ';' ARE C IGNORED UNTIL THE NEXT LINE C C BLANKS ARE IGNORED C C OPERATORS: ( IN HIERARCHY OF EVALUATION C**PALASM20**PALASM20**PALASM20**PALASM20**PALASM20**PALASM20**PALASM20* C C P A L A S M 2 0 - TRANSLATES SYMBOLIC EQUATIONS INTO PAL OBJECT C CODE FORMATTED FOR DIRECT INPUT TO STANDARD C PROM PROGRAM SPECIFIED BY THE INSTRUCTION, I. THESE OPERATIONS ARE EXERCISED IN THE FUNCTION TABLE AND SHOWN IN THE OPERATIONS TABLE BELOW. CLK /OC CLR I2 I1 I0 B4-B0 LIO RIO A4-A0 OPERATION ------------------------------------------------- PIN LIST: 20 SYMBOLIC PIN NAMES MUST APPEAR C STARTING ON LINE 5 C C EQUATIONS: STARTING FIRST LINE AFTER THE C PIN LIST IN THE FOLLOWING FORMS: C---------------------------------------------- NOTE THAT SHIFT I/O, CARRY AND BORROW SHARE THE SAME I/O LINES (LIO AND RIO). > C L L H L H X L X H SET C L L H H L X COUT CIN A PLUS 1 INCREMENT IF CIN C L L H H H X BOUT BIN A MINUS 1 DECREMENT IF BIN ------------------------------- :*: EXCLUSIVE NOR C () CONDITIONAL THREE-STATE C OR FIXED SYMBOL C = EQUALITY C := RE LINE ERROR) LPRD=.FALSE. C HEADER WILL BE PRINTED IF LHEAD IS TRUE C CHANGE THIS STATEMENT SO LHEAD IS FALSE IF NO HEADER IS DESIRED LHEAD=.FALSE. C READ IN FIRST 4 LINES OF THE PAL DESIGN SPECIFICATION READ(RPD,10) IPAL(4),REST(73),PATNUM(80),TITLE(80),COMP(80), 1 ISYM(8,20),IBUF(8,20) LOGICAL LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR,LXNOR, 1 LFIX,LFIRST,LMATCH,LFUSES(32,64),LPHASE(20),LBUF(20), 2 LPROD(80),LSAME,LACT+:BN) C (AN*/BN) C (/AN+BN) C (AN:*:BN) C (BN) C (AN*BN) C N (OUTPUT) C PDF - HEX AND BINARY FORMAT PROGRAM TAPES (OUTPUT) C PMS - PROMPTS AND ERROR MESSAGES (OUTPUT) RPD=1 ROC=5 POF=LUN PDF=LUN PMS=LUN IFUNCT=0 IDESC=0 C INITIALIZE LSAME AND LACT TO BJECT CODE OF THE C EXAMPLES IN THE APPLICATIONS C SECTION ON A VAX/VMS COMPUTER C AND A NATIONAL CSS IBM SYSTEM/370 C PLACED BY (AFTER CLOCK) C C FIXED SYMBOLS C FOR PAL16X4 C AND PAL16A4 C ONLY: (AN+/BN) WHERE N = 0,1,2,3 C (AN+BN) /'S'/,L/'L'/, 1 N/'N'/,Q/'Q'/,U/'U'/,F/'F'/,C/'C'/,R/'R'/,A/'A'/ DATA BB/'B'/,CC/'C'/,DD/'D'/,EE/'E'/,FF/'F'/,II/'I'/,NN/'N'/, 1 OO/'O'/,PP/'P'/,RR/'R'/,SS/'S'/,TT/'T'/,UU/'U'/ C C WRITE(6,1) 1 FORMAT(/,' WHAT IS TH,LOPERR,LINP,LPRD,LHEAD COMMON LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR,LXNOR COMMON /PGE/ IPAGE(80,200) COMMON /LUNIT/ PMS,POF,PDF COMMON /FTEST/ IFUNCT,IDESC,IEND DATA E/'E'/,O/'O'/,T/'T'/,P/'P'/,B/'B'/,H/'H'/,S (/AN) C (/AN*/BN) C (/AN*BN) C C SUBROUTINES: INITLZ,GETSYM,INCR,MATCH,FIXSYM, C IXLATE,ECHO,PINOUT,PLOT,FALSE (ACTIVE HIGH/LOW ERROR) LSAME=.FALSE. LACT=.FALSE. C INITIALIZE LOPERR TO FALSE (OUTPUT PIN ERROR) LOPERR=.FALSE. C INITIALIZE LINP TO FALSE (INPUT PIN ERROR) LINP=.FALSE. C INITIALIZE LPRD TO FALSE (PRODUCT FORTRAN IV(G). C C*********************************************************************** C C C*********************************************************************** C C C MAIN PROGRAM C IMPLICIT INTEGER (A-Z) INTEGER IPA FOR OUTPUT PINS C (AN) 17,16,15,14, RESP C (/AN+/BN) A IS OUTPUT C (/BN) B IS INPUT C (AN:E LOGICAL UNIT NUMBER FOR OUTPUT?: ',$) READ(6,2) LUN 2 FORMAT(I4) C ASSIGNMENT OF DATA SET REFERENCES C RPD - PAL DESIGN SPECIFICATION (INPUT) C ROC - OPERATION CODE (INPUT) C POF - ECHO, PINOUT, SIMULATION, AND FUSE PATTER RESPONSIBILITY FOR THE OPERATION C OR MAINTENANCE OF THIS PROGRAM. C THE SOURCE CODE AS PRINTED HERE C PRODUCED THE OTWEEK,BINR, C HEX,SLIP,FANTOM,IODC2,IODC4,TEST, C FIXTST C C REV LEVEL: 06/15/81 C C FINE PRINT: MONOLITHIC MEMORIES TAKES NO C L,INOAI,IOT,INOO,REST,PATNUM,TITLE,COMP 10 FORMAT(4A1,A1,A1,A1,73A1,/,80A1,/,80A1,/,80A1) C READ IN PIN LIST (LINE 5) THROUGH THE END OF THE PAL DESIGN C SPECIFICATION DO 15 J=1,200 READ(RPD,11,END=16) (IPAGE(I,J),I=1,80) GO TO 118 69 IF(LFIX) GO TO 59 CALL MATCH(IMATCH,IBUF,ISYM) IF( ITYPE.EQ.1.AND.IMATCH.GT.11 ) LINP=.TRUE. IF( ITYPE.EQ.2.AND.(IMATCH.GT.12.AND.IMATCH.LT.19) ) 1 LINP=ND. 1 (IMATCH.LT.12.OR.IMATCH.GT.19) ) LOPERR=.TRUE. IF( ITYPE.EQ.2.AND.(IMATCH.LT.13.OR.IMATCH.GT.18) ) 1 LOPERR=.TRUE. IF( ITYPE.EQ.3.AND.(IMATCH.LT.14.OR.IMATCH.GT.17) ) ).EQ.DD.AND. 1 IPAGE(2,J).EQ.EE.AND.IPAGE(3,J).EQ.SS.AND. 2 IPAGE(4,J).EQ.CC.AND.IPAGE(5,J).EQ.RR.AND. 3 IPAGE(6,J).EQ.II.AND.IPAGE(7,J).EQ.PP.AND. 4 IPAGE(8,J).EQ.TT.AND.IPAGE(9,J).EQ.II.AND. 5 IPAGE(10,J).EQ.O CALL GETSYM(LBUF,IBUF,1,IC,IL,LFIX) IF( (ITYPE.EQ.1.OR.ITYPE.EQ.2.AND.IPRD.GT.13 1 .AND.IPRD.LT.18).AND.COUNT.GT.2 ) LPRD=.TRUE. IF( (ITYPE.EQ.3.OR.ITYPE.EQ.2.AND.(IPRD.EQ.13.OR. 1 IF(.NOT.LEQUAL) GO TO 25 COUNT=0 CALL MATCH(IMATCH,IBUF,ISYM) IPRD=IMATCH C CHECK FOR VALID POLARITY LSAME = ( ( LPHASE(IMATCH)).AND.( LBUF(1)).OR. 1 (.NOT.LPHASE(IMATCH)).AN 11 FORMAT(80A1) C CHECK FOR 'FUNCTION TABLE' AND SAVE ITS LINE NUMBER IF( IFUNCT.EQ.0 .AND.IPAGE(1,J).EQ.FF.AND. 1 IPAGE(2,J).EQ.UU.AND.IPAGE(3,J).EQ.NN.AND. 2 IPAGE(4,J).EQ.CC.AND.IPAGE(5,J).EQ.TT.AND. 3 I I88PRO=(19-IMATCH)*8 + 1 C START PAL16C1 ON PRODUCT LINE 25 IF(IOT.EQ.C) I88PRO=25 IC=0 30 CALL INCR(IC,IL,LFIX) IF( .NOT.(LEQUAL.OR.LLEFT) ) GO TO 30 LPROD(I88PRO)=.TRUE. 1 LOPERR=.TRUE. IF( ITYPE.EQ.4.AND.(IMATCH.LT.15.OR.IMATCH.GT.16) ) 1 LOPERR=.TRUE. ILL=IL IF( (LACT).OR.(LOPERR) ) GO TO 100 O.AND.IPAGE(11,J).EQ.NN ) IDESC=J 15 CONTINUE C SAVE THE LAST LINE NUMBER OF THE PAL DESIGN SPECIFICATION 16 IEND=J-1 CALL INITLZ(INOAI,IOT,INOO,ITYPE,LFUSES,IC,IL,IBLOW,LFIX) ILE=IL+1 C PRINT ERROR MESSAGE FOR INVALID PAL P IPRD.EQ.18)).AND.COUNT.GT.4 ) LPRD=.TRUE. IF( IOT.NE.A.AND.IOT.NE.C.AND.COUNT.GT.8 ) LPRD=.TRUE. IF( .NOT.LPRD ) GO TO 69 IF(IL.NE.IFUNCT.AND.IL.NE.IDESC) ILL=IL IPROD = IPROD - 1 D.(.NOT.LBUF(1)) ) IF( IOT.EQ.H.AND.(.NOT.LSAME) ) LACT=.TRUE. IF( (.NOT.(IOT.EQ.H.OR.IOT.EQ.C)).AND.(LSAME) ) LACT=.TRUE. C CHECK FOR VALID OUTPUT PIN IF( (ITYPE.EQ.1.OR.ITYPE.EQ.5.OR.ITYPE.EQ.6).APAGE(6,J).EQ.II.AND.IPAGE(7,J).EQ.OO.AND. 4 IPAGE(8,J).EQ.NN.AND.IPAGE(10,J).EQ.TT.AND. 5 IPAGE(12,J).EQ.BB.AND.IPAGE(14,J).EQ.EE ) IFUNCT=J C CHECK FOR 'DESCRIPTION' AND SAVE ITS LINE NUMBER IF( IDESC.EQ.0 .AND.IPAGE(1,J IF(.NOT.LLEFT) CALL SLIP(LFUSES,I88PRO,INOAI,IOT,INOO,IBLOW) DO 70 I8PRO=1,16 COUNT = COUNT + 1 IPROD = I88PRO + I8PRO - 1 LPROD(IPROD)=.TRUE. LFIRST=.TRUE. 50 ILL=IL LFIX) IF(.NOT.(LEQUAL.OR.LLEFT.OR.LAND.OR.LOR.OR.LRIGHT)) GO TO 24 WRITE(PMS,23) 23 FORMAT(/,' LESS THAN 20 PIN NAMES IN PIN LIST') STOP 24 ILE=IL 25 CALL GETSYM(LBUF,IBUF,1,IC,IL,LFIX) 28 ART TYPE IF(ITYPE.NE.0) GO TO 17 WRITE(PMS,18) IPAL,INOAI,IOT,INOO 18 FORMAT(/,' PAL PART TYPE ',4A1,A1,A1,A1,' IS INCORRECT') STOP C GET 20 PIN NAMES 17 DO 20 J=1,20 20 CALL GETSYM(LPHASE,ISYM,J,IC,IL,.TRUE. IF( ITYPE.EQ.3.AND.(IMATCH.GT.13.AND.IMATCH.LT.18) ) 1 LINP=.TRUE. ILL=IL IF(LINP) GO TO 100 IF( IMATCH.EQ.0 ) GO TO 100 C IF( IMATCH.GE.90.AND.(LD EQUATIONS', 8 ' AND GENERATES TEST VECTORS', 9 //,' PLOT (P) - PRINTS THE ENTIRE FUSE PLOT' A //,' BRIEF (B) - PRINTS ONLY THE USED PRODUCT LINES', B ' OF THE FUSE PLOT',/,' ' FOR ',4A1,A1,A1,A1) C PRINT AN ERROR MESSAGE FOR AN INVALID INPUT PIN IF(LINP) WRITE(PMS,115) IMATCH,IPAL,INOAI,IOT,INOO 115 FORMAT(' THIS PIN NUMBER ',I2,' IS AN INVALID INPUT PIN', 1 ' FOR ',4A1,A1,A1,A1) C PRINT AN ERROD,TITLE,.FALSE.,ITYPE, 1 LPROD,IOP,IBLOW) GO TO 60 59 CALL FIXSYM(LBUF,IBUF,IC,IL,LFIRST,LFUSES,IBLOW, 1 IPROD,LFIX) 60 IF(LAND) GO TO 50 64 IF(.NONAL HEADER IF(LHEAD) WRITE(6,104) 104 FORMAT(/,' THIS PALASM AIDS THE USER IN THE DESIGN AND' 1 ' PROGRAMMING OF THE',/,' SERIES 20 PAL FAMILY. THE', 2 ' FOLLOWING OPTIONS ARE PROVIDED:', 3 //,' ECHO (EED SINCE ',4A1,A1,A1,A1, 1 ' IS AN ACTIVE LOW DEVICE') IF( (LACT).AND.(.NOT.LSAME).AND.(.NOT.LOPERR) ) 1 WRITE(PMS,109) IPAL,INOAI,IOT,INOO 109 FORMAT(' OUTPUT CANNOT BE INVERTED SINCE ',4A1,A1,A1,A1, 1 ' IS OT) ) GO TO 25 27 IF( IMATCH.EQ.10.OR.IMATCH.GE.90 ) GO TO 64 IF(.NOT.LFIRST) GO TO 58 LFIRST=.FALSE. DO 56 I=1,32 IBLOW = IBLOW + 1 56 ER ',I3,/,' ',80A1) IF( LPRD.AND.COUNT.LT.8 ) 1 WRITE(PMS,116) IPROD,IPAL,INOAI,IOT,INOO 116 FORMAT(' THIS PRODUCT LINE NUMBER ',I2,' IS NOT VALID', 1 ' FOR ',4A1,A1,A1,A1) IF( LPRD.AND.COUNT.GT.8 ) 1 R MESSAGE FOR INVALID PRODUCT LINE 118 ILERR=ILL+4 IF(LPRD) WRITE(PMS,119) 1 (ISYM(I,IPRD),I=1,8),IPRD,ILERR,(IPAGE(I,ILL),I=1,80) 119 FORMAT(/,' OUTPUT PIN NAME = ',8A1,' OUTPUT PIN NUMBER = ',I2, 1 /,' MINTERM IN LINE NUMBOT.LRIGHT) GO TO 68 66 CALL INCR(IC,IL,LFIX) IF(.NOT.LEQUAL) GO TO 66 68 IF( .NOT.(LOR.OR.LEQUAL) ) GO TO 74 70 CONTINUE 74 ILL=IL CALL GETSYM(LBUF,IBUF,1,IC,IL,LFIX) IF() - PRINTS THE PAL DESIGN', 4 ' SPECIFICATION', 5 //,' PIN OUT (O) - PRINTS THE PIN OUT OF THE PAL', 6 //,' SIMULATE (T) - EXERCISES THE FUNCTION TABLE', 7 ' VECTORS IN THE LOGIC',/,' AN ACTIVE HIGH DEVICE') C PRINT AN ERROR MESSAGE FOR AN INVALID OUTPUT PIN IF( (LOPERR).AND.IMATCH.NE.0 ) 1 WRITE(PMS,105) IMATCH,IPAL,INOAI,IOT,INOO 105 FORMAT(' THIS PIN NUMBER ',I2,' IS AN INVALID OUTPUT PIN', 1 LFUSES(I,IPROD)=.TRUE. 58 CALL IXLATE(IINPUT,IMATCH,LPHASE,LBUF,ITYPE) IF(IINPUT.LE.0) GO TO 60 IBLOW = IBLOW - 1 LFUSES(IINPUT,IPROD)=.FALSE. CALL PLOT(LBUF,IBUF,LFUSES,IPRO WRITE(PMS,117) IPAL,INOAI,IOT,INOO 117 FORMAT(' MAXIUM OF 8 PRODUCT LINES ARE VALID FOR ',4A1,A1,A1,A1, 1 /,' TOO MANY MINTERMS ARE SPECIFIED IN THIS EQUATION') STOP 102 IF(ITYPE.LE.4) CALL TWEEK(ITYPE,IOT,LFUSES) C PRINT OPTI8A1,' IN LINE NUMBER ',I3, 1 /,' ',80A1) C PRINT AN ERROR MESSAGE FOR ACTIVE HIGH/LOW PART IF( (LACT).AND.( LSAME).AND.(.NOT.LOPERR) ) 1 WRITE(PMS,103) IPAL,INOAI,IOT,INOO 103 FORMAT(' OUTPUT MUST BE INVERTLLEFT.OR.LEQUAL) GO TO 28 100 IF( ILL.EQ.IFUNCT.OR.ILL.EQ.IDESC ) GO TO 102 C PRINT AN ERROR MESSAGE IF UNRECOGNIZABLE SYMBOL ILERR=ILL+4 WRITE(PMS,101) (IBUF(I,1),I=1,8),ILERR,(IPAGE(I,ILL),I=1,80) 101 FORMAT(/,' ERROR SYMBOL = ', PHANTOM FUSES', C ' ARE OMITTED', D //,' HEX (H) - GENERATES HEX OUTPUT FOR PAPER TAPE', E //,' SHORT (S) - GENERATES HEX OUTPUT FOR PAPER TAPE', F //,' BHLF (L) - GENERATES BHLF OUXOR,LXNOR COMMON /PGE/ IPAGE(80,200) DATA IBLANK/' '/ LFIX=.FALSE. IF( .NOT.(LLEFT.OR.LAND.OR.LOR.OR.LEQUAL.OR.LRIGHT) ) GO TO 10 CALL INCR(IC,IL,LFIX) IF(LLEFT) GO TO 60 10 LPHASE(J)=( .NOT.LSLASH ) IF(INTERS) IC=0 IL=1 C INITIALIZE ITYPE (PAL PART TYPE) ITYPE=0 C ITYPE IS ASSIGNED THE FOLLOWING VALUES FOR THESE PAL TYPES: C PAL10H8,PAL10L8 ITYPE=1 C PAL12H6,PAL12L6 L,INOAI,IOT,INOO,REST,PATNUM,TITLE, 1 COMP) IF(IOP.EQ.O) CALL PINOUT(IPAL,INOAI,IOT,INOO,REST,TITLE) IF(IOP.EQ.T) CALL TEST(LPHASE,LBUF,TITLE,IC,IL,ILE,ISYM,IBUF, 1 ITYPE,INOO,LFIX) CALL INCR(IC,IL,LFIX) RETURN END C C*********************************************************************** C SUBROUTINE GETSYM(LPHASE,ISYM,J,IC,IL,LFIX) C THIS SUBROUTINE GETS THE PIN NAME, / IF COMPLEMENT LOGIC, AND C D,LOR,LSLASH,LEQUAL,LRIGHT,LXOR,LXNOR, 1 LFIX,LFUSES(32,64) COMMON LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR,LXNOR COMMON /PGE/ IPAGE(80,200) DATA H/'H'/,L/'L'/,C/'C'/,R/'R'/,X/'X'/,A/'A'/ 1 I0/'0'/,I2/'2'TPUT FOR PAPER TAPE', G //,' BNPF (N) - GENERATES BNPF OUTPUT FOR PAPER TAPE', H //,' QUIT (Q) - EXIT PALASM') 108 WRITE(6,106) 106 FORMAT(/,' OPERATION CODES:') WRITE(6,107) 107 FORMAT(/,' E=ECHO INPUT ITYPE=6 C DETERMINE ITYPE IF( INOAI.EQ.I0 ) ITYPE=1 IF( INOAI.EQ.I2 ) ITYPE=2 IF( INOAI.EQ.I4 ) ITYPE=3 IF( (INOAI.EQ.I6) ) ITYPE=2 C PAL14H4,PAL14L4 ITYPE=3 C PAL16H2,PAL16L2,PAL16C1 ITYPE=4 C PAL16L8 ITYPE=5 C PAL16R4,PAL16R6,PAL16R8,PAL16X4,PAL16A4 IF(IOP.EQ.P) CALL PLOT(LBUF,IBUF,LFUSES,IPROD,TITLE,.TRUE.,ITYPE, 1 LPROD,IOP,IBLOW) IF(IOP.EQ.B) CALL PLOT(LBUF,IBUF,LFUSES,IPROD,TITLE,.TRUE.,ITYPE, 1 LPROD,IOP,IBLOW) IF(IOP.EQ.H) THE FOLLOWING OPERATION SYMBOL IF ANY IMPLICIT INTEGER (A-Z) INTEGER ISYM(8,20) LOGICAL LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR,LXNOR, 1 LFIX,LPHASE(20) COMMON LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,L/,I4/'4'/,I6/'6'/,I8/'8'/ C INITIALIZE LFUSES ARRAY (FUSE ARRAY) DO 20 J=1,64 DO 20 I=1,32 20 LFUSES(I,J)=.FALSE. C INITIALIZE IBLOW (NUMBER OF FUSES BLOWN) IBLOW=0 C INITIALIZE IC AND IL (COLUMN AND LINE POO=PIN OUT T=SIMULATE P=PLOT B=BRIEF', 1 /,' H=HEX S=SHORT L=BHLF N=BNPF Q=QUIT') WRITE(6,110) 110 FORMAT(/,' ENTER OPERATION CODE:') READ(ROC,120) IOP 120 FORMAT(A1) C CALL IODC2 IF(IOP.EQ.E) CALL ECHO(IPA ITYPE=4 IF( (INOAI.EQ.I6).AND.(INOO.EQ.I8) ) ITYPE=5 IF( (IOT.EQ.R).OR.(IOT.EQ.X).OR.(IOT.EQ.A) ) ITYPE=6 IF( .NOT.(IOT.EQ.H.OR.IOT.EQ.L.OR.IOT.EQ.C 1 .OR.IOT.EQ.R.OR.IOT.EQ.X.OR.IOT.EQ.A) ) ITYPE=0 ********************************** C SUBROUTINE INITLZ(INOAI,IOT,INOO,ITYPE,LFUSES,IC,IL,LFIX) C THIS SUBROUTINE INITIALIZES VARIABLES AND MATCHES PAL PART C NUMBER WITH ITYPE IMPLICIT INTEGER (A-Z) LOGICAL LBLANK,LLEFT,LANCALL HEX(LFUSES,H) IF(IOP.EQ.S) CALL HEX(LFUSES,S) IF(IOP.EQ.L) CALL BINR(LFUSES,H,L) IF(IOP.EQ.N) CALL BINR(LFUSES,P,N) C CALL IODC4 IF(IOP.NE.Q ) GO TO 108 STOP END C C*************************************LPHASE(J)) GO TO 15 CALL INCR(IC,IL,LFIX) 15 DO 20 I=1,8 20 ISYM(I,J)=IBLANK 25 DO 30 I=1,7 30 ISYM(I,J)=ISYM(I+1,J) ISYM(8,J)=IPAGE(IC,IL) CALL INCR(IC,IL,LFIX) IF( LLEFT.OR.LBLANK.OR.LAND.OR.LOR.OR.LRIG,19,-1,-1,15,11, 7,-20, 5 3, 1, 5, 9,13,17,21,25,29,-10,31,-1,27,23,19,15,11, 7,-1,-20, 6 -1, 1, 5, 9,13,17,21,25,29,-10,-1,31,27,23,19,15,11, 7, 3,-20/ IINPUT=0 IBUBL=0 IF((( LPHASE(IMATCH)).AND.(.NOT.LBUF(1))).OR. NAME IN THE PIN LIST OR FUNCTION TABLE PIN LIST IMPLICIT INTEGER (A-Z) INTEGER IBUF(8,20),ISYM(8,20) LOGICAL LMATCH DATA C/'C'/,A/'A'/,R/'R'/,Y/'Y'/,N0/'0'/,N1/'1'/,N2/'2'/,N3/'3'/ IMATCH=0 DO 20 J=1,20 N /PGE/ IPAGE(80,200) COMMON /LUNIT/ PMS,POF,PDF DATA IBLANK/' '/,ILEFT/'('/,IAND/'*'/,IOR/'+'/,COMENT/';'/, 1 ISLASH/'/'/,IEQUAL/'='/,IRIGHT/')'/,ICOLON/':'/ LBLANK=.FALSE. LXOR=.FALSE. LXNOR=.FALSE. LX1PIN NUMBER AND C THE INPUT LINE NUMBER FOR A SPECIFIC PAL. ADD 1 TO THE INPUT C LINE NUMBER IF THE PIN IS A COMPLEMENT IMPLICIT INTEGER (A-Z) INTEGER ITABLE(20,6) LOGICAL LPHASE(20),LBUF(20) DATA ITABLE/ 1 OR=.TRUE. GO TO 10 34 LLEFT =( IPAGE(IC,IL).EQ.ILEFT ) LAND =( IPAGE(IC,IL).EQ.IAND ) LOR =( IPAGE(IC,IL).EQ. IOR ) LSLASH=( IPAGE(IC,IL).EQ.ISLASH ) LEQUAL=( IPAGE(IC,IL).EQ.IEQUAL ) LRIGHT=( IPAGE(IC,HT.OR.LEQUAL ) RETURN GO TO 25 60 LFIX=.TRUE. RETURN END C C********************************************************************** C SUBROUTINE INCR(IC,IL,LFIX) C THIS SUBROUTINE INCREMENTS COLUMN AND LINE POINTERS Q.R.AND. 1 IBUF(6,1).EQ.R.AND.IBUF(7,1).EQ.Y ) IMATCH=99 IF( IBUF(8,1).EQ.N0.AND.IMATCH.EQ.99 ) IMATCH=90 IF( IBUF(8,1).EQ.N1.AND.IMATCH.EQ.99 ) IMATCH=91 IF( IBUF(8,1).EQ.N2.AND.IMATCH.EQ.99 ) IMATCH=92 IF( IBUF(8,1 LMATCH=.TRUE. DO 10 I=1,8 10 LMATCH=LMATCH.AND.(IBUF(I,1).EQ.ISYM(I,J)) IF(LMATCH) IMATCH=J 20 CONTINUE C MATCH CARRY WHICH IS FOUND IN THE PAL16A4 IF( IBUF(3,1).EQ.C.AND.IBUF(4,1).EQ.A.AND.IBUF(5,1).E=.FALSE. 10 IC=IC+1 IF( IC.LE.79.AND.IPAGE(IC,IL).NE.COMENT ) GO TO 30 IL=IL+1 IF(IL.LE.200) GO TO 20 WRITE(PMS,15) 15 FORMAT(/,' SOURCE FILE SIZE EXCEEDS 200 LINES') STOP 20 IC=0 GO TO 10 3, 1, 5, 9,13,17,21,25,29,-10,31,-1,-1,-1,-1,-1,-1,-1,-1,-20, 2 3, 1, 5, 9,13,17,21,25,29,-10,31,27,-1,-1,-1,-1,-1,-1, 7,-20, 3 3, 1, 5, 9,13,17,21,25,29,-10,31,27,23,-1,-1,-1,-1,11, 7,-20, 4 3, 1, 5, 9,13,17,21,25,29,-10,31,27,23IL).EQ.IRIGHT ) RETURN END C C*********************************************************************** C SUBROUTINE MATCH(IMATCH,IBUF,ISYM) C THIS SUBROUTINE FINDS A MATCH BETWEEN THE PIN NAME IN THE EQUATION C AND THE PINC BLANKS AND CHARACTERS AFTER ';' ARE IGNORED IMPLICIT INTEGER (A-Z) LOGICAL LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR,LXNOR, 1 LFIX,LX1 COMMON LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR,LXNOR COMMO).EQ.N3.AND.IMATCH.EQ.99 ) IMATCH=93 RETURN END C C*********************************************************************** C SUBROUTINE IXLATE(IINPUT,IMATCH,LPHASE,LBUF,ITYPE) C THIS SUBROUTINE FINDS A MATCH BETWEEN THE INPUT TO 10 33 IF(LXOR) LOR=.TRUE. IF(LXNOR) LAND=.TRUE. RETURN 32 IF( .NOT.(LX1.AND.(IPAGE(IC,IL).EQ.IOR.OR.IPAGE(IC,IL).EQ.IAND)) ) 1 GO TO 34 IF( IPAGE(IC,IL).EQ.IOR ) LXOR=.TRUE. IF( IPAGE(IC,IL).EQ.IAND ) LXN 30 IF( IPAGE(IC,IL).EQ.ICOLON.AND.(LFIX) ) RETURN IF( IPAGE(IC,IL).NE.IBLANK ) GO TO 31 LBLANK=.TRUE. GO TO 10 31 IF( IPAGE(IC,IL).NE.ICOLON ) GO TO 32 IF( (LXOR).OR.(LXNOR) ) GO TO 33 LX1=.TRUE. GO 1 ((.NOT.LPHASE(IMATCH)).AND.( LBUF(1)))) IBUBL=1 IF( ITABLE(IMATCH,ITYPE).GT.0 ) IINPUT=ITABLE(IMATCH,ITYPE)+IBUBL RETURN END C C*********************************************************************** C SUBROUTIN IIN(5,2)=INOO IIN(6,2)=REST(1) J=0 IL=0 30 IC=0 IL=IL+1 35 IC=IC+1 40 IF( IC.GT.80 ) GO TO 30 IF( IPAGE(IC,IL).EQ.IBLANK ) GO TO 35 J=J+1 IF(J.GT.20) GO TO 60 DO 55 I=1,8 PINFUSES,IPROD,TITLE,.FALSE.,ITYPE, 1 LPROD,IOP,IBLOW) 100 LFIX=.FALSE. CALL INCR(IC,IL,LFIX) RETURN END C C*********************************************************************** C SUBROUTINE ECHO(IPAL,INOAI,I / ' ','A','+','/','B',' ',' ','A','+','B', 4 ' ',' ',' ',' ','A','/','A','+','/','B',' ',' ',' ','/','B', 5 'A',':','+',':','B',' ','A','*','/','B',' ','/','A','+','B', 6 'A',':','*',':','B',' ',' ',' ',' ','B',' ',' IMPLICIT INTEGER (A-Z) INTEGER IPAL(4),REST(73),TITLE(80),PIN(8,20),IIN(7,2) COMMON /PGE/ IPAGE(80,200) COMMON /LUNIT/ PMS,POF,PDF DATA IBLANK/' '/,ISTAR/'*'/ DO 10 J=1,20 DO 5 I=1,8 5 PIN(I,J0 LMATCH=LMATCH .AND. ( FIXBUF(I).EQ.TABLE(I,J) ) 60 IF(LMATCH) IMATCH=J IF(IMATCH.EQ.0) GO TO 100 IF(.NOT.LFIRST) GO TO 85 LFIRST=.FALSE. DO 80 I=1,32 LFUSES(I,IPROD)=.TRUE. 80 E FIXSYM(LBUF,IBUF,IC,IL,LFIRST,LFUSES,IBLOW,IPROD,LFIX) C THIS SUBROUTINE EVALUATES THE FIXED SYMBOLS FOUND IN THE C PAL16X4 AND PAL16A4 IMPLICIT INTEGER (A-Z) LOGICAL LBUF(20),LFUSES(32,64),LFIRST,LMATCH,LFIX INTEGER IBUF(F,PDF COMMON /FTEST/ IFUNCT,IDESC,IEND WRITE(POF,10) IPAL,INOAI,IOT,INOO,REST,PATNUM,TITLE,COMP 10 FORMAT(/,' ',4A1,A1,A1,A1,73A1,/,' ',80A1,/,' ',80A1,/,' ',80A1) DO 30 J=1,IEND WRITE(POF,20) (IPAGE(I,J),I=1,80) 20OT,INOO,REST,PATNUM,TITLE,COMP) C THIS SUBROUTINE PRINTS THE PAL DESIGN SPECIFICATION INPUT FILE IMPLICIT INTEGER (A-Z) INTEGER IPAL(4),REST(73),PATNUM(80),TITLE(80),COMP(80) COMMON /PGE/ IPAGE(80,200) COMMON /LUNIT/ PMS,PO ','A','*','B', 7 ' ',' ',' ','/','A','/','A','*','/','B',' ','/','A','*','B'/ IINPUT=0 DO 20 I=1,8 IBUF(I,1)=IBLANK 20 FIXBUF(I)=IBLANK 21 CALL INCR(IC,IL,LFIX) I=IPAGE(IC,IL) IF(I.EQ.IRIGHT) G)=IBLANK 10 CONTINUE 15 DO 25 J=1,2 DO 20 I=1,7 20 IIN(I,J)=IBLANK 25 CONTINUE IIN(3,1)=IPAL(1) IIN(4,1)=IPAL(2) IIN(5,1)=IPAL(3) IIN(2,2)=IPAL(4) IIN(3,2)=INOAI IIN(4,2)=IOT IBLOW = IBLOW + 1 85 DO 90 I=1,4 IF( (IMATCH-7).LE.0 ) GO TO 90 LFUSES(IINPUT+I,IPROD)=.FALSE. IBLOW = IBLOW - 1 IMATCH=IMATCH-8 90 IMATCH=IMATCH+IMATCH LBUF(1)=.TRUE. CALL PLOT(LBUF,IBUF,L8,20),FIXBUF(8),TABLE(5,14) COMMON /PGE/ IPAGE(80,200) DATA A/'A'/,B/'B'/,ISLASH/'/'/,IOR/'+'/,IBLANK/' '/,IRIGHT/')'/, 1 IAND/'*'/,N/'N'/,Q/'Q'/,N0/'0'/,N1/'1'/,N2/'2'/,N3/'3'/, 2 ICOLON/':'/, 3 TABLE FORMAT(' ',80A1) 30 CONTINUE RETURN END C C*********************************************************************** C SUBROUTINE PINOUT(IPAL,INOAI,IOT,INOO,REST,TITLE) C THIS SUBROUTINE PRINTS THE PIN OUT OF THE PAL EQ.IOR) 1 .OR.(I.EQ.IAND).OR.(I.EQ.ICOLON) ) ) GO TO 21 DO 30 I=1,4 30 FIXBUF(I)=FIXBUF(I+1) FIXBUF(5)=IPAGE(IC,IL) GO TO 21 40 IMATCH=0 DO 60 J=1,14 LMATCH=.TRUE. DO 50 I=1,5 5O TO 40 IF(I.EQ.N0) IINPUT=8 IF(I.EQ.N1) IINPUT=12 IF(I.EQ.N2) IINPUT=16 IF(I.EQ.N3) IINPUT=20 DO 24 J=1,7 24 IBUF(J,1)=IBUF(J+1,1) IBUF(8,1)=I IF(.NOT. ( (I.EQ.A).OR.(I.EQ.B).OR.(I.EQ.ISLASH).OR.(I.(I,J)=IPAGE(IC,IL) IC=IC+1 IF( IC.GT.80 ) GO TO 40 55 IF( IPAGE(IC,IL).EQ.IBLANK ) GO TO 40 60 DO 75 J=1,10 II=0 65 II=II+1 IF(II.EQ.9) GO TO 75 IF( PIN(II,J).NE.IBLANK ) GO TO 65 ANK 85 CONTINUE IF( (IOP.EQ.P).OR.(IOP.EQ.B.AND.(LPROD(IPROD+1))) ) 1 WRITE(POF,90) IPROD,IOUT 90 FORMAT(' ',I2,8(' ',4A1),' ',32A1) 94 CONTINUE WRITE(POF,96) 96 FORMAT(1X) (LDUMP) GO TO 60 IF(ISAVE(IPROD,1).NE.IBLANK) RETURN IF( LBUF(1) ) GO TO 5 DO 30 J=1,31 30 ISAVE(IPROD,J)=ISAVE(IPROD,J+1) ISAVE(IPROD,32)=ISLASH 5 DO 20 I=1,8 IF( ISAVE(IPROD,1).NE.IBLANK ) RETURN WRITE(POF,80) ISTAR,ISTAR,ISTAR,ISTAR, 1 ISTAR,ISTAR,ISTAR,ISTAR 80 FORMAT(' ',9X,4A1,17X,4A1) WRITE(POF,81) (PIN(I,J),I=1,8),ISTAR,J,ISTAR, 1 (IIN(I,1),I=1,7),ISTAR,JJ,ISTAR,(PIN(I,JJ),I= ISAVE(IPROD,J)=ISAVE(IPROD,J+1) 65 CONTINUE ISAVE(IPROD,32)=IBLANK 70 CONTINUE DO 80 I=1,32 IOUT(I)=X IF( LFUSES(I,IPROD) ) IOUT(I)=IDASH ************************** C SUBROUTINE PLOT(LBUF,IBUF,LFUSES,IPROD,TITLE,LDUMP,ITYPE, 1 LPROD,IOP,IBLOW) C THIS THIS SUBROUTINE PRODUCES THE FUSE PLOT IMPLICIT INTEGER (A-Z) INTEGER IBUF(8,20),IOUT(64),ISAVE I=9 70 I=I-1 II=II-1 PIN(I,J)=PIN(II,J) PIN(II,J)=IBLANK IF(II.NE.1) GO TO 70 75 CONTINUE WRITE(POF,76) TITLE 76 FORMAT('1',/,' ',80A1) WRITE(POF,78) ISTAR,ISTAR,ISTAR,ISTAISAVE(IPROD,J+1) ISAVE(IPROD,32)=IAND RETURN C PRINT FUSE PLOT 60 WRITE(POF,62) TITLE 62 FORMAT(/,' ',80A1,//, 1 ' 11 1111 1111 2222 2222 2233',/, 2 ' 0123 4567 8901 2345 6789 0123 4567 8901',/) IF( IBUF(I,1).EQ.IBLANK ) GO TO 20 DO 10 J=1,31 10 ISAVE(IPROD,J)=ISAVE(IPROD,J+1) ISAVE(IPROD,32)=IBUF(I,1) 20 CONTINUE IF(ISAVE(IPROD,1).NE.IBLANK) RETURN 40 DO 50 J=1,31 50 ISAVE(IPROD,J)=1,8) 81 FORMAT(' ',8A1,1X,A1,I2,A1,5X,7A1,5X,A1,I2,A1,1X,8A1) WRITE(POF,82) ISTAR,ISTAR,ISTAR,ISTAR, 1 ISTAR,ISTAR,ISTAR,ISTAR 82 FORMAT(' ',9X,4A1,17X,4A1) WRITE(POF,84) ISTAR,(IIN(I,2),I=1,7),I IOUT(I+32)=ISAVE(IPROD,I) 80 CONTINUE IF(ITYPE.LE.4) CALL FANTOM(ITYPE,IOUT,IPROD,I8PRO) IPROD=IPROD-1 DO 85 J=1,32 IF( IOP.EQ.B.AND.IOUT(J).EQ.HIFANT ) IOUT(J)=IBL(64,32),TITLE(80) LOGICAL LBUF(20),LFUSES(32,64),LDUMP,LPROD(80) COMMON /LUNIT/ PMS,POF,PDF DATA ISAVE/2048*' '/,IAND/'*'/,IOR/'+'/,ISLASH/'/'/, 1 IDASH/'-'/,X/'X'/,IBLANK/' '/,P/'P'/,B/'B'/, 2 HIFANT/'O'/ IFR,ISTAR,ISTAR,ISTAR,ISTAR, 1 ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR, 2 ISTAR,ISTAR,ISTAR,ISTAR 78 FORMAT(/,' ',12X,8A1,3X,8A1, 1 /,' ',12X,A1,7X,A1,1X,A1,7X,A1) JJ=20 DO 88 J=1,10 DO 100 I88PRO=1,57,8 DO 94 I8PRO=1,8 IPROD=I88PRO+I8PRO-1 ISAVE(IPROD,32)=IBLANK DO 70 I=1,32 IF( ISAVE(IPROD,1).NE.IBLANK ) GO TO 70 DO 65 J=1,31 AR, 1 ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR, 2 ISTAR,ISTAR,ISTAR 90 FORMAT(' ',12X,19A1) WRITE(POF,92) 92 FORMAT('1') RETURN END C C*********************************************STAR 84 FORMAT(' ',12X,A1,5X,7A1,5X,A1) DO 86 II=1,2 DO 85 I=1,7 85 IIN(I,II)=IBLANK 86 CONTINUE JJ=JJ-1 88 CONTINUE WRITE(POF,90) ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,IST 100 CONTINUE WRITE(POF,110) 110 FORMAT(/, 1' LEGEND: X : FUSE NOT BLOWN (L,N,0) - : FUSE BLOWN (H,P,1)') IF( IOP.EQ.P.AND.ITYPE.LE.4 ) WRITE(POF,111) 111 FORMAT( 1' 0 : PHANTOM FUSE (L,N,0) O : PHANT 50 IF(IOT.NE.C) LFUSES(IINPUT,IPROD+40)= (IOT.NE.L) 99 CONTINUE RETURN END C C*********************************************************************** C SUBROUTINE BINR(LFUSES,H,L) C THIS SUBROUTINE GENERATES LFUSES(19,IPROD)=.TRUE. LFUSES(20,IPROD)=.TRUE. IF(ITYPE.GE.3) GO TO 10 LFUSES(11,IPROD)=.TRUE. LFUSES(12,IPROD)=.TRUE. LFUSES(23,IPROD)=.TRUE. LFUSES(24,IPROD)=.TRUE. /'S'/ IF(IOP.EQ.H) WRITE(PDF,10) 10 FORMAT(//,' .',//) C***** NOTE: SOME PROM PROGRAMMERS NEED A START CHARACTER. C***** THIS PROGRAM OUTPUTS AN STX FOR THE DATA I/O MODEL 9 C***** (USE SOTYPE.EQ.1) .OR. ((ITYPE.EQ.4).AND.(IOT.EQ.L)) ) RETURN DO 99 IINPUT=1,32 DO 30 IPROD=1,8 LFUSES(IINPUT,IPROD+ 0)= (IOT.NE.L) 30 IF(IOT.NE.C) LFUSES(IINPUT,IPROD+56)= (IOT.NE.L) IF(ITYPE.LE.2) GO TO 99',//,' .',//) RETURN END C C*********************************************************************** C SUBROUTINE TWEEK(ITYPE,IOT,LFUSES) C THIS SUBROUTINE TWEEKS LFUSES (THE PROGRAMMING FUSOM FUSE (H,P,1)') WRITE(POF,112) IBLOW 112 FORMAT(/,' NUMBER OF FUSES BLOWN = ',I4) WRITE(POF,113) 113 FORMAT(//) RETURN END C C*********************************************************************** C SUBROUTINEFUSES(IINPUT,IPROD+4)=.FALSE. LFUSES(IINPUT,IPROD+5)=.FALSE. LFUSES(IINPUT,IPROD+6)=.FALSE. 12 LFUSES(IINPUT,IPROD+7)=.FALSE. IF(ITYPE.GE.3) GO TO 18 DO 14 IPROD=17,41,8 LFUSES( IF(ITYPE.GE.2) GO TO 10 LFUSES( 7,IPROD)=.TRUE. LFUSES( 8,IPROD)=.TRUE. LFUSES(27,IPROD)=.TRUE. LFUSES(28,IPROD)=.TRUE. 10 CONTINUE DO 18 IINPUT=7,28 DO 12 IPROD=1,57,8 LH FOR MODEL 5) WRITE(PDF,5) BEL,BEL,BEL,BEL,BEL,BEL,BEL,STX,SOH 5 FORMAT(9A1) DO 40 I=1,33,32 INC=I-1 DO 40 IPROD=1,7,2 DO 20 J=1,2 DO 20 IINPUT=1,32 IHEX=0 IF(LFUSE DO 40 IPROD=1,8 LFUSES(IINPUT,IPROD+ 8)= (IOT.NE.L) 40 IF(IOT.NE.C) LFUSES(IINPUT,IPROD+48)= (IOT.NE.L) IF(ITYPE.LE.3) GO TO 99 DO 50 IPROD=1,8 LFUSES(IINPUT,IPROD+16)= (IOT.NE.L) E PLOT) C FOR HIGH AND LOW PHANTOM FUSES IMPLICIT INTEGER (A-Z) LOGICAL LFUSES(32,64) DATA L/'L'/,C/'C'/ IF(ITYPE.GE.4) GO TO 20 DO 10 IPROD=1,64 LFUSES(15,IPROD)=.TRUE. LFUSES(16,IPROD)=.TRUE. HEX(LFUSES,IOP) C THIS SUBROUTINE GENERATES HEX PROGRAMMING FORMATS IMPLICIT INTEGER (A-Z) INTEGER ITEMP(64) LOGICAL LFUSES(32,64) COMMON /LUNIT/ PMS,POF,PDF DATA STX/Z02000000/,BEL/Z2F000000/,SOH/01000000/,H/'H'/,SIINPUT,IPROD+2)=.FALSE. 14 LFUSES(IINPUT,IPROD+3)=.FALSE. IF(ITYPE.GE.2) GO TO 18 DO 16 IPROD=1,57,8 LFUSES(IINPUT,IPROD+2)=.FALSE. 16 LFUSES(IINPUT,IPROD+3)=.FALSE. 18 CONTINUE 20 IF( (IITEMP(IINPUT + 32*(J-1) )=IHEX IF(IOP.EQ.H) WRITE(PDF,60) ITEMP 40 IF(IOP.EQ.S) WRITE(PDF,61) ITEMP 60 FORMAT(' ',32(Z1,' '),'.',/,' ',32(Z1,' '),'.') 61 FORMAT(' ',64Z1) IF(IOP.EQ.H) WRITE(PDF,70) 70 FORMAT(' S(IINPUT,IPROD + J-1 + 0+INC)) IHEX=IHEX+1 IF(LFUSES(IINPUT,IPROD + J-1 + 8+INC)) IHEX=IHEX+2 IF(LFUSES(IINPUT,IPROD + J-1 +16+INC)) IHEX=IHEX+4 IF(LFUSES(IINPUT,IPROD + J-1 +24+INC)) IHEX=IHEX+8 20 BINARY PROGRAMMING FORMATS IMPLICIT INTEGER (A-Z) INTEGER ITEMP(4,8) LOGICAL LFUSES(32,64) COMMON /LUNIT/ PMS,POF,PDF WRITE(PDF,10) 10 FORMAT(//,' .',//) DO 20 I=1,33,32 C SUBROUTINE TEST(LPHASE,LBUF,TITLE,IC,IL,ILE,ISYM,IBUF, 1 ITYPE,INOO,LFIX) C THIS SUBROUTINE PERFORMS THE FUNCTION TABLE SIMULATION C AND GENERATES TEST VECTORS IMPLICIT INTEGER (A-Z) INTEGER ISYM(8,20)) RETURN IF((ITYPE.EQ.2).AND.((IPROD.LE. 8).OR.(IPROD.GE.53))) RETURN IF((ITYPE.LE.3).AND.(I8PRO.GE.5)) RETURN IF((ITYPE.LE.2).AND.(IPROD.GE.19).AND.(IPROD.LE.48).AND. 1 (I8PRO.GE.3)) RETURN IF((ITYPE.EQ.1).AND.(I8PRO.GONTINUE 20 WRITE(PDF,30) ITEMP 30 FORMAT(' ',8('B',4A1,'F ')) WRITE(PDF,10) RETURN END C C*********************************************************************** C SUBROUTINE SLIP(LFUSES,I88PRO,INOAI,I DC2,BEL 10 FORMAT(' ',2A1) RETURN END C C*********************************************************************** C SUBROUTINE IODC4 C*****THIS ROUTINE IS OPTIONAL, IT MAY BE USED TO TURN PERIPHERALS OFF IMPLICIT INTEGER SUBROUTINE FANTOM(ITYPE,IOUT,IPROD,I8PRO) C THIS SUBROUTINE UPDATES IOUT (THE PRINTED FUSE PLOT) C FOR HIGH AND LOW PHANTOM FUSES IMPLICIT INTEGER (A-Z) INTEGER IOUT(64) DATA X/'X'/,IDASH/'-'/,LOFANT/'0'/,HIFANT/'O'/ INC=I-1 DO 20 IPROD=1,8 DO 20 J=1,25,8 DO 15 K=1,8 IINPUT=J+K-1 ITEMP(1,K)=L ITEMP(2,K)=L ITEMP(3,K)=L ITEMP(4,K)=L ).OR.(I.EQ. 8).OR.(I.EQ.27).OR.(I.EQ.28)).AND. 1 (ITYPE.LE.1)) GO TO 50 IF( IOUT(I).EQ.HIFANT ) IOUT(I)=IDASH IF( IOUT(I).EQ.LOFANT ) IOUT(I)=X 50 CONTINUE RETURN END C C****************************************E.3)) RETURN DO 50 I=1,32 IF(((I.EQ.15).OR.(I.EQ.16).OR.(I.EQ.19).OR.(I.EQ.20)).AND. 1 (ITYPE.LE.3)) GO TO 50 IF(((I.EQ.11).OR.(I.EQ.12).OR.(I.EQ.23).OR.(I.EQ.24)).AND. 1 (ITYPE.LE.2)) GO TO 50 IF(((I.EQ. 7OT,INOO,IBLOW) C THIS SUBROUTINE WILL BLOW THE ENTIRE CONDITIONAL TRI STATE C PRODUCT LINE WHEN 'IF(VCC)' CONDITION IS USED FOR THE C CORRESPONDING OUTPUT PIN IMPLICIT INTEGER (A-Z) LOGICAL LFUSES(32,64) DATA R/'R'/,I1 (A-Z) COMMON /LUNIT/ PMS,POF,PDF DATA DC3/Z37000000/,DC4/Z3C000000/,BEL/Z2F000000/ WRITE(PDF,10) BEL,DC3,DC4 10 FORMAT(' ',3A1) RETURN END C C*********************************************************************** DO 10 I=1,32 IF( IOUT(I).EQ.IDASH ) IOUT(I)=HIFANT IF( IOUT(I).EQ.X ) IOUT(I)=LOFANT 10 CONTINUE IF((ITYPE.EQ.4).AND.((IPROD.LE.24).OR.(IPROD.GE.41))) RETURN IF((ITYPE.EQ.3).AND.((IPROD.LE.16).OR.(IPROD.GE.45) IF(LFUSES(IINPUT,IPROD+ 0+INC)) ITEMP(4,K)=H IF(LFUSES(IINPUT,IPROD+ 8+INC)) ITEMP(3,K)=H IF(LFUSES(IINPUT,IPROD+16+INC)) ITEMP(2,K)=H IF(LFUSES(IINPUT,IPROD+24+INC)) ITEMP(1,K)=H 15 C******************************* C SUBROUTINE IODC2 C*****THIS ROUTINE IS OPTIONAL, IT MAY BE USED TO TURN PERIPHERALS ON IMPLICIT INTEGER (A-Z) COMMON /LUNIT/ PMS,POF,PDF DATA DC2/Z12000000/,BEL/Z2F000000/ WRITE(PDF,10)(I88PRO.LE.41).AND.(INOO.EQ.I4)) ) RETURN DO 10 I=1,32 IBLOW = IBLOW + 1 10 LFUSES(I,I88PRO) = .TRUE. I88PRO = I88PRO + 1 RETURN END C C*********************************************************************** C /'1'/,I2/'2'/,I4/'4'/,I6/'6'/,I8/'8'/ IF( (INOAI.NE.I6) .OR. (INOO.EQ.I1) .OR. (INOO.EQ.I2) .OR. 1 ( (IOT.EQ.R).AND.(INOO.EQ.I8) ) .OR. 2 ( (I88PRO.GE. 9).AND.(I88PRO.LE.49).AND.(INOO.EQ.I6) ) .OR. 3 ( (I88PRO.GE.17).AND.),ISYM1(8,20),IBUF(8,20),IVECT(20),IVECTP(20), 1 ISTATE(20),ISTATT(20),IPIN(20),TITLE(80) LOGICAL LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR,LXNOR, 1 LFIX,LSAME,XORFND,LERR,LPHASE(20),LPHAS1(20),LBUF(20), 2 Q.14.OR.J.EQ.15.OR.J.EQ.16.OR.J.EQ.17) LENABL(I)=.FALSE. IF( INOO.EQ.I6.AND.(J.EQ.13.OR.J.EQ.18) ) LENABL(I)=.FALSE. IF( INOO.EQ.I8.AND.(J.EQ.12.OR.J.EQ.13 1 .OR.J.EQ.18.OR.J.EQ.19) ) LENABL(I)=.FALSE. I=1,IMAX IF(IPAGE(IC,IL).EQ.IBLANK) GO TO 21 GO TO 22 21 IC=IC+1 IF(IPAGE(IC,IL).EQ.IBLANK) GO TO 21 22 IVECT(I)=IPAGE(IC,IL) IC=IC+1 20 CONTINUE C ADVANCE LINE COUNT TO SKIP FUNCTION TABLE COMMENTST BE SUPPLIED IN ORDER TO PERFORM', 1 ' SIMULATION') RETURN C PRINT TITLE 3 WRITE(POF,4) TITLE 4 FORMAT(/,' ',80A1,/) C INITIALIZE LERR (ERROR FLAG) TO NO ERROR LERR=.FALSE. C SET THE STARTING POINT OF T IF(ITYPE.NE.6) GO TO 25 C CHECK CLOCK AND TRI STATE ENABLE PINS AND CHANGE FLAG IF NEEDED IF(IVECT(ICLOCK).EQ.C) LCLOCK=.TRUE. LSAME=( ( LPHASE(11)).AND.( LPHAS1(ITRST)).OR. 1 (.NOT.LPHASE(11)).AND.(.NOT.LPHAS1(IT IF(ITYPE.NE.6) GO TO 10 IF(IMATCH.EQ.1) ICLOCK=I IF(IMATCH.EQ.11) ITRST=I 10 IPIN(I)=IMATCH C ALL SIGNAL NAMES FOR THE FUNCTIONAL TEST HAVE BEEN READ IN C ADJUST COUNT 12 IMAX=I-1 NVECT=0 C C*****START O LOUT(20),LOUTP(20),LCLOCK,LPTRST,LCTRST,LENABL(20),NREG COMMON LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR,LXNOR COMMON /PGE/ IPAGE(80,200) COMMON /LUNIT/ PMS,POF,PDF COMMON /FTEST/ IFUNCT,IDESC,IEND DATA IDASH/'-' GO TO 11 WRITE(PMS,8) IVECT(I) 8 FORMAT(/,' ',A1,' IS NOT AN ALLOWED FUNCTION TABLE ENTRY') RETURN 11 CONTINUE C INITIALIZE CLOCK AND TRI STATE ENABLE FLAGS LCLOCK=.FALSE. LCTRST=.TRUE. LPTRST=.TRU IL=IL+1 IC=1 IF(IVECT(1).EQ.IDASH) GO TO 95 C CHECK FOR VALID FUNCTION TABLE VALUES (L,H,X,Z,C) DO 11 I=1,IMAX IF( IVECT(I).EQ.L.OR.IVECT(I).EQ.H.OR.IVECT(I).EQ.X.OR. 1 IVECT(I).EQ.Z.OR.IVECT(I).EQ.C)HE FUNCTION TABLE TO COLUMN 0 C AND IFUNCT + 1 IC=0 IL=IFUNCT + 1 C MAKE A DUMMY CALL TO INCR CALL INCR(IC,IL,LFIX) C GET THE FUNCTION TABLE PIN LIST (UP TO 18) C GO ONE MORE THAN MAX TO LOOK FOR DASHED LINE TRST)) ) IF( IVECT(ITRST).EQ.L.AND.(.NOT.LSAME).OR. 1 IVECT(ITRST).EQ.H.AND.( LSAME) ) LPTRST=.FALSE. IF(LPTRST) GO TO 25 C DISABLE REGISTERED OUTPUTS IF APPROPRIATE DO 46 I=1,IMAX J=IPIN(I) IF(J.EF MAIN LOOP FOR SIMULATION***** C 90 NVECT=NVECT+1 IC1=0 IL1=ILE C GO PASSED COMMENT LINES 23 IF(IPAGE(1,IL).NE.COMENT) GO TO 24 IL=IL+1 GO TO 23 24 CONTINUE C GETS VECTORS FROM FUNCTION TABLE DO 20/,L/'L'/,H/'H'/,X/'X'/,C/'C'/,Z/'Z'/,N0/'0'/,N1/'1'/, 1 IBLANK/' '/,COMENT/';'/,I6/'6'/,I8/'8'/ C PRINT AN ERROR MESSAGE IF NO FUNCTION TABLE IS SUPPLIED IF(IFUNCT.NE.0) GO TO 3 WRITE(PMS,2) 2 FORMAT(/,' FUNCTION TABLE MUSE. DO 13 I=1,IMAX 13 LENABL(I)=.TRUE. C INITIALIZE NREG (NOT REGISTERED OUTPUT) TO FALSE NREG=.FALSE. C INITIALIZE ISTATE ARRAY TO ALL X'S DO 15 I=1,20 15 ISTATE(I)=X C CHECK IF THIS PAL TYPE HAS REGISTERS ) 6 FORMAT(/,' FUNCTION TABLE PIN LIST ERROR AT', 8A1) RETURN 7 LOUT(I)=.FALSE. ISTATT(I)=X IVECTP(I)=X C IF APPROPIATE PAL TYPE, REMEMBER LOCATION OF CLOCK AND TRI STATE C ENABLE PIN IN FUNCTION TABLE PIN LIS DO 10 I=1,19 CALL GETSYM(LPHAS1,ISYM1,I,IC,IL,LFIX) DO 5 J=1,8 5 IBUF(J,1)=ISYM1(J,I) IF(IBUF(8,1).EQ.IDASH) GO TO 12 CALL MATCH(IMATCH,IBUF,ISYM) IF(IMATCH.NE.0) GO TO 7 WRITE(PMS,6) (IBUF(J,1),J=1,846 CONTINUE C C*****SCAN THROUGH THE LOGIC EQUATIONS***** C C MAKE A DUMMY CALL TO INCR 25 CALL INCR(IC1,IL1,LFIX) 26 CALL GETSYM(LBUF,IBUF,1,IC1,IL1,LFIX) IF(LLEFT) GO TO 29 27 IF(.NOT.LEQUAL) GO TO 26 C EVALUATE CONDITIONACOMPARING CURRENT C LINE NUMBER WITH FUNCTION TABLE LINE NUMBER IF(IDESC.NE.0.AND.IL1.LT.IFUNCT.AND.IL1.LT.IDESC.OR. 1 IDESC.EQ.0.AND.IL1.LT.IFUNCT) GO TO 27 C DETERMINE OUTPUT LOGIC VALUES C COMPARE OUTPUTS TO SEE IF VECTOR) ) GO TO 37 CALL MATCH(IIFB,IBUF,ISYM) IF( IIFB.EQ.14.OR.IIFB.EQ.15.OR.IIFB.EQ.16.OR.IIFB.EQ.17 ) 1 ITEST=IVECTP(IINP) IF( (INOO.EQ.I6.OR.INOO.EQ.I8).AND.(IIFB.EQ.13.OR.IIFB.EQ.18) ) 1 ITEST=IVECTP(IINP) IF(MATCH(IIFB,IBUF,ISYM) IF( IIFB.EQ.14.OR.IIFB.EQ.15.OR.IIFB.EQ.16.OR.IIFB.EQ.17 ) 1 ITEST=IVECTP(IINP) IF( INOO.EQ.I6.AND.(IIFB.EQ.13.OR.IIFB.EQ.18) ) 1 ITEST=IVECTP(IINP) 36 IF( ITEST.EQ.L.AND.( LPHAS1(IINP)).AND.OF EQUATION HAS BEEN FOUND, DETERMINE FINAL SUM AND SAVE IT IF(.NOT.XORFND) ISTATT(IOUTP)=ISUM IF( (XORFND).AND.((ISUM.EQ.L.AND.XORSUM.EQ.L).OR. 1 (ISUM.EQ.H.AND.XORSUM.EQ.H)) ) ISTATT(IOUTP)=L IF( (XORFND XORFND=.FALSE. ISUM=L 28 IPROD=H 30 CALL GETSYM(LBUF,IBUF,1,IC1,IL1,LFIX) IF( .NOT.LFIX ) GO TO 39 C EVALUATE THE FIXED SYMBOLS FOUND IN THE PAL16X4 AND PAL16A4 LFIX=.FALSE. CALL FIXTST(LPHAS1,LBUF,IC1,IL1,L TRI STATE PRODUCT LINE 29 IF(LEQUAL) GO TO 35 NREG=.TRUE. 33 CALL GETSYM(LBUF,IBUF,1,IC1,IL1,LFIX) CALL MATCH(IINP,IBUF,ISYM1) C CHECK FOR GND, VCC, /GND, OR /VCC IN CONDITIONAL TRI STATE C PRODUCT LINE IF(IINP.NE.AND.( LBUF(1)) 3.OR. ITEST.EQ.L.AND.(.NOT.LPHAS1(IINP)).AND.(.NOT.LBUF(1)) 4 ) IPROD=L 38 IF( ITEST.EQ.X.OR.ITEST.EQ.Z ) IPROD=X IF(LRIGHT) CALL INCR(IC1,IL1,LFIX) IF(LAND) GO TO 30 IF(ISUM.EQ.L.AND.IPROD.EQ.X) I INOO.EQ.I8.AND.(IIFB.EQ.12.OR.IIFB.EQ.19) ) 1 ITEST=IVECTP(IINP) 37 IF( ITEST.EQ.L.AND.( LPHAS1(IINP)).AND.( LBUF(1)) 1.OR. ITEST.EQ.H.AND.( LPHAS1(IINP)).AND.(.NOT.LBUF(1)) 2.OR. ITEST.EQ.H.AND.(.NOT.LPHAS1(IINP)).( LBUF(1)) 1.OR. ITEST.EQ.H.AND.( LPHAS1(IINP)).AND.(.NOT.LBUF(1)) 2.OR. ITEST.EQ.H.AND.(.NOT.LPHAS1(IINP)).AND.( LBUF(1)) 3.OR. ITEST.EQ.L.AND.(.NOT.LPHAS1(IINP)).AND.(.NOT.LBUF(1)) 4 ) LCTRST=.FALSE. IF(ITEST).AND.((ISUM.EQ.H.AND.XORSUM.EQ.L).OR. 1 (ISUM.EQ.L.AND.XORSUM.EQ.H)) ) ISTATT(IOUTP)=H IF( (XORFND).AND. (ISUM.EQ.X.OR. XORSUM.EQ.X) ) ISTATT(IOUTP)=X NREG=.FALSE. C CHECK IF ALL EQUATIONS HAVE BEEN PROCESSED BY ISYM,ISYM1,IBUF, 1 IVECT,IVECTP,ITEST,LCLOCK,NREG,LFIX) IF(IPROD.EQ.H) IPROD=ITEST GO TO 38 39 CALL MATCH(IINP,IBUF,ISYM1) ITEST=IVECT(IINP) C GET FEED BACK VALUES IF( (.NOT.LCLOCK).OR.(NREG0) GO TO 32 CALL MATCH(IINP,IBUF,ISYM) IF( IINP.EQ.10.AND.(LBUF(1)).OR.IINP.EQ.20.AND.(.NOT.LBUF(1)) ) 1 LCTRST=.FALSE. GO TO 34 32 ITEST=IVECT(IINP) C GET FEED BACK VALUES IF(.NOT.LCLOCK) GO TO 36 CALL SUM=X IF( (ISUM.NE.H).AND.IPROD.EQ.H ) ISUM=H C CHECK FOR XOR (EXCLUSIVE OR) AND SAVE INTERMEDIATE VALUE IF(.NOT.LXOR) GO TO 31 XORSUM=ISUM XORFND=.TRUE. ISUM=L GO TO 28 31 IF(LOR) GO TO 28 C IF END P)=.TRUE. IF( .NOT.LCTRST ) LOUT(IOUTP)=.FALSE. LCTRST=.TRUE. LOUTP(IOUTP)=LBUF(1) C DETERMINE PRODUCT TERM AND EVENTUALLY SUM FOR OUTPUT KEEPING C TRACK TO SEE IF AN XOR (EXCLUSIVE OR) HAS BEEN FOUND XORSUM=H .EQ.X.OR.ITEST.EQ.Z) LCTRST=.FALSE. 34 IF(LAND) GO TO 33 GO TO 27 C C EVALUATE THE LOGIC EQUATION C C FIND THE PIN NUMBER OF THE OUTPUT VECTORS 35 CALL MATCH(IOUTP,IBUF,ISYM1) IF(NREG) LENABL(IOUTP)=LCTRST LOUT(IOUT AGREES WITH RESULTS DO 50 I=1,IMAX IF( .NOT.LOUT(I) ) GO TO 50 IF( ISTATT(I).EQ.X.AND.IVECT(I).EQ.X ) GO TO 50 LSAME = ( ( LOUTP(I)).AND.( LPHAS1(I)).OR. 1 (.NOT.LOUTP(I)).AND.(.NOT.LPHAS1(I)) ) IMISYM1(8,20),IBUF(8,20),IVECT(20),IVECTP(20) LOGICAL LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR,LXNOR, 1 LFIX,LPHAS1(20),LBUF(20),LCLOCK,NREG,TOR,TXOR,TXNOR,TAND, 2 LPHASA,LPHASB COMMON LBLANK,LLEFT,LAND,LOR,LSL ISTATE(I)=N1 IF( (.NOT.LOUT(J)).AND.(.NOT.LSAME).AND. 1 IVECT(J).EQ.H ) ISTATE(I)=N0 IF( ( LOUT(J)).AND.( LSAME).AND. 1 IVECT(J).EQ.L.AND.( LENABL(J)) ) ISTATE(I)=L J,I),J=1,8) 41 FORMAT(/,' FUNCTION TABLE ERROR AT VECTOR',I3,' PIN =',8A1, 1 ' EXPECT = H ACTUAL = L') IF(IMESS.EQ.42) WRITE(PMS,42) NVECT,(ISYM1(J,I),J=1,8) 42 FORMAT(/,' FUNCTION TABLE ERROR AT VECTOR',I3,' PIN =',8A1, GO TO 90 C TERMINATE SIMULATION 95 IF(.NOT.LERR) WRITE(POF,67) 67 FORMAT(/,' PASS SIMULATION') RETURN END C C*********************************************************************** C SUBROUTINE FIXTST(LPHAS1,LBUF,ICME=( ( LPHASE(I)).AND.( LPHAS1(J)).OR. 1 (.NOT.LPHASE(I)).AND.(.NOT.LPHAS1(J)) ) IF( INOO.EQ.N1.AND.(I.EQ.15.OR.I.EQ.16) ) LOUT(J)=.TRUE. IF( (.NOT.LOUT(J)).AND.( LSAME).AND. 1 IVECT(J).EQ.ESS=40 IF(ISTATT(I).EQ.L.AND.IVECT(I).EQ.L.AND.(.NOT.LSAME)) IMESS=41 IF(ISTATT(I).EQ.H.AND.IVECT(I).EQ.H.AND.(.NOT.LSAME)) IMESS=42 IF(ISTATT(I).EQ.L.AND.IVECT(I).EQ.H.AND.( LSAME)) IMESS=42 IF(ISTATT(I).EQ.H.AND.IVECT(I).ED.(.NOT.LSAME).AND. 1 IVECT(J).EQ.H.AND.( LENABL(J)) ) ISTATE(I)=L GO TO 65 55 CONTINUE C SAVE PRESENT VECTORS FOR FEED BACK USED WITH NEXT SET OF VECTORS C IF CLOCK PULSE AND NOT Z (Z WOULD BE AN UNREALISTIC VALU IF( ( LOUT(J)).AND.( LSAME).AND. 1 IVECT(J).EQ.H.AND.( LENABL(J)) ) ISTATE(I)=H IF( ( LOUT(J)).AND.(.NOT.LSAME).AND. 1 IVECT(J).EQ.L.AND.( LENABL(J)) ) ISTATE(I)=H IF( ( LOUT(J)).AN 1 ' EXPECT = L ACTUAL = H') IF(IMESS.EQ.43) WRITE(PMS,43) NVECT,(ISYM1(J,I),J=1,8) 43 FORMAT(/,' FUNCTION TABLE ERROR AT VECTOR',I3,' PIN =',8A1, 1 /,' EXPECT = OUTPUT ENABLE ACTUAL = Z') IF(IMESS.EQ.44) WRI1,IL1,ISYM,ISYM1,IBUF, 1 IVECT,IVECTP,ITEST,LCLOCK,NREG,LFIX) C THIS SUBROUTINE EVALUATES THE FIXED SYMBOLS FOUND IN THE C PAL16X4 AND PAL16A4 FOR THE FUNCTION TABLE IMPLICIT INTEGER (A-Z) INTEGER ISYM(8,20),L ) ISTATE(I)=N0 IF( (.NOT.LOUT(J)).AND.( LSAME).AND. 1 IVECT(J).EQ.H ) ISTATE(I)=N1 IF( (.NOT.LOUT(J)).AND.(.NOT.LSAME).AND. 1 IVECT(J).EQ.L ) Q.L.AND.( LSAME)) IMESS=41 IF( ( LENABL(I)).AND.IVECT(I).EQ.Z ) IMESS=43 IF( (.NOT.LENABL(I)).AND.(LOUT(I)).AND.IVECT(I).NE.Z) IMESS=44 IF(IMESS.NE.40) LERR=.TRUE. IF(IMESS.EQ.41) WRITE(PMS,41) NVECT,(ISYM1(E) 65 IF( (LCLOCK).AND.IVECT(J).NE.Z ) IVECTP(J)=IVECT(J) C ASSIGN X TO GROUND PIN AND 1 TO VCC PIN ISTATE(10)=X ISTATE(20)=N1 C PRINT TEST VECTORS WRITE(POF,60) NVECT,(ISTATE(I),I=1,20) 60 FORMAT(' ',I2,' ',20A1) NCTION TABLE TO THAT OF THE PIN LIST AND TWEEK FOR OUTPUT DO 65 I=1,20 DO 55 J=1,IMAX IF(IPIN(J).NE.I) GO TO 55 IF( IVECT(J).EQ.L.OR.IVECT(J).EQ.H ) GO TO 51 ISTATE(I)=IVECT(J) GO TO 65 51 LSATE(PMS,44) NVECT,(ISYM1(J,I),J=1,8),IVECT(I) 44 FORMAT(/,' FUNCTION TABLE ERROR AT VECTOR',I3,' PIN =',8A1, 1 ' EXPECT = Z ACTUAL = ',A1) 50 CONTINUE C CHANGE THE ORDER OF VECTORS FROM THE ORDER OF APPEARANCE IN THE C FUASH,LEQUAL,LRIGHT,LXOR,LXNOR COMMON /PGE/ IPAGE(80,200) DATA L/'L'/,H/'H'/,X/'X'/,Z/'Z'/ C GET OUTPUT PIN AN (WHERE N=0,1,2,3) CALL GETSYM(LBUF,IBUF,1,IC1,IL1,LFIX) CALL MATCH(IINP,IBUF,ISYM1) ITESTA=IVECT(IINP) * AND, PRODUCT C + OR, SUM C :+: EXCLUSIVE OR C () CONDITIONAL THREE STATE C MERS. C C INPUT: PAL DESIGN SPECIFICATION ASSIGNED C TO RPD(1). OPERATION CODES ARE C ASSIGNED TO ROP(5). C C OUTPUT: ECHO, GO TO 25 ITEST=ITESTA RETURN C SAVE THE FIXED SYMBOL OPERATORS 25 TOR = (LOR.AND.(.NOT.LXOR)) TXOR = (LXOR) TXNOR = (LXNOR) TAND = (LAND.AND.(.NOT.LXNOR)) C GET INPUT BN (WHERE N=0,1,2,3) C A = B*C + D C C A := B*C + D C C IF( A*B ) C = D + E C C ALL CHARACTERS FOLLOWING ';' ARE C (TAND).AND.(ITESTA.NE.L.AND.ITESTB.NE.L) ) ITEST=H IF( (ITESTA.EQ.X.OR.ITESTA.EQ.Z).AND.(ITESTB.EQ.X) ) ITEST=X RETURN END C C*********************************************************************** C >ENT LOGIC, AND C LPHASA = ( ( LBUF(1)).AND.( LPHAS1(IINP)).OR. 1 (.NOT.LBUF(1)).AND.(.NOT.LPHAS1(IINP)) ) C GET FEED BACK VALUES IF( (.NOT.LCLOCK).OR.(NREG) ) GO TO 5 CALL MATCH(IIFB,IBUF,ISYM) IF( IIFB.EQ.14.OR.IIFB.EQ. ERROR MESSAGES ARE ASSIGNED TO C PMS(6). C C PART NUMBER: THE PAL PART NUMBER MUST C APPEAR IN COLUMN ONE OF LINE ONE C C SIMULATION, AND FUSE PATTERN C ARE ASSIGNED TO POF(6). HEX AND C BINARY PROGRAMMING FORMATS ARE C ASSIGNED TO PDF(6). PROMPTS AND C CALL GETSYM(LBUF,IBUF,1,IC1,IL1,LFIX) CALL MATCH(IINP,IBUF,ISYM1) ITESTB=IVECT(IINP) LPHASB = ( ( LBUF(1)).AND.( LPHAS1(IINP)).OR. 1 (.NOT.LBUF(1)).AND.(.NOT.LPHAS1(IINP)) ) IF( (.NOT.LPHASB).AND.ITEST IGNORED UNTIL THE NEXT LINE C C BLANKS ARE IGNORED C C OPERATORS: ( IN HIERARCHY OF EVALUATION ) C C / COMPLEMENT C C**PALASM24**PALASM24**PALASM24**PALASM24**PALASM24**PALASM24**PALASM24* C C P A L A S M 2 4 - TRANSLATES SYMBOLIC EQUATIONS INTO PAL OBJECT C CODE FORMATTED FOR DIRECT INPUT TO STANDARD C PROM PROGRAM15.OR.IIFB.EQ.16.OR.IIFB.EQ.17 ) 1 ITESTA=IVECTP(IINP) 5 IF( (.NOT.LPHASA).AND.ITESTA.EQ.L ) GO TO 10 IF( (.NOT.LPHASA).AND.ITESTA.EQ.H ) GO TO 15 GO TO 20 10 ITESTA=H GO TO 20 15 ITESTA=L 20 IF( .NOT.LRIGHT ) PIN LIST: 24 SYMBOLIC PIN NAMES MUST APPEAR C STARTING ON LINE 5 C C EQUATIONS: STARTING FIRST LINE AFTER THE C PIN LIST IN THE FOLLOWING FORMS: CST=H IF( (TXOR).AND.((ITESTA.EQ.H.AND.ITESTB.NE.H).OR. 1 (ITESTA.NE.H.AND.ITESTB.EQ.H) )) ITEST=H IF( (TXNOR).AND.((ITESTA.EQ.ITESTB).OR. 1 (ITESTA.EQ.X.OR.ITESTB.EQ.X) )) ITEST=H IF(B.EQ.L ) GO TO 30 IF( (.NOT.LPHASB).AND.ITESTB.EQ.H ) GO TO 35 GO TO 40 30 ITESTB=H GO TO 40 35 ITESTB=L C EVALUATE THE FIXED SYMBOL EXPRESSION 40 ITEST=L IF( (TOR).AND.(ITESTA.EQ.H.OR. ITESTB.EQ.H) ) ITE = EQUALITY C := REPLACED BY (AFTER CLOCK) C C C SUBROUTINES: INITLZ,GETSYM,INCR,MATCH,IXLATE, C ECHO,PINOUT,PLOT,HEX,TWEEK,BINR, C LINE NUMBER OF THE PAL DESIGN SPECIFICATION 16 IEND=J-1 CALL INITLZ(INAME,ITYPE,LFUSES,IC,IL,IBLOW) C PRINT ERROR MESSAGE FOR INVALID PAL PART TYPE IF(ITYPE.NE.0) GO TO 17 WRITE(PMS,18) IPAL,INAME 18 FORMAT(/,' PAL PART TC INITIALIZE LSAME AND LACT TO FALSE (ACTIVE HIGH/LOW ERROR) LSAME=.FALSE. LACT=.FALSE. C INITIALIZE LOPERR TO FALSE (OUTPUT PIN ERROR) LOPERR=.FALSE. C HEADER WILL BE PRINTED IF LHEAD IS TRUE C CHANGE THIS STATEMENTE APPLICATIONS C SECTION ON A VAX/VMS COMPUTER C AND A NATIONAL CSS IBM SYSTEM/370 C FORTRAN IV(G). C C******************************************* 5 IPAGE(12,J).EQ.BB.AND.IPAGE(14,J).EQ.EE ) IFUNCT=J C CHECK FOR 'DESCRIPTION' AND SAVE ITS LINE NUMBER IF( IDESC.EQ.0 .AND.IPAGE(1,J).EQ.DD.AND. 1 IPAGE(2,J).EQ.EE.AND.IPAGE(3,J).EQ.SS.AND. 2 IPAG'/,CC/'C'/,DD/'D'/,EE/'E'/,FF/'F'/,II/'I'/,NN/'N'/, 1 OO/'O'/,PP/'P'/,RR/'R'/,SS/'S'/,TT/'T'/,UU/'U'/ C C C ASSIGNMENT OF DATA SET REFERENCES C RPD - PAL DESIGN SPECIFICATION (INPUT) C ROC - OPERATION CODE (INPUT) C POF - E SLIP,FANTOM,IODC2,IONC4,TEST C C C REV LEVEL: 06/15/81 C C FINE PRINT: MONOLITHIC MEMORIES TAKES NO C RESPONSIBILITY FOR THE OPERATION C THROUGH THE END OF THE PAL DESIGN C SPECIFICATION DO 15 J=1,200 READ(RPD,11,END=16) (IPAGE(I,J),I=1,80) 11 FORMAT(80A1) C CHECK FOR 'FUNCTION TABLE' AND SAVE ITS LINE NUMBER IF( IFUNCT.EQ.0 .AND.IPAG SO LHEAD IS FALSE IF NO HEADER IS DESIRED LHEAD=.FALSE. C READ IN FIRST 4 LINES OF PAL DESIGN SPECIFICATION READ(RPD,10) IPAL,INAME,REST,PATNUM,TITLE,COMP 10 FORMAT(3A1,5A1,72A1,/,80A1,/,80A1,/,80A1) C READ IN PIN LIST (LINE 5)**************************** C C C*********************************************************************** C C C MAIN PROGRAM C IMPLICIT INTEGER (A-Z) INTEGER IPAL(3),INAME(5),REST(72),PATNUM(80),TITLE(80),COMP(80), 1 IE(4,J).EQ.CC.AND.IPAGE(5,J).EQ.RR.AND. 3 IPAGE(6,J).EQ.II.AND.IPAGE(7,J).EQ.PP.AND. 4 IPAGE(8,J).EQ.TT.AND.IPAGE(9,J).EQ.II.AND. 5 IPAGE(10,J).EQ.OO.AND.IPAGE(11,J).EQ.NN ) IDESC=J 15 CONTINUE C SAVE THE LASTCHO, PINOUT, SIMULATION, AND FUSE PATTERN (OUTPUT) C PDF - HEX AND BINARY FORMAT PROGRAM TAPES (OUTPUT) C PMS - PROMPTS AND ERROR MESSAGES (OUTPUT) RPD=1 ROC=5 POF=6 PDF=6 PMS=6 IFUNCT=0 IDESC=0 OR MAINTENANCE OF THIS PROGRAM. C THE SOURCE CODE AS PRINTED HERE C PRODUCED THE OBJECT CODE OF THE C EXAMPLES IN THE(1,J).EQ.FF.AND. 1 IPAGE(2,J).EQ.UU.AND.IPAGE(3,J).EQ.NN.AND. 2 IPAGE(4,J).EQ.CC.AND.IPAGE(5,J).EQ.TT.AND. 3 IPAGE(6,J).EQ.II.AND.IPAGE(7,J).EQ.OO.AND. 4 IPAGE(8,J).EQ.NN.AND.IPAGE(10,J).EQ.TT.AND. AL,LRIGHT,LXOR COMMON /PGE/ IPAGE(80,200) COMMON /FTEST/ IFUNCT,IDESC,IEND COMMON /LUNIT/ PMS,POF,PDF DATA E/'E'/,O/'O'/,T/'T'/,P/'P'/,B/'B'/,D/'D'/,H/'H'/,S/'S'/, 1 L/'L'/,N/'N'/,Q/'Q'/,U/'U'/,F/'F'/ DATA BB/'BSYM(8,24),IBUF(8,24),JPROD(80) LOGICAL LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR,LFIRST, 1 LMATCH,LFUSES(40,80),LPHASE(24),LBUF(24),LPROD(80), 2 LSAME,LACT,LOPERR,LHEAD COMMON LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUYPE ',3A1,5A1,' IS INCORRECT') STOP C GET 24 PIN NAMES 17 DO 20 J=1,24 20 CALL GETSYM(LPHASE,ISYM,J,IC,IL) IF(.NOT.(LEQUAL.OR.LLEFT.OR.LAND.OR.LOR.OR.LRIGHT)) GO TO 24 WRITE(PMS,23) 23 FORMAT(/,PROGRAMMING OF THE',/,' SERIES 24 PAL FAMILY. THE', 2 ' FOLLOWING OPTIONS ARE PROVIDED:', 3 //,' ECHO (E) - PRINTS THE PAL DESIGN', 4 ' SPECIFICATION', 5 //,' PIN OUT (O) - PRINTS THE PIN OUT OFNPUT,LPHASE,IMATCH,LBUF,ITYPE) IF(IINPUT.LE.0) GO TO 60 IBLOW = IBLOW - 1 LFUSES(IINPUT,IPROD)=.FALSE. CALL PLOT(LBUF,IBUF,LFUSES,IPROD,TITLE,.FALSE.,ITYPE, 1 LPROOR.ITYPE.EQ.9.OR. 1 ITYPE.EQ.10).AND.(IMATCH.LT.14.OR.IMATCH.GT.23) ) 2 LOPERR=.TRUE. IF( (ITYPE.EQ.2.OR.ITYPE.EQ.11.OR.ITYPE.EQ.12.OR.ITYPE.EQ.13 1 .OR.ITYPE.EQ.14).AND.(IMATCH.LT.15.OR.IMATCH.GT.22) ) E 103 FORMAT(' OUTPUT MUST BE INVERTED SINCE ',3A1,5A1, 1 ' IS AN ACTIVE LOW DEVICE') C PRINT AN ERROR MESSAGE FOR AN INVALID OUTPUT PIN IF( (LOPERR).AND.IMATCH.NE.0 ) WRITE(PMS,105) IMATCH,IPAL,INAME 105 FORMAT(' THIS PIN, NUI8PRO - 1 LPROD(IPROD)=.TRUE. LFIRST=.TRUE. 50 ILL=IL CALL GETSYM(LBUF,IBUF,1,IC,IL) CALL MATCH(IMATCH,IBUF,ISYM) IF(IMATCH.EQ.0) GO TO 100 IF(I ' LESS THAN 24 PIN NAMES IN PIN LIST') STOP 24 ILE=IL 25 CALL GETSYM(LBUF,IBUF,1,IC,IL) 28 IF(.NOT.LEQUAL) GO TO 25 CALL MATCH(IMATCH,IBUF,ISYM) C CHECK FOR VALID POLARITY (ACTIVE LOW) LSAME = IL CALL GETSYM(LBUF,IBUF,1,IC,IL) IF(LLEFT.OR.LEQUAL) GO TO 28 100 IF( ILL.EQ.IFUNCT.OR.ILL.EQ.IDESC.OR.ILL.EQ.IEND ) GO TO 102 C PRINT AN ERROR MESSAGE FOR AN UNRECOGNIZABLE SYMBOL ILERR=ILL+4 WRITE(PMS,101) (IBD,IOP,IBLOW) 60 IF(LAND) GO TO 50 64 IF(.NOT.LRIGHT) GO TO 68 66 CALL INCR(IC,IL) IF(.NOT.LEQUAL) GO TO 66 68 IF( .NOT.(LOR.OR.LEQUAL) ) GO TO 74 70 CONTINUE 74 ILL= 2 LOPERR=.TRUE. IF( ITYPE.EQ.3.AND.(IMATCH.LT.16.OR.IMATCH.GT.21) ) 1 LOPERR=.TRUE. IF( ITYPE.EQ.4.AND.(IMATCH.LT.17.OR.IMATCH.GT.20) ) 1 LOPERR=.TRUE. IF( (ITYPE.EQ.5.OR.ITYPE.MBER ',I2,' IS AN INVALID OUTPUT PIN', 1 ' FOR ',3A1,5A1) STOP 102 CALL TWEEK(ITYPE,LFUSES) C PRINT OPTIONAL HEADER IF(LHEAD) WRITE(PMS,104) 104 FORMAT(/,' THIS PALASM AIDS THE USER IN THE DESIGN AND' 1 ' MATCH.EQ.12) GO TO 64 IF(.NOT.LFIRST) GO TO 58 LFIRST=.FALSE. DO 56 I=1,40 IBLOW = IBLOW + 1 56 LFUSES(I,IPROD)=.TRUE. 58 CALL IXLATE(II( ( LPHASE(IMATCH)).AND.( LBUF(1)).OR. 1 (.NOT.LPHASE(IMATCH)).AND.(.NOT.LBUF(1)) ) IF( ITYPE.NE.6.AND.(LSAME) ) LACT=.TRUE. C CHECK FOR VALID OUTPUT PIN 29 IF( (ITYPE.EQ.1.OR.ITYPE.EQ.7.OR.ITYPE.EQ.8.UF(I,1),I=1,8),ILERR,(IPAGE(I,ILL),I=1,80) 101 FORMAT(/,' ERROR SYMBOL = ',8A1,' IN LINE NUMBER ',I3, 1 /,' ',80A1) C PRINT AN ERROR MESSAGE FOR ACTIVE HIGH/LOW ERRORS IF( (LACT).AND.(.NOT.LOPERR) ) WRITE(PMS,103) IPAL,INAM IC=0 30 CALL INCR(IC,IL) IF( .NOT.(LEQUAL.OR.LLEFT) ) GO TO 30 LPROD(I88PRO)=.TRUE. IF(.NOT.LLEFT) CALL SLIP(LFUSES,I88PRO,ITYPE,IBLOW) DO 70 I8PRO=1,16 IPROD = I88PRO + EQ.6).AND. 1 (IMATCH.LT.18.OR.IMATCH.GT.19) ) LOPERR=.TRUE. ILL=IL IF( (LACT).OR.(LOPERR) ) GO TO 100 I88PRO=(23-IMATCH)*8 + 1 C START PAL20C1 ON PRODUCT LINE 33 IF(INAME(3).EQ.C) I88PRO=33 THE PAL', 6 //,' SIMULATE (T) - EXERCISES THE FUNCTION TABLE', 7 ' VECTORS IN THE LOGIC',/,' EQUATIONS', 8 ' AND GENERATES TEST VECTORS', 9 //,' PLOT (P) - PRINTS THE ENTIRE FUSPE=INFO(6,J) IF (LMATCH) GO TO 50 40 CONTINUE IF(ITYPE.EQ.0) RETURN 50 CALL INCR(IC,IL) RETURN END C C*********************************************************************** C SUBROUTINE GETSYM(LPHASE,ISYM,JICIT INTEGER (A-Z) INTEGER INAME(5),INFO(6,14) LOGICAL LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LFUSES(40,80), 1 LMATCH,LXOR COMMON LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR COMMON /PGE/ IPAGE(80,200) E', H //,' BNPF (N) - GENERATES BNPF OUTPUT FOR PAPER TAPE', J //,' QUIT (Q) - EXIT PALASM') 108 WRITE(PMS,106) 106 FORMAT(/,' OPERATION CODES:') WRITE(PMS,107) 107 FORMAT(/,' E=ECHO INPUT O=PIN OUT T=S1 C INITIALIZE ITYPE (PAL PART TYPE) ITYPE=0 C ITYPE IS ASSIGNED THE FOLLOWING VALUES FOR THESE PAL TYPES: C PAL12L10 = 1 PAL14L8 = 2 PAL16L6 = 3 PAL18L4 = 4 C PAL20L2 = 5 PAL20C1 = 6 PAL20L10 = 7 PAL20X10 LPROD,IOP,IBLOW) IF(IOP.EQ.H) CALL HEX(LFUSES,H) IF(IOP.EQ.S) CALL HEX(LFUSES,S) IF(IOP.EQ.L) CALL BINR(LFUSES,H,L) IF(IOP.EQ.N) CALL BINR(LFUSES,P,N) C CALL IODC4 IF(IOP.NE.Q ) GO TO 108 SE PLOT', A //,' BRIEF (B) - PRINTS ONLY THE USED PRODUCT LINES', B ' OF THE FUSE PLOT',/,' PHANTOM FUSES', C ' ARE OMITTED', D //,' DATA I/O (D) - GENERATES FUSE OUTPUT FOR DATA I, 8 '2','0','X','1','0',8, 9 '2','0','X','8',' ',9, A '2','0','X','4',' ',10, B '2','0','L','8',' ',11, C '2','0','R','8',' ',12, D '2','0','R','6',' ',13, E '2','0','R','4',' ',14/ C DATA INFO/ 1 '1','2','L','1','0',1, 2 '1','4','L','8',' ',2, 3 '1','6','L','6',' ',3, 4 '1','8','L','4',' ',4, 5 '2','0','L','2',' ',5, 6 '2','0','C','1',' ',6, 7 '2','0','L','1','0',7IMULATE P=PLOT B=BRIEF', 1 /,' D=DATA I/O H=HEX S=SHORT L=BHLF N=BNPF Q=QUIT') WRITE(PMS,110) 110 FORMAT(/,' ENTER OPERATION CODE:') READ(ROC,120) IOP 120 FORMAT(A1) C CALL IODC2 IF(IOP.EQ.E) CALL ECHO(IP = 8 C PAL20X8 = 9 PAL20X4 = 10 PAL20L8 = 11 PAL20R8 = 12 C PAL20R6 = 12 PAL20R4 = 14 DO 40 J=1,14 LMATCH=.TRUE. DO 30 I=1,4 30 IF(INAME(I).NE.INFO(I,J)) LMATCH=.FALSE. IF(LMATCH) ITYTOP END C C*********************************************************************** C SUBROUTINE INITLZ(INAME,ITYPE,LFUSES,IC,IL,IBLOW) C THIS SUBROUTINE INITIALIZIES VARIABLES AND MATCHES PAL PART C NUMBER WITH ITYPE IMPL/O', E ' PROGRAMMERS', F //,' HEX (H) - GENERATES HEX OUTPUT FOR PAPER TAPE', G //,' SHORT (S) - GENERATES HEX OUTPUT FOR PAPER TAPE', H //,' BHLF (L) - GENERATES BHLF OUTPUT FOR PAPER TAP INITIALIZE LFUSES ARRAY (FUSE ARRAY) DO 20 J=1,80 DO 20 I=1,40 20 LFUSES(I,J)=.FALSE. C INITIALIZE IBLOW (NUMBER OF FUSES BLOWN) IBLOW=0 C INITIALIZE IC AND IL (COLUMN AND LINE POINTERS) IC=0 IL=TYPE, 1 LPROD,IOP,IBLOW) IF(IOP.EQ.B) CALL PLOT(LBUF,IBUF,LFUSES,IPROD,TITLE,.TRUE.,ITYPE, 1 LPROD,IOP,IBLOW) IF(IOP.EQ.D) CALL PLOT(LBUF,IBUF,LFUSES,IPROD,TITLE,.TRUE.,ITYPE, 1 AL,INAME,REST,PATNUM,TITLE,COMP) IF(IOP.EQ.O) CALL PINOUT(IPAL,INAME,TITLE) IF(IOP.EQ.T) CALL TEST(LPHASE,LBUF,TITLE,IC,IL,ILE,ISYM,IBUF, 1 ITYPE) IF(IOP.EQ.P) CALL PLOT(LBUF,IBUF,LFUSES,IPROD,TITLE,.TRUE.,I,IC,IL) C THIS SUBROUTINE GETS THE PIN NAME, / IF COMPLEMENT LOGIC, AND C THE FOLLOWING OPERATION SYMBOL IF ANY IMPLICIT INTEGER (A-Z) INTEGER ISYM(8,24) LOGICAL LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR,LPHASE(24) ,15,11, 7,3,0, 9 0,1,5,9,13,17,21,25,29,33,37,0, 0,39,35,31,27,23,19,15,11, 7,3,0, A 0,1,5,9,13,17,21,25,29,33,37,0, 0,39,35,31,27,23,19,15,11, 7,3,0, B 3,1,5,9,13,17,21,25,29,33,37,0,39,35, 0,31,27,23,19,15,11, 0,7,0, C 0,1,5,9,13,************************** C SUBROUTINE MATCH(IMATCH,IBUF,ISYM) C THIS SUBROUTINE FINDS A MATCH BETWEEN THE PIN NAME IN THE EQUATION C AND THE PIN NAME IN THE PIN LIST OR FUNCTION TABLE PIN LIST IMPLICIT INTEGER (A-Z) INTEG ) RETURN GO TO 25 END C C********************************************************************** C SUBROUTINE INCR(IC,IL) C THIS SUBROUTINE INCREMENTS COLUMN AND LINE POINTERS C BLANKS AND CHARACTERS AFTER ';' ARE IGNORED, 0,0,0, 2 3,1,5,9,13,17,21,25,29,33,37,0,39,35, 0, 0, 0, 0, 0, 0, 0, 0,7,0, 3 3,1,5,9,13,17,21,25,29,33,37,0,39,35,31, 0, 0, 0, 0, 0, 0,11,7,0, 4 3,1,5,9,13,17,21,25,29,33,37,0,39,35,31,27, 0, 0, 0, 0,15,11,7,0, 5 3,1,5,9,13,17,21,NE.ICOLON) GO TO 32 IF(LXOR) GO TO 33 LXOR1=.TRUE. GO TO 10 33 LOR=.TRUE. RETURN 32 IF( .NOT.(IPAGE(IC,IL).EQ.IOR.AND.(LXOR1)) ) GO TO 34 LXOR=.TRUE. GO TO 10 34 LLEFT =(IPAGE(IC,IL).EQ.ILEFT) LA COMMON LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR COMMON /PGE/ IPAGE(80,200) DATA IBLANK/' '/ IF( .NOT.(LLEFT.OR.LAND.OR.LOR.OR.LEQUAL.OR.LRIGHT) ) GO TO 10 CALL INCR(IC,IL) 10 LPHASE(J)=(.NOT.LSLASH) IF(LP END C C*********************************************************************** C SUBROUTINE IXLATE(IINPUT,LPHASE,IMATCH,LBUF,ITYPE) C THIS SUBROUTINE FINDS A MATCH BETWEEN INPUT PIN NUMBER AND C THE INPUT LINE NUMBER FOR A SPECIFIER IBUF(8,24),ISYM(8,24) LOGICAL LMATCH IMATCH=0 DO 20 J=1,24 LMATCH=.TRUE. DO 10 I=1,8 10 LMATCH=LMATCH.AND.(IBUF(I,1).EQ.ISYM(I,J)) IF(LMATCH) IMATCH=J 20 CONTINUE RETURN IMPLICIT INTEGER (A-Z) LOGICAL LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR,LXOR1 COMMON LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR COMMON /PGE/ IPAGE(80,200) COMMON /LUNIT/ PMS,POF,PDF DATA IBLANK/' '/,I25,29,33,37,0,39,35,31,27,23, 0, 0,19,15,11,7,0, 6 3,1,5,9,13,17,21,25,29,33,37,0,39,35,31,27,23, 0, 0,19,15,11,7,0, 7 3,1,5,9,13,17,21,25,29,33,37,0,39, 0,35,31,27,23,19,15,11, 7,0,0, 8 0,1,5,9,13,17,21,25,29,33,37,0, 0,39,35,31,27,23,19ND =(IPAGE(IC,IL).EQ.IAND) LOR =(IPAGE(IC,IL).EQ.IOR) LSLASH=(IPAGE(IC,IL).EQ.ISLASH) LEQUAL=(IPAGE(IC,IL).EQ.IEQUAL) LRIGHT=(IPAGE(IC,IL).EQ.IRIGHT) RETURN END C C*********************************************HASE(J)) GO TO 15 CALL INCR(IC,IL) 15 DO 20 I=1,8 20 ISYM(I,J)=IBLANK 25 DO 30 I=1,7 30 ISYM(I,J)=ISYM(I+1,J) ISYM(8,J)=IPAGE(IC,IL) CALL INCR(IC,IL) IF( LLEFT.OR.LBLANK.OR.LAND.OR.LOR.OR.LRIGHT.OR.LEQUALC PAL. ADD 1 TO THE INPUT C LINE NUMBER IF THE PIN IS A COMPLEMENT IMPLICIT INTEGER (A-Z) INTEGER ITABLE(24,14) LOGICAL LPHASE(24),LBUF(24) DATA ITABLE/ 1 3,1,5,9,13,17,21,25,29,33,37,0,39, 0, 0, 0, 0, 0, 0, 0, 0 IF(IL.LE.200) GO TO 20 WRITE(PMS,15) 15 FORMAT(/,' SOURCE FILE EXCEEDS 200 LINES') STOP 20 IC=0 GO TO 10 30 IF(IPAGE(IC,IL).NE.IBLANK) GO TO 31 LBLANK=.TRUE. GO TO 10 31 IF(IPAGE(IC,IL).LEFT/'('/,IAND/'*'/,IOR/'+'/,COMENT/';'/, 1 ISLASH/'/'/,IEQUAL/'='/,IRIGHT/')'/,ICOLON/':'/ LBLANK=.FALSE. LXOR=.FALSE. LXOR1=.FALSE. 10 IC=IC+1 IF( IC.LE.79.AND.IPAGE(IC,IL).NE.COMENT ) GO TO 30 IL=IL+1 17,21,25,29,33,37,0, 0,39,35,31,27,23,19,15,11, 7,3,0, D 0,1,5,9,13,17,21,25,29,33,37,0, 0,39,35,31,27,23,19,15,11, 7,3,0, E 0,1,5,9,13,17,21,25,29,33,37,0, 0,39,35,31,27,23,19,15,11, 7,3,0/ IBUBL=0 IF( (( LPHASE(IMATCH)).AND.******************** C SUBROUTINE PLOT(LBUF,IBUF,LFUSES,IPROD,TITLE,LDUMP,ITYPE,LPROD, 1 IOP,IBLOW) C THIS SUBROUTINE PRODUCES THE FUSE PLOT IMPLICIT INTEGER (A-Z) INTEGER IBUF(8,24),IOUT(64),ISAVE(80,40),TIT I=9 70 I=I-1 II=II-1 PIN(I,J)=PIN(II,J) PIN(II,J)=IBLANK IF(II.NE.1) GO TO 70 75 CONTINUE WRITE(POF,76) TITLE 76 FORMAT('1',/,' ',80A1) WRITE(POF,78) ISTAR,ISTAR,ISTAR,ISTAR,ISTART/ PMS,POF,PDF COMMON /FTEST/ IFUNCT,IDESC,IEND WRITE(POF,10) IPAL,INAME,REST,PATNUM,TITLE,COMP 10 FORMAT(/,' ',3A1,5A1,72A1,/,' ',80A1,/,' ',80A1,/,' ',80A1) DO 30 J=1,IEND WRITE(POF,20) (IPAGE(I,J),I=1,80) 20 F 84 FORMAT(' ',12X,A1,5X,7A1,5X,A1) DO 86 II=1,2 DO 85 I=1,7 85 IIN(I,II)=IBLANK 86 CONTINUE JJ=JJ-1 88 CONTINUE WRITE(POF,90) ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR, INAME(4) IIN(6,2)=INAME(5) J=0 IL=0 30 IC=0 IL=IL+1 35 IC=IC+1 40 IF( IC.GT.80 ) GO TO 30 IF( IPAGE(IC,IL).EQ.IBLANK ) GO TO 35 J=J+1 IF(J.GT.24) GO TO 60 DO 55 I=1,8 PIN(I,J)=I(.NOT.LBUF(1))).OR. 1 ((.NOT.LPHASE(IMATCH)).AND.( LBUF(1))) ) IBUBL=1 IINPUT=ITABLE(IMATCH,ITYPE)+IBUBL RETURN END C C*********************************************************************** C SUBROUTINE ECHO(IPA WRITE(POF,80) ISTAR,ISTAR,ISTAR,ISTAR, 1 ISTAR,ISTAR,ISTAR,ISTAR, 80 FORMAT(' ',9X,4A1,17X,4A1) WRITE(POF,81) (PIN(I,J),I=1,8),ISTAR,J,ISTAR, 1 (IIN(I,1),I=1,7),ISTAR,JJ,ISTAR,(PIN(I,JJ),I=1,8) ,ISTAR,ISTAR,ISTAR, 1 ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR, 2 ISTAR,ISTAR,ISTAR,ISTAR 78 FORMAT(/,' ',12X,8A1,3X,8A1, 1 /,' ',12X,A1,7X,A1,1X,A1,7X,A1) JJ=24 DO 88 J=1,12 ORMAT(' ',80A1) 30 CONTINUE RETURN END C C*********************************************************************** C SUBROUTINE PINOUT(IPAL,INAME,TITLE) C THIS SUBROUTINE PRINTS THE PIN OUT OF THE PAL IMPLICIT INTEGER 1 ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR,ISTAR, 2 ISTAR,ISTAR,ISTAR 90 FORMAT(' ',12X,19A1) WRITE(POF,92) 92 FORMAT('1') RETURN END C C***************************************************PAGE(IC,IL) IC=IC+1 IF( IC.GT.80 ) GO TO 40 55 IF( IPAGE(IC,IL).EQ.IBLANK ) GO TO 40 60 DO 75 J=1,12 II=0 65 II=II+1 IF(II.EQ.9) GO TO 75 IF( PIN(II,J).NE.IBLANK ) GO TO 65 L,INAME,REST,PATNUM,TITLE,COMP) C THIS SUBROUTINE PRINTS THE PAL DESIGN SPECIFICATION INPUT FILE IMPLICIT INTEGER (A-Z) INTEGER IPAL(3),INAME(5),REST(72),PATNUM(80),TITLE(80),COMP(80) COMMON /PGE/ IPAGE(80,200) COMMON /LUNI 81 FORMAT(' ',8A1,1X,A1,I2,A1,5X,7A1,5X,A1,I2,A1,1X,8A1) WRITE(POF,82) ISTAR,ISTAR,ISTAR,ISTAR, 1 ISTAR,ISTAR,ISTAR,ISTAR 82 FORMAT(' ',9X,4A1,17X,4A1) WRITE(POF,84) ISTAR,(IIN(I,2),I=1,7),ISTAR NUE 15 DO 25 J=1,2 DO 20 I=1,7 20 IIN(I,J)=IBLANK 25 CONTINUE IIN(3,1)=IPAL(1) IIN(4,1)=IPAL(2) IIN(5,1)=IPAL(3) IIN(2,2)=INAME(1) IIN(3,2)=INAME(2) IIN(4,2)=INAME(3) IIN(5,2)= (A-Z) INTEGER IPAL(3),INAME(5),TITLE(80),PIN(8,24),IIN(7,2) COMMON /PGE/ IPAGE(80,200) COMMON /LUNIT/ PMS,POF,PDF DATA IBLANK/' '/,ISTAR/'*'/ DO 10 J=1,24 DO 5 I=1,8 5 PIN(I,J)=IBLANK 10 CONTILE(80),IDATA(40) LOGICAL LBUF(24),LFUSES(40,80),LDUMP,LPROD(80) COMMON /LUNIT/ PMS,POF,PDF DATA ISAVE/3200*' '/,IAND/'*'/,IOR/'+'/,ISLASH/'/'/, 1 IDASH/'-'/,X/'X'/,IBLANK/' '/,P/'P'/,B/'B'/, 2 D/'D'/,ZERO/'0'/,ONE/'','14','15','16','17', 5 '18','19','1A','1B','1C','1D','1E','1F'/ IF(IOP.EQ.H) WRITE(PDF,10) 10 FORMAT(//,80(' '),//) C***** NOTE: SOME PROM PROGRAMMERS NEED A START CHARACTER. C***** THIS PROGRAM OUTPUTS AN STX FOR THE INUE DO 83 I=1,40 IF( (IOUT(I).EQ.X).OR.(IOUT(I).EQ.IDASH) ) GO TO 86 83 CONTINUE GO TO 94 86 WRITE(PDF,84) IDATA 84 FORMAT(' ',40(A1,' ')) GO TO 94 85 (IPROD,1).NE.IBLANK) RETURN 40 DO 50 J=1,39 50 ISAVE(IPROD,J)=ISAVE(IPROD,J+1) ISAVE(IPROD,40)=IAND RETURN C PRINT FUSE PLOT 58 IF(IOP.EQ.D) GO TO 62 60 WRITE(POF,61) TITLE 61 FORMAT(/,' ',80A1,//, 1 ' *********************************************** C SUBROUTINE HEX(LFUSES,IOP) C THIS SUBROUTINE GENERATES HEX PROGRAMMING FORMATS IMPLICIT INTEGER (A-Z) INTEGER ITEMP(80),ITABLE(32) LOGICAL LFUSES(40,80) COMMON /LUNIANK ) IOUT(64)=IDASH DO 80 I=1,40 IOUT(I)=X IF(LFUSES(I,IPROD)) IOUT(I)=IDASH 80 CONTINUE CALL FANTOM(ITYPE,IOP,IOUT,IPROD,I8PRO) IF(IOP.NE.D) GO TO 85 1'/,FX/'0'/,FIDASH/'O'/, 3 STX/Z02000000/,ETX/Z03000000/ IF(LDUMP) GO TO 58 IF(ISAVE(IPROD,1).NE.IBLANK) RETURN IF(LBUF(1)) GO TO 5 DO 30 J=1,39 30 ISAVE(IPROD,J)=ISAVE(IPROD,J+1) ISAVE(IPROD,40)=ISLASH CONTINUE IF(IOP.NE.D) GO TO 105 WRITE(PDF,101) ETX 101 FORMAT(' ',A1) RETURN 105 WRITE(POF,110) 110 FORMAT(/, 1' LEGEND: X : FUSE NOT BLOWN (L,N,0) - : FUSE BLOWN (H,P,1)') IF(IOP.EQ.P) WRITE(POF,111) IPROD=IPROD-1 IF( (IOP.EQ.P).OR.(IOP.EQ.B.AND.(LPROD(IPROD+1))) ) 1 WRITE(POF,90) IPROD,IOUT 90 FORMAT(' ',I2,10(' ',4A1),' ',24A1) 94 CONTINUE WRITE(POF,96) 96 FORMAT(1X) 100 11 1111 1111 2222 2222 2233 3333 3333',/, 2 ' 0123 4567 8901 2345 6789 0123 4567 8901 2345 6789',/) GO TO 64 C STX DETERMINES THE STARTING CHARACTER FOR DATA I/O FORMAT 62 WRITE(PDF,63) STX 63 FORMAT(' ',A1,'*L0000'/)T/PMS,POF,PDF DATA STX/Z02000000/,BEL/Z2F000000/,SOH/Z01000000/, 1 H/'H'/,S/'S'/, 2 ITABLE/'00','01','02','03','04','05','06','07', 3 '08','09','0A','0B','0C','0D','0E','0F', 4 '10','11','12','13 K=0 81 DO 82 I=1,40 IF((IOUT(I).EQ.FX).OR.(IOUT(I).EQ.FIDASH)) GO TO 82 K=K+1 IF(IOUT(I).EQ.X) IDATA(K)=ZERO IF(IOUT(I).EQ.IDASH) IDATA(K)=ONE 82 CONT 5 DO 20 I=1,8 IF( ISAVE(IPROD,1).NE.IBLANK ) RETURN IF( IBUF(I,1).EQ.IBLANK ) GO TO 20 DO 10 J=1,39 10 ISAVE(IPROD,J)=ISAVE(IPROD,J+1) ISAVE(IPROD,40)=IBUF(I,1) 20 CONTINUE IF(ISAVE 111 FORMAT( 1' 0 : PHANTOM FUSE (L,N,0) O : PHANTOM FUSE (H,P,1)') WRITE(POF,112) IBLOW 112 FORMAT(/,' NUMBER OF FUSES BLOW = ',I4) WRITE(POF,113) 113 FORMAT(//) RETURN END C C************************ ISAVE(IPROD,J)=ISAVE(IPROD,J+1) ISAVE(IPROD,40)=IBLANK 70 CONTINUE DO 75 I=1,24 IOUT(I+40)=ISAVE(IPROD,I) 75 CONTINUE IF( ISAVE(IPROD,25).NE.IBL 64 DO 100 I88PRO=1,73,8 DO 94 I8PRO=1,8 IPROD=I88PRO+I8PRO-1 ISAVE(IPROD,40)=IBLANK DO 70 I=1,40 IF( ISAVE(IPROD,1).NE.IBLANK ) GO TO 70 DO 65 J=1,39 65 DATA I/O MODEL 9 C***** (USE SOH FOR MODEL 5) WRITE(PDF,5) BEL,BEL,BEL,BEL,BEL,BEL,BEL,STX,SOH 5 FORMAT(9A1) DO 40 I=1,41,40 INC=I-1 DO 40 IPROD=1,7,2 DO 20 J=1,2 DO 20 IINPUT=1,40 .',//) DO 20 I=1,41,40 INC=I-1 DO 20 IPROD=1,8 DO 20 J=1,49,10 DO 15 K=1,10 IINPUT=J+K-1 ITEMP(1,K)=L ITEMP(2,K)=L ITEMP(3,K)=L *1HP,2*1HX,2*1HP,2*1HX,2*1HP,2*1HX, 5 2*1HP,2*1HX,2*1HP,2*1HX,2*1HP,8*1HX, 6 14*1HX,2*1HP,2*1HX,2*1HP,2*1HX,2*1HP,2*1HX, 6 2*1HP,12*1HX, 7 18*1HX,2*1HP,2*1HX,2*1HP,16*1HX/ END C C****************************S) WRITE(PDF,61) ITEMP 61 FORMAT(4(' ',20A2,'.',/)) IF(IOP.EQ.H) WRITE(PDF,70) 70 FORMAT(//,80(' '),//) RETURN END C C*********************************************************************** C BLOCK DATA IMP 1 LFUSES(COL,FUSPTR)=.FALSE. 20 CONTINUE FUSPTR=FUSPTR+1 30 CONTINUE RETURN END C C*********************************************************************** C SUBROUTINE BINR(LFUSES,H,L) C ,2,2,2,2, 3 3,3,3,3,3,3,3,3, 4 4,4,3,3,3,3,3,3, 5 5,5,3,3,3,3,3,3, 6 5,5,5,5,3,3,3,3, 7 6,6,6,6,3,3,3,3, 8 6,6,3,3,3,3,3,3, 9 7,7,7,7,7,7,3,3, A 7,7,7,7,3,3,3,3, B 1, IHEX=0 IF(LFUSES(IINPUT,IPROD + J-1 + 0+INC)) IHEX=IHEX+1 IF(LFUSES(IINPUT,IPROD + J-1 + 8+INC)) IHEX=IHEX+2 IF(LFUSES(IINPUT,IPROD + J-1 +16+INC)) IHEX=IHEX+4 IF(LFUSES(IINPUT,IPROD + JLEFT,LAND,LOR,LSLASH, 1 LEQUAL,LRIGHT,LXOR COMMON LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR COMMON /BLK/ PR8X10(10,14),PROD8(8,11),PRODLN(40,7) DATA P/'P'/,N/'N'/ FUSPTR=1 DO 30 OUTPUT=1,10 G******************************************* C SUBROUTINE TWEEK(ITYPE,LFUSES) C THIS SUBROUTINE TWEEKS LFUSES (THE PROGRAMMING FUSE PLOT) C FOR HIGH AND LOW PHANTOM FUSES IMPLICIT INTEGER (A-Z) LOGICAL LFUSES(40,80),LBLANK,LLICIT INTEGER (A-Z) COMMON /BLK/ PR8X10(10,14),PROD8(8,11),PRODLN(40,7) DATA PR8X10/ 1 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2 3, 6, 5, 5, 5, 5, 5, 5, 6, 3, 3 3, 3, 7, 7, 8, 8, 7, 7, 3, 3, 4 3, 3, 3, 9,10,1 THIS SUBROUTINE GENERATES BINARY PROGRAMMING FORMATS IMPLICIT INTEGER (A-Z) INTEGER ITEMP(5,10) LOGICAL LFUSES(40,80) COMMON /LUNIT/ PMS,POF,PDF WRITE(PDF,10) 10 FORMAT(//,' 1,1,1,3,3,3,3/ DATA PRODLN/ 1 40*1HX, 2 40*1HP, 3 40*1HN, 4 6*1HX,2*1HP,2*1HX,2*1HP,2*1HX,2*1HP,2*1HX, 4 2*1HP,2*1HX,2*1HP,2*1HX,2*1HP,2*1HX,2*1HP, 4 2*1HX,2*1HP,4*1HX, 5 10*1HX,2-1 +24+INC)) IHEX=IHEX+8 IF(LFUSES(IINPUT,IPROD + J-1 +32+INC)) IHEX=IHEX+16 20 ITEMP(IINPUT + 40*(J-1) )=ITABLE(IHEX+1) IF(IOP.EQ.H) WRITE(PDF,60) ITEMP 60 FORMAT(4(' ',20(A2,' '),'.',/)) 40 IF(IOP.EQ.RTYPE=PR8X10(OUTPUT,ITYPE) DO 30 PRLINE=1,8 LNTYPE=PROD8(PRLINE,GRTYPE) DO 20 COL=1,40 IF(PRODLN(COL,LNTYPE).EQ.P) 1 LFUSES(COL,FUSPTR)=.TRUE. IF(PRODLN(COL,LNTYPE).EQ.N) ,11,11,11,11,11, B 3, 1, 1, 1, 1, 1, 1, 1, 1, 3, C 3, 1, 1, 1, 1, 1, 1, 1, 1, 3, D 3, 1, 1, 1, 1, 1, 1, 1, 1, 3, E 3, 1, 1, 1, 1, 1, 1, 1, 1, 3/ DATA PROD8/ 1 1,1,1,1,1,1,1,1, 2 2,2,2,20, 9, 3, 3, 3, 5 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 6 2, 2, 2, 2, 1, 1, 3, 3, 3, 3, 7 11,11,11,11,11,11,11,11,11,11, 8 11,11,11,11,11,11,11,11,11,11, 9 11,11,11,11,11,11,11,11,11,11, A 11,11,11,11,11 ITEMP(4,K)=L ITEMP(5,K)=L IF(LFUSES(IINPUT,IPROD+ 0+INC)) ITEMP(5,K)=H IF(LFUSES(IINPUT,IPROD+10+INC)) ITEMP(4,K)=H IF(LFUSES(IINPUT,IPROD+20+INC)) ITEMP(3,K)=H ICK,LPTRST,LCTRST,LENABL(24),NREG COMMON LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR COMMON /PGE/ IPAGE(80,200) COMMON /LUNIT/ PMS,POF,PDF COMMON /FTEST/ IFUNCT,IDESC,IEND DATA IDASH/'-'/,L/'L'/,H/'H'/,X/'X'/,C/'C'/,ZO 10 COL=1,40 IF( PRODLN(COL,LNTYPE).EQ.P.AND.IOP.EQ.P ) IOUT(COL)=HIFANT IF( PRODLN(COL,LNTYPE).EQ.P.AND.IOP.EQ.B ) IOUT(COL)=IBLANK IF( PRODLN(COL,LNTYPE).EQ.N ) IOUT(COL)=LOFANT 10 CONTINUE RETURN HE C CORRESPONDING OUTPUT PIN IMPLICIT INTEGER (A-Z) INTEGER IENABL(10,14) LOGICAL LFUSES(40,80) C 1=ENABLED OUTPUT. 0=ANYTHING ELSE FOR THAT OUTPUT DATA IENABL/ 1 0,0,0,0,0,0,0,0,0,0, 2 0,0,0,0,******************* C SUBROUTINE TEST(LPHASE,LBUF,TITLE,IC,IL,ILE,ISYM,IBUF,ITYPE) C THIS SUBROUTINE PERFORMS THE FUNCTION TABLE SIMULATION C AND GENERATES TEST VECTORS IMPLICIT INTEGER (A-Z) INTEGER ISYM(8,24),ISYM1(8,24),TES IOUT (THE PRINTED FUSE PLOT) C FOR HIGH AND LOW PHANTOM FUSES IMPLICIT INTEGER (A-Z) INTEGER IOUT(64) LOGICAL LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR COMMON LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR F(LFUSES(IINPUT,IPROD+30+INC)) ITEMP(2,K)=H IF(LFUSES(IINPUT,IPROD+40+INC)) ITEMP(1,K)=H 15 CONTINUE 20 WRITE(PDF,30) ITEMP 30 FORMAT(' ',10('B',5A1,'F ')) WRITE(PDF,10) RETURN ENDATA DC2/Z12000000/,BEL/Z2F000000/ WRITE(PDF,10) DC2,BEL 10 FORMAT(' ',2A1) RETURN END C C*********************************************************************** C SUBROUTINE IODC4 C*****THIS ROUTINE IS OPTIONAL, IT MAY B END C C*********************************************************************** C SUBROUTINE IODC2 C*****THIS ROUTINE IS OPTIONAL, IT MAY BE USED TO TURN PERIPHERALS ON IMPLICIT INTEGER (A-Z) COMMON /LUNIT/ PMS,POF,PDF D0,0,0,0,0,0, 3 0,0,0,0,0,0,0,0,0,0, 4 0,0,0,0,0,0,0,0,0,0, 5 0,0,0,0,0,0,0,0,0,0, 6 0,0,0,0,0,0,0,0,0,0, 7 1,1,1,1,1,1,1,1,1,1, 8 0,0,0,0,0,0,0,0,0,0, 9 1,0,0,0,0,0,0,0,0,1, A IBUF(8,24),IVECT(24),IVECTP(24), 1 ISTATE(24),ISTATT(24),IPIN(24),TITLE(80) LOGICAL LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LXOR,LSAME, 1 XORFND,LERR,LPHASE(24),LPHAS1(24),LBUF(24),LOUT(24), 2 LOUTP(24),LCLO COMMON /BLK/ PR8X10(10,14),PROD8(8,11),PRODLN(40,7) DATA B/'B'/,N/'N'/,P/'P'/,LOFANT/'0'/,HIFANT/'O'/,IBLANK/' '/ C GET OUTPUT GROUPING OUTPUT=(IPROD-1)/8+1 GRTYPE=PR8X10(OUTPUT,ITYPE) LNTYPE=PROD8(I8PRO,GRTYPE) D C C*********************************************************************** C SUBROUTINE SLIP(LFUSES,I88PRO,ITYPE,IBLOW) C THIS SUBROUTINE WILL BLOW THE ENTIRE CONDITIONAL TRI STATE C PRODUCT LINE WHEN 'IF(VCC)' CONDITION IS USED FOR TE USED TO TURN PERIPHERALS OFF IMPLICIT INTEGER (A-Z) DATA DC3/Z37000000/,DC4/Z3C000000/,BEL/Z2F000000/ WRITE(PDF,10) BEL,DC3,DC4 10 FORMAT(' ',3A1) RETURN END C C**************************************************** IBLOW + 1 10 LFUSES(I,I88PRO) = .TRUE. I88PRO = I88PRO + 1 RETURN END C C*********************************************************************** C SUBROUTINE FANTOM(ITYPE,IOP,IOUT,IPROD,I8PRO) C THIS SUBROUTINE UPDA1,1,1,0,0,0,0,1,1,1, B 0,1,1,1,1,1,1,1,1,0, C 0,0,0,0,0,0,0,0,0,0, D 0,1,0,0,0,0,0,0,1,0, E 0,1,1,0,0,0,0,1,1,0/ IOUT=(I88PRO-1)/8+1 IF(IENABL(IOUT,ITYPE).EQ.0) RETURN DO 10 I=1,40 IBLOW =/'Z'/,N0/'0'/, 1 N1/'1'/,IBLANK/' '/,COMENT/';'/ C PRINT AN ERROR MESSAGE IF NO FUNCTION TABLE IS SUPPLIED IF(IFUNCT.NE.0) GO TO 3 WRITE(PMS,2) 2 FORMAT(/,' FUNCTION TABLE MUST BE SUPPLIED IN ORDER TO PERFORM', 1 .EQ.23) ) LENABL(I)=.FALSE. 46 CONTINUE C C*****SCAN THROUGH THE LOGIC EQUATIONS***** C C MAKE A DUMMY CALL TO INCR 25 CALL INCR(IC1,IL1) 26 CALL GETSYM(LBUF,IBUF,1,IC1,IL1) IF(LLEFT) GO TO 29 27 IF(.NOT.LEQUAL) GO TO 26 C 1 IVECT(I).EQ.Z.OR.IVECT(I).EQ.C) GO TO 11 WRITE(PMS,8) IVECT(I) 8 FORMAT(/,' ',A1,' IS NOT AN ALLOWED FUNCTION TABLE ENTRY') RETURN 11 CONTINUE C INITIALIZE CLOCK AND TRI STATE ENABLE FLAGS LCLOCK=.FAIL) DO 5 J=1,8 5 IBUF(J,1)=ISYM1(J,I) IF(IBUF(8,1).EQ.IDASH) GO TO 12 CALL MATCH(IMATCH,IBUF,ISYM) IF(IMATCH.NE.0) GO TO 7 WRITE(PMS,6) (IBUF(J,1),J=1,8) 6 FORMAT(/,' FUNCTION TABLE PIN LIST ERROR AT', 8AST=.FALSE. IF(LPTRST) GO TO 25 C DISABLE REGISTERED OUTPUTS IF APPROPRIATE DO 46 I=1,IMAX J=IPIN(I) IF(J.EQ.17.OR.J.EQ.18.OR.J.EQ.19.OR.J.EQ.20) LENABL(I)=.FALSE. IF( (ITYPE.EQ.8.OR.ITYPE.EQ.9.OR.ITYPE.EQ.1ETS VECTORS FROM FUNCTION TABLE DO 20 I=1,IMAX IF(IPAGE(IC,IL).EQ.IBLANK) GO TO 21 GO TO 22 21 IC=IC+1 IF(IPAGE(IC,IL).EQ.IBLANK) GO TO 21 22 IVECT(I)=IPAGE(IC,IL) IC=IC+1 20 CONTINUE C ADVANC ' SIMULATION') RETURN C PRINT TITLE 3 WRITE(POF,4) TITLE 4 FORMAT(/,' ',80A1,/) C INITIALIZE LERR (ERROR FLAG) TO NO ERROR LERR=.FALSE. C SET THE STARTING POINT OF THE FUNCTION TABLE TO COLUMN 0 C AND IFUNC CHECK IF THIS PAL TYPE HAS REGISTERS IF( .NOT.(ITYPE.EQ.8.OR.ITYPE.EQ.9.OR.ITYPE.EQ.10.OR. 1 ITYPE.EQ.12.OR.ITYPE.EQ.13.OR.ITYPE.EQ.14) ) GO TO 25 C CHECK CLOCK AND TRI STATE ENABLE PINS AND CHANGE FLAG IF NEEDED IF(IVLSE. LCTRST=.TRUE. LPTRST=.TRUE. DO 13 I=1,IMAX 13 LENABL(I)=.TRUE. C INITIALIZE NREG (NOT REGISTERED OUTPUT) TO FALSE NREG=.FALSE. C INITIALIZE ISTATE ARRAY TO ALL X'S DO 15 I=1,24 15 ISTATE(I)=X C 1) RETURN 7 LOUT(I)=.FALSE. ISTATT(I)=X IVECTP(I)=X C IF APPROPIATE PAL TYPE, REMEMBER LOCATION OF CLOCK AND TRI STATE C ENABLE PIN IN FUNCTION TABLE PIN LIST IF( .NOT.(ITYPE.EQ.8.OR.ITYPE.EQ.9.OR.ITYPE.EQ.12.OR. 1 ITYPE.EQ.13).AND.(J.EQ.16.OR.J.EQ.21) ) LENABL(I)=.FALSE. IF( (ITYPE.EQ.8.OR.ITYPE.EQ.9.OR.ITYPE.EQ.12).AND. 1 (J.EQ.15.OR.J.EQ.22) ) LENABL(I)=.FALSE. IF( ITYPE.EQ.8.AND.(J.EQ.14.OR.JE LINE COUNT TO SKIP FUNCTION TABLE COMMENTS IL=IL+1 IC=1 IF(IVECT(1).EQ.IDASH) GO TO 95 C CHECK FOR VALID FUNCTION TABLE VALUES (L,H,X,Z,C) DO 11 I=1,IMAX IF( IVECT(I).EQ.L.OR.IVECT(I).EQ.H.OR.IVECT(I).EQ.X.OR. T + 1 IC=0 IL=IFUNCT + 1 C MAKE A DUMMY CALL TO INCR CALL INCR(IC,IL) C GET THE FUNCTION TABLE PIN LIST (UP TO 22) C GO ONE MORE THAN MAX TO LOOK FOR DASHED LINE DO 10 I=1,23 CALL GETSYM(LPHAS1,ISYM1,I,IC,ECT(ICLOCK).EQ.C) LCLOCK=.TRUE. LSAME=( ( LPHASE(13)).AND.( LPHAS1(ITRST)).OR. 1 (.NOT.LPHASE(13)).AND.(.NOT.LPHAS1(ITRST)) ) IF( IVECT(ITRST).EQ.L.AND.(.NOT.LSAME).OR. 1 IVECT(ITRST).EQ.H.AND.( LSAME) ) LPTR12 IMAX=I-1 NVECT=0 C C*****START OF MAIN LOOP FOR SIMULATION***** C 90 NVECT=NVECT+1 IC1=0 IL1=ILE C GO PASSED COMMENT LINES 23 IF(IPAGE(1,IL).NE.COMENT) GO TO 24 IL=IL+1 GO TO 23 24 CONTINUE C G0.OR. 1 ITYPE.EQ.12.OR.ITYPE.EQ.13.OR.ITYPE.EQ.14) ) GO TO 10 IF(IMATCH.EQ.1) ICLOCK=I IF(IMATCH.EQ.13) ITRST=I 10 IPIN(I)=IMATCH C ALL SIGNAL NAMES FOR THE FUNCTIONAL TEST HAVE BEEN READ IN C ADJUST COUNT EVALUATE CONDITIONAL TRI STATE PRODUCT LINE 29 IF(LEQUAL) GO TO 35 NREG=.TRUE. 33 CALL GETSYM(LBUF,IBUF,1,IC1,IL1) CALL MATCH(IINP,IBUF,ISYM1) C CHECK FOR GND, VCC, /GND, OR /VCC IN CONDITIONAL TRI STATE C PRODUCT LINE 1 IDESC.EQ.0.AND.IL1.LT.IFUNCT) GO TO 27 C DETERMINE OUTPUT LOGIC VALUES C COMPARE OUTPUTS TO SEE IF VECTOR AGREES WITH RESULTS DO 50 I=1,IMAX IF(.NOT.LOUT(I)) GO TO 50 IF(ISTATT(I).EQ.X.AND.IVECT(I).EQ.X) GO TO 50 T=IVECTP(IINP) IF( (ITYPE.EQ.8.OR.ITYPE.EQ.9.OR.ITYPE.EQ.12).AND. 1 (IIFB.EQ.15.OR.IIFB.EQ.22) ) ITEST=IVECTP(IINP) IF( ITYPE.EQ.8.AND.(IIFB.EQ.14.OR.IIFB.EQ.23) ) 1 ITEST=IVECTP(IINP) 37 IF(IIFB.EQ.16.OR.IIFB.EQ.21) ) 1 ITEST=IVECTP(IINP) IF( ITYPE.EQ.9.AND.(IIFB.EQ.15.OR.IIFB.EQ.22) ) 1 ITEST=IVECTP(IINP) 36 IF( ITEST.EQ.L.AND.( LPHAS1(IINP)).AND.( LBUF(1)) 1.OR. ITEST.EQ.H.AND.( LPHAS1(IIAND.((ISUM.EQ.L.AND.XORSUM.EQ.L).OR. 1 (ISUM.EQ.H.AND.XORSUM.EQ.H)) ) ISTATT(IOUTP)=L IF( (XORFND).AND.((ISUM.EQ.H.AND.XORSUM.EQ.L).OR. 1 (ISUM.EQ.L.AND.XORSUM.EQ.H)) ) ISTATT(IOUTP)=H IF( (XORFNDM(LBUF,IBUF,1,IC1,IL1) CALL MATCH(IINP,IBUF,ISYM1) ITEST=IVECT(IINP) C GET FEED BACK VALUES IF( (.NOT.LCLOCK).OR.(NREG) ) GO TO 37 CALL MATCH(IIFB,IBUF,ISYM) IF( (ITYPE.EQ.8.OR.ITYPE.EQ.9.OR.ITYPE.EQ.10.OR.ITYPE.EQ.1 IF(IINP.NE.0) GO TO 32 CALL MATCH(IINP,IBUF,ISYM) IF( IINP.EQ.12.AND.(LBUF(1)).OR.IINP.EQ.24.AND.(.NOT.LBUF(1)) ) 1 LCTRST=.FALSE. GO TO 34 32 ITEST=IVECT(IINP) C GET FEED BACK VALUES IF(.NOT.LCLOCK) GO 4 ) IPROD=L IF(ITEST.EQ.X.OR.ITEST.EQ.Z) IPROD=X IF(LAND) GO TO 30 IF(ISUM.EQ.L.AND.IPROD.EQ.X) ISUM=X IF( (ISUM.NE.H).AND.IPROD.EQ.H ) ISUM=H C CHECK FOR XOR (EXCLUSIVE OR) AND SAVE INTERMEDIATE VALUE IF(.( ITEST.EQ.L.AND.( LPHAS1(IINP)).AND.( LBUF(1)) 1.OR. ITEST.EQ.H.AND.( LPHAS1(IINP)).AND.(.NOT.LBUF(1)) 2.OR. ITEST.EQ.H.AND.(.NOT.LPHAS1(IINP)).AND.( LBUF(1)) 3.OR. ITEST.EQ.L.AND.(.NOT.LPHAS1(IINP)).AND.(.NOT.LBUF(1)) NP)).AND.(.NOT.LBUF(1)) 2.OR. ITEST.EQ.H.AND.(.NOT.LPHAS1(IINP)).AND.( LBUF(1)) 3.OR. ITEST.EQ.L.AND.(.NOT.LPHAS1(IINP)).AND.(.NOT.LBUF(1)) 4 ) LCTRST=.FALSE. IF(ITEST.EQ.X.OR.ITEST.EQ.Z) LCTRST=.FALSE. 34 IF(LAND) GO TO ).AND. (ISUM.EQ.X.OR. XORSUM.EQ.X) ) ISTATT(IOUTP)=X NREG=.FALSE. C CHECK IF ALL EQUATIONS HAVE BEEN PROCESSED BY COMPARING CURRENT C LINE NUMBER WITH FUNCTION TABLE LINE NUMBER IF(IDESC.NE.0.AND.IL1.LT.IFUNCT.AND.IL1.LT.IDESC.OR.2.OR. 1 ITYPE.EQ.13.OR.ITYPE.EQ.14).AND.(IIFB.EQ.17.OR.IIFB.EQ.18.OR. 2 IIFB.EQ.19.OR.IIFB.EQ.20) ) ITEST=IVECTP(IINP) IF( (ITYPE.EQ.8.OR.ITYPE.EQ.9.OR.ITYPE.EQ.12.OR.ITYPE.EQ.13).AND. 1 (IIFB.EQ.16.OR.IIFB.EQ.21) ) ITESTO 36 CALL MATCH(IIFB,IBUF,ISYM) IF( (ITYPE.EQ.9.OR.ITYPE.EQ.10.OR.ITYPE.EQ.13.OR.ITYPE.EQ.14).AND. 1 (IIFB.EQ.17.OR.IIFB.EQ.18.OR.IIFB.EQ.19.OR.IIFB.EQ.20) ) 2 ITEST=IVECTP(IINP) IF( (ITYPE.EQ.9.OR.ITYPE.EQ.13).AND.NOT.LXOR) GO TO 31 XORSUM=ISUM XORFND=.TRUE. ISUM=L GO TO 28 31 IF(LOR) GO TO 28 C IF END OF EQUATION HAS BEEN FOUND, DETERMINE FINAL SUM AND SAVE IT IF(.NOT.XORFND) ISTATT(IOUTP)=ISUM IF( (XORFND).LCTRST=.TRUE. LOUTP(IOUTP)=LBUF(1) C DETERMINE PRODUCT TERM AND EVENTUALLY SUM FOR OUTPUT KEEPING C TRACK TO SEE IF AN XOR (EXCLUSIVE OR) HAS BEEN FOUND XORSUM=H XORFND=.FALSE. ISUM=L 28 IPROD=H 30 CALL GETSY33 GO TO 27 C C EVALUATE THE LOGIC EQUATION C C FIND PIN NUMBER OF THE OUTPUT VECTORS 35 CALL MATCH(IOUTP,IBUF,ISYM1) IF(NREG) LENABL(IOUTP)=LCTRST LOUT(IOUTP)=.TRUE. IF( .NOT.LCTRST ) LOUT(IOUTP)=.FALSE. LSAME = ( ( LOUTP(I)).AND.( LPHAS1(I)).OR. 1 (.NOT.LOUTP(I)).AND.(.NOT.LPHAS1(I)) ) IMESS=40 IF(ISTATT(I).EQ.L.AND.IVECT(I).EQ.L.AND.(.NOT.LSAME)) IMESS=41 IF(ISTATT(I).EQ.H.AND.IVECT(I).EQ.H.AND.(.NOT.LSI)=N0 IF( ( LOUT(J)).AND.( LSAME).AND. 1 IVECT(J).EQ.L.AND.( LENABL(J)) ) ISTATE(I)=L IF( ( LOUT(J)).AND.( LSAME).AND. 1 IVECT(J).EQ.H.AND.( LENABL(J)) ) ISTATE(I)=H IF( ( IF(IMESS.EQ.42) WRITE(PMS,42) NVECT,(ISYM1(J,I),J=1,8) 42 FORMAT(/,' FUNCTION TABLE ERROR AT VECTOR',I3,' PIN =',8A1, 1 ' EXPECT = L ACTUAL = H') IF(IMESS.EQ.43) WRITE(PMS,43) NVECT,(ISYM1(J,I),J=1,8) 43 FORMAT(/,' FUNCT END > //,' BNPF (N) - GENERATES BNPF OUTPUT FOR PAPER TAPE', J //,' QUIT (Q) - EXIT PALASM') GO TO 90 C TERMINATE SIMULATION 95 IF(.NOT.LERR) WRITE(POF,67) 67 FORMAT(/,' PASS SIMULATION') RETURN E.EQ.6.AND.(I.EQ.18.OR.I.EQ.19) ) LOUT(J)=.TRUE. IF( (.NOT.LOUT(J)).AND.( LSAME).AND. 1 IVECT(J).EQ.L ) ISTATE(I)=N0 IF( (.NOT.LOUT(J)).AND.( LSAME).AND. 1 IVECT(J).EQ.H ) AME)) IMESS=42 IF(ISTATT(I).EQ.L.AND.IVECT(I).EQ.H.AND.( LSAME)) IMESS=42 IF(ISTATT(I).EQ.H.AND.IVECT(I).EQ.L.AND.( LSAME)) IMESS=41 IF( ( LENABL(I)).AND.IVECT(I).EQ.Z ) IMESS=43 IF( (.NOT.LENABL(I))SAVE PRESENT VECTORS FOR FEED BACK USED WITH NEXT SET OF VECTORS C IF CLOCK PULSE AND NOT Z (Z WOULD BE AN UNREALISTIC VALUE) 65 IF( (LCLOCK).AND.IVECT(J).NE.Z ) IVECTP(J)=IVECT(J) C ASSIGN X TO GROUND PIN AND 1 TO VCC PIN ISTATE(12)= LOUT(J)).AND.(.NOT.LSAME).AND. 1 IVECT(J).EQ.L.AND.( LENABL(J)) ) ISTATE(I)=H IF( ( LOUT(J)).AND.(.NOT.LSAME).AND. 1 IVECT(J).EQ.H.AND.( LENABL(J)) ) ISTATE(I)=L GO TO 65 55 CONTINUE C ION TABLE ERROR AT VECTOR',I3,' PIN =',8A1, 1 /,' EXPECT = OUTPUT ENABLE ACTUAL = Z') IF(IMESS.EQ.44) WRITE(PMS,44) NVECT,(ISYM1(J,I),J=1,8),IVECT(I) 44 FORMAT(/,' FUNCTION TABLE ERROR AT VECTOR',I3,' PIN =',8A1, 1 ISTATE(I)=N1 IF( (.NOT.LOUT(J)).AND.(.NOT.LSAME).AND. 1 IVECT(J).EQ.L ) ISTATE(I)=N1 IF( (.NOT.LOUT(J)).AND.(.NOT.LSAME).AND. 1 IVECT(J).EQ.H ) ISTATE(.AND.(LOUT(I)).AND.IVECT(I).NE.Z ) IMESS=44 IF(IMESS.NE.40) LERR=.TRUE. IF(IMESS.EQ.41) WRITE(PMS,41) NVECT,(ISYM1(J,I),J=1,8) 41 FORMAT(/,' FUNCTION TABLE ERROR AT VECTOR',I3,' PIN =',8A1, 1 ' EXPECT = H ACTUAL = L') X ISTATE(24)=N1 C PRINT TEST VECTORS WRITE(POF,60) NVECT,(ISTATE(I),I=1,24) 60 FORMAT(' ',I2,' ',24A1) GO TO 90 C TERMINATE SIMULATION 95 IF(.NOT.LERR) WRITE(POF,67) 67 FORMAT(/,' PASS SIMULATION') RETURN I) GO TO 55 IF( IVECT(J).EQ.L.OR.IVECT(J).EQ.H ) GO TO 51 ISTATE(I)=IVECT(J) GO TO 65 51 LSAME=( ( LPHASE(I)).AND.( LPHAS1(J)).OR. 1 (.NOT.LPHASE(I)).AND.(.NOT.LPHAS1(J)) ) IF( ITYP ' EXPECT = Z ACTUAL = ',A1) 50 CONTINUE C CHANGE THE ORDER OF VECTORS FROM THE ORDER OF APPEARANCE IN THE C FUNCTION TABLE TO THAT OF THE PIN LIST AND TWEEK FOR OUTPUT DO 65 I=1,24 DO 55 J=1,IMAX IF(IPIN(J).NE. PAL16R8 PAL DESIGN SPECIFICATION BBCD SHLOMO WASER 01/06/78 BINARY TO BCD CONVERTER MMI SUNNYVALE, CALIFORNIA CLK /CLR CIN /C10 /C11 /C12 /C13 NC NC GND /OC /B13 /B12 C L L H X X L H X X X X X X X X X X CLEAR C L L L L L L H X X X X X X X X X X C L L L L H L H X X X X X X X X X X C L L L H H H L X X TT /JKC /JKT VCC JKT := J*/JKT*/CLR ;J-K FLIP-FLOP (TRUE) + /K* JKT*/CLR ;JKT = Q + PR ;PRESET Q JKC := /J* K */PR ;J-K FLIP-FLOP (COMPLEMENT) + /J*/JKT*/PR ;JKC = /Q + K* JKT* /CLR*/B12* B11 + /CLR* B13*/B10 B13 := /CLR* B12*/B11*/B10 + /CLR* B13* B10 FUNCTION TABLE CIN C10 C11 C12 C13 /CLR CLK /OC B13 B12 B11 B10 B03 B02 B01 B00 ;-INPUT- CONTROL -OUTPUT- COMMENT ; CARRY / / ;C CCCC ;PRESET Q FUNCTION TABLE CLK /OC PR CLR J K JKT JKC T TT TC D DT DC S R SRT SRC ; CONTROL J-K FLIP-FLOP T FLIP-FLOP D FLIP-FLOP S-R FLIP-FLOP ; C / IN OUT IN OUT IN OUT IN OUT ;LK OC PR /B11 /B10 /B03 /B02 /B01 /B00 VCC B00 := /CLR* CIN + /CLR* C13 + /CLR* C12* C10 + /CLR* C12* C11 B01 := /CLR*/B03*/B02* B00 + /CLR* B03*/B00 + /CLR* B02* B01*/B00 B02 := /CLR* B01* B00 + /CLR*/B02* B01 PR ;TC = /Q + CLR ;CLEAR /Q DT := D*/CLR ;DATA FLIP-FLOP (TRUE) DT = Q + PR ;PRESET Q DC := /D*/PR ;DATA FLIP-FLOP (COMPLEMENT) (DC = /Q) + CLR ;CLEAR/PR ; + CLR ;CLEAR /Q TT := T*/TT*/CLR ;TRIGGER FLIP-FLOP (TRUE) + /T* TT*/CLR ;TT = Q + PR ;PRESET Q TC := /T*/TT*/PR ;TRIGGER FLIP-FLOP (COMPLEMENT) + T* TT*/ C C O BBBBBBBB ;I 1111 L L C 11110000 ;N 0123 R K 32103210 --------------------------------------------------------- L LLLL H C L LLLLLLLL SERIAL INPUT A L H LLLL H C L LLLLLLLH SERIAL INPUT A H H LLLL CLR J K Q /Q T Q /Q D Q /Q S R Q /Q COMMENT ------------------------------------------------------------------------------- X H X X X X Z Z X Z Z X Z Z X X Z Z HI-Z ; TEST J-K FLIP-FLOP PAL16R8 PAL DESIGN SPECIFICATION BFLIP VINCENT COLI 07/19/81 BASIC CLOCKED FLIP-FLOPS MMI SUNNYVALE, CALIFORNIA CLK J K T PR CLR D S R GND /OC /SRC /SRT /DC /DT /TC / + /CLR* B03*/B00 B03 := /CLR* B02*/B01*/B00 + /CLR* B03* B00 B10 := /CLR* B03 + /CLR* B02* B00 + /CLR* B02* B01 B11 := /CLR*/B13*/B12* B10 + /CLR* B13*/B10 + /CLR* B12* B11*/B10 B12 := /CLR* B11* B10 + /Q SRT := S* /CLR ;SET-RESET FLIP-FLOP (TRUE) + /R*/SRT*/CLR ;(SRT = Q) + PR ;PRESET Q SRC := /S* R */PR ;SET-RESET FLIP-FLOP (COMPLEMENT) + /S*/SRT*/PR ;(SRC = /Q) + PR -------------------------- DESCRIPTION THE FUNCTION OF THIS PAL IS TO CONVERT A SERIAL STREAM OF BINARY DATA INTO A PARALLEL BCD REPRESENTATION. >H,X,Z,C) DO 11 I=1,IMAX IF( IVECT(I).EQ.L.OR.IVECT(I).EQ.H.OR.IVECT(I).EQ.X.OR. H C L LLLLLLHH SERIAL INPUT A H H LLLL H C L LLLLLHHH SERIAL INPUT A H L LLLL H C L LLLHLHLL SERIAL INPUT A H X XXXX L C L LLLLLLLL TEST CLEAR X XXXX X C H ZZZZZZZZ TEST HI-Z -------------------------------X X X X X X X X TOGGLE C L L L H L H L X X X X X X X X X X C L L L L L H L X X X X X X X X X X C L L L L H L H X X X X X X X X X X C ! Q = L ! Q = H ! ! TYPE OF ! !---------------------------------------- ! FLIP-FLOP ! INPUT ! Q+ = L ! Q+ = H ! Q+ = L ! Q+ = H ! ------------------------------------------------------------- H X X X X X X X TOGGLE C L H L X X X X X H L X X X X X X X PRESET ; TEST D FLIP-FLOP C L L H X X X X X X X X L H X X X X CLEAR C L L L X X X X . PALASM EXERCISES THE FUNCTION TABLE TO SIMULATE THE BASIC FLIP FLOPS. >IINP) C GET FEED BACK VALUES IF( (.NOT.----------------------------------------------- THE FUNCTION TABLE EXERCISES ALL INPUTS AND TESTS BASIC FUNCTION PERFORMANCEX X X X X X X X L L H L C L L L X X X X X X X X X X H L H L ------------------------------------------------------------------------------- DESCRIPTION THIS EXAMPLE ILLUSTRATES THE USE OFL H L X X H L X X X X X X X X X X PRESET C L L L H H L H X X X X X X X X X X TOGGLE C L L L H L H L X X X X X X X X X X ; TEST T FLIP-FLOP C L L H ! L ! ------------------------------------------------------------- ! DATA ! D ! L ! H ! L ! H ! ------------------------------------------------------------- ! SET-RESET ! S ! ! J-K ! J ! L ! H ! X ! X ! ! ! K ! X ! X ! H ! L ! ------------------------------------------------------------- ! TRIGGER ! T ! L ! H ! X X X L L H X X X X C L L L X X X X X X X H H L X X X X C L L L X X X X X X X L L H X X X X C L H L X X X X X X X X H L X X X X PRESE FUSIBLE LOGIC TO IMPLEMENT THE BASIC FLIP-FLOPS: J-K FLIP-FLOP, TRIGGER FLIP-FLOP, DATA FLIP-FLOP, AND SET-RESET FLIP-FLOP. NEXT TABLE FOR THE FLIP-FLOPS: ------------------------------------------------------------- ! ! H X X X X X L H X X X X X X X CLEAR C L L L X X X X L L H X X X X X X X C L L L X X X X H H L X X X X X X X TOGGLE C L L L X X X X H L L ! H ! L ! X ! ! ! R ! X ! L ! H ! L ! ------------------------------------------------------------- THE FUNCTION TABLE EXERCISES ALL INPUTS AND TESTS BASIC FUNCTION PERFORMANCE L L L X X X X X X X X X X L H L H RESET C L L L X X X X X X X X X X L H L H HOLD C L H L X X X X X X X X X X X X H L PRESET C L L L X X T ; TEST S-R FLIP-FLOP C L L H X X X X X X X X X X X X L H CLEAR C L L L X X X X X X X X X X L L L H C L L L X X X X X X X X X X H L H L SET C PAL12H6 PAL DESIGN SPECIFICATION BGATES VINCENT COLI 06/12/81 BASIC GATES MMI SUNNYVALE, CALIFORNIA C D F G M N P Q I GND J K L R O H E B A VCC B = /A +:/SET*/LOAD*COUNT*CIN* UP* Q0 ;CARRY + /SET*/LOAD*COUNT*CIN*/UP*/Q0 ;BORROW /Q2 := /SET* LOAD*/D2-7 ;LOAD D2-7 + /SET*/LOAD*/Q2 TEST AND GATE XX LHL XXX XXXX XXX XXX TEST AND GATE XX HLL XXX XXXX XXX XXX TEST AND GATE XX HHH XXX XXXX XXX XXX TEST AND GATE XX XXX LLL XXXX XXX XXX TEST OR GATE XX XXX LHH XXXX XXXD /OC Q9 Q8 Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0 VCC /Q0 := /SET* LOAD*/D0 ;LOAD D0 + /SET*/LOAD*/Q0 ;HOLD :+:/SET*/LOAD*COUNT*CIN* UP H TEST EXCLUSIVE OR GATE XX XXX XXX XXXX XXX HHL TEST EXCLUSIVE OR GATE ------------------------------------------------------------ DESCRIPTION THIS EXAMPLE ILLUSTRATES THE USE OF FUSIBLE LOGIC TO IMPLEMENT THE BASIC GATES; ;INVERTER E = C*D ;AND GATE H = F + G ;OR GATE L = /I + /J + /K ;NAND GATE O = /M*/N ;NOR GATE R = P*/Q + /P*Q ;EXCLUSIVE OR GATE FUNCTION TABLE A B C D E F G H I J K L M N O P Q R XXX TEST OR GATE XX XXX HLH XXXX XXX XXX TEST OR GATE XX XXX HHH XXXX XXX XXX TEST OR GATE XX XXX XXX LLLH XXX XXX TEST NAND GATE XX XXX XXX LLHH XXX XXX TEST NAND GATE XX XXX XXX L ;CARRY + /SET*/LOAD*COUNT*CIN*/UP ;BORROW /Q1 := /SET* LOAD*/D1 ;LOAD D1 + /SET*/LOAD*/Q1 ;HOLD :INVERTER, AND GATE, OR GATE, NAND GATE, NOR GATE, AND EXCLUSIVE OR GATE. THE FUNCTION TABLE EXERCISES ALL INPUTS AND TESTS BASIC FUNCTION PERFORMANCE. PALASM EXERCISES THE FUNCTION TABLE TO SIMULATE THE BASIC GATES. > X X X X X X C ;AB CDE FGH IJKL MNO PQR COMMENTS ------------------------------------------------------------ LH XXX XXX XXXX XXX XXX TEST INVERTER HL XXX XXX XXXX XXX XXX TEST INVERTER XX LLL XXX XXXX XXX XXX PAL20X10 PAL DESIGN SPECIFICATION P000 (74LS491) BIRKNER/COLI 07/21/81 10-BIT COUNTER MMI SUNNYVALE, CALIFORNIA CLK D0 D1 D2-7 D8 D9 /LOAD /COUNT /UP SET /CIN GNXX XXX XXXX HLL XXX TEST NOR GATE XX XXX XXX XXXX HHL XXX TEST NOR GATE XX XXX XXX XXXX XXX LLL TEST EXCLUSIVE OR GATE XX XXX XXX XXXX XXX LHH TEST EXCLUSIVE OR GATE XX XXX XXX XXXX XXX HLHLH XXX XXX TEST NAND GATE XX XXX XXX HLLH XXX XXX TEST NAND GATE XX XXX XXX HHHL XXX XXX TEST NAND GATE XX XXX XXX XXXX LLH XXX TEST NOR GATE XX XXX XXX XXXX LHL XXX TEST NOR GATE XX X ;HOLD :+:/SET*/LOAD*COUNT*CIN* UP* Q0* Q1 ;CARRY + /SET*/LOAD*COUNT*CIN*/UP*/Q0*/Q1 ;BORROW /Q3 := /SET* LOAD*/D2-7 --------------------------- H X X X X SET ALL HIGH L L X X X LOAD D L H H X X HOLD L H L H X HOLD L H L H L COUNT UP + /SET*/LOAD*COUNT*CIN*/UP*/Q0*/Q1*/Q2*/Q3*/Q4*/Q5*/Q6*/Q7*/Q8 ;BORROW FUNCTION TABLE CLK /LOAD /COUNT /UP SET /CIN /OC D9 D8 D2-7 D1 D0 Q9 Q8 Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0 ;C L C U S C DATA IN Q OUT ;K D N P T I E 987-210 9876543210 COMMEUNT*CIN*/UP*/Q0*/Q1*/Q2*/Q3 ;BORROW /Q5 := /SET* LOAD*/D2-7 ;LOAD D2-7 + /SET*/LOAD*/Q5 ;HOLD :+:/SET*/LOAD*COUNT*CIN* UP* Q0* Q1* DOWN ------------------------------------------------------------------------ DESCRIPTION THE TEN-BIT COUNTER CAN COUNT UP, COUNT DOWN, SET, AND LOAD 2 LSB'S, 2MSB'S AND 6 MIDDLE BITS HIGH OR LOW AS A GROUP. ALL OPERATIONS ARE SYNCHRONOUS WI ;LOAD D8 + /SET*/LOAD*/Q8 ;HOLD :+:/SET*/LOAD*COUNT*CIN* UP* Q0* Q1* Q2* Q3* Q4* Q5* Q6* Q7 ;CARRY + /SET*/LOAD*COUNT*CIN*/UP*/Q0*/Q1*/Q2*/Q3*/Q4*/Q5*/Q ;LOAD D2-7 + /SET*/LOAD*/Q3 ;HOLD :+:/SET*/LOAD*COUNT*CIN* UP* Q0* Q1* Q2 ;CARRY + /SET*/LOAD*COUNT*CIN*/UP*/Q0*/Q1*/Q2 ;BORROW LLLLL LLLLLLLLLL CLEAR C H H X L X L XXXXX LLLLLLLLLL HOLD C H L X L H L XXXXX LLLLLLLLLL HOLD C H L L L L L XXXXX LLLLLLLLLH COUNT UP (NOTE 5 CNTRLS LOW NEAR GND) C H L L L L L XXXXX LLLLLLLLHL COUNT UP C H L L L L L XXXXX LLLLLNT ------------------------------------------------------------------------ C X X X H X L XXXXX HHHHHHHHHH SET C L X X L X L LLLLL LLLLLLLLLL CLEAR C L X X L X L HHHHH HHHHHHHHHH SET C H H X L X L XXXXX HHHHHHHHHH HOLD C L X X L X L Q2* Q3* Q4 ;CARRY + /SET*/LOAD*COUNT*CIN*/UP*/Q0*/Q1*/Q2*/Q3*/Q4 ;BORROW /Q6 := /SET* LOAD*/D2-7 ;LOAD D2-7 + /SET*/LOAD*/Q6 TH THE CLOCK. SET OVERRIDES LOAD, COUNT AND HOLD. LOAD OVERIDES COUNT. COUNT IS CONDITIONAL ON CIN, OTHERWISE IT HOLDS. ALL OUTPUTS ARE ENABLED WHEN /OC IS LOW, OTHERWISE HIGH-Z. SET /LOAD /COUNT /CIN /UP OPERATION -----------------6*/Q7 ;BORROW /Q9 := /SET* LOAD*/D9 ;LOAD D9 + /SET*/LOAD*/Q9 ;HOLD :+:/SET*/LOAD*COUNT*CIN* UP* Q0* Q1* Q2* Q3* Q4* Q5* Q6* Q7* Q8 ;CARRY /Q4 := /SET* LOAD*/D2-7 ;LOAD D2-7 + /SET*/LOAD*/Q4 ;HOLD :+:/SET*/LOAD*COUNT*CIN* UP* Q0* Q1* Q2* Q3 ;CARRY + /SET*/LOAD*COLLLHH COUNT UP C H L H L L L XXXXX LLLLLLLLHL COUNT DOWN C H L H L L L XXXXX LLLLLLLLLH COUNT DOWN C H L H L L L XXXXX LLLLLLLLLL COUNT DOWN C H L H L L L XXXXX HHHHHHHHHH COUNT DOWN ROLL OVER C H L H L L L XXXXX HHHHHHHHHL COUNT /SET*/LOAD*/Q7 ;HOLD :+:/SET*/LOAD*COUNT*CIN* UP* Q0* Q1* Q2* Q3* Q4* Q5* Q6 ;CARRY + /SET*/LOAD*COUNT*CIN*/UP*/Q0*/Q1*/Q2*/Q3*/Q4*/Q5*/Q6 ;BORROW /Q8 := /SET* LOAD*/D8 ;HOLD :+:/SET*/LOAD*COUNT*CIN* UP* Q0* Q1* Q2* Q3* Q4* Q5 ;CARRY + /SET*/LOAD*COUNT*CIN*/UP*/Q0*/Q1*/Q2*/Q3*/Q4*/Q5 ;BORROW /Q7 := /SET* LOAD*/D2-7 ;LOAD D2-7 + L H L H H COUNT DOWN -------------------------------------------- > L ! --------------L H H X X HOLD L H L H X HOLD L H L H L COUNT UP T THE FUNCTION TABLE SIMULATION COULD BE PERFORMED AND THE PART COULD BE TESTED AT THE TIME OF MANUFACTURE. THERE ARE 36 DIFFERENT STATES TO THE COUNT SEQUENCE. EACH STATE CORRESPONDS TO ONE OF THE NUMBER COMBINATIONS TO BE DISPLAYED ON THE DICE. 2 C L L H HHLLHLHH 3 2 C L L H HLHLHLHH 4 2 C L L H HLLLHLHH 5 2 C L L H LLHLHLHH 6 2 ; C L L H HHLHHHLL 1 3 C L L H HLHHHHLL 2 3 C LL L H HLHLLLHL 4 6 C L L H HLLLLLHL 5 6 C L L H LLHLLLHL 6 6 ; C H X X ZZZZZZZZ TEST HI-Z ---------------------------------------------- DESCRIPTION THE DUAL MODULO-SIX COUNTER COMMENTS ;C / RE QQQQQQQQ NUMBER DISPLAYED ;K OC SET SET 12345678 DIE 2 DIE 1 ---------------------------------------------- C L H L LHHHHHHH INITIALIZE COUNTER C L L H HHLHHHLH 1 1 C L L H HLHLLHLHL 3 4 C L L H HLHLHLHL 4 4 C L L H HLLLHLHL 5 4 C L L H LLHLHLHL 6 4 ; C L L H HHLHHLLL 1 5 C L L H HLHHHLLL 2 5 C L L H HHLLHLLL L H HHLLHHLL 3 3 C L L H HLHLHHLL 4 3 C L L H HLLLHHLL 5 3 C L L H LLHLHHLL 6 3 ; C L L H HHLHHLHL 1 4 C L L H HLHHHLHL 2 4 C L L H H PAL16R8 PAL DESIGN SPECIFICATION EDG VETTER/COLI 07/06/81 ELECTRONIC DICE GAME MMI SUNYVALE, CALIFORNIA CK RESET SET NC NC NC NC NC NC GND /OC /Q8 /Q7 /Q6 /Q5 INCREMENTS ON THE RISING EDGE OF THE CLOCK (CK). THE THREE STATE OUTPUTS ARE HIGH-Z WHEN THE OUTPUT CONTROL LINE (/OC) IS HIGH AND ENABLED WHEN THE OUTPUT CONTROL LINE (/OC) IS LOW. THE RESET AND SET LINES ARE NEEDED TO INITIALIZE THE COUNTER SO THAHHHHLH 2 1 C L L H HHLLHHLH 3 1 C L L H HLHLHHLH 4 1 C L L H HLLLHHLH 5 1 C L L H LLHLHHLH 6 1 ; C L L H HHLHHLHH 1 2 C L L H HLHHHLHH 23 5 C L L H HLHLHLLL 4 5 C L L H HLLLHLLL 5 5 C L L H LLHLHLLL 6 5 ; C L L H HHLHLLHL 1 6 C L L H HLHHLLHL 2 6 C L L H HHLLLLHL 3 6 C Q1*/Q5* Q8* SET + /Q1* Q6* SET Q7 := Q1*/Q7* SET + /Q1* Q7* SET Q8 := Q1*/Q5* Q6* SET + Q1*/Q5* Q8* SET + /Q1* Q8* SET FUNCTION TABLE CK /OC RESET SET /Q1 /Q2 /Q3 /Q4 /Q5 /Q6 /Q7 /Q8 ;--CONTROLS-- /OUTPUTS /Q4 /Q3 /Q2 /Q1 VCC Q1 := /Q1* Q2* Q3 + RESET Q2 := /Q1* Q3* SET + /Q1* Q4* SET Q3 := /Q3* SET Q4 := /Q1* Q2* SET + /Q1* Q4* SET Q5 := Q1*/Q5* Q6* Q7* SET + /Q1* Q5* SET Q6 := Q1*/Q5* Q7* SET +