Microsoft Small Basic

Program Listing: PPH681
' EarthClock01.smallbasic - Earth Clock v0.1 (C) 2011 Nonki Takahashi

' History:
' 2011/04/25 Created from Alarm v0.1 MDW647 (85 lines)

sVersion = "v0.1"
GraphicsWindow.Title = "Earth Clock " + sVersion
url = "http://homepage2.nifty.com/nobukit/smallbasic.files/North.png"
oNorth = Shapes.AddImage(url) ' north hemesphere
iR = 100 ' radius for Earth
iXC = 50 + iR ' character size for clock
iYC = 40 + iR
Shapes.Move(oNorth, iXC - iR, iYC - iR)
iAX = 18 ' character size for alarm
iAY = 26
iTX0 = 240
iTX = 6 * 6
iTY = 10 * 6
sBGColor = "Black" ' background color
sFGColor = "White" ' foreground color
GraphicsWindow.FontSize = iAY
GraphicsWindow.BrushColor = sFGColor
GraphicsWindow.BackgroundColor = sBGColor
GraphicsWindow.DrawText(iAX * 3, iAY * 10, "ALARM:")
GraphicsWindow.DrawText(iAX * 21, iAY * 10, ":")
GraphicsWindow.BrushColor = "Black"
oHour = Controls.AddTextBox(iAX * 11, iAY * 10)
oMin = Controls.AddTextBox(iAX * 23, iAY * 10)
GraphicsWindow.BrushColor = sFGColor
Timer.Interval = 1000
Timer.Tick = OnTick
bTick = "False"
iDaySec = 24 * 60 * 60
TimeTable_Init()
iCity = 2
GraphicsWindow.DrawText(iAX * 17, iAY * 5, sCity[iCity])
While "True"
If bTick Then
iAHour = Controls.GetTextBoxText(oHour)
iAMin = Controls.GetTextBoxText(oMin)
If iHour < 10 Then
sTime = "0" + iHour + ":"
Else
sTime = iHour + ":"
EndIf
If iMin < 10 Then
sTime = sTime + "0" + iMin + ":"
Else
sTime = sTime + iMin + ":"
EndIf
If iSec < 10 Then
sTime = sTime + "0" + iSec
Else
sTime = sTime + iSec
EndIf
GraphicsWindow.FontSize = iTY
GraphicsWindow.BrushColor = sBGColor
GraphicsWindow.FillRectangle(iTX * 1.4 + iTX0, iTY, iTX * 8, iTY)
GraphicsWindow.BrushColor = sFGColor
GraphicsWindow.DrawText(iTX * 1.4 + iTX0, iTY - 3, sTime)
rDegree = (((iHour - rDelta[iCity]) * 60 + iMin) * 60 + iSec) * 360 / iDaySec
Shapes.Rotate(oNorth, -1 * rDegree)
If (iHour = iAHour) And (iMin = iAMin) Then
Sound.PlayChimesAndWait()
EndIf
bTick = "False"
Else
Program.Delay(500)
EndIf
EndWhile

Sub OnTick
iHour = Clock.Hour
iMin = Clock.Minute
iSec = Clock.Second
bTick = "True"
EndSub

Sub TimeTable_Init
sCity[1] = "GST"
rDelta[1] = 0
sCity[2] = "Tokyo"
rDelta[2] = 9
iCities = 2
EndSub