Skip to content

AdamNet Timing Analysis

Thomas Cherryhomes edited this page Sep 8, 2025 · 21 revisions

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.

graph TD
    A(["(14) MN_STATUS"])-->B("(84) NM_STATUS")-->C(["(24) MN_ACK"])
    D(["(D4) MN_READY"])-->E("(94) NM_ACK")-->F(["(64) MN_SEND"])-->G("(94) NM_ACK")
    H(["(44) MN_RECEIVE"])-->I("(94) NM_ACK")-->J("(34) MN_CLR")-->K("(B4) NM_SEND")-->L(["(24) MN_ACK"])
Loading

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

Clone this wiki locally