begin ; !DD11
!Convert data in files DD11%.RAW into more palatable form
string (15)array name(0:255)
byteintegerarray p('A':'F',1:9,'A':'V',1:2)
integer group,slot,pin,side, sym,signal
string (15)signal name
routine read signal name
signal name=""
cycle
readsymbol(sym); exitif sym=' '
signal 14,0,nl if sym=nl
sym=sym-32 if 'a'<=sym<='z'
signal name=signal name.tostring(sym)
repeat
signal=0
cycle
signal=signal+1; signal 15,0,256 if signal=256
exitif name(signal)=signal name
if name(signal)="" start
name(signal)=signal name
name(signal+1)="" unless signal=255
exit
finish
repeat
end
routine read pin name
readsymbol(group); group=group-32 if 'a'<=group<='f'
signal 15,1,group unless 'A'<=group<='F'
sym=nextsymbol
if sym='!' or sym='#' or sym='*' start
readsymbol(slot)
finishelsestart
read(slot)
signal 15,2,slot unless 1<=slot<=9
finish
readsymbol(pin); pin=pin-32 if 'a'<=pin<='v'
signal 15,3,pin if pin<'A' or pin>'V' c
or pin='G' or pin='I' or pin='O' or pin='Q'
read(side)
signal 15,4,side unless side=1 or side=2
readsymbol(sym)
end
routine store information
routine do(integer slot)
byteintegername q
q==p(group,slot,pin,side)
q=signal andreturnif q=0
printsymbol(group); printsymbol(slot+'0')
printsymbol(pin); printsymbol(side+'0'); printstring(": ")
printstring(name(signal)); printstring(" replaces ")
printstring(name(q)); newline; q=signal
end
if 1<=slot<=9 start
do(slot)
finishelseif slot='#' start
do(1); do(9)
finishelsestart
do(1) unless slot='*'
do(9) unless slot='*'
do(slot) for slot=2,1,8
finish
end
routine print slot(integer slot)
printstring("
Slot "); printsymbol(slot+'0'); newline
for group='A',1,'F' cycle
newline
for pin='A',1,'V' cycle
unless pin='I' or pin='G' or pin='O' or pin='Q' start
signal name=name(p(group,slot,pin,1))
printsymbol(group); printsymbol(pin); printstring("1 ")
printstring(signal name); spaces(20-length(signal name))
printsymbol(group); printsymbol(pin); printstring("2 ")
printstring(name(p(group,slot,pin,2))); newline
finish
repeat
repeat
end
routine compare(integer slota,slotb)
integer a,b,ok
ok=1
printstring("Comparing slots "); printsymbol(slota+'0')
printstring(" and "); printsymbol(slotb+'0'); printsymbol(':')
for group='A',1,'F' cycle
for pin='A',1,'V' cycle
for side=1,1,2 cycle
a=p(group,slota,pin,side)
b=p(group,slotb,pin,side)
if a#b start
newline unless ok=0; ok=0
printsymbol(group); printsymbol(slota+'0')
printsymbol(pin); printsymbol(side+'0'); space
printstring(name(a)); newline
printsymbol(group); printsymbol(slotb+'0')
printsymbol(pin); printsymbol(side+'0'); space
printstring(name(b)); newline; newline
finish
repeat
repeat
repeat
if ok#0 start
printstring(" identical
")
finish
end
onevent 9 start
selectoutput(1)
print slot(1); print slot(2); print slot(9)
selectoutput(2)
compare(2,slot) for slot=3,1,8
compare(1,2); compare(1,9)
stop
finish
selectinput(1); selectoutput(1)
name(0)=" unassigned"
name(1)=""
for group='A',1,'F' cycle
for slot=1,1,9 cycle
for pin='A',1,'V' cycle
p(group,slot,pin,1)=0; p(group,slot,pin,2)=0
repeat
repeat
repeat
cycle
read signal name
read pin name and store information until sym=nl
repeat
endofprogram