new structure, local EPICS-base and support files, not included in repo
authorHeinz Junkes <junkes@fhi-berlin.mpg.de>
Tue, 28 Oct 2014 04:47:56 +0100
changeset 4 f4ddf0ee30a9
parent 3 31f1fa0bd787
child 5 85c191e174df
new structure, local EPICS-base and support files, not included in repo
Makefile
bin/linux-x86_64/IOCDOSE
configure/CONFIG_SITE
configure/RELEASE
dbd/IOCDOSE.dbd
lib/linux-x86_64/libdevTimestampWorkaround.a
lib/linux-x86_64/libdevTimestampWorkaround.so
--- a/Makefile	Tue Nov 05 13:22:58 2013 +0100
+++ b/Makefile	Tue Oct 28 04:47:56 2014 +0100
@@ -15,10 +15,8 @@
 include $(TOP)/configure/RULES_TOP
 
 all:
-	cp db/fht.db /srv/ioc/sys/db/
-	cp db/fht.proto /srv/ioc/sys/db/
-	cp db/IOCPG9520.db /srv/ioc/sys/db/
-	cp db/pg9520.proto /srv/ioc/sys/db/
-	cp db/vega.db /srv/ioc/sys/db/
-	cp db/vega.proto /srv/ioc/sys/db/
+	cp -rf iocBoot /srv/ioc/sys
+	cp -rf bin /srv/ioc/sys
+	cp -rf db /srv/ioc/sys
+	cp -rf dbd /srv/ioc/sys
 
Binary file bin/linux-x86_64/IOCDOSE has changed
--- a/configure/CONFIG_SITE	Tue Nov 05 13:22:58 2013 +0100
+++ b/configure/CONFIG_SITE	Tue Oct 28 04:47:56 2014 +0100
@@ -24,11 +24,11 @@
 # To install files into a location other than $(TOP) define
 #   INSTALL_LOCATION here.
 #INSTALL_LOCATION=</path/name/to/install/top>
-INSTALL_LOCATION=/srv/ioc/sys
+#INSTALL_LOCATION=/srv/ioc/sys
 
 # 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=/srv/ioc/boot/iocdose
+#IOCS_APPL_TOP=/srv/ioc/boot/iocdose
--- a/configure/RELEASE	Tue Nov 05 13:22:58 2013 +0100
+++ b/configure/RELEASE	Tue Oct 28 04:47:56 2014 +0100
@@ -24,13 +24,17 @@
 # If using the sequencer, point SNCSEQ at its top directory:
 #SNCSEQ=$(EPICS_BASE)/../modules/soft/seq
 
-MODULES=/opt/epics/modules
+SUPPORT=/home/epics/EPICS/support
 
-STREAM=$(MODULES)/stream/2-4-1
-ASYN=/usr/lib/epics
+STREAM=$(SUPPORT)/stream-2-6
+ASYN=$(SUPPORT)/asyn4-21
+SNCSEQ=$(SUPPORT)/seq-2-1-14
+AUTOSAVE=$(SUPPORT)/autosave-5-1
+IOCSTATS=$(SUPPORT)/iocStats-3-1-11
+
 
 # EPICS_BASE usually appears last so other apps can override stuff:
-EPICS_BASE=/usr/lib/epics
+EPICS_BASE=/home/epics/EPICS/base
 
 # Set RULES here if you want to take build rules from somewhere
 # other than EPICS_BASE:
--- a/dbd/IOCDOSE.dbd	Tue Nov 05 13:22:58 2013 +0100
+++ b/dbd/IOCDOSE.dbd	Tue Oct 28 04:47:56 2014 +0100
@@ -26,6 +26,11 @@
 	choice(serialMCTL_CLOCAL,"CLOCAL")
 	choice(serialMCTL_Yes,"YES")
 }
+menu(serialIX) {
+	choice(serialIX_unknown,"Unknown")
+	choice(serialIX_No,"No")
+	choice(serialIX_Yes,"Yes")
+}
 menu(serialFCTL) {
 	choice(serialFCTL_unknown,"Unknown")
 	choice(serialFCTL_None,"None")
@@ -171,12 +176,6 @@
 	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)")
