From owner-FreeBSD-net-jp@jp.freebsd.org  Mon Oct 13 10:58:40 1997
Received: by jaz.jp.freebsd.org (8.8.7+2.7Wbeta7/8.7.3) id KAA26828
	Mon, 13 Oct 1997 10:58:40 +0900 (JST)
Received: by jaz.jp.freebsd.org (8.8.7+2.7Wbeta7/8.7.3) with ESMTP id KAA26823
	for <FreeBSD-net-jp@jp.freebsd.org>; Mon, 13 Oct 1997 10:58:38 +0900 (JST)
Received: from hstrgate.str.hitachi.co.jp by hitiij.hitachi.co.jp (8.8.5+2.7Wbeta5/3.5W-hitiij) id KAA07100; Mon, 13 Oct 1997 10:51:44 +0900 (JST)
Received: from hstrfez.str.hitachi.co.jp (hstrfez [158.214.121.200]) by hstrgate.str.hitachi.co.jp (8.7.3/3.4Wbeta5-951226) with SMTP id LAA19939 for <FreeBSD-net-jp@jp.freebsd.org>; Mon, 13 Oct 1997 11:01:00 +0900 (JST)
Received: from dkcg020.str.hitachi.co.jp (dkcg020.str.hitachi.co.jp [158.214.141.44]) by hstrfez.str.hitachi.co.jp (8.6.9/3.4Wbeta6-970328) with ESMTP id LAA01130 for <FreeBSD-net-jp@jp.freebsd.org>; Mon, 13 Oct 1997 11:01:17 +0900
Received: from dkcg020 (mmatsu@localhost) by dkcg020.str.hitachi.co.jp (8.6.9/3.3W9-96082618) with ESMTP id KAA26864 for <FreeBSD-net-jp@jp.freebsd.org>; Mon, 13 Oct 1997 10:56:49 +0900
Message-Id: <199710130156.KAA26864@dkcg020.str.hitachi.co.jp>
To: FreeBSD-net-jp@jp.freebsd.org
From: Matsumoto Mahito <mmatsu@str.hitachi.co.jp>
X-Mailer: Mew version 1.06 on Emacs 19.28.1, Mule 2.3
Mime-Version: 1.0
Content-Type: Multipart/Mixed;
	boundary="--Next_Part(Mon_Oct_13_10:48:19_1997)--"
Date: Mon, 13 Oct 1997 10:56:48 +0900
Reply-To: FreeBSD-net-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute [version 2.1 (Alpha) patchlevel=20]
X-Sequence: FreeBSD-net-jp 231
Subject: [FreeBSD-net-jp 231] Forward: (98) Parallel Port TCP/IP
Errors-To: owner-FreeBSD-net-jp@jp.freebsd.org
Sender: owner-FreeBSD-net-jp@jp.freebsd.org

----Next_Part(Mon_Oct_13_10:48:19_1997)--
Content-Type: Text/Plain; charset=iso-2022-jp

$B0JA0OCBj$,$G$?(B PLIP $B$r<B8=$9$k$?$a$N%Q%C%A$rBeM}Ej9F$7$^$9!#(B

---
  Matsumoto Mahito  e-mail:mmatsu@str.hitachi.co.jp


