-
Notifications
You must be signed in to change notification settings - Fork 67
Apple II SP over SLIP
SmartPort over Serial Line Internet Protocol (SP-over-SLIP) is related to Apple II Protocol Converter Bus (CBus). From a high-level perspective it transports almost the same data as CBus, but the actual coding of the data is pretty different. The primary difference in the transported data results from the fact that SP-over-SLIP runs on a point-to-point connection while CBus runs - nomen est omen - on a bus.
SP-over-SLIP can be used on any medium providing a transparent, duplex, lossless byte stream. Examples are a TCP connection or a USB CDC-ACM connection.
SP-over-SLIP strictly consists of request/response packets. Every packet is encapsulated in a SLIP frame for two reasons:
- SLIP frames allow to detect packet boundaries without parsing the (variable sized) packets.
- SLIP frames allow to detect incomplete packets caused by an Apple II Reset during packet transmission.
Every request/response packet starts with a Request Sequence Number for this reason: An Apple II Reset after sending a request but before receiving the response makes the response stay in some TCP or USB related buffer. Now the next send request / receive response sequence receives that wrong, old response. The Request Sequence Number allows to detect (and discard) that response.
Note that on the Apple II implementation, all block sizes are 512 bytes, but the interface is generic, so the size must be specified in the request.
Size | Content |
---|---|
1 | Request Sequence Number |
1 | Command Number ($00) |
1 | SmartPort Unit Number |
1 | Status Code |
Size | Content |
---|---|
1 | Request Sequence Number |
1 | Status |
[n] | Status List (if Status == $00) |
Size | Content |
---|---|
1 | Request Sequence Number |
1 | Command Number ($01) |
1 | SmartPort Unit Number |
2 | Block Size* |
3 | Block Number |
Size | Content |
---|---|
1 | Request Sequence Number |
1 | Status |
[N] | Block Data (if Status == $00) |
Size | Content |
---|---|
1 | Request Sequence Number |
1 | Command Number ($02) |
1 | SmartPort Unit Number |
2 | Block Size* |
3 | Block Number |
N | Block Data |
Size | Content |
---|---|
1 | Request Sequence Number |
1 | Status |
Size | Content |
---|---|
1 | Request Sequence Number |
1 | Command Number ($03) |
1 | SmartPort Unit Number |
Size | Content |
---|---|
1 | Request Sequence Number |
1 | Status |
Size | Content |
---|---|
1 | Request Sequence Number |
1 | Command Number ($04) |
1 | SmartPort Unit Number |
n | Control List |
Size | Content |
---|---|
1 | Request Sequence Number |
1 | Status |
Size | Content |
---|---|
1 | Request Sequence Number |
1 | Command Number ($05) |
1 | SmartPort Unit Number |
Size | Content |
---|---|
1 | Request Sequence Number |
1 | Status |
Size | Content |
---|---|
1 | Request Sequence Number |
1 | Command Number ($06) |
1 | SmartPort Unit Number |
Size | Content |
---|---|
1 | Request Sequence Number |
1 | Status |
Size | Content |
---|---|
1 | Request Sequence Number |
1 | Command Number ($07) |
1 | SmartPort Unit Number |
Size | Content |
---|---|
1 | Request Sequence Number |
1 | Status |
Size | Content |
---|---|
1 | Request Sequence Number |
1 | Command Number ($08) |
1 | SmartPort Unit Number |
2 | Byte Count |
3 | Address |
Size | Content |
---|---|
1 | Request Sequence Number |
1 | Status |
[n] | Read Data (if Status == $00) |
Size | Content |
---|---|
1 | Request Sequence Number |
1 | Command Number ($09) |
1 | SmartPort Unit Number |
2 | Byte Count |
3 | Address |
n | Write Data |
Size | Content |
---|---|
1 | Request Sequence Number |
1 | Status |
The Apple II side of SP-over-SLIP is supposed to be implemented using some processor beside the 6502 main processor. This allows the Apple II - in contrast to CBus - to inform the connected devices about a 6502 reset. This can i.e. have a modem drop an active connection or a printer eject a partially printed page.
Size | Content |
---|---|
1 | Request Sequence Number |
1 | Command Number ($0A) |
1 | SmartPort Unit Number |
Size | Content |
---|---|
1 | Request Sequence Number |
1 | Status |
Copyright 2024 Contributors to the FujiNetWIFI project.
Join us on Discord: https://discord.gg/7MfFTvD
- Home
- What is FujiNet?
- The Definition of Done
- Board bring up for FujiNet Platform.IO code
- The Complete Linux CLI Guide
- The Complete OSX CLI Guide
- Development Env for Apps
- FujiNet-Development-Guidelines
- System Quickstarts
- FujiNet Flasher
- Setting up a TNFS Server
- FujiNet Configuration File: fnconfig.ini
- AppKey Registry - SIO Command $DC Open App Key
- CP-M Support
- BBS
- Official Hardware Versions
- Prototype Board Revisions
- FujiNet Development Guidelines
- Atari Programming
- Apple Programming
- C64 Programming
- ADAM Programming
- Testing Plan
- Hacker List
- FujiNet VirtualMachine