diff --git a/.gitignore b/.gitignore
index d3baec6aa47..7809003add2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -59,3 +59,4 @@ docs/help/hu/*
 docs/help/nb/*
 docs/help/vi/*
 docs/help/zh_CN/*
+docs/src/*/gui/gmoccapy_release_notes.txt
diff --git a/docs/src/man/man9/classicladder.9.adoc b/docs/src/man/man9/classicladder.9.adoc
index ee403d6e53c..451175bb55e 100644
--- a/docs/src/man/man9/classicladder.9.adoc
+++ b/docs/src/man/man9/classicladder.9.adoc
@@ -27,25 +27,25 @@ the outputs.
 
 == PINS
 
-*classicladder.0.in-*_NN_ IN bit::
-  These bit signal pins map to *%I*_NN_ variables in ClassicLadder.
-*classicladder.0.out-*_NN_ OUT bit::
-  These bit signal pins map to *%Q*_NN_ variables in ClassicLadder.
+**classicladder.0.in-**_NN_ IN bit::
+  These bit signal pins map to **%I**_NN_ variables in ClassicLadder.
+**classicladder.0.out-**_NN_ OUT bit::
+  These bit signal pins map to **%Q**_NN_ variables in ClassicLadder.
   Output from ClassicLadder.
-*classicladder.0.s32in-*_NN_ IN s32::
+**classicladder.0.s32in-**_NN_ IN s32::
   Integer input from ClassicLadder. These s32 signal pins map to
-  *%IW*_NN_ variables in ClassicLadder.
-*classicladder.0.s32out-*_NN_ OUT s32::
+  **%IW**_NN_ variables in ClassicLadder.
+**classicladder.0.s32out-**_NN_ OUT s32::
   Integer output from ClassicLadder. These s32 signal pins map to
-  *%QW*_NN_ variables in ClassicLadder.
-*classicladder.0.floatin-*_NN_ IN float::
+  **%QW**_NN_ variables in ClassicLadder.
+**classicladder.0.floatin-**_NN_ IN float::
   Integer input from ClassicLadder. These float signal pins map to
-  *%IF*_NN_ variables in ClassicLadder. These are truncated to S32
+  **%IF**_NN_ variables in ClassicLadder. These are truncated to S32
   values internally. eg 7.5 will be 7.
-*classicladder.0.floatout-*_NN_ OUT float::
+**classicladder.0.floatout-**_NN_ OUT float::
   Float output from ClassicLadder. These float signal pins map to
-  *%QF*_NN_ variables in ClassicLadder.
-*classicladder.0.hide_gui IN bit*::
+  **%QF**_NN_ variables in ClassicLadder.
+**classicladder.0.hide_gui** IN bi**::
   This bit pin hides the ClassicLadder window, while still having the
   non-realtime code run. This is usually desirable when modbus is used,
   as modbus requires the non-realtime code to run.
diff --git a/docs/src/man/man9/counter.9.adoc b/docs/src/man/man9/counter.9.adoc
index f1c42583305..a10ae6c80a0 100644
--- a/docs/src/man/man9/counter.9.adoc
+++ b/docs/src/man/man9/counter.9.adoc
@@ -30,7 +30,7 @@ HAL manual.
 
 == FUNCTIONS
 
-**counter.capture-position* (uses floating-point)*::
+*counter.capture-position* (uses floating-point)::
   Updates the counts, position and velocity outputs based on internal
   counters.
 **counter.update-counters**::
@@ -38,32 +38,32 @@ HAL manual.
 
 == PINS
 
-**counter.*_N_*.phase-A* bit in*::
+**counter.**_N_**.phase-A** bit in::
   The primary input signal. The internal counter is incremented on each
   rising edge.
-**counter.*_N_*.phase-Z* bit in*::
+**counter.**_N_**.phase-Z** bit in::
   The index input signal. When the *index-enable* pin is TRUE and a
   rising edge on *phase-Z* is seen, *index-enable* is set to FALSE and
   the internal counter is reset to zero.
-**counter.*_N_*.index-enable* bit io*::
+**counter.**_N_**.index-enable** bit io::
    +
 
