Model-Specific Writable Ranges
Related documents:
This document records writable device ranges confirmed per hardware model.
The intent is practical:
- where writes are accepted
- where writes are rejected
- whether there are holes inside the accepted span
Evidence types used in this file:
exhaustive scan
Confirmed by scripts/exhaustive_writable_scan.py.
runtime tests
Confirmed by the normal runtime test set in the maintainer testing guide.
These ranges are based primarily on scripts/exhaustive_writable_scan.py.
TOYOPUC-Plus CPU (TCC-6740) + Plus EX2 (TCU-6858)
Source command:
python -m tools.exhaustive_writable_scan --host <HOST> --port <PORT> --protocol tcp --targets all --log exhaustive.log
Evidence:
- exhaustive scan
- runtime tests also agree with the supported/unsupported split for the tested paths
Basic Bit
| Device |
Writable range |
P |
P0000-P17FF |
K |
K0000-K02FF |
V |
V0000-V17FF |
T |
T0000-T17FF |
C |
C0000-C17FF |
L |
L0000-L2FFF |
X |
X0000-X07FF |
Y |
Y0000-Y07FF |
M |
M0000-M17FF |
Evidence:
| Scope |
Source |
| final range |
exhaustive scan |
| supported behavior |
runtime tests |
Basic Word
| Device |
Writable range |
S |
S0000-S13FF |
N |
N0000-N17FF |
R |
R0000-R07FF |
D |
D0000-D0FFF |
B |
unsupported |
Evidence:
| Scope |
Source |
| final range |
exhaustive scan |
| supported behavior |
runtime tests |
Prefixed Bit (P1/P2/P3)
| Device |
Writable range |
P |
P000-P1FF |
K |
K000-K2FF |
V |
V000-V0FF |
T |
T000-T1FF |
C |
C000-C1FF |
L |
L000-L7FF |
X |
X000-X7FF |
Y |
Y000-Y7FF |
M |
M000-M7FF |
Evidence:
| Scope |
Source |
| final range |
exhaustive scan |
| supported behavior |
runtime tests |
Not writable on this model:
- P1000-P17FF
- V1000-V17FF
- T1000-T17FF
- C1000-C17FF
- L1000-L2FFF
- M1000-M17FF
Prefixed Word (P1/P2/P3)
| Device |
Writable range |
S |
S0000-S03FF |
N |
N0000-N01FF |
R |
R0000-R07FF |
D |
D0000-D0FFF |
B |
unsupported |
Evidence:
| Scope |
Source |
| final range |
exhaustive scan |
| supported behavior |
runtime tests |
Not writable on this model:
- S1000-S13FF
- N1000-N17FF
- D1000-D2FFF
Extension Bit
| Device |
Writable range |
EP |
EP0000-EP0FFF |
EK |
EK0000-EK0FFF |
EV |
EV0000-EV0FFF |
ET |
ET0000-ET07FF |
EC |
EC0000-EC07FF |
EL |
EL0000-EL1FFF |
EX |
EX0000-EX07FF |
EY |
EY0000-EY07FF |
EM |
EM0000-EM1FFF |
GX |
GX0000-GXFFFF |
GY |
GY0000-GYFFFF |
GM |
GM0000-GMFFFF |
Evidence:
| Scope |
Source |
| final range |
exhaustive scan |
| supported behavior |
runtime tests |
Extension Word
| Device |
Writable range |
ES |
ES0000-ES07FF |
EN |
EN0000-EN07FF |
H |
H0000-H07FF |
U |
U00000-U07FFF |
EB |
not present on this model |
Evidence:
| Scope |
Source |
| final range |
exhaustive scan |
| supported behavior |
runtime tests |
FR
| Device |
Range |
Notes |
FR |
(not exposed on this CPU) |
CMD=C2/C3/CA always returns 0x40. |
Does not exist on this model:
- U08000-U1FFFF
Notes
- No holes were observed inside the writable spans above.
- Unsupported spans were contiguous in the observed scan.
- This is a write-acceptance result. It does not imply readback validation.
- For this model, the exhaustive scan is the primary source for final upper bounds such as
D0000-D0FFF and U00000-U07FFF.
Nano 10GX (TUC-1157)
Source commands:
scripts\run_quick_test.bat 192.168.250.100 1025 tcp 4 5 0
scripts\run_full_test.bat 192.168.250.100 1025 tcp 4 5 0
python -m scripts.whl_addressing_test --host 192.168.250.100 --port 1025 --protocol tcp --timeout 5 --retries 0 --log whl_nano10gx_tcp.log
python -m scripts.high_level_api_test --host 192.168.250.100 --port 1025 --protocol tcp --timeout 5 --retries 0 --log high_level_nano10gx_tcp.log
python -m scripts.clock_test --host 192.168.250.100 --port 1025 --protocol tcp --timeout 5 --retries 0
python -m scripts.cpu_status_test --host 192.168.250.100 --port 1025 --protocol tcp --timeout 5 --retries 0
scripts\run_full_test.bat 192.168.250.100 1027 udp 4 5 2 12000
python -m scripts.whl_addressing_test --host 192.168.250.100 --port 1027 --protocol udp --local-port 12000 --timeout 5 --retries 2 --skip-errors --log whl_nano10gx.log
python -m scripts.high_level_api_test --host 192.168.250.100 --port 1027 --protocol udp --local-port 12000 --timeout 5 --retries 2 --skip-errors --log high_level_nano10gx.log
python -m scripts.clock_test --host 192.168.250.100 --port 1027 --protocol udp --local-port 12000 --timeout 5 --retries 2
python -m scripts.clock_test --host 192.168.250.100 --port 1027 --protocol udp --local-port 12000 --timeout 5 --retries 2 --set "2026-03-09 20:00:10"
python -m scripts.cpu_status_test --host 192.168.250.100 --port 1027 --protocol udp --local-port 12000 --timeout 5 --retries 2
scripts\run_device_range_scan.bat 192.168.250.100 1027 udp 12000 16 32
Evidence:
- runtime tests
- coarse device-range scan
- TCP and UDP runtime results agree on the tested families
Basic Bit
| Device |
Writable range |
P |
P0000-P17FF |
K |
K0000-K02FF |
V |
V0000-V17FF |
T |
T0000-T17FF |
C |
C0000-C17FF |
L |
L0000-L2FFF |
X |
X0000-X07FF |
Y |
Y0000-Y07FF |
M |
M0000-M17FF |
Evidence:
| Scope |
Source |
| supported behavior |
runtime tests |
| coarse upper-bound observation |
device-range scan |
Basic Word
| Device |
Writable range |
S |
S0000-S13FF |
N |
N0000-N17FF |
R |
R0000-R07FF |
D |
D0000-D2FFF |
B |
(not present on this model) |
Evidence:
| Scope |
Source |
| supported behavior |
runtime tests |
| coarse upper-bound observation |
device-range scan |
Prefixed Bit (P1/P2/P3)
| Device |
Writable range |
P |
P000-P17FF |
K |
K000-K2FF |
V |
V000-V17FF |
T |
T000-T17FF |
C |
C000-C17FF |
L |
L000-L2FFF |
X |
X000-X7FF |
Y |
Y000-Y7FF |
M |
M000-M17FF |
Evidence:
| Scope |
Source |
| supported behavior |
runtime tests |
| coarse upper-bound observation |
device-range scan |
Prefixed Word (P1/P2/P3)
| Device |
Writable range |
S |
S0000-S13FF |
N |
N0000-N17FF |
R |
R0000-R07FF |
D |
D0000-D2FFF |
Upper prefixed ranges (1000 series) are not implemented in either PC3 mode or Plus Expansion Mode.
Extended Bit / Word
| Device |
Writable range |
EP/EK/EV/ET/EC/EL/EX/EY/EM |
Standard ranges for this family (shared by PC3 mode and PC10 mode) |
GX/GY/GM |
GX/GY/GM0000-GX/GY/GMFFFF |
ES/EN/H |
ES0000-ES07FF, EN0000-EN07FF, H0000-H07FF |
U |
U00000-U1FFFF (PC10 mode only) |
EB |
(not present) |
FR
| Device |
Range |
Notes |
FR |
(not exposed on this CPU) |
CMD=C2/C3/CA always returns 0x40. |
PC10G-CPU (TCC-6353)
Source commands (UDP unless noted):
scripts\run_device_full_scan.bat 192.168.250.100 1027 udp 12000 5 2 512 device_full
scripts\run_device_read_scan.bat 192.168.250.100 1027 udp 12000 5 2 S,N,R,D,P,K,V,T,C,L,X,Y,M,EP,EX,GX,GY,GM,U,EB,FR 512 device_read.log
scripts\run_fr_read_scan.bat 192.168.250.100 1027 udp 12000 5 2 0x200 64 0x000000 0x1FFFFF 0 fr_read.log
scripts\run_fr_write_scan.bat 192.168.250.100 1027 udp 12000 5 2 0x200 64 0x000000 0x1FFFFF 0xA500 fr_write.log
scripts\run_program_no_probe.bat 192.168.250.100 1027 udp 12000 5 2 ext00,gx07,p1,p2,p3 0x00,0x01,0x02,0x03,0x07 program_no_probe.log
scripts\run_c4c5_range_probe.bat 192.168.250.100 1027 udp 12000 5 2 l1000,m1000,u00000,u08000,eb00000 c4c5_range.log
scripts\run_sim_tests.bat 192.168.250.100 1027 udp 12000 5 2
python -m tools.auto_rw_test --host 192.168.250.100 --port 1025 --protocol tcp --ext-multi-test --skip-errors --log auto_ext_multi.log
python -m tools.auto_rw_test --host 192.168.250.100 --port 1025 --protocol tcp --boundary-test --skip-errors --log auto_boundary.log
python -m tools.auto_rw_test --host 192.168.250.100 --port 1025 --protocol tcp --max-block-test --pc10-block-words 0x200 --skip-errors --log auto_block.log
python -m tools.auto_rw_test --host 192.168.250.100 --port 1025 --protocol tcp --count 4 --pc10g-full --include-p123 --skip-errors --log auto_pc10g_p123.log
Evidence:
run_device_full_scan + run_device_read_scan reported zero errors across the accepted spans listed below and cleanly identified the first failing chunk at each upper boundary.
auto_rw_test --pc10g-full sampled every documented basic/prefixed/extended range (bits, words, bytes) plus PC10 block access without mismatches (TOTAL: 768/768, only tolerated V-bit transient warnings).
- Prefixed-device numbers for
EX/ES (0x00), GX (0x07), and P1/P2/P3 (0x01/0x02/0x03) were reconfirmed via run_program_no_probe.
run_c4c5_range_probe showed that U00000, U08000, and EB00000 via PC10 block addressing alias the same storage as the normal CMD=C4/C5 helpers; L1000 / M1000 rely on higher-level guards rather than direct CMD=20/21.
- Full-range FR read/write/commit scans (
fr_read.log, fr_write.log) completed with perfect CRC agreement (0x6C5F5EB9) and verified that CMD=A0 remains unavailable (0x24).
Basic Bit
| Device |
Writable range |
P |
P0000-P17FF |
K |
K0000-K02FF |
V |
V0000-V17FF |
T |
T0000-T17FF |
C |
C0000-C17FF |
L |
L0000-L2FFF |
X |
X0000-X07FF |
Y |
Y0000-Y07FF |
M |
M0000-M17FF |
Basic Word
| Device |
Writable range |
S |
S0000-S13FF |
N |
N0000-N17FF |
R |
R0000-R07FF |
D |
D0000-D2FFF |
Prefixed Bit (P1/P2/P3)
| Device |
Writable range |
P |
P000-P17FF |
K |
K000-K2FF |
V |
V000-V17FF |
T |
T000-T17FF |
C |
C000-C17FF |
L |
L000-L2FFF |
X |
X000-X7FF |
Y |
Y000-Y7FF |
M |
M000-M17FF |
Note: Prefixed addresses starting at 1000 (P1-M1000 etc.) are valid on this CPU but are blocked on Nano 10GX; keep guards device-specific.
Prefixed Word (P1/P2/P3)
| Device |
Writable range |
S |
S0000-S13FF |
N |
N0000-N17FF |
R |
R0000-R07FF |
D |
D0000-D2FFF |
Extension Bit
| Device |
Writable range |
EP |
EP0000-EP0FFF |
EK |
EK0000-EK0FFF |
EV |
EV0000-EV0FFF |
ET |
ET0000-ET07FF |
EC |
EC0000-EC07FF |
EL |
EL0000-EL1FFF |
EX |
EX0000-EX07FF |
EY |
EY0000-EY07FF |
EM |
EM0000-EM1FFF |
GX |
GX0000-GXFFFF |
GY |
GY0000-GYFFFF |
GM |
GM0000-GMFFFF |
Extension Word
| Device |
Writable range |
ES |
ES0000-ES07FF |
EN |
EN0000-EN07FF |
H |
H0000-H07FF |
U |
U00000-U1FFFF |
EB |
EB00000-EB3FFFF (Ex No. 0x10-0x17; higher codes such as 0x18 are rejected) |
Notes
scripts\run_device_full_scan.bat + scripts\run_device_read_scan.bat cover the full scan in less than a minute when using 512-word chunks; the combined output is stored in device_full* / device_read.log.
scripts\run_device_full_scan.bat already chains the FR scan and the prefixed program-number probe, so re-running that single batch file is enough for future regressions.
B area is not implemented on the tested PC10G unit, so block/byte tests mark B0000-B1FFF as SKIP (unsupported).
- PC10 multi (
CMD=C4/C5) is still required for L1000+, M1000+, U, and EB; direct basic bit/word commands stay on CMD=20/21 or CMD=94/95.
- EB access uses Ex No.
0x10-0x17 consistently; the helper rejects anything higher to avoid undefined ranges.
- FR (
CMD=C2/C3/CA) is not exposed on the tested PC10G unit; all FR attempts returned error_code=0x40.