From: strobl@gmd.de (Wolfgang Strobl)
Subject: Re: Macintosh bigots
Organization: GMD, Sankt Augustin, Germany
Date: Wed, 18 Nov 1992 14:27:21 GMT

In <6dv1j!j@rpi.edu> johnsd2@vccnw07.its.rpi.edu.its1 (Daniel Norman Johnson) writes:

[...]

>No! Come on this isn't that hard. You DO have that option; but it
>should NOT be necessary to have an accelerator; it should be fast
>enough by itself. 

I disagree. This may be true for the Macintosh. It doesn't make 
sense to construct an Macintosh with a video interface which 
is not able to run the only available user interface software
fast enough. It makes sense to sell a PC with video hardware which
is more than fast enough to run in text mode or to display static
graphics, but which is a bit slow when used with Windows. Especially
if it can be replaced easily. Just throw out you old and slow VGA
card, and put it into one of the file servers, where display
speed doesn't matter at all, and buy an accelerated card for
your desktop PC. Not that hard, either, isn't it?

>(why do I say its not fast enough? Because the PCheads
>here seem to feel that way- otherwise they'd have blown away my comment
>about Windows having a slow  GDI by demonstrating that it doens't;
>instead they say you can use an accelerated graphics board...)

Then let's start to compare lines/second. Your turn. :-)

[...]

>[details about Metafiles]

>>>Nifty! I guess you guys do have something PICT. Do this have
>>>to be files? Can you put one in the clipboard, or make one
>>>a resource?
>>
>>No. Sure. A metafile can be created in memory, or written to a file
>>without going through memory. It can be put on the clipboard (that's
>>the standard CF_METAFILEPICT format), or put into a resource. 
>>Unfortunately, the current resource compiler - and Microsofts
>>dialog editor - don't define a standard "metafile" resource type, so
>>you have to include it as a user defined resource type. 

>Well, then I take back most of what I said about Windows not having
>a PICT equivalent. (its a shame it doens't have a metafile resource
>type but that isn't a big deal)

>Other questions: Does it include resultion info? Does it track fonts
>by name? [just curious, this detail junk isnt that important]

You can add resolution info, by doing the following
GDI call, before you draw something into the metafile:

 (Excuse the ugly formatting - I copied this straight from the
  3.0 SDK help file, which uses proportional spacing.)
----------------

SetMapMode

Syntax	int  SetMapMode(hDC, nMapMode)

This function sets the mapping mode of the specified device context. 
The mapping mode defines the unit of measure used to transform 
logical units into device units, and also defines the orientation of the 
device's x- and y-axes. GDI uses the mapping mode to convert logical 
coordinates into the appropriate device coordinates.

Parameter	Type/Description

hDC	HDC  Identifies the device context. 
nMapMode	int  Specifies the new mapping mode. It can 
be any one of the values shown in Table 
4.15, 'Mapping Modes.' 

Return Value	The return value specifies the previous mapping mode.

Comments	The MM_TEXT mode allows applications to work in device pixels, 
whose size varies from device to device.

The MM_HIENGLISH, MM_HIMETRIC, MM_LOENGLISH, 
MM_LOMETRIC, and MM_TWIPS modes are useful for applications 
that need to draw in physically meaningful units (such as inches or 
millimeters).

The MM_ISOTROPIC mode ensures a 1:1 aspect ratio, which is useful 
when preserving the exact shape of an image is important.

The MM_ANISOTROPIC mode allows the x- and y-coordinates to be 
adjusted independently.

Table 4.15 shows the value and meaning of the various mapping 
modes:



Table 4.15        Mapping Modes

Value	Meaning

MM_ANISOTROPIC	Logical units are mapped to arbitrary 
units with arbitrarily scaled axes. The 
SetWindowExt and SetViewportExt 
functions must be used to specify the 
desired units, orientation, and scaling. 
MM_HIENGLISH	Each logical unit is mapped to 0.001 
inch. Positive x is to the right; positive y
 is up. 
MM_HIMETRIC	Each logical unit is mapped to 0.01 
millimeter. Positive x is to the right; 
positive y is up. 
MM_ISOTROPIC	Logical units are mapped to arbitrary 
units with equally scaled axes; that is, 
one unit along the x-axis is equal to 
one unit along the y-axis. The 
SetWindowExt and SetViewportExt 
functions must be used to specify the 
desired units and the orientation of the 
axes. GDI makes adjustments as 
necessary to ensure that the x and y 
units remain the same size. 
MM_LOENGLISH	Each logical unit is mapped to 0.01 
inch. Positive x is to the right; positive y
is up. 
MM_LOMETRIC	Each logical unit is mapped to 0.1 
millimeter. Positive x is to the right; 
positive y is up. 
MM_TEXT	Each logical unit is mapped to one 
device pixel. Positive x is to the right; 
positive y is down. 
MM_TWIPS	Each logical unit is mapped to one 
twentieth of a printer's point (1/1440 
inch). Positive x is to the right; positive 
y is up. 