@@ -278,6 +277,14 @@
 	choice(aoOIF_Full,"Full")
 	choice(aoOIF_Incremental,"Incremental")
 }
+menu(aaoPOST) {
+	choice(aaoPOST_Always,"Always")
+	choice(aaoPOST_OnChange,"On Change")
+}
+menu(aaiPOST) {
+	choice(aaiPOST_Always,"Always")
+	choice(aaiPOST_OnChange,"On Change")
+}
 menu(aSubLFLG) {
 	choice(aSubLFLG_IGNORE,"IGNORE")
 	choice(aSubLFLG_READ,"READ")
@@ -287,6 +294,680 @@
 	choice(aSubEFLG_ON_CHANGE,"ON CHANGE")
 	choice(aSubEFLG_ALWAYS,"ALWAYS")
 }
+recordtype(aai) {
+	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_ALARMS)
+		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(NELM,DBF_ULONG) {
+		prompt("Number of Elements")
+		initial("1")
+		promptgroup(GUI_COMPRESS)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(FTVL,DBF_MENU) {
+		prompt("Field Type of Value")
+		promptgroup(GUI_CONVERT)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	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(SIML,DBF_INLINK) {
+		prompt("Sim Mode Location")
+		promptgroup(GUI_HIST)
+		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(SIOL,DBF_INLINK) {
+		prompt("Sim Input Specifctn")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(MPST,DBF_MENU) {
+		prompt("Post Value Monitors")
+		promptgroup(GUI_DISPLAY)
+		menu(aaiPOST)
+		interest(1)
+	}
+	field(APST,DBF_MENU) {
+		prompt("Post Archive Monitors")
+		promptgroup(GUI_DISPLAY)
+		menu(aaiPOST)
+		interest(1)
+	}
+	field(HASH,DBF_ULONG) {
+		prompt("Hash of OnChange data.")
+		interest(3)
+	}
+}
+recordtype(aao) {
+	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_ALARMS)
+		interest(1)
+	}
+	field(OUT,DBF_OUTLINK) {
+		prompt("Output 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(NELM,DBF_ULONG) {
+		prompt("Number of Elements")
+		initial("1")
+		promptgroup(GUI_COMPRESS)
+		special(SPC_NOMOD)
+		interest(1)
+	}
+	field(FTVL,DBF_MENU) {
+		prompt("Field Type of Value")
+		promptgroup(GUI_CONVERT)
+		special(SPC_NOMOD)
+		menu(menuFtype)
+		interest(1)
+	}
+	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(SIML,DBF_INLINK) {
+		prompt("Sim Mode Location")
+		promptgroup(GUI_HIST)
+		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(SIOL,DBF_OUTLINK) {
+		prompt("Sim Output Specifctn")
+		promptgroup(GUI_INPUTS)
+		interest(1)
+	}
+	field(MPST,DBF_MENU) {
+		prompt("Post Value Monitors")
+		promptgroup(GUI_DISPLAY)
+		menu(aaoPOST)
+		interest(1)
+	}
+	field(APST,DBF_MENU) {
+		prompt("Post Archive Monitors")
+		promptgroup(GUI_DISPLAY)
+		menu(aaoPOST)
+		interest(1)
+	}
+	field(HASH,DBF_ULONG) {
+		prompt("Hash of OnChange data.")
+		interest(3)
+	}
+}
 recordtype(ai) {
 	field(NAME,DBF_STRING) {
 		prompt("Record Name")
@@ -3012,149 +3693,254 @@
 	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)
+		special(SPC_NOMOD)
+		interest(3)
+	}
+	field(ONVA,DBF_ULONG) {
+		prompt("Num. elements in OVLA")
+		initial("1")
+		special(SPC_NOMOD)
+		interest(4)
+	}
+	field(ONVB,DBF_ULONG) {
+		prompt("Num. elements in OVLB")
+		initial("1")
+		special(SPC_NOMOD)
+		interest(4)
+	}
+	field(ONVC,DBF_ULONG) {
+		prompt("Num. elements in OVLC")
+		initial("1")
+		special(SPC_NOMOD)
+		interest(4)
+	}
+	field(ONVD,DBF_ULONG) {
+		prompt("Num. elements in OVLD")
+		initial("1")
+		special(SPC_NOMOD)
+		interest(4)
+	}
+	field(ONVE,DBF_ULONG) {
+		prompt("Num. elements in OVLE")
+		initial("1")
+		special(SPC_NOMOD)
+		interest(4)
+	}
+	field(ONVF,DBF_ULONG) {
+		prompt("Num. elements in OVLF")
+		initial("1")
+		special(SPC_NOMOD)
+		interest(4)
+	}
+	field(ONVG,DBF_ULONG) {
+		prompt("Num. elements in OVLG")
+		initial("1")
+		special(SPC_NOMOD)
+		interest(4)
+	}
+	field(ONVH,DBF_ULONG) {
+		prompt("Num. elements in VAlH")
+		initial("1")
+		special(SPC_NOMOD)
+		interest(4)
+	}
+	field(ONVI,DBF_ULONG) {
+		prompt("Num. elements in OVLI")
+		initial("1")
+		special(SPC_NOMOD)
+		interest(4)
+	}
+	field(ONVJ,DBF_ULONG) {
+		prompt("Num. elements in OVLJ")
+		initial("1")
+		special(SPC_NOMOD)
+		interest(4)
+	}
+	field(ONVK,DBF_ULONG) {
+		prompt("Num. elements in OVLK")
+		initial("1")
+		special(SPC_NOMOD)
+		interest(4)
+	}
+	field(ONVL,DBF_ULONG) {
+		prompt("Num. elements in OVLL")
+		initial("1")
+		special(SPC_NOMOD)
+		interest(4)
+	}
+	field(ONVM,DBF_ULONG) {
+		prompt("Num. elements in OVLM")
+		initial("1")
+		special(SPC_NOMOD)
+		interest(4)
+	}
+	field(ONVN,DBF_ULONG) {
+		prompt("Num. elements in OVLN")
+		initial("1")
+		special(SPC_NOMOD)
+		interest(4)
+	}
+	field(ONVO,DBF_ULONG) {
+		prompt("Num. elements in OVLO")
+		initial("1")
+		special(SPC_NOMOD)
+		interest(4)
+	}
+	field(ONVP,DBF_ULONG) {
+		prompt("Num. elements in OVLP")
+		initial("1")
+		special(SPC_NOMOD)
+		interest(4)
+	}
+	field(ONVQ,DBF_ULONG) {
+		prompt("Num. elements in OVLQ")
+		initial("1")
+		special(SPC_NOMOD)
+		interest(4)
+	}
+	field(ONVR,DBF_ULONG) {
+		prompt("Num. elements in OVLR")
+		initial("1")
+		special(SPC_NOMOD)
+		interest(4)
+	}
+	field(ONVS,DBF_ULONG) {
+		prompt("Num. elements in OVLS")
+		initial("1")
+		special(SPC_NOMOD)
+		interest(4)
+	}
+	field(ONVT,DBF_ULONG) {
+		prompt("Num. elements in OVLT")
+		initial("1")
+		special(SPC_NOMOD)
+		interest(4)
+	}
+	field(ONVU,DBF_ULONG) {
+		prompt("Num. elements in OVLU")
+		initial("1")
+		special(SPC_NOMOD)
+		interest(4)
 	}
 }
 recordtype(bi) {
@@ -4127,7 +4913,7 @@
 		initial("0")
 		promptgroup(GUI_CALC)
 		special(103)
-		size(40)
+		size(80)
 		pp(TRUE)
 	}
 	field(INPA,DBF_INLINK) {
@@ -4404,7 +5190,7 @@
 	field(RPCL,DBF_NOACCESS) {
 		prompt("Reverse Polish Calc")
 		special(SPC_NOMOD)
-		extra("char	rpcl[INFIX_TO_POSTFIX_SIZE(40)]")
+		extra("char	rpcl[INFIX_TO_POSTFIX_SIZE(80)]")
 		interest(4)
 	}
 }
@@ -4669,7 +5455,7 @@
 		initial("0")
 		promptgroup(GUI_CALC)
 		special(103)
-		size(40)
+		size(80)
 		pp(TRUE)
 	}
 	field(CLCV,DBF_LONG) {
@@ -4872,7 +5658,7 @@
 		initial("0")
 		promptgroup(GUI_CALC)
 		special(103)
-		size(40)
+		size(80)
 		pp(TRUE)
 	}
 	field(OCLV,DBF_LONG) {
@@ -5117,13 +5903,13 @@
 	field(RPCL,DBF_NOACCESS) {
 		prompt("Reverse Polish Calc")
 		special(SPC_NOMOD)
-		extra("char	rpcl[INFIX_TO_POSTFIX_SIZE(40)]")
+		extra("char	rpcl[INFIX_TO_POSTFIX_SIZE(80)]")
 		interest(4)
 	}
 	field(ORPC,DBF_NOACCESS) {
 		prompt("Reverse Polish OCalc")
 		special(SPC_NOMOD)
-		extra("char	orpc[INFIX_TO_POSTFIX_SIZE(40)]")
+		extra("char	orpc[INFIX_TO_POSTFIX_SIZE(80)]")
 		interest(4)
 	}
 }
@@ -5447,6 +6233,10 @@
 		prompt("Number Used")
 		special(SPC_NOMOD)
 	}