-**counter.*_N_*.reset* bit io*::
+**counter.**_N_**.reset** bit io::
    +
 
-**counter.*_N_*.counts* signed out*::
+**counter.**_N_**.counts** signed out::
    +
 
-**counter.*_N_*.position* float out*::
+**counter.**_N_**.position** float out::
    +
 
-**counter.*_N_*.velocity* float out*::
+**counter.**_N_**.velocity** float out::
   These pins function according to the canonical digital encoder
   interface.
-**counter.*_N_*.position-scale* float rw*::
+**counter.**_N_**.position-scale** float rw::
   This parameter functions according to the canonical digital encoder
   interface.
-**counter.*_N_*.rawcounts* signed ro*::
+**counter.**_N_**.rawcounts** signed ro::
   The internal counts value, updated from *update-counters* and
   reflected in the output pins at the next call to *capture-position*.
 
diff --git a/docs/src/man/man9/debounce.9.adoc b/docs/src/man/man9/debounce.9.adoc
index b70180603c5..1559746ffa5 100644
--- a/docs/src/man/man9/debounce.9.adoc
+++ b/docs/src/man/man9/debounce.9.adoc
@@ -39,10 +39,10 @@ signal to be present for N samples before the output changes state.
 
 == PINS
 
-*debounce._G_*.*_F_*.in* bit in*::
+**debounce.**_G_._F_**.in** bit in::
   The F'th input pin in group G.
-*debounce._G_*.*_F_*.out* bit out*::
+**debounce.**_G_._F_**.out** bit out::
   The F'th output pin in group G. Reflects the last "stable" input seen
   on the corresponding input pin.
-*debounce._G_*.delay* signed rw*::
+**debounce.**_G_**.delay** signed rw::
   Sets the amount of filtering for all pins in group G.
diff --git a/docs/src/man/man9/encoder.9.adoc b/docs/src/man/man9/encoder.9.adoc
index 88ca61d5c72..605a383712e 100644
--- a/docs/src/man/man9/encoder.9.adoc
+++ b/docs/src/man/man9/encoder.9.adoc
@@ -61,85 +61,85 @@ The *encoder.N.* format is shown in the following descriptions.
 
 == PINS
 
-*encoder.*_N_*.counter-mode* bit i/o::
+**encoder.**_N_**.counter-mode** bit i/o::
   Enables counter mode. When true, the counter counts each rising edge
   of the phase-A input, ignoring the value on phase-B. This is useful
   for counting the output of a single channel (non-quadrature) sensor.
   When false (the default), it counts in quadrature mode.
-*encoder.*_N_*.counts* s32 out::
+**encoder.**_N_**.counts** s32 out::
   Position in encoder counts.
-*encoder.*_N_*.index-enable* bit i/o::
+**encoder.**_N_**.index-enable** bit i/o::
   When true, *counts* and *position* are reset to zero on the next
   rising edge of *Phase-Z*. At the same time, *index-enable* is reset to
   zero to indicate that the rising edge has occurred.
-*encoder.*_N_*.min-speed-estimate* float in (default: 1.0)::
+**encoder.**_N_**.min-speed-estimate** float in (default: 1.0)::
   Determine the minimum speed at which *velocity* will be estimated as
   nonzero and *postition-interpolated* will be interpolated. The units
   of *min-speed-estimate* are the same as the units of *velocity*.
   Setting this parameter too low will cause it to take a long time for
-  *velocity* to go to 0 after encoder pulses have stopped arriving.
-*encoder.*_N_*.phase-A* bit in::
+  *velocity** to go to 0 after encoder pulses have stopped arriving.
+**encoder.**_N_**.phase-A** bit in::
   Quadrature input for encoder channel _N_.
-*encoder.*_N_*.phase-B* bit in::
+**encoder.**_N_**.phase-B** bit in::
   Quadrature input.
-*encoder.*_N_*.phase-Z* bit in::
+**encoder.**_N_**.phase-Z** bit in::
   Index pulse input.
-*encoder.*_N_*.position* float out::
+**encoder.**_N_**.position** float out::
   Position in scaled units (see *position-scale*)
