Extended Betza notation
Ralph Betza invented a compact notation to encode moves of a piece, which is now in widespread use for description of Chess variants. This page describes a version of it that has been extended in several ways. Some of these extensions were embraced from another proposed extension scheme, 'Bex notation' by David Howe, others are entirely new. These new extensions from the original Betza notation are marked in yellow.
Betza notation decomposes the piece into 'atoms', which represent the set of all (8fold)symmetryequivalent moves of a certain distance. For example all eight Knight moves, or all diagonal moves of the King. Each 'atom' is written as a single capital (e.g. N for the Knight moves), which is very efficient when you are dealing with pieces that are maximally symmetric (which most pieces indeed are). Atoms refer to single unblockable leaps of a certain distance. Pieces that can repeat the same leap again and again until they encounter an obstacle (sliders or riders, such as Rook) are very common. Those moves are indicated by writing the number of steps the piece can maximally make behind the atom, where '0' can be used to indicate 'any number of steps'.
The choice to treat moves as sets that go in all directions goes at the expense of the compactness when dealing with asymmetric pieces. (This is a cheap price to pay, as asymmetric pieces are much less common than fully symmetric ones.) To describe moves of asymmetric pieces Betza notation uses lowercase prefixes to identify which subset of the atom we mean. Such as f (forward) or r (right), or combinarions of those like fr. E.g. fR decribes a 'Rook' that only moves in the forward direction (i.e., the Shogi Lance). Lowercase prefixes are also used to specify the move is not a general one (i.e. valid as capture and noncapture, the normal situation in Chesslike games), but can only be used in limited ways (e.g. capture only, nonjumping, capture after jumping).
The basic atoms
The following table describes the most important atoms

Laid out on the board, (standing at O),

For longerrange atoms no letters are defined. In the rare cases they occur, these can be written using the numeric coordinates of their leap vector, e.g. (4,1) for the Giraffe leap. Note this still implies the move goes in all directions (i.e. (4,1) also means (4,1), (4,1), (1,4), ...), and thus still does a lot for compactness. A piece that only leaps 4 forward and 1 left or right would be an f(4,1).
Modifier prefixes
The following table lists possible prefixes to the atoms. Prefixes can be combined, in which case the subsets of move types they correspond to are joined. E.g. fb means forward and backward moves (but not sideways). So even prefixes with opposite meaning are not really conflicting; they could be superfluous, however. (E.g. mc would mean both noncapture and capture, which is the default in absence of prefixes anyway.)
prefix  short for  meaning 

Move modality  
c  capture  Captures only 
m  move  Move but not capture 
Move blocking  
n  nonjumping  Cannot jump over occupied square 
j  jump one  Must jump exactly one 
jj  jump many  Can jump over any number of pieces 
Hopping  
p  Pao (=Canon)  (Obsolete?) Capture if move jumps over one obstacle, noncapture if it does not jump 
g  Grasshopper  (Obsolete?) Must land directly behind first obstacle 
q  Circular  (Obsolete?) Basic step repeated at an angle, until it closes on itself 
z  Zigzag  (Obsolete?) Repeat step alternates angle between two values. 
o  wraps around on cylinder board  
directionalsubset and other geometry indicators  
f  forward  mostforward single or pair of moves of symmetryequivalent moves 
b  backward  mostbackward single or pair of moves of symmetryequivalent moves 
l  left  leftmost single or pair of moves of symmetryequivalent moves 
r  right  rightmost single or pair of moves of symmetryequivalent moves 
s  sideways  short for lr 
v  vertical  short for fb 
a  all  short for vs (default on atoms specifying complete move, but can be needed in chaining) 
ff  forward  obsolete notation for forwardmost two of 8 symmetryequivalent moves 
fh  forward half  forwardmost four of 8 symmetryequivalent moves 
fs  sidewayforward  fh but not f 
etc.  Similar for b (bb, bh, bs), l and r  
i  initial  Initial move only (for pieces that have not moved yet) 
e  equal  equal in length to previous step, measured in board steps (see section on chaining) 
For example, fmWfcF is a Pawn: noncaptures forward to a W square, captures to the two forward F squares. Pretty complicated, but the Pawn is a very complex piece (asymmetric, and divergent capture/noncapture). Note that fr and rf are not the same on 'oblique' (= not orthogonal or diagonal) atoms, which have 8 moves, and that they might not be what you intuitively think, as fs = fl + fr.
Grouping
Grouping of atoms, modifiers and exponents is possible with parentheses. This can be done for readability, or for overruling operator priorities. (fmW)(fcF) might read more easily than fmWfcF. The parentheses do not have any meaning in themselves. 'Distributivity' also works for modifier prefixes: m(AB) where m is a string of modifiers and A and B are atoms, (or expressions grouped in parentheses), is defined to mean mAmB. Some shortcuts for commonly used combinations of atoms exist; these can be seen as implicit grouping of the involved atoms.
shortcut  stands for  orthodox piece 

