1
0
mirror of https://github.com/PDP-10/its.git synced 2026-03-27 02:24:15 +00:00
Files
PDP-10.its/src/draw/lg411.209
2018-05-05 19:19:09 +02:00

1216 lines
26 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.
SUBTTL LG411 & LG434 -- PLUGS INTO DEC STYLE BACKPLANE
BEGIN LG411
;TRANSFER VECTOR
^LG411V: JRST LCI411 ;FOR LG411
JRST LOCOUT
MDPC,<
JRST CSLTLP
JRST GTSLTL
MD,<
JRST GTCONP
JRST CSLTLD
>;MD
>;MDPC
MWL,<
JRST WLOCOUT
JRST LOCPNC
JRST LOCPNW
JRST PRCNPN
JRST GETLOC
JRST PADPRT
JRST RAYDIP
JRST RAYCON
>;MWL
[ASCIZ/#LL#/]
MDPC,< [ASCIZ/CONNECTOR PIN ((#LL#)LL# OR (#LL#)"J"#-#)?/]
[ASCIZ/DIP LOCATION ((#LL#)"Z"#?/]
>;MDPC
MWL,< [ASCIZ/DIP LOCATION "Z"#?/]
[ASCIZ/CONNECTOR LOC (L OR "J"#)?/]
>;MWL
CHECK LG411V,LTVLEN
^LG434V: JRST LCI434 ;FOR LG434
JRST LOCOUT
MDPC,<
JRST CSLTLP
JRST GTSLTL
MD,<
JRST GTCONP
JRST CSLTLD
>;MD
>;MDPC
MWL,<
JRST WLOCOUT
JRST LOCPNC
JRST LOCPNW
JRST PRCNPN
JRST GETLOC
JRST PADPRT
JRST RAYDIP
JRST RAYCON
>;MWL
[ASCIZ/#LL#/]
MDPC,< [ASCIZ/CONNECTOR PIN ((#LL#)LL# OR (#LL#)"J"#-#)?/]
[ASCIZ/DIP LOCATION ((#LL#)"Z"#?/]
>;MDPC
MWL,< [ASCIZ/DIP LOCATION "Z"#?/]
[ASCIZ/CONNECTOR LOC (L OR "J"#)?/]
>;MWL
CHECK LG434V,LTVLEN
L2NSUB: BLOCK L2NLEN
N2LSUB: REPEAT N2LLEN, < "?"
>
EN2L_.
NNN_1
FOR I IN(A,B,C,D,E,F,H,J,K,L,M,N,P,R,S,T,U,V,W,X,Y,Z)
< L2N2L I,0
>
FOR I IN(G,I,O,Q)
< L2N2L I,1B0
>
N2LMAX_NNN-1
ORG EN2L
STORAGE(IMPURE)
^PARAMS__.
^LGPADS: 0 ;NUMBER OF FAT FINGER PADS (MODULE HEIGHT)
^LGPADL: "A" ;BIGGEST LETTER
^LGSCOT: 0 ;NUMBER OF "SCOTCHFLEX" CONNECTORS
MWL,<
^LGDIPL: @. ;POINTER TO DIPLOC TABLE
^LGFLXT: @. ;POINTER TO FLXTYP TABLE
^LGFLXL: @. ;POINTER TO FLXLOC TABLE
^LGFLXC: @. ;POINTER TO FLXCRD TABLE
^LGEDGC: @. ;POINTER TO EDGCRD TABLE
>;MWL
^PARAMX__.-PARAMS
STORAGE(PURE)
^PAR411: 4 ;NPADS
"D" ;BIGGEST PAD LETTER
7 ;# SCOTCH CONNS
MWL,<
0,,DIPLOC-1(TT) ;ACCESS LOCATION FOR DIPSOCKET
0,,@FLXTYP-1(TT) ;ACCESS PIN OFFSET FOR RIGHT SCOTCH CONN
0,,FLXLOC-1(TT) ;ACCESS LOCATION FOR SCOTCH CONN
0,,FLXCRD-1(T) ;ACCESS DIP FOR NEAREST GND/PWR FOR SCOTCH CONN
0,,EDGCRD-1(T) ;ACCESS " " " " EDGE CONN
>;MWL
CHECK PAR411,PARAMX
^PAR434: 2 ;LGPADS
"B" ;LGPADLETTER
6 ;LGSCOTCH
MWL,<
0,,DIPLOD-1(TT) ;LGDIPL
0,,@FLXTYQ-1(TT) ;LGFLXT
0,,FLXLOD-1(TT) ;LGFLXL
0,,FLXCRE-1(T) ;LGFLXC
0,,EDGCRE-1(T) ;LGEDGC
>;MWL
CHECK PAR434,PARAMX
LCI411: SKIPA T,[PAR411,,PARAMS]
LCI434: MOVE T,[PAR434,,PARAMS]
BLT T,PARAMS+PARAMX-1 ;BLT IN THE LOCAL VARS FOR LG411/LG434
LCINIT: MOVE T,[L2NSUB,,L2N] ;BLT PNTR
BLT T,L2N+L2NLEN+N2LLEN-1 ;BLT IN THOSE LETTER-NUMBER CONVERSION TABLES
MOVEI T,N2LMAX
MOVEM T,MAXN2L ;BIGGEST # WE CAN CHANGE TO A LETTER
POPJ P,
;ARGUEMENT IN A, BASHES T
;FORMAT OF ARG:
;BITS
; 18 23 24 29 30 35
; /-----------------------\ IF N IS NON-ZERO THIS IS A DIP SLOT, K IS AN ARBITRARY LETTER,
; | | | AND N IS THE 3 DIGIT SLOT #. OTHERWISE THIS IS A CONNECTOR
; | K | N | LOC FORM: IF K IS GREATER THAN OR EQUAL TO 10 AND NOT THE CODE
; | | | FOR U, THEN THIS REPRESENTS A SCOTCH-FLEX BODY, AND IS PRINTED
; \-----------------------/ AS "J" FOLLOWED BY THE NUMBER K-10. IF IT IS THE CODE FOR U,
;THEN IT IS THE WILD CONNECTOR BODY AND IS PRINTED AS "U". OTHERWISE, IT IS THE EDGE FINGER
;PADDLE LETTER AND IS PRINTED AS THE LETTER IT CONVERTS TO.
MWL,<
WLOCOUT:
DEC,< TRNE T,BWILD ;IF IT'S WILD
PUTBYT WLDCHR >;DEC ;SAY IT'S WILD
>;MWL
LOCOUT: LDB T,[POINT 6,A,23] ;HIGH SIXBIT BYTE IN THE LOW HALF
JUMPE T,CPOPJ ;IF NOTHING THERE, NOTHING
TRNN A,7777 ;CHECK FOR CONNECTOR LOC TYPE
JRST [DEC,< CAME T,L2N+"U"-"A"> ;CONN LOC, IS IT "U"?
CAIGE T,10 ; OR A LLN TYPE?
JRST [ PUTBYT @N2L(T) ;YES, CONVERT TO ASCII AND PRINT
POPJ P,]
PUTBYT "J" ;NO, ITS A JN-N TYPE, PRINT A J
PUTBYT "0"-10(T) ;AND THE EXCESS OVER 10 AS THE FIRST N, PRINT IT
POPJ P,]
PUTBYT @N2L(T) ;DIP LOC, PRINT THE LETTER HE USED JUST FOR LAUGHS
MOVEI T,3 ;110 DIP SLOTS MAKES FOR 3 DIGIT SLOT NUMBERS
MOVEM T,NDIG ;TELL THE DECIMAL PRINT ROUTINE ABOUT IT
LDB T,[POINT 12,A,35] ;GET THE SLOT #
JRST NPUTDEC ;GO PRINT IT
MDPC,<
GTSLTL: PUSHJ P,SLTLN
POPJ P,
JRST CPOPJ1
MOVE NUMREG,"Z"-"A"+L2N
DPB NUMREG,[POINT 6,DESTIN,23]
JRST CPOPJ2
>;MDPC
;CSLTLP, CSLTLD
;TAKES ARG IN A, BASHES A AND T
;ARG FORMAT
;BITS
; 0 5 6 11 12 17 18 21 22 26 27 29 30 35
; /-------------------------------------------------\
; | | F | D | | | | |
; | C |---------------| B | R | H | S |
; | | N | | | | |
; \-------------------------------------------------/
;
;LOCPNC, LOCPNW
;ARGS IN A AND T, BASHES BOTH
;ARG IN A FORMAT
;BITS
; 0 5 6 11 12 17 18 23 24 35
; /-----------------------------------------------\
; | | F | D | | |
; | C |---------------| C | 0 |
; | | N | | |
; \-----------------------------------------------/
;ARG IN T NOT USED IN LOCPNC, AHS BWILD BIT IN RIGHT HALF
;
;PPCNPN
;ARG IN A, BASHES A AND T
;ARG FORMAT
;BITS
; 0 17 18 23 24 35
; /-----------------------------------------------\
; | | | F | D |
; | X | C |---------------|
; | | | N |
; \-----------------------------------------------/
;
;X IS A "DON'T CARE" FIELD
;B IS BAY NUMBER
;R IS RACK LETTER, ENCODED
;H IS BOARD HIGTH MINUS ONE
;S IS SLOT NUMBER
;IF THE ABOVE ARE NOT PROVIDED, IT IS AS A GROUP. H IS ALWAYS 3 FOR AN LG411 OTHERWISE
;C IS THE CONNECTOR BODY SPECIFIER, AND DETERMINES HOW THE REMAINING BITS ARE INTERPERTED
;IF C IS THE CODE FOR U, THE FORM IS "U" FOLLOWED BY THE VALUE OF N AS A NUMBER, WITH THE
; 4000 BIT FORCED TO ZERO (THIS BIT SHOULD ALWAYS BE SET IN THIS FORM. (U#)
;IF C IS THE CODE FOR A, B, C OR D, THAT LETTER IS PRINTED FOLLOWED BY THE LETTER FOR WHICH
; F IS THE CODE, FOLLOWED BY THE VALUE OF D (D SHOULD ALWAYS BE 1 OR 2 IN THIS FORM
; (LL#)
;IF C IS GREATER THAN OR EQUAL TO 10 (OCTAL) AND IS NOT THE CODE FOR U, THIS IS A J#-# FORM
;WHERE THE J AND THE - ARE LITERALS. THE FIRST # IS THE EXCESS OF 10 WHICH C IS AND THE
;SECOND # IS N
;
;CSLTLP TRIES TO PRINT BAY, RACK, SLOT IF IN D, CSLTLD NEVER DOES
MWL,<
LOCPNW:
DEC,< TRNE T,BWILD ;IF IT'S WILD
PUTBYT WLDCHR >;DEC SAY IT'S WILD
LOCPNC: PUSHJ P,LOCOUT ;PRINT THE CONNECTOR BODY LOCATION
MOVS A,A ;PREPARE TO FALL THROUGH TO PRCNPN
>;MWL
MDPC,<
CSLTLP:
MD,< CAML A,[050000,,0] ;IS IT A EDGECONNECTOR PIN?
JRST [ TRNE A,-1 ;NO, DOES BRS EXIST?
PUSHJ P,SLTOUT ;YES, PRINT IT LIKE FOR A DIP
JRST CSLTLD] ;GO PRINT JACK, PIN
PUSHJ P,CSLTOUT ;YES, PRINT BAY RACK SLOT FOR EDGE FINGER
CSLTLD:
>;MD
HLRZ A,A ;FLUSH BRS
PUSH P,A ;SAVE A CLEAN COPY
ANDI A,770000 ;MAKE WILD PIN FORMAT
PUSHJ P,LOCOUT ;SO THAT LOCOUT WILL PRINT IT LIKE A CONN LOC
POP P,A >;MDPC ;GET "ALL" THE BITS BACK
MWL,<
HRRZS T,A ;COPY INTO T, CLEAR SOME CRUD
CAIGE T,10000
JRST [ TRNN T,7700
JRST CSLSFX
JRST CSLLDP] >;MWL
CAIGE T,100000 ;J OR U FORM
JRST CSLLDP ;NO DO LLN (LIKE PADDLES, MAN)
CSLSFX:
DEC,< LSH A,-=12
CAME A,L2N+"U"-"A">;DEC U FORM
PUTBYT "-"
CSSFX1: ANDI T,7777 ;MASK TO THE LAST NUMBER PART
CAIG T,=26
JRST PUTDEC ;GO PRINT IT
POPJ P,
PRCNPN: HRRZS T,A
CAIGE T,10000
TRNE T,7700
CAIL T,100000
JRST CSSFX1
CSLLDP: LDB T,[POINT 6,A,29] ;GET SECOND LETTER
PUTBYT @N2L(T) ;CONVERT TO ASCII AND PRINT
MOVE T,A ;COPY TO T FOR PUTDEC
ANDI T,77 ;MASK TO TRAILING #
JRST PUTDEC ;GO PRINT IT
MDPC,<
MD,<
;READS CONNECTOR PIN SPEC IN THE FORM THAT CSLTLP PRINTS IT IN EXCEPT WITH HALVS SWOPPED,
;AS SHOWN BELOW. BASHES NUMREG AND CHRREG. RETURNS ANSWER IN DESTIN.
;0 SKIP ERROR, 1 SKIP ONLY CR OR STARTS WITH "THERE EXISTS"
;2 SKIPS WIN BUT NO BRS, 3 SKIPS WIN AND BRS.
;MUST EXIT WITH A 12 IN CHRREG TO REALLY WIN.
;BITS
; 0 3 4 8 9 11 12 17 18 23 24 29 30 35
; /-------------------------------------------------\
; | | | | | | F | D |
; | B | R | H | S | C |---------------|
; | | | | | | N |
; \-------------------------------------------------/
;
GTCONP: SETZM DESTIN ;CLEAR ALL FIELDS
GETNUM ;GET FIRST STUFF
LAY,< CAIE CHRREG,TEXIST> ;IF TERMINATOR WAS THERE EXISTS OR
CAIN CHRREG,12 ;IF TERMINATOR WAS LINEFEED
JUMPE NUMREG,CPOPJ1 ;AND NO NUMBER, TAKE 1 SKIP EXIT
JUMPE NUMREG,NOBRS ;BRS STARTS WITH A #
CAIG NUMREG,17 ;IF NUMBER TOO BIG FOR FIELD
PUSHJ P,CHKLET ; OR TERM ISN'T A LETTER
POPJ P, ;LOSE
SKIPGE CHRREG,L2N-"A"(CHRREG) ;YES, CONVERT AND IS IT A GOOD LETTER
POPJ P, ;NO, LOSE
DPB NUMREG,[POINT 4,DESTIN,3] ;BAY
DPB CHRREG,[POINT 5,DESTIN,8] ;RACK
GETNUM ;NEXT STUFF
JUMPN NUMREG,GOTSLT ;IF #, IS SLOT #
PUSHJ P,CHKLET ;TERMINATOR A LETTER?
POPJ P, ;LOSE
SKIPGE CHRREG,L2N-"A"(CHRREG) ;CONVERT AND TEST SECOND L
POPJ P, ;BAD SECOND L
LDB NUMREG,[POINT 5,DESTIN,8] ;GET BACK FIRST L
SUBI CHRREG,-1(NUMREG) ;FIGURE BOARD HIGTH - 1 +1
CAME CHRREG,LGPADS ;WHICH MUST BE 2 (LG434) OR 4 (LG411)
POPJ P, ;WRONG HIGTH, LOSE
GETNUM ;GET NEXT STUFF
JUMPE NUMREG,CPOPJ ;NLL REQUIRES FOLLOWING N
GOTSLT: CAILE NUMREG,77 ;SLOT # SHOULD FIT THE FIELD
POPJ P, ;DOSEN'T, LOSE
DPB NUMREG,[POINT 6,DESTIN,17] ;SLOT
MOVE NUMREG,LGPADS ;THIS BOARD IS (1 OR 3) +1 HIGH
SOS NUMREG
DPB NUMREG,[POINT 3,DESTIN,11] ;HIGTH
NOBRS: PUSHJ P,CHKLET ;LETTER?
POPJ P, ;LOSE, ALL CPIN SPECS BEGIN WITH A LETTER
CAIN CHRREG,"J" ;IS IT A J?
JRST SCOTCH ;YES, GO DO SCOTCH FLEX TYPE INPUT
DEC,< CAIN CHRREG,"U" ;IS IT A U?
JRST UCONN >;DEC ;YES, DO SPECIAL INPUT FORMAT
CAMLE CHRREG,LGPADL ;ELSE IT MUST BE A OR B (OR C OR D FOR LG411)
POPJ P, ;IT'S NOT, LOSE
SUBI CHRREG,"A"-1 ;CONVERT IT
DPB CHRREG,[POINT 6,DESTIN,23] ;PUT IT TO BED
GETNUM ;NEXT
JUMPN NUMREG,CPOPJ ;N IS NOT THE SECOND OF LLN
PUSHJ P,CHKLET ;A LETTER?
POPJ P, ;NO, LOSE
SKIPGE CHRREG,L2N-"A"(CHRREG) ;CONVERT, CHECK GIOQ
POPJ P, ;LOSE
DPB CHRREG,[POINT 6,DESTIN,29] ;PUT AWAY
GETNUM
JUMPE NUMREG,CPOPJ ;THERE MUST BE A #
CAIG NUMREG,2 ;NUMBER MUST BE 1 OR 2
CAIE CHRREG,12 ;TERMINATOR MUST BE <CRLF>
POPJ P, ;LOSE
DPB NUMREG,[POINT 6,DESTIN,35] ;PUT AWAY
GTCNPE: HRROI NUMREG,0 ;-1,,0
TDNE NUMREG,DESTIN ;DID WE GET BRS?
AOS (P) ;YES, EXTRA SKIP
JRST CPOPJ2 ;A WINNER!
SCOTCH: GETNUM ;NEXT STUFF
JUMPE NUMREG,CPOPJ ;NUMBER MUST BE THERE
CAMG NUMREG,LGSCOT ;NUMBER MUST BE 1 THRU 6 OR 7
CAIE CHRREG,"-" ;TERMINATOR MUST BE -
POPJ P, ;LOSE
ADDI NUMREG,10 ;CONVERT TO SPECIAL CODE
DPB NUMREG,[POINT 6,DESTIN,23] ;PUT AWAY
GETNUM
JUMPE NUMREG,CPOPJ ;NUMBER MUST BE THERE
CAIG NUMREG,=26 ;MUST BE 1 THRU 26.
CAIE CHRREG,12 ;TERMINATOR MUST BE END OF LINE
POPJ P, ;LOSE
DEC,<
DEPL12:>;DEC
DPB NUMREG,[POINT 12,DESTIN,35] ;PUT AWAY
JRST GTCNPE ;WINNER, BUT GO SEE HOW BIG OF A ONE
DEC,<
UCONN: MOVE CHRREG,L2N+"U"-"A" ;GET U CODE
DPB CHRREG,[POINT 6,DESTIN,23] ;PUT AWAY
GETNUM
JUMPE NUMREG,CPOPJ ;# MUST BE THERE
CAIG NUMREG,3777 ; MUST BE 1 THRU 3777
CAIE CHRREG,12 ;TERM MUST BE <CRLF>
POPJ P, ;LOSE
IORI NUMREG,4000 ;SET MAGIC BIT
JRST DEPL12 >;DEC ;PUT AWAY AND WIN
>;MD
>;MDPC
MWL,<
;ARG IN G IS 0 THROUGH # OF PADDLES + # OF JACKS - 1, AND
;IS AN INDEX INTO THEM IN SOME RANDOM ORDER TO GET THEM PRINTED. BASHES NOTHING.
PADPRT: TRNN G,777774 ;EDGE FINGER?
JRST [ PUTBYT 40 ;YES
PUTBYT "A"(G) ;PRINT PADDLE
PUTBYT 40 ;MUST BE THREE CHARACTERS, OR AT LEAST USED TO
POPJ P,] ;DONE
PUTBYT "J" ;NO, SCORCH-FLACKS, J# FORM, PRINT THE J
PUTBYT "0"-3(G) ;PRINT THE # AFTER ADJUSTING FOR THE OFFSET OF 3
PUTBYT 40 ;MUST BE THREE CHARACTERS, OR AT LEAST USED TO MUST BE
POPJ P, ;DONE
;READS DIP LOC OR CONNECTOR BODY LOC INTO TT IN FORM THAT LOCOUT PRINTS.
;ALSO BASHES NUMREG AND CHRREG
GETLOC: SETZ TT, ;SO ALL THE FEILDS ARE CLEAN
GETCH
PUSHJ P,CHKLET ;A LETTER
POPJ P, ;SORRY, HAS TO BE A LETTER
CAIN CHRREG,"J" ;A J FORM?
JRST SCARCH ;YEP, GO TO IT
DEC,< CAIN CHRREG,"U" ;A WILD ONE?
JRST [ MOVE TT,L2N+"U"-"A" ;YEP, GET A CODED U
LSH TT,=12 ;PUT IT IN POSITION
GETCH ;JUST TO CHECK TERMINATOR
JRST SCARC1] >;DEC GO ACTUALLY CHECK IT
SKIPGE TT,L2N-"A"(CHRREG) ;CONVERT AND CHECK GIOQ
POPJ P, ;I'M SORRY, YOU DIDN'T BEAT THE REAPER
GETNUM
CAIE CHRREG,12 ;RIGHT TERMINATOR?
POPJ P, ;NO, LOSE
LSH TT,=12 ;PUT LETTER CODE IN ITS PLACE
JUMPE NUMREG,CPOPJ1 ;NO NUMBER IS CONNECTOR LOC
DPB NUMREG,[POINT 12,TT,35] ;PUT NUMBER AWAY
JRST CPOPJ2 ;NUMBER MEANS DIP SLOT
SCARCH: GETNUM
JUMPE NUMREG,CPOPJ ;HAVE TO HAVE A NUMBER
ADDI NUMREG,10 ;ENCODE THE #
DPB NUMREG,[POINT 6,TT,23] ;PUT IT IN ITS PLACE
DEC,<
SCARC1: >;DEC
CAIN CHRREG,12 ;IS THE TERMINATOR <CRLF>?
AOS (P) ;YES, TURN THE FOLLOWING POPJ INTO A POPJ1
POPJ P, ;DONE
;RAYDIP
;ARGS IN A AND T, BASHES BOTH.
;PRINTS DIP SLOT # AS 3 DIGITS, THEN 2 SPACES, THEN PIN # AS 2 DIGITS.
;TOTAL OF 7 COLUMNS.
;ARG IN A FORMAT
;BITS
; 0 17 18 23 24 35
; /-----------------------------------------------\
; ! PIN # ! X ! SLOT # !
; \-----------------------------------------------/
;T HAS L1416 BIT IN THE RIGHT HALF.
;
RAYDIP: PUSH P,T ;SAVE FOR LATER
PUSHJ P,RAYLOC ;TRANSFORM FOR MANY PINNED DIPS
MOVEI T,3 ;RAY FORMAT FOR DIP LOC IS JUST 3 DIGIT #
MOVEM T,NDIG ;ARRANGE TO PRINT IT THAT WAY
LDB T,[POINT 12,A,35] ;GET THE DIP LOC #
PUSHJ P,NPUTDEC ;AND PRINT IT
PUTSTR [ASCIZ / /] ;GET TO THE PIN# COLUMN
MOVEI T,2 ;PIN #S ARE 2 DIGITS
MOVEM T,NDIG ;ARRANGE TO PRINT THEM SO
LDB T,[POINT 6,A,17] ;GET THE PIN #
POP P,A ;GET THAT FLAG WORD BACK
TRNE A,L1416 ;IS IT A 14 PIN DIP IN A 16 PIN SLOT
AOJA T,NPUTDEC ;YES, REAL PIN # IS LOGICAL PIN # + 1, AND PRINT IT
JRST NPUTDEC ;NO, JUST GO PRINT THE PIN #
RAYLOC: CAIN B,=14 ;14 PIN DIP?
JRST RAY14 ;YUP
TRNE T,L1416 ;NOBODY ELSE SHOULD HAVE THIS BIT ON!
JSP TTT,RAYERR ;UGH
CAIN B,=16 ;16 PIN DIP?
JRST RAY16 ;YES
ITS,<
CAIN B,=24 ;24 PIN DIP?
JRST RAY24 ;YES
CAIN B,=28
JRST RAY28
CAIN B,=40
JRST RAY40
>;ITS
JSP TTT,RAYERR ;NO, ERROR!!
RAY14: TRNN T,L1416 ;BETTER HAVE THE ADD 1 TO PIN BIT ON!
JSP TTT,RAYERR
RAY16: POPJ P,
ITS,<
RAY24: LDB T,[POINT 6,A,17] ;PIN NUMBER OF CHIP
CAIG T,=24
JUMPN T,RAY24A
JSP TTT,RAYERR
RAY24A: HLRE T,MAP24-1(T) ;SLOT OFFSET FOR THIS PIN
LDB TT,[POINT 12,A,35]
ADD TT,T
DPB TT,[POINT 12,A,35]
HLRZ T,A ;PIN NUMBER
MOVE T,MAP24-1(T) ;MAP THE PIN NUMBER TO NEW VALUE
DPB T,[POINT 6,A,17]
POPJ P,
RAY28: LDB T,[POINT 6,A,17] ;PIN NUMBER OF CHIP
CAIG T,=28
JUMPN T,RAY28A
JSP TTT,RAYERR
RAY28A: HLRE T,MAP28-1(T) ;SLOT OFFSET FOR THIS PIN
LDB TT,[POINT 12,A,35]
ADD TT,T
DPB TT,[POINT 12,A,35]
HLRZ T,A ;PIN NUMBER
MOVE T,MAP28-1(T) ;MAP THE PIN NUMBER TO NEW VALUE
DPB T,[POINT 6,A,17]
POPJ P,
RAY40: LDB T,[POINT 6,A,17] ;PIN NUMBER OF CHIP
CAIG T,=40
JUMPN T,RAY40A
JSP TTT,RAYERR
RAY40A: HLRE T,MAP40-1(T) ;SLOT OFFSET FOR THIS PIN
LDB TT,[POINT 12,A,35]
ADD TT,T
DPB TT,[POINT 12,A,35]
HLRZ T,A ;PIN NUMBER
MOVE T,MAP40-1(T) ;MAP THE PIN NUMBER TO NEW VALUE
DPB T,[POINT 6,A,17]
POPJ P,
RAYERR: OUTSTR [ASCIZ /RAYTHEON DECK CONVERSION ERROR!
/]
JRST ERRET
RADIX =10
DEFINE MAP(SLOT,PIN)
< -<SLOT-1>,,PIN
>
MAP24: MAP(1,15) ;1
MAP(1,14) ;2
MAP(1,13) ;3
MAP(1,2) ;4
MAP(1,3) ;5
MAP(2,15) ;6
MAP(2,14) ;7
MAP(2,3) ;8
MAP(2,2) ;9
MAP(2,4) ;10
MAP(3,15) ;11
MAP(3,14) ;12
MAP(3,4) ;13
MAP(3,11) ;14
MAP(3,12) ;15
MAP(2,6) ;16
MAP(2,5) ;17
MAP(2,12) ;18
MAP(2,11) ;19
MAP(2,13) ;20
MAP(1,6) ;21
MAP(1,5) ;22
MAP(1,12) ;23
MAP(1,11) ;24
CHECK MAP24,=24
MAP28: MAP(1,15) ;1
MAP(1,14) ;2
MAP(1,13) ;3
MAP(1,2) ;4
MAP(1,3) ;5
MAP(2,15) ;6
MAP(2,14) ;7
MAP(2,3) ;8
MAP(2,2) ;9
MAP(2,4) ;10
MAP(3,15) ;11
MAP(3,14) ;12
MAP(3,3) ;13
MAP(3,2) ;14
MAP(3,6) ;15
MAP(3,5) ;16
MAP(3,4) ;17
MAP(3,11) ;18
MAP(3,12) ;19
MAP(2,6) ;20
MAP(2,5) ;21
MAP(2,12) ;22
MAP(2,11) ;23
MAP(2,13) ;24
MAP(1,6) ;25
MAP(1,5) ;26
MAP(1,12) ;27
MAP(1,11) ;28
CHECK MAP28,=28
MAP40: MAP(1,15) ;1
MAP(1,14) ;2
MAP(1,4) ;3
MAP(1,2) ;4
MAP(1,3) ;5
MAP(2,15) ;6
MAP(2,14) ;7
MAP(2,4) ;8
MAP(2,2) ;9
MAP(2,3) ;10
MAP(3,15) ;11
MAP(3,14) ;12
MAP(3,4) ;13
MAP(3,2) ;14
MAP(3,3) ;15
MAP(4,15) ;16
MAP(4,14) ;17
MAP(4,4) ;18
MAP(4,2) ;19
MAP(4,3) ;20
MAP(4,5) ;21
MAP(4,6) ;22
MAP(4,13) ;23
MAP(4,12) ;24
MAP(4,11) ;25
MAP(3,5) ;26
MAP(3,6) ;27
MAP(3,13) ;28
MAP(3,12) ;29
MAP(3,11) ;30
MAP(2,5) ;31
MAP(2,6) ;32
MAP(2,13) ;33
MAP(2,12) ;34
MAP(2,11) ;35
MAP(1,5) ;36
MAP(1,6) ;37
MAP(1,13) ;38
MAP(1,12) ;39
MAP(1,11) ;40
CHECK MAP40,=40
RADIX 8
>;ITS
;RAYCON
;ARG IN A, BASHES A AND T
;PRINTS "JN MM" WHERE N IS JACK # (ONE DIGIT) AND MM IS 2 DIGIT PIN #
;OR PRINTS "KI L" WHERE K IS PADDLE LETTER, L IS FINGER LETTER, AND I IS THE 1 DIGITSIDE OF CARD #.
;I8 COLUMNS EITHER WAY.
;ARG FORMAT IS THE SAME AS FOR PPCNPN, BUT FUNNINESS ABOUT WHICH HALF.
;
RAYCON: LDB T,[POINT 6,A,23] ;GET THE BODY LOC PART
CAIG T,4 ;EDGE FINGER TYPE?
JRST [ PUTBYT "A"-1(T) ;YES, PRINT PADDLE LETTER
LDB T,[POINT 6,A,17]
PUSHJ P,PUTDEC
PUTSTR [ASCIZ / /]
LDB T,[POINT 6,A,11]
PUTBYT @N2L(T)
POPJ P,] ; AND DONE
PUTSTR [ASCIZ /J/] ;MUST BE SCOTCH-FLEX JACK, PRINT INVARIANT PART
PUTBYT "0"-10(T) ;PRINT JACK #. (ENCODING IS BY ADDING 10 TO THE VALUE OF THE DIGIT
PUTSTR [ASCIZ / /] ;GET TO THE PIN NUMBER FIELD
MOVEI T,2 ;PIN #S ARE 2 DIGITS
MOVEM T,NDIG ;ARRANGE TO PRINT THEM SO
HLRZ T,A ;PUT PIN # IN THE RIGHT AC
ANDI T,7777 ;MASK OFF EXTRAENOUS CRUD
JRST NPUTDEC ;AND PRINT IT
>;MWL
BEND LG411
MWL,<
SUBTTL WIRE WRAP ROUTINES -- LG411 & LG434
BEGIN WLG411
^^WLG411_.
-1 ;ISWW
JRST WIN411 ;WWINIT
JRST MAPRC
JRST MAPPAD
JRST PINMAP
JRST PINBIT
JRST CPOPJ ;VGCON NOT WRITTEN YET
JRST DISTPP ;POINT TO POINT DISTANCE
JRST FPWR
JRST FGND
JRST PGPRTM
JRST PGPRNT
JRST GNDCLR
JRST WAGGND
JRST GNDOUT
JRST VCCOUT
JRST RAYGEN
=6 ;NROWS
=19 ;NCOLS
=0 ;NCLPRG
=110 ;DIPSLT, NOT = NROWS*NCOLS BECAUSE FIRST ROW NOT FULL
SETPAD(=11) ;NPADS
-=18,,1 ;PADLET
-=2,,1 ;PADPIN
=10 ;FRACTN
=200*2 ;0.2" INSULATION AROUND EACH POST
=750*2 ;0.75" BARE WIRE AROUND EACH POST
CHECK WLG411,WTVLEN
^^WLG434_.
-1 ;ISWW
JRST WIN434 ;WWINIT
JRST MAPRC
JRST MAPPAD
JRST PINMAP
JRST PINBIT
JRST CPOPJ ;VGCON NOT WRITTEN YET
JRST DISTPP ;POINT TO POINT DISTANCE
JRST FPWR
JRST FGND
JRST PGPRTM
JRST PGPRNT
JRST GNDCLR
JRST WAGGND
JRST GNDOUT
JRST VCCOUT
JRST RAYGEN
=6 ;NROWS
=9 ;NCOLS
=0 ;NCLPRG
=50 ;DIPSLT, NOT = NROWS*NCOLS BECAUSE FIRST ROW NOT FULL
SETPAD(=5) ;NPADS
-=18,,1 ;PADLET
-=2,,1 ;PADPIN
=10 ;FRACTN
=200*2 ;0.2" INSULATION AROUND EACH POST
=750*2 ;0.75" BARE WIRE AROUND EACH POST
CHECK WLG434,WTVLEN
WIN411: SKIPA T,[PAR411,,PARAMS]
WIN434: MOVE T,[PAR434,,PARAMS]
BLT T,PARAMS+PARAMX-1 ;BLT IN PARAM SET FOR LG411 OR LG434
POPJ P,
PINTAB: FOR Y_=700,0,-=100
< =300,,Y
>
FOR Y_0,=700,=100
< 0,,Y
>
XPINSP__ =300 ; .300" DIP PIN HORIZONTAL SPACING
YPINSP__ =100 ; .100" DIP PIN VERTICAL SPACING
XDIPSP_=500
YDIPSP_=1000
XDIPOR_=400
YDIPOR_=700
^DIPLOC: FOR X_=14,0,-1
< X*XDIPSP+XDIPOR,,5*YDIPSP+YDIPOR
>
FOR Y_4,0,-1
< FOR X_=18,0,-1
< X*XDIPSP+XDIPOR,,Y*YDIPSP+YDIPOR
>
>
; DIP LOCS FOR LG434
^DIPLOD: FOR X_4,=8,1
< X*XDIPSP+XDIPOR,,5*YDIPSP+YDIPOR
>
FOR Y_4,0,-1
< FOR X_0,=8,1
< X*XDIPSP+XDIPOR,,Y*YDIPSP+YDIPOR
>
>
; VERT FLX CONN FOR LG434 (REVERSED FROM LG411)
VFLXPP: FOR X_0,100,100
< FOR Y_0,1200,100
< X,,Y
>
>
; VERT FLX CONN FOR LG411
VFLXPN: FOR X_=100,0,-=100
< FOR Y_=1200,0,-=100
< X,,Y
>
>
HFLXPN: FOR Y_=100,0,-=100
< FOR X_0,=1200,=100
< X,,Y
>
>
; SCOTCHFLEX LOCATIONS, LG411
^FLXLOC:=9600,,=5900
=9200,,=5900
=8800,,=5900
=8400,,=5900
=8000,,=5900
=5900,,=7000
=3000,,=7000
; SCOTCHFLEX CONNECTOR LOCATIONS FOR LG434
^FLXLOD: 0,,=5900
=400,,=5900
=800,,=5900
=1200,,=5900
=1600,,=5900
=3100,,=7000
; POINTERS TO SCOTCHFLEX COORDS FOR LG411
^FLXTYP:FOR X_1,5,1
< VFLXPN-1(T)
>
FOR X_6,7,1
< HFLXPN-1(T)
>
; POINTERS TO FLXPRINT PIN COORDS FOR LG434
^FLXTYQ:FOR X_0,4
< VFLXPP(T)
>
HFLXPN+5(T) ;J6
PADLOC: =100,,=200
=2800,,=200
=5400,,=200
=8100,,=200
PADPIN: FOR X1_0,=1400,=700
< FOR X_0,=500,=100
< X1+X,,0
>
>
MAPIT: JUMPL A,CONMAP
LDB TT,LOW12
JUMPE TT,CPOPJ
CAMLE TT,DIPSLT
POPJ P,
MOVE T,@LGDIPL ;DIPLOC\DIPLOD-1(TT)
LDB TT,B6AT17
TLNE A,MAPPWR!MAPGND ;WANT POWER OR GROUND?
JRST PINPGP ;YES, RETURN FIX IT UP
CAIN B,=16 ;16 PIN DIP?
JRST MAPIT0 ;NO, DON'T NEED TO FUTZ AROUND
ITS,<
CAIN B,=24 ;24 PIN CHIP?
JRST MAP24P
CAIN B,=28
JRST MAP28P
CAIN B,=40
JRST MAP40P
>;ITS
CAIE B,=14 ;14 PIN CHIP?
POPJ P, ;??? I GIVE UP
ADDI TT,1
ADD A,[1,,0]
TLO A,PLUS1
MAPIT0: ADD T,PINTAB-1(TT) ;ADD EXTRA XY FOR PIN
SETZB TT,TTT ;FLUSH AWAY THOSE GOODIES
JRST CPOPJ2
ITS,<
;I WOULDN'T WISH THIS ON . . .
MAP24P: ADD T,M24PIN-1(TT) ;ADD X,Y OFFSET FOR 24 PIN CHIPS (GIVES SOCKET PIN #)
SETZB TT,TTT
JRST CPOPJ2
MAP28P: ADD T,M28PIN-1(TT) ;ADD X,Y OFFSET FOR 28 PIN CHIPS (GIVES SOCKET PIN #)
SETZB TT,TTT
JRST CPOPJ2
MAP40P: ADD T,M40PIN-1(TT) ;ADD X,Y OFFSET FOR 40 PIN CHIPS (GIVES SOCKET PIN #)
SETZB TT,TTT
JRST CPOPJ2
RADIX =10
DEFINE LP(SLOT,PIN)
< <SLOT-1>*XDIPSP,,<8-PIN>*YPINSP
>
DEFINE RP(SLOT,PIN)
< XPINSP+<SLOT-1>*XDIPSP,,<PIN-9>*YPINSP
>
M24PIN: RP(1,15) ;1
RP(1,14) ;2
RP(1,13) ;3
LP(1,2) ;4
LP(1,3) ;5
RP(2,15) ;6
RP(2,14) ;7
LP(2,3) ;8
LP(2,2) ;9
LP(2,4) ;10
RP(3,15) ;11
RP(3,14) ;12
LP(3,4) ;13
RP(3,11) ;14
RP(3,12) ;15
LP(2,6) ;16
LP(2,5) ;17
RP(2,12) ;18
RP(2,11) ;19
RP(2,13) ;20
LP(1,6) ;21
LP(1,5) ;22
RP(1,12) ;23
RP(1,11) ;24
CHECK M24PIN,=24
M28PIN: RP(1,15) ;1
RP(1,14) ;2
RP(1,13) ;3
LP(1,2) ;4
LP(1,3) ;5
RP(2,15) ;6
RP(2,14) ;7
LP(2,3) ;8
LP(2,2) ;9
LP(2,4) ;10
RP(3,15) ;11
RP(3,14) ;12
LP(3,3) ;13
LP(3,2) ;14
LP(3,6) ;15
LP(3,5) ;16
LP(3,4) ;17
RP(3,11) ;18
RP(3,12) ;19
LP(2,6) ;20
LP(2,5) ;21
RP(2,12) ;22
RP(2,11) ;23
RP(2,13) ;24
LP(1,6) ;25
LP(1,5) ;26
RP(1,12) ;27
RP(1,11) ;28
CHECK M28PIN,=28
M40PIN: RP(1,15) ;1
RP(1,14) ;2
LP(1,4) ;3
LP(1,2) ;4
LP(1,3) ;5
RP(2,15) ;6
RP(2,14) ;7
LP(2,4) ;8
LP(2,2) ;9
LP(2,3) ;10
RP(3,15) ;11
RP(3,14) ;12
LP(3,4) ;13
LP(3,2) ;14
LP(3,3) ;15
RP(4,15) ;16
RP(4,14) ;17
LP(4,4) ;18
LP(4,2) ;19
LP(4,3) ;20
LP(4,5) ;21
LP(4,6) ;22
RP(4,13) ;23
RP(4,12) ;24
RP(4,11) ;25
LP(3,5) ;26
LP(3,6) ;27
RP(3,13) ;28
RP(3,12) ;29
RP(3,11) ;30
LP(2,5) ;31
LP(2,6) ;32
RP(2,13) ;33
RP(2,12) ;34
RP(2,11) ;35
LP(1,5) ;36
LP(1,6) ;37
RP(1,13) ;38
RP(1,12) ;39
RP(1,11) ;40
CHECK M40PIN,=40
RADIX 8
>;ITS
PINPGP: JUMPN TT,CPOPJ
SETZ TTT,
TLNN A,MAPPWR
JRST [ ADD T,[=300,,=800]
MOVSI TT,GND
JRST CPOPJ2]
ADDI T,=800
MOVSI TT,PWR
JRST CPOPJ2
CONMAP: AOS (P)
LDB TT,B6AT23
JUMPE TT,CPOPJ
CAMG TT,LGPADS ;4 OR 2 FOR LG411 \ LG434
JRST [ LDB T,[POINT 6,A,29]
JUMPE T,CPOPJ
CAILE T,=18
POPJ P,
MOVE T,PADPIN-1(T)
ADD T,PADLOC-1(TT)
LDB TT,[POINT 6,A,35]
CAIN TT,1
JRST CNMPWN
CAIE TT,2
POPJ P,
ADDI T,=200
JRST CNMPWN]
SUBI TT,10 ;OFFSET FOR SKOTCH CONNECTORS
SKIPL TT
CAMLE TT,LGSCOT ;LG411=7, LG434=6
POPJ P,
LDB T,LOW12
JUMPE T,CPOPJ
CAILE T,=26 ;PINS ON SKOTCH CONNECTOR
POPJ P,
MOVE T,@LGFLXT ;@FLXTYP\FLXTYQ-1(TT)
ADD T,@LGFLXL ;FLXLOC\FLXLOD-1(TT)
CNMPWN: SETZB TT,TTT
JRST CPOPJ1
PINBIT: PUSHJ P,MAPIT
TDZA TT,TT
SETZ TT,
POPJ P,
PINMAP: PUSHJ P,MAPIT
JRST PINERR
JRST CONERR
JRST CPOPJ1
PINERR: PUSH P,A
TLZ A,777700
PUSHJ P,LOCPIN
JRST CPNER1
CONERR: PUSH P,A
HRL A,A
TRZ A,7777
PUSHJ P,LOCPNC
CPNER1: OUTSTR [ASCIZ/ MAPING ERROR.
/]
POP P,A
POPJ P,
MAPRC: HLRZ TT,T
CAMG TT,NROWS
SKIPG TT
POPJ P,
HRRE T,T
CAMG T,NCOLS
SOSGE T
POPJ P,
IMUL TT,NCOLS
SUB TT,T
SUBI TT,4
CAMG TT,DIPSLT
SKIPG T,TT
POPJ P,
MOVE TT,"Z"-"A"+L2N
DPB TT,[POINT 6,T,23]
JRST CPOPJ1
FPWR: JUMPL A,FPWRC
TLZ A,77!PLUS1!PLUS2
TLO A,MAPPWR
POPJ P,
FPWRC: LDB T,B6AT23
CAMG T,LGPADS ;LG411=4, LG434=2
JRST [ JUMPE T,[ OUTSTR [ASCIZ/PAHRGH!!
/]
JRST ERRET]
MOVE A,@LGEDGC ;EDGCRD\EDGCRE-1(T)
TLO A,MAPPWR
POPJ P,]
SUBI T,10
SKIPL T
CAMLE T,LGSCOT ;7\6
JRST [OUTSTR [ASCIZ/PARGLE!!
/]
JRST ERRET]
MOVE A,@LGFLXC ;FLXCRD\FLXCRE-1(T)
TLO A,MAPPWR
ADDI T,10 ;IN CASE SOME ONE EXPECTS IT
POPJ P,
FGND: JUMPL A,FGNDC
TLZ A,77!PLUS1!PLUS2
TLO A,MAPGND
POPJ P,
FGNDC: LDB T,B6AT23
CAMG T,LGPADS
JRST [ JUMPE T,[ OUTSTR [ASCIZ/GAHRGH!!
/]
JRST ERRET]
MOVE A,@LGEDGC ;EDGCRD\EDGCRE-1(T)
TLO A,MAPGND
POPJ P,]
SUBI T,10
CAMLE T,LGSCOT
JRST [ OUTSTR [ASCIZ/GARGLE!!
/]
JRST ERRET]
MOVE A,@LGFLXC ;FLXCRD\FLXCRE-1(T)
TLO A,MAPGND
ADDI T,10
POPJ P,
;NEAREST SOCKET FOR GND/PWR LG411
^FLXCRD:FOR N IN(=16,=17,=17,=18,=19,=3,=9)
< <<"Z"-"A"+1-4>=12>!N
>
^EDGCRD:FOR N IN(=109,=104,=98,=93)
< <<"Z"-"A"+1-4>=12>!N
>
;NEAREST SOCKET FOR GND/PWR LG434
^FLXCRE:FOR N IN(=6,=7,=7,=8,=9,=3)
< <<"Z"-"A"+1-4>=12>!N
>
^EDGCRE:FOR N IN(=43,=49)
< <<"Z"-"A"+1-4>=12>!N
>
PGPRNT: TDZA TT,TT
PGPRTM: MOVNI TT,1
JUMPL A,PGCPNT
PUSH P,TT ;NOTE - TT CLOBBERED IN DECOUT
PUTBYT "Z"
LDB T,LOW12
PUSHJ P,DECOUT
PUTBYT "("
TLNN A,MAPPWR!MAPGND
JRST NPGPNT
POP P,TT ;UN DO STAK
MOVEI T,"G"
TLNN A,MAPGND
MOVEI T,"V"
PUTBYT (T)
PGPN1: PUTBYT ")"
POPJ P,
PGCPNT: PUSH P,A
HRL A,A
TRZ A,7777
PUSHJ P,LOCPNC
POP P,A
POPJ P,
NPGPNT: LDB T,B6AT17
SKIPE (P) ;WHERE TT GOT STORED
JRST NPGPN1
TLNE A,PLUS1
SUBI T,1
NPGPN1: TLNE A,PLUS2
PUTSTR [ASCIZ/BURP!!/]
PUSHJ P,DECOUT
POP P,TT ;NOW REALLY NEED IT
TLNE A,PLUS1
PUTBYT @1+[ "-"
"+"](TT)
JRST PGPN1
RAYGEN: JUMPL A,RAYRP1
TLNN A,MAPPWR!MAPGND
JRST RAYDIP
MOVEI T,3
MOVEM T,NDIG
LDB T,LOW12
PUSHJ P,NDECOUT
PUTSTR [ASCIZ/ 0/]
MOVEI T,"V"
TLNN A,MAPPWR
MOVEI T,"G"
PUTBYT (T)
POPJ P,
RAYRP1: OUTSTR [ASCIZ/CONNECTOR BECAME GENERATED PIN.
/]
JRST ERRET
MAPPAD: JUMPE T,[ HRREI T,1(F)
PUSHJ P,MAPPA1
ANDCMI T,770000
POPJ P,]
MAPPA1: CAMG T,LGPADS ;4\2
JRST [ LSH T,6
IORI T,(TT)
LSH T,6
IORI T,(TTT)
POPJ P,]
ADDI T,10
SUB T,LGPADS
LSH T,=11
CAILE TT,0
IORI T,-1(TT)
LSH T,1
ADDI T,(TTT)
POPJ P,
FOR NAME IN(GNDCLR,WAGGND,GNDOUT,VCCOUT)
<NAME: OUTSTR [ASCIZ/NAME IS NOT IMPLEMENTED FOR THE AUGAT LG411 BOARD.
/]
JRST ERRET
>
BEND WLG411
>;MWL