home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / utils / datestmp / setdds.lbr / SETDDS.ZZ0 / SETDDS.Z80
Text File  |  1988-02-13  |  3KB  |  111 lines

  1. ;    Patches SETD22.COM for Plu*Perfect DateStamper, written
  2. ;    February 11, 1988 by Bruce Morgen
  3.  
  4. ;    Patch  and overlay file for SETD20.  To use,  modify EURO and
  5. ;    OVERWR bytes as desired.  If your system has a clock, you may
  6. ;    code a routine to get the date at getdate.  If you do so, you
  7. ;    should change the byte at  DATEREQ to 0.  Otherwise, leave it
  8. ;    at 0FFh.
  9.  
  10. ;    Assemble to SETDDS.HEX with ZAS, Z80ASM, Z80MR (rename this file
  11. ;    to SETDDS.AZM for Z80MR), etc.    Load with Ron Fowler's MLOAD:
  12.  
  13. ;        MLOAD SETD.COM,SETDDS
  14.  
  15.     ORG    100H
  16.     DS    3        ; Leave here (space for jmp to start of
  17.                 ; SETD itself)
  18. EUROMODE:
  19.     DB    0        ; Change to 0FFh for default euro mode
  20.                 ; [don't change for this overlay unless
  21.                 ; you reverse the (MONTH) & (DAY) loads
  22.                 ; on lines 45 & 47! - b/m]
  23. OVERWRMODE:
  24.     DB    0        ; Change to 0FFh for default overwr mode
  25.  
  26. DATE:    DW    0        ; This is where the system date should go.
  27.  
  28. DATEREQ:DB    0        ; If you code a routine below to access the
  29.                 ; System date, or use the CPM/3 function
  30.                 ; Below, you must change this to 0.
  31.  
  32. GETDATE:;RET            ; And delete this RET!
  33.  
  34. ;    ADDING CLOCK SUPPORT:
  35. ;
  36. ;    Support for a system clock may be added here. If your system has
  37. ;    a clock, simply add the routine to access it. You have about 127
  38. ;    bytes in which to do so.  The format of the date is an integer
  39. ;    number of days since January 1, 1978.  This number must be placed
  40. ;    in DATE, above.
  41.  
  42.     CALL    GETTIME
  43.     LD    HL,ASCII-1
  44.     LD    A,(MONTH)
  45.     CALL    STORE        ; Store month in memory variable
  46.     LD    A,(DAY)
  47.     CALL    STORE        ; Store day in memory variable
  48.     LD    A,(YEAR)
  49.     CALL    STORE
  50.     LD    HL,ASCII        ; Point HL at "ASCII:"
  51.     JP    893H        ; Let SETD's code convert to DRI
  52.                 ; DRI format and store in "DATE:"
  53.  
  54. ;    Store ASCII in memory variables
  55.  
  56. STORE:    LD    B,A        ; Stash BCD in B
  57. LOOP:    RRCA            ; Exchange nybbles
  58.     RRCA
  59.     RRCA
  60.     RRCA
  61.     CALL    MASKER
  62.     DEC    HL        ; Adj. ptr.
  63.     LD    A,B        ; Get other nybble
  64. ;    fall    through
  65. MASKER:    AND    0FH        ; Mask
  66.     ADD    A,'0'        ; ASCII
  67.     INC    HL        ; Bump pointer
  68.     LD    (HL),A        ; Store
  69.     INC    HL        ; Skip "/"
  70.     RET
  71.  
  72. GETTIME:
  73.     LD    E,'D'
  74.     LD    C,12
  75.     CALL    005H
  76.     CP    22H
  77.     JR    NZ,NODS
  78.     LD    A,H
  79.     CP    'D'
  80.     JR    NZ,NODS
  81.     PUSH    DE
  82.     POP    IX
  83.     LD    HL,TIMSTR
  84.     JP    (IX)
  85.  
  86. NODS:    LD    DE,NODSMSG
  87.     LD    C,9
  88.     CALL    005H
  89.     RST    0
  90. ASCII:
  91.     DS    2
  92.     DB    '/'
  93.     DS    2
  94.     DB    '/'
  95.     DS    2
  96.     DB    0        ; SETD routine needs terminator
  97.  
  98. TIMSTR:
  99. YEAR:    DS    1
  100. MONTH:    DS    1
  101. DAY:    DS    1
  102.     DS    3
  103.  
  104.     ORG    TIMSTR
  105. NODSMSG:
  106.     DB    7,'DateStamper Required!$'
  107.  
  108. ;    This routine must end before GETDATE+7Fh
  109.  
  110.     END
  111.