|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T e
Length: 4575 (0x11df)
Types: TextFile
Names: »edit.dat«
└─⟦db229ac7e⟧ Bits:30007240 EUUGD20: SSBA 1.2 / AFW Benchmarks
└─⟦this⟧ »EUUGD20/AFUU-ssba1.21/ssba1.21E/musbus/Workload/edit.dat«
└─⟦this⟧ »EUUGD20/AFUU-ssba1.21/ssba1.21F/musbus/Workload/edit.dat«
/*
* COBBLED program - test for editing
*
* edit [ chars_per_sec ]
*
* $Header: edit.dat,v 3.3 86/01/30 07:53:17 kenj Beta $
*/
#include <stdio.h>
#include "../../install/signal.h"
#define MEAN 5
#define GRANULE 5
int thres;
int est_mean = MEAN;
main(argc, argv)
int argc;
char *argv[];
{
int onalarm();
if (argc == 2) {
est_mean = atoi(argv[1]);
if (est_mean <= 0) {
fprintf(stderr, "edit: bad mean, reset to %d chars/sec\n", MEAN);
est_mean = MEAN;
}
}
/**
** BEGIN BLOCK OF INSERTED TEXT TO BOOST FILE SIZE
This is some text which has been added to the middle of
the file to increase the file size to the point where it is realistic.
How 'bout some random pascal code?
program elcheapo(input, output);
const
DISPSIZE = 10; { display is DISPSIZE characters long }
SIGN = 1; { sign at display[SIGN] }
NSTART = 2; { number starts is display[NSTART] }
NEND = 9; { . and ends at display[NEND] }
ERRFLAG = 10; { error flag display[ERFLAG] }
type
st = (OK, ERROR);
vt = (INTEGER, REAL);
key = (DOT,PLUS,MINUS,DIV,MULT,EQUAL,ON,OFF,CLEAR,NEG,noop);
number = record value: real;
scale: integer;
vtype: vt;
end;
var
r, m: number;
ukey: integer;
code, lastop: key;
done: boolean;
state: st;
disp: array [1..DISPSIZE] of char;
function power(base, n: integer): integer;
var i, value: integer;
begin
value := 1;
for i := 1 to n do value := value * base;
power := value
end; { power }
procedure getkey(var code: integer);
var c: char;
begin
read(c);
if (c >= '0') and (c <= '9') then code := ord(c) - ord('0')
else
begin if c = '.' then code := 10
else if c = '+' then code := 11
else if c = '-' then code := 12
else if c = '/' then code := 13
else if c = '*' then code := 14
else if c = '=' then code := 15
else if c = 'c' then code := 18
else if c = 'n' then code := 19
else if c = 'o' then
begin read(c);
if c = 'n' then code := 16
else code := 17
end
else code := 20
end;
readln
end; { getkey }
function mapkey(code: integer): key;
begin
if code = 10 then mapkey := DOT
else if code = 11 then mapkey := PLUS
else if code = 12 then mapkey := MINUS
else if code = 13 then mapkey := DIV
else if code = 14 then mapkey := MULT
else if code = 15 then mapkey := EQUAL
else if code = 16 then mapkey := ON
else if code = 17 then mapkey := OFF
else if code = 18 then mapkey := CLEAR
else if code = 19 then mapkey := NEG
else mapkey := noop
end; { mapkey }
begin
done := false;
state := ERROR;
while not done do
begin getkey(ukey);
code := mapkey(ukey);
if (code = ON) or (code = CLEAR) then
begin clear(m);
clear(r);
state := OK;
lastop := noop;
display(r)
end
else if code = OFF then done := true
else if state = OK then
begin if (ukey >= 0) and (ukey <= 9) then
begin if r.vtype = INTEGER then r.value := r.value*10 + ukey
else
begin r.scale := r.scale + 1;
r.value := r.value + ukey / power(10, r.scale)
end;
display(r);
if lastop = EQUAL then lastop := noop
end
else if (code = PLUS) or (code = MINUS) or (code = MULT) or
(code = DIV) then
begin if lastop = noop then m := r
else if lastop <> EQUAL then
begin eval(m, r, lastop);
display(m)
end;
clear(r);
lastop := code
end
else case code of
DOT:
begin if r.vtype = REAL then state := ERROR
else r.vtype := REAL;
display(r)
end;
EQUAL:
begin if (lastop <> noop) and (lastop <> EQUAL) then
begin eval(m, r, lastop);
display(m)
end;
clear(r);
lastop := EQUAL
end;
NEG:
begin r.value := -r.value;
display(r)
end;
end { of case }
end { of else }
end { of while }
end.
** END BLOCK OF INSERTED TEXT TO BOOST FILE SIZE
**/
/* (busy) wait for lock file ... */
while ((f = open("lock", 0)) < 0) sleep(3);
close(f);
signal(SIGALRM, onalarm);
alarm(GRANULE);
while (read(0, &c, 1) == 1) {
if (i % 20 == 0 && thres - i > est_mean * GRANULE)
sleep(rand() & 0x3);
write(1, &c, 1);
write(2, &c, 1); /* copy onto std error */
i++;
if (i > thres) {
pause();
}
}
}
Filler to make 200 lines & 4500 bytes.
This
is
so
boring
you
wouldn't
believe it.
onalarm()
{
thres += est_rate;
signal(SIGALRM, onalarm);
alarm(GRANULE);
}