K  WF  King 
B  F0 (FF)  Bishop 
R  W0 (WW)  Rook 
Q  RB  Queen 
C  L  Camel 
Z  J  Zebra 
Chaining moves
When a number of atoms is concatenated, like WF, it joins their move sets. So the piece described by WF moves either as W or as F, i.e. one step diagonal, or one step orthogonal. That means it is the King of orthodox Chess! (From the notation you cannot see whether it is royal yet; the main purpose of the notation is to convey how it moves. But a 'k' prefix could be used to indicate royalty, when this is of relevance.)
It is also possible to specify that certain moves have to be performed sequentially, one after the other. For instance because something of importance happens or should be noted on an intermediate square. Such as for pieces that can be blocked on squares they cannot visit ('lame leapers'), or that have to hop over other pieces in a specific pattern. The simplest example of this, however, is repetition of the same step in the same direction, as in sliding or riding pieces, such as a Rook. The far moves of such a piece can indeed be blocked by an obstacle closer by on their path, although it can then always reach that square itself as well. Such moves are indicated by 'exponentiation': a number after the atom indicates how often the step may be repeated. E.g. F3 would be a piece that slides diagonally (i.e. like a Bishop), upto a maximum of 3 steps. To indicate an arbitrary number of steps can be taken, we use 0 (zero) for the exponent. (This because infinity is not in the ASCII character set, and 0 would be pointless when taken at face value.) So W0 would be the Rook, sliding arbitrarily far orthogonally, and F0 the Bishop. (Old notation for this would be WW and FF, but in the extended context these would be troublesome.)
Not all multistep moves are as regular as simple sliders, however. Some 'bent' sliders can turn corners, for instance. The 'Griffon' is an example that first moves one step diagonally, and then continues outward as a Rook. It does not have to go beyond the corner, though; just like a normal Rook it can make the first step of its move only. And if it encounters something on that first step, it is blocked, and never gets to the rooky part of its move. To describe this trajectory we cannot use exponentiation, but have to explicitly write the chain: FtR. Here the 't' is the chaining operator, that distinguishes this from FR, which would mean a piece that steps one diagonally or moves like Rook (a Shogi Dragon Horse). The 't' is because of 'and then', but also because the move could be terminated at that point, and there is no requirement to visit the later parts of the specified trajectory.There are other forms of chaining, where the 'connecting square' can not be visited. (I.e. no termination there.) The Xiangqi Horse moves one orthogonal step, and then (without stopping) one step diagonally outward, mimicking the move of a Knight, but blockable on the intermediate square. This is written as the chain WF. The chaining operator '' indicates the move cannot be terminated at that point (ending on the connection square), but must continue. If it cannot, because the square was occupied, the move described by the chain is considered blocked, and cannot be made.
Overview of chaining operators  

t  then  terminate on connection square (if empty or enemy) or continue (if empty). 
  block  must continue if connection square empty; otherwise entire path is considered blocked 
