home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / kaypro / realtime.txt < prev    next >
Text File  |  1994-07-13  |  2KB  |  45 lines

  1. TELLING (REAL) TIME
  2. by Editors, AAKUG, July 1987
  3.  
  4. (Accessing the real time clock in '84 Kaypros)
  5.  
  6. In order to access the real time clock (RTC) provided on Kaypro
  7. 4-84, 10-84, and 2X models you will need a language translator
  8. that allows you to "talk" to your computer's i/o ports.  If you
  9. are using MBASIC, these functions are "INP" and "OUT".  Other
  10. languages have similar instructions.
  11.  
  12. In MBASIC, the following sequence of lines will retrieve a single
  13. clock value:
  14.  
  15. 200 OUT 34,  15
  16. 210 OUT 32,  X%
  17. 220 A% = INP(36)
  18.  
  19. where X% equals 9 for the year value, 7 for the month, 6 for the
  20. day of the month, 5 for the day of the week (Sunday is 1), 4 for
  21. the hour (24 hour format), 3 for the minute, 2 for the second and
  22. 1 for hundredths of a second.
  23.  
  24. If you print the value of A% you will find that it looks strange. 
  25. That is because the clock maintains its values in what is called
  26. binary coded decimal.  In binary coded decimal, four bits are
  27. used for each decimal digit, thus the year value of 87 looks like
  28. 1000 0111 in binary coded decimal; the first four bits represent
  29. 8, the second four 7.  If we treat this value as a normal decimal
  30. integer it comes out as 135, which is obviously wrong.
  31.  
  32. To convert binary coded decimal to decimal we can do this:
  33.  
  34. 230 A% = (A% \ 16) * 10 + A% MOD 16
  35.  
  36. or we can mask and shift bits, or we can cheat.  To cheat, we
  37. sneakily convert the retrieved value to a hexadecimal string with
  38. "HEX$" then back to a decimal integer with "VAL".  Line 220 above
  39. should now read:
  40.  
  41. 220 A% = VAL(HEX$(IN6(36)))
  42.  
  43. Now we can have our way with A%, as it is the correct decimal
  44. value.
  45.