|
|
DataMuseum.dkPresents historical artifacts from the history of: MIKADOS |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about MIKADOS Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 2880 (0xb40)
Types: TextFile
Notes: Mikados_K
Names: »CLOCK.K«
└─⟦eb89399bc⟧ Bits:30008990 SOM ISFORIG, MEN KUN K-FILER
└─⟦this⟧ »CLOCK.K«
PROGRAM NIC;
(*$G+,R-*)
LABEL 1;
CONST LNGTH=20;
TYPE PARMARRAY=PACKED ARRAY (1..40) OF CHAR;
DIRECTBUF=PACKED ARRAY (1..LNGTH) OF CHAR;
CLOCKRECORD = RECORD
DATE:PACKED ARRAY (1..10) OF CHAR;
TIME:PACKED ARRAY (1..8) OF CHAR
END;
VAR PARM:^PARMARRAY;
CLOCK:^CLOCKRECORD;
TT,OFFSET,I,MIN,SEC,SEC100:INTEGER;
HOWL,ALARM,STOPWATCH:BOOLEAN;
ALARMTIME:PACKED ARRAY (1..8) OF CHAR;
DBUF:DIRECTBUF;
C,CH :CHAR;
PROCEDURE SETUP(VAR BUFFER:DIRECTBUF;LENGTH:INTEGER);
EXTERNAL;
FUNCTION AVAIL:BOOLEAN;
EXTERNAL;
FUNCTION NEXT:CHAR;
EXTERNAL;
PROCEDURE FINIS;
EXTERNAL;
BEGIN
SETUP(DBUF,LNGTH);
C:=' ';
CLEARSCREEN;
ALARM:=CLOCK^.DATE(9)='1';
IF ALARM THEN FOR I:=1 TO 8 DO ALARMTIME(I):=CLOCK^.DATE(I);
GOTOXY(62,1);WRITE('Alarm');
IF ALARM THEN BEGIN GOTOXY(72,1);WRITE(ALARMTIME) END;
GOTOXY(62,2);WRITE('Time');
HOWL:=FALSE;STOPWATCH:=FALSE;
1:IF C<>CLOCK^.TIME(8) THEN
BEGIN
GOTOXY(67,2);
WRITE(CLOCK^.TIME);
C:=CLOCK^.TIME(8);
OFFSET:=TIME;
END;
GOTOXY(76,2);
WRITE((TIME-OFFSET) MOD 100:4);
IF STOPWATCH THEN
BEGIN
IF (TIME<0) AND (TT>0) THEN
SEC100:=SEC100+(32767-TT)+(32767+TIME+2)
ELSE
SEC100:=SEC100+TIME-TT;
TT:=TIME;
SEC:=SEC+SEC100 DIV 100;SEC100:=SEC100 MOD 100;
MIN:=MIN+SEC DIV 60; SEC:=SEC MOD 60;
GOTOXY(60,3);
WRITE(MIN:4,SEC:3,SEC100:3);
END;
IF ALARM THEN IF ALARMTIME<=CLOCK^.TIME THEN HOWL:=TRUE;
IF HOWL THEN WRITE(CHR(7));
IF AVAIL THEN
BEGIN
CH:=NEXT;
CASE CH OF
'S':BEGIN
STOPWATCH:=NOT(STOPWATCH);
IF STOPWATCH THEN BEGIN MIN:=0;SEC:=0;SEC100:=0;TT:=TIME END;
END;
'U':BEGIN GOTOXY(67,2);FOR I:=1 TO 8 DO CLOCK^.TIME(I):=NEXT END;
'C':BEGIN STOPWATCH:=TRUE;TT:=TIME END;
'Q':BEGIN FINIS; WRITE(1/0) END;
'M':BEGIN
GOTOXY(70,3);
IF STOPWATCH THEN
WRITE(MIN:4,SEC:3,SEC100:3);
END;
'A':BEGIN
HOWL:=FALSE;
ALARM:=NOT(ALARM);
CLOCK^.DATE(9):='0';
IF ALARM THEN
BEGIN
CLOCK^.DATE(9):='1';
GOTOXY(72,1);
FOR I:=1 TO 8 DO BEGIN CLOCK^.DATE(I):=NEXT;
ALARMTIME(I):=CLOCK^.DATE(I)
END;
GOTOXY(72,1);WRITE(ALARMTIME)
END;
END;
END;
END;
GOTO 1;
END.