+  hop  connection square must be occupied and remains untouched; move must go on from there 
?  own  connection square must contain own piece and remains untouched; move must go on from there 
!  foe  connection square must contain enemy and remains untouched; move must go on from there 
x  capture  connection square must contain enemy, which is captured; move must go on from there 
d  destroy  connection square must be occupied, friend or foe there is destroyed; must go on 
y  split  connection square is one step before first obstacle; must continue from there 
Chaining implies continuation in the most similar direction. Should you need to deviate from that, e.g. because the trajectory doubles back on itself, directional modifiers must be used. The continuation steps are to be described in a coordinate system relative to the previous step, however. So WrWlW makes one step, (say moving North), then turns right for another step (moving East), and then turns left compared to that second step, meaning it is moving North again! So in the end you arrive at (1,2), over (0,1) and (1,1). This is a Knight move that can only be made if both the intermediate squares are empty, even worse than the Xiangqi Horse (which at least did not care about (1,1))! The latter would be described by WF. The F after '' would by default mean fF, and in the orientation of the preceding orthogonal step this would imply a pair of outward moves, fl + fr.
Some examples that use the other operators: Q+K is the Grasshopper: it must move as Queen to an occupied square (the 'support'), (the first one it encounters, as Queens do not jump!), and then continue with a single K step in the same direction (leaving the occupant of the square alone), to land on the square directly behind the support. where it can capture or just move. mRcR+R is the Xiangqi Cannon: the first mR specifies its noncapture move, which is that of a normal Rook. The concatenated cR+R is the capturing alternative; it moves as R to an occupied square, and then continues as R in the same direction for a capture. Note that the 'c' prefix applies to the complete R+R path (a once jumping Rook); the operator priorities are such that the binary operators t+xdy couple more tightly than the prefix modifiers mc. The latter are only allowed in front of a complete path, to specify what you can do at the end of it, and not on individual steps of the path, where the chaining operators already specify this.
Weird captures
The x operator allows description of pieces with unconventional capture, as it specifies moving away from the capture square. Normal in Chess is of course that you only captured what was on the square you end on. But even in orthodox Chess e.p. capture exists as an exception to that. It could be written as frmWxlW, which, as we have seen, means frm(WxlW) This expreses capture through a W step, and then turning left for a second W step, so that overall you make an F step in an L form. The frm prefix to this F step means that it can not capture on the final square (the Pawn in e.p. capture always goes to an empty square), to your forward right. I.e. you started moving right, then turned left to move forward. So the continuation square you pass over to remove the Pawn is to your right. (There is no way to express that you can only do this to Pawns, however, let alone to Pawns that just made a double push.)
This shows the general encoding strategy: if you capture pieces not on your destination square, as 'side effect' to the move, you lay out a path that tramples all the pieces that are captured, so that the substeps are all normal replacement captures. E.g. a Checker would be fmFfmFxF. There the fmF part is the noncapture move, but the interesting part is the capture: one step diagonal (which must be to an occupied square, which we capture), and then straight on (which is now 'forward' in the local frame of reference set up by the first step) to the next square, for an overall A step. This step must be fmA, i.e. in one of the forward diagonal directions, not capturing anything on the square where it lands. 'Rifle capture' by a Rook would be RxebR, i.e. first capture something in the normal way, and then manditorily withdraw in the direction from which you came (b) by an R move of the same length. No overall move, but the victim is gone! A Ultima Withdrawer, which destroys the adjacent piece from which it moves away, would be written as mQmKxbKQ. The capture part, m(KxbKQ) specifies capture to the adjacent piece, reversing that step (b) to your square of origin, and then mandatorily continuing in that direction with a Queen noncapture move (the victim already in your pocket). The hitandrun or double capture of a Lion would be KxaK: capture the adjacent piece, after which you must continue by another King step in any direction relative to the first, capturing a second victim or just moving. ven the rifle capture (igui) is included in this. Its turnpassing move would be KbK. Which is different from O, because it can only be done if the Lion is adacent to an empty square, while a piece that has an O atom can pass uncondiionally. For definiteness, when directional modifiers apply to a path that results in a return to the starting square, they will be referenced to the direction of the first step of the path.
More about exponentiation
Exponentiation by default implies repeated application of the 't' operator. But it can be used to indicate repeate application of other operators too. We define AmN, with A an atom or a group within parentheses, m a string of modifiers, and N a number, to mean AmAmAm...mA with N factors A and N1 operators between them. If the modifier string m does not contain one of the chaining operators, it is prefixed with the default 't'. If it does not include any directional modifiers, it is suffixed with 'f'. So W3 means WtfWtfW, 1 to 3 orthogonal steps in the same direction (which is what the 'f' specifies). But W3 would mean WfWfW, which is exactly 3 such steps. And Wx3 would be exactly 3 steps where the first 2 mandatorily capture.
By including directonal indicators, you can describe curved trajectories. Nrf8 would mean NtrfNtrfN..., upto 8 Knight moves, each consecutive move bending ~45 degrees right from the previous one (because that is what rf means; the first opportnity to the right that is not straight ahead). This describes the Rose! Circular riders fit into the system, and there is no need for a separate prefix to describe them. With grouping you can do more: (FtlF)r0 expands to FtlFtrFtlFtrFtl..., an arbitrary number of diagonal steps, that alternately turn 90 degrees left or right. In other words, the Crooked Bishop. There is also no real need for the z prefix in this extended Betza notation. The exponentiation can describe it much more precisely, specifying exactly how Crooked it is.