Xinu7/src/cmd/download/lsi11/h/dlpack.h
/* dlpack.h */
/* Declarations and Constants for downloader protocol */
/* Protocol: eload accepts command packets over the ethernet and */
/* issues the appropriate response via ethernet. All packets are */
/* transmitted via UDP. A minimal packet consists of a struct */
/* dl_header, with appropriate dl_op field, as defined below. All */
/* ACKs & NAKs are minimal packets, with the exception of DLEAK, which */
/* is a full-sized dl_pack. Packets with dl_op == DLDEP are also */
/* full-sized dl_packs. DLSRT packets make use of a dl_header, */
/* followed by the dl_srtval structure, which defines start parameters */
/* for the downloaded image. DLEXT, DLID, DLMIQ are minimal */
/* packets. */
#define DLMAXD 1024 /* max data in packet */
/* values for dl_op command field in eload packet */
#define DLACK '\001' /* download acknowledgment */
#define DLEAK '\002' /* upload acknowledgment */
#define DLNAK '\003' /* negative acknowledgment */
#define DLRAK '\004' /* ready to run ack. */
#define DLQAK '\005' /* am quitting ack. */
#define DLENK '\006' /* upload out of bounds NAK */
#define DLDEP '\007' /* deposit image to xinu machine*/
#define DLEXT '\010' /* extract image from " " */
#define DLSRT '\011' /* start downloaded prog w parms*/
#define DLID '\012' /* init. address info to eload */
struct dl_header { /* header for download packet */
char dl_op; /* operation, as above */
char dl_vers; /* current version no. of eload */
short dl_len; /* length of data area */
long dl_addr; /* source (dest.) memory address*/
};
struct dl_srtval {
long dl_entry; /* downloaded image entry point */
long dl_delay; /* delay time before running */
};
struct dl_pack { /* format of download packet */
struct dl_header dl_hdr; /* packet header */
union { /* either data area or register */
char dl_data[DLMAXD];/* data to store (read) to mem. */
struct dl_srtval dl_srt;/* start downloaded image parms.*/
} dl_pt;
};