1 'save "TOKEI.bas",a
2 '
100 '========== watch; main routine ==========
110 '********** primary conditions **********
120 CLEAR:CLS 3:WIDTH 40
130 CONSOLE ,,0,1:SCREEN 3,0,0,1
140 GOSUB *COND
150 GOSUB *MACIRC
160 '
170 *MAIN'********** main routine **********
180 GOSUB *INPTIME
190 GOSUB *DEGITAL
200 GOSUB *ANALOG
210 GOTO *MAIN
220 END
230 '
1000 '========== subroutine ==========
1010__*COND'********** condition
and constants **********
1020___BGC=7:FC=2:DC1=4:DC2=3:CC=1:SHC=2:MHC=0:HHC=0
1030___WINDOW(-400,-400)-(400,400):VIEW(101,1)-(498,398),BGC,FC
1040___PI=3.14159:FL=300:LL=270:SL=160:DHL=30:DML=10
1050___RETURN:END
1060 '
1070__*MACIRC'********** make a watch
circle **********
1080___DHQ=2*PI/12:DMQ=2*PI/60:HC=CC
1090___CIRCLE(0,0),FL,CC
1100_____FOR I=1 TO 60
1110_______R=FL:Q=DMQ*I
1120_______GOSUB *CALT
1130_______X=CX:Y=CY
1140_______IF ABS(I/5-INT(I/5))<.0001
THEN R=FL-DHL ELSE R=FL-DML
1150_______GOSUB *CALT
1160_______X0=CX:Y0=CY
1170_______GOSUB *HAND
1180_____NEXT I
1190___RETURN:END
1200 '
1210__*INPTIME'********** input time
data **********
1220___IF T$=TIME$ THEN RETURN *MAIN
1230___T$=TIME$
1240___HH=VAL(LEFT$(TIME$,2)):MM=VAL(MID$(TIME$,4,2)):SS=VAL(RIGHT$(TIME$,2))
1250___RETURN:END
1260 '
1270__*DEGITAL'********** degital
watch **********
1280___LOCATE 12,0:COLOR DC1:PRINT"日付:
";:COLOR DC2:PRINT DATE$:COLOR 7
1290___LOCATE 12,1:COLOR DC1:PRINT"時刻:
";:COLOR DC2:PRINT TIME$:COLOR 7
1300___RETURN:END
1310 '
1320__*ANALOG'********** analog watch **********
1330___X0=0:Y0=0
1340_____FOR L=1 TO 3
1350_______ON L GOSUB *SS,*MM,*HH
1360_______GOSUB *CALT
1370 '
1380_______HC=BGC
1390_______GOSUB *HAND
1400 '
1410_______X=-1*CX:Y=-1*CY
1420_______ON L GOSUB *SSC,*MMC,*HHC
1430_______GOSUB *HAND
1440 '
1450_____ON L GOSUB *SSM,*MMM,*HHM
1460_____NEXT L
1470___RETURN:END
1480 '
1490____*SS'- - - - - second hand
possition - - - - -
1500_____X=SX:Y=SY
1510_____R=LL:Q=2*PI*SS/60+PI/2
1520_____RETURN:END
1530 '
1540____*MM'- - - - - minute hand
possition - - - - -
1550_____X=MX:Y=MY
1560_____R=LL:Q=2*PI*MM/60+2*PI*SS/(60*60)+PI/2
1570_____RETURN:END
1580 '
1590____*HH'- - - - - hour hand
possition - - - - -
1600_____X=HX:Y=HY
1610_____WH=HH MOD 12:R=SL:Q=2*PI*WH/12+2*PI*MM/(12*60)+2*PI*SS/(12*60*60)+PI/2
1620_____RETURN:END
1630 '
1640 '__- - - - - SSC, MMC, HHC
(color of hands) - - - - -
1650____*SSC:HC=SHC:RETURN:END
1660____*MMC:HC=MHC:RETURN:END
1670____*HHC:HC=HHC:RETURN:END
1680 '
1690 '__- - - - - SSM, MMM, HHM
(hand possition memory) - - - - -
1700____*SSM:SX=X:SY=Y:RETURN:END
1710____*MMM:MX=X:MY=Y:RETURN:END
1720____*HHM:HX=X:HY=Y:RETURN:END
1730 '
1740____*HAND'********** draw hand **********
1750_____LINE(X,Y)-(X0,Y0),HC
1760_____RETURN:END
1770 '
1780____*CALT'********** polor ---
caltesiane **********
1790_____CX=R*COS(Q):CY=R*SIN(Q)
1800_____RETURN:END
1810 '
1820 '========== program end ==========
1830 END