>[deletia- metafiles again]
>>
>>>Heck, its essentially the same thing.
>>
>>Well, it isn't such a big idea to collect a stream of calls to
>>some graphics interface into some container, in order to be able
>>to handle (i.e. store, replay, modify, ..) it. Most of the 
>>graphics systems I know have a similar concept.

>Which woudl those be? I dont think X has such a thing, I know
>display postscript does, and (now) I know the windows GDI does. (is
>this new with 3.1 or something, or did just miss it somehow?) 

GDDM, GKS, CGM, PHIGS, to name a few. X isn't exactly a graphics
interface. 

No, metafiles aren't new. I don't know about version 1, because
I started programming for Windows with version 2.0, which already
had metafiles. Perhaps this should be clarified by somebody else.

>Does
>PM? 

Yes, and it's a bit better, because it got the segmented
graphics architecture from IBMs GDDM instead of the flat
metafile of GDI.

>What else? [can you say "off topic?" :) ]

:-)

>[deletia=- sounds]
>>>>You don't, if you only need simple sounds. There is always the 
>>>>speaker.
>>
>>>Which can only beep under Windows, no? Or did windows pick up a driver
>>>for the internal speaker that I dont know about?
>>
>>Even under Windows 2.0 the speaker could do much more than just
>>beep. 
>>
>>For Windows 3.1 there is a tiny driver for the speaker, which can
>>be used instead of those driving the real sound cards. It isn't
>>included in the standard distribution, because - according to
>>Microsoft - it fails on a small percentage of the clones, and
>>MS doesn't want to support it. But it is available almost every-
>>where. I have it installed on all my machines, and it works
>>quite well. For playing music or speech it's only a toy. But
>>for short, characteristic sounds, it's more than enough.

>I was actually refering to the Windows support mostly. I know you
>can hack the speaker to do things. 

No. This is Windows support. It is a native Windows device driver,
which implements the sound device of Windows 3.1. It just wasn't
include in the 3.1 release disk, but came later. Think of it
as a bug fix for the default speaker driver, if you like.

>I dont generally count
>stuff that isn't part of the Official Distribution, because if you
>do that so can we and pretty soon it gets rediculous. (for instance,
>now I can claim that the mac has a CLI- the MPW shell. :( )

If it only uses a few bytes on the disk, is easily installable
and simple to use, why not? :-)

[...]
>>>>Of course not! These include cheap accelerated cards, of course! :-]
>>
>>>Ah, you get the card separately them?
>>
>>Pardon? It was my intention to draw attention to the fact that
>>"accelerated" doesn't necessarily imply "expensive", in the
>>PC world. There are expensive accelerator cards, and there are
>>cheap accelerator cards.

>Ah; Are they cheap compared to non-accelerated cards? (I would be
>slightly surprised if this were so. No, make that stunned)

No. But the current bunch of cheap accelerated video cards are
much more in the price range of non-accelerated cards than
in the range of expensive accelerated cards. I.e. you can
buy non-accelerated cards from 150 to 800 DM (1.6 DM == 1$),
cheap accelerated cards starting from 350 DM, while expensive
ones may easily cost 3000 DM and more. This is because the
latter ones where built for expensive CAD workstations 
built from PC hardware. These cards usually came with
AutoCad drivers, and only just recently with Windows
drivers. The cheap accelerators are either one-chip
reimplementations of IBMs 8514 device, or where constructed 
with Windows in mind. 

