home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 1 / 1724 < prev    next >
SHell self-extracting ARchive  |  1990-12-28  |  13.3 KB

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


This file was processed as: SHell self-extracting ARchive (archive/shar).

ConfidenceProgramDetectionMatch TypeSupport
100% dexvert Newsgroup Content (archive/news) magic Supported
100% dexvert SHell self-extracting ARchive (archive/shar) magic Supported
100% dexvert Internet Message Format (text/imf) magic Supported
1% dexvert Text File (text/txt) fallback Supported
100% file news or mail, ASCII text default
100% TrID E-Mail message (Var. 2) default
100% checkBytes Printable ASCII default
100% perlTextCheck Likely Text (Perl) default
100% siegfried fmt/329 Shell Archive Format default
100% detectItEasy Format: plain text[LF] default (weak)
100% xdgMime message/rfc822 default



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 46 72 6f 6d 3a 20 70 72 | 75 73 73 40 72 69 61 2e |From: pr|uss@ria.|
|00000010| 63 63 73 2e 75 77 6f 2e | 63 61 20 28 41 6c 65 78 |ccs.uwo.|ca (Alex|
|00000020| 20 50 72 75 73 73 29 0a | 4e 65 77 73 67 72 6f 75 | Pruss).|Newsgrou|
|00000030| 70 73 3a 20 61 6c 74 2e | 73 6f 75 72 63 65 73 0a |ps: alt.|sources.|
|00000040| 53 75 62 6a 65 63 74 3a | 20 61 6c 6c 6f 63 61 28 |Subject:| alloca(|
|00000050| 29 20 66 6f 72 20 54 75 | 72 62 6f 20 43 20 32 2e |) for Tu|rbo C 2.|
|00000060| 30 2f 31 2e 30 2b 2b 0a | 4d 65 73 73 61 67 65 2d |0/1.0++.|Message-|
|00000070| 49 44 3a 20 3c 39 31 36 | 40 72 69 61 2e 63 63 73 |ID: <916|@ria.ccs|
|00000080| 2e 75 77 6f 2e 63 61 3e | 0a 44 61 74 65 3a 20 32 |.uwo.ca>|.Date: 2|
|00000090| 37 20 41 75 67 20 39 30 | 20 31 37 3a 31 34 3a 32 |7 Aug 90| 17:14:2|
|000000a0| 34 20 47 4d 54 0a 0a 48 | 65 72 65 20 61 72 65 20 |4 GMT..H|ere are |
|000000b0| 74 77 6f 20 76 65 72 73 | 69 6f 6e 73 20 6f 66 20 |two vers|ions of |
|000000c0| 61 6c 6c 6f 63 61 28 29 | 20 66 6f 72 20 54 75 72 |alloca()| for Tur|
|000000d0| 62 6f 20 43 2e 20 20 54 | 68 65 79 20 68 61 76 65 |bo C. T|hey have|
|000000e0| 6e 27 74 20 62 65 65 6e | 20 74 65 73 74 65 64 0a |n't been| tested.|
|000000f0| 61 73 20 74 68 6f 72 6f | 75 67 68 6c 79 20 61 73 |as thoro|ughly as|
|00000100| 20 49 20 77 6f 75 6c 64 | 20 68 61 76 65 20 6c 69 | I would| have li|
|00000110| 6b 65 64 2c 20 62 75 74 | 20 68 65 72 65 20 74 68 |ked, but| here th|
|00000120| 65 79 20 61 72 65 2e 20 | 20 49 66 20 79 6f 75 20 |ey are. | If you |
|00000130| 68 61 76 65 20 61 6e 79 | 0a 63 6f 6d 6d 65 6e 74 |have any|.comment|
|00000140| 73 20 66 65 65 6c 20 66 | 72 65 65 20 74 6f 20 77 |s feel f|ree to w|
|00000150| 72 69 74 65 20 6d 65 20 | 28 70 72 75 73 73 40 75 |rite me |(pruss@u|
|00000160| 77 6f 2e 63 61 29 2e 20 | 20 41 73 20 75 73 75 61 |wo.ca). | As usua|
|00000170| 6c 2c 20 74 68 69 73 20 | 69 73 20 70 72 6f 76 69 |l, this |is provi|
|00000180| 64 65 64 0a 77 69 74 68 | 20 6e 6f 20 77 61 72 72 |ded.with| no warr|
|00000190| 61 6e 74 69 65 73 20 6f | 66 20 61 6e 79 20 6b 69 |anties o|f any ki|
|000001a0| 6e 64 2e 20 20 4e 6f 74 | 20 6f 6e 6c 79 20 61 72 |nd. Not| only ar|
|000001b0| 65 20 74 68 65 72 65 20 | 6e 6f 20 76 61 6c 69 64 |e there |no valid|
|000001c0| 20 69 6d 70 6c 69 65 64 | 20 77 61 72 72 61 6e 74 | implied| warrant|
|000001d0| 69 65 73 2c 0a 62 75 74 | 20 49 20 65 78 70 6c 69 |ies,.but| I expli|
|000001e0| 63 69 74 6c 79 20 73 74 | 61 74 65 20 74 68 61 74 |citly st|ate that|
|000001f0| 20 75 6e 64 65 72 20 6d | 61 6e 79 20 63 69 72 63 | under m|any circ|
|00000200| 75 6d 73 74 61 6e 63 65 | 20 74 68 69 73 20 70 72 |umstance| this pr|
|00000210| 6f 67 72 61 6d 20 77 69 | 6c 6c 20 6e 6f 74 20 77 |ogram wi|ll not w|
|00000220| 6f 72 6b 0a 28 61 6e 64 | 20 6d 61 79 20 63 72 61 |ork.(and| may cra|
|00000230| 73 68 20 74 68 65 20 73 | 79 73 74 65 6d 29 2e 20 |sh the s|ystem). |
|00000240| 20 55 53 45 20 57 49 54 | 48 20 43 41 52 45 20 61 | USE WIT|H CARE a|
|00000250| 6e 64 20 52 45 41 44 20 | 54 48 45 20 44 4f 43 55 |nd READ |THE DOCU|
|00000260| 4d 45 4e 54 41 54 49 4f | 4e 21 0a 42 65 20 63 61 |MENTATIO|N!.Be ca|
|00000270| 72 65 66 75 6c 20 77 68 | 65 6e 20 75 73 69 6e 67 |reful wh|en using|
|00000280| 20 6e 6f 74 20 6f 6e 20 | 54 75 72 62 6f 20 43 20 | not on |Turbo C |
|00000290| 32 2e 30 20 6f 72 20 31 | 2e 30 2b 2b 2e 0a 0a 55 |2.0 or 1|.0++...U|
|000002a0| 55 45 20 62 69 6e 61 72 | 69 65 73 20 69 6e 63 6c |UE binar|ies incl|
|000002b0| 75 64 65 64 20 66 6f 72 | 20 74 68 65 20 6f 62 6a |uded for| the obj|
|000002c0| 65 63 74 20 66 69 6c 65 | 73 20 28 69 66 20 79 6f |ect file|s (if yo|
|000002d0| 75 20 64 6f 6e 27 74 20 | 68 61 76 65 20 61 38 36 |u don't |have a86|
|000002e0| 29 2e 0a 0a 50 6c 65 61 | 73 65 20 73 65 6e 64 20 |)...Plea|se send |
|000002f0| 6d 65 20 61 6e 79 20 6d | 6f 64 69 66 69 63 61 74 |me any m|odificat|
|00000300| 69 6f 6e 73 20 79 6f 75 | 20 6d 61 6b 65 20 74 68 |ions you| make th|
|00000310| 61 74 20 79 6f 75 20 74 | 68 69 6e 6b 20 6d 61 79 |at you t|hink may|
|00000320| 20 62 65 20 75 73 65 66 | 75 6c 0a 67 65 6e 65 72 | be usef|ul.gener|
|00000330| 61 6c 6c 79 2e 0a 0a 23 | 21 20 2f 62 69 6e 2f 73 |ally...#|! /bin/s|
|00000340| 68 0a 23 20 54 68 69 73 | 20 69 73 20 61 20 73 68 |h.# This| is a sh|
|00000350| 65 6c 6c 20 61 72 63 68 | 69 76 65 2c 20 6d 65 61 |ell arch|ive, mea|
|00000360| 6e 69 6e 67 3a 0a 23 20 | 31 2e 20 52 65 6d 6f 76 |ning:.# |1. Remov|
|00000370| 65 20 65 76 65 72 79 74 | 68 69 6e 67 20 61 62 6f |e everyt|hing abo|
|00000380| 76 65 20 74 68 65 20 23 | 21 20 2f 62 69 6e 2f 73 |ve the #|! /bin/s|
|00000390| 68 20 6c 69 6e 65 2e 0a | 23 20 32 2e 20 53 61 76 |h line..|# 2. Sav|
|000003a0| 65 20 74 68 65 20 72 65 | 73 75 6c 74 69 6e 67 20 |e the re|sulting |
|000003b0| 74 65 78 74 20 69 6e 20 | 61 20 66 69 6c 65 2e 0a |text in |a file..|
|000003c0| 23 20 33 2e 20 45 78 65 | 63 75 74 65 20 74 68 65 |# 3. Exe|cute the|
|000003d0| 20 66 69 6c 65 20 77 69 | 74 68 20 2f 62 69 6e 2f | file wi|th /bin/|
|000003e0| 73 68 20 28 6e 6f 74 20 | 63 73 68 29 20 74 6f 20 |sh (not |csh) to |
|000003f0| 63 72 65 61 74 65 20 74 | 68 65 20 66 69 6c 65 73 |create t|he files|
|00000400| 3a 0a 23 09 52 45 41 44 | 4d 45 0a 23 09 61 6c 6c |:.#.READ|ME.#.all|
|00000410| 6f 63 61 2e 38 0a 23 09 | 61 6c 6c 6f 63 61 2e 64 |oca.8.#.|alloca.d|
|00000420| 6f 63 0a 23 09 61 6c 6c | 6f 63 61 2e 68 0a 23 09 |oc.#.all|oca.h.#.|
|00000430| 6f 62 63 2e 75 75 65 0a | 23 09 6f 62 6c 2e 75 75 |obc.uue.|#.obl.uu|
|00000440| 65 0a 23 09 6f 62 6d 2e | 75 75 65 0a 23 09 6f 62 |e.#.obm.|uue.#.ob|
|00000450| 73 2e 75 75 65 0a 23 20 | 54 68 69 73 20 61 72 63 |s.uue.# |This arc|
|00000460| 68 69 76 65 20 63 72 65 | 61 74 65 64 3a 20 4d 6f |hive cre|ated: Mo|
|00000470| 6e 20 41 75 67 20 32 37 | 20 31 33 3a 30 38 3a 32 |n Aug 27| 13:08:2|
|00000480| 37 20 31 39 39 30 0a 65 | 78 70 6f 72 74 20 50 41 |7 1990.e|xport PA|
|00000490| 54 48 3b 20 50 41 54 48 | 3d 2f 62 69 6e 3a 24 50 |TH; PATH|=/bin:$P|
|000004a0| 41 54 48 0a 69 66 20 74 | 65 73 74 20 2d 66 20 27 |ATH.if t|est -f '|
|000004b0| 52 45 41 44 4d 45 27 0a | 74 68 65 6e 0a 09 65 63 |README'.|then..ec|
|000004c0| 68 6f 20 73 68 61 72 3a | 20 77 69 6c 6c 20 6e 6f |ho shar:| will no|
|000004d0| 74 20 6f 76 65 72 2d 77 | 72 69 74 65 20 65 78 69 |t over-w|rite exi|
|000004e0| 73 74 69 6e 67 20 66 69 | 6c 65 20 22 27 52 45 41 |sting fi|le "'REA|
|000004f0| 44 4d 45 27 22 0a 65 6c | 73 65 0a 73 65 64 20 27 |DME'".el|se.sed '|
|00000500| 73 2f 5e 58 2f 2f 27 20 | 3c 3c 20 5c 53 48 41 52 |s/^X//' |<< \SHAR|
|00000510| 5f 45 4f 46 20 3e 20 27 | 52 45 41 44 4d 45 27 0a |_EOF > '|README'.|
|00000520| 58 61 6c 6c 6f 63 61 28 | 29 20 66 6f 72 20 54 75 |Xalloca(|) for Tu|
|00000530| 72 62 6f 20 43 20 61 6e | 64 20 54 75 72 62 6f 20 |rbo C an|d Turbo |
|00000540| 43 2b 2b 2e 20 20 53 65 | 65 20 61 6c 6c 6f 63 61 |C++. Se|e alloca|
|00000550| 2e 64 6f 63 20 66 6f 72 | 20 6d 6f 72 65 20 69 6e |.doc for| more in|
|00000560| 66 6f 72 6d 61 74 69 6f | 6e 2e 0a 53 48 41 52 5f |formatio|n..SHAR_|
|00000570| 45 4f 46 0a 66 69 20 23 | 20 65 6e 64 20 6f 66 20 |EOF.fi #| end of |
|00000580| 6f 76 65 72 77 72 69 74 | 69 6e 67 20 63 68 65 63 |overwrit|ing chec|
|00000590| 6b 0a 69 66 20 74 65 73 | 74 20 2d 66 20 27 61 6c |k.if tes|t -f 'al|
|000005a0| 6c 6f 63 61 2e 38 27 0a | 74 68 65 6e 0a 09 65 63 |loca.8'.|then..ec|
|000005b0| 68 6f 20 73 68 61 72 3a | 20 77 69 6c 6c 20 6e 6f |ho shar:| will no|
|000005c0| 74 20 6f 76 65 72 2d 77 | 72 69 74 65 20 65 78 69 |t over-w|rite exi|
|000005d0| 73 74 69 6e 67 20 66 69 | 6c 65 20 22 27 61 6c 6c |sting fi|le "'all|
|000005e0| 6f 63 61 2e 38 27 22 0a | 65 6c 73 65 0a 73 65 64 |oca.8'".|else.sed|
|000005f0| 20 27 73 2f 5e 58 2f 2f | 27 20 3c 3c 20 5c 53 48 | 's/^X//|' << \SH|
|00000600| 41 52 5f 45 4f 46 20 3e | 20 27 61 6c 6c 6f 63 61 |AR_EOF >| 'alloca|
|00000610| 2e 38 27 0a 58 3b 0a 58 | 3b 20 61 6c 6c 6f 63 61 |.8'.X;.X|; alloca|
|00000620| 2e 38 20 62 65 67 69 6e | 73 0a 58 3b 20 73 6f 75 |.8 begin|s.X; sou|
|00000630| 72 63 65 20 66 6f 72 20 | 61 38 36 20 61 73 73 65 |rce for |a86 asse|
|00000640| 6d 62 6c 65 72 0a 58 3b | 20 72 65 6c 65 61 73 65 |mbler.X;| release|
|00000650| 64 20 69 6e 74 6f 20 74 | 68 65 20 70 75 62 6c 69 |d into t|he publi|
|00000660| 63 20 64 6f 6d 61 69 6e | 20 77 69 74 68 20 74 68 |c domain| with th|
|00000670| 65 20 72 65 73 74 72 69 | 63 74 69 6f 6e 20 74 68 |e restri|ction th|
|00000680| 61 74 20 74 68 65 0a 58 | 3b 20 61 63 6b 6e 6f 77 |at the.X|; acknow|
|00000690| 6c 65 64 67 65 6d 65 6e | 74 20 62 65 6c 6f 77 20 |ledgemen|t below |
|000006a0| 62 65 20 70 72 65 73 65 | 72 76 65 64 3a 0a 58 3b |be prese|rved:.X;|
|000006b0| 20 20 20 2e 2e 2e 20 20 | 54 68 69 73 20 61 6c 6c | ... |This all|
|000006c0| 6f 63 61 28 29 20 66 6f | 72 20 54 75 72 62 6f 20 |oca() fo|r Turbo |
|000006d0| 43 20 69 73 20 62 79 20 | 41 6c 65 78 61 6e 64 65 |C is by |Alexande|
|000006e0| 72 20 50 72 75 73 73 20 | 20 2e 2e 2e 0a 58 3b 0a |r Pruss | ....X;.|
|000006f0| 58 3b 20 41 73 73 65 6d | 62 6c 65 20 76 69 61 3a |X; Assem|ble via:|
|00000700| 0a 58 3b 20 20 41 38 36 | 20 2b 6f 63 20 3d 5f 5f |.X; A86| +oc =__|
|00000710| 3c 4d 4f 44 45 4c 2d 49 | 44 45 4e 54 49 46 49 45 |<MODEL-I|DENTIFIE|
|00000720| 52 3e 5f 5f 20 61 6c 6c | 6f 63 61 2e 38 0a 58 3b |R>__ all|oca.8.X;|
|00000730| 20 4e 6f 74 65 20 74 68 | 61 74 20 74 68 65 20 48 | Note th|at the H|
|00000740| 55 47 45 20 61 6c 6c 6f | 63 61 20 3d 20 4c 41 52 |UGE allo|ca = LAR|
|00000750| 47 45 20 61 6c 6c 6f 63 | 61 20 61 6e 64 20 74 68 |GE alloc|a and th|
|00000760| 61 74 20 54 49 4e 59 20 | 61 6c 6c 6f 63 61 20 3d |at TINY |alloca =|
|00000770| 20 53 4d 41 4c 4c 20 61 | 6c 6c 6f 63 61 0a 58 3b | SMALL a|lloca.X;|
|00000780| 0a 58 23 69 66 20 5f 5f | 4d 45 44 49 55 4d 5f 5f |.X#if __|MEDIUM__|
|00000790| 0a 58 4c 5f 43 4f 44 45 | 20 3d 20 31 0a 58 23 65 |.XL_CODE| = 1.X#e|
|000007a0| 6c 73 65 69 66 20 5f 5f | 43 4f 4d 50 41 43 54 5f |lseif __|COMPACT_|
|000007b0| 5f 0a 58 4c 5f 44 41 54 | 41 20 3d 20 31 0a 58 23 |_.XL_DAT|A = 1.X#|
|000007c0| 65 6c 73 65 69 66 20 5f | 5f 4c 41 52 47 45 5f 5f |elseif _|_LARGE__|
|000007d0| 0a 58 4c 5f 44 41 54 41 | 20 3d 20 31 0a 58 4c 5f |.XL_DATA| = 1.XL_|
|000007e0| 43 4f 44 45 20 3d 20 31 | 0a 58 23 65 6c 73 65 69 |CODE = 1|.X#elsei|
|000007f0| 66 20 5f 5f 48 55 47 45 | 5f 5f 0a 58 4c 5f 44 41 |f __HUGE|__.XL_DA|
|00000800| 54 41 20 3d 20 31 0a 58 | 4c 5f 43 4f 44 45 20 3d |TA = 1.X|L_CODE =|
|00000810| 20 31 0a 58 23 65 6e 64 | 69 66 0a 58 0a 58 23 69 | 1.X#end|if.X.X#i|
|00000820| 66 20 4c 5f 43 4f 44 45 | 0a 58 41 4c 4c 4f 43 41 |f L_CODE|.XALLOCA|
|00000830| 5f 54 45 58 54 20 20 20 | 20 20 73 65 67 6d 65 6e |_TEXT | segmen|
|00000840| 74 20 62 79 74 65 20 70 | 75 62 6c 69 63 20 27 43 |t byte p|ublic 'C|
|00000850| 4f 44 45 27 0a 58 23 65 | 6c 73 65 0a 58 54 45 58 |ODE'.X#e|lse.XTEX|
|00000860| 54 20 20 20 20 20 20 20 | 20 20 20 20 20 73 65 67 |T | seg|
|00000870| 6d 65 6e 74 20 62 79 74 | 65 20 70 75 62 6c 69 63 |ment byt|e public|
|00000880| 20 27 43 4f 44 45 27 0a | 58 23 65 6e 64 69 66 0a | 'CODE'.|X#endif.|
|00000890| 58 0a 58 40 61 6c 6c 6f | 63 61 5f 62 75 66 66 65 |X.X@allo|ca_buffe|
|000008a0| 72 20 64 77 20 3f 0a 58 | 0a 58 70 75 62 6c 69 63 |r dw ?.X|.Xpublic|
|000008b0| 20 5f 5f 61 6c 6c 6f 63 | 61 0a 58 3b 3b 20 76 6f | __alloc|a.X;; vo|
|000008c0| 69 64 20 2a 5f 61 6c 6c | 6f 63 61 28 75 6e 73 69 |id *_all|oca(unsi|
|000008d0| 67 6e 65 64 20 73 69 7a | 65 29 20 3b 3b 0a 58 5f |gned siz|e) ;;.X_|
|000008e0| 5f 61 6c 6c 6f 63 61 3a | 0a 58 20 20 20 20 20 20 |_alloca:|.X |
|000008f0| 20 20 70 6f 70 20 20 20 | 20 20 20 62 78 20 20 20 | pop | bx |
|00000900| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000910| 20 20 3b 20 52 65 74 75 | 72 6e 20 61 64 64 72 65 | ; Retu|rn addre|
|00000920| 73 73 0a 58 23 69 66 20 | 4c 5f 43 4f 44 45 0a 58 |ss.X#if |L_CODE.X|
|00000930| 20 20 20 20 20 20 20 20 | 70 6f 70 20 20 20 20 20 | |pop |
|00000940| 20 65 73 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | es | |
|00000950| 20 20 20 20 20 20 20 20 | 3b 20 69 6e 74 6f 20 5b | |; into [|
|00000960| 45 53 3a 5d 42 58 0a 58 | 23 65 6e 64 69 66 0a 58 |ES:]BX.X|#endif.X|
|00000970| 20 20 20 20 20 20 20 20 | 70 6f 70 20 20 20 20 20 | |pop |
|00000980| 20 63 78 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | cx | |
|00000990| 20 20 20 20 20 20 20 20 | 3b 20 44 61 74 61 20 73 | |; Data s|
|000009a0| 69 7a 65 2e 20 20 28 41 | 72 67 75 6d 65 6e 74 20 |ize. (A|rgument |
|000009b0| 74 6f 20 61 6c 6c 6f 63 | 61 29 0a 58 0a 58 20 20 |to alloc|a).X.X |
|000009c0| 20 20 20 20 20 20 70 6f | 70 20 20 20 20 20 20 64 | po|p d|
|000009d0| 78 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |x | |
|000009e0| 20 20 20 20 20 20 20 3b | 20 53 74 6f 72 65 20 73 | ;| Store s|
|000009f0| 6f 6d 65 0a 58 20 20 20 | 20 20 20 20 20 70 6f 70 |ome.X | pop|
|00000a00| 20 20 20 20 20 20 61 78 | 0a 58 23 69 66 20 4c 5f | ax|.X#if L_|
|00000a10| 44 41 54 41 0a 58 20 20 | 20 20 20 20 20 20 70 6f |DATA.X | po|
|00000a20| 70 20 20 20 20 20 20 63 | 73 3a 40 61 6c 6c 6f 63 |p c|s:@alloc|
|00000a30| 61 5f 62 75 66 66 65 72 | 20 20 20 20 20 20 20 3b |a_buffer| ;|
|00000a40| 20 64 61 74 61 20 66 72 | 6f 6d 20 63 61 6c 6c 65 | data fr|om calle|
|00000a50| 72 27 73 20 73 74 61 63 | 6b 0a 58 20 20 20 20 20 |r's stac|k.X |
|00000a60| 20 20 20 70 75 73 68 20 | 20 20 20 20 63 73 3a 40 | push | cs:@|
|00000a70| 61 6c 6c 6f 63 61 5f 62 | 75 66 66 65 72 20 20 20 |alloca_b|uffer |
|00000a80| 20 20 20 20 3b 20 28 44 | 53 2c 53 49 2c 44 49 2d | ; (D|S,SI,DI-|
|00000a90| 2d 73 6f 6d 65 20 6d 61 | 79 20 6e 6f 74 20 62 65 |-some ma|y not be|
|00000aa0| 20 6e 65 63 65 73 73 61 | 72 79 29 0a 58 23 65 6e | necessa|ry).X#en|
|00000ab0| 64 69 66 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |dif | |
|00000ac0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000ad0| 20 20 20 20 20 20 3b 20 | 44 53 20 75 6e 6e 65 63 | ; |DS unnec|
|00000ae0| 65 73 73 61 72 79 20 66 | 6f 72 20 73 6d 61 6c 6c |essary f|or small|
|00000af0| 20 64 61 74 61 20 6d 6f | 64 65 6c 73 0a 58 20 20 | data mo|dels.X |
|00000b00| 20 20 20 20 20 20 70 75 | 73 68 20 20 20 20 20 61 | pu|sh a|
|00000b10| 78 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |x | |
|00000b20| 20 20 20 20 20 20 20 3b | 20 77 65 20 70 75 74 20 | ;| we put |
|00000b30| 69 74 20 62 61 63 6b 20 | 61 66 74 65 72 20 72 65 |it back |after re|
|00000b40| 61 64 69 6e 67 0a 58 20 | 20 20 20 20 20 20 20 70 |ading.X | p|
|00000b50| 75 73 68 20 20 20 20 20 | 64 78 0a 58 20 20 20 20 |ush |dx.X |
|00000b60| 20 20 20 20 69 6e 63 20 | 20 20 20 20 20 63 78 20 | inc | cx |
|00000b70| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000b80| 20 20 20 20 3b 20 52 6f | 75 6e 64 20 43 58 20 74 | ; Ro|und CX t|
|00000b90| 6f 20 65 76 65 6e 2e 20 | 20 28 53 50 20 6d 75 73 |o even. | (SP mus|
|00000ba0| 74 20 62 65 20 65 76 65 | 6e 2c 0a 58 20 20 20 20 |t be eve|n,.X |
|00000bb0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000bc0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000bd0| 20 20 20 20 3b 20 65 6c | 73 65 20 70 65 72 66 6f | ; el|se perfo|
|00000be0| 72 6d 61 6e 63 65 20 64 | 65 67 72 61 64 65 73 29 |rmance d|egrades)|
|00000bf0| 0a 58 20 20 20 20 20 20 | 20 20 73 68 72 20 20 20 |.X | shr |
|00000c00| 20 20 20 63 78 2c 31 0a | 58 20 09 73 68 6c 09 20 | cx,1.|X .shl. |
|00000c10| 63 78 2c 31 20 20 20 20 | 20 0a 58 20 20 20 20 20 |cx,1 | .X |
|00000c20| 20 20 20 73 75 62 20 20 | 20 20 20 20 73 70 2c 63 | sub | sp,c|
|00000c30| 78 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |x | |
|00000c40| 20 20 20 3b 20 41 6c 6c | 6f 63 61 74 65 20 74 68 | ; All|ocate th|
|00000c50| 65 20 73 70 61 63 65 0a | 58 0a 58 23 69 66 20 4c |e space.|X.X#if L|
|00000c60| 5f 44 41 54 41 0a 58 20 | 20 20 20 20 20 20 20 70 |_DATA.X | p|
|00000c70| 75 73 68 20 20 20 20 20 | 63 73 3a 40 61 6c 6c 6f |ush |cs:@allo|
|00000c80| 63 61 5f 62 75 66 66 65 | 72 20 20 20 20 20 20 3b |ca_buffe|r ;|
|00000c90| 20 6d 61 6b 65 20 61 20 | 63 6f 70 79 20 6f 66 20 | make a |copy of |
|00000ca0| 74 68 65 20 70 6f 73 73 | 69 62 6c 65 20 64 61 74 |the poss|ible dat|
|00000cb0| 61 0a 58 23 65 6e 64 69 | 66 0a 58 20 20 20 20 20 |a.X#endi|f.X |
|00000cc0| 20 20 20 70 75 73 68 20 | 20 20 20 20 61 78 20 20 | push | ax |
|00000cd0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000ce0| 20 20 20 3b 20 28 44 53 | 2c 53 49 2c 44 49 29 20 | ; (DS|,SI,DI) |
|00000cf0| 6f 6e 20 74 68 65 20 63 | 61 6c 6c 65 72 27 73 20 |on the c|aller's |
|00000d00| 73 74 61 63 6b 0a 58 20 | 20 20 20 20 20 20 20 70 |stack.X | p|
|00000d10| 75 73 68 20 20 20 20 20 | 64 78 0a 58 0a 58 20 20 |ush |dx.X.X |
|00000d20| 20 20 20 20 20 20 6d 6f | 76 20 20 20 20 20 20 61 | mo|v a|
|00000d30| 78 2c 73 70 20 20 20 20 | 20 20 20 20 20 20 20 20 |x,sp | |
|00000d40| 20 20 20 20 20 20 3b 20 | 52 65 74 75 72 6e 20 76 | ; |Return v|
|00000d50| 61 6c 75 65 2e 0a 58 23 | 69 66 20 4c 5f 44 41 54 |alue..X#|if L_DAT|
|00000d60| 41 0a 58 20 20 20 20 20 | 20 20 20 61 64 64 20 20 |A.X | add |
|00000d70| 20 20 20 20 61 78 2c 38 | 20 20 20 20 20 20 20 20 | ax,8| |
|00000d80| 20 20 20 20 20 20 20 20 | 20 20 20 3b 20 72 65 6d | | ; rem|
|00000d90| 65 6d 62 65 72 20 77 65 | 20 70 75 74 20 33 20 77 |ember we| put 3 w|
|00000da0| 6f 72 64 73 20 6f 6e 20 | 74 68 65 20 73 74 61 63 |ords on |the stac|
|00000db0| 6b 0a 58 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |k.X | |
|00000dc0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000dd0| 20 20 20 20 20 20 20 20 | 20 20 20 3b 20 61 6e 64 | | ; and|
|00000de0| 20 74 68 65 20 73 74 61 | 63 6b 20 70 6f 69 6e 74 | the sta|ck point|
|00000df0| 73 20 74 6f 20 61 20 66 | 72 65 65 20 77 6f 72 64 |s to a f|ree word|
|00000e00| 0a 58 23 65 6c 73 65 0a | 58 20 20 20 20 20 20 20 |.X#else.|X |
|00000e10| 20 61 64 64 20 20 20 20 | 20 20 61 78 2c 36 20 20 | add | ax,6 |
|00000e20| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000e30| 20 3b 20 32 20 77 6f 72 | 64 73 20 66 6f 72 20 73 | ; 2 wor|ds for s|
|00000e40| 6d 61 6c 6c 20 64 61 74 | 61 20 6d 6f 64 65 6c 73 |mall dat|a models|
|00000e50| 20 6f 6e 6c 79 0a 58 23 | 65 6e 64 69 66 0a 58 20 | only.X#|endif.X |
|00000e60| 20 20 20 20 20 20 20 70 | 75 73 68 20 20 20 20 20 | p|ush |
|00000e70| 63 78 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |cx | |
|00000e80| 20 20 20 20 20 20 20 3b | 20 70 75 74 20 74 68 65 | ;| put the|
|00000e90| 20 73 69 7a 65 20 62 61 | 63 6b 20 6f 6e 20 74 68 | size ba|ck on th|
|00000ea0| 65 20 73 74 61 63 6b 0a | 58 23 69 66 20 4c 5f 43 |e stack.|X#if L_C|
|00000eb0| 4f 44 45 0a 58 20 20 20 | 20 20 20 20 20 70 75 73 |ODE.X | pus|
|00000ec0| 68 20 20 20 20 20 65 73 | 20 20 20 20 20 20 20 20 |h es| |
|00000ed0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 3b 20 68 | | ; h|
|00000ee0| 69 67 68 20 6f 72 64 65 | 72 20 72 65 74 75 72 6e |igh orde|r return|
|00000ef0| 20 61 64 64 72 65 73 73 | 0a 58 23 65 6e 64 69 66 | address|.X#endif|
|00000f00| 0a 58 20 20 20 20 20 20 | 20 20 70 75 73 68 20 20 |.X | push |
|00000f10| 20 20 20 62 78 20 20 20 | 20 20 20 20 20 20 20 20 | bx | |
|00000f20| 20 20 20 20 20 20 20 20 | 20 20 3b 20 6c 6f 77 20 | | ; low |
|00000f30| 6f 72 64 65 72 20 72 65 | 74 75 72 6e 20 61 64 64 |order re|turn add|
|00000f40| 72 65 73 73 0a 58 23 69 | 66 20 4c 5f 44 41 54 41 |ress.X#i|f L_DATA|
|00000f50| 0a 58 20 20 20 20 20 20 | 20 20 6d 6f 76 20 20 20 |.X | mov |
|00000f60| 20 20 20 64 78 2c 73 73 | 20 20 20 20 20 20 20 20 | dx,ss| |
|00000f70| 20 20 20 20 20 20 20 20 | 20 20 3b 20 68 69 67 68 | | ; high|
|00000f80| 20 6f 72 64 65 72 20 72 | 65 74 75 72 6e 20 76 61 | order r|eturn va|
|00000f90| 6c 75 65 0a 58 23 65 6e | 64 69 66 0a 58 23 69 66 |lue.X#en|dif.X#if|
|00000fa0| 20 4c 5f 43 4f 44 45 0a | 58 20 20 20 20 20 20 20 | L_CODE.|X |
|00000fb0| 20 72 65 74 66 20 20 20 | 20 20 20 20 20 20 20 20 | retf | |
|00000fc0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000fd0| 20 3b 20 6f 75 74 20 77 | 65 20 67 6f 21 0a 58 23 | ; out w|e go!.X#|
|00000fe0| 65 6c 73 65 0a 58 20 20 | 20 20 20 20 20 20 72 65 |else.X | re|
|00000ff0| 74 0a 58 23 65 6e 64 69 | 66 0a 58 0a 58 41 4c 4c |t.X#endi|f.X.XALL|
|00001000| 4f 43 41 5f 54 45 58 54 | 20 20 20 20 20 65 6e 64 |OCA_TEXT| end|
|00001010| 73 0a 58 09 65 6e 64 0a | 53 48 41 52 5f 45 4f 46 |s.X.end.|SHAR_EOF|
|00001020| 0a 66 69 20 23 20 65 6e | 64 20 6f 66 20 6f 76 65 |.fi # en|d of ove|
|00001030| 72 77 72 69 74 69 6e 67 | 20 63 68 65 63 6b 0a 69 |rwriting| check.i|
|00001040| 66 20 74 65 73 74 20 2d | 66 20 27 61 6c 6c 6f 63 |f test -|f 'alloc|
|00001050| 61 2e 64 6f 63 27 0a 74 | 68 65 6e 0a 09 65 63 68 |a.doc'.t|hen..ech|
|00001060| 6f 20 73 68 61 72 3a 20 | 77 69 6c 6c 20 6e 6f 74 |o shar: |will not|
|00001070| 20 6f 76 65 72 2d 77 72 | 69 74 65 20 65 78 69 73 | over-wr|ite exis|
|00001080| 74 69 6e 67 20 66 69 6c | 65 20 22 27 61 6c 6c 6f |ting fil|e "'allo|
|00001090| 63 61 2e 64 6f 63 27 22 | 0a 65 6c 73 65 0a 73 65 |ca.doc'"|.else.se|
|000010a0| 64 20 27 73 2f 5e 58 2f | 2f 27 20 3c 3c 20 5c 53 |d 's/^X/|/' << \S|
|000010b0| 48 41 52 5f 45 4f 46 20 | 3e 20 27 61 6c 6c 6f 63 |HAR_EOF |> 'alloc|
|000010c0| 61 2e 64 6f 63 27 0a 58 | 61 6c 6c 6f 63 61 28 29 |a.doc'.X|alloca()|
|000010d0| 20 62 79 20 41 6c 65 78 | 61 6e 64 65 72 20 50 72 | by Alex|ander Pr|
|000010e0| 75 73 73 20 66 6f 72 20 | 54 75 72 62 6f 20 43 0a |uss for |Turbo C.|
|000010f0| 58 7e 7e 7e 7e 7e 7e 7e | 7e 7e 7e 7e 7e 7e 7e 7e |X~~~~~~~|~~~~~~~~|
|00001100| 7e 7e 7e 7e 7e 7e 7e 7e | 7e 7e 7e 7e 7e 7e 7e 7e |~~~~~~~~|~~~~~~~~|
|00001110| 7e 7e 7e 7e 7e 7e 7e 7e | 0a 58 0a 58 65 6d 61 69 |~~~~~~~~|.X.Xemai|
|00001120| 6c 3a 20 70 72 75 73 73 | 40 75 77 6f 2e 63 61 20 |l: pruss|@uwo.ca |
|00001130| 20 2f 2f 20 69 6e 74 65 | 72 6e 65 74 0a 58 20 20 | // inte|rnet.X |
|00001140| 20 20 20 20 20 70 72 75 | 73 73 40 75 77 6f 76 61 | pru|ss@uwova|
|00001150| 78 20 20 2f 2f 20 62 69 | 74 6e 65 74 0a 58 20 20 |x // bi|tnet.X |
|00001160| 20 20 20 20 20 70 72 75 | 73 73 40 72 69 61 20 20 | pru|ss@ria |
|00001170| 20 20 20 2f 2f 20 75 75 | 63 70 0a 58 0a 58 52 65 | // uu|cp.X.XRe|
|00001180| 6c 65 61 73 65 64 20 69 | 6e 74 6f 20 74 68 65 20 |leased i|nto the |
|00001190| 70 75 62 6c 69 63 20 64 | 6f 6d 61 69 6e 20 77 69 |public d|omain wi|
|000011a0| 74 68 20 74 68 65 20 72 | 65 73 74 72 69 63 74 69 |th the r|estricti|
|000011b0| 6f 6e 20 74 68 61 74 20 | 74 68 65 20 61 63 6b 6e |on that |the ackn|
|000011c0| 6f 77 6c 65 64 67 65 6d | 65 6e 74 73 0a 58 74 6f |owledgem|ents.Xto|
|000011d0| 20 41 6c 65 78 61 6e 64 | 65 72 20 50 72 75 73 73 | Alexand|er Pruss|
|000011e0| 20 61 72 65 20 70 72 65 | 73 65 72 76 65 64 2e 0a | are pre|served..|
|000011f0| 58 0a 58 0a 58 57 61 72 | 72 61 6e 74 79 3a 20 4e |X.X.XWar|ranty: N|
|00001200| 4f 4e 45 21 20 20 54 68 | 69 73 20 68 61 73 20 75 |ONE! Th|is has u|
|00001210| 6e 64 65 72 67 6f 6e 65 | 20 63 6f 6e 73 69 64 65 |ndergone| conside|
|00001220| 72 61 62 6c 65 20 74 65 | 73 74 69 6e 67 2c 20 62 |rable te|sting, b|
|00001230| 75 74 20 69 74 20 69 73 | 20 6c 69 6b 65 6c 79 0a |ut it is| likely.|
|00001240| 58 20 20 20 20 20 20 20 | 20 20 20 6e 6f 74 20 74 |X | not t|
|00001250| 6f 20 77 6f 72 6b 20 69 | 6e 20 6d 61 6e 79 20 63 |o work i|n many c|
|00001260| 61 73 65 73 2e 20 20 49 | 74 20 6d 61 79 20 63 61 |ases. I|t may ca|
|00001270| 75 73 65 20 64 61 6d 61 | 67 65 20 74 6f 20 79 6f |use dama|ge to yo|
|00001280| 75 72 20 73 79 73 74 65 | 6d 20 69 66 0a 58 20 20 |ur syste|m if.X |
|00001290| 20 20 20 20 20 20 20 20 | 69 74 20 66 61 69 6c 73 | |it fails|
|000012a0| 20 69 6e 20 61 20 70 61 | 72 74 69 63 75 6c 61 72 | in a pa|rticular|
|000012b0| 6c 79 20 6e 61 73 74 79 | 20 77 61 79 2e 20 20 55 |ly nasty| way. U|
|000012c0| 53 45 20 41 54 20 59 4f | 55 52 20 4f 57 4e 20 52 |SE AT YO|UR OWN R|
|000012d0| 49 53 4b 21 0a 58 0a 58 | 0a 58 41 20 66 65 77 20 |ISK!.X.X|.XA few |
|000012e0| 77 6f 72 64 73 20 61 62 | 6f 75 74 20 73 74 61 63 |words ab|out stac|
|000012f0| 6b 20 66 72 61 6d 65 73 | 2e 0a 58 7e 7e 7e 7e 7e |k frames|..X~~~~~|
|00001300| 7e 7e 7e 7e 7e 7e 7e 7e | 7e 7e 7e 7e 7e 7e 7e 7e |~~~~~~~~|~~~~~~~~|
|00001310| 7e 7e 7e 7e 7e 7e 7e 7e | 7e 7e 0a 58 61 6c 6c 6f |~~~~~~~~|~~.Xallo|
|00001320| 63 61 28 29 20 6e 65 65 | 64 73 20 61 20 72 65 61 |ca() nee|ds a rea|
|00001330| 6c 20 73 74 61 63 6b 20 | 66 72 61 6d 65 20 69 6e |l stack |frame in|
|00001340| 20 74 68 65 20 66 75 6e | 63 74 69 6f 6e 20 74 68 | the fun|ction th|
|00001350| 61 74 20 63 61 6c 6c 73 | 20 69 74 2e 0a 58 54 68 |at calls| it..XTh|
|00001360| 69 73 20 6d 65 61 6e 73 | 20 74 68 61 74 20 74 68 |is means| that th|
|00001370| 65 20 66 75 6e 63 74 69 | 6f 6e 20 6d 75 73 74 20 |e functi|on must |
|00001380| 62 65 67 69 6e 20 77 69 | 74 68 20 61 6e 20 45 4e |begin wi|th an EN|
|00001390| 54 45 52 20 28 6f 72 20 | 70 75 73 68 20 62 70 3b |TER (or |push bp;|
|000013a0| 20 6d 6f 76 20 62 70 2c | 73 70 29 0a 58 61 6e 64 | mov bp,|sp).Xand|
|000013b0| 20 65 6e 64 20 77 69 74 | 68 20 61 20 4c 45 41 56 | end wit|h a LEAV|
|000013c0| 45 20 28 6f 72 20 6d 6f | 76 20 73 70 2c 62 70 3b |E (or mo|v sp,bp;|
|000013d0| 20 70 6f 70 20 62 70 29 | 2e 20 20 4a 75 73 74 20 | pop bp)|. Just |
|000013e0| 73 65 74 74 69 6e 67 20 | 74 68 65 20 63 6f 6d 70 |setting |the comp|
|000013f0| 69 6c 65 72 20 2d 6b 0a | 58 28 73 74 61 6e 64 61 |iler -k.|X(standa|
|00001400| 72 64 20 66 72 61 6d 65 | 29 20 73 77 69 74 63 68 |rd frame|) switch|
|00001410| 20 69 73 20 6e 6f 74 20 | 65 6e 6f 75 67 68 20 61 | is not |enough a|
|00001420| 73 20 74 68 65 20 4c 45 | 41 56 45 20 69 73 20 74 |s the LE|AVE is t|
|00001430| 68 65 6e 20 63 68 61 6e | 67 65 64 20 69 6e 74 6f |hen chan|ged into|
|00001440| 20 61 0a 58 73 74 72 61 | 69 67 68 74 20 70 6f 70 | a.Xstra|ight pop|
|00001450| 20 62 70 2e 0a 58 0a 58 | 54 68 65 20 63 6f 72 72 | bp..X.X|The corr|
|00001460| 65 63 74 20 73 74 61 63 | 6b 20 66 72 61 6d 65 20 |ect stac|k frame |
|00001470| 77 69 6c 6c 20 62 65 20 | 69 6e 73 65 72 74 65 64 |will be |inserted|
|00001480| 20 70 72 6f 76 69 64 65 | 64 20 74 68 65 20 63 6f | provide|d the co|
|00001490| 6d 70 69 6c 65 72 20 63 | 61 6e 6e 6f 74 0a 58 6d |mpiler c|annot.Xm|
|000014a0| 61 6b 65 20 61 6c 6c 20 | 74 68 65 20 6c 6f 63 61 |ake all |the loca|
|000014b0| 6c 20 76 61 72 69 61 62 | 6c 65 73 20 69 6e 74 6f |l variab|les into|
|000014c0| 20 72 65 67 69 73 74 65 | 72 73 2e 20 20 54 68 75 | registe|rs. Thu|
|000014d0| 73 20 69 66 20 74 68 65 | 20 63 61 6c 6c 69 6e 67 |s if the| calling|
|000014e0| 20 66 75 6e 63 74 69 6f | 6e 0a 58 68 61 73 20 6d | functio|n.Xhas m|
|000014f0| 6f 72 65 20 74 68 61 6e | 20 74 77 6f 20 69 6e 74 |ore than| two int|
|00001500| 65 67 65 72 20 61 75 74 | 6f 20 76 61 72 69 61 62 |eger aut|o variab|
|00001510| 6c 65 73 20 6f 72 20 69 | 74 20 68 61 73 20 61 20 |les or i|t has a |
|00001520| 6e 6f 6e 69 6e 74 65 67 | 65 72 20 61 6e 64 20 6e |noninteg|er and n|
|00001530| 6f 6e 66 6c 6f 61 74 0a | 58 61 75 74 6f 20 76 61 |onfloat.|Xauto va|
|00001540| 72 69 61 62 6c 65 20 28 | 61 20 6e 65 61 72 20 70 |riable (|a near p|
|00001550| 6f 69 6e 74 65 72 20 77 | 65 20 63 6f 6e 73 69 64 |ointer w|e consid|
|00001560| 65 72 20 61 6e 20 69 6e | 74 65 67 65 72 2c 20 62 |er an in|teger, b|
|00001570| 75 74 20 6e 6f 74 20 61 | 20 66 61 72 20 70 6f 69 |ut not a| far poi|
|00001580| 6e 74 65 72 29 0a 58 74 | 68 65 6e 20 69 74 20 77 |nter).Xt|hen it w|
|00001590| 69 6c 6c 20 68 61 76 65 | 20 61 20 73 74 61 63 6b |ill have| a stack|
|000015a0| 20 66 72 61 6d 65 2e 0a | 58 0a 58 49 2e 65 2e 20 | frame..|X.XI.e. |
|000015b0| 74 68 65 20 66 75 6e 63 | 74 69 6f 6e 73 20 62 65 |the func|tions be|
|000015c0| 6c 6f 77 20 68 61 76 65 | 20 61 20 73 74 61 63 6b |low have| a stack|
|000015d0| 20 66 72 61 6d 65 3a 0a | 58 66 28 61 29 20 20 7b | frame:.|Xf(a) {|
|000015e0| 20 69 6e 74 20 78 3b 20 | 69 6e 74 20 79 3b 20 69 | int x; |int y; i|
|000015f0| 6e 74 20 7a 3b 20 2e 2e | 2e 20 7d 20 20 2f 2a 20 |nt z; ..|. } /* |
|00001600| 33 20 69 6e 74 65 67 65 | 72 20 76 61 72 73 20 2a |3 intege|r vars *|
|00001610| 2f 0a 58 67 28 61 29 20 | 20 7b 20 63 68 61 72 20 |/.Xg(a) | { char |
|00001620| 78 3b 20 2e 2e 2e 20 7d | 20 20 20 20 20 20 20 20 |x; ... }| |
|00001630| 20 20 20 20 20 20 20 2f | 2a 20 6e 6f 6e 69 6e 74 | /|* nonint|
|00001640| 65 67 65 72 20 76 61 72 | 20 2a 2f 0a 58 68 28 61 |eger var| */.Xh(a|
|00001650| 29 20 20 7b 20 63 68 61 | 72 20 66 61 72 20 2a 78 |) { cha|r far *x|
|00001660| 3b 20 2e 2e 2e 20 7d 20 | 20 20 20 20 20 20 20 20 |; ... } | |
|00001670| 20 2f 2a 20 66 61 72 20 | 70 6f 69 6e 74 65 72 20 | /* far |pointer |
|00001680| 20 20 20 2a 2f 0a 58 69 | 28 61 29 20 20 7b 20 7b | */.Xi|(a) { {|
|00001690| 20 63 68 61 72 20 64 75 | 6d 6d 79 3b 20 64 75 6d | char du|mmy; dum|
|000016a0| 6d 79 3d 64 75 6d 6d 79 | 3b 20 7d 20 7d 20 20 2f |my=dummy|; } } /|
|000016b0| 2a 20 6d 6f 72 65 20 61 | 62 6f 75 74 20 74 68 69 |* more a|bout thi|
|000016c0| 73 20 6c 61 74 65 72 20 | 6f 6e 20 2a 2f 0a 58 0a |s later |on */.X.|
|000016d0| 58 61 6e 64 20 74 68 65 | 20 66 75 6e 63 74 69 6f |Xand the| functio|
|000016e0| 6e 73 20 62 65 6c 6f 77 | 20 6d 61 79 20 6f 72 20 |ns below| may or |
|000016f0| 6d 61 79 20 6e 6f 74 20 | 68 61 76 65 20 61 20 70 |may not |have a p|
|00001700| 72 6f 70 65 72 20 73 74 | 61 63 6b 20 66 72 61 6d |roper st|ack fram|
|00001710| 65 3a 0a 58 46 28 61 29 | 20 20 7b 20 69 6e 74 20 |e:.XF(a)| { int |
|00001720| 78 3b 20 69 6e 74 20 79 | 3b 20 2e 2e 2e 20 7d 0a |x; int y|; ... }.|
|00001730| 58 47 28 61 29 20 20 7b | 20 69 6e 74 20 78 3b 20 |XG(a) {| int x; |
|00001740| 2e 2e 2e 20 7d 0a 58 48 | 28 61 29 20 20 7b 20 63 |... }.XH|(a) { c|
|00001750| 68 61 72 20 6e 65 61 72 | 20 2a 78 3b 20 69 6e 74 |har near| *x; int|
|00001760| 20 79 3b 20 2e 2e 2e 20 | 7d 0a 58 49 28 61 29 20 | y; ... |}.XI(a) |
|00001770| 20 7b 20 66 6c 6f 61 74 | 20 78 3b 20 64 6f 75 62 | { float| x; doub|
|00001780| 6c 65 20 79 3b 20 2e 2e | 2e 20 7d 20 20 20 20 2f |le y; ..|. } /|
|00001790| 2a 20 66 6c 6f 61 74 73 | 20 6d 69 67 68 74 20 67 |* floats| might g|
|000017a0| 6f 20 6f 6e 20 38 30 38 | 37 20 73 74 61 63 6b 20 |o on 808|7 stack |
|000017b0| 2a 2f 0a 58 0a 58 59 6f | 75 20 63 61 6e 20 66 6f |*/.X.XYo|u can fo|
|000017c0| 72 63 65 20 61 20 73 74 | 61 63 6b 20 66 72 61 6d |rce a st|ack fram|
|000017d0| 65 20 62 79 20 69 6e 73 | 65 72 74 69 6e 67 20 73 |e by ins|erting s|
|000017e0| 6f 6d 65 77 68 65 72 65 | 20 69 6e 20 74 68 65 20 |omewhere| in the |
|000017f0| 66 75 6e 63 74 69 6f 6e | 2c 20 77 68 65 72 65 0a |function|, where.|
|00001800| 58 74 68 65 20 66 6c 6f | 77 20 6f 66 20 65 78 65 |Xthe flo|w of exe|
|00001810| 63 75 74 69 6f 6e 20 77 | 69 6c 6c 20 72 65 61 63 |cution w|ill reac|
|00001820| 68 20 69 74 2c 20 74 68 | 65 20 6c 69 6e 65 3a 0a |h it, th|e line:.|
|00001830| 58 20 20 7b 20 63 68 61 | 72 20 64 75 6d 6d 79 3b |X { cha|r dummy;|
|00001840| 20 64 75 6d 6d 79 3d 64 | 75 6d 6d 79 3b 20 7d 0a | dummy=d|ummy; }.|
|00001850| 58 0a 58 0a 58 48 6f 77 | 20 74 6f 20 75 73 65 20 |X.X.XHow| to use |
|00001860| 61 6c 6c 6f 63 61 28 29 | 2e 0a 58 7e 7e 7e 7e 7e |alloca()|..X~~~~~|
|00001870| 7e 7e 7e 7e 7e 7e 7e 7e | 7e 7e 7e 7e 7e 7e 7e 0a |~~~~~~~~|~~~~~~~.|
|00001880| 58 23 69 6e 63 6c 75 64 | 65 20 22 61 6c 6c 6f 63 |X#includ|e "alloc|
|00001890| 61 2e 68 22 0a 58 0a 58 | 6e 6f 77 20 79 6f 75 20 |a.h".X.X|now you |
|000018a0| 63 61 6e 20 75 73 65 20 | 61 6c 6c 6f 63 61 28 29 |can use |alloca()|
|000018b0| 20 61 73 3a 0a 58 20 20 | 20 20 20 20 20 20 76 6f | as:.X | vo|
|000018c0| 69 64 20 2a 61 6c 6c 6f | 63 61 28 75 6e 73 69 67 |id *allo|ca(unsig|
|000018d0| 6e 65 64 20 73 69 7a 65 | 29 3b 0a 58 0a 58 61 6c |ned size|);.X.Xal|
|000018e0| 6c 6f 63 61 28 29 20 69 | 73 20 61 20 72 65 70 6c |loca() i|s a repl|
|000018f0| 61 63 65 6d 65 6e 74 20 | 66 6f 72 20 6d 61 6c 6c |acement |for mall|
|00001900| 6f 63 28 29 20 77 68 69 | 63 68 20 61 6c 6c 6f 63 |oc() whi|ch alloc|
|00001910| 61 74 65 73 20 73 70 61 | 63 65 20 77 68 69 63 68 |ates spa|ce which|
|00001920| 20 77 69 6c 6c 0a 58 62 | 65 20 64 65 61 6c 6c 6f | will.Xb|e deallo|
|00001930| 63 61 74 65 64 20 75 70 | 6f 6e 20 72 65 74 75 72 |cated up|on retur|
|00001940| 6e 20 66 72 6f 6d 20 74 | 68 65 20 63 61 6c 6c 69 |n from t|he calli|
|00001950| 6e 67 20 72 6f 75 74 69 | 6e 65 2e 0a 58 0a 58 59 |ng routi|ne..X.XY|
|00001960| 6f 75 20 6d 75 73 74 20 | 6c 69 6e 6b 20 69 6e 20 |ou must |link in |
|00001970| 74 68 65 20 61 70 70 72 | 6f 70 72 69 61 74 65 20 |the appr|opriate |
|00001980| 76 65 72 73 69 6f 6e 20 | 75 6e 6c 65 73 73 20 79 |version |unless y|
|00001990| 6f 75 20 61 72 65 20 75 | 73 69 6e 67 20 49 4e 4c |ou are u|sing INL|
|000019a0| 49 4e 45 5f 41 4c 4c 4f | 43 41 0a 58 28 73 65 65 |INE_ALLO|CA.X(see|
|000019b0| 20 62 65 6c 6f 77 29 3a | 0a 58 0a 58 6d 65 6d 6f | below):|.X.Xmemo|
|000019c0| 72 79 20 6d 6f 64 65 6c | 20 20 20 20 20 20 6f 62 |ry model| ob|
|000019d0| 6a 65 63 74 20 66 69 6c | 65 0a 58 7e 7e 7e 7e 7e |ject fil|e.X~~~~~|
|000019e0| 7e 7e 7e 7e 7e 7e 7e 20 | 20 20 20 20 20 7e 7e 7e |~~~~~~~ | ~~~|
|000019f0| 7e 7e 7e 7e 7e 7e 7e 7e | 0a 58 74 69 6e 79 2c 20 |~~~~~~~~|.Xtiny, |
|00001a00| 73 6d 61 6c 6c 20 20 20 | 20 20 20 20 61 6c 6c 6f |small | allo|
|00001a10| 63 61 2e 6f 62 73 0a 58 | 6d 65 64 69 75 6d 20 20 |ca.obs.X|medium |
|00001a20| 20 20 20 20 20 20 20 20 | 20 20 61 6c 6c 6f 63 61 | | alloca|
|00001a30| 2e 6f 62 6d 0a 58 63 6f | 6d 70 61 63 74 20 20 20 |.obm.Xco|mpact |
|00001a40| 20 20 20 20 20 20 20 20 | 61 6c 6c 6f 63 61 2e 6f | |alloca.o|
|00001a50| 62 63 0a 58 6c 61 72 67 | 65 2c 20 68 75 67 65 20 |bc.Xlarg|e, huge |
|00001a60| 20 20 20 20 20 20 61 6c | 6c 6f 63 61 2e 6f 62 6c | al|loca.obl|
|00001a70| 0a 58 0a 58 4f 70 74 69 | 6f 6e 73 3a 0a 58 20 49 |.X.XOpti|ons:.X I|
|00001a80| 66 20 79 6f 75 20 69 6e | 73 65 72 74 20 23 64 65 |f you in|sert #de|
|00001a90| 66 69 6e 65 20 49 4e 4c | 49 4e 45 5f 41 4c 4c 4f |fine INL|INE_ALLO|
|00001aa0| 43 41 20 62 65 66 6f 72 | 65 20 23 69 6e 63 6c 75 |CA befor|e #inclu|
|00001ab0| 64 65 27 69 6e 67 20 61 | 6c 6c 6f 63 61 2e 68 2c |de'ing a|lloca.h,|
|00001ac0| 20 74 68 65 6e 20 79 6f | 75 0a 58 20 77 69 6c 6c | then yo|u.X will|
|00001ad0| 20 68 61 76 65 20 61 20 | 6d 75 63 68 20 66 61 73 | have a |much fas|
|00001ae0| 74 65 72 20 28 62 75 74 | 20 6c 61 72 67 65 72 29 |ter (but| larger)|
|00001af0| 20 69 6e 6c 69 6e 65 20 | 76 65 72 73 69 6f 6e 2e | inline |version.|
|00001b00| 20 20 59 6f 75 20 6e 65 | 65 64 20 6e 6f 20 6c 6f | You ne|ed no lo|
|00001b10| 6e 67 65 72 0a 58 20 6c | 69 6e 6b 20 69 6e 20 74 |nger.X l|ink in t|
|00001b20| 68 65 20 6f 62 6a 65 63 | 74 20 66 69 6c 65 2e 0a |he objec|t file..|
|00001b30| 58 0a 58 20 49 66 20 79 | 6f 75 20 69 6e 73 65 72 |X.X If y|ou inser|
|00001b40| 74 20 23 64 65 66 69 6e | 65 20 46 4f 52 43 45 5f |t #defin|e FORCE_|
|00001b50| 53 54 41 43 4b 2c 20 74 | 68 65 6e 20 61 20 73 74 |STACK, t|hen a st|
|00001b60| 61 63 6b 20 66 72 61 6d | 65 20 69 73 20 66 6f 72 |ack fram|e is for|
|00001b70| 63 65 64 20 6f 6e 74 6f | 20 74 68 65 0a 58 20 66 |ced onto| the.X f|
|00001b80| 75 6e 63 74 69 6f 6e 20 | 61 75 74 6f 6d 61 74 69 |unction |automati|
|00001b90| 63 61 6c 6c 79 2e 20 20 | 54 68 69 73 20 69 73 20 |cally. |This is |
|00001ba0| 64 6f 6e 65 20 61 73 20 | 61 6c 6c 6f 63 61 28 29 |done as |alloca()|
|00001bb0| 20 69 73 20 64 65 66 69 | 6e 65 64 20 74 6f 20 62 | is defi|ned to b|
|00001bc0| 65 0a 58 20 61 6c 6c 6f | 63 61 28 29 3b 20 7b 20 |e.X allo|ca(); { |
|00001bd0| 63 68 61 72 20 64 75 6d | 6d 79 3b 20 64 75 6d 6d |char dum|my; dumm|
|00001be0| 79 3d 64 75 6d 6d 79 3b | 20 7d 0a 58 20 54 68 69 |y=dummy;| }.X Thi|
|00001bf0| 73 20 6d 65 61 6e 73 2c | 20 68 6f 77 65 76 65 72 |s means,| however|
|00001c00| 2c 20 74 68 61 74 20 6c | 65 78 69 63 61 6c 6c 79 |, that l|exically|
|00001c10| 20 61 6c 6c 20 63 61 6c | 6c 73 20 74 6f 20 61 6c | all cal|ls to al|
|00001c20| 6c 6f 63 61 28 29 20 6d | 75 73 74 20 62 65 20 6f |loca() m|ust be o|
|00001c30| 66 20 74 68 65 0a 58 20 | 66 6f 6c 6c 6f 77 69 6e |f the.X |followin|
|00001c40| 67 20 66 6f 72 6d 3a 0a | 58 20 20 78 78 78 20 61 |g form:.|X xxx a|
|00001c50| 6c 6c 6f 63 61 28 79 79 | 79 29 3b 0a 58 20 77 68 |lloca(yy|y);.X wh|
|00001c60| 65 72 65 20 78 78 78 20 | 61 6e 64 20 79 79 79 20 |ere xxx |and yyy |
|00001c70| 61 72 65 20 61 72 62 69 | 74 72 61 72 79 20 74 68 |are arbi|trary th|
|00001c80| 69 6e 67 73 20 28 63 6f | 6e 66 6f 72 6d 69 6e 67 |ings (co|nforming|
|00001c90| 20 74 6f 20 43 20 73 79 | 6e 74 61 78 29 2e 20 20 | to C sy|ntax). |
|00001ca0| 54 68 75 73 2c 0a 58 20 | 20 78 20 3d 20 33 2b 28 |Thus,.X | x = 3+(|
|00001cb0| 63 68 61 72 20 2a 29 61 | 6c 6c 6f 63 61 28 79 29 |char *)a|lloca(y)|
|00001cc0| 3b 20 69 73 20 61 6c 6c | 6f 77 65 64 2c 20 77 68 |; is all|owed, wh|
|00001cd0| 69 6c 65 0a 58 20 20 78 | 20 3d 20 28 63 68 61 72 |ile.X x| = (char|
|00001ce0| 20 2a 29 61 6c 6c 6f 63 | 61 28 79 29 20 2b 20 33 | *)alloc|a(y) + 3|
|00001cf0| 3b 20 69 73 20 69 6c 6c | 65 67 61 6c 2e 20 20 28 |; is ill|egal. (|
|00001d00| 41 6e 64 20 77 69 6c 6c | 20 6c 69 6b 65 6c 79 20 |And will| likely |
|00001d10| 70 72 6f 64 75 63 65 20 | 61 0a 58 20 63 6f 6d 70 |produce |a.X comp|
|00001d20| 69 6c 65 72 20 65 72 72 | 6f 72 2e 29 0a 58 0a 58 |iler err|or.).X.X|
|00001d30| 43 6f 6d 70 69 6c 65 72 | 0a 58 7e 7e 7e 7e 7e 7e |Compiler|.X~~~~~~|
|00001d40| 7e 7e 0a 58 54 65 73 74 | 65 64 20 75 6e 64 65 72 |~~.XTest|ed under|
|00001d50| 20 54 75 72 62 6f 20 43 | 20 32 2e 30 2e 0a 58 0a | Turbo C| 2.0..X.|
|00001d60| 58 42 75 67 73 0a 58 7e | 7e 7e 7e 0a 58 49 66 20 |XBugs.X~|~~~.XIf |
|00001d70| 74 68 65 20 61 6c 6c 6f | 63 61 28 29 27 64 20 70 |the allo|ca()'d p|
|00001d80| 6f 69 6e 74 65 72 20 69 | 73 20 61 73 73 69 67 6e |ointer i|s assign|
|00001d90| 65 64 20 74 6f 20 7a 20 | 61 6e 64 20 7a 20 69 73 |ed to z |and z is|
|00001da0| 20 75 6e 69 74 69 61 6c | 69 7a 65 64 2c 20 74 68 | unitial|ized, th|
|00001db0| 65 20 63 6f 6d 70 69 6c | 65 72 0a 58 6d 61 79 20 |e compil|er.Xmay |
|00001dc0| 67 65 6e 65 72 61 74 65 | 20 61 20 60 70 6f 73 73 |generate| a `poss|
|00001dd0| 69 62 6c 65 20 75 73 65 | 20 62 65 66 6f 72 65 20 |ible use| before |
|00001de0| 64 65 66 69 6e 69 74 69 | 6f 6e 27 20 65 72 72 6f |definiti|on' erro|
|00001df0| 72 20 66 6f 72 20 7a 2e | 20 20 49 67 6e 6f 72 65 |r for z.| Ignore|
|00001e00| 20 74 68 69 73 0a 58 65 | 72 72 6f 72 2e 20 20 49 | this.Xe|rror. I|
|00001e10| 20 68 61 76 65 20 79 65 | 74 20 74 6f 20 66 69 6e | have ye|t to fin|
|00001e20| 64 20 6f 75 74 20 77 68 | 61 74 20 63 61 75 73 65 |d out wh|at cause|
|00001e30| 73 20 69 74 2c 20 62 75 | 74 20 74 68 65 20 61 73 |s it, bu|t the as|
|00001e40| 73 65 6d 62 6c 79 20 6f | 75 74 70 75 74 20 69 73 |sembly o|utput is|
|00001e50| 0a 58 4f 2e 4b 2e 20 65 | 76 65 6e 20 69 66 20 74 |.XO.K. e|ven if t|
|00001e60| 68 65 20 65 72 72 6f 72 | 20 6f 63 63 75 72 73 2e |he error| occurs.|
|00001e70| 0a 58 0a 58 54 68 65 20 | 66 75 6e 63 74 69 6f 6e |.X.XThe |function|
|00001e80| 20 6d 75 73 74 20 68 61 | 76 65 20 61 20 70 72 6f | must ha|ve a pro|
|00001e90| 70 65 72 20 73 74 61 63 | 6b 20 66 72 61 6d 65 2e |per stac|k frame.|
|00001ea0| 20 20 28 53 65 65 20 61 | 62 6f 76 65 29 2e 0a 58 | (See a|bove)..X|
|00001eb0| 0a 58 61 6c 6c 6f 63 61 | 28 29 20 69 6e 20 46 4f |.Xalloca|() in FO|
|00001ec0| 52 43 45 5f 53 54 41 43 | 4b 20 6d 6f 64 65 20 6d |RCE_STAC|K mode m|
|00001ed0| 75 73 74 20 62 65 20 63 | 61 6c 6c 65 64 20 6c 65 |ust be c|alled le|
|00001ee0| 78 69 63 61 6c 6c 79 20 | 61 73 20 78 78 78 20 61 |xically |as xxx a|
|00001ef0| 6c 6c 6f 63 61 28 79 79 | 79 29 3b 0a 58 28 73 65 |lloca(yy|y);.X(se|
|00001f00| 65 20 61 62 6f 76 65 29 | 0a 58 0a 58 61 6c 6c 6f |e above)|.X.Xallo|
|00001f10| 63 61 28 29 20 77 69 6c | 6c 20 6e 6f 74 20 77 6f |ca() wil|l not wo|
|00001f20| 72 6b 20 69 6e 20 61 20 | 6c 6f 6e 67 20 61 6e 64 |rk in a |long and|
|00001f30| 20 63 6f 6d 70 6c 69 63 | 61 74 65 64 20 65 78 70 | complic|ated exp|
|00001f40| 72 65 73 73 69 6f 6e 20 | 6f 72 20 69 6e 20 74 68 |ression |or in th|
|00001f50| 65 20 6d 69 64 64 6c 65 | 0a 58 6f 66 20 61 20 66 |e middle|.Xof a f|
|00001f60| 75 6e 63 74 69 6f 6e 20 | 63 61 6c 6c 20 61 73 20 |unction |call as |
|00001f70| 61 74 20 74 68 61 74 20 | 74 69 6d 65 20 74 68 65 |at that |time the|
|00001f80| 20 73 74 61 63 6b 20 6d | 61 79 20 62 65 20 73 63 | stack m|ay be sc|
|00001f90| 72 65 77 65 64 20 75 70 | 2e 20 20 49 74 20 69 73 |rewed up|. It is|
|00001fa0| 20 73 61 66 65 0a 58 74 | 6f 20 75 73 65 20 61 6c | safe.Xt|o use al|
|00001fb0| 6c 6f 63 61 28 29 20 61 | 73 20 74 68 65 20 6c 61 |loca() a|s the la|
|00001fc0| 73 74 20 61 72 67 75 6d | 65 6e 74 20 74 6f 20 61 |st argum|ent to a|
|00001fd0| 20 66 75 6e 63 74 69 6f | 6e 20 63 61 6c 6c 2c 20 | functio|n call, |
|00001fe0| 73 6f 3a 0a 58 20 7a 3d | 66 28 61 6c 70 68 61 2c |so:.X z=|f(alpha,|
|00001ff0| 61 6c 6c 6f 63 61 28 31 | 30 30 29 29 3b 20 69 73 |alloca(1|00)); is|
|00002000| 20 4f 2e 4b 2e 20 28 75 | 6e 6c 65 73 73 20 69 6e | O.K. (u|nless in|
|00002010| 20 46 4f 52 43 45 5f 53 | 54 41 43 4b 20 6d 6f 64 | FORCE_S|TACK mod|
|00002020| 65 29 2c 20 77 68 69 6c | 65 3a 0a 58 20 7a 3d 46 |e), whil|e:.X z=F|
|00002030| 28 61 6c 6c 6f 63 61 28 | 31 30 30 29 2c 61 6c 70 |(alloca(|100),alp|
|00002040| 68 61 29 3b 20 69 73 20 | 69 6c 6c 65 67 61 6c 20 |ha); is |illegal |
|00002050| 61 6e 64 20 77 69 6c 6c | 20 6c 69 6b 65 6c 79 20 |and will| likely |
|00002060| 63 72 61 73 68 2e 20 20 | 28 63 6f 6d 70 69 6c 65 |crash. |(compile|
|00002070| 72 20 65 72 72 6f 72 0a | 58 69 73 20 67 65 6e 65 |r error.|Xis gene|
|00002080| 72 61 74 65 64 20 69 6e | 20 46 4f 52 43 45 5f 53 |rated in| FORCE_S|
|00002090| 54 41 43 4b 20 6d 6f 64 | 65 29 2e 0a 58 4c 6f 6e |TACK mod|e)..XLon|
|000020a0| 67 20 61 72 69 74 68 6d | 65 74 69 63 20 65 78 70 |g arithm|etic exp|
|000020b0| 72 65 73 73 69 6f 6e 73 | 20 6d 61 79 20 73 61 76 |ressions| may sav|
|000020c0| 65 20 69 6e 74 65 72 6d | 65 64 69 61 74 65 20 72 |e interm|ediate r|
|000020d0| 65 73 75 6c 74 73 20 6f | 6e 20 74 68 65 20 73 74 |esults o|n the st|
|000020e0| 61 63 6b 2e 20 20 54 68 | 69 73 0a 58 77 69 6c 6c |ack. Th|is.Xwill|
|000020f0| 20 63 61 75 73 65 20 61 | 6c 6c 6f 63 61 28 29 20 | cause a|lloca() |
|00002100| 74 6f 20 73 63 72 65 77 | 20 75 70 2c 20 73 6f 20 |to screw| up, so |
|00002110| 64 6f 20 6e 6f 74 20 64 | 6f 20 6d 6f 72 65 20 74 |do not d|o more t|
|00002120| 68 61 6e 20 61 20 66 65 | 77 20 73 69 6d 70 6c 65 |han a fe|w simple|
|00002130| 20 6f 70 65 72 61 74 69 | 6f 6e 73 0a 58 6f 6e 20 | operati|ons.Xon |
|00002140| 74 68 65 20 72 65 74 75 | 72 6e 20 76 61 6c 75 65 |the retu|rn value|
|00002150| 2e 20 20 59 6f 75 20 73 | 68 6f 75 6c 64 20 75 73 |. You s|hould us|
|00002160| 65 20 61 6c 6c 6f 63 61 | 28 29 20 6d 61 69 6e 6c |e alloca|() mainl|
|00002170| 79 20 61 73 20 7a 3d 61 | 6c 6c 6f 63 61 28 79 29 |y as z=a|lloca(y)|
|00002180| 3b 20 77 68 69 63 68 20 | 77 69 6c 6c 0a 58 77 6f |; which |will.Xwo|
|00002190| 72 6b 20 75 6e 6c 65 73 | 73 20 79 20 69 73 20 61 |rk unles|s y is a|
|000021a0| 20 6c 6f 6e 67 20 61 6e | 64 20 63 6f 6d 70 6c 65 | long an|d comple|
|000021b0| 78 20 65 78 70 72 65 73 | 73 69 6f 6e 2e 0a 58 49 |x expres|sion..XI|
|000021c0| 6e 20 46 4f 52 43 45 5f | 53 54 41 43 4b 20 6d 6f |n FORCE_|STACK mo|
|000021d0| 64 65 20 73 6f 6d 65 20 | 6c 6f 6e 67 20 61 72 69 |de some |long ari|
|000021e0| 74 68 6d 65 74 69 63 20 | 65 78 70 72 65 73 73 69 |thmetic |expressi|
|000021f0| 6f 6e 73 20 6d 61 79 20 | 67 65 6e 65 72 61 74 65 |ons may |generate|
|00002200| 20 63 6f 6d 70 69 6c 65 | 72 20 65 72 72 6f 72 73 | compile|r errors|
|00002210| 0a 58 62 75 74 20 6e 6f | 72 6d 61 6c 6c 79 20 69 |.Xbut no|rmally i|
|00002220| 66 20 61 6c 6c 6f 63 61 | 28 29 20 73 63 72 65 77 |f alloca|() screw|
|00002230| 73 20 75 70 20 74 68 65 | 20 63 6f 6d 70 69 6c 69 |s up the| compili|
|00002240| 6e 67 20 77 69 6c 6c 20 | 62 65 20 4f 2e 4b 2e 2c |ng will |be O.K.,|
|00002250| 20 6a 75 73 74 20 74 68 | 65 0a 58 70 72 6f 67 72 | just th|e.Xprogr|
|00002260| 61 6d 20 77 69 6c 6c 20 | 63 72 61 73 68 2e 0a 58 |am will |crash..X|
|00002270| 0a 58 53 74 61 63 6b 20 | 6f 76 65 72 66 6c 6f 77 |.XStack |overflow|
|00002280| 20 69 73 20 6e 6f 74 20 | 63 68 65 63 6b 65 64 2c | is not |checked,|
|00002290| 20 73 6f 20 61 6c 6c 6f | 63 61 28 29 20 77 69 6c | so allo|ca() wil|
|000022a0| 6c 20 61 6c 77 61 79 73 | 20 77 6f 72 6b 2e 0a 58 |l always| work..X|
|000022b0| 0a 58 49 20 68 61 76 65 | 6e 27 74 20 74 69 6d 65 |.XI have|n't time|
|000022c0| 20 74 6f 20 74 65 73 74 | 20 61 73 20 74 68 6f 72 | to test| as thor|
|000022d0| 6f 75 67 68 6c 79 20 61 | 73 20 49 20 77 69 73 68 |oughly a|s I wish|
|000022e0| 20 74 6f 2e 0a 58 0a 58 | 4e 65 77 73 21 0a 58 7e | to..X.X|News!.X~|
|000022f0| 7e 7e 7e 7e 0a 58 49 20 | 67 6f 74 20 69 74 20 74 |~~~~.XI |got it t|
|00002300| 6f 20 77 6f 72 6b 20 77 | 69 74 68 20 54 43 2b 2b |o work w|ith TC++|
|00002310| 20 31 2e 30 30 2e 20 20 | 49 20 68 61 64 20 74 6f | 1.00. |I had to|
|00002320| 20 63 68 61 6e 67 65 20 | 74 68 65 20 46 4f 52 43 | change |the FORC|
|00002330| 45 5f 53 54 41 43 4b 20 | 6d 65 74 68 6f 64 2e 0a |E_STACK |method..|
|00002340| 58 43 68 61 72 73 20 63 | 61 6e 20 6e 6f 77 20 62 |XChars c|an now b|
|00002350| 65 20 6d 61 64 65 20 69 | 6e 74 6f 20 72 65 67 69 |e made i|nto regi|
|00002360| 73 74 65 72 20 76 61 72 | 69 61 62 6c 65 73 2c 20 |ster var|iables, |
|00002370| 73 6f 20 67 28 29 20 61 | 6e 64 20 69 28 29 20 64 |so g() a|nd i() d|
|00002380| 65 66 69 6e 65 64 20 61 | 62 6f 76 65 0a 58 69 6e |efined a|bove.Xin|
|00002390| 20 74 68 65 20 73 74 61 | 63 6b 20 66 72 61 6d 65 | the sta|ck frame|
|000023a0| 20 73 65 63 74 69 6f 6e | 20 64 6f 20 6e 6f 74 20 | section| do not |
|000023b0| 68 61 76 65 20 73 74 61 | 63 6b 20 66 72 61 6d 65 |have sta|ck frame|
|000023c0| 73 2e 20 20 4e 6f 77 20 | 74 68 65 20 73 74 61 63 |s. Now |the stac|
|000023d0| 6b 20 69 73 20 66 6f 72 | 63 65 64 0a 58 62 79 20 |k is for|ced.Xby |
|000023e0| 75 73 69 6e 67 20 61 20 | 6c 6f 6e 67 2e 20 20 53 |using a |long. S|
|000023f0| 65 65 20 61 6c 6c 6f 63 | 61 2e 68 20 66 6f 72 20 |ee alloc|a.h for |
|00002400| 6d 6f 72 65 20 69 6e 66 | 6f 72 6d 61 74 69 6f 6e |more inf|ormation|
|00002410| 2e 0a 53 48 41 52 5f 45 | 4f 46 0a 66 69 20 23 20 |..SHAR_E|OF.fi # |
|00002420| 65 6e 64 20 6f 66 20 6f | 76 65 72 77 72 69 74 69 |end of o|verwriti|
|00002430| 6e 67 20 63 68 65 63 6b | 0a 69 66 20 74 65 73 74 |ng check|.if test|
|00002440| 20 2d 66 20 27 61 6c 6c | 6f 63 61 2e 68 27 0a 74 | -f 'all|oca.h'.t|
|00002450| 68 65 6e 0a 09 65 63 68 | 6f 20 73 68 61 72 3a 20 |hen..ech|o shar: |
|00002460| 77 69 6c 6c 20 6e 6f 74 | 20 6f 76 65 72 2d 77 72 |will not| over-wr|
|00002470| 69 74 65 20 65 78 69 73 | 74 69 6e 67 20 66 69 6c |ite exis|ting fil|
|00002480| 65 20 22 27 61 6c 6c 6f | 63 61 2e 68 27 22 0a 65 |e "'allo|ca.h'".e|
|00002490| 6c 73 65 0a 73 65 64 20 | 27 73 2f 5e 58 2f 2f 27 |lse.sed |'s/^X//'|
|000024a0| 20 3c 3c 20 5c 53 48 41 | 52 5f 45 4f 46 20 3e 20 | << \SHA|R_EOF > |
|000024b0| 27 61 6c 6c 6f 63 61 2e | 68 27 0a 58 2f 2a 20 61 |'alloca.|h'.X/* a|
|000024c0| 6c 6c 6f 63 61 20 66 6f | 72 20 54 75 72 62 6f 20 |lloca fo|r Turbo |
|000024d0| 43 0a 58 2a 20 70 75 62 | 6c 69 63 20 64 6f 6d 61 |C.X* pub|lic doma|
|000024e0| 69 6e 20 77 69 74 68 20 | 74 68 65 20 72 65 73 74 |in with |the rest|
|000024f0| 72 69 63 74 69 6f 6e 20 | 74 68 61 74 20 74 68 65 |riction |that the|
|00002500| 20 66 6f 6c 6c 6f 77 69 | 6e 67 20 6c 69 6e 65 20 | followi|ng line |
|00002510| 69 73 20 61 6c 77 61 79 | 73 20 72 65 74 61 69 6e |is alway|s retain|
|00002520| 65 64 3a 0a 58 2a 20 2e | 2e 2e 20 61 6c 6c 6f 63 |ed:.X* .|.. alloc|
|00002530| 61 28 29 20 77 72 69 74 | 74 65 6e 20 62 79 20 41 |a() writ|ten by A|
|00002540| 6c 65 78 61 6e 64 65 72 | 20 50 72 75 73 73 20 2e |lexander| Pruss .|
|00002550| 2e 2e 0a 58 2a 20 4f 70 | 74 69 6f 6e 73 3a 0a 58 |...X* Op|tions:.X|
|00002560| 2a 2a 20 49 4e 4c 49 4e | 45 5f 41 4c 4c 4f 43 41 |** INLIN|E_ALLOCA|
|00002570| 20 2d 2d 20 73 65 74 73 | 20 75 70 20 61 6e 20 69 | -- sets| up an i|
|00002580| 6e 6c 69 6e 65 20 65 71 | 75 69 76 61 6c 65 6e 74 |nline eq|uivalent|
|00002590| 20 74 6f 20 74 68 65 20 | 61 73 73 65 6d 62 6c 79 | to the |assembly|
|000025a0| 20 76 65 72 73 69 6f 6e | 2e 0a 58 2a 2a 20 20 20 | version|..X** |
|000025b0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 65 | | e|
|000025c0| 71 75 69 76 61 6c 65 6e | 74 20 69 6e 20 61 6c 6c |quivalen|t in all|
|000025d0| 20 72 65 73 70 65 63 74 | 73 20 62 75 74 20 69 74 | respect|s but it|
|000025e0| 20 69 73 20 6d 61 63 72 | 6f 2e 0a 58 2a 2a 20 46 | is macr|o..X** F|
|000025f0| 4f 52 43 45 5f 53 54 41 | 43 4b 20 20 20 2d 2d 20 |ORCE_STA|CK -- |
|00002600| 66 6f 72 63 65 73 20 61 | 20 73 74 61 63 6b 20 66 |forces a| stack f|
|00002610| 72 61 6d 65 20 66 6f 72 | 20 65 61 63 68 20 66 75 |rame for| each fu|
|00002620| 6e 63 74 69 6f 6e 2e 20 | 20 54 68 69 73 20 77 69 |nction. | This wi|
|00002630| 6c 6c 20 69 6e 63 72 65 | 61 73 65 0a 58 2a 2a 20 |ll incre|ase.X** |
|00002640| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002650| 20 74 68 65 20 73 74 61 | 63 6b 20 66 72 61 6d 65 | the sta|ck frame|
|00002660| 20 66 6f 72 20 65 61 63 | 68 20 66 75 6e 63 74 69 | for eac|h functi|
|00002670| 6f 6e 20 74 68 61 74 20 | 61 6c 72 65 61 64 79 20 |on that |already |
|00002680| 68 61 73 20 61 20 66 72 | 61 6d 65 0a 58 2a 2a 20 |has a fr|ame.X** |
|00002690| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000026a0| 20 61 6e 64 20 63 61 6c | 6c 73 20 61 6c 6c 6f 63 | and cal|ls alloc|
|000026b0| 61 28 29 20 62 79 20 32 | 20 62 79 74 65 73 2e 20 |a() by 2| bytes. |
|000026c0| 20 49 66 20 69 74 20 69 | 73 20 61 63 74 69 76 61 | If it i|s activa|
|000026d0| 74 65 64 2c 20 74 68 65 | 0a 58 2a 2a 20 20 20 20 |ted, the|.X** |
|000026e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 61 6c | | al|
|000026f0| 6c 6f 63 61 20 63 61 6c | 6c 20 4d 55 53 54 20 62 |loca cal|l MUST b|
|00002700| 65 20 6f 66 20 74 68 65 | 20 66 6f 72 6d 3a 20 20 |e of the| form: |
|00002710| 78 78 78 3d 79 79 79 20 | 61 6c 6c 6f 63 61 28 7a |xxx=yyy |alloca(z|
|00002720| 7a 7a 29 3b 0a 58 2a 2a | 20 20 20 20 20 20 20 20 |zz);.X**| |
|00002730| 20 20 20 20 20 20 20 20 | 20 20 77 68 65 72 65 20 | | where |
|00002740| 79 79 79 20 61 6e 64 20 | 78 78 78 20 61 72 65 20 |yyy and |xxx are |
|00002750| 61 6e 79 74 68 69 6e 67 | 20 76 61 6c 69 64 2e 0a |anything| valid..|
|00002760| 58 2a 2f 0a 58 0a 58 23 | 69 66 6e 64 65 66 20 61 |X*/.X.X#|ifndef a|
|00002770| 6c 6c 6f 63 61 0a 58 0a | 58 23 69 66 6e 64 65 66 |lloca.X.|X#ifndef|
|00002780| 20 5f 5f 54 55 52 42 4f | 43 5f 5f 0a 58 23 65 72 | __TURBO|C__.X#er|
|00002790| 72 6f 72 20 54 75 72 62 | 6f 20 43 20 69 73 20 72 |ror Turb|o C is r|
|000027a0| 65 71 75 69 72 65 64 20 | 66 6f 72 20 61 6c 6c 6f |equired |for allo|
|000027b0| 63 61 2e 68 2e 20 20 53 | 6f 72 72 79 2e 0a 58 23 |ca.h. S|orry..X#|
|000027c0| 65 6e 64 69 66 0a 58 0a | 58 23 69 66 64 65 66 20 |endif.X.|X#ifdef |
|000027d0| 49 4e 4c 49 4e 45 5f 41 | 4c 4c 4f 43 41 0a 58 76 |INLINE_A|LLOCA.Xv|
|000027e0| 6f 69 64 20 5f 5f 65 6d | 69 74 5f 5f 28 29 3b 0a |oid __em|it__();.|
|000027f0| 58 0a 58 23 64 65 66 69 | 6e 65 20 4d 41 4b 45 5f |X.X#defi|ne MAKE_|
|00002800| 46 41 52 5f 50 54 52 28 | 73 65 67 2c 6f 66 66 29 |FAR_PTR(|seg,off)|
|00002810| 20 5c 0a 58 20 28 76 6f | 69 64 20 66 61 72 20 2a | \.X (vo|id far *|
|00002820| 29 20 28 20 28 20 28 75 | 6e 73 69 67 6e 65 64 20 |) ( ( (u|nsigned |
|00002830| 6c 6f 6e 67 29 28 73 65 | 67 29 20 3c 3c 20 31 36 |long)(se|g) << 16|
|00002840| 20 29 20 7c 20 28 20 28 | 75 6e 73 69 67 6e 65 64 | ) | ( (|unsigned|
|00002850| 20 69 6e 74 29 28 6f 66 | 66 29 20 29 20 29 0a 58 | int)(of|f) ) ).X|
|00002860| 0a 58 23 64 65 66 69 6e | 65 20 4d 41 4b 45 5f 45 |.X#defin|e MAKE_E|
|00002870| 56 45 4e 28 78 29 20 20 | 20 28 20 28 20 28 28 78 |VEN(x) | ( ( ((x|
|00002880| 29 2b 31 29 3e 3e 31 20 | 29 20 3c 3c 31 20 29 0a |)+1)>>1 |) <<1 ).|
|00002890| 58 0a 58 23 69 66 20 73 | 69 7a 65 6f 66 28 76 6f |X.X#if s|izeof(vo|
|000028a0| 69 64 20 2a 29 3d 3d 34 | 0a 58 23 64 65 66 69 6e |id *)==4|.X#defin|
|000028b0| 65 20 5f 61 6c 6c 6f 63 | 61 28 73 70 61 63 65 29 |e _alloc|a(space)|
|000028c0| 20 28 76 6f 69 64 20 2a | 29 20 5c 0a 58 09 20 28 | (void *|) \.X. (|
|000028d0| 20 5f 5f 65 6d 69 74 5f | 5f 28 30 78 30 37 2c 20 | __emit_|_(0x07, |
|000028e0| 30 78 35 42 2c 20 30 78 | 35 39 2c 20 30 78 35 31 |0x5B, 0x|59, 0x51|
|000028f0| 2c 20 30 78 35 33 2c 20 | 30 78 30 36 29 2c 20 5c |, 0x53, |0x06), \|
|00002900| 0a 58 20 20 20 20 5f 53 | 50 2d 3d 4d 41 4b 45 5f |.X _S|P-=MAKE_|
|00002910| 45 56 45 4e 28 28 73 70 | 61 63 65 29 29 2c 20 5f |EVEN((sp|ace)), _|
|00002920| 5f 65 6d 69 74 5f 5f 28 | 30 78 35 31 2c 30 78 35 |_emit__(|0x51,0x5|
|00002930| 33 2c 30 78 30 36 29 2c | 20 4d 41 4b 45 5f 46 41 |3,0x06),| MAKE_FA|
|00002940| 52 5f 50 54 52 28 5f 53 | 53 2c 5f 53 50 2b 38 29 |R_PTR(_S|S,_SP+8)|
|00002950| 29 0a 58 23 65 6c 73 65 | 0a 58 23 64 65 66 69 6e |).X#else|.X#defin|
|00002960| 65 20 5f 61 6c 6c 6f 63 | 61 28 73 70 61 63 65 29 |e _alloc|a(space)|
|00002970| 20 28 76 6f 69 64 20 2a | 29 20 5c 0a 58 20 20 20 | (void *|) \.X |
|00002980| 20 20 20 20 20 20 28 20 | 5f 5f 65 6d 69 74 5f 5f | ( |__emit__|
|00002990| 28 30 78 35 42 2c 20 30 | 78 35 39 2c 20 30 78 35 |(0x5B, 0|x59, 0x5|
|000029a0| 31 2c 20 30 78 35 33 29 | 2c 20 5c 0a 58 20 20 20 |1, 0x53)|, \.X |
|000029b0| 20 5f 53 50 2d 3d 4d 41 | 4b 45 5f 45 56 45 4e 28 | _SP-=MA|KE_EVEN(|
|000029c0| 28 73 70 61 63 65 29 29 | 2c 20 5f 5f 65 6d 69 74 |(space))|, __emit|
|000029d0| 5f 5f 28 30 78 35 31 2c | 30 78 35 33 29 2c 20 4d |__(0x51,|0x53), M|
|000029e0| 41 4b 45 5f 46 41 52 5f | 50 54 52 28 5f 53 53 2c |AKE_FAR_|PTR(_SS,|
|000029f0| 5f 53 50 2b 36 29 29 0a | 58 23 65 6e 64 69 66 0a |_SP+6)).|X#endif.|
|00002a00| 58 0a 58 2f 2a 20 74 68 | 69 73 20 69 73 20 65 71 |X.X/* th|is is eq|
|00002a10| 75 69 76 61 6c 65 6e 74 | 20 69 6e 20 6f 70 65 72 |uivalent| in oper|
|00002a20| 61 74 69 6f 6e 20 74 6f | 20 74 68 65 20 61 73 73 |ation to| the ass|
|00002a30| 65 6d 62 6c 79 20 6c 61 | 6e 67 75 61 67 65 20 76 |embly la|nguage v|
|00002a40| 65 72 73 69 6f 6e 2e 0a | 58 54 68 65 20 65 6d 69 |ersion..|XThe emi|
|00002a50| 74 73 20 61 72 65 3a 20 | 65 73 20 62 78 20 63 78 |ts are: |es bx cx|
|00002a60| 0a 58 20 20 20 70 6f 70 | 20 65 73 20 20 28 6f 6e |.X pop| es (on|
|00002a70| 6c 79 20 69 66 20 6c 61 | 72 67 65 20 64 61 74 61 |ly if la|rge data|
|00002a80| 29 0a 58 20 20 20 70 6f | 70 20 62 78 0a 58 20 20 |).X po|p bx.X |
|00002a90| 20 70 6f 70 20 63 78 0a | 58 20 20 20 70 75 73 68 | pop cx.|X push|
|00002aa0| 20 63 78 0a 58 20 20 20 | 70 75 73 68 20 62 78 0a | cx.X |push bx.|
|00002ab0| 58 20 20 20 70 75 73 68 | 20 65 73 20 20 20 28 74 |X push| es (t|
|00002ac0| 6f 20 73 61 76 65 20 74 | 68 65 20 28 44 53 2c 53 |o save t|he (DS,S|
|00002ad0| 49 2c 44 49 29 2c 20 6f | 72 20 28 53 49 2c 44 49 |I,DI), o|r (SI,DI|
|00002ae0| 29 20 69 6e 20 73 6d 61 | 6c 6c 20 64 61 74 61 29 |) in sma|ll data)|
|00002af0| 0a 58 20 20 66 6f 6c 6c | 6f 77 65 64 20 62 79 0a |.X foll|owed by.|
|00002b00| 58 20 20 20 70 75 73 68 | 20 63 78 0a 58 20 20 20 |X push| cx.X |
|00002b10| 70 75 73 68 20 62 78 0a | 58 20 20 20 70 75 73 68 |push bx.|X push|
|00002b20| 20 65 73 20 20 20 28 74 | 6f 20 6d 61 6b 65 20 61 | es (t|o make a|
|00002b30| 20 63 6f 70 79 20 6f 66 | 20 28 44 53 2c 53 49 2c | copy of| (DS,SI,|
|00002b40| 44 49 29 29 0a 58 2a 2f | 0a 58 23 65 6c 73 65 0a |DI)).X*/|.X#else.|
|00002b50| 58 0a 58 76 6f 69 64 20 | 2a 5f 61 6c 6c 6f 63 61 |X.Xvoid |*_alloca|
|00002b60| 28 75 6e 73 69 67 6e 65 | 64 20 6c 65 6e 67 74 68 |(unsigne|d length|
|00002b70| 29 3b 0a 58 0a 58 23 65 | 6e 64 69 66 20 20 2f 2a |);.X.X#e|ndif /*|
|00002b80| 20 49 4e 4c 49 4e 45 20 | 2a 2f 0a 58 0a 58 23 69 | INLINE |*/.X.X#i|
|00002b90| 66 64 65 66 20 46 4f 52 | 43 45 5f 53 54 41 43 4b |fdef FOR|CE_STACK|
|00002ba0| 0a 58 23 20 69 66 20 5f | 5f 54 55 52 42 4f 43 5f |.X# if _|_TURBOC_|
|00002bb0| 5f 20 3e 20 30 78 32 30 | 30 0a 58 20 20 73 74 61 |_ > 0x20|0.X sta|
|00002bc0| 74 69 63 20 6c 6f 6e 67 | 20 5f 5f 67 6c 6f 62 61 |tic long| __globa|
|00002bd0| 6c 5f 6c 6f 6e 67 5f 64 | 75 6d 6d 79 5f 5f 3b 0a |l_long_d|ummy__;.|
|00002be0| 58 23 20 64 65 66 69 6e | 65 20 61 6c 6c 6f 63 61 |X# defin|e alloca|
|00002bf0| 28 78 29 20 5f 61 6c 6c | 6f 63 61 28 28 78 29 29 |(x) _all|oca((x))|
|00002c00| 3b 20 7b 20 6c 6f 6e 67 | 20 7a 3b 20 5f 5f 67 6c |; { long| z; __gl|
|00002c10| 6f 62 61 6c 5f 6c 6f 6e | 67 5f 64 75 6d 6d 79 5f |obal_lon|g_dummy_|
|00002c20| 5f 3d 7a 3b 20 7d 3b 0a | 58 23 65 6c 73 65 0a 58 |_=z; };.|X#else.X|
|00002c30| 23 20 64 65 66 69 6e 65 | 20 61 6c 6c 6f 63 61 28 |# define| alloca(|
|00002c40| 78 29 20 5f 61 6c 6c 6f | 63 61 28 28 78 29 29 3b |x) _allo|ca((x));|
|00002c50| 20 7b 20 63 68 61 72 20 | 7a 3b 20 7a 3d 7a 3b 20 | { char |z; z=z; |
|00002c60| 7d 3b 0a 58 23 65 6e 64 | 69 66 0a 58 0a 58 23 65 |};.X#end|if.X.X#e|
|00002c70| 6c 73 65 0a 58 23 64 65 | 66 69 6e 65 20 61 6c 6c |lse.X#de|fine all|
|00002c80| 6f 63 61 28 78 29 20 5f | 61 6c 6c 6f 63 61 28 28 |oca(x) _|alloca((|
|00002c90| 78 29 29 0a 58 23 65 6e | 64 69 66 0a 58 0a 58 23 |x)).X#en|dif.X.X#|
|00002ca0| 65 6e 64 69 66 20 2f 2a | 20 64 65 66 20 61 6c 6c |endif /*| def all|
|00002cb0| 6f 63 61 20 2a 2f 0a 53 | 48 41 52 5f 45 4f 46 0a |oca */.S|HAR_EOF.|
|00002cc0| 66 69 20 23 20 65 6e 64 | 20 6f 66 20 6f 76 65 72 |fi # end| of over|
|00002cd0| 77 72 69 74 69 6e 67 20 | 63 68 65 63 6b 0a 69 66 |writing |check.if|
|00002ce0| 20 74 65 73 74 20 2d 66 | 20 27 6f 62 63 2e 75 75 | test -f| 'obc.uu|
|00002cf0| 65 27 0a 74 68 65 6e 0a | 09 65 63 68 6f 20 73 68 |e'.then.|.echo sh|
|00002d00| 61 72 3a 20 77 69 6c 6c | 20 6e 6f 74 20 6f 76 65 |ar: will| not ove|
|00002d10| 72 2d 77 72 69 74 65 20 | 65 78 69 73 74 69 6e 67 |r-write |existing|
|00002d20| 20 66 69 6c 65 20 22 27 | 6f 62 63 2e 75 75 65 27 | file "'|obc.uue'|
|00002d30| 22 0a 65 6c 73 65 0a 73 | 65 64 20 27 73 2f 5e 58 |".else.s|ed 's/^X|
|00002d40| 2f 2f 27 20 3c 3c 20 5c | 53 48 41 52 5f 45 4f 46 |//' << \|SHAR_EOF|
|00002d50| 20 3e 20 27 6f 62 63 2e | 75 75 65 27 0a 58 73 65 | > 'obc.|uue'.Xse|
|00002d60| 63 74 69 6f 6e 20 31 20 | 6f 66 20 75 75 65 6e 63 |ction 1 |of uuenc|
|00002d70| 6f 64 65 20 34 2e 30 32 | 20 6f 66 20 66 69 6c 65 |ode 4.02| of file|
|00002d80| 20 61 6c 6c 6f 63 61 2e | 6f 62 63 20 20 20 20 62 | alloca.|obc b|
|00002d90| 79 20 52 2e 45 2e 4d 2e | 0a 58 0a 58 62 65 67 69 |y R.E.M.|.X.Xbegi|
|00002da0| 6e 20 36 34 34 20 61 6c | 6c 6f 63 61 2e 6f 62 63 |n 644 al|loca.obc|
|00002db0| 0a 58 4d 40 60 40 60 21 | 44 25 2c 33 24 5d 23 30 |.XM@`@`!|D%,3$]#0|
|00002dc0| 3c 3a 36 23 60 60 60 21 | 25 31 25 36 25 30 24 30 |<:6#```!|%1%6%0$0|
|00002dd0| 54 5d 24 31 3f 3a 38 21 | 50 60 48 2a 40 60 22 60 |T]$1?:8!|P`H*@`"`|
|00002de0| 50 24 29 44 60 5c 60 60 | 60 24 28 37 55 5d 41 56 |P$)D`\``|`$(7U]AV|
|00002df0| 0a 58 4d 3b 26 51 4f 38 | 56 24 22 60 60 60 4c 48 |.XM;&QO8|V$"```LH|
|00002e00| 22 50 60 60 30 28 60 36 | 55 45 3a 36 22 5a 2f 21 |"P``0(`6|UE:6"Z/!|
|00002e10| 40 60 60 2b 4f 5c 56 60 | 60 21 30 34 44 27 31 5a |@``+O\V`|`!04D'1Z|
|00002e20| 3d 27 41 2a 3c 50 4e 5f | 53 38 60 60 25 21 32 51 |='A*<PN_|S8``%!2Q|
|00002e30| 0a 58 40 42 3e 60 25 22 | 60 21 31 34 58 53 32 50 |.X@B>`%"|`!14XS2P|
|00002e40| 52 26 3c 23 30 23 24 21 | 55 30 21 51 60 51 34 60 |R&<#0#$!|U0!Q`Q4`|
|00002e50| 3c 30 3a 35 60 27 3f 42 | 40 28 60 60 27 30 60 47 |<0:5`'?B|@(``'0`G|
|00002e60| 0a 58 60 60 0a 58 65 6e | 64 0a 58 73 75 6d 20 2d |.X``.Xen|d.Xsum -|
|00002e70| 72 2f 73 69 7a 65 20 33 | 35 37 34 37 2f 32 30 31 |r/size 3|5747/201|
|00002e80| 20 73 65 63 74 69 6f 6e | 20 28 66 72 6f 6d 20 22 | section| (from "|
|00002e90| 62 65 67 69 6e 22 20 74 | 6f 20 22 65 6e 64 22 29 |begin" t|o "end")|
|00002ea0| 0a 58 73 75 6d 20 2d 72 | 2f 73 69 7a 65 20 33 30 |.Xsum -r|/size 30|
|00002eb0| 36 30 38 2f 31 32 32 20 | 65 6e 74 69 72 65 20 69 |608/122 |entire i|
|00002ec0| 6e 70 75 74 20 66 69 6c | 65 0a 53 48 41 52 5f 45 |nput fil|e.SHAR_E|
|00002ed0| 4f 46 0a 66 69 20 23 20 | 65 6e 64 20 6f 66 20 6f |OF.fi # |end of o|
|00002ee0| 76 65 72 77 72 69 74 69 | 6e 67 20 63 68 65 63 6b |verwriti|ng check|
|00002ef0| 0a 69 66 20 74 65 73 74 | 20 2d 66 20 27 6f 62 6c |.if test| -f 'obl|
|00002f00| 2e 75 75 65 27 0a 74 68 | 65 6e 0a 09 65 63 68 6f |.uue'.th|en..echo|
|00002f10| 20 73 68 61 72 3a 20 77 | 69 6c 6c 20 6e 6f 74 20 | shar: w|ill not |
|00002f20| 6f 76 65 72 2d 77 72 69 | 74 65 20 65 78 69 73 74 |over-wri|te exist|
|00002f30| 69 6e 67 20 66 69 6c 65 | 20 22 27 6f 62 6c 2e 75 |ing file| "'obl.u|
|00002f40| 75 65 27 22 0a 65 6c 73 | 65 0a 73 65 64 20 27 73 |ue'".els|e.sed 's|
|00002f50| 2f 5e 58 2f 2f 27 20 3c | 3c 20 5c 53 48 41 52 5f |/^X//' <|< \SHAR_|
|00002f60| 45 4f 46 20 3e 20 27 6f | 62 6c 2e 75 75 65 27 0a |EOF > 'o|bl.uue'.|
|00002f70| 58 73 65 63 74 69 6f 6e | 20 31 20 6f 66 20 75 75 |Xsection| 1 of uu|
|00002f80| 65 6e 63 6f 64 65 20 34 | 2e 30 32 20 6f 66 20 66 |encode 4|.02 of f|
|00002f90| 69 6c 65 20 61 6c 6c 6f | 63 61 2e 6f 62 6c 20 20 |ile allo|ca.obl |
|00002fa0| 20 20 62 79 20 52 2e 45 | 2e 4d 2e 0a 58 0a 58 62 | by R.E|.M..X.Xb|
|00002fb0| 65 67 69 6e 20 36 34 34 | 20 61 6c 6c 6f 63 61 2e |egin 644| alloca.|
|00002fc0| 6f 62 6c 0a 58 4d 40 60 | 40 60 21 44 25 2c 33 24 |obl.XM@`|@`!D%,3$|
|00002fd0| 5d 23 30 3c 3a 36 24 50 | 60 60 22 54 25 2c 33 24 |]#0<:6$P|``"T%,3$|
|00002fe0| 5d 23 30 35 5d 34 31 35 | 41 34 21 24 2d 2f 31 24 |]#05]415|A4!$-/1$|
|00002ff0| 37 3d 46 60 3c 60 2a 22 | 50 60 60 40 2c 21 21 59 |7=F`<`*"|P``@,!!Y|
|00003000| 60 2f 4a 0a 58 4d 60 60 | 60 21 22 25 5d 3f 38 36 |`/J.XM``|`!"%]?86|
|00003010| 51 4c 3b 56 2d 41 60 40 | 60 60 2b 2a 60 50 60 60 |QL;V-A`@|``+*`P``|
|00003020| 24 60 60 60 60 60 36 50 | 3d 39 36 45 40 4e 43 50 |$`````6P|=96E@NCP|
|00003030| 38 60 60 22 5b 5f 2d 40 | 60 60 34 25 29 21 54 3e |8``"[_-@|``4%)!T>|
|00003040| 47 31 3d 0a 58 4b 58 32 | 47 2c 2b 4f 5c 56 60 60 |G1=.XKX2|G,+O\V``|
|00003050| 21 30 34 48 47 40 21 30 | 40 60 34 30 39 33 43 2d |!04HG@!0|@`4093C-|
|00003060| 2b 2b 22 49 50 2d 60 2c | 30 2a 35 60 27 24 23 55 |++"IP-`,|0*5`'$#U|
|00003070| 30 21 51 21 55 34 60 3d | 3a 2a 60 40 60 60 3d 60 |0!Q!U4`=|:*`@``=`|
|00003080| 60 60 54 0a 58 60 60 0a | 58 65 6e 64 0a 58 73 75 |``T.X``.|Xend.Xsu|
|00003090| 6d 20 2d 72 2f 73 69 7a | 65 20 35 33 39 36 33 2f |m -r/siz|e 53963/|
|000030a0| 32 31 37 20 73 65 63 74 | 69 6f 6e 20 28 66 72 6f |217 sect|ion (fro|
|000030b0| 6d 20 22 62 65 67 69 6e | 22 20 74 6f 20 22 65 6e |m "begin|" to "en|
|000030c0| 64 22 29 0a 58 73 75 6d | 20 2d 72 2f 73 69 7a 65 |d").Xsum| -r/size|
|000030d0| 20 36 34 33 31 2f 31 33 | 33 20 65 6e 74 69 72 65 | 6431/13|3 entire|
|000030e0| 20 69 6e 70 75 74 20 66 | 69 6c 65 0a 53 48 41 52 | input f|ile.SHAR|
|000030f0| 5f 45 4f 46 0a 66 69 20 | 23 20 65 6e 64 20 6f 66 |_EOF.fi |# end of|
|00003100| 20 6f 76 65 72 77 72 69 | 74 69 6e 67 20 63 68 65 | overwri|ting che|
|00003110| 63 6b 0a 69 66 20 74 65 | 73 74 20 2d 66 20 27 6f |ck.if te|st -f 'o|
|00003120| 62 6d 2e 75 75 65 27 0a | 74 68 65 6e 0a 09 65 63 |bm.uue'.|then..ec|
|00003130| 68 6f 20 73 68 61 72 3a | 20 77 69 6c 6c 20 6e 6f |ho shar:| will no|
|00003140| 74 20 6f 76 65 72 2d 77 | 72 69 74 65 20 65 78 69 |t over-w|rite exi|
|00003150| 73 74 69 6e 67 20 66 69 | 6c 65 20 22 27 6f 62 6d |sting fi|le "'obm|
|00003160| 2e 75 75 65 27 22 0a 65 | 6c 73 65 0a 73 65 64 20 |.uue'".e|lse.sed |
|00003170| 27 73 2f 5e 58 2f 2f 27 | 20 3c 3c 20 5c 53 48 41 |'s/^X//'| << \SHA|
|00003180| 52 5f 45 4f 46 20 3e 20 | 27 6f 62 6d 2e 75 75 65 |R_EOF > |'obm.uue|
|00003190| 27 0a 58 73 65 63 74 69 | 6f 6e 20 31 20 6f 66 20 |'.Xsecti|on 1 of |
|000031a0| 75 75 65 6e 63 6f 64 65 | 20 34 2e 30 32 20 6f 66 |uuencode| 4.02 of|
|000031b0| 20 66 69 6c 65 20 61 6c | 6c 6f 63 61 2e 6f 62 6d | file al|loca.obm|
|000031c0| 20 20 20 20 62 79 20 52 | 2e 45 2e 4d 2e 0a 58 0a | by R|.E.M..X.|
|000031d0| 58 62 65 67 69 6e 20 36 | 34 34 20 61 6c 6c 6f 63 |Xbegin 6|44 alloc|
|000031e0| 61 2e 6f 62 6d 0a 58 4d | 40 60 40 60 21 44 25 2c |a.obm.XM|@`@`!D%,|
|000031f0| 33 24 5d 23 30 3c 3a 36 | 24 50 60 60 22 54 25 2c |3$]#0<:6|$P``"T%,|
|00003200| 33 24 5d 23 30 35 5d 34 | 31 35 41 34 21 24 2d 2f |3$]#05]4|15A4!$-/|
|00003210| 31 24 37 3d 46 60 3c 60 | 2a 21 4c 60 60 40 2c 21 |1$7=F`<`|*!L``@,!|
|00003220| 26 29 60 2f 5a 0a 58 4d | 60 60 60 21 22 25 5d 3f |&)`/Z.XM|```!"%]?|
|00003230| 38 36 51 4c 3b 56 2d 41 | 60 40 60 60 2b 2a 60 3f |86QL;V-A|`@``+*`?|
|00003240| 60 60 24 60 60 60 60 60 | 36 50 3d 39 36 45 41 30 |``$`````|6P=96EA0|
|00003250| 34 44 27 31 5a 3d 27 41 | 2a 3c 51 30 34 48 47 40 |4D'1Z='A|*<Q04HG@|
|00003260| 21 30 38 60 30 0a 58 2a | 34 30 39 33 52 50 32 2a |!08`0.X*|4093RP2*|
|00003270| 60 40 60 60 3d 60 60 60 | 2b 0a 58 60 60 0a 58 65 |`@``=```|+.X``.Xe|
|00003280| 6e 64 0a 58 73 75 6d 20 | 2d 72 2f 73 69 7a 65 20 |nd.Xsum |-r/size |
|00003290| 35 39 35 30 35 2f 31 37 | 33 20 73 65 63 74 69 6f |59505/17|3 sectio|
|000032a0| 6e 20 28 66 72 6f 6d 20 | 22 62 65 67 69 6e 22 20 |n (from |"begin" |
|000032b0| 74 6f 20 22 65 6e 64 22 | 29 0a 58 73 75 6d 20 2d |to "end"|).Xsum -|
|000032c0| 72 2f 73 69 7a 65 20 36 | 34 35 36 37 2f 31 30 30 |r/size 6|4567/100|
|000032d0| 20 65 6e 74 69 72 65 20 | 69 6e 70 75 74 20 66 69 | entire |input fi|
|000032e0| 6c 65 0a 53 48 41 52 5f | 45 4f 46 0a 66 69 20 23 |le.SHAR_|EOF.fi #|
|000032f0| 20 65 6e 64 20 6f 66 20 | 6f 76 65 72 77 72 69 74 | end of |overwrit|
|00003300| 69 6e 67 20 63 68 65 63 | 6b 0a 69 66 20 74 65 73 |ing chec|k.if tes|
|00003310| 74 20 2d 66 20 27 6f 62 | 73 2e 75 75 65 27 0a 74 |t -f 'ob|s.uue'.t|
|00003320| 68 65 6e 0a 09 65 63 68 | 6f 20 73 68 61 72 3a 20 |hen..ech|o shar: |
|00003330| 77 69 6c 6c 20 6e 6f 74 | 20 6f 76 65 72 2d 77 72 |will not| over-wr|
|00003340| 69 74 65 20 65 78 69 73 | 74 69 6e 67 20 66 69 6c |ite exis|ting fil|
|00003350| 65 20 22 27 6f 62 73 2e | 75 75 65 27 22 0a 65 6c |e "'obs.|uue'".el|
|00003360| 73 65 0a 73 65 64 20 27 | 73 2f 5e 58 2f 2f 27 20 |se.sed '|s/^X//' |
|00003370| 3c 3c 20 5c 53 48 41 52 | 5f 45 4f 46 20 3e 20 27 |<< \SHAR|_EOF > '|
|00003380| 6f 62 73 2e 75 75 65 27 | 0a 58 73 65 63 74 69 6f |obs.uue'|.Xsectio|
|00003390| 6e 20 31 20 6f 66 20 75 | 75 65 6e 63 6f 64 65 20 |n 1 of u|uencode |
|000033a0| 34 2e 30 32 20 6f 66 20 | 66 69 6c 65 20 61 6c 6c |4.02 of |file all|
|000033b0| 6f 63 61 2e 6f 62 73 20 | 20 20 20 62 79 20 52 2e |oca.obs | by R.|
|000033c0| 45 2e 4d 2e 0a 58 0a 58 | 62 65 67 69 6e 20 36 34 |E.M..X.X|begin 64|
|000033d0| 34 20 61 6c 6c 6f 63 61 | 2e 6f 62 73 0a 58 4d 40 |4 alloca|.obs.XM@|
|000033e0| 60 40 60 21 44 25 2c 33 | 24 5d 23 30 3c 3a 36 23 |`@`!D%,3|$]#0<:6#|
|000033f0| 60 60 60 21 25 31 25 36 | 25 30 24 30 54 5d 24 31 |```!%1%6|%0$0T]$1|
|00003400| 3f 3a 38 21 50 60 48 26 | 30 60 22 60 50 24 3a 44 |?:8!P`H&|0`"`P$:D|
|00003410| 60 5c 60 60 60 24 28 37 | 55 5d 41 53 0a 58 4c 3b |`\```$(7|U]AS.XL;|
|00003420| 26 51 4f 38 56 24 22 60 | 60 60 4c 48 21 4c 60 60 |&QO8V$"`|``LH!L``|
|00003430| 30 28 60 36 55 45 3a 36 | 25 21 32 30 3d 27 49 54 |0(`6UE:6|%!20='IT|
|00003440| 3e 24 49 53 25 21 32 42 | 3e 60 25 21 40 21 31 34 |>$IS%!2B|>`%!@!14|
|00003450| 5c 2c 3b 42 40 28 60 60 | 27 30 60 3d 0a 58 60 60 |\,;B@(``|'0`=.X``|
|00003460| 0a 58 65 6e 64 0a 58 73 | 75 6d 20 2d 72 2f 73 69 |.Xend.Xs|um -r/si|
|00003470| 7a 65 20 35 35 31 38 39 | 2f 31 35 34 20 73 65 63 |ze 55189|/154 sec|
|00003480| 74 69 6f 6e 20 28 66 72 | 6f 6d 20 22 62 65 67 69 |tion (fr|om "begi|
|00003490| 6e 22 20 74 6f 20 22 65 | 6e 64 22 29 0a 58 73 75 |n" to "e|nd").Xsu|
|000034a0| 6d 20 2d 72 2f 73 69 7a | 65 20 33 37 39 34 31 2f |m -r/siz|e 37941/|
|000034b0| 38 39 20 65 6e 74 69 72 | 65 20 69 6e 70 75 74 20 |89 entir|e input |
|000034c0| 66 69 6c 65 0a 53 48 41 | 52 5f 45 4f 46 0a 66 69 |file.SHA|R_EOF.fi|
|000034d0| 20 23 20 65 6e 64 20 6f | 66 20 6f 76 65 72 77 72 | # end o|f overwr|
|000034e0| 69 74 69 6e 67 20 63 68 | 65 63 6b 0a 23 09 45 6e |iting ch|eck.#.En|
|000034f0| 64 20 6f 66 20 73 68 65 | 6c 6c 20 61 72 63 68 69 |d of she|ll archi|
|00003500| 76 65 0a 65 78 69 74 20 | 30 0a |ve.exit |0. |
+--------+-------------------------+-------------------------+--------+--------+