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

  1.     NAME    DATE
  2.     ENTRY    DATE
  3.  
  4. VBYTES    EQU    05    # OF BYTES ON THE STACK
  5. STR_MSB    EQU    12
  6. DAY_MSB EQU    10
  7. CLKBAS    EQU    50H        = CLOCK PORT BASE ADDRESS
  8. CLKCMD    EQU    CLKBAS+10  =   "   COMMAND PORT ADDRESS
  9. CLKDTA    EQU    CLKBAS+11  =   "   DATA     "      "
  10. NO_OP    EQU    00H
  11. RDFREE    EQU    10H
  12. HOLD    EQU    40H
  13. DAYS01    EQU    07H
  14. DAYS10    EQU    08H
  15. MTHS01    EQU    09H
  16. MTHS10    EQU    0AH
  17. YRS01    EQU    0BH
  18. YRS10    EQU    0CH
  19. LEAPYR    EQU    08H
  20. WKDAY    EQU    06H
  21.  
  22. DATE:
  23.     ENTR    D,2,0
  24.     MOV    B,STR_MSB(IX)    FIRST POINT BC TO
  25.     MOV    C,STR_MSB-1(IX)    TOP OF DATESTRING,THEN
  26.     DCX    B        POINT TO 1ST CHAR IN STRING.
  27.     MVI    A,HOLD        STOP THE CLOCK!
  28.     OUT    CLKCMD
  29.     MVI    A,MTHS10    MONTHS-(TENS)-DIGIT-READ COMMAND
  30. *                INTO A.
  31.     CALL    GETDIGIT    GET DIGIT FROM CLOCK & PASS
  32. *                TO PASCAL/Z LAND.
  33.     DCX    B
  34.     MVI    A,MTHS01    SAME FOR MONTHS (ONES) DIGIT
  35.     CALL    GETDIGIT
  36.     DCX    B        SKIP '/'
  37.     DCX    B
  38.     MVI    A,DAYS10    ETC.
  39.     CALL    GETDIGIT
  40.     DCX    B
  41.     MVI    A,DAYS01
  42.     CALL    GETDIGIT
  43.     DCX    B        SKIP '/',
  44.     DCX    B        | & SKIP
  45.     DCX    B        | CENTURY DIGITS.
  46.     DCX    B
  47.     MVI    A,YRS10
  48.     CALL    GETDIGIT
  49.     DCX    B
  50.     MVI    A,YRS01
  51.     CALL    GETDIGIT
  52.     MOV    B,DAY_MSB(IX)    NOW TO GET THE
  53.     MOV    C,DAY_MSB-1(IX) DAY OF THE WEEK!
  54.     MVI    A,0
  55.     STAX    B        MSB = 0
  56.     DCX    B
  57.     MVI    A,WKDAY
  58.     ADI    RDFREE
  59.     OUT    CLKCMD
  60.     IN    CLKDTA        GET LSB
  61.     STAX    B
  62.     MVI    A,NO_OP        RESTART THE CLOCK!
  63.     OUT    CLKCMD
  64.     EXIT    D,VBYTES
  65.  
  66.  
  67. * GETDIGIT READS A DIGIT FROM THE CLOCK AND STORES IT IN THE
  68. * APPROPRIATE CHARACTER OF THE PASCAL/Z DATESTRING.
  69. *    :ON CALL THE DIGIT COMMAND MUST BE IN A &
  70. *    :AND THE ADDRESS OF THE CHAR IN BC        
  71. GETDIGIT:
  72.     ADI    RDFREE        ADD 'READ' TO COMMAND.
  73.     OUT    CLKCMD
  74.     IN    CLKDTA        GET DIGIT
  75.     ADI    30H        CONVERT TO ASCII &
  76.     STAX    B        PLACE IN STRING.
  77.     RET
  78.  
  79.