+	field(OUSE,DBF_ULONG) {
+		prompt("Old Number Used")
+		special(SPC_NOMOD)
+	}
 	field(BPTR,DBF_NOACCESS) {
 		prompt("Buffer Pointer")
 		special(SPC_NOMOD)
@@ -6470,368 +7260,6 @@
 		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")
@@ -13485,16 +13913,15 @@
 		promptgroup(GUI_LINKS)
 		interest(1)
 	}
-	field(VAL,DBF_STRING) {
+	field(VAL,DBF_LONG) {
 		prompt("Value field (unused)")
-		promptgroup(GUI_INPUTS)
-		size(40)
+		interest(4)
 		asl(ASL0)
 	}
 	field(PORT,DBF_STRING) {
 		prompt("asyn port")
 		initial("")
-		promptgroup(GUI_DISPLAY)
+		promptgroup(GUI_INPUTS)
 		special(100)
 		size(40)
 		interest(1)
@@ -13502,88 +13929,91 @@
 	field(ADDR,DBF_LONG) {
 		prompt("asyn address")
 		initial("0")
-		promptgroup(GUI_DISPLAY)
+		promptgroup(GUI_INPUTS)
 		special(100)
 		interest(1)
 	}
 	field(PCNCT,DBF_MENU) {
 		prompt("Port Connect/Disconnect")
-		promptgroup(GUI_DISPLAY)
 		special(100)
 		menu(asynCONNECT)
-		interest(1)
+		interest(2)
 	}
 	field(DRVINFO,DBF_STRING) {
 		prompt("Driver info string")
 		initial("")
+		promptgroup(GUI_INPUTS)
 		special(100)
 		size(40)
+		interest(2)
 	}
 	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)
+		interest(2)
 	}
 	field(TMOD,DBF_MENU) {
 		prompt("Transaction mode")
-		promptgroup(GUI_COMMON)
+		promptgroup(GUI_INPUTS)
 		menu(asynTMOD)
 		interest(1)
 	}
 	field(TMOT,DBF_DOUBLE) {
 		prompt("Timeout (sec)")
 		initial("1.0")
-		promptgroup(GUI_DISPLAY)
+		promptgroup(GUI_INPUTS)
 		interest(1)
 	}
 	field(IFACE,DBF_MENU) {
 		prompt("Interface")
+		promptgroup(GUI_INPUTS)
 		special(100)
 		menu(asynINTERFACE)
+		interest(2)
 	}
 	field(OCTETIV,DBF_LONG) {
 		prompt("asynOctet is valid")
+		interest(2)
 	}
 	field(OPTIONIV,DBF_LONG) {
 		prompt("asynOption is valid")
+		interest(2)
 	}
 	field(GPIBIV,DBF_LONG) {
 		prompt("asynGPIB is valid")
+		interest(2)
 	}
 	field(I32IV,DBF_LONG) {
 		prompt("asynInt32 is valid")
+		interest(2)
 	}
 	field(UI32IV,DBF_LONG) {
 		prompt("asynUInt32Digital is valid")
+		interest(2)
 	}
 	field(F64IV,DBF_LONG) {
 		prompt("asynFloat64 is valid")
+		interest(2)
 	}
 	field(AOUT,DBF_STRING) {
 		prompt("Output (command) string")
-		promptgroup(GUI_INPUTS)
+		promptgroup(GUI_OUTPUT)
 		size(40)
 		pp(TRUE)
-		asl(ASL0)
+		interest(1)
 	}
 	field(OEOS,DBF_STRING) {
 		prompt("Output delimiter")
-		promptgroup(GUI_DISPLAY)
+		promptgroup(GUI_OUTPUT)
 		special(100)
 		size(40)
+		interest(1)
 	}
 	field(BOUT,DBF_CHAR) {
 		prompt("Output binary data")
 		special(SPC_DBADDR)
 		pp(TRUE)
-		asl(ASL0)
+		interest(1)
 	}
 	field(OPTR,DBF_NOACCESS) {
 		prompt("Output buffer pointer")
@@ -13594,46 +14024,45 @@
 	field(OMAX,DBF_LONG) {
 		prompt("Max. size of output array")
 		initial("80")
-		promptgroup(GUI_DISPLAY)
+		promptgroup(GUI_OUTPUT)
 		special(SPC_NOMOD)
 		interest(1)
 	}
 	field(NOWT,DBF_LONG) {
 		prompt("Number of bytes to write")
 		initial("80")
-		promptgroup(GUI_DISPLAY)
+		promptgroup(GUI_OUTPUT)
 		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)
+		promptgroup(GUI_OUTPUT)
 		menu(asynFMT)
 		interest(1)
 	}
 	field(AINP,DBF_STRING) {
 		prompt("Input (response) string")
-		promptgroup(GUI_INPUTS)
 		special(SPC_NOMOD)
 		size(40)
-		asl(ASL0)
+		interest(1)
 	}
 	field(TINP,DBF_STRING) {
 		prompt("Translated input string")
-		promptgroup(GUI_INPUTS)
 		special(SPC_NOMOD)
 		size(40)
+		interest(1)
 		asl(ASL0)
 	}
 	field(IEOS,DBF_STRING) {
 		prompt("Input Delimiter")
-		promptgroup(GUI_DISPLAY)
+		promptgroup(GUI_INPUTS)
 		special(100)
 		size(40)
+		interest(1)
 	}
 	field(BINP,DBF_CHAR) {
 		prompt("Input binary data")
@@ -13649,30 +14078,28 @@
 	field(IMAX,DBF_LONG) {
 		prompt("Max. size of input array")
 		initial("80")
-		promptgroup(GUI_DISPLAY)
+		promptgroup(GUI_INPUTS)
 		special(SPC_NOMOD)
 		interest(1)
 	}
 	field(NRRD,DBF_LONG) {
 		prompt("Number of bytes to read")
-		promptgroup(GUI_DISPLAY)
+		promptgroup(GUI_INPUTS)
 		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)
+		promptgroup(GUI_INPUTS)
 		menu(asynFMT)
 		interest(1)
 	}
 	field(EOMR,DBF_MENU) {
 		prompt("EOM reason")
-		promptgroup(GUI_DISPLAY)
 		special(SPC_NOMOD)
 		menu(asynEOMREASON)
 		interest(1)
@@ -13680,93 +14107,124 @@
 	field(I32INP,DBF_LONG) {
 		prompt("asynInt32 input")
 		special(SPC_NOMOD)
-		interest(1)
+		interest(2)
 	}
 	field(I32OUT,DBF_LONG) {
 		prompt("asynInt32 output")
-		pp(TRUE)
-		interest(1)
+		promptgroup(GUI_OUTPUT)
+		pp(TRUE)
+		interest(2)
 	}
 	field(UI32INP,DBF_ULONG) {
 		prompt("asynUInt32Digital input")
 		special(SPC_NOMOD)
-		interest(1)
+		interest(2)
 	}
 	field(UI32OUT,DBF_ULONG) {
 		prompt("asynUInt32Digital output")
-		pp(TRUE)
-		interest(1)
+		promptgroup(GUI_OUTPUT)
+		pp(TRUE)
+		interest(2)
 	}
 	field(UI32MASK,DBF_ULONG) {
 		prompt("asynUInt32Digital mask")
 		initial("0xffffffff")
-		special(100)
+		promptgroup(GUI_OUTPUT)
+		special(100)
+		interest(2)
 	}
 	field(F64INP,DBF_DOUBLE) {
 		prompt("asynFloat64 input")
 		special(SPC_NOMOD)
-		interest(1)
+		interest(2)
 	}
 	field(F64OUT,DBF_DOUBLE) {
 		prompt("asynFloat64 output")
-		pp(TRUE)
-		interest(1)
+		promptgroup(GUI_OUTPUT)
+		pp(TRUE)
+		interest(2)
 	}
 	field(BAUD,DBF_MENU) {
 		prompt("Baud rate")
-		promptgroup(GUI_COMMON)
+		promptgroup(GUI_INPUTS)
 		special(100)
 		menu(serialBAUD)
+		interest(2)
 	}
 	field(PRTY,DBF_MENU) {
 		prompt("Parity")
-		promptgroup(GUI_COMMON)
+		promptgroup(GUI_INPUTS)
 		special(100)
 		menu(serialPRTY)
+		interest(2)
 	}
 	field(DBIT,DBF_MENU) {
 		prompt("Data bits")
-		promptgroup(GUI_COMMON)
+		promptgroup(GUI_INPUTS)
 		special(100)
 		menu(serialDBIT)
+		interest(2)
 	}
 	field(SBIT,DBF_MENU) {
 		prompt("Stop bits")
-		promptgroup(GUI_COMMON)
+		promptgroup(GUI_INPUTS)
 		special(100)
 		menu(serialSBIT)
+		interest(2)
 	}
 	field(MCTL,DBF_MENU) {
 		prompt("Modem control")
-		promptgroup(GUI_COMMON)
+		promptgroup(GUI_INPUTS)
 		special(100)
 		menu(serialMCTL)
+		interest(2)
 	}
 	field(FCTL,DBF_MENU) {
 		prompt("Flow control")
-		promptgroup(GUI_COMMON)
+		promptgroup(GUI_INPUTS)
 		special(100)
 		menu(serialFCTL)
+		interest(2)
+	}
+	field(IXON,DBF_MENU) {
+		prompt("Output XON/XOFF")
+		promptgroup(GUI_INPUTS)
+		special(100)
+		menu(serialIX)
+		interest(2)
+	}
+	field(IXOFF,DBF_MENU) {
+		prompt("Input XON/XOFF")
+		promptgroup(GUI_INPUTS)
+		special(100)
+		menu(serialIX)
+		interest(2)
+	}
+	field(IXANY,DBF_MENU) {
+		prompt("XON=any character")
+		promptgroup(GUI_INPUTS)
+		special(100)
+		menu(serialIX)
+		interest(2)
 	}
 	field(UCMD,DBF_MENU) {
 		prompt("Universal command")
-		promptgroup(GUI_COMMON)
+		promptgroup(GUI_OUTPUT)
 		menu(gpibUCMD)
 		pp(TRUE)
-		interest(1)
+		interest(2)
 	}
 	field(ACMD,DBF_MENU) {
 		prompt("Addressed command")
-		promptgroup(GUI_COMMON)
+		promptgroup(GUI_OUTPUT)
 		menu(gpibACMD)
 		pp(TRUE)
-		interest(1)
+		interest(2)
 	}
 	field(SPR,DBF_UCHAR) {
 		prompt("Serial poll response")
-		promptgroup(GUI_INPUTS)
-		special(SPC_NOMOD)
-		asl(ASL0)
+		special(SPC_NOMOD)
+		interest(2)
 	}
 	field(TMSK,DBF_LONG) {
 		prompt("Trace mask")
@@ -13851,21 +14309,21 @@
 	}
 	field(AUCT,DBF_MENU) {
 		prompt("Autoconnect")
-		promptgroup(GUI_DISPLAY)
+		promptgroup(GUI_INPUTS)
 		special(100)
 		menu(asynAUTOCONNECT)
 		interest(1)
 	}
 	field(CNCT,DBF_MENU) {
 		prompt("Connect/Disconnect")
-		promptgroup(GUI_DISPLAY)
+		promptgroup(GUI_INPUTS)
 		special(100)
 		menu(asynCONNECT)
 		interest(1)
 	}
 	field(ENBL,DBF_MENU) {
 		prompt("Enable/Disable")
-		promptgroup(GUI_DISPLAY)
+		promptgroup(GUI_INPUTS)
 		special(100)
 		menu(asynENABLE)
 		interest(1)
@@ -13874,13 +14332,18 @@
 		prompt("Error string")
 		special(SPC_DBADDR)
 		extra("char *errs")
-		interest(1)
+		interest(4)
 	}
 	field(AQR,DBF_UCHAR) {
 		prompt("Abort queueRequest")
 		special(100)
-	}
-}
+		interest(4)
+	}
+}
+device(aai,CONSTANT,devAaiSoft,"Soft Channel")
+device(aai,INST_IO,devaaiStream,"stream")
+device(aao,CONSTANT,devAaoSoft,"Soft Channel")
+device(aao,INST_IO,devaaoStream,"stream")
 device(ai,CONSTANT,devAiSoft,"Soft Channel")
 device(ai,CONSTANT,devAiSoftRaw,"Raw Soft Channel")
 device(ai,INST_IO,devTimestampAI,"Soft Timestamp")