-*encoder.*_N_*.position-interpolated* float out::
+**encoder.**_N_**.position-interpolated** float out::
   Position in scaled units, interpolated between encoder counts. Only
   valid when velocity is approximately constant and above
   *min-speed-estimate*. Do not use for position control.
-*encoder.*_N_*.position-scale* float i/o::
+**encoder.**_N_**.position-scale** float i/o::
   Scale factor, in counts per length unit. For example, if
   *position-scale* is 500, then 1000 counts of the encoder will be
   reported as a position of 2.0 units.
-*encoder.*_N_*.missing-teeth* s32 in::
+**encoder.**_N_**.missing-teeth** s32 in::
   The number of teeth missing from the index gap. For example a 60 tooth
   gear with two teeth shortened to form an index so that there are 58
   pulses per revolution would use a position-scale of 60 and a
   missing-teeth of 2.
-*encoder.*_N_*.rawcounts* s32 out::
+**encoder.**_N_**.rawcounts** s32 out::
   The raw count, as determined by *update-counters*. This value is
-  updated more frequently than *counts* and *position*. It is also
+  updated more frequently than *counts** and *position*. It is also
   unaffected by *reset* or the index pulse.
-*encoder.*_N_*.reset* bit in::
+**encoder.**_N_**.reset** bit in::
   When true, *counts* and *position* are reset to zero immediately.
-*encoder.*_N_*.velocity* float out::
+**encoder.**_N_**.velocity** float out::
   Velocity in scaled units per second. *encoder* uses an algorithm that
   greatly reduces quantization noise as compared to simply
   differentiating the *position* output. When the magnitude of the true
   velocity is below min-speed-estimate, the velocity output is 0.
-*encoder.*_N_*.velocity-rpm* float out::
-  Velocity in scaled units per minute. Simply *encoder.*_N_*.velocity*
+**encoder.**_N_**.velocity-rpm** float out::
+  Velocity in scaled units per minute. Simply *encoder.**_N_**.velocity*
   scaled by a factor of 60 for convenience.
-*encoder.*_N_*.x4-mode* bit i/o::
+**encoder.**_N_**.x4-mode** bit i/o::
   Enables times-4 mode. When true (the default), the counter counts each
   edge of the quadrature waveform (four counts per full cycle). When
   false, it only counts once per full cycle. In *counter-mode*, this
   parameter is ignored.
-*encoder.*_N_*.latch-input* bit in::
+**encoder.**_N_**.latch-input** bit in::
    +
 
-*encoder.*_N_*.latch-falling* bit in (default: *TRUE*)::
+**encoder.**_N_**.latch-falling** bit in (default: *TRUE*)::
    +
 
-*encoder.*_N_*.latch-rising* bit in (default: *TRUE*)::
+**encoder.**_N_**.latch-rising** bit in (default: *TRUE*)::
    +
 
-*encoder.*_N_*.counts-latched* s32 out::
+**encoder.**_N_**.counts-latched** s32 out::
    +
 
-*encoder.*_N_*.position-latched* float out::
-  Update *counts-latched* and *position-latched* on the rising and/or
+**encoder.**_N_**.position-latched** float out::
+  Update *counts-latched** and *position-latched* on the rising and/or
   falling edges of *latch-input* as indicated by *latch-rising* and
   *latch-falling*.
-*encoder.*_N_*.counter-mode* bit rw::
+**encoder.**_N_**.counter-mode** bit rw::
   Enables counter mode. When true, the counter counts each rising edge
   of the phase-A input, ignoring the value on phase-B. This is useful
   for counting the output of a single channel (non-quadrature) sensor.
   When false (the default), it counts in quadrature mode.
-  *encoder.*_N_*.capture-position.tmax* s32 rw Maximum number of CPU
+  *encoder.**_N_**.capture-position.tmax** s32 rw Maximum number of CPU
   cycles it took to execute this function.
 
 == PARAMETERS
diff --git a/docs/src/man/man9/encoder_ratio.9.adoc b/docs/src/man/man9/encoder_ratio.9.adoc
index 4ea76229198..a963b8b1ffd 100644
--- a/docs/src/man/man9/encoder_ratio.9.adoc
+++ b/docs/src/man/man9/encoder_ratio.9.adoc
@@ -6,7 +6,7 @@ encoder_ratio - an electronic gear to synchronize two axes
 
 == SYNOPSIS
 
