diff -rc linux.torvalds/arch/alpha/Makefile linux/arch/alpha/Makefile
*** linux.torvalds/arch/alpha/Makefile	Mon Jan 16 10:06:34 1995
--- linux/arch/alpha/Makefile	Fri May  5 01:27:17 1995
***************
*** 10,17 ****
  
  NM := nm -B
  
! LINKFLAGS = -non_shared -T 0xfffffc0000310000 -N
! CFLAGS := $(CFLAGS) -mno-fp-regs
  
  HEAD := arch/alpha/kernel/head.o
  
--- 10,17 ----
  
  NM := nm -B
  
! LINKFLAGS = -T arch/alpha/linux.ld -N
! CFLAGS := $(CFLAGS) -DPREDEFINED_ROOT_DEV=0x815 -mno-fp-regs
  
  HEAD := arch/alpha/kernel/head.o
  
diff -rc linux.torvalds/arch/alpha/boot/Makefile linux/arch/alpha/boot/Makefile
*** linux.torvalds/arch/alpha/boot/Makefile	Mon Jan 23 05:32:13 1995
--- linux/arch/alpha/boot/Makefile	Fri May  5 01:23:42 1995
***************
*** 25,32 ****
  	@echo run mkfloppy on machine with floppy drive
  
  msb:	tools/lxboot tools/bootlx vmlinux
! 	( cat tools/lxboot tools/bootlx vmlinux ) > /dev/rz0a
! 	disklabel -rw rz0 'linux' tools/lxboot tools/bootlx
  
  vmlinux: tools/build $(TOPDIR)/vmlinux
  	tools/build -v $(TOPDIR)/vmlinux > vmlinux
--- 25,32 ----
  	@echo run mkfloppy on machine with floppy drive
  
  msb:	tools/lxboot tools/bootlx vmlinux
! 	( cat tools/lxboot tools/bootlx vmlinux ) > /dev/rz1a
! 	disklabel -rw rz1 'linux' tools/lxboot tools/bootlx
  
  vmlinux: tools/build $(TOPDIR)/vmlinux
  	tools/build -v $(TOPDIR)/vmlinux > vmlinux
diff -rc linux.torvalds/arch/alpha/kernel/bios32.c linux/arch/alpha/kernel/bios32.c
*** linux.torvalds/arch/alpha/kernel/bios32.c	Sun Apr 16 03:36:24 1995
--- linux/arch/alpha/kernel/bios32.c	Thu May  4 20:06:59 1995
***************
*** 475,478 ****
--- 475,504 ----
  	return mem_start;
  }
  
+ char *pcibios_strerror (int error)
+ {
+ 	static char buf[80];
+ 
+ 	switch (error) {
+ 		case PCIBIOS_SUCCESSFUL:
+ 			return "SUCCESSFUL";
+ 
+ 		case PCIBIOS_FUNC_NOT_SUPPORTED:
+ 			return "FUNC_NOT_SUPPORTED";
+ 
+ 		case PCIBIOS_BAD_VENDOR_ID:
+ 			return "SUCCESSFUL";
+ 
+ 		case PCIBIOS_DEVICE_NOT_FOUND:
+ 			return "DEVICE_NOT_FOUND";
+ 
+ 		case PCIBIOS_BAD_REGISTER_NUMBER:
+ 			return "BAD_REGISTER_NUMBER";
+ 
+ 		default:
+ 			sprintf (buf, "UNKNOWN RETURN 0x%x", error);
+ 			return buf;
+ 	}
+ }
+ 
  #endif /* CONFIG_PCI */
diff -rc linux.torvalds/arch/alpha/kernel/setup.c linux/arch/alpha/kernel/setup.c
*** linux.torvalds/arch/alpha/kernel/setup.c	Sun Apr 16 04:37:58 1995
--- linux/arch/alpha/kernel/setup.c	Fri May  5 01:26:21 1995
***************
*** 93,99 ****
--- 93,103 ----
  
  	set_hae(hae.cache);		/* sync HAE register w/hae_cache */
  
+ #ifdef PREDEFINED_ROOT_DEV
+ 	ROOT_DEV = PREDEFINED_ROOT_DEV;
+ #else
  	ROOT_DEV = 0x0802;		/* sda2 */
+ #endif
  #ifndef CONFIG_PCI
  	aux_device_present = 0xaa;
  #else
