phat code A bus station is where a bus stops. A train station is where a train stops. On my desk I have a workstation.
Main

Projects

Downloads

Articles

Links

Forum

 

View Message

Back to Messages
Peter Swinkels Tue Dec 2 2025 at 11:42 am
I wrote a simple "graphical" analog clock program in MSBasic->
 
 
10 DEFINT A-Z
20 DIM CLOCK$(20, 20)
30 PI# = 3.14159265358979#
40 DEF FNDISTANCE# (X1, Y1, X2, Y2) = SQR(ABS(X2 - X1) ^ 2 + ABS(Y2 - Y1) ^ 2)
50 DEF FNTORADIANS# (DG) = DG / (180 / PI#)
60 GOSUB 150
70 PREVIOUSTIME$ = TIME$
80 KEYSTROKE$ = ""
90 WHILE (KEYSTROKE$ = "")
100 IF NOT TIME$ = PREVIOUSTIME$ THEN GOSUB 150
110 PREVIOUSTIME$ = TIME$
120 KEYSTROKE$ = INKEY$
130 WEND
140 END
150 PRINT "Clock v1.00 - By: Peter Swinkels, ***2025***"
160 PRINT
170 HOURS# = VAL(LEFT$(TIME$, 2))
180 MINUTES# = VAL(MID$(TIME$, 4, 2))
190 SECONDS# = VAL(MID$(TIME$, 7, 2))
200 IF HOURS# > 12 THEN HOURS# = HOURS# - 12
210 HOURS# = FNTORADIANS#(((360 - (HOURS# * 30)) + 180) - (MINUTES# / 2))
220 MINUTES# = FNTORADIANS#((360 - (MINUTES# * 6)) + 180)
230 SECONDS# = FNTORADIANS#((360 - (SECONDS# * 6)) + 180)
240 FOR X = 0 TO 20
250 FOR Y = 0 TO 20
260 DISTANCE = FNDISTANCE#(10, 10, X, Y)
270 IF DISTANCE > 9 AND DISTANCE < 11 THEN CLOCK$(X, Y) = "*" ELSE CLOCK$(X, Y) = " "
280 NEXT Y
290 NEXT X
300 CLOCK$(10, 10) = "X"
310 X = (COS(HOURS#) * 4) + 10
320 Y = (SIN(HOURS#) * 4) + 10
330 BRUSH$ = "H"
340 GOSUB 510
350 X = (COS(MINUTES#) * 8) + 10
360 Y = (SIN(MINUTES#) * 8) + 10
370 BRUSH$ = "M"
380 GOSUB 510
390 X = (COS(SECONDS#) * 8) + 10
400 Y = (SIN(SECONDS#) * 8) + 10
410 BRUSH$ = "s"
420 GOSUB 510
430 FOR X = 0 TO 20
440 PRINT SPACE$(30);
450 FOR Y = 0 TO 20
460 PRINT CLOCK$(X, Y);
470 NEXT Y
480 PRINT
490 NEXT X
500 RETURN
510 STEPS = FNDISTANCE#(10, 10, X, Y)
520 FOR LENGTH = 0 TO STEPS
530 HANDX = X + (((10 - X) * LENGTH) / STEPS)
540 HANDY = Y + (((10 - Y) * LENGTH) / STEPS)
550 CLOCK$(HANDX, HANDY) = BRUSH$
560 NEXT LENGTH
570 RETURN

Yeah, I was kinda bored. ;-) It was both frustrating and yet a fun challenge working with the limitations of such an ancient BASIC (MSBasic 5.28 from 1983) interpreter. Because I'm not completely insane I wrote a draft in QuickBASIC which I then back-ported. ;-) Any feedback is welcome, however I intend to keep this program as simple as possible so probably no new features. Just bug fixes if needed.
 
 
 
 

Reply to this Message

Name
Subject
Message

No HTML is allowed, except for <code> <b> <i> <u> in the message only.
All URLs and email addresses will automatically be converted to hyperlinks.