home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpm / dirutl / wipe12.lbr / WIPE12+.AQM / WIPE12+.ASM
Assembly Source File  |  1987-05-23  |  3KB  |  127 lines

  1. ;
  2. ; WIPE+.ASM  version 1.2
  3. ;     -- erases all .$$$, .BAK, .HEX, .PRN, .REL, and .SYM files
  4. ;    -- this version runs properly only on CP/M Plus (3.0).  To
  5. ;       run under CP/M 2.2 set CPM3 equate to false and reassemble
  6. ;       with MAC (Z80.LIB required).
  7. ;
  8. ; USAGE:
  9. ;
  10. ;    WIPE {d:}
  11. ;
  12. ; If no drive specification is given, the current drive is assumed.
  13. ;
  14. ;
  15. ; HISTORY:
  16. ;
  17. ;     Version 1.0, August 9, 1983, Steven D. Rudnik
  18. ;        Original code.
  19. ;     Version 1.1, March 1, 1985, Ron Forsythe
  20. ;        Removed .HEX file erasing and added a long, silly
  21. ;        signon.
  22. ;     Version 1.2, May 11, 1987, Gene Pizzetta
  23. ;        Added drive specification for command line, simplified
  24. ;        signon, tidied-up code.  CP/M Plus specific code added.
  25. ;
  26. ; Copyright 1983, Steve D. Rudnik.  This software may be used in the
  27. ; PUBLIC DOMAIN for non-commercial purposes only.
  28. ;
  29. ;
  30. True    equ    0FFFFh
  31. False    equ    Not True
  32. WStart    equ    00h
  33. Bdos    equ    05h
  34. PrtStr    equ    09h
  35. Erase    equ    13h
  36. CurDisk    equ    19h
  37. CpmFcb    equ    5Ch
  38. Delim    equ    6Eh
  39. NoFile    equ    0FFh
  40. CR    equ    0dh
  41. LF    equ    0ah
  42. CPM3    equ    True
  43. ;
  44.     MACLIB    Z80
  45.     org    100h
  46. ;
  47.     jmp    MAIN
  48.     db    ' WIPE+ 1.2 '
  49. ;
  50. MAIN:    lda    CpmFcb        ; check default FCB
  51.     cpi    0        ; is it the default drive?
  52.     cz    DEFAULT        ; if so, find out what it is
  53.     sta    DISK        ; put the drive spec into FCB
  54.     adi    64        ; make it printable
  55.     sta    MSGDSK        ; stuff into message
  56.   IF CPM3
  57.     mvi    c,Delim        ; set new PrtStr delimiter
  58.     lxi    d,0        ; ..as null
  59.     call    Bdos        ; CP/M PLUS FUNCTION
  60.   ENDIF
  61.     mvi    c,PrtStr    ; print signon message
  62.     lxi    d,SIGNON    
  63.     call    Bdos
  64. ;
  65. ; Now erase files ...
  66. ;
  67.     lxi    h,TABLE        ; load HL with table address
  68. LOOP:    mov    a,m        ; get char 1 of filetype 
  69.     inx    h        ; bump pointer...
  70.     sta    EXT1        ; place char into output string
  71.     cpi    0        ; check for end of table...
  72.     jz    WStart        ; if so, we're done
  73.     mov    a,m        ; repeat for char 2...
  74.     inx    h
  75.     sta    EXT2
  76.     mov    a,m        ; repeat for char 3...
  77.     inx    h
  78.     sta    EXT3
  79. INLOOP:    mvi    c,Erase        ; erase files specified in FCB
  80.     lxi    d,FCB        ; FCB address
  81.     push    h        ; preserve because BDOS clobbers
  82.     call    Bdos
  83.     pop    h
  84.     cpi    NoFile        ; check return flag
  85.     JRZ    LOOP        ; if none found then wrap up
  86.     jmp    INLOOP
  87. ;
  88. DEFAULT:
  89.     mvi    c,CurDisk    ; get current disk
  90.     call    Bdos
  91.     adi    1        ; make it acceptable to FCB
  92.     ret
  93. ;
  94. ; *******************************************************
  95. ; Modify filetype table here:
  96. ;     Each entry must be three bytes.
  97. ;    The table string must end with NULL (0).
  98. ;
  99. TABLE:    db    '$$$BAKHEXPRNRELSYM'
  100.     db    0
  101. ; *******************************************************
  102. ;
  103. FCB:
  104. DISK:    db    0        ; target drive
  105. FNAME:    db    '????????'    ; wildcard filename
  106. EXT1:    db    ' '        ; filetype ..
  107. EXT2:    db    ' '        ; ..a character
  108. EXT3:    db    ' '        ; ..at a time
  109. ; zero out rest of FCB
  110.     db    0,0,0,0,0,0,0,0,0,0,0,0
  111.     db    0,0,0,0,0,0,0,0,0,0,0,0
  112. ;
  113. SIGNON:    db    'Wiping '
  114.   IF CPM3
  115.     db    '.$$$, '
  116.   ENDIF
  117.     db    '.BAK, .HEX, .PRN, .REL, and .SYM files from drive '
  118. MSGDSK:    db    0
  119.     db    ':',CR,LF
  120.   IF CPM3
  121.     db    0
  122.   ELSE
  123.     db    '$'
  124.   ENDIF
  125. ;
  126.     end
  127.