diff --git a/iocBoot/iocxxx/common.iocsh b/iocBoot/iocxxx/common.iocsh
index 509f26eed6ff814a5de21cce321caf725cd70436..e60eefbaadfd7d84d84e114e3c544debd85b0aa9 100644
--- a/iocBoot/iocxxx/common.iocsh
+++ b/iocBoot/iocxxx/common.iocsh
@@ -38,16 +38,7 @@ asSetFilename("$(TOP)/iocBoot/accessSecurity.acf")
 asSetSubstitutions("P=$(PREFIX)")
 
 ### caputRecorder
-
-# trap listener
-dbLoadRecords("$(CAPUTRECORDER)/caputRecorderApp/Db/caputPoster.db","P=$(PREFIX),N=300")
-doAfterIocInit("registerCaputRecorderTrapListener('$(PREFIX)caputRecorderCommand')")
-
-# GUI database
-dbLoadRecords("$(CAPUTRECORDER)/caputRecorderApp/Db/caputRecorder.db","P=$(PREFIX),N=300")
-
-# second copy of GUI database
-#dbLoadRecords("$(CAPUTRECORDER)/caputRecorderApp/Db/caputRecorder.db","P=$(PREFIX)A:,N=300")
+iocshLoad("$(CAPUTRECORDER)/iocsh/caputRecorder.iocsh", "PREFIX=$(PREFIX)")
 
 # user-assignable ramp/tweak
 dbLoadRecords("$(STD)/stdApp/Db/ramp_tweak.db","P=$(PREFIX),Q=rt1")
@@ -70,34 +61,11 @@ doAfterIocInit("motorUtilInit('$(PREFIX)')")
 #dbLoadRecords("$(STD)/stdApp/Db/IDctrl.db","P=$(PREFIX),xx=02us")
 
 ### Scan-support software
-# crate-resident scan.  This executes 1D, 2D, 3D, and 4D scans, and caches
-# 1D data, but it doesn't store anything to disk.  (See 'saveData' below for that.)
-epicsEnvSet("SDB", "$(SSCAN)/sscanApp/Db/standardScans.db")
-dbLoadRecords("$(SDB)","P=$(PREFIX),MAXPTS1=1000,MAXPTS2=1000,MAXPTS3=1000,MAXPTS4=1000,MAXPTSH=1000")
-#dbLoadRecords("$(SSCAN)/sscanApp/Db/scanAux.db","P=$(PREFIX),S=scanAux,MAXPTS=100")
-
-# Start the saveData task.  If you start this task, scan records mentioned
-# in saveData.req will *always* write data files.  There is no programmable
-# disable for this software.
-dbLoadRecords("$(SSCAN)/sscanApp/Db/saveData.db","P=$(PREFIX)")
-doAfterIocInit("saveData_Init(saveData.req, 'P=$(PREFIX)')")
-
-dbLoadRecords("$(SSCAN)/sscanApp/Db/scanProgress.db","P=$(PREFIX)scanProgress:")
-doAfterIocInit("seq &scanProgress, 'S=$(PREFIX), P=$(PREFIX)scanProgress:'")
-
-# configMenu example.
-dbLoadRecords("$(AUTOSAVE)/asApp/Db/configMenu.db","P=$(PREFIX),CONFIG=scan1")
-# Note that the request file MUST be named $(CONFIG)Menu.req
-# If the macro CONFIGMENU is defined with any value, backup (".savB") and
-# sequence files (".savN") will not be written.  We don't want these for configMenu.
-# Run this after iocInit:
-doAfterIocInit("create_manual_set('scan1Menu.req','P=$(PREFIX),CONFIG=scan1,CONFIGMENU=1')")
+iocshLoad("$(SSCAN)/iocsh/sscan.iocsh", "PREFIX=$(PREFIX), MAX_PTS=1000, REQ_FILE=saveData.req")
+iocshLoad("$(AUTOSAVE)/iocsh/configMenu.iocsh", "PREFIX=$(PREFIX),CONFIG=scan1")
 # You could make scan configurations read-only:
 #dbLoadRecords("$(AUTOSAVE)/asApp/Db/configMenu.db","P=$(PREFIX),CONFIG=scan1,ENABLE_SAVE=0")
 
