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

  1.  
  2.     REM *************************************************************
  3.     REM *                                *
  4.     REM *    SYSTEM SUPPORT 1 BOARD CLOCK FUNCTIONS            *
  5.     REM *    BY BILL BOLTON, Software Tools, Australia        *
  6.     REM *    VERSION 1.0    JAN 17,1982    SUBROUTINES FOR MBASIC    *
  7.     REM *    VERSION 1.0    JAN 18,1982    INITIAL REL FOR CB80    *
  8.     REM *                                *
  9.     REM *************************************************************
  10.  
  11.     REM -------------------------------------------------------------
  12.  
  13.     DEF TIME$
  14.     
  15.     INTEGER BASEPORT,CMDPORT,DATAPORT,CREAD
  16.     STRING LOCAL.TIME
  17.  
  18.     REM *************************************************************
  19.     REM *        LOCAL VARIABLES USED IN TIME$            *
  20.     REM *                                *
  21.     REM *BASEPORT    SYSTEM SUPPORT 1 BOARD BASE PORT ADDRESS    *
  22.     REM *CMDPORT    SS1 CLOCK COMMAND PORT ADDRESS            *
  23.     REM *DATAPORT    SS1 CLOCK DATA PORT ADDRESS            *
  24.     REM *CREAD    SS1 CLOCK READ MASK                *
  25.     REM *HOURS10    TENS OF HOURS DIGIT                *
  26.     REM *HOURS1    UNIT HOURS DIGIT                *
  27.     REM *MINUTES10    TENS OF MINUTES DIGIT                *
  28.     REM *MINUTES1    UNIT MINUTES DIGIT                *
  29.     REM *SECONDS10    TENS OF SECONDS DIGIT                *
  30.     REM *SECONDS1    UNIT SECONDS DIGIT                *
  31.     REM *LOCAL.TIME    TIME OF DAY STRING IN HH:MM:SS FORMAT        *
  32.     REM *************************************************************
  33.  
  34.     BASEPORT = 50H
  35.     CMDPORT = BASEPORT + 10
  36.     DATAPORT = CMDPORT + 1
  37.     CREAD = 10H
  38.  
  39.     REM *************************************************************
  40.     REM *        READ THE TIME DIGITS                *
  41.     REM *************************************************************
  42.  
  43.     OUT CMDPORT,(CREAD + 5)
  44.     LOCAL.TIME = STR$((INP(DATAPORT) AND 3))
  45.     OUT CMDPORT,(CREAD + 4)
  46.     LOCAL.TIME = LOCAL.TIME + STR$(INP(DATAPORT)) + ":"
  47.     OUT CMDPORT,(CREAD + 3)
  48.     LOCAL.TIME = LOCAL.TIME + STR$((INP(DATAPORT)) AND 7H)
  49.     OUT CMDPORT,(CREAD + 2)
  50.     LOCAL.TIME = LOCAL.TIME + STR$(INP(DATAPORT)) + ":" 
  51.     OUT CMDPORT,(CREAD + 1) 
  52.     LOCAL.TIME = LOCAL.TIME + STR$(INP(DATAPORT))
  53.     OUT CMDPORT,(CREAD + 0)
  54.     LOCAL.TIME = LOCAL.TIME + STR$(INP(DATAPORT))
  55.  
  56.     TIME$ = LOCAL.TIME
  57.     RETURN
  58.     FEND
  59.  
  60.     REM ------------------------------------------------------------
  61.  
  62.     DEF WDAY$
  63.     INTEGER BASEPORT,CMDPORT,DATPORT,CREAD,WEEKDAY
  64.     
  65.     REM *************************************************************
  66.     REM *        LOCAL VARIABLES USED IN WDAY$            *
  67.     REM *                                *
  68.     REM *BASEPORT    SYSTEM SUPPORT 1 BOARD BASE PORT ADDRESS    *
  69.     REM *CMDPORT    SS1 CLOCK COMMAND PORT ADDRESS            *
  70.     REM *DATAPORT    SS1 CLOCK DATA PORT ADDRESS            *
  71.     REM *CREAD    SS1 CLOCK READ MASK                *
  72.     REM *WEEKDAY    DAY OF WEEK DIGIT                *
  73.     REM *WDAY$    DAY OF WEEK NAME STRING                *
  74.     REM *************************************************************
  75.  
  76.     BASEPORT = 50H
  77.     CMDPORT = BASEPORT + 10
  78.     DATAPORT = CMDPORT + 1
  79.     CREAD = 10H
  80.  
  81.     REM *************************************************************
  82.     REM *    READ THE WEEKDAY DIGIT AND CONVERT IT TO A        *
  83.     REM *               DAY NAME STRING                *
  84.     REM *************************************************************
  85.  
  86.     OUT CMDPORT,(10H + 6)
  87.     WEEKDAY = INP(DATAPORT)
  88.     OUT CMDPORT,0
  89.     IF WEEKDAY = 0 THEN WDAY$ = "Sunday"
  90.     IF WEEKDAY = 1 THEN WDAY$ = "Monday"
  91.     IF WEEKDAY = 2 THEN WDAY$ = "Tuesday"
  92.     IF WEEKDAY = 3 THEN WDAY$ = "Wednesday"
  93.     IF WEEKDAY = 4 THEN WDAY$ = "Thursday"
  94.     IF WEEKDAY = 5 THEN WDAY$ = "Friday"
  95.     IF WEEKDAY = 6 THEN WDAY$ = "Saturday"
  96.  
  97.     RETURN
  98.     FEND
  99.  
  100.     REM -------------------------------------------------------------
  101.  
  102.     DEF DATE1$
  103.     INTEGER BASEPORT,CMDPORT,DATAPORT,CREAD
  104.     INTEGER YEAR10,YEAR1,MONTH10,MONTH1,DAY10,DAY1
  105.  
  106.     REM *************************************************************
  107.     REM *        LOCAL VARIABLES FOR DATE1$            *
  108.     REM *                                *
  109.     REM *BASEPORT    SYSTEM SUPPORT 1 BOARD BASE PORT ADDRESS    *
  110.     REM *CMDPORT    SS1 CLOCK COMMAND PORT ADDRESS            *
  111.     REM *DATAPORT    SS1 CLOCK DATA PORT ADDRESS            *
  112.     REM *CREAD    SS1 CLOCK READ MASK                *
  113.     REM *YEAR10    TENS OF    YEARS INTEGER                *
  114.     REM *YEAR1    UNIT YEAR INTEGER                *
  115.     REM *MONTH10    TENS OF MONTHS INTEGER                *
  116.     REM *MONTH1    UNIT MONTH INTEGER                *
  117.     REM *DAY10    TENS OF DAYS INTEGER                *
  118.     REM *DAY    UNIT DAY INTEGER                *
  119.     REM *************************************************************
  120.  
  121.     BASEPORT = 50H
  122.     CMDPORT = BASEPORT + 10
  123.     DATAPORT = CMDPORT + 1
  124.     CREAD = 10H
  125.  
  126.     REM *************************************************************
  127.     REM *        READ THE DATE DIGITS                *
  128.     REM *************************************************************
  129.  
  130.     OUT CMDPORT,(CREAD + 9)
  131.     MONTH1 = INP(DATAPORT)
  132.     OUT CMDPORT,(CREAD + 10)
  133.     MONTH10 = ((INP(DATAPORT) AND 1) * 10)
  134.     OUT CMDPORT,(CREAD + 7)
  135.     DAY1 = INP(DATAPORT)
  136.     OUT CMDPORT,(CREAD + 8)
  137.     DAY10 = ((INP(DATAPORT) AND 3) * 10)
  138.     OUT CMDPORT,(CREAD + 11)
  139.     YEAR1 = INP(DATAPORT)
  140.     OUT CMDPORT,(CREAD + 12)
  141.     YEAR10 = (INP(DATAPORT) * 10)
  142.     OUT CMDPORT,0
  143.  
  144.     REM *************************************************************
  145.     REM *        FORMAT THE FIRST DATE STRING            *
  146.     REM *************************************************************
  147.  
  148.     DATE1$ = STR$(DAY10 + DAY1) + "/" + STR$(MONTH10 + MONTH1)\
  149.             + "/" + STR$(YEAR10 + YEAR1)
  150.  
  151.     RETURN
  152.     FEND
  153.  
  154.     REM -------------------------------------------------------------
  155.  
  156.     DEF DATE2$
  157.     INTEGER BASEPORT,CMDPORT,DATAPORT,CREAD
  158.     INTEGER YEAR10,YEAR1,MONTH10,MONTH1,MONTH,DAY10,DAY1
  159.     STRING MONTH.NAME
  160.  
  161.     REM *************************************************************
  162.     REM *        LOCAL VARIABLES FOR DATE2$            *
  163.     REM *                                *
  164.     REM *BASEPORT    SYSTEM SUPPORT 1 BOARD BASE PORT ADDRESS    *
  165.     REM *CMDPORT    SS1 CLOCK COMMAND PORT ADDRESS            *
  166.     REM *DATAPORT    SS1 CLOCK DATA PORT ADDRESS            *
  167.     REM *CREAD    SS1 CLOCK READ MASK                *
  168.     REM *YEAR10    TENS OF    YEARS INTEGER                *
  169.     REM *YEAR1    UNIT YEAR INTEGER                *
  170.     REM *MONTH10    TENS OF MONTHS INTEGER                *
  171.     REM *MONTH1    UNIT MONTH INTEGER                *
  172.     REM *MONTH    MONTH INTEGER                    *
  173.     REM *DAY10    TENS OF DAYS INTEGER                *
  174.     REM *DAY    UNIT DAY INTEGER                *
  175.     REM *MONTH.NAME NAME OF THE MONTH STRING            *
  176.     REM *************************************************************
  177.  
  178.     BASEPORT = 50H
  179.     CMDPORT = BASEPORT + 10
  180.     DATAPORT = CMDPORT + 1
  181.     CREAD = 10H
  182.  
  183.     REM *************************************************************
  184.     REM *        FORMAT THE SECOND DATE STRING            *
  185.     REM *************************************************************
  186.  
  187.     OUT CMDPORT,(CREAD + 9)
  188.     MONTH1 = INP(DATAPORT)
  189.     OUT CMDPORT,(CREAD + 10)
  190.     MONTH10 = ((INP(DATAPORT) AND 1H) * 10)
  191.     OUT CMDPORT,(CREAD + 7)
  192.     DAY1 = INP(DATAPORT)
  193.     OUT CMDPORT,(CREAD + 8)
  194.     DAY10 = ((INP(DATAPORT) AND 3H) * 10)
  195.     OUT CMDPORT,(CREAD + 11)
  196.     YEAR1 = INP(DATAPORT)
  197.     OUT CMDPORT,(CREAD + 12)
  198.     YEAR10 = (INP(DATAPORT) * 10)
  199.     OUT CMDPORT,0
  200.  
  201.     MONTH = MONTH10 + MONTH1
  202.  
  203.     IF MONTH = 1 THEN MONTH.NAME = "January"
  204.     IF MONTH = 2 THEN MONTH.NAME = "February"
  205.     IF MONTH = 3 THEN MONTH.NAME = "March"
  206.     IF MONTH = 4 THEN MONTH.NAME = "April"
  207.     IF MONTH = 5 THEN MONTH.NAME = "May"
  208.     IF MONTH = 6 THEN MONTH.NAME = "June"
  209.     IF MONTH = 7 THEN MONTH.NAME = "July"
  210.     IF MONTH = 8 THEN MONTH.NAME = "August"
  211.     IF MONTH = 9 THEN MONTH.NAME = "September"
  212.     IF MONTH = 10 THEN MONTH.NAME = "October"
  213.     IF MONTH = 11 THEN MONTH.NAME = "November"
  214.     IF MONTH = 12 THEN MONTH.NAME = "December"
  215.  
  216.     DATE2$ = MONTH.NAME + " " + STR$(DAY10 + DAY1) \
  217.             + ", 19" + STR$(YEAR10 + YEAR1)
  218.  
  219.     RETURN
  220.     FEND
  221.  
  222.     REM -------------------------------------------------------------
  223.  
  224.     REM *************************************************************
  225.     REM *        EXAMPLES OF DISPLAYING TIME AND DATE IN        *
  226.     REM *            TWO DIFFERENT FORMATS            *
  227.     REM *                                *
  228.     REM * PRINT "The time is ";LOCAL.TIME;" on ";WDAY$;" ";DATE1$    *
  229.     REM * PRINT "The time is ";LOCAL.TIME;" on ";WDAY$;" ";DATE2$    *
  230.     REM *************************************************************
  231.  
  232.     PRINT "BASIC CLOCK SUBROUTINE DEMONSTRATION PROGRAM"
  233.     PRINT "The time is ";TIME$;" on ";WDAY$;" ";DATE1$
  234.     PRINT "The time is ";TIME$;" on ";WDAY$;" ";DATE2$
  235.     PRINT
  236.     END
  237.