🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by Steven M. Schultz Sun, 27 Aug 1989 06:23
Q22 support for DH/DM emulators
#27
Author: Steven M. Schultz
Date: Sun, 27 Aug 1989 06:23
98 lines
3151 bytes
Subject: Q22 support for Emulex CS02
Index:	sys/dh.c,dmreg.h 2.10BSD

Description:
	There were major problems with DH/DM-11 type devices on
	the QBUS (Q22) 11/73 (presumably 11/53 also) systems.

Repeat-By:
	Observation.

Fix:
	Thanks to Paul Taylor (taylor@oswego.oswego.edu) for sending the
	following patches to /sys/pdpuba/{dh.c,dmreg.h}:

*** dh.c.old	Fri Aug  4 22:42:08 1989
--- dh.c	Sat Aug 26 23:11:29 1989
***************
*** 3,9 ****
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)dh.c	1.1 (2.10BSD Berkeley) 12/1/86
   */
  
  /*
--- 3,9 ----
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)dh.c	1.2 (2.10.1BSD Berkeley) 8/25/89
   */
  
  /*
***************
*** 410,418 ****
--- 410,424 ----
  #else
  				{
  				ubadr_t car;
+ #if defined(Q22)
+ 				struct dmdevice *dmaddr = (struct dmdevice *)dminfo[dh].ui_addr;
  
+ 				car = (ubadr_t)addr->dhcar;
+ 				car |= ((ubadr_t)(dmaddr->dmlst_h&077) << 16);
+ #else
  				car = (ubadr_t) addr->dhcar
  				    | (ubadr_t)(addr->dhsilo & 0300) << 10;
+ #endif defined(Q22)
  				cntr = car - cpaddr(tp->t_outq.c_cf);
  				ndflush(&tp->t_outq, cntr);
  				}
***************
*** 495,503 ****
--- 501,517 ----
  		addr->dhcar = (u_short)cpaddr(tp->t_outq.c_cf);
  #else
  		ubadr_t uba;
+ #if defined(Q22)
+ 		struct dmdevice *dmaddr = (struct dmdevice *)dminfo[dh].ui_addr;
+ #endif
  
  		uba = cpaddr(tp->t_outq.c_cf);
+ #if defined(Q22)
+                 addr->un.dhcsrl = (unit&017) | DH_IE;
+                 dmaddr->dmlst_h = hiint(uba) & 077;
+ #else
  		addr->un.dhcsrl = (unit&017) | DH_IE | ((hiint(uba)<<4)&060);
+ #endif defined(Q22)
  		addr->dhcar = loint(uba);
  #endif
  		{ short word = 1 << unit;
*** dmreg.h.old	Sat Jan 10 14:31:49 1987
--- dmreg.h	Sat Aug 26 23:01:07 1989
***************
*** 11,18 ****
   */
  struct dmdevice {
  	short	dmcsr;		/* control status register */
! 	short	dmlstat;	/* line status register */
! 	short	dmpad1[2];
  };
  
  /* bits in dm csr */
--- 11,24 ----
   */
  struct dmdevice {
  	short	dmcsr;		/* control status register */
! 	union	{               /* Q22:Need to access high byte independently */
! 		short dmlst_w;
! 		char dmlst_b[2];
! 		} cs02un;
! #define dmlstat cs02un.dmlst_w        /* line status register */
! #define dmlst_l cs02un.dmlst_b[0]     /* low byte */
! #define dmlst_h cs02un.dmlst_b[1]     /* high byte */
! 	short   dmpad1[2];
  };
  
  /* bits in dm csr */
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads