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 >
Wrap
Assembly Source File
|
1987-06-03
|
3KB
|
102 lines
;MOUNTED Copyright 1987 Bryce Nesbitt. Revokable licence hereby granted for
;any entity to use or absue this code in any way they see fit provided that
;such entity, in the judgement of the author:
;1> Retains this and any other Copyright notices.
;2> Is paid up on any monetary imbalance with author.
;3> Does not have unjustified litigation pending against author.
;Please tell me about any enhacements,changes,bugs or brain-damage in this
;code. bryce@hoser.berkeley.EDU -or- bryce@cogsci.berkeley.EDU
;Bryce Nesbitt 1712 Marin Ave. Berkeley, Ca 94707-2206
;Some inspirational assistence by Peter da Silva.
;
;FUNCTION:
; MOUNTED can determind if a volume or file is on-line. It may be used
;for conditional execution in a command file. If returns OK if the path
;is present, or WARN if it is not. It does the test "quietly" without
;bringing up a requester.
;
;FAIL means serious error, like no DOS or memory
;ERROR is less fatal, maybe syntax or "file not found" for a TYPE command.
;WARN is used for things like "file not found" on a DELETE or here in
; MOUNTED. Also used by TYPE when <CTRL><C> is hit.
;
;EXAMPLE:
; mounted assem:c
; if not warn
; echo #27 "[43m"
; path assem:c
; endif
;
;BUGS:
; Because I use the parser code from the ARP.LIBRARY, which I cannot yet
;distribute, no parsing of the line is done. The entire input line will be
;used, spaces, quotes and all.
; It would be nice to be able to determine if a physical device such as
;DF0: is present. As it stands MOUNTED will return a WARN if a connected
;drive is present, but empty. There are better ways of attaining this
;function than adding a kludge to MOUNTED.
; The executable is 152 bytes long when assembled with METACOMCO 10.178
;and linked using BLINK 6.5 with the NODEBUG option enabled.
***********************
NOLIST
;INCLUDE 'lib/exec_lib.i'
;INCLUDE 'lib/dos_lib.i'
INCLUDE 'exec/ables.i'
INCLUDE 'libraries/dosextens.i'
LIST
jsrlib MACRO
XREF _LVO\1
jsr _LVO\1(a6)
ENDM
jmplib macro
XREF _LVO\1
jmp _LVO\1(a6)
ENDM
blink MACRO
bchg.b #1,$bfe001
ENDM
***********************
DOSBase equr a5
MyProcess equr a4
LinePointer equr a3
returncode equr d7
WindowSave equr d6
CODE
startup: clr.b -1(a0,d0) ;cheap way to NULL terminate
moveq #5,returncode ;default WARN condition
move.l a0,LinePointer
move.l 4,a6
lea DOSName(pc),a1
jsrlib OldOpenLibrary ;V1.0 Compatible
move.l d0,DOSBase ;Look ma, no error check!
suba.l a1,a1
jsrlib FindTask ;Process, really
move.l d0,MyProcess
;-- Report errors "quietly" --
move.l pr_WindowPtr(MyProcess),WindowSave
moveq #-1,d0
move.l d0,pr_WindowPtr(MyProcess)
;-- Attempt lock --
move.l LinePointer,d1
moveq #ACCESS_READ,d2
move.l DOSBase,a6
jsrlib Lock ;Attempt lock
tst.l d0
beq.s NoLock ;Can't find it, exit code 10
move.l d0,d1
jsrlib UnLock
moveq #0,returncode ;It's there, return zero
;-- Restore environment / "noisy" errors --
NoLock: move.l WindowSave,pr_WindowPtr(MyProcess)
move.l DOSBase,a1
move.l 4,a6
jsrlib CloseLibrary
move.l returncode,d0
rts
DOSName: dc.b 'dos.library',0
dc.b '(C)1987 Bryce Nesbitt'
END