;WLRDC.FAI;61, 28-JUL-75 11:21:56, EDIT BY HELLIWELL SUBTTL 'RDC' 'CON' REDAC LIBRARY IN, CONNECTIONS OUT ;OUTPUT REDAC FORMAT CONNECTION LIST DEC,< REDAC: MOVE T,[PUSHJ P,TTYIN] MOVEM T,GETCHR MOVE T,[OUTCHR TTT] MOVEM T,PUTCHR SKIPE T,RDCLIB ;LIBRARY HAVE ANY STRUCTURE YET? JRST RDCIN GETFS (T,TBLK) ;NO MOVEM T,RDCLIB ;SET UP HEADER BCLEAR(TT,T,TBLK) RDCIN: IFN 0,< HLLZ TT,1(T) ;REDAC LIBRARY ALREADY IN? JUMPN TT,NORDCL ;YES OUTSTR [ASCIZ / /] MOVE T,['LIBRY '] MOVEM T,FILNAM MOVSI T,'RDC' MOVEM T,FILEXT ;SET UP STANDARD FILE NAME SETZM FILEXT+1 SETZM FILPPN MOVEI A,FILNAM PUSHJ P,FILPNT JRST REDAC5 REDAC4: OUTSTR [ASCIZ / REDAC MASTER LIBRARY /] MOVSI T,'RDC' MOVEM T,DEFEXT PUSHJ P,SETFIL ;GET THE FILENAME[PPN] JRST NORDCL ;NO NAME JRST ERRET ;FORMAT ERROR REDAC5: PUSHJ P,IN0 ;INIT DSK POPJ P, ;NOT AVAILABLE LOOKUP DAT,FILNAM JRST [OUTSTR [ASCIZ / LOOKUP FAILED, CODE= /] HRRZ T,FILEXT PUSHJ P,DECOUT RELEAS DAT, JRST REDAC4] ;TRY WITH TYPED-IN NAME MOVE TT,[PUSHJ P,BYTIN] MOVEM TT,GETCHR ; READ LIBRARY DEFS RDCL: SETZ B, PUSHJ P,RDCL1 ;GET 1ST CHR JRST RDCLEF ;END OF FILE CAIE TTT,"L" ;L NUMBER? JRST RDCLFE ;NO, FORMAT ERROR PUSHJ P,RDCDEC ;YES, GET N JUMPLE A,RDCLFE ;N.GR.0? CAILE A,=99999 JRST RDCLFE ;N.GR.99999 GETFS (B,TBLK) ;START BUILDING LIBRARY DEF BCLEAR(C,B,TBLK) STORE(A,B,TRHT) ;SAVE L NUMBER GETFS (C,TBLK) BCLEAR(A,C,TBLK) STORE(C,B,NXTT) ;LINK PUSHJ P,RDCDEC ;GET X STORE(A,C,TLFT) ;AND SAVE PUSHJ P,RDCDEC ;GET Y STORE(A,C,TRHT) ;AND SAVE PUSHJ P,RDCDCR ;GET NUMBER OF PINS JUMPLE A,RDCLFE ;VALID N? STORE(A,C,TVAL) ;SAVE N IN DEFINITION MOVE E,A ;MAKE 2 COPIES MOVE F,A MOVEI C,RADDR(C,NXTT,NXTT) ;SETUP FOR LIST BUILDING RDCL3: PUSHJ P,RDCL1 ;GET 1ST CHR, NEXT LINE JRST RDCLER ;EOF=ERROR CAIE TTT,11 ;BEGINS WITH TAB? JRST RDCLFE ;NO, FORMAT ERROR MOVE D,C GETFS (C,TBLK) ;BUILD PIN BLOCK BCLEAR(A,C,TBLK) STORE(C,D,NXTT) ;LINK PUSHJ P,RDCDEC ;GET X STORE(A,C,TLFT) ;AND SAVE PUSHJ P,RDCDEC ;GET Y STORE(A,C,TRHT) ;AND SAVE PUSHJ P,RDCDCR ;GET PAD CODE STORE(A,C,TVAL) ;AND SAVE SOJG E,RDCL3 ;DONE ALL PINS? PUSHJ P,RDCLF ;YES, ENTER IN LIST JRST RDCL ; SETUP CON OUTPUT RDCLEF: RELEAS DAT, MOVE T,RDCLIB ;MARK AS HAVING READ LIB HRROS 1(T) >;IFN 0 NORDCL: MOVE T,[PUSHJ P,TTYIN] MOVEM T,GETCHR MOVE L,DEFLST PUSHJ P,LSTGET POPJ P, MOVSI T,'CON' MOVEI TT,0 MOVSI TTT,'DSK' PUSHJ P,OUTSET POPJ P, MOVE T,RDCLIB CLEAR(T,TLFT) ;NO LIBARY READ SETZM IGNTRM ;ASK ABOUT TERMINATORS IF FOUND MOVEI G,RADDR(W,WBDY,NXTB) ;PREPARE TO GO DOWN BODY LIST PUSHJ P,DCLEAR ;CLEAR DIP TMP CELLS ; GO DOWN BODY LIST, MATCH DIPS TO LIBRARY MAKLIB: FETCH(G,G,NXTB) ;NEXT BODY JUMPE G,LIBLST ;DONE ALL BODIES? FETCH(A,G,DIPT) ;GET DIP PTR JUMPE A,MAKLI4 ;NO DIP? FETCH(F,A,DPNN) ;# OF PINS TRNN F,1 ;DON'T KNOW ABOUT ODD NUMBERS CAIGE F,=14 ;UNDER 14 PINS IS NOT A DIP JRST MAKLI8 ;TEST FOR TERMINATOR FETCH(B,A,DTMP) ;RDC POINTER JUMPN B,MAKL10 ;ALREADY GOT REDAC LIB NUMBER? GETFS (B,TBLK) ;MAKE REDAC LIB STRUCTURE BCLEAR(C,B,TBLK) GETFS (C,TBLK) BCLEAR(T,C,TBLK) STORE(C,B,NXTT) ;LINK STORE(F,C,TVAL) ;SAVE # OF PINS MOVE T,F ;CONSTRUCT DIP X,Y CAIL F,=24 TLOA T,=28 ;24 PINS UP ARE 0.70 INCH WIDE HRLI T,=16 ;OTHERS ARE 0.40 INCH WIDE ADD T,F ;LENGTH IS 2*N PINS/40 INCHES STORE(T,C,TRHT) ;STORE Y MOVEI TT,-2(T) ;Y OF PIN 1 HLRZ T,T STORE(T,C,TLFT) ;STORE X SUBI T,2 ;X OF PIN 1 FETCH(TTT,A,DPIN) ;PTR TO 1ST DIP PIN MOVEI C,RADDR(C,NXTT,NXTT) ; MAKE RDC LIBRARY STRUCTURE FROM THIS DIP FOR COMPARISON MAKLI1: FETCH(E,TTT,DPBIT) ;GET BITS GETFS (D,TBLK) ;MAKE PIN ENTRY BCLEAR(T,D,TBLK) STORE(D,C,NXTT) ;LINK MOVE C,D MOVM D,TT ;PIN Y = ABS(DIP Y +2 -4*PIN #) SKIPGE TT MOVEI T,2 ;IF PIN # LESS THAN N/2, PIN X = 2 STORE(T,C,TLFT) STORE(D,C,TRHT) MOVEI D,3 ;DEFAULT PAD CODE =3 TRC E,ECL!OUTLD TRCN E,ECL!OUTLD MOVEI D,=28 ;ECL OUTPUTS FLAGGED BY CODE 28 TRNE E,GND MOVEI D,4 ;GND GETS CODE 4 TRNE E,PWR ;SOME KIND OF POWER? JRST [ FETCH(D,TTT,LLOW) ;YES, GET VOLTS CAMN D,[VEEVLT] SKIPA D,[6] MOVEI D,5 JRST .+1] STORE(D,C,TVAL) SUBI TT,4 ;NEXT PIN Y FETCH(TTT,TTT,DPNXT) ;PTR TO NEXT DIP PIN JUMPN TTT,MAKLI1 ;DONE ALL? MAKLI9: PUSHJ P,RDCLF ;YES, SEARCH REDAC LIBRARY STORE(B,A,DTMP) ;INSTALL PTR TO REDAC DEF MAKL10: PUSHJ P,MAKLI0 ;DO SOME BOOKKEEPING JRST MAKLIB ;NEXT BODY MAKLI0: FETCH(T,B,TRHT) ;NEW L NUMBER? MOVE TTT,RDCLIB ;LINK INTO LIST OF DEFS TO OUTPUT JUMPN T,MAKLIZ FETCH(T,TTT,TRHT) ADDI T,1 STORE(T,TTT,TRHT) MOVEI T,=99000(T) STORE(T,B,TRHT) MAKLIZ: MOVEI TTT,RADDR(TTT,TVAL,TVAL) MAKLI2: MOVE TT,TTT ;SAVE PREVIOUS PTR FETCH(TTT,TTT,TVAL) ;GET NEXT PTR JUMPE TTT,MAKLI3 ;AT END? FETCH(D,TTT,TRHT) ;NO, GET NEXT L NUMBER CAMLE T,D ;THERE YET? JRST MAKLI2 ;NO, GO ON CAMN T,D ;YES, ALREADY IN? POPJ P, ;YES, DONE MAKLI3: STORE(B,TT,TVAL) ;LINK PREVIOUS TO THIS STORE(TTT,B,TVAL) ;LINK THIS TO NEXT POPJ P, ; TERMINATORS MAKLI8: CAIN F,2 ;2-PIN DIP? SKIPE IGNTRM ;ALREADY SAW A TERM? JRST MAKLIB ;NOT 2-PINS OR ALREADY DONE FETCH(T,A,DPIN) ;GOT THE RIGHT DEFINITION? FETCH(TT,T,DPBIT) TRC TT,TERM!ECL TRCE TT,TERM!ECL JRST MAKLIB ;NO FETCH(T,T,DPNXT) JUMPE T,MAKLIB ;ANOTHER PIN? FETCH(TT,T,DPBIT) TRNN TT,PWR ;POWER PIN? JRST MAKLIB ;NO FETCH(TT,T,LLOW) CAME TT,[VTTVLT] JRST MAKLIB ASK [ASCIZ / DO YOU WANT TERMINATORS IN THE REDAC OUTPUT? (Y OR N )/] JRST .-1 ;ASK HIM AGAIN SETOM IGNTRM ;HE SAID NO HLLOS T,IGNTRM ;FLAG THAT HE WAS ASKED JUMPL T,MAKLIB ;IGNORING? GETFS(B,TBLK) BCLEAR(T,B,TBLK) GETFS(T,TBLK) STORE(T,B,NXTT) MOVE B,T MOVEI TT,2 STORE(TT,B,TVAL) MOVEI TTT,=20 STORE(TTT,B,TLFT) MOVEI TTT,4 STORE(TTT,B,TRHT) GETFS(T,TBLK) STORE(T,B,NXTT) MOVE B,T MOVEI TTT,3 STORE(TTT,B,TVAL) STORE(TT,B,TLFT) STORE(TT,B,TRHT) GETFS(T,TBLK) STORE(T,B,NXTT) CLEAR(T,NXTT) MOVEI TTT,5 STORE(TTT,T,TVAL) MOVEI TTT,=18 STORE(TTT,T,TLFT) STORE(TT,T,TRHT) JRST MAKLI9 ; DO "U" CON STUFF MAKLI4: FETCH(A,G,BBIT) ;GET BODY LOC TRNN A,CBODY ;CONNECTOR PIN? JRST MAKLIB ;NO TRNN A,BWILD ;U PIN? JRST MAKLIB ;NO, 18-PIN CONN STUFF GOES HERE MOVEI A,RADDR(G,BPIN,NXBP) MAKLI7: FETCH(A,A,NXBP) ;GET NEXT U PIN JUMPE A,MAKLIB ;DONE ALL? GETFS(B,TBLK) BCLEAR(D,B,TBLK) GETFS(D,TBLK) STORE(D,B,NXTT) MOVEI T,1 STORE(T,D,TVAL) MOVEI T,4 STORE(T,D,TLFT) STORE(T,D,TRHT) GETFS(C,TBLK) STORE(C,D,NXTT) CLEAR(C,TVAL) CLEAR(C,NXTT) MOVEI T,2 STORE(T,C,TLFT) STORE(T,C,TRHT) FETCH(F,A,HPNT) SETZ TT, FETCH(T,F,WBIT) TRNE T,SNC ;OTHER PIN ON THIS WIRE AREN'T REALLY CONNECTED JRST MAKLI6 FETCH(T,F,TBIT) TRNN T,ECL ;ANY ECL ON WIRE? JRST MAKLI6 ;NO, USE 0 PAD CODE MOVEI F,RADDR(F,WPIN,NXTP) MOVEI TT,=29 ;AT LEAST USE ECL CODE MAKLI5: FETCH(F,F,NXTP) ;GET NEXT PIN JUMPE F,MAKLI6 ;DONE THIS WIRE? FETCH(H,F,PTYP) ;TYPE POINTER JUMPE H,MAKLI5 FETCH(T,H,DPBIT) TRC T,ECL!OUTLD TRCE T,ECL!OUTLD ;ECL OUTPUT PIN (OR TERM) JRST MAKLI5 ;NO MOVEI TT,=30 ;YES, PAD CODE 30 ; MORE "U" MAKLI6: STORE(TT,C,TVAL) ;INSTALL PAD CODE MOVEI F,1 ;1 PIN DEF PUSHJ P,RDCLF ;PUT INTO LIBRARY PUSHJ P,MAKLI0 ;DO L NUMBER THING STORE(B,A,RDCN) ;PUT RDC POINTER HERE JRST MAKLI7 ;DO NEXT U PIN ; LIB DEF OUTPUT DECTAB: PUSHJ P,DECOUT ;PRINT DECIMAL VALUE PUTBYT 11 POPJ P, LIBLST: MOVE T,[PUSHJ P,BYTOUT] MOVEM T,PUTCHR IFN 0,< MOVE A,RDCLIB ;FOLLOW LIST OF DEFS TO OUTPUT MOVEI A,RADDR(A,TVAL,TVAL) CAIA LIBLS1: PUTSTR [ASCIZ / /] FETCH(A,A,TVAL) ;GET PTR TO NEXT DEF JUMPE A,LIBDON ;DONE? MOVEI TTT,"L" ;OUTPUT L# XCT PUTCHR FETCH(T,A,TRHT) PUSHJ P,DECTAB FETCH(D,A,NXTT) TLO D,-1 ;FLAG FOR EXTRA TAB BEFORE N PINS LIBLS2: FETCH(T,D,TLFT) PUSHJ P,DECTAB ;X FETCH(T,D,TRHT) PUSHJ P,DECTAB ;Y SKIPGE D XCT PUTCHR FETCH(T,D,TVAL) ;# PINS OR PAD CODE PUSHJ P,DECOUT PUTSTR [ASCIZ / /] FETCH(D,D,NXTT) ;NEXT PIN JUMPE D,LIBLS1 ;0=DONE PUTBYT 11 JRST LIBLS2 >;IFN 0 ; COMPONENT OUTPUT LIBDON: PUTSTR [ASCIZ /-1 /] IFN 0,< MOVEI G,RADDR(W,WBDY,NXTB) ;LIST OF BODIES SETZM NBODS ;INITIAL BODY LOC PRTLST: FETCH(G,G,NXTB) ;PTR TO NEXT BODY JUMPE G,CONLST ;ALL DONE? FETCH(A,G,BLOC) FETCH(T,G,BBIT) TRNE T,CBODY ;CONNECTOR PIN? JRST PRTLS1 ;YES FETCH(T,G,DIPT) ;DIP PTR JUMPE T,PRTLST ;NO DIP (HENCE NO L NUMBER) CAMN A,NBODS ;SAME LOC? JUMPN A,PRTLST ;YES, IGNORE IF REAL LOC ASSIGNED MOVEM A,NBODS ;SAVE BODY LOC FETCH(T,T,DTMP) ;RDC DEF POINTER FETCH(E,T,TRHT) ;L NUMBER PTR JUMPE E,PRTLST ;DO WE KNOW AN L NUMBER? SKIPGE IGNTRM ;IGNORING TERMINATORS? JRST [ FETCH(T,E,NXTT) ;YES, IS THIS A TERM? FETCH(T,T,TVAL) ;# OF PINS CAIE T,2 ;THE ONLY 2-PIN DIPS ARE TERMS! JRST .+1 JRST PRTLST] PUSHJ P,RDCPIN ;PRINT IT PUTBYT 11 FETCH(T,E,TRHT) PUSHJ P,DECOUT ;PRINT L NUMBER PUTSTR [ASCIZ / 0 0 /] JRST PRTLST PRTLS1: TRNN T,BWILD ;U PIN? JRST PRTLST ;18-PIN CONN STUFF GOES HERE FETCH(E,G,BPIN) ;GET PTR TO LIST OF U PINS PRTLS2: FETCH(H,E,PINN) ;GET U NUMBER HRL A,H ;PUT INTO ARG FOR RDCPIN PUSHJ P,RDCUCN ;PRINT U PIN PUTBYT 11 FETCH(T,H,RDCN) ;GET L NUMBER FETCH(T,T,TRHT) PUSHJ P,DECOUT PUTSTR [ASCIZ / 0 0 /] FETCH(E,E,NXBP) ;GET NEXT U PIN JUMPN E,PRTLS2 ;DONE? JRST PRTLST ;YES, TO NEXT BODY >;IFN 0 CONLST: PUTSTR [ASCIZ / END /] FETCH(H,W,WIRES) JUMPE H,REDAC1 ; PUT OUT CONNECTION LIST REDAC2: FETCH(G,H,WBIT) TRNE G,NAM2ND ;REAL START OF WIRE? JRST REDAC3 ;NO, IGNORE TRNE G,SNC ;NO CONNECTION RUN? JRST REDAC3 ;YES, FOR NOW JUST SKIP IT. MOVEI G,RADDR(H,WPIN,NXTP) PUSHJ P,REDGET ;GET 1ST PIN JRST REDAC3 ;NO MORE PINS MOVEM A,RDCSAV MOVEM B,RDCSVB PUSHJ P,REDGET ;GET NEXT PIN JRST REDAC3 ;1-PIN RUN PUTSTR [ASCIZ / /] RDCLP1: PUSHJ P,RDCPIK PUTBYT 11 PUSHJ P,RDCPAD PUTBYT 11 MOVE A,RDCSAV MOVE B,RDCSVB PUSHJ P,RDCPIK PUTBYT 11 PUSHJ P,RDCPAD CRLF RDCLP2: PUSHJ P,REDGET ;GET NEXT PIN CAIA ;END OF RUN JRST RDCLP1 REDAC3: FETCH(H,H,ALPH) JUMPN H,REDAC2 REDAC1: PUTSTR [ASCIZ / END END END -1 END /] RELEAS LST, POPJ P, ; INPUT SUBRS RDCL2: PUSHJ P,BYTIN ;GET COMMENT CHR POPJ P, ;EOF, ERROR RETURN CAIE TTT,12 ;END OF COMMENT (LF)? JRST RDCL2 ;NO, GOBBLE MORE RDCL1: PUSHJ P,BYTIN ;GET 1ST CHR OF LINE POPJ P, ;EOF CAIE TTT,15 ;IGNORE BLANK LINES CAIN TTT,12 JRST RDCL1 CAIE TTT,"L" ;START OF L NUMBER? CAIN TTT,11 ;TAB? JRST CPOPJ1 ;YES, OK RETURN JRST RDCL2 ;NO, ASSUME COMMENT RDCER1: POP P,(P) RDCLER: OUTSTR [ASCIZ / PREMATURE END OF FILE! /] JRST RDCFE2 RDCDEC: PUSHJ P,DECIN ;GET N JRST RDCER1 ;EOF=ERROR CAIE TTT," " CAIN TTT,11 ;MUST END WITH TAB POPJ P, RDCFE1: RDCLFE: OUTSTR [ASCIZ / FORMAT ERROR! /] RDCFE2: PUSHJ P,RDCRET RELEAS DAT, JRST NERRET RDCRET: FETCH(T,B,NXTT) FSTRET(B,TBLK) SKIPE B,T JRST RDCRET POPJ P, RDCDCR: PUSHJ P,DECIN ;GET N JRST RDCER1 ;EOF=ERROR CAIE TTT,12 CAIN TTT,15 ;MUST END WITH CR POPJ P, JRST RDCFE1 ; LIB SEARCH ROUTINE ;LIBRARY ENTRY FIND AND ENTER ;CALL WITH B POINTING TO NEW ENTRY, C(F)=NUMBER OF PINS RDCLF: HRRZ C,RDCLIB MOVEI C,RADDR(C,NXTT,NXTT) JRST RDCLF1 RDCLF3: FETCH(T,C,TRHT) ;GET NUMBER OF PINS CAMG F,T ;THERE YET? JRST RDCLF2 ;YES RDCLF1: MOVE D,C ;SAVE PREVIOUS PTR FETCH(C,C,NXTT) ;GET NEXT PTR JUMPN C,RDCLF3 ;DONE ALL? RDCLF4: GETFS(E,TBLK) ;NUMBER OF PINS IS UNIQUE BCLEAR(TTTT,E,TBLK) STORE(C,E,NXTT) ;MAKE ENTRY FOR THIS NUMBER OF PINS STORE(F,E,TRHT) ;LINK IN STORE(E,D,NXTT) JRST RDCLF7 RDCLF2: CAME F,T ;EXACT MATCH? JRST RDCLF4 ;NO, MAKE NEW ENTRY RDCLF9: FETCH(E,C,TLFT) ;FIND IDENTICAL ENTRY JUMPE E,RDCLF5 ;ALL DONE YET? PUSHJ P,RDCMP ;NO, COMPARE ENTRIES RDCLF7: SKIPA C,E ;NOT FOUND JRST RDCLF6 ;FOUND JRST RDCLF9 ;CONTINUE SEARCH RDCLF5: STORE(B,C,TLFT) ;LINK IN ENTRY POPJ P, RDCLF6: FETCH(T,B,TRHT) ;PLUG IN L NUMBER IF NOT 0 SKIPE T STORE(T,E,TRHT) PUSHJ P,RDCRET ;RETURN EXTRA DEF TO FSTG MOVE B,E POPJ P, ; COMPARE 2 REDAC LIBRARY ENTRIES ;PTRS IN B & E (AC'S PRESERVED) RDCMP: MOVEI T,RADDR(B,NXTT,NXTT) MOVEI TT,RADDR(E,NXTT,NXTT) ;COPY PTRS RDCMP1: FETCH(T,T,NXTT) ;FOLLOW PTRS FETCH(TT,TT,NXTT) JUMPE T,[JUMPE TT,CPOPJ1 ;AT END OF BOTH? JRST DDTCAL] ;UNEQUAL LENGTH ERROR JUMPE TT,DDTCAL ;DITTO FETCH(TTT,T,TRHT) FETCH(TTTT,TT,TRHT) CAME TTT,TTTT POPJ P, FETCH(TTT,T,TLFT) FETCH(TTTT,TT,TRHT) CAME TTT,TTTT POPJ P, FETCH(TTT,T,TVAL) FETCH(TTTT,TT,TVAL) CAME TTT,TTTT POPJ P, ;UNEQUAL JRST RDCMP1 ;CONTINUE ;GET A PIN FROM THE WIRE POINTED TO BY C(G) ;IGNORE DUPL PINS, UNASSIGNED BODY LOCS, AND TERMINATORS IF REQUESTED REDGE1: FETCH(T,F,DIPT) ;TEST FOR TERMINATOR JUMPE T,REDGE2 ;NO DIP TYPE, SO NOT TERM FETCH(T,T,DNAM) MOVE T,1(T) CAME T,[ASCIZ /TERM/] ;DIP NAME="TERM"? JRST REDGE2 ;NO, SO NOT TERM REDGET: FETCH(G,G,NXTP) ;GET NEXT PIN JUMPE G,CPOPJ ;AT END? FETCH(F,G,PBDY) SKIPGE IGNTRM ;IGNORING TERMS? JRST REDGE1 ;YES REDGE2: FETCH(T,G,PBIT) TRNE T,DUP JRST REDGET ;IGNORE DUPLICATED PINS FETCH(A,F,BLOC) JUMPE A,REDGET FETCH(T,G,PINN) HRL A,T ;PIN NUMBER FETCH(B,G,PBDY) FETCH(B,B,BBIT) TRNN B,CBODY ;IS THIS A CPIN? JRST CPOPJ1 ;NO, NO TERMRULE REDGT1: FETCH(T,G,PBIT) LDB T,[POINT TRMBSZ,T,TRMBPS+=18] JUMPE T,REDGT2 ;SEARCH FORWARD IF NO TERMRULE YET HRL B,T ;SAVE TERM RULE IN B JRST CPOPJ1 REDGT2: FETCH(T,G,NXTP) JUMPE T,CPOPJ1 ;IF NO MORE PINS, THEN DONE FETCH(T,T,PBIT) TRNN T,DUP ;IS THIS A DUP? JRST CPOPJ1 ;NO, TAKE WHAT WE HAVE FETCH(G,G,NXTP) JRST REDGT1 ;YES, TRY FOR IT'S TERMRULE ; OUTPUT SUBRS RDCPIK: TRNN B,CBODY JRST LOCOUT TRNE B,BWILD JRST RDCUCN PUTBYT "P" JRST RDCCPD RDCPAD: TRNN B,CBODY JRST RDCBPN TRNN B,BWILD ;U PIN? JRST RDCCPN PUTBYT "1" POPJ P, SUBTTL 'CS' OUTPUT TO WRLCOM (COMPARE WIRELIST TO MIF FILE) BCSWRT: TRO ISBACK FETCH(W,L,WIRL) JRST BCSWR1 CSWRT: MOVE L,DEFLST PUSHJ P,LSTGET POPJ P, TRZ ISBACK BCSWR1: MOVSI T,'CS ' ;CS FILE EXT MOVEI TT,0 ;TEXT FILE MOVSI TTT,'DSK' PUSHJ P,OUTSET ;SETUP OUTPUT STUFF POPJ P, ;LET HIM OUT HERE SETZM CDSKPC SETZM NBODS SETZM NDIPS SETZM TMPCN1 MOVEI H,RADDR(W,WIRES,ALPH) JRST CSW1 CSW2: FETCH(T,H,WBIT) TRNE T,NAM2ND!WNULL!WSINGL!SNC JRST CSW1 MOVEI G,RADDR(H,WPIN,NXTP) JRST CSW3 CSW4: FETCH(T,G,PBIT) TRNE T,DUP JRST CSW3 ;SKIP DUPLICATES FETCH(B,G,PBDY) FETCH(C,B,BBIT) TRNE ISBACK JRST BCSWR2 FETCH(T,B,BLOC) JUMPE T,[AOS CDSKPC JRST CSW3] TRNE C,BWILD JRST [ AOS NDIPS JRST CSW3] BCSWR2: MOVEI A,ADDR(H,SPNT) HRLI A,() MOVEI T,=24 ;MAX CHARS ALLOWED CSW6: ILDB TTT,A JUMPE TTT,CSW7 ;QUIT ON NULL CAIN TTT,11 ;CHANGE TAB MOVEI TTT,40 ;TO SINGLE SPACE XCT PUTCHR SOJG T,CSW6 CSW7: MOVEI T,=24 SUB T,LCOUNT CAIA PUTBYT 40 SOJGE T,.-1 FETCH(A,B,BLOC) ;BODY LOC TRNE ISBACK JRST [ FETCH(T,G,PINN) HRL A,T ;IF GEMS EVER MAKES A BACKPANEL, PRINT EDGE PIN HERE PUSHJ P,PRCSBP JRST CSW5] PUSHJ P,LOCOUT FETCH(A,G,PINN) TRNN C,CBODY JRST CSW8 PUSHJ P,PRCNPN ;PRINT PIN SIDE JRST CSW5 ;THEN CRLF CSW8: PUTBYT 40 PUSHJ P,NETPIN CSW5: PUSHJ P,F4CRLF CSW3: FETCH(G,G,NXTP) JUMPN G,CSW4 TRNE FLAG ;ANY PINS PUT OUT? PUSHJ P,F4CRLF CSW1: FETCH(H,H,ALPH) JUMPN H,CSW2 CRLF RELEASE LST, SKIPN T,NDIPS JRST NETE1 PUSHJ P,TTYDEC OUTSTR[ASCIZ/ "WILD" CONNECTOR PINS SKIPPED. /] NETE1: SKIPN T,CDSKPC POPJ P, PUSHJ P,TTYDEC OUTSTR[ASCIZ/ PINS SKIPPED DUE TO NO BODY LOC. /] POPJ P, SUBTTL 'SR' SCHEMATIC REPRESENTATION FOR MODULE TEST GENERATION SRWRT: MOVE L,DEFLST PUSHJ P,LSTGET POPJ P, MOVSI T,'SR ' ;SR FILE EXT MOVEI TT,0 ;TEXT FILE MOVSI TTT,'DSK' PUSHJ P,OUTSET ;SETUP OUTPUT STUFF POPJ P, ;LET HIM OUT HERE TLO COMLIN ;FLAG THE FOLLOWING SHOULD BE A COMMENT PUSHJ P,FILLST PUTHDR TLZ COMLIN MOVEI T,[ASCIZ/EDGE PIN ALLOCATIONS/] MOVEM T,HEADER SETZM LINCNT MOVEI T,SREMAR MOVEM T,MARGIN MOVEI H,RADDR(W,WBDY,NXTB) JRST SRWE1 SRWE2: FETCH(T,H,BBIT) TRNN T,CBODY JRST SRWE1 MOVEI G,RADDR(H,BPIN,NXBP) JRST SRWE3 SRWE4: FETCH(T,G,PBIT) TRNE T,DUP JRST SRWE3 FETCH(T,G,HPNT) FETCH(T,T,WBIT) TRNE T,SNC!SPWR!SGND ;NOT REALLY USED? JRST SRWE3 ;YUP SKIPL LINCNT PUSHJ P,SRHDR FETCH(A,H,BLOC) FETCH(T,G,PINN) HRL A,T PUSH P,A PUSHJ P,LOCPNC PUTSTR[ASCIZ/ EXT /] POP P,A PUSHJ P,SRCPNM ;PRINT CONNECTOR PIN NUMBER PUTSTR[ASCIZ/; /] SRWE3: FETCH(G,G,NXBP) JUMPN G,SRWE4 SRWE1: FETCH(H,H,NXTB) JUMPN H,SRWE2 MOVEI T,[ASCIZ/DIP ALLOCATIONS/] MOVEM T,HEADER SETZM LINCNT MOVEI T,SRDMAR MOVEM T,MARGIN MOVEI H,RADDR(W,WBDY,NXTB) JRST SRWD1 SRWD2: FETCH(T,H,BBIT) TRZ T,BTMP1 ;CLEAR MARK BIT STORE(T,H,BBIT) TRNE T,CBODY JRST SRWD1 PUSHJ P,SRDIPT JRST SRWD1 ;SKIPPING MOVEI A,=24 PUSHJ P,FILL PUTSTR[ASCIZ/; /] SRWD1: FETCH(H,H,NXTB) JUMPN H,SRWD2 MOVEI T,[ASCIZ/NODE LIST/] MOVEM T,HEADER SETZM LINCNT MOVEI T,SRNMAR MOVEM T,MARGIN PUSHJ P,CLEARW ;CLEAR WIRE MARK BITS MOVEI H,RADDR(W,WBDY,NXTB) JRST SRNL1 SRNL2: FETCH(T,H,BBIT) TRNE T,CBODY!BTMP1 ;NO EXTERNALS, OR ONES WE SKIPPED EARLIER JRST SRNL1 MOVEI G,RADDR(H,BPIN,NXBP) JRST SRNL3 SRNL4: FETCH(F,G,HPNT) FETCH(T,F,WBIT) TRNN T,WSINGL!SNC!SPWR!SGND ;SKIP 1 PIN RUNS AND SPECIALS TROE T,WTMP1 ;DONE ALREADY? JRST SRNL3 STORE(T,F,WBIT) SKIPL LINCNT PUSHJ P,SRHDR PUSH P,G PUSHJ P,SRDIPT ;PRINT DIP LOC AND DIP TYPE JFCL ;CAN'T HAPPEN? POP P,G PUTBYT 11 FETCH(A,G,PINN) PUSHJ P,NETPIN ;PRINT PIN # PUTBYT "=" FETCH(F,G,HPNT) FETCH(F,F,WPIN) TRZ FLAG ;NO SPACE BEFORE NEXT LOC SRNL8: CAIN F,(G) JRST SRNL7 ;WE DID US ALREADY FETCH(E,F,PBDY) FETCH(D,E,BBIT) TRNE D,BTMP1 ;ARE WE SKIPPING THIS BODY? JRST SRNL7 ;YES MOVE T,LCOUNT ADDI T,=15 ;MAX OF 15 CHARS CAILE T,=60 ;60 CHARS PER LINE MAX JRST [ CRLF PUTSTR[ASCIZ/ /] TRZ FLAG JRST .+1] TROE FLAG ;NEED SPACE? PUTBYT " " ;YES FETCH(A,E,BLOC) TRNE D,CBODY JRST [ FETCH(T,F,PINN) HRL A,T PUSHJ P,LOCPNC JRST SRNL7] PUSHJ P,LOCOUT PUTBYT "." FETCH(A,F,PINN) PUSHJ P,NETPIN SRNL7: FETCH(F,F,NXTP) JUMPN F,SRNL8 PUTBYT ";" CRLF SRNL3: FETCH(G,G,NXBP) JUMPN G,SRNL4 SRNL1: FETCH(H,H,NXTB) JUMPN H,SRNL2 PUTSTR[ASCIZ/#PROBE=2 /] RELEASE LST, POPJ P, SRDIPT: FETCH(G,H,DIPT) ;GET DIPTYPE JUMPE G,SRDIPP ;PRINT NONE IF NONE FETCH(T,G,DPNN) ;GET # OF PINS CAIE T,2 ;ONLY 2 PIN DIPS ARE SPECIAL JRST SRDIPP FETCH(T,G,DNAM) MOVEI TT,[ASCIZ/CAP/] PUSHJ P,ASCMAT JRST SRNCAP IFN 0,< ;UNTIL CAPS STRAIGHTENED OUT, IGNORE ALL OF THEM FETCH(F,H,BPIN) JUMPE F,SRDIPN ;NO PRINT IF NO PINS SRCAP1: FETCH(T,F,HPNT) FETCH(T,T,WBIT) TRNN T,SPWR!SGND JRST SRDIPP ;NON-POWER/GND ON CAP, PRINT IT FETCH(F,F,NXBP) JUMPN F,SRCAP1 ;ONLY POWER/GND ON CAP, SKIP IT >;IFN 0 SRDIPN: FETCH(T,H,BBIT) TRO T,BTMP1 ;MARK TO SKIP LATER STORE(T,H,BBIT) POPJ P, SRNCAP: FETCH(T,G,DNAM) MOVEI TT,[ASCIZ/RES/] PUSHJ P,ASCMAT JRST SRNRES FETCH(F,H,BPIN) JUMPE F,SRDIPN ;NO PRINT IF NO PINS SRRES1: FETCH(T,F,HPNT) FETCH(T,T,WBIT) TRNE T,SPWR JRST SRISPU ;PULLUP IF POWERED TRNE T,SGND JRST SRDIPN ;IGNORE IF GROUNDED FETCH(F,F,NXBP) JUMPN F,SRRES1 JRST SRDIPP ;ALL OTHERS, PRINT SRNRES: FETCH(F,G,DPIN) FETCH(T,F,DPBIT) TRC T,ECL!TERM TRCE T,ECL!TERM JRST SRDIPP SRISPU: SKIPL LINCNT PUSHJ P,SRHDR FETCH(A,H,BLOC) PUSHJ P,LOCOUT PUTSTR[ASCIZ/ PULLUP/] JRST CPOPJ1 SRDIPP: AOS (P) ;SKIP TO INDICATE WE PRINTED IT SKIPL LINCNT PUSHJ P,SRHDR FETCH(A,H,BLOC) PUSHJ P,LOCOUT ;PRINT LOC JUMPE G,[PUTSTR[ASCIZ/ DUMMY/] POPJ P,] PUTBYT 11 ;SEPERATOR FETCH(A,G,DNAM) JRST STROUT SRHDR: TLO COMLIN PUSHJ P,PUTHDR TLZ COMLIN POPJ P, >;DEC