home *** CD-ROM | disk | FTP | other *** search
AmigaBASIC Source Code | 1987-05-27 | 4.4 KB | 191 lines |
- REM: Smart Watch Time setting program
- REM: Rich Frantz 3/24/87
- REM:
-
- sclk0 = 8421392 : REM: hex 808010
- sclk1 = sclk0 + 2 : REM: hex 808012
- rclk = 8421400 : REM: hex 808018
-
- DIM i(65) : DIM d(65) :DIM p(65)
- INIT: GOSUB PATT1:
- START: GOSUB RDTM:
- INPUT "Do you want to change the time (Y/N)?";Q$
- IF Q$ = "Y" GOTO START1:
- END
- START1: INPUT "YEAR ";yr
- INPUT "MONTH ";mo
- INPUT "DATE ";dt
- INPUT "DAY of the Week ";dy
- INPUT "HOUR ";hr
- INPUT "MIN. ";min
- GOSUB SETCLK:
- GOSUB RDTM:
- END
-
- REM: This routine will read the SmartWatch
-
- RDTM: GOSUB PATT: : REM: send the 64bit wake-up pattern
- GOSUB RD64: : REM: read the time.
- GOSUB DSPLY:
- RETURN
-
- REM: this routine displays the time
- DSPLY:
- yr = i(57) + 2*i(58) + 4*i(59) + 8*i(60) + 10*i(61) + 20*i(62) + 40*i(63) + 80*i(64)
- mo = i(49) + 2*i(50) + 4*i(51) + 8*i(52) + 10*i(53)
- dt = i(41) + 2*i(42) + 4*i(43) + 8*i(44) + 10*i(45) + 20*i(46)
- dy = i(33) + 2*i(34) + 4*i(35) + 8*i(36)
- hr = i(25) + 2*i(26) + 4*i(27) + 8*i(28) + 10*i(29) + 20*i(30)
- min = i(17) + 2*i(18) + 4*i(19) + 8*i(20) + 10*i(21) + 20*i(22) + 40*i(23)
- sec = i(9) + 2*i(10) + 4*i(11) + 8*i(12) + 10*i(13) + 20*i(14) + 40*i(15)
- dy$ = "DAY OF THE WEEK ERROR"
- IF dy = 1 THEN dy$ = "SUNDAY"
- IF dy = 2 THEN dy$ = "MONDAY"
- IF dy = 3 THEN dy$ = "TUESDAY"
- IF dy = 4 THEN dy$ = "WEDENSDAY"
- IF dy = 5 THEN dy$ = "THURSDAY"
- IF dy = 6 THEN dy$ = "FRIDAY"
- IF dy = 7 THEN dy$ = "SATURDAY"
- IF mo = 1 THEN mo$ = "Jan"
- IF mo = 2 THEN mo$ = "Feb"
- IF mo = 3 THEN mo$ = "Mar"
- IF mo = 4 THEN mo$ = "Apr"
- IF mo = 5 THEN mo$ = "May"
- IF mo = 6 THEN mo$ = "Jun"
- IF mo = 7 THEN mo$ = "Jul"
- IF mo = 8 THEN mo$ = "Aug"
- IF mo = 9 THEN mo$ = "Sep"
- IF mo = 10 THEN mo$ = "Oct"
- IF mo = 11 THEN mo$ = "Nov"
- IF mo = 12 THEN mo$ = "Dec"
- CLS
- PRINT dy$;" , ";mo$;dt; yr + 1900
- PRINT hr;":";min;":";sec
-
- RETURN
-
- REM: this routine will set the SmartWatch
- SETCLK: INPUT "Hit <cr> when ready ";Q$
- GOSUB PATT: : REM: wake-up the SmartWatch
- FOR x = 1 TO 64
- d(x) = 0
- NEXT x
- tempb = yr
- GOSUB BCD:
- FOR x = 1 TO 8
- d(x+56) = b(x)
- NEXT x
- tempb = mo
- GOSUB BCD:
- FOR x = 1 TO 5
- d(x+48) = b(x)
- NEXT x
- tempb = dt
- GOSUB BCD:
- FOR x = 1 TO 6
- d(x+40) = b(x)
- NEXT x
- tempb = dy
- GOSUB BCD:
- FOR x = 1 TO 4
- d(x+32) = b(x)
- NEXT x
- tempb = hr
- GOSUB BCD:
- FOR x = 1 TO 6
- d(x+24) = b(x)
- NEXT x
- tempb = min
- GOSUB BCD:
- FOR x = 1 TO 7
- d(x+16) = b(x)
- NEXT x
- GOSUB SND64:
- RETURN
-
- REM: This routine converts decimal to BCD
-
- BCD: tempc = INT(tempb/10)
- tempb = tempb - tempc * 10
- FOR y = 1 TO 8
- b(y) = 0
- NEXT y
- IF tempb < 8 THEN GOTO BCD1:
- tempb = tempb - 8
- b(4) = 1
- BCD1: IF tempb < 4 THEN GOTO BCD2:
- tempb = tempb - 4
- b(3) = 1
- BCD2: IF tempb < 2 THEN GOTO BCD3:
- tempb = tempb - 2
- b(2) = 1
- BCD3: IF tempb < 1 THEN GOTO BCD4:
- b(1) = 1
- BCD4: IF tempc < 8 THEN GOTO BCD5:
- tempc = tempc - 8
- b(8) = 1
- BCD5: IF tempc < 4 THEN GOTO BCD6:
- tempc = tempc - 4
- b(7) = 1
- BCD6: IF tempc < 2 THEN GOTO BCD7:
- tempc = tempc - 2
- b(6) = 1
- BCD7: IF tempc < 1 THEN GOTO BCD8:
- b(5) = 1
- BCD8: RETURN
-
- REM: This ruotine will wake up the SmartWatch
- PATT: nil = PEEK(rclk)
- FOR x = 1 TO 64
- IF p(x) > 0 THEN GOTO PSND1:
- nil = PEEK (sclk0)
- PATLP:
- NEXT x
- RETURN
- PSND1: nil = PEEK (sclk1)
- GOTO PATLP:
-
- PATT1: FOR x = 1 TO 32
- READ p(x)
- p(x + 32) = p(x) : REM: pattern repeats after 32 bits
- NEXT x
- RESTORE
- RETURN
-
- REM: This routine sends 64 bits to the SmartWatch
- REM: The bits to be sent must be in d(1) thru d(64)
-
- SND64: FOR x = 1 TO 64
- IF d(x) > 0 THEN GOTO SND1:
- nil = PEEK (sclk0)
- SNDLP:
- NEXT x
- RETURN
- SND1: nil = PEEK (sclk1)
- GOTO SNDLP:
-
- REM: This routine receives 64 bits of data from the SmartWatch
- REM: The data is returned as 1's or 0's in i(x)
-
- RD64:
- FOR x = 1 TO 64
- i(x) = PEEK (rclk)
- GOSUB MASKBIT:
- NEXT x
- RETURN
-
- REM: This routine masks all but bit 0 from i(x)
-
- MASKBIT: tempa = INT ( i(x) / 2 )
- IF i(x) = (tempa * 2) THEN GOTO ZERO:
- i(x) = 1
- RETURN
- ZERO: i(x) = 0
- RETURN
-
- DATA 1,0,1,0,0,0,1,1
- DATA 0,1,0,1,1,1,0,0
- DATA 1,1,0,0,0,1,0,1
- DATA 0,0,1,1,1,0,1,0
-
-