AdamNet Timing Analysis - FujiNetWIFI/fujinet-firmware GitHub Wiki
Internal notes describing observations of AdamNet timings with other peripherals.
The lifecycle of a single block
A Block is 1K of data from a disk or data pack.
stateDiagram-v2
[*] --> Adam_asks_for_Status
%% --- Transaction 1: MN_STATUS ---
state MN_Status_Exchange {
[*] --> Adam_Sends_MN_STATUS
state "Adam sends MN_STATUS (0x14)" as Adam_Sends_MN_STATUS
Adam_Sends_MN_STATUS --> Peripheral_Responds_NM_STATUS
state "Peripheral responds NM_STATUS (0x84, 0x00, 0x04, 0x01, 0x40, 0x45)" as Peripheral_Responds_NM_STATUS
Peripheral_Responds_NM_STATUS --> Adam_Responds_NM_ACK
state "Adam responds NM_ACK (0x24)" as Adam_Responds_NM_ACK
Adam_Responds_NM_ACK --> [*]
}
MN_Status_Exchange --> MN_Other_Exchange
%% --- Transaction 2: Example other exchange ---
state MN_Other_Exchange {
[*] --> Adam_Sends_MN_OTHER
state "Adam sends MN_OTHER (0x33)" as Adam_Sends_MN_OTHER
Adam_Sends_MN_OTHER --> Peripheral_Responds_NM_OTHER
state "Peripheral responds NM_OTHER (...payload...)" as Peripheral_Responds_NM_OTHER
Peripheral_Responds_NM_OTHER --> Adam_Responds_NM_ACK2
state "Adam responds NM_ACK (0x24)" as Adam_Responds_NM_ACK2
Adam_Responds_NM_ACK2 --> [*]
}
MN_Other_Exchange --> [*]
Each of the three packet states:
Interesting things to look at
TAPEUTL always reads blocks cleanly from the FujiNet. Are we messing up status timing?
Digital Data Packs
Multiple units: The DCB has a unit number, which can specify the unit number for a drive. This gets reflected in the very last data byte of the requested block number. (This is why the send block command has 5 bytes).
Write Timings:
- Time between D8 and 98: 164 microseconds
- Time between 98 and 68: 124 microseconds