diff -rc linux.torvalds/arch/alpha/linux.ld linux/arch/alpha/linux.ld
*** linux.torvalds/arch/alpha/linux.ld	Fri May  5 01:43:56 1995
--- linux/arch/alpha/linux.ld	Thu May  4 19:38:26 1995
***************
*** 0 ****
--- 1,49 ----
+ OUTPUT_FORMAT("ecoff-littlealpha")
+ ENTRY(__start)
+ SECTIONS
+ {
+   .text  0xfffffc0000310000: {
+      _FTEXT = . ;
+      __istart = . ;
+      *(.init) 
+      eprol  =  .;
+     *(.text)
+      __fstart = . ;
+      *(.fini)
+      _ETEXT  =  .;
+   }
+   .rdata  . : {
+     *(.rdata)
+   }
+   .pdata . : {
+      _fpdata = .;
+     *(.pdata)
+   }
+   .data  . : {
+      _FDATA = .;
+     *(.data)
+     CONSTRUCTORS
+   }
+   .xdata . : {
+     *(.xdata)
+   }
+    _gp = ALIGN (8) + 0x8000;
+   .lit8  . : {
+     *(.lit8)
+   }
+   .lita  . : {
+     *(.lita)
+   }
+    _EDATA  =  .;
+    _FBSS = .;
+   .sbss  . : {
+     *(.sbss)
+     *(.scommon)
+   }
+   .bss  . : {
+     *(.bss)
+     *(COMMON)
+   }
+    _END = .;
+    _end = .;
+ }
diff -rc linux.torvalds/drivers/scsi/53c7,8xx.scr linux/drivers/scsi/53c7,8xx.scr
*** linux.torvalds/drivers/scsi/53c7,8xx.scr	Tue May  2 12:19:23 1995
--- linux/drivers/scsi/53c7,8xx.scr	Thu May  4 23:45:57 1995
***************
*** 52,58 ****
  ;
  ; While the NCR53c700 and NCR53c700-66 lacked the facilities to fully
  ; automate SCSI transfers without host processor intervention, this 
! ; isn't the case with the NCR53c710 and newer chips which allow 
  ;
  ; - reads and writes to the internal registers from within the SCSI
  ; 	scripts, allowing the SCSI SCRIPTS(tm) code to save processor
--- 52,58 ----
  ;
  ; While the NCR53c700 and NCR53c700-66 lacked the facilities to fully
  ; automate SCSI transfers without host processor intervention, this 
! ; is not the case with the NCR53c710 and newer chips which allow 
  ;
  ; - reads and writes to the internal registers from within the SCSI
  ; 	scripts, allowing the SCSI SCRIPTS(tm) code to save processor
***************
*** 67,73 ****
  ; where the same piece of code is run to handle I/O for multiple threads
  ; at once minimizing our need to relocate code.  Since the NCR53c700/
  ; NCR53c800 series have a unique combination of features, making a 
! ; a standard ingoing/outgoing mailbox system, costly, I've modified it.
  ;
  ; - Commands are stored in a linked list, rather than placed in 
  ; 	arbitrary mailboxes.  This simplifies the amount of processing
--- 67,73 ----
  ; where the same piece of code is run to handle I/O for multiple threads
  ; at once minimizing our need to relocate code.  Since the NCR53c700/
  ; NCR53c800 series have a unique combination of features, making a 
! ; a standard ingoing/outgoing mailbox system, costly, I modified it.
  ;
  ; - Commands are stored in a linked list, rather than placed in 
  ; 	arbitrary mailboxes.  This simplifies the amount of processing
***************
*** 189,195 ****
  ; 4 	testing interrupt 
  ; Next byte indicates specific error
  
! ; XXX not yet implemented, I'm not sure if I want to - 
  ; Next byte indicates the routine the error occurred in
  ; The LSB indicates the specific place the error occurred
   
--- 189,195 ----
  ; 4 	testing interrupt 
  ; Next byte indicates specific error
  
! ; XXX not yet implemented, I am not sure if I want to - 
  ; Next byte indicates the routine the error occurred in
  ; The LSB indicates the specific place the error occurred
   
***************
*** 233,241 ****
  ABSOLUTE reselected_identify = 0
  ABSOLUTE reselected_tag = 0
  
! ; Request sense command pointer, it's a 6 byte command, should
  ; be constant for all commands since we always want 16 bytes of 
! ; sense and we don't need to change any fields as we did under 
  ; SCSI-I when we actually cared about the LUN field.
  ;EXTERNAL NCR53c7xx_sense		; Request sense command
  
