Hello,
I have just had a look at the source code and I think I have found the list of supported codes and I will post them here soon.
Apart from that, I have just found the place, where inches are handled:
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
ParserGGroup6 ; CODE XREF: FindProgramBlock:loc_43FF4p
; ParserProgramBlock+A54p ...
var_20 = -0x20
MOV R12, SP
STMFD SP!, {R4-R7,R11,R12,LR,PC}
SUB R11, R12, #4
SUB SP, SP, #8
LDR R3, =bakNcBlock
LDR R3, [R3,#(dword_1279BC - 0x1279A4)]
CMP R3, #0x14
BNE loc_3C570
MOV R3, #0
STR R3, [R11,#var_20]
B loc_3C54C
; ---------------------------------------------------------------------------
loc_3C470 ; CODE XREF: ParserGGroup6+110j
LDR R7, [R11,#var_20]
LDR R3, [R11,#var_20]
ADD R3, R3, #0x22
LDR R1, =systemVarTable
MOV R3, R3,LSL#2
MOV R2, R3,LSL#2
ADD R3, R3, R2
MOV R2, R3,LSL#4
ADD R3, R3, R2
ADD R3, R3, R1
LDR R3, [R3]
MOV R0, R3
BL __extendsfdf2
MOV R3, R0
MOV R4, R1
MOV R0, R3
MOV R1, R4
MOV R2, #0
MOV R3, #0x40190000
BL __muldf3
MOV R3, R0
MOV R4, R1
MOV R5, R3
MOV R6, R4
LDR R3, [R11,#var_20]
ADD R3, R3, #0xC
LDR R1, =systemVarTable
MOV R3, R3,LSL#2
MOV R2, R3,LSL#2
ADD R3, R3, R2
MOV R2, R3,LSL#4
ADD R3, R3, R2
ADD R3, R3, R1
LDR R3, [R3]
MOV R0, R3
BL __extendsfdf2
MOV R3, R0
MOV R4, R1
MOV R0, R5
MOV R1, R6
MOV R2, R3
MOV R3, R4
BL __muldf3
MOV R3, R0
MOV R4, R1
MOV R0, R3
MOV R1, R4
BL __truncdfsf2
MOV R2, R0
LDR R3, =perUnitToPulse
STR R2, [R3,R7,LSL#2]
LDR R3, [R11,#var_20]
ADD R3, R3, #1
STR R3, [R11,#var_20]
loc_3C54C ; CODE XREF: ParserGGroup6+28j
LDR R3, [R11,#var_20]
CMP R3, #2
BLE loc_3C470
LDR R2, =systemVarTable
LDR R3, =0x3124
LDR R2, [R2,R3]
LDR R3, =perUnitToPulse
STR R2, [R3,#(dword_127C08 - 0x127BFC)]
B loc_3C614
; ---------------------------------------------------------------------------
loc_3C570 ; CODE XREF: ParserGGroup6+1Cj
MOV R3, #0
STR R3, [R11,#var_20]
B loc_3C5F4
; ---------------------------------------------------------------------------
loc_3C57C ; CODE XREF: ParserGGroup6+1B8j
LDR R4, [R11,#var_20]
LDR R3, [R11,#var_20]
ADD R3, R3, #0x22
LDR R1, =systemVarTable
MOV R3, R3,LSL#2
MOV R2, R3,LSL#2
ADD R3, R3, R2
MOV R2, R3,LSL#4
ADD R3, R3, R2
ADD R3, R3, R1
LDR R0, [R3]
LDR R3, [R11,#var_20]
ADD R3, R3, #0xC
LDR R1, =systemVarTable
MOV R3, R3,LSL#2
MOV R2, R3,LSL#2
ADD R3, R3, R2
MOV R2, R3,LSL#4
ADD R3, R3, R2
ADD R3, R3, R1
LDR R3, [R3]
MOV R1, R3
BL __mulsf3
MOV R3, R0
MOV R2, R3
LDR R3, =perUnitToPulse
STR R2, [R3,R4,LSL#2]
LDR R3, [R11,#var_20]
ADD R3, R3, #1
STR R3, [R11,#var_20]
loc_3C5F4 ; CODE XREF: ParserGGroup6+134j
LDR R3, [R11,#var_20]
CMP R3, #2
BLE loc_3C57C
LDR R2, =systemVarTable
LDR R3, =0x3124
LDR R2, [R2,R3]
LDR R3, =perUnitToPulse
STR R2, [R3,#(dword_127C08 - 0x127BFC)]
loc_3C614 ; CODE XREF: ParserGGroup6+128j
SUB SP, R11, #0x1C
LDMFD SP, {R4-R7,R11,SP,PC}
; End of function ParserGGroup6
; ---------------------------------------------------------------------------
off_3C61C DCD bakNcBlock ; DATA XREF: ParserGGroup6+10r
off_3C620 DCD systemVarTable ; DATA XREF: ParserGGroup6+38r
; ParserGGroup6+98r ...
off_3C624 DCD perUnitToPulse ; DATA XREF: ParserGGroup6+F4r
; ParserGGroup6+120r ...
dword_3C628 DCD 0x3124 ; DATA XREF: ParserGGroup6+118r
; ParserGGroup6+1C0r
TLDR:
This function changes the PulseToUnit once it hits a G20.
It recalculates the PulseToUnit 3 times (for the X, Y and Z axis) and when in inch mode, multiplies it by 2.390625.
The calculation appears to take the steps per mm from the configuration params #34 (X-axis pulses per mm), #35 (Y-axis pulses per mm), #36 (Z-axis pulses per mm) into account when recalculating.
I have just had a brief look over it and I may have overseen something important.
I can easily change this multiplication constant to some other one (2.54 = 0x40228f5c for example), if this will increase the accuracy.
These were G/(M?)-Codes I found by quickly searching through the huge code listing. It may not be correct and is certainly incomplete, but it is a start:
0
1
12
13
28
29
17
18
19
20
21
43 ?
44 ?
49 ?
53
54
55
56
57
58
59
90
91
98 ?
99 ?
BR,
Benedikt