home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol074 / clock-m.bas < prev    next >
BASIC Source File  |  1984-04-29  |  6KB  |  147 lines

  1. 100 DIM TOD(5),DOY(5)
  2. 120 PRINT "BASIC CLOCK SUBROUTINE DEMONSTRATION PROGRAM"
  3. 130 GOSUB 10000
  4. 140 PRINT "The time is ";TIME$;" on ";WDAY$;" ";DATE1$
  5. 150 PRINT "The time is ";TIME$;" on ";WDAY$;" ";DATE2$
  6. 160 PRINT
  7. 170 END
  8. 10000 '******************************************************************
  9. 10010 '*                                *
  10. 10020 '*    SYSTEM SUPPORT 1 BOARD CLOCK SUBROUTINES        *
  11. 10030 '*    BY BILL BOLTON, Software Tools, Australia        *
  12. 10040 '*    VERSION 1.0    JAN 17,1982    INITIAL RELEASE        *
  13. 10050 '*                                *
  14. 10060 '*        VARIABLES USED IN THESE ROUTINES        *
  15. 10070 '*        IN APPROXIMATE ORDER OF APPEARANCE        *
  16. 10080 '*                                *
  17. 10090 '*TOD        STORAGE ARRAY FOR TIME OF DAY (TOD) DIGITS    *
  18. 10100 '*DOY        STORAGE ARRAY FOR DAY OF YEAR (DOY) DIGITS    *
  19. 10110 '*BASEPORT    SYSTEM SUPPORT 1 BOARD BASE PORT ADDRESS    *
  20. 10120 '*CMDPORT        SS1 CLOCK COMMAND PORT ADDRESS            *
  21. 10130 '*DATAPORT    SS1 CLOCK DATA PORT ADDRESS            *
  22. 10140 '*HOURS10        TENS OF HOURS DIGIT                *
  23. 10150 '*HOURS1        UNIT HOURS DIGIT                *
  24. 10160 '*MINUTES10    TENS OF MINUTES DIGIT                *
  25. 10170 '*MINUTES1    UNIT MINUTES DIGIT                *
  26. 10180 '*SECONDS10    TENS OF SECONDS DIGIT                *
  27. 10190 '*SECONDS1    UNIT SECONDS DIGIT                *
  28. 10200 '*TIME$        TIME OF DAY STRING IN HH:MM:SS FORMAT        *
  29. 10210 '*WEEKDAY        DAY OF WEEK DIGIT                *
  30. 10220 '*WDAY$        DAY OF WEEK NAME STRING                *
  31. 10230 '*YEAR        YEAR INTEGER                    *
  32. 10240 '*MONTH10        TENS OF MONTHS DIGIT                *
  33. 10250 '*MONTH1        UNIT MONTHS DIGIT                *
  34. 10260 '*DAY10        TENS OF DAYS DIGIT                *
  35. 10270 '*DAY1        UNIT DAYS DIGIT                    *
  36. 10280 '*DATE1$        DATE STRING IN DD/MM/YY FORMAT            *
  37. 10290 '*MONTH        MONTH INTEGER                    *
  38. 10300 '*DATE2$        DATE STRING IN MONTH DD,19YY FORMAT        *
  39. 10310 '*TDAY$        TEMPORARY DAY STRING                *
  40. 10320 '*                                *
  41. 10330 '*        ###### NOTE ######                *
  42. 10340 '*                                *
  43. 10350 '* THE FOLLOWING ARRAYS MUST BE DIMENSIONED IN THE MAIN BODY    *
  44. 10360 '* THE PROGRAM CALLING THESE SUBROUTINES                *
  45. 10370 '*                                *
  46. 10380 '* DIM TOD(5)                            *
  47. 10390 '* DIM DOY(5)                            *
  48. 10400 '*                                *
  49. 10410 '******************************************************************
  50. 10420 BASEPORT = &H50
  51. 10430 CMDPORT = BASEPORT + 10
  52. 10440 DATAPORT = CMDPORT + 1
  53. 10450 '**********************************************************
  54. 10460 '*        READ THE TIME DIGITS            *
  55. 10470 '**********************************************************
  56. 10480 FOR DIGIT = 5 TO 0 STEP -1
  57. 10490    OUT CMDPORT,(&H10 + DIGIT)
  58. 10500    TOD(DIGIT) = INP(DATAPORT)
  59. 10510    IF DIGIT = 5 THEN TOD(DIGIT) = TOD(DIGIT) AND 3
  60. 10520 NEXT DIGIT
  61. 10530 HOURS10 = TOD(5)
  62. 10540 HOURS1  = TOD(4)
  63. 10550 MINUTES10 = TOD(3)
  64. 10560 MINUTES1  = TOD(2)
  65. 10570 SECONDS10 = TOD(1)
  66. 10580 SECONDS1  = TOD(0)
  67. 10590 '**********************************************************
  68. 10600 '*        FORMAT THE TIME STRING            *
  69. 10610 '**********************************************************
  70. 10620 TIME$="        "
  71. 10630 MID$(TIME$,1,1) = RIGHT$(STR$(HOURS10),1)
  72. 10640 MID$(TIME$,2,1) = RIGHT$(STR$(HOURS1),1)
  73. 10650 MID$(TIME$,3,1) = ":"
  74. 10660 MID$(TIME$,4,1) = RIGHT$(STR$(MINUTES10),1)
  75. 10670 MID$(TIME$,5,1) = RIGHT$(STR$(MINUTES1),1)
  76. 10680 MID$(TIME$,6,1) = ":"
  77. 10690 MID$(TIME$,7,1) = RIGHT$(STR$(SECONDS10),1)
  78. 10700 MID$(TIME$,8,1) = RIGHT$(STR$(SECONDS1),1)
  79. 10710 '**********************************************************
  80. 10720 '*    READ THE WEEKDAY DIGIT AND CONVERT IT TO A    *
  81. 10730 '*               DAY NAME STRING                *
  82. 10740 '**********************************************************
  83. 10750 OUT CMDPORT,(&H10 + 6)
  84. 10760 WEEKDAY = INP(DATAPORT)
  85. 10770 IF WEEKDAY = 0 THEN WDAY$ = "Sunday"
  86. 10780 IF WEEKDAY = 1 THEN WDAY$ = "Monday"
  87. 10790 IF WEEKDAY = 2 THEN WDAY$ = "Tuesday"
  88. 10800 IF WEEKDAY = 3 THEN WDAY$ = "Wednesday"
  89. 10810 IF WEEKDAY = 4 THEN WDAY$ = "Thursday"
  90. 10820 IF WEEKDAY = 5 THEN WDAY$ = "Friday"
  91. 10830 IF WEEKDAY = 6 THEN WDAY$ = "Saturday"
  92. 10840 '**********************************************************
  93. 10850 '*        READ THE DATE DIGITS            *
  94. 10860 '**********************************************************
  95. 10870 FOR DIGIT = 12 TO 7 STEP -1
  96. 10880    OUT CMDPORT,(&H10 + DIGIT)
  97. 10890    DOY(DIGIT - 7) = INP(DATAPORT)
  98. 10900 NEXT DIGIT
  99. 10910 YEAR= (DOY(5) * 10) + DOY(4)
  100. 10920 MONTH10 = DOY(3)
  101. 10930 MONTH1  = DOY(2)
  102. 10940 DAY10 = DOY(1)
  103. 10950 DAY1  = DOY(0)
  104. 10960 '**********************************************************
  105. 10970 '*        FORMAT THE FIRST DATE STRING        *
  106. 10980 '**********************************************************
  107. 10990 DATE1$="        "
  108. 11000 MID$(DATE1$,1,1) = RIGHT$(STR$(DAY10),1)
  109. 11010 MID$(DATE1$,2,1) = RIGHT$(STR$(DAY1),1)
  110. 11020 MID$(DATE1$,3,1) = "/"
  111. 11030 MID$(DATE1$,4,1) = RIGHT$(STR$(MONTH10),1)
  112. 11040 MID$(DATE1$,5,1) = RIGHT$(STR$(MONTH1),1)
  113. 11050 MID$(DATE1$,6,1) = "/"
  114. 11060 MID$(DATE1$,7,2) = RIGHT$(STR$(YEAR),2)
  115. 11070 MONTH = (MONTH10 * 10) + MONTH1
  116. 11080 '**********************************************************
  117. 11090 '*        FORMAT THE SECOND DATE STRING        *
  118. 11100 '**********************************************************
  119. 11110 IF MONTH = 1 THEN MONTH$ = "January"
  120. 11120 IF MONTH = 2 THEN MONTH$ = "February"
  121. 11130 IF MONTH = 3 THEN MONTH$ = "March"
  122. 11140 IF MONTH = 4 THEN MONTH$ = "April"
  123. 11150 IF MONTH = 5 THEN MONTH$ = "May"
  124. 11160 IF MONTH = 6 THEN MONTH$ = "June"
  125. 11170 IF MONTH = 7 THEN MONTH$ = "July"
  126. 11180 IF MONTH = 8 THEN MONTH$ = "August"
  127. 11190 IF MONTH = 9 THEN MONTH$ = "September"
  128. 11200 IF MONTH = 10 THEN MONTH$ = "October"
  129. 11210 IF MONTH = 11 THEN MONTH$ = "November"
  130. 11220 IF MONTH = 12 THEN MONTH$ = "December"
  131. 11230 DATE2$ = "                               "
  132. 11240 TDAY$ = STR$((DAY10 * 10) + DAY1)
  133. 11250 TDAY$ = RIGHT$(TDAY$,LEN(TDAY$)-1)
  134. 11260 MID$(DATE2$,1) = MONTH$
  135. 11270 MID$(DATE2$,LEN(MONTH$)+1,1) = " "
  136. 11280 MID$(DATE2$,LEN(MONTH$)+2,LEN(TDAY$)) = TDAY$
  137. 11290 MID$(DATE2$,LEN(MONTH$) + LEN(TDAY$) + 2,4) = ", 19"
  138. 11300 MID$(DATE2$,LEN(MONTH$)+8,2) = RIGHT$(DATE1$,2)
  139. 11310 '**********************************************************
  140. 11320 '*    EXAMPLES OF DISPLAYING TIME AND DATE IN        *
  141. 11330 '*        TWO DIFFERENT FORMATS            *
  142. 11340 '*                            *
  143. 11350 '* PRINT "The time is ";TIME$;" on ";WDAY$;" ";DATE1$    *
  144. 11360 '* PRINT "The time is ";TIME$;" on ";WDAY$;" ";DATE2$    *
  145. 11370 '**********************************************************
  146. 11380 RETURN
  147.