--- 233,241 ----
  ABSOLUTE reselected_identify = 0
  ABSOLUTE reselected_tag = 0
  
! ; Request sense command pointer, it is a 6 byte command, should
  ; be constant for all commands since we always want 16 bytes of 
! ; sense and we do not need to change any fields as we did under 
  ; SCSI-I when we actually cared about the LUN field.
  ;EXTERNAL NCR53c7xx_sense		; Request sense command
  
***************
*** 365,371 ****
  ;
  ; So, for more performance, we could overlap the code which removes 
  ; the command from the NCRs issue queue with the selection, but 
! ; at this point I don't want to deal with the error recovery.
  ;
  
  #if (CHIP != 700) && (CHIP != 70066)
--- 365,371 ----
  ;
  ; So, for more performance, we could overlap the code which removes 
  ; the command from the NCRs issue queue with the selection, but 
! ; at this point I do not want to deal with the error recovery.
  ;
  
  #if (CHIP != 700) && (CHIP != 70066)
***************
*** 542,548 ****
  ; munge_msg
  ;
  ; PURPOSE : process messages from a target.  msg_in is called when the 
! ;	caller hasn't read the first byte of the message.  munge_message
  ;	is called when the caller has read the first byte of the message,
  ;	and left it in SFBR.
  ;
--- 542,548 ----
  ; munge_msg
  ;
  ; PURPOSE : process messages from a target.  msg_in is called when the 
! ;	caller has not read the first byte of the message.  munge_message
  ;	is called when the caller has read the first byte of the message,
  ;	and left it in SFBR.
  ;
***************
*** 567,573 ****
  ; INPUTS : DSA - SCSI COMMAND, SFBR - first byte of message (munge_msg
  ;	only)
  ;
! ; CALLS : NO.  The TEMP register isn't backed up to allow nested calls.
  ;
  ; MODIFIES : SCRATCH, DSA on DISCONNECT
  ;
--- 567,573 ----
  ; INPUTS : DSA - SCSI COMMAND, SFBR - first byte of message (munge_msg
  ;	only)
  ;
! ; CALLS : NO.  The TEMP register is not backed up to allow nested calls.
  ;
  ; MODIFIES : SCRATCH, DSA on DISCONNECT
  ;
***************
*** 584,595 ****
      JUMP munge_extended, IF 0x01		; EXTENDED MESSAGE
      JUMP munge_2, IF 0x20, AND MASK 0xdf	; two byte message
  ;
! ; I've seen a handful of broken SCSI devices which fail to issue
  ; a SAVE POINTERS message before disconnecting in the middle of 
  ; a transfer, assuming that the DATA POINTER will be implicitly 
  ; restored.  So, we treat the SAVE DATA POINTER message as a NOP.
  ;
! ; I've also seen SCSI devices which don't issue a RESTORE DATA
  ; POINTER message and assume that thats implicit.
  ;
      JUMP accept_message, IF 0x02		; SAVE DATA POINTER
--- 584,595 ----
      JUMP munge_extended, IF 0x01		; EXTENDED MESSAGE
      JUMP munge_2, IF 0x20, AND MASK 0xdf	; two byte message
  ;
! ; I have seen a handful of broken SCSI devices which fail to issue
  ; a SAVE POINTERS message before disconnecting in the middle of 
  ; a transfer, assuming that the DATA POINTER will be implicitly 
  ; restored.  So, we treat the SAVE DATA POINTER message as a NOP.
  ;
! ; I have also seen SCSI devices which do not issue a RESTORE DATA
  ; POINTER message and assume that thats implicit.
  ;
      JUMP accept_message, IF 0x02		; SAVE DATA POINTER
***************
*** 791,797 ****
      MOVE 1, reselected_identify, WHEN MSG_IN
  #if (CHIP != 700) && (CHIP != 70066)
      ; Well add a jump to here after some how determining that 
!     ; tagged queueing isn't in use on this device.
  reselected_notag:    
      MOVE MEMORY 1, NCR53c7xx_zero, reselected_tag
  
--- 791,797 ----
      MOVE 1, reselected_identify, WHEN MSG_IN
  #if (CHIP != 700) && (CHIP != 70066)
      ; Well add a jump to here after some how determining that 
!     ; tagged queueing is not in use on this device.
  reselected_notag:    
      MOVE MEMORY 1, NCR53c7xx_zero, reselected_tag
  
