;MPG21.FAI.9, 15-NOV-75 19:03:46, EDIT BY HELLIWELL .ADD(ALLLOCS,MPG21,LMP21V) .ADD(ALLLOCS,PG21,LMP21V) MDWL,< .ADD(ALLWW,MPG21,MP21TV) .ADD(ALLWW,PG21,MP21TV) >;MDWL ;Note! These .ADD's must be outside of block structure BEGIN MPG21 ;THE TRANSFER VECTOR FOR THE AUGUAT 8136 PG21-180 BOARD ^LMP21V: JRST LCINIT ;BOARD INITIALIZATION JRST QUPIN ;CHECKS FOR WILD CONNECTOR BODIES JRST $SLTOUT ;PRINTS CARD LOC (B-R-S) JRST $GETSLT ;READS CARD LOC (B-R-S) JRST PRNLOC ;PRINTS SOCKET, DIP, OR CONNECTOR LOC JRST PRNPIN ;PRINTS SOCKET, DIP, OR CONNECTOR PIN JRST CPNSEP ;SEPARATE CONNECTORS LOC/PIN PARTS FROM 18 BIT FORM JRST CPNMER ;MERGE CONN LOC/PIN PARTS BACK JRST CPNMAP ;MAP CARD LOC, CPIN-LOC INTO BACKPANEL PIN LOC MDWL,< JRST MAPOST > ;CONVERT FROM DIP-LOC/PIN TO POST MDPC,< JRST GTSLTL ;READS (B-R-S) AND BODY LOCN MD,< JRST GTCONP ;READS (B-R-S) AND CONNECTOR PIN JRST LOCFUK ;PATCHUP OLD VERSIONS >;MD >;MDPC MWL,< JRST GETLOC ;READS EITHER DIP LOC, OR CONNECTOR LOC JRST RAYDIP ;PRINTS DIP, OR CONNECTOR LOC IN FORTRAN FORM JRST CPARTP ; (PRINT EDGE PIN TO PARTITION FILE) JRST SEQLOC ;TESTS FOR BODY LOCS BEING SEQUENTIAL JRST CONGIN ;GENERATE NEXT INVENTED PIN TO REPLACE "U" PINS JRST $GTSLTT ;GETSLT, BUT WITH FIRST CHAR IN CHRREG JRST AUGDIP >;MWL [ASCIZ/ #LL#/] ;CUE FOR BOARD SLOT [ASCIZ/ #/] ;CUE FOR BOARD PIN MDPC,< [ASCIZ/ #LJ#-#/] ;CUE FOR CONNECTOR PIN [ASCIZ/ #L#(@#)/] ;CUE FOR BODY LOC [ASCID/1A01/] ;PROTOTYPE FOR BODY LOC >;MDPC MWL,< [ASCIZ/#L#(@#) or #LJ#/] ;WIRELISTER BODY CUE [ASCIZ/#LJ#/] ;WIRELISTER CONNECTOR BODY CUE >;MWL CHECK LMP21V,LTVLEN L2NSUB: BLOCK L2NLEN N2LSUB: REPEAT N2LLEN, < "?" > EN2L__. NNN__1 FOR I IN(A,B,C,D,E,F) < L2N2L I,0 > FOR I IN (G,I,O,Q) < L2N2L I,1B0 > N2LMAX__NNN-1 ORG EN2L ;SOME BYTE POINTERS FOR EXTRACTING FIELDS %DIPPNL__-=18 ;PANEL NUMBER %DIPG__-=18 ;DIP GROUP %DIPS__-=18 ;DIP SLOT %DIPOF__-=18 ;DIP OFFSET ;NOTE - Old format MPG21's have no offset, but the DIP slot was %CONP__-=18 ;CONNECTOR PIN # (AND JACK NUMBER ) %CNPG__-=18 ;*NGRPS+GROUP %CNJK__-=18 ;CONNECTOR JACK BIT MXPNL__5 ;max number of panels wrappable at once NGRPS__6 ;PG21-180 HAS 6 GROUPS GRPCOL__5 ;# COLS IN GROUP GRPROW__6 ;# ROWS IN GROUP MAXDIP__GRPROW*GRPCOL ;# DIPS IN GROUP MAXCNP__=26 ;The 8136-PG21 consists of 180 dip slots, organized into ;6 groups of 30 dips each. ;The groups are labeled A-F, with group A to left ;Withhin a group, slots are numbered: ; 5 4 3 2 1 ; 10 9 .... 6 ; 15 .... 11 ; 20 .... 16 ; 25 .... 21 ; 30 .... 26 ;(All coordinates are from DIP side, assuming Scotchflex conns ; are at the top) COMMENT  AUGAT-8136-PG21 CONNECTOR PIN FORMAT PRINTS AS #LJ#(#) WHERE L IS THE GROUP. THE J IS LITERAL. THE FIRST DIGIT IS THE PANEL AND THE SECOND IS THE JACK. PIN IS LAST ______|_____|_____|_____|_____|_____| | 2223 35 | 5 |1| 12 | |_____ ___|_|_______________________| | | | < | | |------------>PIN | | < | |------------------------->JACK 01, 12 | < |-------------------------------># *NGRPS+GROUP  ;VARIOUS FIXUP ROUTINES MD,< ;T = LOCATION FOR BODY ;(TT= RDVER .LT. 27) LOCFUK: CAIL TT,27 ;OLD VERSIONS HAVE DIFFERENT POPJ P, MOVE TT,NOMTYP ;GAD, THIS IS BLETCHEROUS CAIN TT,PGNOM JRST [ MOVEI TT,1 ;PATCH UP PG21'S TO LOOK LIKE 1 OF MPG21 DPB TT,[%DIPPNL,,T] JRST .+1] LDB TT,[POINT 12,T,35] ;CONVERT MPG21'S LOC TO LOC/OFFSET DPB TT,[%DIPS,,T] SETZ TT, DPB TT,[%DIPOF,,T] POPJ P, >;MD LCINIT: MOVE T,[L2NSUB,,L2N] BLT T,L2N+L2NLEN+N2LLEN-1 MOVEI T,N2LMAX MOVEM T,MAXN2L POPJ P, PRNLOC: JUMPL A,CNLOC LDB TT,[%DIPG,,A] LDB T,[%DIPPNL,,A] ;PANEL NUMBER IOR TT,T JUMPE TT,CPOPJ ;BOTH BANEL AND GROUP NULL? PUSHJ P,PUTDEC ;PANEL # LDB T,[%DIPG,,A] ;GROUP LETTER PUTBYT @N2L(T) ;CONVERT TO LETTER AND PRINT MOVEI T,2 ;SETUP FOR 2 DIGIT NUMBER PRINT MOVEM T,NDIG LDB T,[%DIPS,,A] ;SLOT NUMBER WITHIN GROUP PUSHJ P,NPUTDEC ;PRINT IT OUT MOVEI T,2 ;SETUP FOR 2 DIGIT NUMBER PRINT MOVEM T,NDIG LDB T,[%DIPOF,,A] ;ANY SLOT OFFSET? JUMPE T,PRNLC1 PUTBYT "@" MWL,< PUSHJ P,NPUTDEC > MDPC,< PUSHJ P,PUTDEC > PRNLC1: MOVEI TT,"-" POPJ P, CNLOC: LDB T,[%CNPG,,A] JUMPE T,CPOPJ PUSH P,T+1 SOS T IDIVI T,NGRPS AOS T+1 EXCH T+1,(P) AOS T PUSHJ P,PUTDEC ;PANEL NUMBER POP P,T PUTBYT @N2L(T) ;GROUP LETTER PUTBYT "J" LDB T,[%CNJK,,A] AOS T PUSHJ P,PUTDEC MOVEI TT,"-" POPJ P, PRNPIN: TLNE A,MAPPWR!MAPGND JRST [ MOVEI T,"G" TLNN A,MAPGND MOVEI T,"V" PUTBYT (T) POPJ P,] LDB T,[%%PINN,,A] MWL,< MOVEI TT,2 MOVEM TT,NDIG JRST NPUTDEC > MDPC,< JRST PUTDEC > ;CONVERT PIN-SPEC TO POST-SPEC ;MAPOST (DWL) - CONVERT FROM DIP-LOC,PIN# TO SOCKET-LOC, PIN# ;A = MBIT+PIN#,,LOC ;B = PACKAGE ;Skips if can map, with MAPSOC set. ; Possibly MAPPWR or MAPGND if V or G posts on board ;A = New MBIT+PIN#,,LOC ;B = FLAGS,,PIN CHANGE ; %MPLOC ;LOC WAS CHANGED ; %MPPIN ;PIN WAS CHANGED, DIFFERENCE IN RH (TO CHECK FOR +1) ; %MPPL1 ;PIN NUMBER CHANGED BY 1 (KLUDGE) MDWL,< MAPOST: TLNN A,CRDPIN ;SHOULDN'T BE ON TLOE A,MAPSOC OUTSTR [ASCIZ /PIN ALREADY MAPPED TO POST??? /] JUMPL A,[SETZ B, ;CONNECTOR, NO CHANGE JRST CPOPJ1] PUSH P,C PUSH P,D PUSH P,A LDB D,[%DIPOF,,A] ;OFFSET FIELD WITHIN SOCKET LDB A,[%%PINN,,A] JUMPE A,MAPOS1 MOVEI C,=16 ;BOARD HAS 16 PIN SOCKETS PUSHJ P,MAPPER JRST MAPOSX LDB T,[%DIPS,,(P)] ;NOW OFFSET SLOT MOVEI TT,-1(T) IDIVI TT,GRPCOL ;TTT GETS COL WITHIN ROW, TT ROW SUB TTT,C ;DOES OFFSET OVERFLOW GROUP? SKIPL TTT CAIL TTT,GRPCOL JRST MAPOSX SUB T,C ;Column offset ADD TT,D ;DOES OFFSET OVERFLOW GROUP? CAIL TT,GRPROW JRST MAPOSX IMULI D,GRPCOL ADD T,D DPB T,[%DIPS,,(P)] MAPOS1: SETZ T, DPB T,[%DIPOF,,(P)] ;WITHIN SOCKET OFFSET GOES AWAY DPB A,[%%PINN,,(P)] AOS -3(P) MAPOSX: POP P,A POP P,D POP P,C POPJ P, >;MDWL GTSLTL: SETZM DESTIN GETNUM ;GET PANEL NUMBER CAILE NUMREG,MXPNL ;MAX PANELS IN ONE ASSEMBLY POPJ P, DPB NUMREG,[%DIPPNL,,DESTIN] ;STORE AS PANEL NUMBER CAIN CHRREG,12 ;END OF LINE? JUMPE NUMREG,CPOPJ1 ;YES, AND NULL NUMBER, JUST RETURN JUMPE NUMREG,CPOPJ ;OTHERWISE ZERO IS IN ERROR PUSHJ P,CHKLET ;LETTER TYPED NEXT? POPJ P, ;NO, ERROR SKIPG D,L2N(CHRREG) ;GET NUMBER CORRESPONDING TO LETTER POPJ P, ;NON-EX OR GIOQ!! CAILE D,NGRPS ;LEGAL GROUP LETTER? POPJ P, DPB D,[%DIPG,,DESTIN] ;DEPOSIT AS GROUP LETTER GETNUM ;GET NEXT NUMBER JUMPE NUMREG,CPOPJ ;ZERO, ERROR CAILE NUMREG,=30 ;EXCEEDS MAX SLOT NUMBER WITHIN GROUP? POPJ P, ;YES DPB NUMREG,[%DIPS,,DESTIN] ;DEPOSIT AS SLOT NUMBER CAIE CHRREG,"@" ;ANY SLOT OFFSET? JRST CPOPJ2 ;RETURN HAPPINESS GETNUM DPB NUMREG,[%DIPOF,,DESTIN] JRST CPOPJ2 MD,< GTCONP: SETZM DESTIN GETNUM LAY,< CAIE CHRREG,TEXIST > CAIN CHRREG,12 JUMPE NUMREG,CPOPJ1 ;CARRIAGE RETURN ONLY JUMPE NUMREG,CPOPJ ;ERROR IF NO NUMBER CAILE NUMREG,MXPNL ;MAX PANELS POPJ P, ;ERROR OTHERWISE SOS NUMREG IMULI NUMREG,NGRPS MOVEM NUMREG,DESTIN PUSHJ P,CHKLET ;CHECK FOR LETTER POPJ P, ;BAD LETTER, ERROR SKIPN CHRREG,L2N(CHRREG) POPJ P, ADD CHRREG,DESTIN SETZM DESTIN DPB CHRREG,[POINT 5,DESTIN,22] GETNUM JUMPN NUMREG,CPOPJ ;BETTER NOT BE A NUMBER HERE CAIE CHRREG,"J" ;AND LETTER BETTER BE J POPJ P, GETNUM JUMPE NUMREG,CPOPJ ;BETTER BE A NUMBER HERE CAIN CHRREG,"-" ;TERMINATED BY A - CAILE NUMREG,2 ;AND LESS THAN OR EQUAL TO 2 POPJ P, SOS NUMREG DPB NUMREG,[POINT 1,DESTIN,23] ;TEMP STORAGE FOR CONNECTOR NUMBER GETNUM JUMPE NUMREG,CPOPJ ;BETTER BE A NON ZERO NUMBER CAILE NUMREG,MAXCNP ;LESS THAN 27 POPJ P, DPB NUMREG,[POINT 12,DESTIN,35] CAIE CHRREG,12 ;TERMINATION HAD BETTER BE HERE AND EOL POPJ P, JRST CPOPJ2 ;ALL'S WELL THAT ENDS WELL >;MD MWL,< GETLOC: GETNUM JUMPE NUMREG,CPOPJ ;NON ZERO NUMBER CAILE NUMREG,MXPNL ;PANEL # MAX POPJ P, LSH NUMREG,=15 ;INTO LEFT 3 BITS OF RIGHT HALF HRLM NUMREG,(P) ;INTO LH OF PDL PUSHJ P,CHKLET POPJ P, ;NOT A LETTER SKIPN CHRREG,L2N(CHRREG) POPJ P, DPB CHRREG,[POINT 3,(P),5] ;DEPOSIT GROUP LETTER INTO LH OF PDL GETNUM JUMPN NUMREG,[ CAILE NUMREG,=30 ;HERE FOR DIP LOC POPJ P, ;ONLY 30 DIP SLOTS PER GROUP HLRZ TT,(P) DPB NUMREG,[%DIPS,,TT] CAIE CHRREG,"@" JRST CPOPJ1 HRLM TT,(P) GETNUM HLRZ TT,(P) DPB NUMREG,[%DIPOF,,TT] JRST CPOPJ1] LDB NUMREG,[POINT 3,(P),2] SOS NUMREG IMULI NUMREG,NGRPS LDB TT,[POINT 3,(P),5] ADD NUMREG,TT DPB NUMREG,[POINT 5,(P),4] PUSHJ P,CHKLET ;HERE TO DO CONNECTOR PIN POPJ P, CAIE CHRREG,"J" POPJ P, GETNUM JUMPE NUMREG,CPOPJ CAILE NUMREG,2 ;CHECK FOR LEGAL JACK # POPJ P, SOS NUMREG DPB NUMREG,[POINT 1,(P),5] ;DEPOSIT CONNECTOR NUMBER INTO RH OF LH OF PDL HLRZ TT,(P) TRZ TT,7777 TLO TT,MAPCON ;SIGNAL AS CONNECTOR JRST CPOPJ1 RAYDIP: TLNN A,MAPSOC PUSHJ P,FUCKUP PUSHJ P,PRNLOC PUTSTR [ASCIZ / /] ;3 SPACES TLNE A,MAPPWR!MAPGND JRST RAYDP1 LDB T,[%%PINN,,A] ;DIP PIN NUMBER MOVEI TTT,2 MOVEM TTT,NDIG JRST NPUTDEC RAYDP1: PUTBYT "0" MOVEI T,"G" TLNN A,MAPGND MOVEI T,"V" PUTBYT (T) POPJ P, NOTYET(AUGDIP:,CPARTP:,CPARTP:,SEQLOC:) >;MWL CPNSEP: MOVE TT,T TRZ T,7777 ANDI TT,7777 POPJ P, CPNMER: SKIPN T SKIPE TT CAIA MOVEI TT,1 ;T,TT=0 MEANS INITIALIZE TO FIRST CAILE TT,MAXCNP ;CARRY INTO JACK, FROM PIN# JRST [ ADDI T,10000 MOVEI TT,1 JRST .+1] DPB TT,[001200,,T] POPJ P, QUPIN: SETZ A, ;NO RULE NUMBER POPJ P, ;AND IT'S NOT WILD!! NOTYET(CPNMAP:) MDWL,< MWL,< SUBTTL WIRE WRAP ROUTINES -- MULTIPLE PG21'S comment  All calculations are done from the dip side. (0,0) at lower left hand corner in left handed coordinate system. Dip sockets are arranged in 5x6 groups. These 30 dip groups come in pairs. Each group comes with a pair of Scotch Flex(R) connectors labeled "J1" and "J2". There can be up to 6 30 dip groups on one board. The horizontal spacing between groups is 2.700". There are 5 panels, vertically arranged. The vertical spacing is 7.500". 5A30(8) is at (0,0). 5AJ2-26 is at (500,6100). 5AJ1-26 is at (500,6400). It follows that 5B30(8) is at (2700,0)  UMLCOL__GRPROW ;UML INTERCHANGES ROWS AND COLUMNS UMLROW__GRPCOL PNLOFT__=7500 ;7.500" VERTICAL SPACING BETWEEN PANELS GXOFST__=2700 ;2.700" GROUP HORIZONTAL SPACING XDIPSP__ =500 ; .500" DIP HORIZONTAL SPACING YDIPSP__=1000 ;1.000" DIP VERTICAL SPACING XPINSP__ =300 ; .300" DIP PIN HORIZONTAL SPACING YPINSP__ =100 ; .100" DIP PIN VERTICAL SPACING PXOFST__ =300 ; .300" X OFFSET FOR POWER PIN PYOFST__ =800 ; .800" Y OFFSET FOR POWER AND GROUND PINS JXOFST__ =500 ; .500" X OFFSET FOR JACKS JYOFST__=6100 ;6.100" Y OFFSET FOR J2 JYOFS1__ =300 ; .300" Y OFFSET FROM J2 TO J1 PXPNSP__ =100 ; .100" CONNECTOR PIN VERTICAL SPACING PYPNSP__ =100 ; .100" CONNECTOR PIN HORIZONTAL SPACING ^^MP21TV__. ;TRANSFER VECTOR FOR DOUBLE HEIGHT DEC BOARDS -1 ;FLAGS IF WIRE WRAP OR PC BOARD JRST CPOPJ ;THE INIT ROUTINE JRST MAPRC ;MAP ROW/COLS INTO GENERATED LOCS JRST MAPPAD ;MAP PADDLE/LETTER/SIDE INTO CONN LOCS JRST DISTPP ;DISTANCE CALC ROUTINE JRST FPWR ;FIND A POST WITH POWER JRST FGND ;FIND A POST WITH GND JRST MAPIT ;CONVERT POST INTO X,Y,BITS JRST PAKSIZ ;FIND DIMENSION OF DIP OUTLINE JRST GNDCLR ;? JRST WAGGND ;? JRST GNDOUT ;? JRST VCCOUT ;? MXPNL*UMLROW*NGRPS ;NROWS (USED FOR UML ONLY) UMLCOL ;NCOLS (USED FOR UML ONLY) UMLCOL ;NCLPRG (USED FOR UML ONLY) UMLROW*2 ;NRWPRP (USED FOR UML ONLY) MXPNL*MAXDIP*NGRPS ;DIPSLT_NROWS*NCOLS (USED FOR UML ONLY) SETPAD(MXPNL*NGRPS*2) ;NPADS (USED FOR UML ONLY) XWD -MAXCNP,1 ;PADLET (USED FOR UML ONLY) XWD -1,0 ;PADPIN (USED FOR UML ONLY) =10 ;FRACTN =200*2 ;WRAPMG .200" INSULATION AROUND EACH POST =1500 ;POSTMG .750" BARE WIRE AROUND EACH POST 0 ;NEXTR CHECK MP21TV,WTVLEN ;TABLES FOR MAPIT ;**************************************** DIP PINS DEFINE XY(X,Y) < X*XPINSP,,Y*YPINSP > PINTAB: FOR Y_7, 0, -1 < XY(1,Y) > FOR Y_0, 7, 1 < XY(0,Y) > ;**************************************** DIP LOCATIONS DEFINE XY(X,Y) < X*XDIPSP,,Y*YDIPSP > DIPLOC: FOR Y_5, 0, -1 > ;**************************************** SCOTCH-FLEX PINS DEFINE XY(X,Y) < X*PXPNSP,,Y*PYPNSP > FLXPIN: FOR Y_1, 0, -1 > MAPIT: JUMPL A,CONMAP PUSHJ P,MAPLOC ;MAP DIP LOCN POPJ P, ;BAD LOCN LDB TT,[%%PINN,,A] ;PIN # TLNE A,MAPPWR!MAPGND ;WANT POWER OR GROUND? JRST PINPGP ;YES, RETURN FIX IT UP MAPIT0: ADD T,PINTAB-1(TT) ;ADD EXTRA XY FOR PIN SETZB TT,TTT ;FLUSH AWAY THOSE GOODIES JRST CPOPJ1 ;POWER AND GROUND PIN FOR DIP PINPGP: JUMPN TT,CPOPJ ;THE PIN # SHOULD BE ZERO ADDI T,PYOFST ;FIX THE Y TLNN A,MAPPWR JRST [ MOVSI TT,GND ;HE WANTS GND JRST PINPG1] ADD T,[PXOFST,,0] ;HE WANTS PWR MOVSI TT,PWR PINPG1: SETZ TTT, JRST CPOPJ1 ;Convert PIN-SPEC in A into DIP X,Y locn (T) MAPLOC: LDB TTT,[%DIPPNL,,A] ;GET PANEL NUMBER JUMPE TTT,CPOPJ ;LOSER MOVEI TT,MXPNL ;MAX NUMBER OF PANELS CAILE TTT,MXPNL ;TOO BIG POPJ P, SUBM TT,TTT IMULI TTT,PNLOFT ;VERTICAL OFFSET OF PANEL LDB TT,[%DIPG,,A] ;GROUP LETTER LDB T,[%DIPS,,A] ;DIP # JUMPE T,CPOPJ CAILE T,MAXDIP ;TOO MANY DIPS FOR SLOT POPJ P, MOVE T,DIPLOC-1(T) ;XY OF DIP SLOT IMULI TT,GXOFST ;X FUDGE FOR GROUP MOVSI TT,-GXOFST(TT) ADD T,TT ;LOCATION OF DIP ON BOARD ADD T,TTT ;ADD IN PANEL OFFSET JRST CPOPJ1 ;HERE FOR CONNECTOR PINS CONMAP: LDB TT,[%CNPG,,A] ;PANEL AND GROUP NUMBER JUMPE TT,CPOPJ ;ILLEGAL PANEL NO PUSH P,TT+1 SOS TT IDIVI TT,NGRPS CAIL TT,MXPNL JRST [ POP P,TT+1 POPJ P,] ;TOO BIG A PANEL NUMBER MOVEI T,MXPNL-1 SUBM T,TT ;0 FOR PANEL IMULI TT,PNLOFT ;OFFSET BETWEEN PANELS MOVE T,TT+1 POP P,TT+1 IMULI T,GXOFST HRLZ T,T ;XY OF GROUP ADD T,[JXOFST,,JYOFST] ;LOC OF J2 ADD T,TT ;ADD IN PANEL OFFSET LDB TT,[%CNJK,,A] SKIPG TT ADDI T,JYOFS1 ;ADD OFFSET FOR JACK 1 LDB TT,[%%PINN,,A] ;PIN # JUMPE TT,CPOPJ CAILE TT,MAXCNP ;REASONABLE # OF PINS POPJ P, ADD T,FLXPIN-1(TT) SETZB TT,TTT JRST CPOPJ1 PAKSIZ: SKIPE ILLPAK(B) ;THIS PACKAGE KNOWN TO BOARD? POPJ P, LDB T,[%DIPS,,A] ;STARTING DIP SLOT SOS T IDIVI T,GRPCOL ;T  row with 0 on top, TT  column with 0 to right SUB T,PAKHGT(B) ;Vertical extent-1 SUB TT,PAKWID(B) ;Horizontal extent-1 JUMPL T,CPOPJ JUMPL TT,CPOPJ CAIGE T,GRPROW CAIL TT,GRPCOL ;MUST BE WITHIN GROUP HORIZONTALLY POPJ P, JRST PAKDIM ;GET PACKAGE DIMENSIONS ;Define illegal package types in this board ILLPAK: BLOCK NPACK FOR @' I IN (22,24,36,40,48,64) ORG ILLPAK+NPACK MAPRC: HLRZ TT,T ;(1,1) IS DIP IN UPPER LEFT HAND CORNER SOJL TT,CPOPJ CAML TT,NROWS POPJ P, HRRZS T ;ROW IN TT, COL IN T SOJL T,CPOPJ CAML T,NCOLS ;(0,0) IS NOW IN UPPER LEFT POPJ P, PUSH P,[0] IDIVI TT,NGRPS*GRPCOL ;BREAK INTO PANEL#,COL WITHIN PANEL ADDI TT,1 DPB TT,[%DIPPNL,,(P)] MOVE TT,TTT IDIVI TT,GRPCOL ;BREAK INTO GROUP#,COL# ADDI TT,1 DPB TT,[%DIPG,,(P)] MOVNS T ;LAST UML COL CORRESPONDS TO FIRST DIP ROW MOVEI T,UMLCOL-1(T) IMULI T,UMLROW ;DIPSLOTS COUNT BY UMLROWS, THEN UMLCOLS ADDI T,1(TTT) DPB T,[%DIPS,,(P)] POP P,T JRST CPOPJ1 MAPPAD: MOVE TTT,T ;JACK #, STARTING AT 1 SETZ T, CAIG TT,MAXCNP ;PIN # CAILE TTT,*NGRPS*2 ;2 JACKS PER GROUP POPJ P, SOS TTT DPB TTT,[%CNJK,,T] ASH TTT,-1 AOS TTT DPB TTT,[%CNPG,,T] DPB TT,[%%PINN,,T] TLO T,MAPCON POPJ P, FPWR: CAIE B,=500 ;NOT +5.00V?? JRST [ SETZ A, POPJ P,] TLO A,MAPPWR!MAPSOC ;MAKE IT "V" PIN JUMPL A,FPWRC ;CONNECTOR? TLZ A,$$PINN POPJ P, FGND: TLO A,MAPGND!MAPSOC ;MAKE IT "G" PIN JUMPL A,FGNDC TLZ A,$$PINN POPJ P, FPWRC: ;FIND DIP SLOT CLOSEST TO CONN PIN FGNDC: LDB T,[%CNPG,,A] SOS T IDIVI T,NGRPS AOS T AOS TT TRZ A,-1 DPB T,[%DIPPNL,,A] ;GET THE RIGHT PANEL,GROUP DPB TT,[%DIPG,,A] LDB T,[%%PINN,,A] SOS T IDIVI T,=13 MOVE T,[ REPEAT 4,<2> REPEAT 5,<3> REPEAT 4,<4>](TT) DPB T,[%DIPS,,A] TLZ A,$$PINN POPJ P, FOR NAME (GNDCLR:,WAGGND:,GNDOUT:,VCCOUT:) >;MWL >;MDWL BEND MPG21