%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
