1
0

copy in progress

This commit is contained in:
Aiden
2026-05-26 16:01:20 +10:00
parent c0e3aaddee
commit d9a9dade41
7 changed files with 311 additions and 0 deletions

View File

@@ -562,6 +562,7 @@ The `0x006D` copy path is now confirmed outside the earlier all-suite ordering c
- Selector `0x006D` dispatches to `H'3015`. Forced decoding shows it sets `F731.7`, loads `F798=H'C8`, sets `F795.6/F795.7`, sets display selector `F732=H'1903`, sets `FB02=H'64`, calls `48FA`, then sets `F76E.6`. - Selector `0x006D` dispatches to `H'3015`. Forced decoding shows it sets `F731.7`, loads `F798=H'C8`, sets `F795.6/F795.7`, sets display selector `F732=H'1903`, sets `FB02=H'64`, calls `48FA`, then sets `F76E.6`.
- The LCD dispatch for these states is now traced: `loc_48FA` reads the high byte at `F732`, so `F732=H'1903/H'1904` selects display page `0x19`, not direct page `0x03/0x04`. `493E[0x19] -> H'930A`; that page's local table at `H'931C` includes `H'9F6A` for `COPY` / `IN PROGRESS` and `H'9FDA` for `COPY` / `COMPLETED`. The low byte at `F733` is the substate selector: `0x03` is in-progress and `0x04` is completed. - The LCD dispatch for these states is now traced: `loc_48FA` reads the high byte at `F732`, so `F732=H'1903/H'1904` selects display page `0x19`, not direct page `0x03/0x04`. `493E[0x19] -> H'930A`; that page's local table at `H'931C` includes `H'9F6A` for `COPY` / `IN PROGRESS` and `H'9FDA` for `COPY` / `COMPLETED`. The low byte at `F733` is the substate selector: `0x03` is in-progress and `0x04` is completed.
- This makes the likely copy handshake: `0x006D` starts copy and sets the `F795.6/F795.7` in-progress flags; `0x006C` is the completion/exit sibling only when those flags are live. Sending `0x006C` alone can therefore blank or clear state instead of displaying `COPY COMPLETED`. - This makes the likely copy handshake: `0x006D` starts copy and sets the `F795.6/F795.7` in-progress flags; `0x006C` is the completion/exit sibling only when those flags are live. Sending `0x006C` alone can therefore blank or clear state instead of displaying `COPY COMPLETED`.
- Bench step-through confirmed the sequence model: `006C` alone produced `CONNECT OK -> blank`; `006D` alone produced `CONNECT OK -> COPY IN PROGRESS`; `006D` followed by `006C` after 250 ms produced a brief `COPY IN PROGRESS` then `COPY COMPLETED`; the same after 1.0 s and 1.5 s produced a longer `COPY IN PROGRESS` then `COPY COMPLETED`; after 2.0 s or 2.5 s it fell to `CONNECT:NOT ACT` instead of completing. Repeating `006D` before `006C` also completed successfully in the 2x and 3x repeat tests. This points to an active completion window that can likely be refreshed/restarted by additional in-progress/progress traffic, rather than a stateless command.
- The FRT1 timer path decrements `F797` and `F798`; when either reaches zero, it clears `F731.7`. This matches the observed transient display modes falling back to `CONNECT:NOT ACT`. - The FRT1 timer path decrements `F797` and `F798`; when either reaches zero, it clears `F731.7`. This matches the observed transient display modes falling back to `CONNECT:NOT ACT`.
- The string `COPY IN PROGRESS` is present in the ROM LCD resources, so the `006D` result is not a generic serial artifact. - The string `COPY IN PROGRESS` is present in the ROM LCD resources, so the `006D` result is not a generic serial artifact.
- Manual interpretation: the RCP-TX7 operating manual describes `COPY IN PROGRESS` as the LCD state shown during the multi-camera `COPY TO SLAVES` data-transfer operation over the RS232C command-link system. During that state, all linked RCP units display the message and their buttons/knobs are locked until `COPY COMPLETED`. Therefore selector `0x006D` is best treated as entering a command-link copy/data-transfer state, not as a normal CCU connection ACK. - Manual interpretation: the RCP-TX7 operating manual describes `COPY IN PROGRESS` as the LCD state shown during the multi-camera `COPY TO SLAVES` data-transfer operation over the RS232C command-link system. During that state, all linked RCP units display the message and their buttons/knobs are locked until `COPY COMPLETED`. Therefore selector `0x006D` is best treated as entering a command-link copy/data-transfer state, not as a normal CCU connection ACK.

View File

@@ -0,0 +1,53 @@
{
"name": "copy-hold-006d-5x-006c",
"notes": [
"Recover to CONNECT OK, send 006D every 1 second for five starts/progress ticks, then send 006C.",
"Tests whether repeated 006D can hold the copy-in-progress state for a longer transfer before completion."
],
"steps": [
{
"action": "power_cycle",
"off_seconds": 1.5
},
{
"action": "wait_ready",
"timeout": 10.0,
"heartbeats": 2,
"require": true
},
{
"action": "drain",
"seconds": 0.25
},
{
"action": "send",
"label": "ok_baseline_1",
"frame": "04 00 00 80 00 DE",
"listen": 0.7
},
{
"action": "send",
"label": "ok_baseline_2",
"frame": "04 00 00 80 00 DE",
"listen": 1.0
},
{
"action": "repeat",
"count": 5,
"steps": [
{
"action": "send",
"label": "copy_progress_006d",
"frame": "05 00 6D 00 00 32",
"listen": 1.0
}
]
},
{
"action": "send",
"label": "copy_complete_candidate_006c",
"frame": "05 00 6C 00 00 33",
"listen": 10.0
}
]
}

View File

