begin ; ! Generate DECZAP4 source for ESDL

integer  i,j,k
constintegerarray  cdef(1:4)=150,2900,5400,8150
string (19)AtoV     ="ABCDEFHJKLMNPRSTUV"
string (19)dcb      ="DCB"
string (19)lkjhfe   ="LKJHFE"
string (19)lkjhfedcb="LKJHFEDCB"
string (19)nmlkjhfe ="NMLKJHFE"

integerfn  gioq(integer  actual,lowlimit,highlimit)
integer  virtual
  signal  15 unless  lowlimit<=actual<=highlimit
  virtual=actual-'A'
  signal  15 if  actual='G'; result =virtual   if  actual<'G'
  signal  15 if  actual='I'; result =virtual-1 if  actual<'I'
  signal  15 if  actual='O'; result =virtual-2 if  actual<'O'
  signal  15 if  actual='Q'; result =virtual-3 if  actual<'Q'
                             result =virtual-4
end 

routine  dec connector(integer  rack,pin,side)
  rack=rack-'C'; signal  15 unless  rack>>2=0
  pin=gioq(pin,'A','V')
  side=side-'1'; signal  15 unless  side>>1=0
  side=30 unless  side=0
  pin=pin+22 if  rack>0
  pin=pin+20 if  rack>1
  pin=pin+22 if  rack>2
  write((125*pin+150)//10,0); printsymbol(':')
  write(70+side,0)
end 

routine  pjl(integer  row,subrow,col)
  row=(84-gioq(row,'A','N')*6-gioq(subrow,'A','F'))*10
  signal  15 unless  0<=col<=98
  write((col+3)*10,0); printsymbol(':'); write(row,0)
end 

selectoutput(1)
printstring("Coption NoSignals
Board DecZap4 (
")
for  i='C',1,'F' cycle ;      ! DEC connector CA1 to FV2
  for  j='1',1,'2' cycle 
    for  k=1,1,18 cycle 
      printsymbol(i); printsymbol(charno(AtoV,k)); printsymbol(j)
      printsymbol(','); newline if  k=9 or  k=18
    repeat 
  repeat 
repeat 
for  i='A',2,'C' cycle ;      ! DIN connector 01A to 32C
  for  j=1,1,32 cycle 
    printsymbol('0') if  j<10; write(j,0); printsymbol(i)
    if  j&7=0 start 
      if  i+j='C'+32 then  printsymbol(')') else  printsymbol(',')
      newline
    finishelse  printsymbol(',')
  repeat 
repeat 
printstring("Size 1045:860
Pins(
")
for  i='C',1,'F' cycle 
  for  j='1',1,'2' cycle 
    for  k=1,1,18 cycle 
      dec connector(i,charno(AtoV,k),j)
      printsymbol(','); newline if  k=9 or  k=18
    repeat 
  repeat 
repeat 
for  i='C',2,'E' cycle 
  for  j=36,-1,5 cycle 
    pjl('A',i,j)
    if  j=5 and  i='E' then  printsymbol(')') else  printsymbol(',')
    newline if  j&7=5
  repeat 
repeat 
printstring("NB00:DIL2 at "); pjl('N','B',0); newline
printstring("NB01:DIL2 at "); pjl('N','B',1); newline
!printstring("MB05:TO45 at "); pjl('M','B',5); newline
!printstring("MB10:TO45 at "); pjl('M','B',10); newline
!printstring("MB15:TO45 at "); pjl('M','B',15); newline
for  i=1,1,8 cycle 
  for  j=2,9,65 cycle 
      printsymbol(charno(NMLKJHFE,i)); printsymbol('B')
      printsymbol('0') if  j<10; write(j,0)
      printstring(":DIL16 at ")
      pjl(charno(NMLKJHFE,i),'B',j); newline
  repeat 
repeat 
for  i=1,1,3 cycle 
  for  j=1,12,73 cycle 
    for  k=20,-4,16 cycle 
      printsymbol(charno(DCB,i)); printsymbol('B')
      printsymbol('0') if  j<10; write(j,0)
      printstring(":DIL"); write(k,0); printstring(" at ")
      pjl(charno(DCB,i),'B',j); newline
    repeat 
  repeat 
repeat 
for  i=1,1,9 cycle 
  for  k=20,-4,16 cycle 
    printsymbol(charno(LKJHFEDCB,i)); printstring("B86:DIL")
    write(k,0); printstring(" at ")
    pjl(charno(LKJHFEDCB,i),'B',86); newline
  repeat 
repeat 
for  i=1,1,6 cycle 
    printsymbol(charno(LKJHFE,i)); printstring("B76:DIL16 at ")
    pjl(charno(LKJHFE,i),'B',76); newline
repeat 
printstring("End
Finish
")
endofprogram