4 The AE protocol works by exchanging messages between the Amiga and the Client (e.g. an IBM PC).
6 Each message consists of a header and optionally payload data. Both parts carry CRC32 checksums
7 to ensure data integrity.
13 | -------------- | ---------------------------- |
19 | Msg | ID | Sending side | Description |
20 | ---- | ----------------- | ------------ | --------------------------------------------------------- |
21 | 0x00 | MSG_NEXT_PART | Amiga/Client | Ask for next block |
22 | 0x01 | | Amiga/Client | Transfer cancelled |
23 | 0x02 | MSG_INIT | Amiga/Client | Initialisation / Init response |
24 | 0x03 | MSG_MPARTH | Amiga/? | Multipart header |
25 | 0x04 | MSG_EOF | Amiga | EOF (no payload) |
26 | 0x05 | MSG_BLOCK | Amiga | Next data block |
28 | 0x08 | MSG_EXISTS | Amiga | File already exists (when trying to write with 0x66) |
29 | 0x09 | | Amiga | Size ? (response to 0x6c) |
30 | 0x0a | MSG_ACK_CLOSE | Amiga | Close response |
31 | 0x0b | | Amiga | Format response? |
33 | 0x64 | | Client | List directory |
34 | 0x65 | MSG_FILE_SEND | Client | File read |
35 | 0x66 | MSG_FILE_RECV | Client | File/folder write |
36 | 0x67 | | Client | File/folder delete (recursively) |
37 | 0x68 | | Client | File rename (name changes) (works on drives, too?) |
38 | 0x69 | | Client | File move (path changes) |
39 | 0x6a | | Client | File copy |
40 | 0x6b | | Client | Set attributes and comment |
41 | 0x6c | | Client | Request size on disk (?) |
42 | 0x6d | MSG_FILE_CLOSE | Client | Close file |
43 | 0x6e | | Client | Format disk (needs Kickstart 2.0 or newer) |
44 | 0x6f | | Client | New folder |
50 ----------------------
61 0x66 MSG_FILE_RECV - Write a file (PC -> Amiga)
62 -----------------------------------------------
67 | -------------- | ---------------------------- |
71 | 4 | Attributes FIXME: encoding ? |
72 | 4 | date (hours since 1/1/78) |
73 | 4 | time (mins since midnight) |
75 | 1 | file type FIXME: encoding? |
76 | header_size-29 | file name |
78 Expected response: 0x00 MSG_NEXT_PART if file does not exist (yet), 0x08 MSG_EXISTS otherwise
81 67 - Delete file/folder
82 ------------------------
87 -------|--------------------
91 Then, read type 0 for confirmation.
92 Then, sendClose() (0xa response: 5x 00).
94 If Path is a folder, it will be deleted together with its contents.
97 68 - Rename file/folder
98 ------------------------
103 -------|--------------------
104 n | Path (including old file name)
106 n | New file name (without path)
109 Then, read type 0 for confirmation.
110 Then, sendClose() (0xa response: 5x 00).
113 69 - Move file/folder
114 ----------------------
119 -------|--------------------
120 n | Path (including old file name)
122 n | New path to contain file (folder without trailing slash or file name)
126 Then, read type 0 for confirmation.
127 Then, sendClose() (0xa response: 5x 00).
129 If Path is a folder, it will be moved together with its contents.
130 This command appears to work across devices.
133 6a - Copy file/folder
134 ----------------------
139 -------|--------------------
140 n | Path (including old file name)
142 n | New path to contain file (folder without trailing slash or file name)
146 Then, read type 0 for confirmation.
147 Then, sendClose() (0xa response: 5x 00).
149 If Path is a folder, it will be moved together with its contents.
150 This command appears to work across devices.
153 6b - Set attributes and comment
154 --------------------------------
159 -------|--------------------
165 4 | Checksum? (seems to be 0x00000000 if comment empty)
167 Then, read type 0 for confirmation.
168 Then, sendClose() (0xa response: 5x 00).
171 6c - Request size on disk (?)
172 ------------------------------------
177 -------|--------------------
181 Then, read type 0 for confirmation.
182 Then, read type 9 for 12 bytes of payload (### TODO ###).
183 Then, send type 0 to request more data (no payload).
184 Then, read type 9 for 12 bytes of payload (### TODO ###).
185 Then, send type 0 to request more data (no payload).
186 Then, read type 0 signaling end of attributes (no payload).
187 Then, sendClose() (0xa response: 5x 00).
191 Then, read type 0 for confirmation.
192 Then, read type 0 signaling end of attributes (no payload).
193 Then, sendClose() (0xa response: 5x 00).
202 Then, read type 0x0a for confirmation (typical payload: 5 bytes of 0x00).
204 This is used to finish an operation, such as a directory listing
220 -------|--------------------
224 Then, read type 0 for confirmation.
225 Then, sendClose() (0xa response: 5x 00).
227 The host will create a new folder in the given path, together with a
229 The folder name cannot be chosen, and will be something like "Unnamed1".
231 To create a folder with a specific name, use 0x66.
232 Note that 0x66'ing a folder does not seem to set its time.