;**************************************************************************
;**
;** Protocol.i
;** Copyright (c) 1995,1996 Daniel Kahlin <tlr@stacken.kth.se>
;**
;******

HEADER_TYPE	EQU	$00
HEADER_SUBTYPE	EQU	$01


HEADER_DEVICE	EQU	$04
HEADER_FILENAME	EQU	$05

;**************************************************************************
;**
;** MEMORY TRANSFER
;**
;** - WRITEMEM
;** 1. GOT WMHD
;** 2. RESPOND OK or ERROR or NOTSUPPORTED
;** 3. RECEIVE BODY (channel 1)
;** 4. RESPOND OK or ERROR
;**
;** - READMEM
;** 1. GOT RMHD
;** 2. RESPOND OK or ERROR or NOTSUPPORTED
;** 3. SEND BODY (channel 1)
;** 4. WAIT FOR OK or ERROR
;**
;** - SYS
;** 1. GOT SYHD
;** 2. RESPOND OK or ERROR or NOTSUPPORTED
;**
;** - RUN
;** 1. GOT RUHD
;** 2. RESPOND OK or ERROR or NOTSUPPORTED
;**
;******
TYPE_MEMTRANSFER	EQU	$01
;***
SUB_MT_WRITEMEM		EQU	$01
SUB_MT_READMEM		EQU	$02
SUB_MT_SYS		EQU	$03
SUB_MT_RUN		EQU	$04

WMHD_TYPE	EQU	$00
WMHD_SUBTYPE	EQU	$01
WMHD_START_L	EQU	$02
WMHD_START_H	EQU	$03
WMHD_END_L	EQU	$04
WMHD_END_H	EQU	$05

RMHD_TYPE	EQU	$00
RMHD_SUBTYPE	EQU	$01
RMHD_START_L	EQU	$02
RMHD_START_H	EQU	$03
RMHD_END_L	EQU	$04
RMHD_END_H	EQU	$05

SYHD_TYPE	EQU	$00
SYHD_SUBTYPE	EQU	$01
SYHD_PC_L	EQU	$02
SYHD_PC_H	EQU	$03
SYHD_MEMORY	EQU	$04
SYHD_SR		EQU	$05
SYHD_AC		EQU	$06
SYHD_XR		EQU	$07
SYHD_YR		EQU	$08
SYHD_SP		EQU	$09


RUHD_TYPE	EQU	$00
RUHD_SUBTYPE	EQU	$01
RUHD_LOWMEM_L	EQU	$02
RUHD_LOWMEM_H	EQU	$03
RUHD_HIMEM_L	EQU	$04
RUHD_HIMEM_H	EQU	$05


;**************************************************************************
;**
;** DISKCOMMAND
;**
;** - DIRECTORY
;** 1. GOT DRHD
;** 2. RESPOND OK or ERROR or NOTSUPPORTED
;** 3. LOAD FILE
;** 4. RESPOND OK or ERROR + FILESIZE (DRRS)
;** 5. WAIT FOR OK or ERROR
;** 6. SEND BODY (channel 1)
;** 7. WAIT FOR OK or ERROR
;**
;** - STATUS
;** 1. GOT STHD
;** 2. RESPOND OK or ERROR or NOTSUPPORTED
;** 3. WRITE ONE BLOCK ON CHANNEL 1
;** 4. WAIT FOR OK or ERROR
;**
;** - COMMAND
;** 1. GOT CMHD
;** 2. RESPOND OK or ERROR or NOTSUPPORTED
;** 3. READ ONE BLOCK ON CHANNEL 1
;** 4. RESPOND OK or ERROR or NOTSUPPORTED
;**
;******
TYPE_DISKCOMMAND	EQU	$03
;***
SUB_DC_DIRECTORY	EQU	$01
SUB_DC_STATUS		EQU	$02
SUB_DC_COMMAND		EQU	$03

DRHD_TYPE	EQU	$00
DRHD_SUBTYPE	EQU	$01
DRHD_DEVICE	EQU	HEADER_DEVICE
DRHD_FILENAME	EQU	HEADER_FILENAME

DRRS_RESPONSE	EQU	$00
DRRS_LEN_L	EQU	$01
DRRS_LEN_H	EQU	$02

STHD_TYPE	EQU	$00
STHD_SUBTYPE	EQU	$01
STHD_DEVICE	EQU	HEADER_DEVICE

