home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 1B / DATAFILE_PDCD1B.iso / _pocketbk / pocketbook / 004 / oplexamp_z / TIME2.OPL < prev    next >
Text File  |  1992-08-27  |  2KB  |  114 lines

  1. REM TIME2.OPL by Mark Emery / Psion Tech Support.
  2. REM A time and date setting program based on source
  3. REM code supplied by Psion Technical Support Team.
  4. REM Changes made: Shorten some variables, make some
  5. REM variables ints.
  6.  
  7. REM Remove this APP header if you dont want to create
  8. REM an application.
  9.  
  10. APP time2
  11. ICON "\opd\time2.pic"
  12. ENDA
  13.  
  14. PROC time:
  15. GLOBAL AM12HR%
  16. GLOBAL PM12HR%
  17. GLOBAL T24HR%
  18. LOCAL er%
  19.  
  20.     AM12HR%=1
  21.     PM12HR%=2
  22.     T24HR%=4
  23.  
  24.     PRINT "Setting time."
  25.  
  26. REM Change this line to show the correct time.
  27.  
  28.     er%=ossettm%:(13,25,00,T24HR%)
  29.  
  30.     IF er% < 0
  31.         PRINT "Error =",er%
  32.         GET
  33.         STOP
  34.     ENDIF
  35.     
  36.     PRINT "Setting Date."
  37.  
  38. REM Change this line to show the correct date.
  39.  
  40.     er%=ossetdt%:(17,1,1992)
  41.  
  42.     IF er% < 0
  43.         PRINT "Error =",er%
  44.         GET
  45.         STOP
  46.     ENDIF
  47.     
  48.     PRINT "Done"
  49.     GET
  50. ENDP
  51.  
  52. PROC ossettm%:(hh%,mm%,ss%,md%)
  53. LOCAL hr%
  54.  
  55.     IF md%<AM12HR% OR md%>T24HR% OR hh%<0 OR mm%<0 OR SS%<0
  56.         RETURN -2
  57.     ENDIF
  58.     hr%=hh%
  59.     IF (md%=AM12HR% OR md%=PM12HR%)
  60.         IF (hr%<1 OR hr%>12)
  61.             RETURN -2
  62.         ELSEIF md% = AM12HR% AND hr%=12
  63.             hr%=0
  64.         ELSEIF md%=PM12HR% AND hr%<>12
  65.             hr%=hr%+12
  66.         ENDIF
  67.     ELSEIF md%=T24HR% AND hr%>23
  68.         RETURN -2
  69.     ENDIF
  70.     IF mm%<=59 AND SS%<=59
  71.         RETURN setdttm%:(DAY,MONTH,YEAR,hr%,mm%,ss%)
  72.     ENDIF
  73.     RETURN -2
  74. ENDP
  75.  
  76. PROC ossetdt%:(dd%,mm%,yyyy%)
  77.     RETURN setdttm%:(dd%,mm%,yyyy%,HOUR,MINUTE,SECOND)
  78. ENDP
  79.  
  80. PROC setdttm%:(day%,month%,year%,hr%,min%,sec%)
  81. LOCAL ax%,bx%,cx%,dx%,si%,di%
  82. LOCAL sec&
  83.     IF year%>=1970
  84.         onerr e::
  85.  
  86. REM Calculate the number of seconds elapsed between 00:00 on 1st Jan 1970.
  87.  
  88.     sec&=((days(day%,month%,year%)-25567)*86400) + (hr%*&e10+min%*60+sec%)
  89.  
  90. REM Psions comment to the above. /* seconds since 01/01/1970 00:00:00
  91. REM 25567 = days (01/01/1970) 86400 = seconds in a day (24*60*60)
  92. REM &e10 = 3600 (seconds in an hour) */
  93.  
  94. REM Put MS Word into cx, LS word into dx and "TimSetSystem" value into
  95. REM dx. TimSetSystem is function 3 of TimManager.
  96.  
  97.         cx%=peekw(addr(sec&)+2)
  98.         dx%=peekw(addr(sec&))
  99.         ax%=$0300
  100.  
  101. REM $89 = TimManager interrupt - no flags returned
  102.  
  103.         os($89,addr(ax%))
  104.  
  105.         RETURN 0
  106.     ENDIF
  107.  
  108. REM Jump here if error.
  109.  
  110.     e::
  111.     ONERR OFF
  112.     RETURN -2
  113. ENDP
  114.