Listing of file='@CLOCK' on disk='vmedia/mvp-cs386-1.30-disk2.wvd.zip'
# Sector 5, program filename = '@CLOCK' 0005 REM .@CLOCK and Calendar display 01/30/89 TBO 0006 REM 11/14/97 MEB FIX TO DISPLAY YRS 1991-2090. LINE 4050, LINE 110 DELET ED. 0010 REM .@CLOCK and Calendar display 01/30/89 TBO 0011 % DATA SAVE DC OPEN T#0,(6) "TBO.MSGS": STOP # 0012 DIM L$1,P$09,A$124,B$1,D0$7,H$(12)31,M0$80,M0$(10)80,C1$6,C2$6,M$(1)8,M0 0013 DIM T1$(10)2,T2$(10)2,M1$(10)80 0014 LOAD T#0,"SYS CRTS"8000,8900BEG 15 0015 RESTORE LINE7990 : BIN(B$)=#TERM+48 0016 READ A$ : ERRORA$="@CLOCKM "&B$&" This terminal" 0018 CONVERT STR(A$,9,2)TO T : IF T<>#TERMTHEN 16 : M$(1)=A$ : M9=10 0020 SELECT PRINT /005(80) : $PSTAT="@CLOCK" 0022 REM %0 M0 Global? 1=yes, @M$( (n)80 Global msgs : REM .Part.1=xxxxUNIV define on next line 0024 M0=1 : SELECT @PART"3270UNIV" : ERRORM0=0 0026 GOTO 100 0032 REM %.Send a message : IF M0=1THEN 34 : PRINT "Global memory is not loaded for inter-terminal messages" : RETURN 0034 DEFFN'31 : DIM M$79 : RESTORE LINE7990 0035 READ A$ : ERRORGOTO 37 0036 PRINT "Term. ";STR(A$,10,2);" is ";STR(A$,12,28); : GOTO 35 0037 T=#TERM : INPUT "Message for terminal",T 0038 PRINT " BOLD TYPE..message text" : LINPUT -M$ 0040 $TRAN(STR(M$,1,9),"AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz") R 0042 IF M0=1THEN @M$(T)=M$ 0044 IF M0=0THEN RETURN : IF @M$(T)=" "THEN 46 : GOSUB 205 : PRINT AT(22,0);"Waiting for acknowledge -- key anything to return " : $IF OFF /001,44 : RETURN 0046 C2$=TIME : PRINT AT(22,0,79);"Message received at ";STR(C2$,,2);":";STR(C2$,3,2);":" ;STR(C2$,5,2) : RETURN 0058 REM %0 L$ L$1 Letter, P$ P$10 Phrase, A$ A$80 work area, B$ B$1 work are a 0060 REM %0 T9$ HH-MM-SS, H9 Hour, M9 Minute, S Second, T9 Timer 0070 REM %0 D$ MM-DD-YY 0080 REM %0 D0$ Days off, H$( Holidays 0090 REM %0 M0$ Next message, M0$( Message stack 0100 D9$,D$=DATE : D1$=STR(D$,3,2)&"/"&STR(D$,5,2)&"/"&STR(D$,1,2) 0115 DIM C0$(9)80 : GOSUB 1250 : REM /.GET 00.00.00 0120 REM .Days off Holidays 0123 REM .89..A$="1/1, 2/20, 5/30, 7/4, 9/4,11/23, 11/24, 12/25" 0125 A$="11/25, 12/26, 1/2, 1/1, 2/20, 5/29, 7/4, 9/4,11/23, 11/24, 12/25" 0130 D0$="HMTWTFH" : GOSUB '52(D0$,A$) : REM /.Set days off and holidays for calendar 0135 GOSUB 5000 : M0$=M0$(1) : T9$=TIME : ERRORSTOP "No Clock"# 0136 REM %.Set keyboard 0137 DIM F$(30)2 : F$()=HEX(01000169024302530342035204F0045005060516064A065A07490759060A061A 07090719030D031D020C021C024C025C034D035D081F) 0140 REM %.Using real-time clock 0145 PRINT HEX(0306); : GOSUB 3000 : M4=M : Y4=Y : PRINT AT(3,2);BOX(9,76);AT(2,1);BOX(11,78) : GOSUB 230 0150 DATA LOAD DC OPEN T#0,M$(1) : ERRORGOTO 160 0155 DATA LOAD DC #0,D$,M0$() : ERRORGOTO 160 0160 IF D9$<>D$THEN GOSUB 5900 : REM %.Adjust NOTES to current clock : B=0 0165 B=B+1 : M0$=M0$(B) : IF M0$=" "THEN 170 : IF STR(M0$,3,1)="/"THEN 170 : IF STR(T9$,,5)<STR(M0$,,5)THEN 170 : IF B<9THEN 165 0170 FOR C=1TO 9 : M0$(C)=M0$(B) : IF B<9THEN B=B+1 : NEXT C 0200 M0$=M0$(1) : C1$=" " : PRINT AT(2,27);"W A N G C S a n d D S " 0202 GOSUB 205 : $IF OFF /001,202 : GOSUB 625 : GOTO 202 0204 REM %^.Main Clock loop : $BREAK10 0205 C2$=TIME : IF C1$=C2$THEN 204 0206 IF M0=0THEN 208 : IF @M$(#TERM)=" "THEN 208 : P$=@M$(#TERM) : GOSUB 710 : PRINT AT(21,0);STR(@M$(#TERM),10) : @M$(#TERM)=" " 0208 T9$=C1$XOR C2$ : B=POS(T9$<>HEX(00)) : T9$=STR(C2$,1,2)&":"&STR(C2$,3,2)&":"&STR(C2$,5,2) 0210 P$=T9$ : I=4 : ON BGOTO 212,212,214,214,215,216,217 0212 CONVERT STR(T9$,1,2)TO H : IF H>12THEN CONVERT H-12TO STR(P$,1,2),(##) : B=5 : GOTO 218 0214 B=32 : P$=STR(P$,4) : GOTO 218 0215 B=41 : P$=STR(P$,5) : GOTO 218 0216 B=59 : P$=STR(P$,7) : GOTO 218 0217 B=68 : P$=STR(P$,8) 0218 GOSUB 260 : C1$=C2$ : D$=DATE : IF D$<>D9$THEN 10 0220 IF STR(T9$,,5)=STR(M0$,,5)THEN GOSUB 610 : RETURN 0230 C2$=TIME : T9$=STR(C2$,1,2)&":"&STR(C2$,3,2)&":"&STR(C2$,5,2) : RETURN 0258 REM %^.Print a phrase 0260 IF P$=" "THEN RETURN 0280 L$=P$ : P$=STR(P$,2) 0285 RESTORE LINE2060 0290 READ A$ 0300 IF B>80THEN B=0 0310 I1=I 0320 B$=A$ : IF B$=L$THEN 340 : IF STR(A$,,2)<>"//"THEN 290 : GOTO 260 0330 REM %.Print a letter 0340 PRINT AT(I,B);HEX(060202020F); : SELECT PRINT /005(80) 0345 IF STR(P$,LEN(P$),1)<>"0"THEN 350 : IF P$="0"THEN 510 : IF P$=":00"THEN 510 : IF P$="0:00"THEN 510 : IF P$=":00:00"THEN 510 : IF P$="0:00:00"THEN 510 0350 FOR A=3TO 72STEP 8 0370 C$=STR(A$,A,7) 0380 $TRAN(C$,HEX(2030FF31F832F433CB34C735FA36F537EB38D739FB41F742EA43D544F045 C346ED47DE482020))R 0390 PRINT STR(C$,1,7);HEX(0A08080808080808); : NEXT A : PRINT HEX(0202000F); 0400 B=B+9 0410 GOTO 260 0510 C=0 : FOR A=3TO 72STEP 8 : C=C+1 : C$=STR(A$,A,7) : $TRAN(C$,HEX(2030FF31F832F433CB34C735FA36F537FA36F537EB38D739FB41F742EA43 D544F045C346ED47DE482020))R : PRINT AT(I+C-1,B);STR(C$,,7);" ";STR(C0$(C),B+8,72-B) : NEXT A : PRINT HEX(0202000F); : RETURN 0600 REM .Logic to display messages from list at specified times 0610 P$=STR(M0$,7,9) : IF P$="CLEAR"THEN 615 : IF P$="START.JOB"THEN 900 : GOSUB 710 : PRINT AT(21,0);M0$ : GOTO 620 0615 PRINT AT(R0,C0);BOX(-1,-3) : PRINT AT(13,0,10*80) : GOSUB 3000 0620 M0$=M0$(2) : FOR B=1TO 9 : M0$(B)=M0$(B+1) : NEXT B : RETURN 0625 KEYIN B$,,640 0630 PRINT AT(R0,C0);BOX(-1,-3) : PRINT AT(13,0,10*80) : IF B$=" "THEN 635 : M4=M : Y4=Y : GOSUB 3000 : RETURN 0635 PRINT "Key NOTE (s.f.'6) to display messages for this terminal" : PRINT " -- permanent reminders are DATA statements at lines 6100 +" : PRINT "Key INSERT to enter current reminder messages" : PRINT "Key DELETE to remove messages" 0636 PRINT "Key <- PREV or NEXT -> to shift months display" : PRINT "Key CANCEL/EDIT to return to main menu" : PRINT "Key EXEC to show current month" 0638 PRINT "hh:mm START.JOB FileName --- Special NOTE form to LOAD RUN ";HEX(2 2);"FileName";HEX(22) : IF G<>1THEN PRINT "Key '31 to send a message to another terminal" : RETURN 0640 PRINT AT(R0,C0);BOX(-1,-3) : PRINT AT(13,0,10*80) : $TRAN(B$,F$())R : ON B$GOTO 635,720,770,645,665,5710,5810,32 : IF B$<>HEX(00)THEN 635 : PRINT HEX(020D0C030F) : $PSTAT="MainMenu" : LOAD DC T#0,"START" 0645 PRINT HEX(020D0C030F) : LIMITS T#0,M$(1),T,T,T,T : IF T<>2THEN 648 0646 DATA LOAD DC OPEN T#0,M$(1) : DATA SAVE DC #0,D9$,M0$() : DATA SAVE DC #0,END 0648 LOAD DC T#0,"START" 0650 REM %.Display list of pending messages 0665 PRINT "Messages for this terminal" : FOR A=1TO 10 : IF M0$(A)<>" "THEN PRINT M0$(A) : NEXT A : RETURN 0710 PRINT AT(R0,C0);BOX(-1,-3);HEX(07) : B=0 : I=13 : PRINT AT(I,B,9*80); : GOSUB 260 : SELECT P1 : FOR K=1TO 5 : PRINT HEX(01070D) : NEXT K : SELECT P : RETURN 0720 PRINT AT(R0,C0);BOX(-1,-3); : REM /.ADVANCE CALENDAR ONE MONTH 0730 M2,M4=M4+1 : Y2=Y4 : IF M2<13THEN 740 : M2,M4=1 : Y4,Y2=Y2+1 0740 GOSUB '206(0,M2,Y2,R,7) 0750 M2,M4=M4+1 : Y2=Y4 : IF M2<13THEN 760 : M2,M4=1 : Y4,Y2=Y2+1 0760 GOSUB '206(0,M2,Y2,R,45) : RETURN 0770 PRINT AT(R0,C0);BOX(-1,-3); : REM /.LOOK BACK ON CALENDAR ONE MONTH 0780 M2,M4=M4-1 : Y2=Y4 : IF M2>0THEN 790 : M2,M4=12 : Y4,Y2=Y2-1 0790 GOSUB '206(0,M2,Y2,R,45) 0800 M2,M4=M4-1 : Y2=Y4 : IF M2>0THEN 810 : M2,M4=12 : Y4,Y2=Y2-1 0810 GOSUB '206(0,M2,Y2,R,7) : RETURN 0850 DEFFN'4 0860 PRINT HEX(020D0C030F); : LINPUT "phrase",-P$ 0870 B=0 : I=8 0880 GOSUB 260 0890 $IF ON /001,860 : GOTO 890 0900 REM .START.JOB : P$=STR(M0$,17,8) : LIMITS T#0,P$,A,B,C,D : IF D=1THEN LOAD RUN P$ 0920 PRINT HEX(03);"UNABLE TO PROCEED -- PROGRAM NOT FOUND " : PRINT M0$ : STOP # 1250 P$="00:00:00" : B=5 1260 L$=P$ : P$=STR(P$,2) : RESTORE LINE2060 1290 READ A$ : IF B>80THEN B=0 : B$=A$ : IF B$<>L$THEN 1290 1340 I=1 : FOR A=3TO 72STEP 8 : C$=STR(A$,A,7) : $TRAN(C$,HEX(2030FF31F832F433CB34C735FA36F537EB38D739FB41F742EA43D544F045 C346ED47DE482020))R : STR(C0$(I),B,7)=STR(C$,1,7) : I=I+1 : NEXT A 1400 B=B+9 : IF P$<>" "THEN 1260 : RETURN 2000 REM %.2236-DE special character structure 2010 REM .. 0 1 2 3 4 5 6 7 8 9 A B C D E F G H mnemonic 2020 REM ..-- SS -- -- SS SS -S S- SS SS SS SS -S S- -- SS S- -S top 2030 REM ..-- SS -S S- -S S- -S S- -S S- -S S- -S S- -- -- SS SS mid 2040 REM ..-- SS SS SS -- -- SS SS -S S- SS SS -S S- SS -- -S S- low 2050 REM ..20 FF F8 F4 CB C7 FA F5 EB D7 FB F7 EA D5 F0 C3 ED DE alternate ch ar 2060 DATA "0.2111113.1100011.1100011.1100011.1100011.1100011.4111115." 2070 DATA "1.0021100.0001100.0001100.0001100.0001100.0001100.0011110." 2080 DATA "2.2111113.1100215.0002150.0021500.0215000.2150000.1111111." 2090 DATA "3.2111113.1100011.0000011.001111B.0000011.1100011.4111115." 2100 DATA "4.0000021.0002111.0021511.0215011.2111111.0000011.0000011." 2110 DATA "5.1111111.1100000.1100000.4111113.0000011.1100011.4111115." 2120 DATA "6.2111113.1100000.1100000.1111113.1100011.1100011.4111115." 2130 DATA "7.1111111.0000215.0002150.0021500.0215000.2150000.1500000." 2140 DATA "8.2111113.1100011.4100015.0A111B0.2100013.1100011.4111115." 2150 DATA "9.2111113.1100011.1100011.4111111.0000215.0002150.0021500." 2160 DATA ":.0000000.0000000.0001000.0000000.0000000.0001000.0000000." 2180 DATA "A.0061700.0611170.6190817.1900081.1111111.1100011.1100011." 2190 DATA "B.1111130.1100013.1100015.11111B0.1100013.1100015.1111150." 2200 DATA "C.2111113.1100011.1100000.1100000.1100000.1100011.4111115." 2210 DATA "D.1111130.1100011.1100011.1100011.1100011.1100011.1111150." 2220 DATA "E.1111111.1100000.1100000.1111100.1100000.1100000.1111111." 2230 DATA "F.1111111.1100000.1100000.1111100.1100000.1100000.1100000." 2240 DATA "G.0111110.1100011.1100000.1100111.1100011.1100011.0111110." 2250 DATA "H.1100011.1100011.1100011.1111111.1100011.1100011.1100011." 2260 DATA "I.0111110.00C1D00.00C1D00.00C1D00.00C1D00.00C1D00.0111110." 2270 DATA "J.0001111.0000110.0000110.0000110.0000110.1100110.0411150." 2280 DATA "K.1100215.1102150.1121500.111B000.1141300.1104130.1100413." 2290 DATA "L.1100000.1100000.1100000.1100000.1100000.1100011.1111111." 2300 DATA "M.1300021.1130211.1111111.1101011.1100011.1100011.1100011." 2310 DATA "N.1100011.1130011.1113011.1111311.1104111.1100411.1100011." 2320 DATA "O.0111110.1100011.1100011.1100011.1100011.1100011.0111110." 2330 DATA "P.1111110.1100011.1100011.1111110.1100000.1100000.1100000." 2340 DATA "Q.2111113.1100011.1100011.1100011.1100011.1104311.4111143." 2350 DATA "R.1111130.1100011.1100011.1111150.1141300.1104130.1100413." 2360 DATA "S.2111113.1100001.1100000.4111113.0000011.1300011.4111115." 2370 DATA "T.1111111.10C1D01.00C1D00.00C1D00.00C1D00.00C1D00.0011100." 2380 DATA "U.1100011.1100011.1100011.1100011.1100011.1100011.4111115." 2390 DATA "V.1700061.1100011.1170611.8110119.0111110.0811190.0081900." 2400 DATA "W.1100011.1100011.1100011.1100011.1121311.1150411.1500041." 2410 DATA "X.1300021.4130215.0411150.00A1B00.0211130.2150413.1500041." 2420 DATA "Y.1300021.4130215.0411150.00C1D00.00C1D00.00C1D00.00C1D00." 2430 DATA "Z.1111111.0000215.0002150.0021500.0215000.2150000.1111111." 2440 DATA " .0000000.0000000.0000000.0000000.0000000.0000000.0000000." 2450 DATA "!.0011100.0011100.0011100.0011100.0011100.0000000.0011100." 2455 DATA "?.2111113.1100011.0000011.0011150.0011000.0000000.0011000." 2456 DATA "..0000000.0000000.0000000.0000000.0000000.0000000.0011000." 2457 DATA "/.0000002.0000020.0000200.0002000.0020000.0200000.2000000." 2510 DATA "%.0000021.0110215.0002150.0021500.0215000.2150110.1500000." 2540 DATA "#.0000000.0110110.1111111.0110110.1111111.0110110.0000000." 2550 DATA ";.0000000.0000000.0001000.0000000.0000000.0001000.0011000." 2560 DATA ",.0000000.0000000.0000000.0000000.0000000.0001000.0011000." 2570 DATA "'.0001000.0001000.0000000.0000000.0000000.0000000.0000000." 2580 DATA "-.0000000.0000000.0000000.0111110.0000000.0000000.0000000." 2600 DATA "..0000000.0000000.0000000.0000000.0000000.0000000.0011000." 2610 DATA "+.0000000.0000000.0011100.1111111.0011100.0000000.0000000." 2620 DATA "=.0000000.0000000.0111110.0000000.0111110.0000000.0000000." 2640 DATA "$.2111113.1101001.1101000.4111113.0001011.1301011.4111115." 2650 DATA "*.0000000.4130215.0411150.1111111.0211130.2150413.0000000." 2660 DATA "@.2111113.1000001.1000001.1000000.1000000.1000000.4111111." 2670 DATA "&.0000000.0000000.0000000.0000000.0000000.0000000.0000000." 2680 DATA "(.0000000.0000000.0000000.0000000.0000000.0000000.0000000." 2690 DATA ").0000000.0000000.0000000.0000000.0000000.0000000.0000000." 2700 DATA ">.0000000.0000000.0000000.0000000.0000000.0000000.0000000." 2710 DATA "<.0000000.0000000.0000000.0000000.0000000.0000000.0000000." 2720 DATA "[.0001100.0001000.0001000.0001000.0001000.0001000.0001100." 2730 DATA "].0011000.0001000.0001000.0001000.0001000.0001000.0011000." 2970 REM %^.Calendar logic 2980 REM "GETDATE" -- get date from user : REM 11/14/79 BP : REM REV 1/7/80 : REM The 1st record in the file "DATE" will contain the new date (mm/dd/yy yy) 2990 DIM T$10,Q$1 3000 A=24 : R=13 : PRINT AT(R,0,10*80) : T$=D1$ : GOSUB 4040 : RETURN 4030 STOP "DATE NOT CORRECT"# 4040 $UNPACK(D=HEX(002F))T$TO M,D,Y : ERROR$UNPACK(D=HEX(002C))T$TO M,D,Y : ERRORPRINT HEX(07); : GOTO 4030 4050 IF M<>INT(M)OR M<1OR M>12THEN 4030 : IF D<>INT(D)OR D<1OR D>31THEN 4030 : IF Y<>INT(Y)OR Y<0THEN 4030 : IF Y>90THEN Y=Y+1900 : IF Y<91THEN Y=Y+2000 4060 REM CONVERT TO STANDARD FORM : T$="00/00/0000" : CONVERT MTO STR(T$,1,2),(##) : CONVERT DTO STR(T$,4,2),(##) : CONVERT YTO STR(T$,7,4),(####) 4070 GOSUB '50(M) : M1$=M$ : GOSUB '51(M,D,Y) : PRINT HEX(020402000E);AT(0,0,80);AT(0,(80-LEN(D$)-LEN(M$)-12)/2);D$;" " ;M$;D;HEX(08);",";Y;HEX(0F) 4080 GOSUB '206(D,M,Y,R,7) : M2=MOD(M,12)+1 : Y2=Y : IF M2=1THEN Y2=Y+1 : GOSUB '206(0,M2,Y2,R,45) : M$=M1$ 4090 RETURN 4110 REM %'206 -- DISPLAY CALENDAR MONTH : REM ENTRY-- : REM D0=day to highlight (or 0) : REM M1=month (1-12) : REM Y1=year (eg, 1979) : REM R=row to start display on : REM C=column to start display on : REM DISPLAY is 8 X 28 4120 DEFFN'206(D0,M1,Y1,R,C) : GOSUB '50(M1) : Y3=Y1 : M3=M1 4130 IF M1>2THEN 4140 : M1=M1+12 : Y1=Y1-1 4140 REM CALCULATE DAY OF WEEK MONTH BEGINS ON : D1=1 : T=MOD(1+D1+INT((13*M1+3)/5)+INT(5*Y1/4)-INT(Y1/100)+INT(Y1/400),7)+1 4150 REM DISPLAY MONTH : T=2-T : PRINT AT(R,C,28);AT(R,C+(28-LEN(M$)-5)/2);M$;Y3 : PRINT AT(R+1,C);"Sun Mon Tue Wed Thu Fri Sat " : FOR W=1TO 6 : PRINT AT(R+1+W,C); : FOR D3=1TO 7 : IF T=D0AND T<>0THEN PRINT HEX(020404000E);BOX(1,3); : ELSE GOTO 4154 : R0=R+1+W : C0=C+(D3*4)-4 4154 IF T>0AND T<32THEN IF STR(H$(M3),T,1)="H"THEN PRINT HEX(020400020E); 4156 IF STR(D0$,D3,1)="H"THEN PRINT HEX(020400020E); 4158 IF T>0AND T<=D9THEN PRINTUSING " ## ";T; : ELSE PRINT " "; : IF T=D0THEN PRINT HEX(0F0204020F); : T=T+1 : PRINT HEX(0F); : NEXT D3,W : RETURN 4160 REM %'50 -- GET NAME OF MONTH : REM ENTRY-- : REM M1=month (1-12) : REM RETURN-- : REM M$=name of month : REM D9=no. of days in month 4170 DEFFN'50(M1) : RESTORE LINE4170,2*M1-1 : READ M$,D9 : IF MOD(Y,4)=0AND M1=2THEN D9=D9+1 : RETURN : DATA "January",31,"February",28,"March",31,"April",30,"May",31,"June",30, "July",31,"August",31,"September",30,"October",31,"November",30,"December ",31 4180 REM %'51 -- GET NAME OF DAY OF WEEK : REM ENTRY-- : REM M1=month (1-12) : REM D1=day (1-31) : REM Y1=year : REM RETURN-- : REM D$=name of day : REM T=day of week (1-7) 4190 DEFFN'51(M1,D1,Y1) : IF M1>2THEN 4200 : M1=M1+12 : Y1=Y1-1 4200 T=MOD(1+D1+INT((13*M1+3)/5)+INT(5*Y1/4)-INT(Y1/100)+INT(Y1/400),7)+1 : RESTORE LINE4200,T : READ D$ : RETURN : DATA "Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturda y" 4980 REM %.'52 Denote days off and holidays 4990 DEFFN'52(D0$,A$) 5000 B=POS(A$=",") : IF B=0THEN B=LEN(A$)+1 : P$=STR(A$,,B-1) : A$=STR(A$,B+1) 5010 $UNPACK(D=HEX(002F))P$TO M,D : ERRORGOTO 5070 5020 IF M<1OR M>12THEN 5070 : IF D<1OR D>31THEN 5070 5030 STR(H$(M),D,1)="H" : ERRORGOTO 5070 5040 GOTO 5000 5050 PRINT P$ : IF A$<>" "THEN 5000 : STOP # 5070 IF P$=" "THEN RETURN : PRINT "ERROR IN HOLIDAYS" : PRINT P$ : STOP # 5700 REM %^.Message stack handling 5705 REM %.Insert : REM .HH.mm or MM/DD hh.mm 5710 GOSUB 5780 : PRINT AT(13,0); : M0$="hh:mm BOLD TYPE insert message" : LINPUT STR(M0$,,79) : B=0 : IF VER(M0$,"hh:mm")=5THEN 5780 : IF VER(M0$,"##/## ##:##")=11THEN 5790 : IF VER(M0$,"##:##")<>5THEN 5710 5712 IF STR(M0$,,2)>"06"THEN 5715 : STR(M0$,,1)="1" : ADD(STR(M0$,2,1),02) 5715 IF STR(T9$,,5)>STR(M0$,,5)THEN 5710 5718 $TRAN(STR(M0$,7,9),"AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz" )R 5720 B=B+1 : IF B>9THEN 5780 : IF M0$(B)=" "THEN 5770 5730 IF STR(M0$(B),3,1)=":"THEN IF STR(M0$,,5)>STR(M0$(B),,5)THEN 5720 : FOR C=8TO BSTEP -1 : M0$(C+1)=M0$(C) : NEXT C 5770 M0$(B)=M0$ 5780 M0$=M0$(1) : PRINT AT(13,0,10*80); : GOSUB 665 : RETURN 5790 B=B+1 : IF B>9THEN 5780 : IF STR(M0$(B),3,1)<>" "THEN 5790 : GOTO 5770 5805 REM %.Delete 5810 GOSUB 5780 : PRINT AT(13,0); : M0$="hh:mm or ALL -- DELETE message" : LINPUT -STR(M0$,,79) : IF STR(M0$,,3)="ALL"THEN 5825 : IF VER(M0$,"hh:mm")=5THEN 5780 : C=9 : IF VER(M0$,"##/## ##:##")=11THEN 5820 : IF VER(M0$,"##:##")<>5THEN 5810 : C=5 : IF STR(T9$,,C)>STR(M0$,,C)THEN 5810 5820 GOSUB 5835 : GOTO 5780 5825 M0$()=" " : GOTO 5780 5835 B=0 5840 B=B+1 : IF B>9THEN RETURN : IF STR(M0$(B),,C)<>STR(M0$,,C)THEN 5840 : FOR C=BTO 9 : M0$(C)=M0$(C+1) : NEXT C : RETURN 5890 REM %.First time for @CLOCK today : REM .Remove old hh.mm messages Set=Z : REM .Fix this day mm/dd messages to sort first /hh.mm : REM .Remove old mm/dd messages 5900 FOR B=1TO M9 : M0$=M0$(B) : IF STR(M0$,3,1)=":"OR M0$=" "THEN M0$="Z" : IF STR(M0$,,5)<>STR(D1$,,5)THEN 5905 : STR(M0$,,1)="/" : STR(M0$,2)=STR(M0$,7) 5905 IF STR(M0$,3,1)<>"/"THEN 5910 : IF STR(M0$,,5)>STR(D1$,,5)THEN 5910 : M0$="Z" 5910 M0$(B)=M0$ : NEXT B 5915 REM .Message list in M0$() : REM ./hh.mm will sort first : REM .MM/DD hh.mm : REM .Z. messages will sort last 5920 MAT SORTM0$()TO T1$(),T2$() : MAT MOVE M0$(),T2$()TO M1$() : MAT COPY M1$()TO M0$() 5928 REM .Remove adjust time and remove Z messages 5930 FOR B=1TO M9 : IF STR(M0$(B),,1)="/"THEN M0$(B)=STR(M0$(B),2) : IF STR(M0$(B),,1)="Z"THEN M0$(B)=" " : NEXT B : B=0 5940 IF M0$(1)=" "THEN 6000 : RETURN 5990 REM %^.Message stack 5995 REM .Messages for output at specific times 5999 % REM.."HH:MM BLOCKCAPS Upper/lower text" 6000 RESTORE LINE6100 6002 READ A$ : ERRORRETURN 6004 IF A$=" "THEN RETURN : IF STR(T9$,1,5)>STR(A$,1,5)THEN 6002 : B=B+1 : M0$(B)=A$ : GOTO 6002 6100 DATA "08:00 -WELCOME- Grab a cup of coffee, you look terrible" : DATA "09:00 CLEAR" 6120 DATA "12:00 ..LUNCH.." : DATA "13:00 CLEAR" 6140 DATA "17:00 .GO HOME.","18:30 CLEAR" 6150 DATA " " : REM /.End of standard msgs 7990 REM .MSGfiles ## Terminal description 8000 REM .SYS CRTS 9/26/86 : REM ."Msg.File # Crt description................" 8010 DATA "@CLOCKM 1 Main system terminal" 8020 DATA "MSGS.ccc 2 ISWU demo -- 2436 DW" 8030 DATA "MSGS.ccc 3 ISWU demo -- 2436-DW" 8040 DATA "MSGS.ccc 4 ISWU demo -- 2436-WP" 8050 DATA "MSGS.ccc 5 TBO office -- CRT on cart" 8060 DATA "MSGS.ccc 6 Bob Rainville office" 8070 DATA "MSGS.ccc 7 TBO office PC" 8080 DATA "@CLOCKM 8 Unassigned port"