|
|
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.
0x000…00e Line {l1=0x0c, l2=»PROGRAM NIC;«, l3=0x0c}
0x00e…01a Line {l1=0x0a, l2=»(*$G+,R-*)«, l3=0x0a}
0x01a…024 Line {l1=0x08, l2=»LABEL 1;«, l3=0x08}
0x024…035 Line {l1=0x0f, l2=»CONST LNGTH=20;«, l3=0x0f}
0x035…063 Line {l1=0x2c, l2=»TYPE PARMARRAY=PACKED ARRAY (1..40) OF CHAR;«, l3=0x2c}
0x063…08f Line {l1=0x2a, l2=»DIRECTBUF=PACKED ARRAY (1..LNGTH) OF CHAR;«, l3=0x2a}
0x08f…0a5 Line {l1=0x14, l2=»CLOCKRECORD = RECORD«, l3=0x14}
0x0a5…0d8 Line {l1=0x31, l2=» DATE:PACKED ARRAY (1..10) OF CHAR;«, l3=0x31}
0x0d8…109 Line {l1=0x2f, l2=» TIME:PACKED ARRAY (1..8) OF CHAR«, l3=0x2f}
0x109…11d Line {l1=0x12, l2=» END;«, l3=0x12}
0x11d…136 Line {l1=0x17, l2=»VAR PARM:^PARMARRAY;«, l3=0x17}
0x136…152 Line {l1=0x1a, l2=» CLOCK:^CLOCKRECORD;«, l3=0x1a}
0x152…17e Line {l1=0x2a, l2=» TT,OFFSET,I,MIN,SEC,SEC100:INTEGER;«, l3=0x2a}
0x17e…1a4 Line {l1=0x24, l2=» HOWL,ALARM,STOPWATCH:BOOLEAN;«, l3=0x24}
0x1a4…1d3 Line {l1=0x2d, l2=» ALARMTIME:PACKED ARRAY (1..8) OF CHAR;«, l3=0x2d}
0x1d3…1eb Line {l1=0x16, l2=» DBUF:DIRECTBUF;«, l3=0x16}
0x1eb…1ff Line {l1=0x12, l2=» C,CH :CHAR;«, l3=0x12}
0x1ff…236 Line {l1=0x35, l2=»PROCEDURE SETUP(VAR BUFFER:DIRECTBUF;LENGTH:INTEGER);«, l3=0x35}
0x236…241 Line {l1=0x09, l2=»EXTERNAL;«, l3=0x09}
0x241…25a Line {l1=0x17, l2=»FUNCTION AVAIL:BOOLEAN;«, l3=0x17}
0x25a…265 Line {l1=0x09, l2=»EXTERNAL;«, l3=0x09}
0x265…27a Line {l1=0x13, l2=»FUNCTION NEXT:CHAR;«, l3=0x13}
0x27a…285 Line {l1=0x09, l2=»EXTERNAL;«, l3=0x09}
0x285…297 Line {l1=0x10, l2=»PROCEDURE FINIS;«, l3=0x10}
0x297…2a2 Line {l1=0x09, l2=»EXTERNAL;«, l3=0x09}
0x2a2…2a9 Line {l1=0x05, l2=»BEGIN«, l3=0x05}
0x2a9…2bf Line {l1=0x14, l2=» SETUP(DBUF,LNGTH);«, l3=0x14}
0x2bf…2ca Line {l1=0x09, l2=» C:=' ';«, l3=0x09}
0x2ca…2da Line {l1=0x0e, l2=» CLEARSCREEN;«, l3=0x0e}
0x2da…2f8 Line {l1=0x1c, l2=» ALARM:=CLOCK^.DATE(9)='1';«, l3=0x1c}
0x2f8…338 Line {l1=0x3e, l2=» IF ALARM THEN FOR I:=1 TO 8 DO ALARMTIME(I):=CLOCK^.DATE(I);«, l3=0x3e}
0x338…358 Line {l1=0x1e, l2=» GOTOXY(62,1);WRITE('Alarm');«, l3=0x1e}
0x358…392 Line {l1=0x38, l2=» IF ALARM THEN BEGIN GOTOXY(72,1);WRITE(ALARMTIME) END;«, l3=0x38}
0x392…3b1 Line {l1=0x1d, l2=» GOTOXY(62,2);WRITE('Time');«, l3=0x1d}
0x3b1…3d2 Line {l1=0x1f, l2=» HOWL:=FALSE;STOPWATCH:=FALSE;«, l3=0x1f}
0x3d2…3ef Line {l1=0x1b, l2=»1:IF C<>CLOCK^.TIME(8) THEN«, l3=0x1b}
0x3ef…3f8 Line {l1=0x07, l2=» BEGIN«, l3=0x07}
0x3f8…40b Line {l1=0x11, l2=» GOTOXY(67,2);«, l3=0x11}
0x40b…424 Line {l1=0x17, l2=» WRITE(CLOCK^.TIME);«, l3=0x17}
0x424…43c Line {l1=0x16, l2=» C:=CLOCK^.TIME(8);«, l3=0x16}
0x43c…44f Line {l1=0x11, l2=» OFFSET:=TIME;«, l3=0x11}
0x44f…457 Line {l1=0x06, l2=» END;«, l3=0x06}
0x457…468 Line {l1=0x0f, l2=» GOTOXY(76,2);«, l3=0x0f}
0x468…48b Line {l1=0x21, l2=» WRITE((TIME-OFFSET) MOD 100:4);«, l3=0x21}
0x48b…4a0 Line {l1=0x13, l2=» IF STOPWATCH THEN«, l3=0x13}
0x4a0…4a9 Line {l1=0x07, l2=» BEGIN«, l3=0x07}
0x4a9…4ca Line {l1=0x1f, l2=» IF (TIME<0) AND (TT>0) THEN«, l3=0x1f}
0x4ca…4fa Line {l1=0x2e, l2=» SEC100:=SEC100+(32767-TT)+(32767+TIME+2)«, l3=0x2e}
0x4fa…504 Line {l1=0x08, l2=» ELSE«, l3=0x08}
0x504…523 Line {l1=0x1d, l2=» SEC100:=SEC100+TIME-TT;«, l3=0x1d}
0x523…532 Line {l1=0x0d, l2=» TT:=TIME;«, l3=0x0d}
0x532…567 Line {l1=0x33, l2=» SEC:=SEC+SEC100 DIV 100;SEC100:=SEC100 MOD 100;«, l3=0x33}
0x567…595 Line {l1=0x2c, l2=» MIN:=MIN+SEC DIV 60; SEC:=SEC MOD 60;«, l3=0x2c}
0x595…5a8 Line {l1=0x11, l2=» GOTOXY(60,3);«, l3=0x11}
0x5a8…5ca Line {l1=0x20, l2=» WRITE(MIN:4,SEC:3,SEC100:3);«, l3=0x20}
0x5ca…5d2 Line {l1=0x06, l2=» END;«, l3=0x06}
0x5d2…60e Line {l1=0x3a, l2=» IF ALARM THEN IF ALARMTIME<=CLOCK^.TIME THEN HOWL:=TRUE;«, l3=0x3a}
0x60e…62d Line {l1=0x1d, l2=» IF HOWL THEN WRITE(CHR(7));«, l3=0x1d}
0x62d…63e Line {l1=0x0f, l2=» IF AVAIL THEN«, l3=0x0f}
0x63e…647 Line {l1=0x07, l2=» BEGIN«, l3=0x07}
0x647…656 Line {l1=0x0d, l2=» CH:=NEXT;«, l3=0x0d}
0x656…666 Line {l1=0x0e, l2=» CASE CH OF«, l3=0x0e}
0x666…675 Line {l1=0x0d, l2=» 'S':BEGIN«, l3=0x0d}
0x675…69b Line {l1=0x24, l2=» STOPWATCH:=NOT(STOPWATCH);«, l3=0x24}
0x69b…6e4 Line {l1=0x47, l2=» IF STOPWATCH THEN BEGIN MIN:=0;SEC:=0;SEC100:=0;TT:=TIME END;«, l3=0x47}
0x6e4…6f2 Line {l1=0x0c, l2=» END;«, l3=0x0c}
0x6f2…739 Line {l1=0x45, l2=» 'U':BEGIN GOTOXY(67,2);FOR I:=1 TO 8 DO CLOCK^.TIME(I):=NEXT END;«, l3=0x45}
0x739…766 Line {l1=0x2b, l2=» 'C':BEGIN STOPWATCH:=TRUE;TT:=TIME END;«, l3=0x2b}
0x766…78d Line {l1=0x25, l2=» 'Q':BEGIN FINIS; WRITE(1/0) END;«, l3=0x25}
0x78d…79c Line {l1=0x0d, l2=» 'M':BEGIN«, l3=0x0d}
0x79c…7b5 Line {l1=0x17, l2=» GOTOXY(70,3);«, l3=0x17}
0x7b5…7d2 Line {l1=0x1b, l2=» IF STOPWATCH THEN«, l3=0x1b}
0x7d2…7fd Line {l1=0x29, l2=» WRITE(MIN:4,SEC:3,SEC100:3);«, l3=0x29}
0x7fd…80b Line {l1=0x0c, l2=» END;«, l3=0x0c}
0x80b…81a Line {l1=0x0d, l2=» 'A':BEGIN«, l3=0x0d}
0x81a…832 Line {l1=0x16, l2=» HOWL:=FALSE;«, l3=0x16}
0x832…850 Line {l1=0x1c, l2=» ALARM:=NOT(ALARM);«, l3=0x1c}
0x850…870 Line {l1=0x1e, l2=» CLOCK^.DATE(9):='0';«, l3=0x1e}
0x870…889 Line {l1=0x17, l2=» IF ALARM THEN«, l3=0x17}
0x889…89a Line {l1=0x0f, l2=» BEGIN«, l3=0x0f}
0x89a…8bc Line {l1=0x20, l2=» CLOCK^.DATE(9):='1';«, l3=0x20}
0x8bc…8d7 Line {l1=0x19, l2=» GOTOXY(72,1);«, l3=0x19}
0x8d7…911 Line {l1=0x38, l2=» FOR I:=1 TO 8 DO BEGIN CLOCK^.DATE(I):=NEXT;«, l3=0x38}
0x911…952 Line {l1=0x3f, l2=» ALARMTIME(I):=CLOCK^.DATE(I)«, l3=0x3f}
0x952…975 Line {l1=0x21, l2=» END;«, l3=0x21}
0x975…9a0 Line {l1=0x29, l2=» GOTOXY(72,1);WRITE(ALARMTIME)«, l3=0x29}
0x9a0…9b0 Line {l1=0x0e, l2=» END;«, l3=0x0e}
0x9b0…9be Line {l1=0x0c, l2=» END;«, l3=0x0c}
0x9be…9c8 Line {l1=0x08, l2=» END;«, l3=0x08}
0x9c8…9d0 Line {l1=0x06, l2=» END;«, l3=0x06}
0x9d0…9db Line {l1=0x09, l2=» GOTO 1;«, l3=0x09}
0x9db…9e1 Line {l1=0x04, l2=»END.«, l3=0x04}
0x9e1…a00 00 00 00 29 20 4f 46 20 43 48 41 52 3b 2a 14 43 4c 4f 43 4b 52 45 43 4f 52 44 20 3d 20 52 45 ┆ ) OF CHAR;* CLOCKRECORD = RE┆
0xa00…a20 43 4f 52 44 14 31 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 41 54 45 3a 50 41 43 4b 45 44 ┆CORD 1 DATE:PACKED┆
0xa20…a40 20 41 52 52 41 59 20 28 31 2e 2e 31 30 29 20 4f 46 20 43 48 41 52 3b 31 2f 20 20 20 20 20 20 20 ┆ ARRAY (1..10) OF CHAR;1/ ┆
0xa40…a60 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 ┆cccccccccccccccccccccccccccccccc┆
[…0x6…]
0xb20…b40 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 00 ┆ccccccccccccccccccccccccccccccc ┆