diff -u --recursive --new-file dosemu0.53old//ChangeLog dosemu0.53//ChangeLog
--- dosemu0.53old//ChangeLog	Fri Aug  5 21:21:11 1994
+++ dosemu0.53//ChangeLog	Mon Aug  8 22:54:21 1994
@@ -1,3 +1,13 @@
+Mon Aug 08 1994 Jmaclean
+
+-	Thanks to Rob for pointing out the NCURSES raw() command
+	interference by way of his messages, the ICRNL thing should
+	be dispersed, and replaced with possible new bugs :-).
+-	CD-ROM extensions for DOSEMU with thanks to Karsten
+	Rucker (rucker@astro.uni-bonn.de).
+- 	Parser additions from Scottb. We are back to the NEW
+	parser. Developer/Tester beware :-).
+
 Fri Aug 05 1994 Jmaclean
 
 -	Added kludge to keyboard so that keypresses in non-console
diff -u --recursive --new-file dosemu0.53old//DOSEMU-HOWTO.ps dosemu0.53//DOSEMU-HOWTO.ps
--- dosemu0.53old//DOSEMU-HOWTO.ps	Fri Aug  5 21:21:11 1994
+++ dosemu0.53//DOSEMU-HOWTO.ps	Mon Aug  8 22:54:21 1994
@@ -1,13 +1,13 @@
 %!PS-Adobe-2.0
 %%Creator: dvips 5.516 Copyright 1986, 1993 Radical Eye Software
 %%Title: dosemu-HOWTO.dvi
-%%CreationDate: Sat Jul  9 15:41:23 1994
+%%CreationDate: Fri Aug  5 18:26:53 1994
 %%Pages: 16
 %%PageOrder: Ascend
 %%BoundingBox: 0 0 612 792
 %%EndComments
 %DVIPSCommandLine: dvips dosemu-HOWTO.dvi
-%DVIPSSource:  TeX output 1994.07.09:1541
+%DVIPSSource:  TeX output 1994.08.05:1826
 %%BeginProcSet: tex.pro
 /TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
 /X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72
@@ -808,7 +808,7 @@
 C00001C00001C00001C00001C00001E00000FF00007F80007F8000FF0001E00001C00001
 C00001C00001C00001C00001C00001C00001C00001C00003C000FF8000FF00007C000011
 207E9C16>125 D<1C303F78FFF8F7E061C00D057C9816>I E /Fi
-83 123 df<007E1F0001C1B1800303E3C00703C3C00E03C1800E01C0000E01C0000E01C0
+84 125 df<007E1F0001C1B1800303E3C00703C3C00E03C1800E01C0000E01C0000E01C0
 000E01C0000E01C0000E01C000FFFFFC000E01C0000E01C0000E01C0000E01C0000E01C0
 000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0
 000E01C0000E01C0007F87FC001A1D809C18>11 D<007E0001C1800301800703C00E03C0
@@ -996,32 +996,31 @@
 040007040007040003880003880003D80001D00001D00000E00000E00000E00000400000
 4000008000008000F08000F10000F300006600003C0000131A7F9116>I<7FFC70386038
 407040F040E041C003C0038007000F040E041C043C0C380870087038FFF80E127F9112>
-I E /Fj 11 118 df<FF0000000FF0FF0000000FF0FF0000000FF0FF0000000FF0FF0000

-000FF0FF0000000FF02C3C78BB3D>72 D<000007FE00000000003FFFC000000000FFFFF0

-FFFFF0000000003FFFC00000000007FE000000343E7BBC3F>79 D<FFFFFFFFFFFFF0FFFF
-FFFFFFFFF0FFFFFFFFFFFFF0FFFFFFFFFFFFF0FFFFFFFFFFFFF0000003FC000000000003
-FC000000000003FC000000000003FC000000000003FC000000000003FC000000000003FC
-000000000003FC000000000003FC000000000003FC000000000003FC000000000003FC00
+I<FFFFFFFFFF802901808B2A>124 D E /Fj 11 118 df<FF0000000FF0FF0000000FF0

+FF0000000FF0FF0000000FF0FF0000000FF0FF0000000FF02C3C78BB3D>72
+D<000007FE00000000003FFFC000000000FFFFF000000003FFFFFC00000007FFFFFE0000

+000000343E7BBC3F>79 D<FFFFFFFFFFFFF0FFFFFFFFFFFFF0FFFFFFFFFFFFF0FFFFFFFF
+FFFFF0FFFFFFFFFFFFF0000003FC000000000003FC000000000003FC000000000003FC00
 0000000003FC000000000003FC000000000003FC000000000003FC000000000003FC0000
 00000003FC000000000003FC000000000003FC000000000003FC000000000003FC000000
 000003FC000000000003FC000000000003FC000000000003FC000000000003FC00000000
@@ -1030,68 +1029,70 @@
 FC000000000003FC000000000003FC000000000003FC000000000003FC000000000003FC
 000000000003FC000000000003FC000000000003FC000000000003FC000000000003FC00
 0000000003FC000000000003FC000000000003FC000000000003FC000000000003FC0000
-00000003FC000000000003FC000000343C7DBB3B>84 D<FE0000003FF0000001FC7F0000

-000000FF00000007FC00004E3C7FBB51>87 D<0000001FC00000001FC00000001FC00000
-001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC0000000
+00000003FC000000000003FC000000000003FC000000000003FC000000000003FC000000
+000003FC000000000003FC000000000003FC000000000003FC000000000003FC00000034
+3C7DBB3B>84 D<FE0000003FF0000001FC7F0000003FF0000001F87F0000003FF0000003

+>87 D<0000001FC00000001FC00000001FC00000001FC00000001FC00000001FC0000000
 1FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001F
-C00000001FC00000001FC00000001FC0000FF01FC0003FFE1FC000FFFF1FC001FFFFDFC0
-03FFFFFFC007FF03FFC00FF800FFC00FF0007FC01FE0003FC03FC0001FC03F80001FC07F
-80001FC07F00001FC07F00001FC07F00001FC0FE00001FC0FE00001FC0FE00001FC0FE00
-001FC0FE00001FC0FE00001FC0FE00001FC0FE00001FC0FE00001FC0FE00001FC07F0000
-1FC07F00001FC07F00001FC07F80001FC03F80001FC03FC0003FC01FC0007FC01FE000FF
-C00FF801FFC007FE07FFC003FFFFDFC001FFFF9FC000FFFF1FC0003FFC1FC0000FE00000
-223D7DBB2C>100 D<0007F800003FFE00007FFF8001FFFFC003FFFFE007FC0FF00FF003
-F80FE001F81FC000FC1F80007C3F80007E3F00003E7F00003E7E00003E7E00001FFE0000
-1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000000FC000000FC000000FE0000
-007E0000007E0000007F0000007F0000003F0000003F8000001FC000021FE000060FF000
-1E07F8007E03FE03FE01FFFFFC00FFFFF8007FFFE0001FFF800003FC0020297DA726>I<
+C00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC0
+000FF01FC0003FFE1FC000FFFF1FC001FFFFDFC003FFFFFFC007FF03FFC00FF800FFC00F
+F0007FC01FE0003FC03FC0001FC03F80001FC07F80001FC07F00001FC07F00001FC07F00
+001FC0FE00001FC0FE00001FC0FE00001FC0FE00001FC0FE00001FC0FE00001FC0FE0000
+1FC0FE00001FC0FE00001FC0FE00001FC07F00001FC07F00001FC07F00001FC07F80001F
+C03F80001FC03FC0003FC01FC0007FC01FE000FFC00FF801FFC007FE07FFC003FFFFDFC0
+01FFFF9FC000FFFF1FC0003FFC1FC0000FE00000223D7DBB2C>100
+D<0007F800003FFE00007FFF8001FFFFC003FFFFE007FC0FF00FF003F80FE001F81FC000
+FC1F80007C3F80007E3F00003E7F00003E7E00003E7E00001FFE00001FFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFC000000FC000000FC000000FE0000007E0000007E0000
+007F0000007F0000003F0000003F8000001FC000021FE000060FF0001E07F8007E03FE03
+FE01FFFFFC00FFFFF8007FFFE0001FFF800003FC0020297DA726>I<FE000000FE000000
 FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000
 FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000
-FE000000FE000000FE000000FE01FE00FE07FFC0FE1FFFE0FE3FFFF0FE7FFFF8FEF80FF8
-FFE003FCFFC001FCFFC001FEFF8001FEFF0000FEFF0000FEFF0000FEFE0000FEFE0000FE
+FE000000FE01FE00FE07FFC0FE1FFFE0FE3FFFF0FE7FFFF8FEF80FF8FFE003FCFFC001FC
+FFC001FEFF8001FEFF0000FEFF0000FEFF0000FEFE0000FEFE0000FEFE0000FEFE0000FE
 FE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FE
 FE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FE
-FE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FE1F3C7ABB2C>104
-D<0001FE0001FE00FE07FFC007FFC0FE1FFFE01FFFE0FE3FFFF03FFFF0FE7FFFF87FFFF8
-FEF80FF8F80FF8FFE003FDE003FCFFC001FFC001FCFFC001FFC001FEFF8001FF8001FEFF
-0000FF0000FEFF0000FF0000FEFF0000FF0000FEFE0000FE0000FEFE0000FE0000FEFE00
+FE0000FEFE0000FEFE0000FEFE0000FE1F3C7ABB2C>104 D<0001FE0001FE00FE07FFC0
+07FFC0FE1FFFE01FFFE0FE3FFFF03FFFF0FE7FFFF87FFFF8FEF80FF8F80FF8FFE003FDE0
+03FCFFC001FFC001FCFFC001FFC001FEFF8001FF8001FEFF0000FF0000FEFF0000FF0000
+FEFF0000FF0000FEFE0000FE0000FEFE0000FE0000FEFE0000FE0000FEFE0000FE0000FE
+FE0000FE0000FEFE0000FE0000FEFE0000FE0000FEFE0000FE0000FEFE0000FE0000FEFE
+0000FE0000FEFE0000FE0000FEFE0000FE0000FEFE0000FE0000FEFE0000FE0000FEFE00
 00FE0000FEFE0000FE0000FEFE0000FE0000FEFE0000FE0000FEFE0000FE0000FEFE0000
 FE0000FEFE0000FE0000FEFE0000FE0000FEFE0000FE0000FEFE0000FE0000FEFE0000FE
-0000FEFE0000FE0000FEFE0000FE0000FEFE0000FE0000FEFE0000FE0000FEFE0000FE00
-00FEFE0000FE0000FEFE0000FE0000FEFE0000FE0000FEFE0000FE0000FEFE0000FE0000
-FEFE0000FE0000FEFE0000FE0000FEFE0000FE0000FE37277AA648>109
-D<0001FE0000000FFFC000003FFFF000007FFFF80001FFFFFE0003FF03FF0007F8007F80
-07F0003F800FE0001FC01FC0000FE01F800007E03F800007F03F000003F07F000003F87F
-000003F87E000001F8FE000001FCFE000001FCFE000001FCFE000001FCFE000001FCFE00
-0001FCFE000001FCFE000001FCFE000001FCFF000003FC7F000003F87F000003F87F0000
-03F83F800007F03FC0000FF01FC0000FE01FE0001FE00FF0003FC007FC00FF8003FF03FF
-0001FFFFFE0000FFFFFC00003FFFF000000FFFC0000001FE000026297EA72B>111
-D<003FF00001FFFE0007FFFFC00FFFFFE01FFFFFE01FC01FE03F0003C03F0000C07E0000
-007E0000007E0000007E0000007E0000007F0000007F8000003FE000003FFE00001FFFE0
-000FFFF80007FFFE0003FFFF0000FFFF80003FFFC00003FFE000003FE000000FE0000007
-F0000007F0000003F0000003F0000003F0400003F0600003F0780007E0FE000FE0FFC03F
-C0FFFFFFC07FFFFF801FFFFE0003FFFC00007FE0001C297EA721>115
-D<FE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000
-FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000
-FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000
-FEFE0000FEFE0001FEFE0001FEFE0003FEFE0007FEFF000FFE7FC03FFE7FFFFEFE3FFFFC
-FE1FFFF0FE0FFFC0FE03FE00001F277AA52C>117 D E end
+0000FEFE0000FE0000FE37277AA648>109 D<0001FE0000000FFFC000003FFFF000007F
+FFF80001FFFFFE0003FF03FF0007F8007F8007F0003F800FE0001FC01FC0000FE01F8000
+07E03F800007F03F000003F07F000003F87F000003F87E000001F8FE000001FCFE000001
+FCFE000001FCFE000001FCFE000001FCFE000001FCFE000001FCFE000001FCFE000001FC
+FF000003FC7F000003F87F000003F87F000003F83F800007F03FC0000FF01FC0000FE01F
+E0001FE00FF0003FC007FC00FF8003FF03FF0001FFFFFE0000FFFFFC00003FFFF000000F
+FFC0000001FE000026297EA72B>111 D<003FF00001FFFE0007FFFFC00FFFFFE01FFFFF
+E01FC01FE03F0003C03F0000C07E0000007E0000007E0000007E0000007E0000007F0000
+007F8000003FE000003FFE00001FFFE0000FFFF80007FFFE0003FFFF0000FFFF80003FFF
+C00003FFE000003FE000000FE0000007F0000007F0000003F0000003F0000003F0400003
+F0600003F0780007E0FE000FE0FFC03FC0FFFFFFC07FFFFF801FFFFE0003FFFC00007FE0
+001C297EA721>115 D<FE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE00
+00FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE00
+00FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE00
+00FEFE0000FEFE0000FEFE0000FEFE0001FEFE0001FEFE0003FEFE0007FEFF000FFE7FC0
+3FFE7FFFFEFE3FFFFCFE1FFFF0FE0FFFC0FE03FE00001F277AA52C>117
+D E end
 %%EndProlog
 %%BeginSetup
 %%Feature: *Resolution 300dpi
@@ -1101,8 +1102,8 @@
 %%Page: 1 1
 1 0 bop 0 99 a Fj(The)29 b(dosemu)d(HO)n(WTO)p 0 156
 1950 12 v 14 213 a Fi(edited)14 b(b)o(y)g(Mik)o(e)g(Deisher,)g