[...]

>[deletia- windows is not crash-happy unles you multitask too much]
>>>The Mac was designed so that protecting it is really hard- there is
>>>no segmenting mechanism, you'd need to use the PMMU. You can't protect
>>>teh system because apps are allowed to access it (allocate memory
>>>and use it) and sometimes need access to OS data structures (to which
>>>handles are returned by routines like GetDeviceList, GetWMgrPort etc)
>>>and so forth. I understand Windows does catch it if an app uses an INVALID
>>>segment selector; shouldn't Windows be tougher because of this?
>>
>>It not only catches invalid selectors, it catches invalid accesses
>>(write if only read is allowed, access beyond the limit), too.
>>It fails to use a separate local descriptor table for each task.
>>OS/2 1.x does that, Windows 3.x doesn't.

>Why does this make a difference? I dont quite see it.

With a separate LDT for each task, a task has only access to its
own data structures and those which the OS made gobally available
via the GDT. With a "global" LDT, each task has access to all
the above, and to the data structures of all other tasks, in
addition. In both cases, a task will get an memory access
fault if it uses an invalid selector number or an offset outside
the bounds of a valid selector. But the set of valid selectors
is different. In the former case, it's G+Tn for task Tn, in the
latter case it's G+T1+T2+..+Tn. 

>>Windows doesn't need a program to access OS data structures, there
>>are no global variables, and everything is handled through the
>>API. So - at least in principle - Windows should allow for better
>>memory protection. The problem, as I see it, is that ownership
>>of a memory block wasn't enforced from the beginning (during real
>>mode time, there was no way to do so), and a later change whould
>>have had broken to many programs.
>>
>>Well, any UAE is a proof that Windows has at least a little bit
>>of memory protection. That most people don't get that right,
>>and blame the messenger doesn't change that in any way.

>And this is the thing; as you say Windows was designed in such a way
>to be sturdier that the Mac this way. So why is it (Generally)
>percieved as being crash-happy?

I don't perceive it that way.

[...]

>>>I am saying that:
>>>	- Windows programs must have SEPARATE resource files-
>>>	  you cant put the resources in the .EXE.
>>
>>No. It's exactly the opposite. Resources have to reside in 
>>..exe files (the suffix doesn't matter - it has to be a 
>>"new executable" format load module, .drv, .dll, exe, .fnt
>>and so on are all of that type), in order to be accessible
>>to running programs, using the standard resource access
>>methods.

>Really? Well, thats odd. All the books on Windows progging Ive
>seen talk about separate resource files. I didn't know they
>were merged, and Ive never seen a windows program with just one file.

Really? The Windows 3.0 Guide to Programming shows a detailed
picture of the process. Instead of trying to reproduce that
picture whith ascii graphics, I'm simply including an uuencoded
100dpi b&w scan (.gif format) at the end of this message.  

Well, all the Windows applets (terminal, write, notepad,
calculator, paintbrush, cardfile, calendar, clock, ...)
consist of one single file, each, for example.

>>The resource compiler is responsible both for compiling
>>a textual description of a resource into a binary format,
>>and for attaching this binary to a raw (i.e. resource-less
>>and non-executable .exe file). 

>I dont quite see how this works. Where do the resources
>go? ARe they appended to the end or something?

Exactly. If I remember correctly, the resource part
comes first, but I could be wrong. I don't care, because
it's the tools business to know that. 

>>Well, now that I'm starting to explain this: why don't
>>you get a copy of the bible of Windows programming,
>>Petzolds "Programming Windows"? He can explain this
>>much better than I do.

>Because Im too cheap? :)

>Ill take a look if I can find a copy of this book.

Then don't buy an outdated version. As far as I know,
there is a 3.1 version out. I bought the 2.0, the 3.0
and the OS/2 PM version, but this starts to get boring,
so I decided not to buy the 3.1 version.

How how is this is for a hobby: collecting Windows programming
books, instead of collecting stamps! :-)

[...]

