/***********************************************************************
;*	File Name : SCRIPTS.H					       *
;*	Description:SCRIPT language for NCR53c825A,875 SCRIPT processor*
;*								       *
;***********************************************************************

;==========================================================
; NCR 53C810,53C815,53C820,53C825,53C825A,53C860,53C875
; Script language definition for assembly programming
;==========================================================

;==========================================================
;	DMA Command
;==========================================================
*/
#define DCMD_BLOCK_MOVE      0
#define DCMD_IO 	    0x040000000  /*;BIT30 */
#define DCMD_RD_WRT	    0x040000000  /*;BIT30 */
#define DCMD_XFER_CTRL	    0x080000000  /*;BIT31 */
#define DCMD_MEM_MOVE	    0x0C0000000  /*;(BIT31+BIT30) */
#define DCMD_LOAD_STORE     0x0E0000000  /*;(BIT31+BIT30+BIT29) */
/*;==========================================================*/
#define INDIRECT_ADDR	     0x20000000  /*;BIT29 */
#define TABLE_INDIRECT	     0x10000000  /*;BIT28 */
#define BLOCK_MOVE	     0x08000000  /*;BIT27 */
#define CHAIN_MOVE	     0
/*; SCSI phase definition */
#define DATA_OUT_	     0x00000000  /*;data out phase */
#define DATA_IN_	     0x01000000  /*;BIT24	    ; data in phase */
#define COMMAND_	     0x02000000  /*;BIT25	    ; command phase */
#define STATUS_ 	     0x03000000  /*;(BIT25+BIT24)   ; status phase */
#define RESERVED_OUT	     0x04000000  /*;BIT26 */
#define RESERVED_IN	     0x05000000  /*;(BIT26+BIT24) */
#define MSG_OUT_	     0x06000000  /*;(BIT26+BIT25)   ; message in phase */
#define MSG_IN_ 	     0x07000000  /*;(BIT26+BIT25+BIT24);message out phase */
/*;----------------------------------------------------------*/
#define DCMD_SELECT	     0x40000000  /*;DCMD_IO+0 */
#define DCMD_SELECT_ATN      0x41000000  /*;(DCMD_IO+BIT24) */
#define DCMD_WAIT_DISC	     0x48000000  /*;(DCMD_IO+BIT27) */
#define DCMD_WAIT_RESEL      0x50000000  /*;(DCMD_IO+BIT28) */
#define DCMD_SET_CARRY	     0x58000400  /*;(DCMD_IO+BIT28+BIT27+BIT10) */
#define DCMD_SET_ACK	     0x58000040  /*;(DCMD_IO+BIT28+BIT27+BIT6) */
#define DCMD_SET_ATN	     0x58000008  /*;(DCMD_IO+BIT28+BIT27+BIT3) */
#define DCMD_CLR_CARRY	     0x60000400  /*;(DCMD_IO+BIT29+BIT10) */
#define DCMD_CLR_ACK	     0x60000040  /*;(DCMD_IO+BIT29+BIT6) */
#define DCMD_CLR_ATN	     0x60000008  /*;(DCMD_IO+BIT29+BIT3) */
#define RELATIVE_ADDR	     0x04000000  /*;BIT26 */
#define IO_TABLE_INDIR	     0x02000000  /*;BIT25 */
/*;----------------------------------------------------------*/
#define MOVE_FROM_SFBR	     0x68000000  /*;(DCMD_RD_WRT+BIT29+BIT27) */
#define MOVE_TO_SFBR	     0x70000000  /*;(DCMD_RD_WRT+BIT29+BIT28) */
#define RD_MODIFY_WRT	     0x78000000  /*;(DCMD_RD_WRT+BIT29+BIT28+BIT27) */
#define OP_MOVE_DATA	     0
#define OP_SHIFT_LEFT_C      0x01000000  /*;BIT24 */
#define OP_OR		     0x02000000  /*;BIT25 */
#define OP_XOR		     0x03000000  /*;(BIT25+BIT24) */
#define OP_AND		     0x04000000  /*;BIT26 */
#define OP_SHIFT_RIGHT_C     0x05000000  /*;(BIT26+BIT24) */
#define OP_ADD_DATA	     0x06000000  /*;(BIT26+BIT25) */
#define OP_ADD_DATA_C	     0x07000000  /*;(BIT26+BIT25+BIT24) */
#define USE_SFBR	     0x00800000  /*;BIT23 */
/*;----------------------------------------------------------*/
#define DCMD_JUMP	     0x80000000  /*;DCMD_XFER_CTRL+0 */
#define DCMD_CALL	     0x88000000  /*;(DCMD_XFER_CTRL+BIT27) */
#define DCMD_RETURN	     0x90000000  /*;(DCMD_XFER_CTRL+BIT28) */
#define DCMD_INT	     0x98000000  /*;(DCMD_XFER_CTRL+BIT28+BIT27) */
#define RELATIVE_	     0x00800000  /*;BIT23 */
#define IF_CARRY	     0x00200000  /*;BIT21 */
#define INT_ON_FLY_	     0x00100000  /*;BIT20 */
#define IF_TRUE 	     0x00080000  /*;BIT19 */
#define IF_NOT		     0
#define DATA_CMP	     0x00040000  /*;BIT18 */
#define PHASE_CMP	     0x00020000  /*;BIT17 */
#define WAIT_PHASE_VALID     0x00010000  /*;BIT16 */
/*;----------------------------------------------------------*/
#define DSA_RELATIVE	     0x10000000  /*;BIT28 */
#define FLUSH_PREFETCH	     0x02000000  /*;BIT25 */
#define DCMD_LOAD	    0x0E1000000  /*;(DCMD_LOAD_STORE+BIT24) */
#define DCMD_STORE	    0x0E0000000  /*;DCMD_LOAD_STORE */
/*
;==========================================================
; SCSI message EQUATES
;==========================================================
*/
#define CMD_COMPLETE	     0
#define EXT_MSG 	     1
#define SAVE_PTR	     2
#define RESTORE_PTR	     3
#define DISCONNECTMSG	     4
#define INITIATOR_ERR	     5
#define ABORTMSG	     6
#define MSG_REJECT	     7
#define NOPMSG		     8
#define MSG_PARITY	     9
#define LINK_CMD_CPL	     0x0a
#define LINK_CMD_FLAG	     0x0b
#define RESET_DEVICE	     0x0c
#define IDENTIFYMSG	     0x80
#define SIMPLE_TAG	     0x20
#define IGNORE_WIDE_RES      0x23
/*
;==========================================================
; Operation assumption
; 1. If phase mismatch during Xfer PAD ==> do nothing
;    Else compute FIXUP needed
; 2. After phase mismatch ==> Set to Xfer PAD
; 3. At disconnection ==> Modify return address
; 4. 1st restore ptr after reselection is ignored
; 5. If Xfer PAD is done ==> Error
;==========================================================
*/
/*	static	start_script
	static	reselected
	static	reselecttag
	static	select0
	static	select1
	static	check_phase
	static	status1_phase
	static	command_phase
	static	jump_table0
	static	jump_tableB
	static	din_phase
	static	din_phaseB
	static	din_pad_0
	static	din_pad_addrB
	static	dout_phase
	static	dout_phaseB
	static	dout_pad_0
	static	dout_pad_addrB
	static	jump_tablew
	static	jump_tableW
	static	din_phase1
	static	din_phaseW
	static	din_pad_1
	static	din_pad_addrW
	static	dout_phase1
	static	dout_phaseW
	static	dout_pad_1
	static	dout_pad_addrW
	static	mout_phase
	static	status_phase
	static	min_phase
	static	set_atn
	static	clr_atn
	static	end_script
	static	start_mov
	static	SrcPhysAddr
	static	DesPhysAddr
*/
ULONG  start_script[]={
/*
;==========================================================
; Wait for reselection
;==========================================================
*/
	DCMD_WAIT_RESEL
	};
