home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol131 / time.src < prev    next >
Encoding:
Text File  |  1984-04-29  |  1.4 KB  |  70 lines

  1.     NAME    TIME
  2.     ENTRY    TIME
  3.  
  4. STR_MSB    EQU    09H
  5. CLKBAS    EQU    50H        = CLOCK PORT BASE ADDRESS
  6. CLKCMD    EQU    CLKBAS+10  =   "   COMMAND PORT ADDRESS
  7. CLKDTA    EQU    CLKBAS+11  =   "   DATA     "      "
  8. NO_OP    EQU    00H
  9. RDFREE    EQU    10H
  10. HOLD    EQU    40H
  11. SECS01    EQU    00H
  12. SECS10    EQU    01H
  13. MINS01    EQU    02H
  14. MINS10    EQU    03H
  15. HRS01    EQU    04H
  16. HRS10    EQU    05H
  17. AM_PM    EQU    05H
  18.  
  19. TIME:
  20.     ENTR    D,2,0
  21.     MOV    B,STR_MSB(IX)    FIRST POINT BC TO
  22.     MOV    C,STR_MSB-1(IX)    TOP OF TIMESTRING,THEN
  23.     DCX    B        POINT TO 1ST CHAR IN STRING.
  24.     MVI    A,HOLD        STOP THE CLOCK!
  25.     OUT    CLKCMD
  26.     MVI    A,HRS10        HOURS (TENS) DIGIT READ COMMAND
  27. *                INTO A.
  28.     CALL    GETDIGIT    GET DIGIT FROM CLOCK & PASS
  29. *                TO PASCAL/Z LAND.
  30.     DCX    B
  31.     MVI    A,HRS01        SAME FOR HOURS (ONES) DIGIT
  32.     CALL    GETDIGIT
  33.     DCX    B
  34.     DCX    B
  35.     MVI    A,MINS10    ETC.
  36.     CALL    GETDIGIT
  37.     DCX    B
  38.     MVI    A,MINS01
  39.     CALL    GETDIGIT
  40.     DCX    B
  41.     DCX    B
  42.     MVI    A,SECS10
  43.     CALL    GETDIGIT
  44.     DCX    B
  45.     MVI    A,SECS01
  46.     CALL    GETDIGIT
  47.     MVI    A,NO_OP        RESTART THE CLOCK!
  48.     OUT    CLKCMD
  49.     EXIT    D,2
  50.  
  51.  
  52. * GETDIGIT READS A DIGIT FROM THE CLOCK AND STORES IT IN THE
  53. * APPROPRIATE CHARACTER OF THE PASCAL/Z TIMESTRING.
  54. *    :THE LEAPYEAR AND 24hr MODE BITS ARE MASKED.
  55. *    :ON CALL THE DIGIT COMMAND MUST BE IN A &
  56. *    :AND THE ADDRESS OF THE CHAR IN BC        
  57. GETDIGIT:
  58.     ADI    RDFREE        ADD 'READ' TO COMMAND.
  59.     OUT    CLKCMD
  60.     CPI    RDFREE+HRS10    WAS IT HRS10 ?
  61. *                i.e.WILL IT CONTAIN 24hr BIT?
  62.     IN    CLKDTA        GET DIGIT
  63.     JNZ    NOT_HRS10
  64.     SUI    8        IF IT WAS HRS10 THEN KILL 24hr BIT
  65. NOT_HRS10:
  66.     ADI    30H        CONVERT TO ASCII &
  67.     STAX    B        PLACE IN STRING.
  68.     RET
  69.  
  70.