-Fh(deisher@dspsun.ea)o(s.asu)o(.edu)557 b Fi(v0.52.1,)12
-b(9)h(July)h(1994)0 366 y Fg(This)h(is)e(the)i(`F)o(requently)h(Ask)o
+Fh(deisher@dspsun.ea)o(s.asu)o(.edu)560 b Fi(v0.52.2,)12
+b(5)h(Aug)h(1994)0 366 y Fg(This)h(is)e(the)i(`F)o(requently)h(Ask)o
 (ed)f(Questions')f(\(F)m(A)o(Q\))e(/)i(HO)o(WTO)g(do)q(cument)f(fo)o(r)
 h(dosemu.)i(The)f(most)c(up-to-date)k(version)0 422 y(of)e(the)i
 (dosemu-HO)o(WTO)c(ma)o(y)g(b)q(e)k(found)g(in)f Fh(dspsun.eas.asu.ed)o
@@ -1121,123 +1122,126 @@
 b Fi(1)62 1024 y(1.4)42 b(What)13 b(do)q(cumen)o(tation)g(is)h(a)o(v)n
 (ailable)d(for)j(dosem)o(u?)21 b Fd(:)g(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f
 (:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)
-66 b Fi(2)0 1144 y Fe(2)38 b(Compiling)13 b(and)i(installi)o(ng)e
-(dosem)o(u)1176 b(2)62 1222 y Fi(2.1)42 b(Where)14 b(are)h(the)f
-(installation)e(instructions?)34 b Fd(:)21 b(:)f(:)g(:)h(:)f(:)g(:)g(:)
+66 b Fi(2)62 1102 y(1.5)42 b(Ho)o(w)13 b(do)h(I)g(submit)e(c)o(hanges)j
+(or)f(additions)f(to)h(the)g(HO)o(WTO?)34 b Fd(:)20 b(:)h(:)f(:)g(:)g
+(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)66
+b Fi(2)0 1222 y Fe(2)38 b(Compiling)13 b(and)i(installi)o(ng)e(dosem)o
+(u)1176 b(2)62 1300 y Fi(2.1)42 b(Where)14 b(are)h(the)f(installation)e
+(instructions?)34 b Fd(:)21 b(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h
+(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)
+h(:)66 b Fi(2)62 1379 y(2.2)42 b(Wh)o(y)13 b(w)o(on't)g(dosem)o(u)g
+(0.52)g(compile?)j Fd(:)21 b(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)
 h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h
-(:)f(:)g(:)g(:)h(:)66 b Fi(2)62 1300 y(2.2)42 b(Wh)o(y)13
-b(w)o(on't)g(dosem)o(u)g(0.52)g(compile?)j Fd(:)21 b(:)f(:)g(:)g(:)h(:)
-f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f
-(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)66 b Fi(2)62
-1379 y(2.3)42 b(Ho)o(w)13 b(can)h(I)g(b)q(e)h(a)e(b)q(one-head)i(when)f
-(installing)e(dosem)o(u?)k Fd(:)k(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f
-(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)66
-b Fi(2)0 1498 y Fe(3)38 b(Hard)16 b(disk)f(setup)1527
-b(3)62 1577 y Fi(3.1)42 b(Ho)o(w)13 b(do)h(I)g(use)g(m)o(y)f(hard)h
-(disk)f(with)h(dosem)o(u?)33 b Fd(:)20 b(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)
-g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g
-(:)g(:)h(:)66 b Fi(3)62 1655 y(3.2)42 b(Can)13 b(I)h(use)h(m)o(y)d
-(stac)o(k)o(ed/double-spaced/sup)q(er-store)q(d)k(disk?)32
-b Fd(:)20 b(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h
-(:)f(:)g(:)g(:)h(:)66 b Fi(4)62 1733 y(3.3)42 b(I)14
-b(get)g(an)f(error)i(message)f(ab)q(out)g(m)o(y)e(con\014g.sys)i
-(\014le)g(but)g(it)f(lo)q(oks)h(\014ne.)k Fd(:)i(:)h(:)f(:)g(:)h(:)f(:)
-g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)66 b Fi(4)0 1853
-y Fe(4)38 b(Serial)14 b(p)q(orts)h(and)g(mice)1416 b(4)62
-1931 y Fi(4.1)42 b(Where)14 b(are)h(the)f(\(microsoft)f(compatible\))f
-(mouse)h(driv)o(ers?)h Fd(:)21 b(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)
-h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)66 b
-Fi(4)62 2009 y(4.2)42 b(Wh)o(y)13 b(do)q(esn't)h(the)h(mouse)e(driv)o
-(er)h(w)o(ork?)21 b Fd(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g
+(:)f(:)g(:)g(:)h(:)66 b Fi(3)62 1457 y(2.3)42 b(Ho)o(w)13
+b(can)h(I)g(b)q(e)h(a)e(b)q(one-head)i(when)f(installing)e(dosem)o(u?)k
+Fd(:)k(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f
+(:)g(:)h(:)f(:)g(:)g(:)h(:)66 b Fi(3)0 1577 y Fe(3)38
+b(Hard)16 b(disk)f(setup)1527 b(3)62 1655 y Fi(3.1)42
+b(Ho)o(w)13 b(do)h(I)g(use)g(m)o(y)f(hard)h(disk)f(with)h(dosem)o(u?)33
+b Fd(:)20 b(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g
+(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)66
+b Fi(3)62 1733 y(3.2)42 b(Can)13 b(I)h(use)h(m)o(y)d(stac)o(k)o
+(ed/double-spaced/sup)q(er-store)q(d)k(disk?)32 b Fd(:)20
+b(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g
+(:)g(:)h(:)66 b Fi(4)62 1811 y(3.3)42 b(I)14 b(get)g(an)f(error)i
+(message)f(ab)q(out)g(m)o(y)e(con\014g.sys)i(\014le)g(but)g(it)f(lo)q
+(oks)h(\014ne.)k Fd(:)i(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f
+(:)g(:)g(:)h(:)66 b Fi(5)0 1931 y Fe(4)38 b(Serial)14
+b(p)q(orts)h(and)g(mice)1416 b(5)62 2009 y Fi(4.1)42
+b(Where)14 b(are)h(the)f(\(microsoft)f(compatible\))f(mouse)h(driv)o
+(ers?)h Fd(:)21 b(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g
+(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)66 b Fi(5)62 2088
+y(4.2)42 b(Wh)o(y)13 b(do)q(esn't)h(the)h(mouse)e(driv)o(er)h(w)o(ork?)
+21 b Fd(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g
+(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)66
+b Fi(6)62 2166 y(4.3)42 b(Wh)o(y)13 b(do)q(es)i(dosem)o(u)e(clobb)q(er)
+h(COM4?)30 b Fd(:)20 b(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g
 (:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)
-g(:)h(:)66 b Fi(5)62 2088 y(4.3)42 b(Wh)o(y)13 b(do)q(es)i(dosem)o(u)e
-(clobb)q(er)h(COM4?)30 b Fd(:)20 b(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g
-(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)
-h(:)f(:)g(:)g(:)h(:)66 b Fi(5)62 2166 y(4.4)42 b(Ho)o(w)13
-b(do)h(I)g(use)g(dosem)o(u)f(o)o(v)o(er)h(the)h(serial)f(p)q(orts?)37
-b Fd(:)20 b(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h
-(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)66 b Fi(5)62
-2244 y(4.5)42 b(Ho)o(w)13 b(can)h(I)g(switc)o(h)g(b)q(et)o(w)o(een)i
-(dosem)o(u)d(and)g(a)h(shell)g(o)o(v)o(er)g(the)g(serial)g(line?)40
+g(:)h(:)66 b Fi(6)62 2244 y(4.4)42 b(Ho)o(w)13 b(do)h(I)g(use)g(dosem)o
+(u)f(o)o(v)o(er)h(the)h(serial)f(p)q(orts?)37 b Fd(:)20
+b(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g
+(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)66 b Fi(6)62 2322
+y(4.5)42 b(Ho)o(w)13 b(can)h(I)g(switc)o(h)g(b)q(et)o(w)o(een)i(dosem)o
+(u)d(and)g(a)h(shell)g(o)o(v)o(er)g(the)g(serial)g(line?)40
 b Fd(:)20 b(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)66
-b Fi(6)0 2364 y Fe(5)38 b(Dosem)o(u)14 b(with)h(m)o(ultipl)o(e)e(users)
-1278 b(6)62 2442 y Fi(5.1)42 b(Can)13 b(I)h(use)h(dosem)o(u)e(on)h(a)f
+b Fi(7)0 2442 y Fe(5)38 b(Dosem)o(u)14 b(with)h(m)o(ultipl)o(e)e(users)
+1278 b(7)62 2520 y Fi(5.1)42 b(Can)13 b(I)h(use)h(dosem)o(u)e(on)h(a)f
 (m)o(ulti-user)g(system?)18 b Fd(:)i(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)
 h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g
-(:)h(:)66 b Fi(6)62 2520 y(5.2)42 b(Ho)o(w)13 b(do)h(I)g(get)g(Net)o(w)
-o(are)h(access)g(from)d(dosem)o(u?)32 b Fd(:)20 b(:)h(:)f(:)g(:)g(:)h
-(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)
-f(:)g(:)g(:)h(:)66 b Fi(7)p eop
+(:)h(:)66 b Fi(7)p eop
 %%Page: 2 2
-2 1 bop 0 -84 1950 3 v 0 -100 a Fe(CONTENTS)1661 b Fi(2)0
-81 y Fe(6)38 b(dosem)o(u)14 b(and)h(X-windo)o(ws)1370
-b(7)62 159 y Fi(6.1)42 b(Can)13 b(I)h(run)g(dosem)o(u)f(in)h(console)g
+2 1 bop 0 -84 1950 3 v 0 -100 a Fe(CONTENTS)1661 b Fi(2)62
+81 y(5.2)42 b(Ho)o(w)13 b(do)h(I)g(get)g(Net)o(w)o(are)h(access)g(from)
+d(dosem)o(u?)32 b Fd(:)20 b(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g
+(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)66
+b Fi(8)0 201 y Fe(6)38 b(dosem)o(u)14 b(and)h(X-windo)o(ws)1370
+b(8)62 279 y Fi(6.1)42 b(Can)13 b(I)h(run)g(dosem)o(u)f(in)h(console)g
 (mo)q(de)f(while)g(running)h(X?)23 b Fd(:)e(:)f(:)g(:)h(:)f(:)g(:)g(:)h
 (:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)66
-b Fi(7)62 237 y(6.2)42 b(Is)14 b(it)f(p)q(ossible)i(to)e(run)i(dosem)o
+b Fi(8)62 357 y(6.2)42 b(Is)14 b(it)f(p)q(ossible)i(to)e(run)i(dosem)o
 (u)e(in)g(an)h(xterm?)36 b Fd(:)20 b(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)
 h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g
-(:)h(:)66 b Fi(8)0 357 y Fe(7)38 b(Video)15 b(and)g(sound)1510
-b(8)62 435 y Fi(7.1)42 b(Exiting)13 b(from)f(dosem)o(u)h(giv)o(es)h(me)
+(:)h(:)66 b Fi(8)0 477 y Fe(7)38 b(Video)15 b(and)g(sound)1510
+b(9)62 555 y Fi(7.1)42 b(Exiting)13 b(from)f(dosem)o(u)h(giv)o(es)h(me)
 e(a)i(screen)i(full)d(of)g(garbage.)20 b Fd(:)g(:)g(:)h(:)f(:)g(:)g(:)h
 (:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)66
-b Fi(8)62 514 y(7.2)42 b(Ho)o(w)13 b(do)h(I)g(get)g(dosem)o(u)f(to)h(w)
+b Fi(9)62 633 y(7.2)42 b(Ho)o(w)13 b(do)h(I)g(get)g(dosem)o(u)f(to)h(w)
 o(ork)f(with)h(m)o(y)e(T)m(riden)o(t/Actix/other)i(video)g(card?)32
 b Fd(:)20 b(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)66
-b Fi(8)62 592 y(7.3)42 b(Wh)o(y)13 b(do)q(esn't)h(m)o(y)f(soundcard)h
+b Fi(9)62 712 y(7.3)42 b(Wh)o(y)13 b(do)q(esn't)h(m)o(y)f(soundcard)h
 (soft)o(w)o(are)g(w)o(ork)g(with)f(dosem)o(u?)20 b Fd(:)g(:)h(:)f(:)g
-(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)66
-b Fi(9)0 712 y Fe(8)38 b(Other)15 b(Hardw)o(are)1520
-b(9)62 790 y Fi(8.1)42 b(Ho)o(w)13 b(do)h(I)g(get)g(m)o(y)e(xxxxx)i
+(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)45
+b Fi(10)0 831 y Fe(8)38 b(Other)15 b(Hardw)o(are)1496
+b(10)62 909 y Fi(8.1)42 b(Ho)o(w)13 b(do)h(I)g(get)g(m)o(y)e(xxxxx)i
 (device)g(w)o(orking)f(under)i(dosem)o(u?)h Fd(:)k(:)g(:)h(:)f(:)g(:)g
-(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)66
-b Fi(9)0 909 y Fe(9)38 b(Problems)14 b(and)h(\014xes)1442
-b(10)62 988 y Fi(9.1)42 b(Wh)o(y)13 b(is)h(the)g(cursor)h(p)q(osition)e
-(wrong?)33 b Fd(:)20 b(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g
+(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)45
+b Fi(10)0 1029 y Fe(9)38 b(Problems)14 b(and)h(\014xes)1442
+b(11)62 1107 y Fi(9.1)42 b(Wh)o(y)13 b(is)h(the)g(cursor)h(p)q(osition)
+e(wrong?)33 b Fd(:)20 b(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g
 (:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)
-g(:)h(:)45 b Fi(10)62 1066 y(9.2)d(Wh)o(y)13 b(do)q(es)i(m)o(y)d
+g(:)h(:)45 b Fi(11)62 1186 y(9.2)d(Wh)o(y)13 b(do)q(es)i(m)o(y)d
 (busmouse)h(act)i(funn)o(y)e(under)i(dosem)o(u)e(0.52?)i
 Fd(:)20 b(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g
-(:)h(:)f(:)g(:)g(:)h(:)45 b Fi(10)62 1144 y(9.3)d(Wh)o(y)13
+(:)h(:)f(:)g(:)g(:)h(:)45 b Fi(11)62 1264 y(9.3)d(Wh)o(y)13
 b(w)o(on't)g(dosem)o(u)g(run)h(a)g(second)h(time)e(after)h(exiting)f
 (in)g(console)i(mo)q(de?)24 b Fd(:)c(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)
-f(:)g(:)g(:)h(:)45 b Fi(10)62 1222 y(9.4)d(Some)12 b(dos)i
+f(:)g(:)g(:)h(:)45 b Fi(11)62 1342 y(9.4)d(Some)12 b(dos)i
 (applications)f(still)g(do)h(not)g(detect)h(DPMI)f(under)h(dosem)o
 (u0.52.)21 b Fd(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h
-(:)45 b Fi(10)62 1301 y(9.5)d(Wh)o(y)13 b(do)q(es)i(dosem)o(u)e(giv)o
+(:)45 b Fi(11)62 1420 y(9.5)d(Wh)o(y)13 b(do)q(es)i(dosem)o(u)e(giv)o
 (e)g("divide)g(o)o(v)o(er\015o)o(w")g(errors)j(after)e(running)f(for)h
 (more)f(than)h(24-hours?)31 b Fd(:)20 b(:)g(:)h(:)45
-b Fi(10)62 1379 y(9.6)d(Wh)o(y)13 b(will)f(dosem)o(u)h(run)i(in)e(a)h
+b Fi(11)62 1499 y(9.6)d(Wh)o(y)13 b(will)f(dosem)o(u)h(run)i(in)e(a)h
 (term)f(but)h(not)g(in)f(the)i(console?)42 b Fd(:)20
 b(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g
-(:)g(:)h(:)45 b Fi(11)62 1457 y(9.7)d(Ho)o(w)13 b(can)h(I)g(sp)q(eed)i
+(:)g(:)h(:)45 b Fi(11)62 1577 y(9.7)d(Ho)o(w)13 b(can)h(I)g(sp)q(eed)i
 (up)e(dosem)o(u?)33 b Fd(:)20 b(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f
 (:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)
-f(:)g(:)h(:)f(:)g(:)g(:)h(:)45 b Fi(11)62 1535 y(9.8)d(My)14
+f(:)g(:)h(:)f(:)g(:)g(:)h(:)45 b Fi(12)62 1655 y(9.8)d(My)14
 b(CDR)o(OM)f(driv)o(e)h(has)g(problems)f(reading)g(some)g(\014les)i
 (under)f(dosem)o(u.)36 b Fd(:)20 b(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h
-(:)f(:)g(:)g(:)h(:)45 b Fi(11)62 1614 y(9.9)d(Where)14
+(:)f(:)g(:)g(:)h(:)45 b Fi(12)62 1733 y(9.9)d(Where)14
 b(did)g(the)g(debugging)g(output)g(go?)20 b Fd(:)g(:)g(:)h(:)f(:)g(:)h
 (:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)
-h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)45 b Fi(12)62 1692 y(9.10)21
+h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)45 b Fi(13)62 1812 y(9.10)21
 b(Wh)o(y)13 b(do)q(es)i(dosem)o(u)e(lo)q(c)o(k)g(up)h(after)g(one)g(k)o
 (eystrok)o(e?)34 b Fd(:)20 b(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)
 f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)45
-b Fi(12)62 1770 y(9.11)21 b(Wh)o(y)13 b(are)h(m)o(y)f(k)o(eystrok)o(es)
+b Fi(13)62 1890 y(9.11)21 b(Wh)o(y)13 b(are)h(m)o(y)f(k)o(eystrok)o(es)
 i(ec)o(ho)q(ed)g(tt)o(wwiiccee??)k Fd(:)h(:)h(:)f(:)g(:)g(:)h(:)f(:)g
 (:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)
-g(:)h(:)45 b Fi(12)62 1848 y(9.12)21 b(Wh)o(y)13 b(are)h(c)o(haracters)
+g(:)h(:)45 b Fi(13)62 1968 y(9.12)21 b(Wh)o(y)13 b(are)h(c)o(haracters)
 i Fh(<)e Fi(128)f(highligh)o(ted)f(and)i(blinking?)39
 b Fd(:)21 b(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f
-(:)g(:)h(:)f(:)g(:)g(:)h(:)45 b Fi(13)0 1968 y Fe(10)14
+(:)g(:)h(:)f(:)g(:)g(:)h(:)45 b Fi(14)0 2088 y Fe(10)14
 b(Con)o(tributi)o(ng)e(to)k(the)f(dosem)o(u)f(pro)s(ject)1089
-b(13)62 2046 y Fi(10.1)21 b(Who)13 b(is)h(resp)q(onsible)h(for)e(dosem)
+b(14)62 2166 y Fi(10.1)21 b(Who)13 b(is)h(resp)q(onsible)h(for)e(dosem)
 o(u?)20 b Fd(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)
 g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g
-(:)g(:)h(:)45 b Fi(13)62 2125 y(10.2)21 b(I)14 b(w)o(an)o(t)f(to)h
+(:)g(:)h(:)45 b Fi(14)62 2244 y(10.2)21 b(I)14 b(w)o(an)o(t)f(to)h
 (help.)k(Who)13 b(should)h(I)g(con)o(tact?)24 b Fd(:)c(:)h(:)f(:)g(:)h
 (:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)
-h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)45 b Fi(14)p eop
+h(:)f(:)g(:)h(:)f(:)g(:)g(:)h(:)45 b Fi(15)p eop
 %%Page: 3 3
 3 2 bop 0 -84 1950 3 v 0 -100 a Fe(1.)37 b(The)16 b(prelimi)o(nari)o
 (es)1483 b Fi(3)0 81 y Ff(1)69 b(The)23 b(prelimi)o(naries)0
@@ -1289,8 +1293,8 @@
 2529 y(is)h(still)f(a)g(go)q(o)q(d)h(source)h(of)e(information.)i(It)f
 (is)g(distributed)h(with)e(dosem)o(u.)p eop
 %%Page: 4 4
-4 3 bop 0 -84 1950 3 v 0 -100 a Fe(2.)37 b(Compiling)13
-b(and)i(installi)o(ng)e(dosem)o(u)1167 b Fi(4)62 81 y(The)18
+4 3 bop 0 -84 1950 3 v 0 -100 a Fe(2.)32 b(Compiling)13
+b(and)i(installi)o(ng)d(dosem)o(u)1173 b Fi(4)62 81 y(The)18
 b("dosem)o(u)e(No)o(vice's)h(Altering)h(Guide")e(or)i(D)o(ANG)e(is)h(a)
 g(road)h(map)d(to)i(the)h(inner)g(w)o(orkings)f(of)f(dosem)o(u.)28
 b(It)0 138 y(is)20 b(designed)g(for)f(the)i(adv)o(en)o(turous,)g(those)
@@ -1311,655 +1315,685 @@
 (in)g(a)g(while)f(to)h(the)g(MSDOS)g(c)o(hannel)g(of)g(Lin)o(ux)f
 (Activists.)19 b(The)14 b(most)f(recen)o(t)i(v)o(ersion)f(can)g(b)q(e)0
 635 y(found)f(on)h Fh(dspsun.eas.asu.edu)o(:/pub)o(/dose)o(mu)p
-Fi(.)0 804 y Ff(2)69 b(Compiling)20 b(and)k(installing)c(dosem)n(u)0
-933 y Fc(2.1)56 b(Where)17 b(are)i(the)f(installation)f(instructions?)0
-1038 y Fi(The)d(installation)e(instructions)j(are)f(in)g(the)g(\014le,)
-g("Quic)o(kStart",)f(included)h(in)f(the)i(distribution.)0
-1184 y Fc(2.2)56 b(Wh)n(y)18 b(w)n(on't)h(dosem)n(u)f(0.52)h(compile?)0
-1289 y Fi(\(7/9/94\))62 1367 y(There)k(is)e(a)g(bug)g(in)g(the)h(mak)o
+Fi(.)0 781 y Fc(1.5)56 b(Ho)n(w)19 b(do)g(I)f(submit)g(c)n(hanges)h(or)
+f(additions)h(to)f(the)g(HO)n(WTO?)0 886 y Fi(The)c(preferred)h(metho)q
+(d)e(is)g(to)h(edit)f(the)i(\014le,)e Fh(dosemu-HOWTO-xx.)o(x.sgm)o(l)e
+Fi(to)i(incorp)q(orate)h(the)g(c)o(hanges,)g(create)h(a)e(di\013)0
+942 y(\014le)h(b)o(y)g(t)o(yping)f(something)f(lik)o(e)327
+1062 y Fh(diff)21 b(original-file)e(new-file)62 1182
+y Fi(and)i(send)h(it)e(to)h Fh(deisher@dspsun.e)o(as.as)o(u.edu)o
+Fi(.)36 b(If)21 b(y)o(ou)f(do)h(not)f(kno)o(w)h(SGML,)f(that's)g(ok.)39
+b(Changes)21 b(or)0 1239 y(new)c(information)c(in)j(an)o(y)g(form)f
+(will)g(b)q(e)i(accepted.)27 b(Creating)17 b(the)g(di\013)f(\014le)g
+(just)h(mak)o(es)e(it)h(easier)i(on)e(the)h(HO)o(WTO)0
+1296 y(main)o(tainer.)f(:-\))0 1465 y Ff(2)69 b(Compiling)20
+b(and)k(installing)c(dosem)n(u)0 1593 y Fc(2.1)56 b(Where)17
+b(are)i(the)f(installation)f(instructions?)0 1699 y Fi(The)d
+(installation)e(instructions)j(are)f(in)g(the)g(\014le,)g("Quic)o
+(kStart",)f(included)h(in)f(the)i(distribution.)0 1844
+y Fc(2.2)56 b(Wh)n(y)18 b(w)n(on't)h(dosem)n(u)f(0.52)h(compile?)0
+1949 y Fi(\(7/9/94\))62 2028 y(There)k(is)e(a)g(bug)g(in)g(the)h(mak)o
 (e\014le)e(of)h(dosem)o(u)f(0.52.)40 b(The)22 b(mak)o(e\014le)e(exp)q
 (ects)j(the)f(source)h(to)e(b)q(e)h(lo)q(cated)f(in)0
-1424 y Fh(/usr/src/dosemu??)o(??)p Fi(.)32 b(Either)21
+2084 y Fh(/usr/src/dosemu??)o(??)p Fi(.)32 b(Either)21
 b(install)d(the)i(source)h(under)g Fh(/usr/src)d Fi(or)h(try)h
-Fh(make)h(clean)g(;)h(make)f(config)f(;)0 1480 y(make)h(dep)g(;)h(make)
-f(all)p Fi(.)62 1559 y(Of)14 b(course,)h(this)f(is)f(not)h(the)h(only)e
-(p)q(ossible)h(reason)g(\(see)i(b)q(elo)o(w\).)0 1705
+Fh(make)h(clean)g(;)h(make)f(config)f(;)0 2141 y(make)h(dep)g(;)h(make)
+f(all)p Fi(.)62 2219 y(Of)14 b(course,)h(this)f(is)f(not)h(the)h(only)e
+(p)q(ossible)h(reason)g(\(see)i(b)q(elo)o(w\).)0 2365
 y Fc(2.3)56 b(Ho)n(w)19 b(can)g(I)g(b)r(e)f(a)g(b)r(one-head)g(when)h
-(installing)f(dosem)n(u?)0 1810 y Fi(a.k.a.)e(T)m(op)e(T)m(en)g(Stupid)
-f(Mistak)o(es)i(installing)d(dosem)o(u)h(\(7/9/94\))0
-1929 y Fh(1.)21 b(Don't)g(read)g(the)g(QuickStart)f(Guide.)0
-1986 y(2.)h(Try)h(to)f(compile)f(with)h(a)h(kernel)e(older)h(than)g
-(1.0.8.)0 2043 y(3.)g(Try)h(to)f(compile)f(with)h(an)h(*unpatched*)d
-(kernel)i(>=)g(1.0.8.)0 2100 y(4.)g(Try)h(to)f(compile)f(with)h(a)h
-(kernel)e(older)h(than)g(1.1.12.)0 2156 y(5.)g(Use)h(dosemu)e(with)h(a)
-h(kernel)e(that)h(does)g(not)g(have)g(IPC)g(compiled)g(in.)0
-2213 y(6.)g(Compile)g(with)g(gcc)g(older)g(than)g(2.5.8)f(or)i(libc)f
-(older)f(than)h(4.5.21.)0 2270 y(7.)g(Forget)g(to)g(edit)g(your)g
-(/etc/dosemu.conf)e(file.)0 2327 y(8.)i(Forget)g(to)g(run)g("FDISK)g
-(/mbr")g(on)g(your)g(hdimage.)0 2384 y(9.)g(Forget)g(to)g(run)g
-("mkpartition")f(when)h(using)f(partition)g(access.)0
-2440 y(10.)h(Don't)g(compile)f(dosemu)h(with)g(sufficient)f
-(priveledges)f(\(i.e.,)i(root\).)p eop
+(installing)f(dosem)n(u?)0 2470 y Fi(a.k.a.)e(T)m(op)e(T)m(en)g(Stupid)
+f(Mistak)o(es)i(installing)d(dosem)o(u)h(\(7/9/94\))p
+eop
 %%Page: 5 5
-5 4 bop 0 -84 1950 3 v 0 -100 a Fe(3.)32 b(Hard)16 b(disk)e(setup)1524
-b Fi(5)62 81 y Fh([)p Fi(Please)17 b(send)g(me)e(y)o(our)h(stupid)g
-(mistak)o(es)f(for)h(inclusion)g(in)f(this)i(list.)24
+5 4 bop 0 -84 1950 3 v 0 -100 a Fe(3.)37 b(Hard)16 b(disk)f(setup)1518
+b Fi(5)0 81 y Fh(1.)21 b(Don't)g(read)g(the)g(QuickStart)f(Guide.)0
+138 y(2.)h(Try)h(to)f(compile)f(with)h(a)h(kernel)e(older)h(than)g
+(1.0.8.)0 194 y(3.)g(Try)h(to)f(compile)f(with)h(an)h(*unpatched*)d
+(kernel)i(>=)g(1.0.8.)0 251 y(4.)g(Try)h(to)f(compile)f(with)h(a)h
+(kernel)e(older)h(than)g(1.1.12.)0 308 y(5.)g(Use)h(dosemu)e(with)h(a)h
+(kernel)e(that)h(does)g(not)g(have)g(IPC)g(compiled)g(in.)0
+365 y(6.)g(Compile)g(with)g(gcc)g(older)g(than)g(2.5.8)f(or)i(libc)f
+(older)f(than)h(4.5.21.)0 422 y(7.)g(Forget)g(to)g(edit)g(your)g
+(/etc/dosemu.conf)e(file.)0 478 y(8.)i(Forget)g(to)g(run)g("FDISK)g
+(/mbr")g(on)g(your)g(hdimage.)0 535 y(9.)g(Forget)g(to)g(run)g
+("mkpartition")f(when)h(using)f(partition)g(access.)0
+592 y(10.)h(Don't)g(compile)f(dosemu)h(with)g(sufficient)f(priveledges)
+f(\(i.e.,)i(root\).)62 712 y([)p Fi(Please)c(send)g(me)e(y)o(our)h
+(stupid)g(mistak)o(es)f(for)h(inclusion)g(in)f(this)i(list.)24
 b(I)16 b(promise)f(y)o(ou)h(will)f(remain)f(anon)o(ymous.)0
-138 y(;-\)])0 307 y Ff(3)69 b(Hard)24 b(disk)e(setup)0
-436 y Fc(3.1)56 b(Ho)n(w)19 b(do)g(I)f(use)h(m)n(y)e(hard)i(disk)f
-(with)h(dosem)n(u?)0 541 y Fi(First,)12 b(moun)o(t)e(y)o(our)i(dos)g
+768 y(;-\)])0 938 y Ff(3)69 b(Hard)24 b(disk)e(setup)0
+1066 y Fc(3.1)56 b(Ho)n(w)19 b(do)g(I)f(use)h(m)n(y)e(hard)i(disk)f
+(with)h(dosem)n(u?)0 1171 y Fi(First,)12 b(moun)o(t)e(y)o(our)i(dos)g
 (hard)g(disk)g(partition)f(as)g(a)h(Lin)o(ux)f(sub)q(directory)m(.)18
 b(F)m(or)12 b(example,)e(y)o(ou)i(could)f(create)j(a)d(directory)0
-597 y(in)i(Lin)o(ux)h(suc)o(h)g(as)g(/dos)g(\(mkdir)e(-m)h(755)g
-(/dos\))h(and)f(add)h(a)g(line)f(lik)o(e)65 709 y Fh(/dev/hda1)151
-b(/dos)108 b(msdos)65 b(umask=022)62 820 y Fi(to)17 b(y)o(our)f
-(/etc/fstab.)26 b(\(In)17 b(this)f(example,)g(the)h(hard)f(disk)h(is)f
-(moun)o(ted)g(read-only)m(.)25 b(Y)m(ou)15 b(ma)o(y)g(w)o(an)o(t)h(to)g
-(moun)o(t)f(it)0 877 y(read/write)e(b)o(y)f(replacing)h("022")e(with)h
-("000")f(and)i(using)f(the)h(-m)e(777)h(option)f(with)i(mkdir\).)j(No)o
-(w)c Fh(mount)21 b(/dos)p Fi(.)16 b(No)o(w)0 934 y(y)o(ou)d(can)i(add)e
-(a)h(line)f(lik)o(e)44 1045 y Fh(lredir)20 b(d:)i(linux\\fs/dos)62
-1157 y Fi(to)15 b(the)g(A)o(UTOEXEC.BA)m(T)h(\014le)e(in)h(y)o(our)f
-(hdimage)f(\(see)j(the)g(commen)o(ts)d(on)h(LREDIR)g(b)q(elo)o(w\).)21
-b(On)15 b(a)f(m)o(ulti-user)0 1214 y(system)g(y)o(ou)f(ma)o(y)f(w)o(an)
-o(t)i(to)f(use)44 1325 y Fh(lredir)20 b(d:)i(linux\\fs\\${home)o(})62
-1436 y Fi(where)17 b("home")c(is)i(the)h(name)e(of)h(an)g(en)o
+1228 y(in)i(Lin)o(ux)h(suc)o(h)g(as)g(/dos)g(\(mkdir)e(-m)h(755)g
+(/dos\))h(and)f(add)h(a)g(line)f(lik)o(e)65 1340 y Fh(/dev/hda1)151
+b(/dos)108 b(msdos)65 b(umask=022)62 1451 y Fi(to)17
+b(y)o(our)f(/etc/fstab.)26 b(\(In)17 b(this)f(example,)g(the)h(hard)f
+(disk)h(is)f(moun)o(ted)g(read-only)m(.)25 b(Y)m(ou)15
+b(ma)o(y)g(w)o(an)o(t)h(to)g(moun)o(t)f(it)0 1508 y(read/write)e(b)o(y)
+f(replacing)h("022")e(with)h("000")f(and)i(using)f(the)h(-m)e(777)h
+(option)f(with)i(mkdir\).)j(No)o(w)c Fh(mount)21 b(/dos)p
+Fi(.)16 b(No)o(w)0 1565 y(y)o(ou)d(can)i(add)e(a)h(line)f(lik)o(e)44
+1676 y Fh(lredir)20 b(d:)i(linux\\fs/dos)62 1788 y Fi(to)15
+b(the)g(A)o(UTOEXEC.BA)m(T)h(\014le)e(in)h(y)o(our)f(hdimage)f(\(see)j
+(the)g(commen)o(ts)d(on)h(LREDIR)g(b)q(elo)o(w\).)21
+b(On)15 b(a)f(m)o(ulti-user)0 1844 y(system)g(y)o(ou)f(ma)o(y)f(w)o(an)
+o(t)i(to)f(use)44 1956 y Fh(lredir)20 b(d:)i(linux\\fs\\${home)o(})62
+2067 y Fi(where)17 b("home")c(is)i(the)h(name)e(of)h(an)g(en)o
 (vironmen)o(tal)e(v)n(ariable)i(that)g(con)o(tains)g(the)h(lo)q(cation)
-e(of)h(the)h(dos)f(directory)0 1493 y(\(/dos)f(in)f(this)h(example\).)
-62 1571 y(Tim)e(Bird)i(\(Tim)p 342 1571 13 2 v 13 w(R)p
-386 1571 V 15 w(Bird@No)o(v)o(ell.COM\))f(states)i(that)f(LREDIR)f
-(users)j(should)62 1650 y(b)q(e)e(careful)e(when)i(they)f(use)g(LREDIR)
-f(in)g(the)h(auto)q(exec,)h(b)q(ecause)g(COMMAND.COM)f(will)e(con)o
-(tin)o(ue)i(parsing)f(the)0 1707 y(auto)q(exec.bat)18
-b(from)e(the)h(redirected)j(driv)o(e)d(as)h(the)g(same)e(\014le)h
-(o\013set)i(where)f(it)f(left)g(o\013)g(in)g(the)h(auto)q(exec.bat)g
-(on)f(the)0 1763 y(ph)o(ysical)c(driv)o(e.)18 b(F)m(or)12
-b(this)i(reason,)f(it)g(is)g(safest)h(to)f(ha)o(v)o(e)g(the)h(auto)q
-(exec.bat)g(on)f(the)h(redirected)h(driv)o(e)f(and)f(the)g(ph)o(ysical)
-0 1820 y(driv)o(e)h(\(diskimage\))e(b)q(e)i(the)h(same.)62
-1898 y(Rob)q(ert)f(D.)g(W)m(arren)f(\()p Fh(rw11258@xx.acs.appst)o
-(ate.e)o(du)p Fi(\))e(rep)q(orted)k(\(4/28/94\))e(that)62
-1977 y(I)g(b)q(o)q(ot)g(o\013)g(a)g(small)e(hdimage)g(\014le)j(\(less)g
-(than)f(1)f(MB)i(-)f(and)g(t)o(wice)g(as)h(large)e(as)i(needs)g(b)q(e)g
-(at)f(that\),)g(and)g(the)g(next)h(to)0 2033 y(last)g(line)f(in)g(m)o
-(y)g(con\014g.sys)h(\014le)g(on)f(the)i(hdimage)d(b)q(o)q(ot)i(image)e
-(is:)174 2202 y Fh(install=c:\\lredir.e)o(xe)19 b(LINUX\\FS\\home/do)o
-(s)62 2313 y Fi(This)d(will)e(execute)k(lredir)e(just)g(b)q(efore)h
-(the)f(command)d(in)o(terpreter)18 b(runs.)25 b(And)16
-b(I)g(ha)o(v)o(e)f(successfully)j(run)e(it)f(with)0 2370
-y(b)q(oth)f(command.com)9 b(and)14 b(4DOS.)f(This)h(eliminates)e(the)j
-(o\013set)g(problem)d(using)i(lredir)g(in)f(auto)q(exec.bat.)p
+e(of)h(the)h(dos)f(directory)0 2124 y(\(/dos)f(in)f(this)h(example\).)
+62 2202 y(|||||||)62 2281 y(Tim)e(Bird)i(\(Tim)p 342
+2281 13 2 v 13 w(R)p 386 2281 V 15 w(Bird@No)o(v)o(ell.COM\))f(states)i
+(that)f(LREDIR)f(users)j(should)62 2359 y(b)q(e)e(careful)e(when)i
+(they)f(use)g(LREDIR)f(in)g(the)h(auto)q(exec,)h(b)q(ecause)g
+(COMMAND.COM)f(will)e(con)o(tin)o(ue)i(parsing)f(the)0
+2416 y(auto)q(exec.bat)18 b(from)e(the)h(redirected)j(driv)o(e)d(as)h
+(the)g(same)e(\014le)h(o\013set)i(where)f(it)f(left)g(o\013)g(in)g(the)
+h(auto)q(exec.bat)g(on)f(the)0 2472 y(ph)o(ysical)c(driv)o(e.)18
+b(F)m(or)12 b(this)i(reason,)f(it)g(is)g(safest)h(to)f(ha)o(v)o(e)g
+(the)h(auto)q(exec.bat)g(on)f(the)h(redirected)h(driv)o(e)f(and)f(the)g
+(ph)o(ysical)0 2529 y(driv)o(e)h(\(diskimage\))e(b)q(e)i(the)h(same.)p
 eop
 %%Page: 6 6
-6 5 bop 0 -84 1950 3 v 0 -100 a Fe(4.)37 b(Serial)14
-b(p)q(orts)h(and)g(mice)1407 b Fi(6)0 81 y Fc(3.2)56
-b(Can)19 b(I)g(use)f(m)n(y)g(stac)n(k)n(ed/double-spaced/sup)r
-(er-stored)e(disk?)0 186 y Fi(A)o(t)i(this)g(time,)f(compressed)i(driv)
-o(es)f(cannot)g(b)q(e)h(accessed)h(via)d(the)i(redirector)g(\(lredir)g
-(or)f(em)o(ufs\).)29 b(Ho)o(w)o(ev)o(er,)19 b(man)o(y)0
-243 y(p)q(eople)14 b(ha)o(v)o(e)g(had)g(success)i(b)o(y)e(simply)e
-(uncommen)o(ting)f(the)65 354 y Fh(disk)21 b({)h(wholedisk)e
-("/dev/hda")g(})174 b(#)21 b(1st)g(partition)f(on)i(1st)f(disk)62
-466 y Fi(line)14 b(in)f(their)h(dosem)o(u)f(con\014g)h(\014le.)k
-(Others)e(ha)o(v)o(e)d(had)h(success)j(using)65 577 y
-Fh(disk)k({)h(partition)e("/dev/hda1")f(1)j(})62 688
-y Fi(and)14 b(running)g(the)g Fh(mkpartition)e Fi(utilit)o(y)g
+6 5 bop 0 -84 1950 3 v 0 -100 a Fe(3.)37 b(Hard)16 b(disk)f(setup)1518
+b Fi(6)62 81 y(|||||||)62 159 y(Rob)q(ert)14 b(D.)g(W)m(arren)f(\()p
+Fh(rw11258@xx.acs.appst)o(ate.e)o(du)p Fi(\))e(rep)q(orted)k
+(\(4/28/94\))e(that)62 237 y(I)g(b)q(o)q(ot)g(o\013)g(a)g(small)e
+(hdimage)g(\014le)j(\(less)g(than)f(1)f(MB)i(-)f(and)g(t)o(wice)g(as)h
+(large)e(as)i(needs)g(b)q(e)g(at)f(that\),)g(and)g(the)g(next)h(to)0
+294 y(last)g(line)f(in)g(m)o(y)g(con\014g.sys)h(\014le)g(on)f(the)i
+(hdimage)d(b)q(o)q(ot)i(image)e(is:)174 462 y Fh(install=c:\\lredir.e)o
+(xe)19 b(LINUX\\FS\\home/do)o(s)62 574 y Fi(This)d(will)e(execute)k
+(lredir)e(just)g(b)q(efore)h(the)f(command)d(in)o(terpreter)18
+b(runs.)25 b(And)16 b(I)g(ha)o(v)o(e)f(successfully)j(run)e(it)f(with)0
+631 y(b)q(oth)f(command.com)9 b(and)14 b(4DOS.)f(This)h(eliminates)e
+(the)j(o\013set)g(problem)d(using)i(lredir)g(in)f(auto)q(exec.bat.)0
+776 y Fc(3.2)56 b(Can)19 b(I)g(use)f(m)n(y)g(stac)n(k)n
+(ed/double-spaced/sup)r(er-stored)e(disk?)0 881 y Fi(A)o(t)i(this)g
+(time,)f(compressed)i(driv)o(es)f(cannot)g(b)q(e)h(accessed)h(via)d
+(the)i(redirector)g(\(lredir)g(or)f(em)o(ufs\).)29 b(Ho)o(w)o(ev)o(er,)
+19 b(man)o(y)0 938 y(p)q(eople)14 b(ha)o(v)o(e)g(had)g(success)i(b)o(y)
+e(simply)e(uncommen)o(ting)f(the)65 1050 y Fh(disk)21
+b({)h(wholedisk)e("/dev/hda")g(})174 b(#)21 b(1st)g(partition)f(on)i
+(1st)f(disk)62 1161 y Fi(line)14 b(in)f(their)h(dosem)o(u)f(con\014g)h
+(\014le.)k(Others)e(ha)o(v)o(e)d(had)h(success)j(using)65
+1273 y Fh(disk)k({)h(partition)e("/dev/hda1")f(1)j(})62
+1384 y Fi(and)14 b(running)g(the)g Fh(mkpartition)e Fi(utilit)o(y)g
 (\(included)i(in)g(the)g(dosem)o(u)f(distribution\).)62
-767 y Fh([)p Fi(W)-5 b(ARNING:)16 b(Mak)o(e)g(sure)i(y)o(our)e(dos)g
+1462 y Fh([)p Fi(W)-5 b(ARNING:)16 b(Mak)o(e)g(sure)i(y)o(our)e(dos)g
 (partitions)h(are)f(not)h(moun)o(ted)e(and)h(writeable)h(from)e(Lin)o
-(ux)h(while)g(y)o(ou)g(are)0 823 y(using)j(dosem)o(u)f(with)g
+(ux)h(while)g(y)o(ou)g(are)0 1519 y(using)j(dosem)o(u)f(with)g
 (wholedisk)h(or)f(partition)h(access.)34 b(This)19 b(is)g(an)g(easy)g
 (w)o(a)o(y)f(to)h(destro)o(y)g(the)h(data)e(on)h(y)o(our)g(dos)0
-880 y(partition.])62 958 y(Holger)14 b(Sc)o(hemel)f(\()p
-Fh(q99492@pbhrzx.uni-p)o(aderb)o(orn.d)o(e)p Fi(\))e(rep)q(orted)16
-b(\(2/10/94\))c(that)62 1037 y(W)m(orks)h(ev)o(en)g(\014ne)h(under)g
-(DOSEMU)f(with)g(MS-DOS)g(6.0.)k(If)12 b(y)o(ou)h(ha)o(v)o(e)g
-(problems,)e(then)j(y)o(ou)f(ha)o(v)o(e)f(to)h(edit)g(the)h(\014le)0
-1094 y('DBLSP)m(A)o(CE.INI')f(man)o(ually)e(and)i(c)o(hange)h(the)h
-(disk)f(letter)g(to)g(the)h(letter)g(y)o(our)e(driv)o(e)h(gets)h(under)
-f(DOSEMU.)62 1172 y(Darren)h(J)f(Mo\013at)g(\()p Fh(moffatd@dcs.gla.)o
-(ac.uk)o Fi(\))d(also)j(rep)q(orted)h(\(3/27/94\))62
-1250 y("...use)d(6.2)f(if)h(y)o(ou)f(can)i(get)g(it!!)j(Just)e(mak)o(e)
-c(sure)k(y)o(ou)e(ha)o(v)o(e)g(a)g(lilo)e(b)q(o)q(ot)j(disk)f(on)g
-(hand)g(since)h(dos)g(6)p Fb(f)p Fi(.2)p Fb(g)e Fi(will)g(c)o(hange)0
-1307 y(the)j(MBR)g(of)g(the)g(b)q(o)q(ot)g(HD.")0 1453
-y Fc(3.3)56 b(I)18 b(get)g(an)h(error)f(message)f(ab)r(out)i(m)n(y)e
-(con\014g.sys)h(\014le)g(but)h(it)f(lo)r(oks)g(\014ne.)0
-1558 y Fi(Corey)c(Sw)o(eeney)h(\()p Fh(corey@amiganet.xnet)o(.com)p
-Fi(\))c(rep)q(orted)k(\(12/8/93\))d(that)62 1636 y(Sometimes)g(when)i
-(loading)f(con\014g.sys)h(y)o(ou)f(will)f(get)i(a)g(error)h(message)e
-(sa)o(ying)g(something)g(lik)o(e)g("error)h(in)g(line)f(6)h(of)0
-1693 y(con\014g.sys".)k(The)c(problem)f(will)f(go)i(a)o(w)o(a)o(y)e(if)
-h(y)o(ou)h(add)g(sev)o(eral)g(carriage)g(returns)h(at)f(the)h(end)f(of)
-f(y)o(our)h(con\014g.sys.)0 1862 y Ff(4)69 b(Serial)22
-b(p)r(orts)h(and)h(mice)0 1991 y Fc(4.1)56 b(Where)17
-b(are)i(the)f(\(microsoft)f(compatible\))f(mouse)h(driv)n(ers?)0
-2096 y Fi(T)m(om)12 b(Kim)o(ball)f(\(tk@pssparc2.o)q(c.com\))i(rep)q
-(orted)j(\(11/24/93\))c(that)62 2174 y(Sev)o(eral)k(p)q(eople)g(said)f
-(to)h(use)g(a)g(di\013eren)o(t)g(mouse)f(driv)o(er)h(and)g(suggested)h
-(some.)22 b(I)16 b(found)f(a)g(couple)h(that)g(seem)f(to)0
-2231 y(w)o(ork)f(\014ne.)65 2342 y Fh(oak.oakland.edu:/pu)o(b/msd)o
-(os/mo)o(use/m)o(ouse7)o(01.z)o(ip)62 b(\(mscmouse\))65
-2399 y(oak.oakland.edu:/pu)o(b/msd)o(os/mo)o(use/g)o(mous1)o(02.z)o(ip)
-g(\(gmouse\))p eop
+1576 y(partition.])62 1654 y(|||||||)62 1732 y(If)14
+b(LILO)g(is)g(installed,)e(the)j(ab)q(o)o(v)o(e)e(will)g(not)h(w)o
+(ork.)j(Ho)o(w)o(ev)o(er...)62 1810 y(Thomas)c(Mo)q(c)o(kridge)h(\()p
+Fh(thomas@aztec.co.z)o(a)p Fi(\))d(rep)q(orted)16 b(\(8/5/94\))c(that)
+62 1889 y(T)m(o)h(b)q(o)q(ot)h(dosem)o(u)f(with)h(LILO)g(and)f(Stac)o
+(k)o(er)i(4.0)e(I)h(did)f(a)h(little)f(w)o(ork)h(around...)62
+1967 y(1.)k Fh(dd)13 b Fi(the)i(MBR)f(to)g(a)f(\014le.)18
+b(\(or)c(norton)g(utilit)o(y)m(,)e(etc.,)i(\014rst)g(512)f(b)o(ytes\))
+62 2045 y(2.)18 b(Bo)q(ot)c(dos)g(\(from)e(full)h(b)q(o)q(ot)h(not)g
+(em)o(u\),)e(do)i(a)f(fdisk)h(/m)o(br,)e(mak)o(e)g(y)o(our)i(dos)g
+(partition)f(activ)o(e)h(with)f(\(dos\))i(fdisk.)62 2123
+y(3.)j(Cop)o(y)13 b(the)i(new)f(MBR)g(to)g(a)f(\014le.)62
+2202 y(4.)18 b(Replace)c(the)h(original)d(MBR)62 2280
+y(5.)18 b(Cop)o(y)13 b(the)i(second)g(MBR)f(to)f(/v)n(ar/lib/dosem)o
+(u/partition.)o(hda?)i(\(Whic)o(hev)o(er)g(is)e(y)o(our)h(dos)g
+(partition\))62 2358 y(6.)k(Set)c(dosem)o(u.conf)327
+2470 y Fh(disk)21 b({partition)f("/dev/hda?)f(?"})p eop
 %%Page: 7 7
 7 6 bop 0 -84 1950 3 v 0 -100 a Fe(4.)37 b(Serial)14
-b(p)q(orts)h(and)g(mice)1407 b Fi(7)0 81 y Fc(4.2)56
+b(p)q(orts)h(and)g(mice)1407 b Fi(7)62 81 y(7.)18 b(Start)c(dosem)o(u)f
+(and)h(and)g(v)o(oila!)i(No)e(LILO.)62 159 y(|||||||)62
+237 y(Holger)g(Sc)o(hemel)f(\()p Fh(q99492@pbhrzx.uni-p)o(aderb)o
+(orn.d)o(e)p Fi(\))e(rep)q(orted)16 b(\(2/10/94\))c(that)62
+316 y(W)m(orks)h(ev)o(en)g(\014ne)h(under)g(DOSEMU)f(with)g(MS-DOS)g
+(6.0.)k(If)12 b(y)o(ou)h(ha)o(v)o(e)g(problems,)e(then)j(y)o(ou)f(ha)o
+(v)o(e)f(to)h(edit)g(the)h(\014le)0 372 y('DBLSP)m(A)o(CE.INI')f(man)o
+(ually)e(and)i(c)o(hange)h(the)h(disk)f(letter)g(to)g(the)h(letter)g(y)
+o(our)e(driv)o(e)h(gets)h(under)f(DOSEMU.)62 451 y(|||||||)62
+529 y(Darren)h(J)f(Mo\013at)g(\()p Fh(moffatd@dcs.gla.)o(ac.uk)o
+Fi(\))d(also)j(rep)q(orted)h(\(3/27/94\))62 607 y("...use)d(6.2)f(if)h
+(y)o(ou)f(can)i(get)g(it!!)j(Just)e(mak)o(e)c(sure)k(y)o(ou)e(ha)o(v)o
+(e)g(a)g(lilo)e(b)q(o)q(ot)j(disk)f(on)g(hand)g(since)h(dos)g(6)p
+Fb(f)p Fi(.2)p Fb(g)e Fi(will)g(c)o(hange)0 664 y(the)j(MBR)g(of)g(the)
+g(b)q(o)q(ot)g(HD.")0 810 y Fc(3.3)56 b(I)18 b(get)g(an)h(error)f
+(message)f(ab)r(out)i(m)n(y)e(con\014g.sys)h(\014le)g(but)h(it)f(lo)r
+(oks)g(\014ne.)0 915 y Fi(Corey)c(Sw)o(eeney)h(\()p Fh
+(corey@amiganet.xnet)o(.com)p Fi(\))c(rep)q(orted)k(\(12/8/93\))d(that)
+62 993 y(Sometimes)g(when)i(loading)f(con\014g.sys)h(y)o(ou)f(will)f
+(get)i(a)g(error)h(message)e(sa)o(ying)g(something)g(lik)o(e)g("error)h
+(in)g(line)f(6)h(of)0 1050 y(con\014g.sys".)k(The)c(problem)f(will)f
+(go)i(a)o(w)o(a)o(y)e(if)h(y)o(ou)h(add)g(sev)o(eral)g(carriage)g
+(returns)h(at)f(the)h(end)f(of)f(y)o(our)h(con\014g.sys.)0
+1219 y Ff(4)69 b(Serial)22 b(p)r(orts)h(and)h(mice)0
+1348 y Fc(4.1)56 b(Where)17 b(are)i(the)f(\(microsoft)f(compatible\))f
+(mouse)h(driv)n(ers?)0 1453 y Fi(T)m(om)12 b(Kim)o(ball)f
+(\(tk@pssparc2.o)q(c.com\))i(rep)q(orted)j(\(11/24/93\))c(that)62
+1531 y(Sev)o(eral)k(p)q(eople)g(said)f(to)h(use)g(a)g(di\013eren)o(t)g
+(mouse)f(driv)o(er)h(and)g(suggested)h(some.)22 b(I)16
+b(found)f(a)g(couple)h(that)g(seem)f(to)0 1588 y(w)o(ork)f(\014ne.)65
+1699 y Fh(oak.oakland.edu:/pu)o(b/msd)o(os/mo)o(use/m)o(ouse7)o(01.z)o
+(ip)62 b(\(mscmouse\))65 1756 y(oak.oakland.edu:/pu)o(b/msd)o(os/mo)o
+(use/g)o(mous1)o(02.z)o(ip)g(\(gmouse\))0 1902 y Fc(4.2)56
 b(Wh)n(y)18 b(do)r(esn't)g(the)g(mouse)f(driv)n(er)h(w)n(ork?)0
-186 y Fi(Scott)c(D.)f(Hea)o(vner)i(\()p Fh(sdh@fishmonger.nouu)o(cp)p
-Fi(\))c(rep)q(orted)k(\(11/27/93\))e(that)62 264 y(If)k(y)o(ou)f(start)
-h(the)g(mouse)f(driv)o(er)h(and)g(it)f(just)h(hangs)g(\(it)f(migh)o(t)f
-(actually)g(tak)o(e)i(30-60s\),)f(but)h(if)f(y)o(ou)g(are)h(w)o(aiting)
-0 321 y(longer)d(than)g(a)f(min)o(ute)g(for)g(the)i(mouse)e(driv)o(er)h
-(to)g(start,)g(remo)o(v)o(e)f(an)o(y)g("timer")f(lines)i(in)g(y)o(our)f
-(con\014g)h(\014le.)0 467 y Fc(4.3)56 b(Wh)n(y)18 b(do)r(es)g(dosem)n
-(u)g(clobb)r(er)g(COM4?)0 572 y Fi(Rob)13 b(Janssen)i(\()p
-Fh(rob@pe1chl.ampr.org)p Fi(\))c(rep)q(orted)k(\(3/24/94\))d(that)62
-650 y(According)h(to)e Fh(jmorriso@bogomips.e)o(e.ubc)o(.ca)p
-Fi(,)e("dosem)o(u)h(still)h(clobb)q(ers)i(COM4)f(\(0x2e8,)g(IR)o(Q)g
-(5\).)17 b(0x2e8)11 b(isn't)0 707 y(in)i(p)q(orts)p Fb(fg)i
-Fi(in)e(con\014g.)18 b(I)c(ha)o(v)o(e)g(to)f(run)i(setserial)f
-(/dev/cua3)g(irq)g(5)f(on)h(it)f(after)h(dosem)o(u)f(exits.")62
-785 y(This)h(is)g(caused)h(b)o(y)e(y)o(our)h(V)o(GA)f(BIOS.)h(I)g(ha)o
-(v)o(e)g(found)f(that)h(b)o(y)g(enabling)f(the)h(IO)g(p)q(ort)g(trace)h
-(and)f(seeing)g(where)h(it)0 842 y(w)o(as)f(clobb)q(ered.)62
-920 y(Disable)19 b(the)i(")p Fh(allowvideoport)o(acces)o(s)e(on)p
-Fi(")g(line)g(in)g(con\014g)h(and)g(it)f(will)f(w)o(ork)i(\014ne.)36
-b(When)20 b(y)o(ou)f(then)h(ha)o(v)o(e)0 977 y(problems)13
-b(with)g(the)i(video,)e(try)h(to)g(enable)g(more)f(selectiv)o(e)i
-(ranges)f(of)g(IO)g(addresses)i(\(e.g.,)d(40-43\).)0
-1123 y Fc(4.4)56 b(Ho)n(w)19 b(do)g(I)f(use)h(dosem)n(u)f(o)n(v)n(er)g
-(the)h(serial)e(p)r(orts?)0 1228 y Fi(Corey)d(Sw)o(eeney)h(\()p
-Fh(corey@amiganet.xnet)o(.com)p Fi(\))c(rep)q(orted)k(\(12/8/93\))d
-(that)62 1306 y(If)k(y)o(ou)g(plan)g(to)g(b)q(e)g(using)g(dosem)o(u)g
-(o)o(v)o(er)g(a)g(serial)g(line,)g(telnet)h(session,)g(or)f(just)h
-(don't)f(w)o(an)o(t)f(to)i(use)g(ra)o(w)f(console)0 1363
-y(mo)q(de,)c(then)i(y)o(ou)e(will)g(probably)g(w)o(an)o(t)h(to)g(get)g
-(to)g(kno)o(w)g(the)h(termcap)e(\014le.)18 b(F)m(or)13
-b(those)h(who)f(don't)f(kno)o(w,)h(the)g(termcap)0 1419
-y(\014le)h(is)h(usually)e(lo)q(cated)i(in)f(the)h Fh(/etc)e
-Fi(directory)m(.)20 b(It)14 b(con)o(tains)h(the)g(information)c(on)j
-(what)g(sequences)j(of)d(c)o(haracters)i(to)0 1476 y(send)g(to)g(y)o
-(our)f(terminal,)f(and)h(what)h(sequences)i(of)d(c)o(haracters)i(from)d
-(y)o(our)h(terminal)f(represen)o(t)k(what)d(k)o(eystrok)o(es.)24
-b(If)0 1533 y(when)16 b(y)o(ou)e(hit)h(F5,)g(and)g(it)g(do)q(es)h(not)f
-(w)o(ork,)f(it)h(will)f(usually)g(b)q(e)i(the)g(fault)e(of)g(a)h
-(incorrect)i(termcap)d(en)o(try)m(.)22 b(\(T)m(o)15 b(learn)0
-1590 y(more)e(ab)q(out)h(termcaps)g(lo)q(ok)f(up)g(the)i(termcap)f(man)
-e(page.\))62 1668 y(No)o(w)k(the)g(information)d(in)i(the)h(termcap)g
-(relates)g(to)g(en)o(tries)h(in)e(the)h(dosem)o(u)f(co)q(de.)24
-b(So)16 b(after)g(y)o(ou)f(put)h Fh(k5=\\E[[E)0 1725
-y Fi(in)d(y)o(our)f(termcap,)h(whenev)o(er)h(y)o(our)f(terminal)e
+2007 y Fi(Scott)c(D.)f(Hea)o(vner)i(\()p Fh(sdh@fishmonger.nouu)o(cp)p
+Fi(\))c(rep)q(orted)k(\(11/27/93\))e(that)62 2085 y(If)k(y)o(ou)f
+(start)h(the)g(mouse)f(driv)o(er)h(and)g(it)f(just)h(hangs)g(\(it)f
+(migh)o(t)f(actually)g(tak)o(e)i(30-60s\),)f(but)h(if)f(y)o(ou)g(are)h
+(w)o(aiting)0 2142 y(longer)d(than)g(a)f(min)o(ute)g(for)g(the)i(mouse)
+e(driv)o(er)h(to)g(start,)g(remo)o(v)o(e)f(an)o(y)g("timer")f(lines)i
+(in)g(y)o(our)f(con\014g)h(\014le.)0 2288 y Fc(4.3)56
+b(Wh)n(y)18 b(do)r(es)g(dosem)n(u)g(clobb)r(er)g(COM4?)0
+2393 y Fi(Rob)13 b(Janssen)i(\()p Fh(rob@pe1chl.ampr.org)p
+Fi(\))c(rep)q(orted)k(\(3/24/94\))d(that)62 2471 y(According)h(to)e
+Fh(jmorriso@bogomips.e)o(e.ubc)o(.ca)p Fi(,)e("dosem)o(u)h(still)h
+(clobb)q(ers)i(COM4)f(\(0x2e8,)g(IR)o(Q)g(5\).)17 b(0x2e8)11
+b(isn't)0 2528 y(in)i(p)q(orts)p Fb(fg)i Fi(in)e(con\014g.)18
+b(I)c(ha)o(v)o(e)g(to)f(run)i(setserial)f(/dev/cua3)g(irq)g(5)f(on)h
+(it)f(after)h(dosem)o(u)f(exits.")p eop
+%%Page: 8 8
+8 7 bop 0 -84 1950 3 v 0 -100 a Fe(4.)37 b(Serial)14
+b(p)q(orts)h(and)g(mice)1407 b Fi(8)62 81 y(This)14 b(is)g(caused)h(b)o
+(y)e(y)o(our)h(V)o(GA)f(BIOS.)h(I)g(ha)o(v)o(e)g(found)f(that)h(b)o(y)g
+(enabling)f(the)h(IO)g(p)q(ort)g(trace)h(and)f(seeing)g(where)h(it)0
+138 y(w)o(as)f(clobb)q(ered.)62 216 y(Disable)19 b(the)i(")p
+Fh(allowvideoport)o(acces)o(s)e(on)p Fi(")g(line)g(in)g(con\014g)h(and)
+g(it)f(will)f(w)o(ork)i(\014ne.)36 b(When)20 b(y)o(ou)f(then)h(ha)o(v)o
+(e)0 273 y(problems)13 b(with)g(the)i(video,)e(try)h(to)g(enable)g
+(more)f(selectiv)o(e)i(ranges)f(of)g(IO)g(addresses)i(\(e.g.,)d
+(40-43\).)0 418 y Fc(4.4)56 b(Ho)n(w)19 b(do)g(I)f(use)h(dosem)n(u)f(o)
+n(v)n(er)g(the)h(serial)e(p)r(orts?)0 523 y Fi(Corey)d(Sw)o(eeney)h(\()
+p Fh(corey@amiganet.xnet)o(.com)p Fi(\))c(rep)q(orted)k(\(12/8/93\))d
+(that)62 602 y(If)k(y)o(ou)g(plan)g(to)g(b)q(e)g(using)g(dosem)o(u)g(o)
+o(v)o(er)g(a)g(serial)g(line,)g(telnet)h(session,)g(or)f(just)h(don't)f
+(w)o(an)o(t)f(to)i(use)g(ra)o(w)f(console)0 659 y(mo)q(de,)c(then)i(y)o
+(ou)e(will)g(probably)g(w)o(an)o(t)h(to)g(get)g(to)g(kno)o(w)g(the)h
+(termcap)e(\014le.)18 b(F)m(or)13 b(those)h(who)f(don't)f(kno)o(w,)h
+(the)g(termcap)0 715 y(\014le)h(is)h(usually)e(lo)q(cated)i(in)f(the)h
+Fh(/etc)e Fi(directory)m(.)20 b(It)14 b(con)o(tains)h(the)g
+(information)c(on)j(what)g(sequences)j(of)d(c)o(haracters)i(to)0
+772 y(send)g(to)g(y)o(our)f(terminal,)f(and)h(what)h(sequences)i(of)d
+(c)o(haracters)i(from)d(y)o(our)h(terminal)f(represen)o(t)k(what)d(k)o
+(eystrok)o(es.)24 b(If)0 829 y(when)16 b(y)o(ou)e(hit)h(F5,)g(and)g(it)
+g(do)q(es)h(not)f(w)o(ork,)f(it)h(will)f(usually)g(b)q(e)i(the)g(fault)
+e(of)g(a)h(incorrect)i(termcap)d(en)o(try)m(.)22 b(\(T)m(o)15
+b(learn)0 886 y(more)e(ab)q(out)h(termcaps)g(lo)q(ok)f(up)g(the)i
+(termcap)f(man)e(page.\))62 964 y(No)o(w)k(the)g(information)d(in)i
+(the)h(termcap)g(relates)g(to)g(en)o(tries)h(in)e(the)h(dosem)o(u)f(co)
+q(de.)24 b(So)16 b(after)g(y)o(ou)f(put)h Fh(k5=\\E[[E)0
+1021 y Fi(in)d(y)o(our)f(termcap,)h(whenev)o(er)h(y)o(our)f(terminal)e
 (sends)k Fh(\\E[[E)p Fi(,)c(dosem)o(u)h(translates)i(that)f(and)g(sa)o
-(ys)g("he)h(hit)e(the)i(k5)f(k)o(ey!")0 1782 y(Then)j(it)g(is)g(up)g
+(ys)g("he)h(hit)e(the)i(k5)f(k)o(ey!")0 1077 y(Then)j(it)g(is)g(up)g
 (to)f(dosem)o(u)g(to)h(\014gure)h(out)e(what)h(the)h(prop)q(er)f
 (scanco)q(de)i(for)d(the)i(k5)e(k)o(ey)h(is,)g(and)g(push)g(that)g(in)o
-(to)f(the)0 1838 y(bu\013er)g(in)e(some)g(magical)e(w)o(a)o(y)m(.)17
+(to)f(the)0 1134 y(bu\013er)g(in)e(some)g(magical)e(w)o(a)o(y)m(.)17
 b(T)m(o)c(determine)h(the)g(scanco)q(de,)h(it)e(lo)q(oks)g(up)h(in)f(a)
-h(little)f(table)h(in)f(termio.c.)k(In)c(termio.c)0 1895
+h(little)f(table)h(in)f(termio.c.)k(In)c(termio.c)0 1191
 y(under)i(the)f(line)g(whic)o(h)f(\(curren)o(tly\))i(sa)o(ys)65
-2007 y Fh(#define)21 b(FUNKEYS)f(20)62 2118 y Fi(There)15
+1302 y Fh(#define)21 b(FUNKEYS)f(20)62 1414 y Fi(There)15
 b(exist)g(sev)o(eral)f(lines)g(follo)o(wing)d(the)j(form)65
-2230 y Fh({NULL,)21 b("termcap)f(code",)h(scancode})f(/*)h(name)g(of)g
-(key)g(*/)62 2341 y Fi(so)14 b(when)h(it)e(sa)o(ys)65
-2452 y Fh({NULL,)21 b("k5",)g(0x3f00})f(/*)h(F5)h(*/)p
-eop
-%%Page: 8 8
-8 7 bop 0 -84 1950 3 v 0 -100 a Fe(5.)37 b(Dosem)o(u)14
-b(with)h(m)o(ultipl)o(e)e(users)1269 b Fi(8)62 81 y(it's)19
-b(sa)o(ying)f(that)h Fh(0x3f00)f Fi(is)h(the)h(scanco)q(de)h(for)d(F5,)
-i(and)f(that)g(when)h(the)g(p)q(erson)g(activ)n(ates)f(the)h(k5)f
-(sequence)0 138 y(\(de\014ned)c(in)f(the)g(termcap\))g(to)f(stu\013)i
-(the)g(F5)e(scanco)q(de)j(in)o(to)d(the)h(bu\013er.)62
-216 y(No)o(w)g(that's)g(all)e(\014ne)j(and)e(dandy)h(for)g(analyzing)e
+1525 y Fh({NULL,)21 b("termcap)f(code",)h(scancode})f(/*)h(name)g(of)g
+(key)g(*/)62 1637 y Fi(so)14 b(when)h(it)e(sa)o(ys)65
+1748 y Fh({NULL,)21 b("k5",)g(0x3f00})f(/*)h(F5)h(*/)62
+1860 y Fi(it's)d(sa)o(ying)f(that)h Fh(0x3f00)f Fi(is)h(the)h(scanco)q
+(de)h(for)d(F5,)i(and)f(that)g(when)h(the)g(p)q(erson)g(activ)n(ates)f
+(the)h(k5)f(sequence)0 1916 y(\(de\014ned)c(in)f(the)g(termcap\))g(to)f
+(stu\013)i(the)g(F5)e(scanco)q(de)j(in)o(to)d(the)h(bu\013er.)62
+1995 y(No)o(w)g(that's)g(all)e(\014ne)j(and)e(dandy)h(for)g(analyzing)e
 (ho)o(w)i(dosem)o(u)f(do)q(es)h(this,)g(but)g(y)o(ou)f(probably)h(w)o
-(an)o(t)f(to)h(b)q(e)g(able)g(to)0 273 y(do)f(something)f(with)g(this)h
-(new)h(information.)h(W)m(ell)c(y)o(ou)i(can)g(add)g(functionalit)o(y)f
-(for)g(the)i(F11)e(and)h(F12)g(k)o(eys)g(\(and)g(an)o(y)0
-329 y(other)i(k)o(eys)f(that)g(y)o(ou)f(can)h(\014nd)g(the)h(scanco)q
-(de)g(for\).)62 408 y(All)e(y)o(ou)h(ha)o(v)o(e)f(to)h(do)g(is)g(add)f
+(an)o(t)f(to)h(b)q(e)g(able)g(to)0 2052 y(do)f(something)f(with)g(this)
+h(new)h(information.)h(W)m(ell)c(y)o(ou)i(can)g(add)g(functionalit)o(y)
+f(for)g(the)i(F11)e(and)h(F12)g(k)o(eys)g(\(and)g(an)o(y)0
+2108 y(other)i(k)o(eys)f(that)g(y)o(ou)f(can)h(\014nd)g(the)h(scanco)q
+(de)g(for\).)62 2187 y(All)e(y)o(ou)h(ha)o(v)o(e)f(to)h(do)g(is)g(add)f
 (a)h(line)f(to)h(the)g(termio.c)f(table)h(that)g(sa)o(ys:)65
-519 y Fh({NULL,)21 b("ka",)g(0x8500})f(/*)h(F11)h(*/)62
-631 y Fi(Then)15 b(to)e(actually)g(get)i(it)e(to)h(read)g(the)h(line)e
+2298 y Fh({NULL,)21 b("ka",)g(0x8500})f(/*)h(F11)h(*/)62
+2409 y Fi(Then)15 b(to)e(actually)g(get)i(it)e(to)h(read)g(the)h(line)e
 (y)o(ou)g(just)i(put)f(in,)f(add)g(one)h(to)g(the)h(FUNKEYS)g(n)o(um)o
-(b)q(er.)65 742 y Fh(#define)21 b(FUNKEYS)f(=)i(21)62
-853 y Fi(Then)d(add)e(a)h("k)n(a")f(en)o(try)h(to)g(y)o(our)g(termcap.)
-30 b(After)18 b(that,)h(ev)o(ery)f(time)f(y)o(ou)h(hit)f(the)i
-(sequence)h(stored)f(in)e(y)o(our)0 910 y(termcap)d(for)f(k)n(a,)g(y)o
-(our)g(dos)i(program)d(recognizes)j(an)f("F11.")62 988
-y(W)m(arning:)j(Mak)o(e)d(sure)h(that)f(k)n(a)f(is)h(not)f(in)h(use)h
-(in)e(y)o(our)h(termcap.)j(If)d(it)f(is)h(y)o(ou)f(are)i(headed)f(for)g
-(trouble.)62 1067 y(Note:)19 b(The)14 b(scanco)q(de)h(for)f(F12)f(is)h
-Fh(0x8600)p Fi(.)0 1212 y Fc(4.5)56 b(Ho)n(w)19 b(can)g(I)g(switc)n(h)g
+(b)q(er.)65 2521 y Fh(#define)21 b(FUNKEYS)f(=)i(21)p
+eop
+%%Page: 9 9
+9 8 bop 0 -84 1950 3 v 0 -100 a Fe(5.)32 b(Dosem)o(u)14
+b(with)h(m)o(ultip)o(le)d(users)1275 b Fi(9)62 81 y(Then)19
+b(add)e(a)h("k)n(a")f(en)o(try)h(to)g(y)o(our)g(termcap.)30
+b(After)18 b(that,)h(ev)o(ery)f(time)f(y)o(ou)h(hit)f(the)i(sequence)h
+(stored)f(in)e(y)o(our)0 138 y(termcap)d(for)f(k)n(a,)g(y)o(our)g(dos)i
+(program)d(recognizes)j(an)f("F11.")62 216 y(W)m(arning:)j(Mak)o(e)d
+(sure)h(that)f(k)n(a)f(is)h(not)f(in)h(use)h(in)e(y)o(our)h(termcap.)j
+(If)d(it)f(is)h(y)o(ou)f(are)i(headed)f(for)g(trouble.)62
+294 y(Note:)19 b(The)14 b(scanco)q(de)h(for)f(F12)f(is)h
+Fh(0x8600)p Fi(.)0 440 y Fc(4.5)56 b(Ho)n(w)19 b(can)g(I)g(switc)n(h)g
 (b)r(et)n(w)n(een)f(dosem)n(u)g(and)h(a)g(shell)f(o)n(v)n(er)g(the)g
-(serial)g(line?)0 1318 y Fi(John)c(T)m(a)o(ylor)e(\()p
+(serial)g(line?)0 545 y Fi(John)c(T)m(a)o(ylor)e(\()p
 Fh(taylor@pollux.cs.uga)o(.edu)p Fi(\))f(rep)q(orted)k(\(5/25/94\))d
-(that)62 1396 y(I)h(am)f(running)h(Lin)o(ux)f(1.1.13)f(and)i(w)o(an)o
-(t)g(to)g(p)q(oin)o(t)f(out)h(a)g(great)g(feature)h(that)f(should)g(b)q
-(e)h(protected)h(and)e(not)g(tak)o(en)0 1453 y(out)k(\(IMHO\).)h(With)f
+(that)62 623 y(I)h(am)f(running)h(Lin)o(ux)f(1.1.13)f(and)i(w)o(an)o(t)
+g(to)g(p)q(oin)o(t)f(out)h(a)g(great)g(feature)h(that)f(should)g(b)q(e)
+h(protected)h(and)e(not)g(tak)o(en)0 680 y(out)k(\(IMHO\).)h(With)f
 (the)h(52)f(v)o(ersion,)h(I)f(can)h(run)f(the)i(program,)d("screen.")i
 (F)m(rom)e(screen,)k(i)d(can)g(in)o(v)o(ok)o(e)g(dos)g(-D-a.)0
-1509 y(What)12 b(is)h(really)f(great)g(\(IMHO\))i(is)e(the)h(screen)i
+737 y(What)12 b(is)h(really)f(great)g(\(IMHO\))i(is)e(the)h(screen)i
 (commands)10 b(\(the)j(CTRL-A)f(cmds\))g(still)g(w)o(ork.)17
-b(This)c(means)f(I)g(can)h(do)f(a)0 1566 y(CTRL-A)h(C)h(and)g(add)g
+b(This)c(means)f(I)g(can)h(do)f(a)0 794 y(CTRL-A)h(C)h(and)g(add)g
 (another)h(unix)e(shell,)h(and)g(switc)o(h)g(b)q(et)o(w)o(een)h(the)g
 (t)o(w)o(o)f(\(DOS)g(/)f(UNIX\).)i(This)e(allo)o(ws)g(me)g(to)h(use)0
-1623 y(dosem)o(u)f(o)o(v)o(er)h(the)g(serial)g(line)g(really)f(w)o
-(ell,)f(b)q(ecause)k(switc)o(hing)e(is)f(made)g(easy)m(.)0
-1792 y Ff(5)69 b(Dosem)n(u)22 b(with)g(m)n(ultiple)d(users)0
-1921 y Fc(5.1)56 b(Can)19 b(I)g(use)f(dosem)n(u)g(on)h(a)g(m)n
-(ulti-user)d(system?)0 2026 y Fi(Corey)e(Sw)o(eeney)h(\()p
+850 y(dosem)o(u)f(o)o(v)o(er)h(the)g(serial)g(line)g(really)f(w)o(ell,)
+f(b)q(ecause)k(switc)o(hing)e(is)f(made)g(easy)m(.)0
+1019 y Ff(5)69 b(Dosem)n(u)22 b(with)g(m)n(ultiple)d(users)0
+1148 y Fc(5.1)56 b(Can)19 b(I)g(use)f(dosem)n(u)g(on)h(a)g(m)n
+(ulti-user)d(system?)0 1253 y Fi(Corey)e(Sw)o(eeney)h(\()p
 Fh(corey@amiganet.xnet)o(.com)p Fi(\))c(rep)q(orted)k(\(12/8/93\))d
-(that)62 2104 y(If)f(y)o(ou)g(are)h(running)f(dosem)o(u)g(on)g(a)g
+(that)62 1332 y(If)f(y)o(ou)g(are)h(running)f(dosem)o(u)g(on)g(a)g
 (system)h(in)f(whic)o(h)g(more)g(then)h(one)f(p)q(erson)i(ma)o(y)d(w)o
-(an)o(t)h(to)g(run)h(dosem)o(u,)e(then)i(y)o(ou)0 2161
+(an)o(t)h(to)g(run)h(dosem)o(u,)e(then)i(y)o(ou)0 1388
 y(ma)o(y)d(w)o(an)o(t)h(to)g(c)o(hange)h(the)g(directory)g(of)f(y)o
 (our)g(hard)h(driv)o(e)f(image.)15 b(Curren)o(tly)c(in)f(the)h
-Fh(/etc/dosemu.conf)d Fi(\014le)i(there)i(ex-)0 2218
+Fh(/etc/dosemu.conf)d Fi(\014le)i(there)i(ex-)0 1445
 y(ists)g(the)g(line)f(sa)o(ying)f(that)h(the)h(hard)g(driv)o(e)f(image)
 f(is)h("hdimage".)k(If)c(y)o(ou)f(c)o(hange)i(this)g(to)f
-Fh(/var/lib/dosemu/)o(hdima)o(ge)0 2275 y Fi(then)17
+Fh(/var/lib/dosemu/)o(hdima)o(ge)0 1502 y Fi(then)17
 b(p)q(eople)g(do)f(not)h(ha)o(v)o(e)f(to)g(w)o(orry)h(ab)q(out)f(what)h
 (directory)g(they)g(are)g(in)f(when)h(they)g(run)g(dosem)o(u,)e(and)i
-(hdimage)0 2331 y(do)q(es)e(not)e(ha)o(v)o(e)h(to)g(b)q(e)g(mo)o(v)o
+(hdimage)0 1559 y(do)q(es)e(not)e(ha)o(v)o(e)h(to)g(b)q(e)g(mo)o(v)o
 (ed)f(eac)o(h)h(time)f(y)o(ou)g(upgrade)h(to)g(the)h(next)f(patc)o(h)g
-(lev)o(el.)62 2410 y(If)h(y)o(ou)g(do)g(do)g(this)h(for)f(m)o
+(lev)o(el.)62 1637 y(If)h(y)o(ou)g(do)g(do)g(this)h(for)f(m)o
 (ulti-user)f(dosem)o(u,)g(then)i(y)o(ou)f(will)f(w)o(an)o(t)h(to)g(mak)
-o(e)f(the)i(hdimage)d(in)i Fh(/var/lib/dosemu)0 2466
+o(e)f(the)i(hdimage)d(in)i Fh(/var/lib/dosemu)0 1694
 y Fi(read-only)e(for)h(ev)o(ery)o(one)h(but)f(the)g(dosem)o(u)f
-(administrator.)p eop
-%%Page: 9 9
-9 8 bop 0 -84 1950 3 v 0 -100 a Fe(6.)37 b(dosem)o(u)14
-b(and)h(X-windo)o(ws)1361 b Fi(9)62 81 y(Note)11 b(that)g(y)o(ou)g(can)
-f(use)i(the)f(new)h(em)o(ufs.sys)d(thing)i(to)f(moun)o(t)g(a)g
-("public")g(directory)h(and/or)g(a)f("priv)n(ate")g(directory)0
-138 y(\(a)k(sub-directory)h(in)e(eac)o(h)i(p)q(erson's)f(home)f
-(directory\).)62 216 y Fh([)p Fi(Note:)48 b(Users)31
-b(ma)o(y)c(also)h(create)i(a)f(p)q(ersonal)g(con\014guration)f(\014le)h
-(named)f Fh(~/.dosrc)f Fi(\(same)h(format)f(as)0 273
-y Fh(/etc/dosemu.conf)p Fi(\))11 b(to)i(run)i(their)f(o)o(wn)f(cop)o(y)
-h(of)g(dos.])0 418 y Fc(5.2)56 b(Ho)n(w)19 b(do)g(I)f(get)h(Net)n(w)n
-(are)f(access)h(from)e(dosem)n(u?)0 523 y Fi(James)c(B.)h(MacLean)g
-(\(jmaclean@fo)o(x.nstn.ns.ca\))e(rep)q(orted)k(\(6/13/94\))c(that)62
-602 y(Dosem)o(u)k(no)o(w)h(supp)q(orts)i(p)q(dip)o(x)e(\(an)g(IPX)h(o)o
-(v)o(er)f(pktdrvr\))i(and)e(p)q(dether)i(\(uses)g(No)o(v)o(ell's)d
-(MLID)h(sp)q(ec\))i(to)e(access)0 659 y(No)o(v)o(ell)g(LAN's)h(via)g
+(administrator.)62 1772 y(Note)e(that)g(y)o(ou)g(can)f(use)i(the)f(new)
+h(em)o(ufs.sys)d(thing)i(to)f(moun)o(t)g(a)g("public")g(directory)h
+(and/or)g(a)f("priv)n(ate")g(directory)0 1829 y(\(a)k(sub-directory)h
+(in)e(eac)o(h)i(p)q(erson's)f(home)f(directory\).)62
+1907 y Fh([)p Fi(Note:)48 b(Users)31 b(ma)o(y)c(also)h(create)i(a)f(p)q
+(ersonal)g(con\014guration)f(\014le)h(named)f Fh(~/.dosrc)f
+Fi(\(same)h(format)f(as)0 1964 y Fh(/etc/dosemu.conf)p
+Fi(\))11 b(to)i(run)i(their)f(o)o(wn)f(cop)o(y)h(of)g(dos.])0
+2110 y Fc(5.2)56 b(Ho)n(w)19 b(do)g(I)f(get)h(Net)n(w)n(are)f(access)h
+(from)e(dosem)n(u?)0 2215 y Fi(James)c(B.)h(MacLean)g(\(jmaclean@fo)o
+(x.nstn.ns.ca\))e(rep)q(orted)k(\(6/13/94\))c(that)62
+2293 y(Dosem)o(u)k(no)o(w)h(supp)q(orts)i(p)q(dip)o(x)e(\(an)g(IPX)h(o)
+o(v)o(er)f(pktdrvr\))i(and)e(p)q(dether)i(\(uses)g(No)o(v)o(ell's)d
+(MLID)h(sp)q(ec\))i(to)e(access)0 2350 y(No)o(v)o(ell)g(LAN's)h(via)g
 (the)h(built)e(in)h(pac)o(k)o(et)h(driv)o(er.)31 b(The)19
 b(pac)o(k)o(et)f(driv)o(er)h(sits)f(at)g(in)o(terrupt)h(0x60,)f(and)g
-(abids)g(b)o(y)g(the)0 715 y(normal)12 b(pak)o(et)h(driv)o(er)h(rules.)
-19 b(That)14 b(said,)f(b)q(ew)o(are)h(of)f(trying)h(an)o(y)f(DOS)h
-(TCP/IP)g(just)g(y)o(et.)k(T)m(o)13 b(use)h(Net)o(w)o(are,)g(simply:)65
-884 y Fh(1\))22 b(Compile)e(support)g(for)i(your)f(NIC)g(into)g(the)g
-(kernel.)65 940 y(2\))h(Boot)f(dosemu.)65 997 y(3\))h(Run)f
-(./commands/pdipx.)65 1054 y(4\))h(Run)f(netx)g(or)g(whatever)f(you)i
-(use.)62 1165 y Fi(If)c(y)o(ou)f(need)h(sp)q(ecial)g(access)i(to)d(y)o
-(our)h(NIC,)f(read)h(on.)30 b(By)18 b(default)f(dosem)o(u)g(will)f(not)
-i(get)g(in)o(terrupts)g(from)e(the)0 1222 y(k)o(ernel.)24
-b(That)15 b(said,)g(if)g(y)o(ou'd)g(lik)o(e)f(to)i(giv)o(e)f(y)o(our)g
-(NIC)h(to)f(dosem)o(u)g(for)g(it)g(to)h(con)o(trol,)f(ma)o(yb)q(e)f
-(for)h(access)j(to)d(Net)o(w)o(are)0 1279 y(on)g(the)g(net)o(w)o(ork)g
-(through)g(a)g(NETX)g(clien)o(t,)g(I)f(do)h(ha)o(v)o(e)g(a)f(driv)o(er)
-h(\(Silly)f(In)o(terrupt)i(Generator\))g(to)f(put)g(in)f(the)h(k)o
-(ernel)0 1336 y(that)f(an)o(y)g(program,)e(lik)o(e)h(dosem)o(u)g(can)i
-(use)f(to)g(get)h(at)f(the)g(in)o(terrupt)h(for)f(y)o(our)g(NIC.)f(I)h
-(use)h(it)f(in)g(DOSEMU)g(to)g(access)0 1392 y(a)g(No)o(v)o(ell)e(Lite)
-i(net)o(w)o(ork)g(in)g(the)g(past)h(un)o(til)e(the)h(pac)o(k)o(et)g
-(driv)o(er)g(existed.)62 1471 y(An)o(y)c(in)o(terested)i(parties)f
-(should)f(E-mail)d(me)j(\()p Fh(jmaclean@fox.nst)o(n.ns.)o(ca)p
-Fi(\))d(and)j(I'll)f(pass)i(along)e(some)g(directions.)0
-1640 y Ff(6)69 b(dosem)n(u)23 b(and)g(X-windo)n(ws)0
-1769 y Fc(6.1)56 b(Can)19 b(I)g(run)g(dosem)n(u)e(in)i(console)f(mo)r
-(de)e(while)i(running)h(X?)0 1874 y Fi(Ronald)13 b(Sc)o(halk)g(\()p
-Fh(R.Schalk@uci.kun.n)o(l)p Fi(\))e(rep)q(orted)16 b(\(1/17/94\))c
-(that)62 1952 y(Y)m(es,)i(no)f(problem.)k(Just)d(remem)o(b)q(er)f(to)g
-(use)i(ctrl-alt-)p Fd(<)p Fi(Fn)p Fh(>)e Fi(to)h(go)f(to)g(a)g(Virtual)
-g(Console)h(\(V)o(C\),)f(and)h(y)o(ou)f(can)h(run)0 2009
-y(an)o(y)f(Lin)o(ux)h(application)e(\(dosem)o(u)h(is)h(a)g(lin)o
-(ux-application\).)h(I'v)o(e)f(got)f(almost)f(alw)o(a)o(ys)h(WP5.1)g
-(in)g(a)h(dos)g(session.)62 2087 y Fh([)p Fi(Note:)19
-b(Use)14 b(ctrl-alt-F7)f(to)h(switc)o(h)g(bac)o(k)g(to)g(X)g(from)e
-(dosem)o(u.])62 2165 y Fh([)p Fi(Note:)19 b(Some)12 b(p)q(eople)j(ha)o
-(v)o(e)e(rep)q(orted)j(problems)d(when)h(dosem)o(u)f(is)h(started)h(b)q
-(efore)f(X])0 2311 y Fc(6.2)56 b(Is)18 b(it)g(p)r(ossible)g(to)g(run)h
-(dosem)n(u)f(in)g(an)h(xterm?)0 2416 y Fi(Evmorfop)q(oulos)12
-b(Dimitris)f(\()p Fh(devmorfo@mtu.edu)p Fi(\))g(rep)q(orted)k
-(\(12/10/93\))e(that)62 2494 y(It)19 b(is)f(p)q(ossible)g(to)g(run)h
-(dosem)o(u)e(under)i(an)f(xterm,)g(but)h(without)f(an)o(y)f(graphics,)i
-(and)f(with)g(no)g(more)g(than)g(128)0 2551 y(c)o(haracters.)p
-eop
+(abids)g(b)o(y)g(the)0 2406 y(normal)12 b(pak)o(et)h(driv)o(er)h
+(rules.)19 b(That)14 b(said,)f(b)q(ew)o(are)h(of)f(trying)h(an)o(y)f
+(DOS)h(TCP/IP)g(just)g(y)o(et.)k(T)m(o)13 b(use)h(Net)o(w)o(are,)g
+(simply:)p eop
 %%Page: 10 10
-10 9 bop 0 -84 1950 3 v 0 -100 a Fe(7.)37 b(Video)15
-b(and)g(sound)1480 b Fi(10)62 81 y(H.)14 b(P)o(eter)h(An)o(vin)e(\()p
-Fh(hpa@hook.eecs.nwu.ed)o(u)p Fi(\))e(adds)j(\(2/6/94\))62
-159 y(no)g(more)f(than)h(128)f(c)o(haracters...)19 b(unless)c(y)o(ou)f
+10 9 bop 0 -84 1950 3 v 0 -100 a Fe(6.)37 b(dosem)o(u)14
+b(and)h(X-windo)o(ws)1340 b Fi(10)65 81 y Fh(1\))22 b(Compile)e
+(support)g(for)i(your)f(NIC)g(into)g(the)g(kernel.)65
+138 y(2\))h(Boot)f(dosemu.)65 194 y(3\))h(Run)f(./commands/pdipx.)65
+251 y(4\))h(Run)f(netx)g(or)g(whatever)f(you)i(use.)62
+361 y Fi(If)c(y)o(ou)f(need)h(sp)q(ecial)g(access)i(to)d(y)o(our)h
+(NIC,)f(read)h(on.)30 b(By)18 b(default)f(dosem)o(u)g(will)f(not)i(get)
+g(in)o(terrupts)g(from)e(the)0 418 y(k)o(ernel.)24 b(That)15
+b(said,)g(if)g(y)o(ou'd)g(lik)o(e)f(to)i(giv)o(e)f(y)o(our)g(NIC)h(to)f
+(dosem)o(u)g(for)g(it)g(to)h(con)o(trol,)f(ma)o(yb)q(e)f(for)h(access)j
+(to)d(Net)o(w)o(are)0 474 y(on)g(the)g(net)o(w)o(ork)g(through)g(a)g
+(NETX)g(clien)o(t,)g(I)f(do)h(ha)o(v)o(e)g(a)f(driv)o(er)h(\(Silly)f
+(In)o(terrupt)i(Generator\))g(to)f(put)g(in)f(the)h(k)o(ernel)0
+531 y(that)f(an)o(y)g(program,)e(lik)o(e)h(dosem)o(u)g(can)i(use)f(to)g
+(get)h(at)f(the)g(in)o(terrupt)h(for)f(y)o(our)g(NIC.)f(I)h(use)h(it)f
+(in)g(DOSEMU)g(to)g(access)0 588 y(a)g(No)o(v)o(ell)e(Lite)i(net)o(w)o
+(ork)g(in)g(the)g(past)h(un)o(til)e(the)h(pac)o(k)o(et)g(driv)o(er)g
+(existed.)62 666 y(An)o(y)c(in)o(terested)i(parties)f(should)f(E-mail)d
+(me)j(\()p Fh(jmaclean@fox.nst)o(n.ns.)o(ca)p Fi(\))d(and)j(I'll)f
+(pass)i(along)e(some)g(directions.)0 835 y Ff(6)69 b(dosem)n(u)23
+b(and)g(X-windo)n(ws)0 964 y Fc(6.1)56 b(Can)19 b(I)g(run)g(dosem)n(u)e
+(in)i(console)f(mo)r(de)e(while)i(running)h(X?)0 1069
+y Fi(Ronald)13 b(Sc)o(halk)g(\()p Fh(R.Schalk@uci.kun.n)o(l)p
+Fi(\))e(rep)q(orted)16 b(\(1/17/94\))c(that)62 1147 y(Y)m(es,)i(no)f
+(problem.)k(Just)d(remem)o(b)q(er)f(to)g(use)i(ctrl-alt-)p
+Fd(<)p Fi(Fn)p Fh(>)e Fi(to)h(go)f(to)g(a)g(Virtual)g(Console)h(\(V)o
+(C\),)f(and)h(y)o(ou)f(can)h(run)0 1204 y(an)o(y)f(Lin)o(ux)h
+(application)e(\(dosem)o(u)h(is)h(a)g(lin)o(ux-application\).)h(I'v)o
+(e)f(got)f(almost)f(alw)o(a)o(ys)h(WP5.1)g(in)g(a)h(dos)g(session.)62
+1282 y Fh([)p Fi(Note:)19 b(Use)14 b(ctrl-alt-F7)f(to)h(switc)o(h)g
+(bac)o(k)g(to)g(X)g(from)e(dosem)o(u.])62 1360 y Fh([)p
+Fi(Note:)19 b(Some)12 b(p)q(eople)j(ha)o(v)o(e)e(rep)q(orted)j
+(problems)d(when)h(dosem)o(u)f(is)h(started)h(b)q(efore)f(X])0
+1506 y Fc(6.2)56 b(Is)18 b(it)g(p)r(ossible)g(to)g(run)h(dosem)n(u)f
+(in)g(an)h(xterm?)0 1611 y Fi(Evmorfop)q(oulos)12 b(Dimitris)f(\()p
+Fh(devmorfo@mtu.edu)p Fi(\))g(rep)q(orted)k(\(12/10/93\))e(that)62
+1689 y(It)19 b(is)f(p)q(ossible)g(to)g(run)h(dosem)o(u)e(under)i(an)f
+(xterm,)g(but)h(without)f(an)o(y)f(graphics,)i(and)f(with)g(no)g(more)g
+(than)g(128)0 1746 y(c)o(haracters.)62 1824 y(H.)c(P)o(eter)h(An)o(vin)
+e(\()p Fh(hpa@hook.eecs.nwu.ed)o(u)p Fi(\))e(adds)j(\(2/6/94\))62
+1902 y(no)g(more)f(than)h(128)f(c)o(haracters...)19 b(unless)c(y)o(ou)f
 (use)h(a)e(sp)q(ecial)h(fon)o(t.)k(Someone)13 b(has)h(an)g(IBM)h(PC)f
-(\(CP)g(437\))f(X)i(fon)o(t)0 216 y(for)c(use)g(with)g(ANSI-graphics)g
+(\(CP)g(437\))f(X)i(fon)o(t)0 1959 y(for)c(use)g(with)g(ANSI-graphics)g
 (on)g(BBS's,)g(as)g(w)o(ell)g(as)g(a)f(patc)o(h)h(for)g(Xterm)f(that)h
 (*migh)o(t*)d(include)j(c)o(haracter)i(translation)0
-273 y(\(for)h(letters)h(lik)o(e)e Fh(\\305)p Fi(,)g Fh(\\304)p
-Fi(,)f Fh(\\326)h Fi(for)h(example.)0 442 y Ff(7)69 b(Video)22
-b(and)i(sound)0 571 y Fc(7.1)56 b(Exiting)17 b(from)g(dosem)n(u)h(giv)n
-(es)g(me)f(a)i(screen)f(full)g(of)h(garbage.)0 676 y
-Fi(Keith)14 b(A)g(Grider)g(\()p Fh(kgrider@magnus.acs.)o(ohio-)o(state)
-o(.edu)p Fi(\))d(rep)q(orted)k(\(12/5/93\))d(that)62
-754 y(I)h(ha)o(v)o(e)h(seen)g(man)o(y)e(p)q(ostings)h(concerning)h
-(this)f(with)g(exit)h(from)d(X)i(as)h(w)o(ell)e(as)i(exiting)e(from)g
-(a)h(graphic)g(dos)g(screen.)0 811 y(it)g(seems)g(to)f(b)q(e)i(prev)n
-(alen)o(t)f(among)e(A)m(TI)h(graphic)h(card)g(users)i(as)e(w)o(ell)f
-(as)h(a)g(few)g(others.)18 b(The)c(problem)d(is)i(that)g(the)h(fon)o(t)
-0 867 y(information)9 b(for)j(the)g(vga)g(text)g(screen)i(is)e(not)g(b)
-q(eing)g(sa)o(v)o(ed.)18 b(The)12 b(only)f(w)o(a)o(y)g(I)h(ha)o(v)o(e)g
-(b)q(een)h(able)f(to)g(\014x)g(it)f(is)h(to)g(do)o(wnload)0
-924 y(the)j Fh(vgalib-090.tar.gz)d Fi(\014le)i(from)f(sunsite.unc.edu.)
-22 b(It)15 b(is)g(\(I)g(b)q(eliev)o(e\))g(in)f(the)i
-Fh(pub/Linux/GCC)j(directory)p Fi(.)g(Y)m(ou)0 981 y(get)d(a)g(lot)g
-(of)f(stu\013)i(that)f(is)g(not)g(directly)h(used)g(to)f(solv)o(e)g
-(this)g(problem,)f(but)h(in)g(the)g(fon)o(ts)g(directory)h(that)f(is)g
-(created)0 1038 y(when)g(y)o(ou)f(un)o(tar)h(the)g(\014le,)f(there)i
-(are)f(2)f(\014les)h(of)f(in)o(terest,)h(runx)g(and)g(restorefon)o(t.)
-24 b(Read)15 b(the)h(README)f(\014le)h(in)f(this)0 1095
-y(directory)m(.)21 b(Cop)o(y)15 b(runx)g(and)f(restorefon)o(t)i(to)f(a)
-g(directory)g(in)g(y)o(our)f(path.)21 b(when)16 b(runx)f(is)g(used,)g
-(for)g(example,)e(it)h(sa)o(v)o(es)0 1151 y(the)g(fon)o(t)g
-(information)d(in)i(tmp/fon)o(tdata.)j(I)e(use)h(a)e(\014le)h(called)g
-(\014x)f(whic)o(h)h(consists)h(of)e(the)i(line:)65 1263
-y Fh(restorefont)20 b(-r)h(/tmp/fontdata)62 1374 y Fi(so)c(that)g(it)g
-(is)g(easy)g(to)g('\014x')f(a)h(vt)f(when)i(I)f(go)f(there)j(from)c(X)i
-(\(i.e.)27 b Fh(ctrl-alt-f2)p Fi(\).)e(This)17 b(should)f(also)h(w)o
-(ork)f(for)0 1431 y(dosem)o(u.)i(I)c(think)g(the)h(XF)m(ree86)f(p)q
-(eople)h(kno)o(w)e(ab)q(out)h(the)h(problem)e(and)h(are)h(w)o(orking)e
-(on)h(a)g(solution)f(as)h(this)g(is)g(a)g(bit)0 1488
-y(of)f(a)h(kluge.)0 1634 y Fc(7.2)56 b(Ho)n(w)19 b(do)g(I)f(get)h
-(dosem)n(u)e(to)i(w)n(ork)g(with)g(m)n(y)e(T)-5 b(riden)n
-(t/Actix/other)17 b(video)h(card?)0 1739 y Fh([)p Fi(The)c(screen)i
-(\015ic)o(k)o(ers)f(violen)o(tly)m(,)c(displa)o(ys)i(the)i(video)e
-(BIOS)i(startup)g(message,)e(and)h(hangs.])62 1817 y(Andrew)h(T)m
-(ridgell)e(\()p Fh(tridge@nimbus.an)o(u.edu)o(.au)p Fi(\))e(rep)q
-(orted)k(\(1/29/94\))e(that)62 1895 y(I)h(found)g(with)f(early)h(v)o
-(ersions)g(it)g(w)o(ould)f(w)o(ork)g(if)g(I)h(used:)65
-2007 y Fh(ports)21 b({)h(0x42)f(})62 2118 y Fi(but)e(that)f(sometimes)f
-(m)o(y)g(mac)o(hine)g(w)o(ould)h(crash)h(when)g(it)f(w)o(as)g(cycling)h
-(the)g(video)f(bios)g(in)g(dosem)o(u.)31 b(This)18 b(is)0
-2175 y(b)q(ecause)e(y)o(ou're)d(allo)o(wing)f(the)i(V)o(GA)g(bios)f(to)
-h(re-program)f(y)o(our)h(clo)q(c)o(k,)f(whic)o(h)h(sev)o(erely)h
-(stu\013s)g(with)e(Lin)o(ux.)62 2253 y(This)g(prompted)f(me)g(to)h
-(write)g(the)g(readonly)g(and)f(masking)f(patc)o(hes)j(for)f(dosem)o
-(u,)e(whic)o(h)i(I)g(b)q(eliev)o(e)g(are)g(still)f(in)g(the)0
-2310 y(latest)i(v)o(ersion.)k(I)c(no)o(w)g(use:)65 2421
-y Fh(ports)21 b({)h(readonly)e(0x42)h(})62 2533 y Fi(and)14
-b(it)f(b)q(o)q(ots)i(dosem)o(u)e(more)g(slo)o(wly)m(,)e(but)k(more)d
-(reliably)m(.)p eop
+2016 y(\(for)h(letters)h(lik)o(e)e Fh(\\305)p Fi(,)g
+Fh(\\304)p Fi(,)f Fh(\\326)h Fi(for)h(example.)0 2185
+y Ff(7)69 b(Video)22 b(and)i(sound)0 2314 y Fc(7.1)56
+b(Exiting)17 b(from)g(dosem)n(u)h(giv)n(es)g(me)f(a)i(screen)f(full)g
+(of)h(garbage.)0 2419 y Fi(Keith)14 b(A)g(Grider)g(\()p
+Fh(kgrider@magnus.acs.)o(ohio-)o(state)o(.edu)p Fi(\))d(rep)q(orted)k
+(\(12/5/93\))d(that)62 2497 y(I)h(ha)o(v)o(e)h(seen)g(man)o(y)e(p)q
+(ostings)h(concerning)h(this)f(with)g(exit)h(from)d(X)i(as)h(w)o(ell)e
+(as)i(exiting)e(from)g(a)h(graphic)g(dos)g(screen.)0
+2554 y(it)g(seems)g(to)f(b)q(e)i(prev)n(alen)o(t)f(among)e(A)m(TI)h
+(graphic)h(card)g(users)i(as)e(w)o(ell)f(as)h(a)g(few)g(others.)18
+b(The)c(problem)d(is)i(that)g(the)h(fon)o(t)p eop
 %%Page: 11 11
-11 10 bop 0 -84 1950 3 v 0 -100 a Fe(8.)37 b(Other)15
-b(Hardw)o(are)1490 b Fi(11)62 81 y(Tim)12 b(Shnaider)i(\()p
+11 10 bop 0 -84 1950 3 v 0 -100 a Fe(7.)37 b(Video)15
+b(and)g(sound)1480 b Fi(11)0 81 y(information)9 b(for)j(the)g(vga)g
+(text)g(screen)i(is)e(not)g(b)q(eing)g(sa)o(v)o(ed.)18
+b(The)12 b(only)f(w)o(a)o(y)g(I)h(ha)o(v)o(e)g(b)q(een)h(able)f(to)g
+(\014x)g(it)f(is)h(to)g(do)o(wnload)0 138 y(the)j Fh(vgalib-090.tar.gz)
+d Fi(\014le)i(from)f(sunsite.unc.edu.)22 b(It)15 b(is)g(\(I)g(b)q
+(eliev)o(e\))g(in)f(the)i Fh(pub/Linux/GCC)j(directory)p
+Fi(.)g(Y)m(ou)0 194 y(get)d(a)g(lot)g(of)f(stu\013)i(that)f(is)g(not)g
+(directly)h(used)g(to)f(solv)o(e)g(this)g(problem,)f(but)h(in)g(the)g
+(fon)o(ts)g(directory)h(that)f(is)g(created)0 251 y(when)g(y)o(ou)f(un)
+o(tar)h(the)g(\014le,)f(there)i(are)f(2)f(\014les)h(of)f(in)o(terest,)h
+(runx)g(and)g(restorefon)o(t.)24 b(Read)15 b(the)h(README)f(\014le)h
+(in)f(this)0 308 y(directory)m(.)21 b(Cop)o(y)15 b(runx)g(and)f
+(restorefon)o(t)i(to)f(a)g(directory)g(in)g(y)o(our)f(path.)21
+b(when)16 b(runx)f(is)g(used,)g(for)g(example,)e(it)h(sa)o(v)o(es)0
+365 y(the)g(fon)o(t)g(information)d(in)i(tmp/fon)o(tdata.)j(I)e(use)h
+(a)e(\014le)h(called)g(\014x)f(whic)o(h)h(consists)h(of)e(the)i(line:)
+65 476 y Fh(restorefont)20 b(-r)h(/tmp/fontdata)62 588
+y Fi(so)c(that)g(it)g(is)g(easy)g(to)g('\014x')f(a)h(vt)f(when)i(I)f
+(go)f(there)j(from)c(X)i(\(i.e.)27 b Fh(ctrl-alt-f2)p
+Fi(\).)e(This)17 b(should)f(also)h(w)o(ork)f(for)0 644
+y(dosem)o(u.)i(I)c(think)g(the)h(XF)m(ree86)f(p)q(eople)h(kno)o(w)e(ab)
+q(out)h(the)h(problem)e(and)h(are)h(w)o(orking)e(on)h(a)g(solution)f
+(as)h(this)g(is)g(a)g(bit)0 701 y(of)f(a)h(kluge.)0 847
+y Fc(7.2)56 b(Ho)n(w)19 b(do)g(I)f(get)h(dosem)n(u)e(to)i(w)n(ork)g
+(with)g(m)n(y)e(T)-5 b(riden)n(t/Actix/other)17 b(video)h(card?)0
+952 y Fh([)p Fi(The)c(screen)i(\015ic)o(k)o(ers)f(violen)o(tly)m(,)c
+(displa)o(ys)i(the)i(video)e(BIOS)i(startup)g(message,)e(and)h(hangs.])
+62 1030 y(Andrew)h(T)m(ridgell)e(\()p Fh(tridge@nimbus.an)o(u.edu)o
+(.au)p Fi(\))e(rep)q(orted)k(\(1/29/94\))e(that)62 1109
+y(I)h(found)g(with)f(early)h(v)o(ersions)g(it)g(w)o(ould)f(w)o(ork)g
+(if)g(I)h(used:)65 1220 y Fh(ports)21 b({)h(0x42)f(})62
+1331 y Fi(but)e(that)f(sometimes)f(m)o(y)g(mac)o(hine)g(w)o(ould)h
+(crash)h(when)g(it)f(w)o(as)g(cycling)h(the)g(video)f(bios)g(in)g
+(dosem)o(u.)31 b(This)18 b(is)0 1388 y(b)q(ecause)e(y)o(ou're)d(allo)o
+(wing)f(the)i(V)o(GA)g(bios)f(to)h(re-program)f(y)o(our)h(clo)q(c)o(k,)
+f(whic)o(h)h(sev)o(erely)h(stu\013s)g(with)e(Lin)o(ux.)62
+1466 y(This)g(prompted)f(me)g(to)h(write)g(the)g(readonly)g(and)f
+(masking)f(patc)o(hes)j(for)f(dosem)o(u,)e(whic)o(h)i(I)g(b)q(eliev)o
+(e)g(are)g(still)f(in)g(the)0 1523 y(latest)i(v)o(ersion.)k(I)c(no)o(w)
+g(use:)65 1635 y Fh(ports)21 b({)h(readonly)e(0x42)h(})62
+1746 y Fi(and)14 b(it)f(b)q(o)q(ots)i(dosem)o(u)e(more)g(slo)o(wly)m(,)
+e(but)k(more)d(reliably)m(.)62 1824 y(Tim)g(Shnaider)i(\()p
 Fh(tims@kcbbs.gen.nz)p Fi(\))d(also)i(rep)q(orted)j(\(1/18/94\))c(that)
-62 159 y(One)17 b(w)o(a)o(y)d(of)h(\014xing)g(this)h(is)f(to)h(use)g
+62 1903 y(One)17 b(w)o(a)o(y)d(of)h(\014xing)g(this)h(is)f(to)h(use)g
 (the)g(GETR)o(OM)f(program)f(to)i(dump)e(y)o(our)h(video)h(bios)f(to)g
-(a)h(\014le)f(and)h(edit)f(the)0 216 y(con\014g)f(\014le)g(in)f(the)i
+(a)h(\014le)f(and)h(edit)f(the)0 1959 y(con\014g)f(\014le)g(in)f(the)i
 Fh(/etc/dosemu)c Fi(directory)k(There)g(will)d(b)q(e)j(a)e(few)h(video)
-g(lines.)k(Here)d(is)f(m)o(y)e(video)h(line)65 327 y
+g(lines.)k(Here)d(is)f(m)o(y)e(video)h(line)65 2071 y
 Fh(video)21 b({)h(vga)f(console)f(graphics)g(chipset)h(trident)f
-(memsize)g(1024)h(vbios_file)65 384 y(/etc/dosemu/vbios)e(})62
-496 y Fi(where)c(vbios)f(is)g(the)g(\014le)g(generated)h(b)o(y)f(t)o
-(yping)65 607 y Fh(getrom)21 b(>)h(vbios)0 753 y Fc(7.3)56
-b(Wh)n(y)18 b(do)r(esn't)g(m)n(y)f(soundcard)j(soft)n(w)n(are)f(w)n
-(ork)h(with)e(dosem)n(u?)0 858 y Fi(Hann)o(u)c(Sa)o(v)o(olainen)e(\()p
+(memsize)g(1024)h(vbios_file)65 2128 y(/etc/dosemu/vbios)e(})62
+2239 y Fi(where)c(vbios)f(is)g(the)g(\014le)g(generated)h(b)o(y)f(t)o
+(yping)65 2350 y Fh(getrom)21 b(>)h(vbios)p eop
+%%Page: 12 12
+12 11 bop 0 -84 1950 3 v 0 -100 a Fe(8.)37 b(Other)15
+b(Hardw)o(are)1490 b Fi(12)0 81 y Fc(7.3)56 b(Wh)n(y)18
+b(do)r(esn't)g(m)n(y)f(soundcard)j(soft)n(w)n(are)f(w)n(ork)h(with)e
+(dosem)n(u?)0 186 y Fi(Hann)o(u)c(Sa)o(v)o(olainen)e(\()p
 Fh(hsavolai@cs.Helsink)o(i.FI)p Fi(\))f(rep)q(orted)k(\(3/21/94\))d
-(that)62 936 y(The)j(DOSEMU)g(and)f(an)o(y)g(DOS)h(program)d(with)j(it)
+(that)62 264 y(The)j(DOSEMU)g(and)f(an)o(y)g(DOS)h(program)d(with)j(it)
 f(run)g(under)i(con)o(trol)e(of)g(a)g(protected)i(mo)q(de)d(op)q
-(erating)i(system.)0 993 y(This)f(means)f(that)h(the)g(memory)e(is)i
+(erating)i(system.)0 321 y(This)f(means)f(that)h(the)g(memory)e(is)i
 (not)f(mapp)q(ed)g(as)h(the)h(program)d(exp)q(ects.)20
 b(If)14 b(it)f(someho)o(w)g(manages)g(to)h(start)g(DMA)0
-1050 y(based)h(recording)g(with)f(SB,)g(the)h(recorded)g(sound)g(do)q
+378 y(based)h(recording)g(with)f(SB,)g(the)h(recorded)g(sound)g(do)q
 (esn't)g(\014nd)f(it's)g(w)o(a)o(y)f(to)h(the)h(application.)j(It)c
-(just)g(destro)o(ys)i(some)0 1106 y(data)e(in)f(the)h(memory)m(.)62
-1185 y(James)g(B.)f(MacLean)i(\()p Fh(jmaclean@fox.nstn)o(.ns.)o(ca)p
-Fi(\))c(rep)q(orted)k(\(6/19/94\))e(that)62 1263 y(Sorry)j(to)f(disapp)
-q(oin)o(t,)f(but)h(at)g(this)g(time)f(DOSEMU)i(do)q(es)f(not)h(supp)q
+(just)g(destro)o(ys)i(some)0 434 y(data)e(in)f(the)h(memory)m(.)62
+513 y(James)g(B.)f(MacLean)i(\()p Fh(jmaclean@fox.nstn)o(.ns.)o(ca)p
+Fi(\))c(rep)q(orted)k(\(6/19/94\))e(that)62 591 y(Sorry)j(to)f(disapp)q
+(oin)o(t,)f(but)h(at)g(this)g(time)f(DOSEMU)i(do)q(es)f(not)h(supp)q
 (ort)f(directly)h(the)g(necessary)h(in)o(terception)f(of)0
-1320 y(in)o(terrupts)f(or)f(DMA)g(generally)f(required)i(for)e(sound)i
-(card)f(access)i(via)d(DOSEMU)h(:-\(.)62 1398 y(It's)g(b)q(ound)g(to)g
+648 y(in)o(terrupts)f(or)f(DMA)g(generally)f(required)i(for)e(sound)i
+(card)f(access)i(via)d(DOSEMU)h(:-\(.)62 726 y(It's)g(b)q(ound)g(to)g
 (happ)q(en)g(at)g(some)f(future)i(date)f(though)f(:-\),)0
-1567 y Ff(8)69 b(Other)22 b(Hardw)n(are)0 1696 y Fc(8.1)56
+895 y Ff(8)69 b(Other)22 b(Hardw)n(are)0 1024 y Fc(8.1)56
 b(Ho)n(w)19 b(do)g(I)f(get)h(m)n(y)e(xxxxx)f(device)h(w)n(orking)i
-(under)g(dosem)n(u?)0 1801 y Fi(Corey)14 b(Sw)o(eeney)h(\()p
+(under)g(dosem)n(u?)0 1129 y Fi(Corey)14 b(Sw)o(eeney)h(\()p
 Fh(corey@bbs.xnet.com)p Fi(\))c(rep)q(orted)k(\(5/30/94\))d(that)62
-1879 y(Here)k(is)e(a)g(log)f(of)g(m)o(y)g(adv)o(en)o(tures)i(trying)f
+1207 y(Here)k(is)e(a)g(log)f(of)g(m)o(y)g(adv)o(en)o(tures)i(trying)f
 (to)g(get)h(devices)g(w)o(orking)e(under)i(dosem)o(u.)j(So)c(far)g(I'v)
-o(e)g(gotten)h(m)o(y)d(v)o(oice)0 1936 y(mail)f(system)j(w)o(orking)f
+o(e)g(gotten)h(m)o(y)d(v)o(oice)0 1264 y(mail)f(system)j(w)o(orking)f
 (and)h(m)o(y)e(scanner)j(half)e(w)o(orking.)k(Here's)e(ho)o(w:)62
-2014 y(1.)20 b(Lo)q(ok)14 b(in)g(y)o(our)h(man)o(ual)d(and)i(\014nd)h
+1342 y(1.)20 b(Lo)q(ok)14 b(in)g(y)o(our)h(man)o(ual)d(and)i(\014nd)h
 (if)f(y)o(our)g(card)h(uses)h(an)o(y)e(p)q(orts.)21 b(If)14
 b(y)o(our)h(man)o(ual)d(giv)o(es)i(y)o(ou)g(some,)g(put)h(them)0
-2071 y(in)g(y)o(our)g(con\014g)g(\014le)g(at)h(the)f("p)q(orts")h
+1399 y(in)g(y)o(our)g(con\014g)g(\014le)g(at)h(the)f("p)q(orts")h
 (line.)22 b(Remem)o(b)q(er)13 b(that)i(sometimes)f(y)o(ou)h(need)h(to)f
 (ha)o(v)o(e)g(sev)o(eral)h(p)q(orts)g(in)f(a)g(ro)o(w,)0
-2128 y(and)f(the)g(\014rst)h(one)f(migh)o(t)e(b)q(e)i(the)h(only)e(one)
-h(do)q(cumen)o(ted.)62 2206 y(2.)33 b(T)m(ry)19 b(it)g(out.)33
+1456 y(and)f(the)g(\014rst)h(one)f(migh)o(t)e(b)q(e)i(the)h(only)e(one)
+h(do)q(cumen)o(ted.)62 1534 y(2.)33 b(T)m(ry)19 b(it)g(out.)33
 b(If)18 b(it)h(do)q(esn't)g(w)o(ork,)h(or)f(y)o(ou)f(don't)h(ha)o(v)o
 (e)g(a)f(man)o(ual)f(\(or)i(y)o(our)g(man)o(ual)d(is)j(as)g(crapp)o(y)h
-(as)f(m)o(y)0 2263 y(A)m(T)p Fh(&)p Fi(T)e(man)o(ual:\))23
+(as)f(m)o(y)0 1591 y(A)m(T)p Fh(&)p Fi(T)e(man)o(ual:\))23
 b(then)18 b(run)g(dosem)o(u)e(with)i(")p Fh(dos)i(-D+i)h(2>)h
 (/tmp/io.debug)p Fi(".)k(Run)17 b(y)o(our)g(device)h(soft)o(w)o(are,)g
-(then)0 2320 y(exit)13 b(dosem)o(u.)k(Lo)q(ok)c(through)h
+(then)0 1648 y(exit)13 b(dosem)o(u.)k(Lo)q(ok)c(through)h
 Fh(/tmp/io.debug)d Fi(and)i(\014nd)h(an)o(y)f(p)q(ort)g(n)o(um)o(b)q
 (ers)h(it)f(migh)o(t)e(giv)o(e)i(y)o(ou.)k(T)m(ry)d(adding)e(those)0
-2376 y(to)i(the)g(p)q(ort)g(lines)g(and)g(try)g(running)g(dosem)o(u)f
-(again.)62 2455 y(3.)k(If)10 b(y)o(ou)g(still)f(fail)g(then)i(y)o(ou)f
+1704 y(to)i(the)g(p)q(ort)g(lines)g(and)g(try)g(running)g(dosem)o(u)f
+(again.)62 1783 y(3.)k(If)10 b(y)o(ou)g(still)f(fail)g(then)i(y)o(ou)f
 (ma)o(y)e(need)j(in)o(terrupts.)18 b(Find)10 b(out)g(what)h(in)o
 (terrupt)g(the)g(card)f(uses)i(and)e(get)h(the)f(SIG.tgz)0
-2511 y(\(silly)j(in)o(terrupt)i(generator\))f(from)f(somewhere)h(on)f
+1839 y(\(silly)j(in)o(terrupt)i(generator\))f(from)f(somewhere)h(on)f
 (tsx-11.mit.edu.)j(Install)d(it)h(as)g(sp)q(eci\014ed)h(in)f(the)g
-(instructions.)p eop
-%%Page: 12 12
-12 11 bop 0 -84 1950 3 v 0 -100 a Fe(9.)37 b(Problems)14
-b(and)h(\014xes)1436 b Fi(12)62 81 y(and)14 b(that's)g(ab)q(out)g
-(it...)62 159 y(Question:)19 b(What)13 b(if)g(m)o(y)g(card)h(uses)h
-(DMA?)e(Answ)o(er:)19 b(Y)m(our)14 b(screw)o(ed.)0 328
-y Ff(9)69 b(Problems)22 b(and)i(\014xes)0 457 y Fc(9.1)56
-b(Wh)n(y)18 b(is)h(the)f(cursor)h(p)r(osition)e(wrong?)0
-562 y Fi(\(7/9/94\))62 640 y(This)d(is)g(a)f(kno)o(wn)h(bug)g(in)f
-(dosem)o(u)g(0.52.)k(It)d(will)e(b)q(e)j(\014xed)f(in)f(dosem)o(u)g
-(0.53.)0 786 y Fc(9.2)56 b(Wh)n(y)18 b(do)r(es)g(m)n(y)g(busmouse)f
-(act)i(funn)n(y)g(under)g(dosem)n(u)f(0.52?)0 891 y Fi(James)13
+(instructions.)62 1918 y(and)g(that's)g(ab)q(out)g(it...)62
+1996 y(Question:)19 b(What)13 b(if)g(m)o(y)g(card)h(uses)h(DMA?)e(Answ)
+o(er:)19 b(Y)m(our)14 b(screw)o(ed.)0 2165 y Ff(9)69
+b(Problems)22 b(and)i(\014xes)0 2294 y Fc(9.1)56 b(Wh)n(y)18
+b(is)h(the)f(cursor)h(p)r(osition)e(wrong?)0 2399 y Fi(\(7/9/94\))62
+2477 y(This)d(is)g(a)f(kno)o(wn)h(bug)g(in)f(dosem)o(u)g(0.52.)k(It)d
+(will)e(b)q(e)j(\014xed)f(in)f(dosem)o(u)g(0.53.)p eop
+%%Page: 13 13
+13 12 bop 0 -84 1950 3 v 0 -100 a Fe(9.)37 b(Problems)14
+b(and)h(\014xes)1436 b Fi(13)0 81 y Fc(9.2)56 b(Wh)n(y)18
+b(do)r(es)g(m)n(y)g(busmouse)f(act)i(funn)n(y)g(under)g(dosem)n(u)f
+(0.52?)0 186 y Fi(James)13 b(B.)h(MacLean)g(\()p Fh
+(jmaclean@fox.nstn.ns)o(.ca)p Fi(\))d(rep)q(orted)k(\(7/8/94\))e(that)
+62 264 y(Busmouse)h(supp)q(ort)h(is)e(quite)h(ALPHA)h(at)e(this)h(time)
+f(\(as)h(is)f(DOSEMU)i(:-\)\),)e(and)g(will)g(b)q(e)h(con)o(tin)o
+(ually)e(re\014ned)j(for)0 321 y(a)f(while)f(:-\).)k(Lo)q(ok)d(for)f(b)
+q(etter)j(supp)q(ort)f(in)e(the)h(up)q(coming)f(releases.)0
+467 y Fc(9.3)56 b(Wh)n(y)18 b(w)n(on't)h(dosem)n(u)f(run)h(a)g(second)g
+(time)d(after)i(exiting)f(in)h(console)g(mo)r(de?)0 572
+y Fi(Aldy)13 b(Hernandez)j(\()p Fh(aldy@sauron.cc.and)o(rews.)o(edu)p
+Fi(\))11 b(rep)q(orted)k(\(7/8/94\))e(that)62 650 y(Y)m(ou)h(should)f
+(disable)h(y)o(our)g(video)f(and/or)h(bios)f(cac)o(hing.)0
+796 y Fc(9.4)56 b(Some)17 b(dos)i(applications)f(still)f(do)i(not)g
+(detect)e(DPMI)i(under)f(dosem)n(u0.52.)0 901 y Fi(James)13
 b(B.)h(MacLean)g(\()p Fh(jmaclean@fox.nstn.ns)o(.ca)p
-Fi(\))d(rep)q(orted)k(\(7/8/94\))e(that)62 969 y(Busmouse)h(supp)q(ort)
-h(is)e(quite)h(ALPHA)h(at)e(this)h(time)f(\(as)h(is)f(DOSEMU)i(:-\)\),)
-e(and)g(will)g(b)q(e)h(con)o(tin)o(ually)e(re\014ned)j(for)0
-1026 y(a)f(while)f(:-\).)k(Lo)q(ok)d(for)f(b)q(etter)j(supp)q(ort)f(in)
-e(the)h(up)q(coming)f(releases.)0 1172 y Fc(9.3)56 b(Wh)n(y)18
-b(w)n(on't)h(dosem)n(u)f(run)h(a)g(second)g(time)d(after)i(exiting)f
-(in)h(console)g(mo)r(de?)0 1277 y Fi(Aldy)13 b(Hernandez)j(\()p
-Fh(aldy@sauron.cc.and)o(rews.)o(edu)p Fi(\))11 b(rep)q(orted)k
-(\(7/8/94\))e(that)62 1355 y(Y)m(ou)h(should)f(disable)h(y)o(our)g
-(video)f(and/or)h(bios)f(cac)o(hing.)0 1501 y Fc(9.4)56
-b(Some)17 b(dos)i(applications)f(still)f(do)i(not)g(detect)e(DPMI)i
-(under)f(dosem)n(u0.52.)0 1606 y Fi(James)13 b(B.)h(MacLean)g(\()p
-Fh(jmaclean@fox.nstn.ns)o(.ca)p Fi(\))d(rep)q(orted)k(\(6/19/94\))e
-(that)62 1684 y(A)o(t)18 b(this)g(time)f(\(as)h(of)f(0.52)g(release\))i
-(DOSEMU)g(is)f(still)f(gro)o(wing)f(with)i(resp)q(ect)i(to)e(DPMI.)g
-(It)g(will)e(run)i(certain)0 1741 y(DPMI)d(programs,)e(but)i(has)g(a)f
-(w)o(a)o(ys)h(to)f(go)h(y)o(et.)21 b(As)15 b(suggested)h(there)g(needs)
-g(to)f(b)q(e)g(more)f(of)g(the)h(calls)g(implem)o(en)o(ted,)0
-1798 y(etc.)k(Please)c(b)q(e)f(patien)o(t)g(:-\),)f(as)h(it's)f(b)q
-(ound)h(to)g(come)f(in)h(time.)0 1944 y Fc(9.5)56 b(Wh)n(y)14
+Fi(\))d(rep)q(orted)k(\(6/19/94\))e(that)62 979 y(A)o(t)18
+b(this)g(time)f(\(as)h(of)f(0.52)g(release\))i(DOSEMU)g(is)f(still)f
+(gro)o(wing)f(with)i(resp)q(ect)i(to)e(DPMI.)g(It)g(will)e(run)i
+(certain)0 1036 y(DPMI)d(programs,)e(but)i(has)g(a)f(w)o(a)o(ys)h(to)f
+(go)h(y)o(et.)21 b(As)15 b(suggested)h(there)g(needs)g(to)f(b)q(e)g
+(more)f(of)g(the)h(calls)g(implem)o(en)o(ted,)0 1093
+y(etc.)k(Please)c(b)q(e)f(patien)o(t)g(:-\),)f(as)h(it's)f(b)q(ound)h
+(to)g(come)f(in)h(time.)0 1238 y Fc(9.5)56 b(Wh)n(y)14
 b(do)r(es)g(dosem)n(u)f(giv)n(e)g("divide)g(o)n(v)n(er\015o)n(w")i
-(errors)f(after)g(running)g(for)g(more)f(than)128 2010
-y(24-hours?)0 2115 y Fi(\(1/17/94\))62 2193 y(This)i(is)g(a)f(kno)o(wn)
+(errors)f(after)g(running)g(for)g(more)f(than)128 1305
+y(24-hours?)0 1410 y Fi(\(1/17/94\))62 1488 y(This)i(is)g(a)f(kno)o(wn)
 g(bug.)21 b(It)15 b(will)e(\(hop)q(efully\))h(b)q(e)i(\014xed)f(in)f
 (an)h(up)q(coming)e(release.)22 b(F)m(or)14 b(no)o(w,)g(y)o(ou)g(can)h
-(simply)e(exit)0 2250 y(dosem)o(u)g(and)h(start)g(it)g(again.)0
-2396 y Fc(9.6)56 b(Wh)n(y)18 b(will)g(dosem)n(u)g(run)h(in)f(a)h(term)e
-(but)i(not)f(in)h(the)f(console?)0 2501 y Fi(JyiJiin)13
+(simply)e(exit)0 1545 y(dosem)o(u)g(and)h(start)g(it)g(again.)0
+1690 y Fc(9.6)56 b(Wh)n(y)18 b(will)g(dosem)n(u)g(run)h(in)f(a)h(term)e
+(but)i(not)f(in)h(the)f(console?)0 1796 y Fi(JyiJiin)13
 b(Luo)h(\()p Fh(jjluo@casbah.acn)o(s.nwu)o(.edu)p Fi(\))d(rep)q(orted)k
-(\(4/19/94\))d(that)p eop
-%%Page: 13 13
-13 12 bop 0 -84 1950 3 v 0 -100 a Fe(9.)37 b(Problems)14
-b(and)h(\014xes)1436 b Fi(13)62 81 y(I)12 b(exp)q(erienced)i(exactly)f
-(the)f(same)f(problem)g(b)q(efore.)18 b(I)12 b(\014gured)h(out)f(all)e
-(the)j(video)f(shado)o(w)f(in)h(m)o(y)e(AMI)i(BIOS)h(m)o(ust)0
-138 y(b)q(e)i(disabled.)i(No)o(w)d(dosem)o(u)f(runs)h(\014ne)h(on)e(m)o
-(y)g(system.)0 283 y Fc(9.7)56 b(Ho)n(w)19 b(can)g(I)g(sp)r(eed)e(up)i
-(dosem)n(u?)0 388 y Fi(Mark)14 b(Rejhon)f(\()p Fh(mdrejhon@undergrad.)o
-(math.)o(uwate)o(rloo.)o(ca)p Fi(\))e(rep)q(orted)k(\(4/7/94\))e(that)
-62 467 y(TIP:)e(Sp)q(eed)i(up)e(y)o(our)g(DOS)g("dir")g(listings)g(b)o
-(y)g(ab)q(out)g(25\045-50\045)e(or)i(so)h(b)o(y)f(t)o(yping)f
-Fh(break)21 b(off)11 b Fi(at)g(the)h(DOS)f(prompt)0 523
-y(or)j(including)f(it)g(in)h(auto)q(exec.bat.)62 602
-y(TIP:)k(Use)g(the)g(nnansi.com)e(ANSI)i(driv)o(er)g(to)g(sp)q(eed)h
-(up)f(the)g("dir")f(output)h(ev)o(en)g(more)f(at)g(roughly)g
-(50\045-100\045)0 659 y(more.)g(It)d(w)o(orks)g(prop)q(erly)g(in)g
+(\(4/19/94\))d(that)62 1874 y(I)g(exp)q(erienced)i(exactly)f(the)f
+(same)f(problem)g(b)q(efore.)18 b(I)12 b(\014gured)h(out)f(all)e(the)j
+(video)f(shado)o(w)f(in)h(m)o(y)e(AMI)i(BIOS)h(m)o(ust)0
+1931 y(b)q(e)i(disabled.)i(No)o(w)d(dosem)o(u)f(runs)h(\014ne)h(on)e(m)
+o(y)g(system.)0 2076 y Fc(9.7)56 b(Ho)n(w)19 b(can)g(I)g(sp)r(eed)e(up)
+i(dosem)n(u?)0 2181 y Fi(Mark)14 b(Rejhon)f(\()p Fh
+(mdrejhon@undergrad.)o(math.)o(uwate)o(rloo.)o(ca)p Fi(\))e(rep)q
+(orted)k(\(4/7/94\))e(that)62 2260 y(TIP:)e(Sp)q(eed)i(up)e(y)o(our)g
+(DOS)g("dir")g(listings)g(b)o(y)g(ab)q(out)g(25\045-50\045)e(or)i(so)h
+(b)o(y)f(t)o(yping)f Fh(break)21 b(off)11 b Fi(at)g(the)h(DOS)f(prompt)
+0 2316 y(or)j(including)f(it)g(in)h(auto)q(exec.bat.)62
+2395 y(TIP:)k(Use)g(the)g(nnansi.com)e(ANSI)i(driv)o(er)g(to)g(sp)q
+(eed)h(up)f(the)g("dir")f(output)h(ev)o(en)g(more)f(at)g(roughly)g
+(50\045-100\045)0 2451 y(more.)g(It)d(w)o(orks)g(prop)q(erly)g(in)g
 (non-graphics)f(mo)q(de,)g(unlik)o(e)g(turb)q(o.com.)62
-737 y(Jo)q(el)h(M.)g(Ho\013man)e(\()p Fh(joel@rac1.wam.umd.e)o(du)p
-Fi(\))f(rep)q(orted)k(\(4/23/94\))e(that)62 815 y(Ironically)m(,)d(I'v)
-o(e)h(found)g(that)h(it's)f(sometimes)e(faster)j(to)g(run)g(dosem)o(u)e
-(in)h(an)g(Emacs)g(terminal)f(em)o(ulator)g(rather)i(than)0
-872 y(directly)i(to)g(the)g(console.)19 b(Emacs's)13
-b(output)h(optimization)d(is)j(what)g(mak)o(es)e(the)j(di\013erence)h
-(here.)62 950 y(Put)f(the)f(follo)o(wing)d(in)j(y)o(our)f(.emacs:)174
-1070 y Fh(\(defun)21 b(do-dos)f(\(\))218 1127 y(\(interactive\))218
-1183 y(\(terminal-emulato)o(r)f("dos")i("/usr/local/bin/)o(dos")d
-(\(\)\)\))62 1303 y Fi(and)12 b(then)h("emacs)e(-f)h(do-dos")f(will)g
-(run)h(the)g(dosem)o(u)g(inside)f(the)i(bu\013er.)18
-b(Mak)o(e)12 b(sure)h(y)o(ou)f(emacs)g(windo)o(w)f(is)h(25x80,)0
-1360 y(of)h(course.)62 1438 y(P)o(ete)i(Heist)g(\()p
-Fh(heistp@rpi.edu)p Fi(\))c(rep)q(orted)k(\(5/13/94\))e(that)62
-1516 y(If)f(y)o(ou)f(compile)g(it)g(with)h(the)h(")p
-Fh(-funroll-all-l)o(oops)p Fi(")8 b(option)j(y)o(ou)h(will)e(get)j
-(MUCH)f(faster)h(screen)h(output.)j(Some)0 1573 y(other)h(parts)f(of)f
+2530 y(|||||||)p eop
+%%Page: 14 14
+14 13 bop 0 -84 1950 3 v 0 -100 a Fe(9.)32 b(Problems)13
+b(and)i(\014xes)1442 b Fi(14)62 81 y(Jo)q(el)14 b(M.)g(Ho\013man)e(\()p
+Fh(joel@rac1.wam.umd.e)o(du)p Fi(\))f(rep)q(orted)k(\(4/23/94\))e(that)
+62 159 y(Ironically)m(,)d(I'v)o(e)h(found)g(that)h(it's)f(sometimes)e
+(faster)j(to)g(run)g(dosem)o(u)e(in)h(an)g(Emacs)g(terminal)f(em)o
+(ulator)g(rather)i(than)0 216 y(directly)i(to)g(the)g(console.)19
+b(Emacs's)13 b(output)h(optimization)d(is)j(what)g(mak)o(es)e(the)j
+(di\013erence)h(here.)62 294 y(Put)f(the)f(follo)o(wing)d(in)j(y)o(our)
+f(.emacs:)174 414 y Fh(\(defun)21 b(do-dos)f(\(\))218
+471 y(\(interactive\))218 527 y(\(terminal-emulato)o(r)f("dos")i
+("/usr/local/bin/)o(dos")d(\(\)\)\))62 647 y Fi(and)12
+b(then)h("emacs)e(-f)h(do-dos")f(will)g(run)h(the)g(dosem)o(u)g(inside)
+f(the)i(bu\013er.)18 b(Mak)o(e)12 b(sure)h(y)o(ou)f(emacs)g(windo)o(w)f
+(is)h(25x80,)0 704 y(of)h(course.)62 782 y(|||||||)62
+860 y(P)o(ete)i(Heist)g(\()p Fh(heistp@rpi.edu)p Fi(\))c(rep)q(orted)k
+(\(5/13/94\))e(that)62 939 y(If)f(y)o(ou)f(compile)g(it)g(with)h(the)h
+(")p Fh(-funroll-all-l)o(oops)p Fi(")8 b(option)j(y)o(ou)h(will)e(get)j
+(MUCH)f(faster)h(screen)h(output.)j(Some)0 995 y(other)h(parts)f(of)f
 (the)i(em)o(ulator)d(will)g(run)j(m)o(uc)o(h)d(faster)j(as)f(w)o(ell.)
 26 b(Realize)17 b(that)g(the)g(consequence)i(of)e(this)g(is)f(a)h
-(larger)0 1630 y(executable)e(whic)o(h)f(eats)g(a)g(little)f(more)g
+(larger)0 1052 y(executable)e(whic)o(h)f(eats)g(a)g(little)f(more)g
 (memory)m(,)e(ev)o(en)j(though)g(it's)f(demand)g(loaded.)62
-1708 y(Georg)h(Wiegand)f(\()p Fh(gw@gwcomp.e.open.d)o(e)p
-Fi(\))e(rep)q(orted)16 b(\(5/16/94\))c(that)62 1786 y(Y)m(ou)j(also)g
-(can)h(use)g(the)g(k)o(eyw)o(ord)f Fh(HogThreshold)e
+1130 y(|||||||)62 1209 y(Georg)h(Wiegand)f(\()p Fh(gw@gwcomp.e.open.d)o
+(e)p Fi(\))e(rep)q(orted)16 b(\(5/16/94\))c(that)62 1287
+y(Y)m(ou)j(also)g(can)h(use)g(the)g(k)o(eyw)o(ord)f Fh(HogThreshold)e
 Fi(in)i Fh(/etc/dosemu.conf)p Fi(.)k(The)d(greater)h(the)f(follo)o
-(wing)d(n)o(um)o(b)q(er)0 1843 y(the)f(more)f(calculating-time)f(dosem)
+(wing)d(n)o(um)o(b)q(er)0 1344 y(the)f(more)f(calculating-time)f(dosem)
 o(u)h(gets.)18 b(F)m(or)11 b(example,)g(I)g(use)i(")p
 Fh(HogThreshold)19 b(60000)p Fi(")11 b(on)g(m)o(y)f(386/87-20)g
-(laptop.)0 1989 y Fc(9.8)56 b(My)18 b(CDR)n(OM)i(driv)n(e)e(has)h
+(laptop.)0 1490 y Fc(9.8)56 b(My)18 b(CDR)n(OM)i(driv)n(e)e(has)h
 (problems)d(reading)j(some)e(\014les)h(under)g(dosem)n(u.)0
-2094 y Fi(Vino)q(d)c(G)f(Kulk)n(arni)g(\()p Fh(vinod@cse.iitb.er)o
+1595 y Fi(Vino)q(d)c(G)f(Kulk)n(arni)g(\()p Fh(vinod@cse.iitb.er)o
 (net.i)o(n)p Fi(\))e(rep)q(orted)16 b(\(4/7/94\))c(that)62
-2172 y(When)h(a)f(CDR)o(OM)f(is)i(moun)o(ted)e(from)f(lin)o(ux)i(and)g
+1673 y(When)h(a)f(CDR)o(OM)f(is)i(moun)o(ted)e(from)f(lin)o(ux)i(and)g
 (used)h(from)d(within)i(DOSEMU)h(\(mapp)q(ed)e(driv)o(e\),)i(there)g
-(could)f(b)q(e)0 2229 y(some)h(problems.)k(The)d(cdrom)e(driv)o(er)i
+(could)f(b)q(e)0 1730 y(some)h(problems.)k(The)d(cdrom)e(driv)o(er)i
 (\(iso9660\))f(in)g(the)h(k)o(ernel)g(tries)g(to)f(\014nd)h(out)g(the)g
 (t)o(yp)q(e)g(of)f(the)h(\014le)f(\(i.e.)18 b(binary)13
-b(or)0 2286 y(text\).)21 b(If)14 b(it)h(can't)f(\014nd,)h(it)f(tries)h
+b(or)0 1786 y(text\).)21 b(If)14 b(it)h(can't)f(\014nd,)h(it)f(tries)h
 (to)g(guess)h(the)f(t)o(yp)q(e)g(of)f(the)h(\014le)g(using)f(a)h
 (heuristic.)21 b(This)14 b(heuristic)i(fails)d(under)j(some)0
-2343 y(circumstances)f(when)f(a)g(\(almost\))e(text)j(\014le)e(is)h(to)
+1843 y(circumstances)f(when)f(a)g(\(almost\))e(text)j(\014le)e(is)h(to)
 g(b)q(e)g(treated)h(as)f(binary)m(.)k(\(I)c(do)f(not)h(kno)o(w)f(if)g
-(it)h(is)g(a)f(bug)h(or)g(feature.\))62 2421 y(The)e(result)f(of)f
+(it)h(is)g(a)f(bug)h(or)g(feature.\))62 1921 y(The)e(result)f(of)f
 (this)h(is)g(that)g(if)f(y)o(ou)g(cop)o(y)h(suc)o(h)g(a)g(\014le)g
 (from)e(cdrom)g(\(from)h(lin)o(ux)f(itself,)i(and)g(not)f(necessarily)i
-(dosem)o(u\),)0 2478 y(the)17 b(resulting)g(\014le)g(will)e(b)q(e)j
+(dosem)o(u\),)0 1978 y(the)17 b(resulting)g(\014le)g(will)e(b)q(e)j
 (usually)e(bigger)g(than)h(original)e(\014le.)27 b(\(Blanks)17
 b(get)g(added)g(b)q(efore)g Fh(^J)p Fi(,)p Fh(^M)p Fi(.\))f(So)g(a)h
-(program)0 2534 y(running)d(in)f(dosem)o(u)g(giv)o(es)h(error)h(or)e
+(program)0 2035 y(running)d(in)f(dosem)o(u)g(giv)o(es)h(error)h(or)e
 (hangs,)h(whic)o(h)g(y)o(ou)f(ma)o(y)f(mistak)o(en)g(as)i(problem)f(of)
-g(dosem)o(u.)p eop
-%%Page: 14 14
-14 13 bop 0 -84 1950 3 v 0 -100 a Fe(9.)37 b(Problems)14
-b(and)h(\014xes)1436 b Fi(14)62 81 y(I)14 b(could)g(v)o(erify)f(that)h
-(this)g(kind)g(of)f(heuristic)i(is)e(not)h(used)h(when)f(the)h(cdrom)e
-(is)g(used)i(from)d(DEC)i(ALPHA)h(system.)0 138 y(\(I)f(nfs)g(moun)o
-(ted)f(the)h(exp)q(orted)h(cdrom)e(driv)o(e)h(and)g(used)h(under)f
-(dosem)o(u)f(as)h(a)g(driv)o(e.\))62 216 y(T)m(o)k(correct)j(the)e(b)q
-(eha)o(vior,)h(y)o(ou)e(can)h(force)g(the)h(iso9660)d(\014le)i(system)g
-(not)f(to)h(use)h(heuristic)f(at)g(all.)32 b(Mak)o(e)18
-b(the)0 273 y(follo)o(wing)11 b(c)o(hange)j(and)g(then)h(recompile)e(y)
-o(our)g(k)o(ernel.)0 387 y Fh(File:)21 b(/usr/src/linux/f)o(s/iso)o
-(fs/fi)o(le.c)0 444 y(In)g(Function:)f(static)h(int)g(isofs_file_read)e
-(\(\))44 501 y(...)240 558 y(if)i(\(inode->u.isofs_i.)o(i_fil)o(e_for)o
-(mat)d(==)k(ISOFS_FILE_UNKNOW)o(N\))d({)349 614 y(inode->u.isofs_i)o
-(.i_fi)o(le_fo)o(rmat)f(=)k(ISOFS_FILE_BINARY)c(;)349
-671 y(/*)j(ORIGINAL:)f(isofs_determine_f)o(ilety)o(pe\(in)o(ode\);)40
-b(*/)240 728 y(})44 785 y(...)0 930 y Fc(9.9)56 b(Where)17
-b(did)i(the)f(debugging)g(output)h(go?)0 1035 y Fi(As)d(of)e(dosem)o
-(u0.49pl4,)f(stderr)k(is)e(automatically)d(redirected)17
-b(to)e(/dev/n)o(ull.)22 b(T)m(ry)15 b("dos)g(-D+a)g(2>debug")f(to)h
-(turn)h(on)0 1091 y(debugging)d(information)e(and)j(redirect)h(it)f(to)
-g(the)g(\014le)g("debug".)0 1236 y Fc(9.10)56 b(Wh)n(y)18
-b(do)r(es)g(dosem)n(u)g(lo)r(c)n(k)g(up)h(after)f(one)h(k)n(eystrok)n
-(e?)0 1341 y Fi(\(12/17/93\))62 1420 y(Y)m(ou)14 b(need)g(to)g(turn)h
-(on)e(the)i(k)o(eyb)q(oard)f(in)o(terrupt)g(in)g(the)g(dosem)o(u)f
-(con\014g)h(\014le.)k(Add)c(a)g(line)f(to)h(the)h(con\014g)e(\014le:)65
-1534 y Fh(keybint)21 b(on)62 1649 y Fi(Shouldn't)13 b(b)q(e)i(a)e
-(problem)g(in)g(dosem)o(u0.52.)0 1794 y Fc(9.11)56 b(Wh)n(y)18
-b(are)h(m)n(y)e(k)n(eystrok)n(es)h(ec)n(ho)r(ed)g(tt)n(wwiiccee??)0
-1899 y Fi(Nic)o(k)c(Hollo)o(w)o(a)o(y)d(\()p Fh(alfie@dcs.warwick.ac)o
-(.uk)p Fi(\))g(rep)q(orted)k(\(2/22/94\))e(that)62 1977
-y(After)k(running)f(dos)h(after)f(pla)o(ying)f(with)h(some)g(stt)o(y)g
-(settings,)i(I)e(w)o(as)g(getting)g(doubled)g(k)o(ey)h(presses.)28
-b(I)16 b(can)g(no)o(w)0 2034 y(rev)o(eal)e(what)g(the)g(reason)h(is!)62
-2112 y(It)20 b(only)e(happ)q(ens)i(when)g(dos)f(is)g(run)g(on)g(the)h
+g(dosem)o(u.)62 2113 y(I)h(could)g(v)o(erify)f(that)h(this)g(kind)g(of)
+f(heuristic)i(is)e(not)h(used)h(when)f(the)h(cdrom)e(is)g(used)i(from)d
+(DEC)i(ALPHA)h(system.)0 2170 y(\(I)f(nfs)g(moun)o(ted)f(the)h(exp)q
+(orted)h(cdrom)e(driv)o(e)h(and)g(used)h(under)f(dosem)o(u)f(as)h(a)g
+(driv)o(e.\))62 2248 y(T)m(o)k(correct)j(the)e(b)q(eha)o(vior,)h(y)o
+(ou)e(can)h(force)g(the)h(iso9660)d(\014le)i(system)g(not)f(to)h(use)h
+(heuristic)f(at)g(all.)32 b(Mak)o(e)18 b(the)0 2305 y(follo)o(wing)11
+b(c)o(hange)j(and)g(then)h(recompile)e(y)o(our)g(k)o(ernel.)0
+2425 y Fh(File:)21 b(/usr/src/linux/f)o(s/iso)o(fs/fi)o(le.c)0
+2482 y(In)g(Function:)f(static)h(int)g(isofs_file_read)e(\(\))44
+2538 y(...)p eop
+%%Page: 15 15
+15 14 bop 0 -84 1950 3 v 0 -100 a Fe(9.)32 b(Problems)13
+b(and)i(\014xes)1442 b Fi(15)240 81 y Fh(if)21 b(\(inode->u.isofs_i.)o
+(i_fil)o(e_for)o(mat)d(==)k(ISOFS_FILE_UNKNOW)o(N\))d({)349
+138 y(inode->u.isofs_i)o(.i_fi)o(le_fo)o(rmat)f(=)k(ISOFS_FILE_BINARY)c
+(;)349 194 y(/*)j(ORIGINAL:)f(isofs_determine_f)o(ilety)o(pe\(in)o
+(ode\);)40 b(*/)240 251 y(})44 308 y(...)0 454 y Fc(9.9)56
+b(Where)17 b(did)i(the)f(debugging)g(output)h(go?)0 559
+y Fi(As)d(of)e(dosem)o(u0.49pl4,)f(stderr)k(is)e(automatically)d
+(redirected)17 b(to)e(/dev/n)o(ull.)22 b(T)m(ry)15 b("dos)g(-D+a)g
+(2>debug")f(to)h(turn)h(on)0 616 y(debugging)d(information)e(and)j
+(redirect)h(it)f(to)g(the)g(\014le)g("debug".)0 761 y
+Fc(9.10)56 b(Wh)n(y)18 b(do)r(es)g(dosem)n(u)g(lo)r(c)n(k)g(up)h(after)
+f(one)h(k)n(eystrok)n(e?)0 866 y Fi(\(12/17/93\))62 945
+y(Y)m(ou)14 b(need)g(to)g(turn)h(on)e(the)i(k)o(eyb)q(oard)f(in)o
+(terrupt)g(in)g(the)g(dosem)o(u)f(con\014g)h(\014le.)k(Add)c(a)g(line)f
+(to)h(the)h(con\014g)e(\014le:)65 1064 y Fh(keybint)21
+b(on)62 1184 y Fi(Shouldn't)13 b(b)q(e)i(a)e(problem)g(in)g(dosem)o
+(u0.52.)0 1330 y Fc(9.11)56 b(Wh)n(y)18 b(are)h(m)n(y)e(k)n(eystrok)n
+(es)h(ec)n(ho)r(ed)g(tt)n(wwiiccee??)0 1435 y Fi(Nic)o(k)c(Hollo)o(w)o
+(a)o(y)d(\()p Fh(alfie@dcs.warwick.ac)o(.uk)p Fi(\))g(rep)q(orted)k
+(\(2/22/94\))e(that)62 1513 y(After)k(running)f(dos)h(after)f(pla)o
+(ying)f(with)h(some)g(stt)o(y)g(settings,)i(I)e(w)o(as)g(getting)g
+(doubled)g(k)o(ey)h(presses.)28 b(I)16 b(can)g(no)o(w)0
+1570 y(rev)o(eal)e(what)g(the)g(reason)h(is!)62 1648
+y(It)20 b(only)e(happ)q(ens)i(when)g(dos)f(is)g(run)g(on)g(the)h
 (console)g(with)e('istrip')h(set.)34 b(This)19 b(is)g(\(I)h(think\))f
-(b)q(ecause)h(the)g(ra)o(w)0 2169 y(scanco)q(des)c(are)e(m)o(utilated)e
+(b)q(ecause)h(the)g(ra)o(w)0 1705 y(scanco)q(des)c(are)e(m)o(utilated)e
 (b)o(y)i(the)g('istrip',)e(so)i(that)g(k)o(ey)g(release)h(ev)o(en)o(ts)
 g(lo)q(ok)e(lik)o(e)g(k)o(ey)h(press)i(ev)o(en)o(ts.)62
-2247 y(So,)d(the)h(input)f(pro)q(cessing)h(needs)h(to)e(b)q(e)h(turned)
+1783 y(So,)d(the)h(input)f(pro)q(cessing)h(needs)h(to)e(b)q(e)h(turned)
 g(o\013)f(when)h(using)f(the)h(scan)g(co)q(des)g(on)g(a)f(console)g
-(\(it)g(w)o(ouldn't)f(b)q(e)i(a)0 2304 y(go)q(o)q(d)f(idea)h(to)g(do)f
-(it)h(for)g(tt)o(y)f(lines\).)0 2449 y Fc(9.12)56 b(Wh)n(y)18
+(\(it)g(w)o(ouldn't)f(b)q(e)i(a)0 1840 y(go)q(o)q(d)f(idea)h(to)g(do)f
+(it)h(for)g(tt)o(y)f(lines\).)0 1986 y Fc(9.12)56 b(Wh)n(y)18
 b(are)h(c)n(haracters)g Fa(<)f Fc(128)h(highligh)n(ted)e(and)j
-(blinking?)0 2554 y Fi(Chris)14 b(Kuehnk)o(e)h(\()p Fh
+(blinking?)0 2091 y Fi(Chris)14 b(Kuehnk)o(e)h(\()p Fh
 (Christian.Kuehnke@)o(Infor)o(matik)o(.Uni-)o(Olde)o(nburg)o(.DE)p
-Fi(\))c(rep)q(orted)k(\(3/21/94\))e(that)p eop
-%%Page: 15 15
-15 14 bop 0 -84 1950 3 v 0 -100 a Fe(10.)37 b(Con)o(tributi)o(ng)12
-b(to)k(the)f(dosem)o(u)f(pro)s(ject)1059 b Fi(15)62 81
-y(I)15 b(think)g(I'v)o(e)g(found)g(a)g(bug)g(in)g(dosem)o(u0.50pl1;)d
-(with)j(a)g(MD)o(A)g(card)h(displa)o(y)o(ed)e(c)o(haracters)j
-Fh(>)e Fi(128)f(automagically)0 138 y(app)q(eared)h(as)f(highligh)o
-(ted)e(and)i(blinking.)62 216 y(This)g(patc)o(h)g(\014xed)h(the)f
-(problem)f(for)g(me)g Fh([)p Fi(but)h(on)g(the)g(other)h(hand,)e(ma)o
-(yb)q(e)f(I'm)g(totally)h(wrong)h(;-\)]:)0 319 y Fh(---)21
-b(video.c~)86 b(Sat)21 b(Mar)g(19)g(00:50:25)g(1994)0
-376 y(+++)g(video.c)108 b(Sat)21 b(Mar)g(19)g(20:36:10)g(1994)0
-432 y(@@)g(-721,7)g(+721,7)f(@@)65 489 y(int)i(x,)f(y,)g(i,)h(tmp;)65
-546 y(unsigned)f(int)g(s;)65 603 y(static)g(int)g(gfx_flag)f(=)i(0;)0
-659 y(-)43 b(char)21 b(c;)0 716 y(+)43 b(u_char)21 b(c;)65
-773 y(us)h(*sm;)65 887 y(if)g(\(d.video)e(>=)h(3\))0
-1054 y Ff(10)69 b(Con)n(tributing)23 b(to)g(the)f(dosem)n(u)h(pro)t
-(ject)0 1183 y Fc(10.1)56 b(Who)18 b(is)h(resp)r(onsible)e(for)h(dosem)
-n(u?)0 1288 y Fi(\(3/18/94\))62 1366 y(Dosem)o(u)25 b(is)h(built)f(up)q
-(on)h(the)g(w)o(ork)g(of)f(Matthias)h(Lautner)g(and)g(Rob)q(ert)g
-(Sanders.)55 b(James)26 b(B.)g(MacLean)0 1423 y(\()p
-Fh(jmaclean@fox.nstn.)o(ns.ca)o Fi(\))11 b(is)j(resp)q(onsible)h(for)f
-(organizing)e(the)j(latest)f(releases)h(of)f(dosem)o(u.)501
-1526 y Fh(History)21 b(of)g(dosemu)218 1639 y(Version)86
-b(Date)348 b(Person)196 1696 y(------------------)o(-----)o(-----)o
-(-----)o(----)o(-----)o(-----)o(--)218 1753 y(0.1)174
-b(September)20 b(3,)h(1992)65 b(Matthias)20 b(Lautner)218
-1810 y(0.2)174 b(September)20 b(13,)h(1992)43 b(Matthias)20
-b(Lautner)218 1866 y(0.3)174 b(???)370 b(Matthias)20
-b(Lautner)218 1923 y(0.4)174 b(November)20 b(26,)h(1992)65
-b(Matthias)20 b(Lautner)218 1980 y(0.47)152 b(January)20
-b(27,)h(1993)87 b(Robert)20 b(Sanders)218 2037 y(0.47.7)108
-b(February)20 b(5,)h(1993)87 b(Robert)20 b(Sanders)218
-2094 y(0.48)152 b(February)20 b(16,)h(1993)65 b(Robert)20
-b(Sanders)218 2150 y(0.48pl1)86 b(February)20 b(18,)h(1993)65
-b(Robert)20 b(Sanders)218 2207 y(0.49)152 b(May)21 b(20,)g(1993)174
-b(Robert)20 b(Sanders)218 2264 y(0.49pl2)86 b(November)20
-b(18,)h(1993)65 b(James)20 b(MacLean)218 2321 y(0.49pl3)86
-b(November)20 b(30,)h(1993)65 b(James)20 b(MacLean)218
-2377 y(0.49pl3.3)42 b(December)20 b(3,)h(1993)87 b(James)20
-b(MacLean)218 2434 y(0.50)152 b(March)20 b(4,)i(1994)152
-b(James)20 b(MacLean)218 2491 y(0.50pl1)86 b(March)20
-b(18,)i(1994)130 b(James)20 b(MacLean)218 2548 y(0.52)152
-b(June)21 b(16,)g(1994)152 b(James)20 b(MacLean)p eop
+Fi(\))c(rep)q(orted)k(\(3/21/94\))e(that)62 2169 y(I)i(think)g(I'v)o(e)
+g(found)g(a)g(bug)g(in)g(dosem)o(u0.50pl1;)d(with)j(a)g(MD)o(A)g(card)h
+(displa)o(y)o(ed)e(c)o(haracters)j Fh(>)e Fi(128)f(automagically)0
+2226 y(app)q(eared)h(as)f(highligh)o(ted)e(and)i(blinking.)62
+2304 y(This)g(patc)o(h)g(\014xed)h(the)f(problem)f(for)g(me)g
+Fh([)p Fi(but)h(on)g(the)g(other)h(hand,)e(ma)o(yb)q(e)f(I'm)g(totally)
+h(wrong)h(;-\)]:)0 2416 y Fh(---)21 b(video.c~)86 b(Sat)21
+b(Mar)g(19)g(00:50:25)g(1994)0 2472 y(+++)g(video.c)108
+b(Sat)21 b(Mar)g(19)g(20:36:10)g(1994)0 2529 y(@@)g(-721,7)g(+721,7)f
+(@@)p eop
 %%Page: 16 16
 16 15 bop 0 -84 1950 3 v 0 -100 a Fe(10.)37 b(Con)o(tributi)o(ng)12
-b(to)k(the)f(dosem)o(u)f(pro)s(ject)1059 b Fi(16)0 81
-y Fc(10.2)56 b(I)18 b(w)n(an)n(t)i(to)f(help.)24 b(Who)19
-b(should)f(I)h(con)n(tact?)0 186 y Fi(The)c(dosem)o(u)e(pro)r(ject)i
-(is)f(a)g(team)g(e\013ort.)19 b(If)14 b(y)o(ou)g(wish)g(to)g(con)o
-(tribute,)h(see)g(the)g(DPR)f(\(DOSEMU)h(Pro)r(ject)g(Registry\).)0
-243 y(A)f(curren)o(t)h(cop)o(y)f(ma)o(y)e(b)q(e)j(found)e(in)h
-Fh(dspsun.eas.asu.)o(edu:/)o(pub/d)o(osemu)o Fi(.)p eop
+b(to)k(the)f(dosem)o(u)f(pro)s(ject)1059 b Fi(16)65 81
+y Fh(int)22 b(x,)f(y,)g(i,)h(tmp;)65 138 y(unsigned)f(int)g(s;)65
+194 y(static)g(int)g(gfx_flag)f(=)i(0;)0 251 y(-)43 b(char)21
+b(c;)0 308 y(+)43 b(u_char)21 b(c;)65 365 y(us)h(*sm;)65
+478 y(if)g(\(d.video)e(>=)h(3\))0 648 y Ff(10)69 b(Con)n(tributing)23
+b(to)g(the)f(dosem)n(u)h(pro)t(ject)0 776 y Fc(10.1)56
+b(Who)18 b(is)h(resp)r(onsible)e(for)h(dosem)n(u?)0 881
+y Fi(\(3/18/94\))62 960 y(Dosem)o(u)25 b(is)h(built)f(up)q(on)h(the)g
+(w)o(ork)g(of)f(Matthias)h(Lautner)g(and)g(Rob)q(ert)g(Sanders.)55
+b(James)26 b(B.)g(MacLean)0 1016 y(\()p Fh(jmaclean@fox.nstn.)o(ns.ca)o
+Fi(\))11 b(is)j(resp)q(onsible)h(for)f(organizing)e(the)j(latest)f
+(releases)h(of)f(dosem)o(u.)501 1128 y Fh(History)21
+b(of)g(dosemu)218 1241 y(Version)86 b(Date)348 b(Person)196
+1298 y(------------------)o(-----)o(-----)o(-----)o(----)o(-----)o
+(-----)o(--)218 1355 y(0.1)174 b(September)20 b(3,)h(1992)65
+b(Matthias)20 b(Lautner)218 1412 y(0.2)174 b(September)20
+b(13,)h(1992)43 b(Matthias)20 b(Lautner)218 1469 y(0.3)174
+b(???)370 b(Matthias)20 b(Lautner)218 1525 y(0.4)174
+b(November)20 b(26,)h(1992)65 b(Matthias)20 b(Lautner)218
+1582 y(0.47)152 b(January)20 b(27,)h(1993)87 b(Robert)20
+b(Sanders)218 1639 y(0.47.7)108 b(February)20 b(5,)h(1993)87
+b(Robert)20 b(Sanders)218 1696 y(0.48)152 b(February)20
+b(16,)h(1993)65 b(Robert)20 b(Sanders)218 1753 y(0.48pl1)86
+b(February)20 b(18,)h(1993)65 b(Robert)20 b(Sanders)218
+1809 y(0.49)152 b(May)21 b(20,)g(1993)174 b(Robert)20
+b(Sanders)218 1866 y(0.49pl2)86 b(November)20 b(18,)h(1993)65
+b(James)20 b(MacLean)218 1923 y(0.49pl3)86 b(November)20
+b(30,)h(1993)65 b(James)20 b(MacLean)218 1980 y(0.49pl3.3)42
+b(December)20 b(3,)h(1993)87 b(James)20 b(MacLean)218
+2036 y(0.50)152 b(March)20 b(4,)i(1994)152 b(James)20
+b(MacLean)218 2093 y(0.50pl1)86 b(March)20 b(18,)i(1994)130
+b(James)20 b(MacLean)218 2150 y(0.52)152 b(June)21 b(16,)g(1994)152
+b(James)20 b(MacLean)0 2296 y Fc(10.2)56 b(I)18 b(w)n(an)n(t)i(to)f
+(help.)24 b(Who)19 b(should)f(I)h(con)n(tact?)0 2401
+y Fi(The)c(dosem)o(u)e(pro)r(ject)i(is)f(a)g(team)g(e\013ort.)19
+b(If)14 b(y)o(ou)g(wish)g(to)g(con)o(tribute,)h(see)g(the)g(DPR)f
+(\(DOSEMU)h(Pro)r(ject)g(Registry\).)0 2458 y(A)f(curren)o(t)h(cop)o(y)
+f(ma)o(y)e(b)q(e)j(found)e(in)h Fh(dspsun.eas.asu.)o(edu:/)o(pub/d)o
+(osemu)o Fi(.)p eop
 %%Trailer
 end
 userdict /end-hook known{end-hook}if
diff -u --recursive --new-file dosemu0.53old//DOSEMU-HOWTO.sgml dosemu0.53//DOSEMU-HOWTO.sgml
--- dosemu0.53old//DOSEMU-HOWTO.sgml	Fri Aug  5 21:21:11 1994
+++ dosemu0.53//DOSEMU-HOWTO.sgml	Mon Aug  8 22:54:21 1994
@@ -7,7 +7,7 @@
 
 <title>The dosemu HOWTO
 <author>edited by Mike Deisher, <tt/deisher@dspsun.eas.asu.edu/ 
-<date>v0.52.1, 9 July 1994
+<date>v0.52.2, 5 Aug 1994
 
 <abstract>
 This is the `Frequently Asked Questions' (FAQ) / HOWTO document for
@@ -90,6 +90,21 @@
 MSDOS channel of Linux Activists.  The most recent version can be
 found on <tt>dspsun.eas.asu.edu:/pub/dosemu</tt>.
 
+<sect1>How do I submit changes or additions to the HOWTO?
+
+<p>The preferred method is to edit the file,
+<tt>dosemu-HOWTO-xx.x.sgml</tt> to incorporate the changes, create a
+diff file by typing something like
+
+<verb>
+               diff original-file new-file
+</verb>
+
+and send it to <tt>deisher@dspsun.eas.asu.edu</tt>.  If you do not
+know SGML, that's ok.  Changes or new information in any form will be
+accepted.  Creating the diff file just makes it easier on the HOWTO
+maintainer.  :-)
+
 <sect>Compiling and installing dosemu
 
 <sect1>Where are the installation instructions?
@@ -153,6 +168,8 @@
 where "home" is the name of an environmental variable that contains
 the location of the dos directory (/dos in this example).
 
+---------------------
+
 <p>Tim Bird (Tim_R_Bird@Novell.COM) states that LREDIR users should
 
 be careful when they use LREDIR in the autoexec, because COMMAND.COM
@@ -162,6 +179,8 @@
 autoexec.bat on the redirected drive and the physical drive
 (diskimage) be the same.
 
+---------------------
+
 <p> Robert D. Warren (<tt>rw11258@xx.acs.appstate.edu</tt>) reported
 (4/28/94) that
 
@@ -194,6 +213,35 @@
 from Linux while you are using dosemu with wholedisk or partition
 access.  This is an easy way to destroy the data on your dos partition.]
 
+---------------------
+
+If LILO is installed, the above will not work.  However...
+
+Thomas Mockridge (<tt>thomas@aztec.co.za</tt>) reported (8/5/94) that
+
+To boot dosemu with LILO and Stacker 4.0 I did a little work around...
+
+1. <tt>dd</tt> the MBR to a file. (or norton utility, etc., first 512 bytes)
+
+2. Boot dos (from full boot not emu), do a fdisk /mbr, make your dos
+   partition active with (dos) fdisk.
+
+3. Copy the new MBR to a file.
+
+4. Replace the original MBR
+
+5. Copy the second MBR to /var/lib/dosemu/partition.hda? (Whichever is
+   your dos partition)  
+
+6. Set dosemu.conf 
+<verb>
+               disk {partition "/dev/hda? ?"}
+</verb>
+
+7. Start dosemu and and voila!  No LILO.
+
+---------------------
+
 Holger Schemel (<tt>q99492@pbhrzx.uni-paderborn.de</tt>) reported
 (2/10/94) that
 
@@ -201,6 +249,8 @@
 you have to edit the file 'DBLSPACE.INI' manually and change the disk
 letter to the letter your drive gets under DOSEMU.
 
+---------------------
+
 Darren J Moffat (<tt>moffatd@dcs.gla.ac.uk</tt>) also reported
 (3/27/94)
 
@@ -598,6 +648,8 @@
 even more at roughly 50%-100% more.  It works properly in non-graphics 
 mode, unlike turbo.com.  
 
+---------------------
+
 <p>Joel M. Hoffman (<tt>joel@rac1.wam.umd.edu</tt>)
 reported (4/23/94) that
 
@@ -615,6 +667,8 @@
 and then "emacs -f do-dos" will run the dosemu inside the buffer.
 Make sure you emacs window is 25x80, of course.
 
+---------------------
+
 <p>Pete Heist (<tt>heistp@rpi.edu</tt>) reported (5/13/94) that
 
 If you compile it with the "<tt>-funroll-all-loops</tt>" option you
@@ -622,6 +676,8 @@
 will run much faster as well.  Realize that the consequence of this is
 a larger executable which eats a little more memory, even though it's
 demand loaded.
+
+---------------------
 
 <p>Georg Wiegand (<tt>gw@gwcomp.e.open.de</tt>) reported (5/16/94)
 that
diff -u --recursive --new-file dosemu0.53old//DOSEMU-HOWTO.txt dosemu0.53//DOSEMU-HOWTO.txt
--- dosemu0.53old//DOSEMU-HOWTO.txt	Fri Aug  5 21:21:11 1994
+++ dosemu0.53//DOSEMU-HOWTO.txt	Mon Aug  8 22:54:21 1994
@@ -1,6 +1,6 @@
   The dosemu HOWTO
   edited by Mike Deisher, deisher@dspsun.eas.asu.edu
-  v0.52.1, 9 July 1994
+  v0.52.2, 5 Aug 1994
 
   This is the `Frequently Asked Questions' (FAQ) / HOWTO document for
   dosemu.  The most up-to-date version of the dosemu-HOWTO may be found
@@ -87,6 +87,22 @@
   found on dspsun.eas.asu.edu:/pub/dosemu.
 
 
+  1.5.  How do I submit changes or additions to the HOWTO?
+
+  The preferred method is to edit the file, dosemu-HOWTO-xx.x.sgml to
+  incorporate the changes, create a diff file by typing something like
+
+
+                 diff original-file new-file
+
+
+
+  and send it to deisher@dspsun.eas.asu.edu.  If you do not know SGML,
+  that's ok.  Changes or new information in any form will be accepted.
+  Creating the diff file just makes it easier on the HOWTO maintainer.
+  :-)
+
+
   2.  Compiling and installing dosemu
 
   2.1.  Where are the installation instructions?
@@ -112,6 +128,8 @@
   a.k.a. Top Ten Stupid Mistakes installing dosemu (7/9/94)
 
 
+
+
   1. Don't read the QuickStart Guide.
   2. Try to compile with a kernel older than 1.0.8.
   3. Try to compile with an *unpatched* kernel >= 1.0.8.
@@ -129,7 +147,6 @@
   promise you will remain anonymous.  ;-)]
 
 
-
   3.  Hard disk setup
 
   3.1.  How do I use my hard disk with dosemu?
@@ -158,6 +175,8 @@
   where "home" is the name of an environmental variable that contains
   the location of the dos directory (/dos in this example).
 
+  ---------------------
+
 
   Tim Bird (Tim_R_Bird@Novell.COM) states that LREDIR users should
 
@@ -168,6 +187,8 @@
   autoexec.bat on the redirected drive and the physical drive
   (diskimage) be the same.
 
+  ---------------------
+
 
   Robert D. Warren (rw11258@xx.acs.appstate.edu) reported (4/28/94) that
 
@@ -175,7 +196,6 @@
   as needs be at that), and the next to last line in my config.sys file
   on the hdimage boot image is:
 
-
           install=c:\lredir.exe LINUX\FS\home/dos
 
 
@@ -195,7 +215,6 @@
 
   line in their dosemu config file.  Others have had success using
 
-
      disk { partition "/dev/hda1" 1 }
 
 
@@ -207,6 +226,36 @@
   access.  This is an easy way to destroy the data on your dos
   partition.]
 
+  ---------------------
+
+  If LILO is installed, the above will not work.  However...
+
+  Thomas Mockridge (thomas@aztec.co.za) reported (8/5/94) that
+
+  To boot dosemu with LILO and Stacker 4.0 I did a little work around...
+
+  1. dd the MBR to a file. (or norton utility, etc., first 512 bytes)
+
+  2. Boot dos (from full boot not emu), do a fdisk /mbr, make your dos
+  partition active with (dos) fdisk.
+
+  3. Copy the new MBR to a file.
+
+  4. Replace the original MBR
+
+  5. Copy the second MBR to /var/lib/dosemu/partition.hda? (Whichever is
+  your dos partition)
+
+  6. Set dosemu.conf
+
+                 disk {partition "/dev/hda? ?"}
+
+
+
+  7. Start dosemu and and voila!  No LILO.
+
+  ---------------------
+
   Holger Schemel (q99492@pbhrzx.uni-paderborn.de) reported (2/10/94)
   that
 
@@ -213,6 +262,7 @@
   Works even fine under DOSEMU with MS-DOS 6.0. If you have problems,
   then you have to edit the file 'DBLSPACE.INI' manually and change the
   disk letter to the letter your drive gets under DOSEMU.
+  ---------------------
 
   Darren J Moffat (moffatd@dcs.gla.ac.uk) also reported (3/27/94)
 
@@ -262,6 +312,7 @@
   According to jmorriso@bogomips.ee.ubc.ca, "dosemu still clobbers COM4
   (0x2e8, IRQ 5). 0x2e8 isn't in ports{} in config.  I have to run
   setserial /dev/cua3 irq 5 on it after dosemu exits."
+
   This is caused by your VGA BIOS.  I have found that by enabling the IO
   port trace and seeing where it was clobbered.
 
@@ -328,6 +379,7 @@
   Then add a "ka" entry to your termcap.  After that, every time you hit
   the sequence stored in your termcap for ka, your dos program recog-
   nizes an "F11."
+
   Warning:  Make sure that ka is not in use in your termcap.  If it is
   you are headed for trouble.
 
@@ -407,6 +459,7 @@
   I'll pass along some directions.
 
 
+
   6.  dosemu and X-windows
 
   6.1.  Can I run dosemu in console mode while running X?
@@ -459,7 +512,6 @@
   the font information in tmp/fontdata.  I use a file called fix which
   consists of the line:
 
-
      restorefont -r /tmp/fontdata
 
 
@@ -474,7 +526,6 @@
 
   [The screen flickers violently, displays the video BIOS startup
   message, and hangs.]
-
   Andrew Tridgell (tridge@nimbus.anu.edu.au) reported (1/29/94) that
 
   I found with early versions it would work if I used:
@@ -589,9 +640,6 @@
   You should disable your video and/or bios caching.
 
 
-
-
-
   9.4.  Some dos applications still do not detect DPMI under dosemu0.52.
 
   James B. MacLean (jmaclean@fox.nstn.ns.ca) reported (6/19/94) that
@@ -610,7 +658,6 @@
   This is a known bug.  It will (hopefully) be fixed in an upcoming
   release.  For now, you can simply exit dosemu and start it again.
 
-
   9.6.  Why will dosemu run in a term but not in the console?
 
   JyiJiin Luo (jjluo@casbah.acns.nwu.edu) reported (4/19/94) that
@@ -632,6 +679,8 @@
   more at roughly 50%-100% more.  It works properly in non-graphics
   mode, unlike turbo.com.
 
+  ---------------------
+
 
   Joel M. Hoffman (joel@rac1.wam.umd.edu) reported (4/23/94) that
 
@@ -650,7 +699,9 @@
   and then "emacs -f do-dos" will run the dosemu inside the buffer.
   Make sure you emacs window is 25x80, of course.
 
+  ---------------------
 
+
   Pete Heist (heistp@rpi.edu) reported (5/13/94) that
 
   If you compile it with the "-funroll-all-loops" option you will get
@@ -658,6 +709,10 @@
   much faster as well.  Realize that the consequence of this is a larger
   executable which eats a little more memory, even though it's demand
   loaded.
+
+  ---------------------
+
+
   Georg Wiegand (gw@gwcomp.e.open.de) reported (5/16/94) that
 
   You also can use the keyword HogThreshold in /etc/dosemu.conf.  The
@@ -723,7 +778,6 @@
 
 
 
-
   Shouldn't be a problem in dosemu0.52.
 
 
@@ -779,17 +833,6 @@
   James B. MacLean (jmaclean@fox.nstn.ns.ca) is responsible for
   organizing the latest releases of dosemu.
 
-
-
-
-
-
-
-
-
-
-
-
                          History of dosemu
 
             Version    Date                Person
@@ -818,6 +861,29 @@
   The dosemu project is a team effort.  If you wish to contribute, see
   the DPR (DOSEMU Project Registry).  A current copy may be found in
   dspsun.eas.asu.edu:/pub/dosemu.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
 
diff -u --recursive --new-file dosemu0.53old//Makefile dosemu0.53//Makefile
--- dosemu0.53old//Makefile	Fri Aug  5 21:21:11 1994
+++ dosemu0.53//Makefile	Mon Aug  8 22:54:21 1994
@@ -1,8 +1,8 @@
 # Makefile for Linux DOS emulator
 #
-# $Date: 1994/08/05 22:29:31 $
+# $Date: 1994/08/09 01:49:57 $
 # $Source: /home/src/dosemu0.60/RCS/Makefile,v $
-# $Revision: 2.20 $
+# $Revision: 2.21 $
 # $State: Exp $
 #
 
@@ -100,7 +100,8 @@
 
 OFILES= Makefile ChangeLog dosconfig.c QuickStart \
 	DOSEMU-HOWTO.txt DOSEMU-HOWTO.ps DOSEMU-HOWTO.sgml \
-	README.ncurses vga.pcf xdosemu xinstallvgafont README.X
+	README.ncurses vga.pcf xdosemu xinstallvgafont README.X \
+	README.CDROM
 
 BFILES=
 
diff -u --recursive --new-file dosemu0.53old//README.CDROM dosemu0.53//README.CDROM
--- dosemu0.53old//README.CDROM
+++ dosemu0.53//README.CDROM	Mon Aug  8 22:54:21 1994
@@ -0,0 +1,26 @@
+This file documents the cdrom extension, i have written
+for dosemu.
+
+The driver consists of a server on the linux side
+(accessed via int 0xe6 handle 0x40) and a device
+driver on the dos side.
+  
+Up to now i have tested it with the following programs
+- cdrom version of monkey island I
+  (by the way, does anybody know, why these
+   lucas arts adventures are so sloooow in dosemu?)
+- acdc (a shareware audio player)
+Please send any suggestions&bug reports to rucker@astro.uni-bonn.de.
+
+To use it:
+- load cdrom.sys within your config.sys file
+- start microsoft cdrom extension as follows:
+    mscdex /d:mscd0001 /l:driveletter
+
+Restrictions:
+The driver does not support the eject function. This means, the
+exchange of cd's while dosemu is running is curently (i'm working on 
+this) not supported. With most drives this is even physically impossible,
+because the cdrom drive is locked after /dev/sr0 has been opened.
+
+ 
diff -u --recursive --new-file dosemu0.53old//doc/DPR dosemu0.53//doc/DPR
--- dosemu0.53old//doc/DPR	Fri Aug  5 21:21:46 1994
+++ dosemu0.53//doc/DPR	Mon Aug  8 22:54:54 1994
@@ -1,5 +1,6 @@
 
 
+
                  _____________________________________
                 |                                     |
                 |       Dosemu Project Registry       |
@@ -78,7 +79,7 @@
         This is mainly bug fixing the DOSEMU video routines.
 
 
-*Xwindows color/graphics support: - Jason E Gorden
+*Xwindows color/graphics support: - Jason E Gorden - marky
 
         Xwindows support needs to be added.  Ideally dosemu, when run
 would open a color xterm, then run color text dos programs.  When a
@@ -116,8 +117,9 @@
 {sunsite.unc.edu:/pub/Linux/X11/xutils/terms/ansi_xterm-src.tgz.
 
 
-*Text output: - Savio Lam, Corey Sweeney (Me) and Mark Rejhon
+*Text output: - Mark Rejhon
 
+        -* This is done except for bugfixing *-
 Right now, termcap is being used.  Color & the IBM charactor set 
 must be added to dosemu.  By using ncurses, not only will we pick 
 up a terminal-independant way of displaying color, but we will also 
@@ -132,9 +134,10 @@
 are used.
 
 
+
 Serial maintaince: - Mark Rejhon (formerly Ronnie)
 
-	This is the code for modems and mice.  It has a big performance
+        This is the code for modems and mice.  It has a big performance
 increase over previous serial code.  Currently, serial performance 
 ranges from 9600bps to 38400bps in DOSEMU, with an excellent emulation
 of a 16550 UART, even on serial ports that does not have a 16550.
@@ -169,6 +172,8 @@
 
 DANG: - Alistair Macdonald
 
+        -* the dang has pretty much been finished
+                        the DANG now updates it'self *-
         For those of you who don't remember the DANG is a document
 that provides information on the differn't sections of dosemu.  It's
 soposto be a helpfull guide for C programmers who wish to make a
@@ -225,6 +230,8 @@
 it since he hates undocumented functions :-).
 
 
+
+
 *Performance improvements:  Linus & Lutz - (Tim played with this, but
 had to do IPX) 
 
@@ -283,25 +290,23 @@
 good idea for him to make james start following the FFSSTTD.
 
 
-------------------------------------------------------------------
+
+dynamic setup: - mike
 
-The following projects need someone to work on them:
+        this should allow you to change the dosemu configureation
+while it is running. (example turn off the speaker after it gets
+annoying). I have no idea how this is going allong.
 
 
-Memory:
 
-The memory for dosemu needs to be dynamically allocated.  This means
-that the linux system should be using all available memory for
-buffers,  when dosmeu starts up,  it only takes the ammount of memory
-that it needs to run the dosemu system it'self and the 640K to run the
-program.  Then when the program requests memory from the system, the
-dosemu system should take the nessacary memory from the linux buffers,
-and allocate it as EMS or XMS (whichever was requested).  Once that
-program gives up the memory, dosmeu should return the memory to the
-linux system.
+Name: LEXEC - Amit Margalt & Oren Tirosh
 
-Note that this eliminates the need to colectivize XMS & EMS into one
-memory pool, and it also eliminates the need to colectivize the memory
+Description: 
+
+LEXEC enables the user to run Linux programs from within DOSEMU, piping the I/O
+
+through DOSEMU itself between the Linux program and the DOS "console"...
+Our ideize the memory
 pools of every dosemu session running at the same time.
 
 I checked the way that this works right now.  And it appears that the
@@ -322,7 +327,8 @@
 The extended keys (ex: F12, Shift-F5, Controll-Pageup, Alt-Shift) must
 be recognized by dosemu.  Some keys like the F11 & F12 must be added
 as specified in the TNT (which is now becoming integrated into the dos
-FAQ). Pageup, and tilda (that little squigle) fall into this catagory
+FAQ (which is now the dosemu HOWTO)).
+Pageup, and tilda (that little squigle) fall into this catagory
 too.  However to get things like Shift-F5 to work, a special kind of
 process must be made.  This process must be rigged so that when the 
 correct sequence to represent the shift key being pressed, is passed
@@ -361,41 +367,8 @@
 {API calls into Linux IPX socket calls. Since the release of patch level 
 {14 of Linux, there is a kernel driver for the IPX protocol.  Although it 
 {has some bugs, I am confident that they will be worked out soon, and I 
-{have also heard of another, independent effort to get the IPX protocol 
-{working on Linux (via the X-Kernel protocol stack from the University of 
-{Arizona).  In any event, I believe that relatively soon, Linux will have  
-{a reliable IPX protocol stack running.  My IPX API emulation will allow 
-{DOS programs which use IPX (such as the NetWare shell) to be supported in 
-{DOSEMU.  I am almost finished with a first cut of the IPX emulation.  The 
-{last part I need to work on is integrating my asynchronous callouts with 
-{the DOSEMU 2-process IPC system.
-
-
-Sound driver - link emulated soundblaster card to the sound device.
-
-Divide overflow error - fix the "24" hour bug.
-
-Add .config file support (it checks the users home directory for a config
-file *then* looks for the default)
-
-
-------------------------------------------------------------------------
-
-Future project ideas:
-
-more video card drivers (eg. S3)
-how to become a developer document
-internetional keyboard support - there used to be a problem with this.
-        has it been fixed?
-
-automatic "ports" assignment (create a "jill" config script, that can
-be called with "dos -s jill 2> /dev/tty8" - basically the idea here
-would be that people could distribute litte configuration files for
-certain programs.  (possibly called config.jill or config.simearth
-(you get the pattern))
-
-run console mode as non-root
-boot from memory image (this would decrase the delay before you run
+{have also heard of another, independent eot from memory image (this would
+decrase the delay before you run
         your program.
 
 automatic dos program execution
@@ -478,11 +451,8 @@
 Michael E. Deisher      - deisher@enws99.EAS.ASU.EDU
 James Maclean           - jmaclean@fox.nstn.ns.ca
 Larry Stephan           - jlarry@ssnet.com
-Lutz Molgedey		- molgedey@solid.theo-physik.uni-kiel.de
+Lutz Molgedey           - molgedey@solid.theo-physik.uni-kiel.de
+Amit Margalt            - amit@tavis.enet.dec.com
 
 Corey Sweeney
 corey@bbs.xnet.com
-
-
-
-------------------------------
diff -u --recursive --new-file dosemu0.53old//drivers/Makefile dosemu0.53//drivers/Makefile
--- dosemu0.53old//drivers/Makefile	Fri Aug  5 21:21:43 1994
+++ dosemu0.53//drivers/Makefile	Mon Aug  8 22:54:52 1994
@@ -1,7 +1,7 @@
 AS86 = as86 -l
 LD86 = ld86 -0 -s
 
-all: emufs.sys ems.sys
+all: emufs.sys ems.sys cdrom.sys
 
 %.sys: %.S
 	$(AS86) -0 -o $*.o $< > $<.out
@@ -10,16 +10,16 @@
 	rm $*.tmp $*.o
 
 checkin:
-	-ci emufs.S ems.S
+	-ci emufs.S ems.S cdrom.S
 
 checkout:
-	-co -l emufs.S ems.S
+	-co -l emufs.S ems.S cdrom.S
 
 clean:
-	rm -f emufs.sys ems.sys *.o *.tmp *.out
+	rm -f emufs.sys ems.sys cdrom.sys *.o *.tmp *.out
 
 install:
 
-dist: Makefile emufs.S emufs.sys ems.S ems.sys
+dist: Makefile emufs.S emufs.sys ems.S ems.sys cdrom.S cdrom.sys
 	install -d $(DISTPATH)/drivers
 	install -m 0644 $^ $(DISTPATH)/drivers
diff -u --recursive --new-file dosemu0.53old//drivers/cdrom.S dosemu0.53//drivers/cdrom.S
--- dosemu0.53old//drivers/cdrom.S
+++ dosemu0.53//drivers/cdrom.S	Mon Aug  8 22:54:52 1994
@@ -0,0 +1,580 @@
+
+
+use16
+
+.text
+.bss
+.data
+.align 0
+
+	.org	0
+
+LinuxCD	=	0xe6		! int 0xe6 for cdrom server
+Helper  =       0x40		! code to reach cdrom server
+cr	=	0x0d
+lf	=	0x0a
+eom	=	'$'
+
+
+.globl _main
+_main:
+
+! header of a console device
+ConDev:
+	.long	-1		! pointer to next driver
+	.word	0xc800		! driver attributes
+        .word	Strategy        ! pointer to strategy routine
+        .word   Entry		! pointer to service routine
+        .ascii  "MSCD0001"	! logical device name
+	.word	0		! reserved
+        .byte   0
+        .byte   1		! number of units supported by driver
+        .ascii  "MSCD00"	! signature
+
+! command jump table
+ConTbl:
+	.word	coninit		! initialize driver
+	.word	cmderr		! media check
+	.word	cmderr		! build BPB
+	.word	ioctlin		! input of control strings
+	.word	cmderr		! input
+	.word	cmderr		! input no wait
+	.word 	cmderr		! input status
+	.word	input_flush	! input flush
+	.word 	cmderr		! output
+	.word	cmderr		! output verify
+	.word	cmderr		! output status
+	.word	cmderr		! output flush
+	.word	ioctlout	! output of control strings
+	.word	dev_open	! device open
+	.word 	dev_close	! device close
+	.word 	cmderr		! check if media is removed
+	.word  	cmderr		! out until busy
+! now the commands defined by the cdrom extensions
+MscdTbl:
+	.word	read_long	! read data from cdrom drive
+	.word	cmderr		! reserved
+	.word	cmderr          ! read long prefetch
+        .word   seek            ! position drives head
+        .word   play            ! play audio
+        .word   stop            ! stop playing audio
+        .word   cmderr          ! write long
+        .word 	cmderr          ! write verify
+        .word   resume          ! resume playing audio
+
+ptrsav:	.long	0		! saved pointer to request header
+
+! structure of command block header (13 bytes)
+CmdLen	= 	0		! length of header
+Unit   	=	1		! sub unit id
+CmdCode	=	2		! describes command to be executed
+Status	=	3		! status code
+Reserved=	5		! bytes 5 to 12 are reserved
+
+Strategy:
+	seg cs			! save adress of command block
+	mov	[ptrsav], bx	! in ptrsav
+	seg cs
+	mov 	[ptrsav+2], es
+	retf
+
+Entry:
+	push	si
+	push	ax
+	push	cx
+	push	dx
+	push	di
+	push	bp
+	push	ds
+	push	es
+	push	bx
+
+	push	cs
+	pop	ds
+	les	di,[ptrsav]	! es:di now points to the command block
+
+	seg es
+	movb	al,[di+CmdCode] ! get command code
+	movb	ah,#0
+	test	al,#0x80	! test if highes bit is set
+	jz	StdCommand
+	and	al,#0x7F	! AL = AL-128
+	cmp	al,#8	
+	ja	cmderr
+	mov	si,#MscdTbl
+	jmp	EntryCon
+
+StdCommand:
+	cmp	al,#16
+	ja 	cmderr
+	mov	si,#ConTbl
+EntryCon:
+	add	si,ax
+	add	si,ax
+! now we have in es:di the adress of the command block and cs = ds
+! now call command handler
+	jmp     [si]
+
+
+cmderr:
+	mov	ax,#3		! unknown command
+	movb    ah,#0x80	! set error bit
+exit:
+! here we expect that ax contains a valid status code
+	or	ah,#0x01	! set done flag
+	push	cs
+	pop	ds
+	les	di,[ptrsav]     ! pointer to command block to es:di
+
+	seg es
+	mov 	[di+Status],ax
+
+	pop	bx
+	pop	es
+	pop	ds
+	pop	bp
+	pop	di
+	pop	dx
+	pop	cx
+	pop	ax
+	pop	si
+	retf
+
+
+!-----------------------------------------------------------------------
+! the device functions
+!-----------------------------------------------------------------------
+
+
+!-----------------------------------------
+! device open / device close / input flush
+
+dev_open:
+	mov	ax,#0
+	br	exit
+
+dev_close:
+	mov	ax,#0
+	br	exit
+
+input_flush:
+	mov	ax,#0
+	br	exit
+
+
+
+!----------------------------------------
+! play / stop / resume
+
+play:
+	movb	al, #Helper
+	movb	ah, #0x04
+	int	LinuxCD
+	cmp	al, #0
+	jne	play_fail
+
+	movb	al, #0
+	movb	ah, #0x02	; set busy bit
+	br	exit
+play_fail:
+	movb	al, #0x0B	; set error code
+	movb	ah, #0x80	; set error bit
+	br	exit
+
+stop:
+	movb	al, #Helper
+	movb	ah, #0x05
+	int	LinuxCD
+ 	mov	ax,#0
+	br	exit
+	
+resume:
+	movb	al, #Helper
+	movb	ah, #0x06
+	int	LinuxCD
+	cmp	al, #0
+	jne	resume_fail
+
+	mov	al, #0
+	mov	ah, #0x02
+	br	exit
+resume_fail:
+	movb	al, #0x0C	; set error code
+	movb	ah, #0x80	; set error bit
+	br	exit
+
+	
+!----------------------------------------
+! read long / seek
+
+seek:
+	movb	al, #Helper
+	movb	ah, #0x03
+	int	LinuxCD
+	mov	ax,#0
+	br	exit
+
+READLONG_TRANSFER = 14
+
+read_long:
+	movb	al, #Helper
+	movb	ah, #0x02
+        seg es
+	lds	si, [di+READLONG_TRANSFER]
+	int	LinuxCD
+	cmp	al, #0
+	jne	read_long_fail
+
+	mov	ax,#0
+	br	exit
+read_long_fail:
+        movb	al, #0x0F	! set error code
+	movb	ah, #0x80	! set error bit
+	br	exit
+
+
+!----------------------------------------
+! ioctlout
+
+! structure of an ioctlout request
+IOCTLOUT_MDB	= 13		! media descriptor byte (not used)
+IOCTLOUT_TRANS	= 14		! transfer adress
+IOCTLOUT_TRANSLEN= 18		! number of bytes to be transfered
+IOCTLOUT_SEKTOR  = 20		! not used
+IOCTLOUT_VOL     = 22		! not used (4 bytes)	
+
+! ioctlout jump table
+IoctloutTbl:	.word	cmderr
+		.word	lockunlock
+		.word	resetdrive
+		.word	audio_ctrl
+		.word	cmderr
+		.word	closetray
+
+ioctlout:
+	seg es
+	lds	si,[di+IOCTLOUT_TRANS]
+
+! now we have:
+!   es:di points to command control block
+!   ds:si points to request header
+!   cs!=ds
+
+	movb	al,[si+0]	; get request code
+	movb	ah,#0
+	cmp	ax,#5
+	ja	ioctlout_err
+
+	push	cs
+	pop	es
+	mov	di,#IoctloutTbl
+	add	di,ax
+	add	di,ax
+
+	seg es
+	jmp	[di]
+
+ioctlout_err:
+	br	cmderr
+
+! function lock - unlock drive
+lockunlock:
+	seg cs
+	les	di,[ptrsav]
+	movb	al,#Helper
+	movb	ah,#0x0C
+        movb	bl,[si+1]
+	int	LinuxCD
+
+	mov	ax,#0
+	br	exit
+
+! resetdrive
+resetdrive:
+	seg cs
+	les	di,[ptrsav]
+	movb	al,#Helper
+	movb	ah,#0x0B
+	int	LinuxCD
+
+	mov	ax,#0
+	br	exit
+
+! function closetray
+closetray:
+	seg cs
+	les	di,[ptrsav]
+	movb	al,#Helper
+	movb	ah,#0x0E
+	int	LinuxCD
+
+	mov	ax,#0
+	br	exit
+
+! alter audio control
+audio_ctrl:
+	seg cs
+	les	di,[ptrsav]
+	movb	al,#Helper
+	movb	ah,#0x0F
+	int	LinuxCD
+
+	br 	check_busy
+
+
+!----------------------------------------
+! ioctlin
+
+! structure of an ioctlin request
+IOCTLIN_MDB	= 13		! media descriptor byte (not used)
+IOCTLIN_TRANS	= 14		! transfer adress
+IOCTLIN_TRANSLEN= 18		! number of bytes to be transfered
+IOCTLIN_SEKTOR  = 20		! not used
+IOCTLIN_VOL     = 22		! not used (4 bytes)	
+
+! ioctlin jump table
+IoctlinTbl:	.word	devheader_adress
+		.word	lochead
+		.word	cmderr
+		.word	cmderr
+		.word	getchaninfo
+		.word	cmderr
+		.word	devstatus
+		.word	ret_sectorsize
+		.word	ret_volumesize
+		.word	media_changed
+		.word	diskinfo
+		.word	trackinfo
+		.word	qchannel
+		.word	cmderr
+		.word 	cmderr
+		.word	audiostatus
+
+ioctlin:
+	seg es
+	lds	si,[di+IOCTLIN_TRANS]
+
+! now we have:
+!   es:di points to command control block
+!   ds:si points to request header
+!   cs!=ds
+
+	movb	al,[si+0]	; get request code
+	movb	ah,#0
+	cmp	ax,#15
+	ja	ioctlin_err
+
+	push	cs
+	pop	es
+	mov	di,#IoctlinTbl
+	add	di,ax
+	add	di,ax
+
+	seg es
+	jmp	[di]
+
+ioctlin_err:
+	br	cmderr
+
+! function get device header adress
+HEADER_ADRESS	= 1
+
+devheader_adress:
+	mov	ax,#ConDev
+	push	cs
+	pop	bx
+	mov	[si+HEADER_ADRESS+0],ax
+	mov	[si+HEADER_ADRESS+2],bx
+	mov	ax,#0
+	br	exit
+	
+! get device status
+DEVICE_PARMS = 1
+
+devstatus:
+	seg cs
+	les	di,[ptrsav]
+	movb	al,#Helper
+	movb	ah,#0x0A
+	int	LinuxCD
+
+	mov	[si+DEVICE_PARMS+0],bx
+	mov	[si+DEVICE_PARMS+2],#0
+	br	check_busy
+
+! return sectorsize
+RET_SECTORSIZE_READMODE	= 1
+RET_SECTORSIZE_SIZE	= 2
+
+ret_sectorsize:
+	seg cs
+	les	di,[ptrsav]
+	movb	al,#Helper
+	movb	ah,#0x08
+	int	LinuxCD
+
+	mov	[si+RET_SECTORSIZE_SIZE+0],bx
+	mov	ax,#0
+	br	exit
+
+! return volumesize
+ret_volumesize:
+	seg cs
+	les	di,[ptrsav]
+	movb	al,#Helper
+	movb	ah,#0x12
+	int	LinuxCD
+
+	mov	ax,#0
+	br	exit
+
+! media changed ?
+MEDIA_BYTE = 1
+
+media_changed:
+	seg cs
+	les	di,[ptrsav]
+	movb	al,#Helper
+	movb	ah,#0x09
+	int	LinuxCD
+
+	cmp	bl,#0
+	jne	media_changed_dnr
+	movb	bh,#1			! media not changed/disk ready
+	movb	[si+MEDIA_BYTE], bh
+	br	check_busy
+media_changed_dnr:
+	movb	bh,#0xff                ! media changed
+	movb	[si+MEDIA_BYTE], bh
+	br	check_busy
+
+! location of head
+lochead:
+	seg cs
+	les	di,[ptrsav]
+	movb	al,#Helper
+	movb	ah,#0x07
+	int	LinuxCD
+
+	br	check_busy
+
+! get status of audio
+audiostatus:
+	seg cs
+	les	di,[ptrsav]
+	movb	al,#Helper
+	movb	ah,#0x14
+	int	LinuxCD
+
+	br	check_busy
+
+! get q-channel information
+qchannel:
+	seg cs
+	les	di,[ptrsav]
+	movb	al,#Helper
+	movb	ah,#0x13
+	int	LinuxCD
+
+	br	check_busy
+
+! get information about tracks
+trackinfo:
+	seg cs
+	les	di,[ptrsav]
+	movb	al,#Helper
+	movb	ah,#0x11
+	int	LinuxCD
+
+	br	check_busy
+
+! get information about tracks
+diskinfo:
+	seg cs
+	les	di,[ptrsav]
+	movb	al,#Helper
+	movb	ah,#0x10
+	int	LinuxCD
+
+	br	check_busy
+
+! get information about channels
+getchaninfo:
+	seg cs
+	les	di,[ptrsav]
+	movb	al,#Helper
+	movb	ah,#0x15
+	int	LinuxCD
+
+	br	check_busy
+
+
+
+! audio playing in progress ?
+! hier noch irgendwie eine Fehlerbehandlung einbauen....
+
+
+check_busy:
+        cmp     al,#1
+        je      error
+	cmp	ah,#1
+	je	busy
+	mov	ax,#0
+	br	exit
+busy:
+	movb	al,#0
+	movb	ah,#0x02
+	br	exit
+error:
+	movb	al,#0x0C
+	movb	ah,#0x80	; set error bit
+	br	exit
+
+
+!----------------------------------------
+! init (must be at the end!)
+
+! structure of an init request:
+INIT_NumOfUnits	= 13
+INIT_EndAdress	= 14
+INIT_BPB	= 18
+INIT_BDN	= 22
+
+
+Message:
+	.ascii	"[dosemu 0.53 cdrom driver installed]"
+        .byte	cr,lf,eom
+FailMsg:
+        .byte	cr,lf,lf
+	.ascii  "Linux cdrom server not responding."
+	.byte	cr,lf
+	.ascii	"Installation aborted."
+	.byte	cr,lf,lf,eom
+
+coninit:
+	mov	dx, #Message
+	movb	ah, #0x09
+	int	0x21
+
+ 	movb	ah, #0x01
+	movb	al, #Helper
+	int	LinuxCD
+	cmp	al, #0
+	JE	InitEnde
+	mov	dx, #FailMsg
+	movb	ah, #0x09
+	int     0x21
+InitEnde:
+	seg es
+	mov	[di+INIT_EndAdress+0], #Message
+        mov	ax,cs
+        seg es
+	mov	[di+INIT_EndAdress+2], ax
+! future calls to init must return in error
+	mov	[ConTbl], #cmderr
+
+	mov	ax, #0
+	br      exit
+
+
+
Binary files dosemu0.53old//drivers/cdrom.sys and dosemu0.53//drivers/cdrom.sys differ
diff -u --recursive --new-file dosemu0.53old//emu.c dosemu0.53//emu.c
--- dosemu0.53old//emu.c	Fri Aug  5 21:21:08 1994
+++ dosemu0.53//emu.c	Mon Aug  8 22:54:20 1994
@@ -12,12 +12,15 @@
  * DANG_END_MODULE
  *
  * DANG_BEGIN_CHANGELOG
- * $Date: 1994/08/05 22:29:31 $
+ * $Date: 1994/08/09 01:49:57 $
  * $Source: /home/src/dosemu0.60/RCS/emu.c,v $
- * $Revision: 2.17 $
+ * $Revision: 2.18 $
  * $State: Exp $
  *
  * $Log: emu.c,v $
+ * Revision 2.18  1994/08/09  01:49:57  root
+ * Prep for pre53_11.
+ *
  * Revision 2.17  1994/08/05  22:29:31  root
  * Prep dir pre53_10.
  *
@@ -434,6 +437,7 @@
 #include <linux/hdreg.h>
 #include <sys/vm86.h>
 #include <syscall.h>
+#include <linux/cdrom.h>
 
 #include "config.h"
 #include "memory.h"
@@ -1920,9 +1924,9 @@
     set_ticks(last_ticks);
   };
 
+  termioInit();
   mouse_init();
   disk_init();
-  termioInit();
 
 #ifdef X_SUPPORT
   /* when X supports keyboard input, the termioInit call above should
@@ -2141,7 +2145,7 @@
 
 void
  usage(void) {
-  fprintf(stdout, "$Header: /home/src/dosemu0.60/RCS/emu.c,v 2.17 1994/08/05 22:29:31 root Exp root $\n");
+  fprintf(stdout, "$Header: /home/src/dosemu0.60/RCS/emu.c,v 2.18 1994/08/09 01:49:57 root Exp root $\n");
   fprintf(stdout, "usage: dos [-ABCckbVNtsgxKm234e] [-D flags] [-M SIZE] [-P FILE] [ -F File ] 2> dosdbg\n");
   fprintf(stdout, "    -A boot from first defined floppy disk (A)\n");
   fprintf(stdout, "    -B boot from second defined floppy disk (B) (#)\n");
@@ -2216,6 +2220,389 @@
   while (*s) char_out(*s++, bios_current_screen_page);
 }
 
+
+
+int cdrom_fd = -1;
+
+unsigned int device_status;
+struct audio_status { unsigned int status;
+                      unsigned char paused_bit;
+                      unsigned int last_StartSector,last_EndSector;
+                      unsigned char outchan0,outchan1,outchan2,outchan3;
+                      unsigned char volume0,volume1,volume2,volume3;
+                    } audio_status;
+
+
+#define CALC_PTR(PTR,OFFSET,RESULT_TYPE) ((RESULT_TYPE *)(PTR+OFFSET))
+
+
+                    
+#define MSCD_GETVOLUMESIZE_SIZE    1
+
+#define MSCD_READ_ADRESSING       13
+#define MSCD_READ_STARTSECTOR     20
+#define MSCD_READ_NUMSECTORS      18
+
+#define MSCD_SEEK_STARTSECTOR     20
+
+#define MSCD_PLAY_ADRESSING       13
+#define MSCD_PLAY_STARTSECTOR     14
+#define MSCD_PLAY_NUMSECTORS      18
+
+#define MSCD_LOCH_ADRESSING        1
+#define MSCD_LOCH_LOCATION         2
+
+#define MSCD_DISKINFO_LTN          1
+#define MSCD_DISKINFO_HTN          2
+#define MSCD_DISKINFO_LEADOUT      3
+
+#define MSCD_TRACKINFO_TRACKNUM    1
+#define MSCD_TRACKINFO_TRACKPOS    2
+#define MSCD_TRACKINFO_CTRL        6
+
+#define MSCD_QCHAN_CTRL            1
+#define MSCD_QCHAN_TNO             2
+#define MSCD_QCHAN_IND             3
+#define MSCD_QCHAN_MIN             4
+#define MSCD_QCHAN_SEC             5
+#define MSCD_QCHAN_FRM             6
+#define MSCD_QCHAN_ZERO            7
+#define MSCD_QCHAN_AMIN            8
+#define MSCD_QCHAN_ASEC            9
+#define MSCD_QCHAN_AFRM           10
+
+#define MSCD_AUDSTAT_PAUSED        1
+#define MSCD_AUDSTAT_START         3
+#define MSCD_AUDSTAT_END           7
+
+#define MSCD_CTRL_VOLUME0          2
+#define MSCD_CTRL_VOLUME1          4
+#define MSCD_CTRL_VOLUME2          6
+#define MSCD_CTRL_VOLUME3          8
+
+#define MSCD_AUDCHAN_VOLUME0       2
+#define MSCD_AUDCHAN_VOLUME1       4
+#define MSCD_AUDCHAN_VOLUME2       6
+#define MSCD_AUDCHAN_VOLUME3       8
+
+                                            
+void cdrom_helper()
+{
+   unsigned char *req_buf,*transfer_buf;
+   unsigned int Sector_plus_150,Sector;
+   struct cdrom_msf cdrom_msf;
+   struct cdrom_subchnl cdrom_subchnl;
+   struct cdrom_tochdr cdrom_tochdr;
+   struct cdrom_tocentry cdrom_tocentry;
+   struct cdrom_volctrl cdrom_volctrl;
+   int n,ioctlin;
+   
+              /*  error ("call function %d !\n", HI(ax));
+
+                ioctlin = 0;
+                req_buf = SEG_ADR((char *), es, di);
+                error ("\ndebug cdrom: \n");
+                for (n = 1; n <= req_buf[0]; ++n) {
+                   error ("  %3x", req_buf[n-1]);
+                   if ((n % 8) == 0)
+                     error ("\n");
+                };
+                error ("\n");
+                if (req_buf[2] == 3) {
+                  ioctlin = 1;
+                  error ("Ein ioctlin request : ");
+                  req_buf = SEG_ADR((char *), ds, si);
+                  for (n = 0; n <= 9; ++n)
+                     error ("  %3x", req_buf[n]);
+                  error ("\n");
+                }
+                error ("\n"); */
+
+   switch (HI(ax)) {
+     case 0x01: audio_status.status = 0x00000310;
+                audio_status.paused_bit = 0;
+                audio_status.volume0 = 0xFF;
+                audio_status.volume1 = 0xFF;
+                audio_status.volume2 = 0;
+                audio_status.volume3 = 0;
+                audio_status.outchan0 = 0;
+                audio_status.outchan1 = 1;
+                audio_status.outchan2 = 2;
+                audio_status.outchan3 = 3;
+                
+                cdrom_fd = open ("/dev/cdrom", O_RDONLY);
+                
+                if (cdrom_fd < 0) 
+                  LO(ax) = 1;
+                 else LO(ax) = 0;
+                break;
+     case 0x02: /* read long */
+                req_buf = SEG_ADR((char *), es, di);
+                transfer_buf = SEG_ADR((char *), ds, si);
+                
+                if (*CALC_PTR(req_buf,MSCD_READ_ADRESSING,u_char) == 1) {
+                  cdrom_msf.cdmsf_min0   = *CALC_PTR(req_buf,MSCD_READ_STARTSECTOR+2,u_char);
+                  cdrom_msf.cdmsf_sec0   = *CALC_PTR(req_buf,MSCD_READ_STARTSECTOR+1,u_char);
+                  cdrom_msf.cdmsf_frame0 = *CALC_PTR(req_buf,MSCD_READ_STARTSECTOR+0,u_char);
+                  Sector = cdrom_msf.cdmsf_min0*60*75+cdrom_msf.cdmsf_sec0*75
+                            +cdrom_msf.cdmsf_frame0-150;
+                 }                
+                 else { Sector = *CALC_PTR(req_buf,MSCD_READ_STARTSECTOR,u_long);
+                      }
+                lseek (cdrom_fd, Sector*2048, SEEK_SET);
+                if (read (cdrom_fd, transfer_buf, *CALC_PTR(req_buf,MSCD_READ_NUMSECTORS,u_short)*2048) < 0)
+                  LO(ax) = 1;
+                 else LO(ax) = 0;
+                break; 
+     case 0x03: /* seek */
+                req_buf = SEG_ADR((char *), es, di);
+                lseek (cdrom_fd, *CALC_PTR(req_buf,MSCD_SEEK_STARTSECTOR,u_long)*2048, SEEK_SET);
+                break;
+     case 0x04: /* play */
+                req_buf = SEG_ADR((char *), es, di);
+                if (*CALC_PTR(req_buf,MSCD_PLAY_ADRESSING,u_char) == 1) {
+                  cdrom_msf.cdmsf_min0   = *CALC_PTR(req_buf,MSCD_PLAY_STARTSECTOR+2,u_char);
+                  cdrom_msf.cdmsf_sec0   = *CALC_PTR(req_buf,MSCD_PLAY_STARTSECTOR+1,u_char);
+                  cdrom_msf.cdmsf_frame0 = *CALC_PTR(req_buf,MSCD_PLAY_STARTSECTOR+0,u_char);
+                  Sector_plus_150 = cdrom_msf.cdmsf_min0*60*75+cdrom_msf.cdmsf_sec0*75
+                                      +cdrom_msf.cdmsf_frame0;
+                  audio_status.last_StartSector = Sector_plus_150;
+                 }                
+                 else { Sector_plus_150 = *CALC_PTR(req_buf,MSCD_PLAY_STARTSECTOR,u_long) + 150;
+                        cdrom_msf.cdmsf_min0   = (Sector_plus_150 / (60*75));
+                        cdrom_msf.cdmsf_sec0   = (Sector_plus_150 % (60*75)) / 75;
+                        cdrom_msf.cdmsf_frame0 = (Sector_plus_150 % (60*75)) % 75;
+                        audio_status.last_StartSector = Sector_plus_150;
+                      }
+                Sector_plus_150 += *CALC_PTR(req_buf,MSCD_PLAY_NUMSECTORS,u_long); 
+                cdrom_msf.cdmsf_min1   = (Sector_plus_150 / (60*75));
+                cdrom_msf.cdmsf_sec1   = (Sector_plus_150 % (60*75)) / 75;
+                cdrom_msf.cdmsf_frame1 = (Sector_plus_150 % (60*75)) % 75;
+
+                audio_status.last_EndSector = Sector_plus_150;
+                audio_status.paused_bit = 0;
+                if (ioctl (cdrom_fd, CDROMPLAYMSF, &cdrom_msf) == -1) {
+                  LO(ax) = 1;
+                 }
+                 else LO(ax) = 0;
+                break;                 
+     case 0x05: /* pause (stop) audio */
+                LO(ax) = 0;
+                if (ioctl (cdrom_fd, CDROMSUBCHNL, &cdrom_subchnl) != -1) {
+                  if (cdrom_subchnl.cdsc_audiostatus == CDROM_AUDIO_PLAY) {
+                    audio_status.last_StartSector =             
+                                cdrom_subchnl.cdsc_absaddr.msf.minute*60*75
+                                +cdrom_subchnl.cdsc_absaddr.msf.second*75
+                                +cdrom_subchnl.cdsc_absaddr.msf.frame;
+                    ioctl (cdrom_fd, CDROMPAUSE, NULL);
+                    audio_status.paused_bit = 1;
+                   }
+                  else { audio_status.last_StartSector = 0;
+                         audio_status.last_EndSector = 0;
+                         audio_status.paused_bit = 0;
+                       }
+                }
+                break;
+     case 0x06: /* resume audio */
+                LO(ax) = 0;
+                if (audio_status.paused_bit) {
+                  if (ioctl (cdrom_fd, CDROMRESUME, NULL) != -1) {
+                    audio_status.paused_bit = 0;
+                    HI(ax) = 1;
+                  }
+                 }
+                else LO(ax) = 1;
+                break;                
+     case 0x07: /* location of head */
+                if (ioctl (cdrom_fd, CDROMSUBCHNL, &cdrom_subchnl) == -1)
+                  LO(ax) = 1;
+                 else { 
+                        req_buf = SEG_ADR((char *), ds, si);
+                        if (*CALC_PTR(req_buf,MSCD_LOCH_ADRESSING,u_char) == 0) {
+                          *CALC_PTR(req_buf,MSCD_LOCH_LOCATION,u_long)
+                             = cdrom_subchnl.cdsc_absaddr.msf.minute*60*75
+                                    +cdrom_subchnl.cdsc_absaddr.msf.second*75
+                                     +cdrom_subchnl.cdsc_absaddr.msf.frame-150;                                                
+                         }
+                         else {
+                               *CALC_PTR(req_buf,MSCD_LOCH_LOCATION+3,u_char) = 0;
+                               *CALC_PTR(req_buf,MSCD_LOCH_LOCATION+2,u_char) = cdrom_subchnl.cdsc_absaddr.msf.minute;
+                               *CALC_PTR(req_buf,MSCD_LOCH_LOCATION+1,u_char) = cdrom_subchnl.cdsc_absaddr.msf.second;
+                               *CALC_PTR(req_buf,MSCD_LOCH_LOCATION+0,u_char) = cdrom_subchnl.cdsc_absaddr.msf.frame;
+                              }
+                        if (cdrom_subchnl.cdsc_audiostatus == CDROM_AUDIO_PLAY)
+                          HI(ax) = 1;   
+                         else HI(ax) = 0;
+                        LO(ax) = 0;
+                      }
+                break;
+     case 0x08: /* return sectorsize */
+                LO(ax) = 0;
+                LWORD(ebx) = 2048;
+                break;
+     case 0x09: /* media changed */
+                HI(ax) = 0;
+                if (ioctl (cdrom_fd, CDROMSUBCHNL, &cdrom_subchnl) != -1) 
+                  if (cdrom_subchnl.cdsc_audiostatus == CDROM_AUDIO_PLAY)
+                    HI(ax) = 1;
+                LO(ax) = 0;
+                LO(bx) = 0;
+                break;
+     case 0x0A: /* device status */
+                LWORD(ebx) = audio_status.status;
+                HI(ax) = 0;
+                if (ioctl (cdrom_fd, CDROMSUBCHNL, &cdrom_subchnl) != -1) 
+                  if (cdrom_subchnl.cdsc_audiostatus == CDROM_AUDIO_PLAY)
+                    HI(ax) = 1;
+                LO(ax) = 0;
+                break;
+     case 0x0B: /* drive reset */
+                LO(ax) = 0;
+                break;
+     case 0x0C: /* lock/unlock door */
+                if (LO(bx) == 1)
+                  audio_status.status &= 0xFFFFFFFD;
+                 else audio_status.status |= 0x2;
+                LO(ax) = 0;
+                break;
+     case 0x0D: /* eject */
+                if (ioctl (cdrom_fd, CDROMEJECT, NULL) != -1)
+                  LO(ax) = 0;
+                 else LO(ax) = 1;
+                break;
+     case 0x0E: /* close tray */
+                LO(ax) = 0;
+                break;
+     case 0x0F: /* audio channel control */
+                LWORD(eax) = 0;
+                if (ioctl (cdrom_fd, CDROMSUBCHNL, &cdrom_subchnl) != -1) 
+                  if (cdrom_subchnl.cdsc_audiostatus == CDROM_AUDIO_PLAY)
+                    HI(ax) = 1;
+                req_buf = SEG_ADR((char *), ds, si);
+                cdrom_volctrl.channel0 = *CALC_PTR(req_buf, MSCD_CTRL_VOLUME0, u_char);
+                cdrom_volctrl.channel1 = *CALC_PTR(req_buf, MSCD_CTRL_VOLUME1, u_char);
+                cdrom_volctrl.channel2 = *CALC_PTR(req_buf, MSCD_CTRL_VOLUME2, u_char);
+                cdrom_volctrl.channel3 = *CALC_PTR(req_buf, MSCD_CTRL_VOLUME3, u_char);
+                audio_status.volume0 = cdrom_volctrl.channel0;
+                audio_status.volume1 = cdrom_volctrl.channel1;
+                audio_status.volume2 = cdrom_volctrl.channel2;
+                audio_status.volume3 = cdrom_volctrl.channel3;
+                audio_status.outchan0 = *CALC_PTR(req_buf, MSCD_CTRL_VOLUME0-1, u_char);
+                audio_status.outchan1 = *CALC_PTR(req_buf, MSCD_CTRL_VOLUME1-1, u_char);
+                audio_status.outchan2 = *CALC_PTR(req_buf, MSCD_CTRL_VOLUME2-1, u_char);
+                audio_status.outchan3 = *CALC_PTR(req_buf, MSCD_CTRL_VOLUME3-1, u_char);
+                ioctl (cdrom_fd, CDROMVOLCTRL, &cdrom_volctrl);
+                break;
+     case 0x10: /* audio disk info */
+                LO(ax) = 1;
+                if (ioctl (cdrom_fd, CDROMREADTOCHDR, &cdrom_tochdr) != -1) {
+                  req_buf = SEG_ADR((char *), ds, si);
+                  *CALC_PTR(req_buf,MSCD_DISKINFO_LTN,u_char) = cdrom_tochdr.cdth_trk0;
+                  *CALC_PTR(req_buf,MSCD_DISKINFO_HTN,u_char) = cdrom_tochdr.cdth_trk1;
+                  cdrom_tocentry.cdte_track = CDROM_LEADOUT;
+                  cdrom_tocentry.cdte_format = CDROM_MSF;
+                  if (ioctl (cdrom_fd, CDROMREADTOCENTRY, &cdrom_tocentry) != -1) {
+                    *CALC_PTR(req_buf,MSCD_DISKINFO_LEADOUT+3,u_char) = 0;
+                    *CALC_PTR(req_buf,MSCD_DISKINFO_LEADOUT+2,u_char) = cdrom_tocentry.cdte_addr.msf.minute;
+                    *CALC_PTR(req_buf,MSCD_DISKINFO_LEADOUT+1,u_char) = cdrom_tocentry.cdte_addr.msf.second;
+                    *CALC_PTR(req_buf,MSCD_DISKINFO_LEADOUT+0,u_char) = cdrom_tocentry.cdte_addr.msf.frame;
+                    LO(ax) = 0;
+                  }
+                }
+                break;                
+     case 0x11: /* track info */
+                req_buf = SEG_ADR((char *), ds, si);
+                cdrom_tocentry.cdte_track = *CALC_PTR(req_buf,MSCD_TRACKINFO_TRACKNUM,u_char);
+                cdrom_tocentry.cdte_format = CDROM_MSF;
+                if (ioctl (cdrom_fd, CDROMREADTOCENTRY, &cdrom_tocentry) != -1) {
+                  *CALC_PTR(req_buf,MSCD_TRACKINFO_TRACKPOS+3,u_char) = 0;
+                  *CALC_PTR(req_buf,MSCD_TRACKINFO_TRACKPOS+2,u_char) = cdrom_tocentry.cdte_addr.msf.minute;
+                  *CALC_PTR(req_buf,MSCD_TRACKINFO_TRACKPOS+1,u_char) = cdrom_tocentry.cdte_addr.msf.second;
+                  *CALC_PTR(req_buf,MSCD_TRACKINFO_TRACKPOS+0,u_char) = cdrom_tocentry.cdte_addr.msf.frame;                  
+                  *CALC_PTR(req_buf,MSCD_TRACKINFO_CTRL,u_char) = cdrom_tocentry.cdte_ctrl;
+                  LO(ax) = 0;
+                 }
+                 else LO(ax) = 1;
+                break;                
+     case 0x12: /* volume size */
+                cdrom_tocentry.cdte_track = CDROM_LEADOUT;
+                cdrom_tocentry.cdte_format = CDROM_MSF;
+                if (ioctl (cdrom_fd, CDROMREADTOCENTRY, &cdrom_tocentry) != -1) {
+                  req_buf = SEG_ADR((char *), ds, si);
+                  *CALC_PTR(req_buf,MSCD_GETVOLUMESIZE_SIZE,int) = cdrom_tocentry.cdte_addr.msf.minute*60*75
+                                                                      +cdrom_tocentry.cdte_addr.msf.second*60
+                                                                      +cdrom_tocentry.cdte_addr.msf.frame;
+                  LO(ax) = 0;
+                 }                              
+                else LO(ax) = 1;
+                break;                
+     case 0x13: /* q channel */
+                LWORD(eax) = 0;
+                if (ioctl (cdrom_fd, CDROMSUBCHNL, &cdrom_subchnl) != -1) { 
+                  if (cdrom_subchnl.cdsc_audiostatus == CDROM_AUDIO_PLAY)
+                    HI(ax) = 1;
+             
+                  req_buf = SEG_ADR((char *), ds, si);
+                  *CALC_PTR(req_buf,MSCD_QCHAN_CTRL,u_char) = (cdrom_subchnl.cdsc_adr << 4) + (cdrom_subchnl.cdsc_ctrl);
+                  *CALC_PTR(req_buf,MSCD_QCHAN_TNO,u_char)  = cdrom_subchnl.cdsc_trk;
+                  *CALC_PTR(req_buf,MSCD_QCHAN_IND,u_char)  = cdrom_subchnl.cdsc_ind;
+                  *CALC_PTR(req_buf,MSCD_QCHAN_MIN,u_char)  = cdrom_subchnl.cdsc_reladdr.msf.minute;
+                  *CALC_PTR(req_buf,MSCD_QCHAN_SEC,u_char)  = cdrom_subchnl.cdsc_reladdr.msf.second;
+                  *CALC_PTR(req_buf,MSCD_QCHAN_FRM,u_char)  = cdrom_subchnl.cdsc_reladdr.msf.frame;
+                  *CALC_PTR(req_buf,MSCD_QCHAN_ZERO,u_char) = 0;
+                  *CALC_PTR(req_buf,MSCD_QCHAN_AMIN,u_char) = cdrom_subchnl.cdsc_absaddr.msf.minute;
+                  *CALC_PTR(req_buf,MSCD_QCHAN_ASEC,u_char) = cdrom_subchnl.cdsc_absaddr.msf.second;
+                  *CALC_PTR(req_buf,MSCD_QCHAN_AFRM,u_char) = cdrom_subchnl.cdsc_absaddr.msf.frame;
+                  LO(ax) = 0;
+                 }
+                 else LO(ax) = 1;
+                break;
+     case 0x14: /* audio status */
+                LWORD(eax) = 0;
+                if (ioctl (cdrom_fd, CDROMSUBCHNL, &cdrom_subchnl) != -1) 
+                  if (cdrom_subchnl.cdsc_audiostatus == CDROM_AUDIO_PLAY)
+                    HI(ax) = 1;
+                req_buf = SEG_ADR((char *), ds, si);
+                *CALC_PTR(req_buf,MSCD_AUDSTAT_PAUSED,u_short)= audio_status.paused_bit;
+                *CALC_PTR(req_buf,MSCD_AUDSTAT_START ,u_long) = audio_status.last_StartSector;
+                *CALC_PTR(req_buf,MSCD_AUDSTAT_END   ,u_long) = audio_status.last_EndSector; 
+                break;
+     case 0x15: /* get audio channel information */
+                LWORD(eax) = 0;
+                if (ioctl (cdrom_fd, CDROMSUBCHNL, &cdrom_subchnl) != -1) { 
+                  if (cdrom_subchnl.cdsc_audiostatus == CDROM_AUDIO_PLAY)
+                    HI(ax) = 1;
+                }
+                req_buf = SEG_ADR((char *), ds, si);
+
+                *CALC_PTR(req_buf,MSCD_AUDCHAN_VOLUME0,u_char) = audio_status.volume0;
+                *CALC_PTR(req_buf,MSCD_AUDCHAN_VOLUME1,u_char) = audio_status.volume1;
+                *CALC_PTR(req_buf,MSCD_AUDCHAN_VOLUME2,u_char) = audio_status.volume2; 
+                *CALC_PTR(req_buf,MSCD_AUDCHAN_VOLUME3,u_char) = audio_status.volume3; 
+                *CALC_PTR(req_buf,MSCD_AUDCHAN_VOLUME0-1,u_char) = audio_status.outchan0;
+                *CALC_PTR(req_buf,MSCD_AUDCHAN_VOLUME1-1,u_char) = audio_status.outchan1;
+                *CALC_PTR(req_buf,MSCD_AUDCHAN_VOLUME2-1,u_char) = audio_status.outchan2; 
+                *CALC_PTR(req_buf,MSCD_AUDCHAN_VOLUME3-1,u_char) = audio_status.outchan3; 
+                break;
+     default: error ("CDROM: unknown request !\n");
+   }
+
+/*                if (ioctlin) {
+                  error ("            return  : ");
+                  req_buf = SEG_ADR((char *), ds, si);
+                  for (n = 0; n <= 9; ++n)
+                     error ("  %3x", req_buf[n]);
+                  error ("\n\n");
+                 }
+                else ("\n");
+
+                error ("Leave cdrom request with return status %d !\n\n", LWORD(eax));
+*/
+   return ;
+}
+
+
+
 void
  ems_helper(void) {
   u_char *rhptr;		/* request header pointer */
@@ -2284,6 +2671,11 @@
 	error("EMS: not running bios_em_fn!\n");
       break;
     }
+  case 0x40:{
+      E_printf("CDROM: in 0x40 handler! ax=0x%04x, bx=0x%04x, dx=0x%04x, cx=0x%04x\n", LWORD(eax), LWORD(ebx), LWORD(edx), LWORD(ecx));
+      cdrom_helper();   
+      break;
+    }
 #ifdef IPX
   case 0x7a:
     if (config.ipxsup) {
@@ -2362,7 +2754,7 @@
     }
 
   case 5:			/* show banner */
-    p_dos_str("\n\nLinux DOS emulator " VERSTR "pl" PATCHSTR " $Date: 1994/08/05 22:29:31 $\n");
+    p_dos_str("\n\nLinux DOS emulator " VERSTR "pl" PATCHSTR " $Date: 1994/08/09 01:49:57 $\n");
     p_dos_str("Last configured at %s\n", CONFIG_TIME);
     p_dos_str("on %s\n", CONFIG_HOST);
     /* p_dos_str("Formerly maintained by Robert Sanders, gt8134b@prism.gatech.edu\n\n"); */
diff -u --recursive --new-file dosemu0.53old//init/Makefile dosemu0.53//init/Makefile
--- dosemu0.53old//init/Makefile	Fri Aug  5 21:21:45 1994
+++ dosemu0.53//init/Makefile	Mon Aug  8 22:54:53 1994
@@ -17,7 +17,8 @@
 
 # let gcc do extended checking
 
-DEFINES=-DYYDEBUG -DYYERROR_VERBOSE -DYYPURE
+#DEFINES=-DYYDEBUG=1 -DYYERROR_VERBOSE -DYYPURE -DTESTING
+DEFINES=-DYYPURE
 CFLAGS=-O2 -Wall -Wmissing-prototypes \
        -Wstrict-prototypes -ansi -pedantic -Wid-clash-31 -Wcast-qual
 #-Wwrite-strings
@@ -33,7 +34,7 @@
 
 # All object-files are included here.
 
-OBJS = parser.o lex.yy.o parse.o 
+OBJS = parser.o lex.yy.o # parse.o 
 
 .c.o:
 	$(CC) $(CFLAGS) $(DEFINES) $(INCDIR) -c $<
@@ -41,8 +42,8 @@
 all: ../init.o
 
 ../init.o: $(OBJS)
-	ld -r -o ../init.o parse.o
-#	ld -r -o ../init.o $(OBJS)
+	ld -r -o ../init.o $(OBJS)
+#	ld -r -o ../init.o parse.o
 
 parser.c : parser.y
 	$(BISON) -do parser.c parser.y
diff -u --recursive --new-file dosemu0.53old//init/lexer.l dosemu0.53//init/lexer.l
--- dosemu0.53old//init/lexer.l	Fri Aug  5 21:21:45 1994
+++ dosemu0.53//init/lexer.l	Mon Aug  8 22:54:53 1994
@@ -23,6 +23,8 @@
 #include "parser.h"
 int line_count;
 
+extern char* strdup(const char *); /* Not defined in string.h :-( */
+
 #undef YY_DECL
 #define YY_DECL int yylex YY_PROTO(( YYSTYPE* yylval ))
 %}
@@ -80,6 +82,7 @@
 fiveinch		return(FIVEINCH);
 sectors			return(SECTORS);
 cylinders		return(CYLINDERS);
+tracks			return(TRACKS);
 heads			return(HEADS);
 offset			return(OFFSET);
 floppy			return(L_FLOPPY);
@@ -231,19 +234,20 @@
 
 	/* strings */
 
-\"[^\"]*\"		{ yylval->s_value = &yytext[1];
-			  yytext[strlen(yytext)-1] = '\0';
+\"[^\"]*\"		{ yytext[strlen(yytext)-1] = '\0';
+			  yylval->s_value = strdup(&yytext[1]);
+			  return(STRING); }
+\'[^\']*\'		{ yytext[strlen(yytext)-1] = '\0';
+			  yylval->s_value = strdup(&yytext[1]);
 			  return(STRING); }
-\'[^\']*\'		{ yylval->s_value = &yytext[1];
-			  yytext[strlen(yytext)-1] = '\0';
+[a-z0-9/\~@$-_\+=:,\.]+ { yylval->s_value = strdup(yytext);
 			  return(STRING); }
-[a-z0-9/\~@$-_\+=:,\.]+ { yylval->s_value = yytext; return(STRING); }
 
 	/* comments & whitespace */
 
-[#\;\!][^\n]*\n		line_count++;	/* comments to EOLN */
+[#\;\!][^\n]*$		line_count++;	/* comments to EOLN */
 [ \t]+			;   		/* ignore all white space */
 \n			line_count++;	/* keep track of lines seen */
 .			fprintf(stderr, "discarding char '%c'\n", yytext[0]);
 
-%%
+
diff -u --recursive --new-file dosemu0.53old//init/parser.y dosemu0.53//init/parser.y
--- dosemu0.53old//init/parser.y	Fri Aug  5 21:21:45 1994
+++ dosemu0.53//init/parser.y	Mon Aug  8 22:54:53 1994
@@ -121,7 +121,7 @@
 %token COMMAND TIMEOUT OPTIONS L_FILE
 	/* disk */
 %token L_PARTITION WHOLEDISK THREEINCH FIVEINCH READONLY LAYOUT
-%token SECTORS CYLINDERS HEADS OFFSET HDIMAGE
+%token SECTORS CYLINDERS TRACKS HEADS OFFSET HDIMAGE
 	/* ports/io */
 %token RDONLY WRONLY RDWR ORMASK ANDMASK RANGE
 
@@ -136,13 +136,23 @@
 line		: HOGTHRESH INTEGER	{ config.hogthreshold = $2; }
  		| EMUSYS STRING
 		    {
-		    config.emusys = strdup($2);
-		    c_printf("CONF: config.emusys = %s\n", $2);
+		    config.emusys = $2;
+		    c_printf("CONF: config.emusys = '%s'\n", $2);
 		    }
+		| EMUSYS '{' STRING '}'
+		    {
+		    config.emusys = $3;
+		    c_printf("CONF: config.emusys = '%s'\n", $3);
+		    }
  		| EMUBAT STRING
 		    {
-		    config.emusys = strdup($2);
-		    c_printf("CONF: config.emusys = %s\n", $2);
+		    config.emusys = $2;
+		    c_printf("CONF: config.emubat = '%s'\n", $2);
+		    }
+		| EMUBAT '{' STRING '}'
+		    {
+		    config.emusys = $3;
+		    c_printf("CONF: config.emubat = '%s'\n", $3);
 		    }
 		| FASTFLOPPY bool	{ config.fastfloppy = $2; }
 		| CPU INTEGER		{ vm86s.cpu_type = ($2/100)%10; }
@@ -151,7 +161,7 @@
 		| TIMINT bool
 		    {
 		    config.timers = $2;
-		    c_printf("CONF: timint %s", ($2) ? "on" : "off");
+		    c_printf("CONF: timint %s\n", ($2) ? "on" : "off");
 		    }
 		| TIMER INTEGER
 		    {
@@ -161,22 +171,34 @@
 		| DOSBANNER bool
 		    {
 		    config.dosbanner = $2;
-		    c_printf("CONF: dosbanner %s", ($2) ? "on" : "off");
+		    c_printf("CONF: dosbanner %s\n", ($2) ? "on" : "off");
 		    }
 		| ALLOWVIDEOPORT bool
 		    {
 		    config.allowvideoportaccess = $2;
-		    c_printf("CONF: allowvideoport %s", ($2) ? "on" : "off");
+		    c_printf("CONF: allowvideoportaccess %s\n", ($2) ? "on" : "off");
+		    }
+		| L_EMS mem_bool
+		    {
+		    config.ems_size = $2;
+		    if ($2 > 0) c_printf("CONF: %dk bytes EMS memory\n", $2);
+		    }
+		| L_XMS mem_bool
+		    {
+		    config.xms_size = $2;
+		    if ($2 > 0) c_printf("CONF: %dk bytes XMS memory\n", $2);
 		    }
-		| L_EMS mem_bool	{ config.ems_size = $2; }
-		| L_XMS mem_bool	{ config.xms_size = $2; }
-		| L_DPMI mem_bool	{ config.dpmi_size = $2; }
+		| L_DPMI mem_bool
+		    {
+		    config.dpmi_size = $2;
+		    if ($2 > 0) c_printf("CONF: %dk bytes DPMI memory\n", $2);
+		    }
 		| DOSMEM mem_bool	{ config.mem_size = $2; }
 		| MATHCO bool		{ config.mathco = $2; }
 		| IPXSUPPORT bool	{ config.ipxsup = $2; }
 		    {
 		    config.ipxsup = $2;
-		    c_printf("CONF: IPX support %s", ($2) ? "on" : "off");
+		    c_printf("CONF: IPX support %s\n", ($2) ? "on" : "off");
 		    }
 		| PKTDRIVER NOVELLHACK	{ config.pktflags = 1; }
 		| SPEAKER speaker
@@ -226,7 +248,7 @@
 		  '{' printer_flags '}'
 		    { stop_printer(); }
 		| STRING
-		    { yyerror("unrecognized command '%s'", $1); }
+		    { yyerror("unrecognized command '%s'", $1); free($1); }
 		| error
 		;
 
@@ -249,7 +271,7 @@
 		| CONSOLE		{ config.console_video = 1; }
 		| FULLREST		{ config.fullrestore = 1; }
 		| PARTREST		{ config.fullrestore = 0; }
-		| VBIOS_FILE STRING	{ config.vbios_file = strdup($2);
+		| VBIOS_FILE STRING	{ config.vbios_file = $2;
 					  config.mapped_bios = 1;
 					  config.vbios_copy = 0; }
 		| VBIOS_COPY		{ config.vbios_file = NULL;
@@ -270,7 +292,8 @@
 		      }
 		   }
 		| STRING
-		    { yyerror("unrecognized video option '%s'", $1); }
+		    { yyerror("unrecognized video option '%s'", $1);
+		      free($1); }
 		| error
 		;
 
@@ -286,18 +309,19 @@
 		| COLOR color_val	{ config.term_color = $2; }
 		| CORNER bool		{ config.term_corner = $2; }
 		| STRING
-		    { yyerror("unrecognized terminal option '%s'", $1); }
+		    { yyerror("unrecognized terminal option '%s'", $1);
+		      free($1); }
 		| error
 		;
 
-color_val	: L_OFF			{ return 0; }
-		| L_ON			{ return COLOR_NORMAL; }
-		| NORMAL		{ return COLOR_NORMAL; }
-		| XTERM			{ return COLOR_XTERM; }
+color_val	: L_OFF			{ $$ = 0; }
+		| L_ON			{ $$ = COLOR_NORMAL; }
+		| NORMAL		{ $$ = COLOR_NORMAL; }
+		| XTERM			{ $$ = COLOR_XTERM; }
 		;
 
-method_val	: FAST			{ return METHOD_FAST; }
-		| NCURSES		{ return METHOD_NCURSES; }
+method_val	: FAST			{ $$ = METHOD_FAST; }
+		| NCURSES		{ $$ = METHOD_NCURSES; }
 		;
 
 	/* debugging */
@@ -327,7 +351,7 @@
 		| NETWORK bool		{ d.network = $2; }
 		| L_X bool		{ d.X = $2; }
 		| STRING
-		    { yyerror("unrecognized debug flag '%s'", $1); }
+		    { yyerror("unrecognized debug flag '%s'", $1); free($1); }
 		| error
 		;
 
@@ -336,7 +360,7 @@
 mouse_flags	: mouse_flag
 		| mouse_flags mouse_flag
 		;
-mouse_flag	: DEVICE STRING		{ strcpy(mptr->dev, $2); }
+mouse_flag	: DEVICE STRING		{ strcpy(mptr->dev, $2); free($2); }
 		| INTERNALDRIVER	{ mptr->intdrv = TRUE; }
 		| BAUDRATE INTEGER	{ mptr->baudRate = $2; }
 		| CLEARDTR
@@ -386,7 +410,7 @@
 		  mptr->flags = 0;
 		  }
 		| STRING
-		    { yyerror("unrecognized mouse flag '%s'", $1); }
+		    { yyerror("unrecognized mouse flag '%s'", $1); free($1); }
 		| error
 		;
 
@@ -400,7 +424,8 @@
 		| RAWKEYBOARD bool	{ config.console_keyb = $2; }
 		| KEYBINT bool		{ config.keybint = $2; }
 		| STRING
-		    { yyerror("unrecognized keyboard flag '%s'", $1); }
+		    { yyerror("unrecognized keyboard flag '%s'", $1);
+		      free($1);}
 		| error
 		;
 
@@ -409,7 +434,7 @@
 serial_flags	: serial_flag
 		| serial_flags serial_flag
 		;
-serial_flag	: DEVICE STRING		{ strcpy(sptr->dev, $2); }
+serial_flag	: DEVICE STRING		{ strcpy(sptr->dev, $2); free($2); }
 		| COM INTEGER		{ sptr->real_comport = $2;
 					  com_port_used[$2] = 1; }
 		| BASE INTEGER		{ sptr->base_port = $2; }
@@ -417,7 +442,7 @@
 		| INTERRUPT INTEGER	{ sptr->interrupt = $2; }
 		| MOUSE			{ sptr->mouse = 1; }
 		| STRING
-		    { yyerror("unrecognized serial flag '%s'", $1); }
+		    { yyerror("unrecognized serial flag '%s'", $1); free($1); }
 		| error
 		;
 
@@ -426,12 +451,12 @@
 printer_flags	: printer_flag
 		| printer_flags printer_flag
 		;
-printer_flag	: COMMAND STRING	{ pptr->prtcmd = strdup($2); }
+printer_flag	: COMMAND STRING	{ pptr->prtcmd = $2; }
 		| TIMEOUT INTEGER	{ pptr->delay = $2; }
-		| OPTIONS STRING	{ pptr->prtopt = strdup($2); }
-		| L_FILE STRING		{ pptr->dev = strdup($2); }
+		| OPTIONS STRING	{ pptr->prtopt = $2; }
+		| L_FILE STRING		{ pptr->dev = $2; }
 		| STRING
-		    { yyerror("unrecognized printer flag %s", $1); }
+		    { yyerror("unrecognized printer flag %s", $1); free($1); }
 		| error
 		;
 
@@ -445,6 +470,7 @@
 		| FIVEINCH	{ dptr->default_cmos = FIVE_INCH_FLOPPY; }
 		| SECTORS INTEGER	{ dptr->sectors = $2; }
 		| CYLINDERS INTEGER	{ dptr->tracks = $2; }
+		| TRACKS INTEGER	{ dptr->tracks = $2; }
 		| HEADS INTEGER		{ dptr->heads = $2; }
 		| OFFSET INTEGER	{ dptr->header = $2; }
 		| DEVICE STRING
@@ -451,13 +477,13 @@
 		  {
 		  if (dptr->dev_name != NULL)
 		    yyerror("Two names for a disk-image file or device given.");
-		  dptr->dev_name = strdup($2);
+		  dptr->dev_name = $2;
 		  }
 		| L_FILE STRING
 		  {
 		  if (dptr->dev_name != NULL)
 		    yyerror("Two names for a disk-image file or device given.");
-		  dptr->dev_name = strdup($2);
+		  dptr->dev_name = $2;
 		  }
 		| HDIMAGE STRING
 		  {
@@ -465,7 +491,7 @@
 		    yyerror("Two names for a harddisk-image file given.");
 		  dptr->type = IMAGE;
 		  dptr->header = HEADER_SIZE;
-		  dptr->dev_name = strdup($2);
+		  dptr->dev_name = $2;
 		  }
 		| WHOLEDISK STRING
 		  {
@@ -472,7 +498,7 @@
 		  if (dptr->dev_name != NULL)
 		    yyerror("Two names for a harddisk given.");
 		  dptr->type = HDISK;
-		  dptr->dev_name = strdup($2);
+		  dptr->dev_name = $2;
 		  }
 		| L_FLOPPY STRING
 		  {
@@ -479,7 +505,7 @@
 		  if (dptr->dev_name != NULL)
 		    yyerror("Two names for a floppy-device given.");
 		  dptr->type = FLOPPY;
-		  dptr->dev_name = strdup($2);
+		  dptr->dev_name = $2;
 		  }
 		| L_PARTITION STRING INTEGER
 		  {
@@ -487,7 +513,7 @@
 		    yyerror("Two names for a partition given.");
 		  dptr->type = PARTITION;
 		  dptr->part_info.number = $3;
-		  dptr->dev_name = strdup($2);
+		  dptr->dev_name = $2;
 
 		  dptr->part_info.file = malloc(strlen(PARTITION_PATH ".")+10); 
 		  dptr->part_info.file = strcpy(dptr->part_info.file,PARTITION_PATH "."); 
@@ -494,7 +520,7 @@
 		  dptr->part_info.file = strcat(dptr->part_info.file,dptr->dev_name+5);
 		  }
 		| STRING
-		    { yyerror("unrecognized disk flag '%s'\n", $1); }
+		    { yyerror("unrecognized disk flag '%s'\n", $1); free($1); }
 		| error
 		;
 
@@ -521,22 +547,27 @@
 		| ORMASK INTEGER	{ ports_ormask = $2; }
 		| ANDMASK INTEGER	{ ports_andmask = $2; }
 		| STRING
-		    { yyerror("unrecognized port command '%s'", $1); }
+		    { yyerror("unrecognized port command '%s'", $1);
+		      free($1); }
 		| error
 		;
 
 	/* booleans */
 
-bool		: L_YES
-		| L_NO
-		| L_ON
-		| L_OFF
+bool		: L_YES		{ $$ = 1; }
+		| L_NO		{ $$ = 0; }
+		| L_ON		{ $$ = 1; }
+		| L_OFF		{ $$ = 0; }
 		| INTEGER	{ $$ = $1 != 0; }
+		| STRING        { yyerror("got '%s', expected 'on' or 'off'", $1);
+				  free($1); }
                 | error         { yyerror("expected 'on' or 'off'"); }
 		;
 
 mem_bool	: L_OFF		{ $$ = 0; }
 		| INTEGER
+		| STRING        { yyerror("got '%s', expected 'off' or an integer", $1);
+				  free($1); }
 		| error         { yyerror("expected 'off' or an integer"); }
 		;
 
@@ -545,6 +576,8 @@
 speaker		: L_OFF		{ $$ = SPKR_OFF; }
 		| NATIVE	{ $$ = SPKR_NATIVE; }
 		| EMULATED	{ $$ = SPKR_EMULATED; }
+		| STRING        { yyerror("got '%s', expected 'emulated' or 'native'", $1);
+				  free($1); }
 		| error         { yyerror("expected 'emulated' or 'native'"); }
 		;
 
@@ -1041,6 +1074,11 @@
 parse_config(char *confname)
 {
   FILE *volatile fd;
+#if YYDEBUG != 0
+  extern int yydebug;
+
+  yydebug  = 1;
+#endif
 
   c_hdisks = 0;
   c_fdisks = 0;
@@ -1051,8 +1089,8 @@
 
   yyin = fd;
   line_count = 1;
-  yyparse();
-
+  if (yyparse())
+    yyerror("error in configuration file");
   close_file(fd);
 
   if (!exchange_uids()) die("Cannot exchange uids\n");
@@ -1064,6 +1102,7 @@
 
     sprintf(name, "%s/.dosrc", home);
     fd = open_file(name);
+fprintf(stderr, "PARSE:  opening '%s'\n", name);
     free(name);
   }
   if (!exchange_uids()) die("Cannot changeback uids\n");
@@ -1071,15 +1110,20 @@
   if (fd) {
     yyin = fd;
     line_count = 1;
-    yyrestart(fd);
-    yyparse();
+    if (yyparse())
+      yyerror("error in configuration file");
     close_file(fd);
   }
 
+#ifdef TESTING
+  error("TESTING: parser is terminating program\n");
+  leavedos(0);
+#endif
+
   return 1;
 }
 
-#if TESTING
+#ifdef TESTING_MAIN
 int
 main(int argc, char **argv)
 {
diff -u --recursive --new-file dosemu0.53old//mouse/mouse.c dosemu0.53//mouse/mouse.c
--- dosemu0.53old//mouse/mouse.c	Fri Aug  5 21:21:41 1994
+++ dosemu0.53//mouse/mouse.c	Mon Aug  8 22:54:48 1994
@@ -1,12 +1,15 @@
 /* mouse.c for the DOS emulator
  *       Robert Sanders, gt8134b@prism.gatech.edu
  *
- * $Date: 1994/08/01 14:27:57 $
+ * $Date: 1994/08/09 01:51:17 $
  * $Source: /home/src/dosemu0.60/mouse/RCS/mouse.c,v $
- * $Revision: 2.7 $
+ * $Revision: 2.8 $
  * $State: Exp $
  *
  * $Log: mouse.c,v $
+ * Revision 2.8  1994/08/09  01:51:17  root
+ * Prep for pre53_11.
+ *
  * Revision 2.7  1994/08/01  14:27:57  root
  * Prep for pre53_7  with Markks latest, EMS patch, and Makefile changes.
  *
@@ -750,7 +753,7 @@
   else {
     sptr = &com[config.num_ser];
     if (!(sptr->mouse)) {
-      m_printf("MOUSE: Failed to add internal serial mouse, no 'mouse' keyword in serial config! num_ser=%d\n",config.num_ser);
+      m_printf("MOUSE: No mouse configured in serial config! num_ser=%d\n",config.num_ser);
       mice->intdrv = FALSE;
     }
   }
diff -u --recursive --new-file dosemu0.53old//termio.c dosemu0.53//termio.c
--- dosemu0.53old//termio.c	Fri Aug  5 21:21:09 1994
+++ dosemu0.53//termio.c	Mon Aug  8 22:54:20 1994
@@ -20,11 +20,14 @@
  * DANG_BEGIN_CHANGELOG
  * Extensions by Robert Sanders, 1992-93
  *
- * $Date: 1994/08/01 14:26:23 $
+ * $Date: 1994/08/09 01:49:57 $
  * $Source: /home/src/dosemu0.60/RCS/termio.c,v $
- * $Revision: 2.7 $
+ * $Revision: 2.8 $
  * $State: Exp $
  * $Log: termio.c,v $
+ * Revision 2.8  1994/08/09  01:49:57  root
+ * Prep for pre53_11.
+ *
  * Revision 2.7  1994/08/01  14:26:23  root
  * Prep for pre53_7  with Markks latest, EMS patch, and Makefile changes.
  *
@@ -556,7 +559,7 @@
   for (fkp = funkey; fkp->code; fkp++) {
     if (fkp->tce != NULL) {
       fkp->esc = tigetstr(fkp->tce);
-      error("TERMINFO string %s = %s\n", fkp->tce, fkp->esc);
+      k_printf("TERMINFO string %s = %s\n", fkp->tce, fkp->esc);
       /*if (!fkp->esc) error("ERROR: can't get terminfo %s\n", fkp->tce);*/
     }
   }
@@ -591,6 +594,17 @@
   }
 }
 
+struct termios save_termios;
+
+void print_termios(struct termios term) {
+ k_printf("KBD: TERMIOS Structure:\n");
+ k_printf("KBD: 	c_iflag=%x\n", term.c_iflag);
+ k_printf("KBD: 	c_oflag=%x\n", term.c_oflag);
+ k_printf("KBD: 	c_cflag=%x\n", term.c_cflag);
+ k_printf("KBD: 	c_lflag=%x\n", term.c_lflag);
+ k_printf("KBD: 	c_line =%x\n", term.c_line);
+}
+
 static int
 OpenKeyboard(void)
 {
@@ -600,6 +614,7 @@
   struct new_utsname unames;
 
   uname(&unames);
+  fprintf(stderr, "DOSEMU%s is coming up on %s version %s\n", VERSTR, unames.sysname, unames.release);
   if (unames.release[0] > 0 ) {
     if ((unames.release[2] == 1  && unames.release[3] > 1 ) || 
          unames.release[2] > 1 ) {
@@ -655,6 +670,7 @@
   }
 
   newtermio = oldtermio;
+#if 0
   newtermio.c_iflag &= (ISTRIP | IGNBRK);  /* (IXON|IXOFF|IXANY|ISTRIP|IGNBRK);*/
   /* newtermio.c_oflag &= ~OPOST; */
   newtermio.c_lflag &= 0;                  /* ISIG */
@@ -663,9 +679,8 @@
   erasekey = newtermio.c_cc[VERASE];
   if (ioctl(kbd_fd, TCSETAF, &newtermio) < 0) {
     error("ERROR: Couldn't ioctl(STDIN,TCSETAF,...) !\n");
-    /* close(kbd_fd); kbd_fd = -1; return -1;  <---- XXXXXXXX remove this */
   }
-
+#endif
   if (config.console_keyb || config.console_video)
     set_process_control();
 
@@ -673,16 +688,10 @@
   child_kbd_flags = 0;
   key_flags = 0;
 
-  if (config.console_keyb) {
-    set_raw_mode();
-    get_leds();
-    set_key_flag(KKF_KBD102);
-  }
-
   if (config.console_video)
     set_console_video();
 
-  dbug_printf("$Header: /home/src/dosemu0.60/RCS/termio.c,v 2.7 1994/08/01 14:26:23 root Exp root $\n");
+  dbug_printf("$Header: /home/src/dosemu0.60/RCS/termio.c,v 2.8 1994/08/09 01:49:57 root Exp root $\n");
 
   return 0;
 }
@@ -691,19 +700,22 @@
 clear_raw_mode()
 {
   do_ioctl(ioc_fd, KDSKBMODE, K_XLATE);
+  if (tcsetattr(ioc_fd, TCSAFLUSH, &save_termios) < 0) {
+    k_printf("KBD: Resetting Keyboard to K_XLATE mode failed.\n");
+    return;
+  }
 }
 
 void
 set_raw_mode()
 {
-  k_printf("Setting keyboard to RAW mode\n");
+  k_printf("KBD: Setting keyboard to RAW mode\n");
   if (!config.console_video)
     fprintf(stderr, "\nEntering RAW mode for DOS!\n");
   do_ioctl(ioc_fd, KDSKBMODE, K_RAW);
+  tty_raw(ioc_fd);
 }
 
-static struct termios save_termios;
-
 int
 tty_raw(int fd)
 {
@@ -711,22 +723,31 @@
 
   if (tcgetattr(fd, &save_termios) < 0)
     return (-1);
+
   buf = save_termios;
 
+  print_termios(buf);
+
   buf.c_lflag &= ~(ECHO | ICANON | IEXTEN | ISIG);
-  buf.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON);
+  buf.c_iflag &= ~(IMAXBEL | IGNBRK | IGNCR | IGNPAR | BRKINT | INLCR | ICRNL | INPCK | ISTRIP | IXON | IUCLC | IXANY | IXOFF | IXON);
   buf.c_cflag &= ~(CSIZE | PARENB);
+  buf.c_oflag &= ~(OCRNL | OLCUC | ONLCR | OPOST);
   buf.c_cflag |= CS8;
-  buf.c_oflag &= ~(OPOST);
-  buf.c_cc[VMIN] = 2;
+  buf.c_cc[VMIN] = 1;
   buf.c_cc[VTIME] = 0;
 
-  if (tcsetattr(fd, TCSAFLUSH, &buf) < 0)
+  k_printf("KBD: Setting TERMIOS Structure.\n");
+
+  print_termios(buf);
+  if (tcsetattr(STDIN_FILENO, TCSAFLUSH, &buf) < 0) { 
+    k_printf("KBD: Setting to RAW mode failed.\n");
     return (-1);
-#if 0
-  ttystate = RAW;
-  ttysavefd = fd;
-#endif
+  }
+  if (tcgetattr(fd, &buf) < 0) {
+    k_printf("Termios ERROR\n");
+  }
+  print_termios(buf);
+
   return (0);
 }
 
@@ -741,7 +762,7 @@
 
     /* IPC change here!...was read(kbd_fd... */
     cc = read(kbd_fd, &kbp[kbcount], KBBUF_SIZE - 1);
-    k_printf("KEY: cc found %d characters\n", cc);
+    k_printf("KBD: cc found %d characters\n", cc);
     if (cc == -1) return;
 
     if (cc > 0) {
@@ -749,7 +770,7 @@
       for (i = 0; i < cc; i++) {
         child_set_flags(kbp[kbcount + i]);
         DOS_setscan(kbp[kbcount + i]);
-        k_printf("KEY: cc pushing %d'th character\n", i);
+        k_printf("KBD: cc pushing %d'th character\n", i);
       }
     }
   }
@@ -764,7 +785,7 @@
 
     /* IPC change here!...was read(kbd_fd... */
     cc = read(kbd_fd, &kbp[kbcount], KBBUF_SIZE - kbcount - 1);
-    k_printf("KEY: cc found %d characters\n", cc);
+    k_printf("KBD: cc found %d characters\n", cc);
     if (cc == -1) return;
 
     if (cc > 0) {
@@ -772,7 +793,7 @@
 	error("ERROR: getKeys() has overwritten the buffer!\n");
       kbcount += cc;
       while (cc) {
-        k_printf("Converting cc=%d\n", cc);
+        k_printf("KBD: Converting cc=%d\n", cc);
         convascii(&cc);
       }
     }
@@ -840,7 +861,7 @@
     if ( child_kbd_flag(3) && child_kbd_flag(2) && !child_kbd_flag(1) ) {
       int fnum = sc - 0x3a;
 
-      k_printf("Doing VC switch\n");
+      k_printf("KDB: Doing VC switch\n");
       if (fnum > 10)
 	fnum -= 0x12;		/* adjust if f11 or f12 */
 
@@ -1003,7 +1024,7 @@
 convKey(int scancode)
 {
 
-  k_printf("convKey = 0x%04x\n", scancode);
+  k_printf("KBD: convKey = 0x%04x\n", scancode);
 
   if (scancode == 0)
     return 0;
@@ -1057,7 +1078,15 @@
     error("ERROR: can't open keyboard\n");
     leavedos(19);
   }
+
   terminal_initialize(); 
+
+  if (config.console_keyb) {
+    set_raw_mode();
+    get_leds();
+    set_key_flag(KKF_KBD102);
+  }
+
   setupterm(NULL, 1, (int *)0);
   gettermcap();
   li = 25;
@@ -1088,7 +1117,7 @@
 {
   static unsigned char rep = 0xff;
 
-  k_printf("convscanKey scancode = 0x%04x\n", scancode);
+  k_printf("KBD: convscanKey scancode = 0x%04x\n", scancode);
 
   if (scancode == 0xe0) {
     set_key_flag(KKF_E0);
@@ -1132,7 +1161,7 @@
   queue = 0;
   key_table[scancode] (scancode);
 
-  k_printf("resetid = %d firstid = %d\n", resetid, firstid);
+  k_printf("KBD: resetid = %d firstid = %d\n", resetid, firstid);
   if (resetid) {
     if (firstid)
       clr_key_flag(KKF_FIRSTID);
@@ -1277,7 +1306,7 @@
 Scroll(unsigned int sc)
 {
   if (key_flag(KKF_E0)) {
-    k_printf("ctrl-break!\n");
+    k_printf("KBD: ctrl-break!\n");
     ignore_segv++;
     *(unsigned char *) 0x471 = 0x80;	/* ctrl-break flag */
     KBD_Head = KBD_Tail = KBD_Start;
@@ -1322,7 +1351,7 @@
   static int lastpause = 0;
 
   if (kbd_flag(EKF_LCTRL)) {
-    k_printf("PAUSE!\n");
+    k_printf("KBD: PAUSE!\n");
     if (lastpause) {
       I_printf("IPC: waking parent up!\n");
 #if 0
@@ -1341,11 +1370,11 @@
   else {
     set_kbd_flag(EKF_NUMLOCK);
     if (!num_stat) {
-      k_printf("NUMLOCK!\n");
+      k_printf("KBD: NUMLOCK!\n");
       if (keepkey) {
 	chg_kbd_flag(KF_NUMLOCK);
       }
-      k_printf("kbd=%d\n", kbd_flag(KF_NUMLOCK));
+      k_printf("KBD: kbd=%d\n", kbd_flag(KF_NUMLOCK));
       set_leds();
       num_stat = 1;
     }
@@ -1383,7 +1412,7 @@
   else
     clr_key_flag(KKF_CAPSLOCK);
 
-  k_printf("SET_LEDS() called\n");
+  k_printf("KBD: SET_LEDS() called\n");
   do_ioctl(ioc_fd, KDSETLED, led_state);
 }
 
@@ -1412,7 +1441,7 @@
   else {
     clr_kbd_flag(KF_CAPSLOCK);
   }
-  k_printf("KEY: GET LEDS key 96 0x%02x, 97 0x%02x, kbc1 0x%02x, kbc2 0x%02x\n",
+  k_printf("KBD: GET LEDS key 96 0x%02x, 97 0x%02x, kbc1 0x%02x, kbc2 0x%02x\n",
 	   *(u_char *) 0x496, *(u_char *) 0x497, *(u_char *) 0x417, *(u_char *) 0x418);
 }
 
@@ -1463,7 +1492,7 @@
   if (kbd_flag(KF_CTRL))	/* ctrl */
     ch &= 0x1f;
 
-  k_printf("sc=%02x, ch=%02x\n", sc, ch);
+  k_printf("KBD: sc=%02x, ch=%02x\n", sc, ch);
 
   put_queue((sc << 8) | ch);
 }
@@ -1516,7 +1545,7 @@
     if (sc == 0x53 /*del*/  || sc == 0x49 /*pgup*/ )
       dos_ctrl_alt_del();
     if (sc == 0x51) {		/*pgdn*/
-      k_printf("ctrl-alt-pgdn taking her down!\n");
+      k_printf("KBD: ctrl-alt-pgdn taking her down!\n");
       leavedos(0);
     }
     /* if the arrow keys, or home end, do keyboard mouse */
@@ -1620,7 +1649,7 @@
 
 #define FCH(n,a,b) ((n <= 10) ? a : b)
 
-  k_printf("sc=%x, fnum=%x\n", sc, fnum);
+  k_printf("KBD: sc=%x, fnum=%x\n", sc, fnum);
 
   if (kbd_flag(KF_LSHIFT) || kbd_flag(KF_RSHIFT))
     put_queue((sc + FCH(fnum, 0x19, 0x30)) << 8);
@@ -1639,7 +1668,7 @@
 activate(int con_num)
 {
   if (in_ioctl) {
-    k_printf("can't ioctl for activate, in a signal handler\n");
+    k_printf("KBD: can't ioctl for activate, in a signal handler\n");
     do_ioctl(ioc_fd, VT_ACTIVATE, con_num);
   }
   else
@@ -1652,7 +1681,7 @@
   int tmp;
 
   if (in_sighandler && in_ioctl) {
-    k_printf("do_ioctl(): in ioctl %d 0x%04x 0x%04x.\nqueuing: %d 0x%04x 0x%04x\n",
+    k_printf("KBD: do_ioctl(): in ioctl %d 0x%04x 0x%04x.\nqueuing: %d 0x%04x 0x%04x\n",
 	     curi.fd, curi.req, curi.param3, fd, req, param3);
     queue_ioctl(fd, req, param3);
     errno = EDEADLOCK;
@@ -1668,7 +1697,7 @@
     curi.req = req;
     curi.param3 = param3;
     if (iq.queued) {
-      k_printf("detected queued ioctl in do_ioctl(): %d 0x%04x 0x%04x\n",
+      k_printf("KBD: detected queued ioctl in do_ioctl(): %d 0x%04x 0x%04x\n",
 	       iq.fd, iq.req, iq.param3);
     }
     tmp = ioctl(fd, req, param3);
diff -u --recursive --new-file dosemu0.53old//xinstallvgafont dosemu0.53//xinstallvgafont
--- dosemu0.53old//xinstallvgafont	Fri Aug  5 21:21:12 1994
+++ dosemu0.53//xinstallvgafont	Mon Aug  8 22:54:21 1994
@@ -7,17 +7,8 @@
 # ag115@freenet.carleton.ca
 #
 
-# Test if the user isn't root, and then display a warning message.
-if ! [ "$USER" = "root" ]; then
-	echo "You aren't root, so this script is unable to install the font."
-	echo "If you prefer not to run this script as root, you can manually install"
-	echo "the VGA font by copying the file 'vga.pcf' to /usr/lib/X11/fonts/misc"
-	echo "and then going in that directory, then type the 'mkfontdir' command to"
-	echo "compile the font."
-	echo ""
-
 # Test for existence of /usr/lib/X11
-elif ! [ -e /usr/lib/X11 ]; then
+if ! [ -e /usr/lib/X11 ]; then
 	echo "This system doesn't have a /usr/lib/X11 directory!"
 	echo "Perhaps you don't have Xwindows installed?"
 