-*loadrt encoder_ratio [num_chan=*_num_* | names=*_name1_*[,*_name2..._*]]*
+**loadrt encoder_ratio [num_chan=**_num_** | names=**_name1_**[,**_name2..._**]]**
 
 == DESCRIPTION
 
@@ -41,18 +41,18 @@ The *encoder-ratio.N.* format is shown in the following descriptions.
 
 == PINS
 
-*encoder-ratio._N_*.master-A* bit in*::
+**encoder-ratio.**__N__**.master-A** bit in::
    +
 
-*encoder-ratio._N_*.master-B* bit in*::
+**encoder-ratio.**_N_**.master-B** bit in::
    +
 
-*encoder-ratio._N_*.slave-A* bit in*::
+**encoder-ratio.**_N_**.slave-A** bit in::
    +
 
-*encoder-ratio._N_*.slave-B* bit in*::
+**encoder-ratio.**_N_**.slave-B** bit in::
   The encoder channels of the master and slave axes
-*encoder-ratio._N_*.enable* bit in*::
+**encoder-ratio.**_N_**.enable** bit in::
   When the enable pin is FALSE, the error pin simply reports the slave
   axis position, in revolutions. As such, it would normally be connected
   to the feedback pin of a PID block for closed loop control of the
@@ -63,20 +63,20 @@ The *encoder-ratio.N.* format is shown in the following descriptions.
   master teeth to slave teeth. As the master moves, error becomes
   non-zero, and the PID loop will drive the slave axis to track the
   master.
-*encoder-ratio._N_*.error* float out*::
+**encoder-ratio.**_N_**.error** float out::
   The error in the position of the slave (in revolutions)
 
 == PARAMETERS
 
-*encoder-ratio.N.master-ppr unsigned rw*::
+**encoder-ratio.**_N_**.master-ppr** unsigned rw::
    +
 
-*encoder-ratio.N.slave-ppr unsigned rw*::
+**encoder-ratio.**_N_**.slave-ppr** unsigned rw::
   The number of pulses per revolution of the master and slave axes
-*encoder-ratio.N.master-teeth unsigned rw*::
+**encoder-ratio.**_N_**.master-teeth** unsigned rw::
    +
 
-*encoder-ratio.N.slave-teeth unsigned rw*::
+**encoder-ratio.**_N_**.slave-teeth** unsigned rw::
   The number of "teeth" on the master and slave gears.
 
 == SEE ALSO
diff --git a/docs/src/man/man9/enum.9.adoc b/docs/src/man/man9/enum.9.adoc
index f52305d51ce..5b6817b0528 100644
--- a/docs/src/man/man9/enum.9.adoc
+++ b/docs/src/man/man9/enum.9.adoc
@@ -52,31 +52,31 @@ E and D-type enumerations may be freely mixed in separate instances.
 
 == FUNCTIONS
 
-*enum-decode._NN_* - if instance type = "D"
+**enum-decode.**_NN_ - if instance type = "D"
 
-*enum-encode._NN_* - if instance type = "E"
+**enum-encode.**_NN_ - if instance type = "E"
 
 == PINS
 
-*enum-decode._NN_.input* - The integer value to be decoded
+**enum-decode**._NN_.**input** - The integer value to be decoded
 
-*enum-decode._NN_.label-out* -  output bits of a decode instance
+**enum-decode**._NN_.**label-out** -  output bits of a decode instance
 
-*enum-decode._NN_.label-val* -  The enumeration value corresponding to
+**enum-decode**._NN_.**label-val** -  The enumeration value corresponding to
                                 each specific bit output. These are
                                 populated in sequence during loading
                                 but may be over-ridden in HAL if
                                 convenient.
 
-*enum-encode._NN_.label-in*  -  input bits of a decode instance
+**enum-encode**._NN_.**label-in**  -  input bits of a decode instance
 
