78 lines
8.1 KiB
Plaintext
Executable file
78 lines
8.1 KiB
Plaintext
Executable file
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 _____ ... ____|¯¯¯¯|¯ ... ¯¯¯¯¯¯¯|¯¯|___|¯¯¯|___|¯¯¯|___|¯¯¯|___|¯¯¯¯¯|¯¯¯¯¯¯¯¯¯¯¯|¯¯¯¯¯¯¯¯¯|¯¯ 1
|
|
| | __ __ __ __ __ __ __ __ | | |
|
|
Host CLK IN 0 _____ ... _________|_ ... ___|¯¯¯|...D0..D1..D2..D3..D4..D5..D6..D7...|......¯¯¯¯¯|¯¯¯¯|____|__ 0
|
|
| | | | |
|
|
Host DATA OUT 1 ¯¯¯¯¯ ... ¯¯¯¯|____|_ ... _______|__|¯¯¯|___|¯¯¯|___|¯¯¯|___|¯¯¯|_____|___________|_________|__ 0
|
|
| | | | |
|
|
Host CLK OUT 1 ¯¯¯¯¯ ... ¯¯¯¯|____|_ ... _______|...D0..D1..D2..D3..D4..D5..D6..D7...|......_____|_________|__ 0
|
|
| | | | |
|
|
Host ATN OUT 1 ¯¯¯¯¯ ... ¯¯¯¯¯¯¯¯¯|¯ ... ¯¯¯¯¯¯¯|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|¯¯¯¯¯¯¯¯¯¯¯|¯¯¯¯¯¯¯¯¯|¯¯ 1
|
|
| | | | |
|
|
| | | | |
|
|
Drive ATN IN 1 ¯¯¯¯¯ ... ¯¯¯¯¯¯¯¯¯|¯ ... ¯¯¯¯¯¯¯|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|¯¯¯¯¯¯¯¯¯¯¯|¯¯¯¯¯¯¯¯¯|¯¯ 1
|
|
| | | | |
|
|
Drive ATNA OUT 1 ¯¯¯¯¯ ... ¯¯¯¯¯¯¯¯¯|¯ ... ¯¯¯¯¯¯¯|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|¯¯¯¯¯¯¯¯¯¯¯|¯¯¯¯¯¯¯¯¯|¯¯ 1
|
|
| | | | |
|
|
Drive CLK OUT 1 ¯¯¯¯¯ ... ¯¯¯¯¯¯¯¯¯|¯ ... ¯¯¯|___|____________________________________|___________|____|¯¯¯¯|¯¯ 1
|
|
| | | | |
|
|
Drive CLK IN 1 ¯¯¯¯¯ ... ¯¯¯¯¯¯¯¯¯|¯ ... ¯¯¯|___|...D0..D1..D2..D3..D4..D5..D6..D7...|......_____|____|¯¯¯¯|¯¯ 1
|
|
| | | | |
|
|
Drive DATA OUT 0 _____ ... _________|_ ... _______|____________________________________|___________|_________|__ 0
|
|
| | | | |
|
|
Drive DATA IN 1 ¯¯¯¯¯ ... ¯¯¯¯|____|_ ... _______|__|¯¯¯|___|¯¯¯|___|¯¯¯|___|¯¯¯|_____|___________|_________|__ 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 ¯¯¯¯¯¯|¯ ... ¯¯¯|_____|_______________|..D1...D3...D5...D7...|......¯¯¯¯¯|¯¯¯|___|_______________|__ 0
|
|
| | | | | | |
|
|
Host CLK IN 0 ______|_ ... _____|¯¯¯|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|..D0...D2...D4...D6...|......_____|_______|_______________|__ 0
|
|
| | | | | | |
|
|
Host DATA OUT 0 ______|_ ... _________|_______________|______________________|___________|_______|_______|¯¯¯¯¯¯¯|¯¯ 1
|
|
| | | | | | |
|
|
Host CLK OUT 0 ______|_ ... _________|_______________|______________________|___________|_______|_______|¯¯¯¯¯¯¯|¯¯ 1
|
|
| | | | | | |
|
|
Host ATN OUT 1 ¯¯¯¯¯¯|¯ ... ¯¯¯¯¯¯¯¯¯|¯¯¯¯¯¯¯|_______|_____|¯¯¯¯|____|¯¯¯¯|_|___________|___|¯¯¯|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|¯¯ 1
|
|
| | | | | | |
|
|
| | | | | | |
|
|
Drive ATN IN 1 ¯¯¯¯¯¯|¯ ... ¯¯¯¯¯¯¯¯¯|¯¯¯¯¯¯¯|_______|_____|¯¯¯¯|____|¯¯¯¯|_|___________|___|¯¯¯|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|¯¯ 1
|
|
| | | | | | |
|
|
Drive ATNA OUT 1 ¯¯¯¯¯¯|¯ ... ¯¯¯|_XXXX|XXXXXXXXXXXXXXX|¯|____|¯¯¯¯|____|¯¯¯¯¯|¯¯¯¯¯¯¯¯¯¯¯|¯¯¯¯¯¯¯|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|¯¯ 1
|
|
| | | __ __ __ __ | | | |
|
|
Drive CLK OUT 1 ¯¯¯¯¯¯|¯ ... ¯¯¯¯¯|___|_______________|..D0...D2...D4...D6...|......¯¯¯¯¯|¯¯¯¯¯¯¯|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|¯¯ 1
|
|
| | | __ __ __ __ | | | |
|
|
Drive CLK IN 1 ¯¯¯¯¯¯|¯ ... ¯¯¯¯¯|___|_______________|..D0...D2...D4...D6...|......¯¯¯¯¯|¯¯¯¯¯¯¯|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|¯¯ 1
|
|
| | | __ __ __ __ | | | |
|
|
Drive DATA OUT 0 ______|_ ... ___|¯¯¯¯¯|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|..D1...D3...D5...D7...|......_____|_______|_______________|__ 0
|
|
| | | __ __ __ __ | | | |
|
|
Drive DATA IN 0 ______|_ ... ___|¯¯¯¯¯|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|..D1...D3...D5...D7...|......_____|_______|_______|¯¯¯¯¯¯¯|¯¯ 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 |
|