***************
*** 834,840 ****
      ;
      ; A potential work around would be to have a known alignment 
      ; of the DSA structure such that the base address plus 
!     ; dsa_check_reselect doesn't require carrying from bytes 
      ; higher than the LSB.
      ;
  
--- 834,840 ----
      ;
      ; A potential work around would be to have a known alignment 
      ; of the DSA structure such that the base address plus 
!     ; dsa_check_reselect does not require carrying from bytes 
      ; higher than the LSB.
      ;
  
***************
*** 884,890 ****
      JUMP schedule, IF 0x40
      MOVE SIST0 & 0x20 TO SFBR
      JUMP selected, IF 0x20
! ; FIXME : Something bogus happened, and we shouldn't fail silently.
      JUMP schedule
  
  select_failed:
--- 884,890 ----
      JUMP schedule, IF 0x40
      MOVE SIST0 & 0x20 TO SFBR
      JUMP selected, IF 0x20
! ; FIXME : Something bogus happened, and we should not fail silently.
      JUMP schedule
  
  select_failed:
***************
*** 897,903 ****
      MOVE SIST0 & 0x30 TO SFBR
      JUMP selected, IF 0x20
      JUMP reselected, IF 0x10 
! ; FIXME : Something bogus happened, and we shouldn't fail silently.
      JUMP schedule
  
  ;
--- 897,903 ----
      MOVE SIST0 & 0x30 TO SFBR
      JUMP selected, IF 0x20
      JUMP reselected, IF 0x10 
! ; FIXME : Something bogus happened, and we should not fail silently.
      JUMP schedule
  
  ;
***************
*** 913,919 ****
  ;	DSA on entry, and is useful for miscellaneous experimentation.
  ;
  
! ; Verify that interrupts are working correctly and that we don't 
  ; have a cache invalidation problem.
  
  ABSOLUTE test_src = 0, test_dest = 0
--- 913,919 ----
  ;	DSA on entry, and is useful for miscellaneous experimentation.
  ;
  
! ; Verify that interrupts are working correctly and that we do not
  ; have a cache invalidation problem.
  
  ABSOLUTE test_src = 0, test_dest = 0
***************
*** 1005,1012 ****
  ; 	as the source or destination.  So, we provide a couple of subroutines
  ; 	that let us switch between the DSA register and scratch register.
  ;
! ; 	Memory moves to/from the DSPS  register also don't work, but we 
! ; 	don't use them.
  ;
  ;
  
--- 1005,1012 ----
  ; 	as the source or destination.  So, we provide a couple of subroutines
  ; 	that let us switch between the DSA register and scratch register.
  ;
! ; 	Memory moves to/from the DSPS  register also do not work, but we 
! ; 	do not use them.
  ;
  ;
  
diff -rc linux.torvalds/drivers/scsi/53c8xx_d.h linux/drivers/scsi/53c8xx_d.h
*** linux.torvalds/drivers/scsi/53c8xx_d.h	Tue May  2 12:20:54 1995
--- linux/drivers/scsi/53c8xx_d.h	Thu May  4 23:46:13 1995
***************
*** 54,60 ****
  ;
  ; While the NCR53c700 and NCR53c700-66 lacked the facilities to fully
  ; automate SCSI transfers without host processor intervention, this 
! ; isn't the case with the NCR53c710 and newer chips which allow 
  ;
  ; - reads and writes to the internal registers from within the SCSI
  ; 	scripts, allowing the SCSI SCRIPTS(tm) code to save processor
--- 54,60 ----
  ;
  ; While the NCR53c700 and NCR53c700-66 lacked the facilities to fully
  ; automate SCSI transfers without host processor intervention, this 
! ; is not the case with the NCR53c710 and newer chips which allow 
  ;
  ; - reads and writes to the internal registers from within the SCSI
  ; 	scripts, allowing the SCSI SCRIPTS(tm) code to save processor
***************
*** 69,75 ****
  ; where the same piece of code is run to handle I/O for multiple threads
  ; at once minimizing our need to relocate code.  Since the NCR53c700/
  ; NCR53c800 series have a unique combination of features, making a 
! ; a standard ingoing/outgoing mailbox system, costly, I've modified it.
  ;
  ; - Commands are stored in a linked list, rather than placed in 
  ; 	arbitrary mailboxes.  This simplifies the amount of processing
