BitPads Enhancement Sub-Protocol v2.0
C0 Enhancement
Grammar
Three bits. 155 years. Structurally available since Baudot's 1870 telegraph code — never claimed until now.
The 32 C0 control characters (U+0000–U+001F) occupy the lower 5 bits of any byte in the 0x00–0xFF range. The upper 3 bits — bits 6, 7, and 8 — have been structurally unused since Baudot. The C0 Enhancement Grammar reclaims them as a universal flag matrix: P (Priority), A (Acknowledge Request), C (Continuation). Any of the 29 agreed transmission controls can carry all three flags simultaneously in a single byte.
This is not a new invention. It is the claiming of an inheritance that 155 years of protocol development — Murray, ASCII, ISO 6429, Unicode — left structurally available without ever using it.
155 Years of Available Bits
The Baudot Lineage
The 5-bit atom of binary communication was established by Baudot in 1870. Every subsequent standard preserved this 5-bit space as the C0 control region. The upper bits grew from N/A to group identifiers to extended characters — but the 3 bits that would become the Enhancement flag matrix were never systematically used for transmission signalling.
| Year | Standard | Bits | Lower 5 bits | Upper 3 bits |
|---|---|---|---|---|
| 1870 | Baudot telegraph | 5 | 32 signals. The complete alphabet of mechanical communication. | N/A — 5-bit only |
| 1899 | Murray code | 5 | Standardised Baudot. 32 controls. Shift states extend the set. | N/A — 5-bit only |
| 1963 | ASCII | 7 | C0 controls in positions 0–31. Murray 5-bit space is the lower 5 of 7-bit ASCII. | Bits 6–7: group IDs (00–11) |
| 1976 | ISO 6429 / C1 | 8 | C0 preserved at 0x00–0x1F. C1 controls added at 0x80–0x9F. | Bit 8: Latin-1 / C1 extension |
| 1991 | Unicode / UTF-8 | var. | C0 at U+0000–U+001F preserved. C1 at U+0080–U+009F. | Multi-byte sequences above 127 |
| 2025 | BitPads Enhancement | 8 | C0 code identity in lower 5 bits (bits 1–5). | Bits 6–8: P · A · C flag matrix |
The 5+3 Split
Enhanced Byte Structure
Every enhanced C0 byte uses a 5+3 split. The lower 5 bits (1–5) carry the C0 code identity (0–31, matching the 32 original C0 controls). The upper 3 bits (6–8) carry the P, A, C flag matrix. All three flags can be set simultaneously. Eight flag states per control.
Priority
Ack Req
Cont.
code
code
code
code
code
Flag Combinations — All 8 States
| P·A·C | Hex offset | Interpretation | Typical use |
|---|---|---|---|
| 0·0·0 | +0x00 | Plain control. No flags active. | Standard C0 transmission control at declared slot |
| 0·0·1 | +0x20 | Continuation — more controls follow in this slot. | Multi-byte control sequence |
| 0·1·0 | +0x40 | Acknowledge Request — receiver must confirm. | Handshake initiation, session critical control |
| 0·1·1 | +0x60 | Acknowledge + Continuation. | Critical multi-byte sequence requiring confirmation |
| 1·0·0 | +0x80 | Priority — elevated attention required. | Alert, urgent status, priority session control |
| 1·0·1 | +0xA0 | Priority + Continuation. | Priority multi-byte control sequence |
| 1·1·0 | +0xC0 | Priority + Acknowledge Request. | Highest-urgency single control, must be confirmed |
| 1·1·1 | +0xE0 | All flags. Priority + Ack + Continuation. | Emergency multi-step sequence, full confirmation required |
The Agreed Set
C0 Controls — 29 Unconditional + 4 Conditional
All 32 Unicode C0 controls are assessed against three criteria: transmission role independent of text formatting; meaningful flag combinations; safe on declared enhancement channels. 29 pass unconditionally. 4 are conditional (context-dependent — require non-text channel typing). Click any row to see flags, example byte, and typical use.
| Code | Name | Standard Meaning | Enhancement Role | Verdict |
|---|---|---|---|---|
| 0x00 | NUL | Null, filler | Typed padding / null keep-alive | INCLUDE |
P/A/C: A=1 useful (acknowledge-request null = verified silence). C=1 useful (pad continuation). P=1 marginal. Example byte: 0x40 = A-NUL = Acknowledge Request Null (verified null, receipt required).Use: Keep-alive on long-gap sessions. Priority pad in time-critical streams. | ||||
| 0x01 | SOH | Start of Heading | Session open bootstrap anchor. Sub-session open in signal slot. | CORE |
P/A/C: All three meaningful. P-SOH = priority session open. A-SOH = session open requiring confirmation. C-SOH = session open with continuation (more headers follow). Example: 0xC1 = P+A-SOH = Priority Session Open, confirm before proceeding.Use: At P1 (session open slot). In telegraph stream: opens an inner record context. | ||||
| 0x02 | STX | Start of Text | Content / stream open. Pre-announces payload arrival. | CORE |
Use: At P7 (before Wave content) or P5 (before record body). Signals receiver to switch context to content reading.
| ||||
| 0x03 | ETX | End of Text | Content / stream close. Pairs with STX. | CORE |
Use: At P6 (after record body) or P8 (after Wave content). In telegraph emulation: stream close trigger alongside EOT.
| ||||
| 0x04 | EOT | End of Transmission | Transmission end, batch close, session end. | CORE |
Use: At P13 (session close). P-EOT = priority session end (emergency shutdown). A-EOT = session end with confirmation required. A legacy teleprinter receiving this byte closes the connection correctly — EOT is among the most legacy-compatible controls.
| ||||
| 0x05 | ENQ | Enquiry | Status request, ACK request, session handshake. | CORE |
Use: At P5 (before record body). Enhanced: P-ENQ = priority status query. A-ENQ = query requiring response. In a two-way handshake: ENQ triggers ACK response.
| ||||
| 0x06 | ACK | Acknowledge | Positive confirmation, receipt signal. | CORE |
Use: Response to A-flagged controls. At P6 (after record): confirms record receipt. P-ACK = priority acknowledgement (time-sensitive confirmation).
| ||||
| 0x07 | BEL | Bell / Alert | Alert / priority notification event. | INCLUDE |
Use: Alert signalling at any slot. P-BEL = critical alert requiring immediate attention. In telegraph emulation: rings the terminal bell on legacy receivers while signalling an enhanced alert event to BitPads receivers.
| ||||
| 0x08 | BS | Backspace | Correction / undo in transmission context. | INCLUDE |
Use: In compact command sequences: signals correction of the preceding command. A-BS = request confirmation that correction was accepted.
| ||||
| 0x09 | HT | Horizontal Tab | Record separator / field separator in stream context. | INCLUDE |
Use: At P11 (component boundary). Separates fields within a structured stream. Compatible with tab-separated data receivers.
| ||||
| 0x0A | LF | Line Feed | Batch boundary / record group separator. | INCLUDE |
Use: At P12 (batch close). Signals end of a logical record group. Legacy terminals advance the line — BitPads receivers trigger batch conservation check.
| ||||
| 0x0B | VT | Vertical Tab | Layer boundary marker. | INCLUDE |
Use: At layer transitions (P3 before L2, P4 after L2). Signals decoder to change context from session layer to batch layer.
| ||||
| 0x0C | FF | Form Feed | Session separator — new session begins. | INCLUDE |
Use: Between sessions in a continuous channel. Clears session state. Legacy printers eject the page — BitPads receivers reset session context.
| ||||
| 0x0D | CR | Carriage Return | Record reset / return to record start state. | INCLUDE |
Use: At record boundaries. In telegraph emulation: visible as carriage return to legacy receiver; signals record boundary to BitPads receiver.
| ||||
| 0x0E | SO | Shift Out | Conditional: Codebook shift — activate alternate codebook for nibble stream. | CONDITIONAL |
Condition: Requires non-text channel typing (category declared as binary pictography stream). On text channels, SO has deep embedding in character set switching and is unsafe to override. Enhancement role: In binary pictography streams, SO triggers rolling codebook shift — the nibble stream switches to the alternate codebook until SI restores. See Telegraph Emulation II for full specification. | ||||
| 0x0F | SI | Shift In | Conditional: Codebook shift — return to primary codebook. | CONDITIONAL |
Condition: Same as SO — requires non-text channel. SI/SO pair governs rolling codebook shifts in binary pictography streams.
| ||||
| 0x10 | DLE | Data Link Escape | Enhancement escape prefix / extension sequence initiator. | INCLUDE |
Use: Prefixes extended enhancement sequences when the standard 5+3 encoding is insufficient. C-DLE = continuation (more escape bytes follow). The extension mechanism for the enhancement grammar itself.
| ||||
| 0x11–0x14 | DC1–DC4 | Device Controls 1–4 | Device operation controls in enhancement-declared device streams. | INCLUDE |
DC1 (XON) / DC3 (XOFF): flow control. In enhancement context: DC1=start, DC2=set parameter, DC3=pause, DC4=stop. Meaningful in controlled hardware device streams.
| ||||
| 0x15 | NAK | Negative Acknowledge | Rejection signal, retransmission request. | CORE |
Use: Response to A-flagged controls. P-NAK = priority rejection (emergency retransmit required). Complements ACK in the handshake system.
| ||||
| 0x16 | SYN | Synchronisation | Stream synchronisation marker. | INCLUDE |
Use: In continuous streams to maintain decoder synchronisation. P-SYN = priority sync (re-synchronise immediately after a gap or error).
| ||||
| 0x17 | ETB | End of Transmission Block | Block boundary in structured data transmissions. | INCLUDE |
Use: Closes a data block within a larger transmission. Distinct from EOT (session end) and ETX (content end) — ETB marks a physical block boundary, not a logical boundary.
| ||||
| 0x18 | CAN | Cancel | Record cancel — discard current record and revert. | INCLUDE |
Use: At P5 or P6: cancels the in-progress record. P-CAN = priority cancel (emergency record discard). The conservation check excludes cancelled records.
| ||||
| 0x19 | EM | End of Medium | Storage medium boundary — end of writable space. | INCLUDE |
Use: Signals that a physical storage boundary has been reached. Relevant in buffered transmission contexts.
| ||||
| 0x1A | SUB | Substitute | Replacement value — substituted for a missing or corrupt data element. | INCLUDE |
Use: When a value field is unavailable but the record structure must be maintained. The receiver knows a substitution occurred and can log or flag the record.
| ||||
| 0x1B | ESC | Escape | Conditional: Extension prefix — declares extended control or mode switch. | CONDITIONAL |
Condition: ESC has deep embedding in terminal control sequences (ANSI escape codes) and is unsafe to use generically on text or terminal channels. Permitted on declared-typed non-text enhancement channels.
| ||||
| 0x1C | FS | File Separator | Top-level grouping boundary. | INCLUDE |
Use: Corresponds to the File Separator field in Layer 2 (bits 28–30). At P12 or P13: top-level file boundary marker. Legacy: separates logical files in a batch transmission.
| ||||
| 0x1D | GS | Group Separator | Group boundary — corresponds to Layer 2 Group Separator field. | INCLUDE |
Use: At P12 (batch close): signals group boundary. Corresponds to Layer 2 bits 19–22 Group Separator counter.
| ||||
| 0x1E | RS | Record Separator | Record boundary — corresponds to Layer 2 Record Separator field. | INCLUDE |
Use: At P6 (after record): marks record boundary. Corresponds to Layer 2 bits 23–27 Record Separator counter. In compound mode: the RS value is the implicit compound group ID.
| ||||
| 0x1F | US | Unit Separator | Unit boundary — separates discrete units within a record or stream. | INCLUDE |
Use: At P11 (component boundary): separates components within a record (e.g. value block from time block). Fine-grained separator complementing RS and GS.
| ||||
13 Positions
Signal Slot Architecture — P1 Through P13
Thirteen declared positions span the full transmission structure. Enhanced C0 bytes occupy these declared positions — content bytes occupy content positions. The two never overlap. The decoder always knows by position which type of byte it is reading. No DLE-stuffing. No escaping. No length prefix on every control byte.
| Slot | Layer | Position | Typical control |
|---|---|---|---|
| P1 | Session | Before Layer 1 header | SOH (session open), NUL (keep-alive) |
| P2 | Session | After Layer 1 header | ACK (session accepted), NAK (CRC fail) |
| P3 | Batch | Before Layer 2 header | STX (content start), VT (layer boundary) |
| P4 | Batch | After Layer 2 header | ENQ (batch ready query), ACK (batch context confirmed) |
| P5 | Record | Before record body | ENQ (record ready), BEL (priority record incoming) |
| P6 | Record | After record body | ACK (record received), RS (record separator) |
| P7 | Wave | Before Wave content | STX (content arriving), BEL (priority Wave) |
| P8 | Wave | After Wave content | ETX (content end), ACK (Wave confirmed) |
| P9 | Stream | Stream open | SOH (stream open), STX (first content block) |
| P10 | Stream | Stream close | EOT (transmission end), ETX (content end) |
| P11 | Record | Between components | US (unit separator), HT (field separator) |
| P12 | Batch | Batch close | LF (batch boundary), GS (group separator), EOT |
| P13 | Session | Session close | EOT (session end), FS (file separator) |
v2.0 Addition
Signal Slot Presence Byte
New in v2.0. An 8-bit bitmap transmitted after Meta byte 2 when Meta byte 2 bit 8 = 1. Each bit declares whether a specific slot (P1–P8) is active in this session. The decoder reads this byte at session open and knows exactly which byte positions to expect enhanced C0 controls at. Slots P9–P13 are declared via an extension byte when needed.
Sess open
After L1
Before L2
After L2
Bef. rec.
Aft. rec.
Bef. Wave
Aft. Wave
0x8C = 1000 1100 → P1, P5, P6 active
· P9–P13 via extension byte when needed
With SSP byte = 0x8C (P1, P5, P6 active), the decoder expects:
- An enhanced C0 byte before Layer 1 at session open (P1)
- An enhanced C0 byte before each record body (P5)
- An enhanced C0 byte after each record body (P6)
At all other positions, bytes are content. No ambiguity. No marker bytes in content. No length prefix on every control.
No DLE-Stuffing Required
Channel Safety — Positional Disambiguation
The fundamental design choice of the signal slot architecture: enhanced C0 bytes occupy declared positions, never content positions. The decoder knows which type of byte it is reading by position, not by byte value. No byte in a content region needs escaping because its value matches a control code.
Interactive Tool