home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-02-13 | 286.9 KB | 7,602 lines |
- 2-Jul-86 05:41:21-MDT,976;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Wed 2 Jul 86 05:41:15-MDT
- Received: from wiscvm.arpa by AMSAA.ARPA id a001719; 2 Jul 86 7:04 EDT
- Received: from (NEUTAGE)NEUVM1.BITNET by WISCVM.ARPA on 07/02/86 at
- 06:06:03 CDT
- Date: Wed, 02 Jul 86 13:04:11 cet
- To: INFO-CPM@AMSAA.ARPA
- From: NEUTAGE%NEUVM1.BITNET@WISCVM.ARPA
- Subject:
-
- HI FOLKS.
- Where do I find Mr. Nice Guy ?
- I've seen the "advertice" of some of the PD software one can get
- on the ARPA (DDN) side of the world.
- I'm not able to log on the ARPANET direct, and because there is no
- FTP between ARPANET and BITNET (it's a mail-only gateway) I can't get it
- that way either.
-
- My question is: Is there a friendly user who wants to help little old me
- by sending some of the programs ? If sofileen please let me know.
-
-
- Kind regards from Copenhagen. TAGE
-
- Userid NEUTAGE
- node.id NEUVM1.BITNET
-
-
-
-
-
-
-
-
-
-
- 2-Jul-86 08:31:52-MDT,2236;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Wed 2 Jul 86 08:31:14-MDT
- Received: from csnet-relay.arpa by AMSAA.ARPA id a022306; 23 Jun 86 11:25 EDT
- Received: from gmr.com by csnet-relay.csnet id aa17892; 23 Jun 86 11:21 EDT
- Date: Mon, 23 Jun 86 09:32 EST
- From: RLH <HAAR%RCSMPA%gmr.com@CSNET-RELAY.ARPA>
- To: info-cpm-request@AMSAA.ARPA
- Subject: RE: HD64180 info req.
- Resent-Date: Wed, 2 Jul 86 9:29:30 EDT
- Resent-From: cpmlist@AMSAA.ARPA
- Resent-To: info-cpm@CSNET-RELAY.ARPA
-
-
- Ken Brookner requested info on HD64180 systems. I know of two types:
-
- Steve Ciarcia (of BYTE fame) thru the Circuit Cellar offers a single
- board computer with HD64180, 256K RAM, floppy controller, etc. for $369,
- with Z-System software for $499. There are a couple of add-on boards with
- modem/voice communications and SCSI interface available.
-
- There are a couple of companies offering S-100 bus boards with similar
- capabilities as well as access to other S-100 boards for additional
- hardware capabilities.
-
- As far as software, you could also run CP/M since the HD64180 executes
- Z80 machine code directly. The HD64180 would be a natural for CP/M 3.0
- since it's extended addressing fits CP/M's idea of banked memory quite
- well. For those with a little more adventurous spirits, I would
- recommend using the Z-system instead. It consists of ZCPR, a replacement
- for CP/M's CCP that can be used with a slightly modified CP/M BIOS, and
- ZRDOS, a complete replacement for the CP/M BDOS/BIOS. Z-system currently
- offers a number of nice features over CP/M. There are some new versions
- coming out that support banked memory and multi-tasking on the HD64180.
- (If anyone from Echelon is listening, would comment on availablity dates?)
- One of the big advantages of the Z-system is the large and continually
- growing collection of utility programs that take advantage of it's special
- features. And, as you might have gathered, it is alive and well with
- committed support, unlike CP/M's death under Digital Research.
-
-
- Bob Haar
-
- [usual disclaimer == these opinions are purely my own personal ones, not
- that of my employer, my wife and kids, or the guinea pig.]
- 2-Jul-86 12:32:54-MDT,994;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Wed 2 Jul 86 12:32:46-MDT
- Received: from brl-aos.arpa by AMSAA.ARPA id ab00280; 2 Jul 86 13:43 EDT
- Received: from hi-multics.arpa by AOS.BRL.ARPA id a010435; 2 Jul 86 13:34 EDT
- Acknowledge-To: Dearden@HI-MULTICS.ARPA
- Date: Wed, 2 Jul 86 09:47 CDT
- From: Dearden@HI-MULTICS.ARPA
- Subject: Re: uuen/de code and software exchange
- To: info-cpm@BRL.ARPA
- Message-ID: <860702144750.866991@HI-MULTICS.ARPA>
-
- I'm not in favor of binary only public domain software. There are too
- many brain-damaged idiots out there that think a good joke is to write a
- program to trash the system, call it something else, and release it to
- the public domain with a name that sounds like it does something great.
- I like to see what I'm getting, and I trust no one.
-
- Besides, if you don't have the source, you can't play with the operation
- of the code if you are so inclined.
-
- John Dearden -at Hi-Multics
- 2-Jul-86 21:29:23-MDT,896;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Wed 2 Jul 86 21:29:17-MDT
- Received: from brl-smoke.arpa by AMSAA.ARPA id a008451; 2 Jul 86 22:23 EDT
- Received: from USENET by SMOKE.BRL.ARPA id a009107; 2 Jul 86 22:10 EDT
- From: "Nicholas B. Mason" <mason%noscvax.uucp@BRL.ARPA>
- Newsgroups: net.micro.cpm
- Subject: Spread sheet for cpm wanted
- Message-ID: <550@noscvax.UUCP>
- Date: 2 Jul 86 20:28:24 GMT
- Keywords: spreadsheet, cpm, Eagle pc
- To: info-cpm@AMSAA.ARPA
-
-
-
-
-
-
- I have a friend who is looking for a GOOD, inexpensive
- spread sheet program for an eagle PC running CPM.
-
- Does any one have suggestions?
-
- Thanks in advance:
-
-
-
- Nick Mason
- NOSC San Diego , CA
- mason@nosc
-
- ihnp4 \
- akgua \
- decvax ------------------!sdcsvax!noscvax!mason
- dcdwest /
- ucbvax /
- 2-Jul-86 22:39:28-MDT,1183;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Wed 2 Jul 86 22:39:13-MDT
- Received: from brl-aos.arpa by AMSAA.ARPA id a008644; 2 Jul 86 23:55 EDT
- Received: from hi-multics.arpa by AOS.BRL.ARPA id a024463; 2 Jul 86 23:56 EDT
- Acknowledge-To: Wilkinson@HI-MULTICS.ARPA
- Date: Wed, 2 Jul 86 22:29 CDT
- From: Wilkinson@HI-MULTICS.ARPA
- Subject: Cromenco Z-2 Computer
- To: "{forum >udd>reflecs>bv>mtg>home.forum}"@HI-MULTICS.ARPA,
- "{forum >site>forum_dir>micros.forum}"@HI-MULTICS.ARPA,
- info-cpm@BRL.ARPA
- Message-ID: <860703032913.565394@HI-MULTICS.ARPA>
-
- A friend of mine has a line on a Cromenco Z-2 CPM computer system with
- PFD 8" drives and a Hazeltine 1500 terminal. He would like to know:
- 1) is Cromenco still in business and if so how to get in touch with them.
- 2) where might there be software and hardware sources for programs and
- documentation for this system.
- 3) any ones opinions as to what they think of the system as a personal,
- get-to-know computers for a couple of retirees?
- Richard Wilkinson {Wilkinson@HI-MULTICS.ARPA}
- (612) 542-7788 (days after the 20th)
- 3-Jul-86 00:04:20-MDT,7020;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Thu 3 Jul 86 00:03:30-MDT
- Received: from simtel20.arpa by AMSAA.ARPA id a008930; 3 Jul 86 1:02 EDT
- Date: Wed, 2 Jul 1986 23:03 MDT
- Message-ID: <KPETERSEN.12219635696.BABYL@SIMTEL20.ARPA>
- Sender: KPETERSEN@SIMTEL20.ARPA
- From: Keith Petersen <W8SDZ@SIMTEL20.ARPA>
- To: Info-Cpm@AMSAA.ARPA
- Subject: New files uploaded to SIMTEL20 during June
-
- The following is a list of new files added to SIMTEL20's <CPM.*>
- directories between 1-June-86 and 30-June-86. For a complete list
- of all files, get PD:<CPM>CPM.CRCLST. FILES.DIR and CPM.IDX are also
- available in that directory.
-
- Filename Type Bytes CRC
-
- PD:<CPM.22RSX>
- RSX12.LBR.1 BINARY 40960 46A9H
-
- PD:<CPM.BASIC>
- MBAS521.MOD.1 ASCII 2414 0710H
- ZBASDEMO.LBR.1 BINARY 37248 16DAH
-
- PD:<CPM.BBSLISTS>
- ABBL-07.LBR.1 BINARY 38272 330EH
- BBSRGJUN.LBR.1 BINARY 139008 A61FH
- FUBBS.JUN.1 ASCII 87410 F60FH
- FUBBSX.BAS.1 ASCII 2553 2EB8H
- GOVTBBS.LST.1 ASCII 8264 156FH
- PDFT-066.LQT.1 BINARY 10880 4F35H
- QXRCPM02.LQT.1 BINARY 10496 0E03H
- RCPM076.LQT.1 BINARY 57088 6A7CH
-
- PD:<CPM.BDOS>
- P2DOS.LBR.1 BINARY 96512 8896H
- P2DOS.MSG.1 ASCII 817 3ADAH
-
- PD:<CPM.BYE5>
- B5-CPM3.AQM.6 BINARY 3328 1690H
- B5-CPM3.DQC.6 BINARY 4992 E008H
- B5-DRIV3.AQM.6 BINARY 1920 C710H
- B5-TIME.IQF.6 BINARY 1792 77EBH
- B5IM-1.DQC.6 BINARY 4992 B057H
- BDOS.AQM.5 BINARY 2176 A11DH
- BYE5.DQC.6 BINARY 24448 64A9H
- BYE5.HQS.6 BINARY 14336 2721H
- BYE5-INS.LQT.3 BINARY 3712 9DCCH
- BYE508.AQM.1 BINARY 85376 6B47H
- BYE508.LBR.1 BINARY 157056 3DFDH
- BYE508C.AQM.1 BINARY 46464 E349H
- KMD20.LBR.1 BINARY 33152 DDB7H
- LCHEAD.BYE.4 ASCII 829 9F63H
- MERCURY.DQC.4 BINARY 2944 B778H
- QX10-BYE.FQX.5 BINARY 2048 70C7H
- TEST.BAS.5 ASCII 854 2614H
- Z3&RCPM.FQX.2 BINARY 2560 9FBAH
-
- PD:<CPM.CATLOG>
- FATCAT24.LBR.1 BINARY 157824 05D4H
- FATCAT2X.BUG.1 ASCII 938 B414H
- KPRTLSTP.LBR.1 BINARY 27776 1137H
-
- PD:<CPM.CCP>
- EPEX11.NQT.1 BINARY 1664 08F5H
-
- PD:<CPM.CPM3>
- SIDRSX11.LBR.1 BINARY 3968 411AH
-
- PD:<CPM.CPM68K>
- SD68K.LBR.1 BINARY 27136 7CDEH
-
- PD:<CPM.CPMLIB>
- UNARC12.LBR.1 BINARY 104448 AC35H
-
- PD:<CPM.DIRUTL>
- AKA13.LBR.1 BINARY 12032 6F2EH
-
- PD:<CPM.DIRUTL>
- DA21C.LBR.1 BINARY 7296 E0DBH
- SD116A.LBR.1 BINARY 83968 DD1EH
- SSD.LBR.1 BINARY 70784 3664H
- VOL-2.LBR.1 BINARY 9216 5E23H
- DSKDRV16.LBR.1 BINARY 44288 9F32H
-
- PD:<CPM.EDUCATION>
- SPELLBE4.LBR.1 BINARY 7424 9C5AH
- TTYPE3.LBR.1 BINARY 48128 E1FCH
- TYPTEACH.LBR.1 BINARY 26752 B6A2H
-
- PD:<CPM.FILE-DOCS>
- JUNBEST.LQT.1 BINARY 27776 0834H
- MAYBEST.LQT.1 BINARY 25728 C801H
-
- PD:<CPM.GENDOC>
- BYONDZ80.TQT.1 BINARY 3200 B1F6H
- CD-DISKS.TQT.1 BINARY 2048 8BFEH
-
- PD:<CPM.GENIE>
- GENIE.BBS.1 ASCII 2020 EE26H
- GENIE.CPM.1 ASCII 1030 F1ECH
- GENIE.IBM.1 ASCII 999 A52AH
- GENIE.IDX.1 ASCII 2017 1B11H
- GENIE57.UQD.1 BINARY 3584 0186H
-
- PD:<CPM.HAMRADIO>
- NORADIO.601.1 ASCII 9013 59EAH
-
- PD:<CPM.HELP>
- RATFOR.HQP.1 BINARY 12160 5924H
-
- PD:<CPM.KAYPRO>
- DIRF37KP.LBR.1 BINARY 26624 BA55H
- DVOAK.TQT.1 BINARY 2432 A95FH
- HARDDISK.TQT.1 BINARY 3840 9477H
- JUL86.MQG.1 BINARY 20096 F324H
- K256BIOS.LBR.1 BINARY 48256 9F81H
- KAY256.MSG.1 ASCII 1473 99DAH
- KP2-EDIT.LBR.1 BINARY 6784 EF69H
- M100-KP.LBR.1 BINARY 14592 7CDCH
- TROMHINT.LBR.1 BINARY 2304 73A7H
-
- PD:<CPM.LIST>
- BRAD-WS.TQP.1 BINARY 1024 615BH
- BRADCON.LBR.1 BINARY 47360 BF44H
- BRADFORD.MQG.1 BINARY 3456 ECF0H
- BRADZEX.LBR.1 BINARY 6272 52FDH
- PRINT24A.LBR.1 BINARY 4480 EB9FH
- PRNTCHAR.LBR.1 BINARY 8448 85D8H
-
- PD:<CPM.MBBS>
- MBYE44.LBR.1 BINARY 83840 6937H
-
- PD:<CPM.MEX>
- MEX114.REV.1 ASCII 7630 6EFEH
- MEX114KP.NQT.1 BINARY 5632 C978H
-
- PD:<CPM.MICNET>
- BP.C.1 ASCII 17377 426BH
- CISB.ANNOUNCE.1 ASCII 2289 FA5BH
- CISB.MSG.1 ASCII 1092 1AEEH
- DTE.C.1 ASCII 4126 64A3H
-
- PD:<CPM.MISC>
- ROYALOAK.DQR.1 BINARY 78976 AFF2H
-
- PD:<CPM.MODEM>
- 1200$87.MDM.1 ASCII 1736 3BCDH
-
- PD:<CPM.MODEM7>
- M7-OVL29.LQT.1 BINARY 4096 D44DH
-
- PD:<CPM.NUBYE>
- NU-CLOCK.LBR.1 BINARY 76800 1815H
- NUBY-INS.LBR.1 BINARY 144384 24BDH
- NUBY-SUP.LBR.1 BINARY 33792 B257H
- NUBYE100.LBR.1 BINARY 143232 9096H
- NUKMD100.LBR.1 BINARY 124928 B9C2H
-
- PD:<CPM.RCPM>
- BBSETIQ.TQT.1 BINARY 4096 5694H
- CD7.AQM.1 BINARY 9344 2CDDH
- PBBS03.LBR.1 BINARY 212480 7FB2H
- PBBSUAR1.LBR.1 BINARY 11776 9997H
- PBBSUP-3.LBR.1 BINARY 89472 9C2EH
- SYSOP.TQT.1 BINARY 2944 6260H
- WIS105.LBR.1 BINARY 18176 99E6H
- ZCMD26.LBR.1 BINARY 60032 AC63H
-
- PD:<CPM.SQU-PORT>
- SQUPORT2.C70MODS.1 ASCII 1848 C111H
-
- PD:<CPM.SQUSQ>
- COMPRESS.TQT.1 BINARY 7296 014EH
- CRNCH12S.LBR.1 BINARY 55552 98C1H
- CRUNCH12.LBR.1 BINARY 48512 5CB7H
-
- PD:<CPM.STARTER-KIT>
- COMPRESS.TXT.1 ASCII 12480 32BDH
-
- PD:<CPM.SYSUTL>
- SWITCHIO.LBR.1 BINARY 9984 1368H
-
- PD:<CPM.TOPS-20>
- TMODEM.MAC.400 ASCII 129054 2229H
-
- PD:<CPM.TRS-80>
- M100-XMD.LBR.1 BINARY 10496 BD64H
- M100LF.BAS.1 BINARY 1280 FE4AH
-
- PD:<CPM.TURBOPAS>
- APLSND.PAS.1 ASCII 1901 D67EH
- MAKEDOC.LBR.1 BINARY 4992 4644H
- MAPSTATS.LBR.1 BINARY 65536 9189H
- MULTASK.PQS.1 BINARY 5120 8C6AH
- NICEPRNT.LBR.1 BINARY 18432 262BH
- PAMPHLET.LBR.1 BINARY 21632 4BC0H
- PASCSCR.LBR.1 BINARY 19968 8B2DH
- PMLINK.LBR.1 BINARY 26240 ABF1H
- RECIPE.PQS.1 BINARY 6656 D380H
- RESCUE.LBR.1 BINARY 13568 BBBEH
- SCRNGEN.LBR.1 BINARY 33280 C12CH
- TP-UTIL.LBR.1 BINARY 102272 DDC6H
- TURBSCR.LBR.1 BINARY 14976 E489H
- WIPE.PAS.2 ASCII 541 4AEBH
-
- PD:<CPM.TXTUTL>
- FIX14.LBR.1 BINARY 13312 D7D3H
- PRN36.LBR.1 BINARY 74112 8D8EH
- SKIM.LBR.1 BINARY 13184 32BAH
- TEXTCOM.LBR.1 BINARY 22528 00C2H
- TXTL.LBR.1 BINARY 10880 452CH
-
- PD:<CPM.VDOEDIT>
- VDE21.HLP.1 ASCII 2715 3F01H
- VDE211.LBR.1 BINARY 47232 3C91H
- VDE21OVR.PQ8.1 BINARY 7936 657BH
-
- PD:<CPM.WORLDBBS>
- -README.JUNE86.1 ASCII 533 E072H
- BBSAPI.TXT.1 ASCII 2801 9840H
- BBSCAI.TXT.1 ASCII 15059 101FH
- BBSCAN.TXT.1 ASCII 7275 2B30H
- BBSEUR.TXT.1 ASCII 6521 623DH
- BBSUSA.TXT.1 ASCII 28529 6034H
- BBSUSC.TXT.1 ASCII 31527 416FH
- BBSUSE.TXT.1 ASCII 16799 EFFEH
- BBSUSN.TXT.1 ASCII 20274 7B5AH
- BBSUSP.TXT.1 ASCII 32895 B8F2H
- BBSUSS.TXT.1 ASCII 21280 7A5FH
- BBSUSW.TXT.1 ASCII 21346 3229H
-
- PD:<CPM.WSTAR>
- OUTLN.LBR.1 BINARY 4992 4F51H
- WSGEMINI.LBR.1 BINARY 7168 B594H
-
- PD:<CPM.ZMODEM>
- GZ..1 ASCII 15 0792H
- RBSB.C.2 ASCII 4578 A4D4H
- RZ.C.1 ASCII 25408 10B5H
- RZSZZM.LBR.1 BINARY 72320 6224H
- SZ.1.2 ASCII 8931 EFA6H
- SZ.C.1 ASCII 26986 62E4H
- SZ.MAN.3 ASCII 10468 EAB4H
- ZMODEM.RQC.1 BINARY 10368 0AA5H
-
- --Keith
- 3-Jul-86 12:49:59-MDT,1232;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Thu 3 Jul 86 12:49:25-MDT
- Received: from brl-smoke.arpa by AMSAA.ARPA id a024899; 3 Jul 86 13:54 EDT
- Received: from USENET by SMOKE.BRL.ARPA id a029676; 3 Jul 86 13:46 EDT
- From: Richard Jennings <jennings%sage.cs.reading.ac.uk@BRL.ARPA>
- Newsgroups: net.micro.cpm
- Subject: Re: RAM DISK FOR C128
- Message-ID: <201@sage.cs.reading.Ac.Uk>
- Date: 1 Jul 86 22:23:04 GMT
- Posted: Tue Jul 1 22:23:04 1986
- To: info-cpm@AMSAA.ARPA
-
- In article <1754@brl-smoke.ARPA> PFENNIGER%CGEUGE51.BITNET@WISCVM.ARPA writes:
- > I HAVE A COMMODORE C128 WHICH I USE IN THE CP/M MODE MOSTLY. I WOULD VERY
- >MUCH LIKE TO KNOW IF ANY OF YOU C128 OWNERS OUT THERE HAVE THOUGHT OF USING
- >64K OF THIS MEMORY AS A RAM DISK WITH THE OTHER 64K AS PROGRAM MEMORY....
-
- Errrmm, doesn't the C128 run CP/M Plus????!!!!!!
- If so, you need both 64K pages:- one for system and one for TPA - this saves
- you warm-booting all the time and having a system eating up 1/4 of all your
- discs.
- --
- Richard Jennings (incomprehensible jargon follows):
- _^_ jennings@sage.cs.reading.UUCP
- <o|o>
- / \ - remember space invaders??
- 5-Jul-86 10:16:37-MDT,1736;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Sat 5 Jul 86 10:16:27-MDT
- Received: from brl-smoke.arpa by AMSAA.ARPA id a004140; 5 Jul 86 11:45 EDT
- Received: from USENET by SMOKE.BRL.ARPA id a021597; 5 Jul 86 11:40 EDT
- From: hong%garfield.uucp@BRL.ARPA
- Newsgroups: net.micro.cpm
- Subject: CPM HELP
- Message-ID: <1324@garfield.UUCP>
- Date: 4 Jul 86 15:00:50 GMT
- Sender: perry%garfield.uucp@BRL.ARPA
- To: info-cpm@AMSAA.ARPA
-
- recently, i got more invloved with my apple with cpm.
- except some common commands like pip, stat and wordstar,
- i don't know much about cpm.
- i downloaded many startrek programs from toronto RCPM, i can't compile
- most of thee startrek games. some because of space limit or many
- errors. i, then, followed the simple doc with a game called 'strtrk/1.bas'
- which tells me it may compile with basic-e,(a public domain basic compiler
- which i also download from there). some problems meet, the startrek games
- i downloaded with source, some are not compatible with basic-e or the source
- file is damaged( i found some incomplete statements).
- i only succeed in compile on version with basic-e, can anyone give me
- some more info about basic-e, like the book.
- any better suggestions about a better basic compiler?
- any good public domain word processor you have used? send me the name
- of the program, so i can search through RCPM.
- now, i found that many good cpm programs are in public domain, can you
- suggest some of them?
- i have used modem7, mex, nulu ,d and cat.
- any apple users have successfully run/compile the bigtrek?
- is it possible for us to compile/run a big basic program like that in
- the 56K cpm v2.2 with an apple?
- thanks a lot.
- HONG
- 5-Jul-86 18:31:32-MDT,939;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Sat 5 Jul 86 18:31:23-MDT
- Received: from brl-smoke.arpa by AMSAA.ARPA id a004943; 5 Jul 86 19:42 EDT
- Received: from USENET by SMOKE.BRL.ARPA id a023828; 5 Jul 86 19:40 EDT
- From: h1c%psuecl.bitnet@BRL.ARPA
- Newsgroups: net.micro.cpm
- Subject: Kermit for Epson QX-10 computer ?
- Message-ID: <302@PSUECL>
- Date: 5 Jul 86 08:56:30 GMT
- To: info-cpm@AMSAA.ARPA
-
-
- Can anyone tell me where I can find a kermit for Epson Qx-10
- computer ? My machine runs CP/M-80 operating system version 2.2 and
- 2.25. The main feature of this machine is that the computer terminal
- modeled after the TVI-920 terminal. I also would like to know any
- communication programs can emulate VT-100 under this operating system.
-
- Your reply will be much grateful. Thanks in advance.
-
- Heng Chang Bitnet: H1C@PSUECL
-
-
- 6-Jul-86 10:49:28-MDT,2453;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Sun 6 Jul 86 10:49:17-MDT
- Received: from brl-aos.arpa by AMSAA.ARPA id a006524; 6 Jul 86 12:13 EDT
- Received: from mit-mc.arpa by AOS.BRL.ARPA id a005849; 6 Jul 86 12:06 EDT
- Received: from MX.LCS.MIT.EDU by MC.LCS.MIT.EDU via Chaosnet; 6 JUL 86 12:04:31 EDT
- Date: Sun, 6 Jul 86 12:05:14 EDT
- From: "Robert L. Plouffe" <PLOUFF%MX.LCS.MIT.EDU@MIT-MC.ARPA>
- Subject: LE, SPERRY, CLK UTLS
- To: INFO-MICRO%MX.LCS.MIT.EDU@MIT-MC.ARPA, INFO-CPM%MX.LCS.MIT.EDU@MIT-MC.ARPA,
- info-ibmpc@USC-ISIB.ARPA
- cc: PLOUFF%MX.LCS.MIT.EDU@MIT-MC.ARPA
- Message-ID: <[MX.LCS.MIT.EDU].931509.860706.PLOUFF>
-
- The file EDGCLK.ARC has been uploaded to SIMTEL20 and located
- in PD:<MSDOS.COMPATIBLES>EDGCLK.ARC.
-
- This ARC file contains the source and executable files for two
- utilities that will be useful to owners of Leading Edge, Model M
- and Sperry PC personal computers. (Maybe Model D also. See below.)
- They are:
-
- LE_MCLK Reads the on-board battery backed-up clock
- and sets the current clock to its values.
- This code is intended to be executed in your
- AUTOEXEC.BAT file. The .COM file is only 28 bytes.
-
- SETCLK Sets the date and time of the battery backed-up
- clock and simultaneously updates the current clock.
-
- The function of LE_MCLK is built into DOS 2.11 as supplied with
- the machine, and the v2.11 COMMAND.COM will update the battery
- clock with the internal DATE and TIME commands. So, if you stick
- with DOS 2.11 you don't need these utilities. However if you
- upgrade your DOS to 3.xx, you will find that it has no knowledge
- of the on-board battery backed-up clock. These utilities will then
- do the job and restore full function to the use of the battery clock.
-
- The programs use an undocumented feature of the on-board
- ROM BIOS. The Time-of Day interrupt (INT 1AH) has four additional
- functions beyond that of the IBMPC ROM BIOS. This is fully explained
- in the documentation.
-
- I suspect that the DOS 2.11 supplied with the Leading Edge, Model D
- is identical to the one supplied with the Model M. If so, then the
- ROM BIOS must also provide the same functionality for the additional
- INT 1AH functions - so this code will probably work with a model D
- also. Someone who has a Model D please let me know. Reply to
- PLOUFF at MIT-MX since I am not on all of the mailing lists to which
- this is directed.
-
- 8-Jul-86 11:41:18-MDT,854;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Tue 8 Jul 86 11:41:03-MDT
- Received: from brl-aos.arpa by AMSAA.ARPA id a011500; 8 Jul 86 12:45 EDT
- Received: from xerox.arpa by AOS.BRL.ARPA id a016692; 8 Jul 86 12:43 EDT
- Received: from CheninBlanc.ms by ArpaGateway.ms ; 08 JUL 86 09:41:23 PDT
- Date: 8 Jul 86 09:41:19 PDT (Tuesday)
- From: CMadsen.ES@XEROX.ARPA
- Subject: Re: uuen/de code and software exchange
- In-reply-to: <860702144750.866991@HI-MULTICS.ARPA>
- To: Dearden@HI-MULTICS.ARPA
- cc: info-cpm@BRL.ARPA
- Message-ID: <860708-094123-1838@Xerox>
-
- I agree with you.There are to many IDIOTS out there.Really I should say
- To many
- Childish people on the net.Instead of using the Net as a tool;They
- rather screw it up for everbody else.
-
- I think the Sources should be given as will!!
-
- --Carl
- 10-Jul-86 11:01:53-MDT,852;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Thu 10 Jul 86 11:01:42-MDT
- Received: from brl-smoke.arpa by AMSAA.ARPA id a014900; 10 Jul 86 12:18 EDT
- Received: from USENET by SMOKE.BRL.ARPA id a019630; 10 Jul 86 12:17 EDT
- From: Sunil Bhargava <sunil@BRL-SMOKE.ARPA>
- Newsgroups: net.micro.cpm,net.micro.pc,net.wanted
- Subject: Re: Removal from mailing list.
- Message-ID: <2076@brl-smoke.ARPA>
- Date: 10 Jul 86 16:17:45 GMT
- Expires: 7/17/86
- Keywords: sale wanted
- To: info-cpm@AMSAA.ARPA
-
- I want a second hand baby blue board for an ibm pc. That is the
- cpm emulation board for the pc. I am willing to pay about $100 for
- one in perfect working condition, with manual and software. Please
- reply to me directly since I am not on this mailing list.
-
- thanx
-
- Reply-to: sunil@brl.arpa
-
- 10-Jul-86 15:56:41-MDT,509;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Thu 10 Jul 86 15:56:35-MDT
- Received: from brl-smoke.arpa by AMSAA.ARPA id a023537; 10 Jul 86 17:19 EDT
- Received: from USENET by SMOKE.BRL.ARPA id a003503; 10 Jul 86 17:07 EDT
- From: "Virginia A. Kaste <ginny>" <ginny@BRL-SMOKE.ARPA>
- Newsgroups: net.micro.cpm
- Subject: testing distributions again
- Message-ID: <2094@brl-smoke.ARPA>
- Date: 10 Jul 86 21:07:48 GMT
- To: info-cpm@AMSAA.ARPA
-
-
- for info-cpm
-
- 10-Jul-86 18:15:39-MDT,778;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Thu 10 Jul 86 18:15:26-MDT
- Received: from brl-smoke.arpa by AMSAA.ARPA id a024000; 10 Jul 86 19:45 EDT
- Received: from USENET by SMOKE.BRL.ARPA id a007586; 10 Jul 86 19:43 EDT
- From: "Steve Miller@ex6191" <miller%qantel.uucp@BRL.ARPA>
- Newsgroups: net.micro.68k,net.micro.cpm
- Subject: CPM 68K CCP
- Message-ID: <657@qantel.UUCP>
- Date: 9 Jul 86 03:59:25 GMT
- To: info-cpm@AMSAA.ARPA
-
-
- Does anyone know where I can get information on writing a
- new CCP for CP/M 68K Version 1.2. I called DRI and they don't have
- any information for the general public. I would like to add features
- much like ZCPR but in the CP/M 68K enviroment. Please Email any
- information you may have.
- 10-Jul-86 20:09:59-MDT,2605;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Thu 10 Jul 86 20:09:50-MDT
- Received: from mit-mc.arpa by AMSAA.ARPA id a024131; 10 Jul 86 21:26 EDT
- Received: from MX.LCS.MIT.EDU by MC.LCS.MIT.EDU via Chaosnet; 10 JUL 86 21:28:22 EDT
- Date: Thu, 10 Jul 86 21:26:25 EDT
- From: "Robert L. Plouffe" <PLOUFF%MX.LCS.MIT.EDU@mit-mc.ARPA>
- Subject: [PLOUFF%MX.LCS.MIT.EDU: LE, SPERRY, CLK UTLS]
- To: info-micro@BRL.ARPA, info-cpm@AMSAA.ARPA
- Message-ID: <[MX.LCS.MIT.EDU].932196.860710.PLOUFF>
-
- Date: Sun, 6 Jul 86 12:05:14 EDT
- From: Robert L. Plouffe <PLOUFF%MX.LCS.MIT.EDU at MIT-MC.ARPA>
- To: INFO-MICRO%MX.LCS.MIT.EDU at MIT-MC.ARPA,
- INFO-CPM%MX.LCS.MIT.EDU at MIT-MC.ARPA,
- info-ibmpc at USC-ISIB.ARPA
- cc: PLOUFF%MX.LCS.MIT.EDU at MIT-MC.ARPA
- Re: LE, SPERRY, CLK UTLS
-
- The file EDGCLK.ARC has been uploaded to SIMTEL20 and located
- in PD:<MSDOS.COMPATIBLES>EDGCLK.ARC.
-
- This ARC file contains the source and executable files for two
- utilities that will be useful to owners of Leading Edge, Model M
- and Sperry PC personal computers. (Maybe Model D also. See below.)
- They are:
-
- LE_MCLK Reads the on-board battery backed-up clock
- and sets the current clock to its values.
- This code is intended to be executed in your
- AUTOEXEC.BAT file. The .COM file is only 28 bytes.
-
- SETCLK Sets the date and time of the battery backed-up
- clock and simultaneously updates the current clock.
-
- The function of LE_MCLK is built into DOS 2.11 as supplied with
- the machine, and the v2.11 COMMAND.COM will update the battery
- clock with the internal DATE and TIME commands. So, if you stick
- with DOS 2.11 you don't need these utilities. However if you
- upgrade your DOS to 3.xx, you will find that it has no knowledge
- of the on-board battery backed-up clock. These utilities will then
- do the job and restore full function to the use of the battery clock.
-
- The programs use an undocumented feature of the on-board
- ROM BIOS. The Time-of Day interrupt (INT 1AH) has four additional
- functions beyond that of the IBMPC ROM BIOS. This is fully explained
- in the documentation.
-
- I suspect that the DOS 2.11 supplied with the Leading Edge, Model D
- is identical to the one supplied with the Model M. If so, then the
- ROM BIOS must also provide the same functionality for the additional
- INT 1AH functions - so this code will probably work with a model D
- also. Someone who has a Model D please let me know. Reply to
- PLOUFF at MIT-MX since I am not on all of the mailing lists to which
- this is directed.
-
- 11-Jul-86 17:37:09-MDT,1120;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Fri 11 Jul 86 17:36:57-MDT
- Received: from edwards-2060.arpa by AMSAA.ARPA id a009860; 11 Jul 86 18:42 EDT
- Date: Fri 11 Jul 86 15:44:01-PDT
- From: BUSSARD@EDWARDS-2060.ARPA
- Subject: XOR S-100 4 system
- To: info-cpm@AMSAA.ARPA
- cc: BUSSARD@EDWARDS-2060.ARPA
- Message-ID: <12221925879.13.BUSSARD@EDWARDS-2060.ARPA>
-
- I complete set of the manuals for the S100-4 system and the basic
- manual for the 12 slot chassis also. Like most people I have one problem
- with the system, B drive spends alot of time (about 90%) being not ready.
- The drives (8" Tandon Thinlines)seem check out ok on other systems and disk
- controllers? Not long before they quit the s-100 market,I got a bios upgrade
- from them, fall of '84 I think. Would like to hear from owners and users.
- Send mail directly to: Bussard@Edwards-2060
-
- Note: That it is only B drive not ready not A or the 5.25" on C & D. Have
- replaced all of the devices on the disk controller that, though seem good,
- could be suspect.
-
-
- Lewis G. Bussard
-
- -------
- 14-Jul-86 12:33:37-MDT,736;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Mon 14 Jul 86 12:33:23-MDT
- Received: from xerox.arpa by AMSAA.ARPA id a002442; 14 Jul 86 13:46 EDT
- Received: from CheninBlanc.ms by ArpaGateway.ms ; 14 JUL 86 10:47:31 PDT
- Date: 14 Jul 86 10:38:04 PDT (Monday)
- From: Chapman.ES@xerox.ARPA
- Subject: Anyone ever heard of a TI99?
- To: Info-Micro@AMSAA.ARPA, Info-cpm@AMSAA.ARPA
- cc: Chapman.ES@xerox.ARPA
- Message-ID: <860714-104731-2027@Xerox>
-
- A friend here in Southern California has one of these and is looking for
- other people with it. He'd be interested in any pointers to clubs in
- the SoCal area. He also needs a word processor. What is available for
- this machine?
-
- Cheryl
-
- 15-Jul-86 13:54:33-MDT,24450;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Tue 15 Jul 86 13:52:50-MDT
- Received: from brl-smoke.arpa by AMSAA.ARPA id a003582; 15 Jul 86 13:55 EDT
- Received: from USENET by SMOKE.BRL.ARPA id a013818; 15 Jul 86 13:47 EDT
- From: Ross Alford <alford%ecsvax.uucp@BRL.ARPA>
- Newsgroups: net.micro.cpm
- Subject: uuencode source, com, and discussion
- Message-ID: <1811@ecsvax.UUCP>
- Date: 15 Jul 86 01:01:42 GMT
- To: info-cpm@AMSAA.ARPA
-
-
- I apologize for the delay. This message and the one that follows
- contain the Turbo Pascal source and uuencoded binaries for uuencode
- and uudecode to run under CP/M 2.2 (and probably 3.0). I know
- that posting software to net.micro.cpm is not very usual, but I received
- a number of requests for the source and/or binaries, and rather than
- try to send to individuals, I decided to post.
-
- Re my suggestion that CP/Mers exchange software via the net: I have
- a couple of responses to mail and news followups. First, what I
- would suggest is that software exchange take one of two forms--either
- posting articles containing only source and documentation, which would
- best be applied to programs written for ASM and maybe Turbo, both of
- which are almost universally accessible (or MBASIC, I suppose); or
- for software written in less universal languages, posting files with
- a short header describing the contents, followed by a uuencoded
- library file containing source, documentation, and object code. I've
- noticed lately that most newer software on RCPM systems is packaged
- this way, and it does seem sensible. If the .LBR file is squeezed
- before uuencoding, on average the uuencoded version will be no larger
- than the unsqueezed original. We might want to establish either a
- net.micro.cpm.sources or something similar if there was a lot of traffic,
- but perhaps at first could just use net.micro.cpm, since the volume is
- now low anyway. I do agree that source should always be included when
- it is available (and perhaps not too huge. 240k .ASM files would
- probably be stretching things).
-
- To start things off, then, in response to popular request, here follow
- uuencode.pas and uuencode.uue (the encoded binary, which can be decoded
- with UN*X uudecode before downloading to your system). The files are
- separated by ---------------CUT HERE-----------lines, since I've
- never figured out how to package shar files.
-
- Ross Alford
- ...mcnc!ecsvax!alford
- ----------------------CUT HERE----------for uuencode.pas---------
- Program uuencode;
-
- CONST header = 'begin';
- trailer = 'end';
- defaultMode = '644';
- defaultExtension = '.uue';
- offset = 32;
- charsPerLine = 60;
- bytesPerHunk = 3;
- sixBitMask = $3F;
- endofinfile : boolean = FALSE;
-
- TYPE string80 = string[80];
-
- VAR inf : file;
- outfile: text;
- infilename, outfilename, mode: string80;
- lineLength, numbytes, bytesInLine: integer;
- line: array [0..59] of char;
- hunk: array [0..2] of byte;
- chars: array [0..3] of byte;
-
-
- { procedure debug;
-
- var i: integer;
-
- procedure writebin(x: byte);
-
- var i: integer;
-
- begin
- for i := 1 to 8 do
- begin
- write ((x and $80) shr 7);
- x := x shl 1
- end;
- write (' ')
- end;
-
- begin
- for i := 0 to 2 do writebin(hunk[i]);
- writeln;
- for i := 0 to 3 do writebin(chars[i]);
- writeln;
- for i := 0 to 3 do writebin(chars[i] and sixBitMask);
- writeln
- end; }
-
- {Binary file read added by Ross Alford, ...!mcnc!ecsvax!alford. The original
- MSDOS versions of uuencode/decode just use read/write on a FILE OF BYTE.
- CP/M Turbo expects some file info to be stored in the first 4 bytes of files
- of any type other than TEXT. Getbyte (below) and Putbyte (in UUDECODE)
- bypass this 'feature' by using blockread and blockwrite. The only global
- variables either use are 'infilename' and 'inf' or 'outfilename' and 'outf'}
-
- function getbyte(var b : byte) : boolean;
-
- type bufptr = ^bufrec;
- bufrec = record
- next : bufptr;
- buffer : array[1..128] of byte
- end;
-
- const sectstobuf = 8; {max number of sectors to buffer}
- sectsread : integer = 0; {constants are essentially statics}
- bytptr : integer = 129;
- notopen : boolean = TRUE;
- j : integer = 0;
- infsize : integer = 0;
- listsave : integer = 0;
-
- var list,temp,temp2 : bufptr;
-
- begin
- if notopen then
- begin
- notopen := FALSE;
- assign(inf,infilename);
- {$i-}
- reset(inf);
- {$i+}
- if ioresult <> 0 then
- begin
- writeln('File ',infilename,' not found. Aborting');
- halt
- end;
- infsize := filesize(inf);
- new(list);
- list^.next := NIL;
- listsave := ord(list);
- sectsread := 0
- end;
- list := ptr(listsave);
- if bytptr > 128 then
- begin
- if list^.next <> NIL then
- begin
- temp := list^.next;
- dispose(list);
- list := temp;
- bytptr := 1
- end
- else begin
- dispose(list);
- list := NIL;
- j := 0;
- while (sectsread<infsize) and (j<sectstobuf) do
- begin
- new(temp2);
- temp2^.next := NIL;
- if list=NIL then
- begin
- list := temp2;
- temp := list
- end
- else begin
- temp^.next := temp2;
- temp := temp2
- end;
- blockread(inf,temp^.buffer,1);
- j := succ(j);
- sectsread := succ(sectsread)
- end;
- bytptr := 1
- end
- end;
- listsave := ord(list);
- if list <> NIL then
- begin
- b := list^.buffer[bytptr];
- bytptr := succ(bytptr);
- getbyte := TRUE
- end
- else begin
- b := 0;
- getbyte := FALSE
- end
- end;
-
- procedure Abort (message: string80);
-
- begin {abort}
- writeln(message);
- close(inf);
- close(outfile);
- halt
- end; {abort}
-
- procedure Init;
-
- procedure GetFiles;
-
- VAR i: integer;
- temp: string80;
- ch: char;
-
- begin {GetFiles}
- if ParamCount < 1 then abort ('No input file specified.');
- infilename := ParamStr(1);
- {$I-}
- assign (inf, infilename);
- reset (inf);
- {$i+}
- if IOResult > 0 then abort (concat ('Can''t open file ', infilename));
-
- write('Uuencoding file ', infilename);
-
- i := pos('.', infilename);
- if i = 0
- then outfilename := infilename
- else outfilename := copy (infilename, 1, pred(i));
- mode := defaultMode;
- if ParamCount > 1 then
- for i := 2 to ParamCount do
- begin
- temp := Paramstr(i);
- if temp[1] in ['0'..'9']
- then mode := temp
- else outfilename := temp
- end;
- if pos ('.', outfilename) = 0
- then outfilename := concat(outfilename, defaultExtension);
- assign (outfile, outfilename);
- writeln (' to file ', outfilename, '.');
-
- {$i-}
- reset(outfile);
- {$i+}
- if IOresult = 0 then
- begin
- Write ('Overwrite current ', outfilename, '? [Y/N] ');
- repeat
- read (kbd, ch);
- ch := Upcase(ch)
- until ch in ['Y', 'N'];
- writeln (ch);
- if ch = 'N' then abort(concat (outfilename, ' not overwritten.'))
- end;
- close(outfile);
-
- {$i-}
- rewrite(outfile);
- {$i+}
- if ioresult > 0 then abort(concat('Can''t open ', outfilename));
- end; {getfiles}
-
- begin {Init}
- GetFiles;
- bytesInLine := 0;
- lineLength := 0;
- numbytes := 0;
- writeln (outfile, header, ' ', mode, ' ', infilename);
- end; {init}
-
- procedure FlushLine;
-
- VAR i: integer;
-
- procedure writeout(ch: char);
-
- begin {writeout}
- if ch = ' ' then write(outfile, '`')
- else write(outfile, ch)
- end; {writeout}
-
- begin {FlushLine}
- write ('.');
- writeout(chr(bytesInLine + offset));
- for i := 0 to pred(lineLength) do
- writeout(line[i]);
- writeln (outfile);
- lineLength := 0;
- bytesInLine := 0
- end; {FlushLine}
-
- procedure FlushHunk;
-
- VAR i: integer;
-
- begin {FlushHunk}
- if lineLength = charsPerLine then FlushLine;
- chars[0] := hunk[0] shr 2;
- chars[1] := (hunk[0] shl 4) + (hunk[1] shr 4);
- chars[2] := (hunk[1] shl 2) + (hunk[2] shr 6);
- chars[3] := hunk[2] and sixBitMask;
- {debug;}
- for i := 0 to 3 do
- begin
- line[lineLength] := chr((chars[i] and sixBitMask) + offset);
- {write(line[linelength]:2);}
- lineLength := succ(lineLength)
- end;
- {writeln;}
- bytesInLine := bytesInLine + numbytes;
- numbytes := 0
- end; {FlushHunk}
-
- procedure encode1;
-
- begin {encode1};
- if numbytes = bytesperhunk then flushhunk;
- endofinfile := not (getbyte(hunk[numbytes]));
- numbytes := succ(numbytes)
- end; {encode1}
-
- procedure terminate;
-
- begin {terminate}
- if numbytes > 0 then flushhunk;
- if lineLength > 0
- then
- begin
- flushLine;
- flushLine;
- end
- else flushline;
- writeln (outfile, trailer);
- close (outfile);
- close (inf);
- end; {terminate}
-
-
- begin {uuencode}
- init;
- while not endofinfile do encode1;
- terminate
- end. {uuencode}
- ----------------------CUT HERE----------for uuencode.uue----------
- begin 644 UUENCODE.COM
- MP^(@S:M#;W!Y<FEG:'0@*$,I(#$Y.#4@0D]23$%.1"!);F,`!`"A0@``````
- M```````````````````````````````````````````````````*3D5#(#@T
- M,#%,4R!H:6QI=&5E9610$``)&UL_,FP;9QLJ`````````!M6````````````
- M``````0;/0`````````````````!("`$`P```ALJ````!!L]("```AM%10T`
- M`AM2?P`````"&U0````"&R@Q```"&RDQ`````'ZW-\@C]>5^S>@!X?$]R!CS
- MS0`"#0H`R6_ES:8`R?Z`W&L"U(0"YG\8[N4A[@$8!.4AZ`$B$P+AX_7%U7XC
- MMR@'Y<WH`>$8]-'!\>/)?;3(.B0!AX>'X^/CX\4!T@3!/2#T*QCHS=`!V"K.
- M`1C?]<75Y2&H`<TU`B&B`<W0`2JZ`=0=`N'1P?')]<75Y2&T`1CI]<75Y2&N
- M`1C@]3K@`+<H$,75Y:\RX``AR`'--0+AT<'QR?4ZX`#^_RCVQ=7E/O\RX``A
- MP@$8X_7%U>4AO`$8VO7%U>7E$?``(8L!`1``[;#1.IX!3SJ<`8+5S=P"T3J?
- M`4\ZG0S=P"(?``S=`!*J`!S1T"X='!\<DA\``&``GK(9L!-#4H`A+)&QLA
- M"@,&`RL.+PR6,/R&]7G^,"@!$A/Q$.W)`0ID(6L!PS4"(7L!PS4"$0,`S5\#
- MY@$8!A$&`,U?`V\F`,D1$@`8]!$,`!@($0\`&`,1"0#AP>4ZW0"W*!K5Q<V@
- M`'RU*`_-X0/^$R`(S>$#_@/*U"#!T2H!`!GI(M(`>#+=`'FW*`L^PS(X`"'[
- M'R(Y`"&E`Q&@``$8`.VP(;T#$;@``0P`[;"O;V<RT``BU``BU@`^?C+1`#+@
- M`,G#%@/#(`/#.0/#+P/#-`/#*@/#.0/#(`/!`((`0P#$`,4`P0#%U>7=Y?WE
- M]6\F`.7-I@#Q_>'=X>'1P<G%U>7=Y?WES:,`?1CK#O\8#`X`[5O2`!,:_B`H
- M^B%E``8#S7L$&LVF!/Y!.!+^43`.1Q,:_CH@!GC60!,8`ANO(5P`=R,,#2@9
- M&LV"!"`3_C\H#_XJ*`O^+B@'!@O-=P08$`8(S5X$&OXN(`83!@/-7@0A:``&
- M`(Q#[R1H,#2@(_C\H"?XJ*`O-@@0H"W<C$Q#IR1,^/Q@"/B!W(Q#\R<VF
- M!/X@.`WEQ2&8!`$.`.VQP>')O\D@+BP[.CT_*EM=/#Y[??YAV/Y[T-8@R7S-
- MM`1]]1\?'Q_-O03QY@_&D"?.0"?#R0.O-\M\P'RW?<@^_\DRV`#%S:\>P2H&
- M`+?M0MJH(.O1^0$`_`DBQ@"O;V<BS@`RW``^PS+9`"'>("+:`.LBS`#IY2K&
- M`+?M0B+&`.U;Q`"W[5(9Z^':=1WML,DJQ@#ML"+&`-G)7B-6(]5>(U8C3B-&
- MX<G=X>L:3P8`+V\F_SGYZP/ML-WIT1I/!@`O;R;_.?GK`^VPZ=WAZR'@_SGY
- MZ\4$!2@%KQ(3$/SML,$^()"1*`9'KQ(3$/S=Z=WA(>#_.?D&(*]W(Q#\W>G=
- MX47-N@6V=]WIW>'1?9,X]SQ/0\VZ!5]!K[/+(S`&MG<CKQX!$/,8W7CF^`\/
- M#\8";R8`.7CF!SQ'KS<7$/W)Y=GKXW,C<B/1<R-R(W$C<,G=X7CK(0``1#E.
- MY0DCX[DX`7D2$R.W*`-/[;#A^=WIW>%X(0``1#E.Y0DC7B-6&-S=X>MH)@!$
- M.>VP(2``.?G=Z=WA(2``.5XC5F@F`$0Y[;`A(@`8Y]WAZW@O;R;_.?EP(T@&
- M`.OML-WIM^U2&=@^D,,G(+?M4K?M0C`#"1G)/I'#)R"W[5+K$^IQ!O`8`?@1
- M``#)U>NW[5+KX1CKM^U2(0$`R"O)S=\+&/7-L`D8\+?M4B$!`,`KR<W?"QCU
- MS;`)&/#-<@<A`0#0*\G-WPL8]<VP"1CPS7('(0$`R-@KR<W?"QCTS;`)&._-
- M<@<A``#(V"/)S=\+&/3-L`D8[\UR!R$!`-@KR<W?"QCUS;`)&/!474M"ZR$`
- M`'JW/A`@`U,^""GK*>LP`0D](/;)?+7*`PI\JO7-@`?KS8`'ZT1-KV=O/A'M
- M:NU",`()-S_+$\L2/2#PZ_'P&$CES9('RSS+'='KS0\'Z\MZR!@US6$'R"D0
- M_<G-80?(RSS+'1#ZR>MZMR`(>_X0,`-'M\FO9V_)ZWRJ?/I^![K`?;O)%\G+
- M?,A\+V=]+V\CR7WF`6\F`,GM2\H`[5O(`,75>$%*4QX`'\L8RQG+&LL;X1GK
- MX>U*1$TAZ6(9(L@`ZR$9-NU*(LH`1$W)!@`1$"?-X@<1Z`/-X@<19`#-X@<>
- M"LWB!WT8#:\\[5(P^QD$/2`"!<C&,-UW`-TCR=U^`-8D3R$``"`"W2/=?@#-
- MI@36,#@I_@HX#@P-("'6!_X*.!O^$#`75%TIV"G8#`T@`E1=&=@IV%\6`!G8
- M&,MYM\A\A\G=X>'E?28`(SE.@3@<=^LA``!$[4(Y^>OE`^VPZ^$K&T\#[;CK
- M(_G=Z3X0PRD@W>'-R`17X<W="5_AY7V3.!H4%2@6NC@62@8`8#E[@E1=/6]@
- M.7GMN.L8":\8`SQK+28`.7?YW>G=X>'E?28`(SGY;R8`W>G=X2$``%0Y7DLC
- MY1E>0R/E&>7]X='A>9`X$#Q/Q=7E&KXH#.'1P2,-(/(A```8#B,3$.S1X<$A
- M```YZ^U2_?G=Z=WAS<@$3^'-W0E?X7Z3.!L,#2@7D3@2]7Z1=P8`4!E470GQ
- M/$_ML!@"'7/=Z=WAS=T)3]'M4^@`(0``.1KUAC@#N#@!>!+Q5UZ1."\\;WJ#
- M.`2X?3@(>),X)I$X(SRW*!_%U2KH`%\=%@!"&0G1U>50&>OA3^VXT<$8!7H\
- M*!E/>)$\NS@!>[<H#BKH``8`">LA`0`Y3^VP(0``5#E>$QGYW>G=X>$MPF8(
- M;"8`W>DA`@!4.5X3&7XV`2-WR2$$`%0Y7DLCY1E>0R/E&>7]X='AK[@H!+D@
- M"'BYX=']^=7I&KX@]B,3!0T8YWRW(`-]M\`^$<,I(,T-"M`^`<,G(,V!"ACU
- MS:P/S9<*&.W9?;?9/@+*)R#-]0H8W]G+>-G"B`K9?;?9R-G%U>79?;<@!=G+
- MN!A4Q<OXKPC9R_A]V94H$S`&[40(/0C9S7H++#T@^0@H`=GQYH`@#\V2"S`E
- MS7L+MRP@'C<8(,W&"S_U*!`X`=G-K`O+>"`)S88++2#VS7(+\3@"R[BWV>'1
- MP=G)V<MXV<(4"LV/"LT4"M@L+<AX[H!'R=E]M]G*<@M]M\C9A=G-30O%U>7=
- M.<UR"]DN!=D^"-TCW6X`",L=,`/-D@O->PL(/2#QV2W9(.7=;OO+>"`)",V'
- M"RPM*`$M\?'QMPCQV<'AV=WAR[BP1RPMS'(+",E]M\C9E=D_S4T+Y>7EW3G9
- M+@79/@@(S<8+.`/-K`L_RQ4(/2`,W74%W2O9+=DH#CX(S88+,-\(S:P+MQCA
- MS88+.`3-Q@L_X='!RW@@!<V'"QB:+""7-QB5.`;&@#@&&!O&@#@7;]WCV>7%
- M>,OXV:CF@/7+^-WEW2$``,GAV*]O1T]77V?)M\L8RQG+&LL;RQS)M\L4RQ/+
- M$LL1RQ#)?-F$V6=[V8O97WK9BME7>=F)V4]XV8C91\E\V9399WO9F]E?>MF:
- MV5=YV9G93WC9F-E'R7C9N-G`>=FYV<!ZV;K9P'O9N]G`?-F\V<G9>-FH\ND+
- M>!?)RW@H!LWS"\@_R7W9O=G`M\C#Q@M]UH':<@L\_BC0V<75Y0C-<@L(-\U[
- M"ST@^=E\V:399WO9H]E?>MFBV5=YV:'93WC9H-E'PWL*V<75Y=G-K`_9S?T+
- MV<V!"ACK?;?(RW@^`\(G(,VL#WW&@,LOQH!OUA3UV<75Y<WU"LT-"BW%U>7-
- M@0I]X='!V>'1P>.\XS#C\=G)V<V.#RW-@0K9S8X/+-E]_FS8Q<NXS=\+P3@)
- MS?4*S30,S9<*RW@H`\T-"MDMV<W?"_4X`\V!"MDMV<W?"S@%V2S-@0I]_FPX
- M.]D!JBH1JJHA?ZK-EPK=Y=TA!PT^!<TT#]WAS:P/S9<*S9<*Q=7EV<VL#RTM
- MV2W-#0K9X='!V<V!"BPL\2PMR-AX[H!'R6>J/RLRUVZV*AWO.'0-T``-T'J(
- MB(B("'ZKJJJJJBPM/@3*)R#+>,(G(-G-F`_9?2Z!E?7-]0K9S88/V<V!"L75
- MY=DLS0T*V>'1P<WU"MWEW2&,#3X&S30/W>$LV<VB#RW9S0T*\<75Y6\F`#`!
- M)<T($-DLS9<*V>'1P<T-"GW^9]IR"\E]BIW8B1U]Z:*++CI]CN,XCF-^29(D
- M21)^S<S,S$Q_JZJJJBK9S:(/V;?+>/7+N,WU"GW^B#!'Q=7E+,W0#^7+/,L=
- M?>'US0@0+"TH`2W9\>'1P?7-@0K=Y=TA$`X^",U)#]WA\3`*]=G-F`_9S9<*
- M\85O.`GQR-G-A@_#]0KA/@'#)R!M+AT18#%P1BS^Y7]T-GR)A"%W4SS_PRYZ
- MTGU;E1U\);A&6&-^%OSO_76`TO<7<C%]M\C=Y=G-A@_9K\MX*`,\R[CUS=\+
- M.`C9S?4*\<O_]=D!SP81CNDA?DK9S=\+,`7-+@\83]TAS@X^`@C9$1(`W1G-
- M<P_9S=\+.`L(/2#LV1$,`-T9V=G-;@_+^,T-"L75Y<US#\V7"MG-A@_-#0K9
- MX='!S?4*W>7-+@_=X=G-;@_-#0KQ%S`*]=G-C@\MS8$*\=WART_(R_C)?^?/
- MS!-4?_;THC`)?VK!D0H&@+6>BF]$@((L.LT3@&K!D0H&@0``````@"&BV@])
- M?>BBBRZZ?8[C.(YC?DF2)$F2?LW,S,Q,?ZNJJJJJW2$*#SX%Q=7E]<VL#\V7
- M"O'-20_9X='!PY<*]=G-;@\8$/79Q=7ES6X/S0T*V>'1P=G-EPKQ/2#IV<V&
- M#\,-"A$&`-T9W6X`W68!W5X"W58#W4X$W48%R2&!`$1,5%S)`0])$:+:(8(A
- MR0$$-1$S\R&!^LD!<C$1]Q<A@-+)Q=7EV>'1P<G-D@<A@``^(,MX(`W+(\L2
- MRQ'+$"T](/!OR[C)RWC9S88/*`++^"W-#0JWRWTH',MX",OX/H^].!8H!LUZ
- M"RP8\\UZ"PA@:<C#@P<A``#)/I+#)R!\M<IR"\M\",V`!SZ0*3W+?"CZ1$T1
- M``!B;PC`R[C)S<@$ZQX`.`3^&3@8'<W(!-G+>-D6!R@!%)(P`:_^"3@"/@D\
- M5]79_2%=`-WES>L0W>'13WH\RWL@$('R:Q#]-@``&`O^##@"/@O5S8`1T<MX
- M*`4^+<WE$,M[*`-A#@#+>2@%S>,0&`?-V1`-\H\0>K<H%SXNS>40#"@&S>,0
- M%2#W%?JQ$,W9$!CWRWO(/D7-Y1`^*\M\*`9\[41G/BW-Y1!\!B\$U@HP^\8Z
- MW7``W2,8#/U^`/TCMR`$_2L^,-UW`-TCR?WE+"T@#@8,_38`,/TC$/BOPWT1
- MQ<NX?=G6@&^?9Q%-`,WU!A$%`!E\_MD@`3S]=P#M1,U`$GW^@3`&S;,2_34`
- MR_@^A)4N`"@(S7H+RQT](/C]?@#U/@P(>!\?'Q_F#\8P_7<`_2-XY@]'Q=7E
- MRR7-APO+)<V'"^OC&='C[5KKX>/M2D1-X<LES8<+"#T@R/'!_>')_>7A7Q8`
- M&7XV`/XUV!WZG!$K?CQW_CK8-@`8\38Q(S8`#,G9`0``V<UR"]U^`,VF!/XN
- M(`S9RW`WP,OPV=TC&.K^12@AS3D2,%0(S;,2V`C9Q6\F`,T($,WI"=G!V,MP
- M*`$-V1C7S1X2V-G+X-TCW7X`_BLH!OXM(`3+Z-TCS382/]A/W2/--A(P"MTC
- M5WF'AX&'@D_+:"@$>>U$3]G9><:`_EK8_J8_V,7=Y7G-0!+=X=G!V<G=?@#6
- M,#_0_@K)];?R1Q+M1/7+/\L_/"'Z_Q$&`!D](/SKW2%W$MT9S7,/\>8#*`CU
- MS;,2\3T@^/&W\I<*V</U"H$``````(X```!`')L``""\/J@`$*74:+8$O\D;
- M#L.LQ>MX+=#-SAO"4][Y>#D_`>LKJ*W%'?C)>\Z70'VWR,OXQ=5\S7H+S7H+
- MA&?C[5KKX>/M2D1-X3`&S7L++#?(?<8#;\NXR0X!&`(.`,T_$QJ^(`@C$Q#X
- M>>X!3R%``#GY:28`W>D.`1@"#@#-/Q,-(`'K#@`:MKX@XB,3$/<.`1C:S3\3
- M&K9W(Q,0^>OYW>G-/Q,:+Z9W(Q,0^!COS3\3&J9W(Q,0^1CC_>'=X2$``#GK
- M(2``13G]Z=WA(2$`.7ZW*`.O&`8K1LVZ!:8A(@`Y^2$``"@!(]WI/J\RZ`#]
- MX2K2``80S>(%KQ+A(N(`_>5\MR`&/B(RT`#).N@`MR@*S;83(`4JX@!WR<WR
- M`RKB`#8`$0P`&>LA7``!)`#ML,D&!B'F$\7E!@/M6](`$QK^("CZ&LVF!)8H
- M"N'!$00`&1#CM\DC$Q#KP<$:_CK`?LE#3T[!5%)-P4M"1(),4U1#0558Q%53
- M4L4^KS+H`,UI%#K0`+?`*N(`RZY^Y@_`S3`4.M``M\`JX@`ZZ`"W`8"`*`,!
- M0`!Q(R-PR<U:%"KB`!$,`!GK.N@`MP$/`2@*U0X3S04`T0$6\<7-!0#!/,!X
- M,M``R2KB`!$8`!D&`(Q#[R2+B`'[F#\#+=B@*/AK-QA;-#!<8`\M^R"KB
- M`.41#``9ZPX0S04`X3P@!3[_,M``-@#)XR+D`./E(<(`(N(`X<GC(N0`XR+B
- M`,M^P#X",M``R>,BY`#C(N(`RW;`/@,RT`#)/J_C(N0`X^4AP@`BX@#+KO7-
- MZ!3QMR@#S>$!X<D&`"'1`'[^?S@"/GY/-GXJT@`BU``6`,WA`W<>`?X(*#;^
- M?R@R'?X8*"W^&R@I_AHH-OX-*#C^(#`1_@,@V3K=`+<HT]TJY`##%B!YNBC(
- M?A0CS<D#&,`5^OT4*\T``@@@"``=*+$8[P0%**L8!`0%(`0V&A@(S>$!-@TC
- M-@HC(M8`R2KB`#K0`+<@>7[+;R!PY@\@+B,C?K?REQ4.%.7-NAGA*`CE$2X`
- M&38:X:]W-,8N7Q8`&7[^&B`]*N(`(R,U](!LJU`#M6]8`M^U2.`4&_\WJ
- M%"K4`'XC(M0`&!<](`;-HP!]&`X]/2`&S:\`?1@$S;4`?2KB`,ON(W<KR2-^
- M*\D^&LGE*N(`?N8/_@8H)\UK%?XA,`C^&B@$RZX8\1%=``8>Q=7-:Q71P?XA
- M.`;+KA(3$.^O$N')W2%=`-U^`+?(!@#^+<`$W2/).`7=?@"WR#X0,M``-\GE
- MS6L5RZ[A=\D^KT_%S?`5P<TD%LC%Y<WW!]'!S386V`7,@P?K<PP-(`(C<NO)
- MS?`5S206R,7ES:,1V>'!S386V`79S(\*V</1!>7K#@#%U<UK%='!_@TH"_X:
- M*`?+K@P3$A#JX7')S6L5_AHH$\NN_@HH#?X-(._-:Q7^"B`"RZ[)*N(`3SK0
- M`+?`?N8/(!`C(^5^QBY?%@`9<>$T\!@H_@8H%>$&`,7E/<JF`#T]RJD`/<JL
- M`,.R`"KH`#KJ`+[(-%X6`!EQR2KB`",C?K?(-@`.%<VZ&<@^\#+0`,E]P\86
- MP='%W2K2`,M\*`;-@P?K&`[KRWPH"<V#!]TV`"W=(]7-Q@?AS<@$[5O2`-WE
- MX;?M4DWKD3@.*`Q'Y3X@Q<W&%L$0]^%!!`7(?L7ES<86X<$C&//!T=GAT<'9
- MQ=TJT@#5S2<0&+[!T<7-R`3+0R&A%PX$(+\AI1<.!1BX5%)5149!3%-%S<@$
- M(0(`.4XCS5D7T?G5R>%^([<H#$=^Q>7-QA;AP2,0]>D^#<W&%CX*P\86$0T!
- M&`T1#0`8"!$:`1@#$1H`(N(`RWXH'-7-:Q71NR@0_AHH#/XA,`P4%2@(RZX8
- MZ"$!`,DA``#)/J\RZ`#M4^8`S7H8.M``M\#-,!0ZT`"WP"KB`#;0(R-W$08`
- M&7<C=Q$D`!EW(W<1UO\9.N@`MR`;Y0$$`*_-"1GA(R-.(T8JY@"W[4+(/I`R
- MT`#)Y:]W(W<C[5OF`',C<N$!!``^`\,)&2+B`'[FP,C-KADJX@`1+0`9KW<C
- M=Q'4_QEW(R,!!``^`<T)&<VN&<.!%.,BY`#C(N(`?N;`P#X$,M``R3K0`+?`
- MY<U:&NNW[5+A,!"OS0D9*N(`$0@`&33`(S3)/IDRT`#).M``M\#ES5H:M^U2
- M/@$@$"KB`!$$`!DT(`0C-"@(/@/AS0D9&,CA/O(RT`#),ND`ZRKB`,MF*"_+
- MICKI`,M'*!@C(WXK*[<@$#KI`,M/(!=XMR`3>;?Z0QG%U0XAS;H9T<$@42KB
- M`#KI`,M'*`++[B,C?L8NU5\6`!G1UB[-FAGMH.)F&3SR7!D]/,V:&2KB`",C
- MYG]W(!;%U>7-KAGAT<$@%=41*P`9T30@`B,T>+'"#1GKR3Z9`3[P,M``R?4Z
- MZ0#+1R@!Z_')(N(`S:X9R!CF#B(JX@#+YLMNR,NN*N(`Y<41,``9ZPX:S04`
- MP>$1#``9Z\T%`+?)P='M4^(`Q>7-6AK1M^U2.$`JX@`!!@`)3B-&(W,C<LTL
- M&@$$``DP`1-]YG\IZ^UJZU-<*N(`(R-W`2L`"4XC1NNW[4()R-7ES:X9T>%R
- M*W/)/I$RT`#)U=GAV2$``%1=/A`IZ^UJZ]DIV3`$"3`!$ST@[\G-71JW[5(A
- M``#`(\G-71KKR2KB`!$$`!E>(U8CU4XC1B->(U;AR3ZO,N@`S;`:.M``M\#-
- M,!0ZT`"WP"KB`#;`Y1$,`!GK#B/-!0#A$2T`&:].=R-&=Q'6_QEQ(W`C-H`C
- M=R-W(W?)(N(`?N;`R,.!%#XB&`(^(41-(?``(N8`W>'1X=WEQ<W]&L$ZT`"W
- MP"KP`.U"R#KI`/XA/IDH`C[P,M``R3XB&`(^(2+F`-WAP='AW>4RZ0`BX@!^
- MYL#*L!@JY@"O=R-W>+$H.<75#AK-!0`JX@`1#``9ZSKI`$_-!0#1P;<@'M4J
- MX@`1+0`9-"`"(S31(8``&>LJY@`T(`(C-`L8PRKB`!$M`!E.(T81VO\9<2-P
- M$?S_&58K7NNW[4+0ZW$C<,G!T>U3X@#%Y<U:&M&W[5+:)AHJX@`!"``)<R-R
- M`20`"7,C<LG-3!S`$0P`&>L.$\T%`#S`_]X2K2``80S>(%KQ+A_>7-3!S`
- MY<WR`^'E$1P`&>LA7``!#`#ML.$1#``9Y>L.%\T%`-$\*`DA7``!)`#ML,D^
- M`3+0`,D^KS+H`,U,',`ZV`"W/B$HZRKB`!$,`!D17``!)`#ML!%<``X/S04`
- M/"C/(3,<$;```1D`[;`1``$ZZ`"W(`3M6P$!,0`!P[``U0X:S04`$5P`#A3-
- M!0#1(8``&>NW*.D8-R+B`'[F#\@^(#+0`,DBY@#M4^@`Z^$BX@!.<R-&<NNW
- M[4(H6NLC$5P`.MP`$A,!"P#ML`88KQ(3$/SE$5P`#@_-!0#1/"@_*N8`(GT`
- M[4OH`,75#AK-!0`17``.(<T%`-'!MR`A*GT`(R)]`"&``!GK"WBQ(-L17``.
- M$,T%`"KB`!$-`!GIW2KB`#[PPRD@S<@$_A'0,MP`R2+P`.OAXR+R`!,3$WOF
- M_%\AW@`B^`#=*MX`W6X"W68#?;0H2.U2,`_=;@#=9@'EW2+X`-WA&.,@"MU>
- M`-U6`=WE&!M-1-UN`-UF`=WEW1G==0#==`'=<0+=<`/=Y=$J^`!S(W+1*O(`
- M<R-RR=WEX1DBQ``J\``!!``)W>7!"=IU'>U+Q@#M0@$``"$``-HP'3[_PR<@
- MZ^'C?B-F;Q,3$WOF_%_K(O``*MX`Y=WAM^U2,%+=;@#=9@'EM^U2,`3=X1CP
- MX=7]X>U+\`#]<0+]<`/]=0#]=`'=<P#=<@'=Y>'=3@+=1@/-!!XH"=U>`-U6
- M`=7=X=WEX=U.`MU&`]U>`-U6`1@;*MX`[5/>`-7=X=UU`-UT`>U+\`#=<0+=
- M<`/K";?M4L#5_>$JQ`"W[5(H&_U^`-UW`/U^`=UW`?UN`OUF`PG==0+==`.O
- MR=WEX2+$``8$-@`C$/O)S4L>*O0`R<U+'BKV`,DA```B]``B]@#=*MX`W4X"
- MW48#>;`H'BKT``DB]``J]@"W[4(P!.U#]@#=;@#=9@'EW>$8V"K&``'[_PGM
- M6\0`M^U2V.LJ]``9(O0`*O8`M^U2T.U3]@#)[5O$`',C<LE>(U;K(L0`(MX`
- M!@0V`",0^\D^KT\BZ`"O=S+0`'@RZ@`JX@`B[0`A1A\BX@#A(N0`X0P-(`7-
- M)A<8`\UY%RKM`"+B`"KD`.D^KS+L`"+H`"KB`"+M`"%&'R+B`.$BY`#A(NH`
- M(5P`!A[-X@6O$BKJ`#KL`+<@!<U.%A@#S7(6(=``?C8`MV=O*`C=Y>$17`#M
- M4NLJZ`!S(W(8H\8`[5\RRP#)Z]WAP>%XL2@+<PMXL2@%5%T3[;#=Z41-W>'1
- MX7BQ*/3M4ADP[0L)ZPGK`^VXW>E5%!4H`\V=']WA3P8`+V\F_SGY<2/K#`TH
- M`NVPW>D6`"&``#X?1K@P`@8?(PX`!`4H#7[^("@$_@D@!",%&.]=!`4H#7[^
- M("@(_@DH!",%&.]]DR@$#!4@U6DF`%3)T<'5+6$EPZ("?<VF!&_)*@$`&1D9
- MZ2'0`'XV`&\F`,G-%@-\M<@ZW0#UKS+=`,T@`_$RW0!]_@/`W>$1`0`8$3K0
- M`+?(W>%?%@$8!=WA7Q8"U<UZ`]&O,MT`*LX`?+7=Y>'M2\P`[4(!%0`)(LX`
- MMR`'U=7ES=D`T7JW(!3-``)>0PT*57-E<B!B<F5A:P`8*ST@"\T``@T*22]/
- M`!@.S0`"#0I2=6XM=&EM90#-``(@97)R;W(@`'O-M`3-``(L(%!#/0`JS@#-
- MKP08%<T``DYO="!E;F]U9V@@;65M;W)Y`,T``@T*4')O9W)A;2!A8F]R=&5D
- M#0H`.M@`M\J.)\,``.'1T>DQ``$A@'\!`/_-9`,AD2@187P!`(`^`<W4!,-T
- M*`###B$``($``0```````/WAX2)9??WE*@<A)@#+1<JM(2$``'TR!R$A2'_E
- M(4=^S3H%S7`3(4A_S7`:S?$?Y2$``-'-D@;+1<J$(<V;%,VZ%P5&:6QE("%'
- M?LTZ!2$``,VJ%\VZ%Q4@;F]T(&9O=6YD+B`@06)O<G1I;F?-S1?-&R##U"`A
- M2'_-71HB"B$A3WWE(8(`S>4<(0``ZRI/?7,C<BI/?2(,(2$``"(#(2H,(2)/
- M?2H%(>4A@`#1S<P&RT7*GR(J3WU>(U;KY2$``-'-D@;+1<KZ(2I/?5XC5NLB
- M37TA3WWE(8(`S7H=*DU](D]](0$`(@4APY\B(4]]Y2&"`,UZ'2$``")/?2$`
- M`"(((2H#(>4J"B'1S>`&Y2H((>4A"`#1S>`&T7VC;\M%RIDB(4M]Y2&"`,WE
- M'"$``.LJ2WUS(W(J3WWE(0``T<U_!LM%RF,B*DM](D]]*D]](DU]PW,B*DM]
- MZRI-?7,C<BI+?2)-?2%(?^4J37T1`@`9Y2$!`,V^<("H((2,B""$J`R$C
- M(@,APQ`B(0$`(@4A*D]](@PA*D]]Y2$``-'-D@;+1<K<(BI/?1$"`!GE*@4A
- M*]$9;B8`ZRI9?7,J!2$C(@4A(0$`?3);?</K(B$``.LJ67US(0``?3);?2I;
- M?28`R?WA!E`A^GS-X@7]Y2'Z?,TZ!<V;%"$``,VJ%\W-%\T;("%(?\VP<
- M("&8?LUI%,T;(,/4(,G#U27-FQ_E(0$`T<W@!LM%REHCS4T%&$YO(&EN<'5T
- M(&9I;&4@<W!E8VEF:65D+LWQ(B$!`,U]'P90(4=^S>(%S9L4S;H7$%5U96YC
- M;V1I;F<@9FEL92`A1W[-.@4A``#-JA?-&R`A+@!E+@'E(4=^S3H%S;(((N!\
- M*N!\Y2$``-'-?P;+1<K"(R%'?LTZ!090(?9]S>(%P]LC(4=^S3H%(0$`Y2K@
- M?"O-:P@&4"'V?<WB!<U-!0,V-#0&4"&E?<WB!<V;'^4A`0#1S<P&RT7*9B0A
- M`@#ES9L?T<UF!GJSRF8DU2+@?"K@?,U]'P90(8]\S>(%(8]\Y2$!`-$9;B8`
- MY<V!!2$P`.4A.0#-FP7-3Q/+1<I/)"&/?,TZ!090(:5]S>(%PUTD(8]\S3H%
- M!E`A]GW-X@4JX'PCT1O#!20A+@!E+@'E(?9]S3H%S;((Y2$``-'-?P;+1<J<
- M)"'V?<TZ!<U-!00N=75ES3T(!E`A]GW-X@4AF'[E(?9]S3H%S6\3S1L@S9L4
- MS;H7"2!T;R!F:6QE("'V?<TZ!2$``,VJ%R$N`,TB%\W-%\T;("&8?LW_$\WQ
- M'^4A``#1S7\&RT7*FB7-FQ3-NA<23W9E<G=R:71E(&-U<G)E;G0@(?9]S3H%
- M(0``S:H7S;H7"#\@6UDO3ET@S1L@(;H`S:D4(8Y\S406S1L@*HY\)@#-Y!]]
- M,HY\*HY\)@#ES8$%(5D`S9$%(4X`S9$%S4\3RT7*'B4JCGPF`,V;%,TB%\W-
- M%\T;("J.?"8`Y2%.`-'-?P;+1<J:)2'V?<TZ!<U-!1$@;F]T(&]V97)W<FET
- M=&5N+LT]",WQ(B&8?LUI%,T;("&8?LW^$\WQ'^4A``#1S<P&RT7*U"7-304+
- M0V%N)W0@;W!E;B`A]GW-.@7-/0C-\2+)S2LC(0``(I]](0``(J-](0``(J%]
- M(9A^S;H4S;H7!6)E9VEN(2``S2(7(:5]S3H%(0``S:H7(2``S2(7(4=^S3H%
- M(0``S:H7S<T7S1L@R<-F)OWAX7TR@WS]Y2J#?"8`Y2$@`-'-?P;+1<I4)B&8
- M?LVZ%"%@`,TB%\T;(,-E)B&8?LVZ%"J#?"8`S2(7S1L@R<V;%"$N`,TB%\T;
- M("J??>4A(`#1&>7-)R8A``#E*J-]*]'-9@9ZL\JM)M4BA'PA8WWE*H1\T1EN
- M)@#ES2<F*H1\(]$;PXLF(9A^S;H4S<T7S1L@(0``(J-](0``(I]]R2JC?>4A
- M/`#1S7\&RT7*V2;-)"8A7'WE(0``T1GE(6!]Y2$``-$9;B8`Y2$"`-'-5@?K
- MX7,A7'WE(0$`T1GE(6!]Y2$``-$9;B8`Y2$$`-'-3@?E(6!]Y2$!`-$9;B8`
- MY2$$`-'-5@?1&>OA<R%<?>4A`@#1&>4A8'WE(0$`T1EN)@#E(0(`T<U.!^4A
- M8'WE(0(`T1EN)@#E(08`T<U6!]$9Z^%S(5Q]Y2$#`-$9Y2%@?>4A`@#1&6XF
- M`.4A/P#1?*)G?:-OZ^%S(0``Y2$#`-'-9@9ZL\K<)]4B<7PA8WWE*J-]T1GE
- M(5Q]Y2IQ?-$9;B8`Y2$_`-%\HF=]HV_E(2``T1GKX7,JHWTC(J-]*G%\(]$;
- MPYDG*I]]Y2JA?=$9(I]](0``(J%]R2JA?>4A`P#1S7\&RT7*`BC-QB8A8'WE
- M*J%]T1GES0`A?>X!;WTR_R`JH7TC(J%]R2JA?>4A``#1S<P&RT7*,BC-QB8J
- MHWWE(0``T<W,!LM%RDLHS20FS20FPTXHS20F(9A^S;H4S;H7`V5N9,W-%\T;
- M("&8?LUI%,T;("%(?\VP<(,G-*",J_R`F`'WN`6_+1<J+*,WO)\-W*,T?
- M*,/4(`%O?3+_("JA?2,BH7W)*J%]Y2$``-'-S`;+1<K,!LW&)BJC?>4A``#1
- MS<P&RT7*S`;-)";-)";#0"C-)"8AF'[-NA3-NA<#96YDS<T7S1L@(9A^S6D4
- :S1L@(4A_S;`:S1L@R<TH(RK_("8`?>X!;P`!
- `
- end
- 15-Jul-86 13:56:42-MDT,23769;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Tue 15 Jul 86 13:55:38-MDT
- Received: from brl-smoke.arpa by AMSAA.ARPA id aa03582; 15 Jul 86 13:55 EDT
- Received: from USENET by SMOKE.BRL.ARPA id a013843; 15 Jul 86 13:47 EDT
- From: Ross Alford <alford%ecsvax.uucp@BRL.ARPA>
- Newsgroups: net.micro.cpm
- Subject: uudecode: source and .com for CP/M
- Message-ID: <1812@ecsvax.UUCP>
- Date: 15 Jul 86 01:09:30 GMT
- To: info-cpm@AMSAA.ARPA
-
-
- This article contains Turbo Pascal source and uuencoded .com versions
- of uudecode.com for CP/M. The encoded version can be decoded by
- UN*X uudecode before downloading. The source requires Turbo with
- built in access to command line arguments (eg 1.0 won't work without
- adding your own parser, not too difficult actually). The files follow,
- separated by --------------CUT HERE-----------lines.
-
- Ross Alford
- ...mcnc!ecsvax!alford
- ------------------------CUT HERE-----------for uudecode.pas----------
- program uudecode;
-
- CONST defaultSuffix = '.uue';
- offset = 32;
-
- TYPE string80 = string[80];
-
- VAR infile: text;
- outf : file;
- lineNum: integer;
- line: string80;
- outfilename : string80;
-
- {Binary file read added by Ross Alford, ...!mcnc!ecsvax!alford. The original
- MSDOS versions of uuencode/decode just use read/write on a FILE OF BYTE.
- CP/M Turbo expects some file info to be stored in the first 4 bytes of files
- of any type other than TEXT. Putbyte (below) and Getbyte (in UUENCODE)
- bypass this 'feature' by using blockread and blockwrite. The only global
- variables either use are 'infilename' and 'inf' or 'outfilename' and 'outf'}
-
- procedure putbyte(b : byte; flush : boolean);
-
- type bufptr = ^bufrec;
- bufrec = record
- next : bufptr;
- buffer : array[1..128] of byte
- end;
-
- const sectstobuf = 8; {max number of sectors to buffer}
- sectswritten : integer = 1; {constants are essentially statics}
- bytptr : integer = 1;
- notopen : boolean = TRUE;
- infsize : integer = 0;
- listsave : integer = 0;
- tempsave : integer = 0;
-
- var list,temp,temp2 : bufptr;
- i : integer;
-
- begin
- if flush then
- begin
- list := ptr(listsave);
- temp := list;
- for i := 1 to sectswritten do
- begin
- blockwrite(outf,temp^.buffer,1);
- temp := temp^.next
- end;
- close(outf)
- end
- else begin
- if notopen then
- begin
- notopen := FALSE;
- assign(outf,outfilename);
- {$i-}
- reset(outf);
- {$i+}
- if ioresult = 0 then
- begin
- writeln('File ',outfilename,' exists. Cannot overwrite.');
- halt
- end;
- {$i-}
- rewrite(outf);
- {$i+}
- if ioresult <> 0 then
- begin
- writeln('Cannot open file ',outfilename,' for output.');
- halt
- end;
- new(list);
- temp := list;
- for i := 1 to sectstobuf - 1 do
- begin
- new(temp2);
- temp2^.next := NIL;
- temp^.next := temp2;
- temp := temp2
- end;
- listsave := ord(list);
- tempsave := listsave;
- end;
- temp := ptr(tempsave);
- if bytptr > 128 then
- begin
- if temp^.next <> NIL then
- begin
- sectswritten := succ(sectswritten);
- temp := temp^.next;
- bytptr := 1
- end
- else begin
- temp := ptr(listsave);
- for i := 1 to sectstobuf do
- begin
- blockwrite(outf,temp^.buffer,1);
- temp := temp^.next
- end;
- temp := ptr(listsave);
- sectswritten := 1;
- bytptr := 1
- end
- end;
- temp^.buffer[bytptr] := b;
- bytptr := succ(bytptr);
- tempsave := ord(temp)
- end
- end;
-
- procedure Abort(message: string80);
-
- begin {abort}
- writeln;
- if lineNum > 0 then write('Line ', lineNum, ': ');
- writeln(message);
- halt
- end; {Abort}
-
- procedure NextLine(var s: string80);
-
- begin {NextLine}
- LineNum := succ(LineNum);
- write('.');
- readln(infile, s)
- end; {NextLine}
-
- procedure Init;
-
- procedure GetInFile;
-
- VAR infilename: string80;
-
- begin {GetInFile}
- if ParamCount = 0 then abort ('Usage: uudecode <filename>');
- infilename := ParamStr(1);
- if pos('.', infilename) = 0
- then infilename := concat(infilename, defaultSuffix);
- assign(infile, infilename);
- {$i-}
- reset(infile);
- {$i+}
- if IOresult > 0 then abort (concat('Can''t open ', infilename));
- writeln ('Decoding ', infilename)
- end; {GetInFile}
-
- procedure GetOutFile;
-
- var header, mode : string80;
- ch: char;
-
- procedure ParseHeader;
-
- VAR index: integer;
-
- Procedure NextWord(var word:string80; var index: integer);
-
- begin {nextword}
- word := '';
- while header[index] = ' ' do
- begin
- index := succ(index);
- if index > length(header) then abort ('Incomplete header')
- end;
- while header[index] <> ' ' do
- begin
- word := concat(word, header[index]);
- index := succ(index)
- end
- end; {NextWord}
-
- begin {ParseHeader}
- header := concat(header, ' ');
- index := 7;
- NextWord(mode, index);
- NextWord(outfilename, index)
- end; {ParseHeader}
-
- begin {GetOutFile}
- if eof(infile) then abort('Nothing to decode.');
- NextLine (header);
- while not ((copy(header, 1, 6) = 'begin ') or eof(infile)) do
- NextLine(header);
- writeln;
- if eof(infile) then abort('Nothing to decode.');
- ParseHeader;
- end; {GetOutFile}
-
- begin {init}
- lineNum := 0;
- GetInFile;
- GetOutFile;
- end; { init}
-
- Function CheckLine: boolean;
-
- begin {CheckLine}
- if line = '' then abort ('Blank line in file');
- CheckLine := not (line[1] in [' ', '`'])
- end; {CheckLine}
-
-
- procedure DecodeLine;
-
- VAR lineIndex, byteNum, count, i: integer;
- chars: array [0..3] of byte;
- hunk: array [0..2] of byte;
-
- { procedure debug;
-
- var i: integer;
-
- procedure writebin(x: byte);
-
- var i: integer;
-
- begin
- for i := 1 to 8 do
- begin
- write ((x and $80) shr 7);
- x := x shl 1
- end;
- write (' ')
- end;
-
- begin
- writeln;
- for i := 0 to 3 do writebin(chars[i]);
- writeln;
- for i := 0 to 2 do writebin(hunk[i]);
- writeln
- end; }
-
- function nextch: char;
-
- begin {nextch}
- {} lineIndex := succ(lineIndex);
- if lineIndex > length(line) then abort('Line too short.');
- if not (line[lineindex] in [' '..'`'])
- then abort('Illegal character in line.');
- { write(line[lineindex]:2);}
- if line[lineindex] = '`' then nextch := ' '
- else nextch := line[lineIndex]
- end; {nextch}
-
- procedure DecodeByte;
-
- procedure GetNextHunk;
-
- VAR i: integer;
-
- begin {GetNextHunk}
- for i := 0 to 3 do chars[i] := ord(nextch) - offset;
- hunk[0] := (chars[0] shl 2) + (chars[1] shr 4);
- hunk[1] := (chars[1] shl 4) + (chars[2] shr 2);
- hunk[2] := (chars[2] shl 6) + chars[3];
- byteNum := 0 {;
- debug }
- end; {GetNextHunk}
-
- begin {DecodeByte}
- if byteNum = 3 then GetNextHunk;
- putbyte(hunk[byteNum],FALSE);
- {writeln(bytenum, ' ', hunk[byteNum]);}
- byteNum := succ(byteNum)
- end; {DecodeByte}
-
- begin {DecodeLine}
- lineIndex := 0;
- byteNum := 3;
- count := (ord(nextch) - offset);
- for i := 1 to count do DecodeByte
- end; {DecodeLine}
-
- procedure terminate;
-
- var trailer: string80;
-
- begin {terminate}
- if eof(infile) then abort ('Abnormal end.');
- NextLine (trailer);
- if length (trailer) < 3 then abort ('Abnormal end.');
- if copy (trailer, 1, 3) <> 'end' then abort ('Abnormal end.');
- close (infile);
- putbyte(26,TRUE)
- end;
-
- begin {uudecode}
- init;
- NextLine(line);
- while CheckLine do
- begin
- DecodeLine;
- NextLine(line)
- end;
- terminate
- end.
- --------------------CUT HERE------------for uudecode.uue-----------
- begin 600 UUDECODE.COM
- MP^(@S:M#;W!Y<FEG:'0@*$,I(#$Y.#4@0D]23$%.1"!);F, ! "A0@
- M *3D5#(#@T
- M,#%,4R!H:6QI=&5E9610$ )&UL_,FP;9QLJ !M6
- M 0;/0 !(" $ P ALJ !!L](" AM%10T
- M AM2?P "&U0 "&R@Q "&RDQ 'ZW-\@C]>5^S>@!X?$]R!CS
- MS0 "#0H R6_ES:8 R?Z W&L"U(0"YG\8[N4A[@$8!.4AZ $B$P+AX_7%U7XC
- MMR@'Y<WH >$8]-'!\>/)?;3(.B0!AX>'X^/CX\4!T@3!/2#T*QCHS= !V"K.
- M 1C?]<75Y2&H <TU B&B <W0 2JZ =0= N'1P?')]<75Y2&T 1CI]<75Y2&N
- M 1C@]3K@ +<H$,75Y:\RX AR '--0+AT<'QR?4ZX #^_RCVQ=7E/O\RX A
- MP@$8X_7%U>4AO $8VO7%U>7E$? (8L! 1 [;#1.IX!3SJ< 8+5S=P"T3J?
- M 4\ZG0S=P"(? S= !*J !S1T"X='!\<DA\ & GK(9L!-#4H A+)&QLA
- M"@,& RL.+PR6,/R&]7G^,"@!$A/Q$.W) 0ID(6L!PS4"(7L!PS4"$0, S5\#
- MY@$8!A$& ,U? V\F ,D1$@ 8]!$, !@($0\ & ,1"0#AP>4ZW0"W*!K5Q<V@
- M 'RU* _-X0/^$R (S>$#_@/*U"#!T2H! !GI(M( >#+= 'FW* L^PS(X "'[
- M'R(Y "&E Q&@ $8 .VP(;T#$;@ 0P [;"O;V<RT BU BU@ ^?C+1 #+@
- M ,G#%@/#( /#.0/#+P/#- /#*@/#.0/#( /! (( 0P#$ ,4 P0#%U>7=Y?WE
- M]6\F .7-I@#Q_>'=X>'1P<G%U>7=Y?WES:, ?1CK#O\8# X [5O2 !,:_B H
- M^B%E 8#S7L$&LVF!/Y!.!+^43 .1Q,:_CH@!GC60!,8 ANO(5P =R,,#2@9
- M&LV"!" 3_C\H#_XJ* O^+B@'!@O-=P08$ 8(S5X$&OXN( 83!@/-7@0A: &
- M (Q#[R1H,#2@(_C\H"?XJ* O-@@0H"W<C$Q#IR1,^/Q@"/B!W(Q#\R<VF
- M!/X@. WEQ2&8! $. .VQP>')O\D@+BP[.CT_*EM=/#Y[??YAV/Y[T-8@R7S-
- MM 1]]1\?'Q_-O03QY@_&D"?.0"?#R0.O-\M\P'RW?<@^_\DRV #%S:\>P2H&
- M +?M0MJH(.O1^0$ _ DBQ@"O;V<BS@ RW ^PS+9 "'>("+: .LBS #IY2K&
- M +?M0B+& .U;Q "W[5(9Z^':=1WML,DJQ@#ML"+& -G)7B-6(]5>(U8C3B-&
- MX<G=X>L:3P8 +V\F_SGYZP/ML-WIT1I/!@ O;R;_.?GK ^VPZ=WAZR'@_SGY
- MZ\4$!2@%KQ(3$/SML,$^()"1* 9'KQ(3$/S=Z=WA(>#_.?D&(*]W(Q#\W>G=
- MX47-N@6V=]WIW>'1?9,X]SQ/0\VZ!5]!K[/+(S &MG<CKQX!$/,8W7CF^ \/
- M#\8";R8 .7CF!SQ'KS<7$/W)Y=GKXW,C<B/1<R-R(W$C<,G=X7CK(0 1#E.
- MY0DCX[DX 7D2$R.W* -/[;#A^=WIW>%X(0 1#E.Y0DC7B-6&-S=X>MH)@!$
- M.>VP(2 .?G=Z=WA(2 .5XC5F@F $0Y[; A(@ 8Y]WAZW@O;R;_.?EP(T@&
- M .OML-WIM^U2&=@^D,,G(+?M4K?M0C #"1G)/I'#)R"W[5+K$^IQ!O 8 ?@1
- M #)U>NW[5+KX1CKM^U2(0$ R"O)S=\+&/7-L D8\+?M4B$! , KR<W?"QCU
- MS; )&/#-<@<A 0#0*\G-WPL8]<VP"1CPS7('(0$ R-@KR<W?"QCTS; )&._-
- M<@<A #(V"/)S=\+&/3-L D8[\UR!R$! -@KR<W?"QCUS; )&/!474M"ZR$
- M 'JW/A @ U,^""GK*>LP 0D](/;)?+7* PI\JO7-@ ?KS8 'ZT1-KV=O/A'M
- M:NU", ()-S_+$\L2/2#PZ_'P&$CES9('RSS+'='KS0\'Z\MZR!@US6$'R"D0
- M_<G-80?(RSS+'1#ZR>MZMR (>_X0, -'M\FO9V_)ZWRJ?/I^![K ?;O)%\G+
- M?,A\+V=]+V\CR7WF 6\F ,GM2\H [5O( ,75>$%*4QX '\L8RQG+&LL;X1GK
- MX>U*1$TAZ6(9(L@ ZR$9-NU*(LH 1$W)!@ 1$"?-X@<1Z /-X@<19 #-X@<>
- M"LWB!WT8#:\\[5(P^QD$/2 "!<C&,-UW -TCR=U^ -8D3R$ " "W2/=?@#-
- MI@36,#@I_@HX#@P-("'6!_X*.!O^$# 75%TIV"G8# T@ E1=&=@IV%\6 !G8
- M&,MYM\A\A\G=X>'E?28 (SE.@3@<=^LA !$[4(Y^>OE ^VPZ^$K&T\#[;CK
- M(_G=Z3X0PRD@W>'-R 17X<W="5_AY7V3.!H4%2@6NC@62@8 8#E[@E1=/6]@
- M.7GMN.L8":\8 SQK+28 .7?YW>G=X>'E?28 (SGY;R8 W>G=X2$ %0Y7DLC
- MY1E>0R/E&>7]X='A>9 X$#Q/Q=7E&KXH#.'1P2,-(/(A 8#B,3$.S1X<$A
- M YZ^U2_?G=Z=WAS<@$3^'-W0E?X7Z3.!L,#2@7D3@2]7Z1=P8 4!E470GQ
- M/$_ML!@"'7/=Z=WAS=T)3]'M4^@ (0 .1KUAC@#N#@!>!+Q5UZ1."\\;WJ#
- M. 2X?3@(>),X)I$X(SRW*!_%U2KH %\=%@!"&0G1U>50&>OA3^VXT<$8!7H\
- M*!E/>)$\NS@!>[<H#BKH 8 ">LA 0 Y3^VP(0 5#E>$QGYW>G=X>$MPF8(
- M;"8 W>DA @!4.5X3&7XV 2-WR2$$ %0Y7DLCY1E>0R/E&>7]X='AK[@H!+D@
- M"'BYX=']^=7I&KX@]B,3!0T8YWRW( -]M\ ^$<,I(,T-"M ^ <,G(,V!"ACU
- MS:P/S9<*&.W9?;?9/@+*)R#-]0H8W]G+>-G"B K9?;?9R-G%U>79?;<@!=G+
- MN!A4Q<OXKPC9R_A]V94H$S &[40(/0C9S7H++#T@^0@H =GQYH @#\V2"S E
- MS7L+MRP@'C<8(,W&"S_U*! X =G-K O+>" )S88++2#VS7(+\3@"R[BWV>'1
- MP=G)V<MXV<(4"LV/"LT4"M@L+<AX[H!'R=E]M]G*<@M]M\C9A=G-30O%U>7=
- M.<UR"]DN!=D^"-TCW6X ",L=, /-D@O->PL(/2#QV2W9(.7=;OO+>" )",V'
- M"RPM* $M\?'QMPCQV<'AV=WAR[BP1RPMS'(+",E]M\C9E=D_S4T+Y>7EW3G9
- M+@79/@@(S<8+. /-K L_RQ4(/2 ,W74%W2O9+=DH#CX(S88+,-\(S:P+MQCA
- MS88+. 3-Q@L_X='!RW@@!<V'"QB:+""7-QB5. ;&@#@&&!O&@#@7;]WCV>7%
- M>,OXV:CF@/7+^-WEW2$ ,GAV*]O1T]77V?)M\L8RQG+&LL;RQS)M\L4RQ/+
- M$LL1RQ#)?-F$V6=[V8O97WK9BME7>=F)V4]XV8C91\E\V9399WO9F]E?>MF:
- MV5=YV9G93WC9F-E'R7C9N-G >=FYV<!ZV;K9P'O9N]G ?-F\V<G9>-FH\ND+
- M>!?)RW@H!LWS"\@_R7W9O=G M\C#Q@M]UH':<@L\_BC0V<75Y0C-<@L(-\U[
- M"ST@^=E\V:399WO9H]E?>MFBV5=YV:'93WC9H-E'PWL*V<75Y=G-K _9S?T+
- MV<V!"ACK?;?(RW@^ \(G(,VL#WW&@,LOQH!OUA3UV<75Y<WU"LT-"BW%U>7-
- M@0I]X='!V>'1P>.\XS#C\=G)V<V.#RW-@0K9S8X/+-E]_FS8Q<NXS=\+P3@)
- MS?4*S30,S9<*RW@H \T-"MDMV<W?"_4X \V!"MDMV<W?"S@%V2S-@0I]_FPX
- M.]D!JBH1JJHA?ZK-EPK=Y=TA!PT^!<TT#]WAS:P/S9<*S9<*Q=7EV<VL#RTM
- MV2W-#0K9X='!V<V!"BPL\2PMR-AX[H!'R6>J/RLRUVZV*AWO.'0-T -T'J(
- MB(B("'ZKJJJJJBPM/@3*)R#+>,(G(-G-F _9?2Z!E?7-]0K9S88/V<V!"L75
- MY=DLS0T*V>'1P<WU"MWEW2&,#3X&S30/W>$LV<VB#RW9S0T*\<75Y6\F # !
- M)<T($-DLS9<*V>'1P<T-"GW^9]IR"\E]BIW8B1U]Z:*++CI]CN,XCF-^29(D
- M21)^S<S,S$Q_JZJJJBK9S:(/V;?+>/7+N,WU"GW^B#!'Q=7E+,W0#^7+/,L=
- M?>'US0@0+"TH 2W9\>'1P?7-@0K=Y=TA$ X^",U)#]WA\3 *]=G-F _9S9<*
- M\85O. GQR-G-A@_#]0KA/@'#)R!M+AT18#%P1BS^Y7]T-GR)A"%W4SS_PRYZ
- MTGU;E1U\);A&6&-^%OSO_76 TO<7<C%]M\C=Y=G-A@_9K\MX* ,\R[CUS=\+
- M. C9S?4*\<O_]=D!SP81CNDA?DK9S=\+, 7-+@\83]TAS@X^ @C9$1( W1G-
- M<P_9S=\+. L(/2#LV1$, -T9V=G-;@_+^,T-"L75Y<US#\V7"MG-A@_-#0K9
- MX='!S?4*W>7-+@_=X=G-;@_-#0KQ%S *]=G-C@\MS8$*\=WART_(R_C)?^?/
- MS!-4?_;THC )?VK!D0H&@+6>BF]$@((L.LT3@&K!D0H&@0 @"&BV@])
- M?>BBBRZZ?8[C.(YC?DF2)$F2?LW,S,Q,?ZNJJJJJW2$*#SX%Q=7E]<VL#\V7
- M"O'-20_9X='!PY<*]=G-;@\8$/79Q=7ES6X/S0T*V>'1P=G-EPKQ/2#IV<V&
- M#\,-"A$& -T9W6X W68!W5X"W58#W4X$W48%R2&! $1,5%S) 0])$:+:(8(A
- MR0$$-1$S\R&!^LD!<C$1]Q<A@-+)Q=7EV>'1P<G-D@<A@ ^(,MX( W+(\L2
- MRQ'+$"T](/!OR[C)RWC9S88/* ++^"W-#0JWRWTH',MX",OX/H^].!8H!LUZ
- M"RP8\\UZ"PA@:<C#@P<A #)/I+#)R!\M<IR"\M\",V !SZ0*3W+?"CZ1$T1
- M !B;PC R[C)S<@$ZQX . 3^&3@8'<W(!-G+>-D6!R@!%)(P :_^"3@"/@D\
- M5]79_2%= -WES>L0W>'13WH\RWL@$('R:Q#]-@ & O^##@"/@O5S8 1T<MX
- M* 4^+<WE$,M[* -A#@#+>2@%S>,0& ?-V1 -\H\0>K<H%SXNS>40#"@&S>,0
- M%2#W%?JQ$,W9$!CWRWO(/D7-Y1 ^*\M\* 9\[41G/BW-Y1!\!B\$U@HP^\8Z
- MW7 W2,8#/U^ /TCMR $_2L^,-UW -TCR?WE+"T@#@8,_38 ,/TC$/BOPWT1
- MQ<NX?=G6@&^?9Q%- ,WU!A$% !E\_MD@ 3S]=P#M1,U $GW^@3 &S;,2_34
- MR_@^A)4N "@(S7H+RQT](/C]?@#U/@P(>!\?'Q_F#\8P_7< _2-XY@]'Q=7E
- MRR7-APO+)<V'"^OC&='C[5KKX>/M2D1-X<LES8<+"#T@R/'!_>')_>7A7Q8
- M&7XV /XUV!WZG!$K?CQW_CK8-@ 8\38Q(S8 #,G9 0 V<UR"]U^ ,VF!/XN
- M( S9RW WP,OPV=TC&.K^12@AS3D2,%0(S;,2V C9Q6\F ,T($,WI"=G!V,MP
- M* $-V1C7S1X2V-G+X-TCW7X _BLH!OXM( 3+Z-TCS382/]A/W2/--A(P"MTC
- M5WF'AX&'@D_+:"@$>>U$3]G9><: _EK8_J8_V,7=Y7G-0!+=X=G!V<G=?@#6
- M,#_0_@K)];?R1Q+M1/7+/\L_/"'Z_Q$& !D](/SKW2%W$MT9S7,/\>8#* CU
- MS;,2\3T@^/&W\I<*V</U"H$ (X ! ')L ""\/J@ $*74:+8$O\D;
- M#L.LQ>MX+=#-SAO"4][Y>#D_ >LKJ*W%'?C)>\Z70'VWR,OXQ=5\S7H+S7H+
- MA&?C[5KKX>/M2D1-X3 &S7L++#?(?<8#;\NXR0X!& (. ,T_$QJ^( @C$Q#X
- M>>X!3R% #GY:28 W>D. 1@"#@#-/Q,-( 'K#@ :MKX@XB,3$/<. 1C:S3\3
- M&K9W(Q,0^>OYW>G-/Q,:+Z9W(Q,0^!COS3\3&J9W(Q,0^1CC_>'=X2$ #GK
- M(2 13G]Z=WA(2$ .7ZW* .O& 8K1LVZ!:8A(@ Y^2$ "@!(]WI/J\RZ #]
- MX2K2 80S>(%KQ+A(N( _>5\MR &/B(RT #).N@ MR@*S;83( 4JX@!WR<WR
- M RKB #8 $0P &>LA7 !) #ML,D&!B'F$\7E!@/M6]( $QK^("CZ&LVF!)8H
- M"N'!$00 &1#CM\DC$Q#KP<$:_CK ?LE#3T[!5%)-P4M"1(),4U1#0558Q%53
- M4L4^KS+H ,UI%#K0 +? *N( RZY^Y@_ S3 4.M M\ JX@ ZZ "W 8" * ,!
- M0 !Q(R-PR<U:%"KB !$, !GK.N@ MP$/ 2@*U0X3S04 T0$6\<7-!0#!/,!X
- M,M R2KB !$8 !D& (Q#[R2+B '[F#\#+=B@*/AK-QA;-#!<8 \M^R"KB
- M .41# 9ZPX0S04 X3P@!3[_,M -@#)XR+D ./E(<( (N( X<GC(N0 XR+B
- M ,M^P#X",M R>,BY #C(N( RW; /@,RT #)/J_C(N0 X^4AP@ BX@#+KO7-
- MZ!3QMR@#S>$!X<D& "'1 '[^?S@"/GY/-GXJT@ BU 6 ,WA W<> ?X(*#;^
- M?R@R'?X8*"W^&R@I_AHH-OX-*#C^(# 1_@,@V3K= +<HT]TJY ##%B!YNBC(
- M?A0CS<D#&, 5^OT4*\T @@@" =*+$8[P0%**L8! 0%( 0V&A@(S>$!-@TC
- M-@HC(M8 R2KB #K0 +<@>7[+;R!PY@\@+B,C?K?REQ4.%.7-NAGA* CE$2X
- M&38:X:]W-,8N7Q8 &7[^&B ]*N( (R,U](!LJU #M6]8 M^U2. 4&_\WJ
- M%"K4 'XC(M0 &!<]( ;-HP!]& X]/2 &S:\ ?1@$S;4 ?2KB ,ON(W<KR2-^
- M*\D^&LGE*N( ?N8/_@8H)\UK%?XA, C^&B@$RZX8\1%= 8>Q=7-:Q71P?XA
- M. ;+KA(3$.^O$N')W2%= -U^ +?(!@#^+< $W2/). 7=?@"WR#X0,M -\GE
- MS6L5RZ[A=\D^KT_%S? 5P<TD%LC%Y<WW!]'!S386V 7,@P?K<PP-( (C<NO)
- MS? 5S206R,7ES:,1V>'!S386V 79S(\*V</1!>7K#@#%U<UK%='!_@TH"_X:
- M* ?+K@P3$A#JX7')S6L5_AHH$\NN_@HH#?X-(._-:Q7^"B "RZ[)*N( 3SK0
- M +? ?N8/(! C(^5^QBY?%@ 9<>$T\!@H_@8H%>$& ,7E/<JF #T]RJD /<JL
- M ,.R "KH #KJ +[(-%X6 !EQR2KB ",C?K?(-@ .%<VZ&<@^\#+0 ,E]P\86
- MP='%W2K2 ,M\* ;-@P?K& [KRWPH"<V#!]TV "W=(]7-Q@?AS<@$[5O2 -WE
- MX;?M4DWKD3@.* Q'Y3X@Q<W&%L$0]^%!! 7(?L7ES<86X<$C&//!T=GAT<'9
- MQ=TJT@#5S2<0&+[!T<7-R 3+0R&A%PX$(+\AI1<.!1BX5%)5149!3%-%S<@$
- M(0( .4XCS5D7T?G5R>%^([<H#$=^Q>7-QA;AP2,0]>D^#<W&%CX*P\86$0T!
- M& T1#0 8"!$: 1@#$1H (N( RWXH'-7-:Q71NR@0_AHH#/XA, P4%2@(RZX8
- MZ"$! ,DA #)/J\RZ #M4^8 S7H8.M M\#-,!0ZT "WP"KB #;0(R-W$08
- M&7<C=Q$D !EW(W<1UO\9.N@ MR ;Y0$$ *_-"1GA(R-.(T8JY@"W[4+(/I R
- MT #)Y:]W(W<C[5OF ',C<N$!! ^ \,)&2+B '[FP,C-KADJX@ 1+0 9KW<C
- M=Q'4_QEW(R,!! ^ <T)&<VN&<.!%.,BY #C(N( ?N; P#X$,M R3K0 +?
- MY<U:&NNW[5+A,!"OS0D9*N( $0@ &33 (S3)/IDRT #).M M\#ES5H:M^U2
- M/@$@$"KB !$$ !DT( 0C-"@(/@/AS0D9&,CA/O(RT #),ND ZRKB ,MF*"_+
- MICKI ,M'*!@C(WXK*[<@$#KI ,M/(!=XMR 3>;?Z0QG%U0XAS;H9T<$@42KB
- M #KI ,M'* ++[B,C?L8NU5\6 !G1UB[-FAGMH.)F&3SR7!D]/,V:&2KB ",C
- MYG]W(!;%U>7-KAGAT<$@%=41*P 9T30@ B,T>+'"#1GKR3Z9 3[P,M R?4Z
- MZ0#+1R@!Z_')(N( S:X9R!CF#B(JX@#+YLMNR,NN*N( Y<41, 9ZPX:S04
- MP>$1# 9Z\T% +?)P='M4^( Q>7-6AK1M^U2.$ JX@ !!@ )3B-&(W,C<LTL
- M&@$$ DP 1-]YG\IZ^UJZU-<*N( (R-W 2L "4XC1NNW[4()R-7ES:X9T>%R
- M*W/)/I$RT #)U=GAV2$ %1=/A IZ^UJZ]DIV3 $"3 !$ST@[\G-71JW[5(A
- M # (\G-71KKR2KB !$$ !E>(U8CU4XC1B->(U;AR3ZO,N@ S; :.M M\#-
- M,!0ZT "WP"KB #; Y1$, !GK#B/-!0#A$2T &:].=R-&=Q'6_QEQ(W C-H C
- M=R-W(W?)(N( ?N; R,.!%#XB& (^(41-(? (N8 W>'1X=WEQ<W]&L$ZT "W
- MP"KP .U"R#KI /XA/IDH C[P,M R3XB& (^(2+F -WAP='AW>4RZ0 BX@!^
- MYL#*L!@JY@"O=R-W>+$H.<75#AK-!0 JX@ 1# 9ZSKI $_-!0#1P;<@'M4J
- MX@ 1+0 9-" "(S31(8 &>LJY@ T( (C- L8PRKB !$M !E.(T81VO\9<2-P
- M$?S_&58K7NNW[4+0ZW$C<,G!T>U3X@#%Y<U:&M&W[5+:)AHJX@ !" )<R-R
- M 20 "7,C<LG-3!S $0P &>L.$\T% #S _]X2K2 80S>(%KQ+A_>7-3!S
- MY<WR ^'E$1P &>LA7 !# #ML.$1# 9Y>L.%\T% -$\* DA7 !) #ML,D^
- M 3+0 ,D^KS+H ,U,', ZV "W/B$HZRKB !$, !D17 !) #ML!%< X/S04
- M/"C/(3,<$; 1D [; 1 $ZZ "W( 3M6P$!,0 !P[ U0X:S04 $5P #A3-
- M!0#1(8 &>NW*.D8-R+B '[F#\@^(#+0 ,DBY@#M4^@ Z^$BX@!.<R-&<NNW
- M[4(H6NLC$5P .MP $A,!"P#ML 88KQ(3$/SE$5P #@_-!0#1/"@_*N8 (GT
- M[4OH ,75#AK-!0 17 .(<T% -'!MR A*GT (R)] "& !GK"WBQ(-L17 .
- M$,T% "KB !$- !GIW2KB #[PPRD@S<@$_A'0,MP R2+P .OAXR+R !,3$WOF
- M_%\AW@ B^ #=*MX W6X"W68#?;0H2.U2, _=;@#=9@'EW2+X -WA&.,@"MU>
- M -U6 =WE&!M-1-UN -UF =WEW1G==0#== '=<0+=< /=Y=$J^ !S(W+1*O(
- M<R-RR=WEX1DBQ J\ !! )W>7!"=IU'>U+Q@#M0@$ "$ -HP'3[_PR<@
- MZ^'C?B-F;Q,3$WOF_%_K(O *MX Y=WAM^U2,%+=;@#=9@'EM^U2, 3=X1CP
- MX=7]X>U+\ #]<0+]< /]=0#]= '=<P#=<@'=Y>'=3@+=1@/-!!XH"=U> -U6
- M =7=X=WEX=U. MU& ]U> -U6 1@;*MX [5/> -7=X=UU -UT >U+\ #=<0+=
- M< /K";?M4L#5_>$JQ "W[5(H&_U^ -UW /U^ =UW ?UN OUF PG==0+== .O
- MR=WEX2+$ 8$-@ C$/O)S4L>*O0 R<U+'BKV ,DA B] B]@#=*MX W4X"
- MW48#>; H'BKT DB] J]@"W[4(P!.U#]@#=;@#=9@'EW>$8V"K& '[_PGM
- M6\0 M^U2V.LJ] 9(O0 *O8 M^U2T.U3]@#)[5O$ ',C<LE>(U;K(L0 (MX
- M!@0V ",0^\D^KT\BZ "O=S+0 '@RZ@ JX@ B[0 A1A\BX@#A(N0 X0P-( 7-
- M)A<8 \UY%RKM "+B "KD .D^KS+L "+H "KB "+M "%&'R+B .$BY #A(NH
- M(5P !A[-X@6O$BKJ #KL +<@!<U.%A@#S7(6(= ?C8 MV=O* C=Y>$17 #M
- M4NLJZ !S(W(8H\8 [5\RRP#)Z]WAP>%XL2@+<PMXL2@%5%T3[;#=Z41-W>'1
- MX7BQ*/3M4ADP[0L)ZPGK ^VXW>E5%!4H \V=']WA3P8 +V\F_SGY<2/K# TH
- M NVPW>D6 "& #X?1K@P @8?(PX ! 4H#7[^("@$_@D@!",%&.]=! 4H#7[^
- M("@(_@DH!",%&.]]DR@$#!4@U6DF %3)T<'5+6$EPZ("?<VF!&_)*@$ &1D9
- MZ2'0 'XV &\F ,G-%@-\M<@ZW0#UKS+= ,T@ _$RW0!]_@/ W>$1 0 8$3K0
- M +?(W>%?%@$8!=WA7Q8"U<UZ ]&O,MT *LX ?+7=Y>'M2\P [4(!%0 )(LX
- MMR 'U=7ES=D T7JW(!3- )>0PT*57-E<B!B<F5A:P 8*ST@"\T @T*22]/
- M !@.S0 "#0I2=6XM=&EM90#- (@97)R;W(@ 'O-M 3- (L(%!#/0 JS@#-
- MKP08%<T DYO="!E;F]U9V@@;65M;W)Y ,T @T*4')O9W)A;2!A8F]R=&5D
- M#0H .M@ M\J.)\, .'1T>DQ $A@'\! /_-9 ,ACRD1R7L! ( ^ <W4!,-J
- M*<,-(0$ 0 ! _>'A?3+R?>%],O-]_>4J\GTF ,M%RGDA*@DA(NA]
- M*NA](N9](0$ Y2H"(='-9@9ZL\IM(=4BXGTAF'[E*N9]$0( &>4A 0#-NAK-
- M&R JYGU>(U;K(N9]*N)](]$;PSPA(9A^S; :S1L@PV(C*@8A)@#+1<JF(B$
- M 'TR!B$AF'[E(?1]S3H%S7 3(9A^S7 :S?$?Y2$ -'-?P;+1<KM(<V;%,VZ
- M%P5&:6QE("'T?<TZ!2$ ,VJ%\VZ%QL@97AI<W1S+B @0V%N;F]T(&]V97)W
- M<FET92[-S1?-&R##U" AF'[-;QK-\1_E(0 T<V2!LM%RD BS9L4S;H7$4-A
- M;FYO="!O<&5N(&9I;&4@(?1]S3H%(0 S:H7S;H7#"!F;W(@;W5T<'5T+LW-
- M%\T;(,/4("'H?>4A@@#-Y1PJZ'TBYGTA 0#E(0@ Y2$! -'KM^U2T<UF!GJS
- MRIHBU2+B?2'D?>4A@@#-Y1PA #K*N1]<R-R*N1]ZRKF?7,C<BKD?2+F?2KB
- M?2/1&\-D(BKH?2()(2H)(2(+(2H+(2+F?2H$(>4A@ #1S<P&RT7*/B,JYGU>
- M(U;KY2$ -'-D@;+1<KJ(BH"(2,B B$JYGU>(U;K(N9](0$ (@0APSXC*@DA
- M(N9](0$ Y2$( -'-9@9ZL\HL(]4BXGTAF'[E*N9]$0( &>4A 0#-NAK-&R J
- MYGU>(U;K(N9]*N)](]$;P_LB*@DA(N9](0$ (@(A(0$ (@0A*N9]$0( &>4J
- M!"$KT1GE*O-])@#KX7,J!"$C(@0A*N9](@LAR?WA!E AD7W-X@7]Y<V;%,W-
- M%\T;("J6?N4A #1S<P&RT7*IR/-FQ3-NA<%3&EN92 JEG[E(0 S287S;H7
- M CH@S1L@(9%]S3H%S9L4(0 S:H7S<T7S1L@P]0@R?WAX2*'??WE*I9^(R*6
- M?LV;%"$N ,TB%\T;("'(?LVI%"J'?090S8X6S:L6S1L@R<-L)LV;'^4A #1
- MS7\&RT7*)"3-304:57-A9V4Z('5U9&5C;V1E(#QF:6QE;F%M93[-8R,A 0#-
- M?1\&4"$>?<WB!2$N &4N >4A'GW-.@7-L@CE(0 T<U_!LM%RF@D(1Y]S3H%
- MS4T%!"YU=67-/0@&4"$>?<WB!2'(?N4A'GW-.@7-;Q/-&R AR'[-_Q/-\1_E
- M(0 T<W,!LM%RJDDS4T%"T-A;B=T(&]P96X@(1Y]S3H%S3T(S6,CS9L4S;H7
- M"41E8V]D:6YG("$>?<TZ!2$ ,VJ%\W-%\T;(,G#U27#H"7]X>$B97SA(F=\
- M_>7-304 !E J9WS-X@4AQ7SE*F5\7B-6Z]$9;B8 Y2$@ -'-?P;+1<I+)2IE
- M?%XC5NLCZRIE?',C<BIE?%XC5NOE(<5\S3H%S:,(T<W,!LM%RD@ES4T%$4EN
- M8V]M<&QE=&4@:&5A9&5RS6,CP^HD(<5\Y2IE?%XC5NO1&6XF .4A( #1S9(&
- MRT7*GR4J9WS-.@4AQ7SE*F5\7B-6Z]$9;B8 92X!Y<T]" 90*F=\S>(%*F5\
- M7B-6ZR/K*F5\<R-RPTLER2'%?,TZ!2$@ &4N >7-/0@&4"'%?,WB!2$' ")I
- M?"%T?.4A:7SES=(D(?1]Y2%I?.7-TB3)(<A^S>87RT7*^27-30423F]T:&EN
- M9R!T;R!D96-O9&4NS6,C(<5\Y<W (R'%?,TZ!2$! .4A!@#-:PC-304&8F5G
- M:6X@S8T&Y2'(?LWF%]%]LV]][@%ORT7*.R8AQ7SES< CPP FS9L4S<T7S1L@
- M(<A^S>87RT7*:";-30423F]T:&EN9R!T;R!D96-O9&4NS6,CS<\DR2$ "*6
- M?LWS(\W,),DA17[-.@7-304 S8T&RT7*I";-30420FQA;FL@;&EN92!I;B!F
- M:6QES6,C(45^Y2$! -$9;B8 Y<V!!2$@ ,V1!2%@ ,V1!<U/$WWN 6]],EQ\
- M*EQ\)@#)PY8H*DI\(R)*?"I*?.4A17[-.@7-HPC1S<P&RT7*!R?-304/3&EN
- M92!T;V\@<VAO<G0NS6,C(45^Y2I*?-$9;B8 Y<V!!2$@ .4A8 #-FP7-3Q-]
- M[@%ORT7*3B?-304:26QL96=A;"!C:&%R86-T97(@:6X@;&EN92[-8R,A17[E
- M*DI\T1EN)@#E(6 T<U_!LM%RG$G(2 ?3(\?,.!)R%%?N4J2GS1&6XF 'TR
- M/'PJ/'PF ,G#9R@A #E(0, T<UF!GJSRL GU2(B?"% ?.4J(GS1&>7-U";E
- M(2 T>NW[5+KX7,J(GPCT1O#E2<A/7SE(0 T1GE(4!\Y2$ -$9;B8 Y2$"
- M -'-3@?E(4!\Y2$! -$9;B8 Y2$$ -'-5@?1&>OA<R$]?.4A 0#1&>4A0'SE
- M(0$ T1EN)@#E(00 T<U.!^4A0'SE(0( T1EN)@#E(0( T<U6!]$9Z^%S(3U\
- MY2$" -$9Y2% ?.4A @#1&6XF .4A!@#1S4X'Y2% ?.4A P#1&6XF -$9Z^%S
- M(0 (DA\R2I(?.4A P#1S7\&RT7*>BC-BB<A/7SE*DA\T1EN)@#E(0 Y<W_
- M("I(?",B2'S)(0 (DI\(0, (DA\S=0FY2$@ -'KM^U2(D9\(0$ Y2I&?-'-
- M9@9ZL\K1*-4B1'S-AR<J1'PCT1O#O"C)(<A^S>87RT7*\2C-304-06)N;W)M
- M86P@96YD+LUC(R')>^7-P",AR7O-.@7-HPCE(0, T<W@!LM%RB(IS4T%#4%B
- M;F]R;6%L(&5N9"[-8R,AR7O-.@4A 0#E(0, S6L(S4T% V5N9,V@!LM%RE4I
- MS4T%#4%B;F]R;6%L(&5N9"[-8R,AR'[-:13-&R A&@#E(0$ Y<W_(,G-\",A
- M17[ES< CS7DFRT7*B2G-T28A17[ES< CPW0IS=(HP]0@304-06)N;W)M86P@
- M96YD+LUC(R')>\TZ!2$! .4A P#-:PC-304#96YDS: &RT7*H ;-304-06)N
- M;W)M86P@96YD+LUC(R'(?LUI%,T;("$: .4A 0#ES?\@R<WP(R%%?N7-P"/-
- +>2;+1<IT=<W1)B%C
-
- end
- 15-Jul-86 15:36:50-MDT,11345;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Tue 15 Jul 86 15:36:09-MDT
- Received: from brl-smoke.arpa by AMSAA.ARPA id ab03582; 15 Jul 86 13:55 EDT
- Received: from USENET by SMOKE.BRL.ARPA id a013856; 15 Jul 86 13:48 EDT
- From: Ross Alford <alford%ecsvax.uucp@BRL.ARPA>
- Newsgroups: net.micro.cpm
- Subject: l-z-w crunch and uncrunch
- Message-ID: <1813@ecsvax.UUCP>
- Date: 15 Jul 86 01:32:11 GMT
- To: info-cpm@AMSAA.ARPA
-
-
- Just to give you something to exercise your new uuencode and uudecode
- programs on (see earlier messages for source and object, contact me
- if they don't arrive soon), here are two VERY nice utilities for
- CP/M. They compress and expand files using the L-Z-W algorithm, and
- typically achieve ratios of 50% or better (crunched/uncrunched) on
- text, even WordStar text, which the usual sq/usq pair does fairly
- poorly on due to use of high-bit-set ASCII (I suppose). I do
- not have the source for these. It is available on RCP/M Royal Oak
- at 313-759-6569. I have used these successfully on a Kaypro 4-83,
- an Apple running 56k Microsoft CP/M, and a NEC8401 laptop. These
- little programs are amazing. I wish I had downloaded the source
- myself. If anyone has it, I'm sure a posting would be appreciated.
- I apologize to the author for lack of acknowledgment, but the .doc
- file included here is unaltered from that in the original .lbr.
-
- Ross Alford
- ...mcnc!ecsvax!alford
- -----------------CUT HERE for crunch12.doc-----------------
-
-
-
-
- This .LBR file contains Revs 1.2 of CRUNCH and UNCRunch.
- These programs are 100% upward and downward compatible with prev-
- ious releases.
-
- These are data compression utilities. They are completely
- analogous to the popular SQueeze and UNSQUEEZE programs, but use
- a form of compression known as Lempel-Ziv [-Welch] rather than
- Huffman encoding. CRUNCH creates the compressed file from the
- original, while UNCR recreates the original from the compressed.
- They may be used on any type of file, but compression ratio re-
- sults vary according to data type.
-
- -----------------------------------------------------------------
-
- Usage: CRUNCH [d:] <filename> [d:]
-
- where the first "d:" is an optional source drive spec for
- <filename> and the second "d:" is an optional destination drive
- spec for the resulting compressed file. If either "d:" is omit-
- ted, the corresponding input or output will be to the currently
- logged drive. The output filename will be the same as the input
- filename with the middle letter of the extension changed to "Z".
- If a file with this name already exists, it will be overwritten.
- If the extension of the original file was blank, the extension of
- the resulting file will be "ZZZ". Ambiguous filenames
- ("wildcards") ARE fully supported.
-
- Additionally, the command line above can be followed by a
- date or other information inside a pair of square brackets. For
- obvious reasons, this is difficult to show clearly on the command
- usage line, so hopefully this sentence will suffice. The "stamp"
- information is recorded in the header of the crunched file and
- reproduced at the console when uncrunching. It has no effect on
- the resulting uncrunched file. The stamp may any typeable char-
- acters other than "]", and may be any length that will fit on the
- command line. A practical limit of 40 characters will be repro-
- duced at the console when uncrunching.
-
- The cruncher outputs a running display to the console of the
- form:
-
- nnnn/mmmm pp%
-
- where "nnnn" is #of input records read, "mmmm" is #of output
- records created, and pp% is the current compression ratio
- nnnn/mmmm. When complete, the final line additionally contains
- the input and output file sizes converted to "k". These values
- are kilobytes (recs/8) upward rounded to the next integral value.
-
- This cruncher will flag the unusual situations where the result-
- ing file is larger than the original (ie compression ratio >
- 100%). When this occurs, the user will be prompted as to whether
- he wants to keep the "crunched" file.
-
-
-
-
-
-
-
- Usage: UNCR [d:] <filename> [d:]
-
-
- where the first "d:" is an optional source drive spec for
- <filename> and the second "d:" is an optional destination drive
- spec for the resulting uncompressed file. If either "d:" is omit-
- ted, the corresponding input or output will be to the currently
- logged drive. The output filename will be automatically created
- to be the same as the name of the file that was originally comp-
- ressed. In general (ie assuming the compressed file has not been
- renamed) this is the same as the input filename with the middle
- letter of the extension converted from "Z" to an appropriate
- character. If a file with this name already exists, it will be
- overwritten. Ambiguous filenames ("wildcards") ARE fully suppor-
- ted. Note however, that "*.*" will be converted to "*.?Z?".
- This is a convenience feature to allow quickly uncrunching all
- files with the appropriate extension.
-
-
- In operation, the uncruncher displays information to the con-
- sole analogous to the cruncher. In this case the percent figure
- is the "expansion" ratio (still output file size / input file
- size).
- -------------------------CUT HERE for crunch.uue-----------------
- begin 600 CRUNCH.COM
- MPV,!0V]P>7)I9VAT("AC*2!3=&5V96X@1W)E96YB97)G(#8O,38O.#8@(#(P
- M,2TV-S M.#<R-"X@36%Y(&)E(')E<')O9'5C960@9F]R(&YO;BUP<F]F:70@
- M=7-E(&]N;'DN/G^'ZF\!$94(PZX&[7,+"3$ $CH' -:=, 81@PC#S 81(P3-
- MHP;-^P,Z; R )(17 #-(@0A (K- 0<B" DH,Q& _QDX,R$ BB($"<U$"!%<
- M ,U3!A,J! GE(P$+ .VPX1$0 !DB! D17 .#\V!!CP@#!%0",/,!A%T",/,
- M!A$ DLU3!A,A7 #-U ;9(0 2$0 B 0 V3IF /Y:(!$1-P3-HP;-.P8@H\VT
- M!L//!B%= $+ .VP.@F2_B ^6B &,@F2,@N2,@J2S;4%S;0&S9<$/G;-E 4^
- M_LV4!2%< ,WJ!B$DDGXCS90%MR#X/A+-E 4^$,V4!:_-E 7-E 6G",WR S &
- M$4X$P\P&,@()_2%S R'__\UG S@1S>$", C-10,A__\8\^O#> +-10,A #-
- M10,(, ;9>-G-E 4ZY C-E 4ZY0C-E 7-!0;UIRKG".U;Z0CM4C >$5H$S:,&
- M#@'-@0;^62@,_GDH"!$ D@X3S8$&S;0&\<*O <//!N5'Q>7-$ 7&.F?1P4Q^
- M_H H.+H@&7S&$&=[OB 1?,809WB^( EYUCI777CAI\EYQC!G?K<H"D]\QA!G
- M;F'#[0(ZXPBW(!IAS<8$<GS&$&=S?,809W 1___=&3@%>C+C"#=XX<GU"#\P
- M#P@I*2DI?,V4!7W91]GQR0C9>-FTS90%?<V4!?')Y<UM ^').@()5_WIS?(#
- M.!/^D"@7NB@&,@()>J?)_2&: \D5_2'P WJGR17](=L#>J?)S?(#..S^D"CP
- MNB@&_2%S QC3/I#](;,#R5H6 \WR Q0XSB@'_I HT+LH\17](<P#&+/-\@,X
- MNOZ0*+[](7,#&*0^D/TAXP.GR<WR Q8!.*'^D"BD&-4WR<T\!=C-2 :GR2&
- M !$DDD8C>+<HY;OB@%(Q#Z& Y^$A,C_ETH!A#V/ET2$Z\2R<E,6E<@0W)U
- M;F-H97(@=C$N,@T*)$9I;&4@86QR96%D>2!C<G5N8VAE9"XD1FEL92!%;7!T
- M>2XD+2TM/B!#<G5N8VAE9"!F:6QE(&QA<F=E<B!T:&%N(&]R:6=I;F%L+B!3
- M879E(&%N>7=A>3\@/$X^.B ')-TA_@_-JP2O]2'__\WA O$\(/7)(0 Z$0$Z
- M/H ! !!W[; V $ 0.VP/G\R #K)Q=7E?<9E;S )?#S^2B "/CIG/DF41WTO
- M/" !!$]473Z [;$H%"$ .GK6.D=+/H#ML2@&$;@(P\P&*^OA?,8P9W)\QA!G
- M<^O1P<D1 !"3PG+W,LLRQU,?>U:. \,LY'S #ZQGK*1#UZRD7*1<I%RD7
- M;.8/R=E]RR>WS$@%?B/9R3KF"#TRY@BGS%D%V,UD!Z?)Q=4&$!82+@ > ,V#
- M!2 ,+!Z S8,%( 0L%!#M?3+F"-'!IR@$(0 2R3?)U0X:S8$&$5P #A3-@0;1
- MM\G9]1(<>\LG(!7-2P<X$!0^.KH@"L4&,,W8!<$1 "+QV<D1 )(.$\V!!@X6
- MS8$&/" &$6<(P\P&$:4(S:8&(0"2S=0&R7BWR!$ (LWN!07('H#-[@44'@ 0
- M\<D.&LV!!M41 )(.%<V!!K?1R!%G",/,!ME[V2\\YG\H"$<^&LV4!1#[V>L!
- M "*G[4++)<L41,W8!<U?!\WK!]D1 )(.$,V!!A%< ,V!!LVT!BH("2LB" E\
- MM<DJY A/!@ )(N0(R=43!@L^(!(3$/P&&*\2$Q#\T<EX+T=Y+T\#/A$8 NUJ
- M"3@#[4*WRQ/+$CT@\<D(]0C%U>79Q=7EW>7]Y=G-!0#9_>'=X>'1P=GAT<$(
- M\0C)S;0&Q0X)S8$&P<D."<T% ,D^#<V_!CX*S;\&R?7%U5\. LV!!M'!\<G-
- MHP;M>PL)R08,(W[^("@#S;\&!<AX_@0@\#XN&/(!( PC?KDH \V4!07(>/X$
- M(/$^+D\8\2($"2$ "(&"0X1S8$&_O_(S2@'#A+-@0;^_R@%S2@'&/*W*@8)
- MR=4J! F'AX>'A\: 3P8 %A *=R,#%2#Y(@0)T2H&"2,B!@G)]<7E*ND((R+I
- M""'X",W;!^'!\<GUQ>48#?7%Y3KG"#WF _8 (%G5W>41[@C-I@;M6^D(U=WA
- M(0 1$W=*>UJW1GM2MTI[6K=*>UJW2GM:MT9[4K=*>UJW2GM:MTI[6K=Y='M
- M2^<(S68&ZQ$ ,L\RQWM6LTF"!&L",VF!MWAT2KG"",BYP@A\@C-VP?AP?')
- M!@1^]A \=_XZP#8P*Q#SR=7%$;,(S:8&*N<(S0T($:4(S:8&*ND(S0T(/BG-
- MOP;!T<D1!P 9RSS+'<L\RQW+/,L=S28(/FO-OP;)U0'V_Q'__PD3VBT( 0H
- M">M\M<0F"'O&,,V_!M')(<D($>,( 1H [;#)26YP=70@9FEL92!N;W0@9F]U
- M;F0-"B1/=71P=70@97)R;W(D5&]O(&UA;GD@9FEL97,D3F]T(&5N;W5G:"!M
- M96UO<GDD4')O9R!R97$G<R!:+3@P)" M+2T^("0E("0@(" D(" @*"10<F]G
- M<F%M(&9A:6QU<F4N) $ __\!#2 @(# @+R @(# Z(" D&AH:&AH:
- 7&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH!
-
- end
- -----------------------CUT HERE for uncr.uue-------------------
- begin 600 UNCR.COM
- MPV,!0V]P>7)I9VAT("AC*2!3=&5V96X@1W)E96YB97)G(#8O,38O.#8@(#(P
- M,2TV-S M.#<R-"X@36%Y(&)E(')E<')O9'5C960@9F]R(&YO;BUP<F]F:70@
- M=7-E(&]N;'DN/G^'ZF\!$6,(PWP&[7/9"#$ $3H' -:<, 8140C#F@81Y0/-
- M<0;-Q0,Z; R )$17 #-NP,A (G-SP8BU@@H,Q& _QDX,R$ B2+2",T2"!%<
- M ,TA!A,JT@CE(P$+ .VPX1$0 !DBT@@17 .#\U/!CP@#!$>",.:!A%"",.:
- M!A$ D<TA!A,A7 #-H@;9(0 1$0 A 0 V:\R))'-"@7^=B 'S0H%_OXH!A$5
- M!,.:!A$!D08,S0H%MR@NYG_^+B@&$A,0\!@'$0F1!@,8Y\T*!3C7MR@3_EL@
- M]!$DD1@%S0H%.,82$[<@]LT*!<T*!4<^$) P!A$M!,.:!LT*!3+1",T*!<V#
- M!<W& \UE!*<($?__[5.Y",U7 ]JF M7-R@(ANPC+/C@)*KD(.ML(S1H#T3JQ
- M"+<HV\U7 ]JF M7-R@+1&//-"@5?S0H%5RJR"#K1"*<@"NU2* 81^P/-<0;-
- MTP7"KP'#G0;](1/W_3G2WP/E>L8Y9VM^_H @%3X!,KL(Y2JY"#K;",T: ^%^
- M_H H(59\QA!G7LMZ( W-R@)\QA!G?LV( ^')?,809WXRVP@8\1$5!,.:!O7E
- MS=X$QCEGT?%/1'[^@"@6?,8P9WZW* I'?,809VY@PR4#8,V4!')\QA!G<WS&
- M$&=Q ?__W0G8>#*Q",D(/S <",T*!=A7S0H%V#+8",LZ'\LZ'\LZ'\LZ'U\8
- M"PC-"@5?.M@(Y@]7>K/&_S_)V<LX. W^D"@&3]G-M /)!-G)MR@0/4?%!@#9
- MP7G%S;0#P1#XR3Z0V<VT \G-8@7-%@;)(68 /C^^P#9:R<D1?0C-= 8A))$&
- M*'ZW* ;-C08C$/;-@@;)$50$PYH&3%I7(%5N8W)U;F-H97(@=C$N,@T*)$-H
- M96-K<W5M(&5R<F]R(&1E=&5C=&5D#0HD26YV86QI9"!#<G5N8VAE9"!&:6QE
- M#0HD1FEL92!R97%U:7)E<R!N97=E<B!P<F]G<F%M(')E=FES:6]N#0HD4W1A
- M8VL@3W9E<F9L;W<-"B3=(?X/S7D$K_4A___-&@/Q/"#UR2$ .1$!.3Z 0 0
- M=^VP-@ ! $#ML#Y_,@ YR<75Y7W&96\P"7P\_DD@ CXY9SY(E$=]+SP@ 01/
- M5%T^@.VQ*!0A #EZUCE'2SZ [;$H!A&&",.:!BOKX7S&,&=R?,809W/KT<')
- M$0 0D\)R]S++,L=3'WM6C@/!@S+.1\P ^L9ZRD0]>LI%RD7*1<I%VSF#\G9
- M?<LGM\P6!7XCV<DZM @],K0(I\PG!=C-,@>GR<75!A 6$2X '@#-404@#"P>
- M@,U1!2 $+!00[7TRM C1P:<H!"$ $<DWR=4.&LU/!A%< X4S4\&T;?)V?42
- M''O+)R 5S1D'.! 4/CFZ( K%!C#-I@7!$0 A\=G)$0"1#A/-3P8.%LU/!CP@
- M!A$U",.:!A%S",UT!B$ D<VB!LEXM\@1 "'-O 4%R!Z S;P%%!X $/')#AK-
- M3P;5$0"1#A7-3P:WT<@1-0C#F@;9>]DO/.9_* A'/AK-8@40^]GK 0 AI^U"
- MRR7+%$3-I@7-+0?-N0?9$0"1#A#-3P817 #-3P;-@@8JU@@K(M8(?+7)*K((
- M3P8 "2*R",G5$P8+/B 2$Q#\!ABO$A,0_-')>"]'>2]/ SX1& +M:@DX ^U"
- MM\L3RQ(](/')"/4(Q=7EV<75Y=WE_>79S04 V?WAW>'AT<'9X='!"/$(R<V"
- M!L4."<U/!L')#@G-!0#)/@W-C08^"LV-!LGUQ=5?#@+-3P;1P?')S7$&[7O9
- M",D"-^_B H \V-!@7(>/X$(/ ^+ACR 2 ,(WZY* /-8@4%R'C^!"#Q/BY/
- M&/$BT@@A BU @.$<U/!O[_R,WV!@X2S4\&_O\H!<WV!ACRMRK4",G5*M((
- MAX>'AX?&@$\& !80"G<C Q4@^2+2"-$JU @C(M0(R?7%Y2JW"",BMP@AQ@C-
- MJ0?AP?')]<7E& WUQ>4ZM0@]Y@/V "!9U=WE$;P(S70&[5NW"-7=X2$ $1-
- MW2GM:MT9[4K=*>UJW2GM:MTI[6K=&>U*W2GM:MTI[6K=*>UJW>71[4NU",TT
- M!NL1 #+/,L=[5K-] <1>@C-= ;=X=$JM0@C(K4((< (S:D'X<'QR08$?O80
- M/'?^.L V,"L0\\G5Q1&!",UT!BJU",W;!Q%S",UT!BJW",W;!SXIS8T&P=')
- M$0< &<L\RQW+/,L=RSS+'<WT!SYKS8T&R=4!]O\1__\)$]K[!P$* GK?+7$
- M] =[QC#-C0;1R2&7"!&Q" $: .VPR4EN<'5T(&9I;&4@;F]T(&9O=6YD#0HD
- M3W5T<'5T(&5R<F]R)%1O;R!M86YY(&9I;&5S)$YO="!E;F]U9V@@;65M;W)Y
- M)%!R;V<@<F5Q)W,@6BTX,"0@+2TM/B D)2 D(" @)" @("@D4')O9W)A;2!F
- M86EL=7)E+B0 ! /__ 0T@(" P("\@(" P.B @)!H:&AH:&AH:&AH:
- M&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:
- 7&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:
-
- end
- 16-Jul-86 12:16:13-MDT,736;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Wed 16 Jul 86 12:16:06-MDT
- Received: from amc-hq.arpa by AMSAA.ARPA id a000308; 16 Jul 86 13:21 EDT
- Received: by AMC-HQ via cde1; 16 Jul 86 12:43 EDT
- Date: Wed, 16 Jul 86 12:41:17 EDT
- From: "Richard Stanley A." (LTC) <rstanley%cde-pyramid01.amc@AMC-HQ.ARPA>
- To: info-cpm%amsaa.arpa@AMC-HQ.ARPA, info-micro%amsaa.arpa@AMC-HQ.ARPA
- cc: rstanley%cde-pyramid01.amc@AMC-HQ.ARPA
- Subject: Need an H89
-
- If anyone out there has a used Heath H89 (or Zenith Z90) that they
- want to sell reasonably, my wife needs one for classroom use with
- disadvantaged students. Please reply to rstanley@amc-hq. Thanks.
-
- ...Dick
- 17-Jul-86 18:57:10-MDT,965;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Thu 17 Jul 86 18:57:04-MDT
- Received: from brl-aos.arpa by AMSAA.ARPA id ab00367; 17 Jul 86 20:19 EDT
- Received: from mit-eddie.arpa by AOS.BRL.ARPA id a017085; 17 Jul 86 12:55 EDT
- Received: from deep-thought.mit.edu by EDDIE (5.31/4.7) id AA00616; Thu, 17 Jul 86 12:25:37 EDT
- Date: Thu 17 Jul 86 01:09:08-EDT
- From: Andrew Moore <T.MOORE%DEEP-THOUGHT@MIT-EDDIE.ARPA>
- Subject: RAMdisk program wanted
- To: info-cpm@BRL.ARPA
- Cc: info-apple@BRL.ARPA
- Message-Id: <12223306707.29.T.MOORE@DEEP-THOUGHT.MIT.EDU>
-
-
- I'm trying to locate a program which will let a Saturn 128K RAM card
- (for the Apple II+) function as a RAMdisk under CP/M. If you have any
- suggestions where to find this program (I do know that it exists),
- please drop me a note.
-
- -drew
- arpa: MOORE%MIT-EECS@MIT-MC.ARPA
- uucp: ...mit-eddie!moore
- us: Box 121, North Quincy, MA 02171
- -------
- 17-Jul-86 22:29:25-MDT,2336;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Thu 17 Jul 86 22:29:16-MDT
- Received: from simtel20.arpa by AMSAA.ARPA id a001231; 17 Jul 86 23:44 EDT
- Date: Tuesday, 15 July 1986 22:05-MDT
- Message-ID: <KPETERSEN.12223553839.BABYL@SIMTEL20.ARPA>
- From: Keith Petersen <W8SDZ@SIMTEL20.ARPA>
- Sender: KPETERSEN@SIMTEL20.ARPA
- To: Bernie Eiben - LDP Workstations <EIBEN@dec-marlboro.ARPA>
- Subject: Taking a stand - revisited
- ReSent-From: KPETERSEN@SIMTEL20.ARPA
- ReSent-To: Info-Cpm@AMSAA.ARPA
- ReSent-Date: Thu 17 Jul 1986 21:46-MDT
-
- Bernie, please remove the "Taking a stand" message from your bulletin
- board. The reason I removed that message from my system was because I
- was just leaving for my vacation and didn't want to deal with the
- controversy at that time. Bob Freed convinced me that I should not
- remove BYE5/KMD - I should let the users of my RCP/M decide for
- themselves. I have therefore restored those files and they, along
- with NUBYE/NUKMD, are available on my system.
-
- I have replaced the file -BYE5KMD.NOT with a revised version by the
- same name. It is enclosed below.
-
- --Keith
-
- --cut here--
- The BYE5xx and KMDxx files will be available for downloading but will
- not be supported by this system.
-
- BYE and KMD were public domain programs which are now copyrighted by
- Irv Hoff and Wayne Masters. We join many other RCP/M SysOps in
- protesting the "appropriation" of public domain programs by people
- who then modify them and copyright them. This is not in the true
- spirit of RCP/M public domain programming.
-
- For those who don't know, BYE was originally written by Dave
- Jaffe. KMD is a renamed XMODEM, which was originally written
- by me, based on Ward Christensen's MODEM2 program.
-
- You are encouraged to download and forward the public domain
- replacements for BYE5xx and KMDxx:
-
- NUBYE100.LBR - public domain version of BYE5
- NUKMD100.LBR - public domain version of KMD
- NU-CLOCK.LBR - clock inserts for NUBYE
- NUBY-SUP.LBR - supplimental library for NUBYE
- NUBY-INS.LBR - port and modem inserts for NUBYE
-
- There are many added features to them. MOST importantly,
- they are now back in the public domain for all of us to
- contribute to - and feel good about it.
-
- --Keith Petersen, W8SDZ - Co-Sysop of RCP/M Royal Oak (MI)
- 18-Jul-86 17:29:43-MDT,1019;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Fri 18 Jul 86 17:29:34-MDT
- Received: from amc-hq.arpa by AMSAA.ARPA id a000412; 18 Jul 86 12:59 EDT
- Received: by AMC-HQ via cde1; 18 Jul 86 12:48 EDT
- Date: Fri, 18 Jul 86 10:30:57 EDT
- From: "Richard Stanley A." (LTC) <rstanley%cde-pyramid01.amc@AMC-HQ.ARPA>
- To: info-cpm%amsaa.arpa@AMC-HQ.ARPA
- cc: rstanley%cde-pyramid01.amc@AMC-HQ.ARPA
- Subject: H89
-
- This msg for Ed Barton at MIT--sorry everybody else, my mailer won't
- build a path back to Ed.
-
- Ed--I'm very interested in the H89 package. I'm sure we can figure
- out how to get it here, even if I pick it up (I have family near
- Boston).
-
- Please send me your phone number so that we can discuss details.
- Basic detail: what are you asking?
- Secondary details: what kind of printer? Hard sector disks?
-
- Look forward to hearing from you.
-
- ...Dick Stanley
- rstanley@amc-hq
- -or-
- jshaffer@isif
- telephone:(202)274-9652/5078
- 19-Jul-86 07:24:59-MDT,673;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Sat 19 Jul 86 07:24:54-MDT
- Date: Sat, 19 Jul 86 8:57:25 EDT
- From: Dave Towson (info-cpm-request) <cpmlist@AMSAA.ARPA>
- To: info-cpm@AMSAA.ARPA
- Subject: Info-cpm mail delivery interruption:
-
- Fellow CP/Mers - In the wee hours of Thursday 17 July, the AMSAA machine from
- which this list is distributed became very sick. Since then, it has been up
- and down like a ping pong ball. Can't say whether it is really fixed yet or
- not - time will tell. Anyway, that's what's been going on.
-
-
- Dave Towson <info-cpm-request@amsaa.arpa>
- info-cpm list maintainer
-
- 19-Jul-86 11:21:52-MDT,926;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Sat 19 Jul 86 11:21:41-MDT
- Received: from brl-smoke.arpa by AMSAA.ARPA id aa00168; 19 Jul 86 12:49 EDT
- Received: from USENET by SMOKE.BRL.ARPA id a015409; 19 Jul 86 12:04 EDT
- From: seev%techsup.uucp@BRL.ARPA
- Newsgroups: net.micro.cpm
- Subject: Re: Orphaned Response
- Message-ID: <-1771099@techsup>
- Date: 16 Jul 86 15:50:00 GMT
- Nf-ID: #R:omssw2.UUCP:470:techsup:-1771099:000:357
- Nf-From: techsup.UUCP!seev Jul 16 10:50:00 1986
- To: info-cpm@AMSAA.ARPA
-
-
- SCO has a rather nice word processor named Lyrix which is quite
- malleable... I should think it would be possible (and quite easy)
- to rebind the keys to emulate WordStar. We've been running it
- locally for about a year with no problems (on a Xenix system)
- and the software is available for everything from Tandy 6000's
- to Vaxen. It is, however, not cheap.
- 19-Jul-86 15:10:48-MDT,50223;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Sat 19 Jul 86 15:09:03-MDT
- Received: from brl-smoke.arpa by AMSAA.ARPA id a000168; 19 Jul 86 12:49 EDT
- Received: from USENET by SMOKE.BRL.ARPA id a014864; 19 Jul 86 11:48 EDT
- From: Michael Kersenbrock <michaelk%copper.uucp@BRL.ARPA>
- Newsgroups: net.micro.cpm
- Subject: Unix-compatable SHAR for CP/M
- Message-ID: <484@copper.UUCP>
- Date: 18 Jul 86 05:27:53 GMT
- Keywords: shar,unshar,cp/m,c
- To: info-cpm@AMSAA.ARPA
-
-
- # This is a shell archive.
- # Remove everything above and including the cut line.
- # Then run the rest of the file through sh.
- #----cut here-----cut here-----cut here-----cut here----#
- #!/bin/sh
- # shar: Shell Archiver
- # Run the following text with /bin/sh to create:
- # READ_ME
- # SHAR.C
- # SHAR.UUE
- # This archive created: Thu Jul 17 02:03:12 1986
- # By: Michael D. Kersenbrock (Oregon HomePower Software)
- echo shar: extracting read_me
- sed 's/^XX//' << \SHAR_EOF > read_me
- XX
- XX READ_ME
- XX
- XXThis program is both a "shar" and a "unshar" program for those
- XXof us with no shell.
- XX
- XXI have ported the recently posted shar.c to (z80) CP/M. This
- XXdistribution has been shar'd with this program.
- XX
- XXWhen run under CP/M 3.0 with time-of-day supported,
- XXshar files created will have archive creation time included.
- XX
- XXThe uuencoded binary included (shar.com) looks for a file
- XX"ENVIRON.DAT" or "A:ENVIRON.DAT" for the environment variables.
- XXVariables used are "NAME=" and "ORGANIZATION=".
- XX
- XXUuencoding of the binary was done with the recently posted
- XXturbo-pascal uuencode.com program.
- XX
- XXThe attached binary was compiled using Manx Aztec C II v1.05g (z80).
- XX
- XXMike Kersenbrock (usenet:{decvax,ucbvax...}!tektronix!copper!michaelk)
- XXAloha, Oregon
- XX7/17/86
- SHAR_EOF
- if test 752 -ne "`wc -c read_me`"
- then
- echo shar: error transmitting read_me '(should have been 752 characters)'
- fi
- echo shar: extracting shar.c
- sed 's/^XX//' << \SHAR_EOF > shar.c
- XX/*
- XX * Shar puts readable text files together in a package
- XX *
- XX * from which they are easy to extract.
- XX *
- XX * v 860716 M. Kersenbrock (tektronix!copper!michaelk) for Z80-CPM
- XX * - enhanced usage message
- XX *
- XX * v 860712 D. Wecker for ULTRIX and the AMIGA
- XX * - stripped down.. does patterns but no directories
- XX * - added a -u (unshar) switch
- XX */
- XX
- XX#define CPM
- XX
- XX#ifdef CPM
- XX#include "c:stdio.h"
- XX#include "c:fcntl.h"
- XX#else
- XX#include <stdio.h>
- XX#endif
- XX
- XX#ifdef CPM
- XX#define void int
- XX#define fputc putc
- XXextern char *getenv(),*malloc(),*index(),*rindex();
- XXint cpmversion;
- XX
- XX#endif
- XX
- XX#ifdef AMIGA
- XX#include <exec/types.h>
- XXextern char *getenv(),*scdir(),*malloc(),*index();
- XX#endif
- XX
- XX#ifdef ULTRIX
- XX#include <sys/types.h>
- XXextern char *getenv(),*scdir(),*malloc(),*index();
- XX#endif
- XX
- XX#ifdef VMS
- XX#include <types.h>
- XXextern char *getenv(),*scdir(),*malloc();
- XX#endif
- XX
- XX
- XX#define BADCH ((int)'?')
- XX#define EMSG ""
- XX#define tell(s) {fputs(*nargv,stderr);fputs((s),stderr);fputc(optopt,stderr);fputc('\n',stderr);return(BADCH);}
- XX#define rescanopts() (optind = 1)
- XX
- XXint optind = 1, /* index into parent argv vector */
- XX optopt; /* character checked for validity */
- XXlong fsize; /* length of file */
- XXchar *optarg; /* argument associated with option */
- XXchar *sav[100]; /* saved file names */
- XXint savind; /* save index */
- XX
- XX/* OPTIONS */
- XXint Verbose = 0; /* provide append/extract feedback */
- XXint Basename = 0; /* extract into basenames */
- XXint Count = 0; /* count characters to check transfer */
- XXchar *Delim = "SHAR_EOF"; /* put after each file */
- XXchar Filter[100] = "cat"; /* used to extract archived files */
- XXchar *Prefix = NULL; /* line prefix to avoid funny chars */
- XXint UnShar = 0; /* do we unshar an input file? */
- XX
- XXchar Usage1[] =
- XX"\nSHAR: Create/extract file archive for extraction by /bin/sh (normally).\n\
- XX\n\
- XXusage: shar [-u archive] [[-a] [-p prefix]\
- XX [-d delim] [-bcv] files > archive]\n\
- XX\n\
- XX where: -a all the options (v,c,b,-pXX)\n";
- XX
- XXchar Usage2[] =
- XX" -b extract absolute paths into current directory\n\
- XX -c check filesizes on extraction\n\
- XX -d use this EOF delimiter instead of SHAR_EOF\n";
- XX
- XXchar Usage3[] =
- XX" -p use this as prefix to each line in archived files\n\
- XX -u unshar <archive>\n\
- XX -v verbose on extraction, incl. echoing filesizes\n";
- XX
- XX
- XX#define SED "sed 's/^%s//'" /* used to remove prefix from lines */
- XX
- XX#ifdef CPM
- XX#define OPTSTRING "U:AP:D:BCV"
- XX#else
- XX#define OPTSTRING "u:ap:d:bcv"
- XX#endif
- XX
- XX#ifdef VMS
- XXchar *index(s,c)
- XXchar *s;
- XXchar c;
- XX{
- XX while (*s != 0 && *s != c) s++;
- XX if (*s == 0 && *s != c) s = 0;
- XX return(s);
- XX}
- XX#endif
- XX
- XXint header(ppchFiles)
- XXchar *ppchFiles[];
- XX{
- XX extern char *ctime();
- XX register int i;
- XX auto long clock;
- XX register char **ppchList;
- XX char *pchOrg;
- XX char *pchName;
- XX register int problems = 0;
- XX
- XX pchOrg = getenv("ORGANIZATION");
- XX pchName = getenv("NAME");
- XX
- XX puts("#\tThis is a shell archive.");
- XX puts("#\tRemove everything above and including the cut line.");
- XX puts("#\tThen run the rest of the file through sh.");
- XX puts("#----cut here-----cut here-----cut here-----cut here----#");
- XX puts("#!/bin/sh");
- XX puts("# shar: Shell Archiver");
- XX puts("#\tRun the following text with /bin/sh to create:");
- XX for (ppchList = ppchFiles; *ppchList; ++ppchList)
- XX printf("#\t%s\n", *ppchList);
- XX#ifdef CPM
- XX if (cpmversion >= 0x30) {
- XX#endif
- XX (void) time(& clock);
- XX printf("# This archive created: %s", ctime(&clock));
- XX#ifdef CPM
- XX }
- XX#endif
- XX if (pchName)
- XX printf("# By:\t%s (%s)\n", pchName,
- XX pchOrg ? pchOrg : "Dave Wecker Midnight Hacks");
- XX return(0);
- XX}
- XX
- XXint archive(input, output)
- XXchar *input, *output;
- XX{
- XX auto char line[BUFSIZ];
- XX register FILE *ioptr;
- XX
- XX if (ioptr = fopen(input, "r")) {
- XX printf("%s << \\%s > %s\n", Filter, Delim, output);
- XX while(fgets(line, BUFSIZ, ioptr)) {
- XX if (Prefix) fputs(Prefix, stdout);
- XX fputs(line, stdout);
- XX if (Count) fsize += strlen(line);
- XX }
- XX puts(Delim);
- XX (void) fclose(ioptr);
- XX return(0);
- XX }
- XX else {
- XX fprintf(stderr, "shar: Can't open '%s'\n", input);
- XX return(1);
- XX }
- XX}
- XX
- XX
- XXvoid shar(file)
- XXchar *file;
- XX{
- XX register char *basefile;
- XX basefile = file;
- XX if (!strcmp(file, "."))
- XX return;
- XX fsize = 0;
- XX if (Basename) {
- XX while(*basefile)
- XX basefile++; /* go to end of name */
- XX while(basefile > file && *(basefile-1) != '/')
- XX basefile--;
- XX }
- XX if (Verbose) printf("echo shar: extracting %s\n", basefile);
- XX if (archive(file, basefile)) exit(66);
- XX if (Count) {
- XX printf("if test %ld -ne \"`wc -c %s`\"\n",fsize,basefile);
- XX printf("then\necho shar: error transmitting %s ",basefile);
- XX printf("'(should have been %ld characters)'\nfi\n",fsize);
- XX }
- XX}
- XX
- XXint main(argc, argv)
- XXint argc;
- XXchar **argv;
- XX{
- XX auto char *ppchFiles[256];
- XX register int C;
- XX register char **ppchList = ppchFiles;
- XX register int errflg = 0;
- XX
- XX#ifdef CPM
- XX cpmversion = (bdoshl(0x0c,0) & 0xff);
- XX#endif
- XX
- XX while(EOF != (C = getopt(argc, argv, OPTSTRING))) {
- XX#ifdef CPM
- XX switch(isupper(C) ? tolower(C) : C ) {
- XX#else
- XX switch(C) {
- XX#endif
- XX case 'v':
- XX Verbose++;
- XX break;
- XX case 'c':
- XX Count++;
- XX break;
- XX case 'b':
- XX Basename++;
- XX break;
- XX case 'd':
- XX Delim = optarg;
- XX break;
- XX case 'a': /* all the options */
- XX optarg = "XX";
- XX Verbose++;
- XX Count++;
- XX Basename++;
- XX /* fall through to set prefix */
- XX case 'p':
- XX (void) sprintf(Filter, SED, Prefix = optarg);
- XX break;
- XX case 'u':
- XX UnShar++;
- XX dounshar(optarg);
- XX break;
- XX default:
- XX errflg++;
- XX }
- XX }
- XX if (UnShar) exit(0);
- XX
- XX C = getarg(argc, argv);
- XX if (errflg || EOF == C) {
- XX if (EOF == C)
- XX fprintf(stderr, "shar: No input files\n");
- XX fprintf(stderr, "%s%s%s", Usage1, Usage2, Usage3);
- XX exit(1);
- XX }
- XX
- XX savind = 0;
- XX do {
- XX if (getpat(optarg)) exit(2);
- XX }
- XX while (EOF != (C = getarg(argc, argv)));
- XX
- XX sav[savind] = 0;
- XX header(sav);
- XX for (ppchList = sav; *ppchList; ++ppchList) {
- XX
- XX#ifdef CPM
- XX strlower(*ppchList);
- XX#endif
- XX
- XX shar(*ppchList);
- XX }
- XX puts("#\tEnd of shell archive");
- XX puts("exit 0");
- XX exit(0);
- XX}
- XX
- XXgetpat(pattern)
- XXchar *pattern;
- XX{
- XX register char *ptr;
- XX int temp;
- XX
- XX#ifdef AMIGA
- XX while (ptr = scdir(pattern)) {
- XX#else
- XX ptr = pattern;
- XX {
- XX#endif
- XX sav[savind] = malloc(strlen(ptr)+1);
- XX strcpy(sav[savind++],ptr);
- XX#ifdef CPM
- XX temp = open(ptr,O_RDONLY);
- XX if (temp == -1) {
- XX#else
- XX if (access(ptr,4)) {
- XX#endif
- XX printf("No read access for file: %s\n",ptr);
- XX return(-1);
- XX }
- XX
- XX#ifdef CPM
- XX close(temp);
- XX#endif
- XX }
- XX return(0);
- XX}
- XX
- XX
- XX/*
- XX * get option letter from argument vector
- XX */
- XXint
- XXgetopt(nargc, nargv, ostr)
- XXint nargc;
- XXchar **nargv, *ostr;
- XX{
- XX register char *oli; /* option letter list index */
- XX static char *place = EMSG; /* option letter processing */
- XX if(!*place) { /* update scanning pointer */
- XX if(optind >= nargc || *(place = nargv[optind]) != '-' || !*++place)
- XX return(EOF);
- XX if (*place == '-') { /* found "--" */
- XX ++optind;
- XX return EOF;
- XX }
- XX } /* option letter okay? */
- XX if ((optopt = (int)*place++) == (int)':' || !(oli = index(ostr,optopt))) {
- XX if(!*place) ++optind;
- XX tell(": illegal option -- ");
- XX }
- XX if (*++oli != ':') { /* don't need argument */
- XX optarg = NULL;
- XX if (!*place)
- XX ++optind;
- XX }
- XX else { /* need an argument */
- XX if (*place) { /* no white space */
- XX optarg = place;
- XX }
- XX else {
- XX if (nargc <= ++optind) { /* no arg */
- XX place = EMSG;
- XX tell(": option requires an argument -- ");
- XX }
- XX else {
- XX optarg = nargv[optind]; /* white space */
- XX }
- XX }
- XX place = EMSG;
- XX ++optind;
- XX }
- XX return(optopt); /* dump back option letter */
- XX}
- XX
- XX
- XXint
- XXgetarg(nargc, nargv)
- XXint nargc;
- XXchar **nargv;
- XX{
- XX if (nargc <= optind) {
- XX optarg = (char *) 0;
- XX return EOF;
- XX }
- XX else {
- XX optarg = nargv[optind++];
- XX return 0;
- XX }
- XX}
- XX
- XXdounshar(ArcNam)
- XXchar *ArcNam;
- XX{
- XX register int i,j;
- XX register FILE *inptr,*outptr;
- XX auto char line[BUFSIZ];
- XX int DirNum = -1;
- XX int Prefix = 0;
- XX char Dirs[5][40],FilNam[128],Delim[40],ScrStr[128];
- XX char *ptr;
- XX
- XX if (!(inptr = fopen(ArcNam,"r"))) {
- XX fprintf(stderr,"shar: Can't open archive '%s'\n", ArcNam);
- XX return;
- XX }
- XX while (fgets(line,BUFSIZ,inptr)) {
- XX if (strncmp(line,"sed ",4) == 0) {
- XX Prefix = 0;
- XX if (!(ptr = index(line,'/'))) goto getfil;
- XX if (*++ptr == '^') ++ptr;
- XX while (*ptr++ != '/') Prefix++;
- XX goto getfil;
- XX }
- XX else if (strncmp(line,"cat ",4) == 0) {
- XX Prefix = 0;
- XX ;
- XXgetfil:
- XX
- XX#ifdef VMS
- XX strcpy(FilNam,"[");
- XX#else
- XX FilNam[0] = 0;
- XX#endif
- XX
- XX for (i = 0; i <= DirNum; i++) {
- XX
- XX#ifdef VMS
- XX strcat(FilNam,".");
- XX strcat(FilNam,Dirs[i]);
- XX#else
- XX strcat(FilNam,Dirs[i]);
- XX strcat(FilNam,"/");
- XX#endif
- XX
- XX }
- XX
- XX
- XX#ifdef VMS
- XX strcat(FilNam,"]");
- XX#endif
- XX
- XX getshpar(line,">",ScrStr);
- XX strcat(FilNam,ScrStr);
- XX
- XX#ifdef CPM
- XX tocpmformat(FilNam); /* tweek format as needed */
- XX#endif
- XX getshpar(line,"<<",Delim);
- XX fprintf(stderr,"Creating %s ...",FilNam);
- XX outptr = fopen(FilNam,"w");
- XX while (fgets(line,BUFSIZ,inptr)) {
- XX if (strncmp(line,Delim,strlen(Delim)) == 0) break;
- XX if (outptr) fputs(&line[Prefix],outptr);
- XX }
- XX if (outptr) {
- XX fclose(outptr);
- XX fprintf(stderr,"...done\n");
- XX }
- XX else fprintf(stderr,"...error in creating file\n");
- XX }
- XX else if (strncmp(line,"mkdir ",6) == 0) {
- XX sprintf(stderr,"Need to make directory: %s\n",&line[6]);
- XX }
- XX else if (strncmp(line,"chdir ",6) == 0) {
- XX if (line[6] == '.' && line[7] == '.') DirNum--;
- XX else strcpy(Dirs[++DirNum],&line[6]);
- XX if (DirNum < -1) DirNum = -1;
- XX }
- XX else if (strncmp(line,"cd ",3) == 0) {
- XX if (line[3] == '.' && line[4] == '.') DirNum--;
- XX else strcpy(Dirs[++DirNum],&line[3]);
- XX if (DirNum < -1) DirNum = -1;
- XX }
- XX }
- XX fclose(inptr);
- XX}
- XX
- XXgetshpar(line,sea,par)
- XXchar *line,*sea,*par;
- XX{
- XX register int i,j,k;
- XX register char *scr1,*scr2;
- XX
- XX while (*line) {
- XX scr1 = line;
- XX scr2 = sea;
- XX while (*scr1 && *scr2 && *scr1 == *scr2) {
- XX scr1++;
- XX scr2++;
- XX }
- XX if (*scr2 == 0) {
- XX if (*scr1 == 0) {
- XX *par = 0;
- XX return;
- XX }
- XX while ( *scr1 == ' ' || *scr1 == '\t' ||
- XX *scr1 == '\\' || *scr1 == '\'' || *scr1 == '"') scr1++;
- XX while ( *scr1 != 0 && *scr1 != ' ' && *scr1 != '\t' &&
- XX *scr1 != '\\' && *scr1 != '\'' && *scr1 != '"' &&
- XX *scr1 != '\n' && *scr1 != '\r') *par++ = *scr1++;
- XX *par = 0;
- XX return;
- XX }
- XX line++;
- XX }
- XX *par = 0;
- XX}
- XX
- XX
- XX#ifdef CPM
- XX
- XXtocpmformat(filename)
- XXchar *filename;
- XX{
- XX char buffer[100];
- XX char extension[100];
- XX register char *temp;
- XX int mod = 0;
- XX
- XX strcpy(buffer,filename);
- XX
- XX /*
- XX * Make sure we get rid of any pathnames
- XX */
- XX if ((temp=rindex(buffer,'/')) != 0) {
- XX strcpy(buffer,(char *)((temp-buffer)+filename+1));
- XX mod = 1;
- XX }
- XX
- XX if (strlen(filename) <= 8) {
- XX if (mod != 0) {
- XX strcpy(filename,buffer);
- XX }
- XX return(0);
- XX }
- XX
- XX /*
- XX * If it already is in "CPM" format we'll check if we need
- XX * to truncate the front filename part.
- XX */
- XX if ((temp=index(buffer,'.')) != 0 ) {
- XX if ((temp-buffer) < 8) {
- XX if (mod != 0) {
- XX strcpy(filename,buffer);
- XX }
- XX return(0);
- XX }
- XX else {
- XX strcpy(extension,temp);
- XX strcpy(&buffer[8],extension);
- XX buffer[12] = '\0';
- XX strcpy(filename,buffer);
- XX return(1);
- XX }
- XX }
- XX
- XX /*
- XX * OK, filename is longer than can be handled, and it doesnt have
- XX * a filetype "." marker already. We will put one in to minimize
- XX * truncation.
- XX */
- XX strcpy(extension,&buffer[8]);
- XX buffer[8] = '.';
- XX strcpy(&buffer[9],extension);
- XX buffer[12] = '\0';
- XX strcpy(filename,buffer);
- XX return(2);
- XX}
- XX
- XX
- XX
- XXstrlower(string)
- XXchar *string;
- XX{
- XX register char *pointer;
- XX char c;
- XX for (pointer = string ; (c=*pointer) != '\0' ; pointer++ ) {
- XX if (isupper(c))
- XX *pointer = tolower(c);
- XX }
- XX}
- XX
- XX#endif
- SHAR_EOF
- if test 12942 -ne "`wc -c shar.c`"
- then
- echo shar: error transmitting shar.c '(should have been 12942 characters)'
- fi
- echo shar: extracting shar.uue
- sed 's/^XX//' << \SHAR_EOF > shar.uue
- XXbegin 644 SHAR.COM
- XXMPT$F4TA!4E]%3T8`S3,5^/\A``#E_>$A`@+ES083T>LA!@`Y<R-R(0\"Y<T&
- XXM$]'K(00`.7,C<B$4`N7-0AK1(2\"Y<U"&M$A90+ES4(:T2&1`N7-0AK1(<L"
- XXMY<U"&M$AU0+ES4(:T2'O`N7-0AK1(10`.5XC5M7=X<.$`=WEX2,CY=WAW>7A
- XXM?B.VRJ`!W6X`W68!Y2$@`^7-.A?1T<-\`2H,5Q$P`.O-D17*R0$A"``YY<W&
- XXM1]$A"``YY<T32='E(28#Y<TZ%]'1(00`.7XCMLK^`2$&`#E^([;*Z`$A!@`Y
- XXM7B-6Z\/K`2%0`^4A!@`Y7B-6U2%!`^7-.A?1T=$A``#)3U)'04Y)6D%424].
- XXM`$Y!344`(PE4:&ES(&ES(&$@<VAE;&P@87)C:&EV92X`(PE296UO=F4@979E
- XXM<GET:&EN9R!A8F]V92!A;F0@:6YC;'5D:6YG('1H92!C=70@;&EN92X`(PE4
- XXM:&5N(')U;B!T:&4@<F5S="!O9B!T:&4@9FEL92!T:')O=6=H('-H+@`C+2TM
- XXM+6-U="!H97)E+2TM+2UC=70@:&5R92TM+2TM8W5T(&AE<F4M+2TM+6-U="!H
- XXM97)E+2TM+2,`(R$O8FEN+W-H`",@<VAA<CH@("`@4VAE;&P@07)C:&EV97(`
- XXM(PE2=6X@=&AE(&9O;&QO=VEN9R!T97AT('=I=&@@+V)I;B]S:"!T;R!C<F5A
- XXM=&4Z`",))7,*`",@5&AI<R!A<F-H:79E(&-R96%T960Z("5S`",@0GDZ"25S
- XXM("@E<RD*`$1A=F4@5V5C:V5R($UI9&YI9VAT($AA8VMS`,TS%0#\(3`$Y2$.
- XXM!#E>(U;5S9P7T=%$37RURA8$(0X$.5XC5M4JH%;E(:)6Y2$R!.7-.A?K(0@`
- XXM.?G%(0`$Y2$(`#GES7$9T='1R@4$*@97?+7*S0,A)%;E*@97Y<V&&M'1(216
- XXMY2$&`#GES88:T=$JGE9\M<H"!"%06>4A!@`YY<V10M'-7T?-043AY<WO0\VK
- XXM1.'-`D3#I0,JH%;ES4(:T<7-,QW1(0``R2$,!#E>(U;5(4($Y2$O5N7-71?1
- XXMT=$A`0#)<@`E<R`\/"!<)7,@/B`E<PH`<VAA<CH@0V%N)W0@;W!E;B`G)7,G
- XXM"@#-,Q4``"$,`#E>(U9"2R$U!>4A#@`Y7B-6U<TS0M'1PGP$R2%06>7-Z$,`
- XXM````X<T"1"J25GRURLT$8&E^M\JC!&!I(T1-*\.3!&!IZR$,`#E^(V9OS><6
- XXMRLT$(?__"5X6`"$O`,V!%<K-!&!I*T1-(\.C!"H.5WRURM\$Q2$W!>7-.A?1
- XXMT<4A#@`Y7B-6U<UK`]'1RO@$(4(`Y<V.*M$JGE9\M<HT!<4A4%G-[T/-%40A
- XXM407ES3H7ZR$(`#GYQ2%O!>7-.A?1T2%06<WO0\T51"&6!>7-.A?1T=')+@!E
- XXM8VAO('-H87(Z(&5X=')A8W1I;F<@)7,*`&EF('1E<W0@)6QD("UN92`B8'=C
- XXM("UC("5S8"(*`'1H96X*96-H;R!S:&%R.B!E<G)O<B!T<F%N<VUI='1I;F<@
- XXM)7,@`"<H<VAO=6QD(&AA=F4@8F5E;B`E;&0@8VAA<F%C=&5R<RDG"F9I"@#-
- XXM,Q4`_B$$`#GEW>$A``#E_>$A``#E(0P`Y<U1)M'1$?\`S2(5(@Q7(=P'Y2$0
- XXM`CE>(U;5(1`".5XC5M7-S0C1T=%$3>4A___1S8$5RL8&Q<US0]'*'0;%S<1#
- XXMT<,?!F!IPZ`&*@Y7(R(.5RO#PP8JGE8C(IY6*\/#!BJ25B,BDE8KP\,&*J!9
- XXM(J!6P\,&(><'(J!9*@Y7(R(.5RLJGE8C(IY6*RJ25B,BDE8K*J!9(@97Y2'J
- XXM!^4AHE;ES:\?T='1P\,&*A!7(R(05RLJH%GES>D*T</#!OWEX2/E_>$KP\,&
- XXMS;$6!P!V`"(&8P`M!F(`.`9D`$,&80!,!G``:@9U`((&E0;#Y@4J$%=\M<K6
- XXM!B$``.7-CBK1(0X".5XC5M4A#@(Y7B-6U<VL"M'11$W]Y>%\M<(`!R'__U!9
- XXMS7(5RCT'(?__4%G-<A7*&`<A^`?E(2]6Y<U=%]'1(5]8Y2'55^4A$E?E(0X(
- XXMY2$O5N7-71?K(0H`.?DA`0#ES8XJT2$``")L6BJ@6>7-,PC1RE8'(0(`Y<V.
- XXM*M$A#@(Y7B-6U2$.`CE>(U;5S:P*T=%$3>4A___1S8$5PD,'(0``Y2IL6BD1
- XXMI%D9T7,C<B&D6>7-#`'1(:19Y=WAPZ$'W>7A(R/EW>'=Y>%^([;*PP?=;@#=
- XXM9@'ES;T2T=UN`-UF`>7-6031PYD'(14(Y<U"&M$A+`CES4(:T2$``.7-CBK1
- XXMR54Z05`Z1#I"0U8`6%@`<V5D("=S+UXE<R\O)P!S:&%R.B!.;R!I;G!U="!F
- XXM:6QE<PH`)7,E<R5S`",)16YD(&]F('-H96QL(&%R8VAI=F4`97AI="`P`,TS
- XXM%?[_(0X`.5XC5D)+Q<V10M$CY<W@,M'E*FQ:*1&D61G1<R-RQ2IL6B,B;%HK
- XXM*1&D61E>(U;5S6Q"T=$A``#EQ<TL-M'1ZR$$`#ES(W(A!``Y7B-6(?__S7(5
- XXMRJ`(Q2&P".7-.A?1T2'__\DA!``Y7B-6U<V8-]$A``#)3F\@<F5A9"!A8V-E
- XXM<W,@9F]R(&9I;&4Z("5S"@#-,Q4``"H\47ZWPC<)*DY9ZR$,`#E^(V9OS9$5
- XXMPAD)*DY9*>LA#@`Y?B-F;QE>(U;K(CQ17A8`(2T`S8$5PAD)*CQ1(R(\47ZW
- XXMPAT)(?__R2H\45X6`"$M`,UR%<HW"2I.62,B3EDA___)*CQ1(R(\42M>%@#K
- XXM(J)9$3H`S7(5PF<)*J)9Y2$2`#E>(U;5S1-#T=%$37RUPK8)*CQ1?K?"=@DJ
- XXM3EDC(DY9(2]6Y2$0`#E>(U;K7B-6U<V&&M'1(2]6Y2%S"N7-AAK1T2$O5N4J
- XXMHEGES9P<T=$A+U;E(0H`Y<V<'-'1(3\`R6!I(T1-7A8`(3H`S8$5RM\)(0``
- XXM(J!9*CQ1?K?"W`DJ3EDC(DY9PVX**CQ1?K?*\`DJ/%$BH%G#80HJ3EDC(DY9
- XXMY2$.`#E>(U;AS9(5RDP*(8@*(CQ1(2]6Y2$0`#E>(U;K7B-6U<V&&M'1(2]6
- XXMY2&)"N7-AAK1T2$O5N4JHEGES9P<T=$A+U;E(0H`Y<V<'-'1(3\`R2I.62GK
- XXM(0X`.7XC9F\97B-6ZR*@62&K"B(\42I.62,B3EDJHEG)`#H@:6QL96=A;"!O
- XXM<'1I;VX@+2T@```Z(&]P=&EO;B!R97%U:7)E<R!A;B!A<F=U;65N="`M+2``
- XXM`,TS%0``(0P`.5XC5BI.6<V2%<K+"B$``"*@62'__\DJ3EDC(DY9*RGK(0X`
- XXM.7XC9F\97B-6ZR*@62$``,G-,Q4(^B'__^LA^`$Y<R-R(0``ZR'V`3ES(W(A
- XXMG`[E(08&.5XC5M7-G!?1T>7]X7RUPC0+(00&.5XC5M4AG@[E(2]6Y<U=%]'1
- XXMT<G]Y2$`!.4A_@$YY<UQ&='1T<J5#B$$`.4AO0[E(?X!.>7-JD+1T='"XPLA
- XXM``#K(?8!.7,C<B$O`.4A_`$YY<T30]'1ZR$$`#ES(W)ZL\H$#"$$`#GE?B-F
- XXM;R/KX7,C<NM>%@`A7@#-<A7*KPLA!``YY7XC9F\CZ^%S(W(A!``YY7XC9F\C
- XXMZ^%S(W+K*UX6`"$O`,V!%<K@"R'V`3GE?B-F;R/KX7,C<NLKPZ\+PP0,(00`
- XXMY2'"#N4A_@$YY<VJ0M'1T<)-#2$``.LA]@$Y<R-R(0``ZR&N`#ES(0``1$W#
- XXM&PQ@:2-$32M@:>LA^`$Y?B-F;\V2%<I6#&!I$2@`S2H6ZR$N`3D9Y2&P`#GE
- XXMS=="T=$AQP[E(;``.>7-UT+1T<,5#"$&`#GE(<D.Y2'^`3GES3(/T='1(08`
- XXM.>4AL``YY<W70M'1(:X`.>7-71'1(88`.>4ARP[E(?X!.>7-,@_1T=$AK@`Y
- XXMY2'.#N4A+U;ES5T7T='1(=X.Y2&P`#GES9P7T='K(?H%.7,C<OWE(0`$Y2'^
- XXM`3GES7$9T='1RA<-(88`.>7-D4+1Y2&(`#GE(?X!.>7-JD+1T='*%PTA^@4Y
- XXM?B.VRA0-(?H%.5XC5M4A^`$Y7B-6(?P!.1GES88:T='#OPPA^@4Y?B.VRCT-
- XXM(?H%.5XC5M7-,QW1(>`.Y2$O5N7-71?1T<-*#2'I#N4A+U;ES5T7T='#D@XA
- XXM!@#E(00/Y2'^`3GES:I"T='1PGD-(0`".>4A"P_E(2]6Y<VO']'1T<.2#B$&
- XXM`.4A)P_E(?X!.>7-JD+1T='"!PXA``(Y7A8`(2X`S7(5RL,-(0$".5X6`"$N
- XXM`,UR%<K##2'X`3GE?B-F;ROKX7,C<NLCP^D-(0`".>4A^@$YY7XC9F\CZ^%S
- XXM(W(A*`#-*A;K(3`!.1GES6Q"T=$A^`$Y7B-6(?__S:P5R@0.(?__ZR'X`3ES
- XXM(W+#D@XA`P#E(2X/Y2'^`3GES:I"T='1PI(.(?T!.5X6`"$N`,UR%<I1#B'^
- XXM`3E>%@`A+@#-<A7*40XA^`$YY7XC9F\KZ^%S(W+K(\-W#B']`3GE(?H!.>5^
- XXM(V9O(^OA<R-R(2@`S2H6ZR$P`3D9Y<UL0M'1(?@!.5XC5B'__\VL%<J2#B'_
- XXM_^LA^`$Y<R-RPS0+_>7-,QW1R7(`<VAA<CH@0V%N)W0@;W!E;B!A<F-H:79E
- XXM("<E<R<*`'-E9"``8V%T(``O`#X`/#P`0W)E871I;F<@)7,@+BXN`'<`+BXN
- XXM9&]N90H`+BXN97)R;W(@:6X@8W)E871I;F<@9FEL90H`;6MD:7(@`$YE960@
- XXM=&\@;6%K92!D:7)E8W1O<GDZ("5S"@!C:&1I<B``8V0@`,TS%?S_(1``.5XC
- XXM5NM^M\I.$2$0`#E>(U8A!@`Y<R-R(1(`.5XC5B$$`#ES(W(A!@`Y7B-6ZWZW
- XXMRKT/(00`.5XC5NM^M\J]#R$$`#E>(U;K7A8`U2$(`#E>(U;K7A8`X<UR%<J]
- XXM#R$&`#GE?B-F;R/KX7,C<NLK(00`.>5^(V9O(^OA<R-RZRO#8`\A!``Y7B-6
- XXMZUX6`'JSPCH1(08`.5XC5NM>%@!ZL\+L#R$``.4A%@`Y7B-6Z]%SR2$&`#E>
- XXM(U;K7A8`(2``S7(5PE`0(08`.5XC5NM>%@`A"0#-<A7"4!`A!@`Y7B-6ZUX6
- XXM`"%<`,UR%<)0$"$&`#E>(U;K7A8`(2<`S7(5PE`0(08`.5XC5NM>%@`A(@#-
- XXM<A7*9!`A!@`YY7XC9F\CZ^%S(W+K*\/L#R$&`#E>(U;K7A8`>K/**Q$A!@`Y
- XXM7B-6ZUX6`"$@`,V!%<HK$2$&`#E>(U;K7A8`(0D`S8$5RBL1(08`.5XC5NM>
- XXM%@`A7`#-@17**Q$A!@`Y7B-6ZUX6`"$G`,V!%<HK$2$&`#E>(U;K7A8`(2(`
- XXMS8$5RBL1(08`.5XC5NM>%@`A"@#-@17**Q$A!@`Y7B-6ZUX6`"$-`,V!%<HK
- XXM$2$&`#GE?B-F;R/KX7,C<NLK7A8`U2$6`#GE?B-F;R/KX7,C<NLKT7/#9!`A
- XXM``#E(18`.5XC5NO1<\DA$``YY7XC9F\CZ^%S(W+K*\,W#R$``.4A%@`Y7B-6
- XXMZ]%SR<TS%3;_(0``ZR$$`#ES(W(AU@`Y7B-6U2%L`#GES6Q"T=$A+P#E(6P`
- XXM.>7--4/1T41-?+7*OQ%@:>LA:@`YS886ZR'6`#E^(V9O&2/E(6P`.>7-;$+1
- XXMT2$!`.LA!``Y<R-R(=8`.5XC5M7-D4+1$0@`Z\V2%<KU$2$$`#E^([;*\1$A
- XXM:@`YY2'8`#E>(U;5S6Q"T=$A``#)(2X`Y2%L`#GES1-#T=%$37RURG<28&GK
- XXM(6H`.<V&%A$(`.O-K!7*/A(A!``Y?B.VRCH2(6H`.>4AV``Y7B-6U<UL0M'1
- XXM(0``R<4A"``YY<UL0M'1(08`.>4A=``YY<UL0M'1(0``ZR%V`#ES(6H`.>4A
- XXMV``Y7B-6U<UL0M'1(0$`R2%R`#GE(0@`.>7-;$+1T2$N`.LA<@`Y<R$&`#GE
- XXM(74`.>7-;$+1T2$``.LA=@`Y<R%J`#GE(=@`.5XC5M7-;$+1T2$"`,G-,Q7_
- XXM_R$-`#E>(U9"2\/4$F!I(T1-*V!I7A8`(00`.7-ZL\H%$R$$`#E>%@#5S7-#
- XXMT<H"$R$$`#E>%@#5S<1#T>M@:7/#SA+)S3,5K/<A8`@Y7B-6U<V10M$13P#K
- XXMS:T5RB43(0``R2$.%>4A`A7ES9P7T='K(00`.7,C<GJSPET3(1X5Y2$0%>7-
- XXMG!?1T>LA!``Y<R-R>K/"71,A``#)(6`(.5XC5M4A"@@YY<UL0M'1(2`5Y2$*
- XXM"#GES=="T=$A"`0Y1$TA``#K8&ES(00`.5XC5M7-^AG1ZR$&`#ES(W(A___-
- XXM@17*RA,A!@`Y7B-6(0H`S8$5RLH3(08`.5XC5M5@:2-$32O1<\.*$R$``.M@
- XXM:7-@:>LA"`0YS7(5RO(3(08`.5XC5B'__\UR%<KR$R$``,DA"`@YY<V10M'E
- XXM(0H$.>4A#`@YY<VJ0M'1T<(2%,,5%,-]$R$("#GES9%"T>LA"`0Y&41-Q2$*
- XXM`#GES6Q"T=$A"`0Y1$TA``#K8&ES(00`.5XC5M7-^AG1ZR$&`#ES(W(A___-
- XXM@17*?A0A!@`Y7B-6(0H`S8$5RGX4(08`.5XC5M5@:2-$32O1<\,^%"$``.M@
- XXM:7,A"`0Y7A8`U<U<0]'*V!0A"`0YY<V10M'*V!0A"``YY<V10M'E(0H$.>7-
- XXMD4+1T1D1``3KS:P5RM$4(0@$.>4A"@`YY<W70M'1P]44(0``R</;%,/>%,,Q
- XXM%"$(`#GES9%"T2/ES6,ST41->+'*_Q0A"``YY<7-;$+1T6!IR45.5DE23TXN
- XXM1$%4`'(`03I%3E9)4D].+D1!5`!R`#T`?*)G?:-OM,E\+V=]+V^TR>GAW>7]
- XXMY<5>(U8C1$TA```YZSGYU6!IS3(5Z^'YP?WAW>'K?+7)>JPR/U'-UQ7K.C]1
- XXMM_I"%GVTR<WP%>M]M,E]D\)\%7R2RHL5(0``K\E]D\*+%7R2RGP5(0$`?;3)
- XXMZWRJ^J05?9-\FC\^`,X`;R8`R7H'Y@%O)@#)ZWRJ^KX5?9-\FCX`S@!O)@#)
- XXM?`?F`6\F`,EZ,C]1S=<5.C]1M_I"%GRUR7RW\N(5+V=]+V\C>K?R\!4O5WLO
- XXM7Q/#\!7%1$TA```^$#(^42GK*>O2`Q8C?9%O?)AGTAL6"3H^43TR/E'"^Q7!
- XXM?;3)$SH^43TR/E'"^Q7!?;3)Q41-(0``/A`IZRGKTCH6"3W",A;!?;3)?2]O
- XXM?"]G(WVTR7RURHL5PWP5?+)G?;-OM,GK>^8?7\J#%GRT\OL6?#<?9WT?;QW"
- XXM:1:TR>M[YA]?RH,6*1W"?A9]M,GK?9-O?)IGM<GKX<5.(T8CZPGK3B-&(WJX
- XXMVJ<6>[G2JQ8C(QD97B-6Z\'IZ^'%0DM>(U8;>K?ZT18C>;[*RQ8C(R/#N18C
- XXM>+["QA8C?B-F;\'IZWV3?)H^`#_.`&\F`,GK?9-\FCX`S@!O)@#)ZWOF'U_*
- XXM@Q9\MQ]G?1]O'<+[%K3)?*IG?:MOM,GML,G1(0(`.=WE_>7%U1%`408&?A(C
- XXM$P7"(Q<A,!?CZ<']X=WA?+7)-\G-,Q4``"$D5B)&42$.`#GE(0X`.5XC5M4A
- XXMA1?ES?X?T='1R<TS%0``(0P`.5XC5NLB1E$A$``YY2$0`#E>(U;5(847Y<W^
- XXM']'1T<G-,Q4``"I&4>4A#@`Y7B-6U<W$&M'1R<TS%0``(1E61$U@:1$&`!E^
- XXMM\K*%V!I$0L`&41-$9)6Z\W8%LK'%R$``,G#IA<A#@`Y7B-6ZR->%@`A*P#-
- XXM<A7EW>$A#@`Y7B-6ZUX6`.O#PAC=Y>%\M<K\%R$"`,/_%R$``.4A#@`Y7B-6
- XXMU<TL-M'1ZR$'``ES(?__S7(5RB`8(0``R</5&-WEX7RURC$8(0(`PS08(0$`
- XXM$0`#S506Y2$.`#E>(U;5S2PVT='K(0<`"7,A___-<A7*6Q@A``#)P]48W>7A
- XXM?+7*;!@A`@##;Q@A`0`1``'-5!;E(0X`.5XC5M7-+#;1T>LA!P`)<R'__\UR
- XXM%<J6&"$``,DA`@#ES>A#`````,T51"$'``E>%@#5S;4_ZR$(`#GYP]48(?K_
- XXM(I99(0``R<VQ%@,`<@#N%W<`(QAA`%X8N!@A`0#K(08`"7,A``3K(0D`"7,C
- XXM<B$``.M@:7,C<B$"``ES(W(A!``)<R-R8&G)S3,5```A#``Y7B-60DLA&5;E
- XXMS?H9T>7=X1'__\V!%<I`&=WEX1$*`,V!%<I`&=WEX>5@:2-$32O1<\,1&2$`
- XXM`.M@:7/=Y>$1___-<A7*:!E@:>LA#``Y?B-F;\UR%<IH&2$``,DA#``Y7B-6
- XXMZ\G-,Q4``"$,`#E>(U;5W>$A#@`YY7XC9F\KZ^%S(W(A``#-K17*RADA$``Y
- XXM7B-6U<WZ&=%$31'__\V!%<K*&6!IY=WEX2/EW>$KT7-@:1$*`,UR%<+*&<.`
- XXM&2$``-UU`&!I$?__S7(5RO$9W>7AZR$,`#E^(V9OS7(5RO$9(0``R2$,`#E>
- XXM(U;KR<TS%0``(0P`.4XC1L7-6!O1$7\`S2(5Y=WAPRL:8&GE?B-F;ROKX7,C
- XXM<B'__\G#!AK-L18#`!H`%QH-`"@:```H&CX:W>7AR<TS%0``(0P`.4XC1F!I
- XXM?K?*>!HA)%;E8&DC1$TK7A8`U<W$&M'1$?__S7(5RG4:(?__R<-.&B$D5N4A
- XXM"@#ES<0:T=')S3,5```A#``Y3B-&8&E^M\K`&B$.`#E>(U;58&DC1$TK7A8`
- XXMU<W$&M'1$?__S7(5RKT:(?__R<.2&B$``,G-,Q4``"$,`#E.(T8A#@`Y7B-6
- XXMU=WA(7\`4%G-(A5$36!I$0H`S7(5R@<;W>4A#0#ES9P<T=$1___-<A7*!QLA
- XXM___)W>7%S9P<T=')S3,5```A#``Y7B-6U<U8&]%$31'__\UR%<)$&R$,`#E>
- XXM(U;5S5@;T>7=X1'__\UR%<I(&R'__\G=Y>$1"`#KS7864%G-5!;)S3,5```A
- XXM#``Y3B-&(0(`"5XC5M5@:5XC5N'-V!;*'!PA!@`)7A8`(0@`S2(5RHP;(?__
- XXMR2'[_^5@:1$&`!G1Y6XF`,TB%>OA<V!I$00`&7XCML*R&\7-&1_1(0D`"5XC
- XXM5M4A!``)7B-6U2$'``E>%@#5S:<YT='1Y=WA$0``Z\V2%<H$'-WEX7RUPNL;
- XXM(0@`P^X;(1``Y6!I$08`&='E;B8`S506Z^%S(?__R2$$``E>(U9@:7,C<MWE
- XXMX1GK(0(`"7,C<F!IY7XC9F\CZ^%S(W+K*UX6`"'_`,TB%<G-,Q4``"$O5N4A
- XXM#@`Y7B-6U<V<'-'1R<TS%0``(0P`.4XC1B$.`#E>(U;5Q<V<'-'1$0``Z\VL
- XXM%<IT'"'__\DA#@`Y7B-6U6!I$0@`Z\WS%N7-G!S1T1$``.O-K!7*F1PA___)
- XXM8&G)S3,5```A#@`Y3B-&(0(`"5XC5M5@:5XC5N'-V!;*T1PA#``Y7B-6(?\`
- XXMS2(5Y<7-TAW1T<DA#``Y7B-6U6!IY7XC9F\CZ^%S(W+K*]%S(?\`S2(5R<TS
- XXM%0``(?__Y2$.`#E>(U;5S=(=T=')S3,5```A&59$36!I$9)6Z\WF%LHR'6!I
- XXM$0L`&41-$?7_&>7-,QW1PQ(=R<TS%?[_(0X`.4XC1B$``.LA!``Y<R-R8&D1
- XXM!@`9?K?*P!TA!@`)7A8`(00`S2(5RG<=(?__Y<7-TAW1T>LA!``Y<R-R(0<`
- XXM"5X6`-7-F#?1ZR$$`#GE?B-F;\U4%NOA<R-R(08`"5X6`"$"`,TB%<K`'2J<
- XXM5N4A!``)7B-6Z]%S(W(A!``)7B-6ZR*<5B$``.LA!@`)<R$$`#E>(U;KR<TS
- XXM%0``(0P`.4XC1B$&``E>%@`A!`#-(A7*/!XA!``)7B-6U6!I7B-6X<V&%N7=
- XXMX=WE(00`"5XC5M4A!P`)7A8`U<WC/-'1T1'__\UR%<H\'B$0`.5@:1$&`!G1
- XXMY6XF`,U4%NOA<R'__\DA#@`Y7B-6(?__S7(5RG4>(?O_Y6!I$08`&='E;B8`
- XXMS2(5Z^%S(0``ZV!I<R-R(0(`"7,C<B$``,E@:1$$`!E^([;"AA[%S1D?T2$)
- XXM``E>(U8A`0#-<A7*OQXA`0#E(1``.>4A!P`)7A8`U<WC/-'1T1'__\UR%<(C
- XXM'B$.`#E>(U;KR2$$``E>(U9@:7,C<B$)``E>(U;5(00`"5XC5N$9ZR$"``ES
- XXM(W(A!`#E8&D1!@`9T>5N)@#-5!;KX7,A#@`Y7B-6U6!IY7XC9F\CZ^%S(W+K
- XXM*]%S(?\`S2(5R<TS%?[_(0X`.4XC1B$)``E>(U8A`0#-<A7*1!]@:1$(`!GK
- XXM(00`"7,C<LDJG%9\M<ID'RJ<5NLA!``Y<R-R*IQ67B-6ZR*<5L.+'R$)``E>
- XXM(U;5S6,ST>LA!``Y<R-R>K/"BQ\A`0#K(0D`"7,C<L,U'R$"`.5@:1$&`!G1
- XXMY6XF`,U4%NOA<R$$`#E>(U8A!``)<R-RR<TS%0``(0P`.5XC5NLB2%$A$``Y
- XXMY2$0`#E>(U;5(>`?Y<W^']'1T2$``.4J2%'1<\G-,Q4``"$,`#E>(U;5*DA1
- XXM(R)(42O1<R'_`,TB%<G-,Q6^_R%.`#E.(T8A4``Y7B-6U=WAW>7A(^7=X2M>
- XXM%@#5_>%ZL\H0)?WEX1$E`,UR%<H%)2$``.LA&@`Y<R$!`.LA1``Y<R-R(2``
- XXMZR%"`#ES(W(A_W_K(4``.7,C<MUN`"8`Y?WA$2T`S7(5RH<@(0``ZR%$`#ES
- XXM(W+=Y>$CY=WA*UX6`-7]X?WEX1$P`,UR%<J>("$P`.LA0@`Y<R-R(0``ZR$^
- XXM`#ES(W+=Y>$CY=WA*UX6`-7]X2$P`,V1%<KM(/WEX1$Y`.O-DA7*[2`A/@`Y
- XXM7B-6(0H`S2H6_>71&1'0_QGK(3X`.7,C<L.I(/WEX1$N`,UR%<I((2$``.LA
- XXM0``Y<R-RW>7A(^7=X2M>%@#5_>$A,`#-D17*2"']Y>$1.0#KS9(5RD@A(4``
- XXM.5XC5B$*`,TJ%OWET1D1T/\9ZR%``#ES(W+#!"']Y>$1;`#-<A7*B"'=Y>$C
- XXMY=WA*UX6`-7]X2$Z`#GE(50`.>5^(V9O$00`&>OA<R-RZQ'\_QG-[T/AS0)$
- XXMPR<B_>7A$60`S7(5RKHA(3H`.>4A5``YY7XC9F\C(^OA<R-RZRLK7B-6Z\U?
- XXM1^'-`D3#)R+]Y>$190#-<A7"WB']Y>$19@#-<A7"WB']Y>$19P#-<A7*!"(A
- XXM!``YY2%4`#GE?B-F;Q$(`!GKX7,C<NL1^/\9S7I'X<UZ1\,G(B$Z`#GE(50`
- XXM.>5^(V9O(R/KX7,C<NLK*UXC5NO-44?AS0)$_>7AP]$C(1H`.>4A"`#E(3X`
- XXM.<WO0\T51,US)>LA"``Y^2$T`#ES(W+#^",A.@`YS>]#S=I#`````,TG1\JF
- XXM(B$:`#GE(0H`Y2$^`#G-[T/-4$3-%43-$27K(0@`.?DA-``Y<R-R(2T`Y2$V
- XXM`#GE?B-F;ROKX7,C<NO1<\/)(B$:`#GE(0H`Y2$^`#G-[T/-%43-$27K(0@`
- XXM.?DA-``Y<R-RP_@C(1H`.>4A"@#E(3X`.<WO0\T51,US)>LA"``Y^2$T`#ES
- XXM(W+#^",A&@`YY2$0`.4A/@`YS>]#S15$S7,EZR$(`#GY(30`.7,C<L/X(R$Z
- XXM`#G-[T/-<D?K(30`.7,C<M7-D4+1ZR$X`#ES(W+#$"3]Y>$190#-<A7*3",A
- XXM``##3R,A`0#E(4(`.5XC5B'_?\UR%<IF(R$&`,-N(R%"`#E>(U;KY2$0`#GE
- XXM(0H`.<UZ1\UZ1\UZ1^LA#@`Y^2$,`#GK(30`.7,C<M7-D4+1ZR$X`#ES(W(A
- XXMR`#K(4``.7,C<L,0)"$Z`#G-[T/-<D?E_>']Y>'E(1L`.>LA-@`Y<R-RZ]%S
- XXMP_@CS;$6"`!O`"TB9`!3(G4`S")X`/(B<P`8(V4`.B-F`#HC8P"N([LC(1H`
- XXM.>LA-``Y?B-F;\V&%NLA.``Y<R-R(3@`.5XC5B%``#E^(V9OS:T5RC,D(4``
- XXM.5XC5B$X`#ES(W(A1``Y?B.VRFXD(3X`.>5^(V9O*^OA<R-RZR/K(3@`.7XC
- XXM9F_-K17*;B0A0@`Y7B-6U6!IS3(5T<,])"$``.LA-@`Y<R-RPXLD(38`.>5^
- XXM(V9O(^OA<R-R(30`.5XC5NM^M\K+)"$V`#E>(U8A0``Y?B-F;\VL%<K+)"$T
- XXM`#GE?B-F;R/KX7,C<NLK7A8`U6!IS3(5T<-\)"%$`#E^([;"`B4A/@`YY7XC
- XXM9F\KZ^%S(W+K(^LA.``Y?B-F;\VM%<H")2$@`.5@:<TR%='#U23##27]Y6!I
- XXMS3(5T<,4(,G-,Q4``"$0`#E.(T8A$@`Y7B-6U=WA8&G-7T?-%40A$``YS>]#
- XXMS2U$S=5%S7)'$4I1&5X6`-7=Y>$KY=WAT7,A#``YY6!IS5]'S4%$X>7-[T/-
- XXMFT7AS0)$S6!$PB<EW>7AR<TS%0``(1``.4XC1B$2`#E>(U;5W>$A#``YS>]#
- XXMS=I#`````,TG1\HI)B$,`#G-[T/-<D<1`0#-(A7E_>$A#``YY2$.`#G-[T/-
- XXMVD,!````S5)%S=I#____?\W71.'-`D1@:1$!`.O-7!;-7T?-%40A$``YS>]#
- XXMS2U$S=5%S7)'*?WET1D12E$97A8`U=WEX2OEW>'1<R$,`#GE8&D1`0#KS5P6
- XXMS5]'S4%$X>7-[T/-FT7AS0)$W>7%(1``.<WO0\T51,T1)>LA"``Y^>O)*@8`
- XXM^<T^)P$``,T%`,-()LT3%\U<)NO)S1,7*D!11$TJ0E'KS04`ZV\F`,G-$Q?-
- XXM>B9O)@#)S1,7*D!1ZRH!`"LK*QD9&>LJ0E%$32I$4>OIQ2$$`#E.(T8C7B-6
- XXM:V(V`",^"S8@(SW"I28^!#8`(SW"KB;K`PK^.@L^`,+A)@KF?_Y!VALG_EO2
- XXMTB;60,/>)OYAVALG_GO2&R?68'<#`R,>"!P*`_XNROPFM\H5)QW*Y";-(B=W
- XXM(\/E)AU[A6]\S@!G'@,*`[?*%2?-(B=W(QW"!B<A``"OP<DA__]\M\')_F'8
- XXM_GO0UB#))%!)4$4N24X`)%!)4$4N3U54`,TS%0``(7\`Y2&!`.4A6U+ES?=!
- XXMT='1(0``Y3J``&\F`!%_`,TB%1%;4AG1<R$``'TR@``A9RHB6U$A6U+EW>$A
- XXM`0`BVU(JVU(1@`#KS:P5RE0JW6X`)@`1(`#-<A7"K2?=;@`F`!$)`,UR%<JW
- XXM)]WEX2/EW>'#D2?=;@`F`'RUPL0GPU0JW6X`)@`1?`#-<A7*\"<A`0`BW5+=
- XXMY>$CY=WA(M]2*@I7Y?WA(0$`1$W#N2C=;@`F`!$^`,UR%<H&*"$!`$1-PQDH
- XXMW6X`)@`1/`#-<A7*0"DA``!$3=WEX2/EW>%>%@`A(`#-<A7".BC=;@`F`!$)
- XXM`,UR%<H]*,,9*-WEX>7]X=WEX2/EW>%^M\I_*-UN`"8`$2``S7(5PFLHW6X`
- XXM)@`1"0#-<A7*?"@A``#EW>7A(^7=X2O1<\-_*,-#*'BQPKDH_>7-23+1RKDH
- XXM(0$`Y2K;4BD16U$9Y?WES?`NT='1$0$`S7(5RKDH*MM2*1%;41E>(U;5_>'%
- XXMS9@WT7BQROPH(;8!Y?WES0PVT=%$36!I*2DI$?18&5XC5B%[.<UR%<KY*"$`
- XXM!.5@:1$+`,TJ%A$B5AG1<R-RPPDI(0``Y?WES2PVT=%$36!I$?__S7(5RC(I
- XXM(6@JY<V@+-']Y<V@+-$ABRKES:`LT2$*`.7-CBK1*MU2?+7*/2G#5"K#42K=
- XXM;@`F`!$B`,UR%<JC*=WEX2/EW>'E*MM2(R+;4BLI$5M1&=%S(W+=Y>%^M\J(
- XXM*=UN`"8`$2(`S8$5RH@IW>7A(^7=X2O#9RG=;@`F`'RURJ`I(0``Y=WEX2/E
- XXMW>$KT7/#42K=;@`F`!$R`,UR%<K/*=UN`28`$3X`S7(5RL\IW>7A(^7=X2LA
- XXM`@!$3<,9*-WES4DRT<H`*B&``.LJVU+-AA8KY2K;4BD16U$9Y=WES?`NT='1
- XXMZRK;4ADBVU+#%2K=Y>'E*MM2(R+;4BLI$5M1&=%S(W+=Y>$CY=WA?K?*42K=
- XXM;@`F`!$@`,UR%<(]*MUN`"8`$0D`S7(5RDXJ(0``Y=WEX2/EW>$KT7/#42K#
- XXM%2K#A"<A6U'E*MM2Y<V^!='1Y<V.*M')`$-A;B=T(&]P96X@9FEL92!F;W(@
- XXM<F5D:7)E8W1I;VXZ(#P`/@H`S3,5``#-"!TJ"%?ES=%!T2$,`#E^([;*L"HA
- XXM>"OES=%!T2K=4GRURG0K*@A7Y2H*5^7->4'1T2K?4EX6`"$@`,UR%<+C*BK?
- XXM4EX6`"$)`,UR%<KN*BK?4B,BWU(KP\4J*M]21$U@:7ZWRA\K8&E>%@`A(`#-
- XXM@17*'RM@:5X6`"$)`,V!%<H?*V!I(T1-*\/S*F!I?K?*,BLA``#E8&DC1$TK
- XXMT7,A``#EQ2H(5^4A@BOE*M]2Y<V_*^LA"@`Y^2&$*^7-H"S1*M]2Y<V@+-$A
- XXMJ"OES:`LT2&M*^7-T4'1(;<KY<W10='-2";)03HD)"0N4U5"`#P`0V]U;&1N
- XXM)W0@;W!E;B!F:6QE(&%T(&5N9"!O9B!P:7!E.B``+D-/30!!.B0D)"Y354(`
- XXM)"0D+E-50@#-,Q4``"$,`#E>(U;5(8``Y<UL0M'1(9LLY2&``.7-UT+1T2%<
- XXM`.4A@`#ES>PLT=$A7`#E(0\`Y<U9)M'1$?\`S2(5$?\`S7(5R@\L(0``R2&!
- XXM`.7=X2$.`#GE_>'#*2S]Y>$C(^7]X2LK_>7A?B.VRH8LW>7A$<\`Z\WF%LJ&
- XXM+/UN`/UF`41-PUXL8&DC1$TK7A8`U=WEX2/EW>$KT7-@:7ZWRG4LW>7A$<\`
- XXMZ\WF%LIU+,-*+"$@`.7=Y>$CY=WA*]%SPQ\L(0``W74`W>7A$8#_&7TR@`#-
- XXMPS+)+D-/30#-,Q4``"$,`#E>(U;K?K?*TRPA#``YY7XC9F\CZ^%S(W+K*UX6
- XXM`-4A`@#ES5DFT='#I2S)S3,5```A_?\BEEDA___)S3,5```A``#)S3,5```A
- XXM)`#EW>$A#@`Y7B-60DO##RTA``#E8&DC1$TKT7/=Y>$KY=WA$0``Z\V1%<HC
- XXM+<,#+2$,`#E>(U;K?K?*=RTA#``Y7B-6ZR->%@`A.@#-<A7*=RTA#``Y7B-6
- XXMZUX6`-7-KD/1$<#_&>4A$``Y7B-6Z]%S(0(`ZR$,`#GE?B-F;QGKX7,C<B$,
- XXM`#E>(U;5(1``.5XC5M7-C2W1T<G-,Q7__R$-`#GE?B-F;R/KX7,C<D)+(0L`
- XXMZR$$`#ES(00`.>5N)@`KZ^%S(0``S9$5RN,M(0\`.5XC5NM^M\K4+2$@`,/7
- XXM+2$_`.5@:2-$32O1<\.L+2$-`#E>(U8A"``91$TA#0`Y7B-6(0H`&>7=X2$/
- XXM`#E>(U;K?K?*[RXA#P`Y7B-6ZUX6`"$@`,V!%<KO+B$/`#E>(U;K7A8`(2H`
- XXMS7(5RILN(0T`.5XC5F!IS>86RFXN(0T`.5XC5F!IS>86RFLN(3\`Y2$/`#GE
- XXM?B-F;R/KX7,C<NLKT7/#0B[#F"XA#0`Y7B-6W>7AS=D6RI@N(3\`Y2$/`#GE
- XXM?B-F;R/KX7,C<NLKT7/#;B[#VRXA#P`Y7B-6ZUX6`"$N`,UR%<J\+F!IZR$-
- XXM`#ES(W+#VRXA#P`Y7B-6ZUX6`-4A#P`YY7XC9F\CZ^%S(W+K*]%S(0\`.>5^
- XXM(V9O(^OA<R-RZRO#_BW)S3,5^O\A``#K(00`.7,C<B$2`#E>(U8A!@`Y<R-R
- XXM(5P`Y2$4`#E>(U;5S>PLT=$A7`#E(1$`Y<U9)M'1$?\`S2(5ZR$(`#ES(W(A
- XXM_P#-@17*HC`A#P#ES6,ST>LA$@`Y<R-R0DMZL\)J+R&3,>7-H"S1(0$`Y<V.
- XXM*M$A"``Y7B-6ZRDI*2DI$8$`&>7=X2$&`#E>(U;K(UX6`"$Z`,UR%<JS+R$&
- XXM`#E>(U;K7A8`U6!I(T1-*]%S(3H`Y6!I(T1-*]%S(0$`Y?WAP\0O_>7A(^7]
- XXMX2O]Y>$1"P#KS9(5RC,PW6X`)@`1?P#-(A41(`#-@17*_"_=Y>$CY=WA*UX6
- XXM`-5@:2-$32O1<\,$,-WEX2/EW>$K_>7A$0@`S7(5RC`PW6X`)@`1?P#-(A41
- XXM(`#-<A7",S`A+@#E8&DC1$TKT7/#O"\A``#K8&ES(1(`.5XC5M4A!@`YY7XC
- XXM9F\CZ^%S(W+K*RGK(18`.7XC9F\9T7,C<B%<`.4A$@#ES5DFT=$1_P#-(A7K
- XXM(0@`.7,C<B$(`#E>(U8A_P#-@17*HC`A!``Y7B-6(18`.7XC9F_-K!7"0R\A
- XXM``#K(0@`.7,C<L/!,"$(`#GE?B-F;R/KX7,C<NLK(0@`.5XC5B$$`#E^(V9O
- XXMS>86RHHQ(0@`.5XC5M7]X</K,/WEX2/E_>$K_>7AZR$$`#E^(V9OS:P5RH<Q
- XXM_>7A*>LA%``Y?B-F;QE>(U;5(0H`.5XC5NLIZR$6`#E^(V9O&5XC5M7-N#'1
- XXMT<J$,2$(`#E>(U;K*>LA%``Y?B-F;QE>(U9"2_WEX2GK(10`.7XC9F\97B-6
- XXMU2$*`#E>(U;K*>LA%@`Y?B-F;QG1<R-R8&GE_>7A*>LA%@`Y?B-F;QG1<R-R
- XXMP^,PP[`P(00`.5XC5NO)3F]T(&5N;W5G:"!M96UO<GD@=&\@97AP86YD('=I
- XXM;&1C87)D`,TS%0``(0``1$U@:1$/`.O-K!7*2#(A#@`Y7B-6ZUX6`-4A#@`Y
- XXM7B-6ZUX6`.'-K17*\#$A`0#)(0X`.5XC5NM>%@#5(0X`.5XC5NM>%@#AS:P5
- XXMRA(R(0``R2$,`#GE?B-F;R/KX7,C<NLK(0X`.>5^(V9O(^OA<R-RZRLA#``Y
- XXM7B-6ZWZWPD4R(0``R</",<G-,Q4``"$,`#GE?B-F;R/KX7,C<NLK7A8`0DM@
- XXM:1$J`,UR%<)Z,F!I$3\`S7(5RGXR(0$`R7BQRHXR8&D1(`#-@17"3C(A``#)
- XXM$0`!U<4.<%`-'5#A3-!0#!T;?*^`!060X0S04`#AH1@`#-!0##``$A@``9
- XXMZ\/2`!&2,B'/``8Q&G<3(P7"RS(!7``1``$J!@#YP\\`S3,5```A#``Y7B-6
- XXMU<UC,]')S3,5_/\A$``Y7B-6(1(`.7XC9F_-*A;K(00`.7,C<B$$`#E>(U;5
- XXMS6,ST>LA!@`Y<R-R>K/"+C,A``#)(0``Y2$&`#E>(U;5(0H`.5XC5M7-%T+1
- XXMT=$A!@`Y7B-6Z\G-,Q4``"$,`#E>(U;5S8(TT<G-,Q4``"$,`#E>(U;K(R,C
- XXM$0(`Z\WS%B/E_>$JY5+EW>%\M<*;,R'A4N7=X2+E4B+A4B$!`"+C4MUN`-UF
- XXM`41-P[(S8&GEW>%@:5XC5D)+(0(`"5XC5OWEX<W8%LH<-"$"``E>(U;]Y>'-
- XXM<A7*X#-@:5XC5MUS`-UR`<,/-/WE8&DC(]'E?B-F;^O-AA;KX7,C<B$"``E>
- XXM(U;K*2E061E$3?WEX>LA`@`)<R-RW>7A(N528&D1!``9R6!IZRKE4LUR%<HY
- XXM-/WES3TTT41-?+7".30A``#)PZ8SR<TS%0``(0P`.5XC5NLI*>7-GS711$T1
- XXM___-<A7*8#0A``#)8&GEW>$A#``Y7B-6W7,"W7(#W>7A$00`&>7-@C31*N52
- XXMR<TS%0``(0P`.5XC5B'\_QE$32KE4N7=X<.F--UN`-UF`>7=X6!IW>71Z\WG
- XXM%LK#--UN`-UF`>5@:='KS>86PO4TW6X`W68!Y=WEX='KS=@6RO(T8&G=Y='K
- XXMS><6PO4TW6X`W68!Y6!IT>O-YA;"]33#G33=;@#=9@'E(0(`"5XC5NLI*5!9
- XXM&='-<A7*/37=;@#=9@$C(UXC5M5@:2,CT>5^(V9O&>OA<R-RW6X`W68!7B-6
- XXM8&ES(W+#237=;@#=9@'K8&ES(W+=;@+=9@,I*=WET1E06<UR%<J$-2$"``E>
- XXM(U;5W>7A(R/1Y7XC9F\9Z^%S(W)@:5XC5MUS`-UR`<.,-6!IW74`W70!W>7A
- XXM(N52R2$$`,VB-2-\M<@KR2$"`#E>(U8JYU(9Z]K$-2KI4CE]DWR:VL0U*N=2
- XXMZR+G4NM\M<FO/6=OR2$"`#E^(V8O;WPO9R,BZ5+)8V]N.@!#3TXZ`&QS=#H`
- XXM3%-4.@!P<FXZ`%!23CH`<'5N.@!054XZ`')D<CH`4D12.@#-,Q4``"$.`#E>
- XXM(U;5(0$#Y2$0`#E>(U;5S2PVT='1R<TS%?S_(?!8Y=WA(0``ZR$&`#ES(W+#
- XXM7C;=Y>$1"``9Y=WA(08`.>5^(V9O(^OA<R-R(08`.5XC5B$+`,VL%<J`-MUN
- XXM!-UF!1'4+,UR%<**-L-%-B'X_R*662'__\DA5%E$3<.:-F!I$08`&41-8&E^
- XXM([;*NS8A$``Y7B-6U6!I7B-6U<TS0M'1RKLVPY(V(0(`"5XC5M7]X2$2`#E>
- XXM(U8A`P#-(A4CZR$$`#ES(W(A!``Y7B-6(0$`S2(5R@(W_6X`)@#==0!\M<("
- XXM-R'V_R*662'__\DA!``Y7B-6(0(`S2(5RBDW_6X!)@#==0%\M<(I-R'V_R*6
- XXM62'__\DA!``)7B-6W7,&W7('_6X")@#==0+];@,F`-UU`R&>.=UU!-UT!<7=
- XXMY2$8`#E>(U;5(1@`.5XC5M4A&``Y7B-6U?UN!/UF!<TR%>LA"@`Y^2$``,VL
- XXM%<J/-R'4+-UU!-UT!2'__\DA!@`Y7B-6Z\G-,Q4``"$,`#E>(U8A``#-K!7"
- XXMO3<A#``Y7B-6(0L`S:T5RL<W(?W_(I99(?__R2$,`#E>(U;K*2DI$?!8&41-
- XXM(08`"5XC5M4A!``)7B-6Z\TR%='K(0P`.7,C<B$``.LA`P`)<R$"``ES(0$`
- XXM"7-@:7,AU"SK(00`"7,C<B$,`#E>(U;KR<TS%0``(>M21$W#,SA@:1$F`!E$
- XXM36!I$1M4Z\WF%LI.."$E``E>%@!ZL\I8.,,K."'Y_R*662'__\G%(0X`.5XC
- XXM5M7-DB;1T<IS."'Z_R*662'__\DA#@`Y7B-6(0`"S2(5RHTXQ2$3`.7-62;1
- XXMT<4A#P#ES5DFT=$1_P#-<A7*T#@A#@`Y7B-6(0`#S2(5RL,XQ2$6`.7-62;1
- XXMT1'_`,UR%<K-."'__R*662'__\G#\#@A#@`Y7B-6(0`%S2(5$0`%S7(5RO`X
- XXM(?O_(I99(?__R2$``.LA(0`)<R-R(2,`"7,A)``)<V!IY2$4`#E>(U8A!@`9
- XXMT7,C<B$.`#E>(U8A`P#-(A4CZR$E``ES(0(`S2(5RDHY(7LYY2$4`#E>(U8A
- XXM!``9T7,C<L-=.2%A.>4A%``Y7B-6(00`&=%S(W(A``#)S3,5```A``#E(0X`
- XXM.5XC5B$E`!G1<R$``,G-,Q4``"$,`#E.(T;%(1``Y<U9)M'1(0``ZR$E``ES
- XXM(0``R<TS%0``(0``R<TS%0``(0P`.5XC5B$``,VL%<+,.2$,`#E>(U8A"P#-
- XXMK17*UCDA_?\BEEDA___)(0P`.5XC5NLI*2D1\%@91$TA$``Y7B-6U2$0`#E>
- XXM(U;5(08`"5XC5M5@:5X6`.LI$1M4&5XC5NO-,A71T=')S3,5_/\A``!$32$0
- XXM`#E>(U;5W>'=Y>$1)``9?K?*=3K=;B0F`.4A@`#1Z\V&%D1-ZR$4`#E^(V9O
- XXMS><6RETZ(10`.5XC5D)+Q2$4`#E>(U;5W>7-+#O1T='*=3HA___)(10`.5XC
- XXM5F!IS886$0<`Z\WS%NLA!@`Y<R-R>K/*VCHA!@`Y7B-6U2$4`#E>(U9@:1GE
- XXMW>7-*$'1T='K(00`.7,C<GJSRMHZ(08`.5XC5B$$`#E^(V9OS886$0<`Z\UV
- XXM%E!9&<DA!@`Y7B-6(0<`S7864%D91$U@:>LA%``Y?B-F;\WF%LHC.R$4`#E>
- XXM(U9@:<V&%N4A%``Y7B-68&D9Y=WES2P[T='1RB,[8&G)(10`.5XC5NO)S3,5
- XXM```A#``Y3B-&(8``Y2$:`.7-62;1T<4A(0#ES5DFT=$BEEE\M<I;.R'__\DA
- XXM$``Y7B-6U2$D``E>%@`A@``9Y2$2`#E>(U;5S?=!T='1(20`"5X6`"$0`#E^
- XXM(V9O&1%_`,TB%>LA)``)<WJSPJ\[8&D1(0`9Y7XC9F\CZ^%S(W(A``#)S3,5
- XXM```Z)%1O)@!\M<([/"'_`'TR(U0A``!],B54?3(D5"$C5.4A"@#ES5DFT=$A
- XXM"@#E(0(`Y<U9)M'1.B54;R8`$1H`S7(5R@D\(0``?3(D5"$``,DA#0#E.B14
- XXM;R8`(WTR)%01(U09(]%S(0H`Y3HD5&\F`"-],B14$2-4&2/1<R$"`"(E53HD
- XXM5&\F`$1-ZR$0`#E^(V9OS:T5REL\(1``.5XC5D)+Q2HE51$C5!GE(1(`.5XC
- XXM5M7-]T'1T=%@:>LJ)549(B558&GK.B14;R8`Z\V&%GTR)%1@:<G-,Q4``"$.
- XXM`#E.(T8A``#EW>'#K#S=Y>$CY=WAW>7AZR$0`#E^(V9OS:P5RM\\(0P`.5XC
- XXM5M7-62;1Y6!I(T1-*]%S(1H`S7(5PM\\PZ4\W>7AR<TS%0``(0P`.5XC5B$`
- XXM`,VL%<((/2$,`#E>(U8A"P#-K17*$CTA_?\BEEDA___)(0P`.5XC5NLI*2D1
- XXM\%@91$TA$``Y7B-6U2$0`#E>(U;5(08`"5XC5M4A`0`)7A8`ZRD1)U497B-6
- XXMZ\TR%='1T<G-,Q7\_R$``$1-(1``.5XC5M7=X=WEX1$D`!E^M\JS/=UN)"8`
- XXMY2&``-'KS8861$WK(10`.7XC9F_-YQ;*FSTA%``Y7B-60DO%(10`.5XC5M7=
- XXMY<UJ/M'1T<JS/2'__\DA%``Y7B-68&G-AA81!P#KS?,6ZR$&`#ES(W)ZL\H8
- XXM/B$&`#E>(U;5(10`.5XC5F!I&>7=Y<TP0='1T>LA!``Y<R-R>K/*
!@`Y
- XXM7B-6(00`.7XC9F_-AA81!P#KS7864%D9R2$&`#E>(U8A!P#-=A9061E$36!I
- XXMZR$4`#E^(V9OS>86RF$^(10`.5XC5F!IS886Y2$4`#E>(U9@:1GEW>7-:C[1
- XXMT='*83Y@:<DA%``Y7B-6Z\G-,Q4``"$,`#E.(T8A@`#E(1H`Y<U9)M'1Q2$A
- XXM`.7-62;1T2*661$!`,UR%<*E/BJ661$$`,UR%<K`/B$``"*662$:`.4A@`#E
- XXM(8``Y<T70M'1T</,/BJ667RURLP^(?__R2$0`#E>(U;5(1``.5XC5M4A)``)
- XXM7A8`(8``&>7-]T'1T='%(2(`Y<U9)M'1(I99?+7*!#\A___)(20`"5X6`"$0
- XXM`#E^(V9O&1%_`,TB%>LA)``)<WJSPC8_8&D1(0`9Y7XC9F\CZ^%S(W(A``#)
- XXMS3,5_O\A$``Y3B-&(0``Y=WAPU8_W>7A(^7=X=WEX>LA$@`Y?B-F;\VL%<JQ
- XXM/V!I(T1-*UX6`"$$`#ES(W(A!``Y7B-6(0H`S7(5RID_(0T`Y2$0`#E>(U;5
- XXMS5DFT=$A!``Y7B-6U2$0`#E>(U;5S5DFT='#3S_=Y>')S3,5```A#``Y7B-6
- XXM(0``S:P5PO$_(0P`.5XC5B$+`,VM%<+Q/R$,`#E>(U;K*2DI$?-8&5X6`'JS
- XXMPO\_(?W_(I99S>A#_____\DA#``Y7B-6ZRDI*1'V6!E>(U9"2R$2`#E>(U;K
- XXMPZ!`Q2$0`.7-62;1T1'_`,UR%<H_0"']_R*66<WH0______)Q2$C`.7-62;1
- XXMT2$``.LA)``)<R$.`#GE(2$`"5XC5NO-44?-VD,'````S21%S15$(20`"5X6
- XXM`.O-7T?-+43-JT3-043AY<WO0\VK1.'-`D3#LT`A^O\BEEG-Z$/_____R<VQ
- XXM%@,``@`>0`$`4D```(]`DD`A``#K(2,`"7,A#@`YS>]#S=I#`````,TG1\KN
- XXM0"$``.LA(0`)<R-R(20`"7,A^O\BEEG-Z$/_____R2$.`#G-[T/-<D<1?P#-
- XXM(A7K(20`"7,A#@`YS>]#S=I#!P```,U21<UR1^LA(0`)<R-R(0X`.<WO0\G-
- XXM$Q<.(<,U0<T3%PXBQ2I"4>LA@``9(D)1#AK-!0#!Q2I`4>O-!0"WPFY!*D!1
- XXM$2$`&33"8$$C-"I$42LB1%%]M,(V0<');R8`(I99P2I$4<G-,Q7$_R$$`#GE
- XXM(4P`.5XC5M7-DB;1T2$$`#GE(1,`Y<U9)M'1(00`.>4A2@`Y7B-6U<V2)M'1
- XXM(10`.>4A3``Y7B-6U<V2)M'1(00`.>4A%P#ES5DFT=')S3,5W/\A!``YY2$R
- XXM`#E>(U;5S9(FT=$A!``YY2$3`.7-62;1T<G%(0D`.48K3BM6*UXK?BMN9WBQ
- XXMRA5"&G<3(PO#"$+!R<4A!``Y7B-6(TXC1B-NZWBQRC%"<R,+PR9"P<DA`@`Y
- XXMQ0'_?UXC5B-^(V9O>+'*5T(:OL)<0K?*5T(C$PO#0T+!(0``R<':9D(A`0!]
- XXMM,DA__]]M,DA`@`YQ0'_?UXC5M4C?B-F;WBQRHY"?A*WRHY"(Q,+PWU"X<')
- XXM(0(`.7XC9F\1``"OOLJF0A,CPYU"ZWVTR2$"`#G%7B-6U2->(U8C3B-&Z]'#
- XXM0T(A`@`YQ5XC5M75(UXC5B-.(T;KT<-]0L4!_W\A!``Y7B-6U2-^(V9OZWBQ
- XXMRHY"?K?*^$(C"\/I0NO#?4(A`@`YQ5XC5M75(UXC5B-.(T;AK\/I0L4A!``Y
- XXM7B-6(V[K?K?**T.[RC%#(\,>0R$``*_!R7RUP<G%(00`.5XC5B-NZP$``*^^
- XXMRDU#(P/#1$-XL<HK0PLK?KO"34/#,4,A`@`Y?OX@RH)#_@G*@D/^"LJ"0\.7
- XXM0R$"`#E^_D':ET/^6]*70R$!`'VWR2$"`#E^_F':ET/^>]J"0R$``*_)(0(`
- XXM.7[^,-J70_XZTI=#PX)#(0(`.7[^8=J_0_Y[TK]#UB!O)@"WR2$"`#E^_D':
- XXMU4/^6]+50\8@;R8`M\G1(00`&>7KZRJ:5L/S0]$A!``9Y>OK*IA6&G<C$QIW
- XXM(Q,:=R,3&G?)ZRJ85GX2$R-^$A,C?A(3(WX2R>$B+U4JF%81`P`95BM>*]56
- XXM*U[5*B]5Z>$B+U4JFE;1<R-R(]%S(W(J+U7I*II6ZRJ85B*:5NLBF%;)*IA6
- XXMKQ8$/@">=R,5PE9$R2J85A8$?K?"(4<C%<)E1,,61Z\]P<FO/,')Q2J85NLJ
- XXMFE8C(R,3$Q,:M_J41*[Z=D3#F$2N^G)$!@0:OMIR1,)V1"L;!<*:1*_!R<4J
- XXMF%;K*II6KP8$&HX2(Q,%PK9$P<G%*IA6ZRJ:5J\&!!J>$B,3!<+,1,')Q2J8
- XXM5NLJFE8&!!JF$B,3!<+A1,')Q2J85NLJFE8&!!JV$B,3!<+V1,')Q2J85NLJ
- XXMFE8&!!JN$B,3!<(+1<')*IA6%@1^+W<C%<(;1<DJFE9^YC_(Q4<JF%9>(U8C
- XXM?B-F;RGK*>O20$4C!<(X141-*IA6<R-R(W$C<,')*II6?N8_R%<JF%8C(R-^
- XXMM_IW1>4>!+=^'W<K'<)I1>$5PF5%R>4>!#=^'W<K'<)[1>$5PG=%R=4&!'X2
- XXM(Q,%PHQ%X4^W\,-31,4JF%81.U7-B45Y,CE5*II6$4-5S8E%.CE5J3(Y5<T(
- XXM1A$[52J85@8$&G<3(P7"Q$7!.CE5M_I01,G%*IA6$3M5S8E%>3(Y52J:5A%#
- XXM5<V)1<T(1A$_52J85@8$&G<3(P7"]T7!.CE5M_I01,D&!"$_5:]W(P7"#D8^
- XXM(#(Z52$[508(MWZ/=R,%PA]&G^8!3P8$$3]5(4-5MQJ>$A,C!<(T1GG>`,)/
- XXM1B$[530A.E4UPAE&R2$Z537*@48A.U4&"+=^CW<C!<)<1I]/!@01/U4A0U6W
- XXM&HX2$R,%PF]&><X`PD]&PT-&!@01/U4A0U6W&HX2$R,%PHI&R<4JFE8&!!%#
- XXM57X2(Q,%PIU&*IA6!@01/U5^$B,3!<*M1@8$(3M5KW<C!<*[1CX@,CI5(3M5
- XXM!@BW?H]W(P7"S$;2]T8&!!$[52%#5;<:CA(3(P7"X$8&!!K.`!+2]T83!<+K
- XXM1B$Z537"QD8JF%81.U4&!!IW$R,%P@9'P<G->D3*(4<A``"OR<UZ1,H61R$!
- XXM`*\\R<UZ1/HA1\,61\UZ1/HA1\HA1\,61\UZ1/H61\,A1\UZ1/H61\H61\,A
- XXM1^LJF%9S(W(C-@`C-@#)ZRJ85G,C<B-ZM_)91S;_(S;_R2J85EXC5NO)R<TS
- XXM%0``(0P`.5XC5M7-QD?1(0P`.5XC5B$$`!GES>A#`````.'-`D0A``#E(1``
- XXM.5XC5NO1<R-R(0``Y2$0`#E>(U;K(R/1<R-RR<TS%?C_(4=5Y2%I`.7-62;1
- XXMT>LA!``Y<R-R(0@`.>4J1U41:0L9S5%'S=I#@%$!`,V41N'-`D0Z255O)@`1
- XXM!`#KS5P6$0H`S2H6Y3I)56\F`!$/`,TB%=$9ZR$&`#ES(W(A"``YY2$(`#E>
- XXM(U;KS5%'S=I#$`X``,V41LU!1.'ES>]#S:M$X<T"1#I*56\F`!$$`.O-7!81
- XXM"@#-*A;E.DI5;R8`$0\`S2(5T1GK(08`.7,C<B$(`#GE(0@`.5XC5NO-44?-
- XXMVD,\````S91&S4%$X>7-[T/-JT3AS0)$(00`.5XC5B$$`,U<%A$*`,TJ%N4A
- XXM!@`Y7B-6(0\`S2(5T1GK(08`.7,C<B$(`#GE(0@`.5XC5NO-44?-043AY<WO
- XXM0\VK1.'-`D0A%``Y?B.VPO]((0@`.<WO0\DA%``Y7B-6U2$*`#G-[T/AS0)$
- XXMR<TS%0``(0P`.5XC5M7-*DG1Y<VM3M')S3,5Z/\A``#K(00`.7,C<B$``.LA
- XXM!@`Y<R-R(1``.>4A!@`Y7B-6Z\U?1\W:0SP```#-E$;-%40A*@`Y7B-6Z\WO
- XXM0\TM1,W!1.'-`D0A$``YY<U#3-'EW>'=;@[=9@]$32'75>LA&``Y<R-RP[!)
- XXM(1@`.>5^(V9O$0@`&>OA<R-RZQ'X_QDA&``Y7B-6ZUXC5B$``,V1%<K@22$8
- XXM`#E>(U;K7B-6(08`.7XC9F_-<A7"X$G#F4DA&``Y7B-6ZUXC5B$``,V1%<K6
- XXM2]UN"MUF"Q%L!QGK(10`.7,C<B$8`#E>(U8A!``97B-6(18`.7,C<L,U2B$6
- XXM`#GE?B-F;Q$&`!GKX7,C<NL1^O\9(18`.5XC5NM^([;*7THA%@`Y7B-6ZUXC
- XXM5B$4`#E^(V9OS7(5PE]*PQY*(18`.5XC5NLC(UXC5M7]X2$6`#E>(U8A!``9
- XXM7B-6(1H`.7,C<OWEW>7-VDO1T>7]X2$:`#E>(U;5W>7-VDO1T>LA&@`Y<R-R
- XXM(1@`.5XC5B$&`!E>(U;KPWU+8&G]Y='KS:T5PN!*8&G]Y='-<A7*$DO=;@3=
- XXM9@41`@#KS9$5RA)+8&GK(1H`.7XC9F_-K!7"%DM@:>LA&@`Y?B-F;\UR%<H2
- XXM2]UN!-UF!1$!`.O-K!7"%DO=Y>')PXQ+8&G]Y='KS:T5PG9+8&G]Y='-<A7*
- XXM0$O=;@3=9@41`@#KS9$5PG9+8&GK(1H`.7XC9F_-K!7"=DM@:>LA&@`Y?B-F
- XXM;\UR%<IR2]UN!-UF!1$"`.O-K!7"=DO=Y>')PXQ+W>7AR<VQ%@(``0"Y2@``
- XXM&4MY2R$0`#GE(1H`.5XC5NLC(UXC5B$0#LTJ%LU?1\U!1.'ES>]#S:M$X<T"
- XXM1"$0`#GES4-,T>7=X=WEX1$0`!GE?B-F;R/KX7,C<NLKW>7AR<TS%0``(0P`
- XXM.4XC1B$.`#E>(U;5W>'=Y>$1.@#KS9$5RA1,(0H`"5XC5M7-KU#1$9/^&=WE
- XXMT1GEW>$A#``)7B-6U2$.``E>(U;5W>7AT>O-AA;1&1&\`AD1!P#KS<85Y=WE
- XXMX='KS886R<TS%?C_(0@`.>4A%@`Y7B-6Z\WO0\W:0X!1`0#-U47AS0)$(00`
- XXM.>4A%@`Y7B-6Z\WO0\W:0X!1`0#-FT7AS0)$(0@`.<WO0\W:0P````#-)T?*
- XXMSDPA"``YY<WH0X!1`0#-043AY<WO0\VK1.'-`D0A!``YY<WH0P$```#-043A
- XXMY<WO0\W!1.'-`D0A!U;E_>$A"``YS>]#S=I#/````,W51<UR1^7]Y>$C(^7]
- XXMX2LKT7,C<B$(`#G-[T/-VD,\````S9M%S7)'Y=WAW>7A$3P`Z\W&%>7]Y>$C
- XXM(^7]X2LKT7,C<B$\`-WET<U8%>7=X=WEX>7]Y>$C(^7]X2LKT7,C<B$$`#G-
- XXM[T/-VD,$`'``S:M$S=I#!P```,W51<UR1R(35B$$`#G-[T/-VD,`````S3Q'
- XXMRLI-(48`Y=WAPXM-W>7A(^7=X2O=Y<VO4-'-7T?-%40A"``YS>]#S2U$S3Q'
- XXMRL=-(00`.>7=Y<VO4-'-7T?-043AY<WO0\W!1.'-`D3#@TW#$DXA1@#EW>'#
- XXMVTW=Y>$KY=WA(R$$`#G-[T/-VD,`````S2='RA).(00`.>7=Y>$KY<VO4-'-
- XXM7T?-043AY<WO0\VK1.'-`D3#TTW=Y>$B$58A!``YS>]#S7)'1$TB%5;=Y<VO
- XXM4-$1;@'-<A7*/$XA'0`B9U4A``#EW>'#34[=Y>$CY=WA*]WEX2D195497B-6
- XXMU6!IT>O-D17*>4[=Y>$I$655&5XC5F!IZ\V&%D1-PT5.(1P`(F=58&DCY?WE
- XXMX2,CY?WA*RO1<R-RW>7AY?WEX2,CY?WA*RO1<R-R(0``(A=6(0=6R<TS%0``
- XXM(4M51$TA6E#EW>'=Y>$CY=WA*UX6`-5@:2-$32O1<WJSRME.P[U.(0P`.5XC
- XXM5B$,`!E>(U8A`P#-*A81=%`9Y=WA(4M51$W=Y>$CY=WA*UX6`-5@:2-$32O1
- XXM<]WEX2/EW>$K7A8`U6!I(T1-*]%SW>7A(^7=X2M>%@#58&DC1$TKT7-@:2-$
- XXM32LA#``Y7B-6(0@`&>7]X?UN`/UF`1$#`,TJ%A&*4!GEW>'=Y>$CY=WA*UX6
- XXM`-5@:2-$32O1<]WEX2/EW>$K7A8`U6!I(T1-*]%SW>7A(^7=X2M>%@#58&DC
- XXM1$TKT7/]Y>$K*^7]X5XC5M7%S<Q0T=%$3?WEX2LKY?WA7B-6(60`&>7%S<Q0
- XXMT=%$3?WEX2LKY?WA7B-6(60`&>7%S<Q0T=%$3?WEX2LKY?WA7B-6(60`&>7%
- XXMS<Q0T=%$32$,`#E>(U8A"@`97B-6(60`S9$5RC-0(3(`ZR$!``ES(0P`.5XC
- XXM5B$*`!E>(U8A,``9$<@`Z\V1%>LA`@`)<R$"`%!9&41-(0P`.5XC5B$*`!E>
- XXM(U8A9``9Y<7-S%#1T41-(4M5R41A>2!-;VX@,#`@,#`Z,#`Z,#`@,3DP,`H`
- XXM4W5N36]N5'5E5V5D5&AU1G)I4V%T`$IA;D9E8DUA<D%P<DUA>4IU;DIU;$%U
- XXM9U-E<$]C=$YO=D1E8P#-,Q4``"$,`#E>(U8A!`#-QA7"R%`A;@')(6T!R<TS
- XXM%0``(0P`.4XC1F!I(T1-*R$.`#E>(U8A"@#-D17*$E$A#@`Y7B-6(0H`S5@5
- XXM$0H`Z\W&%1$P`!GE8&DC1$TKT7/#'E$A(`#E8&DC1$TKT7,A#@`Y7B-6(0H`
- XXMS<85$3``&>5@:2-$32O1<V!IR0!R"@```````````````#`Q,C,T-38W.#EA
- XXM8F-D968`````````````````````````````````````````````````````
- XXM````````````````````````````````````````````````````````````
- XXM````````````````````````````````````````````````````````````
- XXM````````````````````````````````````````````````````````````
- XXM````````````````````````````````````````````````````````````
- XXM````````````````````````````````````````````````````````````
- XXM````````````````````````````````````````````````````````````
- XXM````````````````````````````````````````````````````````````
- XXM````````````````````````````````````````````````````````;EH`
- XXM_```````````````````````````````````````````````````````````
- XXM````````````````````````````````````````````````````````````
- XXM````````````````````````````````````````````````````````````
- XXM````````````````````````````````````````````````````````````
- XXM````````````````````````````````````````````````````````````
- XXM````````````````````````````````````````````````````````````
- XXM``````````````````````````````````````````````#4+!4ZLSN0/```
- XXM````````````````````````````````````````````````````````````
- XXM````````````````````````````````````````````````````````````
- XXM````````````````````````````````````````````````````````````
- XXM````````````````````````````````````````````````````````````
- XXM````````````````````````````````````````````````````````````
- XXM````````````````````````````````````````````U"Q3/3H_.C\`````
- XXM````````````````````````````````````````````````````````````
- XXM```````?`!P`'P`>`!\`'@`?`!\`'@`?`!X`'P"V!P4`30&W!SH`+P$``'<`
- XXM+P&R!Y`!``"S!R\!``"T!R\!.@```"\!00"_!U8`+P'`!U8`+P'!!U8`+P$`
- XXM`)`!``"_!U8`$`'`!U8`$`'!!U8`$`$``)`!```!``$`?54!``(``0"/50``
- XXM`P`!`*=5`0`$``$`OU4!``4``0"_50$`__\`````````````````````````
- XXM```````````````!````!`````````$!``$``````````0(``0``````````
- XXM````````````````````````````````````````````````````````````
- XXM````````````````````````````````````````````````````````,54U
- XXM50`````#`6-A=```````````````````````````````````````````````
- XXM````````````````````````````````````````````````````````````
- XXM`````````````````````````"LG-"<````````*4TA!4CH@0W)E871E+V5X
- XXM=')A8W0@9FEL92!A<F-H:79E(&9O<B!E>'1R86-T:6]N(&)Y("]B:6XO<V@@
- XXM*&YO<FUA;&QY*2X*"G5S86=E.B!S:&%R(%LM=2!A<F-H:79E72!;6RUA72!;
- XXM+7`@<')E9FEX72!;+60@9&5L:6U=(%LM8F-V72!F:6QE<R`^(&%R8VAI=F5=
- XXM"@H)=VAE<F4Z"2UA("!A;&P@=&AE(&]P=&EO;G,@*'8L8RQB+"UP6%@I"@`)
- XXM"2UB("!E>'1R86-T(&%B<V]L=71E('!A=&AS(&EN=&\@8W5R<F5N="!D:7)E
- XXM8W1O<GD*"0DM8R`@8VAE8VL@9FEL97-I>F5S(&]N(&5X=')A8W1I;VX*"0DM
- XXM9"`@=7-E('1H:7,@14]&(&1E;&EM:71E<B!I;G-T96%D(&]F(%-(05)?14]&
- XXM"@`)"2UP("!U<V4@=&AI<R!A<R!P<F5F:7@@=&\@96%C:"!L:6YE(&EN(&%R
- XXM8VAI=F5D(&9I;&5S"@D)+74@('5N<VAA<B`\87)C:&EV93X*"0DM=B`@=F5R
- XXM8F]S92!O;B!E>'1R86-T:6]N+"!I;F-L+B!E8VAO:6YG(&9I;&5S:7IE<PH`
- XXM``(``)XY`P```)XY`@`!`.,L`@```@$`XRP"```"`0#C+`(``````-0L````
- XXM````U"P```````#4+````````-0L````````U"P```````#4+````````-0L
- XXM````````U"P```("`0">.0$``````-HU2%D"`-\U2%D"`.0UY%@%`.DUY%@%
- XXM`.XUY%@%`/,UY%@%`/@UY%@$`/TUY%@$``(VZE@#``<VZE@#````FED`````
- XXM```!`0`!'C@`````````````````````````````````````````````````
- XXM````````````````````````````````````````````````````````````
- XXM````````````````````````````````````````````````````````````
- XXM````````````````````````````````````````````````````````````
- XXM`````````````````````````````````````````````!H:&AH:&AH:&AH:
- XX(&AH:&AH:&@`:
- XX`
- XXend
- SHAR_EOF
- if test 31597 -ne "`wc -c shar.uue`"
- then
- echo shar: error transmitting shar.uue '(should have been 31597 characters)'
- fi
- # End of shell archive
- exit 0
- --
-
- Mike Kersenbrock
- Tektronix Software Development Products
- Aloha, Oregon
- 20-Jul-86 06:19:32-MDT,2246;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Sun 20 Jul 86 06:19:25-MDT
- Received: from brl-smoke.arpa by AMSAA.ARPA id a000661; 20 Jul 86 7:44 EDT
- Received: from USENET by SMOKE.BRL.ARPA id a023275; 20 Jul 86 7:41 EDT
- From: "Willie Smith, LTN Components Eng." <w_smith@wookie.dec.com>
- Newsgroups: net.micro.cpm
- Subject: UUDECODE sources in assembly?
- Message-ID: <4283@decwrl.DEC.COM>
- Date: 20 Jul 86 02:15:34 GMT
- Sender: daemon@dec.ARPA
- To: info-cpm@AMSAA.ARPA
-
- Greetings. I really like the idea of passing around binaries
- (with the sources of course, no trojans or logic bombs please!)
- using UUENCODE and UUDECODE, and I can hardly wait to start
- using them on things like crunch12, but there's this problem...
- uudecode.com is uuencoded, and I don't have Pascal. With the
- help of my friendly (and incredibly patient) system mangler, I
- managed to find an ARChived CP/M uudecode.com, but I don't have
- a CP/M ARC program. Well, a little more searching turned up a
- program DEARC.LBR, but I don't have a library utility. All I
- need now is a library utility that's uuencoded, and I can close
- the loop! :+)
- Actually, I did manage to find a SWEEP utility that runs on
- a VAX, but the uudecode.com file it builds (by the time I get it
- shipped home via Kermit) doesn't work at all, and a quick disassembly
- of the code leads me to believe there's a bug somewhere, it don't
- look like code to me!
- A quick look at the Pascal code makes the process of uudecoding
- look fairly easy, but if someone has already written an assembly
- routine (or Basic, I'm not that proud) that I could use on my
- copy of uudecode.uue, I could bootstrap this whole thing...
-
- Many thanks as usual for any and all assistance!
-
- UUCP: decwrl!wookie.dec.com!smith
- Internet: smith@wookie.dec.com
- Dec ENET: WOOKIE::SMITH
-
- The above doesn't even represent opinions, much less mine, but if it
- did, and you thought Digital Equipment Corporation subscribed to my
- views, you would need psychiatric help and brain removal.
-
- VAX and Kermit and probably 40 percent of the words commonly in
- use in the technical community (including Basic and CP/M) are
- trademarks of somebody or other...
-
- 20-Jul-86 07:11:27-MDT,690;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Sun 20 Jul 86 07:11:20-MDT
- Received: from simtel20.arpa by AMSAA.ARPA id a000761; 20 Jul 86 8:54 EDT
- Date: Sun 20 Jul 86 06:52:46-MDT
- From: Jim Forrest <JFORREST@SIMTEL20.ARPA>
- Subject: Need MEX for Apple 2e
- To: INFO-MICRO@SIMTEL20.ARPA
- cc: INFO-CPM@SIMTEL20.ARPA, JFORREST@SIMTEL20.ARPA
- Message-ID: <12224177541.12.JFORREST@SIMTEL20.ARPA>
-
- I need MEX for an Apple 2e with microsoft card and micromodem IIe.
- Would appreciate someone sending to:
- JFORREST@SIMTEL20
- Please reply direct to me, not to the entire list. I can handle uuencoded
- or squeezed or whatever.
- Thanks
- Jim
- -------
- 20-Jul-86 16:34:48-MDT,1530;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Sun 20 Jul 86 16:34:40-MDT
- Received: from simtel20.arpa by AMSAA.ARPA id a001104; 20 Jul 86 18:19 EDT
- Date: Sun, 20 Jul 1986 16:17 MDT
- Message-ID: <KPETERSEN.12224280396.BABYL@SIMTEL20.ARPA>
- Sender: KPETERSEN@SIMTEL20.ARPA
- From: Keith Petersen <W8SDZ@SIMTEL20.ARPA>
- To: Info-Cpm@AMSAA.ARPA, Mark Becker <Cent.Mbeck%OZ.AI.MIT.EDU@mit-xx.ARPA>
- Subject: Public domain BASIC compiler for CP/M-80
-
- Now available from SIMTEL20:
-
- Filename Type Bytes CRC
-
- Directory PD:<CPM.BASIC>
- B-COMPIL.LBR.1 BINARY 87424 D5E5H
-
- This is BCBC version 1.1 for CP/M-80, written by Bruce Tonkin. It's
- a BASIC compiler which generates assembler source code for ASM or MAC
- (RMAC should work too). Intel 8080 opcodes are used so the resultant
- program will run on either 8080 or Z80 CP/M systems. This BASIC uses
- syntax similar to MBASIC, but some statements may need to be changed.
- Be sure to read the sample program included in this LBR.
-
- If you are unable to access SIMTEL20 because of network restrictions
- it's also available on my RCP/M Royal Oak (MI) which may be accessed
- at 300 bps (Bell 103a), 1200 bps (Bell 212a), or 2400 bps (V.22 bis).
- The telephone number is (313) 759-6569. It can also be found on the
- CP/M RoundTable on General Electric Information Services' GEnie.
-
- --Keith Petersen
- Arpa: W8SDZ@SIMTEL20.ARPA
- GEnie Mail: W8SDZ
- uucp: {ihnp4,allegra,cmcl2,dual,decvax,mcnc,mcvax,vax135}!seismo!w8sdz
- 21-Jul-86 07:50:23-MDT,2073;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Mon 21 Jul 86 07:50:14-MDT
- Received: from simtel20.arpa by AMSAA.ARPA id a007437; 21 Jul 86 9:09 EDT
- Date: 17 Jul 1986 1042-EET (Thursday)
- Message-ID: <KPETERSEN.12224319155.BABYL@SIMTEL20.ARPA>
- Sender: Urs Zurbuchen <mcvax!ethz!zu@seismo.css.gov>
- From: Urs Zurbuchen <mcvax!ethz!zu@seismo.css.gov>
- To: W8SDZ@SIMTEL20.ARPA
- Subject: PD-Editor
- ReSent-From: KPETERSEN@SIMTEL20.ARPA
- ReSent-To: Info-Cpm@AMSAA.ARPA
- ReSent-Date: Sun 20 Jul 1986 19:50-MDT
-
- I am a European CP/M user. I'm looking for a new programming editor.
- By now, I'm using WordStar, but if I can something 'better', I would
- be really glad. I write to you because you regularly publish a list
- of PD software which American users can download from SIMTEL. I'm
- sure there are some PD screen editors on this system. If there is even
- one which comes close to my needs (see below), could you mail me how I
- can get hands on that piece of software? Any other hints concerning an
- editor would be greatly appreciated.
-
- Here follows my wish list:
- - small and fast
- - can use memory-mapped video board
- - editing multiple files, display at least two of them
- simultaniously (windowing)
- - support arbitrary sized files
- - free key-to-commands-binding (no problem if I have the
- source)
- - macros
- - automatic indenting
- - if possible without overlays, so I can run it off my
- ramdisk without accessing the "slow and noisy" drives.
- - not too much useless infos on the screen
-
- I think that's enough. I tried to keep the list in an order: top
- points are more important than those at the end. There is no need for
- word processing capability. The language it's written in doesn't
- matter, too. I hope there is such a beast. If not, I will perhaps
- write my own. (and then donate it to the PD, if there is any
- interest)
-
- For any reply best thanks in advance,
- ...Urs Zurbuchen
-
-
- PS: What editor do you use for your programming?
-
- --
- UUCP: ...seismo!mcvax!cernvax!ethz!zu
- 21-Jul-86 13:09:54-MDT,952;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Mon 21 Jul 86 13:09:47-MDT
- Received: from lll-mfe.arpa by AMSAA.ARPA id a021205; 21 Jul 86 14:26 EDT
- Date: Mon, 21 Jul 86 14:23 EST
- From: SECRIST%OAK.SAINET.MFENET@LLL-MFE.ARPA
- Subject: EMACS clones
- To: INFO-CPM@AMSAA.ARPA
-
- From: <SECRIST%OAK.SAINET.MFENET@LLL-MFE.Arpa> (Richard C. Secrist)
- Date: Mon, 21-JUL-1986 14:24 EST
- To: INFO-CPM@AMSAA.ARPA
- Message-ID: <[OAK.SAINET.MFENET].A15B96A0.008F240E.SECRIST>
- Header-Disclaimer: I don't like my headers either.
- Quote: "May your future be limited only by your dreams." -- Christa McAuliffe
- Organization: Science Applications Int'l. Corp., Oak Ridge, Tenn., USA
- CompuServe-ID: [71636,52]
- X-VMS-Mail-To: CPM
-
- Someone mentioned that a user's group at Los Alamos or someplace would
- sell you Mark-of-the-Unicorn EMACS (now rescinded) for $50. Does anyone
- know about this ?
-
- r c s
- 21-Jul-86 14:41:23-MDT,2709;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Mon 21 Jul 86 14:41:03-MDT
- Received: from wiscvm.arpa by AMSAA.ARPA id a024853; 21 Jul 86 15:50 EDT
- Received: from (TTTLEH5)NEUVM1.BITNET by WISCVM.ARPA on 07/21/86 at
- 14:49:25 CDT
- Date: MONDAY 07/21/86 21:43:25 DNT
- To: INFO-CPM@AMSAA.ARPA
- From: TTTLEH5%NEUVM1.BITNET@WISCVM.ARPA
- Subject: REV TO UUENCODE/UUDECODE
-
- Hi Cpm people.
-
- I got the uuencode/uudecode files some days ago, this is really what we
- need.
- BUT because of all these networks, where some of the gateways change
- some of the special characters (like the ARPANET - BITNET gateway), one
- can't trust all the special characters made by uuencode. So this have
- to be changed. And the problem is to choose 64 chracters, which does not
- changed when ported from network to network. So I took these:
- ':', '0'..'9', 'A'..'Z', 'a'..'z', '.'
- eg. ':', all digits, all upper and lower case letters, '.', hoping that
- they will be useable. So if we can use this instead of the UUENCODE/UU-
- DECODE there is a chance of making the stuff you send useable to BITNET
- users too. Or at least use it when sending binfiles to the Info-Cpm list.
-
- So far I am working on the encoding part of the program. I have used the
- code from UUENCODE/UUDECODE as inspiration, but started over because I
- did not like the coding style of them. And I will probaly start on the
- decoding part one of the next days. So within a week or two I should
- have working and testing Pascal programs finished. But I do not know
- when I can mail them to the list. That may take some time. But when done
- the .COM file should be coded in some kind of HEX format, so all can
- download them without problems. This is true bootstraping.
-
- What I want is to hear what you mean about this. Comments and ideas are
- very welcome. Hope that you like it and that I did not leave too much out
- when explaining my ideas.
-
- Kind regrads from Copenhagen -- Denmark.
-
- Klaus Elmquist Nielsen
-
- BITNET: TTTLEH5 at NEUVM1
- NEUKLAUS at NEUVM1
- -------------------------------------------------------------------------
-
- To explain how UUENCODE works, just try to look at the binary file as
- one long bitstring. If one then take 6 bit at a time, this gives you a
- sequence of numbers in the range 0..63 . And since it is possible to find
- 64 independent characters, this give you a sequence of chars, or a text
- file. Organising this in lines with control info like line length, header
- and terminater gives you a useable fileformat.
- UUDECODE do the work in the reverse order, eg make a binary file from the
- ascii file from UUENCODE.
- 21-Jul-86 18:24:38-MDT,905;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Mon 21 Jul 86 18:24:30-MDT
- Received: from acc.arpa by AMSAA.ARPA id a027388; 21 Jul 86 20:01 EDT
- Date: 21 Jul 86 16:43:00 PST
- From: shawn@ACC.ARPA
- MMDF-Warning: Parse error in preceding line at AMSAA.ARPA
- Subject: commodore128 disk format
- To: shawn <shawn@acc.ARPA>
- cc: info-cpm@AMSAA.ARPA
- Reply-To: shawn@ACC.ARPA
- MMDF-Warning: Parse error in preceding line at AMSAA.ARPA
-
-
- No, I didn't buy one, I have received a call from someone who would like
- to use the Commodore-128 in its CP/M Mode, and wants to use some of our KAYPRO
- public domain software. First, can anyone tell me which disk formats it will
- read? and second, does it emulate any specific terminal (amd3a, vt52, or ?)
- would appreciate a reply either to me, shawn@acc.arpa, or to info-cpm.
- Thanks in advance
- shawn@acc.arpa
- ------
- 21-Jul-86 21:39:02-MDT,1439;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Mon 21 Jul 86 21:38:55-MDT
- Received: from simtel20.arpa by AMSAA.ARPA id a027735; 21 Jul 86 23:09 EDT
- Date: Mon, 21 Jul 1986 21:08 MDT
- Message-ID: <KPETERSEN.12224595451.BABYL@SIMTEL20.ARPA>
- Sender: KPETERSEN@SIMTEL20.ARPA
- From: Keith Petersen <W8SDZ@SIMTEL20.ARPA>
- To: "Jeffrey D. Struven" <jds%rayssd.uucp@BRL.ARPA>
- Cc: Info-Micro@BRL-VGR.ARPA, Info-Cpm@AMSAA.ARPA
- Subject: Using CP/M on the Commodore 128
- In-reply-to: Msg of 21 Jul 1986 14:25-MDT from Jeffrey D. Struven <jds%rayssd.uucp at BRL.ARPA>
-
- >[the] CP/M disk [has some programs] on side 1 and the rest on side 2,
- >every time he wants to change the date or use the functions that are
- >not on the boot side of the disk he has to flip the disk....
-
- The Commodore C128 CP/M disk was distributed that way for people with
- single-sided drives. It is expected that the user will copy those
- files onto a double-sided disk if his drive supports that. If he has
- only one drive, there are several single-drive copy programs available
- that will do the job. One is MFT48, available from many RCP/M
- systems, local user groups, or the CP/M RoundTable on General Electric
- Information Service's GEnie.
-
- --Keith Petersen
- Arpa: W8SDZ@SIMTEL20.ARPA
- uucp: {ihnp4,allegra,cmcl2,dual,decvax,mcnc,mcvax,vax135}!seismo!w8sdz
- GEnie Mail: W8SDZ
- RCP/M Royal Oak: 313-759-6569
- 22-Jul-86 11:41:59-MDT,2795;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Tue 22 Jul 86 11:41:37-MDT
- Received: from wiscvm.arpa by AMSAA.ARPA id a009951; 22 Jul 86 12:56 EDT
- Received: from (TTTLEH5)NEUVM1.BITNET by WISCVM.ARPA on 07/22/86 at
- 11:54:47 CDT
- Date: Tue, 22 Jul 86 17:17:05 DNT
- To: info-cpm@AMSAA.ARPA
- From: TTTLEH5%NEUVM1.BITNET@WISCVM.ARPA
- Subject: rev to uuencode/uudecode
-
- * I got some strange msg's from info-cpm @ amsaa . arpa ,
- * so I resend this letter.
- Hi Cpm people.
-
- I got the uuencode/uudecode files some days ago, this is really what we
- need.
- BUT because of all these networks, where some of the gateways change
- some of the special characters (like the ARPANET - BITNET gateway), one
- can't trust all the special characters made by uuencode. So this have
- to be changed. And the problem is to choose 64 chracters, which does not
- changed when ported from network to network. So I took these:
- ':', '0'..'9', 'A'..'Z', 'a'..'z', '.'
- eg. ':', all digits, all upper and lower case letters, '.', hoping that
- they will be useable. So if we can use this instead of the UUENCODE/UU-
- DECODE there is a chance of making the stuff you send useable to BITNET
- users too. Or at least use it when sending binfiles to the Info-Cpm list.
-
- So far I am working on the encoding part of the program. I have used the
- code from UUENCODE/UUDECODE as inspiration, but started over because I
- did not like the coding style of them. And I will probaly start on the
- decoding part one of the next days. So within a week or two I should
- have working and testing Pascal programs finished. But I do not know
- when I can mail them to the list. That may take some time. But when done
- the .COM file should be coded in some kind of HEX format, so all can
- download them without problems. This is true bootstraping.
-
- What I want is to hear what you mean about this. Comments and ideas are
- very welcome. Hope that you like it and that I did not leave too much out
- when explaining my ideas.
-
- Kind regrads from Copenhagen -- Denmark.
-
- Klaus Elmquist Nielsen
-
- BITNET: TTTLEH5 at NEUVM1
- NEUKLAUS at NEUVM1
- -------------------------------------------------------------------------
-
- To explain how UUENCODE works, just try to look at the binary file as
- one long bitstring. If one then take 6 bit at a time, this gives you a
- sequence of numbers in the range 0..63 . And since it is possible to find
- 64 independent characters, this give you a sequence of chars, or a text
- file. Organising this in lines with control info like line length, header
- and terminater gives you a useable fileformat.
- UUDECODE do the work in the reverse order, eg make a binary file from the
- ascii file from UUENCODE.
- 22-Jul-86 13:13:28-MDT,1498;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Tue 22 Jul 86 13:13:21-MDT
- Received: from wiscvm.arpa by AMSAA.ARPA id a011953; 22 Jul 86 13:58 EDT
- Received: from (FISHER)RPICICGE.BITNET by WISCVM.ARPA on 07/22/86 at
- 12:56:43 CDT
- Date: 22 July 86 13:52-EST
- From: FISHER%RPICICGE.BITNET@WISCVM.ARPA
- To: INFO-CPM@AMSAA.ARPA
- X-Acknowledge:
- Subject: BITNET mail follows
-
- Date: 22 July 1986, 13:34:26 EAS
- From: FISHER at RPICICGE
- To: INFO-CPM at AMSAA.ARPA
-
- As a new-comer to this group with access only through BITNET I face the
- frustration common to all non-FTP'ers: Public domain software--you
- can't get there from here.
- Maybe this is a tired question, but I'll ask anyway. Are there any
- volunteers out there in BITNET-land willing to establish branch offices
- for the SIMTEL20 main repository? It would be a major committment for
- any one installation to support a complete online service, but some
- distributed arrangement might be feasible.
- I, for one, am willing to offer some form of online file server
- for some suitably sized subset of the respository and perhaps an
- offline server (e.g. tape-based with requests processed every few
- days) for the full library. Anyone else?
- (Of course, there is the implied assumption that given the
- volunteers on the BITNET side of the world there will be some way
- to get a copy of the full library and the ongoing additions. :-)
-
- JSFisher FISHER@RPICICGE.BITNET
- 22-Jul-86 20:11:37-MDT,1834;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Tue 22 Jul 86 20:11:23-MDT
- Received: from mitre.arpa by AMSAA.ARPA id a020184; 22 Jul 86 21:34 EDT
- Full-Name: Thomas Reid
- Message-Id: <8607230133.AA23950@mitre.ARPA>
- Organization: The MITRE Corp., Washington, D.C.
- To: fisher%rpicicge.bitnet@wiscvm.ARPA
- Cc: info-cpm@AMSAA.ARPA
- Subject: Re: Bitnet access to simtel20 archives
- Date: Tue, 22 Jul 86 21:33:20 -0500
- From: treid@MITRE.ARPA
-
- This will not solve your read need but may help a bit. Treat the new
- PD S/W announcements at simtel20 as your shopping list at your local
- RCPM. Ask your sysop to be looking for the new package or update. Many
- times, the RCPM may already have it.
-
- Put a message on your local RCPM asking for those who DO have arpanet
- access if they would please pick a library up off of simtel20 and upload
- it to the RCPM. All each community needs is one or two good deeders and
- the software will appear.
-
- The recent messages on uuencode and uudecode sources in Turbo Pascal also
- give hope in that libraries can be transferred in the mail with only a
- small penalty (33%). Now a message asking for a good soul to send it
- through the mail can be answered (though this has great possibilities
- for abuse - Keith Petersen: would you care to comment!?).
-
- Wrose comes to worse - everything in the simtel20 archives is also
- on Keith Petersen's RCPM in Royal Oak, Michigan (phone # not handy).
- On Saturday or Sunday or the deep of night, a 100K download will be
- only a couple of bucks.
-
- But back to the front: being nice to your RCPM sysop will keep him
- helping you. Remember: most sysops run their RCPMs as a hobby, many
- times an expensive hobby. They do a great service to all and rarely
- get the public appreciation that they deserve.
- 22-Jul-86 23:30:21-MDT,13775;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Tue 22 Jul 86 23:29:50-MDT
- Received: from simtel20.arpa by AMSAA.ARPA id a020558; 23 Jul 86 0:44 EDT
- Date: Tue, 22 Jul 1986 22:31 MDT
- Message-ID: <KPETERSEN.12224872792.BABYL@SIMTEL20.ARPA>
- Sender: KPETERSEN@SIMTEL20.ARPA
- From: Keith Petersen <W8SDZ@SIMTEL20.ARPA>
- To: Info-Cpm@AMSAA.ARPA, Info-Micro@BRL.ARPA
- Subject: Interview with MNP protocol author
-
- By permission of the publisher...
-
- ----
-
- Originally published by Black Box Corporation in the Black Box
- COMMUNICATOR. For a free subscription to the COMMUNICATOR, the BLACK
- BOX(R) Catalog and/or the Personal BLACK BOX(R) Catalog, call (412)
- 746-5500 or write: Black Box Corporation, Subscription Department,
- P.O. Box 12800, Pittsburgh, PA 15421.
-
-
-
- ERROR CORRECTION IN MODEMS... AND THE MNP PROTOCOL
-
- An Interview with Greg Pearson,
- the Developer of MNP
-
-
-
- ******************************************************
-
- "(Error correction in modems) is a transparent solution
- to a problem that's been with us all the time -- noisy
- telephone lines."
-
- ******************************************************
-
-
- Sending information, minus the errors, is a top priority among data
- communicators everywhere. As a result, more and more modems are being
- equipped with the MNP link protocol in their firmware. Many people
- feel that this is the most effecicent way to eliminate errors in
- today's high-speed dial-up communications. And Greg Pearson, MICOM's
- Chief Software Development Manager for Analog Products, is one of them.
- The MNP Protocol is his brainchild -- the product of Greg Pearson's
- attempt to develop a complete protocol, one with several layers that
- perform independently of the others. Needless to say, he was
- successful.
-
- This issue of the Communicator features a new Black Box modem that
- offers the benefits of the MNP error-control protocol. That modem --
- the Dial Modem 24+, featured on page 15 of the COMMUNICATOR -- is just
- one example of the important place MNP is taking in the future of data
- communications.
-
-
- BBC: In much of your published material on MNP, you've stressed that
- MNP has the richest set of protocols -- that it includes both a full-
- fledged link protocol as well as higher level protocols like session
- and file transfer. To begin our discussion on error correction in
- modems, can you tell us what you mean by a "full-fledged link protocol"
- -- and then give an overview of the different types of error correcting
- techniques?
-
- PEARSON: For one thing, a full-fledged link protocol has to provide
- layer independence. By that I mean that it doesn't depend on the layer
- above it to operate effectively. Since error-control is offered at the
- link protocol layer, it's important that it be independent. And that's
- not the case with the X.PC protocol. X.PC is actually a layer 3
- protocol that integrates certain aspects of layer 2 from the OSI
- Reference Model. If you're a real architectural purest, you wouldn't
- do this.
-
- As for the different types of error correcting techniques used for
- point-to-point error correction to date, in the hobbyiest world -- or
- rather, the retail-oriented market -- three come to mind right away.
- They are Xmodem, X.PC and MNP.
-
- In a sense, these three techniques have been used to accomplish the
- same work, but in different environments. For example, many personal
- computer software packages use the Xmodem protocol for the error-free
- transmission of files over a dial-up telephone connection. But if a
- user wants to send an error-free file from a PC into TYMNET(R), X.PC
- would be used since it's the protocol used by TYMNET. On the other
- hand, if you wanted to do the same thing -- that is, send any data
- error-free over a dial-up connection -- with the protocol built into
- the modems themselves, you would use MNP.
-
-
- BBC: Can one protocol be replaced by another?
-
- PEARSON: Well, you could use X.PC or MNP in the same application as
- the Xmodem protocol. Basically, Xmodem is a very simple technique --
- one that's good for file transfer but not for interactive traffic.
-
- And, as I just mentioned, X.PC is a software protocol approach used by
- TYMNET. A couple of companies have put X.PC into the firmware of
- their modems, but there are some significant disadvantages in doing
- that -- and the most noticable to the user is the difference in
- throughput. If you take a look at the market, the use of the MNP
- error-control protocol in modems is by far the preferred choice. It's
- currently used in the products of something like 16 or 18 modem
- vendors.
-
-
- **************************************************
-
- "Imagine sending all of WAR AND PEACE with the
- probability of getting only one 1-bit error."
-
- **************************************************
-
-
- BBC: Can you explain what you mean by throughput?
-
- PEARSON: Yes. When you have a 2400 bps modem without error control,
- the user can expect to send 2400 bits per second. When you implement
- X.PC in the firmware of that modem, it uses 9% of those 2400 bits per
- second for protocol purposes. So you could expect, in the best case,
- a throughput that would be 91% of the line speed.
-
- Now when using MNP in the firmware, you have a different situation.
- This, for the most part, is due to a feature that I refer to as
- "switch-to-sync."
-
-
- BBC: You talk about this feature in one of your articles, saying that
- it's an exclusive advantage of the MNP protocol. Can you explain what
- happens as a result of switch-to-sync?
-
- PEARSON: What happens is the transmission starts in the character-
- oriented mode -- or asynchronous mode. But if the modems at both ends
- of that transmission are equipped with MNP error-correction, the
- transmission will switch to bit-synchronous between the modems. As a
- result, the transmission is much more efficient.
-
-
- BBC: How does that affect the through-put of an MNP-equipped modem?
-
- PEARSON: Let me take you through the whole argument. When a user is
- connected to a V.22 bis 2400 bps modem, that user is operating in an
- asynchronous character mode. For every eight data bits transmitted,
- there is a start bit and a stop bit. That means that the user is
- sending 240 characters in 2400 bits -- or ten bits per character.
-
- Now, when an MNP error-correcting modem is sending data, it doesn't
- send the user's start and stop bits required in the asynchronous mode.
- So for every ten bits sent by the user, MNP only sends eight -- i.e.
- MNP is sending data 20% more efficiently than the user because it's
- sending 20% fewer bits.
-
- As for the bandwidth, MNP uses 11% for protocol mechanisms. So even
- though it loses 11% efficiency there, it gains 20% from the switch-
- to-sync operation -- and that puts you 9% ahead of the game.
-
- What that all boils down to is that MNP, on an error-free line, will
- impose no throughput degradation when built into the firmware of your
- modem. And because of the unique switch-to-sync feature, MNP is
- functionally like SDLC or HDLC, the two popular synchronous link
- layer protocols.
-
-
- BBC: What does this all mean to the user?
-
- PEARSON: You can have your cake and eat it too. The ideal aspect of
- the MNP link protocol is that you can have it either way -- character-
- oriented or bit-synchronous. Other protocols give you no options.
-
-
- BBC: What you're saying, then, is that MNP offers you a lot more
- flexibility than other protocols.
-
- PEARSON: That's right. And it has all the classical features of a
- layer 2 protocol: it's full-duplexed -- that is, it can send and
- receive data at the same time -- it has error detection based on a
- very powerful 16-bit CRC, ithas retransmission for error correction,
- and it can reliably send a keyboard break signal... all of which
- actually makes it more powerful than HDLC.
-
-
- BBC: You mentioned the 16-bit CRC, or Cyclic Redundancy Check. Can
- you explain that? Also, tell us what actually happens in this type of
- retransmission error correction. I believe you refer to it as the
- 'go-back-n' method of correction.
-
- PEARSON: Any protocol, in order to provide an error-free transmission,
- must have two things. One -- it has to provide a way for the receiver
- to know if an error has occurred. That's error detection. The
- technique employed in MNP for this error detection uses a polynomial
- function to calculate a 16-bit number which is a function of all the
- data sent in a particular message. The MNP error-correcting protocol
- then sends those 16-bits at the end of its message.
-
- The receiver -- as it is receiving the message -- calculates its own
- version of this 16-bit number. Then it compares its number with the
- 16-bit number sent with the message. If the numbers are the same, the
- message is free from errors. If the numbers are different, an error
- has occurred somewhere in the message. That's how errors are detected.
-
- Once an error is detected, the receiver brings the error correction
- mechanism provided by the MNP link protocol into play. That correction
- mechanism calls for the receiver to send a message back to the sender.
- The sender -- recognizing that the last correct message sent before the
- error was data message number 'n' -- is cued to go back to the message
- following message 'n'. In other words, if the sender has sent five
- messages, and the receiver detects an error in message 4, the sender
- will 'go back' to message 4 and begin retransmitting information again.
-
- For all practical purposes, the result of the MNP link is error-free
- transmission. Using the 16-bit redundancy check, it will detect every
- error which is 16 bits or smaller, with 100% probability. As a result,
- the chances of an error occurring are actually so small that you can,
- in practice, ignore them. Imagine sending all of WAR AND PEACE with
- the probability of getting only one 1-bit error. That's what you could
- expect from an error-control protocol that uses the 16-bit CRC.
-
- ********************************************************
-
- "(MNP) is a very healthy protocol over long-delay
- channels, and that's important to dial-up users. You'd
- be surprised how many of your local calls today are
- being routed over satellite..."
-
- ********************************************************
-
-
- BBC: MNP also has the ability to send a number of messages before any
- acknowledgement is required. Can you explain this?
-
- PEARSON: Any link protocol that's going to work well over telephone
- lines must have this ability. If you're making a transcontinental call
- and it's transmitted by satellite, you don't want to wait for an
- acknowledgement from the receiver after each message. That's how
- Xmodem works.
-
- What you want to be able to do is send a number of messages at one
- time. MNP lets you have up to eight outstanding messages before an
- acknowledgement is required. And MNP is designed in such a way that
- only under the worst conditions would a sender ever have to wait
- between transmissions. It's a very healthy protocol over long-delay
- channels, and that's important to dial-up users. You'd be surprised how
- many of your local calls today are being routed over satellite or
- microwave.
-
-
- BBC: You've talked about MNP becoming the de facto standard -- the
- unofficial standard for dial-up connections. On what factors would
- this really depend? How much does the demand for error-controlling,
- high-speed modems influence this?
-
- PEARSON: A year ago, there was some question as to whether the V.22
- bis 2400 bps modem was really going to take off. I don't think that's
- much of an issue anymore. The price of these modems has come way down
- -- to the point that a 2400 bps modem can cost less than a Hayes(R)
- 1200. The higher speed modems are here to stay.
-
- What affect does this have on the demand for error control in modems?
- First of all, we're pushing more bits through the same width pipe --
- and we're getting more errors as a result. Secondly -- because we're
- sending more bits at a time -- whenever we do get an error, it really
- clobbers more bits. Finally, there's the way we're sending bits
- through the channels. When we get an error, it takes longer for the
- modem to recover -- so when you lose one character, you're actually
- losing a whole slew of characters.
-
- In short, our communications are much more error sensitive today. And
- we have a dramatically increased need to control errors because of
- that. A good way of doing that is by putting the protocol right in the
- firmware of a modem -- a way that doesn't really interfere with your
- through-put.
-
- It's a transparent solution to a problem that's been with us all the
- time -- noisy telephone lines.
-
-
- # # #
-
-
-
-
-
-
-
- -by Betsy Momich
- Publications Department
- Black Box Corporation
- 23-Jul-86 04:38:32-MDT,1184;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Wed 23 Jul 86 04:38:21-MDT
- Received: from brl-smoke.arpa by AMSAA.ARPA id a021273; 23 Jul 86 6:08 EDT
- Received: from USENET by SMOKE.BRL.ARPA id a015555; 23 Jul 86 5:51 EDT
- From: Harald Striepe <striepe%muscat.dec@BRL.ARPA>
- Newsgroups: net.micro.cpm
- Subject: Re: commodore128 disk format
- Message-ID: <10064@muscat.DEC>
- Date: 22 Jul 86 21:28:39 GMT
- To: info-cpm@AMSAA.ARPA
-
-
- I do not know whether the new drives for the 128 support standard
- formats, the older drives (1541) essentially contained the DOS in
- ROM inside the drive, you were stuck with a fixed file structure.
- It also used group coding, which does not follow standard FM and
- MFM formats (group coding is also used by Apple, and was used by
- the VICTOR 9000 to achieve high storage densities). The 1541 also
- uses varying rotational rates for different tracks. In other words,
- standard drives cannot create disks for the commodore standard.
- --
- Harald Striepe
- DEC Corporate Software Products Group, Santa Clara, CA
- decwrl!muscat!striepe, decwrl!dec-rhea!dec-winery!striepe, WINERY::STRIEPE
- 23-Jul-86 18:16:06-MDT,1234;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Wed 23 Jul 86 18:15:54-MDT
- Received: from brl-smoke.arpa by AMSAA.ARPA id a012244; 23 Jul 86 19:51 EDT
- Received: from USENET by SMOKE.BRL.ARPA id a005198; 23 Jul 86 19:42 EDT
- From: Peter Arrgh Korn <korn@pavepaws.ucb-vax.ARPA>
- Newsgroups: net.micro.cpm
- Subject: Plea for help
- Message-ID: <924@ucbcad.BERKELEY.EDU>
- Date: 23 Jul 86 08:43:17 GMT
- Sender: news@ucbcad.ARPA
- To: info-cpm@AMSAA.ARPA
-
-
- I have an old SuperBrain system, and I recently purchased an IBM
- clone. All of my files are in Lexisoft's Spellbinder, and for the
- life of me, I can't get XenoCopy or Uniform to read the disk and
- get the files off.
-
- Does anyone out there have ANY ideas? Also, where can I pick up
- a terminal program for my SuperBrain (and thus transfer via the
- serial port)? And finally, does anyone out there have the
- pinouts for the SuperBrain?
-
- Many many thanks to anyone who can help!
- (and a bottle of your favorite beer to the one who's fix works!)
-
- Peter
- -----
- Peter Korn "Fred Astaire? Ginger Rogers did
- korn@ucbvax.Berkeley.EDU everything he did, backwards
- {dual,decvax,sdcsvax}!ucbvax!korn and in high heels!"
- 23-Jul-86 19:58:02-MDT,2581;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Wed 23 Jul 86 19:57:50-MDT
- Received: from xerox.arpa by AMSAA.ARPA id a012638; 23 Jul 86 21:29 EDT
- Received: from PinotNoir.ms by ArpaGateway.ms ; 23 JUL 86 18:27:44 PDT
- Date: 23 Jul 86 18:27 PDT
- From: ghenis.pasa@xerox.ARPA
- Subject: Re: Plea for help (Superbrain to MS-DOS)
- In-reply-to: Peter Arrgh Korn <korn@pavepaws.ucb-vax.ARPA>'s message of
- 23 Jul 86 08:43:17 GMT
- To: info-cpm@AMSAA.ARPA
- Message-ID: <860723-182744-2114@Xerox>
-
-
- Peter,
-
- One thing worth trying is to find out IF a diskette WRITTEN ON THE
- IBM-PC in Superbrain format (using Uniform for example) can be read by
- your Superbrain. If so then you can use you PC to pick up a copy of
- Modem7 (to transfer using the XMODEM protocol) from any BBS and pass it
- on to your Superbrain to enable the file transfer through the serial
- port (get XModem for your IBM too if you don't have it already).
-
- If you're unlucky and the incompatibility goes both ways you will have
- to contact some user group to see if they can provide Modem7 for the
- Superbrain in the right format. A third possibility, which is likely
- since Uniform failed to do the trick, is that your disk drives on one of
- the machines is out of alignment. If that is the case you may not be
- able to read floppies produced on any other computer unless you realign
- them first.
-
- A simpler (although unsafe) way to get the files across if proper
- methods fail is to use PIP
-
- With PIP you can send the content of a file to the serial port (consult
- your CP/M documentation for specifics). On the IBM side, just do a
-
- COPY COM1: <filename>
-
- to pick up the bytes. This is unsafe because no error checking is taking
- place, but with a bit of luck the file will make it across in one piece.
- In any case it won't hurt anything and you can try it right away. Make
- sure your serial port settings are the same on both ends. To set your
- serial port, use MODE on the IBM (see DOS manual); in CP/M I think that
- STAT is the program to use (see CP/M manual).
-
- If you try this method, please send out a message to report your results
- (I've never tried it but it sounds like it should work). If you need to
- get Modem7 from a user group send me another message, I might be able to
- help.
-
- BTW, some mailer along the line rejected my first message addressed
- directly to you <korn@pavepaws.ucb-vax.ARPA> as undeliverable (?), so
- I'm sending my reply to the whole DL.
-
- Good luck!
-
- -- Pablo Ghenis, Secretary, Osborne Komputer Owners' Klub
-
- 24-Jul-86 04:16:46-MDT,1031;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Thu 24 Jul 86 04:16:41-MDT
- Received: from brl-smoke.arpa by AMSAA.ARPA id a015039; 24 Jul 86 5:56 EDT
- Received: from USENET by SMOKE.BRL.ARPA id a008693; 24 Jul 86 5:41 EDT
- From: Stan Hanks <stan%drillsys.uucp@BRL.ARPA>
- Newsgroups: net.micro.cpm
- Subject: Recent posting to na.forsale
- Message-ID: <377@drillsys.UUCP>
- Date: 23 Jul 86 06:57:30 GMT
- Keywords: no adds here
- To: info-cpm@AMSAA.ARPA
-
- I just finished posting a note to na.forsale announcing that I am
- parting with much of my CP/M equipment and software, various
- S-100 boards, and whole stacks of magazines. If you are interested
- in acquiring same, I suggest you watch na.forsale for my note; if you
- don't get na.forsale and are interested, drop me a line and I'll send
- you a personal copy.
-
-
- Stan Hanks ...!drillsys!stan
- Sr. Research Scientist stan@rice.ARPA
- Teleco Oilfield Services, Drilling Systems Technology
- Houston TX (713) 699-5594
- 24-Jul-86 06:37:19-MDT,1270;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Thu 24 Jul 86 06:36:42-MDT
- Received: from crdc-vax3.arpa by AMSAA.ARPA id a000946; 24 Jul 86 8:06 EDT
- Date: Thu, 24 Jul 86 7:59:53 EDT
- From: "Jack H. Smith" <jhsmith@crdc-vax3.ARPA>
- To: Info-cpm@AMSAA.ARPA
- Subject: Peter Korn -- Superbrain
-
-
- Peter,
-
- I have an Intertech Compustar system, with a DSS-10, and
- several terminals. I use a version of MODEM730 on my micro that
- I installed myself, and wrote my own machine-specific overlay,
- (there must be hundreds out on Simtel20). I even sent Keith
- Petersen a copy of it. I've also got Xmodem on the vax system
- we have (two versions...one that adds cr/lf for the PC community
- and one that doesn't add/subtract cr/lf, for the regular micro
- community.....if there is such a thing as a 'regular micro'.)
-
- I'm pretty sure that a model-30 Compustar is
- a pretty close approximation of a Superbrain. In fact, in
- installing Wordstar, and DbaseII, and other packages, I
- normally choose the superbrain selection and it all works
- great.
-
- Let me know what you need. I've probably got it.
- I've even got a version of BYE for you.
-
- Yours Truly,
-
-
- Jack H. Smith
-
-
- 24-Jul-86 06:43:13-MDT,946;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Thu 24 Jul 86 06:43:02-MDT
- Received: from wiscvm.arpa by AMSAA.ARPA id a001295; 24 Jul 86 8:18 EDT
- Received: from (PFENNIGE)CGEUGE51.BITNET by WISCVM.ARPA on 07/24/86 at
- 06:36:20 CDT
- Date: 24 JUL 86 13:21-N
- From: PFENNIGER%CGEUGE51.BITNET@WISCVM.ARPA
- To: INFO-CPM@AMSAA.ARPA
- Subj: Commodore C128 disk formats
-
- In reference to the questions regarding the ability of the Commodore 128
- to read different disk formats. Well according to the manual it is capable
- of reading the following formats:-
- 1) Epson Qx10
- 2) IBM-8 SS (cpm/86)
- 3) IBM-8 DS (cp/m86)
- 4) Kaypro II
- 5) Kaypro IV
- 6) Osborne DD.
- The manual also says that it is capable of writing these formats also. As
- for the terminal type I once saw a reference that if your choose either
- ADM-3A or ADM-31 then you can't go wrong.
- Brian Jarvis Observatoire de Geneve, Switzerland.
- 24-Jul-86 12:19:16-MDT,654;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Thu 24 Jul 86 12:19:05-MDT
- Received: from xerox.arpa by AMSAA.ARPA id a002550; 24 Jul 86 13:27 EDT
- Received: from PinotNoir.ms by ArpaGateway.ms ; 24 JUL 86 10:22:08 PDT
- Date: 24 Jul 86 10:20 PDT
- From: ghenis.pasa@xerox.ARPA
- Subject: Re: Plea for help (Superbrain to MS-DOS)
- To: info-cpm@AMSAA.ARPA
- Message-ID: <860724-102208-2663@Xerox>
-
- Peter,
-
- I forgot to mention that (if the Superbrain has a standard RS232 port)
- you will need a null modem adaptor in line with your serial cable to do
- port-to-port transfers. Radio Shack sells these adaptors.
- 24-Jul-86 14:22:57-MDT,956;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Thu 24 Jul 86 14:22:44-MDT
- Received: from ucb-vax.arpa by AMSAA.ARPA id a008128; 24 Jul 86 15:45 EDT
- Received: by ucbvax.Berkeley.EDU (5.53/1.14)
- id AA19759; Thu, 24 Jul 86 12:43:50 PDT
- Received: by ucdavis.UCDAVIS.EDU (4.12/4.7)
- id AA25950; Thu, 24 Jul 86 12:16:07 pdt
- Received: by clover.ucdavis.edu (4.12/4.7)
- id AA01179; Thu, 24 Jul 86 12:16:08 pdt
- Date: Thu, 24 Jul 86 12:16:08 pdt
- From: Eric Hildum <ucdavis!clover!hildum@ucb-vax.ARPA>
- Message-Id: <8607241916.AA01179@clover.ucdavis.edu>
- To: ucdavis!info-cpm@AMSAA.ARPA, ucdavis!xerox.ARPA!ghenis.pasa@ucb-vax.ARPA
- Subject: Re: Plea for help (Superbrain to MS-DOS)
-
- Regarding Radio Shack null modem adaptors - you're much better off getting
- a length of ribbon cable and two db25 connectors from the other side of the
- store and building it yourself (for about $20 - $30 less).
-
- Eric
- 28-Jul-86 02:44:36-MDT,1453;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Mon 28 Jul 86 02:44:28-MDT
- Received: from brl-smoke.arpa by AMSAA.ARPA id a000221; 28 Jul 86 4:03 EDT
- Received: from USENET by SMOKE.BRL.ARPA id a006326; 28 Jul 86 3:40 EDT
- From: Jeff Sonstein <jeffs%quad1.uucp@BRL.ARPA>
- Newsgroups: net.micro.cpm
- Subject: Re: Plea for help
- Message-ID: <548@quad1.UUCP>
- Date: 25 Jul 86 17:02:15 GMT
- To: info-cpm@AMSAA.ARPA
-
- >
- > Does anyone out there have ANY ideas? Also, where can I pick up
- > a terminal program for my SuperBrain (and thus transfer via the
- > serial port)? And finally, does anyone out there have the
- > pinouts for the SuperBrain?
- >
- Main Port
- Pin # Assignment Direction
- ===== ========== =========
- 1 GND -
- 2 Transmitted Data Fm SB
- 3 Rec'd Data To SB
- 4 RTS Fm SB
- 5 CTS To SB
- 6 DSR To SB
- 7 GND -
- 15 Transmit Clock To SB
- 17 Rcv Clock To SB
- 20 DTR Fm SB
- 22 Ring Indicator To SB
- 24 Clock Fm SB
-
- AUX PORT
- ========
- 1 GND -
- 2 Rcv'd Data (NOTE) To SB
- 3 Transmitted Data Fm SB
- 7 GND -
- 20 DTR To SB
-
-
- Jeff Sonstein Quadratron Systems Inc.
-
- UUCP: {sdcrdcf|ttdica|scgvaxd|mc0|bellcore|logico|ihnp4}!psivax!quad1!jeffs
-
- --------------------
-
- "There is a hopeful symbolism in the fact that
- flags do not wave in a vacuum..."
-
- -- Arthur C. Clarke --
-
- --
- 28-Jul-86 10:58:28-MDT,4177;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Mon 28 Jul 86 10:57:41-MDT
- Received: from ll.arpa by AMSAA.ARPA id a010973; 28 Jul 86 12:06 EDT
- Date: Mon 28 Jul 1986 12:06:38 EDT
- From: SAGE@LL.ARPA
- MMDF-Warning: Parse error in preceding line at AMSAA.ARPA
- Subject: CP/M Text Editors
- To: INFO-CPM@AMSAA.ARPA
- Message-ID: <SAGE.20943595@LL.ARPA>
-
- Urs Zurbuchen asked for information about a public-domain text editor for
- P/M with a rather impressive list of requirements. The only public-domain
- ditors I know of are rather simple beasts, and the only programs that come
- lose to Zurbuchen's list of requirements are two commercial programs, PMATE
- nd VEDIT. I am familiar with PMATE, the original editor of this type.
- EDIT is quite similar. Here is how it matches up to those requirements:
-
- small and fast: PMATE is a little over 20K long (exact size depends on
- user configuration choices, principally the size of the permanent macro
- area. PMATE is particularly fast, since it gives proper priority to
- keyboard input over its own screen output.
-
- support for memory-mapped video: PMATE does this very nicely (that is how
- I use it).
-
- multiple file editing: PMATE has a total of 11 editing buffers, all of
- which can contain text from files or macro commands. Commands allow text
- to be transfered in various ways between the buffers.
-
- arbitrary file size: The main text buffer in PMATE supports disk buffering
- of files and thus can handle files of arbitrary length (limited by disk
- space). Source, destination, and temporary files can each be on a
- separate drive so that the longest file that can be edited is limited to
- the full capacity of a drive.
-
- key-to-command binding: Here PMATE really shines. First, PMATE not only
- binds individual keys but recognizes sequences of keys and assigns them to
- commands. Secondly, the commands to which key sequences are bound include
- not only the built-in functions that PMATE comes with but also user-
- written functions, written using the interpreted macro command language
- (TECO-like). These user-written macros are stored in what is called the
- permanent macro area (PMA). After the PMA has been updated, PMATE's clone
- function is used to save a new version of the editor.
-
- macros: PMATE has an unbelievably complete macro capability. There are
- user variables and system variables that tell one almost everything about
- the environment (current line and column, current buffer number, the value
- of the character under the cursor, the next tab stop, the amount of memory
- left, the absolute memory address of the cursor, and many, many more).
- Fully structured iteration is supported (if-then-else, do-until, do-while,
- repeat). I cannot begin to describe all the features here. Suffice it to
- say that the hooks are present to do just about anything one can imagine.
- Without access to any source code, I made a version of PMATE that is
- ZCPR3-compatible (supports file access using the DU: -- drive/user --
- format).
-
- auto-indent: PMATE supports automatic indentation for writing in languages
- such as C and Pascal. The macro languages give full support and control
- to auto-indentation.
-
- overlays: PMATE is complete in one COM file.
-
- clean screen: PMATE shows only the information you really need to know --
- the names of open files, the current editing buffer, the value of a
- numerical argument returned by a macro, and the cursor position (line and
- column).
-
- f anyone wants more information about PMATE, I would welcome their
- nquiries, since I am probably the most active supporter around of the 8-bit
- ersion of PMATE (there are 16-bit versions, too). A special section (with
- estricted access) of my remote access system, the Newton Z-Node
- 617-965-7259, pw=DDT), is devoted to PMATE support. It includes a bulletin
- oard with suggestions and tips on exploiting PMATE's capabilities and an
- xtensive collection of macros.
-
- Jay Sage (SAGE @ LL)
-
-
- 28-Jul-86 12:15:53-MDT,1217;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Mon 28 Jul 86 12:15:24-MDT
- Received: from nprdc.arpa by AMSAA.ARPA id a013026; 28 Jul 86 13:15 EDT
- Received: from hull.nprdc.arpa (hull.ARPA) by nprdc.arpa (4.12/ 1.1)
- id AA06788; Mon, 28 Jul 86 10:15:55 pdt
- Return-Path: <lim@hull>
- Received: by hull.nprdc.arpa (2.2/SMI-2.0)
- id AA09151; Mon, 28 Jul 86 10:12:15 pdt
- From: Bill Lim <@nprdc.arpa:lim@hull>
- Message-Id: <8607281712.AA09151@hull.nprdc.arpa>
- Date: 28 July 1986 1010-PDT (Monday)
- To: INFO-CPM@AMSAA.ARPA
- Subject: RE: P/D CP/M Text Editors
-
- Urs Zurbuchen,
-
- Several months ago, Bruce E. Wampler of the University of New
- Mexico submitted a public domain full-screen editor to
- mod.sources called 'tvx.' TVX is written in C, and is
- availiable for UNIX, MS-DOS, and CP/M. I have not used it on a
- CP/M machine, but have got it running on an IBM/XT with little
- trouble. It is a very complete package, with source and user
- manuals. The documentation claims vi and emacs emulation is also
- possible.
-
-
- Bill
-
- ARPA: lim@nprdc.arpa
-
- UUCP: ihnp4 \
- akgua \
- decvax >---- !sdcsvax!sdics!nprdc!lim
- dcdwest /
- ucbvax /
- 28-Jul-86 13:09:29-MDT,1182;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Mon 28 Jul 86 13:09:13-MDT
- Received: from decwrl.arpa by AMSAA.ARPA id a014394; 28 Jul 86 14:01 EDT
- Received: from DEC-RHEA.ARPA (dec-rhea) by decwrl.DEC.COM (4.22.05/4.7.34)
- id AA28390; Mon, 28 Jul 86 10:59:23 pdt
- Message-Id: <8607281759.AA28390@decwrl.DEC.COM>
- Date: 28-Jul-1986 1333
- From: "Sink me! 'Twas lovely, havin' this little chat!" <binder%asd.DEC@dec.ARPA>
- To: info-cpm@AMSAA.ARPA, net.micro.cpm%asd.DEC@dec.ARPA
- Subject: For sale, please respond directly to me
-
- For sale, some stuff I bought in a lot and can't use on my Apple:
-
- For a Xerox 820 with 8" disks:
-
- 1. WordStar 3.0, with docs and training guide.
- 2. CalcStar 1.0, with docs.
- 3. CP/M 2.2, with docs.
- 4. 820 Diagnostic Exerciser disk, no docs.
- 5. 820 printer interface disk 1.0 (appears to be for daisywheel).
- 6. 820 hands-on training session manual.
-
- All for $75.00 or, failing that, best offer tha passes my reason-
- ableness test.
-
- Cheers,
- Dick Binder (The Stainless Steel Rat)
-
- UUCP: { decvax, allegra, ucbvax... }!decwrl!asd.dec.com!binder
- ARPA: binder%asd.DEC@decwrl.ARPA
-
- 28-Jul-86 21:29:49-MDT,1099;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Mon 28 Jul 86 21:29:41-MDT
- Received: from brl-smoke.arpa by AMSAA.ARPA id a000312; 28 Jul 86 21:56 EDT
- Received: from USENET by SMOKE.BRL.ARPA id a012549; 28 Jul 86 21:44 EDT
- From: binder@asd.dec.com
- Newsgroups: net.micro.cpm
- Subject: For sale, please respond directly to me
- Message-ID: <4449@decwrl.DEC.COM>
- Date: 28 Jul 86 17:59:41 GMT
- Sender: daemon@dec.ARPA
- To: info-cpm@AMSAA.ARPA
-
- For sale, some stuff I bought in a lot and can't use on my Apple:
-
- For a Xerox 820 with 8" disks:
-
- 1. WordStar 3.0, with docs and training guide.
- 2. CalcStar 1.0, with docs.
- 3. CP/M 2.2, with docs.
- 4. 820 Diagnostic Exerciser disk, no docs.
- 5. 820 printer interface disk 1.0 (appears to be for daisywheel).
- 6. 820 hands-on training session manual.
-
- All for $75.00 or, failing that, best offer tha passes my reason-
- ableness test.
-
- Cheers,
- Dick Binder (The Stainless Steel Rat)
-
- UUCP: { decvax, allegra, ucbvax... }!decwrl!asd.dec.com!binder
- ARPA: binder%asd.DEC@decwrl.ARPA
- 29-Jul-86 06:39:20-MDT,762;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Tue 29 Jul 86 06:39:13-MDT
- Received: from crdc-vax3.arpa by AMSAA.ARPA id a002893; 29 Jul 86 8:02 EDT
- Date: Tue, 29 Jul 86 7:53:33 EDT
- From: "Jack H. Smith" <jhsmith@crdc-vax3.ARPA>
- To: binder%asd.DEC@DECWRL.ARPA
- cc: Info-cpm@AMSAA.ARPA
- Subject: For sale
-
-
- Dear Mr. 'Stainless Steel Rat',
-
- While your prices seem much more than reasonable,
- the mailing list is not your private want-ads section in
- your daily newspaper. This subject has been discussed,
- and re-discussed, and the concensus is that any for-sale
- items (messages) are not to be placed on the list.
-
- Sorry to rain on your parade,
-
- Jack H. Smith
-
-
- 29-Jul-86 09:40:01-MDT,4235;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Tue 29 Jul 86 09:39:46-MDT
- Received: from ll.arpa by AMSAA.ARPA id a006882; 29 Jul 86 9:49 EDT
- Date: Tue 29 Jul 1986 09:48:59 EDT
- From: SAGE@LL.ARPA
- MMDF-Warning: Parse error in preceding line at AMSAA.ARPA
- Subject: Text Editors
- To: INFO-CPM@AMSAA.ARPA
- Message-ID: <SAGE.21035277@LL.ARPA>
-
- Urs Zurbuchen asked for information about a public-domain text editor for
- CP/M with a rather impressive list of requirements. The only public-domain
- editors I know of are rather simple beasts, and the only programs that come
- close to Zurbuchen's list of requirements are two commercial programs, PMATE
- and VEDIT. I am familiar with PMATE, the original editor of this type.
- VEDIT is quite similar. Here is how it matches up to those requirements:
-
- 1. small and fast: PMATE is a little over 20K long (exact size depends on
- user configuration choices, principally the size of the permanent macro
- area. PMATE is particularly fast, since it gives proper priority to
- keyboard input over its own screen output.
-
- 2. support for memory-mapped video: PMATE does this very nicely (that is how
- I use it).
-
- 3. multiple file editing: PMATE has a total of 11 editing buffers, all of
- which can contain text from files or macro commands. Commands allow text
- to be transfered in various ways between the buffers.
-
- 4. arbitrary file size: The main text buffer in PMATE supports disk buffering
- of files and thus can handle files of arbitrary length (limited by disk
- space). Source, destination, and temporary files can each be on a
- separate drive so that the longest file that can be edited is limited to
- the full capacity of a drive.
-
- 5. key-to-command binding: Here PMATE really shines. First, PMATE not only
- binds individual keys but recognizes sequences of keys and assigns them to
- commands. Secondly, the commands to which key sequences are bound include
- not only the built-in functions that PMATE comes with but also user-
- written functions, written using the interpreted macro command language
- (TECO-like). These user-written macros are stored in what is called the
- permanent macro area (PMA). After the PMA has been updated, PMATE's clone
- function is used to save a new version of the editor.
-
- 6. macros: PMATE has an unbelievably complete macro capability. There are
- user variables and system variables that tell one almost everything about
- the environment (current line and column, current buffer number, the value
- of the character under the cursor, the next tab stop, the amount of memory
- left, the absolute memory address of the cursor, and many, many more).
- Fully structured iteration is supported (if-then-else, do-until, do-while,
- repeat). I cannot begin to describe all the features here. Suffice it to
- say that the hooks are present to do just about anything one can imagine.
- Without access to any source code, I made a version of PMATE that is
- ZCPR3-compatible (supports file access using the DU: -- drive/user --
- format).
-
- 7. auto-indent: PMATE supports automatic indentation for writing in languages
- such as C and Pascal. The macro languages give full support and control
- to auto-indentation.
-
- 8. overlays: PMATE is complete in one COM file.
-
- 9. clean screen: PMATE shows only the information you really need to know --
- the names of open files, the current editing buffer, the value of a
- numerical argument returned by a macro, and the cursor position (line and
- column).
-
- If anyone wants more information about PMATE, I would welcome their
- inquiries, since I am probably the most active supporter around of the 8-bit
- version of PMATE (there are 16-bit versions, too). A special section (with
- restricted access) of my remote access system, the Newton Z-Node
- (617-965-7259, pw=DDT), is devoted to PMATE support. It includes a bulletin
- board with suggestions and tips on exploiting PMATE's capabilities and an
- extensive collection of macros.
-
- Jay Sage (SAGE @ LL)
-
-
- 29-Jul-86 11:32:52-MDT,1624;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Tue 29 Jul 86 11:32:29-MDT
- Received: from cmu-cs-maps.arpa by AMSAA.ARPA id a011353; 23 Jul 86 17:27 EDT
- Date: Wednesday, 23 July 1986 16:23:19 EDT
- From: Stephen.Jenks@cmu-cs-maps.ARPA
- To: info-cpm-request@AMSAA.ARPA
- Subject: Emacs-like editor wanted
- Message-ID: <1986.7.23.20.11.48.Stephen.Jenks@maps.cs.cmu.edu>
- Distribution: net
- Organization: Carnegie Mellon Computer Science
- Resent-Date: Tue, 29 Jul 86 12:46:14 EDT
- Resent-From: cpmlist@AMSAA.ARPA
- Resent-To: info-cpm@cmu-cs-maps.ARPA
-
- (I sure hope this gets out to the net!)
-
- I keep seeing all these announcements of MicroEmacs for all sorts of
- operating systems, and am getting pretty jealous of MS-DOS people, since I run
- CP/M. Has anyone succeeded (or even tried) to convert MicroEmacs to CP/M?
-
- I need a good editor. I've used The Final Word, but it just isn't as good
- as Emacs, and it limits the size of files to less than the size of its swap
- file. No good! So I must use WordStar for editting long programs -- no
- good either. Are there any good editors out there that let you edit big
- files?
-
- Thanks a lot,
- Steve Jenks
-
- uucp: ...!seismo!maps.cs.cmu.edu!sfj
- arpa: sfj@maps.cs.cmu.edu
- bitnet: jenks@cmuccvc or sj0k@cmuccvma
-
- p.s. Anyone have a UO-Lisp manual. I bought UO-Lisp a long time ago, and
- never got a manual (pretty useless, huh?) and now the company doesn't
- respond to my letters. Every company I buy anything from seems to go out of
- business! Maybe I should buy an IBM PC and they would go under...
- 29-Jul-86 13:16:31-MDT,1325;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Tue 29 Jul 86 13:16:03-MDT
- Received: from rand-unix.arpa by AMSAA.ARPA id a000589; 29 Jul 86 14:28 EDT
- Received: by rand-unix.ARPA; Tue, 29 Jul 86 10:06:12 pdt
- Message-Id: <8607291706.AA17570@rand-unix.ARPA>
- To: info-cpm@AMSAA.ARPA
- Cc: bridger@RAND-UNIX.ARPA, SAGE@LL.ARPA
- Subj: zcpr3 path puzzle
- Date: Tue, 29 Jul 86 10:05:54 PDT
- From: bridger@RAND-UNIX.ARPA
-
- In ZCPR3, v. 3.0 and v. 3.14, the path-search code does
- something I haven't seen explained -- it masks the high bit
- of the user-number byte (and also, if the minpath option is used)
- the drive byte found in the path.
-
- From the comments with the code I am guessing that the intent was to
- use the hi bit in the path to specify directories (drive/user pairs)
- that "hide" non-system files. For example, if the path element for
- A3: has bit 7 set, then files in A3: which do not have the
- system-attribute bit set would not be found by (1) the .com file
- loader, and (2) the DIR command. However, the code doesn't really do
- this, at least if the minpath option is used.
-
- Does anyone know: is this the intent? does anyone use a path with hi
- bits set? Do the z3 tools and syslib routines behave correctly when
- a path contains a hi bit?
-
- --bridger
-
-
- 29-Jul-86 18:24:43-MDT,703;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Tue 29 Jul 86 18:24:37-MDT
- Received: from ucb-vax.arpa by AMSAA.ARPA id a003781; 29 Jul 86 15:42 EDT
- Received: by ucbvax.Berkeley.EDU (5.53/1.14)
- id AA19055; Tue, 29 Jul 86 12:43:03 PDT
- Received: by ucdavis.UCDAVIS.EDU (4.12/4.7)
- id AA15471; Tue, 29 Jul 86 12:32:10 pdt
- Received: by clover.ucdavis.edu (4.12/4.7)
- id AA01352; Tue, 29 Jul 86 12:31:58 pdt
- Date: Tue, 29 Jul 86 12:31:58 pdt
- From: Eric Hildum <ucdavis!clover!hildum@ucb-vax.ARPA>
- Message-Id: <8607291931.AA01352@clover.ucdavis.edu>
- To: ucdavis!Info-cpm@AMSAA.ARPA
- Subject: Re For sale
-
-
- Where is the appropriate forum?
-
- Eric
- 30-Jul-86 02:03:04-MDT,622;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Wed 30 Jul 86 02:02:59-MDT
- Received: from mit-mc.arpa by AMSAA.ARPA id a000671; 30 Jul 86 3:31 EDT
- Date: Wed 30 Jul 86 03:30:39-EDT
- From: Mark Becker <Cent.Mbeck%OZ.AI.MIT.EDU@mit-xx.ARPA>
- Subject: TVX source code?
- To: Info-CPM@AMSAA.ARPA
- Message-ID: <12226740342.69.CENT.MBECK@OZ.AI.MIT.EDU>
-
- [I just found out the line eater still lives!]
-
- I've seen mention of the TVX editor and am interested in obtaining a
- copy of the source code. Anyone have a copy I can FTP or otherwise
- get ahold of?
-
- Mark Becker
- -------
- 30-Jul-86 10:19:21-MDT,1121;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Wed 30 Jul 86 10:19:13-MDT
- Received: from nadc.arpa by AMSAA.ARPA id a004422; 30 Jul 86 11:36 EDT
- Date: 30 Jul 1986 08:20:38-EDT
- From: prindle@nadc.ARPA
- To: Cent.Mbeck@oz.ai.mit.edu, mit-xx@nadc.ARPA, info-cpm@AMSAA.ARPA
- MMDF-Warning: Parse error in preceding line at AMSAA.ARPA
- Subject: whereabouts of TVX editor source code
-
- Dr. Bruce Wampler's TVX editor is alive and well on SIMTEL20 in the directory
- PD:<MSDOS.TVX-EDITOR>. Flip a few #defines, and it will (or used to) compile
- for CP/M. Problem is, if this is the latest and greatest version with "vi"
- and "emacs" modes, it probably won't fit into a typical CP/M TPA. I compiled
- an older version (with "native TVX" command mode only) for CP/M 3.0 with a
- 58K TPA and wound up with about a 15K working buffer; much less than that and
- you'd end up buffering to disk all the time. I have the source code to this
- older version, if indeed someone does try to compile the newer one for CP/M and
- it is too big.
- Sincerely,
- Frank Prindle
- Prindle@NADC.arpa
- 30-Jul-86 12:20:37-MDT,727;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Wed 30 Jul 86 12:20:28-MDT
- Received: from wiscvm.arpa by AMSAA.ARPA id a007724; 30 Jul 86 13:14 EDT
- Received: from (TTTLEH5)NEUVM1.BITNET by WISCVM.ARPA on 07/30/86 at
- 08:25:40 CDT
- Date: Wed, 30 Jul 86 15:10:50 DNT
- To: info-cpm@AMSAA.ARPA
- From: TTTLEH5%NEUVM1.BITNET@WISCVM.ARPA
- Subject: Re: The TVX editor's source ...
-
- Hello out there in the cp/m world.
-
- If anyone get the source to the TVX editor, can I then get a copy too ?
- Or even better: Mail it to the list. Please don't include uuencoded
- non-binary files, since they are unuseable for EARN/BITNET users.
-
- Klaus Emlquist Nielsen.
- 30-Jul-86 23:54:50-MDT,1094;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Wed 30 Jul 86 23:54:01-MDT
- Received: from ucb-vax.arpa by AMSAA.ARPA id a017647; 31 Jul 86 1:24 EDT
- Received: by ucbvax.Berkeley.EDU (5.53/1.14)
- id AA12591; Wed, 30 Jul 86 14:47:24 PDT
- Received: by ucdavis.UCDAVIS.EDU (4.12/4.7)
- id AA09671; Wed, 30 Jul 86 14:15:16 pdt
- Received: by clover.ucdavis.edu (4.12/4.7)
- id AA11813; Wed, 30 Jul 86 14:14:16 pdt
- Date: Wed, 30 Jul 86 14:14:16 pdt
- From: Eric Hildum <ucdavis!clover!hildum@ucb-vax.ARPA>
- Message-Id: <8607302114.AA11813@clover.ucdavis.edu>
- To: ucdavis!info-cpm@AMSAA.ARPA
- Subject: Arpa net restrictions
-
- I would like to thank those people who took the time to point out the
- restrictions on the use of Arpa net regarding the for sale message that
- appeared several days ago. However, it does appear that I do need to
- make one thing clear - it was not me who put in the advertisement - I
- only asked if there was an appropriate forum. As there is not through
- this channel, that answers that.
-
- Eric "All I did was ask!"
- 31-Jul-86 10:25:35-MDT,1226;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Thu 31 Jul 86 10:25:07-MDT
- Received: from brl-smoke.arpa by AMSAA.ARPA id a001863; 31 Jul 86 11:50 EDT
- Received: from USENET by SMOKE.BRL.ARPA id a029220; 31 Jul 86 11:43 EDT
- From: Thomas Almy <toma%tekgvs.uucp@BRL.ARPA>
- Newsgroups: net.micro.cpm
- Subject: Re: Emacs-like editor wanted
- Message-ID: <1654@tekgvs.UUCP>
- Date: 30 Jul 86 14:15:26 GMT
- To: info-cpm@AMSAA.ARPA
-
- In article <2643@brl-smoke.ARPA> Stephen.Jenks@cmu-cs-maps.ARPA writes:
- >I keep seeing all these announcements of MicroEmacs for all sorts of
- >operating systems, and am getting pretty jealous of MS-DOS people, since I run
- >CP/M. Has anyone succeeded (or even tried) to convert MicroEmacs to CP/M?
- >
- >I need a good editor. I've used The Final Word, but it just isn't as good
- >as Emacs, and it limits the size of files to less than the size of its swap
- >file. No good! ...
-
- Unfortunately, MicroEmacs keeps the file memory resident (allowing about 29k
- of buffers with 8086 "small memory model", figure about 20k with CP/M-80).
- I use Mince (like Final Word) and devote a ram disk to the swap file. Works
- great.
-
- Tom Almy
- Tektronix
- 31-Jul-86 18:08:10-MDT,39743;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Thu 31 Jul 86 18:06:20-MDT
- Received: from brl-smoke.arpa by AMSAA.ARPA id a000382; 31 Jul 86 17:44 EDT
- Received: from USENET by SMOKE.BRL.ARPA id a004313; 31 Jul 86 17:41 EDT
- From: Michael Kersenbrock <michaelk%copper.uucp@BRL.ARPA>
- Newsgroups: net.micro.cpm
- Subject: MAKE for CPM 3.0 part 1 of 2
- Message-ID: <513@copper.UUCP>
- Date: 31 Jul 86 07:23:23 GMT
- Keywords: cpm, make
- To: info-cpm@AMSAA.ARPA
-
- <-------------->
- This is a make (clone) program for cp/m 3.0. It is a better version
- than the one I posted earlier. This make program was recently posted
- on USENET for "EON" (??). I have "ported" this program to CP/M,
- and it seems to work well. This one has macros and rules (which
- the earlier one I posted did not).
-
- Below is the source and man files. Part two (posted separately) contains
- the uuencoded version of the make.com (z80) binary. This binary
- was generated via compilation with Manx Aztec C II version 1.05g.
- I have "enhanced" my compiler library continuously over the last several
- years, and don't always remember what was originally there and what it
- is that which I added myself. I hope porting my port doesn't cause too many
- problems for those that may want to recompile the source.
-
- Enjoy...
-
- Mike Kersenbrock
- ...!tektronix!copper!michaelk
-
-
- # This is a shell archive.
- # Remove everything above and including the cut line.
- # Then run the rest of the file through sh.
- #----cut here-----cut here-----cut here-----cut here----#
- #!/bin/sh
- # shar: Shell Archiver
- # Run the following text with /bin/sh to create:
- # MAKE.DOC
- # MAKEFILE
- # MAKE.C
- # CHECK.C
- # INPUT.C
- # MACRO.C
- # MAIN.C
- # READER.C
- # RULES.C
- # H.H
- # This archive created: Wed Jul 30 23:44:42 1986
- # By: Michael D. Kersenbrock (Oregon HomePower Software)
- echo shar: extracting make.doc
- cat << \SHAR_EOF > make.doc
-
-
- MAKE(CPM+) MAKE(CPM+)
-
-
- SYNTAX
-
- make [-f makefile] [-nprst] [macro=val ...] [target(s) ...]
-
- WHERE
-
- -i means don't continue if an error is encountered
-
- -f specifies that the following argument is the name of
- a makefile to be used instead of default "MAKEFILE.DAT"
- or "MAKEFILE".
-
- -n means don't execute the commands, just write the ones that
- would be executed to the standard output.
-
- -p Print all macros & targets
-
- -r Do not use inbuilt rules
-
- -s Make silently
-
- -t Touch files instead of making them
-
- "macro" - is a macro name, and...
-
- "val" - is the string value to set it to. Use quotes around
- the "macro=val" if there are imbedded spaces.
-
-
- DESCRIPTION
-
- This program is a slightly simplified clone of the UNIX
- (tm of AT&T) utility of the same name. Dependancy
- information is extracted from a makefile and acted upon.
-
- This version requires CP/M-80 version 3.0 ("CP/M PLUS")
- with time-of-day-clock implemented. Also the file timestamps
- must be "turned on". Current time-of-day call to CP/M is
- also used. Note that "CP/M" is a trademark of Digital
- Research.
-
-
-
- MAKEFILE FORMAT
-
- For general usage, refer to a UNIX(tm) man-page.
-
- "Make" without parameters makes the first target in the
- makefile.
-
- The default name of the 'makefile' is 'MAKEFILE.DAT'
- or 'MAKEFILE' in that order. If the '-f' option is used,
- the default makefile is not processed.
-
- Any blank lines in the 'makefile(s)' are ignored, as are
- lines that have a "#" in the first column.
-
-
-
-
- MAKE(CPM+) -2- MAKE(CPM+)
-
-
-
- Lines starting with a tab character are 'howto'
- lines, and consist of a command name followed by arguments.
-
- Any other line is a 'dependency' line. 'Dependency'
- lines consist of a filename followed by a (possibly empty)
- list of dependent filenames. A colon is required after
- the target filename.
-
- 'Howto' lines apply to the most recently preceding
- 'dependency' line. It is improper for a 'howto' line
- to precede the first 'dependency' line.
-
- Lines ending with "\" join the next-line to the current
- one with all but one-character of the next-line's leading
- whitespace removed.
-
-
- SIDE EFFECTS
-
- This program works by producing a temporary file "MAKE@@@.SUB"
- then chaining to it for execution of the command list. This
- file then deletes itself upon successful completion. Should
- the execution be aborted, then this file will remain
- in the file system (but will not harm later invocations of
- make).
-
- Everything has been made case-independent (CP/M forces command
- lines upper case. That makes this case-independence a
- requirement.)
-
- BUGS
- The -i option is opposite of "normal" so that error codes
- are normally ignored. If the -i option is used, colons
- will proceed commands that aren't to execute after an
- error. This sortof almost works in CP/M Plus. To be
- made to work three things need to be done. 1) an RSX
- written that makes a compiler(etc) set the error flag (should
- be easy to do). 2) Keep CP/M 3.0 and/or the CCP from resetting
- the error flag on each command that is executed (patch
- somewhere?), and 3) Let the ":" exclusion work in front
- of .SUB files as well as .COM files (patch somewhere?).
- Discription of the ":" is in the CP/M Plus Programmer's
- Guide in the description of bdos function 108.
-
-
-
-
-
- MAKE(CPM+) -3- MAKE(CPM+)
-
-
-
- RULES
- The built in rules currently are these:
-
- ".o" files depend on ".c" files and are made by:
- $(CCC) $(CFLAGS) $(CWHICH)
-
- where:
- CCC = cc-c (mdk's submit file)
- CFLAGS = (they are in cc-c.sub)
- CWHICH = $* (target's basename)
-
-
- ".rel" files depend on ".asm" files and are made by:
- $(ASM) $(ASMWHICH) $(ASMFLAGS)
-
- where:
- ASM = rmac
- ASMWHICH = $*
- ASMFLAGS = $$PZ SZ
-
- Note: These macros can be redefined in the makefile.
-
-
-
- AUTHOR
-
- Originally written for "EON" (whatever that is).
- This program was originally posted by, and presumably
- written by:
-
- Neil Russell
- Organization: TIME. Office Computers, Sydney, Australia
- UUCP: ...!seismo!munnari!tictoc.oz!caret
-
- The port to CP/M 3.0 consists of numerous small and medium
- modifications seemingly everywhere. That plus the generation
- of this psuedo-man page was done by:
-
- Michael D. Kersenbrock
- Aloha, Oregon
- UUCP: ...!tektronix!copper!michaelk
-
-
- SHAR_EOF
- if test 4453 -ne "`wc -c make.doc`"
- then
- echo shar: error transmitting make.doc '(should have been 4453 characters)'
- fi
- echo shar: extracting makefile
- cat << \SHAR_EOF > makefile
- #
- # This is for "make.com" itself (under CP/M-80 V3.0)
- #
-
- OBJS = make.o check.o input.o macro.o main.o reader.o rules.o
-
- make.com: $(OBJS)
- linkc $(OBJS)
-
- $(OBJS): h.h
- SHAR_EOF
- if test 169 -ne "`wc -c makefile`"
- then
- echo shar: error transmitting makefile '(should have been 169 characters)'
- fi
- echo shar: extracting make.c
- cat << \SHAR_EOF > make.c
- /*
- * Do the actual making for make
- */
-
- #include "c:stdio.h" /* "c:" is my ramdisk */
- #include "c:fcntl.h"
- #include "h.h"
-
- FILE *execfile; /* Submit file to execute the "shell-exec's" */
-
- extern long ftime();
-
- /*
- * Exec a shell that returns exit status correctly (/bin/esh).
- * The standard EON shell returns the process number of the last
- * async command, used by the debugger (ugg).
- * [exec on eon is like a fork+exec on unix]
- */
- int
- dosh(command, args)
- char *command;
- char *args;
- {
- if (!execfile) {
- execfile = fopen(MAKERUN, "w");
- if (!execfile) {
- errout("Make: can't create ");
- errout(MAKERUN);
- errout("\r\n");
- exit(-1);
- }
- }
-
- fprintf(execfile, "%s %s", command, args);
- return 0;
- }
-
-
- /*
- * Do commands to make a target
- */
- void
- docmds(np)
- struct name * np;
- {
- bool ssilent;
- bool signore;
- int estat;
- register char * q;
- register char * p;
- char * shell;
- register struct line * lp;
- register struct cmd * cp;
- ssilent = silent;
-
- /*
- * Under cp/m the "ignore or not to ignore" is sorta done in dosh()
- * where colons are inserted or not into the cp/m submit file.
- * The actual ignoring (or not) is done when cpm 3.0's submit
- * program executes the submit file.
- *
- * -mdk
- */
-
- signore = ignore;
-
- if (*(shell = getmacro("SHELL")) == '\0')
- shell = ":bin/esh";
-
- for (lp = np->n_line; lp; lp = lp->l_next)
- for (cp = lp->l_cmd; cp; cp = cp->c_next)
- {
- strcpy(str1, cp->c_cmd);
- expand(str1);
- q = str1;
- while ((*q == '@') || (*q == '-'))
- {
- if (*q == '@') /* Specific silent */
- ssilent = TRUE;
- else /* Specific ignore */
- signore = TRUE;
- q++; /* Not part of the command */
- }
-
- if (!ssilent)
- fputs(" ", stdout);
-
- if ((!ssilent) && (!signore)) { /* cp/m stuff */
- putchar(':');
- putchar(' ');
- }
- for (p=q; *p; p++)
- {
- if (*p == '\n' && p[1] != '\0')
- {
- *p = ' ';
- if (!ssilent)
- fputs("\\\n", stdout);
- }
- else if (!ssilent)
- putchar(*p);
- }
- if (!ssilent)
- putchar('\n');
-
- if (domake)
- { /* Get the shell to execute it */
- /*
- * Colon in front of line makes execution
- * conditional on error code in cp/m 3.0 .
- * (Sortof, with one "minor" problem)
- */
-
- if (!signore)
- dosh(":","");
-
- if ((estat = dosh(q,"\n")) != 0)
- {
- if (estat == -1)
- fatal("Couldn't execute %s", shell);
- else
- {
- printf("%s: Error code %d", myname, estat);
- if (signore)
- fputs(" (Ignored)\n", stdout);
- else
- {
- putchar('\n');
- if (!(np->n_flag & N_PREC))
- if (unlink(np->n_name) == 0)
- printf("%s: '%s' removed.\n", myname, np->n_name);
- exit(estat);
- }
- }
- }
- }
- }
- }
-
-
-
- /*
- * Update the mod time of a file to now.
- */
- void
- touch(np)
- struct name * np;
- {
- char c;
- int fd;
- char fcb[36]; /* set area for CP/M fcb */
- char tempbuffer[128]; /* CPM record size */
-
-
- if (!domake || !silent)
- printf(" touch %s\n", np->n_name);
-
- if (domake) {
- if ((fd=open(np->n_name,O_RDONLY)) < 0 ) {
- printf("%s: '%s' not touched - non-existant\n",
- myname, np->n_name);
- }
- else {
- close(fd);
- OpenRandomFile(np->n_name,fcb); /* open file */
- ReadRandomFile(tempbuffer,0,fcb); /* read record */
- WriteRandomFile(tempbuffer,0,fcb); /* write it back */
- }
- CloseRandomFile(fcb);
- }
- }
-
-
- /*
- * Recursive routine to make a target.
- */
- int
- make(np, level)
- struct name * np;
- int level;
- {
- register struct depend * dp;
- register struct line * lp;
- time_t dtime = 1l;
-
-
- if (np->n_flag & N_DONE)
- return 0;
-
- if (!np->n_time) {
- np->n_time = ftime(np->n_name);/* Gets modtime of this file*/
- }
-
- if (rules) {
- for (lp = np->n_line; lp; lp = lp->l_next)
- if (lp->l_cmd)
- break;
- if (!lp)
- dyndep(np);
- }
-
- if (!(np->n_flag & N_TARG) && np->n_time == 0L)
- fatal("Don't know how to make %s", np->n_name);
-
- for (lp = np->n_line; lp; lp = lp->l_next)
- for (dp = lp->l_dep; dp; dp = dp->d_next)
- {
- make(dp->d_name, level+1);
- dtime = max(dtime, dp->d_name->n_time);
- }
-
- np->n_flag |= N_DONE;
-
- if (quest)
- {
- time(&np->n_time); /* used to be rtime() zzz */
- return np->n_time < dtime;
- }
- else if (np->n_time < dtime)
- {
- if (dotouch)
- touch(np);
- else
- {
- setmacro("@", np->n_name);
- docmds(np);
- }
- time(&np->n_time); /* used to be rtime() zzz */
- }
- else if (level == 0)
- printf("%s: '%s' is up to date\n", myname, np->n_name);
- return 0;
- }
- SHAR_EOF
- if test 4491 -ne "`wc -c make.c`"
- then
- echo shar: error transmitting make.c '(should have been 4491 characters)'
- fi
- echo shar: extracting check.c
- cat << \SHAR_EOF > check.c
- /*
- * Check structures for make.
- */
-
- #include "c:stdio.h"
- #include "h.h"
-
-
- /*
- * Prints out the structures as defined in memory. Good for check
- * that you make file does what you want (and for debugging make).
- */
- void
- prt()
- {
- register struct name * np;
- register struct depend * dp;
- register struct line * lp;
- register struct cmd * cp;
- register struct macro * mp;
-
-
- for (mp = macrohead; mp; mp = mp->m_next)
- fprintf(stderr, "%s = %s\n", mp->m_name, mp->m_val);
-
- fputc('\n', stderr);
-
- for (np = namehead.n_next; np; np = np->n_next)
- {
- fprintf(stderr, "%s:\n", np->n_name);
- for (lp = np->n_line; lp; lp = lp->l_next)
- {
- fputc(':', stderr);
- for (dp = lp->l_dep; dp; dp = dp->d_next)
- fprintf(stderr, " %s", dp->d_name->n_name);
- fputc('\n', stderr);
-
- for (cp = lp->l_cmd; cp; cp = cp->c_next)
- fprintf(stderr, "-\t%s\n", cp->c_cmd);
- fputc('\n', stderr);
- }
- fputc('\n', stderr);
- }
- }
-
-
- /*
- * Recursive routine that does the actual checking.
- */
- void
- check(np)
- struct name * np;
- {
- register struct depend * dp;
- register struct line * lp;
-
-
- if (np->n_flag & N_MARK)
- fatal("Circular dependency from %s", np->n_name);
-
- np->n_flag |= N_MARK;
-
- for (lp = np->n_line; lp; lp = lp->l_next)
- for (dp = lp->l_dep; dp; dp = dp->d_next)
- check(dp->d_name);
-
- np->n_flag &= ~N_MARK;
- }
-
-
- /*
- * Look for circular dependancies.
- * ie.
- * a: b
- * b: a
- * is a circular dep
- */
- void
- circh()
- {
- register struct name * np;
-
-
- for (np = namehead.n_next; np; np = np->n_next)
- check(np);
- }
-
-
- /*
- * Check the target .PRECIOUS, and mark its dependentd as precious
- */
- void
- precious()
- {
- register struct depend * dp;
- register struct line * lp;
- register struct name * np;
-
-
- if (!((np = newname(".PRECIOUS"))->n_flag & N_TARG))
- return;
-
- for (lp = np->n_line; lp; lp = lp->l_next)
- for (dp = lp->l_dep; dp; dp = dp->d_next)
- dp->d_name->n_flag |= N_PREC;
- }
- SHAR_EOF
- if test 1895 -ne "`wc -c check.c`"
- then
- echo shar: error transmitting check.c '(should have been 1895 characters)'
- fi
- echo shar: extracting input.c
- cat << \SHAR_EOF > input.c
- /*
- * Parse a makefile
- */
-
-
- #include "c:stdio.h"
- #include "h.h"
-
- extern int endoffile;
-
- struct name namehead;
- struct name * firstname;
-
- char str1[LZ]; /* General store */
- char str2[LZ];
-
-
- /*
- * Intern a name. Return a pointer to the name struct
- */
- struct name *
- newname(name)
- char * name;
- {
- register struct name * rp;
- register struct name * rrp;
- register char * cp;
-
-
- for
- (
- rp = namehead.n_next, rrp = &namehead;
- rp;
- rp = rp->n_next, rrp = rrp->n_next
- )
- if (no_case_cmp(name, rp->n_name) == 0)
- return rp;
-
- if ((rp = (struct name *)malloc(sizeof (struct name)))
- == (struct name *)0)
- fatal("No memory for name");
- rrp->n_next = rp;
- rp->n_next = (struct name *)0;
- if ((cp = malloc(strlen(name)+1)) == (char *)0)
- fatal("No memory for name");
- strcpy(cp, name);
- rp->n_name = cp;
- rp->n_line = (struct line *)0;
- rp->n_time = (time_t)0;
- rp->n_flag = 0;
-
- return rp;
- }
-
-
- /*
- * Add a dependant to the end of the supplied list of dependants.
- * Return the new head pointer for that list.
- */
- struct depend *
- newdep(np, dp)
- struct name * np;
- struct depend * dp;
- {
- register struct depend * rp;
- register struct depend * rrp;
-
-
- if ((rp = (struct depend *)malloc(sizeof (struct depend)))
- == (struct depend *)0)
- fatal("No memory for dependant");
- rp->d_next = (struct depend *)0;
- rp->d_name = np;
-
- if (dp == (struct depend *)0)
- return rp;
-
- for (rrp = dp; rrp->d_next; rrp = rrp->d_next)
- ;
-
- rrp->d_next = rp;
-
- return dp;
- }
-
-
- /*
- * Add a command to the end of the supplied list of commands.
- * Return the new head pointer for that list.
- */
- struct cmd *
- newcmd(str, cp)
- char * str;
- struct cmd * cp;
- {
- register struct cmd * rp;
- register struct cmd * rrp;
- register char * rcp;
-
-
- if (rcp = rindex(str, '\n'))
- *rcp = '\0'; /* Loose newline */
-
- while (isspace(*str))
- str++;
-
- if (*str == '\0') /* If nothing left, the exit */
- return;
-
- if ((rp = (struct cmd *)malloc(sizeof (struct cmd)))
- == (struct cmd *)0)
- fatal("No memory for command");
- rp->c_next = (struct cmd *)0;
- if ((rcp = malloc(strlen(str)+1)) == (char *)0)
- fatal("No memory for command");
- strcpy(rcp, str);
- rp->c_cmd = rcp;
-
- if (cp == (struct cmd *)0)
- return rp;
-
- for (rrp = cp; rrp->c_next; rrp = rrp->c_next)
- ;
-
- rrp->c_next = rp;
-
- return cp;
- }
-
-
- /*
- * Add a new 'line' of stuff to a target. This check to see
- * if commands already exist for the target.
- */
- void
- newline(np, dp, cp)
- struct name * np;
- struct depend * dp;
- struct cmd * cp;
- {
- bool hascmds = FALSE; /* Target has commands */
- register struct line * rp;
- register struct line * rrp;
-
-
- for
- (
- rp = np->n_line, rrp = (struct line *)0;
- rp;
- rrp = rp, rp = rp->l_next
- )
- if (rp->l_cmd)
- hascmds = TRUE;
-
- if (hascmds && cp)
- error("Commands defined twice for target %s", np->n_name);
-
- if ((rp = (struct line *)malloc(sizeof (struct line)))
- == (struct line *)0)
- fatal("No memory for line");
- rp->l_next = (struct line *)0;
- rp->l_dep = dp;
- rp->l_cmd = cp;
-
- if (rrp)
- rrp->l_next = rp;
- else
- np->n_line = rp;
-
- np->n_flag |= N_TARG;
- }
-
-
- /*
- * Parse input from the makefile, and construct a tree structure
- * of it.
- */
- void
- input(fd)
- FILE * fd;
- {
- char * p; /* General */
- char * q;
- struct name * np;
- struct depend * dp;
- struct cmd * cp;
-
-
- if (getline(str1, fd)) /* Read the first line */
- return;
-
- for(;;)
- {
- if (*str1 == '\t') /* Rules without targets */
- error("Rules not allowed here");
-
- p = str1;
-
- while (isspace(*p)) /* Find first target */
- p++;
-
- while (((q = index(p, '=')) != (char *)0) &&
- (p != q) && (q[-1] == '\\')) /* Find value */
- {
- register char * a;
-
- a = q - 1; /* Del \ chr; move rest back */
- p = q;
- while(*a++ = *q++)
- ;
- }
-
- if (q != (char *)0)
- {
- register char * a;
-
- *q++ = '\0'; /* Separate name and val */
- while (isspace(*q))
- q++;
- if (p = rindex(q, '\n'))
- *p = '\0';
-
- p = str1;
- if ((a = gettok(&p)) == (char *)0)
- error("No macro name");
-
- setmacro(a, q);
-
- if (getline(str1, fd))
- return;
- continue;
- }
-
- expand(str1);
- p = str1;
-
- while (((q = index(p, ':')) != (char *)0) &&
- (p != q) && (q[-1] == '\\')) /* Find dependents */
- {
- register char * a;
-
- a = q - 1; /* Del \ chr; move rest back */
- p = q;
- while(*a++ = *q++)
- ;
- }
-
- if (q == (char *)0)
- error("No targets provided");
-
- *q++ = '\0'; /* Separate targets and dependents */
-
- for (dp = (struct depend *)0; ((p = gettok(&q)) != (char *)0);)
- /* get list of dep's */
- {
- np = newname(p); /* Intern name */
- dp = newdep(np, dp); /* Add to dep list */
- }
-
- *((q = str1) + strlen(str1) + 1) = '\0';
- /* Need two nulls for gettok (Remember separation) */
-
- cp = (struct cmd *)0;
- if (getline(str2, fd) == FALSE) /* Get commands */
- {
- while (*str2 == '\t')
- {
- cp = newcmd(&str2[0], cp);
- if (getline(str2, fd))
- break;
- }
- }
-
- while ((p = gettok(&q)) != (char *)0) /* Get list of targ's */
- {
- np = newname(p); /* Intern name */
- newline(np, dp, cp);
- if (!firstname)
- firstname = np;
- }
-
- if (feof(fd) != 0 || endoffile == TRUE) /* EOF? */
- return;
-
- strcpy(str1, str2);
- }
- }
-
-
- /*
- * Case insensitive strcmp() then used for = or != purposes.
- *
- * This makes cp/m makefile usage a bit simpler
- *
- * -mdk
- */
-
- no_case_cmp(first,second)
- char *first;
- char *second;
- {
- register char *p1,*p2;
-
- for (p1=first,p2=second ; *p1 != '\0' ; p1++, p2++) {
- if ((islower(*p1) ? tolower(*p1) : *p1) !=
- (islower(*p2) ? tolower(*p2) : *p2) ) {
- break;
- }
- }
-
- if (*p1 == '\0' && *p2 == '\0') {
- return(0);
- }
- return(1);
- }
- SHAR_EOF
- if test 5650 -ne "`wc -c input.c`"
- then
- echo shar: error transmitting input.c '(should have been 5650 characters)'
- fi
- echo shar: extracting macro.c
- cat << \SHAR_EOF > macro.c
- /*
- * Macro control for make
- */
-
-
- #include "h.h"
-
-
- struct macro * macrohead;
-
-
- struct macro *
- getmp(name)
- char * name;
- {
- register struct macro * rp;
-
- for (rp = macrohead; rp; rp = rp->m_next)
- if (strcmp(name, rp->m_name) == 0)
- return rp;
- return (struct macro *)0;
- }
-
-
- char *
- getmacro(name)
- char * name;
- {
- struct macro * mp;
-
- if (mp = getmp(name))
- return mp->m_val;
- else
- return "";
- }
-
-
- struct macro *
- setmacro(name, val)
- char * name;
- char * val;
- {
- register struct macro * rp;
- register char * cp;
-
-
- /* Replace macro definition if it exists */
- for (rp = macrohead; rp; rp = rp->m_next)
- if (strcmp(name, rp->m_name) == 0)
- {
- free(rp->m_val); /* Free space from old */
- break;
- }
-
- if (!rp) /* If not defined, allocate space for new */
- {
- if ((rp = (struct macro *)malloc(sizeof (struct macro)))
- == (struct macro *)0)
- fatal("No memory for macro");
-
- rp->m_next = macrohead;
- macrohead = rp;
- rp->m_flag = FALSE;
-
- if ((cp = malloc(strlen(name)+1)) == (char *)0)
- fatal("No memory for macro");
- strcpy(cp, name);
- rp->m_name = cp;
- }
-
- if ((cp = malloc(strlen(val)+1)) == (char *)0)
- fatal("No memory for macro");
- strcpy(cp, val); /* Copy in new value */
- rp->m_val = cp;
-
- return rp;
- }
-
-
- /*
- * Do the dirty work for expand
- */
- void
- doexp(to, from, len, buf)
- char ** to;
- char * from;
- int * len;
- char * buf;
- {
- register char * rp;
- register char * p;
- register char * q;
- register struct macro * mp;
-
-
- rp = from;
- p = *to;
- while (*rp)
- {
- if (*rp != '$')
- {
- *p++ = *rp++;
- (*len)--;
- }
- else
- {
- q = buf;
- if (*++rp == '(')
- while (*++rp && *rp != ')')
- *q++ = *rp;
- else if (!*rp)
- {
- *p++ = '$';
- break;
- }
- else
- *q++ = *rp;
- *q = '\0';
- if (*rp)
- rp++;
- if (!(mp = getmp(buf)))
- mp = setmacro(buf, "");
- if (mp->m_flag)
- fatal("Infinitely recursive macro %s", mp->m_name);
- mp->m_flag = TRUE;
- *to = p;
- doexp(to, mp->m_val, len, buf);
- p = *to;
- mp->m_flag = FALSE;
- }
- if (*len <= 0)
- error("Expanded line too line");
- }
- *p = '\0';
- *to = p;
- }
-
-
- /*
- * Expand any macros in str.
- */
- void
- expand(str)
- char * str;
- {
- static char a[LZ];
- static char b[LZ];
- char * p;
- int len = LZ-1;
-
- p = str;
-
- strcpy(a, str);
- doexp(&p, a, &len, b);
- }
- SHAR_EOF
- if test 2298 -ne "`wc -c macro.c`"
- then
- echo shar: error transmitting macro.c '(should have been 2298 characters)'
- fi
- echo shar: extracting main.c
- cat << \SHAR_EOF > main.c
- /*
- * make [-f makefile] [-nprst] [macro=val ...] [target(s) ...]
- *
- * (Better than EON mk & old CPM make but not quite as good as UNIX make)
- *
- * -f makefile name
- * -i don't ignore exit status
- * -n Pretend to make
- * -p Print all macros & targets
- * -q Question up-to-dateness of target. Return exit status 1 if not
- * -r Don't not use inbuilt rules
- * -s Make silently
- * -t Touch files instead of making them
- * -m Change memory requirements - N/A under CP/M
- */
-
- #include "c:stdio.h" /* c: is my ramdisk */
- #include "c:fcntl.h"
- #include "h.h"
-
- char Usage1[]=" -f makefile name\n\
- -i don't ignore exit status\n\
- -n Pretend to make\n\
- -p Print all macros & targets\n\
- -r Do not use inbuilt rules\n\
- -s Make silently\n\
- -t Touch files instead of making them\n";
-
-
- #define MEMSPACE (16384) /* superfluous under cp/m */
-
-
- char * myname;
- char * makefile; /* The make file */
- unsigned memspace = MEMSPACE;
-
- extern FILE *execfile;
-
- FILE * ifd; /* Input file desciptor */
- bool domake = TRUE; /* Go through the motions option */
- bool ignore = TRUE; /* Ignore exit status option */
- bool silent = FALSE; /* Silent option */
- bool print = FALSE; /* Print debuging information */
- bool rules = TRUE; /* Use inbuilt rules */
- bool dotouch = FALSE;/* Touch files instead of making */
- bool quest = FALSE; /* Question up-to-dateness of file */
-
-
- void
- main(argc, argv)
- char ** argv;
- int argc;
- {
- register char * p; /* For argument processing */
- int estat; /* For question */
- register struct name * np;
-
-
- /*
- * CP/M makes all command line junque upper case. All things
- * being equal, I'd rather they be all forced lower. So I will.
- *
- * I have also forced everything in the makefile to lower case,
- * so everything should be case insensitive.
- */
- for (estat = argc ; --estat > 0 ;) {
- strlower(argv[estat]);
- }
-
- unlink(MAKERUN); /* delete possible existing make-submit file */
-
- myname = (argc-- < 1) ? "make" : *argv++;
- /*
- * CP/M can't do argv[0] (OS limitation), so we don't know who we are.
- */
- myname = "make";
-
- while ((argc > 0) && (**argv == '-'))
- {
- argc--; /* One less to process */
- p = *argv++; /* Now processing this one */
-
- while (*++p != '\0')
- {
- /*
- * Elaborate switch not really needed, but I
- * hacked this in before I made all argv parameters
- * lower case (for cp/m).
- */
- switch( isupper(*p) ? tolower (*p) : *p )
- {
- case 'f': /* Alternate file name */
- if (*++p == '\0')
- {
- if (argc-- <= 0)
- usage();
- p = *argv++;
- }
- makefile = p;
- goto end_of_args;
- case 'm': /* Change space requirements */
- if (*++p == '\0')
- {
- if (argc-- <= 0)
- usage();
- p = *argv++;
- }
- memspace = atoi(p);
- goto end_of_args;
- case 'n': /* Pretend mode */
- domake = FALSE;
- break;
- case 'i': /* Ignore fault mode */
- ignore = FALSE;
- break;
- case 's': /* Silent about commands */
- silent = TRUE;
- break;
- case 'p':
- print = TRUE;
- break;
- case 'r':
- rules = FALSE;
- break;
- case 't':
- dotouch = TRUE;
- break;
- case 'q':
- quest = TRUE;
- break;
- default: /* Wrong option */
- usage();
- }
- }
- end_of_args:;
- }
-
- /* if (initalloc(memspace) == 0xffff) Must get memory for alloc
- fatal("Cannot initalloc memory");
- */
- if (strcmp(makefile, "-") == 0) /* Can use stdin as makefile */
- ifd = stdin;
- else
- if (!makefile) /* If no file, then use default */
- {
- if ((ifd = fopen(DEFN1, "r")) == (FILE *)0
- && ((ifd = fopen(DEFN2, "r")) == (FILE *)0)) {
- fatal("Can't open %s or %s; error %02x",
- DEFN1,DEFN2, errno);
- }
-
- }
- else
- if ((ifd = fopen(makefile, "r")) == (FILE *)0)
- fatal("Can't open %s", makefile);
-
- if (rules)
- makerules();
-
- setmacro("$", "$");
-
- while (argc && (p = index(*argv, '=')))
- {
- char c;
-
- c = *p;
- *p = '\0';
- setmacro(*argv, p+1);
- *p = c;
-
- argv++;
- argc--;
- }
-
- input(ifd); /* Input all the gunga */
- fclose(ifd); /* Finished with makefile */
- lineno = 0; /* Any calls to error now print no line number */
-
- if (print)
- prt(); /* Print out structures */
-
- np = newname(".SILENT");
- if (np->n_flag & N_TARG)
- silent = TRUE;
-
- np = newname(".IGNORE");
- if (np->n_flag & N_TARG)
- ignore = TRUE;
-
- precious();
-
- if (!domake)
- silent = FALSE;
-
- if (!firstname)
- fatal("No targets defined");
-
- circh(); /* Check circles in target definitions */
-
- if (!argc)
- estat = make(firstname, 0);
- else while (argc--)
- {
- if (!print && !silent && strcmp(*argv, "love") == 0)
- printf("Not war!\n");
- estat |= make(newname(*argv++), 0);
- }
-
-
- if (execfile == NULL) {
- exit(0); /* no file made, must be up to date! */
- }
-
- /*
- * The "trick" algorithm used for CP/M (which can't execute
- * commands while "make" is running) is that dosh() really
- * puts commands into a submit file MAKERUN, then after
- * the make is "done", that submit file is chained-to (below).
- * The first code-line below enters the submit file's last command
- * to delete itself (so this chaining trick is mostly transparent.
- *
- * -mdk
- */
-
- dosh("era ",MAKERUN); /* have the submit file delete itself */
- dosh("\n","");
- fclose(execfile); /* close the writing to this file */
-
- bdos(108,0); /* Reset CP/M Program return code */
-
- strcpy((char *)0x80,MAKERUN); /* load submit file name into DMA buf*/
- bdos(47,0xff); /* chain to the generated submit file */
-
-
- /* if (quest)
- exit(estat);
- else
- exit(0);
- */
-
- }
-
-
- usage()
- {
- fprintf(stderr, "Usage: %s [-f makefile] [-nprst] [macro=val ...] [target(s) ...]\n%s", myname,Usage1);
- exit(1);
- }
-
-
- void
- fatal(msg, a1, a2, a3)
- char *msg;
- {
- fprintf(stderr, "%s: ", myname);
- fprintf(stderr, msg, a1, a2, a3);
- fputc('\n', stderr);
- exit(1);
- }
-
-
-
- strlower(string)
- char *string;
- {
- register char *pointer;
- char c;
- for (pointer = string ; (c=*pointer) != '\0' ; pointer++ ) {
- if (isupper(c))
- *pointer = tolower(c);
- }
- }
- SHAR_EOF
- if test 5995 -ne "`wc -c main.c`"
- then
- echo shar: error transmitting main.c '(should have been 5995 characters)'
- fi
- echo shar: extracting reader.c
- cat << \SHAR_EOF > reader.c
- /*
- * Read in makefile
- */
-
-
- #include "c:stdio.h"
- #include "h.h"
-
-
- int lineno;
-
- int endoffile = FALSE;
-
- /*
- * Syntax error handler. Print message, with line number, and exits.
- */
- void
- error(msg, a1, a2, a3)
- char * msg;
- {
- fprintf(stderr, "%s: ", myname);
- fprintf(stderr, msg, a1, a2, a3);
- if (lineno)
- fprintf(stderr, " on line %d", lineno);
- fputc('\n', stderr);
- exit(1);
- }
-
-
- /*
- * Read a line into the supplied string of length LZ. Remove
- * comments, ignore blank lines. Deal with quoted (\) #, and
- * quoted newlines. If EOF return TRUE.
- */
- bool
- getline(str, fd)
- char * str;
- FILE * fd;
- {
- register char * p;
- char * q;
- int pos = 0;
- int concatflag = 0;
- int size;
-
-
- for (;;)
- {
- if (fgets(str+pos, LZ-pos, fd) == (char *)0) {
- endoffile = TRUE;
- return (TRUE); /* EOF */
-
- }
- if (index(str+pos,'\032') != (char *)0) {
- endoffile = TRUE;
- return(TRUE);
- }
-
- /*
- * Strip CP/M CR characters
- */
- if ((p=index(str+pos,'\015')) != (char *)0) {
- do {
- *p = p[1];
- } while (*(++p) != '\0');
- }
-
- /*
- * Shorten leading whitespace on line extensions.
- */
- if (concatflag != 0) {
- for (p = str+pos ; iswhite(*p) ; p++ ) ;
- size = p-str-pos-1;
- if (size > 0) {
- p = str+pos+1;
- while ((*p = p[size]) != '\0') {
- p++;
- }
- }
- }
-
- strlower(str+pos); /* let's do everything inlower case */
-
- lineno++;
-
- if ((p = index(str+pos, '\n')) == (char *)0)
- error("Line too long");
-
- /*
- * I want to actually join lines that are logically joined
- * so that when link commands are generated for CP/M,
- * a usable CCP command line will be generated.
- */
- if (p[-1] == '\\') {
- *(--p) = '\0';
- pos = p - str;
- concatflag = 1;
- continue;
- }
-
- p = str;
- while (((q = index(p, '#')) != (char *)0) &&
- (p != q) && (q[-1] == '\\'))
- {
- char *a;
-
- a = q - 1; /* Del \ chr; move rest back */
- p = q;
- while (*a++ = *q++)
- ;
- }
- if (q != (char *)0)
- {
- q[0] = '\n';
- q[1] = '\0';
- }
-
- p = str;
- while (isspace(*p)) /* Checking for blank */
- p++;
-
- if (*p != '\0')
- return FALSE;
- pos = 0;
- }
- }
-
-
- /*
- * Get a word from the current line, surounded by white space.
- * return a pointer to it. String returned has no white spaces
- * in it.
- */
- char *
- gettok(ptr)
- char **ptr;
- {
- register char * p;
-
-
- while (isspace(**ptr)) /* Skip spaces */
- (*ptr)++;
-
- if (**ptr == '\0') /* Nothing after spaces */
- return NULL;
-
- p = *ptr; /* word starts here */
-
- while ((**ptr != '\0') && (!isspace(**ptr)))
- (*ptr)++; /* Find end of word */
-
- *(*ptr)++ = '\0'; /* Terminate it */
-
- return(p);
- }
- SHAR_EOF
- if test 2614 -ne "`wc -c reader.c`"
- then
- echo shar: error transmitting reader.c '(should have been 2614 characters)'
- fi
- echo shar: extracting rules.c
- cat << \SHAR_EOF > rules.c
- /*
- * Control of the implicit suffix rules
- */
-
-
- #include "h.h"
-
- extern long ftime();
- extern long time();
- extern char *rindex();
- extern struct name *newname();
- extern char *setmacro();
-
- /*
- * Return a pointer to the suffix of a name
- */
- char *
- suffix(name)
- char * name;
- {
- return(rindex(name, '.'));
- }
-
-
- /*
- * Dynamic dependency. This routine applies the suffix rules
- * to try and find a source and a set of rules for a missing
- * target. If found, np is made into a target with the implicit
- * source name, and rules. Returns TRUE if np was made into
- * a target.
- */
- bool
- dyndep(np)
- struct name * np;
- {
- register char * p;
- register char * q;
- register char * suff; /* Old suffix */
- register char * basename; /* Name without suffix */
- struct name * op; /* New dependent */
- struct name * sp; /* Suffix */
- struct line * lp;
- struct depend * dp;
- char * newsuff;
-
-
- p = str1;
- q = np->n_name;
- suff = suffix(q);
- while (q < suff)
- *p++ = *q++;
- *p = '\0';
- basename = setmacro("*", str1)->m_val;
-
- if (!((sp = newname(".suffixes"))->n_flag & N_TARG))
- return FALSE;
-
- for (lp = sp->n_line; lp; lp = lp->l_next)
- for (dp = lp->l_dep; dp; dp = dp->d_next)
- {
- newsuff = dp->d_name->n_name;
- if (strlen(suff)+strlen(newsuff)+1 >= LZ)
- fatal("Suffix rule too long");
- p = str1;
- q = newsuff;
- while (*p++ = *q++)
- ;
- p--;
- q = suff;
- while (*p++ = *q++)
- ;
- sp = newname(str1);
- if (sp->n_flag & N_TARG)
- {
- p = str1;
- q = basename;
- if (strlen(basename) + strlen(newsuff)+1 >= LZ)
- fatal("Implicit name too long");
- while (*p++ = *q++)
- ;
- p--;
- q = newsuff;
- while (*p++ = *q++)
- ;
- op = newname(str1);
- if (!op->n_time)
- op->n_time = ftime(op->n_name);/* Gets modtime of this file*/
- if (op->n_time)
- {
- dp = newdep(op, 0);
- newline(np, dp, sp->n_line->l_cmd);
- setmacro("<", op->n_name);
- return TRUE;
- }
- }
- }
- return FALSE;
- }
-
-
- /*
- * Make the default rules
- */
- void
- makerules()
- {
- struct cmd * cp;
- struct name * np;
- struct depend * dp;
-
-
- #ifdef xyz123zzz
-
- /*
- * Sure would have been nice if this had been documented as
- * to exactly what was going on with the routine calls.
- *
- * -mdk
- */
- setmacro("BDSCC", "asm");
- /* setmacro("BDSCFLAGS", ""); */
- cp = newcmd("$(BDSCC) $(BDSCFLAGS) -n $<", 0);
- np = newname(".c.o");
- newline(np, 0, cp);
-
- setmacro("CC", "c");
- setmacro("CFLAGS", "-O");
- cp = newcmd("$(CC) $(CFLAGS) -c $<", 0);
- np = newname(".c.obj");
- newline(np, 0, cp);
-
- setmacro("M80", "asm -n");
- /* setmacro("M80FLAGS", ""); */
- cp = newcmd("$(M80) $(M80FLAGS) $<", 0);
- np = newname(".mac.o");
- newline(np, 0, cp);
-
- setmacro("AS", "zas");
- /* setmacro("ASFLAGS", ""); */
- cp = newcmd("$(AS) $(ASFLAGS) -o $@ $<", 0);
- np = newname(".as.obj");
- newline(np, 0, cp);
-
- np = newname(".as");
- dp = newdep(np, 0);
- np = newname(".obj");
- dp = newdep(np, dp);
- np = newname(".c");
- dp = newdep(np, dp);
- np = newname(".o");
- dp = newdep(np, dp);
- np = newname(".mac");
- dp = newdep(np, dp);
- np = newname(".suffixes");
- newline(np, dp, 0);
- #endif
-
-
- /*
- * C compilation. I use cc-c.sub to do what unix cc -c does.
- *
- * Macros can be overridden in makfile if I change and am
- * too lazy to recompile this make program's rules.
- *
- */
- setmacro("ccc", "cc-c");
- setmacro("cflags", "");
- setmacro("cwhich", "$*");
- cp = newcmd("$(ccc) $(cflags) $(cwhich)", 0);
- np = newname(".c.o");
- newline(np, 0, cp);
-
- /*
- * Assembly using RMAC.
- */
- setmacro("asm", "rmac");
- setmacro("asmflags", "$$PZ SZ");
- setmacro("asmwhich", "$*");
- cp = newcmd("$(asm) $(asmwhich) $(asmflags)", 0);
- np = newname(".asm.rel");
- newline(np, 0, cp);
-
- /*
- * No point in my Z80 assembler or MAC. Rules for
- * non-linkable one-module language-tools makes no
- * sense because it is a one-file process anyway.
- */
-
-
- np = newname(".asm");
- dp = newdep(np, 0);
- np = newname(".rel");
- dp = newdep(np,dp);
- np = newname(".c");
- dp = newdep(np, dp);
- np = newname(".o");
- dp = newdep(np,dp);
- np = newname(".suffixes");
- newline(np, dp, 0);
-
- }
- SHAR_EOF
- if test 4094 -ne "`wc -c rules.c`"
- then
- echo shar: error transmitting rules.c '(should have been 4094 characters)'
- fi
- echo shar: extracting h.h
- cat << \SHAR_EOF > h.h
- /*
- * Include header for make
- */
-
-
- #ifndef uchar
- #define uchar char /* regular char's are unsigned w/Aztec C */
- #endif
-
- #define void int
-
- #define bool uchar
- #define time_t long
- #define TRUE (1)
- #define FALSE (0)
- #ifndef max
- #define max(a,b) ((a)>(b)?(a):(b))
- #endif
-
- #define DEFN1 "MAKEFILE.DAT" /* Default names */
- #define DEFN2 "MAKEFILE"
- #define errout(s) fputs(s, stderr) /* No need for DeSmet kludge */
- #define MAKERUN "MAKE@@@.SUB" /* File on which commands are written */
-
- #define LZ (1024) /* Line size */
-
-
-
- /*
- * A name. This represents a file, either to be made, or existant
- */
-
- struct name
- {
- struct name * n_next; /* Next in the list of names */
- char * n_name; /* Called */
- struct line * n_line; /* Dependencies */
- time_t n_time; /* Modify time of this name */
- uchar n_flag; /* Info about the name */
- };
-
- #define N_MARK 0x01 /* For cycle check */
- #define N_DONE 0x02 /* Name looked at */
- #define N_TARG 0x04 /* Name is a target */
- #define N_PREC 0x08 /* Target is precious */
-
- /*
- * Definition of a target line.
- */
- struct line
- {
- struct line * l_next; /* Next line (for ::) */
- struct depend * l_dep; /* Dependents for this line */
- struct cmd * l_cmd; /* Commands for this line */
- };
-
-
- /*
- * List of dependents for a line
- */
- struct depend
- {
- struct depend * d_next; /* Next dependent */
- struct name * d_name; /* Name of dependent */
- };
-
-
- /*
- * Commands for a line
- */
- struct cmd
- {
- struct cmd * c_next; /* Next command line */
- char * c_cmd; /* Command line */
- };
-
-
- /*
- * Macro storage
- */
- struct macro
- {
- struct macro * m_next; /* Next variable */
- char * m_name; /* Called ... */
- char * m_val; /* Its value */
- uchar m_flag; /* Infinite loop check */
- };
-
- extern char * myname;
- extern struct name namehead;
- extern struct macro * macrohead;
- extern struct name * firstname;
- extern bool silent;
- extern bool ignore;
- extern bool rules;
- extern bool dotouch;
- extern bool quest;
- extern bool domake;
- extern char str1[];
- extern char str2[];
- extern int lineno;
-
- char * fgets();
- char * index();
- char * rindex();
- char * malloc();
- extern int errno;
-
- char * getmacro();
- struct macro * setmacro();
- void input();
- void error();
- void fatal();
- int make();
- struct name * newname();
- struct depend * newdep();
- struct cmd * newcmd();
- void newline();
- char * suffix();
- void touch();
- void makerules();
- char * gettok();
- void precious();
- SHAR_EOF
- if test 2448 -ne "`wc -c h.h`"
- then
- echo shar: error transmitting h.h '(should have been 2448 characters)'
- fi
- # End of shell archive
- exit 0
-
- --
-
- Mike Kersenbrock
- Tektronix Computer Aided Software Engineering
- Aloha, Oregon
- 31-Jul-86 19:39:30-MDT,46966;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Thu 31 Jul 86 19:37:52-MDT
- Received: from brl-smoke.arpa by AMSAA.ARPA id a000907; 31 Jul 86 19:47 EDT
- Received: from USENET by SMOKE.BRL.ARPA id a005284; 31 Jul 86 19:41 EDT
- From: Michael Kersenbrock <michaelk%copper.uucp@BRL.ARPA>
- Newsgroups: net.micro.cpm
- Subject: MAKE for CPM 3.0 part 2 of 2
- Message-ID: <514@copper.UUCP>
- Date: 31 Jul 86 07:30:05 GMT
- Keywords: cpm, make
- To: info-cpm@AMSAA.ARPA
-
- <------------->
-
- This is the uuencoded binary for "make.com". The sources and man page
- were separately posted as part 1.
-
- Mike Kersenbrock
- Aloha, Oregon
- ...!tektronix!copper!michaelk
-
-
- # This is a shell archive.
- # Remove everything above and including the cut line.
- # Then run the rest of the file through sh.
- #----cut here-----cut here-----cut here-----cut here----#
- #!/bin/sh
- # shar: Shell Archiver
- # Run the following text with /bin/sh to create:
- # MAKE.UUE
- # This archive created: Wed Jul 30 23:46:19 1986
- # By: Michael D. Kersenbrock (Oregon HomePower Software)
- echo shar: extracting make.uue
- cat << \SHAR_EOF > make.uue
- begin 644 MAKE.COM
- MPW(YS60H```JT7=\M<)7`2&(`>4A?`'ES<TJT=$BT7<JT7=\M<)7`2'O=>4A
- MB@'ES;<MT=$A[W7E(9X!Y<VW+='1(>]UY2&J`>7-MRW1T2'__^7-OSW1(0X`
- M.5XC5M4A#@`Y7B-6U2&M`>4JT7?ES8XJZR$(`#GY(0``R4U!2T5`0$`N4U5"
- M`'<`36%K93H@8V%N)W0@8W)E871E(`!-04M%0$!`+E-50@`-"@`E<R`E<P#-
- M9"CX_SKO=V\F`.LA"P`Y<SK9=V\F`.LA"@`Y<R%C!.7-+131ZR$&`#ES(W+K
- M?K?"\0$A:03K(08`.7,C<B$4`#E>(U8A!``97B-6U?WAPPX"_6X`_68!Y?WA
- M_>7A?+7*8@3];@3]9@7K(00`.7,C<L,Y`B$$`#E>(U;K7B-6(00`.7,C<B$$
- M`#E^([;*7P0A!``Y7B-6ZR,C7B-6U2'S=^7-)5;1T2'S=^7-HQ?1(?-W1$U@
- M:5X6`"%``,VC*,*#`F!I7A8`(2T`S:,HRJ\"8&E>%@`A0`#-HRC*G0(A`0#K
- M(0L`.7/#I@(A`0#K(0H`.7-@:2-$32O#9P(A"P`Y?K?"Q0(AY'7E(7($Y<VW
- M+='1(0L`.7ZWPO$"(0H`.7ZWPO$"(>1UY2$Z`.7-]2W1T2'D=>4A(`#ES?4M
- MT=%@:>7=X<,!`]WEX2/EW>$KW>7A?K?*6@/=;@`F`!$*`,VC*,H_`]WEX2-^
- MM\H_`R$@`-UU`"$+`#E^M\(\`R'D=>4A=@3ES;<MT='#5P,A"P`Y?K?"5P,A
- MY'7EW6X`)@#ES?4MT='#^0(A"P`Y?K?"<`,AY'7E(0H`Y<WU+='1.F=V;R8`
- M?+7*7`0A"@`Y?K?"D0,A>P3E(7D$Y<T#`='1(7P$Y<7-`P'1T>LA"``Y<R-R
- M>K/*7`0A"``Y7B-6(?__S:,HRLP#(08`.5XC5M4A?@3ES?8=T='#7`0A"``Y
- M7B-6U2I@=N4AD@3ES6LJT='1(0H`.7ZWROL#(>1UY2&D!.7-MRW1T<-<!"'D
- M=>4A"@#ES?4MT=$A%``Y7B-6(0H`&5X6`"$(`,U3*,)0!"$4`#E>(U;K(R->
- M(U;5S0)5T<)0!"$4`#E>(U;K(R->(U;5*F!VY2&P!.7-:RK1T=$A"``Y7B-6
- MU<V_/='#)P+#!0+)4TA%3$P`.F)I;B]E<V@`("`@`%P*`#H```H`0V]U;&1N
- M)W0@97AE8W5T92`E<P`E<SH@17)R;W(@8V]D92`E9``@*$EG;F]R960I"@`E
- M<SH@)R5S)R!R96UO=F5D+@H`S60H6?\Z9W9O)@!\M<K>!#KO=V\F`'RUPO4$
- M(;,`.5XC5NLC(UXC5M4AG07ES6LJT=$Z9W9O)@!\M<J<!2$``.4AM0`Y7B-6
- MZR,C7B-6U<U=2='1ZR&H`#ES(W(A``#-W2C*1P4ALP`Y7B-6ZR,C7B-6U2I@
- M=N4AJP7ES6LJT='1PY,%(:@`.5XC5M7-R4K1(80`.>4AM0`Y7B-6ZR,C7B-6
- MU<VT9]'1(80`.>4A``#E(0@`.>7-KFC1T=$AA``YY2$``.4A"``YY<U?:-'1
- MT2&$`#GES3%HT<D@("`@=&]U8V@@)7,*`"5S.B`G)7,G(&YO="!T;W5C:&5D
- M("T@;F]N+65X:7-T86YT"@#-9"C\_R$$`#GES:%7`0```.'-NU<A$``Y7B-6
- M(0H`&5X6`"$"`,U3*,H`!B$``,DA$``Y7B-6(08`&<VH5\T96,(V!B$0`#E>
- M(U8A!@`9Y2$2`#E>(U;K(R->(U;5S31;T>'-NU<Z\'=O)@!\M<J*!B$0`#E>
- M(U8A!``97B-6U=WAPUX&W6X`W68!Y=WAW>7A?+7*=@;=Y>$1!``9?B.VPG8&
- MPU4&W>7A?+7"B@8A$``Y7B-6U<W1(M$A$``Y7B-6(0H`&5X6`"$$`,U3*,+,
- M!B$0`#E>(U8A!@`9S:A7S1E8PLP&(1``.5XC5NLC(UXC5M4A2PCES?8=T=$A
- M$``Y7B-6(00`&5XC5M7=X</I!MUN`-UF`>7=X=WEX7RURF<'W6X"W68#1$W#
- M`P=@:5XC5D)+>+'*9`<A$@`Y7B-6ZR/E(0(`"5XC5M7-T`71T2$$`#GE(0(`
- M"5XC5B$&`!G-J%?-SE<A"@`YS:A7S>97S?Y:RD\'(08`.<VH5\-=!R$"``E>
- M(U8A!@`9S:A7X<V[5\/\!L/@!B$"`.4A$@`Y7B-6(0H`&='E;B8`S84IZ^%S
- M.O%W;R8`?+7*M@<A$``Y7B-6(08`&>7-/U[1(1``.5XC5B$&`!G-J%<A!``Y
- MS9I7S>!:Z\DA$``Y7B-6(08`&<VH5R$$`#G-FE?-X%K*(0@Z9G9O)@!\M<KK
- M!R$0`#E>(U;5S<,$T<,.""$0`#E>(U;K(R->(U;5(64(Y<U@%-'1(1``.5XC
- M5M7-LP'1(1``.5XC5B$&`!GES3]>T<-'""$2`#E^([;"1P@A$``Y7B-6ZR,C
- M7B-6U2I@=N4A9PCES6LJT='1(0``R41O;B=T(&MN;W<@:&]W('1O(&UA:V4@
- M)7,`0``E<SH@)R5S)R!I<R!U<"!T;R!D871E"@#-9"C\_RIB=NLA!``Y<R-R
- MPZ0((00`.5XC5NM>(U8A!``Y<R-R(00`.7XCMLK?""$$`#E>(U8A!``97B-6
- MU2$&`#E>(U;K(R->(U;5(?4)Y2'O=>7-CBKK(0@`.?G#D@@A[W7E(0H`Y<W-
- M+]'1*N1W1$W#^PA@:5XC5D)+>+'*]`DA`@`)7B-6U2'^">4A[W7ES8XJT='1
- M(00`"5XC5M7]X<,L"?UN`/UF`>7]X?WEX7RURN0)(>]UY2$Z`.7-S2_1T?UN
- M`OUF`^7=X<-6"=UN`-UF`>7=X=WEX7RURGL)W6X"W68#(R->(U;5(0,*Y2'O
- M=>7-CBK1T='#30DA[W7E(0H`Y<W-+]'1_6X$_68%ZR$&`#ES(W+#JPDA!@`Y
- M7B-6ZUXC5B$&`#ES(W(A!@`Y?B.VRM0)(08`.5XC5NLC(UXC5M4A!PKE(>]U
- MY<V.*M'1T<.9"2'O=>4A"@#ES<TOT='#(PDA[W7E(0H`Y<W-+]'1P_0(R25S
- M(#T@)7,*`"5S.@H`("5S`"T))7,*`,UD*```(0P`.5XC5B$*`!E>%@`A`0#-
- M4RC*0`HA#``Y7B-6ZR,C7B-6U2'#"N7-]AW1T2$!`.4A#@`Y7B-6(0H`&='E
- M;B8`S84IZ^%S(0P`.5XC5B$$`!E>(U;5W>'#=PK=;@#=9@'EW>'=Y>%\M<JH
- M"MUN`MUF`T1-PY$*8&E>(U9"2WBQRJ4*(0(`"5XC5M7-#0K1PXH*PVX*(?[_
- MY2$.`#E>(U8A"@`9T>5N)@#-4RCKX7/)0VER8W5L87(@9&5P96YD96YC>2!F
- M<F]M("5S`,UD*```*N1W1$W#\PI@:5XC5D)+>+'*``O%S0T*T</L"LG-9"@`
- M`"%W"^7-@0O1Y?WA$0H`&5X6`"$$`,U3*,(B"\G];@3]9@7EW>'#-PO=;@#=
- M9@'EW>'=Y>%\M<IV"]UN`MUF`T1-PU$+8&E>(U9"2WBQRG,+(0@`Y2$"``E>
- M(U8A"@`9T>5N)@#-A2GKX7/#2@O#+@O)+E!214-)3U53`,UD*```*N1W1$TA
- MY'?EW>'#I`M@:5XC5D)+W6X`W68!Y=WA>+'*QPLA`@`)7B-6U2$.`#E>(U;5
- MS5X3T='"Q`M@:<G#E`LA"P#ES1%&T41-?+7"W@LA5`SES?8=T6!IW74`W70!
- M(0``ZV!I<R-R(0P`.5XC5M7-2E;1(^7-$4;1Y?WA?+7"$0PA9PSES?8=T2$,
- M`#E>(U;5_>7-)5;1T?WEX>LA`@`)<R-R(0``ZR$$``ES(W)@:1$&`!GES:%7
- M`````.'-NU<A``#K(0H`"7-@:<E.;R!M96UO<GD@9F]R(&YA;64`3F\@;65M
- M;W)Y(&9O<B!N86UE`,UD*```(00`Y<T11M%$37RUPI8,(>T,Y<WV'=$A``#K
- M8&ES(W(A#``Y7B-6(0(`"7,C<B$.`#E^([;"N@Q@:<DA#@`Y7B-6U=WAP]`,
- MW6X`W68!Y=WAW>7A?B.VRMP,P\<,8&G==0#==`$A#@`Y7B-6Z\E.;R!M96UO
- M<GD@9F]R(&1E<&5N9&%N=`#-9"@``"$*`.4A#@`Y7B-6U<WN5M'1Y?WA?+7*
- M*0TA``#]=0`A#``Y7B-6ZUX6`-7-%5?1RE`-(0P`.>5^(V9O(^OA<R-RZRO#
- M*0TA#``Y7B-6ZWZWPEX-R2$$`.7-$4;11$U\M<)U#2'Z#>7-]AW1(0``ZV!I
- M<R-R(0P`.5XC5M7-2E;1(^7-$4;1Y?WA?+7"H`TA$`[ES?8=T2$,`#E>(U;5
- M_>7-)5;1T?WEX>LA`@`)<R-R(0X`.7XCML+'#6!IR2$.`#E>(U;5W>'#W0W=
- M;@#=9@'EW>'=Y>%^([;*Z0W#U`U@:=UU`-UT`2$.`#E>(U;KR4YO(&UE;6]R
- M>2!F;W(@8V]M;6%N9`!.;R!M96UO<GD@9F]R(&-O;6UA;F0`S60H__\A``#K
- M(00`.7,A#0`Y7B-6(00`&5XC5D)+(0``Y=WAPUD.8&GEW>%@:5XC5D)+>+'*
- M=@Y@:1$$`!E^([;*<PXA`0#K(00`.7/#30XA!``Y?K?*H`XA$0`Y?B.VRJ`.
- M(0T`.5XC5NLC(UXC5M4A'`_ES9X>T=$A!@#ES1%&T41-?+7"MPXA00_ES?8=
- MT2$``.M@:7,C<B$/`#E>(U8A`@`)<R-R(1$`.5XC5B$$``ES(W+=Y>%\M<KO
- M#F!IW74`W70!PP$/8&GE(0\`.5XC5B$$`!G1<R-R(00`Y2$/`#E>(U8A"@`9
- MT>5N)@#-A2GKX7/)0V]M;6%N9',@9&5F:6YE9"!T=VEC92!F;W(@=&%R9V5T
- M("5S`$YO(&UE;6]R>2!F;W(@;&EN90#-9"CV_R$6`#E>(U;5(?-WY<TC']'1
- MRFX/R3KS=V\F`!$)`,VC*,J%#R$E$^7-GA[1(?-WZR$,`#ES(W(A#``Y7B-6
- MZUX6`-7-%5?1RK</(0P`.>5^(V9O(^OA<R-RZRO#D`\A/0#E(0X`.5XC5M7-
- MS%;1T>LA"@`Y<R-R>K/*0!`A#``Y7B-6(0H`.7XC9F_-LBC*0!`A"@`Y7B-6
- MZRM>%@`A7`#-HRC*0!`A"@`Y7B-6ZRM$32$*`#E>(U8A#``Y<R-R(0H`.>5^
- M(V9O(^OA<R-RZRM>%@#58&DC1$TKT7-ZL\H]$,,8$,.W#R$*`#E^([;*_1`A
- M``#E(0P`.>5^(V9O(^OA<R-RZRO1<R$*`#E>(U;K7A8`U<T55]'*B!`A"@`Y
- MY7XC9F\CZ^%S(W+K*\-A$"$*`.4A#``Y7B-6U<WN5M'1ZR$,`#ES(W)ZL\JT
- M$"$``.4A#@`Y7B-6Z]%S(?-WZR$,`#ES(W(A#``YY<T&(M%$37RUPM<0(3P3
- MY<V>'M$A"@`Y7B-6U<7-8!31T2$6`#E>(U;5(?-WY<TC']'1ROH0R<-N#R'S
- M=^7-HQ?1(?-WZR$,`#ES(W(A.@#E(0X`.5XC5M7-S%;1T>LA"@`Y<R-R>K/*
- MF1$A#``Y7B-6(0H`.7XC9F_-LBC*F1$A"@`Y7B-6ZRM>%@`A7`#-HRC*F1$A
- M"@`Y7B-6ZRM$32$*`#E>(U8A#``Y<R-R(0H`.>5^(V9O(^OA<R-RZRM>%@#5
- M8&DC1$TKT7-ZL\J6$<-Q$<,0$2$*`#E^([;"JQ$A2A/ES9X>T2$``.4A#``Y
- MY7XC9F\CZ^%S(W+K*]%S(0``ZR$&`#ES(W(A"@`YY<T&(M'K(0P`.7,C<GJS
- MRA<2(0P`.5XC5M7-@0O1ZR$(`#ES(W(A!@`Y7B-6U2$*`#E>(U;5S7H,T='K
- M(08`.7,C<L/-$2$``.4A\W?K(0P`.7,C<M4A\W?ES4I6T=$9(]%S(0``ZR$$
- M`#ES(W(A%@`Y7B-6U2'S>^7-(Q_1T<*2$CKS>V\F`!$)`,VC*,J2$B$$`#E>
- M(U;5(?-[Y<T%#='1ZR$$`#ES(W(A%@`Y7B-6U2'S>^7-(Q_1T<*2$L-3$B$*
- M`#GES08BT>LA#``Y<R-R>K/*\!(A#``Y7B-6U<V!"]'K(0@`.7,C<B$$`#E>
- M(U;5(0@`.5XC5M4A#``Y7B-6U<TF#M'1T2ID=GRUPNT2(0@`.5XC5NLB9';#
- MDA(A%@`Y7B-6(08`&5X6`"$(`,U3*,(3$RK/=Q$!`,VC*,H4$\DA\WOE(?-W
- MY<TE5M'1PVX/R5)U;&5S(&YO="!A;&QO=V5D(&AE<F4`3F\@;6%C<F\@;F%M
- M90!.;R!T87)G971S('!R;W9I9&5D`,UD*```(0P`.5XC5D)+(0X`.5XC5M7=
- MX<.'$V!I(T1-*]WEX2/EW>$K8&E^M\K;$]UN`"8`Y<U!5]'*J!/=;@`F`.7-
- M?5?1PZT3W6X`)@#E8&E>%@#5S4%7T<K($V!I7A8`U<U]5]'#SA-@:5X6`.O1
- MS;(HRM@3P]L3PWD38&E^M\+N$]WEX7ZWPNX3(0``R2$!`,G-9"@``"IB=D1-
- MPP848&E>(U9"2WBQRBD4(0(`"5XC5M4A#@`Y7B-6U<WL5='1PB848&G)P_\3
- M(0``R<UD*/[_(0X`.5XC5M7-\A/1ZR$$`#ES(W)ZL\I;%"$$`#E>(U8A!``9
- M7B-6Z\DA7Q3)`,UD*```*F)V1$W#=!1@:5XC5D)+>+'*HQ0A`@`)7B-6U2$.
- M`#E>(U;5S>Q5T='"H!0A!``)7B-6U<VS1]'#HQ3#;11XL<(2%2$'`.7-$4;1
- M1$U\M<*_%"%1%>7-]AW1*F)VZV!I<R-R8&DB8G8A``#K(08`"7,A#``Y7B-6
- MU<U*5M$CY<T11M'EW>%\M<+X%"%E%>7-]AW1(0P`.5XC5M7=Y<TE5M'1W>7A
- MZR$"``ES(W(A#@`Y7B-6U<U*5M$CY<T11M'EW>%\M<(T%2%Y%>7-]AW1(0X`
- M.5XC5M7=Y<TE5M'1W>7AZR$$``ES(W)@:<E.;R!M96UO<GD@9F]R(&UA8W)O
- M`$YO(&UE;6]R>2!F;W(@;6%C<F\`3F\@;65M;W)Y(&9O<B!M86-R;P#-9"C^
- M_R$0`#E>(U9"2R$.`#E>(U;K7B-6U=WA8&E^M\I6%V!I7A8`(20`S;(HRNH5
- M8&DC1$TK7A8`U=WEX2/EW>$KT7,A$@`Y7B-6Z^5^(V9O*^OA<R-RZR/#-Q<A
- M%``Y7B-6U?WA8&DC1$U>%@`A*`#-HRC*,Q9@:2-$37ZWRC`68&E>%@`A*0#-
- MLBC*,!9@:5X6`-7]Y>$CY?WA*]%SPP46PUL68&E^M\)+%B$D`.7=Y>$CY=WA
- M*]%SPU878&E>%@#5_>7A(^7]X2O1<R$``/UU`&!I?K?*;A9@:2-$32LA%``Y
- M7B-6U<WR$]'K(00`.7,C<GJSPJ`6(6T7Y2$6`#E>(U;5S6`4T='K(00`.7,C
- M<B$$`#E>(U8A!@`9?K?*QQ8A!``Y7B-6ZR,C7B-6U2%N%^7-]AW1T2$!`.4A
- M!@`Y7B-6(08`&=%SW>7AY2$0`#E>(U;KT7,C<B$4`#E>(U;5(10`.5XC5M4A
- M"``Y7B-6(00`&5XC5M4A%``Y7B-6U<V-%>LA"``Y^2$.`#E>(U;K7B-6U=WA
- M(0``Y2$&`#E>(U8A!@`9T7,A$@`Y7B-6ZUXC5B$``,W#*,I3%R&,%^7-GA[1
- MPZD5(0``W74`W>7AY2$0`#E>(U;KT7,C<LD`26YF:6YI=&5L>2!R96-U<G-I
- M=F4@;6%C<F\@)7,`17AP86YD960@;&EN92!T;V\@;&EN90#-9"C\_R'_`^LA
- M!``Y<R-R(1``.5XC5B$&`#ES(W(A$``Y7B-6U2'^:.7-)5;1T2'^;.4A!@`Y
- MY2'^:.4A#``YY<V-%>LA"``Y^<G-9"C]_R$/`#E>(U8A!0`Y<R-R(04`.>5^
- M(V9O*^OA<R-R(0``S=XHRC<8(04`.5XC5NLIZR$1`#E^(V9O&5XC5M7-51[1
- MPP$8(;T<Y<T"5=$A#P`YY7XC9F\KZ^%S(W+K(Q$!`.O-W2C*8!@AR1S#=Q@A
- M$0`YY7XC9F\C(^OA<R-RZRLK7B-6ZR)@=B'.'")@=B$/`#E>(U8A``#-WBC*
- M#AHA$0`Y7B-6ZUXC5NM>%@`A+0#-HRC*#AHA#P`YY7XC9F\KZ^%S(W+K(R$1
- M`#GE?B-F;R,CZ^%S(W+K*RM>(U9"2V!I(T1-?K?*"QI@:5X6`-7-+%?1RO48
- M8&E>%@#5S7U7T</[&&!I7A8`Z\/=&6!I(T1-?K?"/ADA#P`YY7XC9F\KZ^%S
- M(W+K(Q$``.O-PRC*)AG-BQTA$0`YY7XC9F\C(^OA<R-RZRLK7B-60DM@:2+@
- M=\,+&F!I(T1-?K?"AADA#P`YY7XC9F\KZ^%S(W+K(Q$``.O-PRC*;AG-BQTA
- M$0`YY7XC9F\C(^OA<R-RZRLK7B-60DO%S2A5T2+B=\,+&B$``'TR9W;#"!HA
- M``!],MEWPP@:(0$`?3+O=\,(&B$!`'TR\G?#"!HA``!],O!WPP@:(0$`?3)F
- M=L,(&B$!`'TR\7?#"!K-BQW#"!K-XBD)`&8`_AAM`$89;@"1&6D`FQES`*49
- M<`"O&7(`N1ET`,,9<0#-&=<9P]$8PX`8(=,<Y2K@=^7-[%71T<(G&B'9=2+<
- M=\.7&BK@=WRUPG4:(>(<Y2'5'.7-S2K1T2+<=WRUPG(:(>T<Y2'D'.7-S2K1
- MT2+<=WRUPG(:*LUWY2$<'>4A#QWE(>\<Y<WV'>LA"``Y^<.7&B$E'>4JX'?E
- MS<TJT=$BW'=\M<*7&BK@=^4A)QWES?8=T=$Z\'=O)@!\M<JE<$)B$W'>4A
- M-1WES6`4T=$A#P`Y?B.VRB\;(3T`Y2$3`#E>(U;K7B-6U<W,5M'11$U\M<HO
- M&V!I7A8`(00`.7,A``#K8&ES8&DCY2$3`#E>(U;K7B-6U<U@%-'1(00`.5X6
- M`&!I<R$1`#GE?B-F;R,CZ^%S(W+K*RLA#P`YY7XC9F\KZ^%S(W+K(\.R&BK<
- M=^7-5`_1*MQWY<UD,-$A```BWG<Z\G=O)@!\M<I3&\U_""$Y'>7-@0O1Y=WA
- MW6X*)@`1!`#-4RC*<QLA`0!],N]W(4$=Y<V!"]'EW>'=;@HF`!$$`,U3*,J3
- M&R$!`'TRV7?-`0LZ9W9O)@!\M<*H&R$``'TR[W<J9'9\M<*X&R%)'>7-]AW1
- MS=\*(0\`.7XCML+=&R$``.4J9';ES=`%T='K(04`.7,C<L-C'"$/`#GE?B-F
- M;ROKX7,C<NLC?+7*8QPZ\G=O)@!\M<(I'#KO=V\F`'RUPBD<(5P=Y2$3`#E>
- M(U;K7B-6U<WL5='1PBD<(6$=Y<UK*M$A``#E(1,`.>5^(V9O(R/KX7,C<NLK
- M*UXC5M7-@0O1Y<W0!='1ZR$%`#GE?B-F;\V%*>OA<R-RP]T;*M%W?+7"<QPA
- M``#ES;\]T2%P'>4A:QWES0,!T=$A?AWE(7P=Y<T#`='1*M%WY<UD,-$A``#E
- M(6P`Y<V*.='1(7\=Y2&``.7-)5;1T2'_`.4A+P#ES8HYT=')34%+14!`0"Y3
- M54(`;6%K90!M86ME`"T`34%+149)3$4N1$%4`'(`34%+149)3$4`<@!#86XG
- M="!O<&5N("5S(&]R("5S.R!E<G)O<B`E,#)X`$U!2T5&24Q%+D1!5`!-04M%
- M1DE,10!R`$-A;B=T(&]P96X@)7,`)``D`"Y324Q%3E0`+DE'3D]210!.;R!T
- M87)G971S(&1E9FEN960`;&]V90!.;W0@=V%R(0H`97)A(`!-04M%0$!`+E-5
- M0@`*``!-04M%0$!`+E-50@#-9"@``"%H=N4J8';E(;(=Y2'O=>7-CBKK(0@`
- M.?DA`0#ES;\]T<E5<V%G93H@)7,@6RUF(&UA:V5F:6QE72!;+6YP<G-T72!;
- M;6%C<F\]=F%L("XN+ET@6W1A<F=E="AS*2`N+BY="B5S`,UD*```*F!VY2%0
- M'N4A[W7ES8XJT='1(1(`.5XC5M4A$@`Y7B-6U2$2`#E>(U;5(1(`.5XC5M4A
- M[W7ES8XJZR$*`#GY(>]UY2$*`.7-S2_1T2$!`.7-OSW1R25S.B``S60H__\A
- M#0`Y7B-60DO#;!Y@:2-$32M@:5X6`"$$`#ES>K/*G1XA!``Y7A8`U<TL5]'*
- MFAXA!``Y7A8`U<U]5]'K8&ESPV8>R<UD*```*F!VY2$2'^4A[W7ES8XJT='1
- M(1(`.5XC5M4A$@`Y7B-6U2$2`#E>(U;5(1(`.5XC5M4A[W7ES8XJZR$*`#GY
- M*MYW?+7*_!XJWG?E(1<?Y2'O=>7-CBK1T=$A[W7E(0H`Y<W-+]'1(0$`Y<V_
- M/='))7,Z(``@;VX@;&EN92`E9`#-9"CV_R$``.LA"@`Y<R-R(0``ZR$(`#ES
- M(W(A&``Y7B-6U2$`!.LA#``Y?B-F;\VW*>4A&@`Y7B-6(0X`.7XC9F\9Y<VB
- M+-'1T<)Z'R$!`"+/=R$!`,DA&@#E(1@`.5XC5B$,`#E^(V9O&>7-S%;1T<JA
- M'R$!`"+/=R$!`,DA#0#E(1@`.5XC5B$,`#E^(V9O&>7-S%;1T41-?+7*UA\A
- M`0`)7A8`8&ES8&DC1$U^M\+"'R$(`#E^([;*@"`A%@`Y7B-6(0H`.7XC9F\9
- M1$W#^Q]@:2-$32M@:5X6`"$@`,VC*,(7(&!I7A8`(0D`S:,HRAH@P_4?8&GK
- M(18`.7XC9F_-MRGK(0H`.7XC9F_-MRDKZR$&`#ES(W(A!@`Y7B-6(0``S=XH
- MRH`@(18`.5XC5B$*`#E^(V9O&2-$36!IZR$&`#E^(V9O&5X6`&!I<WJSRH`@
- M8&DC1$TKPV`@(18`.5XC5B$*`#E^(V9O&>7-51[1*MYW(R+>=RLA"@#E(1@`
- M.5XC5B$,`#E^(V9O&>7-S%;1T41-?+7"QB`A^"'ES9X>T2'__PE>%@`A7`#-
- MHRC*!2$A``#E8&DK1$W1<V!IZR$6`#E^(V9OS;<IZR$*`#ES(W(A`0#K(0@`
- M.7,C<L,^'R$6`#E>(U9"2R$C`.7%S<Q6T='K(0P`.7,C<GJSRI@A8&GK(0P`
- M.7XC9F_-LBC*F"$A#``Y7B-6ZRM>%@`A7`#-HRC*F"$A#``Y7B-6ZROK(00`
- M.7,C<B$,`#E>(U9"2R$,`#GE?B-F;R/KX7,C<NLK7A8`U2$&`#GE?B-F;R/K
- MX7,C<NLKT7-ZL\J5(<-E(<,.(2$,`#E^([;*OR$A"@#E(0X`.5XC5NO1<R$`
- M`.4A#@`Y7B-6ZR/1<R$6`#E>(U9"2V!I7A8`U<T55]'*WB%@:2-$32O#R"%@
- M:7ZWRNDA(0``R2$``.LA"@`Y<R-RPSX?R4QI;F4@=&]O(&QO;F<`S60H```A
- M#``Y7B-6ZUXC5NM>%@#5S157T<HZ(B$,`#E>(U;KY7XC9F\CZ^%S(W+K*\,+
- M(B$,`#E>(U;K7B-6ZWZWPD\B(0``R2$,`#E>(U;K7B-60DLA#``Y7B-6ZUXC
- M5NM^M\J<(B$,`#E>(U;K7B-6ZUX6`-7-%5?1PIPB(0P`.5XC5NOE?B-F;R/K
- MX7,C<NLKPUPB(0``Y2$.`#E>(U;KY7XC9F\CZ^%S(W+K*]%S8&G)S60H```A
- M+@#E(0X`.5XC5M7-[E;1T<G-9"CT_R'S=T1-(1@`.5XC5NLC(UXC5M7=X=WE
- MS;HBT>7]X=WEX?WET>O-%RK*&"/=Y>$CY=WA*UX6`-5@:2-$32O1<\/T(B$`
- M`.M@:7,A\W?E(<HEY<U@%-'1$00`&5XC5B$.`#ES(W(AS"7ES8$+T>LA"@`Y
- M<R-R(0H`&5X6`"$$`,U3*,)>(R$``,DA"@`Y7B-6(00`&5XC5B$(`#ES(W+#
- MB",A"``Y7B-6ZUXC5B$(`#ES(W(A"``Y?B.VRL8E(0@`.5XC5NLC(UXC5B$&
- M`#ES(W+#NR,A!@`Y7B-6ZUXC5B$&`#ES(W(A!@`Y?B.VRL,E(08`.5XC5NLC
- M(UXC5NLC(UXC5B$$`#ES(W(A!``Y7B-6U<U*5M'E_>7-2E;1T1DC$0`$Z\W"
- M*,H')"'6)>7-]AW1(?-W1$TA!``Y7B-6U=WAW>7A(^7=X2M>%@#58&DC1$TK
- MT7-ZL\HR),,6)&!I*T1-(_WEX>7=X=WEX2/EW>$K7A8`U6!I(T1-*]%S>K/*
- M6B3#/B0A\W?ES8$+T>LA"@`Y<R-R(0H`.5XC5B$*`!E>%@`A!`#-4RC*P"4A
- M\W=$32$.`#E>(U;5W>$A!``Y7B-6U<U*5M'E(1``.5XC5M7-2E;1T1DC$0`$
- MZ\W"*,J^)"'K)>7-]AW1W>7A(^7=X2M>%@#58&DC1$TKT7-ZL\K:),.^)&!I
- M*T1-(R$$`#E>(U;5W>'=Y>$CY=WA*UX6`-5@:2-$32O1<WJSR@8EP^HD(?-W
- MY<V!"]'K(0P`.7,C<B$,`#E>(U8A!@`9S:A7S1E8PDPE(0P`.5XC5B$&`!GE
- M(0X`.5XC5NLC(UXC5M7--%O1X<V[5R$,`#E>(U8A!@`9S:A7S1E8RL`E(0``
- MY2$.`#E>(U;5S7H,T='K(08`.7,C<B$*`#E>(U8A!``97B-6(00`&5XC5M4A
- M"``Y7B-6U2$<`#E>(U;5S28.T='1(0P`.5XC5NLC(UXC5M4A`B;ES6`4T=$A
- M`0#)PZDCPW8C(0``R2H`+G-U9F9I>&5S`%-U9F9I>"!R=6QE('1O;R!L;VYG
- M`$EM<&QI8VET(&YA;64@=&]O(&QO;F<`/`#-9"CZ_R&T)^4AL"?ES6`4T=$A
- MP"?E(;DGY<U@%-'1(<@GY2'!)^7-8!31T2$``.4ARR?ES04-T='K(0@`.7,C
- M<B'F)^7-@0O1ZR$&`#ES(W(A"``Y7B-6U2$``.4A"@`Y7B-6U<TF#M'1T2'O
- M)^4AZR?ES6`4T=$A_2?E(?0GY<U@%-'1(0XHY2$%*.7-8!31T2$``.4A$2CE
- MS04-T='K(0@`.7,C<B$P*.7-@0O1ZR$&`#ES(W(A"``Y7B-6U2$``.4A"@`Y
- M7B-6U<TF#M'1T2$Y*.7-@0O1ZR$&`#ES(W(A``#E(0@`.5XC5M7->@S1T>LA
- M!``Y<R-R(3XHY<V!"]'K(08`.7,C<B$$`#E>(U;5(0@`.5XC5M7->@S1T>LA
- M!``Y<R-R(4,HY<V!"]'K(08`.7,C<B$$`#E>(U;5(0@`.5XC5M7->@S1T>LA
- M!``Y<R-R(48HY<V!"]'K(08`.7,C<B$$`#E>(U;5(0@`.5XC5M7->@S1T>LA
- M!``Y<R-R(4DHY<V!"]'K(08`.7,C<B$``.4A!@`Y7B-6U2$*`#E>(U;5S28.
- MT='1R6-C8P!C8RUC`&-F;&%G<P``8W=H:6-H`"0J`"0H8V-C*2`D*&-F;&%G
- M<RD@)"AC=VAI8V@I`"YC+F\`87-M`')M86,`87-M9FQA9W,`)"106B!36@!A
- M<VUW:&EC:``D*@`D*&%S;2D@)"AA<VUW:&EC:"D@)"AA<VUF;&%G<RD`+F%S
- M;2YR96P`+F%S;0`N<F5L`"YC`"YO`"YS=69F:7AE<P!\HF=]HV^TR7PO9WTO
- M;[3)Z>'=Y?WEQ5XC5B-$32$``#GK.?G58&G-8RCKX?G!_>'=X>M\M<EZK#+_
- M<,T(*>LZ_W"W^G,I?;3)S2$IZWVTR7V3PJTH?)+*O"@A``"OR7V3PKPH?)+*
- MK2@A`0!]M,GK?*KZU2A]DWR:/SX`S@!O)@#)>@?F`6\F`,GK?*KZ[RA]DWR:
- M/@#.`&\F`,E\!^8!;R8`R7HR_W#-""DZ_W"W^G,I?+7)?+?R$RDO9WTO;R-Z
- MM_(A*2]7>R]?$\,A*<5$32$``#X0,OYP*>LIZ](T*2-]D6]\F&?23"D).OYP
- M/3+^<,(L*<%]M,D3.OYP/3+^<,(L*<%]M,G%1$TA```^$"GK*>O2:RD)/<)C
- M*<%]M,E]+V]\+V<C?;3)?+7*O"C#K2A\LF=]LV^TR>M[YA]?RK0I?+3R+"I\
- M-Q]G?1]O'<*:*;3)ZWOF'U_*M"DI'<*O*7VTR>M]DV]\FF>UR>OAQ4XC1B/K
- M">M.(T8C>KC:V"E[N=+<*2,C&1E>(U;KP>GKX<5"2UXC5AMZM_H"*B-YOLK\
- M*2,C(\/J*2-XOL+W*2-^(V9OP>GK?9-\FCX`/\X`;R8`R>M]DWR:/@#.`&\F
- M`,GK>^8?7\JT*7RW'V=]'V\=PBPJM,E\JF=]JV^TR>VPR=$A`@`YW>7]Y<75
- M$0!Q!@9^$B,3!<)4*B%A*N/IP?WAW>%\M<DWR<UD*```(>1U(@9Q(0X`.>4A
- M#@`Y7B-6U2&V*N7-+S/1T=')S60H```A#``Y7B-6ZR(&<2$0`#GE(1``.5XC
- M5M4AMBKES2\ST='1R<UD*```*@9QY2$.`#E>(U;5S?4MT=')S60H```AV75$
- M36!I$08`&7ZWROLJ8&D1"P`91$T14G;KS0DJRO@J(0``R</7*B$.`#E>(U;K
- M(UX6`"$K`,VC*.7=X2$.`#E>(U;K7A8`Z\/S*]WEX7RURBTK(0(`PS`K(0``
- MY2$.`#E>(U;5S5U)T='K(0<`"7,A___-HRC*42LA``#)PP8LW>7A?+7*8BLA
- M`@##92LA`0`1``/-A2GE(0X`.5XC5M7-74G1T>LA!P`)<R'__\VC*,J,*R$`
- M`,G#!BS=Y>%\M<J=*R$"`,.@*R$!`!$``<V%*>4A#@`Y7B-6U<U=2='1ZR$'
- M``ES(?__S:,HRL<K(0``R2$"`.7-H5<`````S<Y7(0<`"5X6`-7-YE+K(0@`
- M.?G#!BPA^O\BS7<A``#)S>(I`P!R`!\K=P!4*V$`CROI*R$!`.LA!@`)<R$`
- M!.LA"0`)<R-R(0``ZV!I<R-R(0(`"7,C<B$$``ES(W)@:<G-9"@``"$,`#E>
- M(U9"2R'9=>7-*RW1Y=WA$?__S;(HRG$LW>7A$0H`S;(HRG$LW>7AY6!I(T1-
- M*]%SPT(L(0``ZV!I<]WEX1'__\VC*,J9+&!IZR$,`#E^(V9OS:,HRIDL(0``
- MR2$,`#E>(U;KR<UD*```(0P`.5XC5M7=X2$.`#GE?B-F;ROKX7,C<B$``,W>
- M*,K[+"$0`#E>(U;5S2LMT41-$?__S;(HROLL8&GEW>7A(^7=X2O1<V!I$0H`
- MS:,HPOLLP[$L(0``W74`8&D1___-HRC*(BW=Y>'K(0P`.7XC9F_-HRC*(BTA
- M``#)(0P`.5XC5NO)S60H```A#``Y3B-&Q<V)+M$1?P#-4RCEW>'#7"U@:>5^
- M(V9O*^OA<R-R(?__R<,W+<WB*0,`&@!(+0T`62T``%DM;RW=Y>')S60H```A
- M#``Y3B-&8&E^M\JI+2'D=>5@:2-$32M>%@#5S?4MT=$1___-HRC*IBTA___)
- MPW\M(>1UY2$*`.7-]2W1T<G-9"@``"$,`#E.(T9@:7ZWRO$M(0X`.5XC5M5@
- M:2-$32M>%@#5S?4MT=$1___-HRC*[BTA___)P\,M(0``R<UD*```(0P`.4XC
- M1B$.`#E>(U;5W>$A?P!06<U3*$1-8&D1"@#-HRC*."[=Y2$-`.7-S2_1T1'_
- M_\VC*,HX+B'__\G=Y<7-S2_1T<G-9"@``"$,`#E>(U;5S8DNT41-$?__S:,H
- MPG4N(0P`.5XC5M7-B2[1Y=WA$?__S:,HRGDN(?__R=WEX1$(`.O-IRE06<V%
- M*<G-9"@``"$,`#E.(T8A`@`)7B-6U6!I7B-6X<T)*LI-+R$&``E>%@`A"`#-
- M4RC*O2XA___)(?O_Y6!I$08`&='E;B8`S5,HZ^%S8&D1!``9?B.VPN,NQ<U*
- M,M$A"0`)7B-6U2$$``E>(U;5(0<`"5X6`-7-V$S1T='EW>$1``#KS<,HRC4O
- MW>7A?+7"'"\A"`##'R\A$`#E8&D1!@`9T>5N)@#-A2GKX7,A___)(00`"5XC
- M5F!I<R-RW>7A&>LA`@`)<R-R8&GE?B-F;R/KX7,C<NLK7A8`(?\`S5,HR<UD
- M*```(>]UY2$.`#E>(U;5S<TOT=')S60H```A#``Y3B-&(0X`.5XC5M7%S<TO
- MT=$1``#KS=THRJ4O(?__R2$.`#E>(U;58&D1"`#KS20JY<W-+]'1$0``Z\W=
- M*,K*+R'__\E@:<G-9"@``"$.`#E.(T8A`@`)7B-6U6!I7B-6X<T)*LH","$,
- M`#E>(U8A_P#-4RCEQ<T#,='1R2$,`#E>(U;58&GE?B-F;R/KX7,C<NLKT7,A
- M_P#-4RC)S60H```A___E(0X`.5XC5M7-`S'1T<G-9"@``"'9=41-8&D14G;K
- MS1<JRF,P8&D1"P`91$T1]?\9Y<UD,-'#0S#)S60H_O\A#@`Y3B-&(0``ZR$$
- M`#ES(W)@:1$&`!E^M\KQ,"$&``E>%@`A!`#-4RC*J#`A___EQ<T#,='1ZR$$
- M`#ES(W(A!P`)7A8`U<W)2M'K(00`.>5^(V9OS84IZ^%S(W(A!@`)7A8`(0(`
- MS5,HRO$P*EIVY2$$``E>(U;KT7,C<B$$``E>(U;K(EIV(0``ZR$&``ES(00`
- M.5XC5NO)S60H```A#``Y3B-&(08`"5X6`"$$`,U3*,IM,2$$``E>(U;58&E>
- M(U;AS;<IY=WAW>4A!``)7B-6U2$'``E>%@#5S110T='1$?__S:,HRFTQ(1``
- MY6!I$08`&='E;B8`S84IZ^%S(?__R2$.`#E>(U8A___-HRC*IC$A^__E8&D1
- M!@`9T>5N)@#-4RCKX7,A``#K8&ES(W(A`@`)<R-R(0``R6!I$00`&7XCML*W
- M,<7-2C+1(0D`"5XC5B$!`,VC*,KP,2$!`.4A$``YY2$'``E>%@#5S110T='1
- M$?__S:,HPE0Q(0X`.5XC5NO)(00`"5XC5F!I<R-R(0D`"5XC5M4A!``)7B-6
- MX1GK(0(`"7,C<B$$`.5@:1$&`!G1Y6XF`,V%*>OA<R$.`#E>(U;58&GE?B-F
- M;R/KX7,C<NLKT7,A_P#-4RC)S60H_O\A#@`Y3B-&(0D`"5XC5B$!`,VC*,IU
- M,F!I$0@`&>LA!``)<R-RR2I:=GRURI4R*EIVZR$$`#ES(W(J6G9>(U;K(EIV
- MP[PR(0D`"5XC5M7-E$;1ZR$$`#ES(W)ZL\*\,B$!`.LA"0`)<R-RPV8R(0(`
- MY6!I$08`&='E;B8`S84IZ^%S(00`.5XC5B$$``ES(W+)S60H```A#``Y7B-6
- MZR((<2$0`#GE(1``.5XC5M4A$3/ES2\ST='1(0``Y2H(<=%SR<UD*```(0P`
- M.5XC5M4J"'$C(@AQ*]%S(?\`S5,HR<UD*+[_(4X`.4XC1B%0`#E>(U;5W>'=
- MY>$CY=WA*UX6`-7]X7JSRD$X_>7A$24`S:,HRC8X(0``ZR$:`#ES(0$`ZR%$
- M`#ES(W(A(`#K(4(`.7,C<B'_?^LA0``Y<R-RW6X`)@#E_>$1+0#-HRC*N#,A
- M``#K(40`.7,C<MWEX2/EW>$K7A8`U?WA_>7A$3``S:,HRL\S(3``ZR%"`#ES
- M(W(A``#K(3X`.7,C<MWEX2/EW>$K7A8`U?WA(3``S<(HRAXT_>7A$3D`Z\W#
- M*,H>-"$^`#E>(U8A"@#-6RG]Y=$9$=#_&>LA/@`Y<R-RP]HS_>7A$2X`S:,H
- MRGDT(0``ZR%``#ES(W+=Y>$CY=WA*UX6`-7]X2$P`,W"*,IY-/WEX1$Y`.O-
- MPRC*>30A0``Y7B-6(0H`S5LI_>71&1'0_QGK(4``.7,C<L,U-/WEX1%L`,VC
- M*,JY--WEX2/EW>$K7A8`U?WA(3H`.>4A5``YY7XC9F\1!``9Z^%S(W+K$?S_
- M&<VH5^'-NU?#6#7]Y>$19`#-HRC*ZS0A.@`YY2%4`#GE?B-F;R,CZ^%S(W+K
- M*RM>(U;KS1A;X<V[5\-8-?WEX1%E`,VC*,(/-?WEX1%F`,VC*,(/-?WEX1%G
- M`,VC*,HU-2$$`#GE(50`.>5^(V9O$0@`&>OA<R-RZQ'X_QG-,UOAS3-;PU@U
- M(3H`.>4A5``YY7XC9F\C(^OA<R-RZRLK7B-6Z\T*6^'-NU?]Y>'#`C<A&@`Y
- MY2$(`.4A/@`YS:A7S<Y7S:0XZR$(`#GY(30`.7,C<L,I-R$Z`#G-J%?-DU<`
- M````S>!:RM<U(1H`.>4A"@#E(3X`.<VH5\T)6,W.5\U"..LA"``Y^2$T`#ES
- M(W(A+0#E(38`.>5^(V9O*^OA<R-RZ]%SP_HU(1H`.>4A"@#E(3X`.<VH5\W.
- M5\U"..LA"``Y^2$T`#ES(W+#*3<A&@`YY2$*`.4A/@`YS:A7S<Y7S:0XZR$(
- M`#GY(30`.7,C<L,I-R$:`#GE(1``Y2$^`#G-J%?-SE?-I#CK(0@`.?DA-``Y
- M<R-RPRDW(3H`.<VH5\TK6^LA-``Y<R-RU<U*5M'K(3@`.7,C<L-!-_WEX1%E
- M`,VC*,I]-B$``,.`-B$!`.4A0@`Y7B-6(?]_S:,HRI<V(08`PY\V(4(`.5XC
- M5NOE(1``.>4A"@`YS3-;S3-;S3-;ZR$.`#GY(0P`.>LA-``Y<R-RU<U*5M'K
- M(3@`.7,C<B'(`.LA0``Y<R-RPT$W(3H`.<VH5\TK6^7]X?WEX>4A&P`YZR$V
- M`#ES(W+KT7/#*3?-XBD(`&\`7C5D`(0U=0#]-7@`(S9S`$DV90!K-F8`:S9C
- M`-\V[#8A&@`YZR$T`#E^(V9OS;<IZR$X`#ES(W(A.``Y7B-6(4``.7XC9F_-
- MWBC*9#<A0``Y7B-6(3@`.7,C<B%$`#E^([;*GS<A/@`YY7XC9F\KZ^%S(W+K
- M(^LA.``Y?B-F;\W>*,J?-R%"`#E>(U;58&G-8RC1PVXW(0``ZR$V`#ES(W+#
- MO#<A-@`YY7XC9F\CZ^%S(W(A-``Y7B-6ZWZWROPW(38`.5XC5B%``#E^(V9O
- MS=THROPW(30`.>5^(V9O(^OA<R-RZRM>%@#58&G-8RC1PZTW(40`.7XCML(S
- M."$^`#GE?B-F;ROKX7,C<NLCZR$X`#E^(V9OS=XHRC,X(2``Y6!IS6,HT<,&
- M.,,^./WE8&G-8RC1PT4SR<UD*```(1``.4XC1B$2`#E>(U;5W>%@:<T86\W.
- M5R$0`#G-J%?-YE?-CEG-*UL1"G$97A8`U=WEX2OEW>'1<R$,`#GE8&G-&%O-
- M^E?AY<VH5\U46>'-NU?-&5C"6#C=Y>')S60H```A$``Y3B-&(1(`.5XC5M7=
- MX2$,`#G-J%?-DU<`````S>!:REHY(0P`.<VH5\TK6Q$!`,U3*.7]X2$,`#GE
- M(0X`.<VH5\V35P$```#-"UG-DU?___]_S9!8X<V[5V!I$0$`Z\V-*<T86\W.
- M5R$0`#G-J%?-YE?-CEG-*ULI_>71&1$*<1E>%@#5W>7A*^7=X=%S(0P`.>5@
- M:1$!`.O-C2G-&%O-^E?AY<VH5\U46>'-NU?=Y<4A$``YS:A7S<Y7S4(XZR$(
- M`#GYZ\DJ!@#YS6\Z`0``S04`PWDYS40JS8TYZ\G-1"HJ`'%$32H"<>O-!0#K
- M;R8`R<U$*LVK.6\F`,G-1"HJ`''K*@$`*RLK&1D9ZRH"<41-*@1QZ^G%(00`
- M.4XC1B->(U9K8C8`(SX+-B`C/<+6.3X$-@`C/<+?.>L#"OXZ"SX`PA(Z"N9_
- M_D':3#K^6](#.M9`PP\Z_F':3#K^>]),.M9@=P,#(QX('`H#_B[*+3JWRD8Z
- M'<H5.LU3.G<CPQ8Z'7N%;WS.`&<>`PH#M\I&.LU3.G<C'<(W.B$``*_!R2'_
- M_WRWP<G^8=C^>]#6(,DD4$E012Y)3@`D4$E012Y/550`S60H```A?P#E(8$`
- MY2$;<N7-L%71T=$A``#E.H``;R8`$7\`S5,H$1MR&=%S(0``?3*``"&8/2(;
- M<2$;<N7=X2$!`"*;<BJ;<A&``.O-W2C*A3W=;@`F`!$@`,VC*,+>.MUN`"8`
- M$0D`S:,HRN@ZW>7A(^7=X</".MUN`"8`?+7"]3K#A3W=;@`F`!%\`,VC*,HA
- M.R$!`"*=<MWEX2/EW>$BGW(J7G;E_>$A`0!$3</J.]UN`"8`$3X`S:,HRC<[
- M(0$`1$W#2CO=;@`F`!$\`,VC*,IQ/"$``$1-W>7A(^7=X5X6`"$@`,VC*,)K
- M.]UN`"8`$0D`S:,HRFX[PTH[W>7AY?WAW>7A(^7=X7ZWRK`[W6X`)@`1(`#-
- MHRC"G#O=;@`F`!$)`,VC*,JM.R$``.7=Y>$CY=WA*]%SP[`[PW0[>+'"ZCO]
- MY<UZ1='*ZCLA`0#E*IMR*1$;<1GE_>7-(4+1T=$1`0#-HRC*ZCLJFW(I$1MQ
- M&5XC5M7]X<7-R4K1>+'*+3PAM@'E_>7-/4G1T41-8&DI*2D1,7<97B-6(:Q,
- MS:,HRBH\(0`$Y6!I$0L`S5LI$>)U&=%S(W+#.CPA``#E_>7-74G1T41-8&D1
- M___-HRC*8SPAF3WES=$_T?WES=$_T2&\/>7-T3_1(0H`Y<V_/=$JG7)\M<IN
- M/,.%/<."/=UN`"8`$2(`S:,HRM0\W>7A(^7=X>4JFW(C(IMR*RD1&W$9T7,C
- M<MWEX7ZWRKD\W6X`)@`1(@#-LBC*N3S=Y>$CY=WA*\.8/-UN`"8`?+7*T3PA
- M``#EW>7A(^7=X2O1<\."/=UN`"8`$3(`S:,HR@`]W6X!)@`1/@#-HRC*`#W=
- MY>$CY=WA*R$"`$1-PTH[W>7->D71RC$](8``ZRJ;<LVW*2OE*IMR*1$;<1GE
- MW>7-(4+1T='K*IMR&2*;<L-&/=WEX>4JFW(C(IMR*RD1&W$9T7,C<MWEX2/E
- MW>%^M\J"/=UN`"8`$2``S:,HPFX]W6X`)@`1"0#-HRC*?STA``#EW>7A(^7=
- MX2O1<\."/<-&/<.U.B$;<>4JFW+ES>X7T='ES;\]T<D`0V%N)W0@;W!E;B!F
- M:6QE(&9O<B!R961I<F5C=&EO;CH@/``^"@#-9"@``,TY,"I<=N7-`E71(0P`
- M.7XCMLKA/2&I/N7-`E71*IUR?+7*I3XJ7';E*EYVY<VJ5-'1*I]R7A8`(2``
- MS:,HPA0^*I]R7A8`(0D`S:,HRA\^*I]R(R*?<BO#]CTJGW)$36!I?K?*4#Y@
- M:5X6`"$@`,VR*,I0/F!I7A8`(0D`S;(HRE`^8&DC1$TKPR0^8&E^M\IC/B$`
- M`.5@:2-$32O1<R$``.7%*EQVY2&S/N4JGW+ES?`^ZR$*`#GY(;4^Y<W1/]$J
- MGW+ES=$_T2'9/N7-T3_1(=X^Y<T"5=$AZ#[ES0)5T<UY.<E!.B0D)"Y354(`
- M/`!#;W5L9&XG="!O<&5N(&9I;&4@870@96YD(&]F('!I<&4Z(``N0T]-`$$Z
- M)"0D+E-50@`D)"0N4U5"`,UD*```(0P`.5XC5M4A@`#ES256T=$AS#_E(8``
- MY<V05M'1(5P`Y2&``.7-'4#1T2%<`.4A#P#ES8HYT=$1_P#-4R@1_P#-HRC*
- M0#\A``#)(8$`Y=WA(0X`.>7]X<-:/_WEX2,CY?WA*RO]Y>%^([;*MS_=Y>$1
- MSP#KS1<JRK<__6X`_68!1$W#CS]@:2-$32M>%@#5W>7A(^7=X2O1<V!I?K?*
- MIC_=Y>$1SP#KS1<JRJ8_PWL_(2``Y=WEX2/EW>$KT7/#4#\A``#==0#=Y>$1
- M@/\9?3*``,WT1<DN0T]-`,UD*```(0P`.5XC5NM^M\H$0"$,`#GE?B-F;R/K
- MX7,C<NLK7A8`U2$"`.7-BCG1T</6/\G-9"@``"']_R+-=R'__\G-9"@``"$`
- M`,G-9"@``"$D`.7=X2$.`#E>(U9"2\-`0"$``.5@:2-$32O1<]WEX2OEW>$1
- M``#KS<(HRE1`PS1`(0P`.5XC5NM^M\JH0"$,`#E>(U;K(UX6`"$Z`,VC*,JH
- M0"$,`#E>(U;K7A8`U<UG5]$1P/\9Y2$0`#E>(U;KT7,A`@#K(0P`.>5^(V9O
- M&>OA<R-R(0P`.5XC5M4A$``Y7B-6U<V^0-'1R<UD*/__(0T`.>5^(V9O(^OA
- M<R-R0DLA"P#K(00`.7,A!``YY6XF`"OKX7,A``#-PBC*%$$A#P`Y7B-6ZWZW
- MR@5!(2``PPA!(3\`Y6!I(T1-*]%SP]U`(0T`.5XC5B$(`!E$32$-`#E>(U8A
- M"@`9Y=WA(0\`.5XC5NM^M\H@0B$/`#E>(U;K7A8`(2``S;(HRB!"(0\`.5XC
- M5NM>%@`A*@#-HRC*S$$A#0`Y7B-68&G-%RK*GT$A#0`Y7B-68&G-%RK*G$$A
- M/P#E(0\`.>5^(V9O(^OA<R-RZRO1<\-S0</)02$-`#E>(U;=Y>'-"BK*R4$A
- M/P#E(0\`.>5^(V9O(^OA<R-RZRO1<\.?0<,,0B$/`#E>(U;K7A8`(2X`S:,H
- MRNU!8&GK(0T`.7,C<L,,0B$/`#E>(U;K7A8`U2$/`#GE?B-F;R/KX7,C<NLK
- MT7,A#P`YY7XC9F\CZ^%S(W+K*\,O0<G-9"CZ_R$``.LA!``Y<R-R(1(`.5XC
- M5B$&`#ES(W(A7`#E(10`.5XC5M7-'4#1T2%<`.4A$0#ES8HYT=$1_P#-4RCK
- M(0@`.7,C<B'_`,VR*,K30R$/`.7-E$;1ZR$2`#ES(W)"2WJSPIM"(<1$Y<W1
- M/]$A`0#ES;\]T2$(`#E>(U;K*2DI*2D1@0`9Y=WA(08`.5XC5NLC7A8`(3H`
- MS:,HRN1"(08`.5XC5NM>%@#58&DC1$TKT7,A.@#E8&DC1$TKT7,A`0#E_>'#
- M]4+]Y>$CY?WA*_WEX1$+`.O-PRC*9$/=;@`F`!%_`,U3*!$@`,VR*,HM0]WE
- MX2/EW>$K7A8`U6!I(T1-*]%SPS5#W>7A(^7=X2O]Y>$1"`#-HRC*84/=;@`F
- M`!%_`,U3*!$@`,VC*,)D0R$N`.5@:2-$32O1<\/M0B$``.M@:7,A$@`Y7B-6
- MU2$&`#GE?B-F;R/KX7,C<NLK*>LA%@`Y?B-F;QG1<R-R(5P`Y2$2`.7-BCG1
- MT1'_`,U3*.LA"``Y<R-R(0@`.5XC5B'_`,VR*,K30R$$`#E>(U8A%@`Y?B-F
- M;\W=*,)T0B$``.LA"``Y<R-RP_)#(0@`.>5^(V9O(^OA<R-RZRLA"``Y7B-6
- M(00`.7XC9F_-%RK*NT0A"``Y7B-6U?WAPQQ$_>7A(^7]X2O]Y>'K(00`.7XC
- M9F_-W2C*N$3]Y>$IZR$4`#E^(V9O&5XC5M4A"@`Y7B-6ZRGK(18`.7XC9F\9
- M7B-6U<WI1-'1RK5$(0@`.5XC5NLIZR$4`#E^(V9O&5XC5D)+_>7A*>LA%``Y
- M?B-F;QE>(U;5(0H`.5XC5NLIZR$6`#E^(V9O&=%S(W)@:>7]Y>$IZR$6`#E^
- M(V9O&=%S(W+#%$3#X4,A!``Y7B-6Z\E.;W0@96YO=6=H(&UE;6]R>2!T;R!E
- M>'!A;F0@=VEL9&-A<F0`S60H```A``!$36!I$0\`Z\W=*,IY12$.`#E>(U;K
- M7A8`U2$.`#E>(U;K7A8`X<W>*,HA12$!`,DA#@`Y7B-6ZUX6`-4A#@`Y7B-6
- MZUX6`.'-W2C*0T4A``#)(0P`.>5^(V9O(^OA<R-RZRLA#@`YY7XC9F\CZ^%S
- M(W+K*R$,`#E>(U;K?K?"=D4A``#)P_-$R<UD*```(0P`.>5^(V9O(^OA<R-R
- MZRM>%@!"2V!I$2H`S:,HPJM%8&D1/P#-HRC*KT4A`0#)>+'*OT5@:1$@`,VR
- M*,)_12$``,D1``'5Q0X:S04`T=4.%,T%`,'1M\KX`%!9#A#-!0`.&A&``,T%
- M`,,``2&``!GKP](`$<-%(<\`!C$:=Q,C!<+\10%<`!$``2H&`/G#SP#-9"@`
- M`"$,`#E>(U;5S91&T<G-9"C\_R$0`#E>(U8A$@`Y?B-F;\U;*>LA!``Y<R-R
- M(00`.5XC5M7-E$;1ZR$&`#ES(W)ZL\)?1B$``,DA``#E(08`.5XC5M4A"@`Y
- M7B-6U<W05='1T2$&`#E>(U;KR<UD*```(0P`.5XC5M7-LT?1R<UD*```(0P`
- M.5XC5NLC(R,1`@#KS20J(^7]X2JE<N7=X7RUPLQ&(:%RY=WA(J5R(J%R(0$`
- M(J-RW6X`W68!1$W#XT9@:>7=X6!I7B-60DLA`@`)7B-6_>7AS0DJRDU'(0(`
- M"5XC5OWEX<VC*,H11V!I7B-6W7,`W7(!PT!'_>5@:2,CT>5^(V9OZ\VW*>OA
- M<R-R(0(`"5XC5NLI*5!9&41-_>7AZR$"``ES(W+=Y>$BI7)@:1$$`!G)8&GK
- M*J5RS:,HRFI'_>7-;D?11$U\M<)J1R$``,G#UT;)S60H```A#``Y7B-6ZRDI
- MY<W02-%$31'__\VC*,J11R$``,E@:>7=X2$,`#E>(U;=<P+=<@/=Y>$1!``9
- MY<VS1]$JI7+)S60H```A#``Y7B-6(?S_&41-*J5RY=WAP]='W6X`W68!Y=WA
- M8&G=Y='KS1@JRO1'W6X`W68!Y6!IT>O-%RK")DC=;@#=9@'EW>7AT>O-"2K*
- M(TA@:=WET>O-&"K")DC=;@#=9@'E8&G1Z\T7*L(F2,/.1]UN`-UF`>4A`@`)
- M7B-6ZRDI4%D9T<VC*,IN2-UN`-UF`2,C7B-6U6!I(R/1Y7XC9F\9Z^%S(W+=
- M;@#=9@%>(U9@:7,C<L-Z2-UN`-UF`>M@:7,C<MUN`MUF`RDIW>71&5!9S:,H
- MRK5((0(`"5XC5M7=Y>$C(]'E?B-F;QGKX7,C<F!I7B-6W7,`W7(!P[U(8&G=
- M=0#==`'=Y>$BI7+)(00`S=-((WRUR"O)(0(`.5XC5BJG<AGKVO5(*JER.7V3
- M?)K:]4@JIW+K(J=RZWRUR:\]9V_)(0(`.7XC9B]O?"]G(R*I<LEC;VXZ`$-/
- M3CH`;'-T.@!,4U0Z`'!R;CH`4%)..@!P=6XZ`%!53CH`<F1R.@!21%(Z`,UD
- M*```(0X`.5XC5M4A`0/E(1``.5XC5M7-74G1T=')S60H_/\A+7?EW>$A``#K
- M(08`.7,C<L./2=WEX1$(`!GEW>$A!@`YY7XC9F\CZ^%S(W(A!@`Y7B-6(0L`
- MS=THRK%)W6X$W68%$05`S:,HPKM)PW9)(?C_(LUW(?__R2&%=T1-P\M)8&D1
- M!@`91$U@:7XCMLKL22$0`#E>(U;58&E>(U;5S>Q5T='*[$G#PTDA`@`)7B-6
- MU?WA(1(`.5XC5B$#`,U3*"/K(00`.7,C<B$$`#E>(U8A`0#-4RC*,TK];@`F
- M`-UU`'RUPC-*(?;_(LUW(?__R2$$`#E>(U8A`@#-4RC*6DK];@$F`-UU`7RU
- MPEI*(?;_(LUW(?__R2$$``E>(U;=<P;=<@?];@(F`-UU`OUN`R8`W74#(<],
- MW74$W70%Q=WE(1@`.5XC5M4A&``Y7B-6U2$8`#E>(U;5_6X$_68%S6,HZR$*
- M`#GY(0``S=THRL!*(05`W74$W70%(?__R2$&`#E>(U;KR<UD*```(0P`.5XC
- M5B$``,W=*,+N2B$,`#E>(U8A"P#-WBC*^$HA_?\BS7<A___)(0P`.5XC5NLI
- M*2D1+7<91$TA!@`)7B-6U2$$``E>(U;KS6,HT>LA#``Y<R-R(0``ZR$#``ES
- M(0(`"7,A`0`)<V!I<R$%0.LA!``)<R-R(0P`.5XC5NO)S60H```AJW)$3<-D
- M2V!I$28`&41-8&D1VW/KS1<JRG]+(24`"5X6`'JSRHE+PUQ+(?G_(LUW(?__
- MR<4A#@`Y7B-6U<W#.='1RJ1+(?K_(LUW(?__R2$.`#E>(U8A``+-4RC*ODO%
- M(1,`Y<V*.='1Q2$/`.7-BCG1T1'_`,VC*,H!3"$.`#E>(U8A``/-4RC*]$O%
- M(18`Y<V*.='1$?\`S:,HROY+(?__(LUW(?__R<,A3"$.`#E>(U8A``7-4R@1
- M``7-HRC*(4PA^_\BS7<A___)(0``ZR$A``ES(W(A(P`)<R$D``ES8&GE(10`
- M.5XC5B$&`!G1<R-R(0X`.5XC5B$#`,U3*"/K(24`"7,A`@#-4RC*>TPAK$SE
- M(10`.5XC5B$$`!G1<R-RPXY,(9),Y2$4`#E>(U8A!``9T7,C<B$``,G-9"@`
- M`"$``.4A#@`Y7B-6(24`&=%S(0``R<UD*```(0P`.4XC1L4A$`#ES8HYT=$A
- M``#K(24`"7,A``#)S60H```A``#)S60H```A#``Y7B-6(0``S=THPOU,(0P`
- M.5XC5B$+`,W>*,H'32']_R+-=R'__\DA#``Y7B-6ZRDI*1$M=QE$32$0`#E>
- M(U;5(1``.5XC5M4A!@`)7B-6U6!I7A8`ZRD1VW,97B-6Z\UC*-'1T<G-9"C\
- M_R$``$1-(1``.5XC5M7=X=WEX1$D`!E^M\JF3=UN)"8`Y2&``-'KS;<I1$WK
- M(10`.7XC9F_-&"K*CDTA%``Y7B-60DO%(10`.5XC5M7=Y<U=3M'1T<JF32'_
- M_\DA%``Y7B-68&G-MRD1!P#KS20JZR$&`#ES(W)ZL\H+3B$&`#E>(U;5(10`
- M.5XC5F!I&>7=Y<U95-'1T>LA!``Y<R-R>K/*"TXA!@`Y7B-6(00`.7XC9F_-
- MMRD1!P#KS:<I4%D9R2$&`#E>(U8A!P#-IRE061E$36!IZR$4`#E^(V9OS1<J
- MRE1.(10`.5XC5F!IS;<IY2$4`#E>(U9@:1GEW>7-74[1T='*5$Y@:<DA%``Y
- M7B-6Z\G-9"@``"$,`#E.(T8A@`#E(1H`Y<V*.='1Q2$A`.7-BCG1T2+-=WRU
- MRHQ.(?__R2$0`#E>(U;5(20`"5X6`"&``!GE(1(`.5XC5M7-L%71T=$A)``)
- M7A8`(1``.7XC9F\9$7\`S5,HZR$D``ES>K/"X$Y@:1$A`!GE?B-F;R/KX7,C
- M<B$``,G-9"@``#KD<V\F`'RUPFQ/(?\`?3+C<R$``'TRY7-],N1S(>-SY2$*
- M`.7-BCG1T2$*`.4A`@#ES8HYT=$ZY7-O)@`1&@#-HRC*.D\A``!],N1S(0``
- MR2$-`.4ZY'-O)@`C?3+D<Q'C<QDCT7,A"@#E.N1S;R8`(WTRY',1XW,9(]%S
- M(0(`(N5T.N1S;R8`1$WK(1``.7XC9F_-WBC*C$\A$``Y7B-60DO%*N5T$>-S
- M&>4A$@`Y7B-6U<VP5='1T6!IZRKE=!DBY71@:>LZY'-O)@#KS;<I?3+D<V!I
- MR<UD*```(0X`.4XC1B$``.7=X</=3]WEX2/EW>'=Y>'K(1``.7XC9F_-W2C*
- M$%`A#``Y7B-6U<V*.='E8&DC1$TKT7,A&@#-HRC"$%##UD_=Y>')S60H```A
- M#``Y7B-6(0``S=THPCE0(0P`.5XC5B$+`,W>*,I#4"']_R+-=R'__\DA#``Y
- M7B-6ZRDI*1$M=QE$32$0`#E>(U;5(1``.5XC5M4A!@`)7B-6U2$!``E>%@#K
- M*1'G=!E>(U;KS6,HT='1R<UD*/S_(0``1$TA$``Y7B-6U=WAW>7A$20`&7ZW
- MRN10W6XD)@#E(8``T>O-MRE$3>LA%``Y?B-F;\T8*LK,4"$4`#E>(U9"2\4A
- M%``Y7B-6U=WES9M1T='1RN10(?__R2$4`#E>(U9@:<VW*1$'`.O-)"KK(08`
- M.7,C<GJSRDE1(08`.5XC5M4A%``Y7B-68&D9Y=WES6%4T='1ZR$$`#ES(W)Z
- ML\I)42$&`#E>(U8A!``Y?B-F;\VW*1$'`.O-IRE061G)(08`.5XC5B$'`,VG
- M*5!9&41-8&GK(10`.7XC9F_-%RK*DE$A%``Y7B-68&G-MRGE(10`.5XC5F!I
- M&>7=Y<V;4='1T<J246!IR2$4`#E>(U;KR<UD*```(0P`.4XC1B&``.4A&@#E
- MS8HYT='%(2$`Y<V*.='1(LUW$0$`S:,HPM91*LUW$00`S:,HRO%1(0``(LUW
- M(1H`Y2&``.4A@`#ES=!5T='1P_U1*LUW?+7*_5$A___)(1``.5XC5M4A$``Y
- M7B-6U2$D``E>%@`A@``9Y<VP5='1T<4A(@#ES8HYT=$BS7=\M<HU4B'__\DA
- M)``)7A8`(1``.7XC9F\9$7\`S5,HZR$D``ES>K/"9U)@:1$A`!GE?B-F;R/K
- MX7,C<B$``,G-9"C^_R$0`#E.(T8A``#EW>'#AU+=Y>$CY=WAW>7AZR$2`#E^
- M(V9OS=THRN)28&DC1$TK7A8`(00`.7,C<B$$`#E>(U8A"@#-HRC*RE(A#0#E
- M(1``.5XC5M7-BCG1T2$$`#E>(U;5(1``.5XC5M7-BCG1T<.`4MWEX<G-9"@`
- M`"$,`#E>(U8A``#-W2C"(E,A#``Y7B-6(0L`S=XHPB)3(0P`.5XC5NLI*2D1
- M,'<97A8`>K/",%,A_?\BS7?-H5?_____R2$,`#E>(U;K*2DI$3-W&5XC5D)+
- M(1(`.5XC5NO#T5/%(1``Y<V*.='1$?\`S:,HRG!3(?W_(LUWS:%7_____\G%
- M(2,`Y<V*.='1(0``ZR$D``ES(0X`.>4A(0`)7B-6Z\T*6\V35P<```#-W5C-
- MSE<A)``)7A8`Z\T86\WF5\UD6,WZ5^'ES:A7S618X<V[5\/D4R'Z_R+-=\VA
- M5______)S>(I`P`"`$]3`0"#4P``P%/#4R$``.LA(P`)<R$.`#G-J%?-DU<`
- M````S>!:RA]4(0``ZR$A``ES(W(A)``)<R'Z_R+-=\VA5______)(0X`.<VH
- M5\TK6Q%_`,U3*.LA)``)<R$.`#G-J%?-DU<'````S0M9S2M;ZR$A``ES(W(A
- M#@`YS:A7R<U$*@XAPV94S40J#B+%*@)QZR&``!DB`G$.<%`,'%*@!QZ\T%
- M`+?"GU0J`'$1(0`9-,*15",T*@1Q*R($<7VTPF=4P<EO)@`BS7?!*@1QR<UD
- M*,3_(00`.>4A3``Y7B-6U<W#.='1(00`.>4A$P#ES8HYT=$A!``YY2%*`#E>
- M(U;5S<,YT=$A%``YY2%,`#E>(U;5S<,YT=$A!``YY2$7`.7-BCG1T<G-9"C<
- M_R$$`#GE(3(`.5XC5M7-PSG1T2$$`#GE(1,`Y<V*.='1R<UD*```(0P`.4XC
- M1B$``.7]X6!I7A8`(2T`S:,HRE958&DC1$TA`0#E_>'#:55@:5X6`"$K`,VC
- M*,II56!I(T1-(0``Y=WA8&E>%@#5S557T<J;5=WEX1$*`,U;*>5@:2-$32M>
- M%@#A&1'0_QGEW>'#;U7]Y>%\M<JL5=WEX<US*<.O5=WEX<G%(0D`.48K3BM6
- M*UXK?BMN9WBQRLY5&G<3(PO#P57!R<4A!``Y7B-6(TXC1B-NZWBQRNI5<R,+
- MP]]5P<DA`@`YQ0'_?UXC5B-^(V9O>+'*$%8:OL(55K?*$%8C$PO#_%7!(0``
- MR<':'U8A`0!]M,DA__]]M,DA`@`YQ0'_?UXC5M4C?B-F;WBQRD=6?A*WRD=6
- M(Q,+PS96X<')(0(`.7XC9F\1``"OOLI?5A,CPU96ZWVTR2$"`#G%7B-6U2->
- M(U8C3B-&Z]'#_%4A`@`YQ5XC5M75(UXC5B-.(T;KT<,V5L4!_W\A!``Y7B-6
- MU2-^(V9OZWBQRD=6?K?*L58C"\.B5NO#-E8A`@`YQ5XC5M75(UXC5B-.(T;A
- MK\.B5L4A!``Y7B-6(V[K?K?*Y%:[RNI6(\/75B$``*_!R7RUP<G%(00`.5XC
- M5B-NZP$``*^^R@97(P/#_59XL<KD5@LK?KO"!E?#ZE8A`@`Y?OX@RCM7_@G*
- M.U?^"LH[5\-05R$"`#E^_D':4%?^6])05R$!`'VWR2$"`#E^_F':4%?^>]H[
- M5R$``*_)(0(`.7[^,-I05_XZTE!7PSM7(0(`.7[^8=IX5_Y[TGA7UB!O)@"W
- MR2$"`#E^_D':CE?^6]*.5\8@;R8`M\G1(00`&>7KZRI8=L.L5]$A!``9Y>OK
- M*E9V&G<C$QIW(Q,:=R,3&G?)ZRI6=GX2$R-^$A,C?A(3(WX2R>$B[W0J5G81
- M`P`95BM>*]56*U[5*N]TZ>$B[W0J6';1<R-R(]%S(W(J[W3I*EAVZRI6=B)8
- M=NLB5G;)*E9VKQ8$/@">=R,5P@]8R2I6=A8$?K?"VEHC%<(>6,//6J\]P<FO
- M/,')Q2I6=NLJ6'8C(R,3$Q,:M_I-6*[Z+UC#45BN^BM8!@0:OMHK6,(O6"L;
- M!<)36*_!R<4J5G;K*EAVKP8$&HX2(Q,%PF]8P<G%*E9VZRI8=J\&!!J>$B,3
- M!<*%6,')Q2I6=NLJ6'8&!!JF$B,3!<*:6,')Q2I6=NLJ6'8&!!JV$B,3!<*O
- M6,')Q2I6=NLJ6'8&!!JN$B,3!<+$6,')*E9V%@1^+W<C%<+46,DJ6'9^YC_(
- MQ4<J5G9>(U8C?B-F;RGK*>O2^5@C!<+Q6$1-*E9V<R-R(W$C<,')*EAV?N8_
- MR%<J5G8C(R-^M_HP6>4>!+=^'W<K'<(B6>$5PAY9R>4>!#=^'W<K'<(T6>$5
- MPC!9R=4&!'X2(Q,%PD59X4^W\,,,6,4J5G81^W3-0EEY,OET*EAV$0-US4)9
- M.OETJ3+Y=,W!61'[="I6=@8$&G<3(P7"?5G!.OETM_H)6,G%*E9V$?MTS4)9
- M>3+Y="I8=A$#=<U"6<W!61'_="I6=@8$&G<3(P7"L%G!.OETM_H)6,D&!"'_
- M=*]W(P7"QUD^(#+Z="'[=`8(MWZ/=R,%PMA9G^8!3P8$$?]T(0-UMQJ>$A,C
- M!<+M67G>`,((6B'[=#0A^G0UPM)9R2'Z=#7*.EHA^W0&"+=^CW<C!<(56I]/
- M!@01_W0A`W6W&HX2$R,%PBA:><X`P@A:P_Q9!@01_W0A`W6W&HX2$R,%PD-:
- MR<4J6'8&!!$#=7X2(Q,%PE9:*E9V!@01_W1^$B,3!<)F6@8$(?MTKW<C!<)T
- M6CX@,OIT(?MT!@BW?H]W(P7"A5K2L%H&!!'[="$#=;<:CA(3(P7"F5H&!!K.
- M`!+2L%H3!<*D6B'Z=#7"?UHJ5G81^W0&!!IW$R,%PK]:P<G-,UC*VEHA``"O
- MR<TS6,K/6B$!`*\\R<TS6/K:6L//6LTS6/K:6LK:6L//6LTS6/K/6L/:6LTS
- M6/K/6LK/6L/:6NLJ5G9S(W(C-@`C-@#)ZRI6=G,C<B-ZM_(26S;_(S;_R2I6
- M=EXC5NO)R<UD*-+_(2X`.>7-H5<`````X<V[5R$D`#GK(00`.7,C<B$(`#GE
- M(3P`.5XC5M7-PSG1T2$(`#GE(68`Y<V*.='1ZR$&`#ES(W(A!@`Y?B.VPFY<
- M(2X`.>4A!@`Y7B-6ZUXC5B%I"QG-"EO-DU>`40$`S4U:X<V[5R$$`#E>(U;K
- M(R->%@`A!`#-C2D1"@#-6RGE(08`.5XC5NLC(UX6`"$/`,U3*-$9ZR$L`#ES
- M(W(A+@`YY2$N`#E>(U;KS0I;S9-7$`X``,U-6LWZ5^'ES:A7S618X<V[5R$$
- M`#E>(U;K(R,C7A8`(00`S8TI$0H`S5LIY2$&`#E>(U;K(R,C7A8`(0\`S5,H
- MT1GK(2P`.7,C<B$N`#GE(2X`.5XC5NO-"EO-DU<\````S4U:S?I7X>7-J%?-
- M9%CAS;M7(3P`.7XCML*`7"$N`#G-J%?)(3P`.5XC5M4A,``YS:A7X<V[5\G-
- M9"C2_R$N`#GES:%7`````.'-NU<A(``YZR$$`#ES(W(A"``YY2$\`#E>(U;5
- MS<,YT=$A"``YY2%F`.7-BCG1T>LA!@`Y<R-R(08`.7XCML+.72$N`#GE(08`
- M.5XC5NM>(U8A:0L9S0I;S9-7@%$!`,U-6N'-NU<A!``Y7B-6ZR,C7A8`(00`
- MS8TI$0H`S5LIY2$&`#E>(U;K(R->%@`A#P#-4RC1&>LA+``Y<R-R(2X`.>4A
- M+@`Y7B-6Z\T*6\V35Q`.``#-35K-^E?AY<VH5\UD6.'-NU<A!``Y7B-6ZR,C
- M(UX6`"$$`,V-*1$*`,U;*>4A!@`Y7B-6ZR,C(UX6`"$/`,U3*-$9ZR$L`#ES
- M(W(A+@`YY2$N`#E>(U;KS0I;S9-7/````,U-6LWZ5^'ES:A7S618X<V[5R$\
- M`#E^([;"X%TA+@`YS:A7R2$\`#E>(U;5(3``.<VH5^'-NU?)S60H```A#``Y
- M7B-6U<T_7M$A#``Y7B-6(00`&>7-H5<`````X<V[5R$``.4A$``Y7B-6Z]%S
- M(W(A``#E(1``.5XC5NLC(]%S(W+)S60H^/\A!W7E(6D`Y<V*.='1ZR$$`#ES
- M(W(A"``YY2H'=1%I"QG-"EO-DU>`40$`S4U:X<V[5SH)=6\F`!$$`.O-C2D1
- M"@#-6RGE.@EU;R8`$0\`S5,HT1GK(08`.7,C<B$(`#GE(0@`.5XC5NO-"EO-
- MDU<0#@``S4U:S?I7X>7-J%?-9%CAS;M7.@IU;R8`$00`Z\V-*1$*`,U;*>4Z
- M"G5O)@`1#P#-4RC1&>LA!@`Y<R-R(0@`.>4A"``Y7B-6Z\T*6\V35SP```#-
- M35K-^E?AY<VH5\UD6.'-NU<A!``Y7B-6(00`S8TI$0H`S5LIY2$&`#E>(U8A
- M#P#-4RC1&>LA!@`Y<R-R(0@`.>4A"``Y7B-6Z\T*6\WZ5^'ES:A7S618X<V[
- M5R$4`#E^([;">%\A"``YS:A7R2$4`#E>(U;5(0H`.<VH5^'-NU?)S60H```A
- M#``Y7B-6U<VC7]'ES29ET<G-9"CH_R$``.LA!``Y<R-R(0``ZR$&`#ES(W(A
- M$``YY2$&`#E>(U;KS1A;S9-7/````,U-6LW.5R$J`#E>(U;KS:A7S>97S7I8
- MX<V[5R$0`#GES;QBT>7=X=UN#MUF#T1-(9=UZR$8`#ES(W+#*6`A&``YY7XC
- M9F\1"``9Z^%S(W+K$?C_&2$8`#E>(U;K7B-6(0``S<(HREE@(1@`.5XC5NM>
- M(U8A!@`Y?B-F;\VC*,)98,,28"$8`#E>(U;K7B-6(0``S<(HRD]BW6X*W68+
- M$6P'&>LA%``Y<R-R(1@`.5XC5B$$`!E>(U8A%@`Y<R-RPZY@(18`.>5^(V9O
- M$08`&>OA<R-RZQ'Z_QDA%@`Y7B-6ZWXCMLK88"$6`#E>(U;K7B-6(10`.7XC
- M9F_-HRC"V#EV`A%@`Y7B-6ZR,C7B-6U?WA(18`.5XC5B$$`!E>(U8A&@`Y
- M<R-R_>7=Y<U38M'1Y?WA(1H`.5XC5M7=Y<U38M'1ZR$:`#ES(W(A&``Y7B-6
- M(08`&5XC5NO#]F%@:?WET>O-WBC"66%@:?WET<VC*,J+8=UN!-UF!1$"`.O-
- MPBC*BV%@:>LA&@`Y?B-F;\W=*,*/86!IZR$:`#E^(V9OS:,HRHMAW6X$W68%
- M$0$`Z\W=*,*/8=WEX<G#!6)@:?WET>O-WBC"[V%@:?WET<VC*,JY8=UN!-UF
- M!1$"`.O-PBC"[V%@:>LA&@`Y?B-F;\W=*,+O86!IZR$:`#E^(V9OS:,HRNMA
- MW6X$W68%$0(`Z\W=*,+O8=WEX<G#!6+=Y>')S>(I`@`!`#)A``"28?)A(1``
- M.>4A&@`Y7B-6ZR,C7B-6(1`.S5LIS1A;S?I7X>7-J%?-9%CAS;M7(1``.>7-
- MO&+1Y=WAW>7A$1``&>5^(V9O(^OA<R-RZRO=Y>')S60H```A#``Y3B-&(0X`
- M.5XC5M7=X=WEX1$Z`.O-PBC*C6(A"@`)7B-6U<TH9]$1D_X9W>71&>7=X2$,
- M``E>(U;5(0X`"5XC5M7=Y>'1Z\VW*=$9$;P"&1$'`.O-]RCEW>7AT>O-MRG)
- MS60H^/\A"``YY2$6`#E>(U;KS:A7S9-7@%$!`,V.6>'-NU<A!``YY2$6`#E>
- M(U;KS:A7S9-7@%$!`,U46>'-NU<A"``YS:A7S9-7`````,W@6LI'8R$(`#GE
- MS:%7@%$!`,WZ5^'ES:A7S618X<V[5R$$`#GES:%7`0```,WZ5^'ES:A7S7I8
- MX<V[5R''=>7]X2$(`#G-J%?-DU<\````S8Y9S2M;Y?WEX2,CY?WA*RO1<R-R
- M(0@`.<VH5\V35SP```#-5%G-*UOEW>'=Y>$1/`#KS?<HY?WEX2,CY?WA*RO1
- M<R-R(3P`W>71S8DHY=WAW>7AY?WEX2,CY?WA*RO1<R-R(00`.<VH5\V35P0`
- M<`#-9%C-DU<'````S8Y9S2M;(M-U(00`.<VH5\V35P````#-]5K*0V0A1@#E
- MW>'#!&3=Y>$CY=WA*]WES2AGT<T86\W.5R$(`#G-J%?-YE?-]5K*0&0A!``Y
- MY=WES2AGT<T86\WZ5^'ES:A7S7I8X<V[5\/\8\.+9"%&`.7=X<-49-WEX2OE
- MW>$C(00`.<VH5\V35P````#-X%K*BV0A!``YY=WEX2OES2AGT<T86\WZ5^'E
- MS:A7S618X<V[5\-,9-WEX2+1=2$$`#G-J%?-*UM$32+5==WES2AGT1%N`<VC
- M*,JU9"$=`"(G=2$``.7=X</&9-WEX2/EW>$KW>7A*1$E=1E>(U;58&G1Z\W"
- M*,KR9-WEX2D1)7497B-68&GKS;<I1$W#OF0A'``B)W5@:2/E_>7A(R/E_>$K
- M*]%S(W+=Y>'E_>7A(R/E_>$K*]%S(W(A```BUW4AQW7)S60H```A"W5$32'3
- M9N7=X=WEX2/EW>$K7A8`U6!I(T1-*]%S>K/*4F7#-F4A#``Y7B-6(0P`&5XC
- M5B$#`,U;*1'M9AGEW>$A"W5$3=WEX2/EW>$K7A8`U6!I(T1-*]%SW>7A(^7=
- MX2M>%@#58&DC1$TKT7/=Y>$CY=WA*UX6`-5@:2-$32O1<V!I(T1-*R$,`#E>
- M(U8A"``9Y?WA_6X`_68!$0,`S5LI$0-G&>7=X=WEX2/EW>$K7A8`U6!I(T1-
- M*]%SW>7A(^7=X2M>%@#58&DC1$TKT7/=Y>$CY=WA*UX6`-5@:2-$32O1<_WE
- MX2LKY?WA7B-6U<7-16?1T41-_>7A*ROE_>%>(U8A9``9Y<7-16?1T41-_>7A
- M*ROE_>%>(U8A9``9Y<7-16?1T41-_>7A*ROE_>%>(U8A9``9Y<7-16?1T41-
- M(0P`.5XC5B$*`!E>(U8A9`#-PBC*K&8A,@#K(0$`"7,A#``Y7B-6(0H`&5XC
- M5B$P`!D1R`#KS<(HZR$"``ES(0(`4%D91$TA#``Y7B-6(0H`&5XC5B%D`!GE
- MQ<U%9]'11$TA"W7)1&%Y($UO;B`P,"`P,#HP,#HP,"`Q.3`P"@!3=6Y-;VY4
- M=6579614:'5&<FE3870`2F%N1F5B36%R07!R36%Y2G5N2G5L075G4V5P3V-T
- M3F]V1&5C`,UD*```(0P`.5XC5B$$`,WW*,)!9R%N`<DA;0')S60H```A#``Y
- M3B-&8&DC1$TK(0X`.5XC5B$*`,W"*,J+9R$.`#E>(U8A"@#-B2@1"@#KS?<H
- M$3``&>5@:2-$32O1<\.79R$@`.5@:2-$32O1<R$.`#E>(U8A"@#-]R@1,``9
- MY6!I(T1-*]%S8&G)S60H```A#@`Y7B-60DLA)`#EW>'#UV<A``#E8&DC1$TK
- MT7/=Y>$KY=WA(Q$``.O-WBC*[&?#RV<A#@`Y7B-6U2$.`#E>(U;5S<,YT=$A
- M#@`Y7B-6U2$/`.7-BCG1T<HM:"$.`#E>(U;5(18`Y<V*.='1RBUH(?__R2$`
- M`,G-9"@``"$,`#E>(U;5(1``Y<V*.='1R<UD*```(0P`.5XC5M4A$P#ES8HY
- MT=')S60H_O\A$@`Y7B-6(2$`&>LA!``Y<R-R(0X`.5XC5M4A&@#ES8HYT=$A
- M$``Y7B-6U2$&`#E>(U;KT7,C<B$2`#E>(U;5(2(`Y<V*.='1R<UD*/[_(1(`
- M.5XC5B$A`!GK(00`.7,C<B$.`#E>(U;5(1H`Y<V*.='1(1``.5XC5M4A!@`Y
- M7B-6Z]%S(W(A$@`Y7B-6U2$A`.7-BCG1T<D`````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M```````````````````````P,3(S-#4V-S@Y86)C9&5F````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M`````````````````````````````````/-_`/P`````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````!4!&3>1.P4\`````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M``````````````````````5`A%!K4FM2````````````````````````````
- M````````````````````````````````````````````'P`<`!\`'@`?`!X`
- M'P`?`!X`'P`>`!\`M@<%`$T!MP<Z`"\!``!W`"\!L@>0`0``LP<O`0``M`<O
- M`3H````O`4$`OP=6`"\!P`=6`"\!P0=6`"\!``"0`0``OP=6`!`!P`=6`!`!
- MP0=6`!`!``"0`0```0`!`#UU`0`"``$`3W4```,``0!G=0$`!``!`']U`0`%
- M``$`?W4!`/__`````````````````````````````````````````0````0`
- M```````!`0`!``````````$"``$`````````````````````````````````
- M````````````````````````````````````````````````````````````
- M``````````````````````````````#Q=/5T``!<.F4Z``````````$)+68@
- M;6%K969I;&4@;F%M90H)+6D@9&]N)W0@:6=N;W)E(&5X:70@<W1A='5S"@DM
- M;B!0<F5T96YD('1O(&UA:V4*"2UP(%!R:6YT(&%L;"!M86-R;W,@)B!T87)G
- M971S"@DM<B!$;R!N;W0@=7-E(&EN8G5I;'0@<G5L97,*"2US($UA:V4@<VEL
- M96YT;'D*"2UT(%1O=6-H(&9I;&5S(&EN<W1E860@;V8@;6%K:6YG('1H96T*
- M```"``#/3`,```#/3`(``0`40`(```(!`!1``@```@$`%$`"```````%0```
- M``````5`````````!4`````````%0`````````5`````````!4`````````%
- M0`````````5````+2<=W`@`02<=W`@`522%W!0`:22%W!0`?22%W!0`D22%W
- M!0`I22%W!``N22%W!``S22=W`P`X22=W`P```--W```"`@$`STP````````!
- M`0`!3TL!````````````0`````````````````$`````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- M````````````````````````````````````````````````````````````
- 7`````````````!H:&AH:&AH:&AH:&@`:
- `
- end
- SHAR_EOF
- if test 44823 -ne "`wc -c make.uue`"
- then
- echo shar: error transmitting make.uue '(should have been 44823 characters)'
- fi
- # End of shell archive
- exit 0
- --
-
- Mike Kersenbrock
- Tektronix Computer Aided Software Engineering
- Aloha, Oregon
- 31-Jul-86 22:08:39-MDT,1090;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Thu 31 Jul 86 22:08:25-MDT
- Received: from simtel20.arpa by AMSAA.ARPA id a001925; 31 Jul 86 23:37 EDT
- Date: Thu 31 Jul 86 21:37:16-MDT
- From: Rick Conn <RCONN@SIMTEL20.ARPA>
- Subject: Z-System Newsletters
- To: info-cpm@AMSAA.ARPA
- Message-ID: <12227222144.18.RCONN@SIMTEL20.ARPA>
-
- In PD:<ZSYS.NEW> are the following Z-System Newsletters from Echelon.
- The squeezed forms are also stored in PD:<ZSYS.Z-NEWS>, along with all
- the other newsletters. I have been advised that Frank Gaude' at Echelon
- has almost completed a complete index of these newsletters, and this index
- will be mailed to the subscribers. It is over 30 pages long and
- quite comprehensive.
-
-
- PD:<ZSYS.NEW>
- Bytes(SZ)
-
- Z-NEWS.503.1 21792(7)
- .504.1 19552(7)
- .505.1 22241(7)
- .506.1 21419(7)
- .5Q3.1 13312(8)
- .5Q4.1 12544(8)
- .5Q5.1 13824(8)
- .5Q6.1 13440(8)
-
- Total of 63 pages in 8 files
- -------
- 31-Jul-86 22:43:23-MDT,880;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Thu 31 Jul 86 22:43:09-MDT
- Received: from simtel20.arpa by AMSAA.ARPA id a001992; 1 Aug 86 0:05 EDT
- Date: Thu 31 Jul 86 22:03:56-MDT
- From: Rick Conn <RCONN@SIMTEL20.ARPA>
- Subject: New Z-System Files
- To: info-cpm@AMSAA.ARPA
- Message-ID: <12227226998.18.RCONN@SIMTEL20.ARPA>
-
- In PD:<ZSYS.INSTALL> and <ZSYS.NEW>:
- Z3-WKBK.WQ - Installation Workbook for Z3
-
- In PD:<ZSYS.ZSIG> and <ZSYS.NEW>:
- VCED16.LBR - command-line editor
- MOVE20.LBR - move files on same disk by changing user number
- Z-RIP.LBR - quick installation routine
- ZSIGPOL1.DOC - submitting to ZSIG
- Z3TRBO12.LBR -
- ZLUX24.LBR -
-
- In PD:<ZSYS.ZCPR3> and <ZSYS.NEW>:
- VFILER41G.LBR - new VFILER
- VMENU17.LBR -
- LDR15.LBR -
- ALIAS#1.LBR -
- ZSYSTEM.INS - listing of Z-System programs from Echelon and ZSIG
- -------
- 31-Jul-86 22:50:13-MDT,755;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Thu 31 Jul 86 22:50:06-MDT
- Received: from simtel20.arpa by AMSAA.ARPA id a002035; 1 Aug 86 0:15 EDT
- Date: Thu 31 Jul 86 22:15:54-MDT
- From: Rick Conn <RCONN@SIMTEL20.ARPA>
- Subject: More Z-System Files
- To: info-cpm@AMSAA.ARPA
- Message-ID: <12227229178.18.RCONN@SIMTEL20.ARPA>
-
- In PD:<ZSYS.DOC> and <ZSYS.NEW>:
- ZNODE.REQ - Requirements for becoming a Z-Node
- ZNODES28.LST - Listing of Z-Nodes
-
- In PD:<ZSYS.ZCPR3> and <ZSYS.NEW>:
- T3T-24-1.Z80 - Telephone Interface overlay for DC Hayes 2400
- for Term III
-
- In PD:<ZSYS.INSTALL> and <ZSYS.NEW>:
- Z3KAYDSK.MSG
-
- In PD:<ZSYS.ZSIG> and <ZSYS.NEW>:
- Z3KEY14.LBR -
- MKLINE.LBR -
- WILDEX.MQC -
-
- -------
- 31-Jul-86 23:07:26-MDT,712;000000000000
- Return-Path: <info-cpm-request@AMSAA.ARPA>
- Received: from AMSAA by SIMTEL20.ARPA with TCP; Thu 31 Jul 86 23:07:18-MDT
- Received: from simtel20.arpa by AMSAA.ARPA id a002043; 1 Aug 86 0:17 EDT
- Date: Thu 31 Jul 86 22:17:40-MDT
- From: Rick Conn <RCONN@SIMTEL20.ARPA>
- Subject: Previous Announcements
- To: info-cpm@AMSAA.ARPA
- Message-ID: <12227229499.18.RCONN@SIMTEL20.ARPA>
-
- The files in PD:<ZSYS.NEW> are temporary ... subject to deletion
- after a few weeks. NEW is provided as a convenience to Z-System users
- who are keeping up with new software releases.
-
- Thanks to Keith Petersen for his efforts in uploading the files
- I just announced. Keith's work really is appreciated.
-
- Rick Conn
- -------
-