--- 69,75 ----
  ; where the same piece of code is run to handle I/O for multiple threads
  ; at once minimizing our need to relocate code.  Since the NCR53c700/
  ; NCR53c800 series have a unique combination of features, making a 
! ; a standard ingoing/outgoing mailbox system, costly, I modified it.
  ;
  ; - Commands are stored in a linked list, rather than placed in 
  ; 	arbitrary mailboxes.  This simplifies the amount of processing
***************
*** 145,151 ****
  /*
  	JUMP REL (wrong_dsa), IF NOT dsa_temp_target, AND MASK 7
  
! at 0x00000010 : */	0x80840700,0x00ffffb8,
  /*
  	MOVE dmode_memory_to_ncr TO DMODE
  
--- 145,151 ----
  /*
  	JUMP REL (wrong_dsa), IF NOT dsa_temp_target, AND MASK 7
  
! at 0x00000010 : */	0x00000000,0x00ffffb8,
  /*
  	MOVE dmode_memory_to_ncr TO DMODE
  
***************
*** 157,163 ****
  /*
  	JUMP REL (wrong_dsa), IF NOT dsa_temp_lun, AND MASK 7
  
! at 0x00000017 : */	0x80840700,0x00ffff9c,
  /*
  	MOVE dmode_memory_to_memory TO DMODE
  
--- 157,163 ----
  /*
  	JUMP REL (wrong_dsa), IF NOT dsa_temp_lun, AND MASK 7
  
! at 0x00000017 : */	0x00000000,0x00ffff9c,
  /*
  	MOVE dmode_memory_to_memory TO DMODE
  
***************
*** 251,257 ****
  ; 4 	testing interrupt 
  ; Next byte indicates specific error
  
! ; XXX not yet implemented, I'm not sure if I want to - 
  ; Next byte indicates the routine the error occurred in
  ; The LSB indicates the specific place the error occurred
   
--- 251,257 ----
  ; 4 	testing interrupt 
  ; Next byte indicates specific error
  
! ; XXX not yet implemented, I am not sure if I want to - 
  ; Next byte indicates the routine the error occurred in
  ; The LSB indicates the specific place the error occurred
   
***************
*** 295,303 ****
  ABSOLUTE reselected_identify = 0
  ABSOLUTE reselected_tag = 0
  
! ; Request sense command pointer, it's a 6 byte command, should
  ; be constant for all commands since we always want 16 bytes of 
! ; sense and we don't need to change any fields as we did under 
  ; SCSI-I when we actually cared about the LUN field.
  ;EXTERNAL NCR53c7xx_sense		; Request sense command
  
--- 295,303 ----
  ABSOLUTE reselected_identify = 0
  ABSOLUTE reselected_tag = 0
  
! ; Request sense command pointer, it is a 6 byte command, should
  ; be constant for all commands since we always want 16 bytes of 
! ; sense and we do not need to change any fields as we did under 
  ; SCSI-I when we actually cared about the LUN field.
  ;EXTERNAL NCR53c7xx_sense		; Request sense command
  
***************
*** 435,441 ****
  /*
      JUMP select, IF NOT 0
  
! at 0x00000057 : */	0x80040000,0x00000194,
  /*
      MOVE DSA1 TO SFBR
  
--- 435,441 ----
  /*
      JUMP select, IF NOT 0
  
! at 0x00000057 : */	0x00000000,0x00000194,
  /*
      MOVE DSA1 TO SFBR
  
***************
*** 443,449 ****
  /*
      JUMP select, IF NOT 0
  
! at 0x0000005b : */	0x80040000,0x00000194,
  /*
      MOVE DSA2 TO SFBR
  
--- 443,449 ----
  /*
      JUMP select, IF NOT 0
  
! at 0x0000005b : */	0x00000000,0x00000194,
  /*
      MOVE DSA2 TO SFBR
  
***************
*** 451,457 ****
  /*
      JUMP select, IF NOT 0
  
! at 0x0000005f : */	0x80040000,0x00000194,
  /*
      MOVE DSA3 TO SFBR
  
--- 451,457 ----
  /*
      JUMP select, IF NOT 0
  
! at 0x0000005f : */	0x00000000,0x00000194,
  /*
      MOVE DSA3 TO SFBR
  
***************
*** 459,465 ****
  /*
      JUMP wait_reselect, IF 0
  
! at 0x00000063 : */	0x800c0000,0x00000560,
  /*
  
      
--- 459,465 ----
  /*
      JUMP wait_reselect, IF 0
  
! at 0x00000063 : */	0x00000000,0x00000560,
  /*
  
      
***************
*** 508,514 ****
  ;
  ; So, for more performance, we could overlap the code which removes 
  ; the command from the NCRs issue queue with the selection, but 
! ; at this point I don't want to deal with the error recovery.
  ;
  
  
--- 508,514 ----
  ;
  ; So, for more performance, we could overlap the code which removes 
  ; the command from the NCRs issue queue with the selection, but 
! ; at this point I do not want to deal with the error recovery.
  ;
  
  
***************
*** 841,847 ****
  ; munge_msg
  ;
  ; PURPOSE : process messages from a target.  msg_in is called when the 
! ;	caller hasn't read the first byte of the message.  munge_message
  ;	is called when the caller has read the first byte of the message,
  ;	and left it in SFBR.
  ;
--- 841,847 ----
  ; munge_msg
  ;
  ; PURPOSE : process messages from a target.  msg_in is called when the 
! ;	caller has not read the first byte of the message.  munge_message
  ;	is called when the caller has read the first byte of the message,
  ;	and left it in SFBR.
  ;
***************
*** 866,872 ****
  ; INPUTS : DSA - SCSI COMMAND, SFBR - first byte of message (munge_msg
  ;	only)
  ;
! ; CALLS : NO.  The TEMP register isn't backed up to allow nested calls.
  ;
  ; MODIFIES : SCRATCH, DSA on DISCONNECT
  ;
--- 866,872 ----
  ; INPUTS : DSA - SCSI COMMAND, SFBR - first byte of message (munge_msg
  ;	only)
  ;
! ; CALLS : NO.  The TEMP register is not backed up to allow nested calls.
  ;
  ; MODIFIES : SCRATCH, DSA on DISCONNECT
  ;
***************
*** 885,924 ****
  munge_msg:
      JUMP munge_extended, IF 0x01		; EXTENDED MESSAGE
  
! at 0x000000d7 : */	0x800c0001,0x00000428,
  /*
      JUMP munge_2, IF 0x20, AND MASK 0xdf	; two byte message
  
! at 0x000000d9 : */	0x800cdf20,0x0000039c,
  /*
  ;
! ; I've seen a handful of broken SCSI devices which fail to issue
  ; a SAVE POINTERS message before disconnecting in the middle of 
  ; a transfer, assuming that the DATA POINTER will be implicitly 
  ; restored.  So, we treat the SAVE DATA POINTER message as a NOP.
  ;
! ; I've also seen SCSI devices which don't issue a RESTORE DATA
  ; POINTER message and assume that thats implicit.
  ;
      JUMP accept_message, IF 0x02		; SAVE DATA POINTER
  
! at 0x000000db : */	0x800c0002,0x000004d8,
  /*
      JUMP accept_message, IF 0x03		; RESTORE POINTERS 
  
! at 0x000000dd : */	0x800c0003,0x000004d8,
  /*
      JUMP munge_disconnect, IF 0x04		; DISCONNECT
  
! at 0x000000df : */	0x800c0004,0x000003b4,
  /*
      INT int_msg_1, IF 0x07			; MESSAGE REJECT
  
! at 0x000000e1 : */	0x980c0007,0x01020000,
  /*
      INT int_msg_1, IF 0x0f			; INITIATE RECOVERY
  
! at 0x000000e3 : */	0x980c000f,0x01020000,
  /*
      JUMP reject_message
  
--- 885,924 ----
  munge_msg:
      JUMP munge_extended, IF 0x01		; EXTENDED MESSAGE
  
! at 0x000000d7 : */	0x00000001,0x00000428,
  /*
      JUMP munge_2, IF 0x20, AND MASK 0xdf	; two byte message
  
! at 0x000000d9 : */	0x0000df00,0x0000039c,
  /*
  ;
! ; I have seen a handful of broken SCSI devices which fail to issue
  ; a SAVE POINTERS message before disconnecting in the middle of 
  ; a transfer, assuming that the DATA POINTER will be implicitly 
  ; restored.  So, we treat the SAVE DATA POINTER message as a NOP.
  ;
! ; I have also seen SCSI devices which do not issue a RESTORE DATA
  ; POINTER message and assume that thats implicit.
  ;
      JUMP accept_message, IF 0x02		; SAVE DATA POINTER
  
! at 0x000000db : */	0x00000002,0x000004d8,
  /*
      JUMP accept_message, IF 0x03		; RESTORE POINTERS 
  
! at 0x000000dd : */	0x00000003,0x000004d8,
  /*
      JUMP munge_disconnect, IF 0x04		; DISCONNECT
  
! at 0x000000df : */	0x00000004,0x000003b4,
  /*
      INT int_msg_1, IF 0x07			; MESSAGE REJECT
  
! at 0x000000e1 : */	0x00000007,0x01020000,
  /*
      INT int_msg_1, IF 0x0f			; INITIATE RECOVERY
  
! at 0x000000e3 : */	0x0000000f,0x01020000,
  /*
      JUMP reject_message
  
***************
*** 1025,1035 ****
  /*
      JUMP munge_extended_2, IF 0x02
  
! at 0x00000110 : */	0x800c0002,0x00000458,
  /*
      JUMP munge_extended_3, IF 0x03 
  
! at 0x00000112 : */	0x800c0003,0x00000488,
  /*
      JUMP reject_message
  
--- 1025,1035 ----
  /*
      JUMP munge_extended_2, IF 0x02
  
! at 0x00000110 : */	0x00000002,0x00000458,
  /*
      JUMP munge_extended_3, IF 0x03 
  
! at 0x00000112 : */	0x00000003,0x00000488,
  /*
      JUMP reject_message
  
***************
*** 1047,1053 ****
  /*
      JUMP reject_message, IF NOT 0x02	; Must be WDTR
  
! at 0x0000011a : */	0x80040002,0x000004b8,
  /*
      CLEAR ACK
  
--- 1047,1053 ----
  /*
      JUMP reject_message, IF NOT 0x02	; Must be WDTR
  
! at 0x0000011a : */	0x00000002,0x000004b8,
  /*
      CLEAR ACK
  
***************
*** 1073,1079 ****
  /*
      JUMP reject_message, IF NOT 0x01	; Must be SDTR
  
! at 0x00000126 : */	0x80040001,0x000004b8,
  /*
      CLEAR ACK
  
--- 1073,1079 ----
  /*
      JUMP reject_message, IF NOT 0x01	; Must be SDTR
  
! at 0x00000126 : */	0x00000001,0x000004b8,
  /*
      CLEAR ACK
  
***************
*** 1291,1297 ****
  /*
  
      ; Well add a jump to here after some how determining that 
!     ; tagged queueing isn't in use on this device.
  reselected_notag:    
      MOVE MEMORY 1, NCR53c7xx_zero, reselected_tag
  
--- 1291,1297 ----
  /*
  
      ; Well add a jump to here after some how determining that 
!     ; tagged queueing is not in use on this device.
  reselected_notag:    
      MOVE MEMORY 1, NCR53c7xx_zero, reselected_tag
  
***************
*** 1338,1344 ****
  /*
      JUMP reselected_not_end, IF NOT 0
  
! at 0x0000016d : */	0x80040000,0x000005f4,
  /*
      MOVE DSA1 TO SFBR
  
--- 1338,1344 ----
  /*
      JUMP reselected_not_end, IF NOT 0
  
! at 0x0000016d : */	0x00000000,0x000005f4,
  /*
      MOVE DSA1 TO SFBR
  
***************
*** 1346,1352 ****
  /*
      JUMP reselected_not_end, IF NOT 0
  
! at 0x00000171 : */	0x80040000,0x000005f4,
  /*
      MOVE DSA2 TO SFBR
  
--- 1346,1352 ----
  /*
      JUMP reselected_not_end, IF NOT 0
  
! at 0x00000171 : */	0x00000000,0x000005f4,
  /*
      MOVE DSA2 TO SFBR
  
***************
*** 1354,1360 ****
  /*
      JUMP reselected_not_end, IF NOT 0
  
! at 0x00000175 : */	0x80040000,0x000005f4,
  /*
      MOVE DSA3 TO SFBR
  
--- 1354,1360 ----
  /*
      JUMP reselected_not_end, IF NOT 0
  
! at 0x00000175 : */	0x00000000,0x000005f4,
  /*
      MOVE DSA3 TO SFBR
  
***************
*** 1362,1368 ****
  /*
      JUMP reselected_not_end, IF NOT 0
  
! at 0x00000179 : */	0x80040000,0x000005f4,
  /*
      INT int_err_unexpected_reselect
  
--- 1362,1368 ----
  /*
      JUMP reselected_not_end, IF NOT 0
  
! at 0x00000179 : */	0x00000000,0x000005f4,
  /*
      INT int_err_unexpected_reselect
  
***************
*** 1382,1388 ****
      ;
      ; A potential work around would be to have a known alignment 
      ; of the DSA structure such that the base address plus 
!     ; dsa_check_reselect doesn't require carrying from bytes 
      ; higher than the LSB.
      ;
  
--- 1382,1388 ----
      ;
      ; A potential work around would be to have a known alignment 
      ; of the DSA structure such that the base address plus 
!     ; dsa_check_reselect does not require carrying from bytes 
      ; higher than the LSB.
      ;
  
***************
*** 1479,1485 ****
  /*
      JUMP schedule, IF 0x40
  
! at 0x000001a1 : */	0x800c0040,0x00000130,
  /*
      MOVE SIST0 & 0x20 TO SFBR
  
--- 1479,1485 ----
  /*
      JUMP schedule, IF 0x40
  
! at 0x000001a1 : */	0x00000040,0x00000130,
  /*
      MOVE SIST0 & 0x20 TO SFBR
  
***************
*** 1487,1495 ****
  /*
      JUMP selected, IF 0x20
  
! at 0x000001a5 : */	0x800c0020,0x00000674,
  /*
! ; FIXME : Something bogus happened, and we shouldn't fail silently.
      JUMP schedule
  
  at 0x000001a7 : */	0x80080000,0x00000130,
