|
|
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 3072 (0xc00)
Types: TextFile
Names: »tmmp3«
└─⟦667bb35d6⟧ Bits:30007480 RC8000 Dump tape fra HCØ.
└─⟦4334b4c0b⟧
└─⟦this⟧ »tmmp3«
(r=algol
r
finis)
begin
integer termno,activeterminals,firstchar;
zone zin,zout(26,1,stderror);
integer procedure createpool(z);
zone z;
begin
integer i;
integer array zia(1:20),sia(1:12);
zone ztem(1,1,stderror);
open(ztem,0,<:tem:>,0);
getzone6(z,zia);
getshare6(ztem,sia,1);
sia(4):= 90 shift 12;
for i:= 0,1,2,3 do sia(8+i):= zia(2+i);
setshare6(ztem,sia,1);
monitor(16,ztem,1,sia);
createpool:= if monitor(18,ztem,1,sia)<>1 then -1 else sia(1);
close(ztem,true)
end createpool;
activeterminals:= 0;
open(zin,8,<:tem:>,0);
open(zout,8,<:tem:>,0);
createpool(zin);
centralwait:
setposition(zin,0,0);
read(zin,termno);
readchar(zin,firstchar);
if firstchar=2 then
begin <* logout *>
activeterminals:= activeterminals-1;
if activeterminals>0 then goto centralwait else goto stopprogram
end else
if firstchar=1 then
begin <* login *>
activeterminals:= activeterminals+1
end else repeatchar(zin);
write(zout,<<dd>,termno,<:,:>);
begin context(termno,10,3);
integer array solution,guess(1:4);
integer i,j,x,n,m,class,character,digitok,digitincluded;
real r;
continue;
systime(1,0,r);
x:= r shift(-12)extract 22;
setcombination:
for i:= 1 step 1 until 4 do
begin
random(x);
solution(i):= x mod 10;
for j:= 1 step 1 until i do
if solution(i)=solution(j) and i<>j then i:= i-1
end;
write(zout,<:master mind program ready<10>:>);
next:
setposition(zout,0,0);
exit(centralwait);
i:= 0;
for class:= readchar(zin,character) while class<>8 and i<4 do
begin <* analyze all characters up to <nl> *>
if class=2 <* digit *> then
begin
i:= i+1;
guess(i):= character-48
end else
if character<>32 <* space *> then
begin
write(zout,<:***syntax error<10>try again<10>:>);
goto next
end
end;
if i=0 then goto next;
if i<4 then
begin
write(zout,<:***guess not complete<10>try again<10>:>);
goto next
end;
for n:= 2,3,4 do
for m:= 1 step 1 until n-1 do
if guess(n)=guess(m) then
begin
write(zout,<:***digit duplicated<10>try again<10>:>);
goto next
end;
write(zout,<: :>);
digitok:= digitincluded:= 0;
for i:= 1,2,3,4 do
begin
for j:= 1,2,3,4 do
if guess(i)=solution(j) then
begin
if i=j then digitok:= digitok+1
else digitincluded:= digitincluded+1
end;
write(zout,<<dd>,guess(i))
end;
write(zout,<: => :>,
false add 43,digitok,
false add 32,4-digitok,
false add 45,digitincluded,
false add 10,1);
if digitok<4 then goto next else
begin
write(zout,<:you got it !!<10>:>);
goto setcombination
end
end;
stopprogram:
end
▶EOF◀