-*enum-encode._NN_.label-val* -  The enumeration value corresponding to
+**enum-encode**._NN_.**label-val** -  The enumeration value corresponding to
                                 each specified bit input. These are
                                 populated in sequence during loading
                                 but may be over-ridden in HAL if
                                 convenient.
                                 
-*enum-decode._NN_.output* - The integer value corresponding to the
+**enum-decode**._NN_.**output** - The integer value corresponding to the
                                 set bit input.
 
 == BUGS
diff --git a/docs/src/man/man9/gladevcp.9.adoc b/docs/src/man/man9/gladevcp.9.adoc
index fbdfc560a78..e245b7255fe 100644
--- a/docs/src/man/man9/gladevcp.9.adoc
+++ b/docs/src/man/man9/gladevcp.9.adoc
@@ -6,7 +6,7 @@ gladevcp - displays Virtual control Panels built with GTK / GLADE
 
 == SYNOPSIS
 
-*loadusr gladevcp [-c componentname0x*_N_*] [-g WxH+Xoffset+Yoffset0x*_N_*] [-H halcmdfile] [-x windowid] gladefile.glade*
+**loadusr gladevcp [-c componentname0x**_N_**] [-g WxH+Xoffset+Yoffset0x**_N_**] [-H halcmdfile] [-x windowid] gladefile.glade**
 
 == DESCRIPTION
 
diff --git a/docs/src/man/man9/hal_bb_gpio.9.adoc b/docs/src/man/man9/hal_bb_gpio.9.adoc
index 86d529d602b..8d36bec7fa0 100644
--- a/docs/src/man/man9/hal_bb_gpio.9.adoc
+++ b/docs/src/man/man9/hal_bb_gpio.9.adoc
@@ -18,8 +18,8 @@ Linux.
 
 === PINS
 
-*bb_gpio.userled*_N_ bit in +
-*bb_gpio.userled*_N_*-invert* bit in::
+**bb_gpio.userled*_N_ bit in +
+**bb_gpio.userled*_N_*-invert* bit in::
   The associated LED is lit if *userled*_N_ xor *userled*_N_-invert is
   TRUE.
 
@@ -37,10 +37,11 @@ system.
 
 === PINS
 
-*bb_gpio.p*_N_*.in-*_NN_ bit out +
-*bb_gpio.p*_N_*.in-*_NN_*-invert* bit in::
-  *in-*_NN_ is a snapshot of the value of the corresponding physical pin
-  XOR the value of the corresponding *in-*_NN_*-invert* pin.
+**bb_gpio.p**_N_**.in-**_NN_ bit out +
+
+**bb_gpio.p**_N_**.in-**_NN_**-invert** bit in::
+  **in-**_NN_ is a snapshot of the value of the corresponding physical pin
+  XOR the value of the corresponding **in-**_NN_**-invert** pin.
 
 == OUTPUT PINS
 
@@ -54,10 +55,11 @@ system.
 
 === PINS
 
-*bb_gpio.p*_N_*.out-*_NN_ bit out +
-*bb_gpio.p*_N_*.out-*_NN_*-invert* bit in::
-  The corresponding physical pin is driven with the result of *in-*_NN_
-  xor *in-*_NN_*-invert*.
+**bb_gpio.p**_N_**.out-**_NN_ bit out +
+
+**bb_gpio.p**_N_**.out-**_NN_**-invert** bit in::
+  The corresponding physical pin is driven with the result of **in-**_NN_
+  xor **in-**_NN_**-invert**.
 
 == PARAMETERS
 
@@ -65,9 +67,9 @@ None
 
 == FUNCTIONS
 
-*bb_gpio.read*::
+**bb_gpio.read**::
   Update HAL pins from physical pins.
-*bb_gpio.write*::
+**bb_gpio.write**::
   Update physical pins from HAL pins.
 
 == LICENSE
diff --git a/docs/src/man/man9/hal_parport.9.adoc b/docs/src/man/man9/hal_parport.9.adoc
index 50e5ee17e98..4783091d5ca 100644
--- a/docs/src/man/man9/hal_parport.9.adoc
+++ b/docs/src/man/man9/hal_parport.9.adoc
@@ -7,8 +7,8 @@ parallel ports.
 
 == SYNOPSIS
 