ULONG  jmp_select0[]={
	0	/* offset select0 */
	};
ULONG  reselected[]={
	RD_MODIFY_WRT+OP_OR+0x200+0x340000, /* (2 shl 8) or (__scratcha shl 16) */
	0,

	DCMD_INT+WAIT_PHASE_VALID+IF_NOT+PHASE_CMP+MSG_IN_,
	__RESELECTED,

	BLOCK_MOVE+MSG_IN_+1	/* ;move in ID byte */
	};
ULONG  ACB_msgin123_1[]={
	0,	/* offset ACB.msgin123,*/

	DCMD_INT+IF_TRUE,
	__RESELECTED1
	};
ULONG  reselecttag[]={
	DCMD_CLR_ACK,
	0,

	BLOCK_MOVE+MSG_IN_+2	/* ;move 2 msg bytes */
	};
ULONG  ACB_msgin123_2[]={
	0,	/* offset ACB.msgin123,*/

	DCMD_INT+IF_TRUE,
	__RESELECTEDT
	};
/*
;==========================================================
; Select
; Case 1 : Only identify message is to be sent
; Case 2 : Synchronous negotiation is requested
;==========================================================
*/
ULONG  select0[]={
	DCMD_INT+IF_TRUE,
	__SIGNAL
	};
ULONG  select1[]={		   /* ; Select with ATN */

	DCMD_SELECT_ATN+IO_TABLE_INDIR	/* +offset SRB.__select ;4200h or 0100H */
	};
