%!PS-Adobe-2.0 %%Creator: dvips by Radical Eye Software %%Title: news.dvi %%Pages: 3 1 %%BoundingBox: 0 0 612 792 %%EndComments %%BeginDocument: tex.pro % Prelude to show a draft string on every page. (DRAFT) /DRAFTDICT 10 dict def DRAFTDICT begin /DRAFTSTRING exch def /DRAFT { gsave initmatrix /Helvetica-Bold findfont setfont DRAFTSTRING dup stringwidth pop 8.875 exch div dup 72 mul dup scale 52.3 rotate 2.5 exch div -.35 translate 0.85 setgray 0 0 moveto show grestore } def /oldshow /showpage load def /oldcopy /copypage load def /oldinitgraphics /initgraphics load def end /showpage { DRAFTDICT begin oldshow DRAFT end } def /copypage { DRAFTDICT begin oldcopy DRAFT end } def /initgraphics { DRAFTDICT begin oldinitgraphics DRAFT end } def DRAFTDICT begin DRAFT end % End of draft prelude /TeXDict 200 dict def TeXDict begin /bdf{bind def}def /bop-aux{}bdf /@rigin{ /@page-height exch def /@page-width exch def 72 Resolution div dup neg scale translate}bdf /@letter{Resolution dup -10 mul 8.5 11 @rigin}bdf /@landscape{[ 0 1 -1 0 0 0]concat Resolution dup 8.5 11 @rigin}bdf /@a4{Resolution dup -10.6929133858 mul 21 2.54 div 29.7 2.54 div @rigin}bdf /@legal{Resolution dup -13 mul 8.5 14 @rigin}bdf /@11x17{statusdict /11x17tray known{statusdict begin 11x17tray end}if Resolution dup -16 mul 11 17 @rigin}bdf /@manualfeed{ statusdict /manualfeed true put}bdf /@copies{/#copies exch def}bdf /@draft{ /bop-aux{gsave initmatrix 72 dup scale @page-width 2 div @page-height 2 div translate @page-height @page-width atan rotate /Helvetica-Bold findfont 2 scalefont setfont(DRAFT)dup stringwidth pop 2 div neg -1 moveto .95 setgray show grestore}bdf}bdf /@FontMatrix[1 0 0 -1 0 0]def /@FontBBox[0 0 0 0]def /dmystr(ZZf@@@)def /newname{dmystr cvn}bdf /df{/fontname exch def dmystr 2 fontname cvx(@@@@)cvs putinterval newname 7 dict def newname load begin /FontType 3 def /FontMatrix @FontMatrix def /FontBBox @FontBBox def /BitMaps 256 array def /BuildChar{CharBuilder}def /Encoding IdentityEncoding def end fontname{/foo setfont}2 array copy cvx def fontname load 0 dmystr 6 string copy cvn cvx put}bdf /dfe{newname dup load definefont setfont}bdf /ch-image{ ch-data 0 get}bdf /ch-width{ch-data 1 get}bdf /ch-height{ch-data 2 get}bdf /ch-xoff{ch-data 3 get}bdf /ch-yoff{ch-data 4 get}bdf /ch-dx{ch-data 5 get} bdf /CharBuilder{save 3 1 roll exch /BitMaps get exch get /ch-data exch def ch-data null ne{ch-dx 0 ch-xoff ch-yoff neg ch-xoff ch-width add ch-height ch-yoff sub setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-height ch-yoff sub .1 add]{ch-image}imagemask}if restore}bdf /dc{/ch-code exch def /ch-data exch def newname load /BitMaps get ch-code ch-data put}bdf /bop{gsave /SaveImage save def /bop-aux load exec 0 0 moveto}bdf /eop{clear SaveImage restore showpage grestore}bdf /@start{/Resolution exch def /IdentityEncoding 256 array def 0 1 255{IdentityEncoding exch 1 string dup 0 3 index put cvn put}for}bdf /p{show}bdf /RuleMatrix[1 0 0 -1 -.1 -.1]def /BlackDots 8 string def /v{gsave currentpoint translate false RuleMatrix{ BlackDots}imagemask grestore}bdf /a{moveto}bdf /delta 0 def /tail{dup /delta exch def 0 rmoveto}bdf /b{exch show tail}bdf /c{show delta 4 sub tail}bdf /d{ show delta 3 sub tail}bdf /e{show delta 2 sub tail}bdf /f{show delta 1 sub tail}bdf /g{show delta 0 rmoveto}bdf /h{show delta 1 add tail}bdf /i{show delta 2 add tail}bdf /j{show delta 3 add tail}bdf /k{show delta 4 add tail} bdf /l{show -4 0 rmoveto}bdf /m{show -3 0 rmoveto}bdf /n{show -2 0 rmoveto} bdf /o{show -1 0 rmoveto}bdf /q{show 1 0 rmoveto}bdf /r{show 2 0 rmoveto}bdf /s{show 3 0 rmoveto}bdf /t{show 4 0 rmoveto}bdf /w{0 rmoveto}bdf /x{0 exch rmoveto}bdf /y{3 2 roll show moveto}bdf /bos{/section save def}bdf /eos{clear section restore}bdf end %%EndDocument %%BeginDocument: special.pro TeXDict begin /SDict 200 dict def SDict begin /@SpecialDefaults{/hs 612 def /vs 792 def /ho 0 def /vo 0 def /hsc 1 def /vsc 1 def /ang 0 def /CLIP false def /BBcalc false def}bdf /@scaleunit 1 def /@hscale{@scaleunit div /hsc exch def}bdf /@vscale{@scaleunit div /vsc exch def}bdf /@hsize{/hs exch def /CLIP true def}bdf /@vsize{/vs exch def /CLIP true def}bdf /@hoffset{/ho exch def} bdf /@voffset{/vo exch def}bdf /@angle{/ang exch def}bdf /@rwi{10 div /rwi exch def}bdf /@llx{/llx exch def}bdf /@lly{/lly exch def}bdf /@urx{/urx exch def}bdf /@ury{/ury exch def /BBcalc true def}bdf end /@MacSetUp{userdict /md known{userdict /md get type /dicttype eq{md begin /letter{}def /note{}def /legal{}def /od{txpose 1 0 mtx defaultmatrix dtransform exch atan/pa exch def newpath clippath mark{transform{itransform moveto}}{transform{itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{ itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{ closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}def /txpose{pxs pys scale ppr aload pop por{noflips{pop exch neg exch translate pop 1 -1 scale}if xflip yflip and{pop exch neg exch translate 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg translate}if xflip yflip not and{pop exch neg exch translate pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 translate}if yflip xflip not and{ppr 1 get neg ppr 0 get neg translate} if}{noflips{translate pop pop 270 rotate 1 -1 scale}if xflip yflip and{ translate pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg translate}if xflip yflip not and{translate pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 translate}if yflip xflip not and{ translate pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 exch translate} if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy translate .96 dup scale neg exch neg exch translate}if}def /cp{pop pop showpage pm restore}def end}if}if}def /psf$TeXscale{65536 div}def /startTexFig {/psf$SavedState save def userdict maxlength dict begin Resolution 72 div dup neg scale currentpoint translate /psf$ury exch psf$TeXscale def /psf$urx exch psf$TeXscale def /psf$lly exch psf$TeXscale def /psf$llx exch psf$TeXscale def /psf$y exch psf$TeXscale def /psf$x exch psf$TeXscale def currentpoint /psf$cy exch def /psf$cx exch def /psf$sx psf$x psf$urx psf$llx sub div def /psf$sy psf$y psf$ury psf$lly sub div def psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub translate /showpage{}def /erasepage{ }def /copypage{}def @MacSetUp}def /doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll exch lineto exch lineto exch lineto closepath clip newpath moveto}def /endTexFig{end psf$SavedState restore}def /@beginspecial{SDict begin /SpecialSave save def Resolution 72 div dup neg scale currentpoint translate @SpecialDefaults}bdf /@setspecial{CLIP{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}{initclip}ifelse ho vo translate hsc vsc scale ang rotate BBcalc{rwi urx llx sub div dup scale llx neg lly neg translate}if /showpage{}def newpath}bdf /@endspecial{clear SpecialSave restore end}bdf /@defspecial{SDict begin}bdf /@fedspecial{end}bdf /li{lineto}bdf /rl{rlineto} bdf /rc{rcurveto}bdf /np{/SaveX currentpoint /SaveY exch def def newpath}bdf /st{stroke SaveX SaveY moveto}bdf /fil{fill SaveX SaveY moveto}bdf /ellipse{ /endangle exch def /startangle exch def /yrad exch def /xrad exch def /savematrix matrix currentmatrix def translate xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}bdf end %%EndDocument TeXDict begin @defspecial /@scaleunit 100 def @fedspecial end TeXDict begin 300 @start /fa df[< 001F83E000F06E3001C078780380F8780300F03007007000070070000700700007007000070070 000700700007007000FFFFFF800700700007007000070070000700700007007000070070000700 700007007000070070000700700007007000070070000700700007007000070070000700700007 007000070070007FE3FF00>29 32 0 0 27]11 dc[<003F0000E0C001C0C00381E00701E00701 E0070000070000070000070000070000070000FFFFE00700E00700E00700E00700E00700E00700 E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E07FC3 FE>23 32 0 0 25]12 dc[<003FE000E0E001C1E00381E00700E00700E00700E00700E00700E0 0700E00700E00700E0FFFFE00700E00700E00700E00700E00700E00700E00700E00700E00700E0 0700E00700E00700E00700E00700E00700E00700E00700E00700E07FE7FE>23 32 0 0 25]13 dc[<0F0000301880003030600060703001C0602C06C06013F980E0100300E0100300E0100600E0 100C00E0100C00E01018006010300060203000702060003040C0001880C0000F018000000300E0 000303100006060800060604000C0C0400180C0400181C0200301C0200601C0200601C0200C01C 0201801C0201801C0203000C0406000C04060006040C00060818000310080000E0>31 37 3 3 38]37 dc[<70F8FCFC74040404080810102040>6 14 4 -18 13]39 dc[<002000400080010002 0006000C000C00180018003000300030007000600060006000E000E000E000E000E000E000E000 E000E000E000E000E0006000600060007000300030003000180018000C000C0006000200010000 8000400020>11 46 3 12 18]40 dc[<800040002000100008000C000600060003000300018001 80018001C000C000C000C000E000E000E000E000E000E000E000E000E000E000E000E000C000C0 00C001C001800180018003000300060006000C0008001000200040008000>11 46 3 12 18]41 dc[<70F8FCFC74040404080810102040>6 14 4 9 13]44 dc[10 2 1 -9 15]45 dc[<70F8F8F870>5 5 4 0 13]46 dc[<000100030003000600060006000C000C000C00180018 001800300030003000600060006000C000C000C00180018001800300030003000600060006000C 000C000C00180018001800300030003000600060006000C000C000C000>16 45 3 11 23]47 dc [<03F0000E1C001C0E00180600380700700380700380700380700380F003C0F003C0F003C0F003 C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C07003807003807003807807 803807001806001C0E000E1C0003F000>18 31 2 1 23]48 dc[<018003800F80F38003800380 038003800380038003800380038003800380038003800380038003800380038003800380038003 800380038007C0FFFE>15 30 4 0 23]49 dc[<03F0000C1C00100E00200700400780800780F0 07C0F803C0F803C0F803C02007C00007C0000780000780000F00000E00001C0000380000700000 600000C0000180000300000600400C00401800401000803FFF807FFF80FFFF80>18 30 2 0 23] 50 dc[<03F0000C1C00100E00200F00780F80780780780780380F80000F80000F00000F00000E 00001C0000380003F000003C00000E00000F000007800007800007C02007C0F807C0F807C0F807 C0F00780400780400F00200E001C3C0003F000>18 31 2 1 23]51 dc[<000600000600000E00 000E00001E00002E00002E00004E00008E00008E00010E00020E00020E00040E00080E00080E00 100E00200E00200E00400E00C00E00FFFFF0000E00000E00000E00000E00000E00000E00000E00 00FFE0>20 30 1 0 23]52 dc[<1803001FFE001FFC001FF8001FE00010000010000010000010 000010000010000011F000161C00180E001007001007800003800003800003C00003C00003C070 03C0F003C0F003C0E00380400380400700200600100E000C380003E000>18 31 2 1 23]53 dc[ <007C000182000701000E03800C07801C0780380300380000780000700000700000F1F000F21C 00F40600F80700F80380F80380F003C0F003C0F003C0F003C0F003C07003C07003C07003803803 803807001807000C0E00061C0001F000>18 31 2 1 23]54 dc[<4000007FFFC07FFF807FFF80 40010080020080020080040000080000080000100000200000200000400000400000C00000C000 01C000018000038000038000038000038000078000078000078000078000078000078000078000 030000>18 31 3 1 23]55 dc[<03F0000C0C0010060030030020018060018060018060018070 01807803003E03003F06001FC8000FF00003F80007FC000C7E00103F00300F806003804001C0C0 01C0C000C0C000C0C000C0C000806001802001001002000C0C0003F000>18 31 2 1 23]56 dc[ <03F0000E18001C0C00380600380700700700700380F00380F00380F003C0F003C0F003C0F003 C0F003C07007C07007C03807C0180BC00E13C003E3C00003800003800003800007003007007806 00780E00700C002018001070000FC000>18 31 2 1 23]57 dc[<70F8F8F87000000000000000 00000070F8F8F870>5 20 4 0 13]58 dc[<0FC0307040384038E03CF03CF03C603C0038007000 E000C001800180010003000200020002000200020002000000000000000000000007000F800F80 0F800700>14 32 3 0 21]63 dc[<000100000003800000038000000380000007C0000007C000 0007C0000009E0000009E0000009E0000010F0000010F0000010F0000020780000207800002078 0000403C0000403C0000403C0000801E0000801E0000FFFE0001000F0001000F0001000F000200 07800200078002000780040003C00E0003C01F0007E0FFC03FFE>31 32 1 0 34]65 dc[26 31 2 0 32]66 dc[<000FC040007030C001C009C0038005C0070003C00E0001 C01E0000C01C0000C03C0000C07C0000407C00004078000040F8000000F8000000F8000000F800 0000F8000000F8000000F8000000F8000000F8000000780000007C0000407C0000403C0000401C 0000401E0000800E000080070001000380020001C0040000703800000FC000>26 33 3 1 33] 67 dc[29 31 2 0 35]68 dc[25 31 2 0 30]70 dc[ <000FE0200078186000E004E0038002E0070001E00F0000E01E0000601E0000603C0000603C00 00207C00002078000020F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8 007FFCF80003E0780001E07C0001E03C0001E03C0001E01E0001E01E0001E00F0001E0070001E0 038002E000E0046000781820000FE000>30 33 3 1 36]71 dc[29 31 2 0 34]72 dc[14 31 1 0 16]73 dc[< FFFC0FFC0FC003E007800180078001000780020007800400078008000780100007802000078040 0007808000078100000783000007878000078F80000793C0000791E00007A1E00007C0F0000780 F0000780780007803C0007803C0007801E0007801E0007800F000780078007800780078007C00F C007E0FFFC3FFC>30 31 2 0 35]75 dc[23 31 2 0 28]76 dc[37 31 2 0 42]77 dc[<001F800000F0F00001C0380007801E000F000F000E000700 1E0007803C0003C03C0003C07C0003E0780001E0780001E0F80001F0F80001F0F80001F0F80001 F0F80001F0F80001F0F80001F0F80001F0F80001F0780001E07C0003E07C0003E03C0003C03C00 03C01E0007800E0007000F000F0007801E0001C0380000F0F000001F8000>28 33 3 1 35]79 dc[25 31 2 0 31]80 dc[<001F800000F0F00001C0380007801E000F000F 000E0007001E0007803C0003C03C0003C07C0003E07C0003E0780001E0F80001F0F80001F0F800 01F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0780001E0780001E07C0003E03C 0003C03C0F03C01E1087800E2047000F204F0007A03E0001E0380000F0F010001FB01000003010 000038300000387000003FF000001FE000001FE000000FC000000780>28 41 3 9 35]81 dc[< FFFF80000F80F0000780780007803C0007801E0007801E0007801F0007801F0007801F0007801F 0007801E0007801E0007803C00078078000780F00007FF80000781C0000780E0000780F0000780 700007807800078078000780780007807C0007807C0007807C0007807C0407807E0407803E040F C01E08FFFC0F10000003E0>30 32 2 1 33]82 dc[<07E0800C19801007803003806001806001 80E00180E00080E00080E00080F00000F000007800007F00003FF0001FFC000FFE0003FF00001F 800007800003C00003C00001C08001C08001C08001C08001C0C00180C00380E00300F00600CE0C 0081F800>18 33 3 1 25]83 dc[<7FFFFFE0780F01E0600F0060400F0020400F0020C00F0030 800F0010800F0010800F0010800F0010000F0000000F0000000F0000000F0000000F0000000F00 00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F 0000000F0000000F0000000F0000001F800007FFFE00>28 31 2 0 33]84 dc[29 32 2 1 34]85 dc[31 32 1 1 34]86 dc[44 32 1 1 47]87 dc[<1FE000303000781800781C00300E00000E00000E00000E0000FE00078E001E0E00 380E00780E00F00E10F00E10F00E10F01E10781E103867200F83C0>20 20 2 0 23]97 dc[<0E 0000FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E3E000E C3800F01C00F00E00E00E00E00700E00700E00780E00780E00780E00780E00780E00780E00700E 00700E00E00F00E00D01C00CC300083E00>21 32 1 0 25]98 dc[<03F80E0C1C1E381E380C70 007000F000F000F000F000F000F00070007000380138011C020E0C03F0>16 20 2 0 20]99 dc[ <000380003F8000038000038000038000038000038000038000038000038000038000038003E3 80061B801C0780380380380380700380700380F00380F00380F00380F00380F00380F003807003 807003803803803807801C07800E1B8003E3F8>21 32 2 0 25]100 dc[<03F0000E1C001C0E00 380700380700700700700380F00380F00380FFFF80F00000F00000F00000700000700000380080 1800800C010007060001F800>17 20 1 0 20]101 dc[<007C00C6018F038F0706070007000700 0700070007000700FFF00700070007000700070007000700070007000700070007000700070007 000700070007007FF0>16 32 0 0 14]102 dc[<0000E003E3300E3C301C1C30380E00780F0078 0F00780F00780F00780F00380E001C1C001E380033E0002000002000003000003000003FFE001F FF800FFFC03001E0600070C00030C00030C00030C000306000603000C01C038003FC00>20 31 1 10 23]103 dc[<0E0000FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00 000E00000E3E000E43000E81800F01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01 C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFE7FC>22 32 1 0 25]104 dc[<1C001E 003E001E001C000000000000000000000000000E007E000E000E000E000E000E000E000E000E00 0E000E000E000E000E000E000E000E000E00FFC0>10 31 0 0 12]105 dc[<00E001F001F001F0 00E0000000000000000000000000007007F000F000700070007000700070007000700070007000 70007000700070007000700070007000700070007000706070F060F0C061803F00>12 40 -2 9 14]106 dc[<0E0000FE00000E00000E00000E00000E00000E00000E00000E00000E00000E0000 0E00000E0FF00E03C00E03000E02000E04000E08000E10000E30000E70000EF8000F38000E1C00 0E1E000E0E000E07000E07800E03800E03C00E03E0FFCFF8>21 32 1 0 24]107 dc[<0E00FE00 0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E 000E000E000E000E000E000E000E000E000E00FFE0>11 32 0 0 12]108 dc[<0E1F01F000FE61 8618000E81C81C000F00F00E000F00F00E000E00E00E000E00E00E000E00E00E000E00E00E000E 00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E00 0E00E00E000E00E00E00FFE7FE7FE0>35 20 1 0 38]109 dc[<0E3E00FE43000E81800F01C00F 01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E 01C00E01C0FFE7FC>22 20 1 0 25]110 dc[<01F800070E001C03803801C03801C07000E07000 E0F000F0F000F0F000F0F000F0F000F0F000F07000E07000E03801C03801C01C0380070E0001F8 00>20 20 1 0 23]111 dc[<0E3E00FEC3800F01C00F00E00E00E00E00F00E00700E00780E0078 0E00780E00780E00780E00780E00700E00F00E00E00F01E00F01C00EC3000E3E000E00000E0000 0E00000E00000E00000E00000E00000E0000FFE000>21 29 1 9 25]112 dc[<03E0800619801C 05803C0780380380780380700380F00380F00380F00380F00380F00380F0038070038078038038 03803807801C0B800E138003E38000038000038000038000038000038000038000038000038000 3FF8>21 29 2 9 24]113 dc[<0E78FE8C0F1E0F1E0F0C0E000E000E000E000E000E000E000E00 0E000E000E000E000E000E00FFE0>15 20 1 0 18]114 dc[<1F9030704030C010C010C010E000 78007F803FE00FF00070803880188018C018C018E030D0608F80>13 20 2 0 18]115 dc[<0200 02000200060006000E000E003E00FFF80E000E000E000E000E000E000E000E000E000E000E000E 080E080E080E080E080610031001E0>13 28 1 0 18]116 dc[<0E01C0FE1FC00E01C00E01C00E 01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E03C006 03C0030DC001F1FC>22 20 1 0 25]117 dc[21 20 1 0 24]118 dc[30 20 1 0 33]119 dc[<7FC3FC0F01E00701C00701800381 0001C20000E40000EC00007800003800003C00007C00004E000087000107000303800201C00601 E01E01E0FF07FE>23 20 0 0 24]120 dc[21 29 1 9 24]121 dc[<3F FF380E200E201C40384078407000E001E001C00380078007010E011E011C0338027006700EFFFE >16 20 1 0 20]122 dc dfe /fb df[<387CFEFEFE7C38>7 7 4 0 16]46 dc[<001800007800 01F800FFF800FFF80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F800 01F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F800 01F80001F8007FFFE07FFFE0>19 32 4 0 28]49 dc[37 34 2 0 43]68 dc[48 34 2 0 53]77 dc[<0007FC0000003FFF8000 00FC07E00003F001F80007E000FC000FC0007E001F80003F001F80003F003F00001F803F00001F 807F00001FC07E00000FC07E00000FC0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE0000 0FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE07E00000FC07F00001FC07F00001FC03F00 001F803F80003F801F80003F000FC0007E0007E000FC0003F001F80000FC07E000003FFF800000 07FC0000>35 34 3 0 42]79 dc[<01FC0407FF8C1F03FC3C007C7C003C78001C78001CF8000C F8000CFC000CFC0000FF0000FFE0007FFF007FFFC03FFFF01FFFF80FFFFC03FFFE003FFE0003FF 00007F00003F00003FC0001FC0001FC0001FE0001EE0001EF0003CFC003CFF00F8C7FFE080FF80 >24 34 3 0 31]83 dc[<7FFFFFFF807FFFFFFF807E03F80F807803F807807003F803806003F8 0180E003F801C0E003F801C0C003F800C0C003F800C0C003F800C0C003F800C00003F800000003 F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8000000 03F800000003F800000003F800000003F800000003F800000003F800000003F800000003F80000 0003F800000003F800000003F8000003FFFFF80003FFFFF800>34 34 2 0 39]84 dc[<07FC00 1FFF803F07C03F03E03F01E03F01F01E01F00001F00001F0003FF003FDF01FC1F03F01F07E01F0 FC01F0FC01F0FC01F0FC01F07E02F07E0CF81FF87F07E03F>24 22 2 0 27]97 dc[<00FF8007 FFE00F83F01F03F03E03F07E03F07C01E07C0000FC0000FC0000FC0000FC0000FC0000FC00007C 00007E00007E00003E00301F00600FC0E007FF8000FE00>20 22 2 0 25]99 dc[<00FE0007FF 800F87C01E01E03E01F07C00F07C00F8FC00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00007C00 007C00007E00003E00181F00300FC07003FFC000FF00>21 22 2 0 26]101 dc[<003F8000FFC0 01E3E003C7E007C7E00F87E00F83C00F80000F80000F80000F80000F80000F8000FFFC00FFFC00 0F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F8000 0F80000F80000F80000F80000F80007FF8007FF800>19 35 1 0 17]102 dc[26 35 2 0 31]104 dc[<00FE0007FFC00F83E01E00F0 3E00F87C007C7C007C7C007CFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C 3E00F81F01F00F83E007FFC000FE00>23 22 2 0 28]111 dc[26 32 2 10 31]112 dc[19 22 2 0 23]114 dc[<0180000180000180000180000380000380000780000780000F80003F8000 FFFF00FFFF000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F8000 0F81800F81800F81800F81800F81800F830007C30003FE0000F800>17 32 1 0 22]116 dc[26 22 2 0 31]117 dc[37 22 1 0 40]119 dc dfe /fc df[<0E1E1E1E1E02020404 080810204080>7 15 3 10 15]44 dc[<000F800030C000E06001C0700380700300700700700F 00700E00701E00701E00701C00F03C00F03C00F03C00F07801E07801E07801E07801E0F003C0F0 03C0F003C0F00380E00780E00780E00700E00F00E00E00E01C00E01C00E0380060700030E0001F 0000>20 34 6 1 25]48 dc[<0001000300030006001E002E03CE001C001C001C001C00380038 00380038007000700070007000E000E000E000E001C001C001C001C003800380038003800780FF FC>16 33 6 0 25]49 dc[<000FC000106000603800801800801C01001C02201E02101E04101E 04101E04101E08203C08203C0840380840780880F00700E00001C0000300000600001800002000 00C0000100000200000400100800301000202000605F80C063FFC040FF80807F00801E00>23 34 4 1 25]50 dc[<000FC000307000C01801001C02001C04000C04401C08201C08201C08201C0840 3808C0380700700000600001C000070000FC000007000003800003800001C00001C00001C00003 C06003C0F003C0F00380E00780800700800E00801C0040380020F0001F8000>22 34 5 1 25] 51 dc[<00400400703800FFF000FFE000BF800080000100000100000100000100000200000200 00023E0002C3000501800601C00401C00001E00001E00001E00001E00001E00001E07003C0F003 C0F003C0E00780800700800F00800E00401C0040380030E0000F8000>22 34 5 1 25]53 dc[< 0000030000000300000007000000070000000F0000000F0000001F0000002F0000002F0000004F 0000004F8000008780000087800001078000020780000207800004078000040780000807800008 0780001007800030078000200780007FFF80004007C0008007C0008003C0010003C0030003C002 0003C0040003C0040003C00C0003C03C0007C0FF003FFC>30 35 3 0 36]65 dc[<00007F0080 0003808100000E00630000380027000070001F0000E0000E0001C0000E000380000E000700000E 000F000004000E000004001E000004003C000004003C0000080078000000007800000000780000 0000F000000000F000000000F000000000F000000000F000000000E000000000E000002000E000 002000E000004000E000004000F00000800070000080007000010000380002000018000400001C 0008000006003000000381C0000000FE000000>33 36 7 1 35]67 dc[<00FFFFFF000F000F00 0F0003000F0003001E0003001E0003001E0002001E0002003C0002003C0002003C0102003C0100 00780200007802000078060000780E0000FFFC0000F00C0000F00C0000F00C0001E0080001E008 0001E0080001E0000003C0000003C0000003C0000003C000000780000007800000078000000780 00000F800000FFFC0000>32 34 3 0 32]70 dc[<00007F00800003808100000E006300003800 27000070001F0000E0000E0001C0000E000380000E000700000E000F000004000E000004001E00 0004003C000004003C00000800780000000078000000007800000000F000000000F000000000F0 00000000F000000000F0003FFC00E00001E000E00001E000E00001E000E00003C000E00003C000 F00003C000700003C0007000078000380007800018000F80001C0013800006002300000381C100 0000FE000000>33 36 7 1 38]71 dc[<00FF800007FC000F80000F80000F80001780000F8000 1780001780002F000013C0002F000013C0004F000013C0008F000023C0009E000023C0011E0000 23C0011E000023C0021E000043C0043C000043C0043C000043C0083C000041E0083C000081E010 78000081E02078000081E02078000081E04078000101E040F0000101E080F0000101E100F00001 01E100F0000200F201E0000200F201E0000200F401E0000200F801E0000400F803C0000400F003 C0000400F003C0000C00E003C0001E00C007C000FFC0C07FFC00>46 34 3 0 44]77 dc[<00FF FFE0000F0038000F001E000F000E001E0007001E0007001E0007001E0007003C000F003C000F00 3C000F003C001E0078001E0078003C00780078007800E000F003C000FFFE0000F0000000F00000 01E0000001E0000001E0000001E0000003C0000003C0000003C0000003C0000007800000078000 0007800000078000000F800000FFF80000>32 34 3 0 33]80 dc[<0001F020000E0C40001802 C0003001C0006001C000E0018000C0018001C0018001C0018003C0010003C0010003C0000003C0 000003E0000001F8000001FF000000FFE000007FF000001FF8000003FC0000007C0000003C0000 001E0000001E0000001E0020001C0020001C0020001C0020001800600038006000300070006000 7000C000C8018000C607000081FC0000>27 36 3 1 27]83 dc[<3FFE03FF03C0007803C00060 03C00020078000400780004007800040078000400F0000800F0000800F0000800F0000801E0001 001E0001001E0001001E0001003C0002003C0002003C0002003C00020078000400780004007800 04007800040070000800F0000800F0001000700010007000200070004000300040003801800018 0200000E0C000003F00000>32 35 9 1 36]85 dc[<00F8C00185C00705C00E03800E03801C03 803C0380380700780700780700780700F00E00F00E00F00E00F00E10F01C20701C20703C20305C 40308C400F0780>20 21 5 0 25]97 dc[<03C03F8003800380038007000700070007000E000E 000E000E001C001CF81D0C1E0E3C0638073807380F700F700F700F700FE01EE01EE01EE03CE038 E038607060E031C01F00>16 35 5 0 22]98 dc[<007E0001C1000301800703800E07801C0780 3C0000380000780000780000780000F00000F00000F00000F00000F00100700100700200300C00 1830000FC000>17 21 5 0 22]99 dc[<00003C0003F800003800003800003800007000007000 00700000700000E00000E00000E00000E00001C000F9C00185C00705C00E03800E03801C03803C 0380380700780700780700780700F00E00F00E00F00E00F00E10F01C20701C20703C20305C4030 8C400F0780>22 35 5 0 25]100 dc[<00F803840E021C023C0238027804F018FFE0F000F000E0 00E000E000E000E002E0026004701830600F80>15 21 6 0 22]101 dc[<00003E0000470000CF 00018F000186000380000380000380000700000700000700000700000700000E0000FFF0000E00 000E00000E00001C00001C00001C00001C00001C00003800003800003800003800003800007000 00700000700000700000700000E00000E00000E00000E00000C00001C00001C000718000F18000 F300006200003C0000>24 45 -2 10 15]102 dc[<001F180030B800E0B801C07001C070038070 0780700700E00F00E00F00E00F00E01E01C01E01C01E01C01E01C01E03800E03800E0780060B80 06170001E700000700000700000E00000E00000E00701C00F01800F0300060E0003F8000>21 31 2 10 22]103 dc[<00F0000FE00000E00000E00000E00001C00001C00001C00001C00003800003 8000038000038000070000071F0007218007C0C00F00E00F00E00E00E00E00E01C01C01C01C01C 01C01C01C0380380380380380380380704700708700E08700E10700610E006206003C0>22 35 3 0 25]104 dc[<00C001E001C001C0000000000000000000000000000000001C00230043004300 8700870087000E000E001C001C001C00380038003840708070807080710032001C00>11 33 5 0 15]105 dc[<01E01FC001C001C001C0038003800380038007000700070007000E000E000E000E 001C001C001C001C0038003800380038007000700070007100E200E200E200E20064003800>11 35 4 0 12]108 dc[<1C0F80F8002610C10C004760660600878078070087807807008700700700 87007007000E00E00E000E00E00E000E00E00E000E00E00E001C01C01C001C01C01C001C01C01C 001C01C03820380380384038038070403803807080380380308070070031003003001E00>35 21 5 0 40]109 dc[<1C0F002631C04740C08780E08780E08700E08700E00E01C00E01C00E01C00E 01C01C03801C03801C03801C0704380708380E08380E103806107006203003C0>22 21 5 0 27] 110 dc[<007E0001C3000381800701C00E01C01C01E03C01E03801E07801E07801E07801E0F003 C0F003C0F00380F00780700700700E00700C0030180018700007C000>19 21 5 0 25]111 dc[< 01C1F002621804741C08780C08700E08700E08701E00E01E00E01E00E01E00E01E01C03C01C03C 01C03C01C07803807003807003C0E003C1C0072380071E000700000700000E00000E00000E0000 0E00001C00001C00001C0000FFC000>23 31 1 10 25]112 dc[<1C1F002620804741C08783C0 8703C08701808700000E00000E00000E00000E00001C00001C00001C00001C0000380000380000 380000380000700000300000>18 21 5 0 21]114 dc[<00FC000183000200800401800C03800C 03000C00000F00000FF00007FC0003FE00003E00000F00000700700700F00600F00600E0040040 08002030001FC000>17 21 3 0 20]115 dc[<00C001C001C001C001C003800380038003800700 FFF8070007000E000E000E000E001C001C001C001C003800380038003810702070207040708031 001E00>13 31 4 0 16]116 dc[<1E00602300E04380E04381C08381C08701C08701C00703800E 03800E03800E03801C07001C07001C07001C07081C0E10180E101C0E101C1E200C262007C3C0> 21 21 5 0 26]117 dc[<1E03802307C04387C04383C08381C08700C08700C00700800E00800E 00800E00801C01001C01001C01001C02001C02001C04001C08001C08000C300003C000>18 21 5 0 22]118 dc[<1E00302300704380704380E08380E08700E08700E00701C00E01C00E01C00E01 C01C03801C03801C03801C03801C07001C07001C07001C0F000C3E0003CE00000E00000E00001C 00601C00F03800F03000E0600080C0004380003E0000>20 31 5 10 24]121 dc dfe /fd df[< FFFFFFF80000FFFFFFFF8000FFFFFFFFE00003FC001FF80003FC0007FC0003FC0001FE0003FC00 00FF0003FC00007F8003FC00003FC003FC00001FC003FC00001FE003FC00001FE003FC00000FF0 03FC00000FF003FC00000FF003FC00000FF003FC00000FF803FC00000FF803FC00000FF803FC00 000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF8 03FC00000FF003FC00000FF003FC00000FF003FC00001FE003FC00001FE003FC00001FC003FC00 003FC003FC00007F8003FC00007F0003FC0001FE0003FC0003FC0003FC001FF800FFFFFFFFE000 FFFFFFFF8000FFFFFFFC0000>45 41 3 0 53]68 dc[58 41 3 0 65]77 dc[<0000FFE000000007FFFC0000003FC07F8000007F001FC00001FC0007 F00003F80003F80007F00001FC000FF00001FE001FE00000FF001FE00000FF003FC000007F803F C000007F807FC000007FC07F8000003FC07F8000003FC07F8000003FC0FF8000003FE0FF800000 3FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF 8000003FE0FF8000003FE07F8000003FC07FC000007FC07FC000007FC03FC000007F803FC00000 7F801FE00000FF001FE00000FF000FF00001FE0007F00001FC0003F80003F80001FC0007F00000 FF001FE000003FC07F8000000FFFFE00000000FFE00000>43 41 4 0 52]79 dc[<007F806003 FFF0E007FFF9E00F807FE01F001FE03E0007E07C0003E07C0001E0FC0001E0FC0001E0FC0000E0 FE0000E0FE0000E0FF000000FFC000007FFE00007FFFE0003FFFFC001FFFFE000FFFFF8007FFFF C003FFFFE000FFFFE00007FFF000007FF000000FF8000007F8000003F8600001F8E00001F8E000 01F8E00001F8F00001F0F00001F0F80003F0FC0003E0FF0007C0FFE01F80F3FFFF00E0FFFE00C0 1FF000>29 41 4 0 38]83 dc[46 41 3 0 53]85 dc[<01FF 800007FFF0000F81F8001FC07E001FC07E001FC03F000F803F8007003F8000003F8000003F8000 003F80000FFF8000FFFF8007FC3F800FE03F803F803F803F003F807F003F80FE003F80FE003F80 FE003F80FE003F807E007F807F00DF803F839FFC0FFF0FFC01FC03FC>30 27 2 0 33]97 dc[< 001FF80000FFFE0003F01F0007E03F800FC03F801F803F803F801F007F800E007F0000007F0000 00FF000000FF000000FF000000FF000000FF000000FF000000FF0000007F0000007F0000007F80 00003F8001C01F8001C00FC0038007E0070003F01E0000FFFC00001FE000>26 27 2 0 31]99 dc[<00003FF80000003FF80000003FF800000003F800000003F800000003F800000003F8000000 03F800000003F800000003F800000003F800000003F800000003F800000003F800000003F80000 1FE3F80000FFFBF80003F03FF80007E00FF8000FC007F8001F8003F8003F8003F8007F0003F800 7F0003F8007F0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F8 00FF0003F8007F0003F8007F0003F8007F0003F8003F8003F8001F8003F8000F8007F80007C00F F80003F03BFF8000FFF3FF80003FC3FF80>33 42 2 0 38]100 dc[<003FE00001FFF80003F07E 0007C01F000F801F801F800F803F800FC07F000FC07F0007C07F0007E0FF0007E0FF0007E0FFFF FFE0FFFFFFE0FF000000FF000000FF0000007F0000007F0000007F0000003F8000E01F8000E00F C001C007E0038003F81F0000FFFE00001FF000>27 27 2 0 32]101 dc[33 42 3 0 38]104 dc[33 39 2 12 38]112 dc[<00700000700000700000 700000F00000F00000F00001F00003F00003F00007F0001FFFF0FFFFF0FFFFF007F00007F00007 F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F03807F03807 F03807F03807F03807F03803F03803F87001F86000FFC0001F80>21 38 1 0 27]116 dc dfe end TeXDict begin @letter %%EndProlog %%Page: 1 1 bop 687 208 a fd(Mac)n(h)23 b(DOS)g(Up)r(date)829 375 y fc(Ger)n(ald)17 b (Malan)678 433 y(Scho)n(ol)h(of)g(Computer)f(Scienc)o(e)682 492 y(Carne)m(gie) h(Mel)t(lon)g(University)419 550 y(5000)f(F)l(orb)m(es)h(A)o(venue)h(Pittsbur) n(gh,)f(Pennsylvania)h(15213)75 766 y fb(1.)56 b(The)18 b(Mac)o(h)h(DOS)f(Sof\ t)o(w)o(are)g(Supp)r(ort)75 909 y fa(Appro)o(ximately)e(a)g(y)n(ear)g(and)g (a)f(half)h(ago)f(w)n(e)h(b)r(egan)f(w)o(ork)g(here)h(at)f(Carnegie)h(Mellon) h(on)e(a)h(pro)r(ject)75 965 y(to)k(implemen)q(t)h(DOS)g(as)g(a)g(user)g(lev) o(el)h(application)h(based)f(on)f(a)f(Mac)o(h)h(3.0)f(k)o(ernel.)38 b(All)23 b (of)e(this)75 1022 y(w)o(ork)c(on)g(the)h(Mac)o(h)g(DOS)g(soft)n(w)n(are)g (w)n(as)f(done)i(b)o(y)e(Gerald)h(Malan,)g(Rick)g(Rashid,)h(Da)n(vid)g(Golub,) 75 1078 y(and)g(Rob)r(ert)g(Baron.)31 b(T)l(o)19 b(date)g(w)o(e)g(supp)r(ort) f(DOS)i(as)e(a)h(m)o(ultithreaded)h(Mac)o(h)f(T)l(ask)g(running)h(in)75 1135 y (conjunction)e(with)g(either)g(the)g(4.3)e(BSD)i(Unix)g(Serv)o(er)f(or)g(the) g(OSF/1)g(Single)i(Serv)o(er.)27 b(The)17 b(Mac)o(h)75 1191 y(DOS)f(soft)n (w)n(are)g(supp)r(ort)f(consists)h(of)f(mac)n(hine)i(dep)r(endent)f(k)n(ernel) h(supp)r(ort,)e(and)g(a)h(m)n(ultithreaded)75 1247 y(em)o(ulator)h(task)f(whi\ ch)h(pro)o(vides)h(virtual)g(devices,)h(BIOS)f(em)o(ulation,)g(supp)r(ort)e (for)h(common)g(DOS)75 1304 y(extensions,)23 b(em)o(ulation)f(of)e(man)o(y)h (DOS)g(system)g(calls,)i(and)e(soft)n(w)n(are)g(for)g(in)o(tegration)g(with)g (the)75 1360 y(Unix)f(serv)n(er.)31 b(This)19 b(w)n(ork)g(w)n(as)f(outlined)j (in)e(an)g(article)g(presented)f(at)g(the)h(Second)h(Usenix)f(Mac)o(h)75 1417 y(Symp)r(osium)c(and)h(is)f(detailed)i(in)f(the)f(Symp)r(osium's)g(pro)q(ceed\ ings)i(pages)e(27)f(through)h(40.)137 1515 y(The)i(system)f(supp)r(orts)g(DOS) g(v)o(ersions)h(3.1)f(to)f(5.0)h(and)h(runs)f(Microsoft)g(Windo)o(ws)h(3.0)e (in)i(real-)75 1571 y(mo)q(de.)j(W)l(e)15 b(ha)n(v)o(e)g(successfully)i(run)d (o)o(v)o(er)g(100)g(DOS)h(applications)h(ranging)f(from)f(business)i(soft)n (w)n(are)75 1628 y(suc)o(h)c(as)f(Lotus)h(123)f(and)g(Microsoft)g(W)l(ord)g (to)g(entertainmen)o(t)g(soft)n(w)n(are)h(suc)o(h)g(as)f(Wing)h(Commander,)75 1684 y(Space)k(Quest)f(IV,)h(P)n(opulous,)g(and)f(the)h(Microsoft)e(Flight)g (Simulator.)137 1782 y(The)g(Mac)o(h)g(DOS)g(soft)n(w)o(are)f(do)r(es)h(not)f (supplant)h(DOS,)g(but)g(pro)n(vides)h(an)f(en)o(vironment)f(in)i(which)75 1839 y(it)e(is)g(executed.)20 b(W)l(e)13 b(load)g(the)g(DOS)g(b)r(o)q(otstrap) e(image)i(from)f(a)g(DOS)i(\015opp)o(y)e(or)h(hard)f(disk)i(partition,)75 1895 y(initialize)19 b(a)d(sp)q(ecial)i(thread's)d(instruction)i(p)r(oin)o(ter)f (to)f(the)h(b)r(o)q(otstrap)f(co)q(de,)h(and)g(resume)h(it's)e(exe-)75 1951 y (cution.)22 b(This)16 b(brings)g(DOS)g(into)f(the)h(Mac)n(h)g(DOS)g(task's)e (address)i(space)g(and)g(b)q(egins)h(execution)f(of)75 2008 y(the)e(DOS)g(com\ mand)g(line)i(in)o(terface.)j(This)c(sp)q(ecial)g(thread)f(executes)h(in)f (a)g(mo)q(de)g(called)i(V86)d(mo)q(de,)75 2064 y(which)j(interprets)f(instruc\ tions)j(as)d(an)i(8086)e(c)o(hip)i(w)n(ould.)24 b(Whenever)16 b(a)g(DOS)g(pro\ gram)f(generates)75 2121 y(an)h(exception,)g(like)g(a)f(DOS)h(system)f(call)i (or)e(enabling)i(the)f(system's)e(interrupt)h(\015ag,)g(the)h(Mac)n(h)g(3.0) 75 2177 y(exception)d(handling)g(mec)o(hanism)f(catc)o(hes)f(the)h(instructio\ n)h(and)e(either)i(handles)f(it)g(inside)i(the)d(k)o(ernel)75 2234 y(or)k(pas\ ses)g(it)g(to)g(a)g(thread)g(in)h(the)f(user)g(level)h(Mac)n(h)g(DOS)f(task.) 137 2332 y(The)22 b(Mac)n(h)f(3.0)f(k)o(ernel)i(con)o(tains)f(the)g(mac)o(hin\ e)h(dep)r(endent)f(em)n(ulation)h(co)q(de)g(which)f(handles)75 2388 y(man)o (y)f(of)g(the)g(DOS)h(V86)f(thread's)f(exceptions.)37 b(The)20 b(balance)i (of)e(supp)r(ort)f(b)r(et)n(w)o(een)i(the)f(k)o(ernel)75 2445 y(and)i(user)g (space)g(w)n(as)f(decided)j(after)d(sev)o(eral)h(iterations)g(of)f(testing.) 39 b(Curren)o(tly)22 b(the)g(Mac)n(h)g(3.0)75 2501 y(k)o(ernel)15 b(con)o(tai\ ns)g(supp)r(ort)f(for)g(V86)g(mo)q(de)h(exceptions)h(p)q(ertaining)g(to)e(in) o(terrupt)h(\015ag)f(managemen)o(t.)75 2558 y(These)j(exceptions)h(accoun)o (t)f(for)f(appro)n(ximately)i(50)e(to)g(90)g(p)r(ercen)o(t)h(of)f(all)i(V86)e (mo)q(de)h(exceptions,)75 2614 y(dep)r(ending)j(on)f(the)g(DOS)g(application.) 32 b(All)20 b(other)f(V86)f(mo)q(de)h(exceptions)h(are)f(passed)g(from)f(the) 75 2670 y(k)o(ernel)e(to)f(the)g(Mac)n(h)h(DOS)f(task's)f(monitor)h(thread.) 964 2804 y(1)p eop %%Page: 2 2 bop 137 42 a fa(The)19 b(Mac)n(h)g(DOS)g(soft)n(w)o(are's)e(user)i(level)g (supp)r(ort)f(is)h(brok)n(en)g(do)o(wn)f(into)g(t)n(w)o(o)g(ma)r(jor)g(areas:) 26 b(a)75 98 y(monitor)15 b(thread)h(that)f(handles)i(the)f(V86)f(exceptions) h(passed)g(from)f(the)h(k)o(ernel,)g(and)g(sev)o(eral)g(input)75 154 y(handli\ ng)22 b(threads.)36 b(The)20 b(monitor)g(thread)h(receiv)o(es)g(exception)g (messages)f(from)g(the)h(k)n(ernel)h(and)75 211 y(determines)15 b(the)f(t)o (yp)q(e)g(of)g(system)g(calls)h(to)e(which)h(they)g(refer.)20 b(The)14 b(inpu\ t)h(handling)h(threads)e(gather)75 267 y(input)21 b(from)e(the)h(k)o(eyb)r (oard,)g(mouse)g(and)g(timer)g(c)o(hip)h(and)f(either)h(queue)g(the)f(input)h (or)e(generate)75 324 y(external)d(in)o(terrupts)f(to)g(the)g(V86)g(thread.) 137 422 y(The)20 b(monitor)g(thread)f(receives)h(the)g(V86)f(exceptions)i(tha\ t)e(the)h(k)n(ernel)h(do)q(esn't)f(em)o(ulate)g(and)75 478 y(determines)h(whi\ c)o(h)f(kind)h(of)e(exception)h(w)o(as)f(generated:)29 b(a)19 b(BIOS)h(or)g (a)f(DOS)h(system)f(call.)34 b(The)75 535 y(Mac)n(h)17 b(DOS)h(soft)n(w)n(are) f(em)o(ulates)g(man)n(y)g(of)g(the)g(BIOS)h(calls,)g(but)f(only)g(a)g(few)g (of)f(the)h(DOS)g(system)75 591 y(calls.)26 b(The)17 b(BIOS)h(is)f(a)g(collec\ tion)i(of)d(standard)h(device)h(driv)o(ers)f(that)f(are)h(con)o(tained)g(in)h (the)f(R)o(OM)75 648 y(on)g(DOS)g(mac)o(hines.)26 b(The)17 b(Mac)o(h)g(DOS)g (soft)n(w)o(are)g(in)o(tercepts)g(the)g(BIOS)h(calls)g(related)g(to)e(the)h (disk)75 704 y(driv)o(e,)h(the)f(timer)g(c)o(hip,)i(the)e(k)o(eyb)r(oard,)f (and)i(the)f(mouse.)26 b(The)17 b(only)h(DOS)f(system)g(calls)h(that)f(the)75 760 y(monitor)c(thread)h(em)o(ulates)g(are)g(those)f(that)g(do)h(output)g(to) f(the)h(console.)20 b(All)15 b(other)f(BIOS)h(and)f(DOS)75 817 y(system)h(cal\ ls)h(are)e(redirected)j(bac)o(k)e(in)o(to)g(the)g(8086)f(co)q(de)h(in)h(the)f (Mac)o(h)g(DOS)g(task's)f(address)h(space.)75 873 y(The)f(old)f(v)o(ersion)h (of)f(the)g(Mac)n(h)h(DOS)g(soft)n(w)n(are)f(em)o(ulated)h(the)f(all)h(of)f (the)h(video)g(BIOS,)g(but)f(recently)75 930 y(w)o(e)i(remo)n(v)o(ed)h(this)f (co)q(de)h(and)f(no)o(w)g(redirect)h(the)f(video)h(BIOS)h(calls)f(bac)o(k)f (into)f(the)h(ROM.)137 1028 y(Curren)o(tly)d(there)f(are)g(three)h(input)g (handling)h(threads,)e(one)h(for)f(the)g(k)o(eyb)q(oard,)h(mouse,)f(and)h(tim\ er)75 1084 y(devices.)26 b(These)17 b(threads)f(are)g(all)i(similar)g(in)f (the)g(fact)f(that)g(they)h(gather)f(input)h(for)f(the)h(executing)75 1141 y (DOS)e(program,)f(but)h(are)g(v)o(ery)g(di\013erent)f(in)i(op)r(eration.)k (This)15 b(di\013erence)i(in)f(op)q(eration)f(stems)g(from)75 1197 y(the)j (fact)f(that)g(DOS)h(programs)e(break)h(do)o(wn)h(in)o(to)f(t)o(w)n(o)h(categ\ ories:)24 b(the)18 b(w)n(ell-b)t(eha)n(v)o(ed)g(DOS)g(pro-)75 1254 y(gram,)e (and)g(the)h(ill-b)t(eha)n(v)o(ed)g(DOS)g(program.)23 b(W)l(ell-b)s(eha)o(v)n (ed)17 b(DOS)g(programs)f(use)g(the)h(BIOS)h(and)75 1310 y(DOS)d(system)g(cal\ l)h(interface)e(to)h(acquire)h(all)f(of)g(their)h(data.)j(Ill-b)s(eha)o(v)o (ed)c(DOS)g(programs)f(supplant)75 1367 y(the)i(input)g(device's)h(driv)o(er) f(with)g(their)g(o)n(wn)g(and)g(redirect)g(the)g(device's)g(hardw)o(are)f(int\ errupts)g(into)75 1423 y(their)i(o)n(wn)f(co)q(de.)23 b(In)17 b(order)f(for)f (the)h(Mac)n(h)h(DOS)f(soft)n(w)n(are)g(to)g(supp)r(ort)f(suc)o(h)h(programs,) f(the)h(input)75 1479 y(handling)j(threads)e(m)n(ust)g(b)r(e)g(able)h(to)e (determine)i(which)f(kind)h(of)f(program)f(is)h(executing)h(and)f(sup-)75 1536 y(ply)i(the)e(correct)h(st)n(yle)h(of)e(input:)26 b(request/supply)19 b(syste\ m)e(call)i(return)f(v)m(alues)h(or)e(in)o(terrupt)h(st)n(yle)75 1592 y(direct) e(i/o)g(pro)q(cedures.)21 b(F)l(or)15 b(detailed)i(examples)f(of)f(these)g (op)r(erations,)f(refer)i(to)e(the)i(Usenix)g(Mac)o(h)75 1649 y(Symp)r(osium) f(pro)q(ceedings.)137 1747 y(In)h(an)f(e\013ort)f(to)h(in)o(tegrate)f(the)i (Mac)n(h)f(DOS)h(and)f(Unix)h(en)o(vironments)e(w)o(e)h(added)h(the)f(abilit) q(y)g(to)75 1803 y(access)i(the)g(Unix)i(File)f(System)f(\(UFS\))f(as)h(a)g (DOS)g(net)o(w)o(ork)f(drive,)h(and)g(the)h(ability)f(to)f(pause)i(the)75 1860 y(Mac)n(h)f(DOS)g(soft)n(w)o(are)f(and)h(return)g(to)f(the)h(paren)o(t)f(unix) i(shell.)26 b(The)17 b(ability)g(to)f(use)h(the)g(UFS)g(as)f(a)75 1916 y(DOS) e(disk)g(driv)o(e)g(enabled)h(us)e(to)g(access)h(AFS)f(and)h(RFS)g(from)e(wit\ hin)j(the)e(DOS)h(en)o(vironment.)19 b(The)75 1973 y(pausing)f(feature)e(allo\ ws)h(the)g(user)g(to)f(create)h(m)n(ultiple)j(Mac)n(h)d(DOS)g(instances)h(and) f(the)g(abilit)q(y)g(to)75 2029 y(switc)o(h)e(b)r(et)o(w)n(een)h(them)f(at)g (random.)137 2127 y(In)21 b(Decem)o(b)r(er)f(of)f(1991,)h(w)o(orking)g(with)h (the)f(OSF)h(team)e(in)i(Grenoble,)h(CMU)e(made)g(c)o(hanges)75 2183 y(to)g (the)g(Mac)n(h)h(DOS)f(soft)n(w)o(are)g(so)g(that)f(it)i(w)o(ould)g(w)n(ork)f (with)h(the)f(OSF/1)g(Single)i(Serv)o(er.)35 b(Most)75 2240 y(of)18 b(the)h (c)o(hanges)g(w)o(ere)g(made)g(to)f(the)h(co)q(de)g(that)g(mapp)q(ed)g(the)g (mac)o(hine's)g(physical)h(memory)e(into)75 2296 y(the)g(Mac)n(h)g(DOS)g(task\ 's)e(virtual)i(address)g(space.)27 b(The)18 b(OSF/1)f(Single)i(Serv)o(er)f (w)n(as)f(mo)q(di\014ed)i(v)o(ery)75 2353 y(slightly)c(so)g(that)g(the)g(k)o (eyb)q(oard)g(and)h(mouse)f(thread)g(could)h(do)f(a)g(blo)r(c)o(king)h(select) g(for)e(input.)21 b(After)75 2409 y(these)f(mo)q(di\014cations)i(w)n(ere)e (made,)h(the)f(Mac)o(h)g(DOS)g(soft)n(w)o(are)g(w)n(as)g(ready)g(to)g(sho)n (w)g(at)g(the)g(OSF)75 2466 y(RI)e(Symp)q(osium)f(this)g(last)g(F)l(ebruary)l (.)25 b(In)17 b(the)g(corridor)f(outside)i(of)e(the)h(presen)o(tation)f(hall,) i(an)f(HP)75 2522 y(V)l(ectra)e(w)o(as)f(set)h(up)h(running)g(this)g(co)q(de) g(on)f(top)g(of)g(the)g(OSF/1)g(Single)i(Serv)o(er.)137 2620 y(Can)12 b(the)h (p)q(erformance)f(of)g(DOS)g(as)g(a)g(Mac)o(h)g(3.0)f(application)j(b)r(eat)e (that)f(of)h(nativ)o(e)h(DOS?)g(During)75 2677 y(the)g(OSF)g(RI)g(Symp)r(osiu\ m)g(last)f(F)l(ebruary)l(,)h(I)g(presented)f(\014gures)h(on)g(the)f(p)r(erfor\ mance)g(of)g(Mac)o(h)h(DOS)964 2804 y(2)p eop %%Page: 3 3 bop 75 42 a fa(v)o(ersus)20 b(nativ)o(e)g(DOS.)g(The)h(curren)o(t)f(implemen) q(tation)f(of)h(the)g(Mac)o(h)g(DOS)g(supp)r(ort)g(is)g(in)h(almost)75 98 y (ev)o(ery)f(asp)q(ect)h(slo)o(w)n(er)g(than)f(nativ)o(e)g(DOS.)g(Although)h (Mac)o(h)f(DOS)h(is)f(slo)o(w)o(er,)h(the)g(magnitude)f(of)75 154 y(this)c (decrease)g(in)g(sp)q(eed)g(is)g(not)f(the)g(same)h(for)e(ev)o(ery)h(DOS)h (program.)j(In)d(fact)f(the)h(di\013erences)g(v)m(ary)75 211 y(widely)n(,)h (dep)q(ending)i(on)d(which)h(strategies)f(a)h(DOS)g(program)e(employs.)24 b (F)l(or)17 b(example,)g(a)g(directory)75 267 y(listing)h(is)g(appro)o(ximatel\ y)f(150%)f(slo)o(w)o(er)h(under)h(Mac)n(h)f(DOS)h(than)f(nativ)o(e)g(DOS,)g (while)h(launching)75 324 y(Windo)o(ws)13 b(3.0)f(is)h(only)h(7%)e(slo)o(w)o (er.)19 b(Our)13 b(analysis)h(of)e(the)h(p)r(erformance)f(data)h(sho)n(ws)g (DOS)g(programs)75 380 y(that)19 b(are)g(optimized)h(to)f(run)h(fast)e(on)h (top)g(of)g(nativ)o(e)h(DOS)f(con)o(tinue)g(to)g(run)h(w)n(ell)h(under)f(Mac) n(h's)75 437 y(em)o(ulated)h(DOS.)f(In)h(con)o(trast,)f(programs)f(whic)o(h)i (run)f(slo)o(wly)h(on)f(nativ)o(e)h(DOS)f(run)h(ev)o(en)f(slo)o(w)o(er)75 493 y(on)c(em)o(ulated)g(DOS.)g(The)g(reason)f(for)g(this)h(is)h(that)e(non-optim\ ized)i(DOS)f(programs)f(use)h(safe)g(DOS)75 550 y(interfaces)c(that)g(cause)h (m)o(ultiple)i(exceptions)e(to)f(b)r(e)h(generated)g(for)f(a)g(single)i(op)q (eration,)f(whereas)g(the)75 606 y(optimized)k(DOS)e(programs)f(only)i(cause) f(a)g(single)i(exception)f(or)f(none)g(at)g(all.)137 704 y(Curren)o(tly)j(the) f(w)o(ork)f(b)r(eing)i(done)g(on)f(the)g(Mac)o(h)g(DOS)h(pro)r(ject)f(centers) g(around)g(p)q(olishing)i(up)75 760 y(the)13 b(v)o(ersion)g(that)f(is)i(dep)r (endent)e(on)h(a)g(Unix)h(Sev)o(er,)f(and)g(preparing)g(the)g(groundw)o(ork)f (for)h(mo)n(ving)h(to)75 817 y(a)g(stand)f(alone)i(Mac)n(h)f(DOS)g(serv)o(er.) 19 b(As)14 b(men)o(tioned)h(ab)q(o)o(v)n(e,)f(w)o(e)g(remo)n(v)o(ed)g(the)g (video)h(BIOS)g(supp)r(ort)75 873 y(from)21 b(the)g(Mac)o(h)g(DOS)h(co)q(de.) 39 b(This)23 b(w)n(as)e(done)h(so)f(that)g(Sup)r(erV)o(GA)g(supp)r(ort)g(coul\ d)h(b)r(e)f(added)75 930 y(without)e(the)g(complexity)g(of)g(writing)h(Sup)r (erV)n(GA)f(sp)r(eci\014c)h(co)q(de)g(for)e(eac)o(h)i(video)g(BIOS)g(routine.) 75 986 y(In)i(MK73,)f(k)o(ernel)h(c)o(hanges)f(w)n(ere)h(made)f(so)f(that)h (the)g(setup)g(and)g(installations)h(pro)q(cedures)g(are)75 1043 y(radically) d(simpler.)29 b(The)19 b(curren)o(t)e(v)o(ersion)h(of)g(the)g(Mac)n(h)g(DOS)g (soft)n(w)o(are)f(is)i(a)n(v)m(ailable)h(license)g(free)75 1099 y(from)14 b (CMU,)h(either)h(via)f(sup)h(or)e(ftp.)964 2804 y(3)p eop %%Trailer end %%EOF