10 REM			UHR
20 REM	STELLT EIN ZIFFERNBLATT AUF DEM BILDSCHIRM DAR.
30 REM
80 REM	IDEE UND PROGRAMMIERUNG		A.HERRMANN	31.07.84
90 REM
100 CR$=CHR$(&HD)	:REM CARRIAGE RETURN
110 FF$=CHR$(&HC)	:REM FORM FEED
120 ESC%=&H1B		:REM ESCAPE
122 CUROFF$=CHR$(ESC%)+"A"+CHR$(&H20)	:REM CURSOR OFF
124 CURON$ =CHR$(ESC%)+"A"+CHR$(&H22)	:REM CURSOR ON
130 X0%=0 : XMAX%=159	:REM PLOTT-FENSTER
132 Y0%=0 : YMAX%= 95
134 XM%=80  : YM%=48	:REM UHR-MITTELPUNKT
136 R%=40		:REM UHR-RADIUS
137 RM%=35		:REM DTO. FUER MINUTENZEIGER
138 RH%=25		:REM DTO. FUER STUNDENZEIGER
139 DR%=4		:REM STRICHLAENGE FUER STUNDENMARKE
140 PON%=-1 : POF%=0	:REM PLOTT-PEN ON/OFF
150 PI=3.141592		:REM KREISZAHL
199 REM
200 HRS%=0		:REM STUNDEN
202 MIN%=0		:REM MINUTEN
204 SEC%=0		:REM SEKUNDEN
205 SEK%=0
210 XA%=0 : YA%=0	:REM KOORD. STRICHANFANG
212 XE%=0 : YE%=0	:REM KOORD. STRICHENDE
220 XMIN%=XM% : YMIN%=YM%	:REM MINUTENZEIGER-KOORD.
222 XHRS%=XM% : YHRS%=YM%	:REM STUNDENZEIGER-KOORD.
224 AMIN%=0 : AHRS%=0		:REM ALTE ZEIGERSTELLUNG
299 REM
500 DEF FNRUND%(R) = INT(R+0.5)
510 DEF FNWINKEL(K%) = PI * (15-K%) / 30
999 REM
1000 PRINT FF$;"Wieviel Uhr ist es, bitte ? ( hh.mm ) ";
1002 INPUT C$
1010 I%=INSTR(C$,".")
1012 IF I%<=1 GOTO 1100
1014 HRS%=VAL(LEFT$(C$,I%-1))
1016 IF I%=LEN(C$) GOTO 1100
1020 MIN%=VAL(MID$(C$,I%+1))
1099 REM
1100 PRINT FF$;"Press ESC to return to CP/M";CUROFF$ : PRINT
1102 GOSUB 2000			:REM ZIFFERBLATT PLOTTEN
1108 REM
1110 PRINT USING "  ##:##:##&";HRS%;MIN%;SEC%;CR$;
1112 GOSUB 2100			:REM MINUTEN-ZEIGER PLOTTEN
1114 GOSUB 2200			:REM STUNDEN-ZEIGER PLOTTEN
1120 SEK%=60-PEEK(&HFA35)	:REM HOLE SEKUNDEN-ZAEHLER
1124 IF INP(5)=ESC% GOTO 1200	:REM ESCAPE KEY GEDRUECKT?
1126 IF SEK%=SEC% GOTO 1120
1130 SEC%=SEK%
1132 IF SEC%>0 GOTO 1110
1140 SEC%=0 : MIN%=MIN%+1
1142 IF MIN%<60 GOTO 1110
1150 MIN%=0 : HRS%=HRS%+1
1152 IF HRS%<24 GOTO 1110
1160 HRS%=0
1162 GOTO 1110
1200 PRINT CURON$;FF$
1300 END
2000 CALL WINDOW(X0%,Y0%,XMAX%,YMAX%)	:REM PLOTT-FENSTER INIT.
2002 CALL CIRCLE(XM%,YM%,R%,PON%)	:REM ZIFFERBLATT PLOTTEN
2010 FOR I%=0 TO 55 STEP 5		:REM 12 STUNDEN-MARKEN
2012 PHI = FNWINKEL(I%)
2020 XA%=XM%+FNRUND%((R%-DR%)*COS(PHI))
2022 XE%=XM%+FNRUND%(R%*COS(PHI))
2024 YA%=YM%+FNRUND%((R%-DR%)*SIN(PHI))
2026 YE%=YM%+FNRUND%(R%*SIN(PHI))
2030 CALL VECTOR(XA%,YA%,XE%,YE%,PON%)
2040 NEXT I%
2050 RETURN
2100 IF MIN%=AMIN% THEN RETURN
2104 CALL VECTOR(XM%,YM%,XMIN%,YMIN%,POF%)	:REM ALTER MINUTENZEIGER
2106 PHI = FNWINKEL(MIN%)
2110 XMIN%=XM%+FNRUND%(RM%*COS(PHI))
2112 YMIN%=YM%+FNRUND%(RM%*SIN(PHI))
2120 CALL VECTOR(XM%,YM%,XMIN%,YMIN%,PON%)	:REM NEUER MINUTENZEIGER
2130 RETURN
2200 IF MIN%=AMIN% THEN RETURN
2202 AMIN%=MIN%
2204 CALL VECTOR(XM%,YM%,XHRS%,YHRS%,POF%)	:REM ALTER STUNDENZEIGER
2206 PHI = FNWINKEL((HRS% MOD 12)*5 + MIN%/12)
2210 XHRS%=XM%+FNRUND%(RH%*COS(PHI))
2212 YHRS%=YM%+FNRUND%(RH%*SIN(PHI))
2220 CALL VECTOR(XM%,YM%,XHRS%,YHRS%,PON%)	:REM NEUER STUNDENZEIGER
2230 RETURN
