One way to program it would be to have a single square 4/a4, and to introduce a number of extra piece types, each especially adapted to have the moves that the switches would allow. That is, you would have a special Rook for on a3, which would move forward both as a normal Rook, or with a move that switched file after one forward step. (And for a2 one that switched after 2 forward steps, etc.) When a piece of this Rook family would land on an edge file you make it automatically 'promote' to the kind of Rook that belongs on that square. When a Rook landed on a4 there would be a kind of promotion choice: it either stays/becomes a normal Rook, or one that replaces its forward move by a Left-Griffon move. Same idea for the other piece types.
I suppose that through this method I could even have the Interactive Diagram play Chess66. A user-supplied JavaScript function WeirdPromotion would take care of the 'promotions'.
One way to program it would be to have a single square 4/a4, and to introduce a number of extra piece types, each especially adapted to have the moves that the switches would allow. That is, you would have a special Rook for on a3, which would move forward both as a normal Rook, or with a move that switched file after one forward step. (And for a2 one that switched after 2 forward steps, etc.) When a piece of this Rook family would land on an edge file you make it automatically 'promote' to the kind of Rook that belongs on that square. When a Rook landed on a4 there would be a kind of promotion choice: it either stays/becomes a normal Rook, or one that replaces its forward move by a Left-Griffon move. Same idea for the other piece types.
I suppose that through this method I could even have the Interactive Diagram play Chess66. A user-supplied JavaScript function WeirdPromotion would take care of the 'promotions'.