home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / PROGRAMS / CLOCKK / MDCLCK13.LBR / READTIME.BZS / READTIME.BAS
BASIC Source File  |  2000-06-30  |  3KB  |  140 lines

  1.  
  2.  
  3.  
  4. 10 'PROGRAM TO READ TIME FROM REAL TIME CLOCK INSTALLED IN
  5. 20 'MORROW REV. 2 BOARD  I/O EXPANSION SLOT. PORTS 30H THROUGH 33H.
  6. 30 '  MIKE ALLEN  7/13/86
  7. 40 '
  8. 50 'N ARRAY HOLDS DATA FROM MSM5832 CHIP. D$ ARRAY HAS NAMES OF DAYS.
  9. 60 '
  10. 70 DIM N(12),D$(6)
  11. 80 '
  12. 90 'FILL NAME OF DAY ARRAY
  13. 100 '
  14. 110 D$(0)="Sunday"
  15. 120 D$(1)="Monday"
  16. 130 D$(2)="Tuesday"
  17. 140 D$(3)="Wednesday"
  18. 150 D$(4)="Thursday"
  19. 160 D$(5)="Friday"
  20. 170 D$(6)="Saturday"
  21. 180 '
  22. 190 'CLEAR SCREEN [^Z]
  23. 200 '
  24. 210 PRINT CHR$(&H1A);
  25. 220 '
  26. 230 'TURN CURSOR OFF [ESC " 6] (MDT60/70)
  27. 240 '
  28. 250 PRINT CHR$(&H1B);CHR$(&H22);CHR$(&H36);
  29. 260 '
  30. 270 'IDENTIFY I/O PORTS FOR 8255
  31. 280 '    PA=PORT A - DATA TO/FROM MSM5832
  32. 290 '    PB=PORT B - ADDRESS TO MSM5832
  33. 300 '    PC=PORT C - CONTROL TO MSM5832
  34. 310 '        BIT 4=HOLD
  35. 320 '        BIT 5=READ
  36. 330 '        BIT 6=WRITE
  37. 340 '        BIT 7=CHIP-SELECT-NOT (0 SELECTS MSM5832)
  38. 350 '
  39. 360 PA=&H30:PB=&H31:PC=&H32:CTRL=&H33
  40. 370 '
  41. 380 'TELL 8255 TO OPERATE IN MODE 0 (SIMPLEST)
  42. 390 '    PORT A IS INPUT
  43. 400 '    PORTS B & C ARE OUTPUT
  44. 410 '
  45. 420 OUT CTRL,&H90
  46. 430 '
  47. 440 'SET READ LINE TO MSM5832 TRUE
  48. 450 '    (ALSO SETS CHIP-SELECT-NOT TO 0 TO ENABLE MSM5832)
  49. 460 '
  50. 470 OUT PC,&H20
  51. 480 FOR A=0 TO 12
  52. 490 '
  53. 500 'ADDRESS THE 13 REGISTERS IN THE MSM5832
  54. 510 'READ THE DATA FROM EACH REGISTER INTO N ARRAY
  55. 520 '
  56. 530 OUT PB,A:N(A)=INP(PA)
  57. 540 NEXT A
  58. 550 '
  59. 560 'TURN OFF THE READ LINE TO THE MSM5832
  60. 570 '
  61. 580 OUT PC,&H0
  62. 590 '
  63. 600 'HOME THE CURSOR (^^)
  64. 610 '
  65. 620 PRINT CHR$(&H1E);
  66. 630 PRINT "DATE: ";
  67. 640 '
  68. 650 'PRINT DAY OF WEEK
  69. 660 '
  70. 670 PRINT D$(N(6));", ";
  71. 680 '
  72. 690 'IF MONTH IS 10, 11 OR 12, PRINT TENS DIGIT
  73. 700 '
  74. 710 IF N(10)> 0 THEN PRINT USING "#";N(10);
  75. 720 '
  76. 730 'PRINT ONES DIGIT OF MONTH AND THE '/'
  77. 740 '
  78. 750 PRINT USING "#/";N(9);
  79. 760 '
  80. 770 'IF DAY OF MONTH GREATER THAN 9, PRINT TENS DIGIT
  81. 780 '
  82. 790 IF N(8)>0 THEN PRINT USING "#";N(8);
  83. 800 '
  84. 810 'PRINT ONES DIGIT OF DAY OF MONTH, '/' AND TENS DIGIT OF YEAR
  85. 820 '
  86. 830 PRINT USING "#/#";N(7);N(12);
  87. 840 '
  88. 850 'PRINT ONES DIGIT OF YEAR
  89. 860 '
  90. 870 PRINT USING "#";N(11)
  91. 880 PRINT "TIME: ";
  92. 890 '
  93. 900 'SET TAG TO DEFAULT. (IF IT AIN'T 24 HOUR TIME OR PM IS MUST BE AM!)
  94. 910 '
  95. 920 TAG$=" AM"
  96. 930 '
  97. 940 'STRIP 24 HR. BIT. SET TAG TO HRS IF IT IS SET.
  98. 950 '
  99. 960 IF N(5)>7 THEN N(5)=N(5)-8:TAG$=" HRS."
  100. 970 '
  101. 980 'STRIP PM BIT. SET TAG TO PM IF IT IS SET.
  102. 990 '
  103. 1000 IF N(5)>3 THEN N(5)=N(5)-4:TAG$=" PM"
  104. 1010 '
  105. 1020 'SUPPRESS LEADING 0 IN HOURS IF NOT IN 24 HOUR TIME
  106. 1030 '
  107. 1040 IF ((TAG$ <> " HRS.") AND (N(5) = 0)) THEN GOTO 1120
  108. 1050 '
  109. 1060 'PRINT TENS OF HOURS
  110. 1070 '
  111. 1080 PRINT USING "#";N(5);
  112. 1090 '
  113. 1100 'PRINT ONES OF HOURS, MINUTES, TENS OF SECONDS WITH COLONS
  114. 1110 '
  115. 1120 PRINT USING "#:#";N(4);N(3);N(2);N(1);
  116. 1130 '
  117. 1140 'PRINT ONES OF SECONDS
  118. 1150 '
  119. 1160 PRINT USING "#";N(0);
  120. 1170 '
  121. 1180 'LOOP UNTIL KEY IS PRESSED
  122. 1190 '
  123. 1200 IF INKEY$="" THEN GOTO 470
  124. 1210 '
  125. 1220 'CLEAR SCREEN [^Z]
  126. 1230 '
  127. 1240 PRINT CHR$(&H1A);
  128. 1250 '
  129. 1260 'RESTORE CURSOR [ESC " 0]  (MDT60/70)
  130. 1270 '
  131. 1280 PRINT CHR$(&H1B);CHR$(&H22);CHR$(&H30);
  132. 1290 '
  133. 1300 'EXIT TO CP/M
  134. 1310 '
  135. 1320 SYSTEM
  136. 1330 END
  137.   (MDT60/70)
  138. 1270 '
  139. 1280 PRINT CHR$(&H1B);CHR$(&H22);CHR$(&H30);
  140.