1
0
mirror of https://github.com/PDP-10/its.git synced 2026-03-07 19:40:48 +00:00
Files
PDP-10.its/src/wl/mpg216.502
2018-05-05 19:19:09 +02:00

715 lines
16 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
;<WIRELIST>MPG216.FAI.9, 15-NOV-75 19:03:46, EDIT BY HELLIWELL
.ADD(ALLLOCS,MPG216,LM216V)
MDWL,<
.ADD(ALLWW,MPG216,M216TV)
>;MDWL
;Note! These .ADD's must be outside of block structure
BEGIN MPG216
;THE TRANSFER VECTOR FOR THE AUGAT 8136 PG216-180 BOARD
^LM216V:
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 CPOPJ ;LOCFUK - FIXUP OLD NOMEN
>;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#/] ;WIRELISTER BODY CUE
[ASCIZ/#LJ#/] ;WIRELISTER CONNECTOR BODY CUE
>;MWL
CHECK LM216V,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__<POINT 3,,20>-=18 ;PANEL NUMBER
%DIPG__<POINT 3,,23>-=18 ;DIP GROUP
%DIPS__<POINT 6,,29>-=18 ;DIP SLOT
%DIPOF__<POINT 6,,35>-=18 ;DIP OFFSET
%CNPPNL__<POINT 3,,20>-=18 ;PANEL NUMBER (MUST BE SAME AS DIP)
%CNPG__<POINT 3,,23>-=18 ;CONN GROUP ( " " )
%CNPJK__<POINT 1,,26>-=18 ;CONNECTOR JACK BIT
%CONP__<POINT 9,,35>-=18 ;CONNECTOR PIN # (AND JACK NUMBER <PINS 1-2*26>)
GPINS__400 ;NOMEN FOR "G" PINS ON BOARD STARTS AT 400
; 401 IS "G1", ETC.
MXPNL__5 ;max number of panels wrappable at once
NGRPS__6 ;PG216-180 HAS 6 GROUPS
GRPCOL__5 ;# COLS IN GROUP
GRPROW__6 ;# ROWS IN GROUP
GRPDIP__GRPROW*GRPCOL ;# DIPS IN GROUP
MXCNP1__=40 ;MAX # CONNECTOR PINS FOR J1
MXCNP2__=50 ;MAX # CONNECTOR PINS FOR J2
J1TO2__2 ;J1 IS OFFSET 2 PINS TO RIGHT OF J2
JACKSZ: MXCNP1
MXCNP2
;The 8136-PG216 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-X8136-PG216 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
______|_____|_____|_____|_____|_____|
| 20 23 26 35
| 3 | 3 | | | 9 |
|_____|_____|___|_|_________________|
| | | |
< | | | |------------>PIN
| | |
| | |-------------------JACK 01, 12
| |
< | |--------------------------># GROUP
|
< |-------------------------------># PANEL

LCINIT: MOVE T,[L2NSUB,,L2N]
BLT T,L2N+L2NLEN+N2LLEN-1
MOVEI T,N2LMAX
MOVEM T,MAXN2L
POPJ P,
PRNLOC: JUMPE A,CPOPJ
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,[%CNPPNL,,A] ;PANEL NUMBER
PUSHJ P,PUTDEC ;PANEL #
LDB T,[%CNPG,,A] ;GROUP LETTER
PUTBYT @N2L(T) ;CONVERT TO LETTER AND PRINT
PUTBYT "J"
LDB T,[%CNPJK,,A]
AOS T
PUSHJ P,PUTDEC
MOVEI TT,"-"
POPJ P,
PRNPIN: LDB T,[%%PINN,,A]
JUMPL A,PRNPN1
CAIGE T,GPINS
JRST PRNPN1
SUBI T,GPINS
PUTBYT "G"
SKIPA TT,[1]
PRNPN1:
MWL,<
MOVEI TT,2
MOVEM TT,NDIG
JRST NPUTDEC
>;MWL
MDPC,< JRST PUTDEC
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,=20 ;BOARD HAS 20 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
;Slots are numbered right to left, so offset is subtracted
SUB TTT,C ;DOES OFFSET OVERFLOW GROUP?
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: PUSH P,A
MOVEI A,[[ASCIZ /#L#./]
0]
PUSHJ P,LNPARS
JRST GTSL0
JRST GTSL1
SETZ TT,
PUSHJ P,GATLOC
JRST GTSL0
CAIE CHRREG,"@"
JRST GTSL2
PUSH P,TT
GETNUM
POP P,TT
JUMPE NUMREG,GTSL0
DPB NUMREG,[%DIPOF,,TT]
GTSL2: MOVEM TT,DESTIN
AOS -1(P)
GTSL1: AOS -1(P)
GTSL0: POP P,A
POPJ P,
GATLOC: SKIPE A,ARG1
CAILE A,MXPNL
POPJ P,
DPB A,[%DIPPNL,,TT]
SKIPE A,ARG2
CAILE A,NGRPS
POPJ P,
DPB A,[%DIPG,,TT]
SKIPE A,ARG3
CAILE A,GRPDIP
POPJ P,
DPB A,[%DIPS,,TT]
JRST CPOPJ1
MD,<
GTCONP: SETZM DESTIN
PUSH P,A
MOVEI A,[[ASCIZ /#LJ#-#/]
0]
PUSHJ P,LNPARS
JRST GTCON0
JRST GTCON1 ;NULL INPUT
PUSHJ P,GATCON
JRST GTCON0
MOVE A,ARG4
ADDI A,JACKSZ-1(A)
EXCH A,ARG6
CAMLE A,@ARG6
JRST GTCON0
DPB A,[%CONP,,TT]
HRRZM TT,DESTIN ;LH IS B-R-S, 0 FOR THIS BOARD
AOS -1(P)
GTCON1: AOS -1(P)
GTCON0: POP P,A
POPJ P,
>;MD
GATCON: SETZ TT,
SKIPE A,ARG1
CAILE A,MXPNL
POPJ P,
DPB A,[%CNPPNL,,TT]
SKIPE A,ARG2
CAILE A,NGRPS
POPJ P,
DPB A,[%CNPG,,TT]
SKIPE A,ARG4
CAILE A,2
POPJ P,
SOS A
DPB A,[%CNPJK,,TT]
TLO TT,MAPCON
JRST CPOPJ1
MWL,<
GETLOC: MOVEI A,[[ASCIZ /#L#/]
[ASCIZ /#L#@#/]
[ASCIZ /#LJ#/]
0]
PUSHJ P,LNPARSE
POPJ P,
POPJ P,
CAIN A,2
JRST GATCON
SETZ TT,
MOVE T,ARG5
CAIN A,1 ;THE OFFSET CASE
DPB T,[%DIPOF,,TT]
JRST GATLOC
RAYDIP: TLNN A,MAPSOC
PUSHJ P,FUCKUP
PUSHJ P,PRNLOC
LDB T,[%%PINN,,A] ;DIP PIN NUMBER
CAIL T,GPINS
JRST RAYDP1
PUTSTR [ASCIZ / /] ;3 SPACES
MOVEI TTT,2
MOVEM TTT,NDIG
JRST NPUTDEC
RAYDP1: SUBI T,GPINS
PUTSTR [ASCIZ / /] ;2 SPACES
CAIGE T,=10
PUTBYT 40
PUTBYT "G"
JRST PUTDEC
FOR NAME IN (AUGDIP:,CPARTP:,CONGIN:,SEQLOC:)
<NOTYET(NAME)
>
>;MWL
CPNSEP: LDB TT,[%CONP,,T]
MOVEI TTT,0
DPB TTT,[%CONP,,T]
POPJ P,
CPNMER: SKIPN T
SKIPE TT
JRST CPNMR1
MOVEI TT,1 ;T,TT=0 MEANS INITIALIZE TO FIRST
DPB TT,[%CNPG,,T] ;JACK STARTS OUT AT ZERO, NO INITIALIZATION
DPB TT,[%CNPPNL,,T]
CPNMR1: LDB TTT,[%CNPJK,,T]
CAMG TT,JACKSZ(TTT)
JRST CNPMR1
MOVEI TT,1 ;CARRY INTO JACK, FROM PIN#
AOS TTT
DPB TTT,[%CNPJK,,T]
CAIGE TTT,2
JRST CNPMR1
LDB TTT,[%CNPG,,T]
AOS TTT
DPB TTT,[%CNPG,,T]
CAIGE TTT,NGRPS
JRST CNPMR1
MOVEI TTT,1
DPB TTT,[%CNPG,,T]
LDB TTT,[%CNPPNL,,T]
AOS TTT
DPB TTT,[%CNPPNL,,T]
CNPMR1: DPB TT,[%CONP,,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 PG216'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__=8100 ;8.100" VERTICAL SPACING BETWEEN PANELS
GXOFST__=2700 ;2.700" GROUP HORIZONTAL SPACING
XDIPSP__ =500 ; .500" DIP HORIZONTAL SPACING
YDIPSP__=1100 ;1.100" DIP VERTICAL SPACING
XPINSP__ =300 ; .300" DIP PIN HORIZONTAL SPACING
YPINSP__ =100 ; .100" DIP PIN VERTICAL SPACING
GNDXOF__ =100 ; .100" X OFFSET FOR TWP GROUND PINS
BRDGND__=10 ; PIN 10 IS DEDICATED GROUND
BRDPWR__=20 ; PIN 20 IS DEDICATED POWER
;CONNECTORS
JXOFST__ =0 ; .000" X OFFSET FOR JACKS
JYOFST__=6700 ;6.700" 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
^^M216TV__. ;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*GRPDIP*NGRPS ;DIPSLT_NROWS*NCOLS (USED FOR UML ONLY)
SETPAD(MXPNL*NGRPS*2) ;NPADS (USED FOR UML ONLY)
XWD -MXCNP2,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 M216TV,WTVLEN
;TABLES FOR MAPIT
;**************************************** DIP PINS
DEFINE XY(X,Y)
< X*XPINSP,,Y*YPINSP
>
PINTAB:
FOR Y_9, 0, -1
< XY(0,Y) ;first col of pins is on left (DIP side)
>
FOR Y_0, 9, 1
< XY(1,Y) ;2nd col is on right, +X is to right
>
;**************************************** DIP LOCATIONS
DEFINE XY(X,Y)
< X*XDIPSP,,Y*YDIPSP
>
DIPLOC:
FOR Y_<GRPROW-1>, 0, -1
<FOR X_<GRPCOL-1>, 0, -1
< XY(X,Y)
>>
;**************************************** SCOTCH-FLEX PINS
DEFINE XY(X,Y)
< X*PXPNSP,,Y*PYPNSP
>
FLXPIN:
FOR Y_1, 0, -1
<FOR X_0, <MXCNP2/2-1>, 1
< XY(X,Y)
>>
MAPIT: JUMPL A,CONMAP
PUSHJ P,MAPLOC ;MAP DIP LOCN
POPJ P, ;BAD LOCN
LDB TTT,[%%PINN,,A] ;PIN #
CAIL TTT,GPINS ;WANT POWER OR GROUND?
JRST PINPGP ;YES, RETURN FIX IT UP
MAPIT0: ADD T,PINTAB-1(TTT) ;ADD EXTRA XY FOR PIN
SETZ TT,
CAIN TTT,BRDGND
MOVSI TT,GND
CAIN TTT,BRDPWR
MOVE TT,[PWR,,=500] ;+5.00 VOLTS
SETZ TTT, ;FLUSH AWAY THOSE GOODIES
JRST CPOPJ1
; TWP GROUND PINS FOR SOCKET
PINPGP: ADD T,PINTAB-GPINS-1(TTT)
ADD T,[GNDXOF,,] ;EXTRA TWP GND PINS ARE .1 TO RIGHT
MOVSI TT,GND
PINPG1: SETZ TTT,
JRST CPOPJ1
;Convert PIN-SPEC in A into DIP X,Y locn (T)
;Y IS + UP
;X IS + RIGHT (FROM DIP SIDE)
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 ;TTT gets <MXPNL-panel>, make 1 on top
IMULI TTT,PNLOFT ;VERTICAL OFFSET OF PANEL
LDB TT,[%DIPG,,A] ;GROUP LETTER
LDB T,[%DIPS,,A] ;DIP #
JUMPE T,CPOPJ
CAILE T,GRPDIP ;TOO MANY DIPS FOR SLOT
POPJ P,
MOVE T,DIPLOC-1(T) ;XY OF DIP SLOT
IMULI TT,GXOFST ;X FUDGE FOR GROUP, group A to left
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 TTT,[%CNPPNL,,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,[%CNPG,,A] ;GROUP LETTER
IMULI TT,GXOFST ;X FUDGE FOR GROUP
HRLI TTT,-GXOFST(TT)
LDB TT,[%CNPJK,,A]
ADDI TTT,JYOFST ;VERT OFFSET TO J2
SKIPG TT
ADDI TTT,JYOFS1 ; OFFSET TO J1
LDB T,[%%PINN,,A]
JUMPE T,CPOPJ
JUMPE TT,[CAILE T,MXCNP1 ;MAKE J1 CORRESPOND TO J2'S 50 PINS
POPJ P,
CAILE T,MXCNP1/2 ;IN BOTTOM ROW?
ADDI T,<MXCNP2-MXCNP1>/2 ;J2'S BOTTOM ROW STARTS +5 PINS W.R.T. J1
ADDI T,J1TO2 ;AND J1 IS DISPLACED 2 PINS RIGHT
JRST .+1]
CAILE T,MXCNP2
POPJ P,
SETZ TT,
CAILE T,MXCNP2/2 ;BOTTOM ROW IS GND
MOVSI TT,GND
MOVE T,FLXPIN-1(T) ;X,Y OF PIN
ADD T,TTT
SETZ TTT,
JRST CPOPJ1
PAKSIZ: SKIPE ILLPAK(B)
POPJ P,
;Check if package sticks outside of a single group
LDB T,[%DIPS,,A] ;STARTING DIP SLOT
SOS T
IDIVI T,GRPCOL ;DIP ROW, DIP COL #
SUB T,PAKHGT(B)
SUB TT,PAKWID(B) ;HORIZONTAL EXTENT OF ADAPTOR
JUMPL T,CPOPJ
JUMPL TT,CPOPJ
CAIGE T,GRPROW
CAIL TT,GRPCOL ;MUST BE WITHIN GROUP HORIZONTALLY
POPJ P,
JRST PAKDIM
;Define illegal package types in this board
ILLPAK: BLOCK NPACK
FOR @' I IN (22,24,36,40,48,64)
<ORG ILLPAK+K.'I  -1
>
ORG ILLPAK+NPACK
;T = UML-ROW-#,,UML-COL-#
COMMENT 
Map of the UML page printout
UML COL
1 2 ... NCOLS
UML ROW ------------------------------
1 F26 F21 ... F1
2 F27 F22 ... F2
...
5 F30 F25 ... F5
6 E26 E21 ... E1
...
NCLPRP

MAPRC: HLRZ TT,T ;(1,1) IS DIP IN UPPER LEFT HAND CORNER
SOJL TT,CPOPJ
CAML TT,NROWS ;MAX # ROWS (FOR PRINTOUT OF ALL PANELS)
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]
;UML row = F(panel-#, group, col-within-group)
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#
MOVNS TT
ADDI TT,NGRPS ;GROUP F IS FIRST
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: SOS T ;STARTS AT 1 PANEL#*NGRPS+GROUP+JACK
LDB TTT,[POINT 1,T,35] ;THE JACK BIT
CAMLE TT,JACKSZ(TTT)
JRST [ SETZ T,
POPJ P,]
MOVSI TTT,MAPCON(TT) ;PIN# IN LH
DPB T,[%CNPJK,,TTT]
LSH T,-1
IDIVI T,NGRPS
AOS TT
DPB TT,[%CNPG,,TTT]
AOS T
DPB T,[%CNPPNL,,TTT]
MOVE T,TTT
POPJ P,
FPWR: CAIE B,=500 ;+5.00V??
JRST FPWRE
LDB T,[%%PINN,,A]
MOVEI B,BRDPWR
DPB B,[%%PINN,,A]
TLO A,MAPSOC
JUMPL A,FPWRC
POPJ P,
FPWRE: SETZ A,
POPJ P,
FPWRC: LDB TT,[%CNPJK,,A] ;J1 OR J2?
JUMPN TT,FPWRC1 ;J2
CAILE T,MXCNP1/2 ;SECOND ROW J1?
ADDI T,<MXCNP2-MXCNP1>/2 ;YES, ADJUST TO NUMBERING OF 2ND ROW J2
ADDI T,J1TO2
FPWRC1: CAILE T,MXCNP2 ;LEGAL?
JRST FPWRE
SOS T
IDIVI T,MXCNP2/2 ;TREAT ROW 2 AS ROW 1
DEFINE FOO(N,SLOT)
<REPEAT N,<SLOT>>
MOVE T,(T)[ FOO(3,1) ;1-3
FOO(5,2) ;4-8
FOO(5,3) ;9-13
FOO(5,4) ;14-18
FOO(7,5)] ;19-25
DPB T,[%DIPS,,A]
SETZ T,
DPB T,[%DIPOF,,A]
POPJ P,
FGND: JUMPL A,FGNDC
MOVEI B,BRDGND
DPB B,[%%PINN,,A]
TLO A,MAPSOC
POPJ P,
FGNDC: LDB TT,[%CNPJK,,A]
HRRZ TT,JACKSZ(TT)
ASH TT,-1
LDB T,[%%PINN,,A]
CAMG T,TT
ADD T,TT
DPB T,[%%PINN,,A]
TLO A,MAPSOC
POPJ P,
FOR NAME (GNDCLR:,WAGGND:,GNDOUT:,VCCOUT:)
<NOTYET(NAME)
>
>;MWL
>;MDWL
BEND MPG216