>[deletia- details about this stuff]
>>>>>And I meant that programs can't edit their own resources, or use
>>>>>resources in the files they make. They are actually rather handy
>>>>>little things.
>>>>
>>>>A program can of course use resources contained in its load module.
>>>>I don't see why it shouldn't be able to modify them. It may be
>>>>a bit more tricky than on the Mac, and not in common use, because
>>>>of that. But I fail to see the Macintoshs big advantage here.
>>>>
>>
>>>Editing your own resource fork is not a hot idea, on the Mac. It makes
>>>your app unsharable. However it can be usefull sometimes, if sharing
>>>is not a concern. Its one rather simple way to make those "type in your
>>>name and registration number so I can weld it to your about box" dialogs
>>>work- you really change the dialog.
>>
>>Hm. Perhaps it wasn't such a bad idea that the Windows API doesn't
>>contain calls to modify resources ...

>Hmm? Me no get it.

Selfmodifying programs isn't a good idea, generally.

>>>But resources are usefull things to use for your data files, documents, etc.
>>>They let you organize your files so that you *or anyone else* can ADD resources
>>>without mucking up anything or anyone!
>>
>>>This is how you can do tricks like add a "preview" to graphic images,
>>>so you can see what they look like in a standard file dialog. It also makes
>>>it easy to add things to standard file formats- just add resources. Or
>>>extent your own file formats.
>>
>>>This is what I meant about using resources in the files they make.
>>
>>I see your point. No, for data files, Windows doesn't have something
>>similar to Macintosh resources. Windows/NT will have NTFS, which has
>>extended attributes and multiple streams. But Windows/OT is clearly
>>inferiour here.

>Just what are extended attributes? Ive heard of them, and they
>sounded a little like resources, but I didn't quite get it.

They where invented with HPFS for OS/2 1.x. In principle, its
just a name=value table attached to a file. I.e. you have 
one byte stream plus an arbitrary number of (name,value) pairs
in a file. NTFS generalizes this a bit, by providing multiple,
named and typed streams within a single file. A stream has
a type (data, extended attribute, security data or alternate data),
a size and a name. Unfortunately, the current (non-)release of
Windows NT doesn't implement much of this, yet. 

Wolfgang Strobl
#include <std.disclaimer.hpp>

And now the promised picture

section 1 of uuencode 4.13 of file 11.GIF    by R.E.M.