ULONG  jmp_reselected[]={
	0,	/* offset reselected, */

	DCMD_JUMP+WAIT_PHASE_VALID+IF_NOT+PHASE_CMP+MSG_OUT_
	};
ULONG  jmp_check_phase[]={
	0,	/* offset check_phase, */

	TABLE_INDIRECT+BLOCK_MOVE+MSG_OUT_
	};
ULONG  SRB_msgout0[]={
	0	/* offset SRB.__msgout0 */
	};
ULONG  check_phase[]={
	DCMD_RETURN+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,

	DCMD_RETURN+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0
	};
ULONG  status1_phase[]={
	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+STATUS_
	};
ULONG  jmp_status_phase[]={
	0,	/* offset status_phase,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+COMMAND_
	};
ULONG  jmp_command_phase[]={
	0,	/* offset command_phase, */

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+MSG_IN_
	};
ULONG  jmp_min_phase[]={
	0,	/* offset min_phase,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+MSG_OUT_
	};
ULONG  jmp_mout_phase[]={
	0,	/* offset mout_phase,*/

	DCMD_INT+IF_TRUE,
	__FATALERROR
	};
/*
;==========================================================
; Command phase
;==========================================================
*/
ULONG  command_phase[]={
	DCMD_CLR_ATN,
	0,
	TABLE_INDIRECT+BLOCK_MOVE+COMMAND_
	};
ULONG  SRB_command[]={
	0,	/* offset SRB.__command,*/

	DCMD_JUMP+IF_TRUE
	};
ULONG  jmp_check_phase1[]={
	0	/* offset check_phase */
	};
/*
;==========================================================
; Data phase jump table for 8 bit operation
;==========================================================
*/
ULONG  jmp_dio_phaseB[]={
	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   0,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseB+  0,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   8,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseB+  8,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   16,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseB+  16,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   24,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseB+  24,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   32,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseB+  32,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   40,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseB+  40,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   48,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseB+  48,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   56,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseB+  56,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   64,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseB+  64,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   72,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseB+  72,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   80,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseB+  80,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   88,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseB+  88,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   96,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseB+  96,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   104,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseB+  104,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   112,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseB+  112,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   120,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseB+  120,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   0,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseB+  0,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   8,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseB+  8,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   16,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseB+  16,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   24,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseB+  24,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   32,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseB+  32,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   40,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseB+  40,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   48,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseB+  48,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   56,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseB+  56,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   64,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseB+  64,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   72,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseB+  72,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   80,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseB+  80,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   88,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseB+  88,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   96,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseB+  96,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   104,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseB+  104,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   112,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseB+  112,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   120,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseB+  120,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseB+   128,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0   /* offset dout_phaseB+  128 */
	};
