;****************************************************************************
; FNDMOD.M68 - "Find Module" subroutine
;
; Written by: Dave Heyliger - AMUS Staff
;
; Purpose: To search user memory for the specified module
; that may or may not be in their memory partition
;
; Usage: XCALL FNDMOD,module,result
;
; where module is MAP1,S,30 (module name in string format)
; result is MAP1,F (1 = "true" ; 0 = "false")
;
; Sample BASIC program:
;
; module = "BOGUS.MOD"
; XCALL FNDMOD,module,result
; IF result = 0 THEN PRINT "module not found, fella!" &
; ELSE PRINT "module found!"
;
;****************************************************************************
OBJNAM .SBR ;final result is FNDMOD.SBR
SEARCH SYS ;get the regulars
SEARCH SYSSYM
SEARCH TRM
;define version number
VMAJOR = 1 ;original by Dave Heyliger
VMINOR = 0 ; version 1.0(100)
VEDIT = 100.
;define some workspace - A4 default pointer
.OFINI ;a variable buffer
.OFDEF BUFFER,30. ;"oversized" buffer space
.OFSIZ IMPSIZ ;definitions done
;error in input, inform the user
10$: TYPECR <Usage: XCALL FNDMOD,module,result>
TYPECR < where module is a string>
TYPECR < and result is floating point.>
RTN
;input looks good - let's get on with it!
20$: MOV 4(A3),A2 ;A2 points to module string
FILNAM BUFFER(A4),MOD ;default extension is .MOD
SRCH @A4,A0,F.USR ;look only in users memory
BEQ 40$ ;found it!
;didn't find the module - set result to "0" in floating point notation
MOV #0,D1 ;"0" = false
30$: MOV 16(A3),A0 ;A0 points to variable
FLTOF D1,@A0 ;set result to false
RTN
;found the module - set result to "1" in floating point notation
40$: MOV #1,D1 ;"1" = found
BR 30$ ;continue w/ above code