-*loadrt hal_parport cfg="_port_addr_ [_type_] [[_port_addr_ [_type_]
-...]*"**
+**loadrt hal_parport cfg="__port_addr__ [_type_] [[__port_addr__ [_type_]
+...]"**
 
 == DESCRIPTION
 
@@ -36,17 +36,17 @@ The **type **parameter of the configuration string determines how the
 I/O bits of the port are used. There are four possible options and if
 none is specified will default to out.
 
-_in _- Sets the 8 bits of the data port to input. In this mode the
+_in_ - Sets the 8 bits of the data port to input. In this mode the
 parallel port has a total of 13 input pins and 4 output pins.
 
-_out _- Sets the 8 bits of the data port to output. In this mode the
+_out_ - Sets the 8 bits of the data port to output. In this mode the
 parallel port has a total of 5 input pins and 12 output pins.
 
-_epp _- This option is the same as setting to out, but can cause the
+_epp_ - This option is the same as setting to out, but can cause the
 computer to change the electrical characteristics of the port, see USAGE
 below.
 
-_x _- The option allows ports with open collectorts on the control group
+_x_ -  The option allows ports with open collectorts on the control group
 pins to be configured as inputs resulting in 8 output pins and 9 input
 pins, see USAGE below.
 
@@ -174,9 +174,8 @@ hal_parport.c). The ports are numbered starting at zero.
   into the real time thread with loadrt. The configuration string
   describes the parallel ports to be used, and (optionally) their types.
   If the configuration string does not describe at least one port, it is
-  an error.
-
-*loadrt hal_parport cfg="port [type] [port [type] ...]"*
+  an error. +
+  *loadrt hal_parport cfg="port [type] [port [type] ...]"*
 
 *Specifying the Port*::
   Numbers below 16 refer to parallel ports detected by the system. This
@@ -185,15 +184,13 @@ hal_parport.c). The ports are numbered starting at zero.
   0 is the first parallel port detected on the system, 1 is the next,
   and so on.
 *Basic configuration*::
-  This will use the first parallel port Linux detects:
-
-*loadrt hal_parport cfg="0"*
+  This will use the first parallel port Linux detects: +
+  *loadrt hal_parport cfg="0"*
 
 *Using the Port Address*::
   Instead, the port address may be specified using the hex notation 0x
-  then the address.
-
-*loadrt hal_parport cfg="0x378"*
+  then the address. +
+  *loadrt hal_parport cfg="0x378"*
 
 *Specifying a port Type*::
   For each parallel port handled by the hal_parport driver, a type can
@@ -212,20 +209,21 @@ See the Note above about mode x.
 
 *Example with two parallel ports*::
   This will enable two system-detected parallel ports, the first in
-  output mode and the second in input mode:
-
-*loadrt hal_parport cfg="0 out 1 in"*
+  output mode and the second in input mode: +
+  *loadrt hal_parport cfg="0 out 1 in"*
 
 *Functions single port*::
-  You must also direct LinuxCNC to run the read and write functions.
-
-*addf parport.read-all base-thread* *addf parport.write-all base-thread*
+  You must also direct LinuxCNC to run the read and write functions. +
+  *addf parport.read-all base-thread*
+  +
+  *addf parport.write-all base-thread*
 
 *Functions multiple ports*::
   You can direct LinuxCNC to run the read and write functions for all
-  the attached ports.
-
-*addf parport.0.read base-thread* *addf parport.0.write base-thread*
+  the attached ports. +
+  *addf parport.0.read base-thread* 
+  +
+  *addf parport.0.write base-thread*
 
 The individual functions are provided for situations where one port
 needs to be updated in a very fast thread, but other ports can be
@@ -236,7 +234,7 @@ time.
 == SEE ALSO
 
 Parallel Port Driver (Hardware Drivers Section of LinuxCNC Docs),
-**PCI**Parallel**Port**Example**(Hardware**Examples**Section**of**LinuxCNC**Docs)
+PCI Parallel Port Example(Hardware Examples Section of LinuxCNC Docs)
 
 == AUTHOR