CMHD_TYPE	EQU	$00
CMHD_SUBTYPE	EQU	$01
CMHD_DEVICE	EQU	HEADER_DEVICE

;**************************************************************************
;**
;** FILE TRANSFER
;**
;** - WRITEFILE
;** 1. GOT WFHD
;** 2. RESPOND OK or ERROR or NOTSUPPORTED
;** 3. RECEIVE BODY (channel 1)
;** 4. SAVE FILE
;** 5. RESPOND OK or ERROR
;**
;** - READFILE
;** 1. GOT RFHD
;** 2. RESPOND OK or ERROR or NOTSUPPORTED
;** 3. LOAD FILE
;** 4. RESPOND OK or ERROR + FILESIZE (RFRS)
;** 5. WAIT FOR OK or ERROR
;** 6. SEND BODY (channel 1)
;** 7. WAIT FOR OK or ERROR
;**
;******
TYPE_FILETRANSFER	EQU	$02

SUB_FT_WRITEFILE	EQU	$01
SUB_FT_READFILE		EQU	$02

WFHD_TYPE	EQU	$00
WFHD_SUBTYPE	EQU	$01
WFHD_LEN_L	EQU	$02
WFHD_LEN_H	EQU	$03
WFHD_DEVICE	EQU	HEADER_DEVICE
WFHD_FILENAME	EQU	HEADER_FILENAME

RFHD_TYPE	EQU	$00
RFHD_SUBTYPE	EQU	$01
RFHD_DEVICE	EQU	HEADER_DEVICE
RFHD_FILENAME	EQU	HEADER_FILENAME

RFRS_RESPONSE	EQU	$00
RFRS_LEN_L	EQU	$01
RFRS_LEN_H	EQU	$02



;**************************************************************************
;**
;** RAWDISKTRANSFER
;**
;** - WRITETRACK
;** 1. GOT WTHD
;** 2. RESPOND OK or ERROR or NOTSUPPORTED
;** 3. RECEIVE BODY (channel 1)
;** 4. WRITE TRACK
;** 5. RESPOND OK or ERROR
;**
;** - READTRACK
;** 1. GOT RTHD
;** 2. RESPOND OK or ERROR or NOTSUPPORTED
;** 3. READ TRACK
;** 4. RESPOND OK or ERROR 
;** 5. WAIT FOR OK or ERROR
;** 6. SEND BODY (channel 1)
;** 7. WAIT FOR OK or ERROR
;**
;** - WRITESECTOR
;** 1. GOT WSHD
;** 2. RESPOND OK or ERROR or NOTSUPPORTED
;** 3. RECEIVE BODY (channel 1)
;** 4. WRITE SECTOR
;** 5. RESPOND OK or ERROR
;**
;** - READSECTOR
;** 1. GOT RSHD
;** 2. RESPOND OK or ERROR or NOTSUPPORTED
;** 3. READ SECTOR
;** 4. RESPOND OK or ERROR 
;** 5. SEND BODY (channel 1)
;** 6. WAIT FOR OK or ERROR
;**
;******
TYPE_RAWDISKTRANSFER	EQU	$06

SUB_RT_WRITETRACK	EQU	$01
SUB_RT_READTRACK	EQU	$02
SUB_RT_WRITESECTOR	EQU	$03
SUB_RT_READSECTOR	EQU	$04

WTHD_TYPE	EQU	$00
WTHD_SUBTYPE	EQU	$01
WTHD_TRACK	EQU	$02
WTHD_NUMTRACKS	EQU	$03
WTHD_DEVICE	EQU	HEADER_DEVICE
WTHD_SIZEOF	EQU	$05

RTHD_TYPE	EQU	$00
RTHD_SUBTYPE	EQU	$01
RTHD_TRACK	EQU	$02
RTHD_NUMTRACKS	EQU	$03
RTHD_DEVICE	EQU	HEADER_DEVICE
RTHD_SIZEOF	EQU	$05


WSHD_TYPE	EQU	$00
WSHD_SUBTYPE	EQU	$01
WSHD_TRACK	EQU	$02
WSHD_SECTOR	EQU	$03
WSHD_DEVICE	EQU	HEADER_DEVICE
WSHD_SIZEOF	EQU	$05

RSHD_TYPE	EQU	$00
RSHD_SUBTYPE	EQU	$01
RSHD_TRACK	EQU	$02
RSHD_SECTOR	EQU	$03
RSHD_DEVICE	EQU	HEADER_DEVICE
RSHD_SIZEOF	EQU	$05



