ruhtra@turing.toronto.edu (Arthur Tateishi) (04/24/91)
Well, I've been looking at these recent calendar programs but I just don't like to wait long to get a calendar. I added to the wonderfully fast CALENDAR program to give it a terse display of the month and year on the side. Sorry, it does go a little slower now. However, typing in month and year were annoying so I wrote a program to display the current month which later grew to allow stepping back and forth by month. It's still quite fast. Installing it ------------- There are two programs below, MO and CALN. MO(short for monthly) calls CALN(my version of CALENDAR). Download both into a directory and run MO. Use the [NXT] key to get the next month and the [UpArrow] key to go back a month. DDATE+ does all the date calculations. Neat. (Well, I think so.) This could easily be made into one program (sticking CALN as a local variable to MO) but I like having CALN around for offball stuff like birthdays and stuff. Have fun and let me know if you like it. Psst: Putting the Hide/Unhide/Wake programs into a library makes them really nice to use. -- Red Alert. -- Q, "Deja Q", stardate 43539.1 Arthur Tateishi g9ruhtra@zero.cdf.utoronto.edu File: MO ---------------- %%HP: T(3)A(D)F(.); @ This program calls the CALN program to display @ the month. @ It starts by displaying the current month and @ lets you step back and forth with the [UpArrow] @ and NXT keys. @ @ Anyways, I like it because it's reasonably fast. @ April 1991 Arthur Tateishi @ \<< DATE \-> d \<< DO d DUP IP SWAP 100 * FP DUP2 100 / .01 + + 'd' STO 10000 * CALN IFERR 0 WAIT THEN END IP CASE DUP 25 == THEN d -1 DATE+ 'd' STO END DUP 26 == THEN d 31 DATE+ 'd' STO END END UNTIL 0 == END \>> \>> -----End of File MO --- File: CALN ---------------- %%HP: T(3)A(D)F(.); @ @ Written by Eric B. Davis @ EXTENSIVELY Speed and Space Optimized by: @ Eddie Wilborne @ Pete Wilson @ Slight slowdown and month/year display on right by: @ Arthur Tateishi @ @ Enter the month and year on the stack @ and this program will generate a calendar. @ @ Checksum: #2037h, Bytes: 480.5 \<< DUP2 100 / FP 100 * \->STR SWAP \->STR " " + DUP IF 2 2 SUB " " == THEN "0" SWAP + END 1 3 SUB SWAP + \-> s \<< 1000000 / .01 + \-> mon yrb \<< yrb mon + DUP IF mon 12 == THEN yrb 1.000001 + ELSE yrb mon 1 + + END DDAYS 3 * 1.0518 ROT DDAYS 7 MOD NEG 7 + 3 * \-> ndays n \<< "Su Mo Tu We Th Fr Sa " s 1 1 SUB + " " 1 22 n - SUB " 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 " 0 84 FOR o n o + "\Ga" REPL 21 STEP 1 ndays SUB + + CLLCD 2 \-> i \<< WHILE DUP "\Ga" POS DUP 0 \=/ REPEAT \-> p \<< DUP 1 p 1 - SUB " " + s i i SUB + " " + SWAP p 1 + 200 SUB + 1 'i' STO+ \>> END DROP \>> 1 DISP 7 FREEZE \>> \>> \>> \>>