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 |