home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.6 / ffcollection-1-6-1993-02.iso / ff_disks / 061-090 / ff_079.lha / AsmTools / Mounted / mounted.asm < prev    next >
Assembly Source File  |  1987-06-03  |  3KB  |  102 lines

  1. ;MOUNTED Copyright 1987 Bryce Nesbitt.    Revokable licence hereby granted for
  2. ;any entity to use or absue this code in any way they see fit provided that
  3. ;such entity, in the judgement of the author:
  4. ;1> Retains this and any other Copyright notices.
  5. ;2> Is paid up on any monetary imbalance with author.
  6. ;3> Does not have unjustified litigation pending against author.
  7. ;Please tell me about any enhacements,changes,bugs or brain-damage in this
  8. ;code.    bryce@hoser.berkeley.EDU -or- bryce@cogsci.berkeley.EDU
  9. ;Bryce Nesbitt 1712 Marin Ave.    Berkeley, Ca 94707-2206
  10. ;Some inspirational assistence by Peter da Silva.
  11. ;
  12. ;FUNCTION:
  13. ;  MOUNTED can determind if a volume or file is on-line.  It may be used
  14. ;for conditional execution in a command file.  If returns OK if the path
  15. ;is present, or WARN if it is not.  It does the test "quietly" without
  16. ;bringing up a requester.
  17. ;
  18. ;FAIL  means serious error, like no DOS or memory
  19. ;ERROR is less fatal, maybe syntax or "file not found" for a TYPE command.
  20. ;WARN  is used for things like "file not found" on a DELETE or here in
  21. ;      MOUNTED.  Also used by TYPE when <CTRL><C> is hit.
  22. ;
  23. ;EXAMPLE:
  24. ; mounted assem:c
  25. ; if not warn
  26. ;  echo #27 "[43m"
  27. ;  path assem:c
  28. ; endif
  29. ;
  30. ;BUGS:
  31. ;  Because I use the parser code from the ARP.LIBRARY, which I cannot yet
  32. ;distribute, no parsing of the line is done.  The entire input line will be
  33. ;used, spaces, quotes and all.
  34. ;  It would be nice to be able to determine if a physical device such as
  35. ;DF0: is present.  As it stands MOUNTED will return a WARN if a connected
  36. ;drive is present, but empty.  There are better ways of attaining this
  37. ;function than adding a kludge to MOUNTED.
  38. ;  The executable is 152 bytes long when assembled with METACOMCO 10.178
  39. ;and linked using BLINK 6.5 with the NODEBUG option enabled.
  40.  
  41. ***********************
  42.     NOLIST
  43.     ;INCLUDE 'lib/exec_lib.i'
  44.     ;INCLUDE 'lib/dos_lib.i'
  45.     INCLUDE 'exec/ables.i'
  46.     INCLUDE 'libraries/dosextens.i'
  47.     LIST
  48. jsrlib    MACRO
  49.     XREF    _LVO\1
  50.     jsr    _LVO\1(a6)
  51.     ENDM
  52. jmplib    macro
  53.     XREF    _LVO\1
  54.     jmp    _LVO\1(a6)
  55.     ENDM
  56. blink    MACRO
  57.     bchg.b    #1,$bfe001
  58.     ENDM
  59. ***********************
  60. DOSBase     equr a5
  61. MyProcess    equr a4
  62. LinePointer    equr a3
  63. returncode    equr d7
  64. WindowSave    equr d6
  65.  
  66.         CODE
  67. startup:    clr.b    -1(a0,d0)    ;cheap way to NULL terminate
  68.         moveq    #5,returncode    ;default WARN condition
  69.         move.l    a0,LinePointer
  70.  
  71.         move.l    4,a6
  72.         lea    DOSName(pc),a1
  73.         jsrlib    OldOpenLibrary    ;V1.0 Compatible
  74.         move.l    d0,DOSBase    ;Look ma, no error check!
  75.         suba.l    a1,a1
  76.         jsrlib    FindTask    ;Process, really
  77.         move.l    d0,MyProcess
  78. ;-- Report errors "quietly" --
  79.         move.l    pr_WindowPtr(MyProcess),WindowSave
  80.         moveq    #-1,d0
  81.         move.l    d0,pr_WindowPtr(MyProcess)
  82. ;-- Attempt lock --
  83.         move.l    LinePointer,d1
  84.         moveq    #ACCESS_READ,d2
  85.         move.l    DOSBase,a6
  86.         jsrlib    Lock        ;Attempt lock
  87.         tst.l    d0
  88.         beq.s    NoLock        ;Can't find it, exit code 10
  89.         move.l    d0,d1
  90.         jsrlib    UnLock
  91.         moveq    #0,returncode    ;It's there, return zero
  92. ;-- Restore environment / "noisy" errors --
  93. NoLock:     move.l    WindowSave,pr_WindowPtr(MyProcess)
  94.         move.l    DOSBase,a1
  95.         move.l    4,a6
  96.         jsrlib    CloseLibrary
  97.         move.l    returncode,d0
  98.         rts
  99. DOSName:    dc.b    'dos.library',0
  100.         dc.b    '(C)1987 Bryce Nesbitt'
  101.         END
  102.