;**************************************************************************
;**
;** TESTCOMMAND
;**
;******
TYPE_TESTCOMMAND	EQU	$04

SUB_TC_BLOCKTEST	EQU	$01
SUB_TC_FILETEST		EQU	$02

BTHD_TYPE	EQU	$00
BTHD_SUBTYPE	EQU	$01

FTHD_TYPE	EQU	$00
FTHD_SUBTYPE	EQU	$01
FTHD_LEN_L	EQU	$02
FTHD_LEN_H	EQU	$03

FTRS_RESPONSE	EQU	$00
FTRS_LEN_L	EQU	$01
FTRS_LEN_H	EQU	$02





;**************************************************************************
;**
;** SERVER PROTOCOL
;**
;** - LOAD
;** 1. SEND SRVLDHD
;** 2. WAIT FOR RESPONSE (OK, NOTSUPPORTED, STRING)+ filelen (SRVLDRS)
;** 3. RESPOND OK or ERROR + newstart (SRVLDRS2)
;** 4. RECEIVE BODY (channel 1)
;** 5. RESPOND OK or ERROR
;**
;** - SAVE
;** 1. SEND SRVSVHD
;** 2. WAIT FOR RESPONSE (OK, NOTSUPPORTED, STRING)
;** 3. SEND BODY (channel 1)
;** 4. WAIT FOR RESPONSE (OK, NOTSUPPORTED, STRING)
;**
;** - COMMAND
;** 1. SEND SRVCMHD
;** 2. WAIT FOR RESPONSE (OK, NOTSUPPORTED, STRING)
;** 3. WAIT FOR RESPONSE (OK, NOTSUPPORTED, STRING)
;**
;** - READSTRING
;** 1. SEND SRVRSHD
;** 2. WAIT FOR RESPONSE (OK, NOTSUPPORTED, STRING)+ rows (SRVRSRS)
;** 3. SEND OK
;** 4. RECEIVE BODY (channel 1)
;**
;******
TYPE_SERVER		EQU	$05

SUB_SRV_LOAD		EQU	$01
SUB_SRV_SAVE		EQU	$02
SUB_SRV_COMMAND		EQU	$03
SUB_SRV_READSTRING	EQU	$04


SRVHD_FILENAME	EQU	$06



SRVLDHD_TYPE	EQU	$00
SRVLDHD_SUBTYPE	EQU	$01
SRVLDHD_FILENAME	EQU	SRVHD_FILENAME
SRVLDHD_SIZEOF	EQU	$46

SRVLDRS_RESPONSE	EQU	$00
SRVLDRS_START_L	EQU	$01
SRVLDRS_START_H	EQU	$02
SRVLDRS_END_L	EQU	$03
SRVLDRS_END_H	EQU	$04

SRVLDRS2_RESPONSE	EQU	$00
SRVLDRS2_START_L	EQU	$01
SRVLDRS2_START_H	EQU	$02
SRVLDRS2_SIZEOF		EQU	$03

SRVSVHD_TYPE	EQU	$00
SRVSVHD_SUBTYPE	EQU	$01
SRVSVHD_START_L	EQU	$02
SRVSVHD_START_H	EQU	$03
SRVSVHD_END_L	EQU	$04
SRVSVHD_END_H	EQU	$05
SRVSVHD_FILENAME	EQU	SRVHD_FILENAME
SRVSVHD_SIZEOF	EQU	$46


SRVCMHD_TYPE	EQU	$00
SRVCMHD_SUBTYPE	EQU	$01
SRVCMHD_COMMAND	EQU	SRVHD_FILENAME
SRVCMHD_SIZEOF	EQU	$46

SRVRSHD_TYPE	EQU	$00
SRVRSHD_SUBTYPE	EQU	$01
SRVRSHD_WIDTH	EQU	$02
SRVRSHD_HEIGHT	EQU	$03
SRVRSHD_SIZEOF	EQU	$04

SRVRSRS_RESPONSE	EQU	$00
SRVRSRS_ROWS		EQU	$01


;**************************************************************************
;**
;** RESPONSE CODES
;**
;******
RESP_OK			EQU	$80
RESP_NOTSUPPORTED	EQU	$81
RESP_ERROR		EQU	$82
RESP_STRING		EQU	$83
