Specifications
Sample Driver Written in C
B.2 LRDRIVER.COM
B.2 LRDRIVER.COM
The LRDRIVER.COM command procedure compiles and links the LRDRIVER.C
device driver.
$ SET NOON
$ SAVED_VFY = F$VERIFY("NO","NO")
$ ON CONTROL_Y THEN GOTO QUIT
$ SET VERIFY=(PROCEDURE,NOIMAGE)
$!
$! LRDRIVER.COM
$! This is the compile and link procedure for the example device driver
$! LRDRIVER.C.
$!
$! Usage:
$!
$! @LRDRIVER [DEBUG]
$!
$! P1 If specified as DEBUG then a version of the driver is built
$! that facilitates debugging with the High Level Language System
$! Debugger.
$! The default is to build a normal version of the driver.
$!
$!’F$VERIFY("NO")’
$!
$ DEBUG_CC_OPT = ""
$ IF P1 .NES. ""
$ THEN
$ IF P1 .NES. "DEBUG" THEN EXIT %X14 ! SS$_BADPARAM
$ DEBUG_CC_OPT = "/DEBUG/NOOPTIMIZE/DEFINE=DEBUG"
$ ENDIF
$!
$ IF F$TRNLNM("SRC$") .EQS. "" THEN DEFINE/NOLOG SRC$ ’F$ENVIRONMENT("DEFAULT")’
$ IF F$TRNLNM("LIS$") .EQS. "" THEN DEFINE/NOLOG LIS$ ’F$ENVIRONMENT("DEFAULT")’
$ IF F$TRNLNM("OBJ$") .EQS. "" THEN DEFINE/NOLOG OBJ$ ’F$ENVIRONMENT("DEFAULT")’
$ IF F$TRNLNM("EXE$") .EQS. "" THEN DEFINE/NOLOG EXE$ ’F$ENVIRONMENT("DEFAULT")’
$ IF F$TRNLNM("MAP$") .EQS. "" THEN DEFINE/NOLOG MAP$ ’F$ENVIRONMENT("DEFAULT")’
$!
$ SET VERIFY=(PROCEDURE,NOIMAGE)
$!
$! Compile the driver
$!
$ CC/STANDARD=RELAXED_ANSI89/INSTRUCTION=NOFLOATING_POINT/EXTERN=STRICT-
’DEBUG_CC_OPT’-
/LIS=LIS$:LRDRIVER/MACHINE_CODE-
/OBJ=OBJ$:LRDRIVER-
SRC$:LRDRIVER -
+SYS$LIBRARY:SYS$LIB_C.TLB/LIBRARY
$!
$! Link the driver
$!
$ LINK/ALPHA/USERLIB=PROC/NATIVE_ONLY/BPAGE=14/SECTION/REPLACE-
/NODEMAND_ZERO/NOTRACEBACK/SYSEXE/NOSYSSHR-
/SHARE=EXE$:SYS$LRDRIVER- ! Driver image
/DSF=EXE$:SYS$LRDRIVER- ! Debug symbol file
/SYMBOL=EXE$:SYS$LRDRIVER- ! Symbol table
/MAP=MAP$:SYS$LRDRIVER/FULL/CROSS - ! Map listing
SYS$INPUT:/OPTIONS
!
! Define symbol table for SDA using all global symbols, not just
! universal ones
!
SYMBOL_TABLE=GLOBALS
!
B–23