--- 1487,1495 ----
  /*
      JUMP selected, IF 0x20
  
! at 0x000001a5 : */	0x00000020,0x00000674,
  /*
! ; FIXME : Something bogus happened, and we should not fail silently.
      JUMP schedule
  
  at 0x000001a7 : */	0x80080000,0x00000130,
***************
*** 1505,1511 ****
  /*
      JUMP select, IF 0x40
  
! at 0x000001ab : */	0x800c0040,0x00000194,
  /*
  ; Otherwise, mask the selected and reselected bits off SIST0
      MOVE SIST0 & 0x30 TO SFBR
--- 1505,1511 ----
  /*
      JUMP select, IF 0x40
  
! at 0x000001ab : */	0x00000040,0x00000194,
  /*
  ; Otherwise, mask the selected and reselected bits off SIST0
      MOVE SIST0 & 0x30 TO SFBR
***************
*** 1514,1526 ****
  /*
      JUMP selected, IF 0x20
  
! at 0x000001af : */	0x800c0020,0x00000674,
  /*
      JUMP reselected, IF 0x10 
  
! at 0x000001b1 : */	0x800c0010,0x00000568,
  /*
! ; FIXME : Something bogus happened, and we shouldn't fail silently.
      JUMP schedule
  
  at 0x000001b3 : */	0x80080000,0x00000130,