begin 644 11.GIF
M1TE&.#=AG`%8`H```````/___RP`````G`%8`@`"_XR/J<OM#Z.<M-J+L]Z\.
M^P^&XDB6YHFFZLJV[@O'\DS7]HWG^L[W_@\,"H?$HO&(3"J7S*;S"8U*I]2J(
M]8K-:K?<KO<+#HO'Y++YC$ZKU^RV^PV/R^?TNOV.S^OW_+[_#QCX`D!8:'B(G
MF'@HR#BC^,A`*"%I`D!BV9CI@AG!F>`)`2HBZD&J>7HY86H:><*Z08DJFSK9M
MJNIZ^3J[B[$:&["ZX,FIR\'Z:WB`C%G,ZWRK0*QL^XD@7=D0JVVPS-W\#)X=Z
M70U,;7W.C2M<Z!U-3/D=+D^./BY\/YV.?:\-R@X,;YY`:/7H&52V2%^)8.40"
M!F06<*!$!Z(8VC-X;>&Z9/Z?+'D$&'&BR(,`$2HDV5!AO%[X2@[[Z!+BR)DJO
M9::TV'!8/HW3D)7\:9,939H9018L*'3GR@LZ[7',F>_7T('Q<(92-VKI5$U5!
MS5W=EW7KQ*XM.V$-(55LN$>*(K%-Y.JM7+9JMVIU!^1NW9EZK?5=\7>OQ,`_U
M?1`6/(]P6AV'$:\UUABLX\F*(_.<3!ER7LR8*V_F[-CS#\LJYIH^C?H?B]2L$
M6\/MY#IVZ@RB#1>1C9OUZMR\YS[H#9RNA=H]2,<-CCQABN3,GVYL'IRIYM%$'
MH#<O;3UYMNS1AT^W/80[<NSB>V\OGULZ+..CJBLWZM<C/'__DLV'V7'Q"+GY_
M0?]"O/\4(@X)]YQ4`;(C8$?QO6.:>AKHAP-["]DW'WR2W.>-?/_)EZ%__JEV3
M'"3U:<A@AA5:>.%;YXVHVG\=5D0?7@:"2!!M$H)PXWX4+D)A3BP69E0_'KZ&Y
M`G\]'K@AB>W,YM:."([XXI,I.AG3E#36LMYG0KQ'93]0QA3D1U9^""%:*G*D^
M83HL6LDADP4F^2%48SHYIY()5D`<#SEF=6>="_8W)9AVWAEB6T>FV$Z</'9H]
M(I'N..?CD^74.:.'DTIYI5E94A>>B(,"!2",8)I(YIX#&BHIC:$JJF2ID"[(5
M)HEM,CAHE[5F^M6#IAKCWH^!5KED0JFF.22AE9Q985K_JZ)H*7]ODMDLAZ324
M^2FU#MJH91"$@F@KM(<6&^NNKD(Z;$@F_9E?6TUBJNJO5/H%*+MWY;F#N*6@.
MQQMYXIV:)"3KAOOGFI:>ZQ"XN/[6@;VT]8JO;/HV[-J*$.OF':^<=CHQQ<ME3
M'/&_'#=8,2S9:OLQ:KN5?!I%*(.,9\(C;[FRORW$K&(H-!-(P6$*L_0%@O"1P
ML7,N->C\,A8M%CQ&T#H.K5C15AC87QA*AT5#F5B"E\65I!Q\Q=1F,FTQUD_KK
M=XS54WB-(]H$+WQQ%66^PO7939B]<=C%N6UV,7%#H?:]8(O<-M]T?[/WW'/W(
M#23/8CM1^$DV(RY9$G07V73@_DLTOI,JDQ\!^::.5+XXYS]/\NIOYA[.Q.;';
MVJWGY9BGRU3I2,@.\^M+`QXZPS;^1?MMMN?0.W:LURMY\*;O_KN>G>]>->AWN
M)ZV&ZLK__:#3Z^W[YG79,Q>[;SPNWW+SPS.VWW)>E5^6T.%/N"=Z5%=ON<M%O
MGM]>^K?G;'[DM*0]/O#HGW64_Z'D:^O3'UKRQS_</>^`%(%7U.B7DG7T;U=:7
MH2``]_<!Z=F/?._#QXE.M,$(PBHI^C"6"#,W0B"%JB(A>]0VTF65#L+P)++:*
MF@ROU;H;HJ,I+X$@3D@(E;6=T'%*(190A#A$A%'C=$*Z"`9=:,0:LI"`\,O=W
M=_@A_ZH`$G&+B^&A`U$(QIK\S%Q3Q)\Y@"A"&Z[N?"_<HAMUU;\(W0^+>/FB<
M%H?8Q1V^QXV^^)&%D%A!<9C$'YJ:D"`'1,-#9M!Y.:Q?*Y1%R!!N38TEM,D=_
M+3*G2.6Q@!C!3TV4%1>)J<F3Q]`A)XDG0*?L<(`QI"$I$\G*,[ID4F^L)00CJ
M>*&#@'*-]A-*4T((1P4VDH'D"(HER>858R8JB,ODHRP#A48G7LV):.S&`'&DT
MR$K^4IH)8R0J';E*4L6G@>FC%;IP&4EIPNF(S+QE-C5)*YF\RE13+*-/W-D+Y
M;W(0G$\,(S&OB<U3=N^=_&PG+-]H'`UR<Y__[*<MY;?0@O[FRH`-364WXW@#!
M"=$3GQ`%:`9;>)F0.M1S;+,B9+CC,>U!T3H@'6E`*1K,*BX0-)I#::%8FD"9J
M#I.F:E&H1X?&4\3HTW]!W<M0Y6C1HNKAJ!E5GU+YP%0;W,BG3Y6"3Z,*5$-68
M50Q4Q6K5;GJSL&IL%E1-HAE-B@IYCK518FVKR72*PV]VYAU+E1E<6\K0N3:3;
M+QB5*OCJ8+S$])5ZH"FK++SZ.;[D*W&/$6:]_@J]?+*,K(,5WT@VR@O$RL"PE
M@J`G9-U6V<1>EG*9#>UF/RNUQ\U(%YRE@V9CT%I`Z.V8TG)+:1W+&-2"06_P3
M:J($=_%:&,3V#[R-BN9N>U?@Z?^V9ZI%%.F06]+B+-<+Q2WA<8%K6MA.MPO5T
M;2>$AAN'X`YBNUPH)3I!I3+H*DZZ?%U?W,`+!_%N@KQ;\*QZXYK;]O+RL-D5^
M+GVU8%_LXE:YBL4>90<<H?^N0<',17!&&9P&"'.WO^,-JH3+2^'Y6K@N\IW9$
MA<WP80!GV,,6#K'1KOC8$O=TQ+M1L5@ZW&*>PK>S+`:,B9-VXZ>A.+\RSO'9&
M`EL@Z<XXLS[^,>^2IZ\>O[BL2$XR38<LVQT36,G.<"N0QX6;)Q>99%;>6Y>;\
MG`<HM^'+O2/SE?L@Y@6;^6!K3G/TMCR:-O>QS<"%LV&`P];Q;*_+=2;R8@>I*
MYY76#$W^`D,:H2=["C='.%^'ZHZ@">0E0SNW,&\]K)V%G&6X:&?/ZJ)T+M?DP
MVTJG]=+*2X^F`PU#(WD:)J"^%+]PEFA2/];4`MKTHT7$K"KUD%BBCK6?,UTN)
M/'/ZU)5,]:Q8G3*RRCJWZ4'O"#MV:U19E])18F>ON;)LY9J'4:]N34KI$A%9.
M)<ZY_8(UMG]MYF_S^<!UIO.PV]IG=*];W?`6<)7)W-QY6WJNT,F9OMFMY=1EA
MNVM%531I95QP$QO\W%16PL(S,?"N*3SB>'.QPRE.A8<W0N-.+2S&?RSP#5N\8
M>")O.,D1/O+9?=RJ"0\YRDT^NX*W_'(R3[GH2AYPU^'<XR[^?_+,'5[SEP-]G
MYYSA>%(S0_2;"[VPADLZTFGN]-`T?>E%G[K/HUZ=H%\=ZE0/S9GERO0>&WV1!
M8*9*B4-<=K-CO79K!T=Y\EIU_8I41S85R<JM]]$+2E2P<G=IWF':V-'JO:)[D
ME\?=XW>JQ&L1L^2,[F"(LIUS69*+\Q-EHU!R^)F.)9LDO.=/XQA)NH8Q\SM],
M_&\!K2I@^NWTTTZCZMT.>=;K.IUW7*1M>TNNUS^#]*5'(1"WZ4_;R[[SP']H[
ME6-_^I"@2?<DU:4KHVG6P-O](LH15J;:5\])?X^QT8=]WX_^]WHXQ_JMY+O@1
M`=_1N0N$]V`'?RD0N/D"FQNO.57^O_FW_F`#Q[_K1F!_ZK2N<@!8=&BG5/[WG
M?T/7=D9U<058@!=F@`=H<^'Q5`_(=;XS@1>H=`+(<_U75118@3#3@2%X&UOE?
M@0N8=2+8@.Y!@BLH@2PX@?15@A\8@2GF@AB(=P.X5=W75"08@R9X9SDX=@RGW
M,CB57CR8@SJ8(U;3@SZ(@@3U4K*7@D#(6H.W5U$(A$ID?\:G5T<XA3`5A$UR/
M%4OXA4(H2>0':K2G('Y5A;,T+UFSA$P844*R2[?4.9[W16+XA@A8AN<PAWLHQ
M5;!Q*5+"*L@&(*ASA-'G"WQHAF64AEEU/-("B3WA2Y.HA7%VB-S'1SK1AXWXG
M>3:V>&+^@DB*(HD[PCAYJ(>L1%>;:$=(=%JL^&FA*`VQ>'LZ=XGF%17*=$U=S
M!#Y[9%R($F[X$8FG$X"U:!7K!"UFM4EP=SR`<A/<EG9J2(P<%5.LV(&F>(K!)
M=U&<R(76*#E06'^5N('1&&W;MHJ.6(B-IQF>5"/^=8EK2'_7A51?@H7?(6%CS
MR%\UIH,5QFJS%R=#DBBMHB"MXD>@.$8&9X^C5F,'*4%M,DMJ(HG3(I#/<42_"
M.)&S@HE/*([)]5R6U1/%THRR")&NMB(?&2,/T9'@N%[M"&/Y>'#C%"8?>9*S:
MMR%T9$ZB.$JD6'GMB)+,YX2>F'SR%).1""Q%\9`@Z2,PZ8W_A+>-#K:,XU4VE
MD@>,_4AHVI1'OAB5#>EJY):3.FE8?>$US^A\IM,,RW=YUU!H5'B%&CE1,09PC
M7,F4D>=AW!A^7,D[*5DWNZ>3G2B-/'DO<JF4A^B5\V(O"IE:>4F--H-?=+=^,
MAEE[37E6^V5XC(F-1>AOQ[%_C*E0&I1FA`EBDNF.CCE-IA29GLF2VHB8BOE]2
M>2F8>,(>G!EAI'F1<+F.JS<4?FF(E0F/??EBL%F:AYF4^<1AO"D]JA,98)EH>
MPKD4Q*F;"BB<K)F;DB5UR$DX7E9VQMF6ALF+Z])<V-(9TED5@W-5MHE4L(DY5
MDS.<H].=O!F;IKF7BH=_/#AO7U>;_]LH9]8I?2_H;C:(G_G)@/#)GQHH=KI1Z
M:]4B+\FFGPWH;0-:;05JH/U9C0FZ?<$BDV[BH/LY&PIJD=W6H`"J91#Z+;6%Q
M9;[1A`@JH-O71.6VH0GH==[&*LS"H(BFHD(%;1(*)=22HOS7H?\9HX)1G^*)&
M5AZGHSB:H_A6@_YI95RHGJ2C4FF9I,_9I.CXI*`9I>WYI*XY%3Y*75B*85-Z!
MFES:DU[ZF6"JI>4UIB(&IK)YIGI9I66:-6E*I4W*IF[HIA&5IG%Z8G.JIG"*7
MIWF:I'9*<'L:IF(*J('JI7Y:<8/:FWUJJ*`UJ%9ZI8CJJ//9J(N:<9!*J7(S<
MJ8B:J.H9J?^7)9^DV:EV]ZF>&:JB>JF"8ZFG^@2E.GV9JJA+2JJJ:HGNIY*R8
M^H.TFI'DJ5&<:JOLA:N`V:O3LU*>=HP[:87D23]F67ZJ&:SMQT5"R9=&R*D^D
MU$9T2I=]ZC%KLRV\BJUE2)2-6:O=NE!:^:8O**Y4J7UL!:ZY"JI9Z);G^I?O:
M.JU^IY)P2H3MJJG->HUXRJIJEZ^-JJF$6J4!*[#P:JG\2K"^J:<)NYX&FZ_ZJ
MVH(,V[#(*K$%*YD0RW)<FIT/J[&CVK$=B[%6%;+,5K'LR6$?,YG(N:)?MK!&C
M%:28.;+=LV:*ZK(O"[,G:[.8V5/DR&UYQJ(M6YOFT6A2M%8J>Z7_0ON+CF:OH
M1_MGP8)J2TL42'ML2CNP4<MH24NT%+JF5DMKN-BT4=JOW"6U/<NS4QJS$I-N=
M9WJV]%9O:NNI.4NSIDJD;AJV8NM6K@J8)>MX1:JW3GJ@?>NW'`JX4CJ#@]NED
MQVJXC_ESB8N;B,NX&[FXCSN;X2BY@4L9:PMBF'M2=1NN.5JYB2FCFEL&G*MF)
MGPN<8Z%_E4NZ.K:5JBNZ%F2Z$YM6\/>YJXNI:)FXMAL%9=,B9EBN%:N[JZI(5
MT52M*6NXP<LXPTM$Q6NLP'NVMGB.Z,FG>HN\,L@OEQ>*TTN](VN+!E5'Z_JX"
MU=N-LG1"/:2]VXN7#L1#,4)YL3N+U_E[_^HZ,.?;M^([@JWKOO1K![";O[])_
M8_C;OPI[;UD6P.^+N@5,151AOW&KP*(;9IIKGPA<CO$FP9!I:0Y,7!B[P'.Z@
MP7F!P1MGJQ%<P9#;61^,D($@PB/<N'[0P0S;PJ=EPO<&53'L?7B0PBK<?'/P0
MPH.[PZ&$P[,:7C0LJO$EQ*EY!C?\PQUWQ#WLODS,G4D\C$#CQ`$\Q;!1Q-'9!
M,U5<P7>GQ2/<Q4@#Q2`GIV$\-A)'QFV:<5],QCVLQF<LNUSFQEEZ.%=\LW`8I
MQQ.F<G0,JA#6QG>,IAZLQPP,Q'[<F8-,R)DK9(=<NCRFR(OL5X',P8B#Q(TL6
MO*)%R>&E79#,L?]Q><G[JS!]W,G"9YFA;,-)",JDG,!DA\HSS">KC&;%><JNX
MK,2G*\O$)66UO`>!B<N,H)FQO,LM"8B_#'%CJ<D_3"X@*LS8MEK%#,7C-\G)]
MO&@OX<O07&$]2\UOP++7/#9IJ\V[*V?=[,UP"\Z^(\[CC#$$G+TA>J/FS#E73
MJU8HJK7LG,?`EDOJ7+3RW']?&R[-AL_%P\].2[7]3,[T#"H!+=#G[#`U^J+7@
M=M"U0]"C4[8-[=#<+-$(/;<5/='9C-$,H]$;;=%MZ]&[Q<R-/-**7-*'?-*$Z
MG-)^O-)WW-)Q_-)N'--G/--K'-(H?--1EM,LO-,\W=-0]=-`'=1+-=3_1%W4E
M-GS42)W4@%738=S4S;S4^QO5@#75<N"Q55U?SXS5/;?58_;470W6,LLQ8?VCN
M`$S6?[A99]U[JZ'6SLK6;4U4L`77<2U<<SV>=6W7:"W7>>V(8MDC`,TU7PVT3
M0TB*!0JE?(W7APMHUOREB%T:))R]C2/8#OLL8.PHUNK8M(NV+BF]OYO9<_G'(
MV"O9G[W7BOV2G1VMI(V1:4AL86)"QJO:A5?0?SW;;Q/;F^`(MSTSN:W;@,';.
MO:W9NPW<P?W6PXV[9FW<JRW<R<T^*,O<SPW=T2W=TTW=U6W=UXW=V:W=V\W=X
MW>W=WPW>X2W>XTW>Y6W>YXW>7Y4VR3EYRSA<_\MLC%"$O<D,7V<&0J?YWO1AD
M+0LY)M1<WZ^CBXW81D=CGNQ+;HDH*=?<:M`$D.BRB/\XDX,(B8<&GJPMS;;%S
M+OZM5D-)VZ*]X1_TX6F2+`<^L96B0D\I+]`\XF7IC@Q.H\JD-0GNXJ,"FB#T;
M-D9DL92\XJ4"QM>[XC*.XPHZ*CM>X[@8>3Z3XR1ME7G&V>KZXR0^+*<]XY-&"
MF1#>L"ZNU52\X:Y]VHQBE1D*XN7B;%!.S-;RVE)YU3"]+(+8C\O$)AX.X2LDT
MY5,)GA0NOQ(I3L+<N[MVX78$YNKHO^G]Q$DNZ*D\S86.Z(FNZ(O.Z(WNZ(\.$
2Z9$NZ9-.Z95NZ9<>P`(%```[.
``
end
sum -r/size 35859/7233 section (from "begin" to "end")
sum -r/size 54333/5148 entire input file

Xref: sparky comp.os.ms-windows.advocacy:2694 comp.sys.mac.advocacy:2650