----Next_Part(Mon_Oct_13_10:48:19_1997)--
Content-Type: Message/rfc822

  $BE*>l!w>.ED86(B $B$G$9(B.

$BM=9p$NG\(B, $B;~4V$,7P$C$F$7$^$$$^$7$?(B(_o_)$B$,(B,
FreeBSD(98) $B$G(B PLIP $B$r;H$&%Q%C%A$N%l%]!<%H$r:n@.$7$^$7$?(B.
$B$*;n$72<$5$$(B.

# $B$A$J$_$K(B, $BEv%Q%C%A0JA0$K$b(B PLIP $B$r;H$C$F$$$?J}$,$$$i$C$7$c$$$^$9(B.
# $B<+:n$J$5$C$?$N$+(B, $B$h$=$+$iF~<j$7$?$N$+$OJ9$-$^$;$s$G$7$?(B.
# $B;2>H(B: FreeBSD-users-jp 12467


========

1. $B5!G=(B
  PC-9800 $B%7%j!<%:$N$&$A(B, IEEE STD 1284 $BEk:\5!(B *1 $B$K$D$$$F(B,
  PLIP $B$K$h$kDL?.$r2DG=$K$9$k(B.
     ( AT $B8_495!$G$O85!9(B GENERIC $B$N%+!<%M%k$G(B PLIP $B$K$h$kDL?.$,2DG=(B.
       PLIP $B<+?H$K$D$$$F$O(B, $B%^%K%e%"%k(B lp(4) $B$K>\$7$$2r@b$,$"$k(B )

   *1 $B%W%j%s%?5!G=$K4X$9$k6hJL(B.
      a)$B!V(BUNDOCUMENTED 9801/9821 vol.1$B!W>.9b51??(B,$B2OLn7rCx(B
                          $B%$%s%W%l%94)(B  1994$BG/(B3$B7n(B21$BF|=iHG(B
         $B$K$h$k$H(B, IEEE STD 1284 $BEk:\5!$H$O(B,
           PC-9801: BA2,BS2,BX2,NS/A
           PC-9821: Ap2,As2,Bf,Bp,Bs,Be,Ts,Cs2,Ce2
         $B$G$"$j(B,
         $B4J0W%;%s%H%m%K%/%9%b!<%I(B($B=>Mh5!$N%G%U%)%k%H$N%b!<%I(B)$B$H(B
         $B%U%k%;%s%H%m%K%/%9%b!<%I$N@ZBX$($,2DG=$G(B,
         $B%3%M%/%?$O(B 36pin $B$G$"$k(B.
      b) ELECOM $B$N(B
         NEC$BMQ%W%j%s%?%1!<%V%k(B
            $B%O!<%U%T%C%A(B36pin$B%*%9(B - $B%;%s%H%m%K%/%9(B36pin$B%*%9(B
         $B$N%Q%C%1!<%8N"LL$K$"$k%1!<%V%kBP1~5!<o0lMw$K$h$k$H(B,
           PC-9801: BA2,BA3,BS2,BX2,BX3,BX4,NS/A,NL/A
           PC-9821: An,Ap2,Ap3,As2,As3,Be,Bf,Bp,Bs,Cb,
                    Cb2,Cb3,Cb10,Ce2,Cf,Cr13,Cs2,Ct16,
                    Ct20,Cu10,Cu13,Cu16,Cx,Cx2,Cx3,Cx13,
                    Es,La7,La10,Ld,Lt,Lt2,Na7,Na9,Na12,
                    Na13,Na15,Nb7,Nb10,Nd,Nd2,Ne2,Ne3,
                    Nf,Nm,Np,Nr12,Nr13,Nr15,Ns,Nx,Ra20,
                    St15,St16,St20,Ts,V7,V10,V12,V13,V16,
                    V20,Xa,Xa7,Xa9,Xa10,Xa12,Xa13,Xa16,
                    Xb10,Xc13,Xe,Xe10,Xf,Xn,Xp,Xs,Xt,Xt13,
                    Xt16,Xv13,Xv20
         $B$,(B36pin$B%3%M%/%?$r;}$D5!<o$G$"$k(B.
      c) 9821Nm $B$G(B a) $B$NJ88%Cf$N$$$/$D$+$N5-=R$r;29M$K$"$l$3$l(B
         $B;n$7$?$H$3$m(B, I/O $B%]!<%H$NFCDj%S%C%H$rN)$F$k$3$H$K$h$j(B,
         $B4J0W%;%s%H%m%K%/%9%b!<%I$+$i%U%k%;%s%H%m%K%/%9%b!<%I$K(B
         $BJQ$o$j(B, $B0J8e$O(B I/O $B%]!<%H$N%$%s%?%U%'!<%9$H$7$F$O(B AT$B8_(B
         $B495!$H$[$H$s$I$=$C$/$j$K$J$k$3$H$,J,$+$C$?(B.


2. $BLdBjE@(B
  a) $BEv%Q%C%A$rEv$F(B, PC98PLIP $B$rM-8z$K$7$?%+!<%M%k$G$O(B,
     $B%W%j%s%?$,F0:n$7$J$$(B.
     $B$?$@$7(B, PC98PLIP $B$rM-8z$K$7$J$1$l$P(B,
     $B%Q%C%A$rEv$F$kA0$HJQ$o$i$:%W%j%s%?$,;H$($k(B($B$O$:(B).
  b) $B%+!<%M%k$,(B "stray irq 7" $B$H$$$&%(%i!<%a%C%;!<%8$rEG$/$3$H$,$"$k(B.
     $B$^$@2sHr:v$r;W$$IU$+$J$$(B.
  c) $BF0:n3NG'$O(B PC-9821Nm $B$G$N$_<B;\$7$F$$$k(B.
     $B$3$N$?$a(B, Nm $B0J30$N5!<o$G$OIT6q9g$,$"$k$+$b$7$l$J$$(B.


3. $B%Q%C%ABP>]$N(B FreeBSD(98)$B%P!<%8%g%s(B
  FreeBSD(98)2.2.1-ALPHA
    $B!V(BFreeBSD$BE0DlF~Lg!WfF1K<R4)(B 1997$BG/(B6$B7n(B1$BF|=iHG(B
         (98$BMQ$G$O$J$/(B,AT$B8_495!MQ$NJ}(B)
    $BIUO?(BCD-ROM$B$K<}O?$5$l$F$$$k$b$N(B.

  # $B$=$N$^$^$G$O%Q%C%A$OEv$?$i$J$$$,(B, $BF1MM$N=$@5$K$h$j(B
  # FreeBSD(98)2.1.5-RELEASE $B$G$NF0:n$r3NG'$7$F$$$k(B.


4. $B%Q%C%A$NEv$FJ}(B
  $BE:IU$N(B diff $B%U%!%$%k$rE,Ev$J%U%!%$%k(B(tekitou)$B$K%;!<%V$7(B,
  98$BMQ$N%+!<%M%k0l<0$,E83+$5$l$F$$$k>uBV$G(B,
    cd /usr/src/sys ; patch -p1 < tekitou
  $B$r<B9T$9$k(B.


5. $B%+!<%M%k:n@.;~$N@_Dj(B
  /usr/src/sys/pc98/conf/GENERIC98 $B$rE,Ev$JL>A0$G%3%T!<$7(B,
    options "PC98PLIP"
  $B$rDI2C$9$k(B.
    device lpt0 at isa? port "IO_LPT" tty
  $B$N9T$r:o=|$7(B,
    device lpt0 at isa? port "IO_LPT_NEW" tty irq 14 vector lptintr
  $B$rDI2C$9$k(B.
  $B$^$?(B, Linux $B$H(B PLIP $B$G@\B3$9$k>l9g$O(B, $B$*9%$_$G(B
    options "LINUX_PLIP_COMPAT_MORE"
  $B$rDI2C$9$k(B. $B$3$l$O3d$j9~$_2D(B/$BIT2D$r@ZBX$($k%?%$%_%s%0$r(B
  Linux$B$K;w$;$k$b$N$G(B, $B>l9g$K$h$C$F$ODL?.$,<c43B.$/$J$k(B.
  ($B$?$@$7(B, $BDL?.Aj<j$,(B Linux $B$G$"$k>l9g$K8B$C$?J}$,L5Fq$+$b(B)
  $B8e$O(B, $BDL>o$NJ}K!$G%+!<%M%k$r:n@.(B, $B%$%s%9%H!<%k$9$k(B.

  # $B;H$o$J$$(B device $B$d(B controller $B$N@_Dj$O:o$C$F$*$$$?J}$,(B
  # $BL5Fq$+$b$7$l$J$$(B.
  # $B;d$O(B ncr0 $B$H(B ahc0 $B$r:o$C$F$*$$$?(B(9821Nm:$B%N!<%H;HMQ$N$?$a(B).


6. boot$B;~$N@_Dj(B
  $BNc$($P(B
  /etc/hosts $B$K(B
    192.168.145.11  mido
    192.168.145.12  fado
  $B$H@_Dj$7$F$"$k$H$7$F(B,
  /etc/sysconfig (version$B$K$h$C$F$O0c$&%U%!%$%k(B) $B$K$*$$$F(B
    1. network_interfaces $B$K(B lp0 $B$rDI2C(B
    2. FreeBSD $B%M%$%F%#%V$J(B PLIP $BDL?.$N>l9g$O(B,
         ifcconfig_lp0="inet  mido fado mtu 1000 netmask 255.255.255.0"
       $B$rDI2C(B
       Linux $B8_49$J(B PLIP $BDL?.$N>l9g$O(B,
         ifcconfig_lp0="inet  mido fado link0 mtu 1000 netmask 255.255.255.0"
       $B$rDI2C(B
       mtu $B$NCM$OE,Ev$KD4@a$9$k(B. $B%G%U%)%k%H$O(B 1500.
  $BDL?.Aj<j$K$bF1MM$N@_Dj$r$9$k(B.
  $B$?$?$7(B,
    $B!&(BLinux $B8_49$+(B FreeBSD $B%M%$%F%#%V$+(B(link0 $B$rIU$1$k$+$I$&$+(B)$B$r(B
      $BE}0l$9$kI,MW$"$j(B. $BDL?.Aj<j$,(B Linux $B$N>l9g$O(B Linux $B8_49$K$9$k(B
      (link0 $B$rIU$1$k(B)$B$7$+$J$$(B.
    $B!&(Bmtu $B$NCM$rE}0l$9$kI,MW$"$j(B.
    $B!&%^%7%s$NL>A0$N=g=x(B(mido fado)$B$r5U$K$9$kI,MW$"$j(B.  


7. $B%1!<%V%k@\B3(B

  a) AT$B8_495!(B <-> 98 $B$N>l9g(B:
        AT$B8_495!B&(B        98$BB&(B
        D0     ( 2)-------ERROR  (32)
        D1     ( 3)-------SELECT (13)
        D2     ( 4)-------PE     (12)
        D3     ( 5)-------ACK    (10)
        D4     ( 6)-------BUSY   (11)
        ERR    (15)-------PDB0   ( 2)
        SEL    (13)-------PDB1   ( 3)
        PAPOUT (12)-------PDB2   ( 4)
        ACK    (10)-------PDB3   ( 5)
        BUSY   (11)-------PDB4   ( 6)           
               (19)-------       (16) *
               (21)-------       (19) *
                        +-       (20) *
                        +-       (21) *
               (22)-------       (22) *
                        +-       (23) *
               (23)-------       (24) *
                        +-       (25) *
               (24)-------       (26) *
                        +-       (27) *
                        +-       (28) *
        GND    (25)-------GND    (30)
                        +-       (29) *
          $BCm(B: *$B0u$NIU$$$F$$$k$b$N$O(B, $B$3$N7k@~$NI,MW$,L5$$$+$b(B.

        $B7k@~J}K!(B: 1. $B;THNIJ$G:Q$^$;$k(B
                       $BNc$($P(B,
                        AT$B8_495!MQ%$%s%?!<%j%s%/JQ49%3%M%/%?(B
                           DSUB 25pin $B%*%9(B -> DSUB 25pin $B%a%9(B
                        AT$B8_495!MQ%W%j%s%?%1!<%V%k(B
                           DSUB 25pin $B%*%9(B
                             -> $B%;%s%H%m%K%/%9(B 36pin $B%*%9(B
                        $B%;%s%H%m%K%/%9%8%'%s%@!<%A%'%s%8%c(B
                           36pin $B%a%9(B -> 36pin $B%a%9(B
                        NEC$BMQ%W%j%s%?JQ49%1!<%V%k(B
                           $B%;%s%H%m%K%/%9(B 36pin $B%*%9(B
                             -> $B%O!<%U%T%C%A(B 36pin $B%*%9(B
                        $B$rD>Ns$K7R$0(B.
                       $BLs(B 7,500$B1_3]$+$C$?(B.
                  2. $B<+:n$9$k(B.
                       3000$B1_!A(B?

  b) 98 <-> 98 $B$N>l9g(B:
        98$BB&(BA             98$BB&(BB
        PDB0   ( 2)-------ERROR  (32)
        PDB1   ( 3)-------SELECT (13)
        PDB2   ( 4)-------PE     (12)
        PDB3   ( 5)-------ACK    (10)
        PDB4   ( 6)-------BUSY   (11)
        ERROR  (32)-------PDB0   ( 2)
        SELECT (13)-------PDB1   ( 3)
        PE     (12)-------PDB2   ( 4)
        ACK    (10)-------PDB3   ( 5)
        BUSY   (11)-------PDB4   ( 6)           
        GND    (30)-------GND    (30)

        $B7k@~J}K!(B: 1. $B;THNIJ$G:Q$^$;$k>l9g(B
                     AT$B8_495!(B<->98$B5!$N>l9g$r%"%l%s%8$9$l$P$$$$$N$@$,(B,
                     1$BK|1_$r1[$($k$+$b(B?
                  2. $B<+:n$9$k(B. 3000$B1_!A(B?


8. boot $B$+$iF0:n3NG'$^$G(B
  a) $B%+!<%M%k$N%$%s%9%H!<%k(B,
     boot $B;~$N@_Dj(B,
     $B%1!<%V%k@\B3(B
     $B$,:Q$s$@$i(B, reboot $B$5$;$k(B.
  b) boot$B;~$N%a%C%;!<%8$G(B, 98$B$G$O(B,
       lpt0 at 0x140-0x147 irq 14 on isa
       lpt0: Interrupt-driven port
       lp0: TCP/IP capable interface
     $B$HI=<($5$l$k$O$:(B.
     (AT$B8_495!$N>l9g$O?t;z$NItJ,$,JQ$o$k(B)
     (Linux$B$N>l9g(B, $B$d$O$j$=$l$J$j$JI=<($,=P$k(B)
  c) $BFsBf$N%^%7%s$G(B login$B2DG=$J>uBV$K$J$C$?$i(B,
     $B$*8_$$$K(B ping $B$,DL$k$+$r;n$9(B.
     $B$I$A$i$b1~Ez$,JV$C$F$-$F$$$k$h$&$J$i$P(B,
     $B:GDc8B$NDL?.$O2DG=$K$J$C$F$$$k(B.
     $B1~Ez$,JV$C$F$3$J$+$C$?$j(B,
     console $B$K%(%i!<$,%\%3%\%3=P$F$$$k$h$&$J$i$P(B,
     $B@_Dj$d%1!<%V%k@\B3$r:FEY3NG'$9$k(B.
  d) $B$&$^$/F0:n$7$F$$$k>l9g$O(B, $B<!$K(B ftp $B$d(B telnet, NFS $B$J$I$r(B
     $B;n$7$F$_$k(B.
     $BF0:n$9$k$1$l$I$bIT0BDj$J$i$P(B, mtu $B$N?t;z$r8:$i$7$F$_$k(B.


$B!A!A(B $B%Q%C%A(B : $B$3$3$+$i(B $B!A!A(B
diff -ru5 _sys_orig/i386/isa/lptreg.h sys/i386/isa/lptreg.h
--- _sys_orig/i386/isa/lptreg.h	Fri Jan 17 23:56:45 1997
+++ sys/i386/isa/lptreg.h	Sun Oct  5 21:29:57 1997
@@ -20,10 +20,16 @@
  * modified for PC9801 by A.Kojima
  *			Kyoto University Microcomputer Club (KMC)
  */
 
 #ifdef PC98
+#ifndef PC98PLIP
+#define PC98_NOPLIP
+#endif /*!PC98PLIP*/
+#endif /*PC98*/
+
+#ifdef PC98_NOPLIP
 #define lpt_pstb_ctrl	(-9)	/* PSTB enable control */
 #define	LPC_EN_PSTB	0xc	/* PSTB enable */
 #define	LPC_DIS_PSTB	0xd	/* PSTB disable */
 
 #define lpt_data	0	/* Data to/from printer (R/W) */
@@ -53,5 +59,10 @@
 #define	LPC_AUTOL		0x02	/* automatic linefeed */
 #define	LPC_NINIT		0x04	/* initialize printer */
 #define	LPC_SEL			0x08	/* printer selected */
 #define	LPC_ENA			0x10	/* enable IRQ */
 #endif
+
+#ifdef PC98PLIP
+#define lpt_mod_full	9	/* Port: to be full centronics or not */
+#define LPM_FULL	0x10	/* Bit : to be full centronics or not */
+#endif /* PC98PLIP */
diff -ru5 _sys_orig/pc98/pc98/lpt.c sys/pc98/pc98/lpt.c
--- _sys_orig/pc98/pc98/lpt.c	Fri Jan 17 23:56:54 1997
+++ sys/pc98/pc98/lpt.c	Sun Oct  5 21:25:35 1997
@@ -194,10 +194,15 @@
 #define	BIOS_PORTS	(short *)(KERNBASE+BIOS_LPT_PORTS)
 #define	BIOS_MAX_LPT	4
 #endif
 
 
+#ifdef PC98
+#ifndef PC98PLIP
+#define PC98_NOPLIP
+#endif /*!PC98PLIP*/
+#endif /*PC98*/
 #ifndef DEBUG
 #define lprintf (void)
 #else
 #define lprintf		if (lptflag) printf
 static int volatile lptflag = 1;
@@ -384,12 +389,22 @@
 
 int
 lptprobe(struct isa_device *dvp)
 {
 #ifdef PC98
+#ifndef PC98PLIP
 	return 8;
 #else
+        /* to Full centronics */
+	outb(dvp->id_iobase+lpt_mod_full,
+	  inb(dvp->id_iobase+lpt_mod_full)|LPM_FULL);
+	/* write 0's to control port and data port */
+	outb(dvp->id_iobase+lpt_control, 0);
+	outb(dvp->id_iobase+lpt_data, 0);
+	return IO_LPTSIZE ;
+#endif	/*PC98PLIP*/
+#else
 	int		port;
 	static short	next_bios_lpt = 0;
 	int		status;
 	u_char		data;
 	u_char		mask;
@@ -456,11 +471,11 @@
 
 	unit = isdp->id_unit;
 	sc = lpt_sc + unit;
 	sc->sc_port = isdp->id_iobase;
 	sc->sc_primed = 0;	/* not primed yet */
-#ifdef PC98
+#ifdef PC98_NOPLIP
 	outb(sc->sc_port+lpt_pstb_ctrl,	LPC_DIS_PSTB);	/* PSTB disable */
 	outb(sc->sc_port+lpt_control,	LPC_MODE8255);	/* 8255 mode set */
 	outb(sc->sc_port+lpt_control,	LPC_NIRQ8);	/* IRQ8 inactive */
 	outb(sc->sc_port+lpt_control,	LPC_NPSTB);	/* PSTB inactive */
 	outb(sc->sc_port+lpt_pstb_ctrl,	LPC_EN_PSTB);	/* PSTB enable */
@@ -722,11 +737,11 @@
 			}
 		}
 
 		/* output data */
 		outb(port+lpt_data, ch);
-#ifdef PC98
+#ifdef PC98_NOPLIP
 		DELAY(1);
 		outb(port+lpt_control, LPC_PSTB);
 		DELAY(1);
 		outb(port+lpt_control, LPC_NPSTB);
 #else
@@ -989,11 +1004,11 @@
 	if ((!(ifp->if_flags & IFF_UP)) && (ifp->if_flags & IFF_RUNNING)) {
 	    outb(sc->sc_port + lpt_control, 0x00);
 	    ifp->if_flags &= ~IFF_RUNNING;
 	    break;
 	}
-#ifdef PC98
+#ifdef PC98_NOPLIP
 	/* XXX */
 	return ENOBUFS;
 #else
 	if (((ifp->if_flags & IFF_UP)) && (!(ifp->if_flags & IFF_RUNNING))) {
 	    if (lpinittables())
@@ -1095,15 +1110,21 @@
 		 int lpt_ctrl_port = sc->sc_port + lpt_control;
 	int len, s, j;
 	u_char *bp;
 	u_char c, cl;
 	struct mbuf *top;
+#ifdef LINUX_PLIP_COMPAT_MORE
+	long longspin ;
+#endif
 
 	s = splhigh();
 
 	if (sc->sc_if.if_flags & IFF_LINK0) {
 
+#ifdef LINUX_PLIP_COMPAT_MORE
+	    outb(lpt_ctrl_port, LPC_SEL|LPC_NINIT);
+#endif
 	    /* Ack. the request */
 	    outb(lpt_data_port, 0x01);
 
 	    /* Get the packet length */
 	    j = clpinbyte(LPMAXSPIN2, lpt_data_port, lpt_stat_port);
@@ -1149,10 +1170,18 @@
 	    top = m_devget(sc->sc_ifbuf + CLPIPHDRLEN, len, 0, &sc->sc_if, 0);
 	    if (top) {
 	        IF_ENQUEUE(&ipintrq, top);
 	        schednetisr(NETISR_IP);
 	    }
+#ifdef LINUX_PLIP_COMPAT_MORE
+	    outb(lpt_data_port, 0);
+	    longspin = LPMAXSPIN2 ;
+	    while(inb(lpt_stat_port) != 0x80)
+		if(!--longspin) {
+		    lprintf("@") ;
+		}
+#endif
 	    goto done;
 	}
 	while ((inb(lpt_stat_port) & LPIP_SHAKE)) {
 	    len = sc->sc_if.if_mtu + LPIPHDRLEN;
 	    bp  = sc->sc_ifbuf;
@@ -1224,10 +1253,15 @@
 	    sc->sc_if.if_flags &= ~IFF_RUNNING;
 	    sc->sc_iferrs=0;
 	}
 
     done:
+#ifdef LINUX_PLIP_COMPAT_MORE
+	if (sc->sc_if.if_flags & IFF_LINK0) {
+	    outb(lpt_ctrl_port, LPC_ENA|LPC_SEL|LPC_NINIT);
+	}
+#endif
 	splx(s);
 	return;
 }
 
 static inline int
@@ -1266,17 +1300,22 @@
 
     err = 1;			/* assume we're aborting because of an error */
 
     s = splhigh();
 
-#ifndef PC98
+#ifndef PC98_NOPLIP
+#ifndef LINUX_PLIP_COMPAT_MORE
     /* Suspend (on laptops) or receive-errors might have taken us offline */
     outb(lpt_ctrl_port, LPC_ENA);
-#endif
+#endif /*!LINUX_PLIP_COMPAT_MORE*/
+#endif /*!PC98_NOPLIP*/
 
     if (ifp->if_flags & IFF_LINK0) {
 
+#ifdef LINUX_PLIP_COMPAT_MORE
+	outb(lpt_ctrl_port, LPC_SEL|LPC_NINIT);
+#endif
 	if (!(inb(lpt_stat_port) & CLPIP_SHAKE)) {
 	    lprintf("&");
 	    lptintr(ifp->if_unit);
 	}
 
@@ -1335,10 +1374,13 @@
 
 	nend:
 	if (err)  {				/* if we didn't timeout... */
 		ifp->if_oerrors++;
 		lprintf("X");
+#ifdef LINUX_PLIP_COMPAT_MORE
+		outb(lpt_data_port, 0);
+#endif
 	} else {
 		ifp->if_opackets++;
 		ifp->if_obytes += m->m_pkthdr.len;
 	}
 
@@ -1346,10 +1388,13 @@
 
 	if (!(inb(lpt_stat_port) & CLPIP_SHAKE)) {
 		lprintf("^");
 		lptintr(ifp->if_unit);
 	}
+#ifdef LINUX_PLIP_COMPAT_MORE
+	outb(lpt_ctrl_port, LPC_ENA|LPC_SEL|LPC_NINIT);
+#endif
 	(void) splx(s);
 	return 0;
     }
 
     if (inb(lpt_stat_port) & LPIP_SHAKE) {
diff -ru5 _sys_orig/pc98/pc98/pc98.h sys/pc98/pc98/pc98.h
--- _sys_orig/pc98/pc98/pc98.h	Tue Feb 11 23:24:50 1997
+++ sys/pc98/pc98/pc98.h	Sun Oct  5 21:31:13 1997
@@ -67,10 +67,11 @@
 #define IO_DMAPG	0x021		/* DMA Page Registers */
 #define IO_COM1		0x030		/* 8251A RS232C serial I/O (int) */
 #define IO_SYSPORT	0x031		/* 8255A System Port */
 #define IO_PPI		0x035		/* Programmable Peripheral Interface */
 #define IO_LPT		0x040		/* 8255A Printer Port */
+#define IO_LPT_NEW	0x140		/* AT-Compatible Printer Port */
 #define IO_KBD		0x041		/* 8251A Keyboard */
 #define IO_NMI		0x050		/* NMI Control */
 #define IO_WAIT		0x05F		/* WAIT 0.6 us */
 #define IO_GDC1		0x060		/* 7220 GDC Text Control */
 #define IO_TIMER1	0x071		/* 8253C Timer */
$B!A!A(B $B%Q%C%A(B : $B$3$3$^$G(B $B!A!A(B

<<$B$*$^$1(B>>
$B%Y%s%A%^!<%/(B:
  $B%^%7%s$N9=@.(B:
    TOWNS   FM TOWNSII MA
                 CPU:  i486SX-33MHz
                          + Am486DX4($BFbIt(B100MHz)$B%*!<%P!<%I%i%$%V(B
                 memory: 32MB
                 Video Card: $B85$+$iFbB"$7$F$$$k$b$N(B
                             $B%"%/%;%i%l!<%7%g%s5!G=$J$7(B
                             $B%a%b%j(B1MB $B:GBg2rA|EY(B 1024x768 256$B?'(B
                 HDD: SCSI 340MB($BFbB"(B) + 500MB($B30IU$1(B)
                 $B%Q%i%l%k(Bx1 ($B%"%s%U%'%N!<%k(B 24pin), $B%7%j%"%k(Bx1
                 CD-ROM: $BI8=`$G(B 2$BG\B.$r<BAu(B
                 $B%9%W%i%$%H(BRAM: 128KB
    AT$B8_495!(B $B<+:n(B
                 CPU:           Intel Pentium 133MHz
                 Mother Board:  ASUSTeK  P/I-P55T2P4/200
                                           Second Cache 512KB
                                AWARD Modular BIOS v4.51PG
                                AWARD Plug and Play BIOS Extention v1.0A
                                06/10/96-82430HX-PI55T2P4-00
                                $B%Q%i%l%k(Bx1, $B%7%j%"%k(Bx2
                 memory:        EDO 32MB x 2
                 Video Card :   ATI  Graphic Xpression PCI
                                   (Mach 64 DRAM 2MB)
                 HDD (EIDE):    WESTERN DIGITAL  Caviar 32100 (2.1GB)
                                Windows95 $B$HMFNL$r@^H>(B
                 SCSI Adapter:  Adaptec  AHA-2940K
                 Ether Card:    I/O DATA  LA/T-ISA
                                   (10Base-T, NE2000 $B8_49(B)
                 CD-ROM Drive:  PLEXTER  8PLEX PX-83CS (8$BG\B.(B)
    9821$B%N!<%H(B PC-9821Nm
                 CPU: i486DX2-50MHz
                 memory: 33MB
                 $B%G%#%9%W%l%$(B: $BGr9u1U>=(B 9.5inch 640x480/400
                 HDD: 1400MB IDE
                 PCCARD: Ether Card  Melco LPC-T
                 $B%Q%i%l%k(Bx1 ($B%"%s%U%'%N!<%k%O!<%U%T%C%A(B 36pin)
                 $B%7%j%"%k(Bx1
                 $B%l%8%e!<%`M-8z$N@_Dj$G1?MQ(B

  $B%+!<%M%k(B:
     TOWNS: Linux TOWNS 1.3.30$B%Y!<%9(B $BDL>o(B + PLIP + PLIP$B<~$j$NHy=$@5(B
     AT$B8_495!(B: FreeBSD 2.1.5-RELEASE GENERIC + options MFS
     9821$B%N!<%H(B: 
       $B9C(B: FreeBSD(98) 2.2.1-ALPHA GENERIC98 + options MFS,PLIP
       $B25(B: FreeBSD(98) 2.2.1-ALPHA GENERIC98 + options MFS,PLIP,
                                                   LINUX_PLIP_COMPAT
  $B7k@~(B:
     AT$B8_495!(B <-> 9821$B%N!<%H(B:  $B>e5-;2>H(B
     AT$B8_495!(B <-> TOWNS:
        AT$B8_495!B&(B        TOWNS$BB&(B
        D0     ( 2)-------POW  (17)
        D1     ( 3)-------THSN (22)
        D2     ( 4)-------FUSE (21)
        D3     ( 5)-----+-PE   (12)
                        +-ACK  (10)
        D4     ( 6)-------BUSY (11)
        ERR    (15)-------D0   ( 2)
        SEL    (13)-------D1   ( 3)
        PAPOUT (12)-------D2   ( 4)
        ACK    (10)-------D3   ( 5)
        BUSY   (11)-------D4   ( 6)           
        GND    (25)-+-----GND  (24)
     9821$B%N!<%H(B <-> TOWNS:
        9821$B%N!<%HB&(B      TOWNS$BB&(B
        PDB0   ( 2)-------POW  (17)
        PDB1   ( 3)-------THSN (22)
        PDB2   ( 4)-------FUSE (21)
        PDB3   ( 5)-----+-PE   (12)
                        +-ACK  (10)
        PDB4   ( 6)-------BUSY (11)
        ERROR  (32)-------D0   ( 2)
        SELECT (13)-------D1   ( 3)
        PE     (12)-------D2   ( 4)
        ACK    (10)-------D3   ( 5)
        BUSY   (11)-------D4   ( 6)           
        GND    (30)-+-----GND  (24)

  $B7WB,BP>](B:
    $B3F%^%7%s4V$G(B 100KB $BDxEY$N%U%!%$%k$r(B FTP $B$GE>Aw$9$k(B.
    $B%U%!%$%k$O%a%b%j%U%!%$%k%7%9%F%`>e$KCV$/(B.
    (FreeBSD:MFS,  Linux-TOWNS:$B%9%W%i%$%H(BRAM$B>e$N%U%!%$%k%7%9%F%`(B)
    $BCM$O(B, ftp $B$,I=<($9$kE>Aw%l!<%H$K$D$$$F(B 10$B2sDxEY$NJ?6Q$r<h$k(B.

  $B7k2L(B:
    $B0J2<$G(B server, client $B$O(B FTP $B$N(B server $BB&(B, client $BB&$r<($7(B,
    <- $B$H(B -> $B$OE>AwJ}8~$r<($9(B.

   $B!&(BAT$B8_495!(B       <->        9821$B%N!<%H(B($B9C(B)
      <FreeBSD$B%M%$%F%#%V%b!<%I(B>
      server                    client
               <- 69 KB/sec
                 100 KB/sec ->
      client                    server
               <- 74 KB/sec
                  84 KB/sec ->
      <Linux$B8_49%b!<%I(B>
      server                    client
               <- 64 KB/sec
                  89 KB/sec ->
      client                    server
               <- 69 KB/sec
                  81 KB/sec ->

   $B!&(BAT$B8_495!(B       <->        TOWNS
      server                    client
               <- 70 KB/sec
                  67 KB/sec ->
      client                    server
               <- 55 KB/sec
                  44 KB/sec ->

   $B!&(B9821$B%N!<%H(B($B9C(B) <->        TOWNS
      server                    client
               <- 66 KB/sec
                  46 KB/sec ->
      client                    server
               <- 36 KB/sec
                  39 KB/sec ->

   $B!&(B9821$B%N!<%H(B($B25(B) <->        TOWNS
      server                    client
               <- 80 KB/sec
                  60 KB/sec ->
      client                    server
               <- 46 KB/sec
                  46 KB/sec ->

--
matoba@marmalade.rim.or.jp $BE*>l!w>.ED86(B $B!V$4$a$s$M!$$^$@D>$;$F$J$$$s$@!W(B


----Next_Part(Mon_Oct_13_10:48:19_1997)----
