home *** CD-ROM | disk | FTP | other *** search
/ Carousel / CAROUSEL.cdr / mactosh / hc / hyperter.sit / HYPERTERM.SRC_SH < prev    next >
MacBinary  |  1988-10-30  |  30.4 KB  |  [TEXT/QED1]

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


This file was processed as: MacBinary (archive/macBinary).

ConfidenceProgramDetectionMatch TypeSupport
10% dexvert MacBinary (archive/macBinary) fallback Supported
1% dexvert Text File (text/txt) fallback Supported
100% file MacBinary II, Sun Oct 30 20:09:47 1988, modified Sun Oct 30 20:09:47 1988, creator 'QED1', type ASCII, 30416 bytes "HYPERTERM.SRC_SH" default (weak)
99% file POSIX shell script executable (binary data) default
98% file a /bin/sh script executable (binary data), at 0x7750 406 bytes resource default (weak)
97% file a /bin/sh script executable (binary data) default (weak)
96% file data default
74% TrID Macintosh plain text (MacBinary) default
25% TrID MacBinary 2 default (weak)
100% siegfried fmt/1762 MacBinary (II) default
100% lsar MacBinary default


id metadata
keyvalue
macFileType[TEXT]
macFileCreator[QED1]



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 10 48 59 50 45 52 54 | 45 52 4d 2e 53 52 43 5f |..HYPERT|ERM.SRC_|
|00000010| 53 48 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |SH......|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 51 45 44 | 31 00 00 00 00 00 00 00 |.TEXTQED|1.......|
|00000050| 00 00 00 00 00 76 d0 00 | 00 01 96 9f 91 6d db 9f |.....v..|.....m..|
|00000060| 91 6d db 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |.m......|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 2c 70 00 00 |........|....,p..|
|00000080| 23 21 20 2f 62 69 6e 2f | 73 68 0d 23 20 54 68 69 |#! /bin/|sh.# Thi|
|00000090| 73 20 69 73 20 61 20 73 | 68 65 6c 6c 20 61 72 63 |s is a s|hell arc|
|000000a0| 68 69 76 65 2c 20 6d 65 | 61 6e 69 6e 67 3a 0d 23 |hive, me|aning:.#|
|000000b0| 20 31 2e 20 52 65 6d 6f | 76 65 20 65 76 65 72 79 | 1. Remo|ve every|
|000000c0| 74 68 69 6e 67 20 61 62 | 6f 76 65 20 74 68 65 20 |thing ab|ove the |
|000000d0| 23 21 20 2f 62 69 6e 2f | 73 68 20 6c 69 6e 65 2e |#! /bin/|sh line.|
|000000e0| 0d 23 20 32 2e 20 53 61 | 76 65 20 74 68 65 20 72 |.# 2. Sa|ve the r|
|000000f0| 65 73 75 6c 74 69 6e 67 | 20 74 65 78 74 20 69 6e |esulting| text in|
|00000100| 20 61 20 66 69 6c 65 2e | 0d 23 20 33 2e 20 45 78 | a file.|.# 3. Ex|
|00000110| 65 63 75 74 65 20 74 68 | 65 20 66 69 6c 65 20 77 |ecute th|e file w|
|00000120| 69 74 68 20 2f 62 69 6e | 2f 73 68 20 28 6e 6f 74 |ith /bin|/sh (not|
|00000130| 20 63 73 68 29 20 74 6f | 20 63 72 65 61 74 65 20 | csh) to| create |
|00000140| 74 68 65 20 66 69 6c 65 | 73 3a 0d 23 09 62 72 65 |the file|s:.#.bre|
|00000150| 61 6b 53 50 6f 72 74 2e | 70 0d 23 09 62 75 66 66 |akSPort.|p.#.buff|
|00000160| 65 72 53 50 6f 72 74 2e | 70 0d 23 09 6f 70 65 6e |erSPort.|p.#.open|
|00000170| 50 6f 72 74 2e 70 0d 23 | 09 70 6f 72 74 48 61 73 |Port.p.#|.portHas|
|00000180| 43 68 61 72 2e 70 0d 23 | 09 72 65 63 76 50 6f 72 |Char.p.#|.recvPor|
|00000190| 74 2e 70 0d 23 09 72 65 | 63 76 53 74 72 69 6e 67 |t.p.#.re|cvString|
|000001a0| 2e 70 0d 23 09 72 65 63 | 76 55 70 54 6f 2e 70 0d |.p.#.rec|vUpTo.p.|
|000001b0| 23 09 72 65 73 65 74 50 | 6f 72 74 2e 70 0d 23 09 |#.resetP|ort.p.#.|
|000001c0| 73 65 6e 64 50 6f 72 74 | 2e 70 0d 23 20 54 68 69 |sendPort|.p.# Thi|
|000001d0| 73 20 61 72 63 68 69 76 | 65 20 63 72 65 61 74 65 |s archiv|e create|
|000001e0| 64 3a 20 54 75 65 20 4d | 61 79 20 32 34 20 30 38 |d: Tue M|ay 24 08|
|000001f0| 3a 33 36 3a 35 37 20 31 | 39 38 38 0d 23 20 42 79 |:36:57 1|988.# By|
|00000200| 3a 09 52 6f 67 65 72 20 | 4c 2e 20 4c 6f 6e 67 20 |:.Roger |L. Long |
|00000210| 28 62 79 74 65 62 75 67 | 40 64 68 77 36 38 6b 2e |(bytebug|@dhw68k.|
|00000220| 63 74 73 2e 63 6f 6d 29 | 0d 65 78 70 6f 72 74 20 |cts.com)|.export |
|00000230| 50 41 54 48 3b 20 50 41 | 54 48 3d 2f 62 69 6e 3a |PATH; PA|TH=/bin:|
|00000240| 24 50 41 54 48 0d 65 63 | 68 6f 20 73 68 61 72 3a |$PATH.ec|ho shar:|
|00000250| 20 65 78 74 72 61 63 74 | 69 6e 67 20 22 27 62 72 | extract|ing "'br|
|00000260| 65 61 6b 53 50 6f 72 74 | 2e 70 27 22 20 27 28 31 |eakSPort|.p'" '(1|
|00000270| 39 33 32 20 63 68 61 72 | 61 63 74 65 72 73 29 27 |932 char|acters)'|
|00000280| 0d 69 66 20 74 65 73 74 | 20 2d 66 20 27 62 72 65 |.if test| -f 'bre|
|00000290| 61 6b 53 50 6f 72 74 2e | 70 27 0d 74 68 65 6e 0d |akSPort.|p'.then.|
|000002a0| 09 65 63 68 6f 20 73 68 | 61 72 3a 20 77 69 6c 6c |.echo sh|ar: will|
|000002b0| 20 6e 6f 74 20 6f 76 65 | 72 2d 77 72 69 74 65 20 | not ove|r-write |
|000002c0| 65 78 69 73 74 69 6e 67 | 20 66 69 6c 65 20 22 27 |existing| file "'|
|000002d0| 62 72 65 61 6b 53 50 6f | 72 74 2e 70 27 22 0d 65 |breakSPo|rt.p'".e|
|000002e0| 6c 73 65 0d 73 65 64 20 | 27 73 2f 5e 58 2f 2f 27 |lse.sed |'s/^X//'|
|000002f0| 20 3c 3c 20 5c 53 48 41 | 52 5f 45 4f 46 20 3e 20 | << \SHA|R_EOF > |
|00000300| 27 62 72 65 61 6b 53 50 | 6f 72 74 2e 70 27 0d 58 |'breakSP|ort.p'.X|
|00000310| 7b 24 52 2d 7d 0d 58 0d | 58 28 2a 0d 58 20 20 20 |{$R-}.X.|X(*.X |
|00000320| 20 62 72 65 61 6b 53 50 | 6f 72 74 28 70 6f 72 74 | breakSP|ort(port|
|00000330| 20 6e 75 6d 62 65 72 2c | 20 74 72 75 65 4f 72 46 | number,| trueOrF|
|00000340| 61 6c 73 65 29 20 2d 2d | 20 53 65 6e 64 20 6f 72 |alse) --| Send or|
|00000350| 20 63 6c 65 61 72 20 61 | 20 62 72 65 61 6b 20 6f | clear a| break o|
|00000360| 6e 20 74 68 65 20 73 65 | 72 69 61 6c 20 70 6f 72 |n the se|rial por|
|00000370| 74 2e 0d 58 0d 58 20 20 | 20 20 54 6f 20 63 6f 6d |t..X.X | To com|
|00000380| 70 69 6c 65 20 61 6e 64 | 20 6c 69 6e 6b 20 74 68 |pile and| link th|
|00000390| 69 73 20 66 69 6c 65 20 | 75 73 69 6e 67 20 4d 61 |is file |using Ma|
|000003a0| 63 69 6e 74 6f 73 68 20 | 50 72 6f 67 72 61 6d 6d |cintosh |Programm|
|000003b0| 65 72 27 73 20 57 6f 72 | 6b 73 68 6f 70 2c 0d 58 |er's Wor|kshop,.X|
|000003c0| 0d 58 20 20 20 20 70 61 | 73 63 61 6c 20 2d 77 20 |.X pa|scal -w |
|000003d0| 72 65 73 65 74 50 6f 72 | 74 2e 70 0d 58 20 20 20 |resetPor|t.p.X |
|000003e0| 20 6c 69 6e 6b 20 2d 6d | 20 45 4e 54 52 59 50 4f | link -m| ENTRYPO|
|000003f0| 49 4e 54 20 2d 6f 20 48 | 79 70 65 72 43 6f 6d 6d |INT -o H|yperComm|
|00000400| 61 6e 64 73 20 2d 72 74 | 20 58 43 4d 44 3d 31 20 |ands -rt| XCMD=1 |
|00000410| 2d 73 6e 20 4d 61 69 6e | 3d 62 72 65 61 6b 53 50 |-sn Main|=breakSP|
|00000420| 6f 72 74 20 62 72 65 61 | 6b 53 50 6f 72 74 2e 70 |ort brea|kSPort.p|
|00000430| 2e 6f 20 22 7b 4d 50 57 | 7d 22 4c 69 62 72 61 72 |.o "{MPW|}"Librar|
|00000440| 69 65 73 3a 69 6e 74 65 | 72 66 61 63 65 2e 6f 0d |ies:inte|rface.o.|
|00000450| 58 0d 58 2a 29 0d 58 0d | 58 7b 24 53 20 62 72 65 |X.X*).X.|X{$S bre|
|00000460| 61 6b 53 50 6f 72 74 20 | 7d 20 20 20 20 7b 20 53 |akSPort |} { S|
|00000470| 65 67 6d 65 6e 74 20 6e | 61 6d 65 20 6d 75 73 74 |egment n|ame must|
|00000480| 20 62 65 20 74 68 65 20 | 73 61 6d 65 20 61 73 20 | be the |same as |
|00000490| 74 68 65 20 63 6f 6d 6d | 61 6e 64 20 6e 61 6d 65 |the comm|and name|
|000004a0| 2e 20 7d 0d 58 0d 58 75 | 6e 69 74 20 44 75 6d 6d |. }.X.Xu|nit Dumm|
|000004b0| 79 55 6e 69 74 3b 0d 58 | 0d 58 69 6e 74 65 72 66 |yUnit;.X|.Xinterf|
|000004c0| 61 63 65 0d 58 0d 58 75 | 73 65 73 20 4d 65 6d 54 |ace.X.Xu|ses MemT|
|000004d0| 79 70 65 73 2c 20 51 75 | 69 63 6b 44 72 61 77 2c |ypes, Qu|ickDraw,|
|000004e0| 20 4f 53 49 6e 74 66 2c | 20 48 79 70 65 72 58 43 | OSIntf,| HyperXC|
|000004f0| 6d 64 3b 0d 58 0d 58 70 | 72 6f 63 65 64 75 72 65 |md;.X.Xp|rocedure|
|00000500| 20 45 6e 74 72 79 50 6f | 69 6e 74 28 70 61 72 61 | EntryPo|int(para|
|00000510| 6d 50 74 72 3a 20 58 43 | 6d 64 50 74 72 29 3b 0d |mPtr: XC|mdPtr);.|
|00000520| 58 0d 58 69 6d 70 6c 65 | 6d 65 6e 74 61 74 69 6f |X.Ximple|mentatio|
|00000530| 6e 0d 58 0d 58 74 79 70 | 65 0d 58 0d 58 53 74 72 |n.X.Xtyp|e.X.XStr|
|00000540| 33 31 20 3d 20 53 74 72 | 69 6e 67 5b 33 31 5d 3b |31 = Str|ing[31];|
|00000550| 0d 58 0d 58 70 72 6f 63 | 65 64 75 72 65 20 62 72 |.X.Xproc|edure br|
|00000560| 65 61 6b 53 50 6f 72 74 | 28 70 61 72 61 6d 50 74 |eakSPort|(paramPt|
|00000570| 72 3a 20 58 43 6d 64 50 | 74 72 29 3b 20 66 6f 72 |r: XCmdP|tr); for|
|00000580| 77 61 72 64 3b 0d 58 0d | 58 70 72 6f 63 65 64 75 |ward;.X.|Xprocedu|
|00000590| 72 65 20 45 6e 74 72 79 | 50 6f 69 6e 74 28 70 61 |re Entry|Point(pa|
|000005a0| 72 61 6d 50 74 72 3a 20 | 58 43 6d 64 50 74 72 29 |ramPtr: |XCmdPtr)|
|000005b0| 3b 0d 58 0d 58 20 20 20 | 20 62 65 67 69 6e 0d 58 |;.X.X | begin.X|
|000005c0| 20 20 20 20 20 20 20 20 | 62 72 65 61 6b 53 50 6f | |breakSPo|
|000005d0| 72 74 28 70 61 72 61 6d | 50 74 72 29 3b 0d 58 20 |rt(param|Ptr);.X |
|000005e0| 20 20 20 65 6e 64 3b 0d | 58 0d 58 70 72 6f 63 65 | end;.|X.Xproce|
|000005f0| 64 75 72 65 20 62 72 65 | 61 6b 53 50 6f 72 74 28 |dure bre|akSPort(|
|00000600| 70 61 72 61 6d 50 74 72 | 3a 20 58 43 6d 64 50 74 |paramPtr|: XCmdPt|
|00000610| 72 29 3b 0d 58 0d 58 20 | 20 20 20 76 61 72 20 70 |r);.X.X | var p|
|00000620| 6f 72 74 4e 75 6d 62 65 | 72 3a 20 69 6e 74 65 67 |ortNumbe|r: integ|
|00000630| 65 72 3b 0d 58 20 20 20 | 20 20 20 20 20 73 65 74 |er;.X | set|
|00000640| 74 69 6e 67 3a 20 69 6e | 74 65 67 65 72 3b 0d 58 |ting: in|teger;.X|
|00000650| 20 20 20 20 20 20 20 20 | 6f 75 74 50 6f 72 74 3a | |outPort:|
|00000660| 20 69 6e 74 65 67 65 72 | 3b 0d 58 20 20 20 20 20 | integer|;.X |
|00000670| 20 20 20 73 74 72 3a 20 | 53 74 72 32 35 35 3b 0d | str: |Str255;.|
|00000680| 58 20 20 20 20 20 20 20 | 20 64 6f 42 72 65 61 6b |X | doBreak|
|00000690| 3a 20 62 6f 6f 6c 65 61 | 6e 3b 0d 58 0d 58 20 20 |: boolea|n;.X.X |
|000006a0| 20 20 7b 24 49 20 58 43 | 6d 64 47 6c 75 65 2e 69 | {$I XC|mdGlue.i|
|000006b0| 6e 63 7d 0d 58 0d 58 20 | 20 20 20 70 72 6f 63 65 |nc}.X.X | proce|
|000006c0| 64 75 72 65 20 46 61 69 | 6c 28 65 72 72 4d 73 67 |dure Fai|l(errMsg|
|000006d0| 3a 20 53 74 72 32 35 35 | 29 3b 20 7b 20 73 65 74 |: Str255|); { set|
|000006e0| 20 74 68 65 52 65 73 75 | 6c 74 20 61 6e 64 20 71 | theResu|lt and q|
|000006f0| 75 69 74 20 7d 0d 58 20 | 20 20 20 20 20 20 20 62 |uit }.X | b|
|00000700| 65 67 69 6e 0d 58 20 20 | 20 20 20 20 20 20 20 20 |egin.X | |
|00000710| 20 20 70 61 72 61 6d 50 | 74 72 5e 2e 72 65 74 75 | paramP|tr^.retu|
|00000720| 72 6e 56 61 6c 75 65 20 | 3a 3d 20 50 61 73 54 6f |rnValue |:= PasTo|
|00000730| 5a 65 72 6f 28 65 72 72 | 4d 73 67 29 3b 0d 58 20 |Zero(err|Msg);.X |
|00000740| 20 20 20 20 20 20 20 20 | 20 20 20 65 78 69 74 28 | | exit(|
|00000750| 62 72 65 61 6b 53 50 6f | 72 74 29 3b 0d 58 20 20 |breakSPo|rt);.X |
|00000760| 20 20 20 20 20 20 65 6e | 64 3b 0d 58 0d 58 20 20 | en|d;.X.X |
|00000770| 20 20 62 65 67 69 6e 0d | 58 20 20 20 20 20 20 20 | begin.|X |
|00000780| 20 69 66 20 70 61 72 61 | 6d 50 74 72 5e 2e 70 61 | if para|mPtr^.pa|
|00000790| 72 61 6d 43 6f 75 6e 74 | 20 3c 3e 20 32 20 74 68 |ramCount| <> 2 th|
|000007a0| 65 6e 20 46 61 69 6c 28 | 27 70 61 72 61 6d 65 74 |en Fail(|'paramet|
|000007b0| 65 72 20 63 6f 75 6e 74 | 20 69 73 20 6e 6f 74 20 |er count| is not |
|000007c0| 32 27 29 3b 0d 58 0d 58 | 20 20 20 20 20 20 20 20 |2');.X.X| |
|000007d0| 5a 65 72 6f 54 6f 50 61 | 73 28 70 61 72 61 6d 50 |ZeroToPa|s(paramP|
|000007e0| 74 72 5e 2e 70 61 72 61 | 6d 73 5b 31 5d 5e 2c 73 |tr^.para|ms[1]^,s|
|000007f0| 74 72 29 3b 20 20 20 20 | 20 20 20 20 7b 20 46 69 |tr); | { Fi|
|00000800| 72 73 74 20 70 61 72 61 | 6d 65 74 65 72 20 69 73 |rst para|meter is|
|00000810| 20 70 6f 72 74 20 6e 75 | 6d 62 65 72 2e 20 7d 0d | port nu|mber. }.|
|00000820| 58 20 20 20 20 20 20 20 | 20 70 6f 72 74 4e 75 6d |X | portNum|
|00000830| 62 65 72 20 3a 3d 20 53 | 74 72 54 6f 4e 75 6d 28 |ber := S|trToNum(|
|00000840| 73 74 72 29 3b 0d 58 20 | 20 20 20 20 20 20 20 69 |str);.X | i|
|00000850| 66 20 28 70 6f 72 74 4e | 75 6d 62 65 72 20 3c 20 |f (portN|umber < |
|00000860| 31 29 20 6f 72 20 28 70 | 6f 72 74 4e 75 6d 62 65 |1) or (p|ortNumbe|
|00000870| 72 20 3e 20 32 29 20 74 | 68 65 6e 20 46 61 69 6c |r > 2) t|hen Fail|
|00000880| 28 27 69 6e 76 61 6c 69 | 64 20 70 6f 72 74 20 6e |('invali|d port n|
|00000890| 75 6d 62 65 72 27 29 3b | 0d 58 20 20 20 20 20 20 |umber');|.X |
|000008a0| 20 20 5a 65 72 6f 54 6f | 50 61 73 28 70 61 72 61 | ZeroTo|Pas(para|
|000008b0| 6d 50 74 72 5e 2e 70 61 | 72 61 6d 73 5b 32 5d 5e |mPtr^.pa|rams[2]^|
|000008c0| 2c 73 74 72 29 3b 20 20 | 20 20 20 20 20 20 7b 20 |,str); | { |
|000008d0| 53 65 63 6f 6e 64 20 70 | 61 72 61 6d 65 74 65 72 |Second p|arameter|
|000008e0| 20 69 73 20 73 65 74 74 | 69 6e 67 2e 20 7d 0d 58 | is sett|ing. }.X|
|000008f0| 20 20 20 20 20 20 20 20 | 64 6f 42 72 65 61 6b 20 | |doBreak |
|00000900| 3a 3d 20 66 61 6c 73 65 | 3b 0d 58 20 20 20 20 20 |:= false|;.X |
|00000910| 20 20 20 69 66 20 6c 65 | 6e 67 74 68 28 73 74 72 | if le|ngth(str|
|00000920| 29 20 3e 20 30 20 74 68 | 65 6e 0d 58 20 20 20 20 |) > 0 th|en.X |
|00000930| 20 20 20 20 20 20 20 20 | 69 66 20 28 73 74 72 5b | |if (str[|
|00000940| 31 5d 20 3d 20 27 74 27 | 29 20 6f 72 20 28 73 74 |1] = 't'|) or (st|
|00000950| 72 5b 31 5d 20 3d 20 27 | 54 27 29 20 74 68 65 6e |r[1] = '|T') then|
|00000960| 20 64 6f 42 72 65 61 6b | 20 3a 3d 20 74 72 75 65 | doBreak| := true|
|00000970| 3b 0d 58 0d 58 20 20 20 | 20 20 20 20 20 69 66 20 |;.X.X | if |
|00000980| 70 6f 72 74 4e 75 6d 62 | 65 72 20 3d 20 31 20 74 |portNumb|er = 1 t|
|00000990| 68 65 6e 20 6f 75 74 50 | 6f 72 74 20 3a 3d 20 2d |hen outP|ort := -|
|000009a0| 37 0d 58 20 20 20 20 20 | 20 20 20 65 6c 73 65 20 |7.X | else |
|000009b0| 6f 75 74 50 6f 72 74 20 | 3a 3d 20 2d 39 3b 0d 58 |outPort |:= -9;.X|
|000009c0| 20 20 20 20 20 20 20 20 | 69 66 20 64 6f 42 72 65 | |if doBre|
|000009d0| 61 6b 20 74 68 65 6e 0d | 58 20 20 20 20 20 20 20 |ak then.|X |
|000009e0| 20 20 20 20 20 62 65 67 | 69 6e 0d 58 20 20 20 20 | beg|in.X |
|000009f0| 20 20 20 20 20 20 20 20 | 20 20 20 20 69 66 20 53 | | if S|
|00000a00| 65 72 53 65 74 42 72 6b | 28 6f 75 74 50 6f 72 74 |erSetBrk|(outPort|
|00000a10| 29 20 3c 3e 20 6e 6f 45 | 72 72 20 74 68 65 6e 20 |) <> noE|rr then |
|00000a20| 46 61 69 6c 28 27 53 65 | 72 53 65 74 42 72 6b 20 |Fail('Se|rSetBrk |
|00000a30| 66 61 69 6c 65 64 27 29 | 3b 0d 58 20 20 20 20 20 |failed')|;.X |
|00000a40| 20 20 20 20 20 20 20 65 | 6e 64 0d 58 20 20 20 20 | e|nd.X |
|00000a50| 20 20 20 20 65 6c 73 65 | 0d 58 20 20 20 20 20 20 | else|.X |
|00000a60| 20 20 20 20 20 20 62 65 | 67 69 6e 0d 58 20 20 20 | be|gin.X |
|00000a70| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 69 66 20 | | if |
|00000a80| 53 65 72 43 6c 72 42 72 | 6b 28 6f 75 74 50 6f 72 |SerClrBr|k(outPor|
|00000a90| 74 29 20 3c 3e 20 6e 6f | 45 72 72 20 74 68 65 6e |t) <> no|Err then|
|00000aa0| 20 46 61 69 6c 28 27 53 | 65 72 43 6c 72 42 72 6b | Fail('S|erClrBrk|
|00000ab0| 20 66 61 69 6c 65 64 27 | 29 3b 0d 58 20 20 20 20 | failed'|);.X |
|00000ac0| 20 20 20 20 20 20 20 20 | 65 6e 64 3b 0d 58 20 20 | |end;.X |
|00000ad0| 20 20 65 6e 64 3b 0d 58 | 0d 58 65 6e 64 2e 0d 53 | end;.X|.Xend..S|
|00000ae0| 48 41 52 5f 45 4f 46 0d | 69 66 20 74 65 73 74 20 |HAR_EOF.|if test |
|00000af0| 31 39 33 32 20 2d 6e 65 | 20 22 60 77 63 20 2d 63 |1932 -ne| "`wc -c|
|00000b00| 20 3c 20 27 62 72 65 61 | 6b 53 50 6f 72 74 2e 70 | < 'brea|kSPort.p|
|00000b10| 27 60 22 0d 74 68 65 6e | 0d 09 65 63 68 6f 20 73 |'`".then|..echo s|
|00000b20| 68 61 72 3a 20 65 72 72 | 6f 72 20 74 72 61 6e 73 |har: err|or trans|
|00000b30| 6d 69 74 74 69 6e 67 20 | 22 27 62 72 65 61 6b 53 |mitting |"'breakS|
|00000b40| 50 6f 72 74 2e 70 27 22 | 20 27 28 73 68 6f 75 6c |Port.p'"| '(shoul|
|00000b50| 64 20 68 61 76 65 20 62 | 65 65 6e 20 31 39 33 32 |d have b|een 1932|
|00000b60| 20 63 68 61 72 61 63 74 | 65 72 73 29 27 0d 66 69 | charact|ers)'.fi|
|00000b70| 0d 66 69 20 23 20 65 6e | 64 20 6f 66 20 6f 76 65 |.fi # en|d of ove|
|00000b80| 72 77 72 69 74 69 6e 67 | 20 63 68 65 63 6b 0d 65 |rwriting| check.e|
|00000b90| 63 68 6f 20 73 68 61 72 | 3a 20 65 78 74 72 61 63 |cho shar|: extrac|
|00000ba0| 74 69 6e 67 20 22 27 62 | 75 66 66 65 72 53 50 6f |ting "'b|ufferSPo|
|00000bb0| 72 74 2e 70 27 22 20 27 | 28 32 35 30 34 20 63 68 |rt.p'" '|(2504 ch|
|00000bc0| 61 72 61 63 74 65 72 73 | 29 27 0d 69 66 20 74 65 |aracters|)'.if te|
|00000bd0| 73 74 20 2d 66 20 27 62 | 75 66 66 65 72 53 50 6f |st -f 'b|ufferSPo|
|00000be0| 72 74 2e 70 27 0d 74 68 | 65 6e 0d 09 65 63 68 6f |rt.p'.th|en..echo|
|00000bf0| 20 73 68 61 72 3a 20 77 | 69 6c 6c 20 6e 6f 74 20 | shar: w|ill not |
|00000c00| 6f 76 65 72 2d 77 72 69 | 74 65 20 65 78 69 73 74 |over-wri|te exist|
|00000c10| 69 6e 67 20 66 69 6c 65 | 20 22 27 62 75 66 66 65 |ing file| "'buffe|
|00000c20| 72 53 50 6f 72 74 2e 70 | 27 22 0d 65 6c 73 65 0d |rSPort.p|'".else.|
|00000c30| 73 65 64 20 27 73 2f 5e | 58 2f 2f 27 20 3c 3c 20 |sed 's/^|X//' << |
|00000c40| 5c 53 48 41 52 5f 45 4f | 46 20 3e 20 27 62 75 66 |\SHAR_EO|F > 'buf|
|00000c50| 66 65 72 53 50 6f 72 74 | 2e 70 27 0d 58 7b 24 52 |ferSPort|.p'.X{$R|
|00000c60| 2d 7d 0d 58 0d 58 28 2a | 0d 58 20 20 20 20 62 75 |-}.X.X(*|.X bu|
|00000c70| 66 66 65 72 53 50 6f 72 | 74 28 70 6f 72 74 20 6e |fferSPor|t(port n|
|00000c80| 75 6d 62 65 72 2c 20 6f | 6c 64 42 75 66 66 65 72 |umber, o|ldBuffer|
|00000c90| 2c 73 69 7a 65 4f 66 42 | 75 66 66 65 72 29 20 2d |,sizeOfB|uffer) -|
|00000ca0| 2d 20 46 72 65 65 20 74 | 68 65 20 6f 6c 64 20 62 |- Free t|he old b|
|00000cb0| 75 66 66 65 72 20 61 74 | 20 74 68 65 20 61 64 64 |uffer at| the add|
|00000cc0| 72 65 73 73 20 73 70 65 | 63 69 66 69 65 64 20 62 |ress spe|cified b|
|00000cd0| 79 0d 58 20 20 20 20 6f | 6c 64 42 75 66 66 65 72 |y.X o|ldBuffer|
|00000ce0| 20 28 69 66 20 6e 6f 6e | 2d 7a 65 72 6f 29 2c 20 | (if non|-zero), |
|00000cf0| 61 6e 64 20 61 6c 6c 6f | 63 61 74 65 20 61 20 6e |and allo|cate a n|
|00000d00| 65 77 20 62 75 66 66 65 | 72 20 6f 66 20 73 69 7a |ew buffe|r of siz|
|00000d10| 65 4f 66 42 75 66 66 65 | 72 20 28 6f 72 20 72 65 |eOfBuffe|r (or re|
|00000d20| 76 65 72 74 20 74 6f 20 | 64 65 66 61 75 6c 74 20 |vert to |default |
|00000d30| 62 75 66 66 65 72 20 69 | 66 0d 58 20 20 20 20 7a |buffer i|f.X z|
|00000d40| 65 72 6f 29 2e 20 52 65 | 74 75 72 6e 20 74 68 65 |ero). Re|turn the|
|00000d50| 20 61 64 64 72 65 73 73 | 20 6f 66 20 74 68 65 20 | address| of the |
|00000d60| 61 6c 6c 6f 63 61 74 65 | 64 20 62 75 66 66 65 72 |allocate|d buffer|
|00000d70| 20 6f 72 20 7a 65 72 6f | 20 69 66 20 73 69 7a 65 | or zero| if size|
|00000d80| 4f 66 42 75 66 66 65 72 | 20 69 73 20 7a 65 72 6f |OfBuffer| is zero|
|00000d90| 2e 0d 58 0d 58 20 20 20 | 20 54 6f 20 63 6f 6d 70 |..X.X | To comp|
|00000da0| 69 6c 65 20 61 6e 64 20 | 6c 69 6e 6b 20 74 68 69 |ile and |link thi|
|00000db0| 73 20 66 69 6c 65 20 75 | 73 69 6e 67 20 4d 61 63 |s file u|sing Mac|
|00000dc0| 69 6e 74 6f 73 68 20 50 | 72 6f 67 72 61 6d 6d 65 |intosh P|rogramme|
|00000dd0| 72 27 73 20 57 6f 72 6b | 73 68 6f 70 2c 0d 58 0d |r's Work|shop,.X.|
|00000de0| 58 20 20 20 20 70 61 73 | 63 61 6c 20 2d 77 20 62 |X pas|cal -w b|
|00000df0| 75 66 66 65 72 53 50 6f | 72 74 2e 70 0d 58 20 20 |ufferSPo|rt.p.X |
|00000e00| 20 20 6c 69 6e 6b 20 2d | 6d 20 45 4e 54 52 59 50 | link -|m ENTRYP|
|00000e10| 4f 49 4e 54 20 2d 6f 20 | 48 79 70 65 72 43 6f 6d |OINT -o |HyperCom|
|00000e20| 6d 61 6e 64 73 20 2d 72 | 74 20 58 46 43 4e 3d 33 |mands -r|t XFCN=3|
|00000e30| 20 2d 73 6e 20 4d 61 69 | 6e 3d 62 75 66 66 65 72 | -sn Mai|n=buffer|
|00000e40| 53 50 6f 72 74 20 62 75 | 66 66 65 72 53 50 6f 72 |SPort bu|fferSPor|
|00000e50| 74 2e 70 2e 6f 20 22 7b | 4d 50 57 7d 22 4c 69 62 |t.p.o "{|MPW}"Lib|
|00000e60| 72 61 72 69 65 73 3a 69 | 6e 74 65 72 66 61 63 65 |raries:i|nterface|
|00000e70| 2e 6f 0d 58 0d 58 2a 29 | 0d 58 0d 58 7b 24 53 20 |.o.X.X*)|.X.X{$S |
|00000e80| 62 75 66 66 65 72 53 50 | 6f 72 74 20 7d 20 20 20 |bufferSP|ort } |
|00000e90| 7b 20 53 65 67 6d 65 6e | 74 20 6e 61 6d 65 20 6d |{ Segmen|t name m|
|00000ea0| 75 73 74 20 62 65 20 74 | 68 65 20 73 61 6d 65 20 |ust be t|he same |
|00000eb0| 61 73 20 74 68 65 20 63 | 6f 6d 6d 61 6e 64 20 6e |as the c|ommand n|
|00000ec0| 61 6d 65 2e 20 7d 0d 58 | 0d 58 75 6e 69 74 20 44 |ame. }.X|.Xunit D|
|00000ed0| 75 6d 6d 79 55 6e 69 74 | 3b 0d 58 0d 58 69 6e 74 |ummyUnit|;.X.Xint|
|00000ee0| 65 72 66 61 63 65 0d 58 | 0d 58 75 73 65 73 20 4d |erface.X|.Xuses M|
|00000ef0| 65 6d 54 79 70 65 73 2c | 20 51 75 69 63 6b 44 72 |emTypes,| QuickDr|
|00000f00| 61 77 2c 20 4f 53 49 6e | 74 66 2c 20 54 6f 6f 6c |aw, OSIn|tf, Tool|
|00000f10| 49 6e 74 66 2c 20 48 79 | 70 65 72 58 43 6d 64 3b |Intf, Hy|perXCmd;|
|00000f20| 0d 58 0d 58 70 72 6f 63 | 65 64 75 72 65 20 45 6e |.X.Xproc|edure En|
|00000f30| 74 72 79 50 6f 69 6e 74 | 28 70 61 72 61 6d 50 74 |tryPoint|(paramPt|
|00000f40| 72 3a 20 58 43 6d 64 50 | 74 72 29 3b 0d 58 0d 58 |r: XCmdP|tr);.X.X|
|00000f50| 69 6d 70 6c 65 6d 65 6e | 74 61 74 69 6f 6e 0d 58 |implemen|tation.X|
|00000f60| 0d 58 63 6f 6e 73 74 0d | 58 0d 58 72 65 74 75 72 |.Xconst.|X.Xretur|
|00000f70| 6e 20 3d 20 63 68 72 28 | 31 33 29 3b 0d 58 6c 69 |n = chr(|13);.Xli|
|00000f80| 6e 65 66 65 65 64 20 3d | 20 63 68 72 28 31 30 29 |nefeed =| chr(10)|
|00000f90| 3b 0d 58 62 73 20 3d 20 | 63 68 72 28 38 29 3b 0d |;.Xbs = |chr(8);.|
|00000fa0| 58 0d 58 74 79 70 65 0d | 58 0d 58 53 74 72 33 31 |X.Xtype.|X.XStr31|
|00000fb0| 20 3d 20 53 74 72 69 6e | 67 5b 33 31 5d 3b 0d 58 | = Strin|g[31];.X|
|00000fc0| 0d 58 70 72 6f 63 65 64 | 75 72 65 20 62 75 66 66 |.Xproced|ure buff|
|00000fd0| 65 72 53 50 6f 72 74 28 | 70 61 72 61 6d 50 74 72 |erSPort(|paramPtr|
|00000fe0| 3a 20 58 43 6d 64 50 74 | 72 29 3b 20 66 6f 72 77 |: XCmdPt|r); forw|
|00000ff0| 61 72 64 3b 0d 58 0d 58 | 70 72 6f 63 65 64 75 72 |ard;.X.X|procedur|
|00001000| 65 20 45 6e 74 72 79 50 | 6f 69 6e 74 28 70 61 72 |e EntryP|oint(par|
|00001010| 61 6d 50 74 72 3a 20 58 | 43 6d 64 50 74 72 29 3b |amPtr: X|CmdPtr);|
|00001020| 0d 58 0d 58 20 20 20 20 | 62 65 67 69 6e 0d 58 20 |.X.X |begin.X |
|00001030| 20 20 20 20 20 20 20 62 | 75 66 66 65 72 53 50 6f | b|ufferSPo|
|00001040| 72 74 28 70 61 72 61 6d | 50 74 72 29 3b 0d 58 20 |rt(param|Ptr);.X |
|00001050| 20 20 20 65 6e 64 3b 0d | 58 0d 58 70 72 6f 63 65 | end;.|X.Xproce|
|00001060| 64 75 72 65 20 62 75 66 | 66 65 72 53 50 6f 72 74 |dure buf|ferSPort|
|00001070| 28 70 61 72 61 6d 50 74 | 72 3a 20 58 43 6d 64 50 |(paramPt|r: XCmdP|
|00001080| 74 72 29 3b 0d 58 0d 58 | 20 20 20 20 76 61 72 20 |tr);.X.X| var |
|00001090| 70 6f 72 74 4e 75 6d 62 | 65 72 3a 20 69 6e 74 65 |portNumb|er: inte|
|000010a0| 67 65 72 3b 0d 58 20 20 | 20 20 20 20 20 20 6f 6c |ger;.X | ol|
|000010b0| 64 42 75 66 66 65 72 50 | 74 72 3a 20 50 74 72 3b |dBufferP|tr: Ptr;|
|000010c0| 0d 58 20 20 20 20 20 20 | 20 20 6e 65 77 42 75 66 |.X | newBuf|
|000010d0| 66 65 72 50 74 72 3a 20 | 50 74 72 3b 0d 58 20 20 |ferPtr: |Ptr;.X |
|000010e0| 20 20 20 20 20 20 6e 65 | 77 42 75 66 66 65 72 53 | ne|wBufferS|
|000010f0| 69 7a 65 3a 20 6c 6f 6e | 67 49 6e 74 3b 0d 58 20 |ize: lon|gInt;.X |
|00001100| 20 20 20 20 20 20 20 69 | 6e 50 6f 72 74 2c 20 6f | i|nPort, o|
|00001110| 75 74 50 6f 72 74 3a 20 | 69 6e 74 65 67 65 72 3b |utPort: |integer;|
|00001120| 0d 58 20 20 20 20 20 20 | 20 20 73 74 72 3a 20 53 |.X | str: S|
|00001130| 74 72 32 35 35 3b 0d 58 | 0d 58 20 20 20 20 7b 24 |tr255;.X|.X {$|
|00001140| 49 20 58 43 6d 64 47 6c | 75 65 2e 69 6e 63 7d 0d |I XCmdGl|ue.inc}.|
|00001150| 58 0d 58 20 20 20 20 70 | 72 6f 63 65 64 75 72 65 |X.X p|rocedure|
|00001160| 20 46 61 69 6c 28 65 72 | 72 4d 73 67 3a 20 53 74 | Fail(er|rMsg: St|
|00001170| 72 32 35 35 29 3b 20 7b | 20 73 65 74 20 74 68 65 |r255); {| set the|
|00001180| 52 65 73 75 6c 74 20 61 | 6e 64 20 71 75 69 74 20 |Result a|nd quit |
|00001190| 7d 0d 58 20 20 20 20 20 | 20 20 20 62 65 67 69 6e |}.X | begin|
|000011a0| 0d 58 20 20 20 20 20 20 | 20 20 20 20 20 20 70 61 |.X | pa|
|000011b0| 72 61 6d 50 74 72 5e 2e | 72 65 74 75 72 6e 56 61 |ramPtr^.|returnVa|
|000011c0| 6c 75 65 20 3a 3d 20 50 | 61 73 54 6f 5a 65 72 6f |lue := P|asToZero|
|000011d0| 28 65 72 72 4d 73 67 29 | 3b 0d 58 20 20 20 20 20 |(errMsg)|;.X |
|000011e0| 20 20 20 20 20 20 20 65 | 78 69 74 28 62 75 66 66 | e|xit(buff|
|000011f0| 65 72 53 50 6f 72 74 29 | 3b 0d 58 20 20 20 20 20 |erSPort)|;.X |
|00001200| 20 20 20 65 6e 64 3b 0d | 58 0d 58 20 20 20 20 62 | end;.|X.X b|
|00001210| 65 67 69 6e 0d 58 20 20 | 20 20 20 20 20 20 69 66 |egin.X | if|
|00001220| 20 70 61 72 61 6d 50 74 | 72 5e 2e 70 61 72 61 6d | paramPt|r^.param|
|00001230| 43 6f 75 6e 74 20 3c 3e | 20 33 20 74 68 65 6e 20 |Count <>| 3 then |
|00001240| 46 61 69 6c 28 27 70 61 | 72 61 6d 65 74 65 72 20 |Fail('pa|rameter |
|00001250| 63 6f 75 6e 74 20 69 73 | 20 6e 6f 74 20 33 27 29 |count is| not 3')|
|00001260| 3b 0d 58 0d 58 20 20 20 | 20 20 20 20 20 5a 65 72 |;.X.X | Zer|
|00001270| 6f 54 6f 50 61 73 28 70 | 61 72 61 6d 50 74 72 5e |oToPas(p|aramPtr^|
|00001280| 2e 70 61 72 61 6d 73 5b | 31 5d 5e 2c 73 74 72 29 |.params[|1]^,str)|
|00001290| 3b 20 20 20 20 20 20 20 | 20 7b 20 46 69 72 73 74 |; | { First|
|000012a0| 20 70 61 72 61 6d 65 74 | 65 72 20 69 73 20 70 6f | paramet|er is po|
|000012b0| 72 74 20 6e 75 6d 62 65 | 72 2e 20 7d 0d 58 20 20 |rt numbe|r. }.X |
|000012c0| 20 20 20 20 20 20 70 6f | 72 74 4e 75 6d 62 65 72 | po|rtNumber|
|000012d0| 20 3a 3d 20 53 74 72 54 | 6f 4e 75 6d 28 73 74 72 | := StrT|oNum(str|
|000012e0| 29 3b 0d 58 20 20 20 20 | 20 20 20 20 69 66 20 28 |);.X | if (|
|000012f0| 70 6f 72 74 4e 75 6d 62 | 65 72 20 3c 20 31 29 20 |portNumb|er < 1) |
|00001300| 6f 72 20 28 70 6f 72 74 | 4e 75 6d 62 65 72 20 3e |or (port|Number >|
|00001310| 20 32 29 20 74 68 65 6e | 20 46 61 69 6c 28 27 69 | 2) then| Fail('i|
|00001320| 6e 76 61 6c 69 64 20 70 | 6f 72 74 20 6e 75 6d 62 |nvalid p|ort numb|
|00001330| 65 72 27 29 3b 0d 58 20 | 20 20 20 20 20 20 20 5a |er');.X | Z|
|00001340| 65 72 6f 54 6f 50 61 73 | 28 70 61 72 61 6d 50 74 |eroToPas|(paramPt|
|00001350| 72 5e 2e 70 61 72 61 6d | 73 5b 32 5d 5e 2c 73 74 |r^.param|s[2]^,st|
|00001360| 72 29 3b 20 20 20 20 20 | 20 20 20 7b 20 53 65 63 |r); | { Sec|
|00001370| 6f 6e 64 20 70 61 72 61 | 6d 65 74 65 72 20 69 73 |ond para|meter is|
|00001380| 20 6f 6c 64 20 62 75 66 | 66 65 72 20 61 64 64 72 | old buf|fer addr|
|00001390| 65 73 73 2e 20 7d 0d 58 | 20 20 20 20 20 20 20 20 |ess. }.X| |
|000013a0| 6f 6c 64 42 75 66 66 65 | 72 50 74 72 20 3a 3d 20 |oldBuffe|rPtr := |
|000013b0| 50 74 72 28 53 74 72 54 | 6f 4e 75 6d 28 73 74 72 |Ptr(StrT|oNum(str|
|000013c0| 29 29 3b 0d 58 20 20 20 | 20 20 20 20 20 5a 65 72 |));.X | Zer|
|000013d0| 6f 54 6f 50 61 73 28 70 | 61 72 61 6d 50 74 72 5e |oToPas(p|aramPtr^|
|000013e0| 2e 70 61 72 61 6d 73 5b | 33 5d 5e 2c 73 74 72 29 |.params[|3]^,str)|
|000013f0| 3b 20 20 20 20 20 20 20 | 20 7b 20 54 68 69 72 64 |; | { Third|
|00001400| 20 70 61 72 61 6d 65 74 | 65 72 20 69 73 20 6e 65 | paramet|er is ne|
|00001410| 77 20 62 75 66 66 65 72 | 20 73 69 7a 65 2e 20 7d |w buffer| size. }|
|00001420| 0d 58 20 20 20 20 20 20 | 20 20 6e 65 77 42 75 66 |.X | newBuf|
|00001430| 66 65 72 53 69 7a 65 20 | 3a 3d 20 53 74 72 54 6f |ferSize |:= StrTo|
|00001440| 4e 75 6d 28 73 74 72 29 | 3b 0d 58 0d 58 20 20 20 |Num(str)|;.X.X |
|00001450| 20 20 20 20 20 69 66 20 | 70 6f 72 74 4e 75 6d 62 | if |portNumb|
|00001460| 65 72 20 3d 20 31 20 74 | 68 65 6e 20 69 6e 50 6f |er = 1 t|hen inPo|
|00001470| 72 74 20 3a 3d 20 2d 36 | 0d 58 20 20 20 20 20 20 |rt := -6|.X |
|00001480| 20 20 65 6c 73 65 20 69 | 6e 50 6f 72 74 20 3a 3d | else i|nPort :=|
|00001490| 20 2d 38 3b 0d 58 0d 58 | 20 20 20 20 20 20 20 20 | -8;.X.X| |
|000014a0| 69 66 20 6e 65 77 42 75 | 66 66 65 72 53 69 7a 65 |if newBu|fferSize|
|000014b0| 20 3d 20 30 20 74 68 65 | 6e 20 6e 65 77 42 75 66 | = 0 the|n newBuf|
|000014c0| 66 65 72 50 74 72 20 3a | 3d 20 6e 69 6c 0d 58 20 |ferPtr :|= nil.X |
|000014d0| 20 20 20 20 20 20 20 65 | 6c 73 65 20 6e 65 77 42 | e|lse newB|
|000014e0| 75 66 66 65 72 50 74 72 | 20 3a 3d 20 4e 65 77 50 |ufferPtr| := NewP|
|000014f0| 74 72 28 6e 65 77 42 75 | 66 66 65 72 53 69 7a 65 |tr(newBu|fferSize|
|00001500| 29 3b 0d 58 20 20 20 20 | 20 20 20 20 69 66 20 53 |);.X | if S|
|00001510| 65 72 53 65 74 42 75 66 | 28 69 6e 50 6f 72 74 2c |erSetBuf|(inPort,|
|00001520| 6e 65 77 42 75 66 66 65 | 72 50 74 72 2c 6e 65 77 |newBuffe|rPtr,new|
|00001530| 42 75 66 66 65 72 53 69 | 7a 65 29 20 3c 3e 20 6e |BufferSi|ze) <> n|
|00001540| 6f 45 72 72 20 74 68 65 | 6e 0d 58 20 20 20 20 20 |oErr the|n.X |
|00001550| 20 20 20 20 20 20 20 62 | 65 67 69 6e 0d 58 20 20 | b|egin.X |
|00001560| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 44 69 | | Di|
|00001570| 73 70 6f 73 50 74 72 28 | 6e 65 77 42 75 66 66 65 |sposPtr(|newBuffe|
|00001580| 72 50 74 72 29 3b 0d 58 | 20 20 20 20 20 20 20 20 |rPtr);.X| |
|00001590| 20 20 20 20 20 20 20 20 | 46 61 69 6c 28 27 53 65 | |Fail('Se|
|000015a0| 74 53 65 74 42 75 66 20 | 66 61 69 6c 65 64 27 29 |tSetBuf |failed')|
|000015b0| 3b 0d 58 20 20 20 20 20 | 20 20 20 20 20 20 20 65 |;.X | e|
|000015c0| 6e 64 3b 0d 58 20 20 20 | 20 20 20 20 20 69 66 20 |nd;.X | if |
|000015d0| 6f 6c 64 42 75 66 66 65 | 72 50 74 72 20 3c 3e 20 |oldBuffe|rPtr <> |
|000015e0| 4e 49 4c 20 74 68 65 6e | 20 44 69 73 70 6f 73 50 |NIL then| DisposP|
|000015f0| 74 72 28 6f 6c 64 42 75 | 66 66 65 72 50 74 72 29 |tr(oldBu|fferPtr)|
|00001600| 3b 0d 58 20 20 20 20 20 | 20 20 20 73 74 72 20 3a |;.X | str :|
|00001610| 3d 20 4c 6f 6e 67 54 6f | 53 74 72 28 6f 72 64 34 |= LongTo|Str(ord4|
|00001620| 28 6e 65 77 42 75 66 66 | 65 72 50 74 72 29 29 3b |(newBuff|erPtr));|
|00001630| 0d 58 20 20 20 20 20 20 | 20 20 70 61 72 61 6d 50 |.X | paramP|
|00001640| 74 72 5e 2e 72 65 74 75 | 72 6e 56 61 6c 75 65 20 |tr^.retu|rnValue |
|00001650| 3a 3d 20 50 61 73 54 6f | 5a 65 72 6f 28 73 74 72 |:= PasTo|Zero(str|
|00001660| 29 3b 0d 58 20 20 20 20 | 65 6e 64 3b 0d 58 65 6e |);.X |end;.Xen|
|00001670| 64 2e 0d 53 48 41 52 5f | 45 4f 46 0d 69 66 20 74 |d..SHAR_|EOF.if t|
|00001680| 65 73 74 20 32 35 30 34 | 20 2d 6e 65 20 22 60 77 |est 2504| -ne "`w|
|00001690| 63 20 2d 63 20 3c 20 27 | 62 75 66 66 65 72 53 50 |c -c < '|bufferSP|
|000016a0| 6f 72 74 2e 70 27 60 22 | 0d 74 68 65 6e 0d 09 65 |ort.p'`"|.then..e|
|000016b0| 63 68 6f 20 73 68 61 72 | 3a 20 65 72 72 6f 72 20 |cho shar|: error |
|000016c0| 74 72 61 6e 73 6d 69 74 | 74 69 6e 67 20 22 27 62 |transmit|ting "'b|
|000016d0| 75 66 66 65 72 53 50 6f | 72 74 2e 70 27 22 20 27 |ufferSPo|rt.p'" '|
|000016e0| 28 73 68 6f 75 6c 64 20 | 68 61 76 65 20 62 65 65 |(should |have bee|
|000016f0| 6e 20 32 35 30 34 20 63 | 68 61 72 61 63 74 65 72 |n 2504 c|haracter|
|00001700| 73 29 27 0d 66 69 0d 66 | 69 20 23 20 65 6e 64 20 |s)'.fi.f|i # end |
|00001710| 6f 66 20 6f 76 65 72 77 | 72 69 74 69 6e 67 20 63 |of overw|riting c|
|00001720| 68 65 63 6b 0d 65 63 68 | 6f 20 73 68 61 72 3a 20 |heck.ech|o shar: |
|00001730| 65 78 74 72 61 63 74 69 | 6e 67 20 22 27 6f 70 65 |extracti|ng "'ope|
|00001740| 6e 50 6f 72 74 2e 70 27 | 22 20 27 28 32 31 30 32 |nPort.p'|" '(2102|
|00001750| 20 63 68 61 72 61 63 74 | 65 72 73 29 27 0d 69 66 | charact|ers)'.if|
|00001760| 20 74 65 73 74 20 2d 66 | 20 27 6f 70 65 6e 50 6f | test -f| 'openPo|
|00001770| 72 74 2e 70 27 0d 74 68 | 65 6e 0d 09 65 63 68 6f |rt.p'.th|en..echo|
|00001780| 20 73 68 61 72 3a 20 77 | 69 6c 6c 20 6e 6f 74 20 | shar: w|ill not |
|00001790| 6f 76 65 72 2d 77 72 69 | 74 65 20 65 78 69 73 74 |over-wri|te exist|
|000017a0| 69 6e 67 20 66 69 6c 65 | 20 22 27 6f 70 65 6e 50 |ing file| "'openP|
|000017b0| 6f 72 74 2e 70 27 22 0d | 65 6c 73 65 0d 73 65 64 |ort.p'".|else.sed|
|000017c0| 20 27 73 2f 5e 58 2f 2f | 27 20 3c 3c 20 5c 53 48 | 's/^X//|' << \SH|
|000017d0| 41 52 5f 45 4f 46 20 3e | 20 27 6f 70 65 6e 50 6f |AR_EOF >| 'openPo|
|000017e0| 72 74 2e 70 27 0d 58 7b | 24 52 2d 7d 0d 58 0d 58 |rt.p'.X{|$R-}.X.X|
|000017f0| 28 2a 0d 58 20 20 20 20 | 6f 70 65 6e 53 50 6f 72 |(*.X |openSPor|
|00001800| 74 20 70 6f 72 74 4e 75 | 6d 62 65 72 20 2d 2d 20 |t portNu|mber -- |
|00001810| 4f 70 65 6e 20 74 68 65 | 20 73 65 72 69 61 6c 20 |Open the| serial |
|00001820| 70 6f 72 74 20 64 72 69 | 76 65 72 2e 0d 58 0d 58 |port dri|ver..X.X|
|00001830| 20 20 20 20 54 6f 20 63 | 6f 6d 70 69 6c 65 20 61 | To c|ompile a|
|00001840| 6e 64 20 6c 69 6e 6b 20 | 74 68 69 73 20 66 69 6c |nd link |this fil|
|00001850| 65 20 75 73 69 6e 67 20 | 4d 61 63 69 6e 74 6f 73 |e using |Macintos|
|00001860| 68 20 50 72 6f 67 72 61 | 6d 6d 65 72 27 73 20 57 |h Progra|mmer's W|
|00001870| 6f 72 6b 73 68 6f 70 2c | 0d 58 0d 58 20 20 20 20 |orkshop,|.X.X |
|00001880| 70 61 73 63 61 6c 20 2d | 77 20 6f 70 65 6e 50 6f |pascal -|w openPo|
|00001890| 72 74 2e 70 0d 58 20 20 | 20 20 6c 69 6e 6b 20 2d |rt.p.X | link -|
|000018a0| 6d 20 45 4e 54 52 59 50 | 4f 49 4e 54 20 2d 6f 20 |m ENTRYP|OINT -o |
|000018b0| 48 79 70 65 72 43 6f 6d | 6d 61 6e 64 73 20 2d 72 |HyperCom|mands -r|
|000018c0| 74 20 58 43 4d 44 3d 30 | 20 2d 73 6e 20 4d 61 69 |t XCMD=0| -sn Mai|
|000018d0| 6e 3d 6f 70 65 6e 53 50 | 6f 72 74 20 6f 70 65 6e |n=openSP|ort open|
|000018e0| 50 6f 72 74 2e 70 2e 6f | 20 22 7b 4d 50 57 7d 22 |Port.p.o| "{MPW}"|
|000018f0| 4c 69 62 72 61 72 69 65 | 73 3a 69 6e 74 65 72 66 |Librarie|s:interf|
|00001900| 61 63 65 2e 6f 0d 58 0d | 58 2a 29 0d 58 0d 58 7b |ace.o.X.|X*).X.X{|
|00001910| 24 53 20 6f 70 65 6e 53 | 50 6f 72 74 20 7d 20 20 |$S openS|Port } |
|00001920| 20 20 20 7b 20 53 65 67 | 6d 65 6e 74 20 6e 61 6d | { Seg|ment nam|
|00001930| 65 20 6d 75 73 74 20 62 | 65 20 74 68 65 20 73 61 |e must b|e the sa|
|00001940| 6d 65 20 61 73 20 74 68 | 65 20 63 6f 6d 6d 61 6e |me as th|e comman|
|00001950| 64 20 6e 61 6d 65 2e 20 | 7d 0d 58 0d 58 75 6e 69 |d name. |}.X.Xuni|
|00001960| 74 20 44 75 6d 6d 79 55 | 6e 69 74 3b 0d 58 0d 58 |t DummyU|nit;.X.X|
|00001970| 69 6e 74 65 72 66 61 63 | 65 0d 58 0d 58 75 73 65 |interfac|e.X.Xuse|
|00001980| 73 20 4d 65 6d 54 79 70 | 65 73 2c 20 51 75 69 63 |s MemTyp|es, Quic|
|00001990| 6b 44 72 61 77 2c 20 4f | 53 49 6e 74 66 2c 20 48 |kDraw, O|SIntf, H|
|000019a0| 79 70 65 72 58 43 6d 64 | 3b 0d 58 0d 58 70 72 6f |yperXCmd|;.X.Xpro|
|000019b0| 63 65 64 75 72 65 20 45 | 6e 74 72 79 50 6f 69 6e |cedure E|ntryPoin|
|000019c0| 74 28 70 61 72 61 6d 50 | 74 72 3a 20 58 43 6d 64 |t(paramP|tr: XCmd|
|000019d0| 50 74 72 29 3b 0d 58 0d | 58 69 6d 70 6c 65 6d 65 |Ptr);.X.|Ximpleme|
|000019e0| 6e 74 61 74 69 6f 6e 0d | 58 0d 58 74 79 70 65 0d |ntation.|X.Xtype.|
|000019f0| 58 0d 58 53 74 72 33 31 | 20 3d 20 53 74 72 69 6e |X.XStr31| = Strin|
|00001a00| 67 5b 33 31 5d 3b 0d 58 | 0d 58 70 72 6f 63 65 64 |g[31];.X|.Xproced|
|00001a10| 75 72 65 20 6f 70 65 6e | 53 50 6f 72 74 28 70 61 |ure open|SPort(pa|
|00001a20| 72 61 6d 50 74 72 3a 20 | 58 43 6d 64 50 74 72 29 |ramPtr: |XCmdPtr)|
|00001a30| 3b 20 66 6f 72 77 61 72 | 64 3b 0d 58 0d 58 70 72 |; forwar|d;.X.Xpr|
|00001a40| 6f 63 65 64 75 72 65 20 | 45 6e 74 72 79 50 6f 69 |ocedure |EntryPoi|
|00001a50| 6e 74 28 70 61 72 61 6d | 50 74 72 3a 20 58 43 6d |nt(param|Ptr: XCm|
|00001a60| 64 50 74 72 29 3b 0d 58 | 0d 58 20 20 20 20 62 65 |dPtr);.X|.X be|
|00001a70| 67 69 6e 0d 58 20 20 20 | 20 20 20 20 20 6f 70 65 |gin.X | ope|
|00001a80| 6e 53 50 6f 72 74 28 70 | 61 72 61 6d 50 74 72 29 |nSPort(p|aramPtr)|
|00001a90| 3b 0d 58 20 20 20 20 65 | 6e 64 3b 0d 58 0d 58 70 |;.X e|nd;.X.Xp|
|00001aa0| 72 6f 63 65 64 75 72 65 | 20 6f 70 65 6e 53 50 6f |rocedure| openSPo|
|00001ab0| 72 74 28 70 61 72 61 6d | 50 74 72 3a 20 58 43 6d |rt(param|Ptr: XCm|
|00001ac0| 64 50 74 72 29 3b 0d 58 | 0d 58 20 20 20 20 76 61 |dPtr);.X|.X va|
|00001ad0| 72 20 70 6f 72 74 4e 75 | 6d 62 65 72 3a 20 69 6e |r portNu|mber: in|
|00001ae0| 74 65 67 65 72 3b 0d 58 | 20 20 20 20 20 20 20 20 |teger;.X| |
|00001af0| 69 6e 50 6f 72 74 2c 20 | 6f 75 74 50 6f 72 74 3a |inPort, |outPort:|
|00001b00| 20 69 6e 74 65 67 65 72 | 3b 0d 58 20 20 20 20 20 | integer|;.X |
|00001b10| 20 20 20 61 63 74 75 61 | 6c 49 6e 2c 20 61 63 74 | actua|lIn, act|
|00001b20| 75 61 6c 4f 75 74 3a 20 | 69 6e 74 65 67 65 72 3b |ualOut: |integer;|
|00001b30| 0d 58 20 20 20 20 20 20 | 20 20 69 3a 20 69 6e 74 |.X | i: int|
|00001b40| 65 67 65 72 3b 0d 58 20 | 20 20 20 20 20 20 20 73 |eger;.X | s|
|00001b50| 74 72 3a 20 53 74 72 32 | 35 35 3b 0d 58 20 20 20 |tr: Str2|55;.X |
|00001b60| 20 20 20 20 20 73 68 61 | 6b 65 73 3a 20 53 65 72 | sha|kes: Ser|
|00001b70| 53 68 6b 3b 0d 58 0d 58 | 20 20 20 20 7b 24 49 20 |Shk;.X.X| {$I |
|00001b80| 58 43 6d 64 47 6c 75 65 | 2e 69 6e 63 7d 0d 58 0d |XCmdGlue|.inc}.X.|
|00001b90| 58 20 20 20 20 70 72 6f | 63 65 64 75 72 65 20 46 |X pro|cedure F|
|00001ba0| 61 69 6c 28 65 72 72 4d | 73 67 3a 20 53 74 72 32 |ail(errM|sg: Str2|
|00001bb0| 35 35 29 3b 20 7b 20 73 | 65 74 20 74 68 65 52 65 |55); { s|et theRe|
|00001bc0| 73 75 6c 74 20 61 6e 64 | 20 71 75 69 74 20 7d 0d |sult and| quit }.|
|00001bd0| 58 20 20 20 20 20 20 20 | 20 62 65 67 69 6e 0d 58 |X | begin.X|
|00001be0| 20 20 20 20 20 20 20 20 | 20 20 20 20 70 61 72 61 | | para|
|00001bf0| 6d 50 74 72 5e 2e 72 65 | 74 75 72 6e 56 61 6c 75 |mPtr^.re|turnValu|
|00001c00| 65 20 3a 3d 20 50 61 73 | 54 6f 5a 65 72 6f 28 65 |e := Pas|ToZero(e|
|00001c10| 72 72 4d 73 67 29 3b 0d | 58 20 20 20 20 20 20 20 |rrMsg);.|X |
|00001c20| 20 20 20 20 20 65 78 69 | 74 28 6f 70 65 6e 53 50 | exi|t(openSP|
|00001c30| 6f 72 74 29 3b 0d 58 20 | 20 20 20 20 20 20 20 65 |ort);.X | e|
|00001c40| 6e 64 3b 0d 58 0d 58 20 | 20 20 20 62 65 67 69 6e |nd;.X.X | begin|
|00001c50| 0d 58 20 20 20 20 20 20 | 20 20 69 66 20 70 61 72 |.X | if par|
|00001c60| 61 6d 50 74 72 5e 2e 70 | 61 72 61 6d 43 6f 75 6e |amPtr^.p|aramCoun|
|00001c70| 74 20 3c 3e 20 31 20 74 | 68 65 6e 20 46 61 69 6c |t <> 1 t|hen Fail|
|00001c80| 28 27 70 61 72 61 6d 65 | 74 65 72 20 63 6f 75 6e |('parame|ter coun|
|00001c90| 74 20 69 73 20 6e 6f 74 | 20 31 27 29 3b 0d 58 0d |t is not| 1');.X.|
|00001ca0| 58 20 20 20 20 20 20 20 | 20 5a 65 72 6f 54 6f 50 |X | ZeroToP|
|00001cb0| 61 73 28 70 61 72 61 6d | 50 74 72 5e 2e 70 61 72 |as(param|Ptr^.par|
|00001cc0| 61 6d 73 5b 31 5d 5e 2c | 73 74 72 29 3b 20 20 20 |ams[1]^,|str); |
|00001cd0| 20 20 20 20 20 7b 20 46 | 69 72 73 74 20 70 61 72 | { F|irst par|
|00001ce0| 61 6d 65 74 65 72 20 69 | 73 20 70 6f 72 74 20 6e |ameter i|s port n|
|00001cf0| 75 6d 62 65 72 2e 20 7d | 0d 58 20 20 20 20 20 20 |umber. }|.X |
|00001d00| 20 20 70 6f 72 74 4e 75 | 6d 62 65 72 20 3a 3d 20 | portNu|mber := |
|00001d10| 53 74 72 54 6f 4e 75 6d | 28 73 74 72 29 3b 0d 58 |StrToNum|(str);.X|
|00001d20| 20 20 20 20 20 20 20 20 | 69 66 20 28 70 6f 72 74 | |if (port|
|00001d30| 4e 75 6d 62 65 72 20 3c | 20 31 29 20 6f 72 20 28 |Number <| 1) or (|
|00001d40| 70 6f 72 74 4e 75 6d 62 | 65 72 20 3e 20 32 29 20 |portNumb|er > 2) |
|00001d50| 74 68 65 6e 20 46 61 69 | 6c 28 27 69 6e 76 61 6c |then Fai|l('inval|
|00001d60| 69 64 20 70 6f 72 74 20 | 6e 75 6d 62 65 72 27 29 |id port |number')|
|00001d70| 3b 0d 58 0d 58 20 20 20 | 20 20 20 20 20 69 66 20 |;.X.X | if |
|00001d80| 70 6f 72 74 4e 75 6d 62 | 65 72 20 3d 20 31 20 74 |portNumb|er = 1 t|
|00001d90| 68 65 6e 0d 58 20 20 20 | 20 20 20 20 20 20 20 20 |hen.X | |
|00001da0| 20 62 65 67 69 6e 0d 58 | 20 20 20 20 20 20 20 20 | begin.X| |
|00001db0| 20 20 20 20 20 20 20 20 | 69 6e 50 6f 72 74 20 3a | |inPort :|
|00001dc0| 3d 20 2d 36 3b 20 6f 75 | 74 50 6f 72 74 20 3a 3d |= -6; ou|tPort :=|
|00001dd0| 20 2d 37 3b 0d 58 20 20 | 20 20 20 20 20 20 20 20 | -7;.X | |
|00001de0| 20 20 65 6e 64 0d 58 20 | 20 20 20 20 20 20 20 65 | end.X | e|
|00001df0| 6c 73 65 0d 58 20 20 20 | 20 20 20 20 20 20 20 20 |lse.X | |
|00001e00| 20 62 65 67 69 6e 0d 58 | 20 20 20 20 20 20 20 20 | begin.X| |
|00001e10| 20 20 20 20 20 20 20 20 | 69 6e 50 6f 72 74 20 3a | |inPort :|
|00001e20| 3d 20 2d 38 3b 20 6f 75 | 74 50 6f 72 74 20 3a 3d |= -8; ou|tPort :=|
|00001e30| 20 2d 39 3b 0d 58 20 20 | 20 20 20 20 20 20 20 20 | -9;.X | |
|00001e40| 20 20 65 6e 64 3b 0d 58 | 20 20 20 20 20 20 20 20 | end;.X| |
|00001e50| 69 66 20 28 4f 70 65 6e | 44 72 69 76 65 72 28 27 |if (Open|Driver('|
|00001e60| 2e 41 4f 75 74 27 2c 61 | 63 74 75 61 6c 4f 75 74 |.AOut',a|ctualOut|
|00001e70| 29 20 3c 3e 20 6e 6f 45 | 72 72 29 20 6f 72 20 28 |) <> noE|rr) or (|
|00001e80| 4f 70 65 6e 44 72 69 76 | 65 72 28 27 2e 41 49 6e |OpenDriv|er('.AIn|
|00001e90| 27 2c 61 63 74 75 61 6c | 49 6e 29 20 3c 3e 20 6e |',actual|In) <> n|
|00001ea0| 6f 45 72 72 29 20 74 68 | 65 6e 0d 58 20 20 20 20 |oErr) th|en.X |
|00001eb0| 20 20 20 20 20 20 20 20 | 46 61 69 6c 28 27 4f 70 | |Fail('Op|
|00001ec0| 65 6e 44 72 69 76 65 72 | 20 66 61 69 6c 65 64 27 |enDriver| failed'|
|00001ed0| 29 3b 0d 58 20 20 20 20 | 20 20 20 20 69 66 20 28 |);.X | if (|
|00001ee0| 61 63 74 75 61 6c 4f 75 | 74 20 3c 3e 20 6f 75 74 |actualOu|t <> out|
|00001ef0| 50 6f 72 74 29 20 6f 72 | 20 28 61 63 74 75 61 6c |Port) or| (actual|
|00001f00| 49 6e 20 3c 3e 20 69 6e | 50 6f 72 74 29 20 74 68 |In <> in|Port) th|
|00001f10| 65 6e 20 46 61 69 6c 28 | 27 6f 70 65 6e 44 72 69 |en Fail(|'openDri|
|00001f20| 76 65 72 20 66 61 69 6c | 65 64 27 29 3b 0d 58 20 |ver fail|ed');.X |
|00001f30| 20 20 20 20 20 20 20 77 | 69 74 68 20 73 68 61 6b | w|ith shak|
|00001f40| 65 73 20 64 6f 0d 58 20 | 20 20 20 20 20 20 20 20 |es do.X | |
|00001f50| 20 20 20 62 65 67 69 6e | 0d 58 20 20 20 20 20 20 | begin|.X |
|00001f60| 20 20 20 20 20 20 20 20 | 20 20 66 58 4f 6e 20 3a | | fXOn :|
|00001f70| 3d 20 30 3b 20 66 43 54 | 53 20 3a 3d 20 30 3b 20 |= 0; fCT|S := 0; |
|00001f80| 65 72 72 73 20 3a 3d 20 | 30 3b 20 65 76 74 73 20 |errs := |0; evts |
|00001f90| 3a 3d 20 30 3b 20 66 49 | 6e 58 20 3a 3d 20 30 3b |:= 0; fI|nX := 0;|
|00001fa0| 0d 58 20 20 20 20 20 20 | 20 20 20 20 20 20 65 6e |.X | en|
|00001fb0| 64 3b 0d 58 20 20 20 20 | 20 20 20 20 69 66 20 53 |d;.X | if S|
|00001fc0| 65 72 48 53 68 61 6b 65 | 28 69 6e 50 6f 72 74 2c |erHShake|(inPort,|
|00001fd0| 73 68 61 6b 65 73 29 20 | 3c 3e 20 6e 6f 45 72 72 |shakes) |<> noErr|
|00001fe0| 20 74 68 65 6e 20 46 61 | 69 6c 28 27 53 65 72 48 | then Fa|il('SerH|
|00001ff0| 53 68 61 6b 65 20 66 61 | 69 6c 65 64 27 29 3b 0d |Shake fa|iled');.|
|00002000| 58 20 20 20 20 20 20 20 | 20 69 66 20 53 65 72 48 |X | if SerH|
|00002010| 53 68 61 6b 65 28 6f 75 | 74 50 6f 72 74 2c 73 68 |Shake(ou|tPort,sh|
|00002020| 61 6b 65 73 29 20 3c 3e | 20 6e 6f 45 72 72 20 74 |akes) <>| noErr t|
|00002030| 68 65 6e 20 46 61 69 6c | 28 27 53 65 72 48 53 68 |hen Fail|('SerHSh|
|00002040| 61 6b 65 20 66 61 69 6c | 65 64 27 29 3b 0d 58 20 |ake fail|ed');.X |
|00002050| 20 20 20 65 6e 64 3b 0d | 58 0d 58 65 6e 64 2e 0d | end;.|X.Xend..|
|00002060| 53 48 41 52 5f 45 4f 46 | 0d 69 66 20 74 65 73 74 |SHAR_EOF|.if test|
|00002070| 20 32 31 30 32 20 2d 6e | 65 20 22 60 77 63 20 2d | 2102 -n|e "`wc -|
|00002080| 63 20 3c 20 27 6f 70 65 | 6e 50 6f 72 74 2e 70 27 |c < 'ope|nPort.p'|
|00002090| 60 22 0d 74 68 65 6e 0d | 09 65 63 68 6f 20 73 68 |`".then.|.echo sh|
|000020a0| 61 72 3a 20 65 72 72 6f | 72 20 74 72 61 6e 73 6d |ar: erro|r transm|
|000020b0| 69 74 74 69 6e 67 20 22 | 27 6f 70 65 6e 50 6f 72 |itting "|'openPor|
|000020c0| 74 2e 70 27 22 20 27 28 | 73 68 6f 75 6c 64 20 68 |t.p'" '(|should h|
|000020d0| 61 76 65 20 62 65 65 6e | 20 32 31 30 32 20 63 68 |ave been| 2102 ch|
|000020e0| 61 72 61 63 74 65 72 73 | 29 27 0d 66 69 0d 66 69 |aracters|)'.fi.fi|
|000020f0| 20 23 20 65 6e 64 20 6f | 66 20 6f 76 65 72 77 72 | # end o|f overwr|
|00002100| 69 74 69 6e 67 20 63 68 | 65 63 6b 0d 65 63 68 6f |iting ch|eck.echo|
|00002110| 20 73 68 61 72 3a 20 65 | 78 74 72 61 63 74 69 6e | shar: e|xtractin|
|00002120| 67 20 22 27 70 6f 72 74 | 48 61 73 43 68 61 72 2e |g "'port|HasChar.|
|00002130| 70 27 22 20 27 28 31 36 | 33 38 20 63 68 61 72 61 |p'" '(16|38 chara|
|00002140| 63 74 65 72 73 29 27 0d | 69 66 20 74 65 73 74 20 |cters)'.|if test |
|00002150| 2d 66 20 27 70 6f 72 74 | 48 61 73 43 68 61 72 2e |-f 'port|HasChar.|
|00002160| 70 27 0d 74 68 65 6e 0d | 09 65 63 68 6f 20 73 68 |p'.then.|.echo sh|
|00002170| 61 72 3a 20 77 69 6c 6c | 20 6e 6f 74 20 6f 76 65 |ar: will| not ove|
|00002180| 72 2d 77 72 69 74 65 20 | 65 78 69 73 74 69 6e 67 |r-write |existing|
|00002190| 20 66 69 6c 65 20 22 27 | 70 6f 72 74 48 61 73 43 | file "'|portHasC|
|000021a0| 68 61 72 2e 70 27 22 0d | 65 6c 73 65 0d 73 65 64 |har.p'".|else.sed|
|000021b0| 20 27 73 2f 5e 58 2f 2f | 27 20 3c 3c 20 5c 53 48 | 's/^X//|' << \SH|
|000021c0| 41 52 5f 45 4f 46 20 3e | 20 27 70 6f 72 74 48 61 |AR_EOF >| 'portHa|
|000021d0| 73 43 68 61 72 2e 70 27 | 0d 58 7b 24 52 2d 7d 0d |sChar.p'|.X{$R-}.|
|000021e0| 58 0d 58 28 2a 0d 58 20 | 20 20 20 53 50 6f 72 74 |X.X(*.X | SPort|
|000021f0| 48 61 73 43 68 61 72 28 | 70 6f 72 74 20 6e 75 6d |HasChar(|port num|
|00002200| 62 65 72 29 20 2d 2d 20 | 52 65 74 75 72 6e 20 22 |ber) -- |Return "|
|00002210| 74 72 75 65 22 20 69 66 | 20 74 68 65 20 73 65 72 |true" if| the ser|
|00002220| 69 61 6c 20 70 6f 72 74 | 20 68 61 73 20 64 61 74 |ial port| has dat|
|00002230| 61 3b 20 22 66 61 6c 73 | 65 22 20 6f 74 68 65 72 |a; "fals|e" other|
|00002240| 77 69 73 65 2e 0d 58 0d | 58 20 20 20 20 54 6f 20 |wise..X.|X To |
|00002250| 63 6f 6d 70 69 6c 65 20 | 61 6e 64 20 6c 69 6e 6b |compile |and link|
|00002260| 20 74 68 69 73 20 66 69 | 6c 65 20 75 73 69 6e 67 | this fi|le using|
|00002270| 20 4d 61 63 69 6e 74 6f | 73 68 20 50 72 6f 67 72 | Macinto|sh Progr|
|00002280| 61 6d 6d 65 72 27 73 20 | 57 6f 72 6b 73 68 6f 70 |ammer's |Workshop|
|00002290| 2c 0d 58 0d 58 20 20 20 | 20 70 61 73 63 61 6c 20 |,.X.X | pascal |
|000022a0| 2d 77 20 70 6f 72 74 48 | 61 73 43 68 61 72 2e 70 |-w portH|asChar.p|
|000022b0| 0d 58 20 20 20 20 6c 69 | 6e 6b 20 2d 6d 20 45 4e |.X li|nk -m EN|
|000022c0| 54 52 59 50 4f 49 4e 54 | 20 2d 6f 20 48 79 70 65 |TRYPOINT| -o Hype|
|000022d0| 72 43 6f 6d 6d 61 6e 64 | 73 20 2d 72 74 20 58 46 |rCommand|s -rt XF|
|000022e0| 43 4e 3d 30 20 2d 73 6e | 20 4d 61 69 6e 3d 53 50 |CN=0 -sn| Main=SP|
|000022f0| 6f 72 74 48 61 73 43 68 | 61 72 20 70 6f 72 74 48 |ortHasCh|ar portH|
|00002300| 61 73 43 68 61 72 2e 70 | 2e 6f 20 22 7b 4d 50 57 |asChar.p|.o "{MPW|
|00002310| 7d 22 4c 69 62 72 61 72 | 69 65 73 3a 69 6e 74 65 |}"Librar|ies:inte|
|00002320| 72 66 61 63 65 2e 6f 0d | 58 0d 58 2a 29 0d 58 0d |rface.o.|X.X*).X.|
|00002330| 58 7b 24 53 20 53 50 6f | 72 74 48 61 73 43 68 61 |X{$S SPo|rtHasCha|
|00002340| 72 20 7d 20 20 7b 20 53 | 65 67 6d 65 6e 74 20 6e |r } { S|egment n|
|00002350| 61 6d 65 20 6d 75 73 74 | 20 62 65 20 74 68 65 20 |ame must| be the |
|00002360| 73 61 6d 65 20 61 73 20 | 74 68 65 20 63 6f 6d 6d |same as |the comm|
|00002370| 61 6e 64 20 6e 61 6d 65 | 2e 20 7d 0d 58 0d 58 75 |and name|. }.X.Xu|
|00002380| 6e 69 74 20 44 75 6d 6d | 79 55 6e 69 74 3b 0d 58 |nit Dumm|yUnit;.X|
|00002390| 0d 58 69 6e 74 65 72 66 | 61 63 65 0d 58 0d 58 75 |.Xinterf|ace.X.Xu|
|000023a0| 73 65 73 20 4d 65 6d 54 | 79 70 65 73 2c 20 51 75 |ses MemT|ypes, Qu|
|000023b0| 69 63 6b 44 72 61 77 2c | 20 4f 53 49 6e 74 66 2c |ickDraw,| OSIntf,|
|000023c0| 20 48 79 70 65 72 58 43 | 6d 64 3b 0d 58 0d 58 70 | HyperXC|md;.X.Xp|
|000023d0| 72 6f 63 65 64 75 72 65 | 20 45 6e 74 72 79 50 6f |rocedure| EntryPo|
|000023e0| 69 6e 74 28 70 61 72 61 | 6d 50 74 72 3a 20 58 43 |int(para|mPtr: XC|
|000023f0| 6d 64 50 74 72 29 3b 0d | 58 0d 58 69 6d 70 6c 65 |mdPtr);.|X.Ximple|
|00002400| 6d 65 6e 74 61 74 69 6f | 6e 0d 58 0d 58 74 79 70 |mentatio|n.X.Xtyp|
|00002410| 65 0d 58 0d 58 53 74 72 | 33 31 20 3d 20 53 74 72 |e.X.XStr|31 = Str|
|00002420| 69 6e 67 5b 33 31 5d 3b | 0d 58 0d 58 70 72 6f 63 |ing[31];|.X.Xproc|
|00002430| 65 64 75 72 65 20 53 50 | 6f 72 74 48 61 73 43 68 |edure SP|ortHasCh|
|00002440| 61 72 28 70 61 72 61 6d | 50 74 72 3a 20 58 43 6d |ar(param|Ptr: XCm|
|00002450| 64 50 74 72 29 3b 20 66 | 6f 72 77 61 72 64 3b 0d |dPtr); f|orward;.|
|00002460| 58 0d 58 70 72 6f 63 65 | 64 75 72 65 20 45 6e 74 |X.Xproce|dure Ent|
|00002470| 72 79 50 6f 69 6e 74 28 | 70 61 72 61 6d 50 74 72 |ryPoint(|paramPtr|
|00002480| 3a 20 58 43 6d 64 50 74 | 72 29 3b 0d 58 0d 58 20 |: XCmdPt|r);.X.X |
|00002490| 20 20 20 62 65 67 69 6e | 0d 58 20 20 20 20 20 20 | begin|.X |
|000024a0| 20 20 53 50 6f 72 74 48 | 61 73 43 68 61 72 28 70 | SPortH|asChar(p|
|000024b0| 61 72 61 6d 50 74 72 29 | 3b 0d 58 20 20 20 20 65 |aramPtr)|;.X e|
|000024c0| 6e 64 3b 0d 58 0d 58 70 | 72 6f 63 65 64 75 72 65 |nd;.X.Xp|rocedure|
|000024d0| 20 53 50 6f 72 74 48 61 | 73 43 68 61 72 28 70 61 | SPortHa|sChar(pa|
|000024e0| 72 61 6d 50 74 72 3a 20 | 58 43 6d 64 50 74 72 29 |ramPtr: |XCmdPtr)|
|000024f0| 3b 0d 58 0d 58 20 20 20 | 20 76 61 72 20 70 6f 72 |;.X.X | var por|
|00002500| 74 4e 75 6d 62 65 72 3a | 20 69 6e 74 65 67 65 72 |tNumber:| integer|
|00002510| 3b 0d 58 20 20 20 20 20 | 20 20 20 69 6e 50 6f 72 |;.X | inPor|
|00002520| 74 3a 20 69 6e 74 65 67 | 65 72 3b 0d 58 20 20 20 |t: integ|er;.X |
|00002530| 20 20 20 20 20 73 74 72 | 3a 20 53 74 72 32 35 35 | str|: Str255|
|00002540| 3b 0d 58 20 20 20 20 20 | 20 20 20 6c 3a 20 6c 6f |;.X | l: lo|
|00002550| 6e 67 49 6e 74 3b 0d 58 | 0d 58 20 20 20 20 7b 24 |ngInt;.X|.X {$|
|00002560| 49 20 58 43 6d 64 47 6c | 75 65 2e 69 6e 63 7d 0d |I XCmdGl|ue.inc}.|
|00002570| 58 0d 58 20 20 20 20 70 | 72 6f 63 65 64 75 72 65 |X.X p|rocedure|
|00002580| 20 46 61 69 6c 28 65 72 | 72 4d 73 67 3a 20 53 74 | Fail(er|rMsg: St|
|00002590| 72 32 35 35 29 3b 20 7b | 20 73 65 74 20 74 68 65 |r255); {| set the|
|000025a0| 52 65 73 75 6c 74 20 61 | 6e 64 20 71 75 69 74 20 |Result a|nd quit |
|000025b0| 7d 0d 58 20 20 20 20 20 | 20 20 20 62 65 67 69 6e |}.X | begin|
|000025c0| 0d 58 20 20 20 20 20 20 | 20 20 20 20 20 20 70 61 |.X | pa|
|000025d0| 72 61 6d 50 74 72 5e 2e | 72 65 74 75 72 6e 56 61 |ramPtr^.|returnVa|
|000025e0| 6c 75 65 20 3a 3d 20 50 | 61 73 54 6f 5a 65 72 6f |lue := P|asToZero|
|000025f0| 28 65 72 72 4d 73 67 29 | 3b 0d 58 20 20 20 20 20 |(errMsg)|;.X |
|00002600| 20 20 20 20 20 20 20 65 | 78 69 74 28 53 50 6f 72 | e|xit(SPor|
|00002610| 74 48 61 73 43 68 61 72 | 29 3b 0d 58 20 20 20 20 |tHasChar|);.X |
|00002620| 20 20 20 20 65 6e 64 3b | 0d 58 0d 58 20 20 20 20 | end;|.X.X |
|00002630| 62 65 67 69 6e 0d 58 20 | 20 20 20 20 20 20 20 69 |begin.X | i|
|00002640| 66 20 70 61 72 61 6d 50 | 74 72 5e 2e 70 61 72 61 |f paramP|tr^.para|
|00002650| 6d 43 6f 75 6e 74 20 3c | 3e 20 31 20 74 68 65 6e |mCount <|> 1 then|
|00002660| 20 46 61 69 6c 28 27 70 | 61 72 61 6d 65 74 65 72 | Fail('p|arameter|
|00002670| 20 63 6f 75 6e 74 20 69 | 73 20 6e 6f 74 20 31 27 | count i|s not 1'|
|00002680| 29 3b 0d 58 0d 58 20 20 | 20 20 20 20 20 20 5a 65 |);.X.X | Ze|
|00002690| 72 6f 54 6f 50 61 73 28 | 70 61 72 61 6d 50 74 72 |roToPas(|paramPtr|
|000026a0| 5e 2e 70 61 72 61 6d 73 | 5b 31 5d 5e 2c 73 74 72 |^.params|[1]^,str|
|000026b0| 29 3b 20 20 20 20 20 20 | 20 20 7b 20 46 69 72 73 |); | { Firs|
|000026c0| 74 20 70 61 72 61 6d 65 | 74 65 72 20 69 73 20 70 |t parame|ter is p|
|000026d0| 6f 72 74 20 6e 75 6d 62 | 65 72 2e 20 7d 0d 58 20 |ort numb|er. }.X |
|000026e0| 20 20 20 20 20 20 20 70 | 6f 72 74 4e 75 6d 62 65 | p|ortNumbe|
|000026f0| 72 20 3a 3d 20 53 74 72 | 54 6f 4e 75 6d 28 73 74 |r := Str|ToNum(st|
|00002700| 72 29 3b 0d 58 20 20 20 | 20 20 20 20 20 69 66 20 |r);.X | if |
|00002710| 28 70 6f 72 74 4e 75 6d | 62 65 72 20 3c 20 31 29 |(portNum|ber < 1)|
|00002720| 20 6f 72 20 28 70 6f 72 | 74 4e 75 6d 62 65 72 20 | or (por|tNumber |
|00002730| 3e 20 32 29 20 74 68 65 | 6e 20 46 61 69 6c 28 27 |> 2) the|n Fail('|
|00002740| 69 6e 76 61 6c 69 64 20 | 70 6f 72 74 20 6e 75 6d |invalid |port num|
|00002750| 62 65 72 27 29 3b 0d 58 | 0d 58 20 20 20 20 20 20 |ber');.X|.X |
|00002760| 20 20 69 66 20 70 6f 72 | 74 4e 75 6d 62 65 72 20 | if por|tNumber |
|00002770| 3d 20 31 20 74 68 65 6e | 20 69 6e 50 6f 72 74 20 |= 1 then| inPort |
|00002780| 3a 3d 20 2d 36 0d 58 20 | 20 20 20 20 20 20 20 65 |:= -6.X | e|
|00002790| 6c 73 65 20 69 6e 50 6f | 72 74 20 3a 3d 20 2d 38 |lse inPo|rt := -8|
|000027a0| 3b 0d 58 20 20 20 20 20 | 20 20 20 69 66 20 53 65 |;.X | if Se|
|000027b0| 72 47 65 74 42 75 66 28 | 69 6e 50 6f 72 74 2c 6c |rGetBuf(|inPort,l|
|000027c0| 29 20 3c 3e 20 6e 6f 45 | 72 72 20 74 68 65 6e 20 |) <> noE|rr then |
|000027d0| 46 61 69 6c 28 27 53 65 | 72 47 65 74 42 75 66 20 |Fail('Se|rGetBuf |
|000027e0| 66 61 69 6c 65 64 27 29 | 3b 0d 58 20 20 20 20 20 |failed')|;.X |
|000027f0| 20 20 20 69 66 20 6c 20 | 3d 20 30 20 74 68 65 6e | if l |= 0 then|
|00002800| 20 70 61 72 61 6d 50 74 | 72 5e 2e 72 65 74 75 72 | paramPt|r^.retur|
|00002810| 6e 56 61 6c 75 65 20 3a | 3d 20 50 61 73 54 6f 5a |nValue :|= PasToZ|
|00002820| 65 72 6f 28 27 66 61 6c | 73 65 27 29 0d 58 20 20 |ero('fal|se').X |
|00002830| 20 20 20 20 20 20 65 6c | 73 65 20 70 61 72 61 6d | el|se param|
|00002840| 50 74 72 5e 2e 72 65 74 | 75 72 6e 56 61 6c 75 65 |Ptr^.ret|urnValue|
|00002850| 20 3a 3d 20 50 61 73 54 | 6f 5a 65 72 6f 28 27 74 | := PasT|oZero('t|
|00002860| 72 75 65 27 29 3b 0d 58 | 20 20 20 20 65 6e 64 3b |rue');.X| end;|
|00002870| 0d 58 0d 58 65 6e 64 2e | 0d 53 48 41 52 5f 45 4f |.X.Xend.|.SHAR_EO|
|00002880| 46 0d 69 66 20 74 65 73 | 74 20 31 36 33 38 20 2d |F.if tes|t 1638 -|
|00002890| 6e 65 20 22 60 77 63 20 | 2d 63 20 3c 20 27 70 6f |ne "`wc |-c < 'po|
|000028a0| 72 74 48 61 73 43 68 61 | 72 2e 70 27 60 22 0d 74 |rtHasCha|r.p'`".t|
|000028b0| 68 65 6e 0d 09 65 63 68 | 6f 20 73 68 61 72 3a 20 |hen..ech|o shar: |
|000028c0| 65 72 72 6f 72 20 74 72 | 61 6e 73 6d 69 74 74 69 |error tr|ansmitti|
|000028d0| 6e 67 20 22 27 70 6f 72 | 74 48 61 73 43 68 61 72 |ng "'por|tHasChar|
|000028e0| 2e 70 27 22 20 27 28 73 | 68 6f 75 6c 64 20 68 61 |.p'" '(s|hould ha|
|000028f0| 76 65 20 62 65 65 6e 20 | 31 36 33 38 20 63 68 61 |ve been |1638 cha|
|00002900| 72 61 63 74 65 72 73 29 | 27 0d 66 69 0d 66 69 20 |racters)|'.fi.fi |
|00002910| 23 20 65 6e 64 20 6f 66 | 20 6f 76 65 72 77 72 69 |# end of| overwri|
|00002920| 74 69 6e 67 20 63 68 65 | 63 6b 0d 65 63 68 6f 20 |ting che|ck.echo |
|00002930| 73 68 61 72 3a 20 65 78 | 74 72 61 63 74 69 6e 67 |shar: ex|tracting|
|00002940| 20 22 27 72 65 63 76 50 | 6f 72 74 2e 70 27 22 20 | "'recvP|ort.p'" |
|00002950| 27 28 31 36 31 34 20 63 | 68 61 72 61 63 74 65 72 |'(1614 c|haracter|
|00002960| 73 29 27 0d 69 66 20 74 | 65 73 74 20 2d 66 20 27 |s)'.if t|est -f '|
|00002970| 72 65 63 76 50 6f 72 74 | 2e 70 27 0d 74 68 65 6e |recvPort|.p'.then|
|00002980| 0d 09 65 63 68 6f 20 73 | 68 61 72 3a 20 77 69 6c |..echo s|har: wil|
|00002990| 6c 20 6e 6f 74 20 6f 76 | 65 72 2d 77 72 69 74 65 |l not ov|er-write|
|000029a0| 20 65 78 69 73 74 69 6e | 67 20 66 69 6c 65 20 22 | existin|g file "|
|000029b0| 27 72 65 63 76 50 6f 72 | 74 2e 70 27 22 0d 65 6c |'recvPor|t.p'".el|
|000029c0| 73 65 0d 73 65 64 20 27 | 73 2f 5e 58 2f 2f 27 20 |se.sed '|s/^X//' |
|000029d0| 3c 3c 20 5c 53 48 41 52 | 5f 45 4f 46 20 3e 20 27 |<< \SHAR|_EOF > '|
|000029e0| 72 65 63 76 50 6f 72 74 | 2e 70 27 0d 58 7b 24 52 |recvPort|.p'.X{$R|
|000029f0| 2d 7d 0d 58 0d 58 28 2a | 0d 58 20 20 20 20 72 65 |-}.X.X(*|.X re|
|00002a00| 63 76 53 50 6f 72 74 28 | 70 6f 72 74 20 6e 75 6d |cvSPort(|port num|
|00002a10| 62 65 72 29 20 2d 2d 20 | 52 65 74 75 72 6e 20 61 |ber) -- |Return a|
|00002a20| 20 63 68 61 72 61 63 74 | 65 72 20 66 72 6f 6d 20 | charact|er from |
|00002a30| 74 68 65 20 73 65 72 69 | 61 6c 20 70 6f 72 74 2e |the seri|al port.|
|00002a40| 0d 58 0d 58 20 20 20 20 | 54 6f 20 63 6f 6d 70 69 |.X.X |To compi|
|00002a50| 6c 65 20 61 6e 64 20 6c | 69 6e 6b 20 74 68 69 73 |le and l|ink this|
|00002a60| 20 66 69 6c 65 20 75 73 | 69 6e 67 20 4d 61 63 69 | file us|ing Maci|
|00002a70| 6e 74 6f 73 68 20 50 72 | 6f 67 72 61 6d 6d 65 72 |ntosh Pr|ogrammer|
|00002a80| 27 73 20 57 6f 72 6b 73 | 68 6f 70 2c 0d 58 0d 58 |'s Works|hop,.X.X|
|00002a90| 20 20 20 20 70 61 73 63 | 61 6c 20 2d 77 20 72 65 | pasc|al -w re|
|00002aa0| 63 76 50 6f 72 74 2e 70 | 0d 58 20 20 20 20 6c 69 |cvPort.p|.X li|
|00002ab0| 6e 6b 20 2d 6d 20 45 4e | 54 52 59 50 4f 49 4e 54 |nk -m EN|TRYPOINT|
|00002ac0| 20 2d 6f 20 48 79 70 65 | 72 43 6f 6d 6d 61 6e 64 | -o Hype|rCommand|
|00002ad0| 73 20 2d 72 74 20 58 46 | 43 4e 3d 31 20 2d 73 6e |s -rt XF|CN=1 -sn|
|00002ae0| 20 4d 61 69 6e 3d 72 65 | 63 76 53 50 6f 72 74 20 | Main=re|cvSPort |
|00002af0| 72 65 63 76 50 6f 72 74 | 2e 70 2e 6f 20 22 7b 4d |recvPort|.p.o "{M|
|00002b00| 50 57 7d 22 4c 69 62 72 | 61 72 69 65 73 3a 69 6e |PW}"Libr|aries:in|
|00002b10| 74 65 72 66 61 63 65 2e | 6f 0d 58 0d 58 2a 29 0d |terface.|o.X.X*).|
|00002b20| 58 0d 58 7b 24 53 20 72 | 65 63 76 53 50 6f 72 74 |X.X{$S r|ecvSPort|
|00002b30| 20 7d 20 20 20 20 20 7b | 20 53 65 67 6d 65 6e 74 | } {| Segment|
|00002b40| 20 6e 61 6d 65 20 6d 75 | 73 74 20 62 65 20 74 68 | name mu|st be th|
|00002b50| 65 20 73 61 6d 65 20 61 | 73 20 74 68 65 20 63 6f |e same a|s the co|
|00002b60| 6d 6d 61 6e 64 20 6e 61 | 6d 65 2e 20 7d 0d 58 0d |mmand na|me. }.X.|
|00002b70| 58 75 6e 69 74 20 44 75 | 6d 6d 79 55 6e 69 74 3b |Xunit Du|mmyUnit;|
|00002b80| 0d 58 0d 58 69 6e 74 65 | 72 66 61 63 65 0d 58 0d |.X.Xinte|rface.X.|
|00002b90| 58 75 73 65 73 20 4d 65 | 6d 54 79 70 65 73 2c 20 |Xuses Me|mTypes, |
|00002ba0| 51 75 69 63 6b 44 72 61 | 77 2c 20 4f 53 49 6e 74 |QuickDra|w, OSInt|
|00002bb0| 66 2c 20 48 79 70 65 72 | 58 43 6d 64 3b 0d 58 0d |f, Hyper|XCmd;.X.|
|00002bc0| 58 70 72 6f 63 65 64 75 | 72 65 20 45 6e 74 72 79 |Xprocedu|re Entry|
|00002bd0| 50 6f 69 6e 74 28 70 61 | 72 61 6d 50 74 72 3a 20 |Point(pa|ramPtr: |
|00002be0| 58 43 6d 64 50 74 72 29 | 3b 0d 58 0d 58 69 6d 70 |XCmdPtr)|;.X.Ximp|
|00002bf0| 6c 65 6d 65 6e 74 61 74 | 69 6f 6e 0d 58 0d 58 74 |lementat|ion.X.Xt|
|00002c00| 79 70 65 0d 58 0d 58 53 | 74 72 33 31 20 3d 20 53 |ype.X.XS|tr31 = S|
|00002c10| 74 72 69 6e 67 5b 33 31 | 5d 3b 0d 58 0d 58 70 72 |tring[31|];.X.Xpr|
|00002c20| 6f 63 65 64 75 72 65 20 | 72 65 63 76 53 50 6f 72 |ocedure |recvSPor|
|00002c30| 74 28 70 61 72 61 6d 50 | 74 72 3a 20 58 43 6d 64 |t(paramP|tr: XCmd|
|00002c40| 50 74 72 29 3b 20 66 6f | 72 77 61 72 64 3b 0d 58 |Ptr); fo|rward;.X|
|00002c50| 0d 58 70 72 6f 63 65 64 | 75 72 65 20 45 6e 74 72 |.Xproced|ure Entr|
|00002c60| 79 50 6f 69 6e 74 28 70 | 61 72 61 6d 50 74 72 3a |yPoint(p|aramPtr:|
|00002c70| 20 58 43 6d 64 50 74 72 | 29 3b 0d 58 0d 58 20 20 | XCmdPtr|);.X.X |
|00002c80| 20 20 62 65 67 69 6e 0d | 58 20 20 20 20 20 20 20 | begin.|X |
|00002c90| 20 72 65 63 76 53 50 6f | 72 74 28 70 61 72 61 6d | recvSPo|rt(param|
|00002ca0| 50 74 72 29 3b 0d 58 20 | 20 20 20 65 6e 64 3b 0d |Ptr);.X | end;.|
|00002cb0| 58 0d 58 70 72 6f 63 65 | 64 75 72 65 20 72 65 63 |X.Xproce|dure rec|
|00002cc0| 76 53 50 6f 72 74 28 70 | 61 72 61 6d 50 74 72 3a |vSPort(p|aramPtr:|
|00002cd0| 20 58 43 6d 64 50 74 72 | 29 3b 0d 58 0d 58 20 20 | XCmdPtr|);.X.X |
|00002ce0| 20 20 76 61 72 20 70 6f | 72 74 4e 75 6d 62 65 72 | var po|rtNumber|
|00002cf0| 3a 20 69 6e 74 65 67 65 | 72 3b 0d 58 20 20 20 20 |: intege|r;.X |
|00002d00| 20 20 20 20 69 6e 50 6f | 72 74 3a 20 69 6e 74 65 | inPo|rt: inte|
|00002d10| 67 65 72 3b 0d 58 20 20 | 20 20 20 20 20 20 73 74 |ger;.X | st|
|00002d20| 72 3a 20 53 74 72 32 35 | 35 3b 0d 58 20 20 20 20 |r: Str25|5;.X |
|00002d30| 20 20 20 20 6c 3a 20 6c | 6f 6e 67 49 6e 74 3b 0d | l: l|ongInt;.|
|00002d40| 58 0d 58 20 20 20 20 7b | 24 49 20 58 43 6d 64 47 |X.X {|$I XCmdG|
|00002d50| 6c 75 65 2e 69 6e 63 7d | 0d 58 0d 58 20 20 20 20 |lue.inc}|.X.X |
|00002d60| 70 72 6f 63 65 64 75 72 | 65 20 46 61 69 6c 28 65 |procedur|e Fail(e|
|00002d70| 72 72 4d 73 67 3a 20 53 | 74 72 32 35 35 29 3b 20 |rrMsg: S|tr255); |
|00002d80| 7b 20 73 65 74 20 74 68 | 65 52 65 73 75 6c 74 20 |{ set th|eResult |
|00002d90| 61 6e 64 20 71 75 69 74 | 20 7d 0d 58 20 20 20 20 |and quit| }.X |
|00002da0| 20 20 20 20 62 65 67 69 | 6e 0d 58 20 20 20 20 20 | begi|n.X |
|00002db0| 20 20 20 20 20 20 20 70 | 61 72 61 6d 50 74 72 5e | p|aramPtr^|
|00002dc0| 2e 72 65 74 75 72 6e 56 | 61 6c 75 65 20 3a 3d 20 |.returnV|alue := |
|00002dd0| 50 61 73 54 6f 5a 65 72 | 6f 28 65 72 72 4d 73 67 |PasToZer|o(errMsg|
|00002de0| 29 3b 0d 58 20 20 20 20 | 20 20 20 20 20 20 20 20 |);.X | |
|00002df0| 65 78 69 74 28 72 65 63 | 76 53 50 6f 72 74 29 3b |exit(rec|vSPort);|
|00002e00| 0d 58 20 20 20 20 20 20 | 20 20 65 6e 64 3b 0d 58 |.X | end;.X|
|00002e10| 0d 58 20 20 20 20 62 65 | 67 69 6e 0d 58 20 20 20 |.X be|gin.X |
|00002e20| 20 20 20 20 20 69 66 20 | 70 61 72 61 6d 50 74 72 | if |paramPtr|
|00002e30| 5e 2e 70 61 72 61 6d 43 | 6f 75 6e 74 20 3c 3e 20 |^.paramC|ount <> |
|00002e40| 31 20 74 68 65 6e 20 46 | 61 69 6c 28 27 70 61 72 |1 then F|ail('par|
|00002e50| 61 6d 65 74 65 72 20 63 | 6f 75 6e 74 20 69 73 20 |ameter c|ount is |
|00002e60| 6e 6f 74 20 31 27 29 3b | 0d 58 0d 58 20 20 20 20 |not 1');|.X.X |
|00002e70| 20 20 20 20 5a 65 72 6f | 54 6f 50 61 73 28 70 61 | Zero|ToPas(pa|
|00002e80| 72 61 6d 50 74 72 5e 2e | 70 61 72 61 6d 73 5b 31 |ramPtr^.|params[1|
|00002e90| 5d 5e 2c 73 74 72 29 3b | 20 20 20 20 20 20 20 20 |]^,str);| |
|00002ea0| 7b 20 46 69 72 73 74 20 | 70 61 72 61 6d 65 74 65 |{ First |paramete|
|00002eb0| 72 20 69 73 20 70 6f 72 | 74 20 6e 75 6d 62 65 72 |r is por|t number|
|00002ec0| 2e 20 7d 0d 58 20 20 20 | 20 20 20 20 20 70 6f 72 |. }.X | por|
|00002ed0| 74 4e 75 6d 62 65 72 20 | 3a 3d 20 53 74 72 54 6f |tNumber |:= StrTo|
|00002ee0| 4e 75 6d 28 73 74 72 29 | 3b 0d 58 20 20 20 20 20 |Num(str)|;.X |
|00002ef0| 20 20 20 69 66 20 28 70 | 6f 72 74 4e 75 6d 62 65 | if (p|ortNumbe|
|00002f00| 72 20 3c 20 31 29 20 6f | 72 20 28 70 6f 72 74 4e |r < 1) o|r (portN|
|00002f10| 75 6d 62 65 72 20 3e 20 | 32 29 20 74 68 65 6e 20 |umber > |2) then |
|00002f20| 46 61 69 6c 28 27 69 6e | 76 61 6c 69 64 20 70 6f |Fail('in|valid po|
|00002f30| 72 74 20 6e 75 6d 62 65 | 72 27 29 3b 0d 58 0d 58 |rt numbe|r');.X.X|
|00002f40| 20 20 20 20 20 20 20 20 | 69 66 20 70 6f 72 74 4e | |if portN|
|00002f50| 75 6d 62 65 72 20 3d 20 | 31 20 74 68 65 6e 20 69 |umber = |1 then i|
|00002f60| 6e 50 6f 72 74 20 3a 3d | 20 2d 36 0d 58 20 20 20 |nPort :=| -6.X |
|00002f70| 20 20 20 20 20 65 6c 73 | 65 20 69 6e 50 6f 72 74 | els|e inPort|
|00002f80| 20 3a 3d 20 2d 38 3b 0d | 58 20 20 20 20 20 20 20 | := -8;.|X |
|00002f90| 20 6c 20 3a 3d 20 31 3b | 0d 58 20 20 20 20 20 20 | l := 1;|.X |
|00002fa0| 20 20 73 74 72 5b 30 5d | 20 3a 3d 20 63 68 72 28 | str[0]| := chr(|
|00002fb0| 31 29 3b 0d 58 20 20 20 | 20 20 20 20 20 69 66 20 |1);.X | if |
|00002fc0| 46 53 52 65 61 64 28 69 | 6e 50 6f 72 74 2c 6c 2c |FSRead(i|nPort,l,|
|00002fd0| 50 74 72 28 6f 72 64 34 | 28 40 73 74 72 29 2b 31 |Ptr(ord4|(@str)+1|
|00002fe0| 29 29 20 3c 3e 20 6e 6f | 45 72 72 20 74 68 65 6e |)) <> no|Err then|
|00002ff0| 20 46 61 69 6c 28 27 46 | 53 52 65 61 64 20 66 61 | Fail('F|SRead fa|
|00003000| 69 6c 65 64 27 29 3b 0d | 58 20 20 20 20 20 20 20 |iled');.|X |
|00003010| 20 69 66 20 6c 20 3c 3e | 20 31 20 74 68 65 6e 20 | if l <>| 1 then |
|00003020| 73 74 72 5b 30 5d 20 3a | 3d 20 63 68 72 28 30 29 |str[0] :|= chr(0)|
|00003030| 3b 0d 58 20 20 20 20 20 | 20 20 20 70 61 72 61 6d |;.X | param|
|00003040| 50 74 72 5e 2e 72 65 74 | 75 72 6e 56 61 6c 75 65 |Ptr^.ret|urnValue|
|00003050| 20 3a 3d 20 50 61 73 54 | 6f 5a 65 72 6f 28 73 74 | := PasT|oZero(st|
|00003060| 72 29 3b 0d 58 20 20 20 | 20 65 6e 64 3b 0d 58 0d |r);.X | end;.X.|
|00003070| 58 65 6e 64 2e 0d 53 48 | 41 52 5f 45 4f 46 0d 69 |Xend..SH|AR_EOF.i|
|00003080| 66 20 74 65 73 74 20 31 | 36 31 34 20 2d 6e 65 20 |f test 1|614 -ne |
|00003090| 22 60 77 63 20 2d 63 20 | 3c 20 27 72 65 63 76 50 |"`wc -c |< 'recvP|
|000030a0| 6f 72 74 2e 70 27 60 22 | 0d 74 68 65 6e 0d 09 65 |ort.p'`"|.then..e|
|000030b0| 63 68 6f 20 73 68 61 72 | 3a 20 65 72 72 6f 72 20 |cho shar|: error |
|000030c0| 74 72 61 6e 73 6d 69 74 | 74 69 6e 67 20 22 27 72 |transmit|ting "'r|
|000030d0| 65 63 76 50 6f 72 74 2e | 70 27 22 20 27 28 73 68 |ecvPort.|p'" '(sh|
|000030e0| 6f 75 6c 64 20 68 61 76 | 65 20 62 65 65 6e 20 31 |ould hav|e been 1|
|000030f0| 36 31 34 20 63 68 61 72 | 61 63 74 65 72 73 29 27 |614 char|acters)'|
|00003100| 0d 66 69 0d 66 69 20 23 | 20 65 6e 64 20 6f 66 20 |.fi.fi #| end of |
|00003110| 6f 76 65 72 77 72 69 74 | 69 6e 67 20 63 68 65 63 |overwrit|ing chec|
|00003120| 6b 0d 65 63 68 6f 20 73 | 68 61 72 3a 20 65 78 74 |k.echo s|har: ext|
|00003130| 72 61 63 74 69 6e 67 20 | 22 27 72 65 63 76 53 74 |racting |"'recvSt|
|00003140| 72 69 6e 67 2e 70 27 22 | 20 27 28 36 37 30 37 20 |ring.p'"| '(6707 |
|00003150| 63 68 61 72 61 63 74 65 | 72 73 29 27 0d 69 66 20 |characte|rs)'.if |
|00003160| 74 65 73 74 20 2d 66 20 | 27 72 65 63 76 53 74 72 |test -f |'recvStr|
|00003170| 69 6e 67 2e 70 27 0d 74 | 68 65 6e 0d 09 65 63 68 |ing.p'.t|hen..ech|
|00003180| 6f 20 73 68 61 72 3a 20 | 77 69 6c 6c 20 6e 6f 74 |o shar: |will not|
|00003190| 20 6f 76 65 72 2d 77 72 | 69 74 65 20 65 78 69 73 | over-wr|ite exis|
|000031a0| 74 69 6e 67 20 66 69 6c | 65 20 22 27 72 65 63 76 |ting fil|e "'recv|
|000031b0| 53 74 72 69 6e 67 2e 70 | 27 22 0d 65 6c 73 65 0d |String.p|'".else.|
|000031c0| 73 65 64 20 27 73 2f 5e | 58 2f 2f 27 20 3c 3c 20 |sed 's/^|X//' << |
|000031d0| 5c 53 48 41 52 5f 45 4f | 46 20 3e 20 27 72 65 63 |\SHAR_EO|F > 'rec|
|000031e0| 76 53 74 72 69 6e 67 2e | 70 27 0d 58 7b 24 52 2d |vString.|p'.X{$R-|
|000031f0| 7d 0d 58 0d 58 28 2a 0d | 58 20 20 20 20 72 65 63 |}.X.X(*.|X rec|
|00003200| 76 53 74 72 69 6e 67 28 | 70 6f 72 74 20 6e 75 6d |vString(|port num|
|00003210| 62 65 72 2c 20 74 65 72 | 6d 69 6e 61 74 69 6f 6e |ber, ter|mination|
|00003220| 20 63 68 61 72 61 63 74 | 65 72 2c 20 77 61 69 74 | charact|er, wait|
|00003230| 54 69 6d 65 2c 20 65 63 | 68 6f 2c 20 65 64 69 74 |Time, ec|ho, edit|
|00003240| 2c 6f 6c 64 53 74 72 69 | 6e 67 29 20 2d 2d 20 52 |,oldStri|ng) -- R|
|00003250| 65 74 75 72 6e 20 61 20 | 73 74 72 69 6e 67 20 66 |eturn a |string f|
|00003260| 72 6f 6d 20 74 68 65 0d | 58 20 20 20 20 20 20 20 |rom the.|X |
|00003270| 20 73 65 72 69 61 6c 20 | 70 6f 72 74 3b 20 72 65 | serial |port; re|
|00003280| 74 75 72 6e 20 65 76 65 | 72 79 74 68 69 6e 67 20 |turn eve|rything |
|00003290| 61 76 61 69 6c 61 62 6c | 65 2c 20 75 70 20 74 6f |availabl|e, up to|
|000032a0| 20 74 68 65 20 74 65 72 | 6d 69 6e 61 74 69 6f 6e | the ter|mination|
|000032b0| 20 63 68 61 72 61 63 74 | 65 72 20 28 69 66 20 61 | charact|er (if a|
|000032c0| 6e 79 29 2e 20 50 61 73 | 73 20 61 6e 20 65 6d 70 |ny). Pas|s an emp|
|000032d0| 74 79 0d 58 20 20 20 20 | 20 20 20 20 74 65 72 6d |ty.X | term|
|000032e0| 69 6e 61 74 69 6f 6e 20 | 63 68 61 72 61 63 74 65 |ination |characte|
|000032f0| 72 20 74 6f 20 72 65 63 | 65 69 76 65 20 65 76 65 |r to rec|eive eve|
|00003300| 72 79 74 68 69 6e 67 20 | 61 76 61 69 6c 61 62 6c |rything |availabl|
|00003310| 65 2e 20 57 61 69 74 54 | 69 6d 65 20 69 73 20 74 |e. WaitT|ime is t|
|00003320| 68 65 20 61 6d 6f 75 6e | 74 20 6f 66 20 74 69 6d |he amoun|t of tim|
|00003330| 65 20 74 6f 20 77 61 69 | 74 0d 58 20 20 20 20 20 |e to wai|t.X |
|00003340| 20 20 20 66 6f 72 20 74 | 68 65 20 69 6e 70 75 74 | for t|he input|
|00003350| 2c 20 69 6e 20 74 69 63 | 6b 73 20 28 36 30 74 68 |, in tic|ks (60th|
|00003360| 73 20 6f 66 20 61 20 73 | 65 63 6f 6e 64 29 2e 20 |s of a s|econd). |
|00003370| 45 63 68 6f 20 69 73 20 | 74 72 75 65 20 74 6f 20 |Echo is |true to |
|00003380| 65 6e 61 62 6c 65 20 65 | 63 68 6f 69 6e 67 2e 20 |enable e|choing. |
|00003390| 45 64 69 74 20 69 73 20 | 74 72 75 65 20 74 6f 20 |Edit is |true to |
|000033a0| 65 6e 61 62 6c 65 20 65 | 64 69 74 0d 58 20 20 20 |enable e|dit.X |
|000033b0| 20 20 20 20 20 63 68 61 | 72 61 63 74 65 72 73 20 | cha|racters |
|000033c0| 28 69 2e 65 2e 2c 20 62 | 61 63 6b 73 70 61 63 65 |(i.e., b|ackspace|
|000033d0| 29 2e 20 6f 6c 64 53 74 | 72 69 6e 67 20 69 73 20 |). oldSt|ring is |
|000033e0| 77 68 61 74 20 77 61 73 | 20 72 65 61 64 20 74 68 |what was| read th|
|000033f0| 65 20 6c 61 73 74 20 63 | 61 6c 6c 20 28 70 72 65 |e last c|all (pre|
|00003400| 73 75 6d 61 62 6c 79 20 | 74 65 72 6d 69 6e 61 74 |sumably |terminat|
|00003410| 65 64 0d 58 20 20 20 20 | 20 20 20 20 64 75 65 20 |ed.X | due |
|00003420| 74 6f 20 61 20 74 69 6d | 65 2d 6f 75 74 29 2e 0d |to a tim|e-out)..|
|00003430| 58 0d 58 20 20 20 20 54 | 6f 20 63 6f 6d 70 69 6c |X.X T|o compil|
|00003440| 65 20 61 6e 64 20 6c 69 | 6e 6b 20 74 68 69 73 20 |e and li|nk this |
|00003450| 66 69 6c 65 20 75 73 69 | 6e 67 20 4d 61 63 69 6e |file usi|ng Macin|
|00003460| 74 6f 73 68 20 50 72 6f | 67 72 61 6d 6d 65 72 27 |tosh Pro|grammer'|
|00003470| 73 20 57 6f 72 6b 73 68 | 6f 70 2c 0d 58 0d 58 20 |s Worksh|op,.X.X |
|00003480| 20 20 20 70 61 73 63 61 | 6c 20 2d 77 20 72 65 63 | pasca|l -w rec|
|00003490| 76 53 74 72 69 6e 67 2e | 70 0d 58 20 20 20 20 6c |vString.|p.X l|
|000034a0| 69 6e 6b 20 2d 6d 20 45 | 4e 54 52 59 50 4f 49 4e |ink -m E|NTRYPOIN|
|000034b0| 54 20 2d 6f 20 48 79 70 | 65 72 43 6f 6d 6d 61 6e |T -o Hyp|erComman|
|000034c0| 64 73 20 2d 72 74 20 58 | 46 43 4e 3d 30 20 2d 73 |ds -rt X|FCN=0 -s|
|000034d0| 6e 20 4d 61 69 6e 3d 72 | 65 63 76 55 70 54 6f 20 |n Main=r|ecvUpTo |
|000034e0| 72 65 63 76 53 74 72 69 | 6e 67 2e 70 2e 6f 20 22 |recvStri|ng.p.o "|
|000034f0| 7b 4d 50 57 7d 22 4c 69 | 62 72 61 72 69 65 73 3a |{MPW}"Li|braries:|
|00003500| 69 6e 74 65 72 66 61 63 | 65 2e 6f 0d 58 0d 58 2a |interfac|e.o.X.X*|
|00003510| 29 0d 58 0d 58 7b 24 53 | 20 72 65 63 76 53 74 72 |).X.X{$S| recvStr|
|00003520| 69 6e 67 20 7d 20 20 20 | 20 7b 20 53 65 67 6d 65 |ing } | { Segme|
|00003530| 6e 74 20 6e 61 6d 65 20 | 6d 75 73 74 20 62 65 20 |nt name |must be |
|00003540| 74 68 65 20 73 61 6d 65 | 20 61 73 20 74 68 65 20 |the same| as the |
|00003550| 63 6f 6d 6d 61 6e 64 20 | 6e 61 6d 65 2e 20 7d 0d |command |name. }.|
|00003560| 58 0d 58 75 6e 69 74 20 | 44 75 6d 6d 79 55 6e 69 |X.Xunit |DummyUni|
|00003570| 74 3b 0d 58 0d 58 69 6e | 74 65 72 66 61 63 65 0d |t;.X.Xin|terface.|
|00003580| 58 0d 58 75 73 65 73 20 | 4d 65 6d 54 79 70 65 73 |X.Xuses |MemTypes|
|00003590| 2c 20 51 75 69 63 6b 44 | 72 61 77 2c 20 4f 53 49 |, QuickD|raw, OSI|
|000035a0| 6e 74 66 2c 20 54 6f 6f | 6c 49 6e 74 66 2c 20 48 |ntf, Too|lIntf, H|
|000035b0| 79 70 65 72 58 43 6d 64 | 3b 0d 58 0d 58 70 72 6f |yperXCmd|;.X.Xpro|
|000035c0| 63 65 64 75 72 65 20 45 | 6e 74 72 79 50 6f 69 6e |cedure E|ntryPoin|
|000035d0| 74 28 70 61 72 61 6d 50 | 74 72 3a 20 58 43 6d 64 |t(paramP|tr: XCmd|
|000035e0| 50 74 72 29 3b 0d 58 0d | 58 69 6d 70 6c 65 6d 65 |Ptr);.X.|Ximpleme|
|000035f0| 6e 74 61 74 69 6f 6e 0d | 58 0d 58 63 6f 6e 73 74 |ntation.|X.Xconst|
|00003600| 0d 58 0d 58 72 65 74 75 | 72 6e 20 3d 20 63 68 72 |.X.Xretu|rn = chr|
|00003610| 28 31 33 29 3b 0d 58 6c | 69 6e 65 66 65 65 64 20 |(13);.Xl|inefeed |
|00003620| 3d 20 63 68 72 28 31 30 | 29 3b 0d 58 62 73 20 3d |= chr(10|);.Xbs =|
|00003630| 20 63 68 72 28 38 29 3b | 0d 58 0d 58 74 79 70 65 | chr(8);|.X.Xtype|
|00003640| 0d 58 0d 58 53 74 72 33 | 31 20 3d 20 53 74 72 69 |.X.XStr3|1 = Stri|
|00003650| 6e 67 5b 33 31 5d 3b 0d | 58 0d 58 70 72 6f 63 65 |ng[31];.|X.Xproce|
|00003660| 64 75 72 65 20 72 65 63 | 76 53 74 72 69 6e 67 28 |dure rec|vString(|
|00003670| 70 61 72 61 6d 50 74 72 | 3a 20 58 43 6d 64 50 74 |paramPtr|: XCmdPt|
|00003680| 72 29 3b 20 66 6f 72 77 | 61 72 64 3b 0d 58 0d 58 |r); forw|ard;.X.X|
|00003690| 70 72 6f 63 65 64 75 72 | 65 20 45 6e 74 72 79 50 |procedur|e EntryP|
|000036a0| 6f 69 6e 74 28 70 61 72 | 61 6d 50 74 72 3a 20 58 |oint(par|amPtr: X|
|000036b0| 43 6d 64 50 74 72 29 3b | 0d 58 0d 58 20 20 20 20 |CmdPtr);|.X.X |
|000036c0| 62 65 67 69 6e 0d 58 20 | 20 20 20 20 20 20 20 72 |begin.X | r|
|000036d0| 65 63 76 53 74 72 69 6e | 67 28 70 61 72 61 6d 50 |ecvStrin|g(paramP|
|000036e0| 74 72 29 3b 0d 58 20 20 | 20 20 65 6e 64 3b 0d 58 |tr);.X | end;.X|
|000036f0| 0d 58 70 72 6f 63 65 64 | 75 72 65 20 72 65 63 76 |.Xproced|ure recv|
|00003700| 53 74 72 69 6e 67 28 70 | 61 72 61 6d 50 74 72 3a |String(p|aramPtr:|
|00003710| 20 58 43 6d 64 50 74 72 | 29 3b 0d 58 0d 58 20 20 | XCmdPtr|);.X.X |
|00003720| 20 20 76 61 72 20 70 6f | 72 74 4e 75 6d 62 65 72 | var po|rtNumber|
|00003730| 3a 20 69 6e 74 65 67 65 | 72 3b 0d 58 20 20 20 20 |: intege|r;.X |
|00003740| 20 20 20 20 69 6e 50 6f | 72 74 2c 20 6f 75 74 50 | inPo|rt, outP|
|00003750| 6f 72 74 3a 20 69 6e 74 | 65 67 65 72 3b 0d 58 20 |ort: int|eger;.X |
|00003760| 20 20 20 20 20 20 20 73 | 74 72 3a 20 53 74 72 32 | s|tr: Str2|
|00003770| 35 35 3b 0d 58 20 20 20 | 20 20 20 20 20 6c 3a 20 |55;.X | l: |
|00003780| 6c 6f 6e 67 49 6e 74 3b | 0d 58 20 20 20 20 20 20 |longInt;|.X |
|00003790| 20 20 77 61 69 74 46 6f | 72 43 68 61 72 73 3a 20 | waitFo|rChars: |
|000037a0| 6c 6f 6e 67 49 6e 74 3b | 0d 58 20 20 20 20 20 20 |longInt;|.X |
|000037b0| 20 20 6c 6f 6f 6b 46 6f | 72 54 65 72 6d 3a 20 62 | lookFo|rTerm: b|
|000037c0| 6f 6f 6c 65 61 6e 3b 0d | 58 20 20 20 20 20 20 20 |oolean;.|X |
|000037d0| 20 74 65 72 6d 43 68 61 | 72 3a 20 63 68 61 72 3b | termCha|r: char;|
|000037e0| 0d 58 20 20 20 20 20 20 | 20 20 65 63 68 6f 4f 6e |.X | echoOn|
|000037f0| 3a 20 62 6f 6f 6c 65 61 | 6e 3b 0d 58 20 20 20 20 |: boolea|n;.X |
|00003800| 20 20 20 20 65 64 69 74 | 4f 6e 3a 20 62 6f 6f 6c | edit|On: bool|
|00003810| 65 61 6e 3b 0d 58 20 20 | 20 20 20 20 20 20 6c 69 |ean;.X | li|
|00003820| 6e 65 66 65 65 64 53 74 | 72 3a 20 73 74 72 69 6e |nefeedSt|r: strin|
|00003830| 67 5b 31 5d 3b 0d 58 20 | 20 20 20 20 20 20 20 62 |g[1];.X | b|
|00003840| 73 53 74 72 3a 20 73 74 | 72 69 6e 67 5b 33 5d 3b |sStr: st|ring[3];|
|00003850| 0d 58 20 20 20 20 20 20 | 20 20 72 65 73 75 6c 74 |.X | result|
|00003860| 48 61 6e 64 3a 20 48 61 | 6e 64 6c 65 3b 0d 58 20 |Hand: Ha|ndle;.X |
|00003870| 20 20 20 20 20 20 20 72 | 65 73 75 6c 74 53 69 7a | r|esultSiz|
|00003880| 65 3a 20 6c 6f 6e 67 49 | 6e 74 3b 0d 58 20 20 20 |e: longI|nt;.X |
|00003890| 20 20 20 20 20 74 68 65 | 43 68 61 72 3a 20 63 68 | the|Char: ch|
|000038a0| 61 72 3b 0d 58 20 20 20 | 20 20 20 20 20 70 3a 20 |ar;.X | p: |
|000038b0| 50 74 72 3b 0d 58 0d 58 | 20 20 20 20 7b 24 49 20 |Ptr;.X.X| {$I |
|000038c0| 58 43 6d 64 47 6c 75 65 | 2e 69 6e 63 7d 0d 58 0d |XCmdGlue|.inc}.X.|
|000038d0| 58 20 20 20 20 70 72 6f | 63 65 64 75 72 65 20 46 |X pro|cedure F|
|000038e0| 61 69 6c 28 65 72 72 4d | 73 67 3a 20 53 74 72 32 |ail(errM|sg: Str2|
|000038f0| 35 35 29 3b 20 7b 20 73 | 65 74 20 74 68 65 52 65 |55); { s|et theRe|
|00003900| 73 75 6c 74 20 61 6e 64 | 20 71 75 69 74 20 7d 0d |sult and| quit }.|
|00003910| 58 20 20 20 20 20 20 20 | 20 62 65 67 69 6e 0d 58 |X | begin.X|
|00003920| 20 20 20 20 20 20 20 20 | 20 20 20 20 70 61 72 61 | | para|
|00003930| 6d 50 74 72 5e 2e 72 65 | 74 75 72 6e 56 61 6c 75 |mPtr^.re|turnValu|
|00003940| 65 20 3a 3d 20 50 61 73 | 54 6f 5a 65 72 6f 28 65 |e := Pas|ToZero(e|
|00003950| 72 72 4d 73 67 29 3b 0d | 58 20 20 20 20 20 20 20 |rrMsg);.|X |
|00003960| 20 20 20 20 20 65 78 69 | 74 28 72 65 63 76 53 74 | exi|t(recvSt|
|00003970| 72 69 6e 67 29 3b 0d 58 | 20 20 20 20 20 20 20 20 |ring);.X| |
|00003980| 65 6e 64 3b 0d 58 0d 58 | 20 20 20 20 62 65 67 69 |end;.X.X| begi|
|00003990| 6e 0d 58 20 20 20 20 20 | 20 20 20 69 66 20 70 61 |n.X | if pa|
|000039a0| 72 61 6d 50 74 72 5e 2e | 70 61 72 61 6d 43 6f 75 |ramPtr^.|paramCou|
|000039b0| 6e 74 20 3c 3e 20 36 20 | 74 68 65 6e 20 46 61 69 |nt <> 6 |then Fai|
|000039c0| 6c 28 27 70 61 72 61 6d | 65 74 65 72 20 63 6f 75 |l('param|eter cou|
|000039d0| 6e 74 20 69 73 20 6e 6f | 74 20 36 27 29 3b 0d 58 |nt is no|t 6');.X|
|000039e0| 0d 58 20 20 20 20 20 20 | 20 20 5a 65 72 6f 54 6f |.X | ZeroTo|
|000039f0| 50 61 73 28 70 61 72 61 | 6d 50 74 72 5e 2e 70 61 |Pas(para|mPtr^.pa|
|00003a00| 72 61 6d 73 5b 31 5d 5e | 2c 73 74 72 29 3b 20 20 |rams[1]^|,str); |
|00003a10| 20 20 20 20 20 20 7b 20 | 46 69 72 73 74 20 70 61 | { |First pa|
|00003a20| 72 61 6d 65 74 65 72 20 | 69 73 20 70 6f 72 74 20 |rameter |is port |
|00003a30| 6e 75 6d 62 65 72 2e 20 | 7d 0d 58 20 20 20 20 20 |number. |}.X |
|00003a40| 20 20 20 70 6f 72 74 4e | 75 6d 62 65 72 20 3a 3d | portN|umber :=|
|00003a50| 20 53 74 72 54 6f 4e 75 | 6d 28 73 74 72 29 3b 0d | StrToNu|m(str);.|
|00003a60| 58 20 20 20 20 20 20 20 | 20 69 66 20 28 70 6f 72 |X | if (por|
|00003a70| 74 4e 75 6d 62 65 72 20 | 3c 20 31 29 20 6f 72 20 |tNumber |< 1) or |
|00003a80| 28 70 6f 72 74 4e 75 6d | 62 65 72 20 3e 20 32 29 |(portNum|ber > 2)|
|00003a90| 20 74 68 65 6e 20 46 61 | 69 6c 28 27 69 6e 76 61 | then Fa|il('inva|
|00003aa0| 6c 69 64 20 70 6f 72 74 | 20 6e 75 6d 62 65 72 27 |lid port| number'|
|00003ab0| 29 3b 0d 58 20 20 20 20 | 20 20 20 20 5a 65 72 6f |);.X | Zero|
|00003ac0| 54 6f 50 61 73 28 70 61 | 72 61 6d 50 74 72 5e 2e |ToPas(pa|ramPtr^.|
|00003ad0| 70 61 72 61 6d 73 5b 32 | 5d 5e 2c 73 74 72 29 3b |params[2|]^,str);|
|00003ae0| 20 20 20 20 20 20 20 20 | 7b 20 53 65 63 6f 6e 64 | |{ Second|
|00003af0| 20 70 61 72 61 6d 65 74 | 65 72 20 69 73 20 74 65 | paramet|er is te|
|00003b00| 72 6d 69 6e 61 74 69 6f | 6e 20 63 68 61 72 61 63 |rminatio|n charac|
|00003b10| 74 65 72 2e 20 7d 0d 58 | 20 20 20 20 20 20 20 20 |ter. }.X| |
|00003b20| 69 66 20 6c 65 6e 67 74 | 68 28 73 74 72 29 20 3d |if lengt|h(str) =|
|00003b30| 20 30 20 74 68 65 6e 20 | 6c 6f 6f 6b 46 6f 72 54 | 0 then |lookForT|
|00003b40| 65 72 6d 20 3a 3d 20 66 | 61 6c 73 65 0d 58 20 20 |erm := f|alse.X |
|00003b50| 20 20 20 20 20 20 65 6c | 73 65 0d 58 20 20 20 20 | el|se.X |
|00003b60| 20 20 20 20 20 20 20 20 | 62 65 67 69 6e 0d 58 20 | |begin.X |
|00003b70| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 6c | | l|
|00003b80| 6f 6f 6b 46 6f 72 54 65 | 72 6d 20 3a 3d 20 74 72 |ookForTe|rm := tr|
|00003b90| 75 65 3b 0d 58 20 20 20 | 20 20 20 20 20 20 20 20 |ue;.X | |
|00003ba0| 20 20 20 20 20 74 65 72 | 6d 43 68 61 72 20 3a 3d | ter|mChar :=|
|00003bb0| 20 73 74 72 5b 31 5d 3b | 0d 58 20 20 20 20 20 20 | str[1];|.X |
|00003bc0| 20 20 20 20 20 20 65 6e | 64 3b 0d 58 20 20 20 20 | en|d;.X |
|00003bd0| 20 20 20 20 5a 65 72 6f | 54 6f 50 61 73 28 70 61 | Zero|ToPas(pa|
|00003be0| 72 61 6d 50 74 72 5e 2e | 70 61 72 61 6d 73 5b 33 |ramPtr^.|params[3|
|00003bf0| 5d 5e 2c 73 74 72 29 3b | 20 20 20 20 20 20 20 20 |]^,str);| |
|00003c00| 7b 20 54 68 69 72 64 20 | 70 61 72 61 6d 65 74 65 |{ Third |paramete|
|00003c10| 72 20 69 73 20 77 68 65 | 74 68 65 72 20 74 6f 20 |r is whe|ther to |
|00003c20| 77 61 69 74 2e 20 7d 0d | 58 20 20 20 20 20 20 20 |wait. }.|X |
|00003c30| 20 77 61 69 74 46 6f 72 | 43 68 61 72 73 20 3a 3d | waitFor|Chars :=|
|00003c40| 20 53 74 72 54 6f 4e 75 | 6d 28 73 74 72 29 3b 0d | StrToNu|m(str);.|
|00003c50| 58 20 20 20 20 20 20 20 | 20 5a 65 72 6f 54 6f 50 |X | ZeroToP|
|00003c60| 61 73 28 70 61 72 61 6d | 50 74 72 5e 2e 70 61 72 |as(param|Ptr^.par|
|00003c70| 61 6d 73 5b 34 5d 5e 2c | 73 74 72 29 3b 20 20 20 |ams[4]^,|str); |
|00003c80| 20 20 20 20 20 7b 20 46 | 6f 75 72 74 68 20 70 61 | { F|ourth pa|
|00003c90| 72 61 6d 65 74 65 72 20 | 69 73 20 77 68 65 74 68 |rameter |is wheth|
|00003ca0| 65 72 20 74 6f 20 65 63 | 68 6f 2e 20 7d 0d 58 20 |er to ec|ho. }.X |
|00003cb0| 20 20 20 20 20 20 20 65 | 63 68 6f 4f 6e 20 3a 3d | e|choOn :=|
|00003cc0| 20 66 61 6c 73 65 3b 0d | 58 20 20 20 20 20 20 20 | false;.|X |
|00003cd0| 20 69 66 20 6c 65 6e 67 | 74 68 28 73 74 72 29 20 | if leng|th(str) |
|00003ce0| 3e 20 30 20 74 68 65 6e | 0d 58 20 20 20 20 20 20 |> 0 then|.X |
|00003cf0| 20 20 20 20 20 20 69 66 | 20 28 73 74 72 5b 31 5d | if| (str[1]|
|00003d00| 20 3d 20 27 74 27 29 20 | 6f 72 20 28 73 74 72 5b | = 't') |or (str[|
|00003d10| 31 5d 20 3d 20 27 54 27 | 29 20 74 68 65 6e 20 65 |1] = 'T'|) then e|
|00003d20| 63 68 6f 4f 6e 20 3a 3d | 20 74 72 75 65 3b 0d 58 |choOn :=| true;.X|
|00003d30| 20 20 20 20 20 20 20 20 | 5a 65 72 6f 54 6f 50 61 | |ZeroToPa|
|00003d40| 73 28 70 61 72 61 6d 50 | 74 72 5e 2e 70 61 72 61 |s(paramP|tr^.para|
|00003d50| 6d 73 5b 35 5d 5e 2c 73 | 74 72 29 3b 20 20 20 20 |ms[5]^,s|tr); |
|00003d60| 20 20 20 20 7b 20 46 69 | 66 74 68 20 70 61 72 61 | { Fi|fth para|
|00003d70| 6d 65 74 65 72 20 69 73 | 20 77 68 65 74 68 65 72 |meter is| whether|
|00003d80| 20 74 6f 20 65 64 69 74 | 2e 20 7d 0d 58 20 20 20 | to edit|. }.X |
|00003d90| 20 20 20 20 20 65 64 69 | 74 4f 6e 20 3a 3d 20 66 | edi|tOn := f|
|00003da0| 61 6c 73 65 3b 0d 58 20 | 20 20 20 20 20 20 20 69 |alse;.X | i|
|00003db0| 66 20 6c 65 6e 67 74 68 | 28 73 74 72 29 20 3e 20 |f length|(str) > |
|00003dc0| 30 20 74 68 65 6e 0d 58 | 20 20 20 20 20 20 20 20 |0 then.X| |
|00003dd0| 20 20 20 20 69 66 20 28 | 73 74 72 5b 31 5d 20 3d | if (|str[1] =|
|00003de0| 20 27 74 27 29 20 6f 72 | 20 28 73 74 72 5b 31 5d | 't') or| (str[1]|
|00003df0| 20 3d 20 27 54 27 29 20 | 74 68 65 6e 20 65 64 69 | = 'T') |then edi|
|00003e00| 74 4f 6e 20 3a 3d 20 74 | 72 75 65 3b 0d 58 20 20 |tOn := t|rue;.X |
|00003e10| 20 20 20 20 20 20 72 65 | 73 75 6c 74 48 61 6e 64 | re|sultHand|
|00003e20| 20 3a 3d 20 70 61 72 61 | 6d 50 74 72 5e 2e 70 61 | := para|mPtr^.pa|
|00003e30| 72 61 6d 73 5b 36 5d 3b | 20 20 20 20 20 20 20 20 |rams[6];| |
|00003e40| 20 20 7b 20 53 69 78 74 | 68 20 70 61 72 61 6d 65 | { Sixt|h parame|
|00003e50| 74 65 72 20 69 73 20 74 | 68 65 20 6f 6c 64 20 73 |ter is t|he old s|
|00003e60| 74 72 69 6e 67 2e 20 7d | 0d 58 20 20 20 20 20 20 |tring. }|.X |
|00003e70| 20 20 69 66 20 72 65 73 | 75 6c 74 48 61 6e 64 20 | if res|ultHand |
|00003e80| 3d 20 4e 49 4c 20 74 68 | 65 6e 20 46 61 69 6c 28 |= NIL th|en Fail(|
|00003e90| 27 4e 49 4c 20 72 65 73 | 75 6c 74 48 61 6e 64 6c |'NIL res|ultHandl|
|00003ea0| 65 21 27 29 3b 0d 58 20 | 20 20 20 20 20 20 20 6c |e!');.X | l|
|00003eb0| 20 3a 3d 20 47 65 74 48 | 61 6e 64 6c 65 53 69 7a | := GetH|andleSiz|
|00003ec0| 65 28 72 65 73 75 6c 74 | 48 61 6e 64 29 3b 0d 58 |e(result|Hand);.X|
|00003ed0| 20 20 20 20 20 20 20 20 | 70 20 3a 3d 20 72 65 73 | |p := res|
|00003ee0| 75 6c 74 48 61 6e 64 5e | 3b 0d 58 20 20 20 20 20 |ultHand^|;.X |
|00003ef0| 20 20 20 72 65 73 75 6c | 74 53 69 7a 65 20 3a 3d | resul|tSize :=|
|00003f00| 20 31 3b 0d 58 20 20 20 | 20 20 20 20 20 77 68 69 | 1;.X | whi|
|00003f10| 6c 65 20 72 65 73 75 6c | 74 53 69 7a 65 20 3c 20 |le resul|tSize < |
|00003f20| 6c 20 64 6f 0d 58 20 20 | 20 20 20 20 20 20 20 20 |l do.X | |
|00003f30| 20 20 62 65 67 69 6e 0d | 58 20 20 20 20 20 20 20 | begin.|X |
|00003f40| 20 20 20 20 20 20 20 20 | 20 69 66 20 70 5e 20 3d | | if p^ =|
|00003f50| 20 30 20 74 68 65 6e 20 | 6c 65 61 76 65 3b 0d 58 | 0 then |leave;.X|
|00003f60| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003f70| 70 20 3a 3d 20 50 74 72 | 28 6f 72 64 34 28 70 29 |p := Ptr|(ord4(p)|
|00003f80| 2b 31 29 3b 0d 58 20 20 | 20 20 20 20 20 20 20 20 |+1);.X | |
|00003f90| 20 20 20 20 20 20 72 65 | 73 75 6c 74 53 69 7a 65 | re|sultSize|
|00003fa0| 20 3a 3d 20 72 65 73 75 | 6c 74 53 69 7a 65 20 2b | := resu|ltSize +|
|00003fb0| 20 31 3b 0d 58 20 20 20 | 20 20 20 20 20 20 20 20 | 1;.X | |
|00003fc0| 20 65 6e 64 3b 0d 58 20 | 20 20 20 20 20 20 20 69 | end;.X | i|
|00003fd0| 66 20 72 65 73 75 6c 74 | 53 69 7a 65 20 3c 20 31 |f result|Size < 1|
|00003fe0| 20 74 68 65 6e 20 46 61 | 69 6c 28 27 49 6e 70 75 | then Fa|il('Inpu|
|00003ff0| 74 20 73 74 72 69 6e 67 | 20 73 69 7a 65 20 74 6f |t string| size to|
|00004000| 6f 20 73 6d 61 6c 6c 21 | 27 29 3b 0d 58 20 20 20 |o small!|');.X |
|00004010| 20 20 20 20 20 69 66 20 | 48 61 6e 64 54 6f 48 61 | if |HandToHa|
|00004020| 6e 64 28 72 65 73 75 6c | 74 48 61 6e 64 29 20 3c |nd(resul|tHand) <|
|00004030| 3e 20 6e 6f 45 72 72 20 | 74 68 65 6e 20 46 61 69 |> noErr |then Fai|
|00004040| 6c 28 27 48 61 6e 64 54 | 6f 48 61 6e 64 20 66 61 |l('HandT|oHand fa|
|00004050| 69 6c 65 64 21 27 29 3b | 0d 58 20 20 20 20 20 20 |iled!');|.X |
|00004060| 20 20 72 65 73 75 6c 74 | 53 69 7a 65 20 3a 3d 20 | result|Size := |
|00004070| 72 65 73 75 6c 74 53 69 | 7a 65 2d 31 3b 0d 58 20 |resultSi|ze-1;.X |
|00004080| 20 20 20 20 20 20 20 53 | 65 74 48 61 6e 64 6c 65 | S|etHandle|
|00004090| 53 69 7a 65 28 72 65 73 | 75 6c 74 48 61 6e 64 2c |Size(res|ultHand,|
|000040a0| 72 65 73 75 6c 74 53 69 | 7a 65 29 3b 0d 58 0d 58 |resultSi|ze);.X.X|
|000040b0| 20 20 20 20 20 20 20 20 | 69 66 20 70 6f 72 74 4e | |if portN|
|000040c0| 75 6d 62 65 72 20 3d 20 | 31 20 74 68 65 6e 0d 58 |umber = |1 then.X|
|000040d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 62 65 67 69 | | begi|
|000040e0| 6e 0d 58 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |n.X | |
|000040f0| 20 20 20 69 6e 50 6f 72 | 74 20 3a 3d 20 2d 36 3b | inPor|t := -6;|
|00004100| 0d 58 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |.X | |
|00004110| 20 20 6f 75 74 50 6f 72 | 74 20 3a 3d 20 2d 37 3b | outPor|t := -7;|
|00004120| 0d 58 20 20 20 20 20 20 | 20 20 20 20 20 20 65 6e |.X | en|
|00004130| 64 0d 58 20 20 20 20 20 | 20 20 20 65 6c 73 65 0d |d.X | else.|
|00004140| 58 20 20 20 20 20 20 20 | 20 20 20 20 20 62 65 67 |X | beg|
|00004150| 69 6e 0d 58 20 20 20 20 | 20 20 20 20 20 20 20 20 |in.X | |
|00004160| 20 20 20 20 69 6e 50 6f | 72 74 20 3a 3d 20 2d 38 | inPo|rt := -8|
|00004170| 3b 0d 58 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |;.X | |
|00004180| 20 20 20 6f 75 74 50 6f | 72 74 20 3a 3d 20 2d 39 | outPo|rt := -9|
|00004190| 3b 0d 58 20 20 20 20 20 | 20 20 20 20 20 20 20 65 |;.X | e|
|000041a0| 6e 64 3b 0d 58 20 20 20 | 20 20 20 20 20 6c 69 6e |nd;.X | lin|
|000041b0| 65 66 65 65 64 53 74 72 | 5b 30 5d 20 3a 3d 20 63 |efeedStr|[0] := c|
|000041c0| 68 72 28 31 29 3b 20 6c | 69 6e 65 66 65 65 64 53 |hr(1); l|inefeedS|
|000041d0| 74 72 5b 31 5d 20 3a 3d | 20 6c 69 6e 65 66 65 65 |tr[1] :=| linefee|
|000041e0| 64 3b 0d 58 20 20 20 20 | 20 20 20 20 62 73 53 74 |d;.X | bsSt|
|000041f0| 72 20 3a 3d 20 27 20 20 | 20 27 3b 20 62 73 53 74 |r := ' | '; bsSt|
|00004200| 72 5b 31 5d 20 3a 3d 20 | 62 73 3b 20 62 73 53 74 |r[1] := |bs; bsSt|
|00004210| 72 5b 33 5d 20 3a 3d 20 | 62 73 3b 0d 58 20 20 20 |r[3] := |bs;.X |
|00004220| 20 20 20 20 20 77 61 69 | 74 46 6f 72 43 68 61 72 | wai|tForChar|
|00004230| 73 20 3a 3d 20 77 61 69 | 74 46 6f 72 43 68 61 72 |s := wai|tForChar|
|00004240| 73 20 2b 20 54 69 63 6b | 43 6f 75 6e 74 3b 0d 58 |s + Tick|Count;.X|
|00004250| 20 20 20 20 20 20 20 20 | 77 68 69 6c 65 20 54 69 | |while Ti|
|00004260| 63 6b 43 6f 75 6e 74 20 | 3c 3d 20 77 61 69 74 46 |ckCount |<= waitF|
|00004270| 6f 72 43 68 61 72 73 20 | 64 6f 0d 58 20 20 20 20 |orChars |do.X |
|00004280| 20 20 20 20 20 20 20 20 | 62 65 67 69 6e 0d 58 20 | |begin.X |
|00004290| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 69 | | i|
|000042a0| 66 20 53 65 72 47 65 74 | 42 75 66 28 69 6e 50 6f |f SerGet|Buf(inPo|
|000042b0| 72 74 2c 6c 29 20 3c 3e | 20 6e 6f 45 72 72 20 74 |rt,l) <>| noErr t|
|000042c0| 68 65 6e 0d 58 20 20 20 | 20 20 20 20 20 20 20 20 |hen.X | |
|000042d0| 20 20 20 20 20 20 20 20 | 20 62 65 67 69 6e 0d 58 | | begin.X|
|000042e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000042f0| 20 20 20 20 20 20 20 20 | 44 69 73 70 6f 73 48 61 | |DisposHa|
|00004300| 6e 64 6c 65 28 72 65 73 | 75 6c 74 48 61 6e 64 29 |ndle(res|ultHand)|
|00004310| 3b 0d 58 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |;.X | |
|00004320| 20 20 20 20 20 20 20 20 | 20 20 20 46 61 69 6c 28 | | Fail(|
|00004330| 27 53 65 72 47 65 74 42 | 75 66 20 66 61 69 6c 65 |'SerGetB|uf faile|
|00004340| 64 27 29 3b 0d 58 20 20 | 20 20 20 20 20 20 20 20 |d');.X | |
|00004350| 20 20 20 20 20 20 20 20 | 20 20 65 6e 64 3b 0d 58 | | end;.X|
|00004360| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004370| 69 66 20 6c 20 3d 20 30 | 20 74 68 65 6e 20 63 79 |if l = 0| then cy|
|00004380| 63 6c 65 3b 0d 58 20 20 | 20 20 20 20 20 20 20 20 |cle;.X | |
|00004390| 20 20 20 20 20 20 6c 20 | 3a 3d 20 31 3b 0d 58 20 | l |:= 1;.X |
|000043a0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 72 | | r|
|000043b0| 65 73 75 6c 74 53 69 7a | 65 20 3a 3d 20 72 65 73 |esultSiz|e := res|
|000043c0| 75 6c 74 53 69 7a 65 2b | 31 3b 0d 58 20 20 20 20 |ultSize+|1;.X |
|000043d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 53 65 74 48 | | SetH|
|000043e0| 61 6e 64 6c 65 53 69 7a | 65 28 72 65 73 75 6c 74 |andleSiz|e(result|
|000043f0| 48 61 6e 64 2c 72 65 73 | 75 6c 74 53 69 7a 65 29 |Hand,res|ultSize)|
|00004400| 3b 0d 58 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |;.X | |
|00004410| 20 20 20 69 66 20 4d 65 | 6d 45 72 72 6f 72 20 3c | if Me|mError <|
|00004420| 3e 20 6e 6f 45 72 72 20 | 74 68 65 6e 0d 58 20 20 |> noErr |then.X |
|00004430| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004440| 20 20 62 65 67 69 6e 0d | 58 20 20 20 20 20 20 20 | begin.|X |
|00004450| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004460| 20 44 69 73 70 6f 73 48 | 61 6e 64 6c 65 28 72 65 | DisposH|andle(re|
|00004470| 73 75 6c 74 48 61 6e 64 | 29 3b 0d 58 20 20 20 20 |sultHand|);.X |
|00004480| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004490| 20 20 20 20 46 61 69 6c | 28 27 53 65 74 48 61 6e | Fail|('SetHan|
|000044a0| 64 6c 65 53 69 7a 65 20 | 66 61 69 6c 65 64 21 27 |dleSize |failed!'|
|000044b0| 29 3b 0d 58 20 20 20 20 | 20 20 20 20 20 20 20 20 |);.X | |
|000044c0| 20 20 20 20 20 20 20 20 | 65 6e 64 3b 0d 58 20 20 | |end;.X |
|000044d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 48 4c | | HL|
|000044e0| 6f 63 6b 28 72 65 73 75 | 6c 74 48 61 6e 64 29 3b |ock(resu|ltHand);|
|000044f0| 0d 58 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |.X | |
|00004500| 20 20 69 66 20 46 53 52 | 65 61 64 28 69 6e 50 6f | if FSR|ead(inPo|
|00004510| 72 74 2c 6c 2c 50 74 72 | 28 6f 72 64 34 28 72 65 |rt,l,Ptr|(ord4(re|
|00004520| 73 75 6c 74 48 61 6e 64 | 5e 29 2b 72 65 73 75 6c |sultHand|^)+resul|
|00004530| 74 53 69 7a 65 2d 31 29 | 29 20 3c 3e 20 6e 6f 45 |tSize-1)|) <> noE|
|00004540| 72 72 20 74 68 65 6e 0d | 58 20 20 20 20 20 20 20 |rr then.|X |
|00004550| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 62 65 67 | | beg|
|00004560| 69 6e 0d 58 20 20 20 20 | 20 20 20 20 20 20 20 20 |in.X | |
|00004570| 20 20 20 20 20 20 20 20 | 20 20 20 20 44 69 73 70 | | Disp|
|00004580| 6f 73 48 61 6e 64 6c 65 | 28 72 65 73 75 6c 74 48 |osHandle|(resultH|
|00004590| 61 6e 64 29 3b 0d 58 20 | 20 20 20 20 20 20 20 20 |and);.X | |
|000045a0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 46 | | F|
|000045b0| 61 69 6c 28 27 46 53 52 | 65 61 64 20 66 61 69 6c |ail('FSR|ead fail|
|000045c0| 65 64 27 29 3b 0d 58 20 | 20 20 20 20 20 20 20 20 |ed');.X | |
|000045d0| 20 20 20 20 20 20 20 20 | 20 20 20 65 6e 64 3b 0d | | end;.|
|000045e0| 58 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |X | |
|000045f0| 20 48 55 6e 6c 6f 63 6b | 28 72 65 73 75 6c 74 48 | HUnlock|(resultH|
|00004600| 61 6e 64 29 3b 0d 58 20 | 20 20 20 20 20 20 20 20 |and);.X | |
|00004610| 20 20 20 20 20 20 20 70 | 20 3a 3d 20 50 74 72 28 | p| := Ptr(|
|00004620| 6f 72 64 34 28 72 65 73 | 75 6c 74 48 61 6e 64 5e |ord4(res|ultHand^|
|00004630| 29 2b 72 65 73 75 6c 74 | 53 69 7a 65 2d 31 29 3b |)+result|Size-1);|
|00004640| 0d 58 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |.X | |
|00004650| 20 20 70 5e 20 3a 3d 20 | 42 41 4e 44 28 70 5e 2c | p^ := |BAND(p^,|
|00004660| 24 37 46 29 3b 0d 58 20 | 20 20 20 20 20 20 20 20 |$7F);.X | |
|00004670| 20 20 20 20 20 20 20 74 | 68 65 43 68 61 72 20 3a | t|heChar :|
|00004680| 3d 20 63 68 72 28 70 5e | 29 3b 0d 58 20 20 20 20 |= chr(p^|);.X |
|00004690| 20 20 20 20 20 20 20 20 | 20 20 20 20 69 66 20 65 | | if e|
|000046a0| 63 68 6f 4f 6e 20 74 68 | 65 6e 0d 58 20 20 20 20 |choOn th|en.X |
|000046b0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000046c0| 62 65 67 69 6e 0d 58 20 | 20 20 20 20 20 20 20 20 |begin.X | |
|000046d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 6c | | l|
|000046e0| 20 3a 3d 20 31 3b 0d 58 | 20 20 20 20 20 20 20 20 | := 1;.X| |
|000046f0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004700| 69 66 20 46 53 57 72 69 | 74 65 28 6f 75 74 50 6f |if FSWri|te(outPo|
|00004710| 72 74 2c 6c 2c 50 74 72 | 28 6f 72 64 34 28 72 65 |rt,l,Ptr|(ord4(re|
|00004720| 73 75 6c 74 48 61 6e 64 | 5e 29 2b 72 65 73 75 6c |sultHand|^)+resul|
|00004730| 74 53 69 7a 65 2d 31 29 | 29 20 3c 3e 20 6e 6f 45 |tSize-1)|) <> noE|
|00004740| 72 72 20 74 68 65 6e 0d | 58 20 20 20 20 20 20 20 |rr then.|X |
|00004750| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004760| 20 20 20 20 20 46 61 69 | 6c 28 27 46 53 57 72 69 | Fai|l('FSWri|
|00004770| 74 65 72 20 66 61 69 6c | 65 64 27 29 3b 0d 58 20 |ter fail|ed');.X |
|00004780| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004790| 20 20 20 20 20 20 20 69 | 66 20 74 68 65 43 68 61 | i|f theCha|
|000047a0| 72 20 3d 20 72 65 74 75 | 72 6e 20 74 68 65 6e 0d |r = retu|rn then.|
|000047b0| 58 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |X | |
|000047c0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 62 65 67 | | beg|
|000047d0| 69 6e 0d 58 20 20 20 20 | 20 20 20 20 20 20 20 20 |in.X | |
|000047e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000047f0| 20 20 20 20 6c 20 3a 3d | 20 6c 65 6e 67 74 68 28 | l :=| length(|
|00004800| 6c 69 6e 65 66 65 65 64 | 53 74 72 29 3b 0d 58 20 |linefeed|Str);.X |
|00004810| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004820| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 69 | | i|
|00004830| 66 20 46 53 57 72 69 74 | 65 28 6f 75 74 50 6f 72 |f FSWrit|e(outPor|
|00004840| 74 2c 6c 2c 50 74 72 28 | 6f 72 64 34 28 40 6c 69 |t,l,Ptr(|ord4(@li|
|00004850| 6e 65 66 65 65 64 53 74 | 72 29 2b 31 29 29 20 3c |nefeedSt|r)+1)) <|
|00004860| 3e 20 6e 6f 45 72 72 20 | 74 68 65 6e 20 46 61 69 |> noErr |then Fai|
|00004870| 6c 28 27 46 53 57 72 69 | 74 65 20 66 61 69 6c 65 |l('FSWri|te faile|
|00004880| 64 27 29 3b 0d 58 20 20 | 20 20 20 20 20 20 20 20 |d');.X | |
|00004890| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000048a0| 20 20 65 6e 64 3b 0d 58 | 20 20 20 20 20 20 20 20 | end;.X| |
|000048b0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000048c0| 69 66 20 65 64 69 74 4f | 6e 20 61 6e 64 20 28 74 |if editO|n and (t|
|000048d0| 68 65 43 68 61 72 20 3d | 20 62 73 29 20 74 68 65 |heChar =| bs) the|
|000048e0| 6e 0d 58 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |n.X | |
|000048f0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 62 | | b|
|00004900| 65 67 69 6e 0d 58 20 20 | 20 20 20 20 20 20 20 20 |egin.X | |
|00004910| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004920| 20 20 20 20 20 20 6c 20 | 3a 3d 20 6c 65 6e 67 74 | l |:= lengt|
|00004930| 68 28 62 73 53 74 72 29 | 3b 0d 58 20 20 20 20 20 |h(bsStr)|;.X |
|00004940| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004950| 20 20 20 20 20 20 20 20 | 20 20 20 69 66 20 46 53 | | if FS|
|00004960| 57 72 69 74 65 28 6f 75 | 74 50 6f 72 74 2c 6c 2c |Write(ou|tPort,l,|
|00004970| 50 74 72 28 6f 72 64 34 | 28 40 62 73 53 74 72 29 |Ptr(ord4|(@bsStr)|
|00004980| 2b 31 29 29 20 3c 3e 20 | 6e 6f 45 72 72 20 74 68 |+1)) <> |noErr th|
|00004990| 65 6e 20 46 61 69 6c 28 | 27 46 53 57 72 69 74 65 |en Fail(|'FSWrite|
|000049a0| 20 66 61 69 6c 65 64 27 | 29 3b 0d 58 20 20 20 20 | failed'|);.X |
|000049b0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000049c0| 20 20 20 20 20 20 20 20 | 65 6e 64 3b 0d 58 20 20 | |end;.X |
|000049d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000049e0| 20 20 65 6e 64 3b 0d 58 | 20 20 20 20 20 20 20 20 | end;.X| |
|000049f0| 20 20 20 20 20 20 20 20 | 69 66 20 65 64 69 74 4f | |if editO|
|00004a00| 6e 20 74 68 65 6e 0d 58 | 20 20 20 20 20 20 20 20 |n then.X| |
|00004a10| 20 20 20 20 20 20 20 20 | 20 20 20 20 62 65 67 69 | | begi|
|00004a20| 6e 0d 58 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |n.X | |
|00004a30| 20 20 20 20 20 20 20 20 | 20 20 20 69 66 20 74 68 | | if th|
|00004a40| 65 43 68 61 72 20 3d 20 | 62 73 20 74 68 65 6e 0d |eChar = |bs then.|
|00004a50| 58 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |X | |
|00004a60| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 62 65 67 | | beg|
|00004a70| 69 6e 0d 58 20 20 20 20 | 20 20 20 20 20 20 20 20 |in.X | |
|00004a80| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004a90| 20 20 20 20 72 65 73 75 | 6c 74 53 69 7a 65 20 3a | resu|ltSize :|
|00004aa0| 3d 20 72 65 73 75 6c 74 | 53 69 7a 65 2d 32 3b 0d |= result|Size-2;.|
|00004ab0| 58 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |X | |
|00004ac0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004ad0| 20 69 66 20 72 65 73 75 | 6c 74 53 69 7a 65 20 3c | if resu|ltSize <|
|00004ae0| 20 30 20 74 68 65 6e 20 | 72 65 73 75 6c 74 53 69 | 0 then |resultSi|
|00004af0| 7a 65 20 3a 3d 20 30 3b | 0d 58 20 20 20 20 20 20 |ze := 0;|.X |
|00004b00| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004b10| 20 20 20 20 20 20 20 20 | 20 20 53 65 74 48 61 6e | | SetHan|
|00004b20| 64 6c 65 53 69 7a 65 28 | 72 65 73 75 6c 74 48 61 |dleSize(|resultHa|
|00004b30| 6e 64 2c 72 65 73 75 6c | 74 53 69 7a 65 29 3b 0d |nd,resul|tSize);.|
|00004b40| 58 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |X | |
|00004b50| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 65 6e 64 | | end|
|00004b60| 3b 0d 58 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |;.X | |
|00004b70| 20 20 20 20 20 20 20 65 | 6e 64 3b 0d 58 20 20 20 | e|nd;.X |
|00004b80| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 69 66 20 | | if |
|00004b90| 6c 6f 6f 6b 46 6f 72 54 | 65 72 6d 20 74 68 65 6e |lookForT|erm then|
|00004ba0| 0d 58 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |.X | |
|00004bb0| 20 20 20 20 20 20 69 66 | 20 74 68 65 43 68 61 72 | if| theChar|
|00004bc0| 20 3d 20 74 65 72 6d 43 | 68 61 72 20 74 68 65 6e | = termC|har then|
|00004bd0| 20 6c 65 61 76 65 3b 0d | 58 20 20 20 20 20 20 20 | leave;.|X |
|00004be0| 20 20 20 20 20 20 20 20 | 20 69 66 20 72 65 73 75 | | if resu|
|00004bf0| 6c 74 53 69 7a 65 20 3e | 20 33 30 30 30 30 20 74 |ltSize >| 30000 t|
|00004c00| 68 65 6e 20 6c 65 61 76 | 65 3b 0d 58 20 20 20 20 |hen leav|e;.X |
|00004c10| 20 20 20 20 20 20 20 20 | 65 6e 64 3b 0d 58 20 20 | |end;.X |
|00004c20| 20 20 20 20 20 20 53 65 | 74 48 61 6e 64 6c 65 53 | Se|tHandleS|
|00004c30| 69 7a 65 28 72 65 73 75 | 6c 74 48 61 6e 64 2c 72 |ize(resu|ltHand,r|
|00004c40| 65 73 75 6c 74 53 69 7a | 65 2b 31 29 3b 0d 58 20 |esultSiz|e+1);.X |
|00004c50| 20 20 20 20 20 20 20 70 | 20 3a 3d 20 70 74 72 28 | p| := ptr(|
|00004c60| 6f 72 64 34 28 72 65 73 | 75 6c 74 48 61 6e 64 5e |ord4(res|ultHand^|
|00004c70| 29 2b 72 65 73 75 6c 74 | 53 69 7a 65 29 3b 0d 58 |)+result|Size);.X|
|00004c80| 20 20 20 20 20 20 20 20 | 70 5e 20 3a 3d 20 30 3b | |p^ := 0;|
|00004c90| 0d 58 20 20 20 20 20 20 | 20 20 70 61 72 61 6d 50 |.X | paramP|
|00004ca0| 74 72 5e 2e 72 65 74 75 | 72 6e 56 61 6c 75 65 20 |tr^.retu|rnValue |
|00004cb0| 3a 3d 20 72 65 73 75 6c | 74 48 61 6e 64 3b 0d 58 |:= resul|tHand;.X|
|00004cc0| 20 20 20 20 65 6e 64 3b | 0d 58 0d 58 65 6e 64 2e | end;|.X.Xend.|
|00004cd0| 0d 53 48 41 52 5f 45 4f | 46 0d 69 66 20 74 65 73 |.SHAR_EO|F.if tes|
|00004ce0| 74 20 36 37 30 37 20 2d | 6e 65 20 22 60 77 63 20 |t 6707 -|ne "`wc |
|00004cf0| 2d 63 20 3c 20 27 72 65 | 63 76 53 74 72 69 6e 67 |-c < 're|cvString|
|00004d00| 2e 70 27 60 22 0d 74 68 | 65 6e 0d 09 65 63 68 6f |.p'`".th|en..echo|
|00004d10| 20 73 68 61 72 3a 20 65 | 72 72 6f 72 20 74 72 61 | shar: e|rror tra|
|00004d20| 6e 73 6d 69 74 74 69 6e | 67 20 22 27 72 65 63 76 |nsmittin|g "'recv|
|00004d30| 53 74 72 69 6e 67 2e 70 | 27 22 20 27 28 73 68 6f |String.p|'" '(sho|
|00004d40| 75 6c 64 20 68 61 76 65 | 20 62 65 65 6e 20 36 37 |uld have| been 67|
|00004d50| 30 37 20 63 68 61 72 61 | 63 74 65 72 73 29 27 0d |07 chara|cters)'.|
|00004d60| 66 69 0d 66 69 20 23 20 | 65 6e 64 20 6f 66 20 6f |fi.fi # |end of o|
|00004d70| 76 65 72 77 72 69 74 69 | 6e 67 20 63 68 65 63 6b |verwriti|ng check|
|00004d80| 0d 65 63 68 6f 20 73 68 | 61 72 3a 20 65 78 74 72 |.echo sh|ar: extr|
|00004d90| 61 63 74 69 6e 67 20 22 | 27 72 65 63 76 55 70 54 |acting "|'recvUpT|
|00004da0| 6f 2e 70 27 22 20 27 28 | 34 39 38 33 20 63 68 61 |o.p'" '(|4983 cha|
|00004db0| 72 61 63 74 65 72 73 29 | 27 0d 69 66 20 74 65 73 |racters)|'.if tes|
|00004dc0| 74 20 2d 66 20 27 72 65 | 63 76 55 70 54 6f 2e 70 |t -f 're|cvUpTo.p|
|00004dd0| 27 0d 74 68 65 6e 0d 09 | 65 63 68 6f 20 73 68 61 |'.then..|echo sha|
|00004de0| 72 3a 20 77 69 6c 6c 20 | 6e 6f 74 20 6f 76 65 72 |r: will |not over|
|00004df0| 2d 77 72 69 74 65 20 65 | 78 69 73 74 69 6e 67 20 |-write e|xisting |
|00004e00| 66 69 6c 65 20 22 27 72 | 65 63 76 55 70 54 6f 2e |file "'r|ecvUpTo.|
|00004e10| 70 27 22 0d 65 6c 73 65 | 0d 73 65 64 20 27 73 2f |p'".else|.sed 's/|
|00004e20| 5e 58 2f 2f 27 20 3c 3c | 20 5c 53 48 41 52 5f 45 |^X//' <<| \SHAR_E|
|00004e30| 4f 46 20 3e 20 27 72 65 | 63 76 55 70 54 6f 2e 70 |OF > 're|cvUpTo.p|
|00004e40| 27 0d 58 7b 24 52 2d 7d | 0d 58 0d 58 28 2a 0d 58 |'.X{$R-}|.X.X(*.X|
|00004e50| 20 20 20 20 72 65 63 76 | 55 70 54 6f 28 70 6f 72 | recv|UpTo(por|
|00004e60| 74 20 6e 75 6d 62 65 72 | 2c 20 74 65 72 6d 69 6e |t number|, termin|
|00004e70| 61 74 69 6f 6e 20 63 68 | 61 72 61 63 74 65 72 2c |ation ch|aracter,|
|00004e80| 20 77 61 69 74 54 69 6d | 65 2c 20 65 63 68 6f 2c | waitTim|e, echo,|
|00004e90| 20 65 64 69 74 29 20 2d | 2d 20 52 65 74 75 72 6e | edit) -|- Return|
|00004ea0| 20 61 20 73 74 72 69 6e | 67 20 66 72 6f 6d 20 74 | a strin|g from t|
|00004eb0| 68 65 0d 58 20 20 20 20 | 20 20 20 20 73 65 72 69 |he.X | seri|
|00004ec0| 61 6c 20 70 6f 72 74 3b | 20 72 65 74 75 72 6e 20 |al port;| return |
|00004ed0| 65 76 65 72 79 74 68 69 | 6e 67 20 61 76 61 69 6c |everythi|ng avail|
|00004ee0| 61 62 6c 65 2c 20 75 70 | 20 74 6f 20 74 68 65 20 |able, up| to the |
|00004ef0| 74 65 72 6d 69 6e 61 74 | 69 6f 6e 20 63 68 61 72 |terminat|ion char|
|00004f00| 61 63 74 65 72 20 28 69 | 66 20 61 6e 79 29 2e 20 |acter (i|f any). |
|00004f10| 50 61 73 73 20 61 6e 20 | 65 6d 70 74 79 0d 58 20 |Pass an |empty.X |
|00004f20| 20 20 20 20 20 20 20 74 | 65 72 6d 69 6e 61 74 69 | t|erminati|
|00004f30| 6f 6e 20 63 68 61 72 61 | 63 74 65 72 20 74 6f 20 |on chara|cter to |
|00004f40| 72 65 63 65 69 76 65 20 | 65 76 65 72 79 74 68 69 |receive |everythi|
|00004f50| 6e 67 20 61 76 61 69 6c | 61 62 6c 65 2e 20 57 61 |ng avail|able. Wa|
|00004f60| 69 74 54 69 6d 65 20 69 | 73 20 74 68 65 20 61 6d |itTime i|s the am|
|00004f70| 6f 75 6e 74 20 6f 66 20 | 74 69 6d 65 20 74 6f 20 |ount of |time to |
|00004f80| 77 61 69 74 0d 58 20 20 | 20 20 20 20 20 20 66 6f |wait.X | fo|
|00004f90| 72 20 74 68 65 20 69 6e | 70 75 74 2c 20 69 6e 20 |r the in|put, in |
|00004fa0| 74 69 63 6b 73 20 28 36 | 30 74 68 73 20 6f 66 20 |ticks (6|0ths of |
|00004fb0| 61 20 73 65 63 6f 6e 64 | 29 2e 20 45 63 68 6f 20 |a second|). Echo |
|00004fc0| 69 73 20 74 72 75 65 20 | 74 6f 20 65 6e 61 62 6c |is true |to enabl|
|00004fd0| 65 20 65 63 68 6f 69 6e | 67 2e 20 45 64 69 74 20 |e echoin|g. Edit |
|00004fe0| 69 73 0d 58 20 20 20 20 | 20 20 20 20 74 72 75 65 |is.X | true|
|00004ff0| 20 74 6f 20 65 6e 61 62 | 6c 65 20 65 64 69 74 20 | to enab|le edit |
|00005000| 63 68 61 72 61 63 74 65 | 72 73 20 28 69 2e 65 2e |characte|rs (i.e.|
|00005010| 2c 20 62 61 63 6b 73 70 | 61 63 65 29 2e 0d 58 0d |, backsp|ace)..X.|
|00005020| 58 20 20 20 20 54 6f 20 | 63 6f 6d 70 69 6c 65 20 |X To |compile |
|00005030| 61 6e 64 20 6c 69 6e 6b | 20 74 68 69 73 20 66 69 |and link| this fi|
|00005040| 6c 65 20 75 73 69 6e 67 | 20 4d 61 63 69 6e 74 6f |le using| Macinto|
|00005050| 73 68 20 50 72 6f 67 72 | 61 6d 6d 65 72 27 73 20 |sh Progr|ammer's |
|00005060| 57 6f 72 6b 73 68 6f 70 | 2c 0d 58 0d 58 20 20 20 |Workshop|,.X.X |
|00005070| 20 70 61 73 63 61 6c 20 | 2d 77 20 72 65 63 76 55 | pascal |-w recvU|
|00005080| 70 54 6f 2e 70 0d 58 20 | 20 20 20 6c 69 6e 6b 20 |pTo.p.X | link |
|00005090| 2d 6d 20 45 4e 54 52 59 | 50 4f 49 4e 54 20 2d 6f |-m ENTRY|POINT -o|
|000050a0| 20 48 79 70 65 72 43 6f | 6d 6d 61 6e 64 73 20 2d | HyperCo|mmands -|
|000050b0| 72 74 20 58 46 43 4e 3d | 30 20 2d 73 6e 20 4d 61 |rt XFCN=|0 -sn Ma|
|000050c0| 69 6e 3d 72 65 63 76 55 | 70 54 6f 20 72 65 63 76 |in=recvU|pTo recv|
|000050d0| 55 70 54 6f 2e 70 2e 6f | 20 22 7b 4d 50 57 7d 22 |UpTo.p.o| "{MPW}"|
|000050e0| 4c 69 62 72 61 72 69 65 | 73 3a 69 6e 74 65 72 66 |Librarie|s:interf|
|000050f0| 61 63 65 2e 6f 0d 58 0d | 58 2a 29 0d 58 0d 58 7b |ace.o.X.|X*).X.X{|
|00005100| 24 53 20 72 65 63 76 55 | 70 54 6f 20 7d 20 20 7b |$S recvU|pTo } {|
|00005110| 20 53 65 67 6d 65 6e 74 | 20 6e 61 6d 65 20 6d 75 | Segment| name mu|
|00005120| 73 74 20 62 65 20 74 68 | 65 20 73 61 6d 65 20 61 |st be th|e same a|
|00005130| 73 20 74 68 65 20 63 6f | 6d 6d 61 6e 64 20 6e 61 |s the co|mmand na|
|00005140| 6d 65 2e 20 7d 0d 58 0d | 58 75 6e 69 74 20 44 75 |me. }.X.|Xunit Du|
|00005150| 6d 6d 79 55 6e 69 74 3b | 0d 58 0d 58 69 6e 74 65 |mmyUnit;|.X.Xinte|
|00005160| 72 66 61 63 65 0d 58 0d | 58 75 73 65 73 20 4d 65 |rface.X.|Xuses Me|
|00005170| 6d 54 79 70 65 73 2c 20 | 51 75 69 63 6b 44 72 61 |mTypes, |QuickDra|
|00005180| 77 2c 20 4f 53 49 6e 74 | 66 2c 20 54 6f 6f 6c 49 |w, OSInt|f, ToolI|
|00005190| 6e 74 66 2c 20 48 79 70 | 65 72 58 43 6d 64 3b 0d |ntf, Hyp|erXCmd;.|
|000051a0| 58 0d 58 70 72 6f 63 65 | 64 75 72 65 20 45 6e 74 |X.Xproce|dure Ent|
|000051b0| 72 79 50 6f 69 6e 74 28 | 70 61 72 61 6d 50 74 72 |ryPoint(|paramPtr|
|000051c0| 3a 20 58 43 6d 64 50 74 | 72 29 3b 0d 58 0d 58 69 |: XCmdPt|r);.X.Xi|
|000051d0| 6d 70 6c 65 6d 65 6e 74 | 61 74 69 6f 6e 0d 58 0d |mplement|ation.X.|
|000051e0| 58 63 6f 6e 73 74 0d 58 | 0d 58 72 65 74 75 72 6e |Xconst.X|.Xreturn|
|000051f0| 20 3d 20 63 68 72 28 31 | 33 29 3b 0d 58 6c 69 6e | = chr(1|3);.Xlin|
|00005200| 65 66 65 65 64 20 3d 20 | 63 68 72 28 31 30 29 3b |efeed = |chr(10);|
|00005210| 0d 58 62 73 20 3d 20 63 | 68 72 28 38 29 3b 0d 58 |.Xbs = c|hr(8);.X|
|00005220| 0d 58 74 79 70 65 0d 58 | 0d 58 53 74 72 33 31 20 |.Xtype.X|.XStr31 |
|00005230| 3d 20 53 74 72 69 6e 67 | 5b 33 31 5d 3b 0d 58 0d |= String|[31];.X.|
|00005240| 58 70 72 6f 63 65 64 75 | 72 65 20 72 65 63 76 55 |Xprocedu|re recvU|
|00005250| 70 54 6f 28 70 61 72 61 | 6d 50 74 72 3a 20 58 43 |pTo(para|mPtr: XC|
|00005260| 6d 64 50 74 72 29 3b 20 | 66 6f 72 77 61 72 64 3b |mdPtr); |forward;|
|00005270| 0d 58 0d 58 70 72 6f 63 | 65 64 75 72 65 20 45 6e |.X.Xproc|edure En|
|00005280| 74 72 79 50 6f 69 6e 74 | 28 70 61 72 61 6d 50 74 |tryPoint|(paramPt|
|00005290| 72 3a 20 58 43 6d 64 50 | 74 72 29 3b 0d 58 0d 58 |r: XCmdP|tr);.X.X|
|000052a0| 20 20 20 20 62 65 67 69 | 6e 0d 58 20 20 20 20 20 | begi|n.X |
|000052b0| 20 20 20 72 65 63 76 55 | 70 54 6f 28 70 61 72 61 | recvU|pTo(para|
|000052c0| 6d 50 74 72 29 3b 0d 58 | 20 20 20 20 65 6e 64 3b |mPtr);.X| end;|
|000052d0| 0d 58 0d 58 70 72 6f 63 | 65 64 75 72 65 20 72 65 |.X.Xproc|edure re|
|000052e0| 63 76 55 70 54 6f 28 70 | 61 72 61 6d 50 74 72 3a |cvUpTo(p|aramPtr:|
|000052f0| 20 58 43 6d 64 50 74 72 | 29 3b 0d 58 0d 58 20 20 | XCmdPtr|);.X.X |
|00005300| 20 20 76 61 72 20 70 6f | 72 74 4e 75 6d 62 65 72 | var po|rtNumber|
|00005310| 3a 20 69 6e 74 65 67 65 | 72 3b 0d 58 20 20 20 20 |: intege|r;.X |
|00005320| 20 20 20 20 69 6e 50 6f | 72 74 2c 20 6f 75 74 50 | inPo|rt, outP|
|00005330| 6f 72 74 3a 20 69 6e 74 | 65 67 65 72 3b 0d 58 20 |ort: int|eger;.X |
|00005340| 20 20 20 20 20 20 20 73 | 74 72 3a 20 53 74 72 32 | s|tr: Str2|
|00005350| 35 35 3b 0d 58 20 20 20 | 20 20 20 20 20 6c 3a 20 |55;.X | l: |
|00005360| 6c 6f 6e 67 49 6e 74 3b | 0d 58 20 20 20 20 20 20 |longInt;|.X |
|00005370| 20 20 77 61 69 74 46 6f | 72 43 68 61 72 73 3a 20 | waitFo|rChars: |
|00005380| 6c 6f 6e 67 49 6e 74 3b | 0d 58 20 20 20 20 20 20 |longInt;|.X |
|00005390| 20 20 6c 6f 6f 6b 46 6f | 72 54 65 72 6d 3a 20 62 | lookFo|rTerm: b|
|000053a0| 6f 6f 6c 65 61 6e 3b 0d | 58 20 20 20 20 20 20 20 |oolean;.|X |
|000053b0| 20 74 65 72 6d 43 68 61 | 72 3a 20 63 68 61 72 3b | termCha|r: char;|
|000053c0| 0d 58 20 20 20 20 20 20 | 20 20 65 63 68 6f 4f 6e |.X | echoOn|
|000053d0| 3a 20 62 6f 6f 6c 65 61 | 6e 3b 0d 58 20 20 20 20 |: boolea|n;.X |
|000053e0| 20 20 20 20 65 64 69 74 | 4f 6e 3a 20 62 6f 6f 6c | edit|On: bool|
|000053f0| 65 61 6e 3b 0d 58 20 20 | 20 20 20 20 20 20 6c 69 |ean;.X | li|
|00005400| 6e 65 66 65 65 64 53 74 | 72 3a 20 73 74 72 69 6e |nefeedSt|r: strin|
|00005410| 67 5b 31 5d 3b 0d 58 20 | 20 20 20 20 20 20 20 62 |g[1];.X | b|
|00005420| 73 53 74 72 3a 20 73 74 | 72 69 6e 67 5b 33 5d 3b |sStr: st|ring[3];|
|00005430| 0d 58 0d 58 20 20 20 20 | 7b 24 49 20 58 43 6d 64 |.X.X |{$I XCmd|
|00005440| 47 6c 75 65 2e 69 6e 63 | 7d 0d 58 0d 58 20 20 20 |Glue.inc|}.X.X |
|00005450| 20 70 72 6f 63 65 64 75 | 72 65 20 46 61 69 6c 28 | procedu|re Fail(|
|00005460| 65 72 72 4d 73 67 3a 20 | 53 74 72 32 35 35 29 3b |errMsg: |Str255);|
|00005470| 20 7b 20 73 65 74 20 74 | 68 65 52 65 73 75 6c 74 | { set t|heResult|
|00005480| 20 61 6e 64 20 71 75 69 | 74 20 7d 0d 58 20 20 20 | and qui|t }.X |
|00005490| 20 20 20 20 20 62 65 67 | 69 6e 0d 58 20 20 20 20 | beg|in.X |
|000054a0| 20 20 20 20 20 20 20 20 | 70 61 72 61 6d 50 74 72 | |paramPtr|
|000054b0| 5e 2e 72 65 74 75 72 6e | 56 61 6c 75 65 20 3a 3d |^.return|Value :=|
|000054c0| 20 50 61 73 54 6f 5a 65 | 72 6f 28 65 72 72 4d 73 | PasToZe|ro(errMs|
|000054d0| 67 29 3b 0d 58 20 20 20 | 20 20 20 20 20 20 20 20 |g);.X | |
|000054e0| 20 65 78 69 74 28 72 65 | 63 76 55 70 54 6f 29 3b | exit(re|cvUpTo);|
|000054f0| 0d 58 20 20 20 20 20 20 | 20 20 65 6e 64 3b 0d 58 |.X | end;.X|
|00005500| 0d 58 20 20 20 20 62 65 | 67 69 6e 0d 58 20 20 20 |.X be|gin.X |
|00005510| 20 20 20 20 20 69 66 20 | 70 61 72 61 6d 50 74 72 | if |paramPtr|
|00005520| 5e 2e 70 61 72 61 6d 43 | 6f 75 6e 74 20 3c 3e 20 |^.paramC|ount <> |
|00005530| 35 20 74 68 65 6e 20 46 | 61 69 6c 28 27 70 61 72 |5 then F|ail('par|
|00005540| 61 6d 65 74 65 72 20 63 | 6f 75 6e 74 20 69 73 20 |ameter c|ount is |
|00005550| 6e 6f 74 20 35 27 29 3b | 0d 58 0d 58 20 20 20 20 |not 5');|.X.X |
|00005560| 20 20 20 20 5a 65 72 6f | 54 6f 50 61 73 28 70 61 | Zero|ToPas(pa|
|00005570| 72 61 6d 50 74 72 5e 2e | 70 61 72 61 6d 73 5b 31 |ramPtr^.|params[1|
|00005580| 5d 5e 2c 73 74 72 29 3b | 20 20 20 20 20 20 20 20 |]^,str);| |
|00005590| 7b 20 46 69 72 73 74 20 | 70 61 72 61 6d 65 74 65 |{ First |paramete|
|000055a0| 72 20 69 73 20 70 6f 72 | 74 20 6e 75 6d 62 65 72 |r is por|t number|
|000055b0| 2e 20 7d 0d 58 20 20 20 | 20 20 20 20 20 70 6f 72 |. }.X | por|
|000055c0| 74 4e 75 6d 62 65 72 20 | 3a 3d 20 53 74 72 54 6f |tNumber |:= StrTo|
|000055d0| 4e 75 6d 28 73 74 72 29 | 3b 0d 58 20 20 20 20 20 |Num(str)|;.X |
|000055e0| 20 20 20 69 66 20 28 70 | 6f 72 74 4e 75 6d 62 65 | if (p|ortNumbe|
|000055f0| 72 20 3c 20 31 29 20 6f | 72 20 28 70 6f 72 74 4e |r < 1) o|r (portN|
|00005600| 75 6d 62 65 72 20 3e 20 | 32 29 20 74 68 65 6e 20 |umber > |2) then |
|00005610| 46 61 69 6c 28 27 69 6e | 76 61 6c 69 64 20 70 6f |Fail('in|valid po|
|00005620| 72 74 20 6e 75 6d 62 65 | 72 27 29 3b 0d 58 20 20 |rt numbe|r');.X |
|00005630| 20 20 20 20 20 20 5a 65 | 72 6f 54 6f 50 61 73 28 | Ze|roToPas(|
|00005640| 70 61 72 61 6d 50 74 72 | 5e 2e 70 61 72 61 6d 73 |paramPtr|^.params|
|00005650| 5b 32 5d 5e 2c 73 74 72 | 29 3b 20 20 20 20 20 20 |[2]^,str|); |
|00005660| 20 20 7b 20 53 65 63 6f | 6e 64 20 70 61 72 61 6d | { Seco|nd param|
|00005670| 65 74 65 72 20 69 73 20 | 74 65 72 6d 69 6e 61 74 |eter is |terminat|
|00005680| 69 6f 6e 20 63 68 61 72 | 61 63 74 65 72 2e 20 7d |ion char|acter. }|
|00005690| 0d 58 20 20 20 20 20 20 | 20 20 69 66 20 6c 65 6e |.X | if len|
|000056a0| 67 74 68 28 73 74 72 29 | 20 3d 20 30 20 74 68 65 |gth(str)| = 0 the|
|000056b0| 6e 20 6c 6f 6f 6b 46 6f | 72 54 65 72 6d 20 3a 3d |n lookFo|rTerm :=|
|000056c0| 20 66 61 6c 73 65 0d 58 | 20 20 20 20 20 20 20 20 | false.X| |
|000056d0| 65 6c 73 65 0d 58 20 20 | 20 20 20 20 20 20 20 20 |else.X | |
|000056e0| 20 20 62 65 67 69 6e 0d | 58 20 20 20 20 20 20 20 | begin.|X |
|000056f0| 20 20 20 20 20 20 20 20 | 20 6c 6f 6f 6b 46 6f 72 | | lookFor|
|00005700| 54 65 72 6d 20 3a 3d 20 | 74 72 75 65 3b 0d 58 20 |Term := |true;.X |
|00005710| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 74 | | t|
|00005720| 65 72 6d 43 68 61 72 20 | 3a 3d 20 73 74 72 5b 31 |ermChar |:= str[1|
|00005730| 5d 3b 0d 58 20 20 20 20 | 20 20 20 20 20 20 20 20 |];.X | |
|00005740| 65 6e 64 3b 0d 58 20 20 | 20 20 20 20 20 20 5a 65 |end;.X | Ze|
|00005750| 72 6f 54 6f 50 61 73 28 | 70 61 72 61 6d 50 74 72 |roToPas(|paramPtr|
|00005760| 5e 2e 70 61 72 61 6d 73 | 5b 33 5d 5e 2c 73 74 72 |^.params|[3]^,str|
|00005770| 29 3b 20 20 20 20 20 20 | 20 20 7b 20 54 68 69 72 |); | { Thir|
|00005780| 64 20 70 61 72 61 6d 65 | 74 65 72 20 69 73 20 77 |d parame|ter is w|
|00005790| 68 65 74 68 65 72 20 74 | 6f 20 77 61 69 74 2e 20 |hether t|o wait. |
|000057a0| 7d 0d 58 20 20 20 20 20 | 20 20 20 77 61 69 74 46 |}.X | waitF|
|000057b0| 6f 72 43 68 61 72 73 20 | 3a 3d 20 53 74 72 54 6f |orChars |:= StrTo|
|000057c0| 4e 75 6d 28 73 74 72 29 | 3b 0d 58 20 20 20 20 20 |Num(str)|;.X |
|000057d0| 20 20 20 5a 65 72 6f 54 | 6f 50 61 73 28 70 61 72 | ZeroT|oPas(par|
|000057e0| 61 6d 50 74 72 5e 2e 70 | 61 72 61 6d 73 5b 34 5d |amPtr^.p|arams[4]|
|000057f0| 5e 2c 73 74 72 29 3b 20 | 20 20 20 20 20 20 20 7b |^,str); | {|
|00005800| 20 46 6f 75 72 74 68 20 | 70 61 72 61 6d 65 74 65 | Fourth |paramete|
|00005810| 72 20 69 73 20 77 68 65 | 74 68 65 72 20 74 6f 20 |r is whe|ther to |
|00005820| 65 63 68 6f 2e 20 7d 0d | 58 20 20 20 20 20 20 20 |echo. }.|X |
|00005830| 20 65 63 68 6f 4f 6e 20 | 3a 3d 20 66 61 6c 73 65 | echoOn |:= false|
|00005840| 3b 0d 58 20 20 20 20 20 | 20 20 20 69 66 20 6c 65 |;.X | if le|
|00005850| 6e 67 74 68 28 73 74 72 | 29 20 3e 20 30 20 74 68 |ngth(str|) > 0 th|
|00005860| 65 6e 0d 58 20 20 20 20 | 20 20 20 20 20 20 20 20 |en.X | |
|00005870| 69 66 20 28 73 74 72 5b | 31 5d 20 3d 20 27 74 27 |if (str[|1] = 't'|
|00005880| 29 20 6f 72 20 28 73 74 | 72 5b 31 5d 20 3d 20 27 |) or (st|r[1] = '|
|00005890| 54 27 29 20 74 68 65 6e | 20 65 63 68 6f 4f 6e 20 |T') then| echoOn |
|000058a0| 3a 3d 20 74 72 75 65 3b | 0d 58 20 20 20 20 20 20 |:= true;|.X |
|000058b0| 20 20 5a 65 72 6f 54 6f | 50 61 73 28 70 61 72 61 | ZeroTo|Pas(para|
|000058c0| 6d 50 74 72 5e 2e 70 61 | 72 61 6d 73 5b 35 5d 5e |mPtr^.pa|rams[5]^|
|000058d0| 2c 73 74 72 29 3b 20 20 | 20 20 20 20 20 20 7b 20 |,str); | { |
|000058e0| 46 69 66 74 68 20 70 61 | 72 61 6d 65 74 65 72 20 |Fifth pa|rameter |
|000058f0| 69 73 20 77 68 65 74 68 | 65 72 20 74 6f 20 65 64 |is wheth|er to ed|
|00005900| 69 74 2e 20 7d 0d 58 20 | 20 20 20 20 20 20 20 65 |it. }.X | e|
|00005910| 64 69 74 4f 6e 20 3a 3d | 20 66 61 6c 73 65 3b 0d |ditOn :=| false;.|
|00005920| 58 20 20 20 20 20 20 20 | 20 69 66 20 6c 65 6e 67 |X | if leng|
|00005930| 74 68 28 73 74 72 29 20 | 3e 20 30 20 74 68 65 6e |th(str) |> 0 then|
|00005940| 0d 58 20 20 20 20 20 20 | 20 20 20 20 20 20 69 66 |.X | if|
|00005950| 20 28 73 74 72 5b 31 5d | 20 3d 20 27 74 27 29 20 | (str[1]| = 't') |
|00005960| 6f 72 20 28 73 74 72 5b | 31 5d 20 3d 20 27 54 27 |or (str[|1] = 'T'|
|00005970| 29 20 74 68 65 6e 20 65 | 64 69 74 4f 6e 20 3a 3d |) then e|ditOn :=|
|00005980| 20 74 72 75 65 3b 0d 58 | 0d 58 20 20 20 20 20 20 | true;.X|.X |
|00005990| 20 20 69 66 20 70 6f 72 | 74 4e 75 6d 62 65 72 20 | if por|tNumber |
|000059a0| 3d 20 31 20 74 68 65 6e | 0d 58 20 20 20 20 20 20 |= 1 then|.X |
|000059b0| 20 20 20 20 20 20 62 65 | 67 69 6e 0d 58 20 20 20 | be|gin.X |
|000059c0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 69 6e 50 | | inP|
|000059d0| 6f 72 74 20 3a 3d 20 2d | 36 3b 0d 58 20 20 20 20 |ort := -|6;.X |
|000059e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 6f 75 74 50 | | outP|
|000059f0| 6f 72 74 20 3a 3d 20 2d | 37 3b 0d 58 20 20 20 20 |ort := -|7;.X |
|00005a00| 20 20 20 20 20 20 20 20 | 65 6e 64 0d 58 20 20 20 | |end.X |
|00005a10| 20 20 20 20 20 65 6c 73 | 65 0d 58 20 20 20 20 20 | els|e.X |
|00005a20| 20 20 20 20 20 20 20 62 | 65 67 69 6e 0d 58 20 20 | b|egin.X |
|00005a30| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 69 6e | | in|
|00005a40| 50 6f 72 74 20 3a 3d 20 | 2d 38 3b 0d 58 20 20 20 |Port := |-8;.X |
|00005a50| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 6f 75 74 | | out|
|00005a60| 50 6f 72 74 20 3a 3d 20 | 2d 39 3b 0d 58 20 20 20 |Port := |-9;.X |
|00005a70| 20 20 20 20 20 20 20 20 | 20 65 6e 64 3b 0d 58 20 | | end;.X |
|00005a80| 20 20 20 20 20 20 20 6c | 69 6e 65 66 65 65 64 53 | l|inefeedS|
|00005a90| 74 72 5b 30 5d 20 3a 3d | 20 63 68 72 28 31 29 3b |tr[0] :=| chr(1);|
|00005aa0| 20 6c 69 6e 65 66 65 65 | 64 53 74 72 5b 31 5d 20 | linefee|dStr[1] |
|00005ab0| 3a 3d 20 6c 69 6e 65 66 | 65 65 64 3b 0d 58 20 20 |:= linef|eed;.X |
|00005ac0| 20 20 20 20 20 20 62 73 | 53 74 72 20 3a 3d 20 27 | bs|Str := '|
|00005ad0| 20 20 20 27 3b 20 62 73 | 53 74 72 5b 31 5d 20 3a | '; bs|Str[1] :|
|00005ae0| 3d 20 62 73 3b 20 62 73 | 53 74 72 5b 33 5d 20 3a |= bs; bs|Str[3] :|
|00005af0| 3d 20 62 73 3b 0d 58 20 | 20 20 20 20 20 20 20 73 |= bs;.X | s|
|00005b00| 74 72 20 3a 3d 20 27 27 | 3b 0d 58 20 20 20 20 20 |tr := ''|;.X |
|00005b10| 20 20 20 77 61 69 74 46 | 6f 72 43 68 61 72 73 20 | waitF|orChars |
|00005b20| 3a 3d 20 77 61 69 74 46 | 6f 72 43 68 61 72 73 20 |:= waitF|orChars |
|00005b30| 2b 20 54 69 63 6b 43 6f | 75 6e 74 3b 0d 58 20 20 |+ TickCo|unt;.X |
|00005b40| 20 20 20 20 20 20 77 68 | 69 6c 65 20 54 69 63 6b | wh|ile Tick|
|00005b50| 43 6f 75 6e 74 20 3c 3d | 20 77 61 69 74 46 6f 72 |Count <=| waitFor|
|00005b60| 43 68 61 72 73 20 64 6f | 0d 58 20 20 20 20 20 20 |Chars do|.X |
|00005b70| 20 20 20 20 20 20 62 65 | 67 69 6e 0d 58 20 20 20 | be|gin.X |
|00005b80| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 69 66 20 | | if |
|00005b90| 53 65 72 47 65 74 42 75 | 66 28 69 6e 50 6f 72 74 |SerGetBu|f(inPort|
|00005ba0| 2c 6c 29 20 3c 3e 20 6e | 6f 45 72 72 20 74 68 65 |,l) <> n|oErr the|
|00005bb0| 6e 20 46 61 69 6c 28 27 | 53 65 72 47 65 74 42 75 |n Fail('|SerGetBu|
|00005bc0| 66 20 66 61 69 6c 65 64 | 27 29 3b 0d 58 20 20 20 |f failed|');.X |
|00005bd0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 69 66 20 | | if |
|00005be0| 6c 20 3d 20 30 20 74 68 | 65 6e 20 63 79 63 6c 65 |l = 0 th|en cycle|
|00005bf0| 3b 0d 58 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |;.X | |
|00005c00| 20 20 20 73 74 72 5b 30 | 5d 20 3a 3d 20 63 68 72 | str[0|] := chr|
|00005c10| 28 69 6e 74 65 67 65 72 | 28 73 74 72 5b 30 5d 29 |(integer|(str[0])|
|00005c20| 2b 31 29 3b 0d 58 20 20 | 20 20 20 20 20 20 20 20 |+1);.X | |
|00005c30| 20 20 20 20 20 20 6c 20 | 3a 3d 20 31 3b 0d 58 20 | l |:= 1;.X |
|00005c40| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 69 | | i|
|00005c50| 66 20 46 53 52 65 61 64 | 28 69 6e 50 6f 72 74 2c |f FSRead|(inPort,|
|00005c60| 6c 2c 50 74 72 28 6f 72 | 64 34 28 40 73 74 72 29 |l,Ptr(or|d4(@str)|
|00005c70| 2b 6f 72 64 28 73 74 72 | 5b 30 5d 29 29 29 20 3c |+ord(str|[0]))) <|
|00005c80| 3e 20 6e 6f 45 72 72 20 | 74 68 65 6e 20 46 61 69 |> noErr |then Fai|
|00005c90| 6c 28 27 46 53 52 65 61 | 64 20 66 61 69 6c 65 64 |l('FSRea|d failed|
|00005ca0| 27 29 3b 0d 58 20 20 20 | 20 20 20 20 20 20 20 20 |');.X | |
|00005cb0| 20 20 20 20 20 69 66 20 | 65 63 68 6f 4f 6e 20 74 | if |echoOn t|
|00005cc0| 68 65 6e 0d 58 20 20 20 | 20 20 20 20 20 20 20 20 |hen.X | |
|00005cd0| 20 20 20 20 20 20 20 20 | 20 62 65 67 69 6e 0d 58 | | begin.X|
|00005ce0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005cf0| 20 20 20 20 20 20 20 20 | 6c 20 3a 3d 20 31 3b 0d | |l := 1;.|
|00005d00| 58 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |X | |
|00005d10| 20 20 20 20 20 20 20 20 | 20 69 66 20 46 53 57 72 | | if FSWr|
|00005d20| 69 74 65 28 6f 75 74 50 | 6f 72 74 2c 6c 2c 50 74 |ite(outP|ort,l,Pt|
|00005d30| 72 28 6f 72 64 34 28 40 | 73 74 72 29 2b 6f 72 64 |r(ord4(@|str)+ord|
|00005d40| 28 73 74 72 5b 30 5d 29 | 29 29 20 3c 3e 20 6e 6f |(str[0])|)) <> no|
|00005d50| 45 72 72 20 74 68 65 6e | 20 46 61 69 6c 28 27 46 |Err then| Fail('F|
|00005d60| 53 57 72 69 74 65 72 20 | 66 61 69 6c 65 64 27 29 |SWriter |failed')|
|00005d70| 3b 0d 58 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |;.X | |
|00005d80| 20 20 20 20 20 20 20 20 | 20 20 20 69 66 20 73 74 | | if st|
|00005d90| 72 5b 6c 65 6e 67 74 68 | 28 73 74 72 29 5d 20 3d |r[length|(str)] =|
|00005da0| 20 72 65 74 75 72 6e 20 | 74 68 65 6e 0d 58 20 20 | return |then.X |
|00005db0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005dc0| 20 20 20 20 20 20 20 20 | 20 20 62 65 67 69 6e 0d | | begin.|
|00005dd0| 58 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |X | |
|00005de0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005df0| 20 6c 20 3a 3d 20 6c 65 | 6e 67 74 68 28 6c 69 6e | l := le|ngth(lin|
|00005e00| 65 66 65 65 64 53 74 72 | 29 3b 0d 58 20 20 20 20 |efeedStr|);.X |
|00005e10| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005e20| 20 20 20 20 20 20 20 20 | 20 20 20 20 69 66 20 46 | | if F|
|00005e30| 53 57 72 69 74 65 28 6f | 75 74 50 6f 72 74 2c 6c |SWrite(o|utPort,l|
|00005e40| 2c 50 74 72 28 6f 72 64 | 34 28 40 6c 69 6e 65 66 |,Ptr(ord|4(@linef|
|00005e50| 65 65 64 53 74 72 29 2b | 31 29 29 20 3c 3e 20 6e |eedStr)+|1)) <> n|
|00005e60| 6f 45 72 72 20 74 68 65 | 6e 20 46 61 69 6c 28 27 |oErr the|n Fail('|
|00005e70| 46 53 57 72 69 74 65 20 | 66 61 69 6c 65 64 27 29 |FSWrite |failed')|
|00005e80| 3b 0d 58 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |;.X | |
|00005e90| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 65 | | e|
|00005ea0| 6e 64 3b 0d 58 20 20 20 | 20 20 20 20 20 20 20 20 |nd;.X | |
|00005eb0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 69 66 20 | | if |
|00005ec0| 65 64 69 74 4f 6e 20 61 | 6e 64 20 28 73 74 72 5b |editOn a|nd (str[|
|00005ed0| 6c 65 6e 67 74 68 28 73 | 74 72 29 5d 20 3d 20 62 |length(s|tr)] = b|
|00005ee0| 73 29 20 74 68 65 6e 0d | 58 20 20 20 20 20 20 20 |s) then.|X |
|00005ef0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005f00| 20 20 20 20 20 62 65 67 | 69 6e 0d 58 20 20 20 20 | beg|in.X |
|00005f10| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005f20| 20 20 20 20 20 20 20 20 | 20 20 20 20 6c 20 3a 3d | | l :=|
|00005f30| 20 6c 65 6e 67 74 68 28 | 62 73 53 74 72 29 3b 0d | length(|bsStr);.|
|00005f40| 58 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |X | |
|00005f50| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005f60| 20 69 66 20 46 53 57 72 | 69 74 65 28 6f 75 74 50 | if FSWr|ite(outP|
|00005f70| 6f 72 74 2c 6c 2c 50 74 | 72 28 6f 72 64 34 28 40 |ort,l,Pt|r(ord4(@|
|00005f80| 62 73 53 74 72 29 2b 31 | 29 29 20 3c 3e 20 6e 6f |bsStr)+1|)) <> no|
|00005f90| 45 72 72 20 74 68 65 6e | 20 46 61 69 6c 28 27 46 |Err then| Fail('F|
|00005fa0| 53 57 72 69 74 65 20 66 | 61 69 6c 65 64 27 29 3b |SWrite f|ailed');|
|00005fb0| 0d 58 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |.X | |
|00005fc0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 65 6e | | en|
|00005fd0| 64 3b 0d 58 20 20 20 20 | 20 20 20 20 20 20 20 20 |d;.X | |
|00005fe0| 20 20 20 20 20 20 20 20 | 65 6e 64 3b 0d 58 20 20 | |end;.X |
|00005ff0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 69 66 | | if|
|00006000| 20 65 64 69 74 4f 6e 20 | 74 68 65 6e 0d 58 20 20 | editOn |then.X |
|00006010| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00006020| 20 20 62 65 67 69 6e 0d | 58 20 20 20 20 20 20 20 | begin.|X |
|00006030| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00006040| 20 69 66 20 73 74 72 5b | 6c 65 6e 67 74 68 28 73 | if str[|length(s|
|00006050| 74 72 29 5d 20 3d 20 62 | 73 20 74 68 65 6e 0d 58 |tr)] = b|s then.X|
|00006060| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00006070| 20 20 20 20 20 20 20 20 | 20 20 20 20 62 65 67 69 | | begi|
|00006080| 6e 0d 58 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |n.X | |
|00006090| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000060a0| 20 20 20 73 74 72 5b 30 | 5d 20 3a 3d 20 63 68 72 | str[0|] := chr|
|000060b0| 28 6c 65 6e 67 74 68 28 | 73 74 72 29 2d 31 29 3b |(length(|str)-1);|
|000060c0| 0d 58 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |.X | |
|000060d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000060e0| 20 20 69 66 20 6c 65 6e | 67 74 68 28 73 74 72 29 | if len|gth(str)|
|000060f0| 20 3e 20 30 20 74 68 65 | 6e 20 73 74 72 5b 30 5d | > 0 the|n str[0]|
|00006100| 20 3a 3d 20 63 68 72 28 | 6c 65 6e 67 74 68 28 73 | := chr(|length(s|
|00006110| 74 72 29 2d 31 29 3b 0d | 58 20 20 20 20 20 20 20 |tr)-1);.|X |
|00006120| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00006130| 20 20 20 20 20 65 6e 64 | 3b 0d 58 20 20 20 20 20 | end|;.X |
|00006140| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 65 | | e|
|00006150| 6e 64 3b 0d 58 20 20 20 | 20 20 20 20 20 20 20 20 |nd;.X | |
|00006160| 20 20 20 20 20 69 66 20 | 6c 6f 6f 6b 46 6f 72 54 | if |lookForT|
|00006170| 65 72 6d 20 74 68 65 6e | 0d 58 20 20 20 20 20 20 |erm then|.X |
|00006180| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 69 66 | | if|
|00006190| 20 73 74 72 5b 6c 65 6e | 67 74 68 28 73 74 72 29 | str[len|gth(str)|
|000061a0| 5d 20 3d 20 74 65 72 6d | 43 68 61 72 20 74 68 65 |] = term|Char the|
|000061b0| 6e 20 6c 65 61 76 65 3b | 0d 58 20 20 20 20 20 20 |n leave;|.X |
|000061c0| 20 20 20 20 20 20 20 20 | 20 20 69 66 20 6c 65 6e | | if len|
|000061d0| 67 74 68 28 73 74 72 29 | 20 3d 20 32 35 35 20 74 |gth(str)| = 255 t|
|000061e0| 68 65 6e 20 6c 65 61 76 | 65 3b 0d 58 20 20 20 20 |hen leav|e;.X |
|000061f0| 20 20 20 20 20 20 20 20 | 65 6e 64 3b 0d 58 20 20 | |end;.X |
|00006200| 20 20 20 20 20 20 70 61 | 72 61 6d 50 74 72 5e 2e | pa|ramPtr^.|
|00006210| 72 65 74 75 72 6e 56 61 | 6c 75 65 20 3a 3d 20 50 |returnVa|lue := P|
|00006220| 61 73 54 6f 5a 65 72 6f | 28 73 74 72 29 3b 0d 58 |asToZero|(str);.X|
|00006230| 20 20 20 20 65 6e 64 3b | 0d 58 0d 58 65 6e 64 2e | end;|.X.Xend.|
|00006240| 0d 53 48 41 52 5f 45 4f | 46 0d 69 66 20 74 65 73 |.SHAR_EO|F.if tes|
|00006250| 74 20 34 39 38 33 20 2d | 6e 65 20 22 60 77 63 20 |t 4983 -|ne "`wc |
|00006260| 2d 63 20 3c 20 27 72 65 | 63 76 55 70 54 6f 2e 70 |-c < 're|cvUpTo.p|
|00006270| 27 60 22 0d 74 68 65 6e | 0d 09 65 63 68 6f 20 73 |'`".then|..echo s|
|00006280| 68 61 72 3a 20 65 72 72 | 6f 72 20 74 72 61 6e 73 |har: err|or trans|
|00006290| 6d 69 74 74 69 6e 67 20 | 22 27 72 65 63 76 55 70 |mitting |"'recvUp|
|000062a0| 54 6f 2e 70 27 22 20 27 | 28 73 68 6f 75 6c 64 20 |To.p'" '|(should |
|000062b0| 68 61 76 65 20 62 65 65 | 6e 20 34 39 38 33 20 63 |have bee|n 4983 c|
|000062c0| 68 61 72 61 63 74 65 72 | 73 29 27 0d 66 69 0d 66 |haracter|s)'.fi.f|
|000062d0| 69 20 23 20 65 6e 64 20 | 6f 66 20 6f 76 65 72 77 |i # end |of overw|
|000062e0| 72 69 74 69 6e 67 20 63 | 68 65 63 6b 0d 65 63 68 |riting c|heck.ech|
|000062f0| 6f 20 73 68 61 72 3a 20 | 65 78 74 72 61 63 74 69 |o shar: |extracti|
|00006300| 6e 67 20 22 27 72 65 73 | 65 74 50 6f 72 74 2e 70 |ng "'res|etPort.p|
|00006310| 27 22 20 27 28 31 38 30 | 30 20 63 68 61 72 61 63 |'" '(180|0 charac|
|00006320| 74 65 72 73 29 27 0d 69 | 66 20 74 65 73 74 20 2d |ters)'.i|f test -|
|00006330| 66 20 27 72 65 73 65 74 | 50 6f 72 74 2e 70 27 0d |f 'reset|Port.p'.|
|00006340| 74 68 65 6e 0d 09 65 63 | 68 6f 20 73 68 61 72 3a |then..ec|ho shar:|
|00006350| 20 77 69 6c 6c 20 6e 6f | 74 20 6f 76 65 72 2d 77 | will no|t over-w|
|00006360| 72 69 74 65 20 65 78 69 | 73 74 69 6e 67 20 66 69 |rite exi|sting fi|
|00006370| 6c 65 20 22 27 72 65 73 | 65 74 50 6f 72 74 2e 70 |le "'res|etPort.p|
|00006380| 27 22 0d 65 6c 73 65 0d | 73 65 64 20 27 73 2f 5e |'".else.|sed 's/^|
|00006390| 58 2f 2f 27 20 3c 3c 20 | 5c 53 48 41 52 5f 45 4f |X//' << |\SHAR_EO|
|000063a0| 46 20 3e 20 27 72 65 73 | 65 74 50 6f 72 74 2e 70 |F > 'res|etPort.p|
|000063b0| 27 0d 58 7b 24 52 2d 7d | 0d 58 0d 58 28 2a 0d 58 |'.X{$R-}|.X.X(*.X|
|000063c0| 20 20 20 20 72 65 73 65 | 74 53 50 6f 72 74 28 70 | rese|tSPort(p|
|000063d0| 6f 72 74 20 6e 75 6d 62 | 65 72 2c 20 73 65 74 74 |ort numb|er, sett|
|000063e0| 69 6e 67 29 20 2d 2d 20 | 52 65 73 65 74 20 74 68 |ing) -- |Reset th|
|000063f0| 65 20 73 65 72 69 61 6c | 20 70 6f 72 74 20 64 72 |e serial| port dr|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.