DataMuseum.dk

Presents historical artifacts from the history of:

MIKADOS

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about MIKADOS

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦2e9061761⟧ TextFile

    Length: 2880 (0xb40)
    Types: TextFile
    Notes: Mikados_K
    Names: »CLOCK.K«

Derivation

└─⟦eb89399bc⟧ Bits:30008990 SOM ISFORIG, MEN KUN K-FILER
    └─⟦this⟧ »CLOCK.K« 

Mikados K File

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.

Full view