-# read-only configMenu example.  (Read-only, because we're not calling create_manual_set().)
-#dbLoadRecords("$(AUTOSAVE)/asApp/Db/configMenu.db","P=$(PREFIX),CONFIG=scan2")
-
 # A set of scan parameters for each positioner.  This is a convenience
 # for the user.  It can contain an entry for each scannable thing in the
 # crate.
@@ -108,13 +76,9 @@ dbLoadRecords("$(OPTICS)/opticsApp/Db/2slit.db","P=$(PREFIX),SLIT=Slit1V,mXp=m3,
 dbLoadRecords("$(OPTICS)/opticsApp/Db/2slit.db","P=$(PREFIX),SLIT=Slit1H,mXp=m5,mXn=m6,RELTOCENTER=0")
 
 # X-ray Instrumentation Associates Huber Slit Controller
-# supported by a customized version of the SNL program written by Pete Jemian
 # (Uses asyn record loaded separately)
-#dbLoadRecords("$(OPTICS)/opticsApp/Db/xia_slit.db", "P=$(PREFIX), HSC=hsc1:")
-#dbLoadRecords("$(OPTICS)/opticsApp/Db/xia_slit.db", "P=$(PREFIX), HSC=hsc2:")
-#dbLoadRecords("$(IP)/ipApp/Db/generic_serial.db", "P=$(PREFIX),C=0,SERVER=serial7")
-#doAfterIocInit("seq  &xia_slit, 'name=hsc1, P=$(PREFIX), HSC=hsc1:, S=$(PREFIX)asyn_6'")
-#doAfterIocInit("seq  &xia_slit, 'name=hsc2, P=$(PREFIX), HSC=hsc2:, S=$(PREFIX)asyn_6'")
+#iocshLoad("$(OPTICS)/iocsh/Huber_xia.iocsh", "PREFIX=$(PREFIX), INSTANCE=hsc1:, ASYN_REC=$(PREFIX)asyn_6")
+#iocshLoad("$(OPTICS)/iocsh/Huber_xia.iocsh", "PREFIX=$(PREFIX), INSTANCE=hsc2:, ASYN_REC=$(PREFIX)asyn_6")
 
 ### 2-post mirror
 #dbLoadRecords("$(OPTICS)/opticsApp/Db/2postMirror.db","P=$(PREFIX),Q=M1,mDn=m1,mUp=m2,LENGTH=0.3")
@@ -137,11 +101,10 @@ dbLoadRecords("$(DIR)/table.db","P=$(PREFIX),Q=Table1,T=table1,M0X=m1,M0Y=m2,M1Y
 ### Monochromator support ###
 # Kohzu and PSL monochromators: Bragg and theta/Y/Z motors
 # standard geometry (geometry 1)
-#dbLoadRecords("$(OPTICS)/opticsApp/Db/kohzuSeq.db","P=$(PREFIX),M_THETA=m1,M_Y=m2,M_Z=m3,yOffLo=17.4999,yOffHi=17.5001")
-#doAfterIocInit("seq &kohzuCtl, 'P=$(PREFIX), M_THETA=m1, M_Y=m2, M_Z=m3, GEOM=1, logfile=kohzuCtl.log'")
+#iocshLoad("$(OPTICS)/iocsh/kohzu_mono.iocsh", "PREFIX=$(PREFIX), M_THETA=m1,M_Y=m2,M_Z=m3, YOFF_LO=17.4999,YOFF_HI=17.5001, GEOM=1, LOG=kohzuCtl.log")
 # modified geometry (geometry 2)
-#dbLoadRecords("$(OPTICS)/opticsApp/Db/kohzuSeq.db","P=$(PREFIX),M_THETA=m1,M_Y=m2,M_Z=m2,yOffLo=4,yOffHi=36")
-#doAfterIocInit("seq &kohzuCtl, 'P=$(PREFIX), M_THETA=m1, M_Y=m2, M_Z=m3, GEOM=2, logfile=kohzuCtl.log'")
+#iocshLoad("$(OPTICS)/iocsh/kohzu_mono.iocsh", "PREFIX=$(PREFIX), M_THETA=m1,M_Y=m2,M_Z=m2, YOFF_LO=4, YOFF_HI=36, GEOM=2, LOG=kohzuCtl.log")
+
 # Example of specifying offset limits
 #doAfterIocInit("epicsThreadSleep(5.)")
 #doAfterIocInit("dbpf $(PREFIX)kohzu_yOffsetAO.DRVH 17.51")
@@ -151,20 +114,13 @@ dbLoadRecords("$(DIR)/table.db","P=$(PREFIX),Q=Table1,T=table1,M0X=m1,M0Y=m2,M1Y
 #dbLoadRecords("$(OPTICS)/opticsApp/Db/SGM.db","P=$(PREFIX),N=1,M_x=m7,M_rIn=m6,M_rOut=m8,M_g=m9")
 
 # 4-bounce high-resolution monochromator
-#dbLoadRecords("$(OPTICS)/opticsApp/Db/hrSeq.db","P=$(PREFIX),N=1,M_PHI1=m1,M_PHI2=m2")
-#doAfterIocInit("dbpf '$(PREFIX)HR1CtlDebug','1'")
-#doAfterIocInit("seq &hrCtl, 'P=$(PREFIX), N=1, M_PHI1=m4, M_PHI2=m5, logfile=hrCtl.log'")
-#dbLoadRecords("$(OPTICS)/opticsApp/Db/hrSeq.db","P=$(PREFIX),N=2,M_PHI1=m11,M_PHI2=m12")
+#iocshLoad("$(OPTICS)/iocsh/hr_mono.iocsh", "PREFIX=$(PREFIX), INSTANCE=1, M_PHI1=m1, M_PHI2=m2, LOG=hrCtl.log")
 
 ### multilayer monochromator: Bragg and theta/Y/Z motors
-#dbLoadRecords("$(OPTICS)/opticsApp/Db/ml_monoSeq.db","P=$(PREFIX)")
-#doAfterIocInit("seq &ml_monoCtl, 'P=$(PREFIX), M_THETA=m1, M_THETA2=m2, M_Y=m3, M_Z=m4, Y_OFF=35., GEOM=1'")
+#iocshLoad("$(OPTICS)/iocsh/ml_mono.iocsh", "PREFIX=$(PREFIX), M_THETA=m1, M_THETA2=m2, M_Y=m3, M_Z=m4, YOFF=35., GEOM=1")
 
 ### Orientation matrix, four-circle diffractometer (see seq program 'orient' below)
-#dbLoadRecords("$(OPTICS)/opticsApp/Db/orient.db", "P=$(PREFIX),O=1,PREC=6")
-#dbLoadTemplate("common/orient_xtals.substitutions", "P=$(PREFIX)")
-#doAfterIocInit("seq &orient, 'P=$(PREFIX)orient1:,PM=$(PREFIX),mTTH=m9,mTH=m10,mCHI=m11,mPHI=m12'")
-
+#iocshLoad("$(OPTICS)/iocsh/orient.iocsh", "PREFIX=$(PREFIX), INSTANCE=1, M_TTH=m9, M_TH=m10, M_CHI=m11, M_PHI=m12, SUB=common/orient_xtals.substitutions")
 
 # Coarse/Fine stage
 #dbLoadRecords("$(OPTICS)/opticsApp/Db/CoarseFineMotor.db","P=$(PREFIX)cf1:,PM=$(PREFIX),CM=m7,FM=m8")
@@ -178,8 +134,10 @@ dbLoadRecords("$(DIR)/table.db","P=$(PREFIX),Q=Table1,T=table1,M0X=m1,M0Y=m2,M1Y
 # Load 3 element detector software
 #< $(PLATFORM)/canberra_3.cmd
 
-### Stuff for user programming ###
-< common/calc.cmd
+< common/calc.iocsh
+
+# Soft function generator
+#dbLoadRecords("$(CALC)/calcApp/Db/FuncGen.db","P=$(PREFIX),Q=fgen,OUT=$(PREFIX)m7.VAL")
 
 # 4-step measurement
 dbLoadRecords("$(STD)/stdApp/Db/4step.db", "P=$(PREFIX),Q=4step:")
@@ -209,27 +167,11 @@ dbLoadRecords("$(STD)/stdApp/Db/misc.db","P=$(PREFIX)")
 #dbLoadRecords("$(STD)/stdApp/Db/Nano2k.db","P=$(PREFIX),S=s1")
 
 ### Load database records for Femto amplifiers
-#dbLoadRecords("$(STD)/stdApp/Db/femto.db","P=$(PREFIX),H=fem01:,F=seq01:")
-epicsEnvSet("FBO", "$(PREFIX)Unidig1Bo")
-#doAfterIocInit("seq &femto,'name=fem1,P=$(PREFIX),H=fem01:,F=seq01:,G1=$(FBO)6,G2=$(FBO)7,G3=$(FBO)8,NO=$(FBO)10'")
+#epicsEnvSet("FBO", "$(PREFIX)Unidig1Bo")
+#iocshLoad("$(STD)/iocsh/femto.iocsh", "PREFIX=$(PREFIX), HARDWARE=fem01:, FUNC=seq01:, G1_PV=$(FBO)6, G2_PV=$(FBO)7, G3_PV=$(FBO)8, NO_PV=$(FBO)10")
 
 ### Load database records for dual PF4 filters
-#dbLoadRecords("$(OPTICS)/opticsApp/Db/pf4common.db","P=$(PREFIX),H=pf4:,A=A,B=B")
-#dbLoadRecords("$(OPTICS)/opticsApp/Db/pf4bank.db","P=$(PREFIX),H=pf4:,B=A")
-#dbLoadRecords("$(OPTICS)/opticsApp/Db/pf4bank.db","P=$(PREFIX),H=pf4:,B=B")
-# Start PF4 filter sequence programs
-#        name = what user will call it
-#        P    = prefix of database and sequencer
-#        H    = hardware (i.e. pf4)
-#        B    = bank indicator (i.e. A,B)
-#        M    = Monochromatic-beam energy PV
-#        BP   = Filter control bit PV prefix
-#        B1   = Filter control bit 0 number
-#        B2   = Filter control bit 1 number
-#        B3   = Filter control bit 2 number
-#        B4   = Filter control bit 3 number
-#doAfterIocInit("seq pf4,'name=pf1,P=$(PREFIX),H=pf4:,B=A,M=$(PREFIX)userTran10.I,B1=$(PREFIX)userTran10.A,B2=$(PREFIX)userTran10.B,B3=$(PREFIX)userTran10.C,B4=$(PREFIX)userTran10.D'")
-#doAfterIocInit("seq pf4,'name=pf2,P=$(PREFIX),H=pf4:,B=B,M=$(PREFIX)userTran10.I,B1=$(PREFIX)userTran10.E,B2=$(PREFIX)userTran10.F,B3=$(PREFIX)userTran10.G,B4=$(PREFIX)userTran10.H'")
+#iocshLoad("OPTICS)/iocsh/pf4filters.iocsh", "PREFIX=$(PREFIX), INSTANCE=pf4")
 
 ### Load database records for alternative PF4-filter support
 #dbLoadTemplate("common/filter.substitutions", "P=$(PREFIX)")
diff --git a/iocBoot/iocxxx/common/calc.cmd b/iocBoot/iocxxx/common/calc.iocsh
similarity index 100%
rename from iocBoot/iocxxx/common/calc.cmd
rename to iocBoot/iocxxx/common/calc.iocsh
diff --git a/iocBoot/iocxxx/common/orient_xtals.substitutions b/iocBoot/iocxxx/common/orient_xtals.substitutions
index 77e7c0d8d8de5e20af78ad11dbf8486c01cd725b..9c54e22ad57907209c9742845c686b5055834e89 100644
--- a/iocBoot/iocxxx/common/orient_xtals.substitutions
+++ b/iocBoot/iocxxx/common/orient_xtals.substitutions
@@ -1,15 +1,15 @@
 file "$(OPTICS)/opticsApp/Db/orient_xtals.db"
 {
 pattern
-{O, PREC, N, xtal, a, b, c, alpha, beta, gamma}
-{1, 4, 1, Silicon, 5.431, 5.431, 5.431, 90, 90, 90}
-{1, 4, 2, "Beryllium hcp", 2.2858, 2.2858, 3.5843, 90, 90, 120}
-{1, 4, 3, VO2, 5.743, 4.517, 5.375, 90, 122.6, 90}
-{1, 4, 4, undefined, 1, 1, 1, 90, 90, 90}
-{1, 4, 5, undefined, 1, 1, 1, 90, 90, 90}
-{1, 4, 6, undefined, 1, 1, 1, 90, 90, 90}
-{1, 4, 7, undefined, 1, 1, 1, 90, 90, 90}
-{1, 4, 8, undefined, 1, 1, 1, 90, 90, 90}
-{1, 4, 9, undefined, 1, 1, 1, 90, 90, 90}
-{1, 4, 10, undefined, 1, 1, 1, 90, 90, 90}
+{N,   xtal,           a,      b,      c,      alpha, beta,  gamma}
+{1,  Silicon,         5.431,  5.431,  5.431,  90,    90,    90}
+{2,  "Beryllium hcp", 2.2858, 2.2858, 3.5843, 90,    90,    120}
+{3,  VO2,             5.743,  4.517,  5.375,  90,    122.6, 90}
+{4,  undefined,       1, 1, 1, 90, 90, 90}
+{5,  undefined,       1, 1, 1, 90, 90, 90}
+{6,  undefined,       1, 1, 1, 90, 90, 90}
+{7,  undefined,       1, 1, 1, 90, 90, 90}
+{8,  undefined,       1, 1, 1, 90, 90, 90}
+{9,  undefined,       1, 1, 1, 90, 90, 90}
+{10, undefined,       1, 1, 1, 90, 90, 90}
 }
diff --git a/iocBoot/iocxxx/common/save_restore.cmd b/iocBoot/iocxxx/common/save_restore.cmd
index a59fef93753f83a064bf3e77b8e4bfdf905cc904..d9ed61582145cc8d4ae823a5f6f85b7f4c3dd044 100644
--- a/iocBoot/iocxxx/common/save_restore.cmd
+++ b/iocBoot/iocxxx/common/save_restore.cmd
@@ -1,57 +1,17 @@
 
 # BEGIN save_restore.cmd ------------------------------------------------------
 
-# This file does not require modification for standard use, other than to
-# specify the prefix.  However...
+# This file does not require modification for standard use
 # If you want save_restore to manage its own NFS mount, specify the name and
 # IP address of the file server to which save files should be written, and
-# call set_savefile_path() with a path as the server sees it.  This currently
+# set SAVE_PATH to a path as the server sees it.  This currently
 # is supported only on vxWorks.
-# If the NFS mount from nfsCommands is used, call set_savefile_path() with a
-# path as mounted by that file
 
-# That is, do this...
-set_savefile_path("$(STARTUP)", "autosave")
-
-# ... or this...
 #save_restoreSet_NFSHost("oxygen", "164.54.22.10")
-#set_savefile_path("/export/oxygen4/MOONEY/epics/synApps/support/xxx/iocBoot/iocvxWorks", "autosave")
-
-# status PVs: default is to use them
-#save_restoreSet_UseStatusPVs(1)
-save_restoreSet_status_prefix("$(PREFIX)")
-dbLoadRecords("$(AUTOSAVE)/asApp/Db/save_restoreStatus.db", "P=$(PREFIX), DEAD_SECONDS=5")
-
-# Ok to save/restore save sets with missing values (no CA connection to PV)?
-save_restoreSet_IncompleteSetsOk(1)
-
-# Save dated backup files?
-save_restoreSet_DatedBackupFiles(1)
-
-# Number of sequenced backup files to write
-save_restoreSet_NumSeqFiles(3)
-
-# Time interval between sequenced backups
-save_restoreSet_SeqPeriodInSeconds(300)
 
-# Ok to retry connecting to PVs whose initial connection attempt failed?
-save_restoreSet_CAReconnect(1)
-
-# Time interval in seconds between forced save-file writes.  (-1 means forever).
-# This is intended to get save files written even if the normal trigger mechanism is broken.
-save_restoreSet_CallbackTimeout(-1)
-
-###
-# specify what save files should be restored.  Note these files must be
-# in the directory specified in set_savefile_path(), or, if that function
-# has not been called, from the directory current when iocInit is invoked
-set_pass0_restoreFile("auto_positions.sav")
-# Note doAfterIocInit() supplied by std module.
-doAfterIocInit("create_monitor_set('auto_positions.req',5,'P=$(PREFIX)')")
-
-set_pass0_restoreFile("auto_settings.sav")
-set_pass1_restoreFile("auto_settings.sav")
-doAfterIocInit("create_monitor_set('auto_settings.req',30,'P=$(PREFIX)')")
+iocshLoad("$(AUTOSAVE)/iocsh/autosave_settings.iocsh", "PREFIX=$(PREFIX), SAVE_PATH=$(STARTUP)")
+iocshLoad("$(AUTOSAVE)/iocsh/autosaveBuild.iocsh",     "PREFIX=$(PREFIX)")
+iocshLoad("$(AUTOSAVE)/iocsh/save_restore.iocsh",      "PREFIX=$(PREFIX), POSITIONS_FILE=auto_positions.req, SETTINGS_FILE=auto_settings.req")
 
 # Note that you can restore a .sav file without also autosaving to it.
 #set_pass0_restoreFile("octupole_settings.sav")
@@ -60,8 +20,6 @@ doAfterIocInit("create_monitor_set('auto_settings.req',30,'P=$(PREFIX)')")
 ###
 # specify directories in which to search for included request files
 # Note that the vxWorks variables (e.g., 'startup') are from cdCommands
-set_requestfile_path("$(TOP)/iocBoot/$(IOC)", "")
-set_requestfile_path("$(TOP)/iocBoot/$(IOC)/autosave", "")
 set_requestfile_path("$(TOP)/iocBoot/$(IOC)/$(PLATFORM)", "")
 set_requestfile_path("$(TOP)/iocBoot/$(IOC)/common", "")
 set_requestfile_path("$(AREA_DETECTOR)", "ADApp/Db")
@@ -94,15 +52,4 @@ set_requestfile_path("$(TOP)", "xxxApp/Db")
 # Debug-output level
 save_restoreSet_Debug(0)
 
-# Tell autosave to automatically build built_settings.req and
-# built_positions.req from databases and macros supplied to dbLoadRecords()
-# (and dbLoadTemplate(), which calls dbLoadRecords()).
-# This requires EPICS 3.15.1 or later, or 3.14 patched as described in
-# autosave R5-5 documentation.
-epicsEnvSet("BUILT_SETTINGS", "built_settings.req")
-epicsEnvSet("BUILT_POSITIONS", "built_positions.req")
-autosaveBuild("$(BUILT_SETTINGS)", "_settings.req", 1)
-#autosaveBuild("$(BUILT_SETTINGS)", ".req", 1)
-autosaveBuild("$(BUILT_POSITIONS)", "_positions.req", 1)
-
 # END save_restore.cmd --------------------------------------------------------
diff --git a/iocBoot/iocxxx/vxWorks/gpib.cmd b/iocBoot/iocxxx/vxWorks/gpib.cmd
index e65f707d415f44c7949f280407ad7f195fc9b73c..455474592d27482a99ab4e139988b6b603a90f7e 100644
--- a/iocBoot/iocxxx/vxWorks/gpib.cmd
+++ b/iocBoot/iocxxx/vxWorks/gpib.cmd
@@ -28,17 +28,15 @@ asynInterposeEosConfig("gpib1", 3, 1, 0)
 # asynOctetSetInputEos(const char *portName, int addr,
 #                      const char *eosin,const char *drvInfo)
 asynOctetSetInputEos("gpib1", 1, "\n")
-asynOctetSetInputEos("gpib1", 2, "\n")
 asynOctetSetInputEos("gpib1", 3, "\r")
 
 # asynOctetConnect(const char *entry, const char *port, int addr,
 #                  int timeout, int buffer_len, const char *drvInfo)
 asynOctetConnect("gpib1:1", "gpib1", 1, 1, 80)
-asynOctetConnect("gpib1:2", "gpib1", 2, 1, 80)
 asynOctetConnect("gpib1:3", "gpib1", 3, 1, 80)
 
 # Keithley 2000 DMM, connected with GPIB
-dbLoadRecords("$(IP)/ipApp/Db/Keithley2kDMM_mf.db","P=$(PREFIX),Dmm=D2,PORT=gpib1 2")
+iocshLoad("$(IP)/iocsh/Keithley_2k_gpib.iocsh", "PREFIX=$(PREFIX), INSTANCE=D2, PORT=gpib1, ADDR=2, NUM_CHANNELS=22, MODEL=2700")
 
 # send impromptu message to gpib device, parse reply
 # (was GPIB_OI_block)
diff --git a/iocBoot/iocxxx/vxWorks/serial.cmd b/iocBoot/iocxxx/vxWorks/serial.cmd
index 103d27064a41991b57f13dd781ed3a92240cd828..8aa6acde6509e102d0363720a265eac13e8569a9 100644
--- a/iocBoot/iocxxx/vxWorks/serial.cmd
+++ b/iocBoot/iocxxx/vxWorks/serial.cmd
@@ -112,26 +112,16 @@ dbLoadTemplate("common/asynRecord.substitutions", "P=$(PREFIX)")
 dbLoadRecords("$(IP)/ipApp/Db/deviceCmdReply.db","P=$(PREFIX),N=1,PORT=serial0,ADDR=0,OMAX=100,IMAX=100")
 
 # Stanford Research Systems SR570 Current Preamplifier
-#asynSetOption("serial0", -1, "baud", "9600")
-#asynSetOption("serial0", -1, "bits", "8")
-#asynSetOption("serial0", -1, "stop", "2")
-#asynSetOption("serial0", -1, "parity", "none")
-#asynSetOption("serial0", -1, "clocal", "Y")
-#asynSetOption("serial0", -1, "crtscts", "N")
-#asynOctetSetInputEos("serial0", -1, "\r")
-#asynOctetSetOutputEos("serial0", -1, "\r")
-#dbLoadRecords("$(IP)/ipApp/Db/SR570.db", "P=$(PREFIX),A=A1,PORT=serial0")
+#iocshLoad("$(IP)/iocsh/SR_570.iocsh", "PREFIX=$(PREFIX), INSTANCE=A1, PORT=serial0")
 
 # Keithley 2000 DMM
-#dbLoadRecords("$(IP)/ipApp/Db/Keithley2kDMM_mf.db","P=$(PREFIX),Dmm=D1,PORT=serial0")
-# channels: 10, 20, or 22;  model: 2000 or 2700
-#doAfterIocInit("seq &Keithley2kDMM,('P=$(PREFIX), Dmm=D1, channels=22, model=2700')")
-#doAfterIocInit("seq &Keithley2kDMM,('P=$(PREFIX), Dmm=D2, channels=10, model=2000')")
+#iocshLoad("$(IP)/iocsh/Keithley_2k_serial.iocsh", "PREFIX=$(PREFIX), INSTANCE=D1, PORT=serial0, NUM_CHANNELS=22, MODEL=2700")
+#iocshLoad("$(IP)/iocsh/Keithley_2k_serial.iocsh", "PREFIX=$(PREFIX), INSTANCE=D1, PORT=serial0, NUM_CHANNELS=10, MODEL=2000")
 
 # Oxford Cyberstar X1000 Scintillation detector and pulse processing unit
-#dbLoadRecords("$(IP)/ipApp/Db/Oxford_X1k.db","P=$(PREFIX),S=s1,PORT=serial3")
+#iocshLoad("$(IP)/iocsh/Oxford_X1k.iocsh", "PREFIX=$(PREFIX), INSTANCE=s1, PORT=serial3")
 
 # Oxford ILM202 Cryogen Level Meter (Serial)
-#dbLoadRecords("$(IP)/ipApp/Db/Oxford_ILM202.db","P=$(PREFIX),S=s1,PORT=serial4")
+#iocshLoad("$(IP)/iocsh/Oxford_ILM202.iocsh", "PREFIX=$(PREFIX), INSTANCE=s1, PORT=serial4")
 
 # END serial.cmd --------------------------------------------------------------
diff --git a/iocBoot/iocxxx/vxWorks/vme.cmd b/iocBoot/iocxxx/vxWorks/vme.cmd
index 25a2448ee145419105fb51757908b5b5795b7de0..ef4ff07d1cb542a394f148e152bd2a1158fd1f42 100644
--- a/iocBoot/iocxxx/vxWorks/vme.cmd
+++ b/iocBoot/iocxxx/vxWorks/vme.cmd
@@ -92,42 +92,21 @@ VSCSetup(2, 0xB0000000, 200)
 dbLoadRecords("$(VME)/vmeApp/Db/vme.db", "P=$(PREFIX),Q=vme1")
 
 # Hewlett-Packard 10895A Laser Axis (interferometer)
-#dbLoadRecords("$(VME)/vmeApp/Db/HPLaserAxis.db", "P=$(PREFIX),Q=HPLaser1, C=0")
-# hardware configuration
-# example: devHP10895LaserAxisConfig(ncards,a16base)
-#devHPLaserAxisConfig(2,0x1000)
+#iocshLoad("$(VME)/iocsh/HP_10895A.iocsh", "PREFIX=$(PREFIX), MAX_CARDS=2, ADDRESS=0x1000, INSTANCE=HPLaser1, CARD=0")
+#iocshLoad("$(VME)/iocsh/HP_10895A.iocsh", "PREFIX=$(PREFIX), INSTANCE=HPLaser2, CARD=1")
 
 # Acromag general purpose Digital I/O
-#dbLoadRecords("$(VME)/vmeApp/Db/Acromag_16IO.db", "P=$(PREFIX), A=1, C=0")
-
-# Acromag AVME9440 setup parameters:
-# devAvem9440Config (ncards,a16base,intvecbase)
-#devAvme9440Config(1,0x0400,0x78)
+#iocshLoad("$(VME)/iocsh/Acromag_9440.iocsh", "PREFIX=$(PREFIX), MAX_CARDS=2, ADDRESS=0x0400, INT_VEC=0x78, INSTANCE=1, CARD=0")
+#iocshLoad("$(VME)/iocsh/Acromag_9440.iocsh", "PREFIX=$(PREFIX), INSTANCE=2, CARD=1")
 
 # Bunch-clock generator
-#dbLoadRecords("$(VME)/vmeApp/Db/BunchClkGen.db","P=$(PREFIX)")
-#dbLoadRecords("$(VME)/vmeApp/Db/BunchClkGenA.db", "UNIT=xxx")
-# hardware configuration
-# example: BunchClkGenConfigure(intCard, unsigned long CardAddress)
-#BunchClkGenConfigure(0, 0x8c00)
-# sequence program
-#doAfterIocInit("seq &getFillPat, 'unit=xxx'")
+#iocshLoad("$(VME)/iocsh/BunchClkGen.iocsh", "PREFIX=$(PREFIX), INSTANCE=1, CARD=0, ADDRESS=0x8c00")
 
 ### GP307 Vacuum Controller
 #dbLoadRecords("$(VME)/vmeApp/Db/gp307.db","P=$(PREFIX)")
 
 # Machine Status Link (MSL) board (MRD 100)
-#####################################################
-# devAvmeMRDConfig( base, vector, level )
-#    base   = base address of card
-#    vector = interrupt vector
-#    level  = interrupt level
-# For Example
-#    devAvmeMRDConfig(0xA0000200, 0xA0, 5)
-#####################################################
-#  Configure the MSL MRD 100 module.....
-#devAvmeMRDConfig(0xB0000200, 0xA0, 5)    
-#dbLoadRecords("$(VME)/vmeApp/Db/msl_mrd100.db","C=0,S=01,ID1=01,ID2=01us")
+#iocshLoad("$(VME)/iocsh/MSL_MRD100.iocsh", "PREFIX=$(PREFIX), INSTANCE=01, ADDRESS=0xB0000200, INT_VEC=0xA0, CARD=0")
 
 # Allen-Bradley 6008 scanner
 #abConfigNlinks(1)