C C ************************************************************************ C * C THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS ONLY. DIGITAL EQUIPMENT * C COMPUTER USER'S SOCIETY, DIGITAL EQUIPMENT CORPORATION, MONSANTO, AND * C THE AUTHOR DISCLAIM ALL WARRANTIES ON THE PROGRAM, INCLUDING WITHOUT * C LIMITATION, ALL IMPLIED WARRANTIES OF MERCHANTABLITY AND FITNESS. * C * C FULL PERMISSION AND CONSENT IS HEREBY GIVEN TO DECUS AND TO THE DECUS * C SPECIAL INTEREST GROUPS TO REPRODUCE, DISTRIBUTE, AND PUBLISH AND * C PERMIT OTHERS TO REPRODUCE IN WHOLE OR IN PART, IN ANY FORM AND * C WITHOUT RESTRICTION, THIS PROGRAM AND ANY INFORMATION RELATING THERETO * C * C ************************************************************************ C C C C CONTENTS C -------- C C NAME DESCRIPTION C ____ ___________ C C C GETNUM TRANSFER NUMERICAL DATA FROM SECONDARY FILE TO ARRAY C ROTATE ROTATES A CHIP C NROTX ROTATES THE X COORDINATE C NROTY ROTATES THE Y COORDINATE C ALLOCS ALLOCATE SPACE IN THE SPACING TABLE C ALLOCE ALLOCATE SPACE IN THE ELECTRICAL TABLE C ALLOCC ALLOCATE SPACE IN THE PIN ALIAS TABLE C PLDFLT ESTABLISH A POWER OR GROUND PLANE WITH DEFAULT NAME C ICHECK CHECK IF A PIN HAS ELECTRICAL CHARACTERISTICS OF A PLANE C NEARPL FIND THE NEAREST PLANE PIN TO A GIVEN PIN C PNSPEC GENERATE A PIN-SPECIFICATION STRING C MINLEN FIND THE NEAREST UNUSED POST IN A CHAIN TO A GIVEN POST C INDX CALCULATE A MAP-FUNCTION TO STORE DATA C LENGTH CALCULATE THE DISTANCE FROM ONE PIN TO ANOTHER. C NEXT CALCULATE THE NUMBER OF TIMES TWO CHAINS ARE NEIGHBORS C FSLACK CALCULATE THE LENGTH OF WIRE NEEDED FROM POINT TO POINT(+SLACK) C ISLACK CALCULATE INTEGER WIRE-LENGTH NEEDED (+ SLACK) SUBROUTINE GETNUM (IDIM,IARRAY) C C C ************************************************************************ C * C THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS ONLY. DIGITAL EQUIPMENT * C COMPUTER USER'S SOCIETY, DIGITAL EQUIPMENT CORPORATION, MONSANTO, AND * C THE AUTHOR DISCLAIM ALL WARRANTIES ON THE PROGRAM, INCLUDING WITHOUT * C LIMITATION, ALL IMPLIED WARRANTIES OF MERCHANTABLITY AND FITNESS. * C * C FULL PERMISSION AND CONSENT IS HEREBY GIVEN TO DECUS AND TO THE DECUS * C SPECIAL INTEREST GROUPS TO REPRODUCE, DISTRIBUTE, AND PUBLISH AND * C PERMIT OTHERS TO REPRODUCE IN WHOLE OR IN PART, IN ANY FORM AND * C WITHOUT RESTRICTION, THIS PROGRAM AND ANY INFORMATION RELATING THERETO * C * C ************************************************************************ C C C VERSION: V01.00 C C AUTHOR: EAS/RC CORNELL 18-SEP-75 C C GETNUM READS IDIM INTEGERS FROM THE INPUT FILE ON ISYSIN AND PUTS THEM C IN IARRAY. C C COMPILATION INSTRUCTIONS: C C GETNUM,GETNUM/-SP=GETNUM C C MODIFICATION HISTORY: C C V01.00 EAS/RC 18-SEP-75 ORIGINAL CODE C C C PAGE 2 - GETNUM - DOCUMENTATION. C C GETNUM IS A LOCAL SUBROUTINE TO INPUT A USER SPECIFIED NUMBER OF INTEGER C LITERALS. INPUT IS STOPPED BY END OF FILE OR BY AN ALPHAMERIC SYMBOL. C AN ERROR CODE IS RETURNED IS INPUT IS TERMINATED IN THIS WAY BEFORE C SATISFYING THE COUNT IN IDIM. C C THE FORMAT OF THE INPUT FILE ON ISYSIN IS: C {INT}{TERM}{INT}{TERM}...... C WHERE INT IS AN INTEGER AND TERM IS ANY NON-ALPHANUMERIC CHARACTER. C C CALLING SEQUENCE: C C CALL BY: CALL GETNUM(IDIM,IARRAY) C C WHERE: IDIM IS THE NUMBER OF INTEGERS DESIRED C IARRAY IS THE BYTE ARRAY IN WHICH TO PUT THEM C C ON ENTRY: IARRAY IS AN ARRAY WITH DIMENSION OF AT LEAST IDIM C C ON EXIT: THE FIRST IDIM ENTRIES OF IARRAY C CONTAIN THE FIRST IDIM INTEGERS READ FROM THE C FILE. C C ERROR CONDITIONS: C C IF A READ ERROR WAS DETECTED, IF AN EOF OCCURRED BEFORE IT WAS EXPECTED, C OR IF AN ALPHABETIC CHARACTER WAS SEEN BEFORE IT WAS EXPECTED, C A FATAL ERROR IS DECLARED. C C SPECIAL NOTES: C C NONE C C SUBROUTINES CALLED: C C GETLEX POP MSG C C PAGE 3 - GETNUM - DATA STORAGE DESCRIPTIONS. C C CALLING PARAMETERS: C INTEGER IDIM !NUMBER OF INTEGERS REQUESTED BYTE IARRAY(IDIM) !STORAGE FOR THE INTEGERS C C PARAMETER STATEMENTS C C C LOCAL VARIABLE AND ARRAY DEFINITIONS: C INTEGER I !DUMMY INDEX INTEGER ITMP !GETLEX TOKEN NUMBER C C COMMON AREAS C C C LOCAL VARIABLE AND ARRAY INITIALIZATION: C C C PAGE 4 - GETNUM C DO 20 I=1,IDIM 10 CALL GETLEX(ITMP) GOTO (30,10,10,30,15) ITMP 15 CALL POP(ITMP) !GET NEXT INTEGER IARRAY(I)=ITMP !STORE IT 20 CONTINUE RETURN C C ERROR HANDLER C 30 CALL DSKMSG(45,4) END SUBROUTINE ROTATE(ISOUR,IDEST,IPINS,JROT) C C C ************************************************************************ C * C THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS ONLY. DIGITAL EQUIPMENT * C COMPUTER USER'S SOCIETY, DIGITAL EQUIPMENT CORPORATION, MONSANTO, AND * C THE AUTHOR DISCLAIM ALL WARRANTIES ON THE PROGRAM, INCLUDING WITHOUT * C LIMITATION, ALL IMPLIED WARRANTIES OF MERCHANTABLITY AND FITNESS. * C * C FULL PERMISSION AND CONSENT IS HEREBY GIVEN TO DECUS AND TO THE DECUS * C SPECIAL INTEREST GROUPS TO REPRODUCE, DISTRIBUTE, AND PUBLISH AND * C PERMIT OTHERS TO REPRODUCE IN WHOLE OR IN PART, IN ANY FORM AND * C WITHOUT RESTRICTION, THIS PROGRAM AND ANY INFORMATION RELATING THERETO * C * C ************************************************************************ C C C VERSION: V01.00 C C AUTHOR: EAS/RC CORNELL 24-NOV-75 C C THIS MODULE TRANSFERS THE PIN CONFIGURATION IN ISOUR TO IDEST, ROTATING C IT BY 0, 90, 180, OR 270 DEGREES COUNTER-CLOCKWISE, DEPENDING ON THE C VALUE OF JROT. C C COMPILATION INSTRUCTIONS: C C ROTATE,ROTATE/-SP=ROTATE C C MODIFICATION HISTORY: C C V01.00 EAS.RC 24-NOV-75 ORIGINAL CODE C C C PAGE 2 - ROTATE - DOCUMENTATION. C C THE BASIC PURPOSE OF THIS ROUTINE IS TO PLACE THE INFORMATION IN ISOUR C IN IDEST. THE ISOUR ARRAY IS A BYTE ARRAY OF DIMENSION (2,IPINS) C CONTAINING RAW RELATIVE PIN OFFSETS. THE ROUTINE TRANSFERS INTO IDEST C (A SIMILAR ARRAY), ROTATED RELATIVE PIN OFFSETS, WHERE THE ROATION ANGLE C IS SPECIFIED BY JROT. C C C CALLING SEQUENCE: C C CALL BY: CALL ROTATE (ISOUR,IDEST,IPINS,JROT) C C WHERE: ISOUR IS A (2,IPINS) BYTE ARRAY CONTAINING UNROTATED PIN C OFFSETS C IDEST IS A (2,IPINS) BYTE ARRAY WHICH WILL HOLD THE ROTATED C PIN OFFSETS ON EXIT C IPINS IS THE NUMBER OF PINS C JROT IS THE ROATION INDEX: C 0 - ANGLE = 0 C 1 - ANGLE = 90 (COUNTERCLOCKWISE) C 2 - ANGLE = 180 C 3 - ANGLE = 270 (COUNTERCLOCKWISE) C C C ON EXIT: IDEST WILL CONTAIN THE ROTATED PIN OFFSETS C C ERROR CONDITIONS: C C NO ERROR CONDITIONS DETECTED C C SPECIAL NOTES: C C NO SPECIAL NOTES C C SUBROUTINES CALLED: C C NROTX NROTY C C PAGE 3 - ROTATE - DATA STORAGE DESCRIPTIONS. C C CALLING PARAMETERS: C BYTE ISOUR(2,IPINS) !INPUT PIN-SPACING ARRAY BYTE IDEST(2,IPINS) !OUTPUT PIN-SPACING ARRAY INTEGER IPINS !NUMBER OF PINS BYTE JROT !ROTATION INDEX C C PARAMETER STATEMENTS C C C LOCAL VARIABLE AND ARRAY DEFINITIONS: C INTEGER I !DUMMY INDEX C C COMMON AREAS C C C LOCAL VARIABLE AND ARRAY INITIALIZATION: C C C PAGE 4 - ROTATE C C C FOR EACH PIN, PLACE IN IDEST THE ROTATED OFFSET FROM ISOUR C DO 10 I=1,IPINS IDEST(1,I)=NROTX(JROT,ISOUR(1,I),ISOUR(2,I)) 10 IDEST(2,I)=NROTY(JROT,ISOUR(1,I),ISOUR(2,I)) RETURN END INTEGER FUNCTION NROTX(JROT,IX,IY) C C C ************************************************************************ C * C THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS ONLY. DIGITAL EQUIPMENT * C COMPUTER USER'S SOCIETY, DIGITAL EQUIPMENT CORPORATION, MONSANTO, AND * C THE AUTHOR DISCLAIM ALL WARRANTIES ON THE PROGRAM, INCLUDING WITHOUT * C LIMITATION, ALL IMPLIED WARRANTIES OF MERCHANTABLITY AND FITNESS. * C * C FULL PERMISSION AND CONSENT IS HEREBY GIVEN TO DECUS AND TO THE DECUS * C SPECIAL INTEREST GROUPS TO REPRODUCE, DISTRIBUTE, AND PUBLISH AND * C PERMIT OTHERS TO REPRODUCE IN WHOLE OR IN PART, IN ANY FORM AND * C WITHOUT RESTRICTION, THIS PROGRAM AND ANY INFORMATION RELATING THERETO * C * C ************************************************************************ C C C VERSION: V01.00 C C AUTHOR: EAS/RC CORNELL 24-NOV-75 C C NROTX IS A LOCAL FUNCTION SUBROUTINE TO ROTATE A VECTOR C C COMPILATION INSTRUCTIONS: C C NROTX,NROTX/-SP=NROTX C C MODIFICATION HISTORY: C C V01.00 EAS/RC 24-NOV-75 ORIGINAL CODE C C C PAGE 2 - NROTX - DOCUMENTATION. C C THE ROUTINE RETURNS THE X COMPONENT OF THE VECTOR (IX,IY) ROTATED C BY AN AMOUNT SPECIFIED BY JROT. C C CALLING SEQUENCE: C C CALL BY: JX=NROTX(JROT,IX,IY) C C WHERE: JX IS THE VALUE RETURNED BY THIS FUNCTION SUBROUTINE C JROT IS THE ROTATION INDEX: C 0 - RETURN IX C 1 - RETURN -IY C 2 - RETURN -IX C 3 - RETURN IY C IX IS THE X COORDINATE OF THE VECTOR C IY IS THE Y COORDINATE OF THE VECTOR C C C C ERROR CONDITIONS: C C NO ERROR CONDITIONS DETECTED C C SPECIAL NOTES: C C NONE C C SUBROUTINES CALLED: C C NONE C C PAGE 3 - NROTX - DATA STORAGE DESCRIPTIONS. C C CALLING PARAMETERS: C BYTE JROT !ROTATION INDEX BYTE IX !X COORDINATE BYTE IY !Y COORDINATE C C PARAMETER STATEMENTS C C C LOCAL VARIABLE AND ARRAY DEFINITIONS: C INTEGER ITMP !DUMMY INDEX (INTEGER) FOR GOTO C C COMMON AREAS C C C LOCAL VARIABLE AND ARRAY INITIALIZATION: C C C PAGE 4 - NROTX C C ITMP=JROT+1 GOTO (10,20,30,40) ITMP 10 NROTX=IX RETURN 20 NROTX=-IY RETURN 30 NROTX=-IX RETURN 40 NROTX=IY RETURN END INTEGER FUNCTION NROTY(JROT,IX,IY) C C C ************************************************************************ C * C THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS ONLY. DIGITAL EQUIPMENT * C COMPUTER USER'S SOCIETY, DIGITAL EQUIPMENT CORPORATION, MONSANTO, AND * C THE AUTHOR DISCLAIM ALL WARRANTIES ON THE PROGRAM, INCLUDING WITHOUT * C LIMITATION, ALL IMPLIED WARRANTIES OF MERCHANTABLITY AND FITNESS. * C * C FULL PERMISSION AND CONSENT IS HEREBY GIVEN TO DECUS AND TO THE DECUS * C SPECIAL INTEREST GROUPS TO REPRODUCE, DISTRIBUTE, AND PUBLISH AND * C PERMIT OTHERS TO REPRODUCE IN WHOLE OR IN PART, IN ANY FORM AND * C WITHOUT RESTRICTION, THIS PROGRAM AND ANY INFORMATION RELATING THERETO * C * C ************************************************************************ C C C VERSION: V01.00 C C AUTHOR: EAS/RC CORNELL 24-NOV-75 C C NROTY IS A LOCAL FUNCTION TO ROTATE A VECTOR C C COMPILATION INSTRUCTIONS: C C NROTY,NROTY/-SP=NROTY C C MODIFICATION HISTORY: C C V01.00 EAS/RC 24-NOV-75 ORIGINAL CODE C C C PAGE 2 - NROTY - DOCUMENTATION. C C THE ROUTINE RETURNS THE Y COMPONENT OF THE VECTOR (IX,IY) ROTATED BY C AN AMOUND SPECIFIED BY JROT. C C CALLING SEQUENCE: C C CALL BY: JY=NROTY(JROT,IX,IY) C C WHERE: JY IS THE RETURN VALUE OF THE FUNCTION SUBROUTINE C JROT IS THE ROTATION INDEX: C 0 - RETURN IY C 1 - RETURN IX C 2 - RETURN -IY C 3 - RETURN -IX C IX IS THE X COORDINATE OF THE VECTOR C IY IS THE Y COORDINATE OF THE VECTOR C C C C ERROR CONDITIONS: C C NO ERRORS DETECTED C C SPECIAL NOTES: C C NONE C C SUBROUTINES CALLED: C C NONE C C PAGE 3 - NROTY - DATA STORAGE DESCRIPTIONS. C C CALLING PARAMETERS: C BYTE JROT !ROTATING INDEX BYTE IX !X COORDINATE BYTE IY !Y COORDINATE C C PARAMETER STATEMENTS C C C LOCAL VARIABLE AND ARRAY DEFINITIONS: C INTEGER ITMP !DUMMY INDEX FOR GOTO C C COMMON AREAS C C C LOCAL VARIABLE AND ARRAY INITIALIZATION: C C C PAGE 4 - NROTY C C ITMP=JROT+1 GOTO (10,20,30,40) ITMP 10 NROTY=IY RETURN 20 NROTY=IX RETURN 30 NROTY=-IY RETURN 40 NROTY=-IX RETURN END SUBROUTINE ALLOCS (IPNTR,IPINS) C C C ************************************************************************ C * C THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS ONLY. DIGITAL EQUIPMENT * C COMPUTER USER'S SOCIETY, DIGITAL EQUIPMENT CORPORATION, MONSANTO, AND * C THE AUTHOR DISCLAIM ALL WARRANTIES ON THE PROGRAM, INCLUDING WITHOUT * C LIMITATION, ALL IMPLIED WARRANTIES OF MERCHANTABLITY AND FITNESS. * C * C FULL PERMISSION AND CONSENT IS HEREBY GIVEN TO DECUS AND TO THE DECUS * C SPECIAL INTEREST GROUPS TO REPRODUCE, DISTRIBUTE, AND PUBLISH AND * C PERMIT OTHERS TO REPRODUCE IN WHOLE OR IN PART, IN ANY FORM AND * C WITHOUT RESTRICTION, THIS PROGRAM AND ANY INFORMATION RELATING THERETO * C * C ************************************************************************ C C C VERSION: V01.03 C C AUTHOR: RL AURBACH MAPC 1-SEP-78 C C THIS ROUTINE ALLOCATES AND CLEARS A REGION OF THE IPINSP ARRAY. C C COMPILATION INSTRUCTIONS: C C ALLOCS,ALLOCS/-SP=ALLOCS C [FILE WIRCOM.FTN INCLUDED] C [FILE SPCING.COM INCLUDED] C C MODIFICATION HISTORY: C C V01.00 EAS/RC 24-NOV-75 ORIGINAL CODE C V01.01 RLA 13-APR-78 ADD ERROR DETECTION C V01.02 RLA 13-JUN-78 MAKE ALLOCATION ERROR FATAL C V01.03 RLA 1-SEP-78 REORGANIZE INCLUDED COMMON AREAS C C C PAGE 2 - ALLOCS - DOCUMENTATION. C C THE ROUTINE USES NXOENT TO LOCATE THE BEGINNING OF THE FIRST AVAILABLE C FREE REGION IN IPINSP. THE REQUESTED NUMBER OF PINS ARE ALLOCATED BY C UPDATING THE VALUE OF NXOENT. ERROR CHECKING IS DONE TO ENSURE THAT ARRAY C BOUNDS ARE NOT EXCEEDED BY THIS PROCESS. THE ALLOCATION IS COMPLETED BY C ZEROING THE ALLOCATED REGION AND RETURNING ITS ADDRESS TO THE CALLER. C C CALLING SEQUENCE: C C CALL BY: CALL ALLOCS (IPNTR,IPINS) C C WHERE: IPNTR IS THE RETURNED ADDRESS OF THE ALLOCATED REGION C (THAT IS, A POINTER INTO IPINSP) C IPINS IS THE NUMBER OF ENTRIES TO ALLOCATE IN IPINSP C C ON ENTRY: IPINS CONTAINS THE NUMBER OF ENTRIES IN IPINSP TO C ALLOCATE C C ON EXIT: IPNTR IS THE INDEX OF THE BEGINNING OF THE ALLOCATED C REGION. C C ERROR CONDITIONS: C C IF THE ALLOCATION WOULD CAUSE THE ARRAY BOUND OF IPINSP TO BE C EXCEEDED, A FATAL ERROR IS DECLARED. C C SPECIAL NOTES: C C NONE C C SUBROUTINES CALLED: C C MSG C C PAGE 3 - ALLOCS - DATA STORAGE DESCRIPTIONS. C C CALLING PARAMETERS: C INTEGER IPNTR !POINTER TO THE ALLOCATED REGION INTEGER IPINS !NUMBER OF PINS TO ALLOCATE C C PARAMETER STATEMENTS C INCLUDE 'WIRCOM.FTN' INCLUDE 'SPCING.COM' C C LOCAL VARIABLE AND ARRAY DEFINITIONS: C INTEGER ITMP !TOP OF ALLOCATED REGION INTEGER I !DO INDEX C C COMMON AREAS C C C LOCAL VARIABLE AND ARRAY INITIALIZATION: C C C PAGE 4 - ALLOCS C IF ((NXOENT+IPINS) .GT. (NMSPIN+1)) GOTO 100 IPNTR=NXOENT NXOENT=NXOENT+IPINS ITMP=NXOENT-1 DO 10 I=IPNTR,ITMP IPINSP(1,I)=0 10 IPINSP(2,I)=0 RETURN C C ALLOCATION FAILURE DETECTION C 100 CALL DSKMSG(16,4) END SUBROUTINE ALLOCE (IPNTR,IPINS) C C C ************************************************************************ C * C THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS ONLY. DIGITAL EQUIPMENT * C COMPUTER USER'S SOCIETY, DIGITAL EQUIPMENT CORPORATION, MONSANTO, AND * C THE AUTHOR DISCLAIM ALL WARRANTIES ON THE PROGRAM, INCLUDING WITHOUT * C LIMITATION, ALL IMPLIED WARRANTIES OF MERCHANTABLITY AND FITNESS. * C * C FULL PERMISSION AND CONSENT IS HEREBY GIVEN TO DECUS AND TO THE DECUS * C SPECIAL INTEREST GROUPS TO REPRODUCE, DISTRIBUTE, AND PUBLISH AND * C PERMIT OTHERS TO REPRODUCE IN WHOLE OR IN PART, IN ANY FORM AND * C WITHOUT RESTRICTION, THIS PROGRAM AND ANY INFORMATION RELATING THERETO * C * C ************************************************************************ C C C VERSION: V01.03 C C AUTHOR: RL AURBACH MAPC 1-SEP-78 C C THIS ROUTINE ALLOCATES AND CLEARS A REGION OF THE IPINEL ARRAY. C C COMPILATION INSTRUCTIONS: C C ALLOCE,ALLOCE/-SP=ALLOCE C [FILE WIRCOM.FTN INCLUDED] C [FILE ELECTR.COM INCLUDED] C C MODIFICATION HISTORY: C C V01.00 EAS/RC 24-NOV-75 ORIGINAL CODE C V01.01 RLA 13-APR-78 ADD ERROR DETECTION C V01.02 RLA 13-JUN-78 MAKE ALLOCATION FAILURE FATAL C V01.03 RLA 1-SEP-78 REORGANIZE INCLUDED COMMON AREAS C C C PAGE 2 - ALLOCE - DOCUMENTATION. C C THE ROUTINE USES NXEENT TO LOCATE THE BEGINNING OF THE FIRST AVAILABLE C FREE REGION IN IPINEL. THE REQUESTED NUMBER OF PINS ARE ALLOCATED BY C UPDATING THE VALUE OF NXEENT. ERROR CHECKING IS DONE TO ENSURE THAT ARRAY C BOUNDS ARE NOT EXCEEDED BY THIS PROCESS. THE ALLOCATION IS COMPLETED BY C ZEROING THE ALLOCATED REGION AND RETURNING ITS ADDRESS TO THE CALLER. C C CALLING SEQUENCE: C C CALL BY: CALL ALLOCE (IPNTR,IPINS) C C WHERE: IPNTR IS THE RETURNED ADDRESS OF THE ALLOCATED REGION C (THAT IS, A POINTER INTO IPINEL) C IPINS IS THE NUMBER OF ENTRIES TO ALLOCATE IN IPINEL C C ON ENTRY: IPINS CONTAINS THE NUMBER OF ENTRIES IN IPINEL TO C ALLOCATE C C ON EXIT: IPNTR IS THE INDEX OF THE BEGINNING OF THE ALLOCATED C REGION. C C ERROR CONDITIONS: C C IF THE ALLOCATION WOULD CAUSE THE ARRAY BOUND OF IPINEL TO BE C EXCEEDED, A FATAL ERROR IS DECLARED. C C SPECIAL NOTES: C C NONE C C SUBROUTINES CALLED: C C MSG C C PAGE 3 - ALLOCE - DATA STORAGE DESCRIPTIONS. C C CALLING PARAMETERS: C INTEGER IPNTR !POINTER TO THE ALLOCATED REGION INTEGER IPINS !NUMBER OF PINS TO ALLOCATE C C PARAMETER STATEMENTS C INCLUDE 'WIRCOM.FTN' INCLUDE 'ELECTR.COM' C C LOCAL VARIABLE AND ARRAY DEFINITIONS: C INTEGER ITMP !TOP OF ALLOCATED REGION INTEGER I !DO INDEX C C COMMON AREAS C C C LOCAL VARIABLE AND ARRAY INITIALIZATION: C C C PAGE 4 - ALLOCE C IF ((NXEENT+IPINS) .GT. (NMEPIN+1)) GOTO 100 IPNTR=NXEENT NXEENT=NXEENT+IPINS ITMP=NXEENT-1 DO 10 I=IPNTR,ITMP IPINEL(1,I)=0 10 IPINEL(2,I)=0 RETURN C C ALLOCATION FAILURE DETECTION C 100 CALL DSKMSG(17,4) END SUBROUTINE ALLOCC (IPNTR,IPINS) C C C ************************************************************************ C * C THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS ONLY. DIGITAL EQUIPMENT * C COMPUTER USER'S SOCIETY, DIGITAL EQUIPMENT CORPORATION, MONSANTO, AND * C THE AUTHOR DISCLAIM ALL WARRANTIES ON THE PROGRAM, INCLUDING WITHOUT * C LIMITATION, ALL IMPLIED WARRANTIES OF MERCHANTABLITY AND FITNESS. * C * C FULL PERMISSION AND CONSENT IS HEREBY GIVEN TO DECUS AND TO THE DECUS * C SPECIAL INTEREST GROUPS TO REPRODUCE, DISTRIBUTE, AND PUBLISH AND * C PERMIT OTHERS TO REPRODUCE IN WHOLE OR IN PART, IN ANY FORM AND * C WITHOUT RESTRICTION, THIS PROGRAM AND ANY INFORMATION RELATING THERETO * C * C ************************************************************************ C C C VERSION: V01.02 C C AUTHOR: RL AURBACH MAPC 1-SEP-78 C C THIS ROUTINE ALLOCATES AND CLEARS A REGION OF THE IPINAL ARRAY. C C COMPILATION INSTRUCTIONS: C C ALLOCC,ALLOCC/-SP=ALLOCC C [FILE WIRCOM.FTN INCLUDED] C [FILE ALIAS.COM INCLUDED] C C MODIFICATION HISTORY: C C V01.00 RLA 13-APR-78 ORIGINAL CODE C V01.01 RLA 13-JUN-78 MAKE ALLOCATION FAILURE FATAL C V01.02 RLA 1-SEP-78 REORGANIZE INCLUDED COMMON AREAS C C C PAGE 2 - ALLOCC - DOCUMENTATION. C C THE ROUTINE USES NXAENT TO LOCATE THE BEGINNING OF THE FIRST AVAILABLE C FREE REGION IN IPINAL. THE REQUESTED NUMBER OF PINS ARE ALLOCATED BY C UPDATING THE VALUE OF NXAENT. ERROR CHECKING IS DONE TO ENSURE THAT ARRAY C BOUNDS ARE NOT EXCEEDED BY THIS PROCESS. THE ALLOCATION IS COMPLETED BY C ZEROING THE ALLOCATED REGION AND RETURNING ITS ADDRESS TO THE CALLER. C C CALLING SEQUENCE: C C CALL BY: CALL ALLOCC (IPNTR,IPINS) C C WHERE: IPNTR IS THE RETURNED ADDRESS OF THE ALLOCATED REGION C (THAT IS, A POINTER INTO IPINAL) C IPINS IS THE NUMBER OF ENTRIES TO ALLOCATE IN IPINAL C C ON ENTRY: IPINS CONTAINS THE NUMBER OF ENTRIES IN IPINAL TO C ALLOCATE C C ON EXIT: IPNTR IS THE INDEX OF THE BEGINNING OF THE ALLOCATED C REGION. C C ERROR CONDITIONS: C C IF THE ALLOCATION WOULD CAUSE THE ARRAY BOUND OF IPINAL TO BE C EXCEEDED, A FATAL ERROR IS DECLARED. C C SPECIAL NOTES: C C NONE C C SUBROUTINES CALLED: C C MSG C C PAGE 3 - ALLOCC - DATA STORAGE DESCRIPTIONS. C C CALLING PARAMETERS: C INTEGER IPNTR !POINTER TO THE ALLOCATED REGION INTEGER IPINS !NUMBER OF PINS TO ALLOCATE C C PARAMETER STATEMENTS C INCLUDE 'WIRCOM.FTN' INCLUDE 'ALIAS.COM' C C LOCAL VARIABLE AND ARRAY DEFINITIONS: C INTEGER ITMP !TOP OF ALLOCATED REGION INTEGER I,J !DO INDEX C C COMMON AREAS C C C LOCAL VARIABLE AND ARRAY INITIALIZATION: C C C PAGE 4 - ALLOCC C IF ((NXAENT+IPINS) .GT. (NMAPIN+1)) GOTO 100 IPNTR=NXAENT NXAENT=NXAENT+IPINS ITMP=NXAENT-1 DO 10 I=IPNTR,ITMP DO 10 J=1,4 10 IPINAS(J,I)=0 RETURN C C ALLOCATION FAILURE DETECTION C 100 CALL DSKMSG(18,4) END SUBROUTINE PLDFLT(JTYP) C C C ************************************************************************ C * C THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS ONLY. DIGITAL EQUIPMENT * C COMPUTER USER'S SOCIETY, DIGITAL EQUIPMENT CORPORATION, MONSANTO, AND * C THE AUTHOR DISCLAIM ALL WARRANTIES ON THE PROGRAM, INCLUDING WITHOUT * C LIMITATION, ALL IMPLIED WARRANTIES OF MERCHANTABLITY AND FITNESS. * C * C FULL PERMISSION AND CONSENT IS HEREBY GIVEN TO DECUS AND TO THE DECUS * C SPECIAL INTEREST GROUPS TO REPRODUCE, DISTRIBUTE, AND PUBLISH AND * C PERMIT OTHERS TO REPRODUCE IN WHOLE OR IN PART, IN ANY FORM AND * C WITHOUT RESTRICTION, THIS PROGRAM AND ANY INFORMATION RELATING THERETO * C * C ************************************************************************ C C C VERSION: V01.01 C C AUTHOR: RL AURBACH MAPC 1-SEP-78 C C THIS ROUTINE DEFINES A PREVIOUSLY UNDEFINED PLANE, USING THE DEFAULT PLANE C NAME. C C COMPILATION INSTRUCTIONS: C C PLDFLT,PLDFLT/-SP=PLDFLT C [FILE WIRCOM.FTN INCLUDED] C [FILE PLAIN.COM INCLUDED] C [FILE PARAM.COM INCLUDED] C [FILE SPCING.COM INCLUDED] C [FILE ELECTR.COM INCLUDED] C C MODIFICATION HISTORY: C C V01.00 RLA 5-MAY-78 ORIGINAL CODE C V01.01 RLA 1-SEP-78 REORGANIZE INCLUDED COMMON AREAS C C C PAGE 2 - PLDFLT - DOCUMENTATION. C C GIVEN THE ELECTRICAL TYPE OF A PLANE, THIS ROUTINE CHECKS TO SEE IF THE C PLANE HAS BEEN DEFINED. IF IT HAS, IT RETURNS, HAVING PERFORMED NO ACTION. C C IF IT HAS NOT BEEN DEFINED, THE ROUTINE DEFINES IT, USING THE DEFAULT PLANE C NAME. THE PLANE DEFINITION LOGIC INSURES THAT THE ENTRIES OF IPNAM ARE UNIQUE C SO IT IS NOT NECESSARY TO CHECK FOR UNIQUENESS IN THAT TABLE. HOWEVER, IT C MUST BE DETERMINED WHETHER THE DEFAULT PLANE NAME IS UNIQUE IN THE SYMBL C TABLE. IF IT IS, ALL NECESSARY ENTRIES ARE MADE IN THE COMMON AREAS "PLAIN" C AND "PARAM" IN ORDER TO DEFINE THIS PLANE. C C CALLING SEQUENCE: C C CALL BY: CALL PLDFLT (JTYP) C C WHERE: JTYP IS THE ELECTRICAL TYPE OF THE PLANE WHICH IS TO BE C DEFINED. C C C ON EXIT: IF THE PLANE IS ALREADY DEFINED, THE ROUTINE DOES C NOTHING. IF THE PLANE IS UNDEFINED, THE PLANE IS C DEFINED BY THE ROUTINE. C C ERROR CONDITIONS: C C THE FOLLOWING ERROR CONDITIONS ARE FATAL: C ILLEGAL PLANE TYPE C PLANE NAME_SYMBOL ALREADY USED C C SPECIAL NOTES: C C NONE C C SUBROUTINES CALLED: C C TRANSF MSG ALLOCS ALLOCE COMPAR C C PAGE 3 - PLDFLT - DATA STORAGE DESCRIPTIONS. C C CALLING PARAMETERS: C INTEGER JTYP !ELECTRICAL TYPE OF PLANE C C PARAMETER STATEMENTS C INCLUDE 'WIRCOM.FTN' INCLUDE 'PLAIN.COM' INCLUDE 'PARAM.COM' INCLUDE 'SPCING.COM' INCLUDE 'ELECTR.COM' C C LOCAL VARIABLE AND ARRAY DEFINITIONS: C INTEGER I !DO INDEX INTEGER IPLANE !INDEX OF PLANE BEING PROCESSED LOGICAL COMPAR !TYPE STATEMENT FOR EXTERNAL LOGICAL FUNCTION C C COMMON AREAS C C C LOCAL VARIABLE AND ARRAY INITIALIZATION: C C C PAGE 4 - PLDFLT C C C LOCATE THE PLANE WITH THE RIGHT TYPE C IPLANE=0 DO 10 I=1,NMPLAN IF (IPTYP(I) .EQ. JTYP) IPLANE=I 10 CONTINUE IF (IPLANE .EQ. 0) GOTO 1000 C C IF THE PLANE IS DEFINED, RETURN C IF (IPDEF(IPLANE) .NE. 0) RETURN C C CHECK TO SEE IF THE PLANE NAME IS ALREADY IN USE. C DO 20 I=1,NENT IF (COMPAR(SYMBL(1,I),IPNAM(1,IPLANE),4)) GOTO 1010 20 CONTINUE C C THE PLANE NAME IS LEGAL FOR USE. DEFINE IT. C NENT=NENT+1 CALL TRANSF(IPNAM(1,IPLANE),4,SYMBL(1,NENT),4) CALL TRANSF(IPNAM(1,IPLANE),4,ICNAME(1,NENT),8) IPDEF(IPLANE)=1 ILOC(NENT)=-128 ITYPE(NENT)=JTYP INUM(NENT)=0 IPENT(IPLANE)=NENT CALL ALLOCS(ISLOC(NENT),0) ISBASE(1,NENT)=0 ISBASE(2,NENT)=0 IROT(NENT)=0 CALL ALLOCE(IELOC(NENT),0) C RETURN C C *** ERROR HANDLERS C 1000 CALL DSKMSG(19,4) C 1010 CALL DSKMSG(20,4) C C END SUBROUTINE ICHECK(I) C C C ************************************************************************ C * C THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS ONLY. DIGITAL EQUIPMENT * C COMPUTER USER'S SOCIETY, DIGITAL EQUIPMENT CORPORATION, MONSANTO, AND * C THE AUTHOR DISCLAIM ALL WARRANTIES ON THE PROGRAM, INCLUDING WITHOUT * C LIMITATION, ALL IMPLIED WARRANTIES OF MERCHANTABLITY AND FITNESS. * C * C FULL PERMISSION AND CONSENT IS HEREBY GIVEN TO DECUS AND TO THE DECUS * C SPECIAL INTEREST GROUPS TO REPRODUCE, DISTRIBUTE, AND PUBLISH AND * C PERMIT OTHERS TO REPRODUCE IN WHOLE OR IN PART, IN ANY FORM AND * C WITHOUT RESTRICTION, THIS PROGRAM AND ANY INFORMATION RELATING THERETO * C * C ************************************************************************ C C C VERSION: V01.01 C C AUTHOR: RL AURBACH MAPC 1-SEP-78 C C THIS ROUTINE RETURNS THE VALUE OF ZERO UNLESS THE PIN WHOSE SPECIFICATION C IS ON THE LEXICAL STACK HAS AN ELECTRICAL TYPE CORRESPONDING TO SOME PLANE, C IN WHICH CASE IT RETURNS THE ELECTRICAL TYPE. C C COMPILATION INSTRUCTIONS: C C ICHECK,ICHECK/-SP=ICHECK C [FILE WIRCOM.FTN INCLUDED] C [FILE ELECTR.COM INCLUDED] C [FILE PLAIN.COM INCLUDED] C [FILE LEXATT.COM INCLUDED] C C MODIFICATION HISTORY: C C V01.00 RLA 3-MAY-78 ORIGINAL CODE C V01.01 RLA 1-SEP-78 REORDGANIZE INCLUDED COMMON AREAS C C C PAGE 2 - ICHECK - DOCUMENTATION. C C THE NEXT TO TOP WORD ON THE LEXICAL STACK IS THE INTERNAL DEVICE NUMBER C OF SOME DEVICE AND THE TOP OF THE LEXICAL STACK IS THE NUMBER OF SOME PIN C OF THAT DEVICE. IF THE ELECTRICAL CODE OF THAT PIN IS THE SAME AS THE TYPE C OF SOME PLANE, THE ELECTRICAL CODE IS RETURNED IN I. ELSE I = 0. C C CALLING SEQUENCE: C C CALL BY: CALL ICHECK(I) C C WHERE: I IS THE INTEGER VALUE RETURNED BY THE ROUTINE. C C ON ENTRY: LEXSTK(LEXSP+1) IS THE INTERNAL DEVICE NUMBER OF SOME C DEVICE. C LEXSTK(LEXSP) IS A PIN NUMBER FOR THE SPECIFIED PIN OF C THAT DEVICE. C C ON EXIT: LEXSTK UNCHANGED. C I HAS THE VALUE DESCRIBED ABOVE. C C ERROR CONDITIONS: C C NONE C C SPECIAL NOTES: C C NONE C C SUBROUTINES CALLED: C C NONE C C PAGE 3 - ICHECK - DATA STORAGE DESCRIPTIONS. C C CALLING PARAMETERS: C INTEGER I !RETURN VALUE C C PARAMETER STATEMENTS C INCLUDE 'WIRCOM.FTN' INCLUDE 'ELECTR.COM' INCLUDE 'PLAIN.COM' INCLUDE 'LEXATT.COM' C C LOCAL VARIABLE AND ARRAY DEFINITIONS: C INTEGER IE !ELECTRICAL CODE OF THE PIN INTEGER JE !ELECTRICAL TYPE OF A PLANE INTEGER K !DO INDEX C C COMMON AREAS C C C LOCAL VARIABLE AND ARRAY INITIALIZATION: C C C PAGE 4 - ICHECK C I=0 IE=IPINEL(1,(IELOC(LEXSTK(LEXSP+1))+LEXSTK(LEXSP)-1)) DO 10 K=1,NMPLAN JE=IPTYP(K) IF (IE .EQ. JE) I=IE 10 CONTINUE RETURN END SUBROUTINE NEARPL(ISPEC,IPLANE,JSPEC) C C C ************************************************************************ C * C THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS ONLY. DIGITAL EQUIPMENT * C COMPUTER USER'S SOCIETY, DIGITAL EQUIPMENT CORPORATION, MONSANTO, AND * C THE AUTHOR DISCLAIM ALL WARRANTIES ON THE PROGRAM, INCLUDING WITHOUT * C LIMITATION, ALL IMPLIED WARRANTIES OF MERCHANTABLITY AND FITNESS. * C * C FULL PERMISSION AND CONSENT IS HEREBY GIVEN TO DECUS AND TO THE DECUS * C SPECIAL INTEREST GROUPS TO REPRODUCE, DISTRIBUTE, AND PUBLISH AND * C PERMIT OTHERS TO REPRODUCE IN WHOLE OR IN PART, IN ANY FORM AND * C WITHOUT RESTRICTION, THIS PROGRAM AND ANY INFORMATION RELATING THERETO * C * C ************************************************************************ C C C VERSION: V01.02 C C AUTHOR: RL AURBACH MAPC 8-DEC-78 C C THIS MODULE DETERMINES THE PIN OF A GIVEN PLANE WHICH IS CLOSEST TO A C GIVEN PIN. C C COMPILATION INSTRUCTIONS: C C NEARPL,NEARPL/-SP=NEARPL C [FILE WIRCOM.FTN INCLUDED] C [FILE PLAIN.COM INCLUDED] C [FILE PARAM.COM INCLUDED] C [FILE SPCING.COM INCLUDED] C C MODIFICATION HISTORY: C C V01.00 RLA 20-APR-78 ORIGINAL CODE C V01.01 RLA 1-SEP-78 REORGANIZE INCLUDED COMMON AREAS C V01.02 RLA 8-DEC-78 FIX FORMATTING FOR ERROR MESSAGE C C C PAGE 2 - NEARPL - DOCUMENTATION. C C THE ROUTINE DETERMINES THE ABSOLUTE COORDINATES OF THE SPECIFIED PIN. C IT THEN LOCATES THE SPECIFIED PLANE AND DETERMINES THE NUMBER OF PINS IN IT. C IF THE NUMBER IS ZERO, THE ROUTINE GIVES AN ERROR. FINALLY, THE ROUTINE C CALCULATES THE MINIMUM SEPARATION OF THE SPECIFIED PIN AND A PIN OF THE C SPECIFIED PLANE, KEEPING TRACK OF THE PIN NUMBER OF THE PIN WHICH GIVES THAT C RESULT. THE ROUTINE RETURNS THE PIN NUMBER IN A FORMAT CONSISTENT WITH C CHAIN PROCESSING. C C CALLING SEQUENCE: C C CALL BY: CALL NEARPL(ISPEC,IPLANE,JSPEC) C C WHERE: ISPEC IS THE TWO-BYTE PIN DESCRIPTOR (INTERNAL CHIP NUMBER AND C PIN NUMBER WITHIN THE CHIP) FOR THE SPECIFIED PIN. C IPLANE IS THE NUMBER OF THE SPECIFIED PLANE C JSPEC IS A TWO-BYTE FIELD WHICH WILL CONTAIN THE PIN C DESCRIPTOR OF THE NEAREST PIN OF THE SPECIFIED PLANE C ON EXIT. C C C ON EXIT: JSPEC WILL CONTAIN THE TWO-BYTE PIN DESCRIPTOR FOR THE C CLOSEST PIN OF THE SPECIFIED PLANE TO THE SPECIFIED C PIN. C C ERROR CONDITIONS: C C IF THE NUMBER OF PINS IN THE PLANE IS ZERO OR IF THE MINIMUM DISTANCE C CALCULATED IS ZERO, AN ERROR MESSAGE IS PRINTED INDICATING THAT AN C IMPROPER USE WAS MADE OF THIS ROUTINE, AND THE VALUE RETURNED IN JSPEC C IS ZERO (BOTH BYTES). C C SPECIAL NOTES: C C NONE C C SUBROUTINES CALLED: C C MSG C C PAGE 3 - NEARPL - DATA STORAGE DESCRIPTIONS. C C CALLING PARAMETERS: C BYTE ISPEC(2) !INPUT PIN SPECIFICATION INTEGER IPLANE !INPUT PLANE NUMBER BYTE JSPEC(2) !OUTPUT PIN SPECIFICATION C C PARAMETER STATEMENTS C INCLUDE 'WIRCOM.FTN' INCLUDE 'PLAIN.COM' INCLUDE 'PARAM.COM' INCLUDE 'SPCING.COM' C C LOCAL VARIABLE AND ARRAY DEFINITIONS: C INTEGER I !INTERNAL CHIP NUMBER OF PLANE INTEGER N !NUMBER OF PINS IN PLANE REAL*4 D !CURRENT MINIMUM SEPARATION REAL*4 T !CURRENT SEPARATION INTEGER L !INPUT PIN SPEC -- CHIP NUMBER INTEGER M !INPUT PIN SPEC -- PIN NUMBER INTEGER IX !INPUT PIN -- ABSOLUTE X COORDINATE INTEGER IY !INPUT PIN -- ABSOLUTE Y COORDINATE INTEGER JXB !PLANE -- X COORDINATE BASE INTEGER JYB !PLANE -- Y COORDINATE BASE INTEGER JX !PLANE PIN -- ABSOLUTE X COORD INTEGER JY !PLANE PIN -- ABSOLUTE Y COORD INTEGER K !DO INDEX INTEGER IZ !PIN NUMBER OF PIN PROVIDING CURRENT MINIMUM !SEPARATION BYTE MSG1(35) !ERROR MESSAGE BUFFER C C COMMON AREAS C C C LOCAL VARIABLE AND ARRAY INITIALIZATION: C C C PAGE 4 - NEARPL C C C *** IF THE NUMBER OF PINS IN THE PLANE IS ZERO, DECLARE AN ERROR. C SET THE SEPARATION PARAMETER TO AN IMPOSSIBLY HIGH STARTING VALUE. C LOOP FOR ALL PINS IN THE PLANE. C CALCULATE THE SEPARATION FOR THE PIN. IF LESS THAN THE CURRENT C SEPARATION, STORE THE SEPARATION AND THE PIN NUMBER. C C WHEN DONE, IF SEPARATION IS ZERO, DECLARE AN ERROR. ELSE, RETURN C THE INTERNAL CHIP NUMBER FOR THE PLANE AND THE PIN NUMBER IN JSPEC. C I=IPENT(IPLANE) N=INUM(I) IF (N .LE. 0) GOTO 100 D=10000. L=ISPEC(1) M=ISPEC(2) IX=ISBASE(1,L)+IPINSP(1,(ISLOC(L)+M-1)) IY=ISBASE(2,L)+IPINSP(2,(ISLOC(L)+M-1)) JXB=ISBASE(1,I) JYB=ISBASE(2,I) DO 20 K=1,N JX=JXB+IPINSP(1,(ISLOC(I)+K-1)) JY=JYB+IPINSP(2,(ISLOC(I)+K-1)) T=SQRT(FLOAT((IX-JX)*(IX-JX)+(IY-JY)*(IY-JY))) IF (T .GE. D) GOTO 20 D=T IZ=K 20 CONTINUE IF (D .LT. 1.E-2) GOTO 100 JSPEC(1)=I JSPEC(2)=IZ RETURN C C PAGE 5 - NEARPL C C C *** ERROR HANDLER C 100 ENCODE (35,1000,MSG1) (IPNAM(II,IPLANE),II=1,4) CALL MSG(35,MSG1,0) JSPEC(1)=0 JSPEC(2)=0 RETURN C C 1000 FORMAT ('( 21) Plane ',4A1,' contains no pins.') C C END SUBROUTINE PNSPEC (IDEV,IPIN,IOPT,SPEC) C C C ************************************************************************ C * C THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS ONLY. DIGITAL EQUIPMENT * C COMPUTER USER'S SOCIETY, DIGITAL EQUIPMENT CORPORATION, MONSANTO, AND * C THE AUTHOR DISCLAIM ALL WARRANTIES ON THE PROGRAM, INCLUDING WITHOUT * C LIMITATION, ALL IMPLIED WARRANTIES OF MERCHANTABLITY AND FITNESS. * C * C FULL PERMISSION AND CONSENT IS HEREBY GIVEN TO DECUS AND TO THE DECUS * C SPECIAL INTEREST GROUPS TO REPRODUCE, DISTRIBUTE, AND PUBLISH AND * C PERMIT OTHERS TO REPRODUCE IN WHOLE OR IN PART, IN ANY FORM AND * C WITHOUT RESTRICTION, THIS PROGRAM AND ANY INFORMATION RELATING THERETO * C * C ************************************************************************ C C C VERSION: V02.01 C C AUTHOR: RL AURBACH MAPC 1-SEP-78 C C THIS ROUTINE IS A UTILITY WHOSE PURPOSE IS TO CONVERT AN INTERNAL C DEVICE NUMBER AND INTERNAL PIN NUMBER INTO AS ASCII PIN-SPECIFICATION C STRING. C C COMPILATION INSTRUCTIONS: C C PNSPEC,PNSPEC/-SP=PNSPEC C [FILE WIRCOM.FTN INCLUDED] C [FILE PLAIN.COM INCLUDED] C [FILE PARAM.COM INCLUDED] C [FILE ALIAS.COM INCLUDED] C [FILE SPCING.COM INCLUDED] C C MODIFICATION HISTORY: C C V01.00 RLA 17-MAY-78 ORIGINAL CODE C V02.00 RLA 31-MAY-78 ADD OPTIONS FOR PLANES PRINTOUT C V02.01 RLA 1-SEP-78 REORGANIZE INCLUDED COMMON AREAS C C C PAGE 2 - PNSPEC - DOCUMENTATION. C C THE INPUTS TO THIS ROUTINE ARE THE INTERNAL DEVICE NUMBER AND INTERNAL C PIN NUMBER. THE OUTPUT OF THE ROUTINE IS A 10 CHARACTER ASCII STRING C CONTAINING THE SPECIFICATION REPRESENTED BY THE INPUT FIELDS. C C THE FORMAT OF THE STRING IS LLLL-NNNN_ WHERE: C LLLL IS THE LOCATION SYMBOL (4 CHARACTERS). C THIS SYMBOL IS EITHER THE ALPHAMERIC SYMBOL DEFINED FOR THE C DEVICE OR THE USER DEVICE NUMBER IN I4 FORMAT. C - IS AN ASCII DASH. C NNNN IS THE PIN SYMBOL (4 CHARACTERS). C UNLESS THE DEVICE IS A CONNECTOR, THIS SYMBOL IS THE PIN NUMBER C IN I4 FORMAT. IF THE DEVICE IS A CONNECTOR, IF ALIAS SYMBOLS C ARE DEFINED FOR THIS CONNECTOR, AND IF THE INTERNAL PIN NUMBER C CORRESPONDS TO A DEFINED PIN ALIAS, THEN NNNN IS THE PIN ALIAS C SYMBOL. C _ REPRESENTS A TRAILING ASCII SPACE. C C C THE PLANE PINS REPRESENT SPECIAL CASES. THE IOPT PARAMETER IS USED TO C SPECIFY THE PLANE-PIN FORMAT. IF: C IOPT=0 FORMAT IS LLLL, WHERE LLLL IS THE PLANE SYMBOL (E.G. GND). C IOPT=1 FORMAT IS LLLL-NNNN, WHERE LLLL IS THE PLANE SYMBOL C AND NNNN IS THE INTERNALLY-SPECIFIED C PIN NUMBER OF THAT PLANE PIN. (E.G. PWR-12). C IOPT=2 FORMAT IS [XXX,YYY], WHERE XXX AND YYY ARE THE ABSOLUTE C COORDINATES OF THE PIN. C CALLING SEQUENCE: C C CALL BY: CALL PNSPEC (IDEV, IPIN, IOPT, SPEC) C C WHERE: IDEV IS THE INTERNAL DEVICE NUMBER. C IPIN IS THE INTERNAL PIN NUMBER. C IOPT IS THE OPTION CODE FOR PLANE-PIN FORMAT. THE VALID C CODES ARE: C 0 FOR THE PLANE NAME ONLY. C 1 FOR THE PLANE_NAME-PIN_NUMBER. C 2 FOR ABSOLUTE POSITION [XXX,YYY] FORMAT. C SPEC IS THE OUTPUT ARRAY FOR THE 10 CHARACTER ASCII C PIN-SPECIFICATION STRING. C C ON ENTRY: IDEV AND IPIN REPRESENT A VALID PIN SPECIFICATION. C C ON EXIT: SPEC CONTAINS THE 10 CHARACTER STRING. C C C PAGE 2 A - PNSPEC - DOCUMENTATION (CONTINUED). C C C C ERROR CONDITIONS: C C NONE C C SPECIAL NOTES: C C NONE C C SUBROUTINES CALLED: C C TRANSF C C PAGE 3 - PNSPEC - DATA STORAGE DESCRIPTIONS. C C CALLING PARAMETERS: C INTEGER IDEV !INTERNAL DEVICE NUMBER INTEGER IPIN !INTERNAL PIN NUMBER INTEGER IOPT !OUTPUT FORMAT LISTING OPTION BYTE SPEC(10) !OUTPUT PIN-SPEC ARRAY C C PARAMETER STATEMENTS C INCLUDE 'WIRCOM.FTN' INCLUDE 'PLAIN.COM' INCLUDE 'PARAM.COM' INCLUDE 'ALIAS.COM' INCLUDE 'SPCING.COM' C C LOCAL VARIABLE AND ARRAY DEFINITIONS: C BYTE ISPC, IDASH !' ' AND '-' INTEGER IA,IB !TEMPORARY VARIABLES LOGICAL IPLANE !IF TRUE, PIN BELONGS TO A PLANE C C COMMON AREAS C C C LOCAL VARIABLE AND ARRAY INITIALIZATION: C DATA ISPC, IDASH / ' ', '-' / C C PAGE 4 - PNSPEC C C C *** FIRST WE MUST DETERMINE IF THE PIN BELONGS TO A PLANE AND IF SO, C WHAT SHOULD BE DONE. THE PIN BELONGS TO A PLANE IF THE INTERNAL CHIP C NUMBER OF THE DEVICE IS THE SAME AS THE INTERNAL CHIP NUMBER OF SOME C PLANE. C IPLANE=.FALSE. DO 10 I=1,NMPLAN IF (IDEV .EQ. IPENT(I)) IPLANE=.TRUE. 10 CONTINUE C C *** NOW WE CHECK TO SEE IF THE [XXX,YYY] FORMAT IS CALLED FOR. C IF ((IOPT .EQ. 2) .AND. IPLANE) GOTO 100 C C *** TRANSFER THE LOCATION SYMBOL TO THE FIRST 4 BYTES OF SPEC C AND ADD A DASH IN BYTE 5. C CALL TRANSF(SYMBL(1,IDEV),4,SPEC(1),10) IF (IPLANE .AND. (IOPT .EQ. 0)) RETURN SPEC(5)=IDASH C C *** SHOULD THE PIN NUMBER OR AN ALIAS BE USED FOR THE PIN SYMBOL? C THE FOLLOWING THREE CONDITIONS MUST BE TRUE IF AN ALIAS IS TO BE USED: C THE DEVICE MUST BE A CONNECTOR (TYPE 5). C PIN ALIASES MUST BE DEFINED FOR THIS CONNECTOR. C THIS PIN MUST HAVE AN ALIAS. C IF (ITYPE(IDEV) .NE. 5) GOTO 20 IA=IALOC(IDEV) IF (IA .EQ. 0) GOTO 20 IF (IPINAS(1,IA+IPIN-1) .EQ. 0) GOTO 20 C C *** USE A PIN ALIAS -- TRANSFER IT TO SPEC. C CALL TRANSF(IPINAS(1,IA+IPIN-1),4,SPEC(6),4) GOTO 30 C C *** USE THE PIN NUMBER -- CONVERT TO I4 FORMAT IN SPEC. C 20 ENCODE (4,40,SPEC(6)) IPIN C C *** FILL LAST BYTE OF SPEC WITH AN ASCII SPACE. C 30 SPEC(10)=ISPC RETURN C C PAGE 5 - PNSPEC C C C *** THE PIN IN QUESTION IS A PLANE PIN AND THE ABSOLUTE POSITION FORMAT C [XXX,YYY] HAS BEEN REQUESTED. CALCULATE THE X COORDINATE IN IA AND C THE Y COORDINATE IN IB AND FORMAT THE OUTPUT FIELD AS REQUESTED. C 100 IA=ISBASE(1,IDEV)+IPINSP(1,(ISLOC(IDEV)+IPIN-1)) IB=ISBASE(2,IDEV)+IPINSP(2,(ISLOC(IDEV)+IPIN-1)) ENCODE (10,140,SPEC) IA, IB RETURN C C C *** FORMAT STATEMENTS FOR ENCODES C 40 FORMAT (I4) C C 140 FORMAT ('[',I3,',',I3,']') C C END SUBROUTINE MINLEN (IPST,JPST,JLEN) C C C ************************************************************************ C * C THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS ONLY. DIGITAL EQUIPMENT * C COMPUTER USER'S SOCIETY, DIGITAL EQUIPMENT CORPORATION, MONSANTO, AND * C THE AUTHOR DISCLAIM ALL WARRANTIES ON THE PROGRAM, INCLUDING WITHOUT * C LIMITATION, ALL IMPLIED WARRANTIES OF MERCHANTABLITY AND FITNESS. * C * C FULL PERMISSION AND CONSENT IS HEREBY GIVEN TO DECUS AND TO THE DECUS * C SPECIAL INTEREST GROUPS TO REPRODUCE, DISTRIBUTE, AND PUBLISH AND * C PERMIT OTHERS TO REPRODUCE IN WHOLE OR IN PART, IN ANY FORM AND * C WITHOUT RESTRICTION, THIS PROGRAM AND ANY INFORMATION RELATING THERETO * C * C ************************************************************************ C C C VERSION: V02.00 C C AUTHOR: RL AURBACH MAPC 24-MAY-78 C C THIS SUBROUTINE FINDS THE NEAREST UNUSED POST TO ANY GIVEN POST C IN A CHAIN AND RETURNS ITS INDEX AND THE DISTANCE BETWEEN IT AND THE C GIVEN POST. C C COMPILATION INSTRUCTIONS: C C MINLEN,MINLEN/-SP=MINLEN C C MODIFICATION HISTORY: C C V01.00 EAS/RC 9-JUL-75 ORIGINAL CODE C V02.00 RLA 24-MAY-78 MODIFY CALLING SEQUENCE AND COMMON C USAGE. C C C PAGE 2 - MINLEN - DOCUMENTATION. C C THIS ROUTINE CALCULATES THE DISTANCE BETWEEN A GIVEN POST (INDEXED BY C ITS POSITION IN THE CHAIN, AND ALL OTHER UNUSED POSTS IN THE CHAIN. C THE INDEX AND DISTANCE OF THE NEAREST UNUSED POST IS RETURNED. C C CALLING SEQUENCE: C C CALL BY: CALL MINLEN (IPST,JPST,JLEN) C C WHERE: IPST IS THE INDEX OF THE GIVEN POST. C JPST IS THE INDEX RETURNED BY THE PROGRAM OF THE NEAREST C POST. C JLEN IS THE DISTANCE FROM THE GIVEN POST TO THE NEAREST POST C C ON ENTRY: IPST IS SPECIFIED. C C ON EXIT: JPST AND JLEN ARE RETURNED. C C ERROR CONDITIONS: C C NONE C C SPECIAL NOTES: C C NONE C C SUBROUTINES CALLED: C C INDX C C PAGE 3 - MINLEN - DATA STORAGE DESCRIPTIONS. C C CALLING PARAMETERS: C INTEGER IPST,JPST,JLEN C C PARAMETER STATEMENTS C C C LOCAL VARIABLE AND ARRAY DEFINITIONS: C INTEGER J,LT C C COMMON AREAS C PARAMETER NMPOST=100 INTEGER NPOSTS BYTE IPOST(NMPOST) BYTE ILF(NMPOST) BYTE IRT(NMPOST) BYTE LENRT(NMPOST) BYTE LENLF(NMPOST) BYTE ITMP(2,NMPOST) BYTE LEN(NMPOST*(NMPOST-1)/2) BYTE IW(NMPOST*(NMPOST+13)/2+2) EQUIVALENCE (NPOSTS,IW(1)) EQUIVALENCE (IPOST(1),IW(3)) EQUIVALENCE (ILF(1),IW(3+NMPOST)) EQUIVALENCE (IRT(1),IW(3+2*NMPOST)) EQUIVALENCE (LENRT(1),IW(3+3*NMPOST)) EQUIVALENCE (LENLF(1),IW(3+4*NMPOST)) EQUIVALENCE (ITMP(1,1),IW(3+5*NMPOST)) EQUIVALENCE (LEN(1),IW(3+7*NMPOST)) COMMON / WORK / IW C C LOCAL VARIABLE AND ARRAY INITIALIZATION: C C C PAGE 4 - MINLEN C C C *** INITIALIZE MINIMUM LENGTH AS 100 INCHES (GREATER THAN MAX BOARD C DIMENSION C JLEN=1000 C C *** NOW FIND NEAREST POST (EXPLOIT FACT THAT POST 1 IS USED FIRST) C DO 10 J=2,NPOSTS C C *** DISCARD THIS POST IF SAME OR ALREADY USED. C IF (IPOST(J)) GOTO 10 C C *** GET LENGTH FROM TABLE AND DISCARD POST IF LONGER THAN PRESENT MINIMUM. C LT=LEN(INDX(IPST,J)) IF (LT .GE. JLEN) GOTO 10 C C *** THIS ONE IS SMALLER -- SAVE INDEX AND LENGTH C JLEN=LT JPST=J 10 CONTINUE RETURN END INTEGER FUNCTION INDX(I,J) C C C ************************************************************************ C * C THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS ONLY. DIGITAL EQUIPMENT * C COMPUTER USER'S SOCIETY, DIGITAL EQUIPMENT CORPORATION, MONSANTO, AND * C THE AUTHOR DISCLAIM ALL WARRANTIES ON THE PROGRAM, INCLUDING WITHOUT * C LIMITATION, ALL IMPLIED WARRANTIES OF MERCHANTABLITY AND FITNESS. * C * C FULL PERMISSION AND CONSENT IS HEREBY GIVEN TO DECUS AND TO THE DECUS * C SPECIAL INTEREST GROUPS TO REPRODUCE, DISTRIBUTE, AND PUBLISH AND * C PERMIT OTHERS TO REPRODUCE IN WHOLE OR IN PART, IN ANY FORM AND * C WITHOUT RESTRICTION, THIS PROGRAM AND ANY INFORMATION RELATING THERETO * C * C ************************************************************************ C C C VERSION: V01.01 C C AUTHOR: RL AURBACH MAPC 24-MAY-78 C C THIS ROUTINE MAPS A SYMMETRIC, ZERO-DIAGONAL ARBITRARY-SIZED MATRIX C INTO A VECTOR. IT IS USED TO REFERENCE VALUES IN THE MINIMIZATION PROCESS. C C COMPILATION INSTRUCTIONS: C C INDX,INDX/-SP=INDX C C MODIFICATION HISTORY: C C V01.00 EAS/RC 1-AUG-75 ORIGINAL CODE C V01.01 RLA 24-MAY-78 CHANGE DATA TYPES TO INTEGER. ALSO C MAKE ERROR MESSAGE MORE ELEGANT. C C C PAGE 2 - INDX - DOCUMENTATION. C C THE FUNCTION MAPS AN ARBITRARY-SIZE, SQUARE, SYMMETRIC, ZERO-DIAGONAL C MATRIX INTO A VECTOR, USING THE MINIMUM STORAGE REQUIRED. C C THE ROUTINE BASICALLY WORKS BY CONVERTING THE SQUARE-MATRIX INDICES INTO A C VECTOR INDEX (RETURNED AS THE FUNCTION VALUE). C C ONLY THE OFF-DIAGONAL VALUES ARE USED. AN INPUT (I,I) SPECIFICATION WILL C RESULT IN A FATAL ERROR. THE INPUT COORDINATES (I,J) AND (J,I) YIELD THE C SAME VALUE. C C THIS ROUTINE WILL STORE DATA IN THE FOLLOWING ORDER: C C (1,2) (1,3) (2,3) (1,4) (2,4) (3,4) (1,5) (2,5) (3,5) (4,5) ..... C C C CALLING SEQUENCE: C C CALL BY: K=INDX(I,J) C C WHERE: K IS ASSIGNED THE RETURN VALUE OF THE ROUTINE. C I IS ONE MATRIX INDEX C J IS THE OTHER MATRIX INDEX. C C ON ENTRY: I MUST NOT EQUAL J C C ON EXIT: THE FUNCTION HAS THE PROPER INTEGER VALUE C C ERROR CONDITIONS: C C THE CONDITION I=J GENERATES A FATAL ERROR C C SPECIAL NOTES: C C NONE C C SUBROUTINES CALLED: C C MSG C C PAGE 3 - INDX - DATA STORAGE DESCRIPTIONS. C C CALLING PARAMETERS: C INTEGER I,J !MATRIX INDICES C C PARAMETER STATEMENTS C C C LOCAL VARIABLE AND ARRAY DEFINITIONS: C C C COMMON AREAS C C C LOCAL VARIABLE AND ARRAY INITIALIZATION: C C C PAGE 4 - INDX C IF (I-J) 10,30,20 C 10 INDX=(J*(J-3))/2+I+1 RETURN C 20 INDX=(I*(I-3))/2+J+1 RETURN C 30 CALL DSKMSG(22,4) C END INTEGER FUNCTION LENGTH(IDEV,IPIN,JDEV,JPIN) C C C ************************************************************************ C * C THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS ONLY. DIGITAL EQUIPMENT * C COMPUTER USER'S SOCIETY, DIGITAL EQUIPMENT CORPORATION, MONSANTO, AND * C THE AUTHOR DISCLAIM ALL WARRANTIES ON THE PROGRAM, INCLUDING WITHOUT * C LIMITATION, ALL IMPLIED WARRANTIES OF MERCHANTABLITY AND FITNESS. * C * C FULL PERMISSION AND CONSENT IS HEREBY GIVEN TO DECUS AND TO THE DECUS * C SPECIAL INTEREST GROUPS TO REPRODUCE, DISTRIBUTE, AND PUBLISH AND * C PERMIT OTHERS TO REPRODUCE IN WHOLE OR IN PART, IN ANY FORM AND * C WITHOUT RESTRICTION, THIS PROGRAM AND ANY INFORMATION RELATING THERETO * C * C ************************************************************************ C C C VERSION: V02.01 C C AUTHOR: RL AURBACH MAPC 1-SEP-78 C C THIS ROUTINE CALCULATES THE DISTANCE BETWEEN TWO PINS. THE DISTANCE C RETURNED IS THE INTEGER NUMBER OF TENTHS OF INCHES BETWEEN THE PINS. C C COMPILATION INSTRUCTIONS: C C LENGTH,LENGTH/-SP=LENGTH C [FILE WIRCOM.FTN INCLUDED] C [FILE SPCING.COM INCLUDED] C C MODIFICATION HISTORY: C C V01.00 EAS/RC 9-JUL-75 ORIGINAL CODE C V02.00 RLA 24-MAY-78 CHANGE CALLING SEQUENCE C V02.01 RLA 1-SEP-78 REORGANIZE INCLUDED COMMON AREAS C C C PAGE 2 - LENGTH - DOCUMENTATION. C C THIS ROUTINE CALCULATES THE DISTANCE BETWEEN TWO PINS AND RETURNS THE C DISTANCE IN TENTHS. THE CALCULATION IS TOTALLY TRIVIAL. THE ROUTINE C USES THE PIN SPECS TO LOOK UP THE SPACING DATA FOR THAT PIN. ADDING THE C BASE FOR THAT PIN RESULTS IN AN ABSOLUTE PIN POSITION. THE ROUTINE THEN C CALCULATES THE DISTANCE BETWEEN THE ABSOLUTE POSITIONS OF THE PINS AND C CONVERTS THE RESULT TO THE CORRECT INTEGER FORMAT. C C CALLING SEQUENCE: C C CALL BY: L=LENGTH(IDEV,IPIN,JDEV,JPIN) C C WHERE: L IS ASSIGNED THE RETURN VALUE OF LENGTH. C IDEV IS THE INTERNAL DEVICE NUMBER FOR THE FIRST PIN SPEC C IPIN IS THE PIN NUMBER FOR THE FIRST PIN SPEC C JDEV IS THE INTERNAL DEVICE NUMBER FOR THE SECOND PIN SPEC C JPIN IS THE PINN NUMBER FOR THE SECOND PIN SPEC C C C C ERROR CONDITIONS: C C NONE C C SPECIAL NOTES: C C NONE C C SUBROUTINES CALLED: C C NONE C C PAGE 3 - LENGTH - DATA STORAGE DESCRIPTIONS. C C CALLING PARAMETERS: C INTEGER IDEV,IPIN !PIN SPEC FOR FIRST PIN INTEGER JDEV,JPIN !PIN SPEC FOR SECOND PIN C C PARAMETER STATEMENTS C INCLUDE 'WIRCOM.FTN' INCLUDE 'SPCING.COM' C C LOCAL VARIABLE AND ARRAY DEFINITIONS: C INTEGER I,J,IX,IY,JX,JY !DUMMY VARIABLES REAL*4 X,Y !DUMMY VARIABLES C C COMMON AREAS C C C LOCAL VARIABLE AND ARRAY INITIALIZATION: C C C PAGE 4 - LENGTH C I=ISLOC(IDEV)+IPIN-1 J=ISLOC(JDEV)+JPIN-1 IX=IPINSP(1,I) IY=IPINSP(2,I) JX=IPINSP(1,J) JY=IPINSP(2,J) C X=FLOAT(ISBASE(1,IDEV)+IX-ISBASE(1,JDEV)-JX) Y=FLOAT(ISBASE(2,IDEV)+IY-ISBASE(2,JDEV)-JY) LENGTH=IFIX(SQRT(X*X+Y*Y)+0.5) C RETURN END INTEGER FUNCTION NEXT (NC1,NC2) C C C ************************************************************************ C * C THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS ONLY. DIGITAL EQUIPMENT * C COMPUTER USER'S SOCIETY, DIGITAL EQUIPMENT CORPORATION, MONSANTO, AND * C THE AUTHOR DISCLAIM ALL WARRANTIES ON THE PROGRAM, INCLUDING WITHOUT * C LIMITATION, ALL IMPLIED WARRANTIES OF MERCHANTABLITY AND FITNESS. * C * C FULL PERMISSION AND CONSENT IS HEREBY GIVEN TO DECUS AND TO THE DECUS * C SPECIAL INTEREST GROUPS TO REPRODUCE, DISTRIBUTE, AND PUBLISH AND * C PERMIT OTHERS TO REPRODUCE IN WHOLE OR IN PART, IN ANY FORM AND * C WITHOUT RESTRICTION, THIS PROGRAM AND ANY INFORMATION RELATING THERETO * C * C ************************************************************************ C C C VERSION: V01.02 C C AUTHOR: RL AURBACH MAPC 1-SEP-78 C C THIS ROUTINE CALCULATES THE NUMBER OF NEAREST NEIGHBOR PINS BETWEEN C ANY TWO CHAINS. C C COMPILATION INSTRUCTIONS: C C NEXT,NEXT/-SP=NEXT C [FILE WIRCOM.FTN INCLUDED] C [FILE CHAINS.COM INCLUDED] C [FILE SPCING.COM INCLUDED] C C MODIFICATION HISTORY: C C V01.00 RC 1-AUG-75 ORIGINAL CODE C V01.01 RLA 25-MAY-78 MINOR DATA BASE MODIFICATIONS C V01.02 RLA 1-SEP-78 REORGANIZE INCLUDED COMMON AREAS C C C PAGE 2 - NEXT - DOCUMENTATION. C C THIS ROUTINE COUNTS THE NUMBER OF OCCASIONS WHEN A PIN OF CHAIN NC1 C IS IMMEDIATELY ADJACENT TO A PIN OF CHAIN NC2. C C C THE ROUTINE CONSISTS OF A LARGE LOOP OVER ALL PINS OF CHAIN NC1. FOR EVERY C WE LOOK AT ALL PINS OF CHAIN NC2, LOOKING FOR AN ADJACENT PIN. EACH SUCH C PIN IS COUNTED. C C THE ADJACENCY TEST CONSISTS OF 4 PARTS: C 1) THE TWO PINS MUST HAVE THE SAME INTERNAL DEVICE NUMBER. C 2) THE PIN NUMBERS MUST BE DIFFERENT BY EXACTLY 1. C 3) THE ABSOLUTE X COORDINATES MUST AGREE WITHIN .1 INCH. C 4) THE ABSOLUTE Y COORDINATES MUST AGREE WITHIN .1 INCH. C C C CALLING SEQUENCE: C C CALL BY: N=NEXT(NC1,NC2) C C WHERE: N IS THE NUMBER OF ADJACENT PINS BETWEEN THE TWO CHAINS C NC1 IS THE CHAIN NUMBER OF THE FIRST CHAIN C NC2 IS THE CHAIN NUMBER OF THE SECOND CHAIN C C C C ERROR CONDITIONS: C C NONE C C SPECIAL NOTES: C C SPECIAL CASE: IF NC1=NC2, RETURN 0. C C SUBROUTINES CALLED: C C NONE C C PAGE 3 - NEXT - DATA STORAGE DESCRIPTIONS. C C CALLING PARAMETERS: C INTEGER NC1,NC2 C C PARAMETER STATEMENTS C INCLUDE 'WIRCOM.FTN' INCLUDE 'CHAINS.COM' INCLUDE 'SPCING.COM' C C LOCAL VARIABLE AND ARRAY DEFINITIONS: C INTEGER NNN,J,JS,JF,IC1,IPIN1,IL,IX1,IY1 INTEGER LS,LF,L,IC2,IPIN2 C C COMMON AREAS C C C LOCAL VARIABLE AND ARRAY INITIALIZATION: C C C PAGE 4 - NEXT C C C *** INITIALIZATION C NNN=0 IF (NC1 .EQ. NC2) GOTO 30 JS=ICNLOC(NC1) JF=ICNLOC(NC1+1)-1 LS=ICNLOC(NC2) LF=ICNLOC(NC2+1)-1 C C *** LOOP OVER ALL PINS OF THE FIRST CHAIN. FOR EACH PIN, CALCULATE C THE INTERNAL DEVICE NUMBER, PIN NUMBER, AND POSITION. C DO 20 J=JS,JF IC1=ICHAIN(1,J) IPIN1=ICHAIN(2,J) IL=ISLOC(IC1)+IPIN1-1 IX1=IPINSP(1,IL) IY1=IPINSP(2,IL) C C PAGE 5 - NEXT C C C *** LOOP OVER ALL PINS OF THE SECOND CHAIN. FOR EACH PIN, CALCULATE C THE INTERNAL DEVICE NUMBER AND PIN NUMBER. CHECK FOR ADJACENCY C BY CHECKING FOR SAME DEVICE, PIN NUMBERS DIFFER BY 1, AND ABSOLUTE C LOCATIONS DIFFER BY .1 INCH. C DO 10 L=LS,LF IC2=ICHAIN(1,L) IPIN2=ICHAIN(2,L) C C THROW OUT IF DIFFERENT CHIPS C IF (IC1 .NE. IC2) GOTO 10 C C THROW OUT IF PIN #'S DIFFER BY MORE THAN 1 C IF (IABS(IPIN1-IPIN2) .GT. 1) GOTO 10 C C THROW OUT IF DELTA_X > 1 (( NOTE: SINCE IC1=IC2, BASES ARE THE SAME)) C IL=ISLOC(IC2)+IPIN2-1 IF (IABS(IPINSP(1,IL)-IX1) .GT. 1) GOTO 10 C C THROW OUT IF DELTA_Y > 1 (( NOTE* SINCE IC1=IC2, BASES ARE THE SAME )) C IF (IABS(IPINSP(2,IL)-IY2) .GT. 1) GOTO 10 C C CHAINS NC1 AND NC2 HAVE A SET OF ADJACENT PINS -- ACCUMULATE. C NNN=NNN+1 10 CONTINUE 20 CONTINUE 30 NEXT=NNN RETURN END REAL FUNCTION FSLACK (X) C C C ************************************************************************ C * C THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS ONLY. DIGITAL EQUIPMENT * C COMPUTER USER'S SOCIETY, DIGITAL EQUIPMENT CORPORATION, MONSANTO, AND * C THE AUTHOR DISCLAIM ALL WARRANTIES ON THE PROGRAM, INCLUDING WITHOUT * C LIMITATION, ALL IMPLIED WARRANTIES OF MERCHANTABLITY AND FITNESS. * C * C FULL PERMISSION AND CONSENT IS HEREBY GIVEN TO DECUS AND TO THE DECUS * C SPECIAL INTEREST GROUPS TO REPRODUCE, DISTRIBUTE, AND PUBLISH AND * C PERMIT OTHERS TO REPRODUCE IN WHOLE OR IN PART, IN ANY FORM AND * C WITHOUT RESTRICTION, THIS PROGRAM AND ANY INFORMATION RELATING THERETO * C * C ************************************************************************ C C C VERSION: V01.00 C C AUTHOR: R L AURBACH MAPC 24-OCT-78 C C FSLACK RETURNS THE INSULATION LENGTH OF THE WIRE TO BE USED CONNECTING C TWO PINS SEPARATED BY A DISTANCE X. C C COMPILATION INSTRUCTIONS: C C FSLACK,FSLACK=FSLACK C [FILE WIRCOM.FTN INCLUDED] C [FILE PARAM.COM INCLUDED] C C MODIFICATION HISTORY: C C V01.00 RLA 24-OCT-78 ORIGINAL CODE C C C PAGE 2 - FSLACK - DOCUMENTATION. C C THE ARGUMENT X OF THIS FUNCTION IS THE DISTANCE BETWEEN TWO PINS. C C FSLACK RETURNS THIS DISTANCE PLUS THE SLACK, ROUNDED TO THE NEXT LARGER C EVEN TENTH OF AN INCH. C C CALLING SEQUENCE: C C CALL BY: XLNGTH=FSLACK(X) C C WHERE: XLNGTH IS THE VALUE RETURNED BY THE ROUTINE C X IS THE DISTANCE BETWEEN THE TWO PINS C C ON ENTRY: X IS A REAL*4 NUMBER C C ON EXIT: THE ROUTINE RETURNS A REAL*4 VALUE C C ERROR CONDITIONS: C C NONE C C SPECIAL NOTES: C C NONE C C SUBROUTINES CALLED: C C ANINT (F4P-DEFINED FUNCTION) C C PAGE 3 - FSLACK - DATA STORAGE DESCRIPTIONS. C C CALLING PARAMETERS: C REAL X !DISTANCE (IN INCHES) BETWEEN TWO PINS C C PARAMETER STATEMENTS C INCLUDE 'WIRCOM.FTN' INCLUDE 'PARAM.COM' C C LOCAL VARIABLE AND ARRAY DEFINITIONS: C C C COMMON AREAS C C C LOCAL VARIABLE AND ARRAY INITIALIZATION: C C C PAGE 4 - FSLACK C FSLACK=ANINT(5.*(X+SLACK))/5. RETURN END INTEGER FUNCTION ISLACK (I) C C C ************************************************************************ C * C THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS ONLY. DIGITAL EQUIPMENT * C COMPUTER USER'S SOCIETY, DIGITAL EQUIPMENT CORPORATION, MONSANTO, AND * C THE AUTHOR DISCLAIM ALL WARRANTIES ON THE PROGRAM, INCLUDING WITHOUT * C LIMITATION, ALL IMPLIED WARRANTIES OF MERCHANTABLITY AND FITNESS. * C * C FULL PERMISSION AND CONSENT IS HEREBY GIVEN TO DECUS AND TO THE DECUS * C SPECIAL INTEREST GROUPS TO REPRODUCE, DISTRIBUTE, AND PUBLISH AND * C PERMIT OTHERS TO REPRODUCE IN WHOLE OR IN PART, IN ANY FORM AND * C WITHOUT RESTRICTION, THIS PROGRAM AND ANY INFORMATION RELATING THERETO * C * C ************************************************************************ C C C VERSION: V01.00 C C AUTHOR: R L AURBACH MAPC 24-OCT-78 C C THIS ROUTINE RETURNS THE INSULATION LENGTH OF THE WIRE (IN UNITS OF TENTHS C OF AN INCH) NEEDED TO JOIN TWO PINS A DISTANCE I APART. C C COMPILATION INSTRUCTIONS: C C ISLACK,ISLACK=ISLACK C [FILE WIRCOM.FTN INCLUDED] C [FILE PARAM.FTN INCLUDED] C C MODIFICATION HISTORY: C C V01.00 RLA 24-OCT-78 ORIGINAL CODE C C C PAGE 2 - ISLACK - DOCUMENTATION. C C THE ARGUMENT OF THE FUNCTION IS THE NUMBER OF TENTHS OF AN INCH BETWEEN C TWO PINS. C C THE ROUTINE RETURNS THIS LENGTH PLUS THE SLACK (IN TENTHS) ROUNDED TO THE C NEXT HIGHEST EVEN NUMBER OF TENTHS OF AN INCH. C C THIS ROUTINE IS THE INTEGER EQUIVALENT OF THE REAL FUNCTION FSLACK. C C CALLING SEQUENCE: C C CALL BY: LENGTH=ISLACK(I) C C WHERE: LENGTH IS THE INTEGER VALUE RETURNED BY THE ROUTINE C I IS THE INTEGER DISTANCE BETWEEN TWO PINS C C ON ENTRY: I IS THE INTEGER DISTANCE BETWEEN TWO PINS IN TENTHS C C ON EXIT: THE ROUTINE RETURNS THE INTEGER VALUE FOR THE C INSULATION LENGTH IN TENTHS C C ERROR CONDITIONS: C C NONE C C SPECIAL NOTES: C C NOTE THAT THE DISTANCES HERE ARE SPECIFIED IN UNITS OF ONE-TENTH INCH. C C SUBROUTINES CALLED: C C NINT MOD (INTERNAL F4P ROUTINES) C C PAGE 3 - ISLACK - DATA STORAGE DESCRIPTIONS. C C CALLING PARAMETERS: C INTEGER I !DISTANCE BETWEEN PINS C C PARAMETER STATEMENTS C INCLUDE 'WIRCOM.FTN' INCLUDE 'PARAM.COM' C C LOCAL VARIABLE AND ARRAY DEFINITIONS: C INTEGER J !DUMMY VARIABLE C C COMMON AREAS C C C LOCAL VARIABLE AND ARRAY INITIALIZATION: C C C PAGE 4 - ISLACK C C J=I+NINT(10.*SLACK) ISLACK=J+MOD(J,2) RETURN END