ULONG  jump_table0[]={
	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_
	};
ULONG  jmp_din_pad_0[]={
	0,	/* offset din_pad_0,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_
	};
ULONG  jmp_dout_pad_0[]={
	0	/* offset dout_pad_0 */
	};

#define jump_tableB	jump_table0
/*
;==========================================================
; Data in phase
;==========================================================
*/
ULONG  din_phaseB[]={
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment0,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment1,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment2,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment3,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment4,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment5,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment6,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment7,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment8,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment9,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment10,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment11,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment12,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment13,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment14,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment15,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment0,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment1,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment2,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment3,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment4,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment5,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment6,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment7,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment8,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment9,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment10,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment11,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment12,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment13,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment14,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment15,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_,
	0, /* offset SRB.Segment16,*/

	RD_MODIFY_WRT+OP_OR+0x100+0x340000, /*;(1 shl 8) or (__scratcha shl 16)*/
	0,

	DCMD_JUMP+WAIT_PHASE_VALID+IF_NOT+PHASE_CMP+DATA_IN_
	};
ULONG  jmp_status1_phase[]={
	0	/* offset status1_phase */
	};

#define din_phase	din_phaseB

ULONG  din_pad_0[]={
	RD_MODIFY_WRT+OP_OR+0x340000+0x400,  /*;(4 shl 8) or (__scratcha shl 16)*/
	0
	};
ULONG  din_pad_addrB[]={
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_IN_
	};
ULONG  SRB_SegmentPad[]={
	0,	/* offset SRB.SegmentPad,*/

	DCMD_JUMP+IF_TRUE
	};
ULONG  jmp_din_pad_addrB[]={
	0	/* offset din_pad_addrB */
	};
/*
;==========================================================
; Data out phase
;==========================================================
*/
ULONG  dout_phaseB[]={
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment0,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment1,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment2,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment3,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment4,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment5,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment6,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment7,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment8,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment9,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment10,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment11,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment12,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment13,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment14,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment15,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment0,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment1,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment2,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment3,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment4,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment5,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment6,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment7,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment8,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment9,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment10,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment11,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment12,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment13,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment14,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment15,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment16,*/

	RD_MODIFY_WRT+OP_OR+0x100+0x340000, /*;(1 shl 8) or (__scratcha shl 16)*/
	0,

	DCMD_JUMP+WAIT_PHASE_VALID+IF_NOT+PHASE_CMP+DATA_OUT_
	};
ULONG  jmp_status1_phase1[]={
	0	/* offset status1_phase */
	};

#define dout_phase	dout_phaseB

ULONG  dout_pad_0[]={
	RD_MODIFY_WRT+OP_OR+0x340000+0x400, /*;(4 shl 8) or (__scratcha shl 16)*/
	0
	};
ULONG  dout_pad_addrB[]={
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_
	};
ULONG  SRB_SegmentPad1[]={
	0,	/* offset SRB.SegmentPad,*/

	DCMD_JUMP+IF_TRUE
	};
ULONG  jmp_dout_pad_addrB[]={
	0	/* offset dout_pad_addrB */
	};
