Quantum 9528 Digital Delay Pulse Generator.
authoruhoppe
Wed, 22 May 2013 12:18:16 +0200
changeset 1 0ba93e52269a
parent 0 be4f3ba220be
child 2 c68ad80babeb
Quantum 9528 Digital Delay Pulse Generator.
pg9520/Makefile
pg9520/bin/linux-x86_64/pg9520
pg9520/configure/CONFIG
pg9520/configure/CONFIG_SITE
pg9520/configure/Makefile
pg9520/configure/RELEASE
pg9520/configure/RELEASE~
pg9520/configure/RULES
pg9520/configure/RULES.ioc
pg9520/configure/RULES_DIRS
pg9520/configure/RULES_TOP
pg9520/db/pg9520.db
pg9520/db/pg9520.proto
pg9520/dbd/pg9520.dbd
pg9520/iocBoot/Makefile
pg9520/iocBoot/iocpg9520/Makefile
pg9520/iocBoot/iocpg9520/st.cmd
pg9520/iocBoot/iocpg9520/st.cmd~
pg9520/pg9520App/Db/Makefile
pg9520/pg9520App/Makefile
pg9520/pg9520App/src/Makefile
pg9520/pg9520App/src/Makefile~
pg9520/pg9520App/src/iocshGlobalCommands.dbd
pg9520/pg9520App/src/pg9520Main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pg9520/Makefile	Wed May 22 12:18:16 2013 +0200
@@ -0,0 +1,17 @@
+#Makefile at top of application tree
+TOP = .
+include $(TOP)/configure/CONFIG
+DIRS := $(DIRS) $(filter-out $(DIRS), configure)
+DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *App))
+DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard iocBoot))
+
+define DIR_template
+ $(1)_DEPEND_DIRS = configure
+endef
+$(foreach dir, $(filter-out configure,$(DIRS)),$(eval $(call DIR_template,$(dir))))
+
+iocBoot_DEPEND_DIRS += $(filter %App,$(DIRS))
+
+include $(TOP)/configure/RULES_TOP
+
+
Binary file pg9520/bin/linux-x86_64/pg9520 has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pg9520/configure/CONFIG	Wed May 22 12:18:16 2013 +0200
@@ -0,0 +1,29 @@
+# CONFIG - Load build configuration data
+#
+# Do not make changes to this file!
+
+# Allow user to override where the build rules come from
+RULES = $(EPICS_BASE)
+
+# RELEASE files point to other application tops
+include $(TOP)/configure/RELEASE
+-include $(TOP)/configure/RELEASE.$(EPICS_HOST_ARCH).Common
+ifdef T_A
+-include $(TOP)/configure/RELEASE.Common.$(T_A)
+-include $(TOP)/configure/RELEASE.$(EPICS_HOST_ARCH).$(T_A)
+endif
+
+CONFIG = $(RULES)/configure
+include $(CONFIG)/CONFIG
+
+# Override the Base definition:
+INSTALL_LOCATION = $(TOP)
+
+# CONFIG_SITE files contain other build configuration settings
+include $(TOP)/configure/CONFIG_SITE
+-include $(TOP)/configure/CONFIG_SITE.$(EPICS_HOST_ARCH).Common
+ifdef T_A
+ -include $(TOP)/configure/CONFIG_SITE.Common.$(T_A)
+ -include $(TOP)/configure/CONFIG_SITE.$(EPICS_HOST_ARCH).$(T_A)
+endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pg9520/configure/CONFIG_SITE	Wed May 22 12:18:16 2013 +0200
@@ -0,0 +1,33 @@
+# CONFIG_SITE
+
+# Make any application-specific changes to the EPICS build
+#   configuration variables in this file.
+#
+# Host/target specific settings can be specified in files named
+#   CONFIG_SITE.$(EPICS_HOST_ARCH).Common
+#   CONFIG_SITE.Common.$(T_A)
+#   CONFIG_SITE.$(EPICS_HOST_ARCH).$(T_A)
+
+# CHECK_RELEASE controls the consistency checking of the support
+#   applications pointed to by the RELEASE* files.
+# Normally CHECK_RELEASE should be set to YES.
+# Set CHECK_RELEASE to NO to disable checking completely.
+# Set CHECK_RELEASE to WARN to perform consistency checking but
+#   continue building anyway if conflicts are found.
+CHECK_RELEASE = YES
+
+# Set this when you only want to compile this application
+#   for a subset of the cross-compiled target architectures
+#   that Base is built for.
+#CROSS_COMPILER_TARGET_ARCHS = vxWorks-68040
+
+# To install files into a location other than $(TOP) define
+#   INSTALL_LOCATION here.
+#INSTALL_LOCATION=</path/name/to/install/top>
+
+# Set this when your IOC and the host use different paths
+#   to access the application. This will be needed to boot
+#   from a Microsoft FTP server or with some NFS mounts.
+# You must rebuild in the iocBoot directory for this to
+#   take effect.
+#IOCS_APPL_TOP = </IOC/path/to/application/top>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pg9520/configure/Makefile	Wed May 22 12:18:16 2013 +0200
@@ -0,0 +1,8 @@
+TOP=..
+
+include $(TOP)/configure/CONFIG
+
+TARGETS = $(CONFIG_TARGETS)
+CONFIGS += $(subst ../,,$(wildcard $(CONFIG_INSTALLS)))
+
+include $(TOP)/configure/RULES
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pg9520/configure/RELEASE	Wed May 22 12:18:16 2013 +0200
@@ -0,0 +1,37 @@
+# RELEASE - Location of external support modules
+#
+# IF YOU MAKE ANY CHANGES to this file you must subsequently
+# do a "gnumake rebuild" in this application's top level
+# directory.
+#
+# The build process does not check dependencies against files
+# that are outside this application, thus you should do a
+# "gnumake rebuild" in the top level directory after EPICS_BASE
+# or any other external module pointed to below is rebuilt.
+#
+# Host- or target-specific settings can be given in files named
+#  RELEASE.$(EPICS_HOST_ARCH).Common
+#  RELEASE.Common.$(T_A)
+#  RELEASE.$(EPICS_HOST_ARCH).$(T_A)
+#
+# This file should ONLY define paths to other support modules,
+# or include statements that pull in similar RELEASE files.
+# Build settings that are NOT module paths should appear in a
+# CONFIG_SITE file.
+
+TEMPLATE_TOP=$(EPICS_BASE)/templates/makeBaseApp/top
+
+# If using the sequencer, point SNCSEQ at its top directory:
+#SNCSEQ=$(EPICS_BASE)/../modules/soft/seq
+
+#uh
+MODULES=/opt/epics/modules
+STREAM=$(MODULES)/stream/2-4-1
+ASYN=/usr/lib/epics
+
+# EPICS_BASE usually appears last so other apps can override stuff:
+EPICS_BASE=/usr/lib/epics
+
+# Set RULES here if you want to take build rules from somewhere
+# other than EPICS_BASE:
+#RULES=/path/to/epics/support/module/rules/x-y
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pg9520/configure/RELEASE~	Wed May 22 12:18:16 2013 +0200
@@ -0,0 +1,32 @@
+# RELEASE - Location of external support modules
+#
+# IF YOU MAKE ANY CHANGES to this file you must subsequently
+# do a "gnumake rebuild" in this application's top level
+# directory.
+#
+# The build process does not check dependencies against files
+# that are outside this application, thus you should do a
+# "gnumake rebuild" in the top level directory after EPICS_BASE
+# or any other external module pointed to below is rebuilt.
+#
+# Host- or target-specific settings can be given in files named
+#  RELEASE.$(EPICS_HOST_ARCH).Common
+#  RELEASE.Common.$(T_A)
+#  RELEASE.$(EPICS_HOST_ARCH).$(T_A)
+#
+# This file should ONLY define paths to other support modules,
+# or include statements that pull in similar RELEASE files.
+# Build settings that are NOT module paths should appear in a
+# CONFIG_SITE file.
+
+TEMPLATE_TOP=$(EPICS_BASE)/templates/makeBaseApp/top
+
+# If using the sequencer, point SNCSEQ at its top directory:
+#SNCSEQ=$(EPICS_BASE)/../modules/soft/seq
+
+# EPICS_BASE usually appears last so other apps can override stuff:
+EPICS_BASE=/usr/lib/epics
+
+# Set RULES here if you want to take build rules from somewhere
+# other than EPICS_BASE:
+#RULES=/path/to/epics/support/module/rules/x-y
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pg9520/configure/RULES	Wed May 22 12:18:16 2013 +0200
@@ -0,0 +1,6 @@
+# RULES
+
+include $(CONFIG)/RULES
+
+# Library should be rebuilt because LIBOBJS may have changed.
+$(LIBNAME): ../Makefile
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pg9520/configure/RULES.ioc	Wed May 22 12:18:16 2013 +0200
@@ -0,0 +1,2 @@
+#RULES.ioc
+include $(CONFIG)/RULES.ioc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pg9520/configure/RULES_DIRS	Wed May 22 12:18:16 2013 +0200
@@ -0,0 +1,2 @@
+#RULES_DIRS
+include $(CONFIG)/RULES_DIRS
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pg9520/configure/RULES_TOP	Wed May 22 12:18:16 2013 +0200
@@ -0,0 +1,3 @@
+#RULES_TOP
+include $(CONFIG)/RULES_TOP
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pg9520/db/pg9520.db	Wed May 22 12:18:16 2013 +0200
@@ -0,0 +1,1797 @@
+# pg9520.db   Uwe Hoppe   Fritz-Haber-Institut der MPG   1/2013
+
+record(stringin, "$(P)$(R)GetVersion") {
+    field(DESC, "Get Contr. Firmware Version")
+    field(DTYP, "stream")
+    field(INP, "@pg9520.proto getVersion $(BUS)")
+}
+
+record(ao, "$(P)$(R)Recall") {
+    field(DESC, "Restores the state of PG")
+    field(DTYP, "stream")
+    field(OUT, "@pg9520.proto recall $(BUS)")
+    field(DRVL, "0")
+    field(DRVH, "12")
+}
+
+record(ao, "$(P)$(R)Save") {
+    field(DESC, "Store current state of PG")
+    field(DTYP, "stream")
+    field(OUT, "@pg9520.proto save $(BUS)")
+    field(DRVL, "1")
+    field(DRVH, "12")
+}
+
+record(bo, "$(P)$(R)State") {
+    field(DESC, "En-/Disables all channels")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setState $(BUS)")
+    field(ZNAM, "Off")
+    field(ONAM, "On")
+}
+
+record(bi, "$(P)$(R)GetState") {
+    field(DESC, "Get state of all channels")
+    field(DTYP, "stream")
+    field(INP,  "@pg9520.proto getState $(BUS)")
+    field(ZNAM, "Off")
+    field(ONAM, "On")
+    field(SCAN, "2 second")
+# Some commands can stop the generator
+    field(FLNK, "$(P)$(R)CheckState")
+}
+
+record(calcout,"$(P)$(R)CheckState") {
+    field(DESC, "Update state button")
+    field(OOPT, "On Change")
+    field(INPA,"$(P)$(R)GetState NPP NMS")
+    field(CALC,"A")
+    field(OUT, "$(P)$(R)State PP NMS")
+}
+
+record(ao, "$(P)$(R)Period") {
+    field(DESC, "Sets the T0 period")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPeriod $(BUS)")
+    field(PREC, "4")
+    field(DRVL, "100e-9")
+    field(DRVH, "5000")
+    field(EGU,  "sec")
+}
+
+record(ao, "$(P)$(R)UserPeriod") {
+    field(DESC, "Sets the T0 user period")
+    field(OUT, "$(P)$(R)Period2BaseUnit PP NMS")
+    field(PREC, "6")
+    field(DRVL, "100e-6")
+    field(DRVH, "5000000")
+    field(EGU,  "ms")
+}
+record(calcout,"$(P)$(R)Period2BaseUnit") {
+    field(DESC, "Convert Period to base unit")
+    field(INPA,"$(P)$(R)UserPeriod NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A/B")
+    field(OUT, "$(P)$(R)Period PP NMS")
+}
+record(calcout,"$(P)$(R)Period2UserUnit") {
+    field(DESC, "Convert Period to user unit")
+    field(PINI, "YES")
+    field(INPA,"$(P)$(R)Period NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A*B")
+    field(OUT, "$(P)$(R)UserPeriod NPP NMS")
+}
+record(ao,"$(P)$(R)PeriodTweak") {
+    field(DESC, "Step of Up/Down PeriodTweak")
+    field(VAL, "1e0")
+    field(PREC,"5")
+}
+record(calcout,"$(P)$(R)PeriodTweakDown") {
+    field(DESC, "New period after Down Tweak")
+    field(INPA,"$(P)$(R)PeriodTweak NPP NMS")
+    field(INPB,"$(P)$(R)UserPeriod NPP NMS")
+    field(CALC,"B-A")
+    field(OUT, "$(P)$(R)UserPeriod PP NMS")
+}
+record(calcout,"$(P)$(R)PeriodTweakUp") {
+    field(DESC, "New period after Up Tweak")
+    field(INPA,"$(P)$(R)PeriodTweak NPP NMS")
+    field(INPB,"$(P)$(R)UserPeriod NPP NMS")
+    field(CALC,"B+A")
+    field(OUT, "$(P)$(R)UserPeriod PP NMS")
+}
+
+record(mbbo, "$(P)$(R)Mode") {
+    field(DESC, "Sets the T0 mode")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setMode $(BUS)")
+    field(ZRST, "Normal")
+    field(ZRVL, "0")
+    field(ONST, "Single")
+    field(ONVL, "1")
+    field(TWST, "Burst")
+    field(TWVL, "2")
+    field(THST, "Duty Cycle")
+    field(THVL, "3")
+}
+
+record(mbbo, "$(P)$(R)GateMode") {
+    field(DESC, "Sets Global Gate Mode")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setGateMode $(BUS)")
+    field(ZRST, "Disable")
+    field(ZRVL, "0")
+    field(ONST, "Pulse inhibit")
+    field(ONVL, "1")
+    field(TWST, "Output inhibit")
+    field(TWVL, "2")
+    field(THST, "Channel")
+    field(THVL, "3")
+}
+
+record(mbbo, "$(P)$(R)GateLogic") {
+    field(DESC, "Sets Chan. Gate Logic Level")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setGateLogic $(BUS)")
+    field(ZRST, "Active low")
+    field(ZRVL, "0")
+    field(ONST, "Active high")
+    field(ONVL, "1")
+}
+
+record(ao, "$(P)$(R)GateLevel") {
+    field(DESC, "Sets the gate threshold")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setGateLevel $(BUS)")
+    field(PREC, "3")
+    field(DRVL, "0.2")
+    field(DRVH, "15")
+    field(EGU,  "V")
+}
+
+record(ao,"$(P)$(R)TimeUnitCF") {
+    field(DESC, "ms")
+    field(VAL, "1000.0")
+}
+
+#============================== Channel A ==============================
+
+record(bo, "$(P)$(R)StateA") {
+    field(DESC, "En-/Disable output pulse A")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPState(1) $(BUS)")
+    field(ZNAM, "Off")
+    field(ONAM, "On")
+}
+
+record(ao, "$(P)$(R)WidthA") {
+    field(DESC, "Width of the output pulse")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPWidth(1) $(BUS)")
+    field(PREC, "8")
+    field(DRVL, "10e-9")
+    field(DRVH, "999.99999999975")
+    field(EGU,  "sec")
+}
+
+record(ao, "$(P)$(R)UserWidthA") {
+    field(DESC, "User-Width of the pulse")
+    field(OUT, "$(P)$(R)Width2BaseUnitA PP NMS")
+    field(PREC, "8")
+    field(DRVL, "10e-6")
+    field(DRVH, "999999.99999975")
+    field(EGU,  "ms")
+}
+record(calcout,"$(P)$(R)Width2BaseUnitA") {
+    field(DESC, "Convert Width to base unit")
+    field(INPA,"$(P)$(R)UserWidthA NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A/B")
+    field(OUT, "$(P)$(R)WidthA PP NMS")
+}
+record(calcout,"$(P)$(R)Width2UserUnitA") {
+    field(DESC, "Convert Width to user unit")
+    field(PINI, "YES")
+    field(INPA,"$(P)$(R)WidthA NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A*B")
+    field(OUT, "$(P)$(R)UserWidthA NPP NMS")
+}
+record(ao,"$(P)$(R)WidthTweakA") {
+    field(DESC, "Step of Up/Down Width Tweak")
+    field(VAL, "1e-1")
+    field(PREC,"6")
+}
+record(calcout,"$(P)$(R)WidthTweakDownA") {
+    field(DESC, "New width after Down Tweak")
+    field(INPA,"$(P)$(R)WidthTweakA NPP NMS")
+    field(INPB,"$(P)$(R)UserWidthA NPP NMS")
+    field(CALC,"B-A")
+    field(OUT, "$(P)$(R)UserWidthA PP NMS")
+}
+record(calcout,"$(P)$(R)WidthTweakUpA") {
+    field(DESC, "New width after Up Tweak")
+    field(INPA,"$(P)$(R)WidthTweakA NPP NMS")
+    field(INPB,"$(P)$(R)UserWidthA NPP NMS")
+    field(CALC,"B+A")
+    field(OUT, "$(P)$(R)UserWidthA PP NMS")
+}
+
+record(ao, "$(P)$(R)DelayA") {
+    field(DESC, "Time f. start T0 to 1.edge")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPDelay(1) $(BUS)")
+    field(PREC, "8")
+    field(DRVL, "-999.99999999975")
+    field(DRVH, "999.99999999975")
+    field(EGU,  "sec")
+}
+
+record(ao, "$(P)$(R)UserDelayA") {
+    field(DESC, "User-Delay of the pulse")
+    field(OUT, "$(P)$(R)Delay2BaseUnitA PP NMS")
+    field(PREC, "8")
+    field(DRVL, "-999999.99999975")
+    field(DRVH, "999999.99999975")
+    field(EGU,  "ms")
+}
+record(calcout,"$(P)$(R)Delay2BaseUnitA") {
+    field(DESC, "Convert Delay to base unit")
+    field(INPA,"$(P)$(R)UserDelayA NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A/B")
+    field(OUT, "$(P)$(R)DelayA PP NMS")
+}
+record(calcout,"$(P)$(R)Delay2UserUnitA") {
+    field(DESC, "Convert Delay to user unit")
+    field(PINI, "YES")
+    field(INPA,"$(P)$(R)DelayA NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A*B")
+    field(OUT, "$(P)$(R)UserDelayA NPP NMS")
+}
+record(ao,"$(P)$(R)DelayTweakA") {
+    field(DESC, "Step of Up/Down Delay Tweak")
+    field(VAL, "1e-1")
+    field(PREC,"6")
+}
+record(calcout,"$(P)$(R)DelayTweakDownA") {
+    field(DESC, "New delay after Down Tweak")
+    field(INPA,"$(P)$(R)DelayTweakA NPP NMS")
+    field(INPB,"$(P)$(R)UserDelayA NPP NMS")
+    field(CALC,"B-A")
+    field(OUT, "$(P)$(R)UserDelayA PP NMS")
+}
+record(calcout,"$(P)$(R)DelayTweakUpA") {
+    field(DESC, "New delay after Up Tweak")
+    field(INPA,"$(P)$(R)DelayTweakA NPP NMS")
+    field(INPB,"$(P)$(R)UserDelayA NPP NMS")
+    field(CALC,"B+A")
+    field(OUT, "$(P)$(R)UserDelayA PP NMS")
+}
+
+record(mbbo, "$(P)$(R)SyncA") {
+    field(DESC, "Selects the Sync source")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPSync(1) $(BUS)")
+    field(ZRST, "T0")
+    field(ZRVL, "0")
+    field(ONST, "Error")
+    field(ONVL, "1")
+    field(TWST, "B")
+    field(TWVL, "2")
+    field(THST, "C")
+    field(THVL, "3")
+    field(FRST, "D")
+    field(FRVL, "4")
+    field(FVST, "E")
+    field(FVVL, "5")
+    field(SXST, "F")
+    field(SXVL, "6")
+    field(SVST, "G")
+    field(SVVL, "7")
+    field(EIST, "H")
+    field(EIVL, "8")
+}
+
+record(ao, "$(P)$(R)MultiplexerA") {
+    field(DESC, "Select which timers are on")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPMux(1) $(BUS)")
+    field(DRVL, "0")
+    field(DRVH, "255")
+}
+
+record(mbbo, "$(P)$(R)PolarityA") {
+    field(DESC, "Set polarity of the pulse")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPolarity(1) $(BUS)")
+    field(ZRST, "Normal")
+    field(ZRVL, "0")
+    field(ONST, "Complement")
+    field(ONVL, "1")
+    field(TWST, "Inverted")
+    field(TWVL, "2")
+}
+
+record(mbbo, "$(P)$(R)OutputModeA") {
+    field(DESC, "Select Amplitude mode")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setOutputMode(1) $(BUS)")
+    field(ZRST, "TTL")
+    field(ZRVL, "0")
+    field(ONST, "Adjustable")
+    field(ONVL, "1")
+}
+
+record(ao, "$(P)$(R)OutputAmplitudeA") {
+    field(DESC, "Set adjustable output level")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setOutputAmplitude(1) $(BUS)")
+    field(PREC, "3")
+    field(DRVL, "2")
+    field(DRVH, "20")
+    field(EGU,  "V")
+}
+
+record(mbbo, "$(P)$(R)GateModeA") {
+    field(DESC, "Sets Channel Gate Mode")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPGate(1) $(BUS)")
+    field(ZRST, "Disable")
+    field(ZRVL, "0")
+    field(ONST, "Pulse inhibit")
+    field(ONVL, "1")
+    field(TWST, "Output inhibit")
+    field(TWVL, "2")
+}
+
+record(mbbo, "$(P)$(R)GateLogicA") {
+    field(DESC, "Set Chan. Gate Logic Level")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPGateLogic(1) $(BUS)")
+    field(ZRST, "Active low")
+    field(ZRVL, "0")
+    field(ONST, "Active high")
+    field(ONVL, "1")
+}
+
+
+record(mbbo, "$(P)$(R)ChannelModeA") {
+    field(DESC, "Set Chan. pulse series Mode")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPCMode(1) $(BUS)")
+    field(ZRST, "Normal")
+    field(ZRVL, "0")
+    field(ONST, "Single")
+    field(ONVL, "1")
+    field(TWST, "Burst")
+    field(TWVL, "2")
+#    field(THST, "D-Cycle")
+#    field(THVL, "3")
+}
+
+record(ao, "$(P)$(R)BurstCounterA") {
+    field(DESC, "Set no. of pulses in Burst")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPBCounter(1) $(BUS)")
+#    field(PREC, "8")
+    field(DRVL, "1")
+    field(DRVH, "9999999")
+}
+
+
+#============================== Channel B ==============================
+
+record(bo, "$(P)$(R)StateB") {
+    field(DESC, "En-/Disable output pulse B")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPState(2) $(BUS)")
+    field(ZNAM, "Off")
+    field(ONAM, "On")
+}
+
+record(ao, "$(P)$(R)WidthB") {
+    field(DESC, "Width of the output pulse")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPWidth(2) $(BUS)")
+    field(PREC, "8")
+    field(DRVL, "10e-9")
+    field(DRVH, "999.99999999975")
+    field(EGU,  "sec")
+}
+
+record(ao, "$(P)$(R)UserWidthB") {
+    field(DESC, "User-Width of the pulse")
+    field(OUT, "$(P)$(R)Width2BaseUnitB PP NMS")
+    field(PREC, "8")
+    field(DRVL, "10e-6")
+    field(DRVH, "999999.99999975")
+    field(EGU,  "ms")
+}
+record(calcout,"$(P)$(R)Width2BaseUnitB") {
+    field(DESC, "Convert Width to base unit")
+    field(INPA,"$(P)$(R)UserWidthB NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A/B")
+    field(OUT, "$(P)$(R)WidthB PP NMS")
+}
+record(calcout,"$(P)$(R)Width2UserUnitB") {
+    field(DESC, "Convert Width to user unit")
+    field(PINI, "YES")
+    field(INPA,"$(P)$(R)WidthB NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A*B")
+    field(OUT, "$(P)$(R)UserWidthB NPP NMS")
+}
+record(ao,"$(P)$(R)WidthTweakB") {
+    field(DESC, "Step of Up/Down Width Tweak")
+    field(VAL, "1e-1")
+    field(PREC,"6")
+}
+record(calcout,"$(P)$(R)WidthTweakDownB") {
+    field(DESC, "New width after Down Tweak")
+    field(INPA,"$(P)$(R)WidthTweakB NPP NMS")
+    field(INPB,"$(P)$(R)UserWidthB NPP NMS")
+    field(CALC,"B-A")
+    field(OUT, "$(P)$(R)UserWidthB PP NMS")
+}
+record(calcout,"$(P)$(R)WidthTweakUpB") {
+    field(DESC, "New width after Up Tweak")
+    field(INPA,"$(P)$(R)WidthTweakB NPP NMS")
+    field(INPB,"$(P)$(R)UserWidthB NPP NMS")
+    field(CALC,"B+A")
+    field(OUT, "$(P)$(R)UserWidthB PP NMS")
+}
+
+record(ao, "$(P)$(R)DelayB") {
+    field(DESC, "Time f. start T0 to 1.edge")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPDelay(2) $(BUS)")
+    field(PREC, "8")
+    field(DRVL, "-999.99999999975")
+    field(DRVH, "999.99999999975")
+    field(EGU,  "sec")
+}
+
+record(ao, "$(P)$(R)UserDelayB") {
+    field(DESC, "User-Delay of the pulse")
+    field(OUT, "$(P)$(R)Delay2BaseUnitB PP NMS")
+    field(PREC, "8")
+    field(DRVL, "-999999.99999975")
+    field(DRVH, "999999.99999975")
+    field(EGU,  "ms")
+}
+record(calcout,"$(P)$(R)Delay2BaseUnitB") {
+    field(DESC, "Convert Delay to base unit")
+    field(INPA,"$(P)$(R)UserDelayB NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A/B")
+    field(OUT, "$(P)$(R)DelayB PP NMS")
+}
+record(calcout,"$(P)$(R)Delay2UserUnitB") {
+    field(DESC, "Convert Delay to user unit")
+    field(PINI, "YES")
+    field(INPA,"$(P)$(R)DelayB NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A*B")
+    field(OUT, "$(P)$(R)UserDelayB NPP NMS")
+}
+record(ao,"$(P)$(R)DelayTweakB") {
+    field(DESC, "Step of Up/Down Delay Tweak")
+    field(VAL, "1e-1")
+    field(PREC,"6")
+}
+record(calcout,"$(P)$(R)DelayTweakDownB") {
+    field(DESC, "New delay after Down Tweak")
+    field(INPA,"$(P)$(R)DelayTweakB NPP NMS")
+    field(INPB,"$(P)$(R)UserDelayB NPP NMS")
+    field(CALC,"B-A")
+    field(OUT, "$(P)$(R)UserDelayB PP NMS")
+}
+record(calcout,"$(P)$(R)DelayTweakUpB") {
+    field(DESC, "New delay after Up Tweak")
+    field(INPA,"$(P)$(R)DelayTweakB NPP NMS")
+    field(INPB,"$(P)$(R)UserDelayB NPP NMS")
+    field(CALC,"B+A")
+    field(OUT, "$(P)$(R)UserDelayB PP NMS")
+}
+
+record(mbbo, "$(P)$(R)SyncB") {
+    field(DESC, "Selects the Sync source")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPSync(2) $(BUS)")
+    field(ZRST, "T0")
+    field(ZRVL, "0")
+    field(ONST, "A")
+    field(ONVL, "1")
+    field(TWST, "Error")
+    field(TWVL, "2")
+    field(THST, "C")
+    field(THVL, "3")
+    field(FRST, "D")
+    field(FRVL, "4")
+    field(FVST, "E")
+    field(FVVL, "5")
+    field(SXST, "F")
+    field(SXVL, "6")
+    field(SVST, "G")
+    field(SVVL, "7")
+    field(EIST, "H")
+    field(EIVL, "8")
+}
+
+record(ao, "$(P)$(R)MultiplexerB") {
+    field(DESC, "Select which timers are on")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPMux(2) $(BUS)")
+    field(DRVL, "0")
+    field(DRVH, "255")
+}
+
+record(mbbo, "$(P)$(R)PolarityB") {
+    field(DESC, "Set polarity of the pulse")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPolarity(2) $(BUS)")
+    field(ZRST, "Normal")
+    field(ZRVL, "0")
+    field(ONST, "Complement")
+    field(ONVL, "1")
+    field(TWST, "Inverted")
+    field(TWVL, "2")
+}
+
+record(mbbo, "$(P)$(R)OutputModeB") {
+    field(DESC, "Select Amplitude mode")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setOutputMode(2) $(BUS)")
+    field(ZRST, "TTL")
+    field(ZRVL, "0")
+    field(ONST, "Adjustable")
+    field(ONVL, "1")
+}
+
+record(ao, "$(P)$(R)OutputAmplitudeB") {
+    field(DESC, "Set adjustable output level")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setOutputAmplitude(2) $(BUS)")
+    field(PREC, "3")
+    field(DRVL, "2")
+    field(DRVH, "20")
+    field(EGU,  "V")
+}
+
+record(mbbo, "$(P)$(R)GateModeB") {
+    field(DESC, "Sets Channel Gate Mode")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPGate(2) $(BUS)")
+    field(ZRST, "Disable")
+    field(ZRVL, "0")
+    field(ONST, "Pulse inhibit")
+    field(ONVL, "1")
+    field(TWST, "Output inhibit")
+    field(TWVL, "2")
+}
+
+record(mbbo, "$(P)$(R)GateLogicB") {
+    field(DESC, "Set Chan. Gate Logic Level")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPGateLogic(2) $(BUS)")
+    field(ZRST, "Active low")
+    field(ZRVL, "0")
+    field(ONST, "Active high")
+    field(ONVL, "1")
+}
+
+#============================== Channel C ==============================
+
+record(bo, "$(P)$(R)StateC") {
+    field(DESC, "En-/Disable output pulse C")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPState(3) $(BUS)")
+    field(ZNAM, "Off")
+    field(ONAM, "On")
+}
+
+record(ao, "$(P)$(R)WidthC") {
+    field(DESC, "Width of the output pulse")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPWidth(3) $(BUS)")
+    field(PREC, "8")
+    field(DRVL, "10e-9")
+    field(DRVH, "999.99999999975")
+    field(EGU,  "sec")
+}
+
+record(ao, "$(P)$(R)UserWidthC") {
+    field(DESC, "User-Width of the pulse")
+    field(OUT, "$(P)$(R)Width2BaseUnitC PP NMS")
+    field(PREC, "8")
+    field(DRVL, "10e-6")
+    field(DRVH, "999999.99999975")
+    field(EGU,  "ms")
+}
+record(calcout,"$(P)$(R)Width2BaseUnitC") {
+    field(DESC, "Convert Width to base unit")
+    field(INPA,"$(P)$(R)UserWidthC NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A/B")
+    field(OUT, "$(P)$(R)WidthC PP NMS")
+}
+record(calcout,"$(P)$(R)Width2UserUnitC") {
+    field(DESC, "Convert Width to user unit")
+    field(PINI, "YES")
+    field(INPA,"$(P)$(R)WidthC NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A*B")
+    field(OUT, "$(P)$(R)UserWidthC NPP NMS")
+}
+record(ao,"$(P)$(R)WidthTweakC") {
+    field(DESC, "Step of Up/Down Width Tweak")
+    field(VAL, "1e-1")
+    field(PREC,"6")
+}
+record(calcout,"$(P)$(R)WidthTweakDownC") {
+    field(DESC, "New width after Down Tweak")
+    field(INPA,"$(P)$(R)WidthTweakC NPP NMS")
+    field(INPB,"$(P)$(R)UserWidthC NPP NMS")
+    field(CALC,"B-A")
+    field(OUT, "$(P)$(R)UserWidthC PP NMS")
+}
+record(calcout,"$(P)$(R)WidthTweakUpC") {
+    field(DESC, "New width after Up Tweak")
+    field(INPA,"$(P)$(R)WidthTweakC NPP NMS")
+    field(INPB,"$(P)$(R)UserWidthC NPP NMS")
+    field(CALC,"B+A")
+    field(OUT, "$(P)$(R)UserWidthC PP NMS")
+}
+
+record(ao, "$(P)$(R)DelayC") {
+    field(DESC, "Time f. start T0 to 1.edge")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPDelay(3) $(BUS)")
+    field(PREC, "8")
+    field(DRVL, "-999.99999999975")
+    field(DRVH, "999.99999999975")
+    field(EGU,  "sec")
+}
+
+record(ao, "$(P)$(R)UserDelayC") {
+    field(DESC, "User-Delay of the pulse")
+    field(OUT, "$(P)$(R)Delay2BaseUnitC PP NMS")
+    field(PREC, "8")
+    field(DRVL, "-999999.99999975")
+    field(DRVH, "999999.99999975")
+    field(EGU,  "ms")
+}
+record(calcout,"$(P)$(R)Delay2BaseUnitC") {
+    field(DESC, "Convert Delay to base unit")
+    field(INPA,"$(P)$(R)UserDelayC NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A/B")
+    field(OUT, "$(P)$(R)DelayC PP NMS")
+}
+record(calcout,"$(P)$(R)Delay2UserUnitC") {
+    field(DESC, "Convert Delay to user unit")
+    field(PINI, "YES")
+    field(INPA,"$(P)$(R)DelayC NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A*B")
+    field(OUT, "$(P)$(R)UserDelayC NPP NMS")
+}
+record(ao,"$(P)$(R)DelayTweakC") {
+    field(DESC, "Step of Up/Down Delay Tweak")
+    field(VAL, "1e-1")
+    field(PREC,"6")
+}
+record(calcout,"$(P)$(R)DelayTweakDownC") {
+    field(DESC, "New delay after Down Tweak")
+    field(INPA,"$(P)$(R)DelayTweakC NPP NMS")
+    field(INPB,"$(P)$(R)UserDelayC NPP NMS")
+    field(CALC,"B-A")
+    field(OUT, "$(P)$(R)UserDelayC PP NMS")
+}
+record(calcout,"$(P)$(R)DelayTweakUpC") {
+    field(DESC, "New delay after Up Tweak")
+    field(INPA,"$(P)$(R)DelayTweakC NPP NMS")
+    field(INPB,"$(P)$(R)UserDelayC NPP NMS")
+    field(CALC,"B+A")
+    field(OUT, "$(P)$(R)UserDelayC PP NMS")
+}
+
+record(mbbo, "$(P)$(R)SyncC") {
+    field(DESC, "Selects the Sync source")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPSync(3) $(BUS)")
+    field(ZRST, "T0")
+    field(ZRVL, "0")
+    field(ONST, "A")
+    field(ONVL, "1")
+    field(TWST, "B")
+    field(TWVL, "2")
+    field(THST, "Error")
+    field(THVL, "3")
+    field(FRST, "D")
+    field(FRVL, "4")
+    field(FVST, "E")
+    field(FVVL, "5")
+    field(SXST, "F")
+    field(SXVL, "6")
+    field(SVST, "G")
+    field(SVVL, "7")
+    field(EIST, "H")
+    field(EIVL, "8")
+}
+
+record(ao, "$(P)$(R)MultiplexerC") {
+    field(DESC, "Select which timers are on")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPMux(3) $(BUS)")
+    field(DRVL, "0")
+    field(DRVH, "255")
+}
+
+record(mbbo, "$(P)$(R)PolarityC") {
+    field(DESC, "Set polarity of the pulse")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPolarity(3) $(BUS)")
+    field(ZRST, "Normal")
+    field(ZRVL, "0")
+    field(ONST, "Complement")
+    field(ONVL, "1")
+    field(TWST, "Inverted")
+    field(TWVL, "2")
+}
+
+record(mbbo, "$(P)$(R)OutputModeC") {
+    field(DESC, "Select Amplitude mode")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setOutputMode(3) $(BUS)")
+    field(ZRST, "TTL")
+    field(ZRVL, "0")
+    field(ONST, "Adjustable")
+    field(ONVL, "1")
+}
+
+record(ao, "$(P)$(R)OutputAmplitudeC") {
+    field(DESC, "Set adjustable output level")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setOutputAmplitude(3) $(BUS)")
+    field(PREC, "3")
+    field(DRVL, "2")
+    field(DRVH, "20")
+    field(EGU,  "V")
+}
+
+record(mbbo, "$(P)$(R)GateModeC") {
+    field(DESC, "Sets Channel Gate Mode")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPGate(3) $(BUS)")
+    field(ZRST, "Disable")
+    field(ZRVL, "0")
+    field(ONST, "Pulse inhibit")
+    field(ONVL, "1")
+    field(TWST, "Output inhibit")
+    field(TWVL, "2")
+}
+
+record(mbbo, "$(P)$(R)GateLogicC") {
+    field(DESC, "Set Chan. Gate Logic Level")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPGateLogic(3) $(BUS)")
+    field(ZRST, "Active low")
+    field(ZRVL, "0")
+    field(ONST, "Active high")
+    field(ONVL, "1")
+}
+
+#============================== Channel D ==============================
+
+record(bo, "$(P)$(R)StateD") {
+    field(DESC, "En-/Disable output pulse D")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPState(4) $(BUS)")
+    field(ZNAM, "Off")
+    field(ONAM, "On")
+}
+
+record(ao, "$(P)$(R)WidthD") {
+    field(DESC, "Width of the output pulse")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPWidth(4) $(BUS)")
+    field(PREC, "8")
+    field(DRVL, "10e-9")
+    field(DRVH, "999.99999999975")
+    field(EGU,  "sec")
+}
+
+record(ao, "$(P)$(R)UserWidthD") {
+    field(DESC, "User-Width of the pulse")
+    field(OUT, "$(P)$(R)Width2BaseUnitD PP NMS")
+    field(PREC, "8")
+    field(DRVL, "10e-6")
+    field(DRVH, "999999.99999975")
+    field(EGU,  "ms")
+}
+record(calcout,"$(P)$(R)Width2BaseUnitD") {
+    field(DESC, "Convert Width to base unit")
+    field(INPA,"$(P)$(R)UserWidthD NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A/B")
+    field(OUT, "$(P)$(R)WidthD PP NMS")
+}
+record(calcout,"$(P)$(R)Width2UserUnitD") {
+    field(DESC, "Convert Width to user unit")
+    field(PINI, "YES")
+    field(INPA,"$(P)$(R)WidthD NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A*B")
+    field(OUT, "$(P)$(R)UserWidthD NPP NMS")
+}
+record(ao,"$(P)$(R)WidthTweakD") {
+    field(DESC, "Step of Up/Down Width Tweak")
+    field(VAL, "1e-1")
+    field(PREC,"6")
+}
+record(calcout,"$(P)$(R)WidthTweakDownD") {
+    field(DESC, "New width after Down Tweak")
+    field(INPA,"$(P)$(R)WidthTweakD NPP NMS")
+    field(INPB,"$(P)$(R)UserWidthD NPP NMS")
+    field(CALC,"B-A")
+    field(OUT, "$(P)$(R)UserWidthD PP NMS")
+}
+record(calcout,"$(P)$(R)WidthTweakUpD") {
+    field(DESC, "New width after Up Tweak")
+    field(INPA,"$(P)$(R)WidthTweakD NPP NMS")
+    field(INPB,"$(P)$(R)UserWidthD NPP NMS")
+    field(CALC,"B+A")
+    field(OUT, "$(P)$(R)UserWidthD PP NMS")
+}
+
+record(ao, "$(P)$(R)DelayD") {
+    field(DESC, "Time f. start T0 to 1.edge")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPDelay(4) $(BUS)")
+    field(PREC, "8")
+    field(DRVL, "-999.99999999975")
+    field(DRVH, "999.99999999975")
+    field(EGU,  "sec")
+}
+
+record(ao, "$(P)$(R)UserDelayD") {
+    field(DESC, "User-Delay of the pulse")
+    field(OUT, "$(P)$(R)Delay2BaseUnitD PP NMS")
+    field(PREC, "8")
+    field(DRVL, "-999999.99999975")
+    field(DRVH, "999999.99999975")
+    field(EGU,  "ms")
+}
+record(calcout,"$(P)$(R)Delay2BaseUnitD") {
+    field(DESC, "Convert Delay to base unit")
+    field(INPA,"$(P)$(R)UserDelayD NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A/B")
+    field(OUT, "$(P)$(R)DelayD PP NMS")
+}
+record(calcout,"$(P)$(R)Delay2UserUnitD") {
+    field(DESC, "Convert Delay to user unit")
+    field(PINI, "YES")
+    field(INPA,"$(P)$(R)DelayD NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A*B")
+    field(OUT, "$(P)$(R)UserDelayD NPP NMS")
+}
+record(ao,"$(P)$(R)DelayTweakD") {
+    field(DESC, "Step of Up/Down Delay Tweak")
+    field(VAL, "1e-1")
+    field(PREC,"6")
+}
+record(calcout,"$(P)$(R)DelayTweakDownD") {
+    field(DESC, "New delay after Down Tweak")
+    field(INPA,"$(P)$(R)DelayTweakD NPP NMS")
+    field(INPB,"$(P)$(R)UserDelayD NPP NMS")
+    field(CALC,"B-A")
+    field(OUT, "$(P)$(R)UserDelayD PP NMS")
+}
+record(calcout,"$(P)$(R)DelayTweakUpD") {
+    field(DESC, "New delay after Up Tweak")
+    field(INPA,"$(P)$(R)DelayTweakD NPP NMS")
+    field(INPB,"$(P)$(R)UserDelayD NPP NMS")
+    field(CALC,"B+A")
+    field(OUT, "$(P)$(R)UserDelayD PP NMS")
+}
+
+record(mbbo, "$(P)$(R)SyncD") {
+    field(DESC, "Selects the Sync source")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPSync(4) $(BUS)")
+    field(ZRST, "T0")
+    field(ZRVL, "0")
+    field(ONST, "A")
+    field(ONVL, "1")
+    field(TWST, "B")
+    field(TWVL, "2")
+    field(THST, "C")
+    field(THVL, "3")
+    field(FRST, "Error")
+    field(FRVL, "4")
+    field(FVST, "E")
+    field(FVVL, "5")
+    field(SXST, "F")
+    field(SXVL, "6")
+    field(SVST, "G")
+    field(SVVL, "7")
+    field(EIST, "H")
+    field(EIVL, "8")
+}
+
+record(ao, "$(P)$(R)MultiplexerD") {
+    field(DESC, "Select which timers are on")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPMux(4) $(BUS)")
+    field(DRVL, "0")
+    field(DRVH, "255")
+}
+
+record(mbbo, "$(P)$(R)PolarityD") {
+    field(DESC, "Set polarity of the pulse")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPolarity(4) $(BUS)")
+    field(ZRST, "Normal")
+    field(ZRVL, "0")
+    field(ONST, "Complement")
+    field(ONVL, "1")
+    field(TWST, "Inverted")
+    field(TWVL, "2")
+}
+
+record(mbbo, "$(P)$(R)OutputModeD") {
+    field(DESC, "Select Amplitude mode")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setOutputMode(4) $(BUS)")
+    field(ZRST, "TTL")
+    field(ZRVL, "0")
+    field(ONST, "Adjustable")
+    field(ONVL, "1")
+}
+
+record(ao, "$(P)$(R)OutputAmplitudeD") {
+    field(DESC, "Set adjustable output level")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setOutputAmplitude(4) $(BUS)")
+    field(PREC, "3")
+    field(DRVL, "2")
+    field(DRVH, "20")
+    field(EGU,  "V")
+}
+
+record(mbbo, "$(P)$(R)GateModeD") {
+    field(DESC, "Sets Channel Gate Mode")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPGate(4) $(BUS)")
+    field(ZRST, "Disable")
+    field(ZRVL, "0")
+    field(ONST, "Pulse inhibit")
+    field(ONVL, "1")
+    field(TWST, "Output inhibit")
+    field(TWVL, "2")
+}
+
+record(mbbo, "$(P)$(R)GateLogicD") {
+    field(DESC, "Set Chan. Gate Logic Level")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPGateLogic(4) $(BUS)")
+    field(ZRST, "Active low")
+    field(ZRVL, "0")
+    field(ONST, "Active high")
+    field(ONVL, "1")
+}
+
+#============================== Channel E ==============================
+
+record(bo, "$(P)$(R)StateE") {
+    field(DESC, "En-/Disable output pulse E")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPState(5) $(BUS)")
+    field(ZNAM, "Off")
+    field(ONAM, "On")
+}
+
+record(ao, "$(P)$(R)WidthE") {
+    field(DESC, "Width of the output pulse")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPWidth(5) $(BUS)")
+    field(PREC, "8")
+    field(DRVL, "10e-9")
+    field(DRVH, "999.99999999975")
+    field(EGU,  "sec")
+}
+
+record(ao, "$(P)$(R)UserWidthE") {
+    field(DESC, "User-Width of the pulse")
+    field(OUT, "$(P)$(R)Width2BaseUnitE PP NMS")
+    field(PREC, "8")
+    field(DRVL, "10e-6")
+    field(DRVH, "999999.99999975")
+    field(EGU,  "ms")
+}
+record(calcout,"$(P)$(R)Width2BaseUnitE") {
+    field(DESC, "Convert Width to base unit")
+    field(INPA,"$(P)$(R)UserWidthE NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A/B")
+    field(OUT, "$(P)$(R)WidthE PP NMS")
+}
+record(calcout,"$(P)$(R)Width2UserUnitE") {
+    field(DESC, "Convert Width to user unit")
+    field(PINI, "YES")
+    field(INPA,"$(P)$(R)WidthE NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A*B")
+    field(OUT, "$(P)$(R)UserWidthE NPP NMS")
+}
+record(ao,"$(P)$(R)WidthTweakE") {
+    field(DESC, "Step of Up/Down Width Tweak")
+    field(VAL, "1e-1")
+    field(PREC,"6")
+}
+record(calcout,"$(P)$(R)WidthTweakDownE") {
+    field(DESC, "New width after Down Tweak")
+    field(INPA,"$(P)$(R)WidthTweakE NPP NMS")
+    field(INPB,"$(P)$(R)UserWidthE NPP NMS")
+    field(CALC,"B-A")
+    field(OUT, "$(P)$(R)UserWidthE PP NMS")
+}
+record(calcout,"$(P)$(R)WidthTweakUpE") {
+    field(DESC, "New width after Up Tweak")
+    field(INPA,"$(P)$(R)WidthTweakE NPP NMS")
+    field(INPB,"$(P)$(R)UserWidthE NPP NMS")
+    field(CALC,"B+A")
+    field(OUT, "$(P)$(R)UserWidthE PP NMS")
+}
+
+record(ao, "$(P)$(R)DelayE") {
+    field(DESC, "Time f. start T0 to 1.edge")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPDelay(5) $(BUS)")
+    field(PREC, "8")
+    field(DRVL, "-999.99999999975")
+    field(DRVH, "999.99999999975")
+    field(EGU,  "sec")
+}
+
+record(ao, "$(P)$(R)UserDelayE") {
+    field(DESC, "User-Delay of the pulse")
+    field(OUT, "$(P)$(R)Delay2BaseUnitE PP NMS")
+    field(PREC, "8")
+    field(DRVL, "-999999.99999975")
+    field(DRVH, "999999.99999975")
+    field(EGU,  "ms")
+}
+record(calcout,"$(P)$(R)Delay2BaseUnitE") {
+    field(DESC, "Convert Delay to base unit")
+    field(INPA,"$(P)$(R)UserDelayE NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A/B")
+    field(OUT, "$(P)$(R)DelayE PP NMS")
+}
+record(calcout,"$(P)$(R)Delay2UserUnitE") {
+    field(DESC, "Convert Delay to user unit")
+    field(PINI, "YES")
+    field(INPA,"$(P)$(R)DelayE NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A*B")
+    field(OUT, "$(P)$(R)UserDelayE NPP NMS")
+}
+record(ao,"$(P)$(R)DelayTweakE") {
+    field(DESC, "Step of Up/Down Delay Tweak")
+    field(VAL, "1e-1")
+    field(PREC,"6")
+}
+record(calcout,"$(P)$(R)DelayTweakDownE") {
+    field(DESC, "New delay after Down Tweak")
+    field(INPA,"$(P)$(R)DelayTweakE NPP NMS")
+    field(INPB,"$(P)$(R)UserDelayE NPP NMS")
+    field(CALC,"B-A")
+    field(OUT, "$(P)$(R)UserDelayE PP NMS")
+}
+record(calcout,"$(P)$(R)DelayTweakUpE") {
+    field(DESC, "New delay after Up Tweak")
+    field(INPA,"$(P)$(R)DelayTweakE NPP NMS")
+    field(INPB,"$(P)$(R)UserDelayE NPP NMS")
+    field(CALC,"B+A")
+    field(OUT, "$(P)$(R)UserDelayE PP NMS")
+}
+
+record(mbbo, "$(P)$(R)SyncE") {
+    field(DESC, "Selects the Sync source")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPSync(5) $(BUS)")
+    field(ZRST, "T0")
+    field(ZRVL, "0")
+    field(ONST, "A")
+    field(ONVL, "1")
+    field(TWST, "B")
+    field(TWVL, "2")
+    field(THST, "C")
+    field(THVL, "3")
+    field(FRST, "D")
+    field(FRVL, "4")
+    field(FVST, "Error")
+    field(FVVL, "5")
+    field(SXST, "F")
+    field(SXVL, "6")
+    field(SVST, "G")
+    field(SVVL, "7")
+    field(EIST, "H")
+    field(EIVL, "8")
+}
+
+record(ao, "$(P)$(R)MultiplexerE") {
+    field(DESC, "Select which timers are on")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPMux(5) $(BUS)")
+    field(DRVL, "0")
+    field(DRVH, "255")
+}
+
+record(mbbo, "$(P)$(R)PolarityE") {
+    field(DESC, "Set polarity of the pulse")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPolarity(5) $(BUS)")
+    field(ZRST, "Normal")
+    field(ZRVL, "0")
+    field(ONST, "Complement")
+    field(ONVL, "1")
+    field(TWST, "Inverted")
+    field(TWVL, "2")
+}
+
+record(mbbo, "$(P)$(R)OutputModeE") {
+    field(DESC, "Select Amplitude mode")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setOutputMode(5) $(BUS)")
+    field(ZRST, "TTL")
+    field(ZRVL, "0")
+    field(ONST, "Adjustable")
+    field(ONVL, "1")
+}
+
+record(ao, "$(P)$(R)OutputAmplitudeE") {
+    field(DESC, "Set adjustable output level")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setOutputAmplitude(5) $(BUS)")
+    field(PREC, "3")
+    field(DRVL, "2")
+    field(DRVH, "20")
+    field(EGU,  "V")
+}
+
+record(mbbo, "$(P)$(R)GateModeE") {
+    field(DESC, "Sets Channel Gate Mode")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPGate(5) $(BUS)")
+    field(ZRST, "Disable")
+    field(ZRVL, "0")
+    field(ONST, "Pulse inhibit")
+    field(ONVL, "1")
+    field(TWST, "Output inhibit")
+    field(TWVL, "2")
+}
+
+record(mbbo, "$(P)$(R)GateLogicE") {
+    field(DESC, "Set Chan. Gate Logic Level")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPGateLogic(5) $(BUS)")
+    field(ZRST, "Active low")
+    field(ZRVL, "0")
+    field(ONST, "Active high")
+    field(ONVL, "1")
+}
+
+#============================== Channel F ==============================
+
+record(bo, "$(P)$(R)StateF") {
+    field(DESC, "En-/Disable output pulse F")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPState(6) $(BUS)")
+    field(ZNAM, "Off")
+    field(ONAM, "On")
+}
+
+record(ao, "$(P)$(R)WidthF") {
+    field(DESC, "Width of the output pulse")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPWidth(6) $(BUS)")
+    field(PREC, "8")
+    field(DRVL, "10e-9")
+    field(DRVH, "999.99999999975")
+    field(EGU,  "sec")
+}
+
+record(ao, "$(P)$(R)UserWidthF") {
+    field(DESC, "User-Width of the pulse")
+    field(OUT, "$(P)$(R)Width2BaseUnitF PP NMS")
+    field(PREC, "8")
+    field(DRVL, "10e-6")
+    field(DRVH, "999999.99999975")
+    field(EGU,  "ms")
+}
+record(calcout,"$(P)$(R)Width2BaseUnitF") {
+    field(DESC, "Convert Width to base unit")
+    field(INPA,"$(P)$(R)UserWidthF NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A/B")
+    field(OUT, "$(P)$(R)WidthF PP NMS")
+}
+record(calcout,"$(P)$(R)Width2UserUnitF") {
+    field(DESC, "Convert Width to user unit")
+    field(PINI, "YES")
+    field(INPA,"$(P)$(R)WidthF NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A*B")
+    field(OUT, "$(P)$(R)UserWidthF NPP NMS")
+}
+record(ao,"$(P)$(R)WidthTweakF") {
+    field(DESC, "Step of Up/Down Width Tweak")
+    field(VAL, "1e-1")
+    field(PREC,"6")
+}
+record(calcout,"$(P)$(R)WidthTweakDownF") {
+    field(DESC, "New width after Down Tweak")
+    field(INPA,"$(P)$(R)WidthTweakF NPP NMS")
+    field(INPB,"$(P)$(R)UserWidthF NPP NMS")
+    field(CALC,"B-A")
+    field(OUT, "$(P)$(R)UserWidthF PP NMS")
+}
+record(calcout,"$(P)$(R)WidthTweakUpF") {
+    field(DESC, "New width after Up Tweak")
+    field(INPA,"$(P)$(R)WidthTweakF NPP NMS")
+    field(INPB,"$(P)$(R)UserWidthF NPP NMS")
+    field(CALC,"B+A")
+    field(OUT, "$(P)$(R)UserWidthF PP NMS")
+}
+
+record(ao, "$(P)$(R)DelayF") {
+    field(DESC, "Time f. start T0 to 1.edge")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPDelay(6) $(BUS)")
+    field(PREC, "8")
+    field(DRVL, "-999.99999999975")
+    field(DRVH, "999.99999999975")
+    field(EGU,  "sec")
+}
+
+record(ao, "$(P)$(R)UserDelayF") {
+    field(DESC, "User-Delay of the pulse")
+    field(OUT, "$(P)$(R)Delay2BaseUnitF PP NMS")
+    field(PREC, "8")
+    field(DRVL, "-999999.99999975")
+    field(DRVH, "999999.99999975")
+    field(EGU,  "ms")
+}
+record(calcout,"$(P)$(R)Delay2BaseUnitF") {
+    field(DESC, "Convert Delay to base unit")
+    field(INPA,"$(P)$(R)UserDelayF NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A/B")
+    field(OUT, "$(P)$(R)DelayF PP NMS")
+}
+record(calcout,"$(P)$(R)Delay2UserUnitF") {
+    field(DESC, "Convert Delay to user unit")
+    field(PINI, "YES")
+    field(INPA,"$(P)$(R)DelayF NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A*B")
+    field(OUT, "$(P)$(R)UserDelayF NPP NMS")
+}
+record(ao,"$(P)$(R)DelayTweakF") {
+    field(DESC, "Step of Up/Down Delay Tweak")
+    field(VAL, "1e-1")
+    field(PREC,"6")
+}
+record(calcout,"$(P)$(R)DelayTweakDownF") {
+    field(DESC, "New delay after Down Tweak")
+    field(INPA,"$(P)$(R)DelayTweakF NPP NMS")
+    field(INPB,"$(P)$(R)UserDelayF NPP NMS")
+    field(CALC,"B-A")
+    field(OUT, "$(P)$(R)UserDelayF PP NMS")
+}
+record(calcout,"$(P)$(R)DelayTweakUpF") {
+    field(DESC, "New delay after Up Tweak")
+    field(INPA,"$(P)$(R)DelayTweakF NPP NMS")
+    field(INPB,"$(P)$(R)UserDelayF NPP NMS")
+    field(CALC,"B+A")
+    field(OUT, "$(P)$(R)UserDelayF PP NMS")
+}
+
+record(mbbo, "$(P)$(R)SyncF") {
+    field(DESC, "Selects the Sync source")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPSync(6) $(BUS)")
+    field(ZRST, "T0")
+    field(ZRVL, "0")
+    field(ONST, "A")
+    field(ONVL, "1")
+    field(TWST, "B")
+    field(TWVL, "2")
+    field(THST, "C")
+    field(THVL, "3")
+    field(FRST, "D")
+    field(FRVL, "4")
+    field(FVST, "E")
+    field(FVVL, "5")
+    field(SXST, "Error")
+    field(SXVL, "6")
+    field(SVST, "G")
+    field(SVVL, "7")
+    field(EIST, "H")
+    field(EIVL, "8")
+}
+
+record(ao, "$(P)$(R)MultiplexerF") {
+    field(DESC, "Select which timers are on")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPMux(6) $(BUS)")
+    field(DRVL, "0")
+    field(DRVH, "255")
+}
+
+record(mbbo, "$(P)$(R)PolarityF") {
+    field(DESC, "Set polarity of the pulse")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPolarity(6) $(BUS)")
+    field(ZRST, "Normal")
+    field(ZRVL, "0")
+    field(ONST, "Complement")
+    field(ONVL, "1")
+    field(TWST, "Inverted")
+    field(TWVL, "2")
+}
+
+record(mbbo, "$(P)$(R)OutputModeF") {
+    field(DESC, "Select Amplitude mode")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setOutputMode(6) $(BUS)")
+    field(ZRST, "TTL")
+    field(ZRVL, "0")
+    field(ONST, "Adjustable")
+    field(ONVL, "1")
+}
+
+record(ao, "$(P)$(R)OutputAmplitudeF") {
+    field(DESC, "Set adjustable output level")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setOutputAmplitude(6) $(BUS)")
+    field(PREC, "3")
+    field(DRVL, "2")
+    field(DRVH, "20")
+    field(EGU,  "V")
+}
+
+record(mbbo, "$(P)$(R)GateModeF") {
+    field(DESC, "Sets Channel Gate Mode")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPGate(6) $(BUS)")
+    field(ZRST, "Disable")
+    field(ZRVL, "0")
+    field(ONST, "Pulse inhibit")
+    field(ONVL, "1")
+    field(TWST, "Output inhibit")
+    field(TWVL, "2")
+}
+
+record(mbbo, "$(P)$(R)GateLogicF") {
+    field(DESC, "Set Chan. Gate Logic Level")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPGateLogic(6) $(BUS)")
+    field(ZRST, "Active low")
+    field(ZRVL, "0")
+    field(ONST, "Active high")
+    field(ONVL, "1")
+}
+
+#============================== Channel G ==============================
+
+record(bo, "$(P)$(R)StateG") {
+    field(DESC, "En-/Disable output pulse G")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPState(7) $(BUS)")
+    field(ZNAM, "Off")
+    field(ONAM, "On")
+}
+
+record(ao, "$(P)$(R)WidthG") {
+    field(DESC, "Width of the output pulse")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPWidth(7) $(BUS)")
+    field(PREC, "8")
+    field(DRVL, "10e-9")
+    field(DRVH, "999.99999999975")
+    field(EGU,  "sec")
+}
+
+record(ao, "$(P)$(R)UserWidthG") {
+    field(DESC, "User-Width of the pulse")
+    field(OUT, "$(P)$(R)Width2BaseUnitG PP NMS")
+    field(PREC, "8")
+    field(DRVL, "10e-6")
+    field(DRVH, "999999.99999975")
+    field(EGU,  "ms")
+}
+record(calcout,"$(P)$(R)Width2BaseUnitG") {
+    field(DESC, "Convert Width to base unit")
+    field(INPA,"$(P)$(R)UserWidthG NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A/B")
+    field(OUT, "$(P)$(R)WidthG PP NMS")
+}
+record(calcout,"$(P)$(R)Width2UserUnitG") {
+    field(DESC, "Convert Width to user unit")
+    field(PINI, "YES")
+    field(INPA,"$(P)$(R)WidthG NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A*B")
+    field(OUT, "$(P)$(R)UserWidthG NPP NMS")
+}
+record(ao,"$(P)$(R)WidthTweakG") {
+    field(DESC, "Step of Up/Down Width Tweak")
+    field(VAL, "1e-1")
+    field(PREC,"6")
+}
+record(calcout,"$(P)$(R)WidthTweakDownG") {
+    field(DESC, "New width after Down Tweak")
+    field(INPA,"$(P)$(R)WidthTweakG NPP NMS")
+    field(INPB,"$(P)$(R)UserWidthG NPP NMS")
+    field(CALC,"B-A")
+    field(OUT, "$(P)$(R)UserWidthG PP NMS")
+}
+record(calcout,"$(P)$(R)WidthTweakUpG") {
+    field(DESC, "New width after Up Tweak")
+    field(INPA,"$(P)$(R)WidthTweakG NPP NMS")
+    field(INPB,"$(P)$(R)UserWidthG NPP NMS")
+    field(CALC,"B+A")
+    field(OUT, "$(P)$(R)UserWidthG PP NMS")
+}
+
+record(ao, "$(P)$(R)DelayG") {
+    field(DESC, "Time f. start T0 to 1.edge")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPDelay(7) $(BUS)")
+    field(PREC, "8")
+    field(DRVL, "-999.99999999975")
+    field(DRVH, "999.99999999975")
+    field(EGU,  "sec")
+}
+
+record(ao, "$(P)$(R)UserDelayG") {
+    field(DESC, "User-Delay of the pulse")
+    field(OUT, "$(P)$(R)Delay2BaseUnitG PP NMS")
+    field(PREC, "8")
+    field(DRVL, "-999999.99999975")
+    field(DRVH, "999999.99999975")
+    field(EGU,  "ms")
+}
+record(calcout,"$(P)$(R)Delay2BaseUnitG") {
+    field(DESC, "Convert Delay to base unit")
+    field(INPA,"$(P)$(R)UserDelayG NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A/B")
+    field(OUT, "$(P)$(R)DelayG PP NMS")
+}
+record(calcout,"$(P)$(R)Delay2UserUnitG") {
+    field(DESC, "Convert Delay to user unit")
+    field(PINI, "YES")
+    field(INPA,"$(P)$(R)DelayG NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A*B")
+    field(OUT, "$(P)$(R)UserDelayG NPP NMS")
+}
+record(ao,"$(P)$(R)DelayTweakG") {
+    field(DESC, "Step of Up/Down Delay Tweak")
+    field(VAL, "1e-1")
+    field(PREC,"6")
+}
+record(calcout,"$(P)$(R)DelayTweakDownG") {
+    field(DESC, "New delay after Down Tweak")
+    field(INPA,"$(P)$(R)DelayTweakG NPP NMS")
+    field(INPB,"$(P)$(R)UserDelayG NPP NMS")
+    field(CALC,"B-A")
+    field(OUT, "$(P)$(R)UserDelayG PP NMS")
+}
+record(calcout,"$(P)$(R)DelayTweakUpG") {
+    field(DESC, "New delay after Up Tweak")
+    field(INPA,"$(P)$(R)DelayTweakG NPP NMS")
+    field(INPB,"$(P)$(R)UserDelayG NPP NMS")
+    field(CALC,"B+A")
+    field(OUT, "$(P)$(R)UserDelayG PP NMS")
+}
+
+record(mbbo, "$(P)$(R)SyncG") {
+    field(DESC, "Selects the Sync source")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPSync(7) $(BUS)")
+    field(ZRST, "T0")
+    field(ZRVL, "0")
+    field(ONST, "A")
+    field(ONVL, "1")
+    field(TWST, "B")
+    field(TWVL, "2")
+    field(THST, "C")
+    field(THVL, "3")
+    field(FRST, "D")
+    field(FRVL, "4")
+    field(FVST, "E")
+    field(FVVL, "5")
+    field(SXST, "F")
+    field(SXVL, "6")
+    field(SVST, "Error")
+    field(SVVL, "7")
+    field(EIST, "H")
+    field(EIVL, "8")
+}
+
+record(ao, "$(P)$(R)MultiplexerG") {
+    field(DESC, "Select which timers are on")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPMux(7) $(BUS)")
+    field(DRVL, "0")
+    field(DRVH, "255")
+}
+
+record(mbbo, "$(P)$(R)PolarityG") {
+    field(DESC, "Set polarity of the pulse")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPolarity(7) $(BUS)")
+    field(ZRST, "Normal")
+    field(ZRVL, "0")
+    field(ONST, "Complement")
+    field(ONVL, "1")
+    field(TWST, "Inverted")
+    field(TWVL, "2")
+}
+
+record(mbbo, "$(P)$(R)OutputModeG") {
+    field(DESC, "Select Amplitude mode")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setOutputMode(7) $(BUS)")
+    field(ZRST, "TTL")
+    field(ZRVL, "0")
+    field(ONST, "Adjustable")
+    field(ONVL, "1")
+}
+
+record(ao, "$(P)$(R)OutputAmplitudeG") {
+    field(DESC, "Set adjustable output level")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setOutputAmplitude(7) $(BUS)")
+    field(PREC, "3")
+    field(DRVL, "2")
+    field(DRVH, "20")
+    field(EGU,  "V")
+}
+
+record(mbbo, "$(P)$(R)GateModeG") {
+    field(DESC, "Sets Channel Gate Mode")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPGate(7) $(BUS)")
+    field(ZRST, "Disable")
+    field(ZRVL, "0")
+    field(ONST, "Pulse inhibit")
+    field(ONVL, "1")
+    field(TWST, "Output inhibit")
+    field(TWVL, "2")
+}
+
+record(mbbo, "$(P)$(R)GateLogicG") {
+    field(DESC, "Set Chan. Gate Logic Level")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPGateLogic(7) $(BUS)")
+    field(ZRST, "Active low")
+    field(ZRVL, "0")
+    field(ONST, "Active high")
+    field(ONVL, "1")
+}
+
+#============================== Channel H ==============================
+
+record(bo, "$(P)$(R)StateH") {
+    field(DESC, "En-/Disable output pulse H")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPState(8) $(BUS)")
+    field(ZNAM, "Off")
+    field(ONAM, "On")
+}
+
+record(ao, "$(P)$(R)WidthH") {
+    field(DESC, "Width of the output pulse")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPWidth(8) $(BUS)")
+    field(PREC, "8")
+    field(DRVL, "10e-9")
+    field(DRVH, "999.99999999975")
+    field(EGU,  "sec")
+}
+
+record(ao, "$(P)$(R)UserWidthH") {
+    field(DESC, "User-Width of the pulse")
+    field(OUT, "$(P)$(R)Width2BaseUnitH PP NMS")
+    field(PREC, "8")
+    field(DRVL, "10e-6")
+    field(DRVH, "999999.99999975")
+    field(EGU,  "ms")
+}
+record(calcout,"$(P)$(R)Width2BaseUnitH") {
+    field(DESC, "Convert Width to base unit")
+    field(INPA,"$(P)$(R)UserWidthH NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A/B")
+    field(OUT, "$(P)$(R)WidthH PP NMS")
+}
+record(calcout,"$(P)$(R)Width2UserUnitH") {
+    field(DESC, "Convert Width to user unit")
+    field(PINI, "YES")
+    field(INPA,"$(P)$(R)WidthH NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A*B")
+    field(OUT, "$(P)$(R)UserWidthH NPP NMS")
+}
+record(ao,"$(P)$(R)WidthTweakH") {
+    field(DESC, "Step of Up/Down Width Tweak")
+    field(VAL, "1e-1")
+    field(PREC,"6")
+}
+record(calcout,"$(P)$(R)WidthTweakDownH") {
+    field(DESC, "New width after Down Tweak")
+    field(INPA,"$(P)$(R)WidthTweakH NPP NMS")
+    field(INPB,"$(P)$(R)UserWidthH NPP NMS")
+    field(CALC,"B-A")
+    field(OUT, "$(P)$(R)UserWidthH PP NMS")
+}
+record(calcout,"$(P)$(R)WidthTweakUpH") {
+    field(DESC, "New width after Up Tweak")
+    field(INPA,"$(P)$(R)WidthTweakH NPP NMS")
+    field(INPB,"$(P)$(R)UserWidthH NPP NMS")
+    field(CALC,"B+A")
+    field(OUT, "$(P)$(R)UserWidthH PP NMS")
+}
+
+record(ao, "$(P)$(R)DelayH") {
+    field(DESC, "Time f. start T0 to 1.edge")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPDelay(8) $(BUS)")
+    field(PREC, "8")
+    field(DRVL, "-999.99999999975")
+    field(DRVH, "999.99999999975")
+    field(EGU,  "sec")
+}
+
+record(ao, "$(P)$(R)UserDelayH") {
+    field(DESC, "User-Delay of the pulse")
+    field(OUT, "$(P)$(R)Delay2BaseUnitH PP NMS")
+    field(PREC, "8")
+    field(DRVL, "-999999.99999975")
+    field(DRVH, "999999.99999975")
+    field(EGU,  "ms")
+}
+record(calcout,"$(P)$(R)Delay2BaseUnitH") {
+    field(DESC, "Convert Delay to base unit")
+    field(INPA,"$(P)$(R)UserDelayH NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A/B")
+    field(OUT, "$(P)$(R)DelayH PP NMS")
+}
+record(calcout,"$(P)$(R)Delay2UserUnitH") {
+    field(DESC, "Convert Delay to user unit")
+    field(PINI, "YES")
+    field(INPA,"$(P)$(R)DelayH NPP NMS")
+    field(INPB,"$(P)$(R)TimeUnitCF NPP NMS")
+    field(CALC,"A*B")
+    field(OUT, "$(P)$(R)UserDelayH NPP NMS")
+}
+record(ao,"$(P)$(R)DelayTweakH") {
+    field(DESC, "Step of Up/Down Delay Tweak")
+    field(VAL, "1e-1")
+    field(PREC,"6")
+}
+record(calcout,"$(P)$(R)DelayTweakDownH") {
+    field(DESC, "New delay after Down Tweak")
+    field(INPA,"$(P)$(R)DelayTweakH NPP NMS")
+    field(INPB,"$(P)$(R)UserDelayH NPP NMS")
+    field(CALC,"B-A")
+    field(OUT, "$(P)$(R)UserDelayH PP NMS")
+}
+record(calcout,"$(P)$(R)DelayTweakUpH") {
+    field(DESC, "New delay after Up Tweak")
+    field(INPA,"$(P)$(R)DelayTweakH NPP NMS")
+    field(INPB,"$(P)$(R)UserDelayH NPP NMS")
+    field(CALC,"B+A")
+    field(OUT, "$(P)$(R)UserDelayH PP NMS")
+}
+
+record(mbbo, "$(P)$(R)SyncH") {
+    field(DESC, "Selects the Sync source")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPSync(8) $(BUS)")
+    field(ZRST, "T0")
+    field(ZRVL, "0")
+    field(ONST, "A")
+    field(ONVL, "1")
+    field(TWST, "B")
+    field(TWVL, "2")
+    field(THST, "C")
+    field(THVL, "3")
+    field(FRST, "D")
+    field(FRVL, "4")
+    field(FVST, "E")
+    field(FVVL, "5")
+    field(SXST, "F")
+    field(SXVL, "6")
+    field(SVST, "G")
+    field(SVVL, "7")
+    field(EIST, "Error")
+    field(EIVL, "8")
+}
+
+record(ao, "$(P)$(R)MultiplexerH") {
+    field(DESC, "Select which timers are on")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPMux(8) $(BUS)")
+    field(DRVL, "0")
+    field(DRVH, "255")
+}
+
+record(mbbo, "$(P)$(R)PolarityH") {
+    field(DESC, "Set polarity of the pulse")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPolarity(8) $(BUS)")
+    field(ZRST, "Normal")
+    field(ZRVL, "0")
+    field(ONST, "Complement")
+    field(ONVL, "1")
+    field(TWST, "Inverted")
+    field(TWVL, "2")
+}
+
+record(mbbo, "$(P)$(R)OutputModeH") {
+    field(DESC, "Select Amplitude mode")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setOutputMode(8) $(BUS)")
+    field(ZRST, "TTL")
+    field(ZRVL, "0")
+    field(ONST, "Adjustable")
+    field(ONVL, "1")
+}
+
+record(ao, "$(P)$(R)OutputAmplitudeH") {
+    field(DESC, "Set adjustable output level")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setOutputAmplitude(8) $(BUS)")
+    field(PREC, "3")
+    field(DRVL, "2")
+    field(DRVH, "20")
+    field(EGU,  "V")
+}
+
+record(mbbo, "$(P)$(R)GateModeH") {
+    field(DESC, "Sets Channel Gate Mode")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPGate(8) $(BUS)")
+    field(ZRST, "Disable")
+    field(ZRVL, "0")
+    field(ONST, "Pulse inhibit")
+    field(ONVL, "1")
+    field(TWST, "Output inhibit")
+    field(TWVL, "2")
+}
+
+record(mbbo, "$(P)$(R)GateLogicH") {
+    field(DESC, "Set Chan. Gate Logic Level")
+    field(DTYP, "stream")
+    field(OUT,  "@pg9520.proto setPGateLogic(8) $(BUS)")
+    field(ZRST, "Active low")
+    field(ZRVL, "0")
+    field(ONST, "Active high")
+    field(ONVL, "1")
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pg9520/db/pg9520.proto	Wed May 22 12:18:16 2013 +0200
@@ -0,0 +1,222 @@
+# pg9520.proto   Uwe Hoppe   Fritz-Haber-Institut der MPG   1/2013
+
+ReplyTimeout = 2000;
+Terminator = CR LF;
+iWT = 35;
+
+getVersion {
+   out "*IDN?";
+   in "%s";
+   @init {out "*IDN?"; in "%s"; wait $iWT;}
+}
+
+recall {
+   out "*RCL %i";
+   in "ok";
+}
+
+save {
+   out "*SAV %i";
+   in "ok";
+}
+
+getState {
+   out ":PULSE0:STATE?";
+   in  "%d";
+   wait $iWT;
+}
+
+setState {
+   out ":PULSE0:STATE %d";
+   in  "ok";
+   @init {getState;}
+}
+
+getPeriod {
+   out ":PULSE0:PERIOD?";
+   in  "%f";
+}
+
+setPeriod {
+   out ":PULSE0:PERIOD %e";
+   in  "ok";
+   @init {getPeriod; wait $iWT;}
+}
+
+getMode {
+   out ":PULSE0:MODE?";
+   in  "%{NORM|SING|BURS|DCYC}";
+}
+
+setMode {
+   out ":PULSE0:MODE %{NORM|SING|BURS|DCYC}";
+   in  "ok";
+   @init {getMode; wait $iWT;}
+}
+
+getGateMode {
+   out ":PULSE0:GATE:MODE?";
+   in  "%{DIS|PULS|OUTP|CHAN}";
+}
+
+setGateMode {
+   out ":PULSE0:GATE:MODE %{DIS|PULS|OUTP|CHAN}";
+   in  "ok";
+   @init {getGateMode; wait $iWT;}
+}
+
+getGateLogic {
+   out ":PULSE0:GATE:LOGIC?";
+   in  "%{LOW|HIGH}";
+}
+
+setGateLogic {
+   out ":PULSE0:GATE:LOGIC %{LOW|HIGH}";
+   in  "ok";
+   @init {getGateLogic; wait $iWT;}
+}
+
+getGateLevel {
+   out ":PULSE0:GATE:LEVEL?";
+   in  "%f";
+}
+
+setGateLevel {
+   out ":PULSE0:GATE:LEVEL %f";
+   in  "ok";
+   @init {getGateLevel; wait $iWT;}
+}
+
+#=================================================
+
+getPState {
+   out ":PULSE\$1:STATE?";
+   in  "%d";
+}
+
+setPState {
+   out ":PULSE\$1:STATE %d";
+   in  "ok";
+   @init {getPState; wait $iWT;}
+}
+
+getPWidth {
+   out ":PULSE\$1:WIDTH?";
+   in  "%f";
+}
+
+setPWidth {
+   out ":PULSE\$1:WIDTH %e";
+   in  "ok";
+   @init {getPWidth; wait $iWT;}
+}
+
+getPDelay {
+   out ":PULSE\$1:DELAY?";
+   in  "%f";
+}
+
+setPDelay {
+   out ":PULSE\$1:DELAY %e";
+   in  "ok";
+   @init {getPDelay; wait $iWT;}
+}
+
+getPSync {
+   out ":PULSE\$1:SYNC?";
+   in  "%{T0|CHA|CHB|CHC|CHD|CHE|CHF|CHG|CHH}";
+}
+
+setPSync {
+   out ":PULSE\$1:SYNC %{T0|CHA|CHB|CHC|CHD|CHE|CHF|CHG|CHH}";
+   in  "ok";
+   @init {getPSync; wait $iWT;}
+}
+
+getPMux {
+   out ":PULSE\$1:MUX?";
+   in  "%u";
+}
+
+setPMux {
+   out ":PULSE\$1:MUX %u";
+   in  "ok";
+   @init {getPMux; wait $iWT;}
+}
+
+getPolarity {
+   out ":PULSE\$1:POLARITY?";
+   in  "%{NORM|COMP|INV}";
+}
+
+setPolarity {
+   out ":PULSE\$1:POLARITY %{NORM|COMP|INV}";
+   in  "ok";
+   @init {getPolarity; wait $iWT;}
+}
+
+getOutputMode {
+   out ":PULSE\$1:OUTPUT:MODE?";
+   in  "%{TTL|ADJ}";
+}
+
+setOutputMode {
+   out ":PULSE\$1:OUTPUT:MODE %{TTL|ADJ}";
+   in  "ok";
+   @init {getOutputMode; wait $iWT;}
+}
+
+getOutputAmplitude {
+   out ":PULSE\$1:OUTPUT:AMPLITUDE?";
+   in  "%f";
+}
+
+setOutputAmplitude {
+   out ":PULSE\$1:OUTPUT:AMPLITUDE %f";
+   in  "ok";
+   @init {getOutputAmplitude; wait $iWT;}
+}
+
+getPCMode {
+   out ":PULSE\$1:CMODE?";
+   in  "%{NORM|SING|BURS|DCYC}";
+}
+
+setPCMode {
+   out ":PULSE\$1:CMODE %{NORM|SING|BURS|DCYC}";
+   in  "ok";
+   @init {getPCMode; wait 50}
+}
+
+getPBCounter {
+   out ":PULSE\$1:BCOUNTER?";
+   in  "%u";
+}
+
+setPBCounter {
+   out ":PULSE\$1:BCOUNTER %u";
+   in  "ok";
+   @init {getPBCounter; wait $iWT;}
+}
+
+getPGate {
+   out ":PULSE\$1:CGATE?";
+   in  "%{DIS|PULS|OUTP}";
+}
+
+setPGate {
+   out ":PULSE\$1:CGATE %{DIS|PULS|OUTP}";
+   in  "ok";
+   @init {getPGate; wait 50}
+}
+
+getPGateLogic {
+   out ":PULSE\$1:CLOGIC?";
+   in  "%{LOW|HIGH}";
+}
+
+setPGateLogic {
+   out ":PULSE\$1:CLOGIC %{LOW|HIGH}";
+   in  "ok";
+   @init {getPGateLogic; wait $iWT;}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pg9520/dbd/pg9520.dbd	Wed May 22 12:18:16 2013 +0200
@@ -0,0 +1,13989 @@
+menu(waveformPOST) {
+	choice(waveformPOST_Always,"Always")
+	choice(waveformPOST_OnChange,"On Change")
+}
+menu(stringoutPOST) {
+	choice(stringoutPOST_OnChange,"On Change")
+	choice(stringoutPOST_Always,"Always")
+}
+menu(stringinPOST) {
+	choice(stringinPOST_OnChange,"On Change")
+	choice(stringinPOST_Always,"Always")
+}
+menu(serialSBIT) {
+	choice(serialSBIT_unknown,"Unknown")
+	choice(serialSBIT_1,"1")
+	choice(serialSBIT_2,"2")
+}
+menu(serialPRTY) {
+	choice(serialPRTY_unknown,"Unknown")
+	choice(serialPRTY_None,"None")
+	choice(serialPRTY_Even,"Even")
+	choice(serialPRTY_Odd,"Odd")
+}
+menu(serialMCTL) {
+	choice(serialMCTL_unknown,"Unknown")
+	choice(serialMCTL_CLOCAL,"CLOCAL")
+	choice(serialMCTL_Yes,"YES")
+}
+menu(serialFCTL) {
+	choice(serialFCTL_unknown,"Unknown")
+	choice(serialFCTL_None,"None")
+	choice(serialFCTL_Hardware,"Hardware")
+}
+menu(serialDBIT) {
+	choice(serialDBIT_unknown,"Unknown")
+	choice(serialDBIT_5,"5")
+	choice(serialDBIT_6,"6")
+	choice(serialDBIT_7,"7")
+	choice(serialDBIT_8,"8")
+}
+menu(serialBAUD) {
+	choice(serialBAUD_unknown,"Unknown")
+	choice(serialBAUD_300,"300")
+	choice(serialBAUD_600,"600")
+	choice(serialBAUD_1200,"1200")
+	choice(serialBAUD_2400,"2400")
+	choice(serialBAUD_4800,"4800")
+	choice(serialBAUD_9600,"9600")
+	choice(serialBAUD_19200,"19200")
+	choice(serialBAUD_38400,"38400")
+	choice(serialBAUD_57600,"57600")
+	choice(serialBAUD_115200,"115200")
+	choice(serialBAUD_230400,"230400")
+}
+menu(seqSELM) {
+	choice(seqSELM_All,"All")
+	choice(seqSELM_Specified,"Specified")
+	choice(seqSELM_Mask,"Mask")
+}
+menu(selSELM) {
+	choice(selSELM_Specified,"Specified")
+	choice(selSELM_High_Signal,"High Signal")
+	choice(selSELM_Low_Signal,"Low Signal")
+	choice(selSELM_Median_Signal,"Median Signal")
+}
+menu(menuYesNo) {
+	choice(menuYesNoNO,"NO")
+	choice(menuYesNoYES,"YES")
+}
+menu(menuSimm) {
+	choice(menuSimmNO,"NO")
+	choice(menuSimmYES,"YES")
+	choice(menuSimmRAW,"RAW")
+}
+menu(menuScan) {
+	choice(menuScanPassive,"Passive")
+	choice(menuScanEvent,"Event")
+	choice(menuScanI_O_Intr,"I/O Intr")
+	choice(menuScan10_second,"10 second")
+	choice(menuScan5_second,"5 second")
+	choice(menuScan2_second,"2 second")
+	choice(menuScan1_second,"1 second")
+	choice(menuScan_5_second,".5 second")
+	choice(menuScan_2_second,".2 second")
+	choice(menuScan_1_second,".1 second")
+}
+menu(menuPriority) {
+	choice(menuPriorityLOW,"LOW")
+	choice(menuPriorityMEDIUM,"MEDIUM")
+	choice(menuPriorityHIGH,"HIGH")
+}
+menu(menuPini) {
+	choice(menuPiniNO,"NO")
+	choice(menuPiniYES,"YES")
+	choice(menuPiniRUN,"RUN")
+	choice(menuPiniRUNNING,"RUNNING")
+	choice(menuPiniPAUSE,"PAUSE")
+	choice(menuPiniPAUSED,"PAUSED")
+}
+menu(menuOmsl) {
+	choice(menuOmslsupervisory,"supervisory")
+	choice(menuOmslclosed_loop,"closed_loop")
+}
+menu(menuIvoa) {
+	choice(menuIvoaContinue_normally,"Continue normally")
+	choice(menuIvoaDon_t_drive_outputs,"Don't drive outputs")
+	choice(menuIvoaSet_output_to_IVOV,"Set output to IVOV")
+}
+menu(menuFtype) {
+	choice(menuFtypeSTRING,"STRING")
+	choice(menuFtypeCHAR,"CHAR")
+	choice(menuFtypeUCHAR,"UCHAR")
+	choice(menuFtypeSHORT,"SHORT")
+	choice(menuFtypeUSHORT,"USHORT")
+	choice(menuFtypeLONG,"LONG")
+	choice(menuFtypeULONG,"ULONG")
+	choice(menuFtypeFLOAT,"FLOAT")
+	choice(menuFtypeDOUBLE,"DOUBLE")
+	choice(menuFtypeENUM,"ENUM")
+}
+menu(menuConvert) {
+	choice(menuConvertNO_CONVERSION,"NO CONVERSION")
+	choice(menuConvertSLOPE,"SLOPE")
+	choice(menuConvertLINEAR,"LINEAR")
+	choice(menuConverttypeKdegF,"typeKdegF")
+	choice(menuConverttypeKdegC,"typeKdegC")
+	choice(menuConverttypeJdegF,"typeJdegF")
+	choice(menuConverttypeJdegC,"typeJdegC")
+	choice(menuConverttypeEdegF,"typeEdegF(ixe only)")
+	choice(menuConverttypeEdegC,"typeEdegC(ixe only)")
+	choice(menuConverttypeTdegF,"typeTdegF")
+	choice(menuConverttypeTdegC,"typeTdegC")
+	choice(menuConverttypeRdegF,"typeRdegF")
+	choice(menuConverttypeRdegC,"typeRdegC")
+	choice(menuConverttypeSdegF,"typeSdegF")
+	choice(menuConverttypeSdegC,"typeSdegC")
+}
+menu(menuCompress) {
+	choice(menuCompressN_to_1_First_Value,"N to 1 First Value")
+	choice(menuCompressN_to_1_Low_Value,"N to 1 Low Value")
+	choice(menuCompressN_to_1_High_Value,"N to 1 High Value")
+	choice(menuCompressN_to_1_Average,"N to 1 Average")
+}
+menu(menuAlarmStat) {
+	choice(menuAlarmStatNO_ALARM,"NO_ALARM")
+	choice(menuAlarmStatREAD,"READ")
+	choice(menuAlarmStatWRITE,"WRITE")
+	choice(menuAlarmStatHIHI,"HIHI")
+	choice(menuAlarmStatHIGH,"HIGH")
+	choice(menuAlarmStatLOLO,"LOLO")
+	choice(menuAlarmStatLOW,"LOW")
+	choice(menuAlarmStatSTATE,"STATE")
+	choice(menuAlarmStatCOS,"COS")
+	choice(menuAlarmStatCOMM,"COMM")
+	choice(menuAlarmStatTIMEOUT,"TIMEOUT")
+	choice(menuAlarmStatHWLIMIT,"HWLIMIT")
+	choice(menuAlarmStatCALC,"CALC")
+	choice(menuAlarmStatSCAN,"SCAN")
+	choice(menuAlarmStatLINK,"LINK")
+	choice(menuAlarmStatSOFT,"SOFT")
+	choice(menuAlarmStatBAD_SUB,"BAD_SUB")
+	choice(menuAlarmStatUDF,"UDF")
+	choice(menuAlarmStatDISABLE,"DISABLE")
+	choice(menuAlarmStatSIMM,"SIMM")
+	choice(menuAlarmStatREAD_ACCESS,"READ_ACCESS")
+	choice(menuAlarmStatWRITE_ACCESS,"WRITE_ACCESS")
+}
+menu(menuAlarmSevr) {
+	choice(menuAlarmSevrNO_ALARM,"NO_ALARM")
+	choice(menuAlarmSevrMINOR,"MINOR")
+	choice(menuAlarmSevrMAJOR,"MAJOR")
+	choice(menuAlarmSevrINVALID,"INVALID")
+}
+menu(histogramCMD) {
+	choice(histogramCMD_Read,"Read")
+	choice(histogramCMD_Clear,"Clear")
+	choice(histogramCMD_Start,"Start")
+	choice(histogramCMD_Stop,"Stop")
+}
+menu(gpibUCMD) {
+	choice(gpibUCMD_None,"None")
+	choice(gpibUCMD_Device_Clear__DCL_,"Device Clear (DCL)")
+	choice(gpibUCMD_Local_Lockout__LL0_,"Local Lockout (LL0)")
+	choice(gpibUCMD_Serial_Poll_Disable__SPD_,"Serial Poll Disable (SPD)")
+	choice(gpibUCMD_Serial_Poll_Enable__SPE_,"Serial Poll Enable (SPE)")
+	choice(gpibUCMD_Unlisten__UNL_,"Unlisten (UNL)")
+	choice(gpibUCMD_Untalk__UNT_,"Untalk (UNT)")
+}
+menu(gpibACMD) {
+	choice(gpibACMD_None,"None")
+	choice(gpibACMD_Group_Execute_Trig___GET_,"Group Execute Trig. (GET)")
+	choice(gpibACMD_Go_To_Local__GTL_,"Go To Local (GTL)")
+	choice(gpibACMD_Selected_Dev__Clear__SDC_,"Selected Dev. Clear (SDC)")
+	choice(gpibACMD_Take_Control__TCT_,"Take Control (TCT)")
+	choice(gpibACMD_Serial_Poll,"Serial Poll")
+}
+menu(fanoutSELM) {
+	choice(fanoutSELM_All,"All")
+	choice(fanoutSELM_Specified,"Specified")
+	choice(fanoutSELM_Mask,"Mask")
+}
+menu(dfanoutSELM) {
+	choice(dfanoutSELM_All,"All")
+	choice(dfanoutSELM_Specified,"Specified")
+	choice(dfanoutSELM_Mask,"Mask")
+}
+menu(compressALG) {
+	choice(compressALG_N_to_1_Low_Value,"N to 1 Low Value")
+	choice(compressALG_N_to_1_High_Value,"N to 1 High Value")
+	choice(compressALG_N_to_1_Average,"N to 1 Average")
+	choice(compressALG_Average,"Average")
+	choice(compressALG_Circular_Buffer,"Circular Buffer")
+	choice(compressALG_N_to_1_Median,"N to 1 Median")
+}
+menu(calcoutOOPT) {
+	choice(calcoutOOPT_Every_Time,"Every Time")
+	choice(calcoutOOPT_On_Change,"On Change")
+	choice(calcoutOOPT_When_Zero,"When Zero")
+	choice(calcoutOOPT_When_Non_zero,"When Non-zero")
+	choice(calcoutOOPT_Transition_To_Zero,"Transition To Zero")
+	choice(calcoutOOPT_Transition_To_Non_zero,"Transition To Non-zero")
+}
+menu(calcoutINAV) {
+	choice(calcoutINAV_EXT_NC,"Ext PV NC")
+	choice(calcoutINAV_EXT,"Ext PV OK")
+	choice(calcoutINAV_LOC,"Local PV")
+	choice(calcoutINAV_CON,"Constant")
+}
+menu(calcoutDOPT) {
+	choice(calcoutDOPT_Use_VAL,"Use CALC")
+	choice(calcoutDOPT_Use_OVAL,"Use OCAL")
+}
+menu(asynTRACE) {
+	choice(asynTRACE_Off,"Off")
+	choice(asynTRACE_On,"On")
+}
+menu(asynTMOD) {
+	choice(asynTMOD_Write_Read,"Write/Read")
+	choice(asynTMOD_Write,"Write")
+	choice(asynTMOD_Read,"Read")
+	choice(asynTMOD_Flush,"Flush")
+	choice(asynTMOD_NoIO,"NoI/O")
+}
+menu(asynINTERFACE) {
+	choice(asynINTERFACE_OCTET,"asynOctet")
+	choice(asynINTERFACE_INT32,"asynInt32")
+	choice(asynINTERFACE_UINT32,"asynUInt32Digital")
+	choice(asynINTERFACE_FLOAT64,"asynFloat64")
+}
+menu(asynFMT) {
+	choice(asynFMT_ASCII,"ASCII")
+	choice(asynFMT_Hybrid,"Hybrid")
+	choice(asynFMT_Binary,"Binary")
+}
+menu(asynEOMREASON) {
+	choice(asynEOMREASONNone,"None")
+	choice(asynEOMREASONCNT,"Count")
+	choice(asynEOMREASONEOS,"Eos")
+	choice(asynEOMREASONCNTEOS,"Count Eos")
+	choice(asynEOMREASONEND,"End")
+	choice(asynEOMREASONCNTEND,"Count End")
+	choice(asynEOMREASONEOSEND,"Eos End")
+	choice(asynEOMREASONCNTEOSEND,"Count Eos End")
+}
+menu(asynENABLE) {
+	choice(asynENABLE_Disable,"Disable")
+	choice(asynENABLE_Enable,"Enable")
+}
+menu(asynCONNECT) {
+	choice(asynCONNECT_Disconnect,"Disconnect")
+	choice(asynCONNECT_Connect,"Connect")
+}
+menu(asynAUTOCONNECT) {
+	choice(asynAUTOCONNECT_noAutoConnect,"noAutoConnect")
+	choice(asynAUTOCONNECT_autoConnect,"autoConnect")
+}
+menu(aoOIF) {
+	choice(aoOIF_Full,"Full")
+	choice(aoOIF_Incremental,"Incremental")
+}
+menu(aSubLFLG) {
+	choice(aSubLFLG_IGNORE,"IGNORE")
+	choice(aSubLFLG_READ,"READ")
+}
+menu(aSubEFLG) {
+	choice(aSubEFLG_NEVER,"NEVER")
+	choice(aSubEFLG_ON_CHANGE,"ON CHANGE")
+	choice(aSubEFLG_ALWAYS,"ALWAYS")
+}
+recordtype(ai) {
+	field(NAME,DBF_STRING) {
+		prompt("Record Name")
+		special(SPC_NOMOD)
+		size(61)
+	}
+	field(DESC,DBF_STRING) {
+		prompt("Descriptor")
+		promptgroup(GUI_COMMON)
+		size(41)
+	}
+	field(ASG,DBF_STRING) {
+		prompt("Access Security Group")
+		promptgroup(GUI_COMMON)
+		special(SPC_AS)
+		size(29)
+	}
+	field(SCAN,DBF_MENU) {
+		prompt("Scan Mechanism")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuScan)
+		interest(1)
+	}
+	field(PINI,DBF_MENU) {
+		prompt("Process at iocInit")
+		promptgroup(GUI_SCAN)
+		menu(menuPini)
+		interest(1)
+	}
+	field(PHAS,DBF_SHORT) {
+		prompt("Scan Phase")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(EVNT,DBF_SHORT) {
+		prompt("Event Number")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(TSE,DBF_SHORT) {
+		prompt("Time Stamp Event")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(TSEL,DBF_INLINK) {
+		prompt("Time Stamp Link")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(DTYP,DBF_DEVICE) {
+		prompt("Device Type")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(DISV,DBF_SHORT) {
+		prompt("Disable Value")
+		initial("1")
+		promptgroup(GUI_SCAN)
+	}
+	field(DISA,DBF_SHORT) {
+		prompt("Disable")
+	}
+	field(SDIS,DBF_INLINK) {
+		prompt("Scanning Disable")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(MLOK,DBF_NOACCESS) {
+		prompt("Monitor lock")
+		special(SPC_NOMOD)
+		extra("epicsMutexId	mlok")
+		interest(4)
+	}
+	field(MLIS,DBF_NOACCESS) {
+		prompt("Monitor List")
+		special(SPC_NOMOD)
+		extra("ELLLIST		mlis")
+		interest(4)
+	}
+	field(DISP,DBF_UCHAR) {
+		prompt("Disable putField")
+	}
+	field(PROC,DBF_UCHAR) {
+		prompt("Force Processing")
+		pp(TRUE)
+		interest(3)
+	}
+	field(STAT,DBF_MENU) {
+		prompt("Alarm Status")
+		initial("UDF")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+	}
+	field(SEVR,DBF_MENU) {
+		prompt("Alarm Severity")
+		initial("INVALID")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+	}
+	field(NSTA,DBF_MENU) {
+		prompt("New Alarm Status")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+		interest(2)
+	}
+	field(NSEV,DBF_MENU) {
+		prompt("New Alarm Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKS,DBF_MENU) {
+		prompt("Alarm Ack Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKT,DBF_MENU) {
+		prompt("Alarm Ack Transient")
+		initial("YES")
+		promptgroup(GUI_ALARMS)
+		special(SPC_NOMOD)
+		menu(menuYesNo)
+		interest(2)
+	}
+	field(DISS,DBF_MENU) {
+		prompt("Disable Alarm Sevrty")
+		promptgroup(GUI_SCAN)
+		menu(menuAlarmSevr)
+		interest(1)
+	}
+	field(LCNT,DBF_UCHAR) {
+		prompt("Lock Count")
+		special(SPC_NOMOD)
+		interest(2)
+	}
+	field(PACT,DBF_UCHAR) {
+		prompt("Record active")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(PUTF,DBF_UCHAR) {
+		prompt("dbPutField process")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(RPRO,DBF_UCHAR) {
+		prompt("Reprocess ")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(ASP,DBF_NOACCESS) {
+		prompt("Access Security Pvt")
+		special(SPC_NOMOD)
+		extra("struct asgMember *asp")
+		interest(4)
+	}
+	field(PPN,DBF_NOACCESS) {
+		prompt("addr of PUTNOTIFY")
+		special(SPC_NOMOD)
+		extra("struct putNotify *ppn")
+		interest(4)
+	}
+	field(PPNR,DBF_NOACCESS) {
+		prompt("pputNotifyRecord")
+		special(SPC_NOMOD)
+		extra("struct putNotifyRecord *ppnr")
+		interest(4)
+	}
+	field(SPVT,DBF_NOACCESS) {
+		prompt("Scan Private")
+		special(SPC_NOMOD)
+		extra("struct scan_element *spvt")
+		interest(4)
+	}
+	field(RSET,DBF_NOACCESS) {
+		prompt("Address of RSET")
+		special(SPC_NOMOD)
+		extra("struct rset	*rset")
+		interest(4)
+	}
+	field(DSET,DBF_NOACCESS) {
+		prompt("DSET address")
+		special(SPC_NOMOD)
+		extra("struct dset	*dset")
+		interest(4)
+	}
+	field(DPVT,DBF_NOACCESS) {
+		prompt("Device Private")
+		special(SPC_NOMOD)
+		extra("void		*dpvt")
+		interest(4)
+	}
+	field(RDES,DBF_NOACCESS) {
+		prompt("Address of dbRecordType")
+		special(SPC_NOMOD)
+		extra("struct dbRecordType *rdes")
+		interest(4)
+	}
+	field(LSET,DBF_NOACCESS) {
+		prompt("Lock Set")
+		special(SPC_NOMOD)
+		extra("struct lockRecord *lset")
+		interest(4)
+	}
+	field(PRIO,DBF_MENU) {
+		prompt("Scheduling Priority")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuPriority)
+		interest(1)
+	}
+	field(TPRO,DBF_UCHAR) {
+		prompt("Trace Processing")
+	}
+	field(BKPT,DBF_NOACCESS) {
+		prompt("Break Point")
+		special(SPC_NOMOD)
+		extra("char bkpt")
+		interest(1)
+	}
+	field(UDF,DBF_UCHAR) {
+		prompt("Undefined")
+		initial("1")
+		promptgroup(GUI_COMMON)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TIME,DBF_NOACCESS) {
+		prompt("Time")
+		special(SPC_NOMOD)
+		extra("epicsTimeStamp	time")
+		interest(2)
+	}
+	field(FLNK,DBF_FWDLINK) {
+		prompt("Forward Process Link")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(VAL,DBF_DOUBLE) {
+		prompt("Current EGU Value")
+		promptgroup(GUI_INPUTS)
+		pp(TRUE)
+		asl(ASL0)
+	}
+	field(INP,DBF_INLINK) {
+		prompt("Input Specification")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(PREC,DBF_SHORT) {
+		prompt("Display Precision")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(LINR,DBF_MENU) {
+		prompt("Linearization")
+		promptgroup(GUI_CONVERT)
+		special(102)
+		menu(menuConvert)
+		pp(TRUE)
+		interest(1)
+	}
+	field(EGUF,DBF_DOUBLE) {
+		prompt("Engineer Units Full")
+		promptgroup(GUI_CONVERT)
+		special(102)
+		pp(TRUE)
+		interest(1)
+	}
+	field(EGUL,DBF_DOUBLE) {
+		prompt("Engineer Units Low")
+		promptgroup(GUI_CONVERT)
+		special(102)
+		pp(TRUE)
+		interest(1)
+	}
+	field(EGU,DBF_STRING) {
+		prompt("Engineering Units")
+		promptgroup(GUI_DISPLAY)
+		size(16)
+		interest(1)
+	}
+	field(HOPR,DBF_DOUBLE) {
+		prompt("High Operating Range")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(LOPR,DBF_DOUBLE) {
+		prompt("Low Operating Range")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(AOFF,DBF_DOUBLE) {
+		prompt("Adjustment Offset")
+		promptgroup(GUI_CONVERT)
+		pp(TRUE)
+		interest(1)
+	}
+	field(ASLO,DBF_DOUBLE) {
+		prompt("Adjustment Slope")
+		initial("1")
+		promptgroup(GUI_CONVERT)
+		pp(TRUE)
+		interest(1)
+	}
+	field(SMOO,DBF_DOUBLE) {
+		prompt("Smoothing")
+		promptgroup(GUI_CONVERT)
+		interest(1)
+	}
+	field(HIHI,DBF_DOUBLE) {
+		prompt("Hihi Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LOLO,DBF_DOUBLE) {
+		prompt("Lolo Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HIGH,DBF_DOUBLE) {
+		prompt("High Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LOW,DBF_DOUBLE) {
+		prompt("Low Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HHSV,DBF_MENU) {
+		prompt("Hihi Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LLSV,DBF_MENU) {
+		prompt("Lolo Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HSV,DBF_MENU) {
+		prompt("High Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LSV,DBF_MENU) {
+		prompt("Low Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HYST,DBF_DOUBLE) {
+		prompt("Alarm Deadband")
+		promptgroup(GUI_ALARMS)
+		interest(1)
+	}
+	field(ADEL,DBF_DOUBLE) {
+		prompt("Archive Deadband")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(MDEL,DBF_DOUBLE) {
+		prompt("Monitor Deadband")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(LALM,DBF_DOUBLE) {
+		prompt("Last Value Alarmed")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(ALST,DBF_DOUBLE) {
+		prompt("Last Value Archived")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(MLST,DBF_DOUBLE) {
+		prompt("Last Val Monitored")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(ESLO,DBF_DOUBLE) {
+		prompt("Raw to EGU Slope")
+		initial("1")
+		promptgroup(GUI_CONVERT)
+		pp(TRUE)
+		interest(2)
+	}
+	field(EOFF,DBF_DOUBLE) {
+		prompt("Raw to EGU Offset")
+		promptgroup(GUI_CONVERT)
+		pp(TRUE)
+		interest(2)
+	}
+	field(ROFF,DBF_LONG) {
+		prompt("Raw Offset, obsolete")
+		pp(TRUE)
+		interest(2)
+	}
+	field(PBRK,DBF_NOACCESS) {
+		prompt("Ptrto brkTable")
+		special(SPC_NOMOD)
+		extra("void *	pbrk")
+		interest(4)
+	}
+	field(INIT,DBF_SHORT) {
+		prompt("Initialized?")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LBRK,DBF_SHORT) {
+		prompt("LastBreak Point")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(RVAL,DBF_LONG) {
+		prompt("Current Raw Value")
+		pp(TRUE)
+	}
+	field(ORAW,DBF_LONG) {
+		prompt("Previous Raw Value")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(SIOL,DBF_INLINK) {
+		prompt("Sim Input Specifctn")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(SVAL,DBF_DOUBLE) {
+		prompt("Simulation Value")
+	}
+	field(SIML,DBF_INLINK) {
+		prompt("Sim Mode Location")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(SIMM,DBF_MENU) {
+		prompt("Simulation Mode")
+		menu(menuSimm)
+		interest(1)
+	}
+	field(SIMS,DBF_MENU) {
+		prompt("Sim mode Alarm Svrty")
+		promptgroup(GUI_INPUTS)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+}
+recordtype(ao) {
+	field(NAME,DBF_STRING) {
+		prompt("Record Name")
+		special(SPC_NOMOD)
+		size(61)
+	}
+	field(DESC,DBF_STRING) {
+		prompt("Descriptor")
+		promptgroup(GUI_COMMON)
+		size(41)
+	}
+	field(ASG,DBF_STRING) {
+		prompt("Access Security Group")
+		promptgroup(GUI_COMMON)
+		special(SPC_AS)
+		size(29)
+	}
+	field(SCAN,DBF_MENU) {
+		prompt("Scan Mechanism")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuScan)
+		interest(1)
+	}
+	field(PINI,DBF_MENU) {
+		prompt("Process at iocInit")
+		promptgroup(GUI_SCAN)
+		menu(menuPini)
+		interest(1)
+	}
+	field(PHAS,DBF_SHORT) {
+		prompt("Scan Phase")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(EVNT,DBF_SHORT) {
+		prompt("Event Number")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(TSE,DBF_SHORT) {
+		prompt("Time Stamp Event")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(TSEL,DBF_INLINK) {
+		prompt("Time Stamp Link")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(DTYP,DBF_DEVICE) {
+		prompt("Device Type")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(DISV,DBF_SHORT) {
+		prompt("Disable Value")
+		initial("1")
+		promptgroup(GUI_SCAN)
+	}
+	field(DISA,DBF_SHORT) {
+		prompt("Disable")
+	}
+	field(SDIS,DBF_INLINK) {
+		prompt("Scanning Disable")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(MLOK,DBF_NOACCESS) {
+		prompt("Monitor lock")
+		special(SPC_NOMOD)
+		extra("epicsMutexId	mlok")
+		interest(4)
+	}
+	field(MLIS,DBF_NOACCESS) {
+		prompt("Monitor List")
+		special(SPC_NOMOD)
+		extra("ELLLIST		mlis")
+		interest(4)
+	}
+	field(DISP,DBF_UCHAR) {
+		prompt("Disable putField")
+	}
+	field(PROC,DBF_UCHAR) {
+		prompt("Force Processing")
+		pp(TRUE)
+		interest(3)
+	}
+	field(STAT,DBF_MENU) {
+		prompt("Alarm Status")
+		initial("UDF")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+	}
+	field(SEVR,DBF_MENU) {
+		prompt("Alarm Severity")
+		initial("INVALID")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+	}
+	field(NSTA,DBF_MENU) {
+		prompt("New Alarm Status")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+		interest(2)
+	}
+	field(NSEV,DBF_MENU) {
+		prompt("New Alarm Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKS,DBF_MENU) {
+		prompt("Alarm Ack Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKT,DBF_MENU) {
+		prompt("Alarm Ack Transient")
+		initial("YES")
+		promptgroup(GUI_ALARMS)
+		special(SPC_NOMOD)
+		menu(menuYesNo)
+		interest(2)
+	}
+	field(DISS,DBF_MENU) {
+		prompt("Disable Alarm Sevrty")
+		promptgroup(GUI_SCAN)
+		menu(menuAlarmSevr)
+		interest(1)
+	}
+	field(LCNT,DBF_UCHAR) {
+		prompt("Lock Count")
+		special(SPC_NOMOD)
+		interest(2)
+	}
+	field(PACT,DBF_UCHAR) {
+		prompt("Record active")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(PUTF,DBF_UCHAR) {
+		prompt("dbPutField process")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(RPRO,DBF_UCHAR) {
+		prompt("Reprocess ")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(ASP,DBF_NOACCESS) {
+		prompt("Access Security Pvt")
+		special(SPC_NOMOD)
+		extra("struct asgMember *asp")
+		interest(4)
+	}
+	field(PPN,DBF_NOACCESS) {
+		prompt("addr of PUTNOTIFY")
+		special(SPC_NOMOD)
+		extra("struct putNotify *ppn")
+		interest(4)
+	}
+	field(PPNR,DBF_NOACCESS) {
+		prompt("pputNotifyRecord")
+		special(SPC_NOMOD)
+		extra("struct putNotifyRecord *ppnr")
+		interest(4)
+	}
+	field(SPVT,DBF_NOACCESS) {
+		prompt("Scan Private")
+		special(SPC_NOMOD)
+		extra("struct scan_element *spvt")
+		interest(4)
+	}
+	field(RSET,DBF_NOACCESS) {
+		prompt("Address of RSET")
+		special(SPC_NOMOD)
+		extra("struct rset	*rset")
+		interest(4)
+	}
+	field(DSET,DBF_NOACCESS) {
+		prompt("DSET address")
+		special(SPC_NOMOD)
+		extra("struct dset	*dset")
+		interest(4)
+	}
+	field(DPVT,DBF_NOACCESS) {
+		prompt("Device Private")
+		special(SPC_NOMOD)
+		extra("void		*dpvt")
+		interest(4)
+	}
+	field(RDES,DBF_NOACCESS) {
+		prompt("Address of dbRecordType")
+		special(SPC_NOMOD)
+		extra("struct dbRecordType *rdes")
+		interest(4)
+	}
+	field(LSET,DBF_NOACCESS) {
+		prompt("Lock Set")
+		special(SPC_NOMOD)
+		extra("struct lockRecord *lset")
+		interest(4)
+	}
+	field(PRIO,DBF_MENU) {
+		prompt("Scheduling Priority")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuPriority)
+		interest(1)
+	}
+	field(TPRO,DBF_UCHAR) {
+		prompt("Trace Processing")
+	}
+	field(BKPT,DBF_NOACCESS) {
+		prompt("Break Point")
+		special(SPC_NOMOD)
+		extra("char bkpt")
+		interest(1)
+	}
+	field(UDF,DBF_UCHAR) {
+		prompt("Undefined")
+		initial("1")
+		promptgroup(GUI_COMMON)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TIME,DBF_NOACCESS) {
+		prompt("Time")
+		special(SPC_NOMOD)
+		extra("epicsTimeStamp	time")
+		interest(2)
+	}
+	field(FLNK,DBF_FWDLINK) {
+		prompt("Forward Process Link")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(VAL,DBF_DOUBLE) {
+		prompt("Desired Output")
+		promptgroup(GUI_OUTPUT)
+		pp(TRUE)
+		asl(ASL0)
+	}
+	field(OVAL,DBF_DOUBLE) {
+		prompt("Output Value")
+	}
+	field(OUT,DBF_OUTLINK) {
+		prompt("Output Specification")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(OROC,DBF_DOUBLE) {
+		prompt("Output Rate of Chang")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(DOL,DBF_INLINK) {
+		prompt("Desired Output Loc")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(OMSL,DBF_MENU) {
+		prompt("Output Mode Select")
+		promptgroup(GUI_OUTPUT)
+		menu(menuOmsl)
+		interest(1)
+	}
+	field(OIF,DBF_MENU) {
+		prompt("Out Full/Incremental")
+		promptgroup(GUI_OUTPUT)
+		menu(aoOIF)
+		interest(1)
+	}
+	field(PREC,DBF_SHORT) {
+		prompt("Display Precision")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(LINR,DBF_MENU) {
+		prompt("Linearization")
+		promptgroup(GUI_CONVERT)
+		special(102)
+		menu(menuConvert)
+		pp(TRUE)
+		interest(1)
+	}
+	field(EGUF,DBF_DOUBLE) {
+		prompt("Eng Units Full")
+		promptgroup(GUI_CONVERT)
+		special(102)
+		pp(TRUE)
+		interest(1)
+	}
+	field(EGUL,DBF_DOUBLE) {
+		prompt("Eng Units Low")
+		promptgroup(GUI_CONVERT)
+		special(102)
+		pp(TRUE)
+		interest(1)
+	}
+	field(EGU,DBF_STRING) {
+		prompt("Engineering Units")
+		promptgroup(GUI_DISPLAY)
+		size(16)
+		interest(1)
+	}
+	field(ROFF,DBF_LONG) {
+		prompt("Raw Offset, obsolete")
+		pp(TRUE)
+		interest(2)
+	}
+	field(EOFF,DBF_DOUBLE) {
+		prompt("EGU to Raw Offset")
+		promptgroup(GUI_CONVERT)
+		pp(TRUE)
+		interest(2)
+	}
+	field(ESLO,DBF_DOUBLE) {
+		prompt("EGU to Raw Slope")
+		initial("1")
+		promptgroup(GUI_CONVERT)
+		pp(TRUE)
+		interest(2)
+	}
+	field(DRVH,DBF_DOUBLE) {
+		prompt("Drive High Limit")
+		promptgroup(GUI_OUTPUT)
+		pp(TRUE)
+		interest(1)
+	}
+	field(DRVL,DBF_DOUBLE) {
+		prompt("Drive Low Limit")
+		promptgroup(GUI_OUTPUT)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HOPR,DBF_DOUBLE) {
+		prompt("High Operating Range")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(LOPR,DBF_DOUBLE) {
+		prompt("Low Operating Range")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(AOFF,DBF_DOUBLE) {
+		prompt("Adjustment Offset")
+		promptgroup(GUI_CONVERT)
+		pp(TRUE)
+		interest(1)
+	}
+	field(ASLO,DBF_DOUBLE) {
+		prompt("Adjustment Slope")
+		promptgroup(GUI_CONVERT)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HIHI,DBF_DOUBLE) {
+		prompt("Hihi Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LOLO,DBF_DOUBLE) {
+		prompt("Lolo Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HIGH,DBF_DOUBLE) {
+		prompt("High Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LOW,DBF_DOUBLE) {
+		prompt("Low Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HHSV,DBF_MENU) {
+		prompt("Hihi Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LLSV,DBF_MENU) {
+		prompt("Lolo Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HSV,DBF_MENU) {
+		prompt("High Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LSV,DBF_MENU) {
+		prompt("Low Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HYST,DBF_DOUBLE) {
+		prompt("Alarm Deadband")
+		promptgroup(GUI_ALARMS)
+		interest(1)
+	}
+	field(ADEL,DBF_DOUBLE) {
+		prompt("Archive Deadband")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(MDEL,DBF_DOUBLE) {
+		prompt("Monitor Deadband")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(RVAL,DBF_LONG) {
+		prompt("Current Raw Value")
+		pp(TRUE)
+	}
+	field(ORAW,DBF_LONG) {
+		prompt("Previous Raw Value")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(RBV,DBF_LONG) {
+		prompt("Readback Value")
+		special(SPC_NOMOD)
+	}
+	field(ORBV,DBF_LONG) {
+		prompt("Prev Readback Value")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(PVAL,DBF_DOUBLE) {
+		prompt("Previous value")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LALM,DBF_DOUBLE) {
+		prompt("Last Value Alarmed")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(ALST,DBF_DOUBLE) {
+		prompt("Last Value Archived")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(MLST,DBF_DOUBLE) {
+		prompt("Last Val Monitored")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(PBRK,DBF_NOACCESS) {
+		prompt("Ptrto brkTable")
+		special(SPC_NOMOD)
+		extra("void *	pbrk")
+		interest(4)
+	}
+	field(INIT,DBF_SHORT) {
+		prompt("Initialized?")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LBRK,DBF_SHORT) {
+		prompt("LastBreak Point")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(SIOL,DBF_OUTLINK) {
+		prompt("Sim Output Specifctn")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(SIML,DBF_INLINK) {
+		prompt("Sim Mode Location")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(SIMM,DBF_MENU) {
+		prompt("Simulation Mode")
+		menu(menuYesNo)
+		interest(1)
+	}
+	field(SIMS,DBF_MENU) {
+		prompt("Sim mode Alarm Svrty")
+		promptgroup(GUI_INPUTS)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(IVOA,DBF_MENU) {
+		prompt("INVALID output action")
+		promptgroup(GUI_OUTPUT)
+		menu(menuIvoa)
+		interest(2)
+	}
+	field(IVOV,DBF_DOUBLE) {
+		prompt("INVALID output value")
+		promptgroup(GUI_OUTPUT)
+		interest(2)
+	}
+	field(OMOD,DBF_UCHAR) {
+		prompt("Was OVAL modified?")
+		special(SPC_NOMOD)
+	}
+}
+recordtype(aSub) {
+	field(NAME,DBF_STRING) {
+		prompt("Record Name")
+		special(SPC_NOMOD)
+		size(61)
+	}
+	field(DESC,DBF_STRING) {
+		prompt("Descriptor")
+		promptgroup(GUI_COMMON)
+		size(41)
+	}
+	field(ASG,DBF_STRING) {
+		prompt("Access Security Group")
+		promptgroup(GUI_COMMON)
+		special(SPC_AS)
+		size(29)
+	}
+	field(SCAN,DBF_MENU) {
+		prompt("Scan Mechanism")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuScan)
+		interest(1)
+	}
+	field(PINI,DBF_MENU) {
+		prompt("Process at iocInit")
+		promptgroup(GUI_SCAN)
+		menu(menuPini)
+		interest(1)
+	}
+	field(PHAS,DBF_SHORT) {
+		prompt("Scan Phase")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(EVNT,DBF_SHORT) {
+		prompt("Event Number")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(TSE,DBF_SHORT) {
+		prompt("Time Stamp Event")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(TSEL,DBF_INLINK) {
+		prompt("Time Stamp Link")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(DTYP,DBF_DEVICE) {
+		prompt("Device Type")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(DISV,DBF_SHORT) {
+		prompt("Disable Value")
+		initial("1")
+		promptgroup(GUI_SCAN)
+	}
+	field(DISA,DBF_SHORT) {
+		prompt("Disable")
+	}
+	field(SDIS,DBF_INLINK) {
+		prompt("Scanning Disable")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(MLOK,DBF_NOACCESS) {
+		prompt("Monitor lock")
+		special(SPC_NOMOD)
+		extra("epicsMutexId	mlok")
+		interest(4)
+	}
+	field(MLIS,DBF_NOACCESS) {
+		prompt("Monitor List")
+		special(SPC_NOMOD)
+		extra("ELLLIST		mlis")
+		interest(4)
+	}
+	field(DISP,DBF_UCHAR) {
+		prompt("Disable putField")
+	}
+	field(PROC,DBF_UCHAR) {
+		prompt("Force Processing")
+		pp(TRUE)
+		interest(3)
+	}
+	field(STAT,DBF_MENU) {
+		prompt("Alarm Status")
+		initial("UDF")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+	}
+	field(SEVR,DBF_MENU) {
+		prompt("Alarm Severity")
+		initial("INVALID")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+	}
+	field(NSTA,DBF_MENU) {
+		prompt("New Alarm Status")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+		interest(2)
+	}
+	field(NSEV,DBF_MENU) {
+		prompt("New Alarm Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKS,DBF_MENU) {
+		prompt("Alarm Ack Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKT,DBF_MENU) {
+		prompt("Alarm Ack Transient")
+		initial("YES")
+		promptgroup(GUI_ALARMS)
+		special(SPC_NOMOD)
+		menu(menuYesNo)
+		interest(2)
+	}
+	field(DISS,DBF_MENU) {
+		prompt("Disable Alarm Sevrty")
+		promptgroup(GUI_SCAN)
+		menu(menuAlarmSevr)
+		interest(1)
+	}
+	field(LCNT,DBF_UCHAR) {
+		prompt("Lock Count")
+		special(SPC_NOMOD)
+		interest(2)
+	}
+	field(PACT,DBF_UCHAR) {
+		prompt("Record active")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(PUTF,DBF_UCHAR) {
+		prompt("dbPutField process")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(RPRO,DBF_UCHAR) {
+		prompt("Reprocess ")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(ASP,DBF_NOACCESS) {
+		prompt("Access Security Pvt")
+		special(SPC_NOMOD)
+		extra("struct asgMember *asp")
+		interest(4)
+	}
+	field(PPN,DBF_NOACCESS) {
+		prompt("addr of PUTNOTIFY")
+		special(SPC_NOMOD)
+		extra("struct putNotify *ppn")
+		interest(4)
+	}
+	field(PPNR,DBF_NOACCESS) {
+		prompt("pputNotifyRecord")
+		special(SPC_NOMOD)
+		extra("struct putNotifyRecord *ppnr")
+		interest(4)
+	}
+	field(SPVT,DBF_NOACCESS) {
+		prompt("Scan Private")
+		special(SPC_NOMOD)
+		extra("struct scan_element *spvt")
+		interest(4)
+	}
+	field(RSET,DBF_NOACCESS) {
+		prompt("Address of RSET")
+		special(SPC_NOMOD)
+		extra("struct rset	*rset")
+		interest(4)
+	}
+	field(DSET,DBF_NOACCESS) {
+		prompt("DSET address")
+		special(SPC_NOMOD)
+		extra("struct dset	*dset")
+		interest(4)
+	}
+	field(DPVT,DBF_NOACCESS) {
+		prompt("Device Private")
+		special(SPC_NOMOD)
+		extra("void		*dpvt")
+		interest(4)
+	}
+	field(RDES,DBF_NOACCESS) {
+		prompt("Address of dbRecordType")
+		special(SPC_NOMOD)
+		extra("struct dbRecordType *rdes")
+		interest(4)
+	}
+	field(LSET,DBF_NOACCESS) {
+		prompt("Lock Set")
+		special(SPC_NOMOD)
+		extra("struct lockRecord *lset")
+		interest(4)
+	}
+	field(PRIO,DBF_MENU) {
+		prompt("Scheduling Priority")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuPriority)
+		interest(1)
+	}
+	field(TPRO,DBF_UCHAR) {
+		prompt("Trace Processing")
+	}
+	field(BKPT,DBF_NOACCESS) {
+		prompt("Break Point")
+		special(SPC_NOMOD)
+		extra("char bkpt")
+		interest(1)
+	}
+	field(UDF,DBF_UCHAR) {
+		prompt("Undefined")
+		initial("1")
+		promptgroup(GUI_COMMON)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TIME,DBF_NOACCESS) {
+		prompt("Time")
+		special(SPC_NOMOD)
+		extra("epicsTimeStamp	time")
+		interest(2)
+	}
+	field(FLNK,DBF_FWDLINK) {
+		prompt("Forward Process Link")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(VAL,DBF_LONG) {
+		prompt("Subr. return value")
+		asl(ASL0)
+	}
+	field(OVAL,DBF_LONG) {
+		prompt("Old return value")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(INAM,DBF_STRING) {
+		prompt("Initialize Subr. Name")
+		promptgroup(GUI_SUB)
+		special(SPC_NOMOD)
+		size(41)
+		interest(1)
+	}
+	field(LFLG,DBF_MENU) {
+		prompt("Subr. Input Enable")
+		promptgroup(GUI_SUB)
+		menu(aSubLFLG)
+		interest(1)
+	}
+	field(SUBL,DBF_INLINK) {
+		prompt("Subroutine Name Link")
+		promptgroup(GUI_SUB)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(SNAM,DBF_STRING) {
+		prompt("Process Subr. Name")
+		promptgroup(GUI_SUB)
+		special(100)
+		size(41)
+		interest(1)
+	}
+	field(ONAM,DBF_STRING) {
+		prompt("Old Subr. Name")
+		promptgroup(GUI_SUB)
+		special(SPC_NOMOD)
+		size(41)
+		interest(3)
+	}
+	field(SADR,DBF_NOACCESS) {
+		prompt("Subroutine Address")
+		special(SPC_NOMOD)
+		extra("long (*sadr)(struct aSubRecord *)")
+		interest(2)
+	}
+	field(BRSV,DBF_MENU) {
+		prompt("Bad Return Severity")
+		promptgroup(GUI_SUB)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(PREC,DBF_SHORT) {
+		prompt("Display Precision")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(EFLG,DBF_MENU) {
+		prompt("Output Event Flag")
+		initial("1")
+		promptgroup(GUI_OUTPUT)
+		menu(aSubEFLG)
+		interest(1)
+	}
+	field(INPA,DBF_INLINK) {
+		prompt("Input Link A")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(INPB,DBF_INLINK) {
+		prompt("Input Link B")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(INPC,DBF_INLINK) {
+		prompt("Input Link C")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(INPD,DBF_INLINK) {
+		prompt("Input Link D")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(INPE,DBF_INLINK) {
+		prompt("Input Link E")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(INPF,DBF_INLINK) {
+		prompt("Input Link F")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(INPG,DBF_INLINK) {
+		prompt("Input Link G")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(INPH,DBF_INLINK) {
+		prompt("Input Link H")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(INPI,DBF_INLINK) {
+		prompt("Input Link I")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(INPJ,DBF_INLINK) {
+		prompt("Input Link J")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(INPK,DBF_INLINK) {
+		prompt("Input Link K")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(INPL,DBF_INLINK) {
+		prompt("Input Link L")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(INPM,DBF_INLINK) {
+		prompt("Input Link M")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(INPN,DBF_INLINK) {
+		prompt("Input Link N")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(INPO,DBF_INLINK) {
+		prompt("Input Link O")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(INPP,DBF_INLINK) {
+		prompt("Input Link P")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(INPQ,DBF_INLINK) {
+		prompt("Input Link Q")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(INPR,DBF_INLINK) {
+		prompt("Input Link R")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(INPS,DBF_INLINK) {
+		prompt("Input Link S")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(INPT,DBF_INLINK) {
+		prompt("Input Link T")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(INPU,DBF_INLINK) {
+		prompt("Input Link U")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(A,DBF_NOACCESS) {
+		prompt("Input value A")
+		special(SPC_DBADDR)
+		extra("void *a")
+		interest(2)
+		asl(ASL0)
+	}
+	field(B,DBF_NOACCESS) {
+		prompt("Input value B")
+		special(SPC_DBADDR)
+		extra("void *b")
+		interest(2)
+		asl(ASL0)
+	}
+	field(C,DBF_NOACCESS) {
+		prompt("Input value C")
+		special(SPC_DBADDR)
+		extra("void *c")
+		interest(2)
+		asl(ASL0)
+	}
+	field(D,DBF_NOACCESS) {
+		prompt("Input value D")
+		special(SPC_DBADDR)
+		extra("void *d")
+		interest(2)
+		asl(ASL0)
+	}
+	field(E,DBF_NOACCESS) {
+		prompt("Input value E")
+		special(SPC_DBADDR)
+		extra("void *e")
+		interest(2)
+		asl(ASL0)
+	}
+	field(F,DBF_NOACCESS) {
+		prompt("Input value F")
+		special(SPC_DBADDR)
+		extra("void *f")
+		interest(2)
+		asl(ASL0)
+	}
+	field(G,DBF_NOACCESS) {
+		prompt("Input value G")
+		special(SPC_DBADDR)
+		extra("void *g")
+		interest(2)
+		asl(ASL0)
+	}
+	field(H,DBF_NOACCESS) {
+		prompt("Input value H")
+		special(SPC_DBADDR)
+		extra("void *h")
+		interest(2)
+		asl(ASL0)
+	}
+	field(I,DBF_NOACCESS) {
+		prompt("Input value I")
+		special(SPC_DBADDR)
+		extra("void *i")
+		interest(2)
+		asl(ASL0)
+	}
+	field(J,DBF_NOACCESS) {
+		prompt("Input value J")
+		special(SPC_DBADDR)
+		extra("void *j")
+		interest(2)
+		asl(ASL0)
+	}
+	field(K,DBF_NOACCESS) {
+		prompt("Input value K")
+		special(SPC_DBADDR)
+		extra("void *k")
+		interest(2)
+		asl(ASL0)
+	}
+	field(L,DBF_NOACCESS) {
+		prompt("Input value L")
+		special(SPC_DBADDR)
+		extra("void *l")
+		interest(2)
+		asl(ASL0)
+	}
+	field(M,DBF_NOACCESS) {
+		prompt("Input value M")
+		special(SPC_DBADDR)
+		extra("void *m")
+		interest(2)
+		asl(ASL0)
+	}
+	field(N,DBF_NOACCESS) {
+		prompt("Input value N")
+		special(SPC_DBADDR)
+		extra("void *n")
+		interest(2)
+		asl(ASL0)
+	}
+	field(O,DBF_NOACCESS) {
+		prompt("Input value O")
+		special(SPC_DBADDR)
+		extra("void *o")
+		interest(2)
+		asl(ASL0)
+	}
+	field(P,DBF_NOACCESS) {
+		prompt("Input value P")
+		special(SPC_DBADDR)
+		extra("void *p")
+		interest(2)
+		asl(ASL0)
+	}
+	field(Q,DBF_NOACCESS) {
+		prompt("Input value Q")
+		special(SPC_DBADDR)
+		extra("void *q")
+		interest(2)
+		asl(ASL0)
+	}
+	field(R,DBF_NOACCESS) {
+		prompt("Input value R")
+		special(SPC_DBADDR)
+		extra("void *r")
+		interest(2)
+		asl(ASL0)
+	}
+	field(S,DBF_NOACCESS) {
+		prompt("Input value S")
+		special(SPC_DBADDR)
+		extra("void *s")
+		interest(2)
+		asl(ASL0)
+	}
+	field(T,DBF_NOACCESS) {
+		prompt("Input value T")
+		special(SPC_DBADDR)
+		extra("void *t")
+		interest(2)
+		asl(ASL0)
+	}
+	field(U,DBF_NOACCESS) {
+		prompt("Input value U")
+		special(SPC_DBADDR)
+		extra("void *u")
+		interest(2)
+		asl(ASL0)
+	}
+	field(FTA,DBF_MENU) {
+		prompt("Type of A")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTB,DBF_MENU) {
+		prompt("Type of B")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTC,DBF_MENU) {
+		prompt("Type of C")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTD,DBF_MENU) {
+		prompt("Type of D")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTE,DBF_MENU) {
+		prompt("Type of E")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTF,DBF_MENU) {
+		prompt("Type of F")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTG,DBF_MENU) {
+		prompt("Type of G")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTH,DBF_MENU) {
+		prompt("Type of H")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTI,DBF_MENU) {
+		prompt("Type of I")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTJ,DBF_MENU) {
+		prompt("Type of J")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTK,DBF_MENU) {
+		prompt("Type of K")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTL,DBF_MENU) {
+		prompt("Type of L")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTM,DBF_MENU) {
+		prompt("Type of M")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTN,DBF_MENU) {
+		prompt("Type of N")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTO,DBF_MENU) {
+		prompt("Type of O")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTP,DBF_MENU) {
+		prompt("Type of P")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTQ,DBF_MENU) {
+		prompt("Type of Q")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTR,DBF_MENU) {
+		prompt("Type of R")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTS,DBF_MENU) {
+		prompt("Type of S")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTT,DBF_MENU) {
+		prompt("Type of T")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTU,DBF_MENU) {
+		prompt("Type of U")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(NOA,DBF_ULONG) {
+		prompt("Max. elements in A")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOB,DBF_ULONG) {
+		prompt("Max. elements in B")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOC,DBF_ULONG) {
+		prompt("Max. elements in C")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOD,DBF_ULONG) {
+		prompt("Max. elements in D")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOE,DBF_ULONG) {
+		prompt("Max. elements in E")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOF,DBF_ULONG) {
+		prompt("Max. elements in F")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOG,DBF_ULONG) {
+		prompt("Max. elements in G")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOH,DBF_ULONG) {
+		prompt("Max. elements in H")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOI,DBF_ULONG) {
+		prompt("Max. elements in I")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOJ,DBF_ULONG) {
+		prompt("Max. elements in J")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOK,DBF_ULONG) {
+		prompt("Max. elements in K")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOL,DBF_ULONG) {
+		prompt("Max. elements in L")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOM,DBF_ULONG) {
+		prompt("Max. elements in M")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NON,DBF_ULONG) {
+		prompt("Max. elements in N")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOO,DBF_ULONG) {
+		prompt("Max. elements in O")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOP,DBF_ULONG) {
+		prompt("Max. elements in P")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOQ,DBF_ULONG) {
+		prompt("Max. elements in Q")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOR,DBF_ULONG) {
+		prompt("Max. elements in R")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOS,DBF_ULONG) {
+		prompt("Max. elements in S")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOT,DBF_ULONG) {
+		prompt("Max. elements in T")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOU,DBF_ULONG) {
+		prompt("Max. elements in U")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NEA,DBF_ULONG) {
+		prompt("Num. elements in A")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEB,DBF_ULONG) {
+		prompt("Num. elements in B")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEC,DBF_ULONG) {
+		prompt("Num. elements in C")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NED,DBF_ULONG) {
+		prompt("Num. elements in D")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEE,DBF_ULONG) {
+		prompt("Num. elements in E")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEF,DBF_ULONG) {
+		prompt("Num. elements in F")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEG,DBF_ULONG) {
+		prompt("Num. elements in G")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEH,DBF_ULONG) {
+		prompt("Num. elements in H")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEI,DBF_ULONG) {
+		prompt("Num. elements in I")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEJ,DBF_ULONG) {
+		prompt("Num. elements in J")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEK,DBF_ULONG) {
+		prompt("Num. elements in K")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEL,DBF_ULONG) {
+		prompt("Num. elements in L")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEM,DBF_ULONG) {
+		prompt("Num. elements in M")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEN,DBF_ULONG) {
+		prompt("Num. elements in N")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEO,DBF_ULONG) {
+		prompt("Num. elements in O")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEP,DBF_ULONG) {
+		prompt("Num. elements in P")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEQ,DBF_ULONG) {
+		prompt("Num. elements in Q")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NER,DBF_ULONG) {
+		prompt("Num. elements in R")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NES,DBF_ULONG) {
+		prompt("Num. elements in S")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NET,DBF_ULONG) {
+		prompt("Num. elements in T")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEU,DBF_ULONG) {
+		prompt("Num. elements in U")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(OUTA,DBF_OUTLINK) {
+		prompt("Output Link A")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(OUTB,DBF_OUTLINK) {
+		prompt("Output Link B")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(OUTC,DBF_OUTLINK) {
+		prompt("Output Link C")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(OUTD,DBF_OUTLINK) {
+		prompt("Output Link D")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(OUTE,DBF_OUTLINK) {
+		prompt("Output Link E")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(OUTF,DBF_OUTLINK) {
+		prompt("Output Link F")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(OUTG,DBF_OUTLINK) {
+		prompt("Output Link G")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(OUTH,DBF_OUTLINK) {
+		prompt("Output Link H")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(OUTI,DBF_OUTLINK) {
+		prompt("Output Link I")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(OUTJ,DBF_OUTLINK) {
+		prompt("Output Link J")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(OUTK,DBF_OUTLINK) {
+		prompt("Output Link K")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(OUTL,DBF_OUTLINK) {
+		prompt("Output Link L")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(OUTM,DBF_OUTLINK) {
+		prompt("Output Link M")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(OUTN,DBF_OUTLINK) {
+		prompt("Output Link N")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(OUTO,DBF_OUTLINK) {
+		prompt("Output Link O")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(OUTP,DBF_OUTLINK) {
+		prompt("Output Link P")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(OUTQ,DBF_OUTLINK) {
+		prompt("Output Link Q")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(OUTR,DBF_OUTLINK) {
+		prompt("Output Link R")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(OUTS,DBF_OUTLINK) {
+		prompt("Output Link S")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(OUTT,DBF_OUTLINK) {
+		prompt("Output Link T")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(OUTU,DBF_OUTLINK) {
+		prompt("Output Link U")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(VALA,DBF_NOACCESS) {
+		prompt("Output value A")
+		special(SPC_DBADDR)
+		extra("void *vala")
+		interest(2)
+		asl(ASL0)
+	}
+	field(VALB,DBF_NOACCESS) {
+		prompt("Output value B")
+		special(SPC_DBADDR)
+		extra("void *valb")
+		interest(2)
+		asl(ASL0)
+	}
+	field(VALC,DBF_NOACCESS) {
+		prompt("Output value C")
+		special(SPC_DBADDR)
+		extra("void *valc")
+		interest(2)
+		asl(ASL0)
+	}
+	field(VALD,DBF_NOACCESS) {
+		prompt("Output value D")
+		special(SPC_DBADDR)
+		extra("void *vald")
+		interest(2)
+		asl(ASL0)
+	}
+	field(VALE,DBF_NOACCESS) {
+		prompt("Output value E")
+		special(SPC_DBADDR)
+		extra("void *vale")
+		interest(2)
+		asl(ASL0)
+	}
+	field(VALF,DBF_NOACCESS) {
+		prompt("Output value F")
+		special(SPC_DBADDR)
+		extra("void *valf")
+		interest(2)
+		asl(ASL0)
+	}
+	field(VALG,DBF_NOACCESS) {
+		prompt("Output value G")
+		special(SPC_DBADDR)
+		extra("void *valg")
+		interest(2)
+		asl(ASL0)
+	}
+	field(VALH,DBF_NOACCESS) {
+		prompt("Output value H")
+		special(SPC_DBADDR)
+		extra("void *valh")
+		interest(2)
+		asl(ASL0)
+	}
+	field(VALI,DBF_NOACCESS) {
+		prompt("Output value I")
+		special(SPC_DBADDR)
+		extra("void *vali")
+		interest(2)
+		asl(ASL0)
+	}
+	field(VALJ,DBF_NOACCESS) {
+		prompt("Output value J")
+		special(SPC_DBADDR)
+		extra("void *valj")
+		interest(2)
+		asl(ASL0)
+	}
+	field(VALK,DBF_NOACCESS) {
+		prompt("Output value K")
+		special(SPC_DBADDR)
+		extra("void *valk")
+		interest(2)
+		asl(ASL0)
+	}
+	field(VALL,DBF_NOACCESS) {
+		prompt("Output value L")
+		special(SPC_DBADDR)
+		extra("void *vall")
+		interest(2)
+		asl(ASL0)
+	}
+	field(VALM,DBF_NOACCESS) {
+		prompt("Output value M")
+		special(SPC_DBADDR)
+		extra("void *valm")
+		interest(2)
+		asl(ASL0)
+	}
+	field(VALN,DBF_NOACCESS) {
+		prompt("Output value N")
+		special(SPC_DBADDR)
+		extra("void *valn")
+		interest(2)
+		asl(ASL0)
+	}
+	field(VALO,DBF_NOACCESS) {
+		prompt("Output value O")
+		special(SPC_DBADDR)
+		extra("void *valo")
+		interest(2)
+		asl(ASL0)
+	}
+	field(VALP,DBF_NOACCESS) {
+		prompt("Output value P")
+		special(SPC_DBADDR)
+		extra("void *valp")
+		interest(2)
+		asl(ASL0)
+	}
+	field(VALQ,DBF_NOACCESS) {
+		prompt("Output value Q")
+		special(SPC_DBADDR)
+		extra("void *valq")
+		interest(2)
+		asl(ASL0)
+	}
+	field(VALR,DBF_NOACCESS) {
+		prompt("Output value R")
+		special(SPC_DBADDR)
+		extra("void *valr")
+		interest(2)
+		asl(ASL0)
+	}
+	field(VALS,DBF_NOACCESS) {
+		prompt("Output value S")
+		special(SPC_DBADDR)
+		extra("void *vals")
+		interest(2)
+		asl(ASL0)
+	}
+	field(VALT,DBF_NOACCESS) {
+		prompt("Output value T")
+		special(SPC_DBADDR)
+		extra("void *valt")
+		interest(2)
+		asl(ASL0)
+	}
+	field(VALU,DBF_NOACCESS) {
+		prompt("Output value U")
+		special(SPC_DBADDR)
+		extra("void *valu")
+		interest(2)
+		asl(ASL0)
+	}
+	field(OVLA,DBF_NOACCESS) {
+		prompt("Old Output A")
+		special(SPC_NOMOD)
+		extra("void *ovla")
+		interest(4)
+		asl(ASL0)
+	}
+	field(OVLB,DBF_NOACCESS) {
+		prompt("Old Output B")
+		special(SPC_NOMOD)
+		extra("void *ovlb")
+		interest(4)
+		asl(ASL0)
+	}
+	field(OVLC,DBF_NOACCESS) {
+		prompt("Old Output C")
+		special(SPC_NOMOD)
+		extra("void *ovlc")
+		interest(4)
+		asl(ASL0)
+	}
+	field(OVLD,DBF_NOACCESS) {
+		prompt("Old Output D")
+		special(SPC_NOMOD)
+		extra("void *ovld")
+		interest(4)
+		asl(ASL0)
+	}
+	field(OVLE,DBF_NOACCESS) {
+		prompt("Old Output E")
+		special(SPC_NOMOD)
+		extra("void *ovle")
+		interest(4)
+		asl(ASL0)
+	}
+	field(OVLF,DBF_NOACCESS) {
+		prompt("Old Output F")
+		special(SPC_NOMOD)
+		extra("void *ovlf")
+		interest(4)
+		asl(ASL0)
+	}
+	field(OVLG,DBF_NOACCESS) {
+		prompt("Old Output G")
+		special(SPC_NOMOD)
+		extra("void *ovlg")
+		interest(4)
+		asl(ASL0)
+	}
+	field(OVLH,DBF_NOACCESS) {
+		prompt("Old Output H")
+		special(SPC_NOMOD)
+		extra("void *ovlh")
+		interest(4)
+		asl(ASL0)
+	}
+	field(OVLI,DBF_NOACCESS) {
+		prompt("Old Output I")
+		special(SPC_NOMOD)
+		extra("void *ovli")
+		interest(4)
+		asl(ASL0)
+	}
+	field(OVLJ,DBF_NOACCESS) {
+		prompt("Old Output J")
+		special(SPC_NOMOD)
+		extra("void *ovlj")
+		interest(4)
+		asl(ASL0)
+	}
+	field(OVLK,DBF_NOACCESS) {
+		prompt("Old Output K")
+		special(SPC_NOMOD)
+		extra("void *ovlk")
+		interest(4)
+		asl(ASL0)
+	}
+	field(OVLL,DBF_NOACCESS) {
+		prompt("Old Output L")
+		special(SPC_NOMOD)
+		extra("void *ovll")
+		interest(4)
+		asl(ASL0)
+	}
+	field(OVLM,DBF_NOACCESS) {
+		prompt("Old Output M")
+		special(SPC_NOMOD)
+		extra("void *ovlm")
+		interest(4)
+		asl(ASL0)
+	}
+	field(OVLN,DBF_NOACCESS) {
+		prompt("Old Output N")
+		special(SPC_NOMOD)
+		extra("void *ovln")
+		interest(4)
+		asl(ASL0)
+	}
+	field(OVLO,DBF_NOACCESS) {
+		prompt("Old Output O")
+		special(SPC_NOMOD)
+		extra("void *ovlo")
+		interest(4)
+		asl(ASL0)
+	}
+	field(OVLP,DBF_NOACCESS) {
+		prompt("Old Output P")
+		special(SPC_NOMOD)
+		extra("void *ovlp")
+		interest(4)
+		asl(ASL0)
+	}
+	field(OVLQ,DBF_NOACCESS) {
+		prompt("Old Output Q")
+		special(SPC_NOMOD)
+		extra("void *ovlq")
+		interest(4)
+		asl(ASL0)
+	}
+	field(OVLR,DBF_NOACCESS) {
+		prompt("Old Output R")
+		special(SPC_NOMOD)
+		extra("void *ovlr")
+		interest(4)
+		asl(ASL0)
+	}
+	field(OVLS,DBF_NOACCESS) {
+		prompt("Old Output S")
+		special(SPC_NOMOD)
+		extra("void *ovls")
+		interest(4)
+		asl(ASL0)
+	}
+	field(OVLT,DBF_NOACCESS) {
+		prompt("Old Output T")
+		special(SPC_NOMOD)
+		extra("void *ovlt")
+		interest(4)
+		asl(ASL0)
+	}
+	field(OVLU,DBF_NOACCESS) {
+		prompt("Old Output U")
+		special(SPC_NOMOD)
+		extra("void *ovlu")
+		interest(4)
+		asl(ASL0)
+	}
+	field(FTVA,DBF_MENU) {
+		prompt("Type of VALA")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTVB,DBF_MENU) {
+		prompt("Type of VALB")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTVC,DBF_MENU) {
+		prompt("Type of VALC")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTVD,DBF_MENU) {
+		prompt("Type of VALD")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTVE,DBF_MENU) {
+		prompt("Type of VALE")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTVF,DBF_MENU) {
+		prompt("Type of VALF")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTVG,DBF_MENU) {
+		prompt("Type of VALG")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTVH,DBF_MENU) {
+		prompt("Type of VALH")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTVI,DBF_MENU) {
+		prompt("Type of VALI")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTVJ,DBF_MENU) {
+		prompt("Type of VALJ")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTVK,DBF_MENU) {
+		prompt("Type of VALK")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTVL,DBF_MENU) {
+		prompt("Type of VALL")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTVM,DBF_MENU) {
+		prompt("Type of VALM")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTVN,DBF_MENU) {
+		prompt("Type of VALN")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTVO,DBF_MENU) {
+		prompt("Type of VALO")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTVP,DBF_MENU) {
+		prompt("Type of VALP")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTVQ,DBF_MENU) {
+		prompt("Type of VALQ")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTVR,DBF_MENU) {
+		prompt("Type of VALR")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTVS,DBF_MENU) {
+		prompt("Type of VALS")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTVT,DBF_MENU) {
+		prompt("Type of VALT")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(FTVU,DBF_MENU) {
+		prompt("Type of VALU")
+		initial("DOUBLE")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(NOVA,DBF_ULONG) {
+		prompt("Max. elements in VALA")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOVB,DBF_ULONG) {
+		prompt("Max. elements in VALB")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOVC,DBF_ULONG) {
+		prompt("Max. elements in VALC")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOVD,DBF_ULONG) {
+		prompt("Max. elements in VALD")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOVE,DBF_ULONG) {
+		prompt("Max. elements in VALE")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOVF,DBF_ULONG) {
+		prompt("Max. elements in VALF")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOVG,DBF_ULONG) {
+		prompt("Max. elements in VALG")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOVH,DBF_ULONG) {
+		prompt("Max. elements in VAlH")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOVI,DBF_ULONG) {
+		prompt("Max. elements in VALI")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOVJ,DBF_ULONG) {
+		prompt("Max. elements in VALJ")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOVK,DBF_ULONG) {
+		prompt("Max. elements in VALK")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOVL,DBF_ULONG) {
+		prompt("Max. elements in VALL")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOVM,DBF_ULONG) {
+		prompt("Max. elements in VALM")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOVN,DBF_ULONG) {
+		prompt("Max. elements in VALN")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOVO,DBF_ULONG) {
+		prompt("Max. elements in VALO")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOVP,DBF_ULONG) {
+		prompt("Max. elements in VALP")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOVQ,DBF_ULONG) {
+		prompt("Max. elements in VALQ")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOVR,DBF_ULONG) {
+		prompt("Max. elements in VALR")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOVS,DBF_ULONG) {
+		prompt("Max. elements in VALS")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOVT,DBF_ULONG) {
+		prompt("Max. elements in VALT")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOVU,DBF_ULONG) {
+		prompt("Max. elements in VALU")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NEVA,DBF_ULONG) {
+		prompt("Num. elements in VALA")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEVB,DBF_ULONG) {
+		prompt("Num. elements in VALB")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEVC,DBF_ULONG) {
+		prompt("Num. elements in VALC")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEVD,DBF_ULONG) {
+		prompt("Num. elements in VALD")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEVE,DBF_ULONG) {
+		prompt("Num. elements in VALE")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEVF,DBF_ULONG) {
+		prompt("Num. elements in VALF")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEVG,DBF_ULONG) {
+		prompt("Num. elements in VALG")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEVH,DBF_ULONG) {
+		prompt("Num. elements in VAlH")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEVI,DBF_ULONG) {
+		prompt("Num. elements in VALI")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEVJ,DBF_ULONG) {
+		prompt("Num. elements in VALJ")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEVK,DBF_ULONG) {
+		prompt("Num. elements in VALK")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEVL,DBF_ULONG) {
+		prompt("Num. elements in VALL")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEVM,DBF_ULONG) {
+		prompt("Num. elements in VALM")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEVN,DBF_ULONG) {
+		prompt("Num. elements in VALN")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEVO,DBF_ULONG) {
+		prompt("Num. elements in VALO")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEVP,DBF_ULONG) {
+		prompt("Num. elements in VALP")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEVQ,DBF_ULONG) {
+		prompt("Num. elements in VALQ")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEVR,DBF_ULONG) {
+		prompt("Num. elements in VALR")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEVS,DBF_ULONG) {
+		prompt("Num. elements in VALS")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEVT,DBF_ULONG) {
+		prompt("Num. elements in VALT")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NEVU,DBF_ULONG) {
+		prompt("Num. elements in VALU")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+}
+recordtype(bi) {
+	field(NAME,DBF_STRING) {
+		prompt("Record Name")
+		special(SPC_NOMOD)
+		size(61)
+	}
+	field(DESC,DBF_STRING) {
+		prompt("Descriptor")
+		promptgroup(GUI_COMMON)
+		size(41)
+	}
+	field(ASG,DBF_STRING) {
+		prompt("Access Security Group")
+		promptgroup(GUI_COMMON)
+		special(SPC_AS)
+		size(29)
+	}
+	field(SCAN,DBF_MENU) {
+		prompt("Scan Mechanism")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuScan)
+		interest(1)
+	}
+	field(PINI,DBF_MENU) {
+		prompt("Process at iocInit")
+		promptgroup(GUI_SCAN)
+		menu(menuPini)
+		interest(1)
+	}
+	field(PHAS,DBF_SHORT) {
+		prompt("Scan Phase")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(EVNT,DBF_SHORT) {
+		prompt("Event Number")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(TSE,DBF_SHORT) {
+		prompt("Time Stamp Event")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(TSEL,DBF_INLINK) {
+		prompt("Time Stamp Link")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(DTYP,DBF_DEVICE) {
+		prompt("Device Type")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(DISV,DBF_SHORT) {
+		prompt("Disable Value")
+		initial("1")
+		promptgroup(GUI_SCAN)
+	}
+	field(DISA,DBF_SHORT) {
+		prompt("Disable")
+	}
+	field(SDIS,DBF_INLINK) {
+		prompt("Scanning Disable")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(MLOK,DBF_NOACCESS) {
+		prompt("Monitor lock")
+		special(SPC_NOMOD)
+		extra("epicsMutexId	mlok")
+		interest(4)
+	}
+	field(MLIS,DBF_NOACCESS) {
+		prompt("Monitor List")
+		special(SPC_NOMOD)
+		extra("ELLLIST		mlis")
+		interest(4)
+	}
+	field(DISP,DBF_UCHAR) {
+		prompt("Disable putField")
+	}
+	field(PROC,DBF_UCHAR) {
+		prompt("Force Processing")
+		pp(TRUE)
+		interest(3)
+	}
+	field(STAT,DBF_MENU) {
+		prompt("Alarm Status")
+		initial("UDF")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+	}
+	field(SEVR,DBF_MENU) {
+		prompt("Alarm Severity")
+		initial("INVALID")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+	}
+	field(NSTA,DBF_MENU) {
+		prompt("New Alarm Status")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+		interest(2)
+	}
+	field(NSEV,DBF_MENU) {
+		prompt("New Alarm Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKS,DBF_MENU) {
+		prompt("Alarm Ack Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKT,DBF_MENU) {
+		prompt("Alarm Ack Transient")
+		initial("YES")
+		promptgroup(GUI_ALARMS)
+		special(SPC_NOMOD)
+		menu(menuYesNo)
+		interest(2)
+	}
+	field(DISS,DBF_MENU) {
+		prompt("Disable Alarm Sevrty")
+		promptgroup(GUI_SCAN)
+		menu(menuAlarmSevr)
+		interest(1)
+	}
+	field(LCNT,DBF_UCHAR) {
+		prompt("Lock Count")
+		special(SPC_NOMOD)
+		interest(2)
+	}
+	field(PACT,DBF_UCHAR) {
+		prompt("Record active")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(PUTF,DBF_UCHAR) {
+		prompt("dbPutField process")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(RPRO,DBF_UCHAR) {
+		prompt("Reprocess ")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(ASP,DBF_NOACCESS) {
+		prompt("Access Security Pvt")
+		special(SPC_NOMOD)
+		extra("struct asgMember *asp")
+		interest(4)
+	}
+	field(PPN,DBF_NOACCESS) {
+		prompt("addr of PUTNOTIFY")
+		special(SPC_NOMOD)
+		extra("struct putNotify *ppn")
+		interest(4)
+	}
+	field(PPNR,DBF_NOACCESS) {
+		prompt("pputNotifyRecord")
+		special(SPC_NOMOD)
+		extra("struct putNotifyRecord *ppnr")
+		interest(4)
+	}
+	field(SPVT,DBF_NOACCESS) {
+		prompt("Scan Private")
+		special(SPC_NOMOD)
+		extra("struct scan_element *spvt")
+		interest(4)
+	}
+	field(RSET,DBF_NOACCESS) {
+		prompt("Address of RSET")
+		special(SPC_NOMOD)
+		extra("struct rset	*rset")
+		interest(4)
+	}
+	field(DSET,DBF_NOACCESS) {
+		prompt("DSET address")
+		special(SPC_NOMOD)
+		extra("struct dset	*dset")
+		interest(4)
+	}
+	field(DPVT,DBF_NOACCESS) {
+		prompt("Device Private")
+		special(SPC_NOMOD)
+		extra("void		*dpvt")
+		interest(4)
+	}
+	field(RDES,DBF_NOACCESS) {
+		prompt("Address of dbRecordType")
+		special(SPC_NOMOD)
+		extra("struct dbRecordType *rdes")
+		interest(4)
+	}
+	field(LSET,DBF_NOACCESS) {
+		prompt("Lock Set")
+		special(SPC_NOMOD)
+		extra("struct lockRecord *lset")
+		interest(4)
+	}
+	field(PRIO,DBF_MENU) {
+		prompt("Scheduling Priority")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuPriority)
+		interest(1)
+	}
+	field(TPRO,DBF_UCHAR) {
+		prompt("Trace Processing")
+	}
+	field(BKPT,DBF_NOACCESS) {
+		prompt("Break Point")
+		special(SPC_NOMOD)
+		extra("char bkpt")
+		interest(1)
+	}
+	field(UDF,DBF_UCHAR) {
+		prompt("Undefined")
+		initial("1")
+		promptgroup(GUI_COMMON)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TIME,DBF_NOACCESS) {
+		prompt("Time")
+		special(SPC_NOMOD)
+		extra("epicsTimeStamp	time")
+		interest(2)
+	}
+	field(FLNK,DBF_FWDLINK) {
+		prompt("Forward Process Link")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(INP,DBF_INLINK) {
+		prompt("Input Specification")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(VAL,DBF_ENUM) {
+		prompt("Current Value")
+		promptgroup(GUI_INPUTS)
+		pp(TRUE)
+		asl(ASL0)
+	}
+	field(ZSV,DBF_MENU) {
+		prompt("Zero Error Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(OSV,DBF_MENU) {
+		prompt("One Error Severity")
+		promptgroup(GUI_BITS1)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(COSV,DBF_MENU) {
+		prompt("Change of State Svr")
+		promptgroup(GUI_BITS2)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(ZNAM,DBF_STRING) {
+		prompt("Zero Name")
+		promptgroup(GUI_CALC)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(ONAM,DBF_STRING) {
+		prompt("One Name")
+		promptgroup(GUI_CLOCK)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(RVAL,DBF_ULONG) {
+		prompt("Raw Value")
+		pp(TRUE)
+	}
+	field(ORAW,DBF_ULONG) {
+		prompt("prev Raw Value")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(MASK,DBF_ULONG) {
+		prompt("Hardware Mask")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(LALM,DBF_USHORT) {
+		prompt("Last Value Alarmed")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(MLST,DBF_USHORT) {
+		prompt("Last Value Monitored")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(SIOL,DBF_INLINK) {
+		prompt("Sim Input Specifctn")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(SVAL,DBF_ULONG) {
+		prompt("Simulation Value")
+	}
+	field(SIML,DBF_INLINK) {
+		prompt("Sim Mode Location")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(SIMM,DBF_MENU) {
+		prompt("Simulation Mode")
+		menu(menuSimm)
+		interest(1)
+	}
+	field(SIMS,DBF_MENU) {
+		prompt("Sim mode Alarm Svrty")
+		promptgroup(GUI_INPUTS)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+}
+recordtype(bo) {
+	field(NAME,DBF_STRING) {
+		prompt("Record Name")
+		special(SPC_NOMOD)
+		size(61)
+	}
+	field(DESC,DBF_STRING) {
+		prompt("Descriptor")
+		promptgroup(GUI_COMMON)
+		size(41)
+	}
+	field(ASG,DBF_STRING) {
+		prompt("Access Security Group")
+		promptgroup(GUI_COMMON)
+		special(SPC_AS)
+		size(29)
+	}
+	field(SCAN,DBF_MENU) {
+		prompt("Scan Mechanism")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuScan)
+		interest(1)
+	}
+	field(PINI,DBF_MENU) {
+		prompt("Process at iocInit")
+		promptgroup(GUI_SCAN)
+		menu(menuPini)
+		interest(1)
+	}
+	field(PHAS,DBF_SHORT) {
+		prompt("Scan Phase")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(EVNT,DBF_SHORT) {
+		prompt("Event Number")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(TSE,DBF_SHORT) {
+		prompt("Time Stamp Event")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(TSEL,DBF_INLINK) {
+		prompt("Time Stamp Link")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(DTYP,DBF_DEVICE) {
+		prompt("Device Type")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(DISV,DBF_SHORT) {
+		prompt("Disable Value")
+		initial("1")
+		promptgroup(GUI_SCAN)
+	}
+	field(DISA,DBF_SHORT) {
+		prompt("Disable")
+	}
+	field(SDIS,DBF_INLINK) {
+		prompt("Scanning Disable")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(MLOK,DBF_NOACCESS) {
+		prompt("Monitor lock")
+		special(SPC_NOMOD)
+		extra("epicsMutexId	mlok")
+		interest(4)
+	}
+	field(MLIS,DBF_NOACCESS) {
+		prompt("Monitor List")
+		special(SPC_NOMOD)
+		extra("ELLLIST		mlis")
+		interest(4)
+	}
+	field(DISP,DBF_UCHAR) {
+		prompt("Disable putField")
+	}
+	field(PROC,DBF_UCHAR) {
+		prompt("Force Processing")
+		pp(TRUE)
+		interest(3)
+	}
+	field(STAT,DBF_MENU) {
+		prompt("Alarm Status")
+		initial("UDF")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+	}
+	field(SEVR,DBF_MENU) {
+		prompt("Alarm Severity")
+		initial("INVALID")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+	}
+	field(NSTA,DBF_MENU) {
+		prompt("New Alarm Status")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+		interest(2)
+	}
+	field(NSEV,DBF_MENU) {
+		prompt("New Alarm Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKS,DBF_MENU) {
+		prompt("Alarm Ack Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKT,DBF_MENU) {
+		prompt("Alarm Ack Transient")
+		initial("YES")
+		promptgroup(GUI_ALARMS)
+		special(SPC_NOMOD)
+		menu(menuYesNo)
+		interest(2)
+	}
+	field(DISS,DBF_MENU) {
+		prompt("Disable Alarm Sevrty")
+		promptgroup(GUI_SCAN)
+		menu(menuAlarmSevr)
+		interest(1)
+	}
+	field(LCNT,DBF_UCHAR) {
+		prompt("Lock Count")
+		special(SPC_NOMOD)
+		interest(2)
+	}
+	field(PACT,DBF_UCHAR) {
+		prompt("Record active")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(PUTF,DBF_UCHAR) {
+		prompt("dbPutField process")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(RPRO,DBF_UCHAR) {
+		prompt("Reprocess ")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(ASP,DBF_NOACCESS) {
+		prompt("Access Security Pvt")
+		special(SPC_NOMOD)
+		extra("struct asgMember *asp")
+		interest(4)
+	}
+	field(PPN,DBF_NOACCESS) {
+		prompt("addr of PUTNOTIFY")
+		special(SPC_NOMOD)
+		extra("struct putNotify *ppn")
+		interest(4)
+	}
+	field(PPNR,DBF_NOACCESS) {
+		prompt("pputNotifyRecord")
+		special(SPC_NOMOD)
+		extra("struct putNotifyRecord *ppnr")
+		interest(4)
+	}
+	field(SPVT,DBF_NOACCESS) {
+		prompt("Scan Private")
+		special(SPC_NOMOD)
+		extra("struct scan_element *spvt")
+		interest(4)
+	}
+	field(RSET,DBF_NOACCESS) {
+		prompt("Address of RSET")
+		special(SPC_NOMOD)
+		extra("struct rset	*rset")
+		interest(4)
+	}
+	field(DSET,DBF_NOACCESS) {
+		prompt("DSET address")
+		special(SPC_NOMOD)
+		extra("struct dset	*dset")
+		interest(4)
+	}
+	field(DPVT,DBF_NOACCESS) {
+		prompt("Device Private")
+		special(SPC_NOMOD)
+		extra("void		*dpvt")
+		interest(4)
+	}
+	field(RDES,DBF_NOACCESS) {
+		prompt("Address of dbRecordType")
+		special(SPC_NOMOD)
+		extra("struct dbRecordType *rdes")
+		interest(4)
+	}
+	field(LSET,DBF_NOACCESS) {
+		prompt("Lock Set")
+		special(SPC_NOMOD)
+		extra("struct lockRecord *lset")
+		interest(4)
+	}
+	field(PRIO,DBF_MENU) {
+		prompt("Scheduling Priority")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuPriority)
+		interest(1)
+	}
+	field(TPRO,DBF_UCHAR) {
+		prompt("Trace Processing")
+	}
+	field(BKPT,DBF_NOACCESS) {
+		prompt("Break Point")
+		special(SPC_NOMOD)
+		extra("char bkpt")
+		interest(1)
+	}
+	field(UDF,DBF_UCHAR) {
+		prompt("Undefined")
+		initial("1")
+		promptgroup(GUI_COMMON)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TIME,DBF_NOACCESS) {
+		prompt("Time")
+		special(SPC_NOMOD)
+		extra("epicsTimeStamp	time")
+		interest(2)
+	}
+	field(FLNK,DBF_FWDLINK) {
+		prompt("Forward Process Link")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(VAL,DBF_ENUM) {
+		prompt("Current Value")
+		promptgroup(GUI_OUTPUT)
+		pp(TRUE)
+		asl(ASL0)
+	}
+	field(OMSL,DBF_MENU) {
+		prompt("Output Mode Select")
+		promptgroup(GUI_OUTPUT)
+		menu(menuOmsl)
+		interest(1)
+	}
+	field(DOL,DBF_INLINK) {
+		prompt("Desired Output Loc")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(OUT,DBF_OUTLINK) {
+		prompt("Output Specification")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(HIGH,DBF_DOUBLE) {
+		prompt("Seconds to Hold High")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(ZNAM,DBF_STRING) {
+		prompt("Zero Name")
+		promptgroup(GUI_DISPLAY)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(ONAM,DBF_STRING) {
+		prompt("One Name")
+		promptgroup(GUI_DISPLAY)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(RVAL,DBF_ULONG) {
+		prompt("Raw Value")
+		pp(TRUE)
+	}
+	field(ORAW,DBF_ULONG) {
+		prompt("prev Raw Value")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(MASK,DBF_ULONG) {
+		prompt("Hardware Mask")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(RPVT,DBF_NOACCESS) {
+		prompt("Record Private")
+		special(SPC_NOMOD)
+		extra("void *  rpvt")
+		interest(4)
+	}
+	field(WDPT,DBF_NOACCESS) {
+		prompt("Watch Dog Timer ID")
+		special(SPC_NOMOD)
+		extra("void *	wdpt")
+		interest(4)
+	}
+	field(ZSV,DBF_MENU) {
+		prompt("Zero Error Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(OSV,DBF_MENU) {
+		prompt("One Error Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(COSV,DBF_MENU) {
+		prompt("Change of State Sevr")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(RBV,DBF_ULONG) {
+		prompt("Readback Value")
+		special(SPC_NOMOD)
+	}
+	field(ORBV,DBF_ULONG) {
+		prompt("Prev Readback Value")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(MLST,DBF_USHORT) {
+		prompt("Last Value Monitored")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LALM,DBF_USHORT) {
+		prompt("Last Value Alarmed")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(SIOL,DBF_OUTLINK) {
+		prompt("Sim Output Specifctn")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(SIML,DBF_INLINK) {
+		prompt("Sim Mode Location")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(SIMM,DBF_MENU) {
+		prompt("Simulation Mode")
+		menu(menuYesNo)
+		interest(1)
+	}
+	field(SIMS,DBF_MENU) {
+		prompt("Sim mode Alarm Svrty")
+		promptgroup(GUI_INPUTS)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(IVOA,DBF_MENU) {
+		prompt("INVALID outpt action")
+		promptgroup(GUI_OUTPUT)
+		menu(menuIvoa)
+		interest(2)
+	}
+	field(IVOV,DBF_USHORT) {
+		prompt("INVALID output value")
+		promptgroup(GUI_OUTPUT)
+		interest(2)
+	}
+}
+recordtype(calc) {
+	field(NAME,DBF_STRING) {
+		prompt("Record Name")
+		special(SPC_NOMOD)
+		size(61)
+	}
+	field(DESC,DBF_STRING) {
+		prompt("Descriptor")
+		promptgroup(GUI_COMMON)
+		size(41)
+	}
+	field(ASG,DBF_STRING) {
+		prompt("Access Security Group")
+		promptgroup(GUI_COMMON)
+		special(SPC_AS)
+		size(29)
+	}
+	field(SCAN,DBF_MENU) {
+		prompt("Scan Mechanism")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuScan)
+		interest(1)
+	}
+	field(PINI,DBF_MENU) {
+		prompt("Process at iocInit")
+		promptgroup(GUI_SCAN)
+		menu(menuPini)
+		interest(1)
+	}
+	field(PHAS,DBF_SHORT) {
+		prompt("Scan Phase")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(EVNT,DBF_SHORT) {
+		prompt("Event Number")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(TSE,DBF_SHORT) {
+		prompt("Time Stamp Event")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(TSEL,DBF_INLINK) {
+		prompt("Time Stamp Link")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(DTYP,DBF_DEVICE) {
+		prompt("Device Type")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(DISV,DBF_SHORT) {
+		prompt("Disable Value")
+		initial("1")
+		promptgroup(GUI_SCAN)
+	}
+	field(DISA,DBF_SHORT) {
+		prompt("Disable")
+	}
+	field(SDIS,DBF_INLINK) {
+		prompt("Scanning Disable")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(MLOK,DBF_NOACCESS) {
+		prompt("Monitor lock")
+		special(SPC_NOMOD)
+		extra("epicsMutexId	mlok")
+		interest(4)
+	}
+	field(MLIS,DBF_NOACCESS) {
+		prompt("Monitor List")
+		special(SPC_NOMOD)
+		extra("ELLLIST		mlis")
+		interest(4)
+	}
+	field(DISP,DBF_UCHAR) {
+		prompt("Disable putField")
+	}
+	field(PROC,DBF_UCHAR) {
+		prompt("Force Processing")
+		pp(TRUE)
+		interest(3)
+	}
+	field(STAT,DBF_MENU) {
+		prompt("Alarm Status")
+		initial("UDF")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+	}
+	field(SEVR,DBF_MENU) {
+		prompt("Alarm Severity")
+		initial("INVALID")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+	}
+	field(NSTA,DBF_MENU) {
+		prompt("New Alarm Status")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+		interest(2)
+	}
+	field(NSEV,DBF_MENU) {
+		prompt("New Alarm Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKS,DBF_MENU) {
+		prompt("Alarm Ack Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKT,DBF_MENU) {
+		prompt("Alarm Ack Transient")
+		initial("YES")
+		promptgroup(GUI_ALARMS)
+		special(SPC_NOMOD)
+		menu(menuYesNo)
+		interest(2)
+	}
+	field(DISS,DBF_MENU) {
+		prompt("Disable Alarm Sevrty")
+		promptgroup(GUI_SCAN)
+		menu(menuAlarmSevr)
+		interest(1)
+	}
+	field(LCNT,DBF_UCHAR) {
+		prompt("Lock Count")
+		special(SPC_NOMOD)
+		interest(2)
+	}
+	field(PACT,DBF_UCHAR) {
+		prompt("Record active")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(PUTF,DBF_UCHAR) {
+		prompt("dbPutField process")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(RPRO,DBF_UCHAR) {
+		prompt("Reprocess ")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(ASP,DBF_NOACCESS) {
+		prompt("Access Security Pvt")
+		special(SPC_NOMOD)
+		extra("struct asgMember *asp")
+		interest(4)
+	}
+	field(PPN,DBF_NOACCESS) {
+		prompt("addr of PUTNOTIFY")
+		special(SPC_NOMOD)
+		extra("struct putNotify *ppn")
+		interest(4)
+	}
+	field(PPNR,DBF_NOACCESS) {
+		prompt("pputNotifyRecord")
+		special(SPC_NOMOD)
+		extra("struct putNotifyRecord *ppnr")
+		interest(4)
+	}
+	field(SPVT,DBF_NOACCESS) {
+		prompt("Scan Private")
+		special(SPC_NOMOD)
+		extra("struct scan_element *spvt")
+		interest(4)
+	}
+	field(RSET,DBF_NOACCESS) {
+		prompt("Address of RSET")
+		special(SPC_NOMOD)
+		extra("struct rset	*rset")
+		interest(4)
+	}
+	field(DSET,DBF_NOACCESS) {
+		prompt("DSET address")
+		special(SPC_NOMOD)
+		extra("struct dset	*dset")
+		interest(4)
+	}
+	field(DPVT,DBF_NOACCESS) {
+		prompt("Device Private")
+		special(SPC_NOMOD)
+		extra("void		*dpvt")
+		interest(4)
+	}
+	field(RDES,DBF_NOACCESS) {
+		prompt("Address of dbRecordType")
+		special(SPC_NOMOD)
+		extra("struct dbRecordType *rdes")
+		interest(4)
+	}
+	field(LSET,DBF_NOACCESS) {
+		prompt("Lock Set")
+		special(SPC_NOMOD)
+		extra("struct lockRecord *lset")
+		interest(4)
+	}
+	field(PRIO,DBF_MENU) {
+		prompt("Scheduling Priority")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuPriority)
+		interest(1)
+	}
+	field(TPRO,DBF_UCHAR) {
+		prompt("Trace Processing")
+	}
+	field(BKPT,DBF_NOACCESS) {
+		prompt("Break Point")
+		special(SPC_NOMOD)
+		extra("char bkpt")
+		interest(1)
+	}
+	field(UDF,DBF_UCHAR) {
+		prompt("Undefined")
+		initial("1")
+		promptgroup(GUI_COMMON)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TIME,DBF_NOACCESS) {
+		prompt("Time")
+		special(SPC_NOMOD)
+		extra("epicsTimeStamp	time")
+		interest(2)
+	}
+	field(FLNK,DBF_FWDLINK) {
+		prompt("Forward Process Link")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(VAL,DBF_DOUBLE) {
+		prompt("Result")
+		asl(ASL0)
+	}
+	field(CALC,DBF_STRING) {
+		prompt("Calculation")
+		initial("0")
+		promptgroup(GUI_CALC)
+		special(103)
+		size(40)
+		pp(TRUE)
+	}
+	field(INPA,DBF_INLINK) {
+		prompt("Input A")
+		promptgroup(GUI_CALC)
+		interest(1)
+	}
+	field(INPB,DBF_INLINK) {
+		prompt("Input B")
+		promptgroup(GUI_CALC)
+		interest(1)
+	}
+	field(INPC,DBF_INLINK) {
+		prompt("Input C")
+		promptgroup(GUI_CALC)
+		interest(1)
+	}
+	field(INPD,DBF_INLINK) {
+		prompt("Input D")
+		promptgroup(GUI_CALC)
+		interest(1)
+	}
+	field(INPE,DBF_INLINK) {
+		prompt("Input E")
+		promptgroup(GUI_CALC)
+		interest(1)
+	}
+	field(INPF,DBF_INLINK) {
+		prompt("Input F")
+		promptgroup(GUI_CALC)
+		interest(1)
+	}
+	field(INPG,DBF_INLINK) {
+		prompt("Input G")
+		promptgroup(GUI_CALC)
+		interest(1)
+	}
+	field(INPH,DBF_INLINK) {
+		prompt("Input H")
+		promptgroup(GUI_CALC)
+		interest(1)
+	}
+	field(INPI,DBF_INLINK) {
+		prompt("Input I")
+		promptgroup(GUI_CALC)
+		interest(1)
+	}
+	field(INPJ,DBF_INLINK) {
+		prompt("Input J")
+		promptgroup(GUI_CALC)
+		interest(1)
+	}
+	field(INPK,DBF_INLINK) {
+		prompt("Input K")
+		promptgroup(GUI_CALC)
+		interest(1)
+	}
+	field(INPL,DBF_INLINK) {
+		prompt("Input L")
+		promptgroup(GUI_CALC)
+		interest(1)
+	}
+	field(EGU,DBF_STRING) {
+		prompt("Units Name")
+		promptgroup(GUI_DISPLAY)
+		size(16)
+		interest(1)
+	}
+	field(PREC,DBF_SHORT) {
+		prompt("Display Precision")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(HOPR,DBF_DOUBLE) {
+		prompt("High Operating Rng")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(LOPR,DBF_DOUBLE) {
+		prompt("Low Operating Range")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(HIHI,DBF_DOUBLE) {
+		prompt("Hihi Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LOLO,DBF_DOUBLE) {
+		prompt("Lolo Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HIGH,DBF_DOUBLE) {
+		prompt("High Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LOW,DBF_DOUBLE) {
+		prompt("Low Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HHSV,DBF_MENU) {
+		prompt("Hihi Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LLSV,DBF_MENU) {
+		prompt("Lolo Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HSV,DBF_MENU) {
+		prompt("High Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LSV,DBF_MENU) {
+		prompt("Low Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HYST,DBF_DOUBLE) {
+		prompt("Alarm Deadband")
+		promptgroup(GUI_ALARMS)
+		interest(1)
+	}
+	field(ADEL,DBF_DOUBLE) {
+		prompt("Archive Deadband")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(MDEL,DBF_DOUBLE) {
+		prompt("Monitor Deadband")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(A,DBF_DOUBLE) {
+		prompt("Value of Input A")
+		pp(TRUE)
+	}
+	field(B,DBF_DOUBLE) {
+		prompt("Value of Input B")
+		pp(TRUE)
+	}
+	field(C,DBF_DOUBLE) {
+		prompt("Value of Input C")
+		pp(TRUE)
+	}
+	field(D,DBF_DOUBLE) {
+		prompt("Value of Input D")
+		pp(TRUE)
+	}
+	field(E,DBF_DOUBLE) {
+		prompt("Value of Input E")
+		pp(TRUE)
+	}
+	field(F,DBF_DOUBLE) {
+		prompt("Value of Input F")
+		pp(TRUE)
+	}
+	field(G,DBF_DOUBLE) {
+		prompt("Value of Input G")
+		pp(TRUE)
+	}
+	field(H,DBF_DOUBLE) {
+		prompt("Value of Input H")
+		pp(TRUE)
+	}
+	field(I,DBF_DOUBLE) {
+		prompt("Value of Input I")
+		pp(TRUE)
+	}
+	field(J,DBF_DOUBLE) {
+		prompt("Value of Input J")
+		pp(TRUE)
+	}
+	field(K,DBF_DOUBLE) {
+		prompt("Value of Input K")
+		pp(TRUE)
+	}
+	field(L,DBF_DOUBLE) {
+		prompt("Value of Input L")
+		pp(TRUE)
+	}
+	field(LA,DBF_DOUBLE) {
+		prompt("Prev Value of A")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LB,DBF_DOUBLE) {
+		prompt("Prev Value of B")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LC,DBF_DOUBLE) {
+		prompt("Prev Value of C")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LD,DBF_DOUBLE) {
+		prompt("Prev Value of D")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LE,DBF_DOUBLE) {
+		prompt("Prev Value of E")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LF,DBF_DOUBLE) {
+		prompt("Prev Value of F")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LG,DBF_DOUBLE) {
+		prompt("Prev Value of G")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LH,DBF_DOUBLE) {
+		prompt("Prev Value of H")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LI,DBF_DOUBLE) {
+		prompt("Prev Value of I")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LJ,DBF_DOUBLE) {
+		prompt("Prev Value of J")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LK,DBF_DOUBLE) {
+		prompt("Prev Value of K")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LL,DBF_DOUBLE) {
+		prompt("Prev Value of L")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LALM,DBF_DOUBLE) {
+		prompt("Last Value Alarmed")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(ALST,DBF_DOUBLE) {
+		prompt("Last Value Archived")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(MLST,DBF_DOUBLE) {
+		prompt("Last Val Monitored")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(RPCL,DBF_NOACCESS) {
+		prompt("Reverse Polish Calc")
+		special(SPC_NOMOD)
+		extra("char	rpcl[INFIX_TO_POSTFIX_SIZE(40)]")
+		interest(4)
+	}
+}
+recordtype(calcout) {
+	field(NAME,DBF_STRING) {
+		prompt("Record Name")
+		special(SPC_NOMOD)
+		size(61)
+	}
+	field(DESC,DBF_STRING) {
+		prompt("Descriptor")
+		promptgroup(GUI_COMMON)
+		size(41)
+	}
+	field(ASG,DBF_STRING) {
+		prompt("Access Security Group")
+		promptgroup(GUI_COMMON)
+		special(SPC_AS)
+		size(29)
+	}
+	field(SCAN,DBF_MENU) {
+		prompt("Scan Mechanism")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuScan)
+		interest(1)
+	}
+	field(PINI,DBF_MENU) {
+		prompt("Process at iocInit")
+		promptgroup(GUI_SCAN)
+		menu(menuPini)
+		interest(1)
+	}
+	field(PHAS,DBF_SHORT) {
+		prompt("Scan Phase")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(EVNT,DBF_SHORT) {
+		prompt("Event Number")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(TSE,DBF_SHORT) {
+		prompt("Time Stamp Event")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(TSEL,DBF_INLINK) {
+		prompt("Time Stamp Link")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(DTYP,DBF_DEVICE) {
+		prompt("Device Type")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(DISV,DBF_SHORT) {
+		prompt("Disable Value")
+		initial("1")
+		promptgroup(GUI_SCAN)
+	}
+	field(DISA,DBF_SHORT) {
+		prompt("Disable")
+	}
+	field(SDIS,DBF_INLINK) {
+		prompt("Scanning Disable")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(MLOK,DBF_NOACCESS) {
+		prompt("Monitor lock")
+		special(SPC_NOMOD)
+		extra("epicsMutexId	mlok")
+		interest(4)
+	}
+	field(MLIS,DBF_NOACCESS) {
+		prompt("Monitor List")
+		special(SPC_NOMOD)
+		extra("ELLLIST		mlis")
+		interest(4)
+	}
+	field(DISP,DBF_UCHAR) {
+		prompt("Disable putField")
+	}
+	field(PROC,DBF_UCHAR) {
+		prompt("Force Processing")
+		pp(TRUE)
+		interest(3)
+	}
+	field(STAT,DBF_MENU) {
+		prompt("Alarm Status")
+		initial("UDF")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+	}
+	field(SEVR,DBF_MENU) {
+		prompt("Alarm Severity")
+		initial("INVALID")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+	}
+	field(NSTA,DBF_MENU) {
+		prompt("New Alarm Status")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+		interest(2)
+	}
+	field(NSEV,DBF_MENU) {
+		prompt("New Alarm Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKS,DBF_MENU) {
+		prompt("Alarm Ack Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKT,DBF_MENU) {
+		prompt("Alarm Ack Transient")
+		initial("YES")
+		promptgroup(GUI_ALARMS)
+		special(SPC_NOMOD)
+		menu(menuYesNo)
+		interest(2)
+	}
+	field(DISS,DBF_MENU) {
+		prompt("Disable Alarm Sevrty")
+		promptgroup(GUI_SCAN)
+		menu(menuAlarmSevr)
+		interest(1)
+	}
+	field(LCNT,DBF_UCHAR) {
+		prompt("Lock Count")
+		special(SPC_NOMOD)
+		interest(2)
+	}
+	field(PACT,DBF_UCHAR) {
+		prompt("Record active")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(PUTF,DBF_UCHAR) {
+		prompt("dbPutField process")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(RPRO,DBF_UCHAR) {
+		prompt("Reprocess ")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(ASP,DBF_NOACCESS) {
+		prompt("Access Security Pvt")
+		special(SPC_NOMOD)
+		extra("struct asgMember *asp")
+		interest(4)
+	}
+	field(PPN,DBF_NOACCESS) {
+		prompt("addr of PUTNOTIFY")
+		special(SPC_NOMOD)
+		extra("struct putNotify *ppn")
+		interest(4)
+	}
+	field(PPNR,DBF_NOACCESS) {
+		prompt("pputNotifyRecord")
+		special(SPC_NOMOD)
+		extra("struct putNotifyRecord *ppnr")
+		interest(4)
+	}
+	field(SPVT,DBF_NOACCESS) {
+		prompt("Scan Private")
+		special(SPC_NOMOD)
+		extra("struct scan_element *spvt")
+		interest(4)
+	}
+	field(RSET,DBF_NOACCESS) {
+		prompt("Address of RSET")
+		special(SPC_NOMOD)
+		extra("struct rset	*rset")
+		interest(4)
+	}
+	field(DSET,DBF_NOACCESS) {
+		prompt("DSET address")
+		special(SPC_NOMOD)
+		extra("struct dset	*dset")
+		interest(4)
+	}
+	field(DPVT,DBF_NOACCESS) {
+		prompt("Device Private")
+		special(SPC_NOMOD)
+		extra("void		*dpvt")
+		interest(4)
+	}
+	field(RDES,DBF_NOACCESS) {
+		prompt("Address of dbRecordType")
+		special(SPC_NOMOD)
+		extra("struct dbRecordType *rdes")
+		interest(4)
+	}
+	field(LSET,DBF_NOACCESS) {
+		prompt("Lock Set")
+		special(SPC_NOMOD)
+		extra("struct lockRecord *lset")
+		interest(4)
+	}
+	field(PRIO,DBF_MENU) {
+		prompt("Scheduling Priority")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuPriority)
+		interest(1)
+	}
+	field(TPRO,DBF_UCHAR) {
+		prompt("Trace Processing")
+	}
+	field(BKPT,DBF_NOACCESS) {
+		prompt("Break Point")
+		special(SPC_NOMOD)
+		extra("char bkpt")
+		interest(1)
+	}
+	field(UDF,DBF_UCHAR) {
+		prompt("Undefined")
+		initial("1")
+		promptgroup(GUI_COMMON)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TIME,DBF_NOACCESS) {
+		prompt("Time")
+		special(SPC_NOMOD)
+		extra("epicsTimeStamp	time")
+		interest(2)
+	}
+	field(FLNK,DBF_FWDLINK) {
+		prompt("Forward Process Link")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(RPVT,DBF_NOACCESS) {
+		prompt("Record Private")
+		special(SPC_NOMOD)
+		extra("struct rpvtStruct *rpvt")
+		interest(4)
+	}
+	field(VAL,DBF_DOUBLE) {
+		prompt("Result")
+		promptgroup(GUI_OUTPUT)
+		asl(ASL0)
+	}
+	field(PVAL,DBF_DOUBLE) {
+		prompt("Previous Value")
+	}
+	field(CALC,DBF_STRING) {
+		prompt("Calculation")
+		initial("0")
+		promptgroup(GUI_CALC)
+		special(103)
+		size(40)
+		pp(TRUE)
+	}
+	field(CLCV,DBF_LONG) {
+		prompt("CALC Valid")
+		interest(1)
+	}
+	field(INPA,DBF_INLINK) {
+		prompt("Input A")
+		promptgroup(GUI_CALC)
+		special(100)
+		interest(1)
+	}
+	field(INPB,DBF_INLINK) {
+		prompt("Input B")
+		promptgroup(GUI_CALC)
+		special(100)
+		interest(1)
+	}
+	field(INPC,DBF_INLINK) {
+		prompt("Input C")
+		promptgroup(GUI_CALC)
+		special(100)
+		interest(1)
+	}
+	field(INPD,DBF_INLINK) {
+		prompt("Input D")
+		promptgroup(GUI_CALC)
+		special(100)
+		interest(1)
+	}
+	field(INPE,DBF_INLINK) {
+		prompt("Input E")
+		promptgroup(GUI_CALC)
+		special(100)
+		interest(1)
+	}
+	field(INPF,DBF_INLINK) {
+		prompt("Input F")
+		promptgroup(GUI_CALC)
+		special(100)
+		interest(1)
+	}
+	field(INPG,DBF_INLINK) {
+		prompt("Input G")
+		promptgroup(GUI_CALC)
+		special(100)
+		interest(1)
+	}
+	field(INPH,DBF_INLINK) {
+		prompt("Input H")
+		promptgroup(GUI_CALC)
+		special(100)
+		interest(1)
+	}
+	field(INPI,DBF_INLINK) {
+		prompt("Input I")
+		promptgroup(GUI_CALC)
+		special(100)
+		interest(1)
+	}
+	field(INPJ,DBF_INLINK) {
+		prompt("Input J")
+		promptgroup(GUI_CALC)
+		special(100)
+		interest(1)
+	}
+	field(INPK,DBF_INLINK) {
+		prompt("Input K")
+		promptgroup(GUI_CALC)
+		special(100)
+		interest(1)
+	}
+	field(INPL,DBF_INLINK) {
+		prompt("Input L")
+		promptgroup(GUI_CALC)
+		special(100)
+		interest(1)
+	}
+	field(OUT,DBF_OUTLINK) {
+		prompt("Output Specification")
+		promptgroup(GUI_OUTPUT)
+		special(100)
+		interest(1)
+	}
+	field(INAV,DBF_MENU) {
+		prompt("INPA PV Status")
+		initial("1")
+		special(SPC_NOMOD)
+		menu(calcoutINAV)
+		interest(1)
+	}
+	field(INBV,DBF_MENU) {
+		prompt("INPB PV Status")
+		initial("1")
+		special(SPC_NOMOD)
+		menu(calcoutINAV)
+		interest(1)
+	}
+	field(INCV,DBF_MENU) {
+		prompt("INPC PV Status")
+		initial("1")
+		special(SPC_NOMOD)
+		menu(calcoutINAV)
+		interest(1)
+	}
+	field(INDV,DBF_MENU) {
+		prompt("INPD PV Status")
+		initial("1")
+		special(SPC_NOMOD)
+		menu(calcoutINAV)
+		interest(1)
+	}
+	field(INEV,DBF_MENU) {
+		prompt("INPE PV Status")
+		initial("1")
+		special(SPC_NOMOD)
+		menu(calcoutINAV)
+		interest(1)
+	}
+	field(INFV,DBF_MENU) {
+		prompt("INPF PV Status")
+		initial("1")
+		special(SPC_NOMOD)
+		menu(calcoutINAV)
+		interest(1)
+	}
+	field(INGV,DBF_MENU) {
+		prompt("INPG PV Status")
+		initial("1")
+		special(SPC_NOMOD)
+		menu(calcoutINAV)
+		interest(1)
+	}
+	field(INHV,DBF_MENU) {
+		prompt("INPH PV Status")
+		initial("1")
+		special(SPC_NOMOD)
+		menu(calcoutINAV)
+		interest(1)
+	}
+	field(INIV,DBF_MENU) {
+		prompt("INPI PV Status")
+		initial("1")
+		special(SPC_NOMOD)
+		menu(calcoutINAV)
+		interest(1)
+	}
+	field(INJV,DBF_MENU) {
+		prompt("INPJ PV Status")
+		initial("1")
+		special(SPC_NOMOD)
+		menu(calcoutINAV)
+		interest(1)
+	}
+	field(INKV,DBF_MENU) {
+		prompt("INPK PV Status")
+		initial("1")
+		special(SPC_NOMOD)
+		menu(calcoutINAV)
+		interest(1)
+	}
+	field(INLV,DBF_MENU) {
+		prompt("INPL PV Status")
+		initial("1")
+		special(SPC_NOMOD)
+		menu(calcoutINAV)
+		interest(1)
+	}
+	field(OUTV,DBF_MENU) {
+		prompt("OUT PV Status")
+		special(SPC_NOMOD)
+		menu(calcoutINAV)
+		interest(1)
+	}
+	field(OOPT,DBF_MENU) {
+		prompt("Output Execute Opt")
+		promptgroup(GUI_CALC)
+		menu(calcoutOOPT)
+		interest(1)
+	}
+	field(ODLY,DBF_DOUBLE) {
+		prompt("Output Execute Delay")
+		promptgroup(GUI_ALARMS)
+		interest(1)
+		asl(ASL0)
+	}
+	field(DLYA,DBF_USHORT) {
+		prompt("Output Delay Active")
+		special(SPC_NOMOD)
+		asl(ASL0)
+	}
+	field(DOPT,DBF_MENU) {
+		prompt("Output Data Opt")
+		promptgroup(GUI_CALC)
+		menu(calcoutDOPT)
+		interest(1)
+	}
+	field(OCAL,DBF_STRING) {
+		prompt("Output Calculation")
+		initial("0")
+		promptgroup(GUI_CALC)
+		special(103)
+		size(40)
+		pp(TRUE)
+	}
+	field(OCLV,DBF_LONG) {
+		prompt("OCAL Valid")
+		interest(1)
+	}
+	field(OEVT,DBF_USHORT) {
+		prompt("Event To Issue")
+		promptgroup(GUI_CLOCK)
+		asl(ASL0)
+	}
+	field(IVOA,DBF_MENU) {
+		prompt("INVALID output action")
+		promptgroup(GUI_OUTPUT)
+		menu(menuIvoa)
+		interest(2)
+	}
+	field(IVOV,DBF_DOUBLE) {
+		prompt("INVALID output value")
+		promptgroup(GUI_OUTPUT)
+		interest(2)
+	}
+	field(EGU,DBF_STRING) {
+		prompt("Units Name")
+		promptgroup(GUI_DISPLAY)
+		size(16)
+		interest(1)
+	}
+	field(PREC,DBF_SHORT) {
+		prompt("Display Precision")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(HOPR,DBF_DOUBLE) {
+		prompt("High Operating Rng")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(LOPR,DBF_DOUBLE) {
+		prompt("Low Operating Range")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(HIHI,DBF_DOUBLE) {
+		prompt("Hihi Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LOLO,DBF_DOUBLE) {
+		prompt("Lolo Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HIGH,DBF_DOUBLE) {
+		prompt("High Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LOW,DBF_DOUBLE) {
+		prompt("Low Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HHSV,DBF_MENU) {
+		prompt("Hihi Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LLSV,DBF_MENU) {
+		prompt("Lolo Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HSV,DBF_MENU) {
+		prompt("High Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LSV,DBF_MENU) {
+		prompt("Low Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HYST,DBF_DOUBLE) {
+		prompt("Alarm Deadband")
+		promptgroup(GUI_ALARMS)
+		interest(1)
+	}
+	field(ADEL,DBF_DOUBLE) {
+		prompt("Archive Deadband")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(MDEL,DBF_DOUBLE) {
+		prompt("Monitor Deadband")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(A,DBF_DOUBLE) {
+		prompt("Value of Input A")
+		pp(TRUE)
+	}
+	field(B,DBF_DOUBLE) {
+		prompt("Value of Input B")
+		pp(TRUE)
+	}
+	field(C,DBF_DOUBLE) {
+		prompt("Value of Input C")
+		pp(TRUE)
+	}
+	field(D,DBF_DOUBLE) {
+		prompt("Value of Input D")
+		pp(TRUE)
+	}
+	field(E,DBF_DOUBLE) {
+		prompt("Value of Input E")
+		pp(TRUE)
+	}
+	field(F,DBF_DOUBLE) {
+		prompt("Value of Input F")
+		pp(TRUE)
+	}
+	field(G,DBF_DOUBLE) {
+		prompt("Value of Input G")
+		pp(TRUE)
+	}
+	field(H,DBF_DOUBLE) {
+		prompt("Value of Input H")
+		pp(TRUE)
+	}
+	field(I,DBF_DOUBLE) {
+		prompt("Value of Input I")
+		pp(TRUE)
+	}
+	field(J,DBF_DOUBLE) {
+		prompt("Value of Input J")
+		pp(TRUE)
+	}
+	field(K,DBF_DOUBLE) {
+		prompt("Value of Input K")
+		pp(TRUE)
+	}
+	field(L,DBF_DOUBLE) {
+		prompt("Value of Input L")
+		pp(TRUE)
+	}
+	field(OVAL,DBF_DOUBLE) {
+		prompt("Output Value")
+		asl(ASL0)
+	}
+	field(LA,DBF_DOUBLE) {
+		prompt("Prev Value of A")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LB,DBF_DOUBLE) {
+		prompt("Prev Value of B")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LC,DBF_DOUBLE) {
+		prompt("Prev Value of C")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LD,DBF_DOUBLE) {
+		prompt("Prev Value of D")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LE,DBF_DOUBLE) {
+		prompt("Prev Value of E")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LF,DBF_DOUBLE) {
+		prompt("Prev Value of F")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LG,DBF_DOUBLE) {
+		prompt("Prev Value of G")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LH,DBF_DOUBLE) {
+		prompt("Prev Value of H")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LI,DBF_DOUBLE) {
+		prompt("Prev Value of I")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LJ,DBF_DOUBLE) {
+		prompt("Prev Value of J")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LK,DBF_DOUBLE) {
+		prompt("Prev Value of K")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LL,DBF_DOUBLE) {
+		prompt("Prev Value of L")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(POVL,DBF_DOUBLE) {
+		prompt("Prev Value of OVAL")
+		asl(ASL0)
+	}
+	field(LALM,DBF_DOUBLE) {
+		prompt("Last Value Alarmed")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(ALST,DBF_DOUBLE) {
+		prompt("Last Value Archived")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(MLST,DBF_DOUBLE) {
+		prompt("Last Val Monitored")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(RPCL,DBF_NOACCESS) {
+		prompt("Reverse Polish Calc")
+		special(SPC_NOMOD)
+		extra("char	rpcl[INFIX_TO_POSTFIX_SIZE(40)]")
+		interest(4)
+	}
+	field(ORPC,DBF_NOACCESS) {
+		prompt("Reverse Polish OCalc")
+		special(SPC_NOMOD)
+		extra("char	orpc[INFIX_TO_POSTFIX_SIZE(40)]")
+		interest(4)
+	}
+}
+recordtype(compress) {
+	field(NAME,DBF_STRING) {
+		prompt("Record Name")
+		special(SPC_NOMOD)
+		size(61)
+	}
+	field(DESC,DBF_STRING) {
+		prompt("Descriptor")
+		promptgroup(GUI_COMMON)
+		size(41)
+	}
+	field(ASG,DBF_STRING) {
+		prompt("Access Security Group")
+		promptgroup(GUI_COMMON)
+		special(SPC_AS)
+		size(29)
+	}
+	field(SCAN,DBF_MENU) {
+		prompt("Scan Mechanism")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuScan)
+		interest(1)
+	}
+	field(PINI,DBF_MENU) {
+		prompt("Process at iocInit")
+		promptgroup(GUI_SCAN)
+		menu(menuPini)
+		interest(1)
+	}
+	field(PHAS,DBF_SHORT) {
+		prompt("Scan Phase")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(EVNT,DBF_SHORT) {
+		prompt("Event Number")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(TSE,DBF_SHORT) {
+		prompt("Time Stamp Event")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(TSEL,DBF_INLINK) {
+		prompt("Time Stamp Link")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(DTYP,DBF_DEVICE) {
+		prompt("Device Type")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(DISV,DBF_SHORT) {
+		prompt("Disable Value")
+		initial("1")
+		promptgroup(GUI_SCAN)
+	}
+	field(DISA,DBF_SHORT) {
+		prompt("Disable")
+	}
+	field(SDIS,DBF_INLINK) {
+		prompt("Scanning Disable")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(MLOK,DBF_NOACCESS) {
+		prompt("Monitor lock")
+		special(SPC_NOMOD)
+		extra("epicsMutexId	mlok")
+		interest(4)
+	}
+	field(MLIS,DBF_NOACCESS) {
+		prompt("Monitor List")
+		special(SPC_NOMOD)
+		extra("ELLLIST		mlis")
+		interest(4)
+	}
+	field(DISP,DBF_UCHAR) {
+		prompt("Disable putField")
+	}
+	field(PROC,DBF_UCHAR) {
+		prompt("Force Processing")
+		pp(TRUE)
+		interest(3)
+	}
+	field(STAT,DBF_MENU) {
+		prompt("Alarm Status")
+		initial("UDF")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+	}
+	field(SEVR,DBF_MENU) {
+		prompt("Alarm Severity")
+		initial("INVALID")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+	}
+	field(NSTA,DBF_MENU) {
+		prompt("New Alarm Status")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+		interest(2)
+	}
+	field(NSEV,DBF_MENU) {
+		prompt("New Alarm Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKS,DBF_MENU) {
+		prompt("Alarm Ack Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKT,DBF_MENU) {
+		prompt("Alarm Ack Transient")
+		initial("YES")
+		promptgroup(GUI_ALARMS)
+		special(SPC_NOMOD)
+		menu(menuYesNo)
+		interest(2)
+	}
+	field(DISS,DBF_MENU) {
+		prompt("Disable Alarm Sevrty")
+		promptgroup(GUI_SCAN)
+		menu(menuAlarmSevr)
+		interest(1)
+	}
+	field(LCNT,DBF_UCHAR) {
+		prompt("Lock Count")
+		special(SPC_NOMOD)
+		interest(2)
+	}
+	field(PACT,DBF_UCHAR) {
+		prompt("Record active")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(PUTF,DBF_UCHAR) {
+		prompt("dbPutField process")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(RPRO,DBF_UCHAR) {
+		prompt("Reprocess ")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(ASP,DBF_NOACCESS) {
+		prompt("Access Security Pvt")
+		special(SPC_NOMOD)
+		extra("struct asgMember *asp")
+		interest(4)
+	}
+	field(PPN,DBF_NOACCESS) {
+		prompt("addr of PUTNOTIFY")
+		special(SPC_NOMOD)
+		extra("struct putNotify *ppn")
+		interest(4)
+	}
+	field(PPNR,DBF_NOACCESS) {
+		prompt("pputNotifyRecord")
+		special(SPC_NOMOD)
+		extra("struct putNotifyRecord *ppnr")
+		interest(4)
+	}
+	field(SPVT,DBF_NOACCESS) {
+		prompt("Scan Private")
+		special(SPC_NOMOD)
+		extra("struct scan_element *spvt")
+		interest(4)
+	}
+	field(RSET,DBF_NOACCESS) {
+		prompt("Address of RSET")
+		special(SPC_NOMOD)
+		extra("struct rset	*rset")
+		interest(4)
+	}
+	field(DSET,DBF_NOACCESS) {
+		prompt("DSET address")
+		special(SPC_NOMOD)
+		extra("struct dset	*dset")
+		interest(4)
+	}
+	field(DPVT,DBF_NOACCESS) {
+		prompt("Device Private")
+		special(SPC_NOMOD)
+		extra("void		*dpvt")
+		interest(4)
+	}
+	field(RDES,DBF_NOACCESS) {
+		prompt("Address of dbRecordType")
+		special(SPC_NOMOD)
+		extra("struct dbRecordType *rdes")
+		interest(4)
+	}
+	field(LSET,DBF_NOACCESS) {
+		prompt("Lock Set")
+		special(SPC_NOMOD)
+		extra("struct lockRecord *lset")
+		interest(4)
+	}
+	field(PRIO,DBF_MENU) {
+		prompt("Scheduling Priority")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuPriority)
+		interest(1)
+	}
+	field(TPRO,DBF_UCHAR) {
+		prompt("Trace Processing")
+	}
+	field(BKPT,DBF_NOACCESS) {
+		prompt("Break Point")
+		special(SPC_NOMOD)
+		extra("char bkpt")
+		interest(1)
+	}
+	field(UDF,DBF_UCHAR) {
+		prompt("Undefined")
+		initial("1")
+		promptgroup(GUI_COMMON)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TIME,DBF_NOACCESS) {
+		prompt("Time")
+		special(SPC_NOMOD)
+		extra("epicsTimeStamp	time")
+		interest(2)
+	}
+	field(FLNK,DBF_FWDLINK) {
+		prompt("Forward Process Link")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(VAL,DBF_NOACCESS) {
+		prompt("Value")
+		special(SPC_DBADDR)
+		extra("void *		val")
+		pp(TRUE)
+		asl(ASL0)
+	}
+	field(INP,DBF_INLINK) {
+		prompt("Input Specification")
+		promptgroup(GUI_COMPRESS)
+		interest(1)
+	}
+	field(RES,DBF_SHORT) {
+		prompt("Reset")
+		special(101)
+		interest(3)
+		asl(ASL0)
+	}
+	field(ALG,DBF_MENU) {
+		prompt("Compression Algorithm")
+		promptgroup(GUI_ALARMS)
+		special(101)
+		menu(compressALG)
+		interest(1)
+	}
+	field(NSAM,DBF_ULONG) {
+		prompt("Number of Values")
+		initial("1")
+		promptgroup(GUI_COMPRESS)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(N,DBF_ULONG) {
+		prompt("N to 1 Compression")
+		initial("1")
+		promptgroup(GUI_COMPRESS)
+		special(101)
+		interest(1)
+	}
+	field(IHIL,DBF_DOUBLE) {
+		prompt("Init High Interest Lim")
+		promptgroup(GUI_COMPRESS)
+		interest(1)
+	}
+	field(ILIL,DBF_DOUBLE) {
+		prompt("Init Low Interest Lim")
+		promptgroup(GUI_COMPRESS)
+		interest(1)
+	}
+	field(HOPR,DBF_DOUBLE) {
+		prompt("High Operating Range")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(LOPR,DBF_DOUBLE) {
+		prompt("Low Operating Range")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(PREC,DBF_SHORT) {
+		prompt("Display Precision")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(EGU,DBF_STRING) {
+		prompt("EngineeringUnits")
+		promptgroup(GUI_DISPLAY)
+		size(16)
+		interest(1)
+	}
+	field(OFF,DBF_ULONG) {
+		prompt("Offset")
+		special(SPC_NOMOD)
+	}
+	field(NUSE,DBF_ULONG) {
+		prompt("Number Used")
+		special(SPC_NOMOD)
+	}
+	field(BPTR,DBF_NOACCESS) {
+		prompt("Buffer Pointer")
+		special(SPC_NOMOD)
+		extra("double		*bptr")
+		interest(4)
+	}
+	field(SPTR,DBF_NOACCESS) {
+		prompt("Summing Buffer Ptr")
+		special(SPC_NOMOD)
+		extra("double		*sptr")
+		interest(4)
+	}
+	field(WPTR,DBF_NOACCESS) {
+		prompt("Working Buffer Ptr")
+		special(SPC_NOMOD)
+		extra("double		*wptr")
+		interest(4)
+	}
+	field(INPN,DBF_LONG) {
+		prompt("Number of elements in Working Buffer")
+		special(SPC_NOMOD)
+		interest(4)
+	}
+	field(CVB,DBF_DOUBLE) {
+		prompt("Compress Value Buffer")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(INX,DBF_ULONG) {
+		prompt("Compressed Array Inx")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+}
+recordtype(dfanout) {
+	field(NAME,DBF_STRING) {
+		prompt("Record Name")
+		special(SPC_NOMOD)
+		size(61)
+	}
+	field(DESC,DBF_STRING) {
+		prompt("Descriptor")
+		promptgroup(GUI_COMMON)
+		size(41)
+	}
+	field(ASG,DBF_STRING) {
+		prompt("Access Security Group")
+		promptgroup(GUI_COMMON)
+		special(SPC_AS)
+		size(29)
+	}
+	field(SCAN,DBF_MENU) {
+		prompt("Scan Mechanism")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuScan)
+		interest(1)
+	}
+	field(PINI,DBF_MENU) {
+		prompt("Process at iocInit")
+		promptgroup(GUI_SCAN)
+		menu(menuPini)
+		interest(1)
+	}
+	field(PHAS,DBF_SHORT) {
+		prompt("Scan Phase")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(EVNT,DBF_SHORT) {
+		prompt("Event Number")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(TSE,DBF_SHORT) {
+		prompt("Time Stamp Event")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(TSEL,DBF_INLINK) {
+		prompt("Time Stamp Link")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(DTYP,DBF_DEVICE) {
+		prompt("Device Type")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(DISV,DBF_SHORT) {
+		prompt("Disable Value")
+		initial("1")
+		promptgroup(GUI_SCAN)
+	}
+	field(DISA,DBF_SHORT) {
+		prompt("Disable")
+	}
+	field(SDIS,DBF_INLINK) {
+		prompt("Scanning Disable")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(MLOK,DBF_NOACCESS) {
+		prompt("Monitor lock")
+		special(SPC_NOMOD)
+		extra("epicsMutexId	mlok")
+		interest(4)
+	}
+	field(MLIS,DBF_NOACCESS) {
+		prompt("Monitor List")
+		special(SPC_NOMOD)
+		extra("ELLLIST		mlis")
+		interest(4)
+	}
+	field(DISP,DBF_UCHAR) {
+		prompt("Disable putField")
+	}
+	field(PROC,DBF_UCHAR) {
+		prompt("Force Processing")
+		pp(TRUE)
+		interest(3)
+	}
+	field(STAT,DBF_MENU) {
+		prompt("Alarm Status")
+		initial("UDF")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+	}
+	field(SEVR,DBF_MENU) {
+		prompt("Alarm Severity")
+		initial("INVALID")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+	}
+	field(NSTA,DBF_MENU) {
+		prompt("New Alarm Status")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+		interest(2)
+	}
+	field(NSEV,DBF_MENU) {
+		prompt("New Alarm Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKS,DBF_MENU) {
+		prompt("Alarm Ack Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKT,DBF_MENU) {
+		prompt("Alarm Ack Transient")
+		initial("YES")
+		promptgroup(GUI_ALARMS)
+		special(SPC_NOMOD)
+		menu(menuYesNo)
+		interest(2)
+	}
+	field(DISS,DBF_MENU) {
+		prompt("Disable Alarm Sevrty")
+		promptgroup(GUI_SCAN)
+		menu(menuAlarmSevr)
+		interest(1)
+	}
+	field(LCNT,DBF_UCHAR) {
+		prompt("Lock Count")
+		special(SPC_NOMOD)
+		interest(2)
+	}
+	field(PACT,DBF_UCHAR) {
+		prompt("Record active")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(PUTF,DBF_UCHAR) {
+		prompt("dbPutField process")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(RPRO,DBF_UCHAR) {
+		prompt("Reprocess ")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(ASP,DBF_NOACCESS) {
+		prompt("Access Security Pvt")
+		special(SPC_NOMOD)
+		extra("struct asgMember *asp")
+		interest(4)
+	}
+	field(PPN,DBF_NOACCESS) {
+		prompt("addr of PUTNOTIFY")
+		special(SPC_NOMOD)
+		extra("struct putNotify *ppn")
+		interest(4)
+	}
+	field(PPNR,DBF_NOACCESS) {
+		prompt("pputNotifyRecord")
+		special(SPC_NOMOD)
+		extra("struct putNotifyRecord *ppnr")
+		interest(4)
+	}
+	field(SPVT,DBF_NOACCESS) {
+		prompt("Scan Private")
+		special(SPC_NOMOD)
+		extra("struct scan_element *spvt")
+		interest(4)
+	}
+	field(RSET,DBF_NOACCESS) {
+		prompt("Address of RSET")
+		special(SPC_NOMOD)
+		extra("struct rset	*rset")
+		interest(4)
+	}
+	field(DSET,DBF_NOACCESS) {
+		prompt("DSET address")
+		special(SPC_NOMOD)
+		extra("struct dset	*dset")
+		interest(4)
+	}
+	field(DPVT,DBF_NOACCESS) {
+		prompt("Device Private")
+		special(SPC_NOMOD)
+		extra("void		*dpvt")
+		interest(4)
+	}
+	field(RDES,DBF_NOACCESS) {
+		prompt("Address of dbRecordType")
+		special(SPC_NOMOD)
+		extra("struct dbRecordType *rdes")
+		interest(4)
+	}
+	field(LSET,DBF_NOACCESS) {
+		prompt("Lock Set")
+		special(SPC_NOMOD)
+		extra("struct lockRecord *lset")
+		interest(4)
+	}
+	field(PRIO,DBF_MENU) {
+		prompt("Scheduling Priority")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuPriority)
+		interest(1)
+	}
+	field(TPRO,DBF_UCHAR) {
+		prompt("Trace Processing")
+	}
+	field(BKPT,DBF_NOACCESS) {
+		prompt("Break Point")
+		special(SPC_NOMOD)
+		extra("char bkpt")
+		interest(1)
+	}
+	field(UDF,DBF_UCHAR) {
+		prompt("Undefined")
+		initial("1")
+		promptgroup(GUI_COMMON)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TIME,DBF_NOACCESS) {
+		prompt("Time")
+		special(SPC_NOMOD)
+		extra("epicsTimeStamp	time")
+		interest(2)
+	}
+	field(FLNK,DBF_FWDLINK) {
+		prompt("Forward Process Link")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(VAL,DBF_DOUBLE) {
+		prompt("Desired Output")
+		pp(TRUE)
+		asl(ASL0)
+	}
+	field(SELM,DBF_MENU) {
+		prompt("Select Mechanism")
+		promptgroup(GUI_LINKS)
+		menu(dfanoutSELM)
+		interest(1)
+	}
+	field(SELN,DBF_USHORT) {
+		prompt("Link Selection")
+		initial("1")
+		interest(1)
+	}
+	field(SELL,DBF_INLINK) {
+		prompt("Link Selection Loc")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(OUTA,DBF_OUTLINK) {
+		prompt("Output Spec A")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(OUTB,DBF_OUTLINK) {
+		prompt("Output Spec B")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(OUTC,DBF_OUTLINK) {
+		prompt("Output Spec C")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(OUTD,DBF_OUTLINK) {
+		prompt("Output Spec D")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(OUTE,DBF_OUTLINK) {
+		prompt("Output Spec E")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(OUTF,DBF_OUTLINK) {
+		prompt("Output Spec F")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(OUTG,DBF_OUTLINK) {
+		prompt("Output Spec G")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(OUTH,DBF_OUTLINK) {
+		prompt("Output Spec H")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(DOL,DBF_INLINK) {
+		prompt("Desired Output Loc")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(OMSL,DBF_MENU) {
+		prompt("Output Mode Select")
+		promptgroup(GUI_OUTPUT)
+		menu(menuOmsl)
+		interest(1)
+	}
+	field(EGU,DBF_STRING) {
+		prompt("Units name")
+		promptgroup(GUI_DISPLAY)
+		size(16)
+		interest(1)
+	}
+	field(PREC,DBF_SHORT) {
+		prompt("Display Precision")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(HOPR,DBF_DOUBLE) {
+		prompt("High Operating Range")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(LOPR,DBF_DOUBLE) {
+		prompt("Low Operating Range")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(HIHI,DBF_DOUBLE) {
+		prompt("Hihi Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LOLO,DBF_DOUBLE) {
+		prompt("Lolo Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HIGH,DBF_DOUBLE) {
+		prompt("High Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LOW,DBF_DOUBLE) {
+		prompt("Low Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HHSV,DBF_MENU) {
+		prompt("Hihi Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LLSV,DBF_MENU) {
+		prompt("Lolo Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HSV,DBF_MENU) {
+		prompt("High Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LSV,DBF_MENU) {
+		prompt("Low Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HYST,DBF_DOUBLE) {
+		prompt("Alarm Deadband")
+		promptgroup(GUI_ALARMS)
+		interest(1)
+	}
+	field(ADEL,DBF_DOUBLE) {
+		prompt("Archive Deadband")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(MDEL,DBF_DOUBLE) {
+		prompt("Monitor Deadband")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(LALM,DBF_DOUBLE) {
+		prompt("Last Value Alarmed")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(ALST,DBF_DOUBLE) {
+		prompt("Last Value Archived")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(MLST,DBF_DOUBLE) {
+		prompt("Last Val Monitored")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+}
+recordtype(event) {
+	field(NAME,DBF_STRING) {
+		prompt("Record Name")
+		special(SPC_NOMOD)
+		size(61)
+	}
+	field(DESC,DBF_STRING) {
+		prompt("Descriptor")
+		promptgroup(GUI_COMMON)
+		size(41)
+	}
+	field(ASG,DBF_STRING) {
+		prompt("Access Security Group")
+		promptgroup(GUI_COMMON)
+		special(SPC_AS)
+		size(29)
+	}
+	field(SCAN,DBF_MENU) {
+		prompt("Scan Mechanism")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuScan)
+		interest(1)
+	}
+	field(PINI,DBF_MENU) {
+		prompt("Process at iocInit")
+		promptgroup(GUI_SCAN)
+		menu(menuPini)
+		interest(1)
+	}
+	field(PHAS,DBF_SHORT) {
+		prompt("Scan Phase")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(EVNT,DBF_SHORT) {
+		prompt("Event Number")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(TSE,DBF_SHORT) {
+		prompt("Time Stamp Event")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(TSEL,DBF_INLINK) {
+		prompt("Time Stamp Link")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(DTYP,DBF_DEVICE) {
+		prompt("Device Type")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(DISV,DBF_SHORT) {
+		prompt("Disable Value")
+		initial("1")
+		promptgroup(GUI_SCAN)
+	}
+	field(DISA,DBF_SHORT) {
+		prompt("Disable")
+	}
+	field(SDIS,DBF_INLINK) {
+		prompt("Scanning Disable")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(MLOK,DBF_NOACCESS) {
+		prompt("Monitor lock")
+		special(SPC_NOMOD)
+		extra("epicsMutexId	mlok")
+		interest(4)
+	}
+	field(MLIS,DBF_NOACCESS) {
+		prompt("Monitor List")
+		special(SPC_NOMOD)
+		extra("ELLLIST		mlis")
+		interest(4)
+	}
+	field(DISP,DBF_UCHAR) {
+		prompt("Disable putField")
+	}
+	field(PROC,DBF_UCHAR) {
+		prompt("Force Processing")
+		pp(TRUE)
+		interest(3)
+	}
+	field(STAT,DBF_MENU) {
+		prompt("Alarm Status")
+		initial("UDF")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+	}
+	field(SEVR,DBF_MENU) {
+		prompt("Alarm Severity")
+		initial("INVALID")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+	}
+	field(NSTA,DBF_MENU) {
+		prompt("New Alarm Status")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+		interest(2)
+	}
+	field(NSEV,DBF_MENU) {
+		prompt("New Alarm Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKS,DBF_MENU) {
+		prompt("Alarm Ack Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKT,DBF_MENU) {
+		prompt("Alarm Ack Transient")
+		initial("YES")
+		promptgroup(GUI_ALARMS)
+		special(SPC_NOMOD)
+		menu(menuYesNo)
+		interest(2)
+	}
+	field(DISS,DBF_MENU) {
+		prompt("Disable Alarm Sevrty")
+		promptgroup(GUI_SCAN)
+		menu(menuAlarmSevr)
+		interest(1)
+	}
+	field(LCNT,DBF_UCHAR) {
+		prompt("Lock Count")
+		special(SPC_NOMOD)
+		interest(2)
+	}
+	field(PACT,DBF_UCHAR) {
+		prompt("Record active")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(PUTF,DBF_UCHAR) {
+		prompt("dbPutField process")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(RPRO,DBF_UCHAR) {
+		prompt("Reprocess ")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(ASP,DBF_NOACCESS) {
+		prompt("Access Security Pvt")
+		special(SPC_NOMOD)
+		extra("struct asgMember *asp")
+		interest(4)
+	}
+	field(PPN,DBF_NOACCESS) {
+		prompt("addr of PUTNOTIFY")
+		special(SPC_NOMOD)
+		extra("struct putNotify *ppn")
+		interest(4)
+	}
+	field(PPNR,DBF_NOACCESS) {
+		prompt("pputNotifyRecord")
+		special(SPC_NOMOD)
+		extra("struct putNotifyRecord *ppnr")
+		interest(4)
+	}
+	field(SPVT,DBF_NOACCESS) {
+		prompt("Scan Private")
+		special(SPC_NOMOD)
+		extra("struct scan_element *spvt")
+		interest(4)
+	}
+	field(RSET,DBF_NOACCESS) {
+		prompt("Address of RSET")
+		special(SPC_NOMOD)
+		extra("struct rset	*rset")
+		interest(4)
+	}
+	field(DSET,DBF_NOACCESS) {
+		prompt("DSET address")
+		special(SPC_NOMOD)
+		extra("struct dset	*dset")
+		interest(4)
+	}
+	field(DPVT,DBF_NOACCESS) {
+		prompt("Device Private")
+		special(SPC_NOMOD)
+		extra("void		*dpvt")
+		interest(4)
+	}
+	field(RDES,DBF_NOACCESS) {
+		prompt("Address of dbRecordType")
+		special(SPC_NOMOD)
+		extra("struct dbRecordType *rdes")
+		interest(4)
+	}
+	field(LSET,DBF_NOACCESS) {
+		prompt("Lock Set")
+		special(SPC_NOMOD)
+		extra("struct lockRecord *lset")
+		interest(4)
+	}
+	field(PRIO,DBF_MENU) {
+		prompt("Scheduling Priority")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuPriority)
+		interest(1)
+	}
+	field(TPRO,DBF_UCHAR) {
+		prompt("Trace Processing")
+	}
+	field(BKPT,DBF_NOACCESS) {
+		prompt("Break Point")
+		special(SPC_NOMOD)
+		extra("char bkpt")
+		interest(1)
+	}
+	field(UDF,DBF_UCHAR) {
+		prompt("Undefined")
+		initial("1")
+		promptgroup(GUI_COMMON)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TIME,DBF_NOACCESS) {
+		prompt("Time")
+		special(SPC_NOMOD)
+		extra("epicsTimeStamp	time")
+		interest(2)
+	}
+	field(FLNK,DBF_FWDLINK) {
+		prompt("Forward Process Link")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(VAL,DBF_USHORT) {
+		prompt("Event Number To Post")
+		promptgroup(GUI_INPUTS)
+		asl(ASL0)
+	}
+	field(INP,DBF_INLINK) {
+		prompt("Input Specification")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(SIOL,DBF_INLINK) {
+		prompt("Sim Input Specifctn")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(SVAL,DBF_USHORT) {
+		prompt("Simulation Value")
+	}
+	field(SIML,DBF_INLINK) {
+		prompt("Sim Mode Location")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(SIMM,DBF_MENU) {
+		prompt("Simulation Mode")
+		menu(menuYesNo)
+		interest(1)
+	}
+	field(SIMS,DBF_MENU) {
+		prompt("Sim mode Alarm Svrty")
+		promptgroup(GUI_INPUTS)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+}
+recordtype(fanout) {
+	field(NAME,DBF_STRING) {
+		prompt("Record Name")
+		special(SPC_NOMOD)
+		size(61)
+	}
+	field(DESC,DBF_STRING) {
+		prompt("Descriptor")
+		promptgroup(GUI_COMMON)
+		size(41)
+	}
+	field(ASG,DBF_STRING) {
+		prompt("Access Security Group")
+		promptgroup(GUI_COMMON)
+		special(SPC_AS)
+		size(29)
+	}
+	field(SCAN,DBF_MENU) {
+		prompt("Scan Mechanism")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuScan)
+		interest(1)
+	}
+	field(PINI,DBF_MENU) {
+		prompt("Process at iocInit")
+		promptgroup(GUI_SCAN)
+		menu(menuPini)
+		interest(1)
+	}
+	field(PHAS,DBF_SHORT) {
+		prompt("Scan Phase")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(EVNT,DBF_SHORT) {
+		prompt("Event Number")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(TSE,DBF_SHORT) {
+		prompt("Time Stamp Event")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(TSEL,DBF_INLINK) {
+		prompt("Time Stamp Link")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(DTYP,DBF_DEVICE) {
+		prompt("Device Type")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(DISV,DBF_SHORT) {
+		prompt("Disable Value")
+		initial("1")
+		promptgroup(GUI_SCAN)
+	}
+	field(DISA,DBF_SHORT) {
+		prompt("Disable")
+	}
+	field(SDIS,DBF_INLINK) {
+		prompt("Scanning Disable")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(MLOK,DBF_NOACCESS) {
+		prompt("Monitor lock")
+		special(SPC_NOMOD)
+		extra("epicsMutexId	mlok")
+		interest(4)
+	}
+	field(MLIS,DBF_NOACCESS) {
+		prompt("Monitor List")
+		special(SPC_NOMOD)
+		extra("ELLLIST		mlis")
+		interest(4)
+	}
+	field(DISP,DBF_UCHAR) {
+		prompt("Disable putField")
+	}
+	field(PROC,DBF_UCHAR) {
+		prompt("Force Processing")
+		pp(TRUE)
+		interest(3)
+	}
+	field(STAT,DBF_MENU) {
+		prompt("Alarm Status")
+		initial("UDF")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+	}
+	field(SEVR,DBF_MENU) {
+		prompt("Alarm Severity")
+		initial("INVALID")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+	}
+	field(NSTA,DBF_MENU) {
+		prompt("New Alarm Status")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+		interest(2)
+	}
+	field(NSEV,DBF_MENU) {
+		prompt("New Alarm Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKS,DBF_MENU) {
+		prompt("Alarm Ack Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKT,DBF_MENU) {
+		prompt("Alarm Ack Transient")
+		initial("YES")
+		promptgroup(GUI_ALARMS)
+		special(SPC_NOMOD)
+		menu(menuYesNo)
+		interest(2)
+	}
+	field(DISS,DBF_MENU) {
+		prompt("Disable Alarm Sevrty")
+		promptgroup(GUI_SCAN)
+		menu(menuAlarmSevr)
+		interest(1)
+	}
+	field(LCNT,DBF_UCHAR) {
+		prompt("Lock Count")
+		special(SPC_NOMOD)
+		interest(2)
+	}
+	field(PACT,DBF_UCHAR) {
+		prompt("Record active")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(PUTF,DBF_UCHAR) {
+		prompt("dbPutField process")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(RPRO,DBF_UCHAR) {
+		prompt("Reprocess ")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(ASP,DBF_NOACCESS) {
+		prompt("Access Security Pvt")
+		special(SPC_NOMOD)
+		extra("struct asgMember *asp")
+		interest(4)
+	}
+	field(PPN,DBF_NOACCESS) {
+		prompt("addr of PUTNOTIFY")
+		special(SPC_NOMOD)
+		extra("struct putNotify *ppn")
+		interest(4)
+	}
+	field(PPNR,DBF_NOACCESS) {
+		prompt("pputNotifyRecord")
+		special(SPC_NOMOD)
+		extra("struct putNotifyRecord *ppnr")
+		interest(4)
+	}
+	field(SPVT,DBF_NOACCESS) {
+		prompt("Scan Private")
+		special(SPC_NOMOD)
+		extra("struct scan_element *spvt")
+		interest(4)
+	}
+	field(RSET,DBF_NOACCESS) {
+		prompt("Address of RSET")
+		special(SPC_NOMOD)
+		extra("struct rset	*rset")
+		interest(4)
+	}
+	field(DSET,DBF_NOACCESS) {
+		prompt("DSET address")
+		special(SPC_NOMOD)
+		extra("struct dset	*dset")
+		interest(4)
+	}
+	field(DPVT,DBF_NOACCESS) {
+		prompt("Device Private")
+		special(SPC_NOMOD)
+		extra("void		*dpvt")
+		interest(4)
+	}
+	field(RDES,DBF_NOACCESS) {
+		prompt("Address of dbRecordType")
+		special(SPC_NOMOD)
+		extra("struct dbRecordType *rdes")
+		interest(4)
+	}
+	field(LSET,DBF_NOACCESS) {
+		prompt("Lock Set")
+		special(SPC_NOMOD)
+		extra("struct lockRecord *lset")
+		interest(4)
+	}
+	field(PRIO,DBF_MENU) {
+		prompt("Scheduling Priority")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuPriority)
+		interest(1)
+	}
+	field(TPRO,DBF_UCHAR) {
+		prompt("Trace Processing")
+	}
+	field(BKPT,DBF_NOACCESS) {
+		prompt("Break Point")
+		special(SPC_NOMOD)
+		extra("char bkpt")
+		interest(1)
+	}
+	field(UDF,DBF_UCHAR) {
+		prompt("Undefined")
+		initial("1")
+		promptgroup(GUI_COMMON)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TIME,DBF_NOACCESS) {
+		prompt("Time")
+		special(SPC_NOMOD)
+		extra("epicsTimeStamp	time")
+		interest(2)
+	}
+	field(FLNK,DBF_FWDLINK) {
+		prompt("Forward Process Link")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(VAL,DBF_LONG) {
+		prompt("Used to trigger")
+		pp(TRUE)
+		asl(ASL0)
+	}
+	field(SELM,DBF_MENU) {
+		prompt("Select Mechanism")
+		promptgroup(GUI_LINKS)
+		menu(fanoutSELM)
+		interest(1)
+	}
+	field(SELN,DBF_USHORT) {
+		prompt("Link Selection")
+		initial("1")
+		interest(1)
+	}
+	field(SELL,DBF_INLINK) {
+		prompt("Link Selection Loc")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(LNK1,DBF_FWDLINK) {
+		prompt("Forward Link 1")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(LNK2,DBF_FWDLINK) {
+		prompt("Forward Link 2")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(LNK3,DBF_FWDLINK) {
+		prompt("Forward Link 3")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(LNK4,DBF_FWDLINK) {
+		prompt("Forward Link 4")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(LNK5,DBF_FWDLINK) {
+		prompt("Forward Link 5")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(LNK6,DBF_FWDLINK) {
+		prompt("Forward Link 6")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+}
+recordtype(histogram) {
+	field(NAME,DBF_STRING) {
+		prompt("Record Name")
+		special(SPC_NOMOD)
+		size(61)
+	}
+	field(DESC,DBF_STRING) {
+		prompt("Descriptor")
+		promptgroup(GUI_COMMON)
+		size(41)
+	}
+	field(ASG,DBF_STRING) {
+		prompt("Access Security Group")
+		promptgroup(GUI_COMMON)
+		special(SPC_AS)
+		size(29)
+	}
+	field(SCAN,DBF_MENU) {
+		prompt("Scan Mechanism")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuScan)
+		interest(1)
+	}
+	field(PINI,DBF_MENU) {
+		prompt("Process at iocInit")
+		promptgroup(GUI_SCAN)
+		menu(menuPini)
+		interest(1)
+	}
+	field(PHAS,DBF_SHORT) {
+		prompt("Scan Phase")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(EVNT,DBF_SHORT) {
+		prompt("Event Number")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(TSE,DBF_SHORT) {
+		prompt("Time Stamp Event")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(TSEL,DBF_INLINK) {
+		prompt("Time Stamp Link")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(DTYP,DBF_DEVICE) {
+		prompt("Device Type")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(DISV,DBF_SHORT) {
+		prompt("Disable Value")
+		initial("1")
+		promptgroup(GUI_SCAN)
+	}
+	field(DISA,DBF_SHORT) {
+		prompt("Disable")
+	}
+	field(SDIS,DBF_INLINK) {
+		prompt("Scanning Disable")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(MLOK,DBF_NOACCESS) {
+		prompt("Monitor lock")
+		special(SPC_NOMOD)
+		extra("epicsMutexId	mlok")
+		interest(4)
+	}
+	field(MLIS,DBF_NOACCESS) {
+		prompt("Monitor List")
+		special(SPC_NOMOD)
+		extra("ELLLIST		mlis")
+		interest(4)
+	}
+	field(DISP,DBF_UCHAR) {
+		prompt("Disable putField")
+	}
+	field(PROC,DBF_UCHAR) {
+		prompt("Force Processing")
+		pp(TRUE)
+		interest(3)
+	}
+	field(STAT,DBF_MENU) {
+		prompt("Alarm Status")
+		initial("UDF")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+	}
+	field(SEVR,DBF_MENU) {
+		prompt("Alarm Severity")
+		initial("INVALID")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+	}
+	field(NSTA,DBF_MENU) {
+		prompt("New Alarm Status")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+		interest(2)
+	}
+	field(NSEV,DBF_MENU) {
+		prompt("New Alarm Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKS,DBF_MENU) {
+		prompt("Alarm Ack Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKT,DBF_MENU) {
+		prompt("Alarm Ack Transient")
+		initial("YES")
+		promptgroup(GUI_ALARMS)
+		special(SPC_NOMOD)
+		menu(menuYesNo)
+		interest(2)
+	}
+	field(DISS,DBF_MENU) {
+		prompt("Disable Alarm Sevrty")
+		promptgroup(GUI_SCAN)
+		menu(menuAlarmSevr)
+		interest(1)
+	}
+	field(LCNT,DBF_UCHAR) {
+		prompt("Lock Count")
+		special(SPC_NOMOD)
+		interest(2)
+	}
+	field(PACT,DBF_UCHAR) {
+		prompt("Record active")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(PUTF,DBF_UCHAR) {
+		prompt("dbPutField process")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(RPRO,DBF_UCHAR) {
+		prompt("Reprocess ")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(ASP,DBF_NOACCESS) {
+		prompt("Access Security Pvt")
+		special(SPC_NOMOD)
+		extra("struct asgMember *asp")
+		interest(4)
+	}
+	field(PPN,DBF_NOACCESS) {
+		prompt("addr of PUTNOTIFY")
+		special(SPC_NOMOD)
+		extra("struct putNotify *ppn")
+		interest(4)
+	}
+	field(PPNR,DBF_NOACCESS) {
+		prompt("pputNotifyRecord")
+		special(SPC_NOMOD)
+		extra("struct putNotifyRecord *ppnr")
+		interest(4)
+	}
+	field(SPVT,DBF_NOACCESS) {
+		prompt("Scan Private")
+		special(SPC_NOMOD)
+		extra("struct scan_element *spvt")
+		interest(4)
+	}
+	field(RSET,DBF_NOACCESS) {
+		prompt("Address of RSET")
+		special(SPC_NOMOD)
+		extra("struct rset	*rset")
+		interest(4)
+	}
+	field(DSET,DBF_NOACCESS) {
+		prompt("DSET address")
+		special(SPC_NOMOD)
+		extra("struct dset	*dset")
+		interest(4)
+	}
+	field(DPVT,DBF_NOACCESS) {
+		prompt("Device Private")
+		special(SPC_NOMOD)
+		extra("void		*dpvt")
+		interest(4)
+	}
+	field(RDES,DBF_NOACCESS) {
+		prompt("Address of dbRecordType")
+		special(SPC_NOMOD)
+		extra("struct dbRecordType *rdes")
+		interest(4)
+	}
+	field(LSET,DBF_NOACCESS) {
+		prompt("Lock Set")
+		special(SPC_NOMOD)
+		extra("struct lockRecord *lset")
+		interest(4)
+	}
+	field(PRIO,DBF_MENU) {
+		prompt("Scheduling Priority")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuPriority)
+		interest(1)
+	}
+	field(TPRO,DBF_UCHAR) {
+		prompt("Trace Processing")
+	}
+	field(BKPT,DBF_NOACCESS) {
+		prompt("Break Point")
+		special(SPC_NOMOD)
+		extra("char bkpt")
+		interest(1)
+	}
+	field(UDF,DBF_UCHAR) {
+		prompt("Undefined")
+		initial("1")
+		promptgroup(GUI_COMMON)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TIME,DBF_NOACCESS) {
+		prompt("Time")
+		special(SPC_NOMOD)
+		extra("epicsTimeStamp	time")
+		interest(2)
+	}
+	field(FLNK,DBF_FWDLINK) {
+		prompt("Forward Process Link")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(VAL,DBF_NOACCESS) {
+		prompt("Value")
+		special(SPC_DBADDR)
+		extra("void *	val")
+		asl(ASL0)
+	}
+	field(NELM,DBF_USHORT) {
+		prompt("Num of Array Elements")
+		initial("1")
+		promptgroup(GUI_HIST)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(CSTA,DBF_SHORT) {
+		prompt("Collection Status")
+		initial("1")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(CMD,DBF_MENU) {
+		prompt("Collection Control")
+		special(103)
+		menu(histogramCMD)
+		interest(1)
+		asl(ASL0)
+	}
+	field(ULIM,DBF_DOUBLE) {
+		prompt("Upper Signal Limit")
+		promptgroup(GUI_HIST)
+		special(101)
+		interest(1)
+	}
+	field(LLIM,DBF_DOUBLE) {
+		prompt("Lower Signal Limit ")
+		promptgroup(GUI_HIST)
+		special(101)
+		interest(1)
+	}
+	field(WDTH,DBF_DOUBLE) {
+		prompt("Element Width")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(SGNL,DBF_DOUBLE) {
+		prompt("Signal Value")
+		special(100)
+	}
+	field(PREC,DBF_SHORT) {
+		prompt("Display Precision")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(SVL,DBF_INLINK) {
+		prompt("Signal Value Location")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(BPTR,DBF_NOACCESS) {
+		prompt("Buffer Pointer")
+		special(SPC_NOMOD)
+		extra("epicsUInt32 *bptr")
+		interest(4)
+	}
+	field(WDOG,DBF_NOACCESS) {
+		prompt("Watchdog callback")
+		special(SPC_NOMOD)
+		extra("void *  wdog")
+		interest(4)
+	}
+	field(MDEL,DBF_SHORT) {
+		prompt("Monitor Count Deadband")
+		promptgroup(GUI_HIST)
+		interest(1)
+	}
+	field(MCNT,DBF_SHORT) {
+		prompt("Counts Since Monitor")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(SDEL,DBF_DOUBLE) {
+		prompt("Monitor Seconds Dband")
+		promptgroup(GUI_HIST)
+		special(101)
+		interest(1)
+	}
+	field(SIOL,DBF_INLINK) {
+		prompt("Sim Input Specifctn")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(SVAL,DBF_DOUBLE) {
+		prompt("Simulation Value")
+	}
+	field(SIML,DBF_INLINK) {
+		prompt("Sim Mode Location")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(SIMM,DBF_MENU) {
+		prompt("Simulation Mode")
+		menu(menuYesNo)
+		interest(1)
+	}
+	field(SIMS,DBF_MENU) {
+		prompt("Sim mode Alarm Svrty")
+		promptgroup(GUI_INPUTS)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(HOPR,DBF_ULONG) {
+		prompt("High Operating Range")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(LOPR,DBF_ULONG) {
+		prompt("Low Operating Range")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+}
+recordtype(longin) {
+	field(NAME,DBF_STRING) {
+		prompt("Record Name")
+		special(SPC_NOMOD)
+		size(61)
+	}
+	field(DESC,DBF_STRING) {
+		prompt("Descriptor")
+		promptgroup(GUI_COMMON)
+		size(41)
+	}
+	field(ASG,DBF_STRING) {
+		prompt("Access Security Group")
+		promptgroup(GUI_COMMON)
+		special(SPC_AS)
+		size(29)
+	}
+	field(SCAN,DBF_MENU) {
+		prompt("Scan Mechanism")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuScan)
+		interest(1)
+	}
+	field(PINI,DBF_MENU) {
+		prompt("Process at iocInit")
+		promptgroup(GUI_SCAN)
+		menu(menuPini)
+		interest(1)
+	}
+	field(PHAS,DBF_SHORT) {
+		prompt("Scan Phase")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(EVNT,DBF_SHORT) {
+		prompt("Event Number")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(TSE,DBF_SHORT) {
+		prompt("Time Stamp Event")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(TSEL,DBF_INLINK) {
+		prompt("Time Stamp Link")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(DTYP,DBF_DEVICE) {
+		prompt("Device Type")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(DISV,DBF_SHORT) {
+		prompt("Disable Value")
+		initial("1")
+		promptgroup(GUI_SCAN)
+	}
+	field(DISA,DBF_SHORT) {
+		prompt("Disable")
+	}
+	field(SDIS,DBF_INLINK) {
+		prompt("Scanning Disable")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(MLOK,DBF_NOACCESS) {
+		prompt("Monitor lock")
+		special(SPC_NOMOD)
+		extra("epicsMutexId	mlok")
+		interest(4)
+	}
+	field(MLIS,DBF_NOACCESS) {
+		prompt("Monitor List")
+		special(SPC_NOMOD)
+		extra("ELLLIST		mlis")
+		interest(4)
+	}
+	field(DISP,DBF_UCHAR) {
+		prompt("Disable putField")
+	}
+	field(PROC,DBF_UCHAR) {
+		prompt("Force Processing")
+		pp(TRUE)
+		interest(3)
+	}
+	field(STAT,DBF_MENU) {
+		prompt("Alarm Status")
+		initial("UDF")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+	}
+	field(SEVR,DBF_MENU) {
+		prompt("Alarm Severity")
+		initial("INVALID")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+	}
+	field(NSTA,DBF_MENU) {
+		prompt("New Alarm Status")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+		interest(2)
+	}
+	field(NSEV,DBF_MENU) {
+		prompt("New Alarm Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKS,DBF_MENU) {
+		prompt("Alarm Ack Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKT,DBF_MENU) {
+		prompt("Alarm Ack Transient")
+		initial("YES")
+		promptgroup(GUI_ALARMS)
+		special(SPC_NOMOD)
+		menu(menuYesNo)
+		interest(2)
+	}
+	field(DISS,DBF_MENU) {
+		prompt("Disable Alarm Sevrty")
+		promptgroup(GUI_SCAN)
+		menu(menuAlarmSevr)
+		interest(1)
+	}
+	field(LCNT,DBF_UCHAR) {
+		prompt("Lock Count")
+		special(SPC_NOMOD)
+		interest(2)
+	}
+	field(PACT,DBF_UCHAR) {
+		prompt("Record active")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(PUTF,DBF_UCHAR) {
+		prompt("dbPutField process")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(RPRO,DBF_UCHAR) {
+		prompt("Reprocess ")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(ASP,DBF_NOACCESS) {
+		prompt("Access Security Pvt")
+		special(SPC_NOMOD)
+		extra("struct asgMember *asp")
+		interest(4)
+	}
+	field(PPN,DBF_NOACCESS) {
+		prompt("addr of PUTNOTIFY")
+		special(SPC_NOMOD)
+		extra("struct putNotify *ppn")
+		interest(4)
+	}
+	field(PPNR,DBF_NOACCESS) {
+		prompt("pputNotifyRecord")
+		special(SPC_NOMOD)
+		extra("struct putNotifyRecord *ppnr")
+		interest(4)
+	}
+	field(SPVT,DBF_NOACCESS) {
+		prompt("Scan Private")
+		special(SPC_NOMOD)
+		extra("struct scan_element *spvt")
+		interest(4)
+	}
+	field(RSET,DBF_NOACCESS) {
+		prompt("Address of RSET")
+		special(SPC_NOMOD)
+		extra("struct rset	*rset")
+		interest(4)
+	}
+	field(DSET,DBF_NOACCESS) {
+		prompt("DSET address")
+		special(SPC_NOMOD)
+		extra("struct dset	*dset")
+		interest(4)
+	}
+	field(DPVT,DBF_NOACCESS) {
+		prompt("Device Private")
+		special(SPC_NOMOD)
+		extra("void		*dpvt")
+		interest(4)
+	}
+	field(RDES,DBF_NOACCESS) {
+		prompt("Address of dbRecordType")
+		special(SPC_NOMOD)
+		extra("struct dbRecordType *rdes")
+		interest(4)
+	}
+	field(LSET,DBF_NOACCESS) {
+		prompt("Lock Set")
+		special(SPC_NOMOD)
+		extra("struct lockRecord *lset")
+		interest(4)
+	}
+	field(PRIO,DBF_MENU) {
+		prompt("Scheduling Priority")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuPriority)
+		interest(1)
+	}
+	field(TPRO,DBF_UCHAR) {
+		prompt("Trace Processing")
+	}
+	field(BKPT,DBF_NOACCESS) {
+		prompt("Break Point")
+		special(SPC_NOMOD)
+		extra("char bkpt")
+		interest(1)
+	}
+	field(UDF,DBF_UCHAR) {
+		prompt("Undefined")
+		initial("1")
+		promptgroup(GUI_COMMON)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TIME,DBF_NOACCESS) {
+		prompt("Time")
+		special(SPC_NOMOD)
+		extra("epicsTimeStamp	time")
+		interest(2)
+	}
+	field(FLNK,DBF_FWDLINK) {
+		prompt("Forward Process Link")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(VAL,DBF_LONG) {
+		prompt("Current value")
+		promptgroup(GUI_INPUTS)
+		pp(TRUE)
+		asl(ASL0)
+	}
+	field(INP,DBF_INLINK) {
+		prompt("Input Specification")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(EGU,DBF_STRING) {
+		prompt("Units name")
+		promptgroup(GUI_DISPLAY)
+		size(16)
+		interest(1)
+	}
+	field(HOPR,DBF_LONG) {
+		prompt("High Operating Range")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(LOPR,DBF_LONG) {
+		prompt("Low Operating Range")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(HIHI,DBF_LONG) {
+		prompt("Hihi Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LOLO,DBF_LONG) {
+		prompt("Lolo Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HIGH,DBF_LONG) {
+		prompt("High Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LOW,DBF_LONG) {
+		prompt("Low Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HHSV,DBF_MENU) {
+		prompt("Hihi Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LLSV,DBF_MENU) {
+		prompt("Lolo Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HSV,DBF_MENU) {
+		prompt("High Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LSV,DBF_MENU) {
+		prompt("Low Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HYST,DBF_LONG) {
+		prompt("Alarm Deadband")
+		promptgroup(GUI_ALARMS)
+		interest(1)
+	}
+	field(ADEL,DBF_LONG) {
+		prompt("Archive Deadband")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(MDEL,DBF_LONG) {
+		prompt("Monitor Deadband")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(LALM,DBF_LONG) {
+		prompt("Last Value Alarmed")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(ALST,DBF_LONG) {
+		prompt("Last Value Archived")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(MLST,DBF_LONG) {
+		prompt("Last Val Monitored")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(SIOL,DBF_INLINK) {
+		prompt("Sim Input Specifctn")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(SVAL,DBF_LONG) {
+		prompt("Simulation Value")
+	}
+	field(SIML,DBF_INLINK) {
+		prompt("Sim Mode Location")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(SIMM,DBF_MENU) {
+		prompt("Simulation Mode")
+		menu(menuYesNo)
+		interest(1)
+	}
+	field(SIMS,DBF_MENU) {
+		prompt("Sim mode Alarm Svrty")
+		promptgroup(GUI_INPUTS)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+}
+recordtype(longout) {
+	field(NAME,DBF_STRING) {
+		prompt("Record Name")
+		special(SPC_NOMOD)
+		size(61)
+	}
+	field(DESC,DBF_STRING) {
+		prompt("Descriptor")
+		promptgroup(GUI_COMMON)
+		size(41)
+	}
+	field(ASG,DBF_STRING) {
+		prompt("Access Security Group")
+		promptgroup(GUI_COMMON)
+		special(SPC_AS)
+		size(29)
+	}
+	field(SCAN,DBF_MENU) {
+		prompt("Scan Mechanism")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuScan)
+		interest(1)
+	}
+	field(PINI,DBF_MENU) {
+		prompt("Process at iocInit")
+		promptgroup(GUI_SCAN)
+		menu(menuPini)
+		interest(1)
+	}
+	field(PHAS,DBF_SHORT) {
+		prompt("Scan Phase")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(EVNT,DBF_SHORT) {
+		prompt("Event Number")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(TSE,DBF_SHORT) {
+		prompt("Time Stamp Event")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(TSEL,DBF_INLINK) {
+		prompt("Time Stamp Link")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(DTYP,DBF_DEVICE) {
+		prompt("Device Type")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(DISV,DBF_SHORT) {
+		prompt("Disable Value")
+		initial("1")
+		promptgroup(GUI_SCAN)
+	}
+	field(DISA,DBF_SHORT) {
+		prompt("Disable")
+	}
+	field(SDIS,DBF_INLINK) {
+		prompt("Scanning Disable")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(MLOK,DBF_NOACCESS) {
+		prompt("Monitor lock")
+		special(SPC_NOMOD)
+		extra("epicsMutexId	mlok")
+		interest(4)
+	}
+	field(MLIS,DBF_NOACCESS) {
+		prompt("Monitor List")
+		special(SPC_NOMOD)
+		extra("ELLLIST		mlis")
+		interest(4)
+	}
+	field(DISP,DBF_UCHAR) {
+		prompt("Disable putField")
+	}
+	field(PROC,DBF_UCHAR) {
+		prompt("Force Processing")
+		pp(TRUE)
+		interest(3)
+	}
+	field(STAT,DBF_MENU) {
+		prompt("Alarm Status")
+		initial("UDF")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+	}
+	field(SEVR,DBF_MENU) {
+		prompt("Alarm Severity")
+		initial("INVALID")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+	}
+	field(NSTA,DBF_MENU) {
+		prompt("New Alarm Status")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+		interest(2)
+	}
+	field(NSEV,DBF_MENU) {
+		prompt("New Alarm Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKS,DBF_MENU) {
+		prompt("Alarm Ack Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKT,DBF_MENU) {
+		prompt("Alarm Ack Transient")
+		initial("YES")
+		promptgroup(GUI_ALARMS)
+		special(SPC_NOMOD)
+		menu(menuYesNo)
+		interest(2)
+	}
+	field(DISS,DBF_MENU) {
+		prompt("Disable Alarm Sevrty")
+		promptgroup(GUI_SCAN)
+		menu(menuAlarmSevr)
+		interest(1)
+	}
+	field(LCNT,DBF_UCHAR) {
+		prompt("Lock Count")
+		special(SPC_NOMOD)
+		interest(2)
+	}
+	field(PACT,DBF_UCHAR) {
+		prompt("Record active")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(PUTF,DBF_UCHAR) {
+		prompt("dbPutField process")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(RPRO,DBF_UCHAR) {
+		prompt("Reprocess ")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(ASP,DBF_NOACCESS) {
+		prompt("Access Security Pvt")
+		special(SPC_NOMOD)
+		extra("struct asgMember *asp")
+		interest(4)
+	}
+	field(PPN,DBF_NOACCESS) {
+		prompt("addr of PUTNOTIFY")
+		special(SPC_NOMOD)
+		extra("struct putNotify *ppn")
+		interest(4)
+	}
+	field(PPNR,DBF_NOACCESS) {
+		prompt("pputNotifyRecord")
+		special(SPC_NOMOD)
+		extra("struct putNotifyRecord *ppnr")
+		interest(4)
+	}
+	field(SPVT,DBF_NOACCESS) {
+		prompt("Scan Private")
+		special(SPC_NOMOD)
+		extra("struct scan_element *spvt")
+		interest(4)
+	}
+	field(RSET,DBF_NOACCESS) {
+		prompt("Address of RSET")
+		special(SPC_NOMOD)
+		extra("struct rset	*rset")
+		interest(4)
+	}
+	field(DSET,DBF_NOACCESS) {
+		prompt("DSET address")
+		special(SPC_NOMOD)
+		extra("struct dset	*dset")
+		interest(4)
+	}
+	field(DPVT,DBF_NOACCESS) {
+		prompt("Device Private")
+		special(SPC_NOMOD)
+		extra("void		*dpvt")
+		interest(4)
+	}
+	field(RDES,DBF_NOACCESS) {
+		prompt("Address of dbRecordType")
+		special(SPC_NOMOD)
+		extra("struct dbRecordType *rdes")
+		interest(4)
+	}
+	field(LSET,DBF_NOACCESS) {
+		prompt("Lock Set")
+		special(SPC_NOMOD)
+		extra("struct lockRecord *lset")
+		interest(4)
+	}
+	field(PRIO,DBF_MENU) {
+		prompt("Scheduling Priority")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuPriority)
+		interest(1)
+	}
+	field(TPRO,DBF_UCHAR) {
+		prompt("Trace Processing")
+	}
+	field(BKPT,DBF_NOACCESS) {
+		prompt("Break Point")
+		special(SPC_NOMOD)
+		extra("char bkpt")
+		interest(1)
+	}
+	field(UDF,DBF_UCHAR) {
+		prompt("Undefined")
+		initial("1")
+		promptgroup(GUI_COMMON)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TIME,DBF_NOACCESS) {
+		prompt("Time")
+		special(SPC_NOMOD)
+		extra("epicsTimeStamp	time")
+		interest(2)
+	}
+	field(FLNK,DBF_FWDLINK) {
+		prompt("Forward Process Link")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(VAL,DBF_LONG) {
+		prompt("Desired Output")
+		promptgroup(GUI_OUTPUT)
+		pp(TRUE)
+		asl(ASL0)
+	}
+	field(OUT,DBF_OUTLINK) {
+		prompt("Output Specification")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(DOL,DBF_INLINK) {
+		prompt("Desired Output Loc")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(OMSL,DBF_MENU) {
+		prompt("Output Mode Select")
+		promptgroup(GUI_OUTPUT)
+		menu(menuOmsl)
+		interest(1)
+	}
+	field(EGU,DBF_STRING) {
+		prompt("Units name")
+		promptgroup(GUI_DISPLAY)
+		size(16)
+		interest(1)
+	}
+	field(DRVH,DBF_LONG) {
+		prompt("Drive High Limit")
+		promptgroup(GUI_OUTPUT)
+		pp(TRUE)
+		interest(1)
+	}
+	field(DRVL,DBF_LONG) {
+		prompt("Drive Low Limit")
+		promptgroup(GUI_OUTPUT)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HOPR,DBF_LONG) {
+		prompt("High Operating Range")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(LOPR,DBF_LONG) {
+		prompt("Low Operating Range")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(HIHI,DBF_LONG) {
+		prompt("Hihi Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LOLO,DBF_LONG) {
+		prompt("Lolo Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HIGH,DBF_LONG) {
+		prompt("High Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LOW,DBF_LONG) {
+		prompt("Low Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HHSV,DBF_MENU) {
+		prompt("Hihi Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LLSV,DBF_MENU) {
+		prompt("Lolo Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HSV,DBF_MENU) {
+		prompt("High Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LSV,DBF_MENU) {
+		prompt("Low Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HYST,DBF_LONG) {
+		prompt("Alarm Deadband")
+		promptgroup(GUI_ALARMS)
+		interest(1)
+	}
+	field(ADEL,DBF_LONG) {
+		prompt("Archive Deadband")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(MDEL,DBF_LONG) {
+		prompt("Monitor Deadband")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(LALM,DBF_LONG) {
+		prompt("Last Value Alarmed")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(ALST,DBF_LONG) {
+		prompt("Last Value Archived")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(MLST,DBF_LONG) {
+		prompt("Last Val Monitored")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(SIOL,DBF_OUTLINK) {
+		prompt("Sim Output Specifctn")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(SIML,DBF_INLINK) {
+		prompt("Sim Mode Location")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(SIMM,DBF_MENU) {
+		prompt("Simulation Mode")
+		menu(menuYesNo)
+		interest(1)
+	}
+	field(SIMS,DBF_MENU) {
+		prompt("Sim mode Alarm Svrty")
+		promptgroup(GUI_INPUTS)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(IVOA,DBF_MENU) {
+		prompt("INVALID output action")
+		promptgroup(GUI_OUTPUT)
+		menu(menuIvoa)
+		interest(2)
+	}
+	field(IVOV,DBF_LONG) {
+		prompt("INVALID output value")
+		promptgroup(GUI_OUTPUT)
+		interest(2)
+	}
+}
+recordtype(mbbi) {
+	field(NAME,DBF_STRING) {
+		prompt("Record Name")
+		special(SPC_NOMOD)
+		size(61)
+	}
+	field(DESC,DBF_STRING) {
+		prompt("Descriptor")
+		promptgroup(GUI_COMMON)
+		size(41)
+	}
+	field(ASG,DBF_STRING) {
+		prompt("Access Security Group")
+		promptgroup(GUI_COMMON)
+		special(SPC_AS)
+		size(29)
+	}
+	field(SCAN,DBF_MENU) {
+		prompt("Scan Mechanism")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuScan)
+		interest(1)
+	}
+	field(PINI,DBF_MENU) {
+		prompt("Process at iocInit")
+		promptgroup(GUI_SCAN)
+		menu(menuPini)
+		interest(1)
+	}
+	field(PHAS,DBF_SHORT) {
+		prompt("Scan Phase")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(EVNT,DBF_SHORT) {
+		prompt("Event Number")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(TSE,DBF_SHORT) {
+		prompt("Time Stamp Event")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(TSEL,DBF_INLINK) {
+		prompt("Time Stamp Link")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(DTYP,DBF_DEVICE) {
+		prompt("Device Type")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(DISV,DBF_SHORT) {
+		prompt("Disable Value")
+		initial("1")
+		promptgroup(GUI_SCAN)
+	}
+	field(DISA,DBF_SHORT) {
+		prompt("Disable")
+	}
+	field(SDIS,DBF_INLINK) {
+		prompt("Scanning Disable")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(MLOK,DBF_NOACCESS) {
+		prompt("Monitor lock")
+		special(SPC_NOMOD)
+		extra("epicsMutexId	mlok")
+		interest(4)
+	}
+	field(MLIS,DBF_NOACCESS) {
+		prompt("Monitor List")
+		special(SPC_NOMOD)
+		extra("ELLLIST		mlis")
+		interest(4)
+	}
+	field(DISP,DBF_UCHAR) {
+		prompt("Disable putField")
+	}
+	field(PROC,DBF_UCHAR) {
+		prompt("Force Processing")
+		pp(TRUE)
+		interest(3)
+	}
+	field(STAT,DBF_MENU) {
+		prompt("Alarm Status")
+		initial("UDF")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+	}
+	field(SEVR,DBF_MENU) {
+		prompt("Alarm Severity")
+		initial("INVALID")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+	}
+	field(NSTA,DBF_MENU) {
+		prompt("New Alarm Status")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+		interest(2)
+	}
+	field(NSEV,DBF_MENU) {
+		prompt("New Alarm Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKS,DBF_MENU) {
+		prompt("Alarm Ack Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKT,DBF_MENU) {
+		prompt("Alarm Ack Transient")
+		initial("YES")
+		promptgroup(GUI_ALARMS)
+		special(SPC_NOMOD)
+		menu(menuYesNo)
+		interest(2)
+	}
+	field(DISS,DBF_MENU) {
+		prompt("Disable Alarm Sevrty")
+		promptgroup(GUI_SCAN)
+		menu(menuAlarmSevr)
+		interest(1)
+	}
+	field(LCNT,DBF_UCHAR) {
+		prompt("Lock Count")
+		special(SPC_NOMOD)
+		interest(2)
+	}
+	field(PACT,DBF_UCHAR) {
+		prompt("Record active")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(PUTF,DBF_UCHAR) {
+		prompt("dbPutField process")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(RPRO,DBF_UCHAR) {
+		prompt("Reprocess ")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(ASP,DBF_NOACCESS) {
+		prompt("Access Security Pvt")
+		special(SPC_NOMOD)
+		extra("struct asgMember *asp")
+		interest(4)
+	}
+	field(PPN,DBF_NOACCESS) {
+		prompt("addr of PUTNOTIFY")
+		special(SPC_NOMOD)
+		extra("struct putNotify *ppn")
+		interest(4)
+	}
+	field(PPNR,DBF_NOACCESS) {
+		prompt("pputNotifyRecord")
+		special(SPC_NOMOD)
+		extra("struct putNotifyRecord *ppnr")
+		interest(4)
+	}
+	field(SPVT,DBF_NOACCESS) {
+		prompt("Scan Private")
+		special(SPC_NOMOD)
+		extra("struct scan_element *spvt")
+		interest(4)
+	}
+	field(RSET,DBF_NOACCESS) {
+		prompt("Address of RSET")
+		special(SPC_NOMOD)
+		extra("struct rset	*rset")
+		interest(4)
+	}
+	field(DSET,DBF_NOACCESS) {
+		prompt("DSET address")
+		special(SPC_NOMOD)
+		extra("struct dset	*dset")
+		interest(4)
+	}
+	field(DPVT,DBF_NOACCESS) {
+		prompt("Device Private")
+		special(SPC_NOMOD)
+		extra("void		*dpvt")
+		interest(4)
+	}
+	field(RDES,DBF_NOACCESS) {
+		prompt("Address of dbRecordType")
+		special(SPC_NOMOD)
+		extra("struct dbRecordType *rdes")
+		interest(4)
+	}
+	field(LSET,DBF_NOACCESS) {
+		prompt("Lock Set")
+		special(SPC_NOMOD)
+		extra("struct lockRecord *lset")
+		interest(4)
+	}
+	field(PRIO,DBF_MENU) {
+		prompt("Scheduling Priority")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuPriority)
+		interest(1)
+	}
+	field(TPRO,DBF_UCHAR) {
+		prompt("Trace Processing")
+	}
+	field(BKPT,DBF_NOACCESS) {
+		prompt("Break Point")
+		special(SPC_NOMOD)
+		extra("char bkpt")
+		interest(1)
+	}
+	field(UDF,DBF_UCHAR) {
+		prompt("Undefined")
+		initial("1")
+		promptgroup(GUI_COMMON)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TIME,DBF_NOACCESS) {
+		prompt("Time")
+		special(SPC_NOMOD)
+		extra("epicsTimeStamp	time")
+		interest(2)
+	}
+	field(FLNK,DBF_FWDLINK) {
+		prompt("Forward Process Link")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(VAL,DBF_ENUM) {
+		prompt("Current Value")
+		promptgroup(GUI_INPUTS)
+		pp(TRUE)
+		asl(ASL0)
+	}
+	field(NOBT,DBF_SHORT) {
+		prompt("Number of Bits")
+		promptgroup(GUI_MBB)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(INP,DBF_INLINK) {
+		prompt("Input Specification")
+		promptgroup(GUI_MBB)
+		interest(1)
+	}
+	field(ZRVL,DBF_ULONG) {
+		prompt("Zero Value")
+		promptgroup(GUI_BITS1)
+		special(100)
+		pp(TRUE)
+		base(HEX)
+		interest(1)
+	}
+	field(ONVL,DBF_ULONG) {
+		prompt("One Value")
+		promptgroup(GUI_BITS1)
+		special(100)
+		pp(TRUE)
+		base(HEX)
+		interest(1)
+	}
+	field(TWVL,DBF_ULONG) {
+		prompt("Two Value")
+		promptgroup(GUI_BITS1)
+		special(100)
+		pp(TRUE)
+		base(HEX)
+		interest(1)
+	}
+	field(THVL,DBF_ULONG) {
+		prompt("Three Value")
+		promptgroup(GUI_BITS1)
+		special(100)
+		pp(TRUE)
+		base(HEX)
+		interest(1)
+	}
+	field(FRVL,DBF_ULONG) {
+		prompt("Four Value")
+		promptgroup(GUI_BITS1)
+		special(100)
+		pp(TRUE)
+		base(HEX)
+		interest(1)
+	}
+	field(FVVL,DBF_ULONG) {
+		prompt("Five Value")
+		promptgroup(GUI_BITS1)
+		special(100)
+		pp(TRUE)
+		base(HEX)
+		interest(1)
+	}
+	field(SXVL,DBF_ULONG) {
+		prompt("Six Value")
+		promptgroup(GUI_BITS1)
+		special(100)
+		pp(TRUE)
+		base(HEX)
+		interest(1)
+	}
+	field(SVVL,DBF_ULONG) {
+		prompt("Seven Value")
+		promptgroup(GUI_BITS1)
+		special(100)
+		pp(TRUE)
+		base(HEX)
+		interest(1)
+	}
+	field(EIVL,DBF_ULONG) {
+		prompt("Eight Value")
+		promptgroup(GUI_BITS2)
+		special(100)
+		pp(TRUE)
+		base(HEX)
+		interest(1)
+	}
+	field(NIVL,DBF_ULONG) {
+		prompt("Nine Value")
+		promptgroup(GUI_BITS2)
+		special(100)
+		pp(TRUE)
+		base(HEX)
+		interest(1)
+	}
+	field(TEVL,DBF_ULONG) {
+		prompt("Ten Value")
+		promptgroup(GUI_BITS2)
+		special(100)
+		pp(TRUE)
+		base(HEX)
+		interest(1)
+	}
+	field(ELVL,DBF_ULONG) {
+		prompt("Eleven Value")
+		promptgroup(GUI_BITS2)
+		special(100)
+		pp(TRUE)
+		base(HEX)
+		interest(1)
+	}
+	field(TVVL,DBF_ULONG) {
+		prompt("Twelve Value")
+		promptgroup(GUI_BITS2)
+		special(100)
+		pp(TRUE)
+		base(HEX)
+		interest(1)
+	}
+	field(TTVL,DBF_ULONG) {
+		prompt("Thirteen Value")
+		promptgroup(GUI_BITS2)
+		special(100)
+		pp(TRUE)
+		base(HEX)
+		interest(1)
+	}
+	field(FTVL,DBF_ULONG) {
+		prompt("Fourteen Value")
+		promptgroup(GUI_BITS2)
+		special(100)
+		pp(TRUE)
+		base(HEX)
+		interest(1)
+	}
+	field(FFVL,DBF_ULONG) {
+		prompt("Fifteen Value")
+		promptgroup(GUI_BITS2)
+		special(100)
+		pp(TRUE)
+		base(HEX)
+		interest(1)
+	}
+	field(ZRST,DBF_STRING) {
+		prompt("Zero String")
+		promptgroup(GUI_BITS1)
+		special(100)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(ONST,DBF_STRING) {
+		prompt("One String")
+		promptgroup(GUI_BITS1)
+		special(100)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TWST,DBF_STRING) {
+		prompt("Two String")
+		promptgroup(GUI_BITS1)
+		special(100)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(THST,DBF_STRING) {
+		prompt("Three String")
+		promptgroup(GUI_BITS1)
+		special(100)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(FRST,DBF_STRING) {
+		prompt("Four String")
+		promptgroup(GUI_BITS1)
+		special(100)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(FVST,DBF_STRING) {
+		prompt("Five String")
+		promptgroup(GUI_BITS1)
+		special(100)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(SXST,DBF_STRING) {
+		prompt("Six String")
+		promptgroup(GUI_BITS1)
+		special(100)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(SVST,DBF_STRING) {
+		prompt("Seven String")
+		promptgroup(GUI_BITS1)
+		special(100)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(EIST,DBF_STRING) {
+		prompt("Eight String")
+		promptgroup(GUI_BITS2)
+		special(100)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(NIST,DBF_STRING) {
+		prompt("Nine String")
+		promptgroup(GUI_BITS2)
+		special(100)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TEST,DBF_STRING) {
+		prompt("Ten String")
+		promptgroup(GUI_BITS2)
+		special(100)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(ELST,DBF_STRING) {
+		prompt("Eleven String")
+		promptgroup(GUI_BITS2)
+		special(100)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TVST,DBF_STRING) {
+		prompt("Twelve String")
+		promptgroup(GUI_BITS2)
+		special(100)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TTST,DBF_STRING) {
+		prompt("Thirteen String")
+		promptgroup(GUI_BITS2)
+		special(100)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(FTST,DBF_STRING) {
+		prompt("Fourteen String")
+		promptgroup(GUI_BITS2)
+		special(100)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(FFST,DBF_STRING) {
+		prompt("Fifteen String")
+		promptgroup(GUI_BITS2)
+		special(100)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(ZRSV,DBF_MENU) {
+		prompt("State Zero Severity")
+		promptgroup(GUI_BITS1)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(ONSV,DBF_MENU) {
+		prompt("State One Severity")
+		promptgroup(GUI_BITS1)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TWSV,DBF_MENU) {
+		prompt("State Two Severity")
+		promptgroup(GUI_BITS1)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(THSV,DBF_MENU) {
+		prompt("State Three Severity")
+		promptgroup(GUI_BITS1)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(FRSV,DBF_MENU) {
+		prompt("State Four Severity")
+		promptgroup(GUI_BITS1)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(FVSV,DBF_MENU) {
+		prompt("State Five Severity")
+		promptgroup(GUI_BITS1)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(SXSV,DBF_MENU) {
+		prompt("State Six Severity")
+		promptgroup(GUI_BITS1)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(SVSV,DBF_MENU) {
+		prompt("State Seven Severity")
+		promptgroup(GUI_BITS1)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(EISV,DBF_MENU) {
+		prompt("State Eight Severity")
+		promptgroup(GUI_BITS2)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(NISV,DBF_MENU) {
+		prompt("State Nine Severity")
+		promptgroup(GUI_BITS2)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TESV,DBF_MENU) {
+		prompt("State Ten Severity")
+		promptgroup(GUI_BITS2)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(ELSV,DBF_MENU) {
+		prompt("State Eleven Severity")
+		promptgroup(GUI_BITS2)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TVSV,DBF_MENU) {
+		prompt("State Twelve Severity")
+		promptgroup(GUI_BITS2)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TTSV,DBF_MENU) {
+		prompt("State Thirteen Sevr")
+		promptgroup(GUI_BITS2)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(FTSV,DBF_MENU) {
+		prompt("State Fourteen Sevr")
+		promptgroup(GUI_BITS2)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(FFSV,DBF_MENU) {
+		prompt("State Fifteen Severity")
+		promptgroup(GUI_BITS2)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(UNSV,DBF_MENU) {
+		prompt("Unknown State Severity")
+		promptgroup(GUI_MBB)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(COSV,DBF_MENU) {
+		prompt("Change of State Svr")
+		promptgroup(GUI_MBB)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(RVAL,DBF_ULONG) {
+		prompt("Raw Value")
+		pp(TRUE)
+	}
+	field(ORAW,DBF_ULONG) {
+		prompt("Prev Raw Value")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(MASK,DBF_ULONG) {
+		prompt("Hardware Mask")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(MLST,DBF_USHORT) {
+		prompt("Last Value Monitored")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LALM,DBF_USHORT) {
+		prompt("Last Value Alarmed")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(SDEF,DBF_SHORT) {
+		prompt("States Defined")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(SHFT,DBF_USHORT) {
+		prompt("Shift")
+		promptgroup(GUI_MBB)
+		interest(1)
+	}
+	field(SIOL,DBF_INLINK) {
+		prompt("Sim Input Specifctn")
+		promptgroup(GUI_MBB)
+		interest(1)
+	}
+	field(SVAL,DBF_ULONG) {
+		prompt("Simulation Value")
+	}
+	field(SIML,DBF_INLINK) {
+		prompt("Sim Mode Location")
+		promptgroup(GUI_MBB)
+		interest(1)
+	}
+	field(SIMM,DBF_MENU) {
+		prompt("Simulation Mode")
+		menu(menuSimm)
+		interest(1)
+	}
+	field(SIMS,DBF_MENU) {
+		prompt("Sim mode Alarm Svrty")
+		promptgroup(GUI_MBB)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+}
+recordtype(mbbiDirect) {
+	field(NAME,DBF_STRING) {
+		prompt("Record Name")
+		special(SPC_NOMOD)
+		size(61)
+	}
+	field(DESC,DBF_STRING) {
+		prompt("Descriptor")
+		promptgroup(GUI_COMMON)
+		size(41)
+	}
+	field(ASG,DBF_STRING) {
+		prompt("Access Security Group")
+		promptgroup(GUI_COMMON)
+		special(SPC_AS)
+		size(29)
+	}
+	field(SCAN,DBF_MENU) {
+		prompt("Scan Mechanism")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuScan)
+		interest(1)
+	}
+	field(PINI,DBF_MENU) {
+		prompt("Process at iocInit")
+		promptgroup(GUI_SCAN)
+		menu(menuPini)
+		interest(1)
+	}
+	field(PHAS,DBF_SHORT) {
+		prompt("Scan Phase")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(EVNT,DBF_SHORT) {
+		prompt("Event Number")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(TSE,DBF_SHORT) {
+		prompt("Time Stamp Event")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(TSEL,DBF_INLINK) {
+		prompt("Time Stamp Link")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(DTYP,DBF_DEVICE) {
+		prompt("Device Type")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(DISV,DBF_SHORT) {
+		prompt("Disable Value")
+		initial("1")
+		promptgroup(GUI_SCAN)
+	}
+	field(DISA,DBF_SHORT) {
+		prompt("Disable")
+	}
+	field(SDIS,DBF_INLINK) {
+		prompt("Scanning Disable")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(MLOK,DBF_NOACCESS) {
+		prompt("Monitor lock")
+		special(SPC_NOMOD)
+		extra("epicsMutexId	mlok")
+		interest(4)
+	}
+	field(MLIS,DBF_NOACCESS) {
+		prompt("Monitor List")
+		special(SPC_NOMOD)
+		extra("ELLLIST		mlis")
+		interest(4)
+	}
+	field(DISP,DBF_UCHAR) {
+		prompt("Disable putField")
+	}
+	field(PROC,DBF_UCHAR) {
+		prompt("Force Processing")
+		pp(TRUE)
+		interest(3)
+	}
+	field(STAT,DBF_MENU) {
+		prompt("Alarm Status")
+		initial("UDF")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+	}
+	field(SEVR,DBF_MENU) {
+		prompt("Alarm Severity")
+		initial("INVALID")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+	}
+	field(NSTA,DBF_MENU) {
+		prompt("New Alarm Status")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+		interest(2)
+	}
+	field(NSEV,DBF_MENU) {
+		prompt("New Alarm Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKS,DBF_MENU) {
+		prompt("Alarm Ack Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKT,DBF_MENU) {
+		prompt("Alarm Ack Transient")
+		initial("YES")
+		promptgroup(GUI_ALARMS)
+		special(SPC_NOMOD)
+		menu(menuYesNo)
+		interest(2)
+	}
+	field(DISS,DBF_MENU) {
+		prompt("Disable Alarm Sevrty")
+		promptgroup(GUI_SCAN)
+		menu(menuAlarmSevr)
+		interest(1)
+	}
+	field(LCNT,DBF_UCHAR) {
+		prompt("Lock Count")
+		special(SPC_NOMOD)
+		interest(2)
+	}
+	field(PACT,DBF_UCHAR) {
+		prompt("Record active")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(PUTF,DBF_UCHAR) {
+		prompt("dbPutField process")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(RPRO,DBF_UCHAR) {
+		prompt("Reprocess ")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(ASP,DBF_NOACCESS) {
+		prompt("Access Security Pvt")
+		special(SPC_NOMOD)
+		extra("struct asgMember *asp")
+		interest(4)
+	}
+	field(PPN,DBF_NOACCESS) {
+		prompt("addr of PUTNOTIFY")
+		special(SPC_NOMOD)
+		extra("struct putNotify *ppn")
+		interest(4)
+	}
+	field(PPNR,DBF_NOACCESS) {
+		prompt("pputNotifyRecord")
+		special(SPC_NOMOD)
+		extra("struct putNotifyRecord *ppnr")
+		interest(4)
+	}
+	field(SPVT,DBF_NOACCESS) {
+		prompt("Scan Private")
+		special(SPC_NOMOD)
+		extra("struct scan_element *spvt")
+		interest(4)
+	}
+	field(RSET,DBF_NOACCESS) {
+		prompt("Address of RSET")
+		special(SPC_NOMOD)
+		extra("struct rset	*rset")
+		interest(4)
+	}
+	field(DSET,DBF_NOACCESS) {
+		prompt("DSET address")
+		special(SPC_NOMOD)
+		extra("struct dset	*dset")
+		interest(4)
+	}
+	field(DPVT,DBF_NOACCESS) {
+		prompt("Device Private")
+		special(SPC_NOMOD)
+		extra("void		*dpvt")
+		interest(4)
+	}
+	field(RDES,DBF_NOACCESS) {
+		prompt("Address of dbRecordType")
+		special(SPC_NOMOD)
+		extra("struct dbRecordType *rdes")
+		interest(4)
+	}
+	field(LSET,DBF_NOACCESS) {
+		prompt("Lock Set")
+		special(SPC_NOMOD)
+		extra("struct lockRecord *lset")
+		interest(4)
+	}
+	field(PRIO,DBF_MENU) {
+		prompt("Scheduling Priority")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuPriority)
+		interest(1)
+	}
+	field(TPRO,DBF_UCHAR) {
+		prompt("Trace Processing")
+	}
+	field(BKPT,DBF_NOACCESS) {
+		prompt("Break Point")
+		special(SPC_NOMOD)
+		extra("char bkpt")
+		interest(1)
+	}
+	field(UDF,DBF_UCHAR) {
+		prompt("Undefined")
+		initial("1")
+		promptgroup(GUI_COMMON)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TIME,DBF_NOACCESS) {
+		prompt("Time")
+		special(SPC_NOMOD)
+		extra("epicsTimeStamp	time")
+		interest(2)
+	}
+	field(FLNK,DBF_FWDLINK) {
+		prompt("Forward Process Link")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(VAL,DBF_USHORT) {
+		prompt("Current Value")
+		promptgroup(GUI_INPUTS)
+		pp(TRUE)
+		asl(ASL0)
+	}
+	field(NOBT,DBF_SHORT) {
+		prompt("Number of Bits")
+		promptgroup(GUI_MBB)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(INP,DBF_INLINK) {
+		prompt("Input Specification")
+		promptgroup(GUI_MBB)
+		interest(1)
+	}
+	field(RVAL,DBF_ULONG) {
+		prompt("Raw Value")
+		pp(TRUE)
+	}
+	field(ORAW,DBF_ULONG) {
+		prompt("Prev Raw Value")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(MASK,DBF_ULONG) {
+		prompt("Hardware Mask")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(MLST,DBF_USHORT) {
+		prompt("Last Value Monitored")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LALM,DBF_USHORT) {
+		prompt("Last Value Alarmed")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(SDEF,DBF_SHORT) {
+		prompt("States Defined")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(SHFT,DBF_USHORT) {
+		prompt("Shift")
+		promptgroup(GUI_MBB)
+		interest(1)
+	}
+	field(SIOL,DBF_INLINK) {
+		prompt("Sim Input Specifctn")
+		promptgroup(GUI_MBB)
+		interest(1)
+	}
+	field(SVAL,DBF_ULONG) {
+		prompt("Simulation Value")
+	}
+	field(SIML,DBF_INLINK) {
+		prompt("Sim Mode Location")
+		promptgroup(GUI_MBB)
+		interest(1)
+	}
+	field(SIMM,DBF_MENU) {
+		prompt("Simulation Mode")
+		menu(menuSimm)
+		interest(1)
+	}
+	field(SIMS,DBF_MENU) {
+		prompt("Sim mode Alarm Svrty")
+		promptgroup(GUI_MBB)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(B0,DBF_UCHAR) {
+		prompt("Bit 0")
+		pp(TRUE)
+		interest(1)
+	}
+	field(B1,DBF_UCHAR) {
+		prompt("Bit 1")
+		pp(TRUE)
+		interest(1)
+	}
+	field(B2,DBF_UCHAR) {
+		prompt("Bit 2")
+		pp(TRUE)
+		interest(1)
+	}
+	field(B3,DBF_UCHAR) {
+		prompt("Bit 3")
+		pp(TRUE)
+		interest(1)
+	}
+	field(B4,DBF_UCHAR) {
+		prompt("Bit 4")
+		pp(TRUE)
+		interest(1)
+	}
+	field(B5,DBF_UCHAR) {
+		prompt("Bit 5")
+		pp(TRUE)
+		interest(1)
+	}
+	field(B6,DBF_UCHAR) {
+		prompt("Bit 6")
+		pp(TRUE)
+		interest(1)
+	}
+	field(B7,DBF_UCHAR) {
+		prompt("Bit 7")
+		pp(TRUE)
+		interest(1)
+	}
+	field(B8,DBF_UCHAR) {
+		prompt("Bit 8")
+		pp(TRUE)
+		interest(1)
+	}
+	field(B9,DBF_UCHAR) {
+		prompt("Bit 9")
+		pp(TRUE)
+		interest(1)
+	}
+	field(BA,DBF_UCHAR) {
+		prompt("Bit A")
+		pp(TRUE)
+		interest(1)
+	}
+	field(BB,DBF_UCHAR) {
+		prompt("Bit B")
+		pp(TRUE)
+		interest(1)
+	}
+	field(BC,DBF_UCHAR) {
+		prompt("Bit C")
+		pp(TRUE)
+		interest(1)
+	}
+	field(BD,DBF_UCHAR) {
+		prompt("Bit D")
+		pp(TRUE)
+		interest(1)
+	}
+	field(BE,DBF_UCHAR) {
+		prompt("Bit E")
+		pp(TRUE)
+		interest(1)
+	}
+	field(BF,DBF_UCHAR) {
+		prompt("Bit F")
+		pp(TRUE)
+		interest(1)
+	}
+}
+recordtype(mbbo) {
+	field(NAME,DBF_STRING) {
+		prompt("Record Name")
+		special(SPC_NOMOD)
+		size(61)
+	}
+	field(DESC,DBF_STRING) {
+		prompt("Descriptor")
+		promptgroup(GUI_COMMON)
+		size(41)
+	}
+	field(ASG,DBF_STRING) {
+		prompt("Access Security Group")
+		promptgroup(GUI_COMMON)
+		special(SPC_AS)
+		size(29)
+	}
+	field(SCAN,DBF_MENU) {
+		prompt("Scan Mechanism")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuScan)
+		interest(1)
+	}
+	field(PINI,DBF_MENU) {
+		prompt("Process at iocInit")
+		promptgroup(GUI_SCAN)
+		menu(menuPini)
+		interest(1)
+	}
+	field(PHAS,DBF_SHORT) {
+		prompt("Scan Phase")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(EVNT,DBF_SHORT) {
+		prompt("Event Number")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(TSE,DBF_SHORT) {
+		prompt("Time Stamp Event")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(TSEL,DBF_INLINK) {
+		prompt("Time Stamp Link")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(DTYP,DBF_DEVICE) {
+		prompt("Device Type")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(DISV,DBF_SHORT) {
+		prompt("Disable Value")
+		initial("1")
+		promptgroup(GUI_SCAN)
+	}
+	field(DISA,DBF_SHORT) {
+		prompt("Disable")
+	}
+	field(SDIS,DBF_INLINK) {
+		prompt("Scanning Disable")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(MLOK,DBF_NOACCESS) {
+		prompt("Monitor lock")
+		special(SPC_NOMOD)
+		extra("epicsMutexId	mlok")
+		interest(4)
+	}
+	field(MLIS,DBF_NOACCESS) {
+		prompt("Monitor List")
+		special(SPC_NOMOD)
+		extra("ELLLIST		mlis")
+		interest(4)
+	}
+	field(DISP,DBF_UCHAR) {
+		prompt("Disable putField")
+	}
+	field(PROC,DBF_UCHAR) {
+		prompt("Force Processing")
+		pp(TRUE)
+		interest(3)
+	}
+	field(STAT,DBF_MENU) {
+		prompt("Alarm Status")
+		initial("UDF")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+	}
+	field(SEVR,DBF_MENU) {
+		prompt("Alarm Severity")
+		initial("INVALID")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+	}
+	field(NSTA,DBF_MENU) {
+		prompt("New Alarm Status")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+		interest(2)
+	}
+	field(NSEV,DBF_MENU) {
+		prompt("New Alarm Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKS,DBF_MENU) {
+		prompt("Alarm Ack Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKT,DBF_MENU) {
+		prompt("Alarm Ack Transient")
+		initial("YES")
+		promptgroup(GUI_ALARMS)
+		special(SPC_NOMOD)
+		menu(menuYesNo)
+		interest(2)
+	}
+	field(DISS,DBF_MENU) {
+		prompt("Disable Alarm Sevrty")
+		promptgroup(GUI_SCAN)
+		menu(menuAlarmSevr)
+		interest(1)
+	}
+	field(LCNT,DBF_UCHAR) {
+		prompt("Lock Count")
+		special(SPC_NOMOD)
+		interest(2)
+	}
+	field(PACT,DBF_UCHAR) {
+		prompt("Record active")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(PUTF,DBF_UCHAR) {
+		prompt("dbPutField process")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(RPRO,DBF_UCHAR) {
+		prompt("Reprocess ")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(ASP,DBF_NOACCESS) {
+		prompt("Access Security Pvt")
+		special(SPC_NOMOD)
+		extra("struct asgMember *asp")
+		interest(4)
+	}
+	field(PPN,DBF_NOACCESS) {
+		prompt("addr of PUTNOTIFY")
+		special(SPC_NOMOD)
+		extra("struct putNotify *ppn")
+		interest(4)
+	}
+	field(PPNR,DBF_NOACCESS) {
+		prompt("pputNotifyRecord")
+		special(SPC_NOMOD)
+		extra("struct putNotifyRecord *ppnr")
+		interest(4)
+	}
+	field(SPVT,DBF_NOACCESS) {
+		prompt("Scan Private")
+		special(SPC_NOMOD)
+		extra("struct scan_element *spvt")
+		interest(4)
+	}
+	field(RSET,DBF_NOACCESS) {
+		prompt("Address of RSET")
+		special(SPC_NOMOD)
+		extra("struct rset	*rset")
+		interest(4)
+	}
+	field(DSET,DBF_NOACCESS) {
+		prompt("DSET address")
+		special(SPC_NOMOD)
+		extra("struct dset	*dset")
+		interest(4)
+	}
+	field(DPVT,DBF_NOACCESS) {
+		prompt("Device Private")
+		special(SPC_NOMOD)
+		extra("void		*dpvt")
+		interest(4)
+	}
+	field(RDES,DBF_NOACCESS) {
+		prompt("Address of dbRecordType")
+		special(SPC_NOMOD)
+		extra("struct dbRecordType *rdes")
+		interest(4)
+	}
+	field(LSET,DBF_NOACCESS) {
+		prompt("Lock Set")
+		special(SPC_NOMOD)
+		extra("struct lockRecord *lset")
+		interest(4)
+	}
+	field(PRIO,DBF_MENU) {
+		prompt("Scheduling Priority")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuPriority)
+		interest(1)
+	}
+	field(TPRO,DBF_UCHAR) {
+		prompt("Trace Processing")
+	}
+	field(BKPT,DBF_NOACCESS) {
+		prompt("Break Point")
+		special(SPC_NOMOD)
+		extra("char bkpt")
+		interest(1)
+	}
+	field(UDF,DBF_UCHAR) {
+		prompt("Undefined")
+		initial("1")
+		promptgroup(GUI_COMMON)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TIME,DBF_NOACCESS) {
+		prompt("Time")
+		special(SPC_NOMOD)
+		extra("epicsTimeStamp	time")
+		interest(2)
+	}
+	field(FLNK,DBF_FWDLINK) {
+		prompt("Forward Process Link")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(VAL,DBF_ENUM) {
+		prompt("Desired Value")
+		promptgroup(GUI_OUTPUT)
+		special(SPC_DBADDR)
+		pp(TRUE)
+		asl(ASL0)
+	}
+	field(DOL,DBF_INLINK) {
+		prompt("Desired Output Loc")
+		promptgroup(GUI_MBB)
+		interest(1)
+	}
+	field(OMSL,DBF_MENU) {
+		prompt("Output Mode Select")
+		promptgroup(GUI_MBB)
+		menu(menuOmsl)
+		interest(1)
+	}
+	field(NOBT,DBF_SHORT) {
+		prompt("Number of Bits")
+		promptgroup(GUI_MBB)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(OUT,DBF_OUTLINK) {
+		prompt("Output Specification")
+		promptgroup(GUI_MBB)
+		interest(1)
+	}
+	field(ZRVL,DBF_ULONG) {
+		prompt("Zero Value")
+		promptgroup(GUI_BITS1)
+		special(100)
+		pp(TRUE)
+		base(HEX)
+		interest(1)
+	}
+	field(ONVL,DBF_ULONG) {
+		prompt("One Value")
+		promptgroup(GUI_BITS1)
+		special(100)
+		pp(TRUE)
+		base(HEX)
+		interest(1)
+	}
+	field(TWVL,DBF_ULONG) {
+		prompt("Two Value")
+		promptgroup(GUI_BITS1)
+		special(100)
+		pp(TRUE)
+		base(HEX)
+		interest(1)
+	}
+	field(THVL,DBF_ULONG) {
+		prompt("Three Value")
+		promptgroup(GUI_BITS1)
+		special(100)
+		pp(TRUE)
+		base(HEX)
+		interest(1)
+	}
+	field(FRVL,DBF_ULONG) {
+		prompt("Four Value")
+		promptgroup(GUI_BITS1)
+		special(100)
+		pp(TRUE)
+		base(HEX)
+		interest(1)
+	}
+	field(FVVL,DBF_ULONG) {
+		prompt("Five Value")
+		promptgroup(GUI_BITS1)
+		special(100)
+		pp(TRUE)
+		base(HEX)
+		interest(1)
+	}
+	field(SXVL,DBF_ULONG) {
+		prompt("Six Value")
+		promptgroup(GUI_BITS1)
+		special(100)
+		pp(TRUE)
+		base(HEX)
+		interest(1)
+	}
+	field(SVVL,DBF_ULONG) {
+		prompt("Seven Value")
+		promptgroup(GUI_BITS1)
+		special(100)
+		pp(TRUE)
+		base(HEX)
+		interest(1)
+	}
+	field(EIVL,DBF_ULONG) {
+		prompt("Eight Value")
+		promptgroup(GUI_BITS2)
+		special(100)
+		pp(TRUE)
+		base(HEX)
+		interest(1)
+	}
+	field(NIVL,DBF_ULONG) {
+		prompt("Nine Value")
+		promptgroup(GUI_BITS2)
+		special(100)
+		pp(TRUE)
+		base(HEX)
+		interest(1)
+	}
+	field(TEVL,DBF_ULONG) {
+		prompt("Ten Value")
+		promptgroup(GUI_BITS2)
+		special(100)
+		pp(TRUE)
+		base(HEX)
+		interest(1)
+	}
+	field(ELVL,DBF_ULONG) {
+		prompt("Eleven Value")
+		promptgroup(GUI_BITS2)
+		special(100)
+		pp(TRUE)
+		base(HEX)
+		interest(1)
+	}
+	field(TVVL,DBF_ULONG) {
+		prompt("Twelve Value")
+		promptgroup(GUI_BITS2)
+		special(100)
+		pp(TRUE)
+		base(HEX)
+		interest(1)
+	}
+	field(TTVL,DBF_ULONG) {
+		prompt("Thirteen Value")
+		promptgroup(GUI_BITS2)
+		special(100)
+		pp(TRUE)
+		base(HEX)
+		interest(1)
+	}
+	field(FTVL,DBF_ULONG) {
+		prompt("Fourteen Value")
+		promptgroup(GUI_BITS2)
+		special(100)
+		pp(TRUE)
+		base(HEX)
+		interest(1)
+	}
+	field(FFVL,DBF_ULONG) {
+		prompt("Fifteen Value")
+		promptgroup(GUI_BITS2)
+		special(100)
+		pp(TRUE)
+		base(HEX)
+		interest(1)
+	}
+	field(ZRST,DBF_STRING) {
+		prompt("Zero String")
+		promptgroup(GUI_BITS1)
+		special(100)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(ONST,DBF_STRING) {
+		prompt("One String")
+		promptgroup(GUI_BITS1)
+		special(100)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TWST,DBF_STRING) {
+		prompt("Two String")
+		promptgroup(GUI_BITS1)
+		special(100)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(THST,DBF_STRING) {
+		prompt("Three String")
+		promptgroup(GUI_BITS1)
+		special(100)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(FRST,DBF_STRING) {
+		prompt("Four String")
+		promptgroup(GUI_BITS1)
+		special(100)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(FVST,DBF_STRING) {
+		prompt("Five String")
+		promptgroup(GUI_BITS1)
+		special(100)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(SXST,DBF_STRING) {
+		prompt("Six String")
+		promptgroup(GUI_BITS1)
+		special(100)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(SVST,DBF_STRING) {
+		prompt("Seven String")
+		promptgroup(GUI_BITS1)
+		special(100)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(EIST,DBF_STRING) {
+		prompt("Eight String")
+		promptgroup(GUI_BITS2)
+		special(100)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(NIST,DBF_STRING) {
+		prompt("Nine String")
+		promptgroup(GUI_BITS2)
+		special(100)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TEST,DBF_STRING) {
+		prompt("Ten String")
+		promptgroup(GUI_BITS2)
+		special(100)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(ELST,DBF_STRING) {
+		prompt("Eleven String")
+		promptgroup(GUI_BITS2)
+		special(100)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TVST,DBF_STRING) {
+		prompt("Twelve String")
+		promptgroup(GUI_BITS2)
+		special(100)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TTST,DBF_STRING) {
+		prompt("Thirteen String")
+		promptgroup(GUI_BITS2)
+		special(100)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(FTST,DBF_STRING) {
+		prompt("Fourteen String")
+		promptgroup(GUI_BITS2)
+		special(100)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(FFST,DBF_STRING) {
+		prompt("Fifteen String")
+		promptgroup(GUI_BITS2)
+		special(100)
+		size(26)
+		pp(TRUE)
+		interest(1)
+	}
+	field(ZRSV,DBF_MENU) {
+		prompt("State Zero Severity")
+		promptgroup(GUI_BITS1)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(ONSV,DBF_MENU) {
+		prompt("State One Severity")
+		promptgroup(GUI_BITS1)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TWSV,DBF_MENU) {
+		prompt("State Two Severity")
+		promptgroup(GUI_BITS1)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(THSV,DBF_MENU) {
+		prompt("State Three Severity")
+		promptgroup(GUI_BITS1)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(FRSV,DBF_MENU) {
+		prompt("State Four Severity")
+		promptgroup(GUI_BITS1)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(FVSV,DBF_MENU) {
+		prompt("State Five Severity")
+		promptgroup(GUI_BITS1)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(SXSV,DBF_MENU) {
+		prompt("State Six Severity")
+		promptgroup(GUI_BITS1)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(SVSV,DBF_MENU) {
+		prompt("State Seven Severity")
+		promptgroup(GUI_BITS1)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(EISV,DBF_MENU) {
+		prompt("State Eight Severity")
+		promptgroup(GUI_BITS2)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(NISV,DBF_MENU) {
+		prompt("State Nine Severity")
+		promptgroup(GUI_BITS2)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TESV,DBF_MENU) {
+		prompt("State Ten Severity")
+		promptgroup(GUI_BITS2)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(ELSV,DBF_MENU) {
+		prompt("State Eleven Severity")
+		promptgroup(GUI_BITS2)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TVSV,DBF_MENU) {
+		prompt("State Twelve Severity")
+		promptgroup(GUI_BITS2)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TTSV,DBF_MENU) {
+		prompt("State Thirteen Sevr")
+		promptgroup(GUI_BITS2)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(FTSV,DBF_MENU) {
+		prompt("State Fourteen Sevr")
+		promptgroup(GUI_BITS2)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(FFSV,DBF_MENU) {
+		prompt("State Fifteen Sevr")
+		promptgroup(GUI_BITS2)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(UNSV,DBF_MENU) {
+		prompt("Unknown State Sevr")
+		promptgroup(GUI_MBB)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(COSV,DBF_MENU) {
+		prompt("Change of State Sevr")
+		promptgroup(GUI_MBB)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(RVAL,DBF_ULONG) {
+		prompt("Raw Value")
+		pp(TRUE)
+	}
+	field(ORAW,DBF_ULONG) {
+		prompt("Prev Raw Value")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(RBV,DBF_ULONG) {
+		prompt("Readback Value")
+		special(SPC_NOMOD)
+	}
+	field(ORBV,DBF_ULONG) {
+		prompt("Prev Readback Value")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(MASK,DBF_ULONG) {
+		prompt("Hardware Mask")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(MLST,DBF_USHORT) {
+		prompt("Last Value Monitored")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LALM,DBF_USHORT) {
+		prompt("Last Value Alarmed")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(SDEF,DBF_SHORT) {
+		prompt("States Defined")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(SHFT,DBF_USHORT) {
+		prompt("Shift")
+		promptgroup(GUI_MBB)
+		interest(1)
+	}
+	field(SIOL,DBF_OUTLINK) {
+		prompt("Sim Output Specifctn")
+		promptgroup(GUI_MBB)
+		interest(1)
+	}
+	field(SIML,DBF_INLINK) {
+		prompt("Sim Mode Location")
+		promptgroup(GUI_MBB)
+		interest(1)
+	}
+	field(SIMM,DBF_MENU) {
+		prompt("Simulation Mode")
+		menu(menuYesNo)
+		interest(1)
+	}
+	field(SIMS,DBF_MENU) {
+		prompt("Sim mode Alarm Svrty")
+		promptgroup(GUI_MBB)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(IVOA,DBF_MENU) {
+		prompt("INVALID outpt action")
+		promptgroup(GUI_MBB)
+		menu(menuIvoa)
+		interest(2)
+	}
+	field(IVOV,DBF_USHORT) {
+		prompt("INVALID output value")
+		promptgroup(GUI_MBB)
+		interest(2)
+	}
+}
+recordtype(mbboDirect) {
+	field(NAME,DBF_STRING) {
+		prompt("Record Name")
+		special(SPC_NOMOD)
+		size(61)
+	}
+	field(DESC,DBF_STRING) {
+		prompt("Descriptor")
+		promptgroup(GUI_COMMON)
+		size(41)
+	}
+	field(ASG,DBF_STRING) {
+		prompt("Access Security Group")
+		promptgroup(GUI_COMMON)
+		special(SPC_AS)
+		size(29)
+	}
+	field(SCAN,DBF_MENU) {
+		prompt("Scan Mechanism")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuScan)
+		interest(1)
+	}
+	field(PINI,DBF_MENU) {
+		prompt("Process at iocInit")
+		promptgroup(GUI_SCAN)
+		menu(menuPini)
+		interest(1)
+	}
+	field(PHAS,DBF_SHORT) {
+		prompt("Scan Phase")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(EVNT,DBF_SHORT) {
+		prompt("Event Number")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(TSE,DBF_SHORT) {
+		prompt("Time Stamp Event")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(TSEL,DBF_INLINK) {
+		prompt("Time Stamp Link")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(DTYP,DBF_DEVICE) {
+		prompt("Device Type")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(DISV,DBF_SHORT) {
+		prompt("Disable Value")
+		initial("1")
+		promptgroup(GUI_SCAN)
+	}
+	field(DISA,DBF_SHORT) {
+		prompt("Disable")
+	}
+	field(SDIS,DBF_INLINK) {
+		prompt("Scanning Disable")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(MLOK,DBF_NOACCESS) {
+		prompt("Monitor lock")
+		special(SPC_NOMOD)
+		extra("epicsMutexId	mlok")
+		interest(4)
+	}
+	field(MLIS,DBF_NOACCESS) {
+		prompt("Monitor List")
+		special(SPC_NOMOD)
+		extra("ELLLIST		mlis")
+		interest(4)
+	}
+	field(DISP,DBF_UCHAR) {
+		prompt("Disable putField")
+	}
+	field(PROC,DBF_UCHAR) {
+		prompt("Force Processing")
+		pp(TRUE)
+		interest(3)
+	}
+	field(STAT,DBF_MENU) {
+		prompt("Alarm Status")
+		initial("UDF")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+	}
+	field(SEVR,DBF_MENU) {
+		prompt("Alarm Severity")
+		initial("INVALID")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+	}
+	field(NSTA,DBF_MENU) {
+		prompt("New Alarm Status")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+		interest(2)
+	}
+	field(NSEV,DBF_MENU) {
+		prompt("New Alarm Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKS,DBF_MENU) {
+		prompt("Alarm Ack Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKT,DBF_MENU) {
+		prompt("Alarm Ack Transient")
+		initial("YES")
+		promptgroup(GUI_ALARMS)
+		special(SPC_NOMOD)
+		menu(menuYesNo)
+		interest(2)
+	}
+	field(DISS,DBF_MENU) {
+		prompt("Disable Alarm Sevrty")
+		promptgroup(GUI_SCAN)
+		menu(menuAlarmSevr)
+		interest(1)
+	}
+	field(LCNT,DBF_UCHAR) {
+		prompt("Lock Count")
+		special(SPC_NOMOD)
+		interest(2)
+	}
+	field(PACT,DBF_UCHAR) {
+		prompt("Record active")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(PUTF,DBF_UCHAR) {
+		prompt("dbPutField process")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(RPRO,DBF_UCHAR) {
+		prompt("Reprocess ")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(ASP,DBF_NOACCESS) {
+		prompt("Access Security Pvt")
+		special(SPC_NOMOD)
+		extra("struct asgMember *asp")
+		interest(4)
+	}
+	field(PPN,DBF_NOACCESS) {
+		prompt("addr of PUTNOTIFY")
+		special(SPC_NOMOD)
+		extra("struct putNotify *ppn")
+		interest(4)
+	}
+	field(PPNR,DBF_NOACCESS) {
+		prompt("pputNotifyRecord")
+		special(SPC_NOMOD)
+		extra("struct putNotifyRecord *ppnr")
+		interest(4)
+	}
+	field(SPVT,DBF_NOACCESS) {
+		prompt("Scan Private")
+		special(SPC_NOMOD)
+		extra("struct scan_element *spvt")
+		interest(4)
+	}
+	field(RSET,DBF_NOACCESS) {
+		prompt("Address of RSET")
+		special(SPC_NOMOD)
+		extra("struct rset	*rset")
+		interest(4)
+	}
+	field(DSET,DBF_NOACCESS) {
+		prompt("DSET address")
+		special(SPC_NOMOD)
+		extra("struct dset	*dset")
+		interest(4)
+	}
+	field(DPVT,DBF_NOACCESS) {
+		prompt("Device Private")
+		special(SPC_NOMOD)
+		extra("void		*dpvt")
+		interest(4)
+	}
+	field(RDES,DBF_NOACCESS) {
+		prompt("Address of dbRecordType")
+		special(SPC_NOMOD)
+		extra("struct dbRecordType *rdes")
+		interest(4)
+	}
+	field(LSET,DBF_NOACCESS) {
+		prompt("Lock Set")
+		special(SPC_NOMOD)
+		extra("struct lockRecord *lset")
+		interest(4)
+	}
+	field(PRIO,DBF_MENU) {
+		prompt("Scheduling Priority")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuPriority)
+		interest(1)
+	}
+	field(TPRO,DBF_UCHAR) {
+		prompt("Trace Processing")
+	}
+	field(BKPT,DBF_NOACCESS) {
+		prompt("Break Point")
+		special(SPC_NOMOD)
+		extra("char bkpt")
+		interest(1)
+	}
+	field(UDF,DBF_UCHAR) {
+		prompt("Undefined")
+		initial("1")
+		promptgroup(GUI_COMMON)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TIME,DBF_NOACCESS) {
+		prompt("Time")
+		special(SPC_NOMOD)
+		extra("epicsTimeStamp	time")
+		interest(2)
+	}
+	field(FLNK,DBF_FWDLINK) {
+		prompt("Forward Process Link")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(VAL,DBF_USHORT) {
+		prompt("Word")
+		promptgroup(GUI_OUTPUT)
+		pp(TRUE)
+		asl(ASL0)
+	}
+	field(OMSL,DBF_MENU) {
+		prompt("Output Mode Select")
+		promptgroup(GUI_MBB)
+		special(101)
+		menu(menuOmsl)
+		pp(TRUE)
+		interest(1)
+	}
+	field(NOBT,DBF_SHORT) {
+		prompt("Number of Bits")
+		promptgroup(GUI_MBB)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(DOL,DBF_INLINK) {
+		prompt("Desired Output Loc")
+		promptgroup(GUI_MBB)
+		interest(1)
+	}
+	field(OUT,DBF_OUTLINK) {
+		prompt("Output Specification")
+		promptgroup(GUI_MBB)
+		interest(1)
+	}
+	field(B0,DBF_UCHAR) {
+		prompt("Bit 0")
+		promptgroup(GUI_BITS1)
+		special(100)
+		pp(TRUE)
+		interest(1)
+	}
+	field(B1,DBF_UCHAR) {
+		prompt("Bit 1")
+		promptgroup(GUI_BITS1)
+		special(100)
+		pp(TRUE)
+		interest(1)
+	}
+	field(B2,DBF_UCHAR) {
+		prompt("Bit 2")
+		promptgroup(GUI_BITS1)
+		special(100)
+		pp(TRUE)
+		interest(1)
+	}
+	field(B3,DBF_UCHAR) {
+		prompt("Bit 3")
+		promptgroup(GUI_BITS1)
+		special(100)
+		pp(TRUE)
+		interest(1)
+	}
+	field(B4,DBF_UCHAR) {
+		prompt("Bit 4")
+		promptgroup(GUI_BITS1)
+		special(100)
+		pp(TRUE)
+		interest(1)
+	}
+	field(B5,DBF_UCHAR) {
+		prompt("Bit 5")
+		promptgroup(GUI_BITS1)
+		special(100)
+		pp(TRUE)
+		interest(1)
+	}
+	field(B6,DBF_UCHAR) {
+		prompt("Bit 6")
+		promptgroup(GUI_BITS1)
+		special(100)
+		pp(TRUE)
+		interest(1)
+	}
+	field(B7,DBF_UCHAR) {
+		prompt("Bit 7")
+		promptgroup(GUI_BITS1)
+		special(100)
+		pp(TRUE)
+		interest(1)
+	}
+	field(B8,DBF_UCHAR) {
+		prompt("Bit 8")
+		promptgroup(GUI_BITS2)
+		special(100)
+		pp(TRUE)
+		interest(1)
+	}
+	field(B9,DBF_UCHAR) {
+		prompt("Bit 9")
+		promptgroup(GUI_BITS2)
+		special(100)
+		pp(TRUE)
+		interest(1)
+	}
+	field(BA,DBF_UCHAR) {
+		prompt("Bit 10")
+		promptgroup(GUI_BITS2)
+		special(100)
+		pp(TRUE)
+		interest(1)
+	}
+	field(BB,DBF_UCHAR) {
+		prompt("Bit 11")
+		promptgroup(GUI_BITS2)
+		special(100)
+		pp(TRUE)
+		interest(1)
+	}
+	field(BC,DBF_UCHAR) {
+		prompt("Bit 12")
+		promptgroup(GUI_BITS2)
+		special(100)
+		pp(TRUE)
+		interest(1)
+	}
+	field(BD,DBF_UCHAR) {
+		prompt("Bit 13")
+		promptgroup(GUI_BITS2)
+		special(100)
+		pp(TRUE)
+		interest(1)
+	}
+	field(BE,DBF_UCHAR) {
+		prompt("Bit 14")
+		promptgroup(GUI_BITS2)
+		special(100)
+		pp(TRUE)
+		interest(1)
+	}
+	field(BF,DBF_UCHAR) {
+		prompt("Bit 15")
+		promptgroup(GUI_BITS2)
+		special(100)
+		pp(TRUE)
+		interest(1)
+	}
+	field(RVAL,DBF_ULONG) {
+		prompt("Raw Value")
+		special(SPC_NOMOD)
+		pp(TRUE)
+	}
+	field(ORAW,DBF_ULONG) {
+		prompt("Prev Raw Value")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(RBV,DBF_ULONG) {
+		prompt("Readback Value")
+		special(SPC_NOMOD)
+	}
+	field(ORBV,DBF_ULONG) {
+		prompt("Prev Readback Value")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(MASK,DBF_ULONG) {
+		prompt("Hardware Mask")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(MLST,DBF_ULONG) {
+		prompt("Last Value Monitored")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LALM,DBF_ULONG) {
+		prompt("Last Value Alarmed")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(SHFT,DBF_ULONG) {
+		prompt("Shift")
+		promptgroup(GUI_MBB)
+		interest(1)
+	}
+	field(SIOL,DBF_OUTLINK) {
+		prompt("Sim Output Specifctn")
+		promptgroup(GUI_MBB)
+		interest(1)
+	}
+	field(SIML,DBF_INLINK) {
+		prompt("Sim Mode Location")
+		promptgroup(GUI_MBB)
+		interest(1)
+	}
+	field(SIMM,DBF_MENU) {
+		prompt("Simulation Mode")
+		menu(menuYesNo)
+		interest(1)
+	}
+	field(SIMS,DBF_MENU) {
+		prompt("Sim mode Alarm Svrty")
+		promptgroup(GUI_MBB)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(IVOA,DBF_MENU) {
+		prompt("INVALID outpt action")
+		promptgroup(GUI_MBB)
+		menu(menuIvoa)
+		interest(2)
+	}
+	field(IVOV,DBF_USHORT) {
+		prompt("INVALID output value")
+		promptgroup(GUI_MBB)
+		interest(2)
+	}
+}
+recordtype(permissive) {
+	field(NAME,DBF_STRING) {
+		prompt("Record Name")
+		special(SPC_NOMOD)
+		size(61)
+	}
+	field(DESC,DBF_STRING) {
+		prompt("Descriptor")
+		promptgroup(GUI_COMMON)
+		size(41)
+	}
+	field(ASG,DBF_STRING) {
+		prompt("Access Security Group")
+		promptgroup(GUI_COMMON)
+		special(SPC_AS)
+		size(29)
+	}
+	field(SCAN,DBF_MENU) {
+		prompt("Scan Mechanism")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuScan)
+		interest(1)
+	}
+	field(PINI,DBF_MENU) {
+		prompt("Process at iocInit")
+		promptgroup(GUI_SCAN)
+		menu(menuPini)
+		interest(1)
+	}
+	field(PHAS,DBF_SHORT) {
+		prompt("Scan Phase")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(EVNT,DBF_SHORT) {
+		prompt("Event Number")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(TSE,DBF_SHORT) {
+		prompt("Time Stamp Event")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(TSEL,DBF_INLINK) {
+		prompt("Time Stamp Link")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(DTYP,DBF_DEVICE) {
+		prompt("Device Type")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(DISV,DBF_SHORT) {
+		prompt("Disable Value")
+		initial("1")
+		promptgroup(GUI_SCAN)
+	}
+	field(DISA,DBF_SHORT) {
+		prompt("Disable")
+	}
+	field(SDIS,DBF_INLINK) {
+		prompt("Scanning Disable")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(MLOK,DBF_NOACCESS) {
+		prompt("Monitor lock")
+		special(SPC_NOMOD)
+		extra("epicsMutexId	mlok")
+		interest(4)
+	}
+	field(MLIS,DBF_NOACCESS) {
+		prompt("Monitor List")
+		special(SPC_NOMOD)
+		extra("ELLLIST		mlis")
+		interest(4)
+	}
+	field(DISP,DBF_UCHAR) {
+		prompt("Disable putField")
+	}
+	field(PROC,DBF_UCHAR) {
+		prompt("Force Processing")
+		pp(TRUE)
+		interest(3)
+	}
+	field(STAT,DBF_MENU) {
+		prompt("Alarm Status")
+		initial("UDF")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+	}
+	field(SEVR,DBF_MENU) {
+		prompt("Alarm Severity")
+		initial("INVALID")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+	}
+	field(NSTA,DBF_MENU) {
+		prompt("New Alarm Status")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+		interest(2)
+	}
+	field(NSEV,DBF_MENU) {
+		prompt("New Alarm Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKS,DBF_MENU) {
+		prompt("Alarm Ack Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKT,DBF_MENU) {
+		prompt("Alarm Ack Transient")
+		initial("YES")
+		promptgroup(GUI_ALARMS)
+		special(SPC_NOMOD)
+		menu(menuYesNo)
+		interest(2)
+	}
+	field(DISS,DBF_MENU) {
+		prompt("Disable Alarm Sevrty")
+		promptgroup(GUI_SCAN)
+		menu(menuAlarmSevr)
+		interest(1)
+	}
+	field(LCNT,DBF_UCHAR) {
+		prompt("Lock Count")
+		special(SPC_NOMOD)
+		interest(2)
+	}
+	field(PACT,DBF_UCHAR) {
+		prompt("Record active")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(PUTF,DBF_UCHAR) {
+		prompt("dbPutField process")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(RPRO,DBF_UCHAR) {
+		prompt("Reprocess ")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(ASP,DBF_NOACCESS) {
+		prompt("Access Security Pvt")
+		special(SPC_NOMOD)
+		extra("struct asgMember *asp")
+		interest(4)
+	}
+	field(PPN,DBF_NOACCESS) {
+		prompt("addr of PUTNOTIFY")
+		special(SPC_NOMOD)
+		extra("struct putNotify *ppn")
+		interest(4)
+	}
+	field(PPNR,DBF_NOACCESS) {
+		prompt("pputNotifyRecord")
+		special(SPC_NOMOD)
+		extra("struct putNotifyRecord *ppnr")
+		interest(4)
+	}
+	field(SPVT,DBF_NOACCESS) {
+		prompt("Scan Private")
+		special(SPC_NOMOD)
+		extra("struct scan_element *spvt")
+		interest(4)
+	}
+	field(RSET,DBF_NOACCESS) {
+		prompt("Address of RSET")
+		special(SPC_NOMOD)
+		extra("struct rset	*rset")
+		interest(4)
+	}
+	field(DSET,DBF_NOACCESS) {
+		prompt("DSET address")
+		special(SPC_NOMOD)
+		extra("struct dset	*dset")
+		interest(4)
+	}
+	field(DPVT,DBF_NOACCESS) {
+		prompt("Device Private")
+		special(SPC_NOMOD)
+		extra("void		*dpvt")
+		interest(4)
+	}
+	field(RDES,DBF_NOACCESS) {
+		prompt("Address of dbRecordType")
+		special(SPC_NOMOD)
+		extra("struct dbRecordType *rdes")
+		interest(4)
+	}
+	field(LSET,DBF_NOACCESS) {
+		prompt("Lock Set")
+		special(SPC_NOMOD)
+		extra("struct lockRecord *lset")
+		interest(4)
+	}
+	field(PRIO,DBF_MENU) {
+		prompt("Scheduling Priority")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuPriority)
+		interest(1)
+	}
+	field(TPRO,DBF_UCHAR) {
+		prompt("Trace Processing")
+	}
+	field(BKPT,DBF_NOACCESS) {
+		prompt("Break Point")
+		special(SPC_NOMOD)
+		extra("char bkpt")
+		interest(1)
+	}
+	field(UDF,DBF_UCHAR) {
+		prompt("Undefined")
+		initial("1")
+		promptgroup(GUI_COMMON)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TIME,DBF_NOACCESS) {
+		prompt("Time")
+		special(SPC_NOMOD)
+		extra("epicsTimeStamp	time")
+		interest(2)
+	}
+	field(FLNK,DBF_FWDLINK) {
+		prompt("Forward Process Link")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(LABL,DBF_STRING) {
+		prompt("Button Label")
+		promptgroup(GUI_DISPLAY)
+		size(20)
+		pp(TRUE)
+		interest(1)
+	}
+	field(VAL,DBF_USHORT) {
+		prompt("Status")
+		pp(TRUE)
+		asl(ASL0)
+	}
+	field(OVAL,DBF_USHORT) {
+		prompt("Old Status")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(WFLG,DBF_USHORT) {
+		prompt("Wait Flag")
+		pp(TRUE)
+	}
+	field(OFLG,DBF_USHORT) {
+		prompt("Old Flag")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+}
+recordtype(sel) {
+	field(NAME,DBF_STRING) {
+		prompt("Record Name")
+		special(SPC_NOMOD)
+		size(61)
+	}
+	field(DESC,DBF_STRING) {
+		prompt("Descriptor")
+		promptgroup(GUI_COMMON)
+		size(41)
+	}
+	field(ASG,DBF_STRING) {
+		prompt("Access Security Group")
+		promptgroup(GUI_COMMON)
+		special(SPC_AS)
+		size(29)
+	}
+	field(SCAN,DBF_MENU) {
+		prompt("Scan Mechanism")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuScan)
+		interest(1)
+	}
+	field(PINI,DBF_MENU) {
+		prompt("Process at iocInit")
+		promptgroup(GUI_SCAN)
+		menu(menuPini)
+		interest(1)
+	}
+	field(PHAS,DBF_SHORT) {
+		prompt("Scan Phase")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(EVNT,DBF_SHORT) {
+		prompt("Event Number")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(TSE,DBF_SHORT) {
+		prompt("Time Stamp Event")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(TSEL,DBF_INLINK) {
+		prompt("Time Stamp Link")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(DTYP,DBF_DEVICE) {
+		prompt("Device Type")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(DISV,DBF_SHORT) {
+		prompt("Disable Value")
+		initial("1")
+		promptgroup(GUI_SCAN)
+	}
+	field(DISA,DBF_SHORT) {
+		prompt("Disable")
+	}
+	field(SDIS,DBF_INLINK) {
+		prompt("Scanning Disable")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(MLOK,DBF_NOACCESS) {
+		prompt("Monitor lock")
+		special(SPC_NOMOD)
+		extra("epicsMutexId	mlok")
+		interest(4)
+	}
+	field(MLIS,DBF_NOACCESS) {
+		prompt("Monitor List")
+		special(SPC_NOMOD)
+		extra("ELLLIST		mlis")
+		interest(4)
+	}
+	field(DISP,DBF_UCHAR) {
+		prompt("Disable putField")
+	}
+	field(PROC,DBF_UCHAR) {
+		prompt("Force Processing")
+		pp(TRUE)
+		interest(3)
+	}
+	field(STAT,DBF_MENU) {
+		prompt("Alarm Status")
+		initial("UDF")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+	}
+	field(SEVR,DBF_MENU) {
+		prompt("Alarm Severity")
+		initial("INVALID")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+	}
+	field(NSTA,DBF_MENU) {
+		prompt("New Alarm Status")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+		interest(2)
+	}
+	field(NSEV,DBF_MENU) {
+		prompt("New Alarm Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKS,DBF_MENU) {
+		prompt("Alarm Ack Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKT,DBF_MENU) {
+		prompt("Alarm Ack Transient")
+		initial("YES")
+		promptgroup(GUI_ALARMS)
+		special(SPC_NOMOD)
+		menu(menuYesNo)
+		interest(2)
+	}
+	field(DISS,DBF_MENU) {
+		prompt("Disable Alarm Sevrty")
+		promptgroup(GUI_SCAN)
+		menu(menuAlarmSevr)
+		interest(1)
+	}
+	field(LCNT,DBF_UCHAR) {
+		prompt("Lock Count")
+		special(SPC_NOMOD)
+		interest(2)
+	}
+	field(PACT,DBF_UCHAR) {
+		prompt("Record active")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(PUTF,DBF_UCHAR) {
+		prompt("dbPutField process")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(RPRO,DBF_UCHAR) {
+		prompt("Reprocess ")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(ASP,DBF_NOACCESS) {
+		prompt("Access Security Pvt")
+		special(SPC_NOMOD)
+		extra("struct asgMember *asp")
+		interest(4)
+	}
+	field(PPN,DBF_NOACCESS) {
+		prompt("addr of PUTNOTIFY")
+		special(SPC_NOMOD)
+		extra("struct putNotify *ppn")
+		interest(4)
+	}
+	field(PPNR,DBF_NOACCESS) {
+		prompt("pputNotifyRecord")
+		special(SPC_NOMOD)
+		extra("struct putNotifyRecord *ppnr")
+		interest(4)
+	}
+	field(SPVT,DBF_NOACCESS) {
+		prompt("Scan Private")
+		special(SPC_NOMOD)
+		extra("struct scan_element *spvt")
+		interest(4)
+	}
+	field(RSET,DBF_NOACCESS) {
+		prompt("Address of RSET")
+		special(SPC_NOMOD)
+		extra("struct rset	*rset")
+		interest(4)
+	}
+	field(DSET,DBF_NOACCESS) {
+		prompt("DSET address")
+		special(SPC_NOMOD)
+		extra("struct dset	*dset")
+		interest(4)
+	}
+	field(DPVT,DBF_NOACCESS) {
+		prompt("Device Private")
+		special(SPC_NOMOD)
+		extra("void		*dpvt")
+		interest(4)
+	}
+	field(RDES,DBF_NOACCESS) {
+		prompt("Address of dbRecordType")
+		special(SPC_NOMOD)
+		extra("struct dbRecordType *rdes")
+		interest(4)
+	}
+	field(LSET,DBF_NOACCESS) {
+		prompt("Lock Set")
+		special(SPC_NOMOD)
+		extra("struct lockRecord *lset")
+		interest(4)
+	}
+	field(PRIO,DBF_MENU) {
+		prompt("Scheduling Priority")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuPriority)
+		interest(1)
+	}
+	field(TPRO,DBF_UCHAR) {
+		prompt("Trace Processing")
+	}
+	field(BKPT,DBF_NOACCESS) {
+		prompt("Break Point")
+		special(SPC_NOMOD)
+		extra("char bkpt")
+		interest(1)
+	}
+	field(UDF,DBF_UCHAR) {
+		prompt("Undefined")
+		initial("1")
+		promptgroup(GUI_COMMON)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TIME,DBF_NOACCESS) {
+		prompt("Time")
+		special(SPC_NOMOD)
+		extra("epicsTimeStamp	time")
+		interest(2)
+	}
+	field(FLNK,DBF_FWDLINK) {
+		prompt("Forward Process Link")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(VAL,DBF_DOUBLE) {
+		prompt("Result")
+		special(SPC_NOMOD)
+		asl(ASL0)
+	}
+	field(SELM,DBF_MENU) {
+		prompt("Select Mechanism")
+		promptgroup(GUI_INPUTS)
+		menu(selSELM)
+	}
+	field(SELN,DBF_USHORT) {
+		prompt("Index value")
+	}
+	field(PREC,DBF_SHORT) {
+		prompt("Display Precision")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(NVL,DBF_INLINK) {
+		prompt("Index Value Location")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(INPA,DBF_INLINK) {
+		prompt("Input A")
+		promptgroup(GUI_SELECT)
+		interest(1)
+	}
+	field(INPB,DBF_INLINK) {
+		prompt("Input B")
+		promptgroup(GUI_SELECT)
+		interest(1)
+	}
+	field(INPC,DBF_INLINK) {
+		prompt("Input C")
+		promptgroup(GUI_SELECT)
+		interest(1)
+	}
+	field(INPD,DBF_INLINK) {
+		prompt("Input D")
+		promptgroup(GUI_SELECT)
+		interest(1)
+	}
+	field(INPE,DBF_INLINK) {
+		prompt("Input E")
+		promptgroup(GUI_SELECT)
+		interest(1)
+	}
+	field(INPF,DBF_INLINK) {
+		prompt("Input F")
+		promptgroup(GUI_SELECT)
+		interest(1)
+	}
+	field(INPG,DBF_INLINK) {
+		prompt("Input G")
+		promptgroup(GUI_SELECT)
+		interest(1)
+	}
+	field(INPH,DBF_INLINK) {
+		prompt("Input H")
+		promptgroup(GUI_SELECT)
+		interest(1)
+	}
+	field(INPI,DBF_INLINK) {
+		prompt("Input I")
+		promptgroup(GUI_SELECT)
+		interest(1)
+	}
+	field(INPJ,DBF_INLINK) {
+		prompt("Input J")
+		promptgroup(GUI_SELECT)
+		interest(1)
+	}
+	field(INPK,DBF_INLINK) {
+		prompt("Input K")
+		promptgroup(GUI_SELECT)
+		interest(1)
+	}
+	field(INPL,DBF_INLINK) {
+		prompt("Input L")
+		promptgroup(GUI_SELECT)
+		interest(1)
+	}
+	field(EGU,DBF_STRING) {
+		prompt("Units Name")
+		promptgroup(GUI_DISPLAY)
+		size(16)
+		interest(1)
+	}
+	field(HOPR,DBF_DOUBLE) {
+		prompt("High Operating Rng")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(LOPR,DBF_DOUBLE) {
+		prompt("Low Operating Range")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(HIHI,DBF_DOUBLE) {
+		prompt("Hihi Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LOLO,DBF_DOUBLE) {
+		prompt("Lolo Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HIGH,DBF_DOUBLE) {
+		prompt("High Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LOW,DBF_DOUBLE) {
+		prompt("Low Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HHSV,DBF_MENU) {
+		prompt("Hihi Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LLSV,DBF_MENU) {
+		prompt("Lolo Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HSV,DBF_MENU) {
+		prompt("High Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LSV,DBF_MENU) {
+		prompt("Low Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HYST,DBF_DOUBLE) {
+		prompt("Alarm Deadband")
+		promptgroup(GUI_ALARMS)
+		interest(1)
+	}
+	field(ADEL,DBF_DOUBLE) {
+		prompt("Archive Deadband")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(MDEL,DBF_DOUBLE) {
+		prompt("Monitor Deadband")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(A,DBF_DOUBLE) {
+		prompt("Value of Input A")
+		pp(TRUE)
+	}
+	field(B,DBF_DOUBLE) {
+		prompt("Value of Input B")
+		pp(TRUE)
+	}
+	field(C,DBF_DOUBLE) {
+		prompt("Value of Input C")
+		pp(TRUE)
+	}
+	field(D,DBF_DOUBLE) {
+		prompt("Value of Input D")
+		pp(TRUE)
+	}
+	field(E,DBF_DOUBLE) {
+		prompt("Value of Input E")
+		pp(TRUE)
+	}
+	field(F,DBF_DOUBLE) {
+		prompt("Value of Input F")
+		pp(TRUE)
+	}
+	field(G,DBF_DOUBLE) {
+		prompt("Value of Input G")
+		pp(TRUE)
+	}
+	field(H,DBF_DOUBLE) {
+		prompt("Value of Input H")
+		pp(TRUE)
+	}
+	field(I,DBF_DOUBLE) {
+		prompt("Value of Input I")
+		pp(TRUE)
+	}
+	field(J,DBF_DOUBLE) {
+		prompt("Value of Input J")
+		pp(TRUE)
+	}
+	field(K,DBF_DOUBLE) {
+		prompt("Value of Input K")
+		pp(TRUE)
+	}
+	field(L,DBF_DOUBLE) {
+		prompt("Value of Input L")
+		pp(TRUE)
+	}
+	field(LA,DBF_DOUBLE) {
+		prompt("Prev Value of A")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LB,DBF_DOUBLE) {
+		prompt("Prev Value of B")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LC,DBF_DOUBLE) {
+		prompt("Prev Value of C")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LD,DBF_DOUBLE) {
+		prompt("Prev Value of D")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LE,DBF_DOUBLE) {
+		prompt("Prev Value of E")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LF,DBF_DOUBLE) {
+		prompt("Prev Value of F")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LG,DBF_DOUBLE) {
+		prompt("Prev Value of G")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LH,DBF_DOUBLE) {
+		prompt("Prev Value of H")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LI,DBF_DOUBLE) {
+		prompt("Prev Value of I")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LJ,DBF_DOUBLE) {
+		prompt("Prev Value of J")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LK,DBF_DOUBLE) {
+		prompt("Prev Value of K")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LL,DBF_DOUBLE) {
+		prompt("Prev Value of L")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LALM,DBF_DOUBLE) {
+		prompt("Last Value Alarmed")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(ALST,DBF_DOUBLE) {
+		prompt("Last Value Archived")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(MLST,DBF_DOUBLE) {
+		prompt("Last Val Monitored")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(NLST,DBF_USHORT) {
+		prompt("Last Index Monitored")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+}
+recordtype(seq) {
+	field(NAME,DBF_STRING) {
+		prompt("Record Name")
+		special(SPC_NOMOD)
+		size(61)
+	}
+	field(DESC,DBF_STRING) {
+		prompt("Descriptor")
+		promptgroup(GUI_COMMON)
+		size(41)
+	}
+	field(ASG,DBF_STRING) {
+		prompt("Access Security Group")
+		promptgroup(GUI_COMMON)
+		special(SPC_AS)
+		size(29)
+	}
+	field(SCAN,DBF_MENU) {
+		prompt("Scan Mechanism")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuScan)
+		interest(1)
+	}
+	field(PINI,DBF_MENU) {
+		prompt("Process at iocInit")
+		promptgroup(GUI_SCAN)
+		menu(menuPini)
+		interest(1)
+	}
+	field(PHAS,DBF_SHORT) {
+		prompt("Scan Phase")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(EVNT,DBF_SHORT) {
+		prompt("Event Number")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(TSE,DBF_SHORT) {
+		prompt("Time Stamp Event")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(TSEL,DBF_INLINK) {
+		prompt("Time Stamp Link")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(DTYP,DBF_DEVICE) {
+		prompt("Device Type")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(DISV,DBF_SHORT) {
+		prompt("Disable Value")
+		initial("1")
+		promptgroup(GUI_SCAN)
+	}
+	field(DISA,DBF_SHORT) {
+		prompt("Disable")
+	}
+	field(SDIS,DBF_INLINK) {
+		prompt("Scanning Disable")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(MLOK,DBF_NOACCESS) {
+		prompt("Monitor lock")
+		special(SPC_NOMOD)
+		extra("epicsMutexId	mlok")
+		interest(4)
+	}
+	field(MLIS,DBF_NOACCESS) {
+		prompt("Monitor List")
+		special(SPC_NOMOD)
+		extra("ELLLIST		mlis")
+		interest(4)
+	}
+	field(DISP,DBF_UCHAR) {
+		prompt("Disable putField")
+	}
+	field(PROC,DBF_UCHAR) {
+		prompt("Force Processing")
+		pp(TRUE)
+		interest(3)
+	}
+	field(STAT,DBF_MENU) {
+		prompt("Alarm Status")
+		initial("UDF")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+	}
+	field(SEVR,DBF_MENU) {
+		prompt("Alarm Severity")
+		initial("INVALID")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+	}
+	field(NSTA,DBF_MENU) {
+		prompt("New Alarm Status")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+		interest(2)
+	}
+	field(NSEV,DBF_MENU) {
+		prompt("New Alarm Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKS,DBF_MENU) {
+		prompt("Alarm Ack Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKT,DBF_MENU) {
+		prompt("Alarm Ack Transient")
+		initial("YES")
+		promptgroup(GUI_ALARMS)
+		special(SPC_NOMOD)
+		menu(menuYesNo)
+		interest(2)
+	}
+	field(DISS,DBF_MENU) {
+		prompt("Disable Alarm Sevrty")
+		promptgroup(GUI_SCAN)
+		menu(menuAlarmSevr)
+		interest(1)
+	}
+	field(LCNT,DBF_UCHAR) {
+		prompt("Lock Count")
+		special(SPC_NOMOD)
+		interest(2)
+	}
+	field(PACT,DBF_UCHAR) {
+		prompt("Record active")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(PUTF,DBF_UCHAR) {
+		prompt("dbPutField process")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(RPRO,DBF_UCHAR) {
+		prompt("Reprocess ")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(ASP,DBF_NOACCESS) {
+		prompt("Access Security Pvt")
+		special(SPC_NOMOD)
+		extra("struct asgMember *asp")
+		interest(4)
+	}
+	field(PPN,DBF_NOACCESS) {
+		prompt("addr of PUTNOTIFY")
+		special(SPC_NOMOD)
+		extra("struct putNotify *ppn")
+		interest(4)
+	}
+	field(PPNR,DBF_NOACCESS) {
+		prompt("pputNotifyRecord")
+		special(SPC_NOMOD)
+		extra("struct putNotifyRecord *ppnr")
+		interest(4)
+	}
+	field(SPVT,DBF_NOACCESS) {
+		prompt("Scan Private")
+		special(SPC_NOMOD)
+		extra("struct scan_element *spvt")
+		interest(4)
+	}
+	field(RSET,DBF_NOACCESS) {
+		prompt("Address of RSET")
+		special(SPC_NOMOD)
+		extra("struct rset	*rset")
+		interest(4)
+	}
+	field(DSET,DBF_NOACCESS) {
+		prompt("DSET address")
+		special(SPC_NOMOD)
+		extra("struct dset	*dset")
+		interest(4)
+	}
+	field(DPVT,DBF_NOACCESS) {
+		prompt("Device Private")
+		special(SPC_NOMOD)
+		extra("void		*dpvt")
+		interest(4)
+	}
+	field(RDES,DBF_NOACCESS) {
+		prompt("Address of dbRecordType")
+		special(SPC_NOMOD)
+		extra("struct dbRecordType *rdes")
+		interest(4)
+	}
+	field(LSET,DBF_NOACCESS) {
+		prompt("Lock Set")
+		special(SPC_NOMOD)
+		extra("struct lockRecord *lset")
+		interest(4)
+	}
+	field(PRIO,DBF_MENU) {
+		prompt("Scheduling Priority")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuPriority)
+		interest(1)
+	}
+	field(TPRO,DBF_UCHAR) {
+		prompt("Trace Processing")
+	}
+	field(BKPT,DBF_NOACCESS) {
+		prompt("Break Point")
+		special(SPC_NOMOD)
+		extra("char bkpt")
+		interest(1)
+	}
+	field(UDF,DBF_UCHAR) {
+		prompt("Undefined")
+		initial("1")
+		promptgroup(GUI_COMMON)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TIME,DBF_NOACCESS) {
+		prompt("Time")
+		special(SPC_NOMOD)
+		extra("epicsTimeStamp	time")
+		interest(2)
+	}
+	field(FLNK,DBF_FWDLINK) {
+		prompt("Forward Process Link")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(VAL,DBF_LONG) {
+		prompt("Used to trigger")
+		pp(TRUE)
+		asl(ASL0)
+	}
+	field(SELM,DBF_MENU) {
+		prompt("Select Mechanism")
+		promptgroup(GUI_INPUTS)
+		menu(seqSELM)
+		interest(1)
+	}
+	field(SELN,DBF_USHORT) {
+		prompt("Link Selection")
+		initial("1")
+		interest(1)
+	}
+	field(SELL,DBF_INLINK) {
+		prompt("Link Selection Loc")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(PREC,DBF_SHORT) {
+		prompt("Display Precision")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(DLY1,DBF_DOUBLE) {
+		prompt("Delay 1")
+		promptgroup(GUI_SEQ1)
+		interest(1)
+	}
+	field(DOL1,DBF_INLINK) {
+		prompt("Input link1")
+		promptgroup(GUI_SEQ1)
+		interest(1)
+	}
+	field(DO1,DBF_DOUBLE) {
+		prompt("Constant input 1")
+		interest(1)
+	}
+	field(LNK1,DBF_OUTLINK) {
+		prompt("Output Link 1")
+		promptgroup(GUI_SEQ1)
+		interest(1)
+	}
+	field(DLY2,DBF_DOUBLE) {
+		prompt("Delay 2")
+		promptgroup(GUI_SEQ1)
+		interest(1)
+	}
+	field(DOL2,DBF_INLINK) {
+		prompt("Input link 2")
+		promptgroup(GUI_SEQ1)
+		interest(1)
+	}
+	field(DO2,DBF_DOUBLE) {
+		prompt("Constant input 2")
+		interest(1)
+	}
+	field(LNK2,DBF_OUTLINK) {
+		prompt("Output Link 2")
+		promptgroup(GUI_SEQ1)
+		interest(1)
+	}
+	field(DLY3,DBF_DOUBLE) {
+		prompt("Delay 3")
+		promptgroup(GUI_SEQ1)
+		interest(1)
+	}
+	field(DOL3,DBF_INLINK) {
+		prompt("Input link 3")
+		promptgroup(GUI_SEQ1)
+		interest(1)
+	}
+	field(DO3,DBF_DOUBLE) {
+		prompt("Constant input 3")
+		interest(1)
+	}
+	field(LNK3,DBF_OUTLINK) {
+		prompt("Output Link 3")
+		promptgroup(GUI_SEQ1)
+		interest(1)
+	}
+	field(DLY4,DBF_DOUBLE) {
+		prompt("Delay 4")
+		promptgroup(GUI_SEQ2)
+		interest(1)
+	}
+	field(DOL4,DBF_INLINK) {
+		prompt("Input link 4")
+		promptgroup(GUI_SEQ2)
+		interest(1)
+	}
+	field(DO4,DBF_DOUBLE) {
+		prompt("Constant input 4")
+		interest(1)
+	}
+	field(LNK4,DBF_OUTLINK) {
+		prompt("Output Link 4")
+		promptgroup(GUI_SEQ2)
+		interest(1)
+	}
+	field(DLY5,DBF_DOUBLE) {
+		prompt("Delay 5")
+		promptgroup(GUI_SEQ2)
+		interest(1)
+	}
+	field(DOL5,DBF_INLINK) {
+		prompt("Input link 5")
+		promptgroup(GUI_SEQ2)
+		interest(1)
+	}
+	field(DO5,DBF_DOUBLE) {
+		prompt("Constant input 5")
+		interest(1)
+	}
+	field(LNK5,DBF_OUTLINK) {
+		prompt("Output Link 5")
+		promptgroup(GUI_SEQ2)
+		interest(1)
+	}
+	field(DLY6,DBF_DOUBLE) {
+		prompt("Delay 6")
+		promptgroup(GUI_SEQ2)
+		interest(1)
+	}
+	field(DOL6,DBF_INLINK) {
+		prompt("Input link 6")
+		promptgroup(GUI_SEQ2)
+		interest(1)
+	}
+	field(DO6,DBF_DOUBLE) {
+		prompt("Constant input 6")
+		interest(1)
+	}
+	field(LNK6,DBF_OUTLINK) {
+		prompt("Output Link 6")
+		promptgroup(GUI_SEQ2)
+		interest(1)
+	}
+	field(DLY7,DBF_DOUBLE) {
+		prompt("Delay 7")
+		promptgroup(GUI_SEQ3)
+		interest(1)
+	}
+	field(DOL7,DBF_INLINK) {
+		prompt("Input link 7")
+		promptgroup(GUI_SEQ3)
+		interest(1)
+	}
+	field(DO7,DBF_DOUBLE) {
+		prompt("Constant input 7")
+		interest(1)
+	}
+	field(LNK7,DBF_OUTLINK) {
+		prompt("Output Link 7")
+		promptgroup(GUI_SEQ3)
+		interest(1)
+	}
+	field(DLY8,DBF_DOUBLE) {
+		prompt("Delay 8")
+		promptgroup(GUI_SEQ3)
+		interest(1)
+	}
+	field(DOL8,DBF_INLINK) {
+		prompt("Input link 8")
+		promptgroup(GUI_SEQ3)
+		interest(1)
+	}
+	field(DO8,DBF_DOUBLE) {
+		prompt("Constant input 8")
+		interest(1)
+	}
+	field(LNK8,DBF_OUTLINK) {
+		prompt("Output Link 8")
+		promptgroup(GUI_SEQ3)
+		interest(1)
+	}
+	field(DLY9,DBF_DOUBLE) {
+		prompt("Delay 9")
+		promptgroup(GUI_SEQ3)
+		interest(1)
+	}
+	field(DOL9,DBF_INLINK) {
+		prompt("Input link 9")
+		promptgroup(GUI_SEQ3)
+		interest(1)
+	}
+	field(DO9,DBF_DOUBLE) {
+		prompt("Constant input 9")
+		interest(1)
+	}
+	field(LNK9,DBF_OUTLINK) {
+		prompt("Output Link 9")
+		promptgroup(GUI_SEQ3)
+		interest(1)
+	}
+	field(DLYA,DBF_DOUBLE) {
+		prompt("Delay 10")
+		promptgroup(GUI_SEQ3)
+		interest(1)
+	}
+	field(DOLA,DBF_INLINK) {
+		prompt("Input link 10")
+		promptgroup(GUI_SEQ3)
+		interest(1)
+	}
+	field(DOA,DBF_DOUBLE) {
+		prompt("Constant input 10")
+		interest(1)
+	}
+	field(LNKA,DBF_OUTLINK) {
+		prompt("Output Link 10")
+		promptgroup(GUI_SEQ3)
+		interest(1)
+	}
+}
+recordtype(state) {
+	field(NAME,DBF_STRING) {
+		prompt("Record Name")
+		special(SPC_NOMOD)
+		size(61)
+	}
+	field(DESC,DBF_STRING) {
+		prompt("Descriptor")
+		promptgroup(GUI_COMMON)
+		size(41)
+	}
+	field(ASG,DBF_STRING) {
+		prompt("Access Security Group")
+		promptgroup(GUI_COMMON)
+		special(SPC_AS)
+		size(29)
+	}
+	field(SCAN,DBF_MENU) {
+		prompt("Scan Mechanism")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuScan)
+		interest(1)
+	}
+	field(PINI,DBF_MENU) {
+		prompt("Process at iocInit")
+		promptgroup(GUI_SCAN)
+		menu(menuPini)
+		interest(1)
+	}
+	field(PHAS,DBF_SHORT) {
+		prompt("Scan Phase")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(EVNT,DBF_SHORT) {
+		prompt("Event Number")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(TSE,DBF_SHORT) {
+		prompt("Time Stamp Event")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(TSEL,DBF_INLINK) {
+		prompt("Time Stamp Link")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(DTYP,DBF_DEVICE) {
+		prompt("Device Type")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(DISV,DBF_SHORT) {
+		prompt("Disable Value")
+		initial("1")
+		promptgroup(GUI_SCAN)
+	}
+	field(DISA,DBF_SHORT) {
+		prompt("Disable")
+	}
+	field(SDIS,DBF_INLINK) {
+		prompt("Scanning Disable")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(MLOK,DBF_NOACCESS) {
+		prompt("Monitor lock")
+		special(SPC_NOMOD)
+		extra("epicsMutexId	mlok")
+		interest(4)
+	}
+	field(MLIS,DBF_NOACCESS) {
+		prompt("Monitor List")
+		special(SPC_NOMOD)
+		extra("ELLLIST		mlis")
+		interest(4)
+	}
+	field(DISP,DBF_UCHAR) {
+		prompt("Disable putField")
+	}
+	field(PROC,DBF_UCHAR) {
+		prompt("Force Processing")
+		pp(TRUE)
+		interest(3)
+	}
+	field(STAT,DBF_MENU) {
+		prompt("Alarm Status")
+		initial("UDF")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+	}
+	field(SEVR,DBF_MENU) {
+		prompt("Alarm Severity")
+		initial("INVALID")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+	}
+	field(NSTA,DBF_MENU) {
+		prompt("New Alarm Status")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+		interest(2)
+	}
+	field(NSEV,DBF_MENU) {
+		prompt("New Alarm Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKS,DBF_MENU) {
+		prompt("Alarm Ack Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKT,DBF_MENU) {
+		prompt("Alarm Ack Transient")
+		initial("YES")
+		promptgroup(GUI_ALARMS)
+		special(SPC_NOMOD)
+		menu(menuYesNo)
+		interest(2)
+	}
+	field(DISS,DBF_MENU) {
+		prompt("Disable Alarm Sevrty")
+		promptgroup(GUI_SCAN)
+		menu(menuAlarmSevr)
+		interest(1)
+	}
+	field(LCNT,DBF_UCHAR) {
+		prompt("Lock Count")
+		special(SPC_NOMOD)
+		interest(2)
+	}
+	field(PACT,DBF_UCHAR) {
+		prompt("Record active")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(PUTF,DBF_UCHAR) {
+		prompt("dbPutField process")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(RPRO,DBF_UCHAR) {
+		prompt("Reprocess ")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(ASP,DBF_NOACCESS) {
+		prompt("Access Security Pvt")
+		special(SPC_NOMOD)
+		extra("struct asgMember *asp")
+		interest(4)
+	}
+	field(PPN,DBF_NOACCESS) {
+		prompt("addr of PUTNOTIFY")
+		special(SPC_NOMOD)
+		extra("struct putNotify *ppn")
+		interest(4)
+	}
+	field(PPNR,DBF_NOACCESS) {
+		prompt("pputNotifyRecord")
+		special(SPC_NOMOD)
+		extra("struct putNotifyRecord *ppnr")
+		interest(4)
+	}
+	field(SPVT,DBF_NOACCESS) {
+		prompt("Scan Private")
+		special(SPC_NOMOD)
+		extra("struct scan_element *spvt")
+		interest(4)
+	}
+	field(RSET,DBF_NOACCESS) {
+		prompt("Address of RSET")
+		special(SPC_NOMOD)
+		extra("struct rset	*rset")
+		interest(4)
+	}
+	field(DSET,DBF_NOACCESS) {
+		prompt("DSET address")
+		special(SPC_NOMOD)
+		extra("struct dset	*dset")
+		interest(4)
+	}
+	field(DPVT,DBF_NOACCESS) {
+		prompt("Device Private")
+		special(SPC_NOMOD)
+		extra("void		*dpvt")
+		interest(4)
+	}
+	field(RDES,DBF_NOACCESS) {
+		prompt("Address of dbRecordType")
+		special(SPC_NOMOD)
+		extra("struct dbRecordType *rdes")
+		interest(4)
+	}
+	field(LSET,DBF_NOACCESS) {
+		prompt("Lock Set")
+		special(SPC_NOMOD)
+		extra("struct lockRecord *lset")
+		interest(4)
+	}
+	field(PRIO,DBF_MENU) {
+		prompt("Scheduling Priority")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuPriority)
+		interest(1)
+	}
+	field(TPRO,DBF_UCHAR) {
+		prompt("Trace Processing")
+	}
+	field(BKPT,DBF_NOACCESS) {
+		prompt("Break Point")
+		special(SPC_NOMOD)
+		extra("char bkpt")
+		interest(1)
+	}
+	field(UDF,DBF_UCHAR) {
+		prompt("Undefined")
+		initial("1")
+		promptgroup(GUI_COMMON)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TIME,DBF_NOACCESS) {
+		prompt("Time")
+		special(SPC_NOMOD)
+		extra("epicsTimeStamp	time")
+		interest(2)
+	}
+	field(FLNK,DBF_FWDLINK) {
+		prompt("Forward Process Link")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(VAL,DBF_STRING) {
+		prompt("Value")
+		promptgroup(GUI_DISPLAY)
+		size(20)
+		pp(TRUE)
+		asl(ASL0)
+	}
+	field(OVAL,DBF_STRING) {
+		prompt("Prev Value")
+		special(SPC_NOMOD)
+		size(20)
+		interest(3)
+	}
+}
+recordtype(stringin) {
+	field(NAME,DBF_STRING) {
+		prompt("Record Name")
+		special(SPC_NOMOD)
+		size(61)
+	}
+	field(DESC,DBF_STRING) {
+		prompt("Descriptor")
+		promptgroup(GUI_COMMON)
+		size(41)
+	}
+	field(ASG,DBF_STRING) {
+		prompt("Access Security Group")
+		promptgroup(GUI_COMMON)
+		special(SPC_AS)
+		size(29)
+	}
+	field(SCAN,DBF_MENU) {
+		prompt("Scan Mechanism")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuScan)
+		interest(1)
+	}
+	field(PINI,DBF_MENU) {
+		prompt("Process at iocInit")
+		promptgroup(GUI_SCAN)
+		menu(menuPini)
+		interest(1)
+	}
+	field(PHAS,DBF_SHORT) {
+		prompt("Scan Phase")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(EVNT,DBF_SHORT) {
+		prompt("Event Number")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(TSE,DBF_SHORT) {
+		prompt("Time Stamp Event")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(TSEL,DBF_INLINK) {
+		prompt("Time Stamp Link")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(DTYP,DBF_DEVICE) {
+		prompt("Device Type")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(DISV,DBF_SHORT) {
+		prompt("Disable Value")
+		initial("1")
+		promptgroup(GUI_SCAN)
+	}
+	field(DISA,DBF_SHORT) {
+		prompt("Disable")
+	}
+	field(SDIS,DBF_INLINK) {
+		prompt("Scanning Disable")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(MLOK,DBF_NOACCESS) {
+		prompt("Monitor lock")
+		special(SPC_NOMOD)
+		extra("epicsMutexId	mlok")
+		interest(4)
+	}
+	field(MLIS,DBF_NOACCESS) {
+		prompt("Monitor List")
+		special(SPC_NOMOD)
+		extra("ELLLIST		mlis")
+		interest(4)
+	}
+	field(DISP,DBF_UCHAR) {
+		prompt("Disable putField")
+	}
+	field(PROC,DBF_UCHAR) {
+		prompt("Force Processing")
+		pp(TRUE)
+		interest(3)
+	}
+	field(STAT,DBF_MENU) {
+		prompt("Alarm Status")
+		initial("UDF")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+	}
+	field(SEVR,DBF_MENU) {
+		prompt("Alarm Severity")
+		initial("INVALID")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+	}
+	field(NSTA,DBF_MENU) {
+		prompt("New Alarm Status")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+		interest(2)
+	}
+	field(NSEV,DBF_MENU) {
+		prompt("New Alarm Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKS,DBF_MENU) {
+		prompt("Alarm Ack Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKT,DBF_MENU) {
+		prompt("Alarm Ack Transient")
+		initial("YES")
+		promptgroup(GUI_ALARMS)
+		special(SPC_NOMOD)
+		menu(menuYesNo)
+		interest(2)
+	}
+	field(DISS,DBF_MENU) {
+		prompt("Disable Alarm Sevrty")
+		promptgroup(GUI_SCAN)
+		menu(menuAlarmSevr)
+		interest(1)
+	}
+	field(LCNT,DBF_UCHAR) {
+		prompt("Lock Count")
+		special(SPC_NOMOD)
+		interest(2)
+	}
+	field(PACT,DBF_UCHAR) {
+		prompt("Record active")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(PUTF,DBF_UCHAR) {
+		prompt("dbPutField process")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(RPRO,DBF_UCHAR) {
+		prompt("Reprocess ")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(ASP,DBF_NOACCESS) {
+		prompt("Access Security Pvt")
+		special(SPC_NOMOD)
+		extra("struct asgMember *asp")
+		interest(4)
+	}
+	field(PPN,DBF_NOACCESS) {
+		prompt("addr of PUTNOTIFY")
+		special(SPC_NOMOD)
+		extra("struct putNotify *ppn")
+		interest(4)
+	}
+	field(PPNR,DBF_NOACCESS) {
+		prompt("pputNotifyRecord")
+		special(SPC_NOMOD)
+		extra("struct putNotifyRecord *ppnr")
+		interest(4)
+	}
+	field(SPVT,DBF_NOACCESS) {
+		prompt("Scan Private")
+		special(SPC_NOMOD)
+		extra("struct scan_element *spvt")
+		interest(4)
+	}
+	field(RSET,DBF_NOACCESS) {
+		prompt("Address of RSET")
+		special(SPC_NOMOD)
+		extra("struct rset	*rset")
+		interest(4)
+	}
+	field(DSET,DBF_NOACCESS) {
+		prompt("DSET address")
+		special(SPC_NOMOD)
+		extra("struct dset	*dset")
+		interest(4)
+	}
+	field(DPVT,DBF_NOACCESS) {
+		prompt("Device Private")
+		special(SPC_NOMOD)
+		extra("void		*dpvt")
+		interest(4)
+	}
+	field(RDES,DBF_NOACCESS) {
+		prompt("Address of dbRecordType")
+		special(SPC_NOMOD)
+		extra("struct dbRecordType *rdes")
+		interest(4)
+	}
+	field(LSET,DBF_NOACCESS) {
+		prompt("Lock Set")
+		special(SPC_NOMOD)
+		extra("struct lockRecord *lset")
+		interest(4)
+	}
+	field(PRIO,DBF_MENU) {
+		prompt("Scheduling Priority")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuPriority)
+		interest(1)
+	}
+	field(TPRO,DBF_UCHAR) {
+		prompt("Trace Processing")
+	}
+	field(BKPT,DBF_NOACCESS) {
+		prompt("Break Point")
+		special(SPC_NOMOD)
+		extra("char bkpt")
+		interest(1)
+	}
+	field(UDF,DBF_UCHAR) {
+		prompt("Undefined")
+		initial("1")
+		promptgroup(GUI_COMMON)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TIME,DBF_NOACCESS) {
+		prompt("Time")
+		special(SPC_NOMOD)
+		extra("epicsTimeStamp	time")
+		interest(2)
+	}
+	field(FLNK,DBF_FWDLINK) {
+		prompt("Forward Process Link")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(VAL,DBF_STRING) {
+		prompt("Current Value")
+		promptgroup(GUI_INPUTS)
+		size(40)
+		pp(TRUE)
+		asl(ASL0)
+	}
+	field(OVAL,DBF_STRING) {
+		prompt("Previous Value")
+		special(SPC_NOMOD)
+		size(40)
+		interest(3)
+	}
+	field(INP,DBF_INLINK) {
+		prompt("Input Specification")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(MPST,DBF_MENU) {
+		prompt("Post Value Monitors")
+		promptgroup(GUI_DISPLAY)
+		menu(stringinPOST)
+		interest(1)
+	}
+	field(APST,DBF_MENU) {
+		prompt("Post Archive Monitors")
+		promptgroup(GUI_DISPLAY)
+		menu(stringinPOST)
+		interest(1)
+	}
+	field(SIOL,DBF_INLINK) {
+		prompt("Sim Input Specifctn")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(SVAL,DBF_STRING) {
+		prompt("Simulation Value")
+		size(40)
+		pp(TRUE)
+	}
+	field(SIML,DBF_INLINK) {
+		prompt("Sim Mode Location")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(SIMM,DBF_MENU) {
+		prompt("Simulation Mode")
+		menu(menuYesNo)
+		interest(1)
+	}
+	field(SIMS,DBF_MENU) {
+		prompt("Sim mode Alarm Svrty")
+		promptgroup(GUI_INPUTS)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+}
+recordtype(stringout) {
+	field(NAME,DBF_STRING) {
+		prompt("Record Name")
+		special(SPC_NOMOD)
+		size(61)
+	}
+	field(DESC,DBF_STRING) {
+		prompt("Descriptor")
+		promptgroup(GUI_COMMON)
+		size(41)
+	}
+	field(ASG,DBF_STRING) {
+		prompt("Access Security Group")
+		promptgroup(GUI_COMMON)
+		special(SPC_AS)
+		size(29)
+	}
+	field(SCAN,DBF_MENU) {
+		prompt("Scan Mechanism")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuScan)
+		interest(1)
+	}
+	field(PINI,DBF_MENU) {
+		prompt("Process at iocInit")
+		promptgroup(GUI_SCAN)
+		menu(menuPini)
+		interest(1)
+	}
+	field(PHAS,DBF_SHORT) {
+		prompt("Scan Phase")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(EVNT,DBF_SHORT) {
+		prompt("Event Number")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(TSE,DBF_SHORT) {
+		prompt("Time Stamp Event")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(TSEL,DBF_INLINK) {
+		prompt("Time Stamp Link")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(DTYP,DBF_DEVICE) {
+		prompt("Device Type")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(DISV,DBF_SHORT) {
+		prompt("Disable Value")
+		initial("1")
+		promptgroup(GUI_SCAN)
+	}
+	field(DISA,DBF_SHORT) {
+		prompt("Disable")
+	}
+	field(SDIS,DBF_INLINK) {
+		prompt("Scanning Disable")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(MLOK,DBF_NOACCESS) {
+		prompt("Monitor lock")
+		special(SPC_NOMOD)
+		extra("epicsMutexId	mlok")
+		interest(4)
+	}
+	field(MLIS,DBF_NOACCESS) {
+		prompt("Monitor List")
+		special(SPC_NOMOD)
+		extra("ELLLIST		mlis")
+		interest(4)
+	}
+	field(DISP,DBF_UCHAR) {
+		prompt("Disable putField")
+	}
+	field(PROC,DBF_UCHAR) {
+		prompt("Force Processing")
+		pp(TRUE)
+		interest(3)
+	}
+	field(STAT,DBF_MENU) {
+		prompt("Alarm Status")
+		initial("UDF")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+	}
+	field(SEVR,DBF_MENU) {
+		prompt("Alarm Severity")
+		initial("INVALID")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+	}
+	field(NSTA,DBF_MENU) {
+		prompt("New Alarm Status")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+		interest(2)
+	}
+	field(NSEV,DBF_MENU) {
+		prompt("New Alarm Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKS,DBF_MENU) {
+		prompt("Alarm Ack Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKT,DBF_MENU) {
+		prompt("Alarm Ack Transient")
+		initial("YES")
+		promptgroup(GUI_ALARMS)
+		special(SPC_NOMOD)
+		menu(menuYesNo)
+		interest(2)
+	}
+	field(DISS,DBF_MENU) {
+		prompt("Disable Alarm Sevrty")
+		promptgroup(GUI_SCAN)
+		menu(menuAlarmSevr)
+		interest(1)
+	}
+	field(LCNT,DBF_UCHAR) {
+		prompt("Lock Count")
+		special(SPC_NOMOD)
+		interest(2)
+	}
+	field(PACT,DBF_UCHAR) {
+		prompt("Record active")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(PUTF,DBF_UCHAR) {
+		prompt("dbPutField process")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(RPRO,DBF_UCHAR) {
+		prompt("Reprocess ")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(ASP,DBF_NOACCESS) {
+		prompt("Access Security Pvt")
+		special(SPC_NOMOD)
+		extra("struct asgMember *asp")
+		interest(4)
+	}
+	field(PPN,DBF_NOACCESS) {
+		prompt("addr of PUTNOTIFY")
+		special(SPC_NOMOD)
+		extra("struct putNotify *ppn")
+		interest(4)
+	}
+	field(PPNR,DBF_NOACCESS) {
+		prompt("pputNotifyRecord")
+		special(SPC_NOMOD)
+		extra("struct putNotifyRecord *ppnr")
+		interest(4)
+	}
+	field(SPVT,DBF_NOACCESS) {
+		prompt("Scan Private")
+		special(SPC_NOMOD)
+		extra("struct scan_element *spvt")
+		interest(4)
+	}
+	field(RSET,DBF_NOACCESS) {
+		prompt("Address of RSET")
+		special(SPC_NOMOD)
+		extra("struct rset	*rset")
+		interest(4)
+	}
+	field(DSET,DBF_NOACCESS) {
+		prompt("DSET address")
+		special(SPC_NOMOD)
+		extra("struct dset	*dset")
+		interest(4)
+	}
+	field(DPVT,DBF_NOACCESS) {
+		prompt("Device Private")
+		special(SPC_NOMOD)
+		extra("void		*dpvt")
+		interest(4)
+	}
+	field(RDES,DBF_NOACCESS) {
+		prompt("Address of dbRecordType")
+		special(SPC_NOMOD)
+		extra("struct dbRecordType *rdes")
+		interest(4)
+	}
+	field(LSET,DBF_NOACCESS) {
+		prompt("Lock Set")
+		special(SPC_NOMOD)
+		extra("struct lockRecord *lset")
+		interest(4)
+	}
+	field(PRIO,DBF_MENU) {
+		prompt("Scheduling Priority")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuPriority)
+		interest(1)
+	}
+	field(TPRO,DBF_UCHAR) {
+		prompt("Trace Processing")
+	}
+	field(BKPT,DBF_NOACCESS) {
+		prompt("Break Point")
+		special(SPC_NOMOD)
+		extra("char bkpt")
+		interest(1)
+	}
+	field(UDF,DBF_UCHAR) {
+		prompt("Undefined")
+		initial("1")
+		promptgroup(GUI_COMMON)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TIME,DBF_NOACCESS) {
+		prompt("Time")
+		special(SPC_NOMOD)
+		extra("epicsTimeStamp	time")
+		interest(2)
+	}
+	field(FLNK,DBF_FWDLINK) {
+		prompt("Forward Process Link")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(VAL,DBF_STRING) {
+		prompt("Current Value")
+		promptgroup(GUI_OUTPUT)
+		size(40)
+		pp(TRUE)
+		asl(ASL0)
+	}
+	field(OVAL,DBF_STRING) {
+		prompt("Previous Value")
+		special(SPC_NOMOD)
+		size(40)
+		interest(3)
+	}
+	field(DOL,DBF_INLINK) {
+		prompt("Desired Output Loc")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(OMSL,DBF_MENU) {
+		prompt("Output Mode Select")
+		promptgroup(GUI_OUTPUT)
+		menu(menuOmsl)
+		interest(1)
+	}
+	field(OUT,DBF_OUTLINK) {
+		prompt("Output Specification")
+		promptgroup(GUI_OUTPUT)
+		interest(1)
+	}
+	field(MPST,DBF_MENU) {
+		prompt("Post Value Monitors")
+		promptgroup(GUI_DISPLAY)
+		menu(stringoutPOST)
+		interest(1)
+	}
+	field(APST,DBF_MENU) {
+		prompt("Post Archive Monitors")
+		promptgroup(GUI_DISPLAY)
+		menu(stringoutPOST)
+		interest(1)
+	}
+	field(SIOL,DBF_OUTLINK) {
+		prompt("Sim Output Specifctn")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(SIML,DBF_INLINK) {
+		prompt("Sim Mode Location")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(SIMM,DBF_MENU) {
+		prompt("Simulation Mode")
+		menu(menuYesNo)
+		interest(1)
+	}
+	field(SIMS,DBF_MENU) {
+		prompt("Sim mode Alarm Svrty")
+		promptgroup(GUI_INPUTS)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(IVOA,DBF_MENU) {
+		prompt("INVALID output action")
+		promptgroup(GUI_OUTPUT)
+		menu(menuIvoa)
+		interest(2)
+	}
+	field(IVOV,DBF_STRING) {
+		prompt("INVALID output value")
+		promptgroup(GUI_OUTPUT)
+		size(40)
+		interest(2)
+	}
+}
+recordtype(sub) {
+	field(NAME,DBF_STRING) {
+		prompt("Record Name")
+		special(SPC_NOMOD)
+		size(61)
+	}
+	field(DESC,DBF_STRING) {
+		prompt("Descriptor")
+		promptgroup(GUI_COMMON)
+		size(41)
+	}
+	field(ASG,DBF_STRING) {
+		prompt("Access Security Group")
+		promptgroup(GUI_COMMON)
+		special(SPC_AS)
+		size(29)
+	}
+	field(SCAN,DBF_MENU) {
+		prompt("Scan Mechanism")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuScan)
+		interest(1)
+	}
+	field(PINI,DBF_MENU) {
+		prompt("Process at iocInit")
+		promptgroup(GUI_SCAN)
+		menu(menuPini)
+		interest(1)
+	}
+	field(PHAS,DBF_SHORT) {
+		prompt("Scan Phase")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(EVNT,DBF_SHORT) {
+		prompt("Event Number")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(TSE,DBF_SHORT) {
+		prompt("Time Stamp Event")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(TSEL,DBF_INLINK) {
+		prompt("Time Stamp Link")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(DTYP,DBF_DEVICE) {
+		prompt("Device Type")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(DISV,DBF_SHORT) {
+		prompt("Disable Value")
+		initial("1")
+		promptgroup(GUI_SCAN)
+	}
+	field(DISA,DBF_SHORT) {
+		prompt("Disable")
+	}
+	field(SDIS,DBF_INLINK) {
+		prompt("Scanning Disable")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(MLOK,DBF_NOACCESS) {
+		prompt("Monitor lock")
+		special(SPC_NOMOD)
+		extra("epicsMutexId	mlok")
+		interest(4)
+	}
+	field(MLIS,DBF_NOACCESS) {
+		prompt("Monitor List")
+		special(SPC_NOMOD)
+		extra("ELLLIST		mlis")
+		interest(4)
+	}
+	field(DISP,DBF_UCHAR) {
+		prompt("Disable putField")
+	}
+	field(PROC,DBF_UCHAR) {
+		prompt("Force Processing")
+		pp(TRUE)
+		interest(3)
+	}
+	field(STAT,DBF_MENU) {
+		prompt("Alarm Status")
+		initial("UDF")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+	}
+	field(SEVR,DBF_MENU) {
+		prompt("Alarm Severity")
+		initial("INVALID")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+	}
+	field(NSTA,DBF_MENU) {
+		prompt("New Alarm Status")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+		interest(2)
+	}
+	field(NSEV,DBF_MENU) {
+		prompt("New Alarm Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKS,DBF_MENU) {
+		prompt("Alarm Ack Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKT,DBF_MENU) {
+		prompt("Alarm Ack Transient")
+		initial("YES")
+		promptgroup(GUI_ALARMS)
+		special(SPC_NOMOD)
+		menu(menuYesNo)
+		interest(2)
+	}
+	field(DISS,DBF_MENU) {
+		prompt("Disable Alarm Sevrty")
+		promptgroup(GUI_SCAN)
+		menu(menuAlarmSevr)
+		interest(1)
+	}
+	field(LCNT,DBF_UCHAR) {
+		prompt("Lock Count")
+		special(SPC_NOMOD)
+		interest(2)
+	}
+	field(PACT,DBF_UCHAR) {
+		prompt("Record active")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(PUTF,DBF_UCHAR) {
+		prompt("dbPutField process")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(RPRO,DBF_UCHAR) {
+		prompt("Reprocess ")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(ASP,DBF_NOACCESS) {
+		prompt("Access Security Pvt")
+		special(SPC_NOMOD)
+		extra("struct asgMember *asp")
+		interest(4)
+	}
+	field(PPN,DBF_NOACCESS) {
+		prompt("addr of PUTNOTIFY")
+		special(SPC_NOMOD)
+		extra("struct putNotify *ppn")
+		interest(4)
+	}
+	field(PPNR,DBF_NOACCESS) {
+		prompt("pputNotifyRecord")
+		special(SPC_NOMOD)
+		extra("struct putNotifyRecord *ppnr")
+		interest(4)
+	}
+	field(SPVT,DBF_NOACCESS) {
+		prompt("Scan Private")
+		special(SPC_NOMOD)
+		extra("struct scan_element *spvt")
+		interest(4)
+	}
+	field(RSET,DBF_NOACCESS) {
+		prompt("Address of RSET")
+		special(SPC_NOMOD)
+		extra("struct rset	*rset")
+		interest(4)
+	}
+	field(DSET,DBF_NOACCESS) {
+		prompt("DSET address")
+		special(SPC_NOMOD)
+		extra("struct dset	*dset")
+		interest(4)
+	}
+	field(DPVT,DBF_NOACCESS) {
+		prompt("Device Private")
+		special(SPC_NOMOD)
+		extra("void		*dpvt")
+		interest(4)
+	}
+	field(RDES,DBF_NOACCESS) {
+		prompt("Address of dbRecordType")
+		special(SPC_NOMOD)
+		extra("struct dbRecordType *rdes")
+		interest(4)
+	}
+	field(LSET,DBF_NOACCESS) {
+		prompt("Lock Set")
+		special(SPC_NOMOD)
+		extra("struct lockRecord *lset")
+		interest(4)
+	}
+	field(PRIO,DBF_MENU) {
+		prompt("Scheduling Priority")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuPriority)
+		interest(1)
+	}
+	field(TPRO,DBF_UCHAR) {
+		prompt("Trace Processing")
+	}
+	field(BKPT,DBF_NOACCESS) {
+		prompt("Break Point")
+		special(SPC_NOMOD)
+		extra("char bkpt")
+		interest(1)
+	}
+	field(UDF,DBF_UCHAR) {
+		prompt("Undefined")
+		initial("1")
+		promptgroup(GUI_COMMON)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TIME,DBF_NOACCESS) {
+		prompt("Time")
+		special(SPC_NOMOD)
+		extra("epicsTimeStamp	time")
+		interest(2)
+	}
+	field(FLNK,DBF_FWDLINK) {
+		prompt("Forward Process Link")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(VAL,DBF_DOUBLE) {
+		prompt("Result")
+		pp(TRUE)
+		asl(ASL0)
+	}
+	field(INAM,DBF_STRING) {
+		prompt("Init Routine Name")
+		promptgroup(GUI_SUB)
+		special(SPC_NOMOD)
+		size(40)
+		interest(1)
+	}
+	field(SNAM,DBF_STRING) {
+		prompt("Subroutine Name")
+		promptgroup(GUI_SUB)
+		special(100)
+		size(40)
+		interest(1)
+	}
+	field(SADR,DBF_NOACCESS) {
+		prompt("Subroutine Address")
+		special(SPC_NOMOD)
+		extra("SUBFUNCPTR sadr")
+		interest(4)
+	}
+	field(INPA,DBF_INLINK) {
+		prompt("Input A")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(INPB,DBF_INLINK) {
+		prompt("Input B")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(INPC,DBF_INLINK) {
+		prompt("Input C")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(INPD,DBF_INLINK) {
+		prompt("Input D")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(INPE,DBF_INLINK) {
+		prompt("Input E")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(INPF,DBF_INLINK) {
+		prompt("Input F")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(INPG,DBF_INLINK) {
+		prompt("Input G")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(INPH,DBF_INLINK) {
+		prompt("Input H")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(INPI,DBF_INLINK) {
+		prompt("Input I")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(INPJ,DBF_INLINK) {
+		prompt("Input J")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(INPK,DBF_INLINK) {
+		prompt("Input K")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(INPL,DBF_INLINK) {
+		prompt("Input L")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(EGU,DBF_STRING) {
+		prompt("Units Name")
+		promptgroup(GUI_DISPLAY)
+		size(16)
+		interest(1)
+	}
+	field(HOPR,DBF_DOUBLE) {
+		prompt("High Operating Rng")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(LOPR,DBF_DOUBLE) {
+		prompt("Low Operating Range")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(HIHI,DBF_DOUBLE) {
+		prompt("Hihi Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LOLO,DBF_DOUBLE) {
+		prompt("Lolo Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HIGH,DBF_DOUBLE) {
+		prompt("High Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LOW,DBF_DOUBLE) {
+		prompt("Low Alarm Limit")
+		promptgroup(GUI_ALARMS)
+		pp(TRUE)
+		interest(1)
+	}
+	field(PREC,DBF_SHORT) {
+		prompt("Display Precision")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(BRSV,DBF_MENU) {
+		prompt("Bad Return Severity")
+		promptgroup(GUI_SUB)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HHSV,DBF_MENU) {
+		prompt("Hihi Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LLSV,DBF_MENU) {
+		prompt("Lolo Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HSV,DBF_MENU) {
+		prompt("High Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(LSV,DBF_MENU) {
+		prompt("Low Severity")
+		promptgroup(GUI_ALARMS)
+		menu(menuAlarmSevr)
+		pp(TRUE)
+		interest(1)
+	}
+	field(HYST,DBF_DOUBLE) {
+		prompt("Alarm Deadband")
+		promptgroup(GUI_ALARMS)
+		interest(1)
+	}
+	field(ADEL,DBF_DOUBLE) {
+		prompt("Archive Deadband")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(MDEL,DBF_DOUBLE) {
+		prompt("Monitor Deadband")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(A,DBF_DOUBLE) {
+		prompt("Value of Input A")
+		pp(TRUE)
+	}
+	field(B,DBF_DOUBLE) {
+		prompt("Value of Input B")
+		pp(TRUE)
+	}
+	field(C,DBF_DOUBLE) {
+		prompt("Value of Input C")
+		pp(TRUE)
+	}
+	field(D,DBF_DOUBLE) {
+		prompt("Value of Input D")
+		pp(TRUE)
+	}
+	field(E,DBF_DOUBLE) {
+		prompt("Value of Input E")
+		pp(TRUE)
+	}
+	field(F,DBF_DOUBLE) {
+		prompt("Value of Input F")
+		pp(TRUE)
+	}
+	field(G,DBF_DOUBLE) {
+		prompt("Value of Input G")
+		pp(TRUE)
+	}
+	field(H,DBF_DOUBLE) {
+		prompt("Value of Input H")
+		pp(TRUE)
+	}
+	field(I,DBF_DOUBLE) {
+		prompt("Value of Input I")
+		pp(TRUE)
+	}
+	field(J,DBF_DOUBLE) {
+		prompt("Value of Input J")
+		pp(TRUE)
+	}
+	field(K,DBF_DOUBLE) {
+		prompt("Value of Input K")
+		pp(TRUE)
+	}
+	field(L,DBF_DOUBLE) {
+		prompt("Value of Input L")
+		pp(TRUE)
+	}
+	field(LA,DBF_DOUBLE) {
+		prompt("Prev Value of A")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LB,DBF_DOUBLE) {
+		prompt("Prev Value of B")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LC,DBF_DOUBLE) {
+		prompt("Prev Value of C")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LD,DBF_DOUBLE) {
+		prompt("Prev Value of D")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LE,DBF_DOUBLE) {
+		prompt("Prev Value of E")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LF,DBF_DOUBLE) {
+		prompt("Prev Value of F")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LG,DBF_DOUBLE) {
+		prompt("Prev Value of G")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LH,DBF_DOUBLE) {
+		prompt("Prev Value of H")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LI,DBF_DOUBLE) {
+		prompt("Prev Value of I")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LJ,DBF_DOUBLE) {
+		prompt("Prev Value of J")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LK,DBF_DOUBLE) {
+		prompt("Prev Value of K")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LL,DBF_DOUBLE) {
+		prompt("Prev Value of L")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(LALM,DBF_DOUBLE) {
+		prompt("Last Value Alarmed")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(ALST,DBF_DOUBLE) {
+		prompt("Last Value Archived")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(MLST,DBF_DOUBLE) {
+		prompt("Last Value Monitored")
+		special(SPC_NOMOD)
+		interest(3)
+	}
+}
+recordtype(subArray) {
+	field(NAME,DBF_STRING) {
+		prompt("Record Name")
+		special(SPC_NOMOD)
+		size(61)
+	}
+	field(DESC,DBF_STRING) {
+		prompt("Descriptor")
+		promptgroup(GUI_COMMON)
+		size(41)
+	}
+	field(ASG,DBF_STRING) {
+		prompt("Access Security Group")
+		promptgroup(GUI_COMMON)
+		special(SPC_AS)
+		size(29)
+	}
+	field(SCAN,DBF_MENU) {
+		prompt("Scan Mechanism")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuScan)
+		interest(1)
+	}
+	field(PINI,DBF_MENU) {
+		prompt("Process at iocInit")
+		promptgroup(GUI_SCAN)
+		menu(menuPini)
+		interest(1)
+	}
+	field(PHAS,DBF_SHORT) {
+		prompt("Scan Phase")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(EVNT,DBF_SHORT) {
+		prompt("Event Number")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(TSE,DBF_SHORT) {
+		prompt("Time Stamp Event")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(TSEL,DBF_INLINK) {
+		prompt("Time Stamp Link")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(DTYP,DBF_DEVICE) {
+		prompt("Device Type")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(DISV,DBF_SHORT) {
+		prompt("Disable Value")
+		initial("1")
+		promptgroup(GUI_SCAN)
+	}
+	field(DISA,DBF_SHORT) {
+		prompt("Disable")
+	}
+	field(SDIS,DBF_INLINK) {
+		prompt("Scanning Disable")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(MLOK,DBF_NOACCESS) {
+		prompt("Monitor lock")
+		special(SPC_NOMOD)
+		extra("epicsMutexId	mlok")
+		interest(4)
+	}
+	field(MLIS,DBF_NOACCESS) {
+		prompt("Monitor List")
+		special(SPC_NOMOD)
+		extra("ELLLIST		mlis")
+		interest(4)
+	}
+	field(DISP,DBF_UCHAR) {
+		prompt("Disable putField")
+	}
+	field(PROC,DBF_UCHAR) {
+		prompt("Force Processing")
+		pp(TRUE)
+		interest(3)
+	}
+	field(STAT,DBF_MENU) {
+		prompt("Alarm Status")
+		initial("UDF")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+	}
+	field(SEVR,DBF_MENU) {
+		prompt("Alarm Severity")
+		initial("INVALID")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+	}
+	field(NSTA,DBF_MENU) {
+		prompt("New Alarm Status")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+		interest(2)
+	}
+	field(NSEV,DBF_MENU) {
+		prompt("New Alarm Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKS,DBF_MENU) {
+		prompt("Alarm Ack Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKT,DBF_MENU) {
+		prompt("Alarm Ack Transient")
+		initial("YES")
+		promptgroup(GUI_ALARMS)
+		special(SPC_NOMOD)
+		menu(menuYesNo)
+		interest(2)
+	}
+	field(DISS,DBF_MENU) {
+		prompt("Disable Alarm Sevrty")
+		promptgroup(GUI_SCAN)
+		menu(menuAlarmSevr)
+		interest(1)
+	}
+	field(LCNT,DBF_UCHAR) {
+		prompt("Lock Count")
+		special(SPC_NOMOD)
+		interest(2)
+	}
+	field(PACT,DBF_UCHAR) {
+		prompt("Record active")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(PUTF,DBF_UCHAR) {
+		prompt("dbPutField process")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(RPRO,DBF_UCHAR) {
+		prompt("Reprocess ")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(ASP,DBF_NOACCESS) {
+		prompt("Access Security Pvt")
+		special(SPC_NOMOD)
+		extra("struct asgMember *asp")
+		interest(4)
+	}
+	field(PPN,DBF_NOACCESS) {
+		prompt("addr of PUTNOTIFY")
+		special(SPC_NOMOD)
+		extra("struct putNotify *ppn")
+		interest(4)
+	}
+	field(PPNR,DBF_NOACCESS) {
+		prompt("pputNotifyRecord")
+		special(SPC_NOMOD)
+		extra("struct putNotifyRecord *ppnr")
+		interest(4)
+	}
+	field(SPVT,DBF_NOACCESS) {
+		prompt("Scan Private")
+		special(SPC_NOMOD)
+		extra("struct scan_element *spvt")
+		interest(4)
+	}
+	field(RSET,DBF_NOACCESS) {
+		prompt("Address of RSET")
+		special(SPC_NOMOD)
+		extra("struct rset	*rset")
+		interest(4)
+	}
+	field(DSET,DBF_NOACCESS) {
+		prompt("DSET address")
+		special(SPC_NOMOD)
+		extra("struct dset	*dset")
+		interest(4)
+	}
+	field(DPVT,DBF_NOACCESS) {
+		prompt("Device Private")
+		special(SPC_NOMOD)
+		extra("void		*dpvt")
+		interest(4)
+	}
+	field(RDES,DBF_NOACCESS) {
+		prompt("Address of dbRecordType")
+		special(SPC_NOMOD)
+		extra("struct dbRecordType *rdes")
+		interest(4)
+	}
+	field(LSET,DBF_NOACCESS) {
+		prompt("Lock Set")
+		special(SPC_NOMOD)
+		extra("struct lockRecord *lset")
+		interest(4)
+	}
+	field(PRIO,DBF_MENU) {
+		prompt("Scheduling Priority")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuPriority)
+		interest(1)
+	}
+	field(TPRO,DBF_UCHAR) {
+		prompt("Trace Processing")
+	}
+	field(BKPT,DBF_NOACCESS) {
+		prompt("Break Point")
+		special(SPC_NOMOD)
+		extra("char bkpt")
+		interest(1)
+	}
+	field(UDF,DBF_UCHAR) {
+		prompt("Undefined")
+		initial("1")
+		promptgroup(GUI_COMMON)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TIME,DBF_NOACCESS) {
+		prompt("Time")
+		special(SPC_NOMOD)
+		extra("epicsTimeStamp	time")
+		interest(2)
+	}
+	field(FLNK,DBF_FWDLINK) {
+		prompt("Forward Process Link")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(VAL,DBF_NOACCESS) {
+		prompt("Value")
+		special(SPC_DBADDR)
+		extra("void *		val")
+		pp(TRUE)
+		asl(ASL0)
+	}
+	field(PREC,DBF_SHORT) {
+		prompt("Display Precision")
+		promptgroup(GUI_COMMON)
+		interest(1)
+	}
+	field(FTVL,DBF_MENU) {
+		prompt("Field Type of Value")
+		promptgroup(GUI_ALARMS)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(INP,DBF_INLINK) {
+		prompt("Input Specification")
+		promptgroup(GUI_BITS1)
+		interest(1)
+	}
+	field(EGU,DBF_STRING) {
+		prompt("Engineering Units Name")
+		promptgroup(GUI_BITS2)
+		size(16)
+		interest(1)
+	}
+	field(HOPR,DBF_DOUBLE) {
+		prompt("High Operating Range")
+		promptgroup(GUI_CALC)
+		interest(1)
+	}
+	field(LOPR,DBF_DOUBLE) {
+		prompt("Low Operating Range")
+		promptgroup(GUI_CLOCK)
+		interest(1)
+	}
+	field(MALM,DBF_ULONG) {
+		prompt("Maximum Elements  ")
+		initial("1")
+		promptgroup(GUI_CLOCK)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NELM,DBF_ULONG) {
+		prompt("Number of Elements")
+		initial("1")
+		promptgroup(GUI_COMPRESS)
+		pp(TRUE)
+	}
+	field(INDX,DBF_ULONG) {
+		prompt("Substring Index")
+		promptgroup(GUI_CONVERT)
+		pp(TRUE)
+	}
+	field(BUSY,DBF_SHORT) {
+		prompt("Busy Indicator")
+		special(SPC_NOMOD)
+	}
+	field(NORD,DBF_LONG) {
+		prompt("Number elements read")
+		special(SPC_NOMOD)
+	}
+	field(BPTR,DBF_NOACCESS) {
+		prompt("Buffer Pointer")
+		special(SPC_NOMOD)
+		extra("void *		bptr")
+		interest(4)
+	}
+}
+recordtype(waveform) {
+	field(NAME,DBF_STRING) {
+		prompt("Record Name")
+		special(SPC_NOMOD)
+		size(61)
+	}
+	field(DESC,DBF_STRING) {
+		prompt("Descriptor")
+		promptgroup(GUI_COMMON)
+		size(41)
+	}
+	field(ASG,DBF_STRING) {
+		prompt("Access Security Group")
+		promptgroup(GUI_COMMON)
+		special(SPC_AS)
+		size(29)
+	}
+	field(SCAN,DBF_MENU) {
+		prompt("Scan Mechanism")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuScan)
+		interest(1)
+	}
+	field(PINI,DBF_MENU) {
+		prompt("Process at iocInit")
+		promptgroup(GUI_SCAN)
+		menu(menuPini)
+		interest(1)
+	}
+	field(PHAS,DBF_SHORT) {
+		prompt("Scan Phase")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(EVNT,DBF_SHORT) {
+		prompt("Event Number")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(TSE,DBF_SHORT) {
+		prompt("Time Stamp Event")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(TSEL,DBF_INLINK) {
+		prompt("Time Stamp Link")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(DTYP,DBF_DEVICE) {
+		prompt("Device Type")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(DISV,DBF_SHORT) {
+		prompt("Disable Value")
+		initial("1")
+		promptgroup(GUI_SCAN)
+	}
+	field(DISA,DBF_SHORT) {
+		prompt("Disable")
+	}
+	field(SDIS,DBF_INLINK) {
+		prompt("Scanning Disable")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(MLOK,DBF_NOACCESS) {
+		prompt("Monitor lock")
+		special(SPC_NOMOD)
+		extra("epicsMutexId	mlok")
+		interest(4)
+	}
+	field(MLIS,DBF_NOACCESS) {
+		prompt("Monitor List")
+		special(SPC_NOMOD)
+		extra("ELLLIST		mlis")
+		interest(4)
+	}
+	field(DISP,DBF_UCHAR) {
+		prompt("Disable putField")
+	}
+	field(PROC,DBF_UCHAR) {
+		prompt("Force Processing")
+		pp(TRUE)
+		interest(3)
+	}
+	field(STAT,DBF_MENU) {
+		prompt("Alarm Status")
+		initial("UDF")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+	}
+	field(SEVR,DBF_MENU) {
+		prompt("Alarm Severity")
+		initial("INVALID")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+	}
+	field(NSTA,DBF_MENU) {
+		prompt("New Alarm Status")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+		interest(2)
+	}
+	field(NSEV,DBF_MENU) {
+		prompt("New Alarm Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKS,DBF_MENU) {
+		prompt("Alarm Ack Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKT,DBF_MENU) {
+		prompt("Alarm Ack Transient")
+		initial("YES")
+		promptgroup(GUI_ALARMS)
+		special(SPC_NOMOD)
+		menu(menuYesNo)
+		interest(2)
+	}
+	field(DISS,DBF_MENU) {
+		prompt("Disable Alarm Sevrty")
+		promptgroup(GUI_SCAN)
+		menu(menuAlarmSevr)
+		interest(1)
+	}
+	field(LCNT,DBF_UCHAR) {
+		prompt("Lock Count")
+		special(SPC_NOMOD)
+		interest(2)
+	}
+	field(PACT,DBF_UCHAR) {
+		prompt("Record active")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(PUTF,DBF_UCHAR) {
+		prompt("dbPutField process")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(RPRO,DBF_UCHAR) {
+		prompt("Reprocess ")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(ASP,DBF_NOACCESS) {
+		prompt("Access Security Pvt")
+		special(SPC_NOMOD)
+		extra("struct asgMember *asp")
+		interest(4)
+	}
+	field(PPN,DBF_NOACCESS) {
+		prompt("addr of PUTNOTIFY")
+		special(SPC_NOMOD)
+		extra("struct putNotify *ppn")
+		interest(4)
+	}
+	field(PPNR,DBF_NOACCESS) {
+		prompt("pputNotifyRecord")
+		special(SPC_NOMOD)
+		extra("struct putNotifyRecord *ppnr")
+		interest(4)
+	}
+	field(SPVT,DBF_NOACCESS) {
+		prompt("Scan Private")
+		special(SPC_NOMOD)
+		extra("struct scan_element *spvt")
+		interest(4)
+	}
+	field(RSET,DBF_NOACCESS) {
+		prompt("Address of RSET")
+		special(SPC_NOMOD)
+		extra("struct rset	*rset")
+		interest(4)
+	}
+	field(DSET,DBF_NOACCESS) {
+		prompt("DSET address")
+		special(SPC_NOMOD)
+		extra("struct dset	*dset")
+		interest(4)
+	}
+	field(DPVT,DBF_NOACCESS) {
+		prompt("Device Private")
+		special(SPC_NOMOD)
+		extra("void		*dpvt")
+		interest(4)
+	}
+	field(RDES,DBF_NOACCESS) {
+		prompt("Address of dbRecordType")
+		special(SPC_NOMOD)
+		extra("struct dbRecordType *rdes")
+		interest(4)
+	}
+	field(LSET,DBF_NOACCESS) {
+		prompt("Lock Set")
+		special(SPC_NOMOD)
+		extra("struct lockRecord *lset")
+		interest(4)
+	}
+	field(PRIO,DBF_MENU) {
+		prompt("Scheduling Priority")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuPriority)
+		interest(1)
+	}
+	field(TPRO,DBF_UCHAR) {
+		prompt("Trace Processing")
+	}
+	field(BKPT,DBF_NOACCESS) {
+		prompt("Break Point")
+		special(SPC_NOMOD)
+		extra("char bkpt")
+		interest(1)
+	}
+	field(UDF,DBF_UCHAR) {
+		prompt("Undefined")
+		initial("1")
+		promptgroup(GUI_COMMON)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TIME,DBF_NOACCESS) {
+		prompt("Time")
+		special(SPC_NOMOD)
+		extra("epicsTimeStamp	time")
+		interest(2)
+	}
+	field(FLNK,DBF_FWDLINK) {
+		prompt("Forward Process Link")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(VAL,DBF_NOACCESS) {
+		prompt("Value")
+		special(SPC_DBADDR)
+		extra("void *		val")
+		pp(TRUE)
+		asl(ASL0)
+	}
+	field(RARM,DBF_SHORT) {
+		prompt("Rearm the waveform")
+		promptgroup(GUI_WAVE)
+		pp(TRUE)
+		interest(1)
+	}
+	field(PREC,DBF_SHORT) {
+		prompt("Display Precision")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(INP,DBF_INLINK) {
+		prompt("Input Specification")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(EGU,DBF_STRING) {
+		prompt("Engineering Units Name")
+		promptgroup(GUI_DISPLAY)
+		size(16)
+		interest(1)
+	}
+	field(HOPR,DBF_DOUBLE) {
+		prompt("High Operating Range")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(LOPR,DBF_DOUBLE) {
+		prompt("Low Operating Range")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(NELM,DBF_ULONG) {
+		prompt("Number of Elements")
+		initial("1")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(FTVL,DBF_MENU) {
+		prompt("Field Type of Value")
+		promptgroup(GUI_WAVE)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	field(BUSY,DBF_SHORT) {
+		prompt("Busy Indicator")
+		special(SPC_NOMOD)
+	}
+	field(NORD,DBF_ULONG) {
+		prompt("Number elements read")
+		special(SPC_NOMOD)
+	}
+	field(BPTR,DBF_NOACCESS) {
+		prompt("Buffer Pointer")
+		special(SPC_NOMOD)
+		extra("void *		bptr")
+		interest(4)
+	}
+	field(SIOL,DBF_INLINK) {
+		prompt("Sim Input Specifctn")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(SIML,DBF_INLINK) {
+		prompt("Sim Mode Location")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(SIMM,DBF_MENU) {
+		prompt("Simulation Mode")
+		menu(menuYesNo)
+		interest(1)
+	}
+	field(SIMS,DBF_MENU) {
+		prompt("Sim mode Alarm Svrty")
+		promptgroup(GUI_INPUTS)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(MPST,DBF_MENU) {
+		prompt("Post Value Monitors")
+		promptgroup(GUI_DISPLAY)
+		menu(waveformPOST)
+		interest(1)
+	}
+	field(APST,DBF_MENU) {
+		prompt("Post Archive Monitors")
+		promptgroup(GUI_DISPLAY)
+		menu(waveformPOST)
+		interest(1)
+	}
+	field(HASH,DBF_ULONG) {
+		prompt("Hash of OnChange data.")
+		interest(3)
+	}
+}
+recordtype(asyn) {
+	field(NAME,DBF_STRING) {
+		prompt("Record Name")
+		special(SPC_NOMOD)
+		size(61)
+	}
+	field(DESC,DBF_STRING) {
+		prompt("Descriptor")
+		promptgroup(GUI_COMMON)
+		size(41)
+	}
+	field(ASG,DBF_STRING) {
+		prompt("Access Security Group")
+		promptgroup(GUI_COMMON)
+		special(SPC_AS)
+		size(29)
+	}
+	field(SCAN,DBF_MENU) {
+		prompt("Scan Mechanism")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuScan)
+		interest(1)
+	}
+	field(PINI,DBF_MENU) {
+		prompt("Process at iocInit")
+		promptgroup(GUI_SCAN)
+		menu(menuPini)
+		interest(1)
+	}
+	field(PHAS,DBF_SHORT) {
+		prompt("Scan Phase")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(EVNT,DBF_SHORT) {
+		prompt("Event Number")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		interest(1)
+	}
+	field(TSE,DBF_SHORT) {
+		prompt("Time Stamp Event")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(TSEL,DBF_INLINK) {
+		prompt("Time Stamp Link")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(DTYP,DBF_DEVICE) {
+		prompt("Device Type")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(DISV,DBF_SHORT) {
+		prompt("Disable Value")
+		initial("1")
+		promptgroup(GUI_SCAN)
+	}
+	field(DISA,DBF_SHORT) {
+		prompt("Disable")
+	}
+	field(SDIS,DBF_INLINK) {
+		prompt("Scanning Disable")
+		promptgroup(GUI_SCAN)
+		interest(1)
+	}
+	field(MLOK,DBF_NOACCESS) {
+		prompt("Monitor lock")
+		special(SPC_NOMOD)
+		extra("epicsMutexId	mlok")
+		interest(4)
+	}
+	field(MLIS,DBF_NOACCESS) {
+		prompt("Monitor List")
+		special(SPC_NOMOD)
+		extra("ELLLIST		mlis")
+		interest(4)
+	}
+	field(DISP,DBF_UCHAR) {
+		prompt("Disable putField")
+	}
+	field(PROC,DBF_UCHAR) {
+		prompt("Force Processing")
+		pp(TRUE)
+		interest(3)
+	}
+	field(STAT,DBF_MENU) {
+		prompt("Alarm Status")
+		initial("UDF")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+	}
+	field(SEVR,DBF_MENU) {
+		prompt("Alarm Severity")
+		initial("INVALID")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+	}
+	field(NSTA,DBF_MENU) {
+		prompt("New Alarm Status")
+		special(SPC_NOMOD)
+		menu(menuAlarmStat)
+		interest(2)
+	}
+	field(NSEV,DBF_MENU) {
+		prompt("New Alarm Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKS,DBF_MENU) {
+		prompt("Alarm Ack Severity")
+		special(SPC_NOMOD)
+		menu(menuAlarmSevr)
+		interest(2)
+	}
+	field(ACKT,DBF_MENU) {
+		prompt("Alarm Ack Transient")
+		initial("YES")
+		promptgroup(GUI_ALARMS)
+		special(SPC_NOMOD)
+		menu(menuYesNo)
+		interest(2)
+	}
+	field(DISS,DBF_MENU) {
+		prompt("Disable Alarm Sevrty")
+		promptgroup(GUI_SCAN)
+		menu(menuAlarmSevr)
+		interest(1)
+	}
+	field(LCNT,DBF_UCHAR) {
+		prompt("Lock Count")
+		special(SPC_NOMOD)
+		interest(2)
+	}
+	field(PACT,DBF_UCHAR) {
+		prompt("Record active")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(PUTF,DBF_UCHAR) {
+		prompt("dbPutField process")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(RPRO,DBF_UCHAR) {
+		prompt("Reprocess ")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(ASP,DBF_NOACCESS) {
+		prompt("Access Security Pvt")
+		special(SPC_NOMOD)
+		extra("struct asgMember *asp")
+		interest(4)
+	}
+	field(PPN,DBF_NOACCESS) {
+		prompt("addr of PUTNOTIFY")
+		special(SPC_NOMOD)
+		extra("struct putNotify *ppn")
+		interest(4)
+	}
+	field(PPNR,DBF_NOACCESS) {
+		prompt("pputNotifyRecord")
+		special(SPC_NOMOD)
+		extra("struct putNotifyRecord *ppnr")
+		interest(4)
+	}
+	field(SPVT,DBF_NOACCESS) {
+		prompt("Scan Private")
+		special(SPC_NOMOD)
+		extra("struct scan_element *spvt")
+		interest(4)
+	}
+	field(RSET,DBF_NOACCESS) {
+		prompt("Address of RSET")
+		special(SPC_NOMOD)
+		extra("struct rset	*rset")
+		interest(4)
+	}
+	field(DSET,DBF_NOACCESS) {
+		prompt("DSET address")
+		special(SPC_NOMOD)
+		extra("struct dset	*dset")
+		interest(4)
+	}
+	field(DPVT,DBF_NOACCESS) {
+		prompt("Device Private")
+		special(SPC_NOMOD)
+		extra("void		*dpvt")
+		interest(4)
+	}
+	field(RDES,DBF_NOACCESS) {
+		prompt("Address of dbRecordType")
+		special(SPC_NOMOD)
+		extra("struct dbRecordType *rdes")
+		interest(4)
+	}
+	field(LSET,DBF_NOACCESS) {
+		prompt("Lock Set")
+		special(SPC_NOMOD)
+		extra("struct lockRecord *lset")
+		interest(4)
+	}
+	field(PRIO,DBF_MENU) {
+		prompt("Scheduling Priority")
+		promptgroup(GUI_SCAN)
+		special(SPC_SCAN)
+		menu(menuPriority)
+		interest(1)
+	}
+	field(TPRO,DBF_UCHAR) {
+		prompt("Trace Processing")
+	}
+	field(BKPT,DBF_NOACCESS) {
+		prompt("Break Point")
+		special(SPC_NOMOD)
+		extra("char bkpt")
+		interest(1)
+	}
+	field(UDF,DBF_UCHAR) {
+		prompt("Undefined")
+		initial("1")
+		promptgroup(GUI_COMMON)
+		pp(TRUE)
+		interest(1)
+	}
+	field(TIME,DBF_NOACCESS) {
+		prompt("Time")
+		special(SPC_NOMOD)
+		extra("epicsTimeStamp	time")
+		interest(2)
+	}
+	field(FLNK,DBF_FWDLINK) {
+		prompt("Forward Process Link")
+		promptgroup(GUI_LINKS)
+		interest(1)
+	}
+	field(VAL,DBF_STRING) {
+		prompt("Value field (unused)")
+		promptgroup(GUI_INPUTS)
+		size(40)
+		asl(ASL0)
+	}
+	field(PORT,DBF_STRING) {
+		prompt("asyn port")
+		initial("")
+		promptgroup(GUI_DISPLAY)
+		special(100)
+		size(40)
+		interest(1)
+	}
+	field(ADDR,DBF_LONG) {
+		prompt("asyn address")
+		initial("0")
+		promptgroup(GUI_DISPLAY)
+		special(100)
+		interest(1)
+	}
+	field(PCNCT,DBF_MENU) {
+		prompt("Port Connect/Disconnect")
+		promptgroup(GUI_DISPLAY)
+		special(100)
+		menu(asynCONNECT)
+		interest(1)
+	}
+	field(DRVINFO,DBF_STRING) {
+		prompt("Driver info string")
+		initial("")
+		special(100)
+		size(40)
+	}
+	field(REASON,DBF_LONG) {
+		prompt("asynUser->reason")
+		special(100)
+	}
+	field(SOCK,DBF_STRING) {
+		prompt("socket address")
+		initial("")
+		promptgroup(GUI_DISPLAY)
+		special(100)
+		size(40)
+		interest(1)
+	}
+	field(TMOD,DBF_MENU) {
+		prompt("Transaction mode")
+		promptgroup(GUI_COMMON)
+		menu(asynTMOD)
+		interest(1)
+	}
+	field(TMOT,DBF_DOUBLE) {
+		prompt("Timeout (sec)")
+		initial("1.0")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(IFACE,DBF_MENU) {
+		prompt("Interface")
+		special(100)
+		menu(asynINTERFACE)
+	}
+	field(OCTETIV,DBF_LONG) {
+		prompt("asynOctet is valid")
+	}
+	field(OPTIONIV,DBF_LONG) {
+		prompt("asynOption is valid")
+	}
+	field(GPIBIV,DBF_LONG) {
+		prompt("asynGPIB is valid")
+	}
+	field(I32IV,DBF_LONG) {
+		prompt("asynInt32 is valid")
+	}
+	field(UI32IV,DBF_LONG) {
+		prompt("asynUInt32Digital is valid")
+	}
+	field(F64IV,DBF_LONG) {
+		prompt("asynFloat64 is valid")
+	}
+	field(AOUT,DBF_STRING) {
+		prompt("Output (command) string")
+		promptgroup(GUI_INPUTS)
+		size(40)
+		pp(TRUE)
+		asl(ASL0)
+	}
+	field(OEOS,DBF_STRING) {
+		prompt("Output delimiter")
+		promptgroup(GUI_DISPLAY)
+		special(100)
+		size(40)
+	}
+	field(BOUT,DBF_CHAR) {
+		prompt("Output binary data")
+		special(SPC_DBADDR)
+		pp(TRUE)
+		asl(ASL0)
+	}
+	field(OPTR,DBF_NOACCESS) {
+		prompt("Output buffer pointer")
+		special(SPC_NOMOD)
+		extra("void *optr")
+		interest(4)
+	}
+	field(OMAX,DBF_LONG) {
+		prompt("Max. size of output array")
+		initial("80")
+		promptgroup(GUI_DISPLAY)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NOWT,DBF_LONG) {
+		prompt("Number of bytes to write")
+		initial("80")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(NAWT,DBF_LONG) {
+		prompt("Number of bytes actually written")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(OFMT,DBF_MENU) {
+		prompt("Output format")
+		promptgroup(GUI_COMMON)
+		menu(asynFMT)
+		interest(1)
+	}
+	field(AINP,DBF_STRING) {
+		prompt("Input (response) string")
+		promptgroup(GUI_INPUTS)
+		special(SPC_NOMOD)
+		size(40)
+		asl(ASL0)
+	}
+	field(TINP,DBF_STRING) {
+		prompt("Translated input string")
+		promptgroup(GUI_INPUTS)
+		special(SPC_NOMOD)
+		size(40)
+		asl(ASL0)
+	}
+	field(IEOS,DBF_STRING) {
+		prompt("Input Delimiter")
+		promptgroup(GUI_DISPLAY)
+		special(100)
+		size(40)
+	}
+	field(BINP,DBF_CHAR) {
+		prompt("Input binary data")
+		special(SPC_DBADDR)
+		asl(ASL0)
+	}
+	field(IPTR,DBF_NOACCESS) {
+		prompt("Input buffer pointer")
+		special(SPC_NOMOD)
+		extra("void *iptr")
+		interest(4)
+	}
+	field(IMAX,DBF_LONG) {
+		prompt("Max. size of input array")
+		initial("80")
+		promptgroup(GUI_DISPLAY)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(NRRD,DBF_LONG) {
+		prompt("Number of bytes to read")
+		promptgroup(GUI_DISPLAY)
+		interest(1)
+	}
+	field(NORD,DBF_LONG) {
+		prompt("Number of bytes read")
+		promptgroup(GUI_DISPLAY)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(IFMT,DBF_MENU) {
+		prompt("Input format")
+		promptgroup(GUI_COMMON)
+		menu(asynFMT)
+		interest(1)
+	}
+	field(EOMR,DBF_MENU) {
+		prompt("EOM reason")
+		promptgroup(GUI_DISPLAY)
+		special(SPC_NOMOD)
+		menu(asynEOMREASON)
+		interest(1)
+	}
+	field(I32INP,DBF_LONG) {
+		prompt("asynInt32 input")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(I32OUT,DBF_LONG) {
+		prompt("asynInt32 output")
+		pp(TRUE)
+		interest(1)
+	}
+	field(UI32INP,DBF_ULONG) {
+		prompt("asynUInt32Digital input")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(UI32OUT,DBF_ULONG) {
+		prompt("asynUInt32Digital output")
+		pp(TRUE)
+		interest(1)
+	}
+	field(UI32MASK,DBF_ULONG) {
+		prompt("asynUInt32Digital mask")
+		initial("0xffffffff")
+		special(100)
+	}
+	field(F64INP,DBF_DOUBLE) {
+		prompt("asynFloat64 input")
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(F64OUT,DBF_DOUBLE) {
+		prompt("asynFloat64 output")
+		pp(TRUE)
+		interest(1)
+	}
+	field(BAUD,DBF_MENU) {
+		prompt("Baud rate")
+		promptgroup(GUI_COMMON)
+		special(100)
+		menu(serialBAUD)
+	}
+	field(PRTY,DBF_MENU) {
+		prompt("Parity")
+		promptgroup(GUI_COMMON)
+		special(100)
+		menu(serialPRTY)
+	}
+	field(DBIT,DBF_MENU) {
+		prompt("Data bits")
+		promptgroup(GUI_COMMON)
+		special(100)
+		menu(serialDBIT)
+	}
+	field(SBIT,DBF_MENU) {
+		prompt("Stop bits")
+		promptgroup(GUI_COMMON)
+		special(100)
+		menu(serialSBIT)
+	}
+	field(MCTL,DBF_MENU) {
+		prompt("Modem control")
+		promptgroup(GUI_COMMON)
+		special(100)
+		menu(serialMCTL)
+	}
+	field(FCTL,DBF_MENU) {
+		prompt("Flow control")
+		promptgroup(GUI_COMMON)
+		special(100)
+		menu(serialFCTL)
+	}
+	field(UCMD,DBF_MENU) {
+		prompt("Universal command")
+		promptgroup(GUI_COMMON)
+		menu(gpibUCMD)
+		pp(TRUE)
+		interest(1)
+	}
+	field(ACMD,DBF_MENU) {
+		prompt("Addressed command")
+		promptgroup(GUI_COMMON)
+		menu(gpibACMD)
+		pp(TRUE)
+		interest(1)
+	}
+	field(SPR,DBF_UCHAR) {
+		prompt("Serial poll response")
+		promptgroup(GUI_INPUTS)
+		special(SPC_NOMOD)
+		asl(ASL0)
+	}
+	field(TMSK,DBF_LONG) {
+		prompt("Trace mask")
+		promptgroup(GUI_DISPLAY)
+		special(100)
+		interest(1)
+	}
+	field(TB0,DBF_MENU) {
+		prompt("Trace error")
+		promptgroup(GUI_DISPLAY)
+		special(100)
+		menu(asynTRACE)
+		interest(1)
+	}
+	field(TB1,DBF_MENU) {
+		prompt("Trace IO device")
+		promptgroup(GUI_DISPLAY)
+		special(100)
+		menu(asynTRACE)
+		interest(1)
+	}
+	field(TB2,DBF_MENU) {
+		prompt("Trace IO filter")
+		promptgroup(GUI_DISPLAY)
+		special(100)
+		menu(asynTRACE)
+		interest(1)
+	}
+	field(TB3,DBF_MENU) {
+		prompt("Trace IO driver")
+		promptgroup(GUI_DISPLAY)
+		special(100)
+		menu(asynTRACE)
+		interest(1)
+	}
+	field(TB4,DBF_MENU) {
+		prompt("Trace flow")
+		promptgroup(GUI_DISPLAY)
+		special(100)
+		menu(asynTRACE)
+		interest(1)
+	}
+	field(TIOM,DBF_LONG) {
+		prompt("Trace I/O mask")
+		promptgroup(GUI_DISPLAY)
+		special(100)
+		interest(1)
+	}
+	field(TIB0,DBF_MENU) {
+		prompt("Trace IO ASCII")
+		promptgroup(GUI_DISPLAY)
+		special(100)
+		menu(asynTRACE)
+		interest(1)
+	}
+	field(TIB1,DBF_MENU) {
+		prompt("Trace IO escape")
+		promptgroup(GUI_DISPLAY)
+		special(100)
+		menu(asynTRACE)
+		interest(1)
+	}
+	field(TIB2,DBF_MENU) {
+		prompt("Trace IO hex")
+		promptgroup(GUI_DISPLAY)
+		special(100)
+		menu(asynTRACE)
+		interest(1)
+	}
+	field(TSIZ,DBF_LONG) {
+		prompt("Trace IO truncate size")
+		promptgroup(GUI_DISPLAY)
+		special(100)
+		interest(1)
+	}
+	field(TFIL,DBF_STRING) {
+		prompt("Trace IO file")
+		promptgroup(GUI_DISPLAY)
+		special(100)
+		size(40)
+		interest(1)
+	}
+	field(AUCT,DBF_MENU) {
+		prompt("Autoconnect")
+		promptgroup(GUI_DISPLAY)
+		special(100)
+		menu(asynAUTOCONNECT)
+		interest(1)
+	}
+	field(CNCT,DBF_MENU) {
+		prompt("Connect/Disconnect")
+		promptgroup(GUI_DISPLAY)
+		special(100)
+		menu(asynCONNECT)
+		interest(1)
+	}
+	field(ENBL,DBF_MENU) {
+		prompt("Enable/Disable")
+		promptgroup(GUI_DISPLAY)
+		special(100)
+		menu(asynENABLE)
+		interest(1)
+	}
+	field(ERRS,DBF_NOACCESS) {
+		prompt("Error string")
+		special(SPC_DBADDR)
+		extra("char *errs")
+		interest(1)
+	}
+	field(AQR,DBF_UCHAR) {
+		prompt("Abort queueRequest")
+		special(100)
+	}
+}
+device(ai,CONSTANT,devAiSoft,"Soft Channel")
+device(ai,CONSTANT,devAiSoftRaw,"Raw Soft Channel")
+device(ai,INST_IO,devTimestampAI,"Soft Timestamp")
+device(ai,INST_IO,devAiGeneralTime,"General Time")
+device(ai,INST_IO,asynAiInt32,"asynInt32")
+device(ai,INST_IO,asynAiInt32Average,"asynInt32Average")
+device(ai,INST_IO,asynAiFloat64,"asynFloat64")
+device(ai,INST_IO,asynAiFloat64Average,"asynFloat64Average")
+device(ai,INST_IO,devaiStream,"stream")
+device(ao,CONSTANT,devAoSoft,"Soft Channel")
+device(ao,CONSTANT,devAoSoftRaw,"Raw Soft Channel")
+device(ao,CONSTANT,devAoSoftCallback,"Async Soft Channel")
+device(ao,INST_IO,asynAoInt32,"asynInt32")
+device(ao,INST_IO,asynAoFloat64,"asynFloat64")
+device(ao,INST_IO,devaoStream,"stream")
+device(bi,CONSTANT,devBiSoft,"Soft Channel")
+device(bi,CONSTANT,devBiSoftRaw,"Raw Soft Channel")
+device(bi,INST_IO,asynBiInt32,"asynInt32")
+device(bi,INST_IO,asynBiUInt32Digital,"asynUInt32Digital")
+device(bi,INST_IO,devbiStream,"stream")
+device(bo,CONSTANT,devBoSoft,"Soft Channel")
+device(bo,CONSTANT,devBoSoftRaw,"Raw Soft Channel")
+device(bo,CONSTANT,devBoSoftCallback,"Async Soft Channel")
+device(bo,INST_IO,devBoGeneralTime,"General Time")
+device(bo,INST_IO,asynBoInt32,"asynInt32")
+device(bo,INST_IO,asynBoUInt32Digital,"asynUInt32Digital")
+device(bo,INST_IO,devboStream,"stream")
+device(calcout,CONSTANT,devCalcoutSoft,"Soft Channel")
+device(calcout,CONSTANT,devCalcoutSoftCallback,"Async Soft Channel")
+device(calcout,INST_IO,devcalcoutStream,"stream")
+device(event,CONSTANT,devEventSoft,"Soft Channel")
+device(histogram,CONSTANT,devHistogramSoft,"Soft Channel")
+device(longin,CONSTANT,devLiSoft,"Soft Channel")
+device(longin,INST_IO,devLiGeneralTime,"General Time")
+device(longin,INST_IO,asynLiInt32,"asynInt32")
+device(longin,INST_IO,asynLiUInt32Digital,"asynUInt32Digital")
+device(longin,INST_IO,devlonginStream,"stream")
+device(longout,CONSTANT,devLoSoft,"Soft Channel")
+device(longout,CONSTANT,devLoSoftCallback,"Async Soft Channel")
+device(longout,INST_IO,asynLoInt32,"asynInt32")
+device(longout,INST_IO,asynLoUInt32Digital,"asynUInt32Digital")
+device(longout,INST_IO,devlongoutStream,"stream")
+device(mbbi,CONSTANT,devMbbiSoft,"Soft Channel")
+device(mbbi,CONSTANT,devMbbiSoftRaw,"Raw Soft Channel")
+device(mbbi,INST_IO,asynMbbiInt32,"asynInt32")
+device(mbbi,INST_IO,asynMbbiUInt32Digital,"asynUInt32Digital")
+device(mbbi,INST_IO,devmbbiStream,"stream")
+device(mbbiDirect,CONSTANT,devMbbiDirectSoft,"Soft Channel")
+device(mbbiDirect,CONSTANT,devMbbiDirectSoftRaw,"Raw Soft Channel")
+device(mbbiDirect,INST_IO,asynMbbiDirectUInt32Digital,"asynUInt32Digital")
+device(mbbiDirect,INST_IO,devmbbiDirectStream,"stream")
+device(mbbo,CONSTANT,devMbboSoft,"Soft Channel")
+device(mbbo,CONSTANT,devMbboSoftRaw,"Raw Soft Channel")
+device(mbbo,CONSTANT,devMbboSoftCallback,"Async Soft Channel")
+device(mbbo,INST_IO,asynMbboInt32,"asynInt32")
+device(mbbo,INST_IO,asynMbboUInt32Digital,"asynUInt32Digital")
+device(mbbo,INST_IO,devmbboStream,"stream")
+device(mbboDirect,CONSTANT,devMbboDirectSoft,"Soft Channel")
+device(mbboDirect,CONSTANT,devMbboDirectSoftRaw,"Raw Soft Channel")
+device(mbboDirect,CONSTANT,devMbboDirectSoftCallback,"Async Soft Channel")
+device(mbboDirect,INST_IO,asynMbboDirectUInt32Digital,"asynUInt32Digital")
+device(mbboDirect,INST_IO,devmbboDirectStream,"stream")
+device(stringin,CONSTANT,devSiSoft,"Soft Channel")
+device(stringin,INST_IO,devTimestampSI,"Soft Timestamp")
+device(stringin,INST_IO,devSiGeneralTime,"General Time")
+device(stringin,INST_IO,asynSiOctetCmdResponse,"asynOctetCmdResponse")
+device(stringin,INST_IO,asynSiOctetWriteRead,"asynOctetWriteRead")
+device(stringin,INST_IO,asynSiOctetRead,"asynOctetRead")
+device(stringin,INST_IO,devstringinStream,"stream")
+device(stringout,CONSTANT,devSoSoft,"Soft Channel")
+device(stringout,CONSTANT,devSoSoftCallback,"Async Soft Channel")
+device(stringout,INST_IO,devSoStdio,"stdio")
+device(stringout,INST_IO,asynSoOctetWrite,"asynOctetWrite")
+device(stringout,INST_IO,devstringoutStream,"stream")
+device(subArray,CONSTANT,devSASoft,"Soft Channel")
+device(waveform,CONSTANT,devWfSoft,"Soft Channel")
+device(waveform,INST_IO,asynWfOctetCmdResponse,"asynOctetCmdResponse")
+device(waveform,INST_IO,asynWfOctetWriteRead,"asynOctetWriteRead")
+device(waveform,INST_IO,asynWfOctetRead,"asynOctetRead")
+device(waveform,INST_IO,asynWfOctetWrite,"asynOctetWrite")
+device(waveform,INST_IO,asynInt8ArrayWfIn,"asynInt8ArrayIn")
+device(waveform,INST_IO,asynInt8ArrayWfOut,"asynInt8ArrayOut")
+device(waveform,INST_IO,asynInt16ArrayWfIn,"asynInt16ArrayIn")
+device(waveform,INST_IO,asynInt16ArrayWfOut,"asynInt16ArrayOut")
+device(waveform,INST_IO,asynInt32ArrayWfIn,"asynInt32ArrayIn")
+device(waveform,INST_IO,asynInt32ArrayWfOut,"asynInt32ArrayOut")
+device(waveform,INST_IO,asynFloat32ArrayWfIn,"asynFloat32ArrayIn")
+device(waveform,INST_IO,asynFloat32ArrayWfOut,"asynFloat32ArrayOut")
+device(waveform,INST_IO,asynFloat64ArrayWfIn,"asynFloat64ArrayIn")
+device(waveform,INST_IO,asynFloat64ArrayWfOut,"asynFloat64ArrayOut")
+device(waveform,INST_IO,devwaveformStream,"stream")
+device(asyn,INST_IO,asynRecordDevice,"asynRecordDevice")
+driver(drvAsyn)
+driver(stream)
+registrar(asSub)
+registrar(drvAsynIPPortRegisterCommands)
+registrar(drvAsynIPServerPortRegisterCommands)
+registrar(asynRegister)
+registrar(asynInterposeFlushRegister)
+registrar(asynInterposeEosRegister)
+registrar(iocshSystemCommand)
+registrar(streamRegistrar)
+variable(asCaDebug,int)
+variable(dbRecordsOnceOnly,int)
+variable(dbBptNotMonotonic,int)
+variable(streamDebug,int)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pg9520/iocBoot/Makefile	Wed May 22 12:18:16 2013 +0200
@@ -0,0 +1,6 @@
+TOP = ..
+include $(TOP)/configure/CONFIG
+DIRS += $(wildcard *ioc*)
+DIRS += $(wildcard as*)
+include $(CONFIG)/RULES_DIRS
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pg9520/iocBoot/iocpg9520/Makefile	Wed May 22 12:18:16 2013 +0200
@@ -0,0 +1,5 @@
+TOP = ../..
+include $(TOP)/configure/CONFIG
+ARCH = linux-x86_64
+TARGETS = envPaths
+include $(TOP)/configure/RULES.ioc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pg9520/iocBoot/iocpg9520/st.cmd	Wed May 22 12:18:16 2013 +0200
@@ -0,0 +1,27 @@
+#!../../bin/linux-x86_64/pg9520
+
+## You may have to change pg9520 to something else
+## everywhere it appears in this file
+
+#< envPaths
+
+epicsEnvSet ("STREAM_PROTOCOL_PATH", "../../db")
+
+## Register all support components
+dbLoadDatabase("../../dbd/pg9520.dbd",0,0)
+pg9520_registerRecordDeviceDriver(pdbbase) 
+
+#drvAsynIPPortConfigure ("COM","DDPG9528-1:2101")
+drvAsynIPPortConfigure ("COM","10.0.0.112:2101")
+
+asynSetTraceMask("COM", -1, 0x9)
+
+## Load record instances
+dbLoadRecords("../../db/pg9520.db","P=FHIFEL:,R=PG9520:,BUS=COM")
+
+epicsEnvSet ("streamDebug","1") 
+
+iocInit()
+
+## Start any sequence programs
+#seq sncpg9520,"user=epics"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pg9520/iocBoot/iocpg9520/st.cmd~	Wed May 22 12:18:16 2013 +0200
@@ -0,0 +1,26 @@
+#!../../bin/linux-x86_64/pg9520
+
+## You may have to change pg9520 to something else
+## everywhere it appears in this file
+
+#< envPaths
+
+epicsEnvSet ("STREAM_PROTOCOL_PATH", "../../db")
+
+## Register all support components
+dbLoadDatabase("../../dbd/pg9520.dbd",0,0)
+pg9520_registerRecordDeviceDriver(pdbbase) 
+
+drvAsynIPPortConfigure ("COM","DDPG9528-1:2101")
+
+asynSetTraceMask("COM", -1, 0x9)
+
+## Load record instances
+dbLoadRecords("../../db/pg9520.db","P=FHIFEL:,R=PG9520:,BUS=COM")
+
+epicsEnvSet ("streamDebug","1") 
+
+iocInit()
+
+## Start any sequence programs
+#seq sncpg9520,"user=epics"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pg9520/pg9520App/Db/Makefile	Wed May 22 12:18:16 2013 +0200
@@ -0,0 +1,22 @@
+TOP=../..
+include $(TOP)/configure/CONFIG
+#----------------------------------------
+#  ADD MACRO DEFINITIONS AFTER THIS LINE
+
+#----------------------------------------------------
+#  Optimization of db files using dbst (DEFAULT: NO)
+#DB_OPT = YES
+
+#----------------------------------------------------
+# Create and install (or just install) into <top>/db
+# databases, templates, substitutions like this
+#DB += xxx.db
+
+#----------------------------------------------------
+# If <anyname>.db template is not named <anyname>*.template add
+# <anyname>_template = <templatename>
+
+include $(TOP)/configure/RULES
+#----------------------------------------
+#  ADD RULES AFTER THIS LINE
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pg9520/pg9520App/Makefile	Wed May 22 12:18:16 2013 +0200
@@ -0,0 +1,8 @@
+TOP = ..
+include $(TOP)/configure/CONFIG
+DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *src*))
+DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *Src*))
+DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *db*))
+DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *Db*))
+include $(TOP)/configure/RULES_DIRS
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pg9520/pg9520App/src/Makefile	Wed May 22 12:18:16 2013 +0200
@@ -0,0 +1,49 @@
+TOP=../..
+
+include $(TOP)/configure/CONFIG
+#----------------------------------------
+#  ADD MACRO DEFINITIONS AFTER THIS LINE
+#=============================
+
+#=============================
+# Build the IOC application
+
+PROD_IOC = pg9520
+# pg9520.dbd will be created and installed
+DBD += pg9520.dbd
+
+# pg9520.dbd will be made up from these files:
+pg9520_DBD += base.dbd
+
+# Include dbd files from all support applications:
+#pg9520_DBD += xxx.dbd
+#uh
+pg9520_DBD += drvAsynIPPort.dbd
+pg9520_DBD += iocshGlobalCommands.dbd
+pg9520_DBD += stream.dbd
+
+# Add all the support libraries needed by this IOC
+#pg9520_LIBS += xxx
+#uh
+pg9520_LIBS += asyn
+pg9520_LIBS += stream
+
+# pg9520_registerRecordDeviceDriver.cpp derives from pg9520.dbd
+pg9520_SRCS += pg9520_registerRecordDeviceDriver.cpp
+
+# Build the main IOC entry point on workstation OSs.
+pg9520_SRCS_DEFAULT += pg9520Main.cpp
+pg9520_SRCS_vxWorks += -nil-
+
+# Add support from base/src/vxWorks if needed
+#pg9520_OBJS_vxWorks += $(EPICS_BASE_BIN)/vxComLibrary
+
+# Finally link to the EPICS Base libraries
+pg9520_LIBS += $(EPICS_BASE_IOC_LIBS)
+
+#===========================
+
+include $(TOP)/configure/RULES
+#----------------------------------------
+#  ADD RULES AFTER THIS LINE
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pg9520/pg9520App/src/Makefile~	Wed May 22 12:18:16 2013 +0200
@@ -0,0 +1,42 @@
+TOP=../..
+
+include $(TOP)/configure/CONFIG
+#----------------------------------------
+#  ADD MACRO DEFINITIONS AFTER THIS LINE
+#=============================
+
+#=============================
+# Build the IOC application
+
+PROD_IOC = pg9520
+# pg9520.dbd will be created and installed
+DBD += pg9520.dbd
+
+# pg9520.dbd will be made up from these files:
+pg9520_DBD += base.dbd
+
+# Include dbd files from all support applications:
+#pg9520_DBD += xxx.dbd
+
+# Add all the support libraries needed by this IOC
+#pg9520_LIBS += xxx
+
+# pg9520_registerRecordDeviceDriver.cpp derives from pg9520.dbd
+pg9520_SRCS += pg9520_registerRecordDeviceDriver.cpp
+
+# Build the main IOC entry point on workstation OSs.
+pg9520_SRCS_DEFAULT += pg9520Main.cpp
+pg9520_SRCS_vxWorks += -nil-
+
+# Add support from base/src/vxWorks if needed
+#pg9520_OBJS_vxWorks += $(EPICS_BASE_BIN)/vxComLibrary
+
+# Finally link to the EPICS Base libraries
+pg9520_LIBS += $(EPICS_BASE_IOC_LIBS)
+
+#===========================
+
+include $(TOP)/configure/RULES
+#----------------------------------------
+#  ADD RULES AFTER THIS LINE
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pg9520/pg9520App/src/iocshGlobalCommands.dbd	Wed May 22 12:18:16 2013 +0200
@@ -0,0 +1,1 @@
+registrar(iocshSystemCommand)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pg9520/pg9520App/src/pg9520Main.cpp	Wed May 22 12:18:16 2013 +0200
@@ -0,0 +1,23 @@
+/* pg9520Main.cpp */
+/* Author:  Marty Kraimer Date:    17MAR2000 */
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <stddef.h>
+#include <string.h>
+#include <stdio.h>
+
+#include "epicsExit.h"
+#include "epicsThread.h"
+#include "iocsh.h"
+
+int main(int argc,char *argv[])
+{
+    if(argc>=2) {    
+        iocsh(argv[1]);
+        epicsThreadSleep(.2);
+    }
+    iocsh(NULL);
+    epicsExit(0);
+    return(0);
+}