@@ -0,0 +1,51 @@
{
"name": "copy-hold-006d-5x-no-complete",
"notes": [
"Recover to CONNECT OK, send 006D every 1 second five times, then do not send 006C.",
"Tests whether the timeout/fallback is measured from the last 006D progress tick."
],
"steps": [
{
"action": "power_cycle",
"off_seconds": 1.5
},
{
"action": "wait_ready",
"timeout": 10.0,
"heartbeats": 2,
"require": true
},
{
"action": "drain",
"seconds": 0.25
},
{
"action": "send",
"label": "ok_baseline_1",
"frame": "04 00 00 80 00 DE",
"listen": 0.7
},
{
"action": "send",
"label": "ok_baseline_2",
"frame": "04 00 00 80 00 DE",
"listen": 1.0
},
{
"action": "repeat",
"count": 5,
"steps": [
{
"action": "send",
"label": "copy_progress_006d",
"frame": "05 00 6D 00 00 32",
"listen": 1.0
}
]
},
{
"action": "listen",
"seconds": 10.0
}
]
}

View File

@@ -0,0 +1,53 @@
{
"name": "copy-repeat-006d-2x-006c",
"notes": [
"Recover to CONNECT OK, send 006D twice one second apart, then send 006C.",
"Tests whether repeating the in-progress selector extends/resets the completion window or interferes with completion."
],
"steps": [
{
"action": "power_cycle",
"off_seconds": 1.5
},
{
"action": "wait_ready",
"timeout": 10.0,
"heartbeats": 2,
"require": true
},
{
"action": "drain",
"seconds": 0.25
},
{
"action": "send",
"label": "ok_baseline_1",
"frame": "04 00 00 80 00 DE",
"listen": 0.7
},
{
"action": "send",
"label": "ok_baseline_2",
"frame": "04 00 00 80 00 DE",
"listen": 1.0
},
{
"action": "send",
"label": "copy_start_006d_1",
"frame": "05 00 6D 00 00 32",
"listen": 1.0
},
{
"action": "send",
"label": "copy_start_006d_2",
"frame": "05 00 6D 00 00 32",
"listen": 1.0
},
{
"action": "send",
"label": "copy_complete_candidate_006c",
"frame": "05 00 6C 00 00 33",
"listen": 10.0
}
]
}

View File

@@ -0,0 +1,59 @@
{
"name": "copy-repeat-006d-3x-006c",
"notes": [
"Recover to CONNECT OK, send 006D three times one second apart, then send 006C.",
"Tests whether repeated in-progress selectors can keep the copy state alive longer than the single-start window."
],
"steps": [
{
"action": "power_cycle",
"off_seconds": 1.5
},
{
"action": "wait_ready",
"timeout": 10.0,
"heartbeats": 2,
"require": true
},
{
"action": "drain",
"seconds": 0.25
},
{
"action": "send",
"label": "ok_baseline_1",
"frame": "04 00 00 80 00 DE",
"listen": 0.7
},
{
"action": "send",
"label": "ok_baseline_2",
"frame": "04 00 00 80 00 DE",
"listen": 1.0
},
{
"action": "send",
"label": "copy_start_006d_1",
"frame": "05 00 6D 00 00 32",
"listen": 1.0
},
{
"action": "send",
"label": "copy_start_006d_2",
"frame": "05 00 6D 00 00 32",
"listen": 1.0
},
{
"action": "send",
"label": "copy_start_006d_3",
"frame": "05 00 6D 00 00 32",
"listen": 1.0
},
{
"action": "send",
"label": "copy_complete_candidate_006c",
"frame": "05 00 6C 00 00 33",
"listen": 10.0
}
]
}

View File

@@ -0,0 +1,47 @@
{
"name": "copy-step-006d-006c-1500ms",
"notes": [
"Recover to CONNECT OK, send 006D, then send 006C 1.5 seconds later.",
"Narrows the working copy-complete window between the known 1.0s success and 2.5s failure."
],
"steps": [
{
"action": "power_cycle",
"off_seconds": 1.5
},
{
"action": "wait_ready",
"timeout": 10.0,
"heartbeats": 2,
"require": true
},
{
"action": "drain",
"seconds": 0.25
},
{
"action": "send",
"label": "ok_baseline_1",
"frame": "04 00 00 80 00 DE",
"listen": 0.7
},
{
"action": "send",
"label": "ok_baseline_2",
"frame": "04 00 00 80 00 DE",
"listen": 1.0
},
{
"action": "send",
"label": "copy_start_006d",
"frame": "05 00 6D 00 00 32",
"listen": 1.5
},
{
"action": "send",
"label": "copy_complete_candidate_006c",
"frame": "05 00 6C 00 00 33",
"listen": 10.0
}
]
}

View File

@@ -0,0 +1,47 @@
{
"name": "copy-step-006d-006c-2000ms",
"notes": [
"Recover to CONNECT OK, send 006D, then send 006C 2.0 seconds later.",
"Narrows the copy-complete acceptance window before the known 2.5s failure."
],
"steps": [
{
"action": "power_cycle",
"off_seconds": 1.5
},
{
"action": "wait_ready",
"timeout": 10.0,
"heartbeats": 2,
"require": true
},
{
"action": "drain",
"seconds": 0.25
},
{
"action": "send",
"label": "ok_baseline_1",
"frame": "04 00 00 80 00 DE",
"listen": 0.7
},
{
"action": "send",
"label": "ok_baseline_2",
"frame": "04 00 00 80 00 DE",
"listen": 1.0
},
{
"action": "send",
"label": "copy_start_006d",
"frame": "05 00 6D 00 00 32",
"listen": 2.0
},
{
"action": "send",
"label": "copy_complete_candidate_006c",
"frame": "05 00 6C 00 00 33",
"listen": 10.0
}
]
}