@@ -13915,7 +14378,6 @@
 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")
@@ -13974,10 +14436,12 @@
 device(waveform,INST_IO,asynInt16ArrayWfOut,"asynInt16ArrayOut")
 device(waveform,INST_IO,asynInt32ArrayWfIn,"asynInt32ArrayIn")
 device(waveform,INST_IO,asynInt32ArrayWfOut,"asynInt32ArrayOut")
+device(waveform,INST_IO,asynInt32TimeSeries,"asynInt32TimeSeries")
 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,asynFloat64TimeSeries,"asynFloat64TimeSeries")
 device(waveform,INST_IO,devwaveformStream,"stream")
 device(asyn,INST_IO,asynRecordDevice,"asynRecordDevice")
 driver(drvAsyn)
@@ -13992,6 +14456,7 @@
 registrar(save_restoreRegister)
 registrar(dbrestoreRegister)
 registrar(asInitHooksRegister)
+registrar(configMenuRegistrar)
 registrar(streamRegistrar)
 function(rebootProc)
 function(scanMonInit)
@@ -13999,10 +14464,12 @@
 variable(asCaDebug,int)
 variable(dbRecordsOnceOnly,int)
 variable(dbBptNotMonotonic,int)
+variable(dbTemplateMaxVars,int)
 variable(save_restoreDebug,int)
 variable(save_restoreNumSeqFiles,int)
 variable(save_restoreSeqPeriodInSeconds,int)
 variable(save_restoreIncompleteSetsOk,int)
 variable(save_restoreDatedBackupFiles,int)
 variable(save_restoreRemountThreshold,int)
+variable(configMenuDebug,int)
 variable(streamDebug,int)
Binary file lib/linux-x86_64/libdevTimestampWorkaround.a has changed
Binary file lib/linux-x86_64/libdevTimestampWorkaround.so has changed