ys2-intro/loader/docs/Protocol.txt

78 lines
8.1 KiB
Plaintext
Raw Normal View History

2025-11-13 11:07:39 -05:00
Two bits + ATN loader protocol
------------------------------
<---------------------------- initiate loading ---------------------->|
|<--------- send name loop --------->|
| |
idle request | wait for | send filename chars to the drive | clear | busy
service | drive ready | | |
| | | |
Host DATA IN 0 _____ ... ____|<7C><><EFBFBD><EFBFBD>|<7C> ... <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><>|___|<7C><><EFBFBD>|___|<7C><><EFBFBD>|___|<7C><><EFBFBD>|___|<7C><><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><> 1
| | __ __ __ __ __ __ __ __ | | |
Host CLK IN 0 _____ ... _________|_ ... ___|<7C><><EFBFBD>|...D0..D1..D2..D3..D4..D5..D6..D7...|......<2E><><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD>|____|__ 0
| | | | |
Host DATA OUT 1 <20><><EFBFBD><EFBFBD><EFBFBD> ... <20><><EFBFBD><EFBFBD>|____|_ ... _______|__|<7C><><EFBFBD>|___|<7C><><EFBFBD>|___|<7C><><EFBFBD>|___|<7C><><EFBFBD>|_____|___________|_________|__ 0
| | | | |
Host CLK OUT 1 <20><><EFBFBD><EFBFBD><EFBFBD> ... <20><><EFBFBD><EFBFBD>|____|_ ... _______|...D0..D1..D2..D3..D4..D5..D6..D7...|......_____|_________|__ 0
| | | | |
Host ATN OUT 1 <20><><EFBFBD><EFBFBD><EFBFBD> ... <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C> ... <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><> 1
| | | | |
| | | | |
Drive ATN IN 1 <20><><EFBFBD><EFBFBD><EFBFBD> ... <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C> ... <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><> 1
| | | | |
Drive ATNA OUT 1 <20><><EFBFBD><EFBFBD><EFBFBD> ... <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C> ... <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><> 1
| | | | |
Drive CLK OUT 1 <20><><EFBFBD><EFBFBD><EFBFBD> ... <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C> ... <20><><EFBFBD>|___|____________________________________|___________|____|<7C><><EFBFBD><EFBFBD>|<7C><> 1
| | | | |
Drive CLK IN 1 <20><><EFBFBD><EFBFBD><EFBFBD> ... <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C> ... <20><><EFBFBD>|___|...D0..D1..D2..D3..D4..D5..D6..D7...|......_____|____|<7C><><EFBFBD><EFBFBD>|<7C><> 1
| | | | |
Drive DATA OUT 0 _____ ... _________|_ ... _______|____________________________________|___________|_________|__ 0
| | | | |
Drive DATA IN 1 <20><><EFBFBD><EFBFBD><EFBFBD> ... <20><><EFBFBD><EFBFBD>|____|_ ... _______|__|<7C><><EFBFBD>|___|<7C><><EFBFBD>|___|<7C><><EFBFBD>|___|<7C><><EFBFBD>|_____|___________|_________|__ 0
| | | | |
host: DATA | drive: ack | host: clock out bits with CLK OUT | host: | drive: |
OUT 1 -> 0, | by CLK OUT | as data, DATA OUT as clock, | CLK | busy by |
CLK OUT | 1 -> 0 | filename is FILENAME_MAXLENGTH | OUT = 0 | CLK OUT |
1 -> 0 | | chars or 0-terminated if fewer | | 0 -> 1 |
|<-------------------- fetch block or status (looped) -------------------->|
| |<-- get block loop -->| |
| | | |
busy | wait for | send block | get a byte from | drive | ack | acknowledge | idle
| the drive's | start signal | the drive | busy | block | file transfer |
| response | to the drive | | | | |
| | | | | | |
Host DATA IN 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C> ... <20><><EFBFBD>|_____|_______________|..D1...D3...D5...D7...|......<2E><><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD>|___|_______________|__ 0
| | | | | | |
Host CLK IN 0 ______|_ ... _____|<7C><><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|..D0...D2...D4...D6...|......_____|_______|_______________|__ 0
| | | | | | |
Host DATA OUT 0 ______|_ ... _________|_______________|______________________|___________|_______|_______|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><> 1
| | | | | | |
Host CLK OUT 0 ______|_ ... _________|_______________|______________________|___________|_______|_______|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><> 1
| | | | | | |
Host ATN OUT 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C> ... <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|_______|_____|<7C><><EFBFBD><EFBFBD>|____|<7C><><EFBFBD><EFBFBD>|_|___________|___|<7C><><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><> 1
| | | | | | |
| | | | | | |
Drive ATN IN 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C> ... <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|_______|_____|<7C><><EFBFBD><EFBFBD>|____|<7C><><EFBFBD><EFBFBD>|_|___________|___|<7C><><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><> 1
| | | | | | |
Drive ATNA OUT 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C> ... <20><><EFBFBD>|_XXXX|XXXXXXXXXXXXXXX|<7C>|____|<7C><><EFBFBD><EFBFBD>|____|<7C><><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><> 1
| | | __ __ __ __ | | | |
Drive CLK OUT 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C> ... <20><><EFBFBD><EFBFBD><EFBFBD>|___|_______________|..D0...D2...D4...D6...|......<2E><><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><> 1
| | | __ __ __ __ | | | |
Drive CLK IN 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C> ... <20><><EFBFBD><EFBFBD><EFBFBD>|___|_______________|..D0...D2...D4...D6...|......<2E><><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><> 1
| | | __ __ __ __ | | | |
Drive DATA OUT 0 ______|_ ... ___|<7C><><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|..D1...D3...D5...D7...|......_____|_______|_______________|__ 0
| | | __ __ __ __ | | | |
Drive DATA IN 0 ______|_ ... ___|<7C><><EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|..D1...D3...D5...D7...|......_____|_______|_______|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C><> 1
| | | | | | |
| drive: signal | host: ATN | host: clock in | drive: | host: | host: ack by |
| ready by DATA | OUT 1 -> 0 | bit pairs with | DATA | ATN | DATA OUT |
| OUT 0 -> 1, | | ATN OUT as clock, | OUT = 0, | OUT | and CLK OUT |
| CLK OUT 1->0, | | last bit pair | CLK | 0->1 | 0 -> 1: enter |
| then, if host | | acknowledged with | OUT = 1 | | idle mode = |
| DATA IN is | | ATN OUT 1 -> 0 | | | host ATN, CLK |
| set to 1, the | | | | | and DATA OUT |
| drive is not | | | | | = 1, drive |
| present | | | | | ATNA OUT = 1 |