/*
;==========================================================
; Data phase jump table for WIDE SCSI operation
;==========================================================
*/
ULONG  jmp_dio_phaseW[]={

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+   0,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseW+  0,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+   8,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseW+  8,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+  16,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseW+ 16,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+  24,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseW+ 24,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+  32,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseW+ 32,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+  40,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseW+ 40,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+  48,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseW+ 48,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+  56,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseW+ 56,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+  64,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseW+ 64,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+  72,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseW+ 72,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+  80,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseW+ 80,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+  88,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseW+ 88,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+  96,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseW+ 96,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+  104,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseW+ 104,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+  112,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseW+ 112,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+  120,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseW+ 120,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+   0,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseW+  0,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+   8,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseW+  8,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+  16,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseW+ 16,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+  24,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseW+ 24,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+  32,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseW+ 32,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+  40,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseW+ 40,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+  48,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseW+ 48,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+  56,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseW+ 56,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+  64,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseW+ 64,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+  72,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseW+ 72,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+  80,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseW+ 80,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+  88,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseW+ 88,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+  96,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseW+ 96,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+  104,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseW+ 104,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+  112,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseW+ 112,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+  120,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0,  /* offset dout_phaseW+ 120,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_,
	0,  /* offset din_phaseW+  128,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_,
	0   /* offset dout_phaseW+ 128 */
	};
ULONG  jump_tablew[]={
	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_IN_
	};
ULONG  jmp_din_pad_1[]={
	0,	/* offset din_pad_1,*/

	DCMD_JUMP+WAIT_PHASE_VALID+IF_TRUE+PHASE_CMP+DATA_OUT_
	};
ULONG  jmp_dout_pad_1[]={
	0	/* offset dout_pad_1 */
	};

#define jump_tableW	jump_tablew
/*
;==========================================================
; Data in phase
;==========================================================
*/
ULONG  din_phaseW[]={
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment0,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment1,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment2,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment3,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment4,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment5,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment6,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment7,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment8,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment9,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment10,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment11,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment12,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment13,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment14,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment15,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment0,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment1,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment2,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment3,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment4,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment5,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment6,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment7,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment8,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment9,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment10,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment11,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment12,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment13,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment14,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment15,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_,
	0, /* offset SRB.Segment16,*/

	RD_MODIFY_WRT+OP_OR+0x340000+0x100, /*;(1 shl 8) or (__scratcha shl 16)*/
	0,

	DCMD_JUMP+WAIT_PHASE_VALID+IF_NOT+PHASE_CMP+DATA_IN_
	};
ULONG  jmp_status1_phase2[]={
	0	/* offset status1_phase */
	};

#define din_phase1	din_phaseW

ULONG  din_pad_1[]={
	RD_MODIFY_WRT+OP_OR+0x340000+0x400, /*;(4 shl 8) or (__scratcha shl 16)*/
	0
	};
ULONG  din_pad_addrW[]={
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_IN_
	};
ULONG  SRB_SegmentPad2[]={
	0,	/* offset SRB.SegmentPad,*/

	DCMD_JUMP+IF_TRUE
	};
ULONG  jmp_din_pad_addrW[]={
	0	/* offset din_pad_addrW */
	};
/*
;==========================================================
; Data out phase
;==========================================================
*/
ULONG  dout_phaseW[]={
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment0,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment1,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment2,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment3,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment4,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment5,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment6,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment7,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment8,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment9,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment10,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment11,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment12,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment13,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment14,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment15,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment0,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment1,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment2,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment3,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment4,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment5,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment6,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment7,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment8,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment9,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment10,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment11,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment12,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment13,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment14,*/
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+CHAIN_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment15,*/
/*;	18000000h or DATA_OUT_ */
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_,
	0, /* offset SRB.Segment16,*/

	RD_MODIFY_WRT+OP_OR+0x340000+0x100, /*;(1 shl 8) or (__scratcha shl 16)*/
	0,

	DCMD_JUMP+WAIT_PHASE_VALID+IF_NOT+PHASE_CMP+DATA_OUT_
	};
ULONG  jmp_status1_phase3[]={
	0	/* offset status1_phase */
	};

#define dout_phase1	dout_phaseW

ULONG  dout_pad_1[]={
	RD_MODIFY_WRT+OP_OR+0x340000+0x400, /*;(4 shl 8) or (__scratcha shl 16)*/
	0
	};
