home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / beehive / os / z80dovl.arc / WS303Z8D.LBR / WS3Z8D.ZZ0 / WS3Z8D.Z80
Encoding:
Text File  |  1989-04-03  |  3.9 KB  |  133 lines

  1. ;**************************************************
  2. ;
  3. ; WS3Z8D.Z80
  4. ;
  5. ; Adapted from Eugene Nolan's WS40Z8D.Z80 (with his 
  6. ; help) for WS 3.0 and 3.3 by Richard Holway (c/o 
  7. ; MOR RCPM 415-654-3798).  
  8. ;
  9. ; This file provides an overlay for a fully installed WS 3.0
  10. ; or 3.3 that allows it to carry the creation date of files
  11. ; from the input file to the output file.  (N.B. the WS 3.3
  12. ; version is untried but I am reasonably sure the values are
  13. ; correct.) 
  14. ;
  15. ; Assemble to a .HEX file and use
  16. ;
  17. ; MLOAD WSNEW.COM=WSOLD.COM,WS3Z8D
  18. ;
  19. ; There are currently defined two areas within 
  20. ; WS.COM where this overlay may be placed.  The 
  21. ; first is at MORPAT, which is 128 bytes long.  The 
  22. ; second is BGMEM, which is of indefinite length 
  23. ; and which has a pointer (PBGMEM) toward the end of 
  24. ; MORPAT.  (Check the end of the USR1 listing in your 
  25. ; WS manual for details.)  To see whether MORPAT, the 
  26. ; address of which is listed below and in the USR1 
  27. ; listing, is free, check it with a utility like    
  28. ; QLIST or ZPATCH.  If MORPAT is filled with 0's, it
  29. ; is free and you can use it.  Otherwise try using 
  30. ; BGMEM. 
  31. ;
  32. ; Included in this .LBR are the files MORPAT30.HEX and
  33. ; MORPAT33.HEX which are ready to overlay if you choose to
  34. ; use the MORPAT area.
  35. ;
  36. ; Overlay is configured for WS 3.0 and MORPAT.
  37. ; Equates for WS 3.3 are "commented out" by a semi-
  38. ; colon placed in the left margin.  To assemble for WS 3.3
  39. ; simply "uncomment" the 3.3 values and comment out the
  40. ; 3.0 ones.
  41.     org    1823h            ; Call BDOS routine in WS.COM (3.0) 
  42. ;    org    1835h            ; Call BDOS routine in WS.COM (3.3) 
  43.     call    dater            
  44.  
  45. no    equ    0
  46. yes    equ    not no
  47.  
  48. morpat    equ    no            ; Set to yes to use the MORPAT area
  49.                     ; to store date support code.
  50. myown    equ    yes            ; Set to yes if you have your own
  51.                     ; patch area.
  52. bgmem    equ    no            ; Use this equate if you want to
  53.                     ; use the bgmem area.
  54.      if    morpat
  55.     org    02e0h            ; MORPAT addr for WS 3.0 
  56. ;    org    02cbh            ; MORPAT for WS 3.3 
  57.      endif
  58.  
  59.      if    myown
  60.     org    02f0h            ; Fill in the address you want to use.
  61.      endif                
  62.  
  63.      if    bgmem
  64.     org    xxxxh            ; Fill it in
  65.      endif                ; 
  66.  
  67. dater:
  68.     ld    a,c
  69.     cp    0fh            ; check if BDOS ftn 15, OPEN
  70.     jr    z,isopen        ; Z=yes
  71.     cp    16h            ; check if BDOS Ftn 22, MAKE
  72.     jr    z,ismake        ; 
  73. cbdos:    call    5            ; WS 3.x has call, not WS 4's jump
  74.     ret
  75.  
  76. ismake:    ld    a,e            ; Is MAKE for .$$$ file? Check FCB. 
  77.                     ; fcb addr for .$$$ file 7690h in WS 3.0;
  78.                     ; 8290h in WS 3.3
  79.     cp    90h            ; reg E = 90h for both WS 3.0 & 3.3
  80.     jr    nz,cbdos
  81.     ld    a,d
  82.     cp    76h            ; reg D = 76h for WS 3.0
  83. ;    cp    82h            ; reg D = 82h for WS 3.3
  84.     jr    nz,cbdos
  85.     ld    a,(openflg)        ; Check if source file was opened ok
  86.     inc    a            ; Incrememt a to set z flg if a = ffh.
  87.     jr    z,cbdos
  88.     push    hl
  89.     push    de
  90.     push    bc
  91.     ld    c,55            ; Use Z80DOS's USESTAMP ftn
  92.     call    5
  93.     pop    bc
  94.     pop    de
  95.     pop    hl
  96.     jr    cbdos            ; Now MAKE the .$$$ file
  97.  
  98. isopen:    ld    a,e            ; Check if trying to open source file
  99.     cp    3ah            ; Source FCB addr = 83ah for WS 3.0, 
  100.     jr    nz,cbdos        ; 81ch for WS 3.3. 
  101.     ld    a,d            ; fcb addr in d-e reg.
  102.     cp    8h
  103.     jr    nz,cbdos
  104.                     ; GETSTAMP only of 1st ext (ex byte = 00h)
  105.     ld    a,(846h)        ; ex byte of fcb at 846h for WS3.0 
  106. ;    ld    a,(828h)        ; 828h for WS3.3.  
  107.     or    a            ; only 0 in a-reg will set zero flag
  108.     jr    nz,cbdos        ; 
  109.     call    5            ; do OPEN (puts flag in a-reg) but keep
  110.                     ; control of the program
  111.     ld    (openflg),a        ; store flag from a-reg in overlay 
  112.                     ; (0ffh = not found).  
  113.     inc    a            
  114.     ret    z            ; if file not found, ret without GETSTAMP
  115.     push    hl
  116.     push    de
  117.     push    bc
  118.     push    af
  119.     ld    c,54            ; Use Z80DOS's GETSTAMP ftn to save
  120.     call    5            ; time stamps of source
  121.     pop    af
  122.     pop    bc
  123.     pop    de
  124.     pop    hl
  125.     ret
  126.  
  127. openflg:
  128.     db    0            ; Flag to hold result from attempt to 
  129.                     ; OPEN source file
  130.  
  131. ;****************************************************************************
  132.