diff --git a/iocBoot/iocvxWorks/dac128V.cmd b/iocBoot/iocvxWorks/dac128V.cmd
new file mode 100644
index 0000000000000000000000000000000000000000..c19bb7c936ce3b78bf3f6bd80f835867679e9efd
--- /dev/null
+++ b/iocBoot/iocvxWorks/dac128V.cmd
@@ -0,0 +1,9 @@
+# Initialize Systran DAC
+# initDAC128V(char *portName, int carrier, int slot)
+# portName  = name to give this asyn port
+# carrier     = IPAC carrier number (0, 1, etc.)
+# slot        = IPAC slot (0,1,2,3, etc.)
+initDAC128V("DAC1", 0, 3)
+
+dbLoadTemplate("dac128V.substitutions")
+
diff --git a/iocBoot/iocvxWorks/ip330.cmd b/iocBoot/iocvxWorks/ip330.cmd
new file mode 100644
index 0000000000000000000000000000000000000000..b79441743c3df6632493d8f44f4b90cbc74e2c8a
--- /dev/null
+++ b/iocBoot/iocvxWorks/ip330.cmd
@@ -0,0 +1,60 @@
+# Initialize Acromag IP-330 ADC
+# initIp330(
+#   const char *portName, int carrier, int slot,
+#   const char *typeString, const char *rangeString,
+#   int firstChan, int lastChan,
+#   int intVec)
+# portName    = name to give this asyn port
+# carrier     = IPAC carrier number (0, 1, etc.)
+# slot        = IPAC slot (0,1,2,3, etc.)
+# typeString  = "D" or "S" for differential or single-ended
+# rangeString = "-5to5","-10to10","0to5", or "0to10"
+#               This value must match hardware setting selected
+# firstChan   = first channel to be digitized.  This must be in the range:
+#               0 to 31 (single-ended)
+#               0 to 15 (differential)
+# lastChan    = last channel to be digitized
+# intVec        Interrupt vector
+initIp330("Ip330_1",0,2,"D","-10to10",0,15,120)
+
+# int configIp330(
+#   const char *portName,
+#   int scanMode, const char *triggerString,
+#   int microSecondsPerScan, int secondsBetweenCalibrate)
+# portName    = name of aysn port created with initIp330
+# scanMode    = scan mode:
+#               0 = disable
+#               1 = uniformContinuous
+#               2 = uniformSingle
+#               3 = burstContinuous (normally recommended)
+#               4 = burstSingle
+#               5 = convertOnExternalTriggerOnly
+# triggerString = "Input" or "Output". Selects the direction of the external
+#               trigger signal.
+# microSecondsPerScan = repeat interval to digitize all channels
+#               The minimum theoretical time is 15 microseconds times the
+#               number of channels, but a practical limit is probably 100
+#               microseconds.
+# secondsBetweenCalibrate = number of seconds between calibration cycles.
+#               If zero then there will be no periodic calibration, but
+#               one calibration will still be done at initialization.
+configIp330("Ip330_1", 3,"Input",500,0)
+
+# int initFastSweep(char *portName, char *inputName,
+#                   int maxSignals, int maxPoints)
+# portName   = asyn port name for this port
+# inputName  = name of input port
+# maxSignals = maximum number of input signals.
+# maxPoints  = maximum number of points in a sweep.  The amount of memory
+#              allocated will be maxPoints*maxSignals*4 bytes
+initFastSweep("Ip330Sweep1","Ip330_1", 4, 2048)
+
+# Acromag Ip330 ADC
+dbLoadTemplate "ip330Scan.substitutions"
+
+# Load MCA records on the first 4 input channels
+dbLoadRecords("$(MCA)/mcaApp/Db/mca.db", "P=xxx:,M=mip330_1,DTYP=asynMCA,NCHAN=2048,INP=@asyn(Ip330Sweep1 0)")
+dbLoadRecords("$(MCA)/mcaApp/Db/mca.db", "P=xxx:,M=mip330_2,DTYP=asynMCA,NCHAN=2048,INP=@asyn(Ip330Sweep1 1)")
+dbLoadRecords("$(MCA)/mcaApp/Db/mca.db", "P=xxx:,M=mip330_3,DTYP=asynMCA,NCHAN=2048,INP=@asyn(Ip330Sweep1 2)")
+dbLoadRecords("$(MCA)/mcaApp/Db/mca.db", "P=xxx:,M=mip330_4,DTYP=asynMCA,NCHAN=2048,INP=@asyn(Ip330Sweep1 3)")
+
diff --git a/iocBoot/iocvxWorks/ipUnidig.cmd b/iocBoot/iocvxWorks/ipUnidig.cmd
new file mode 100644
index 0000000000000000000000000000000000000000..bf17d166c6a0ae85cfb1717d834ccef988573f7a
--- /dev/null
+++ b/iocBoot/iocvxWorks/ipUnidig.cmd
@@ -0,0 +1,22 @@
+# Initialize Greenspring IP-Unidig
+# initIpUnidig(char *portName,
+#              int carrier,
+#              int slot,
+#              int msecPoll,
+#              int intVec,
+#              int risingMask,
+#              int fallingMask,
+#              int biMask,
+#              int maxClients)
+# portName  = name to give this asyn port
+# carrier     = IPAC carrier number (0, 1, etc.)
+# slot        = IPAC slot (0,1,2,3, etc.)
+# msecPoll    = polling time for input bits in msec.  Default=100.
+# intVec      = interrupt vector
+# risingMask  = mask of bits to generate interrupts on low to high (24 bits)
+# fallingMask = mask of bits to generate interrupts on high to low (24 bits)
+initIpUnidig("Unidig1", 0, 1, 2000, 116, 0xfffffb, 0xfffffb)
+
+# IP-Unidig binary I/O
+dbLoadTemplate "IpUnidig.substitutions"
+