ULONG  dout_pad_addrW[]={
	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+DATA_OUT_
	};
ULONG  SRB_SegmentPad3[]={
	0,	/* offset SRB.SegmentPad,*/

	DCMD_JUMP+IF_TRUE
	};
ULONG  jmp_dout_pad_addrW[]={
	0	/* offset dout_pad_addrW */
	};
/*
;==========================================================
; message out phase
;==========================================================
*/
ULONG  mout_phase[]={
	DCMD_SET_ATN,
	0,

	DCMD_BLOCK_MOVE+TABLE_INDIRECT+BLOCK_MOVE+MSG_OUT_
	};
ULONG  SRB_msgout01[]={
	0,	/* offset SRB.__msgout0,*/

	DCMD_JUMP+IF_TRUE
	};
ULONG  jmp_check_phase2[]={
	0	/* offset check_phase */
	};
/*
;==========================================================
; Status phase process
;==========================================================
*/
ULONG  status_phase[]={
	DCMD_BLOCK_MOVE+BLOCK_MOVE+STATUS_+1
	};
ULONG  ACB_status[]={
	0	/* offset ACB.status */
	};
/*
;==========================================================
; message in phase
;==========================================================
*/
ULONG  min_phase[]={
	DCMD_BLOCK_MOVE+BLOCK_MOVE+MSG_IN_+1
	};
ULONG  ACB_msgin123_3[]={
	0,	/* offset ACB.msgin123,*/

	DCMD_JUMP+IF_NOT+DATA_CMP+CMD_COMPLETE
	};
ULONG  jmp_jump_msgok[]={
	0	/* offset jump_msgok */
	};
/*
;==========================================================
; command complete message
;==========================================================
*/
ULONG  msg__0[]={
	RD_MODIFY_WRT+OP_AND+0x20000+0x7F00, /*;(7FH shl 8) or (__scntl2 shl 16)*/
	0,

	DCMD_CLR_ACK,
	0,

	DCMD_WAIT_DISC,
	0,

	DCMD_INT+IF_TRUE,
	__COMPLETE
	};
/*
;==========================================================
; Other message
;==========================================================
*/
ULONG  jump_msgok[]={
	DCMD_JUMP+IF_TRUE+DATA_CMP+SAVE_PTR
	};
ULONG  jmp_msg__a[]={
	0,	/* offset msg__a,*/

	DCMD_JUMP+IF_TRUE+DATA_CMP+RESTORE_PTR
	};
ULONG  jmp_msg__3[]={
	0,	/* offset msg__3,*/

	DCMD_JUMP+IF_TRUE+DATA_CMP+DISCONNECTMSG
	};
ULONG  jmp_msg__4[]={
	0,	/* offset msg__4,*/

	DCMD_JUMP+IF_TRUE+DATA_CMP+EXT_MSG
	};
ULONG  jmp_msg__1[]={
	0,	/* offset msg__1,*/

	DCMD_INT+IF_TRUE+DATA_CMP+MSG_REJECT,
	__MSGREJECT,

	DCMD_JUMP+IF_TRUE+DATA_CMP+LINK_CMD_CPL
	};
ULONG  jmp_msg__a1[]={
	0,	/* offset msg__a,*/

	DCMD_JUMP+IF_TRUE+DATA_CMP+LINK_CMD_FLAG
	};
ULONG  jmp_msg__a2[]={
	0,	/* offset msg__a,*/

	DCMD_JUMP+IF_TRUE+DATA_CMP+IGNORE_WIDE_RES
	};
ULONG  jmp_msg__23[]={
	0,	/* offset msg__23,*/

	DCMD_INT+IF_TRUE,
	__MSGUNKNOWN
	};
/*
;==========================================================
; Extended message
;==========================================================
*/
ULONG  msg__1[]={
	DCMD_CLR_ACK,
	0,

	DCMD_BLOCK_MOVE+BLOCK_MOVE+MSG_IN_+1   /*  ;ext msg len */
	};