--- 1514,1526 ----
  /*
      JUMP selected, IF 0x20
  
! at 0x000001af : */	0x00000020,0x00000674,
  /*
      JUMP reselected, IF 0x10 
  
! at 0x000001b1 : */	0x00000010,0x00000568,
  /*
! ; FIXME : Something bogus happened, and we should not fail silently.
      JUMP schedule
  
  at 0x000001b3 : */	0x80080000,0x00000130,
***************
*** 1539,1545 ****
  ;	DSA on entry, and is useful for miscellaneous experimentation.
  ;
  
! ; Verify that interrupts are working correctly and that we don't 
  ; have a cache invalidation problem.
  
  ABSOLUTE test_src = 0, test_dest = 0
--- 1539,1545 ----
  ;	DSA on entry, and is useful for miscellaneous experimentation.
  ;
  
! ; Verify that interrupts are working correctly and that we do not
  ; have a cache invalidation problem.
  
  ABSOLUTE test_src = 0, test_dest = 0
***************
*** 1733,1740 ****
  ; 	as the source or destination.  So, we provide a couple of subroutines
  ; 	that let us switch between the DSA register and scratch register.
  ;
! ; 	Memory moves to/from the DSPS  register also don't work, but we 
! ; 	don't use them.
  ;
  ;
  
--- 1733,1740 ----
  ; 	as the source or destination.  So, we provide a couple of subroutines
  ; 	that let us switch between the DSA register and scratch register.
  ;
! ; 	Memory moves to/from the DSPS  register also do not work, but we 
! ; 	do not use them.
  ;
  ;
  
