The reason for a separate API may just be due to punches and readers only being streaming character or byte devices.

Start reading might be operator assisted or automatic depending on the punch / reader and how the operator configured it. Often, the read would be initiated in software, then an operator presses a go button.

Flow control is a thing. Readers and punches will stop and start xon xoff ctrl q ctrl s style too. Edit: Nope. It is RTS, CTS hardware signals in almost all cases. Whoops!

A tape can be punched with block formatting of course. I never saw this happen.

Gcodes can be block expressions!

;This is a comment[eob]

O1324 ;Program number[eob]

G1 X12 Y13[eob]

G3 X50.1 Y3.2343 R12.1 A30.6[eob]

But they are variable and can reach darn near a page of ASCII text (256 bytes )for a single code, but the average might be 32.