ULONG  ACB_msgin123_4[]={
	0,	/* offset ACB.msgin123,*/

	DCMD_JUMP+IF_TRUE+DATA_CMP+3
	};
ULONG  jmp_msg___3[]={
	0,	/* offset msg___3,*/

	DCMD_JUMP+IF_TRUE+DATA_CMP+2
	};
ULONG  jmp_msg___2[]={
	0,	/* offset msg___2,*/

	DCMD_INT+IF_TRUE,
	__MSGEXTEND
	};

ULONG  msg___3[]={
	DCMD_CLR_ACK,
	0,

	DCMD_BLOCK_MOVE+BLOCK_MOVE+MSG_IN_+3
	};
ULONG  ACB_msgin123_5[]={
	0,	/* offset ACB.msgin123,*/

	DCMD_INT+IF_TRUE,
	__MSGSYNC
	};

ULONG  msg___2[]={
	DCMD_CLR_ACK,
	0,

	DCMD_BLOCK_MOVE+BLOCK_MOVE+MSG_IN_+2
	};
ULONG  ACB_msgin123_6[]={
	0,	/* offset ACB.msgin123,*/

	DCMD_INT+IF_TRUE,
	__MSGWIDE
	};
/*
;############################################################
; for synchronous negotiation
; 1. Active  ==> INT3, restart at data__1_2
; 2. Passive ==> INT3, prepare message out, restart at data__1_1
; 3. Disable ==> INT3, prepare message out, restart at data__1_1
;############################################################
*/
ULONG  set_atn[]={
	DCMD_SET_ATN,
	0
	};
ULONG  msg__a[]={
	DCMD_CLR_ACK,
	0,

	DCMD_JUMP+IF_TRUE
	};
ULONG  jmp_check_phase3[]={
	0	/* offset check_phase */
	};

ULONG  msg__23[]={	   /*	 ; ignore wide residue */
	DCMD_CLR_ACK,
	0,

	DCMD_BLOCK_MOVE+BLOCK_MOVE+MSG_IN_+1
	};
ULONG  ACB_msgin123_7[]={
	0,	/* offset ACB.msgin123,*/

	DCMD_CLR_ACK,
	0,

	DCMD_JUMP+IF_TRUE
	};
ULONG  jmp_check_phase4[]={
	0	/* offset check_phase */
	};

ULONG  msg__3[]={
	DCMD_CLR_ACK,
	0,

	DCMD_JUMP+IF_TRUE
	};
ULONG  jmp_check_phase5[]={
	0	/* offset check_phase */
	};

ULONG  msg__4[]={	   /*	 ; disconnect */
	RD_MODIFY_WRT+OP_AND+0x20000+0x7F00, /*;(7FH shl 8) or (__scntl2 shl 16)*/
	0,

	DCMD_CLR_ACK,
	0,

	DCMD_WAIT_DISC,
	0,

	DCMD_INT+IF_TRUE,
	__DISCONNECTED
	};

ULONG  clr_atn[]={
	DCMD_CLR_ATN,
	0,

	DCMD_JUMP+IF_TRUE
	};
ULONG  jmp_check_phase6[]={
	0	/* offset check_phase */
	};
/*
;==========================================================
; Used for script operation
;==========================================================
*/
ULONG  start_mov[]={
/*;	  DCMD_MEM_MOVE+(OFFSET DGROUP:end_script - OFFSET DGROUP:start_script)   ;Memory move SCRIPTS instruction*/
	DCMD_MEM_MOVE+0x1000	  /*;Memory move SCRIPTS instruction ( 4K )*/
	};
ULONG  SrcPhysAddr[]={
	0		/*; source */
	};
ULONG  DesPhysAddr[]={
	0,		/*; destination */

	DCMD_INT+IF_TRUE, /*; script interrupt, */
	0,

	DCMD_INT+IF_NOT,  /*; script interrupt */
	0
	};
ULONG  end_script[]={0};
/***********************************************************************/