[comp.sys.atari.8bit] C style strings for ACTION!

jdd@db.toronto.edu ("John D. DiMarco") (12/30/87)

Here is a set of ACTION! routines which give you unlimited length
strings in your programs. If you have any familiarity with C at all, 
you will notice that the string format used in this package is identical to
the format of strings in C - namely, an arbitrary number of characters 
followed by a NULL (ASCII 0) byte. Standard ACTION! strings consist of
a 'length' byte followed by at most 255 characters.

To unpack this file, do the following:

  - Strip the mail header and this introduction, and my .signature at the 
    end of the file.
  - uudecode the remainder. You can use YAU or J.Sangsters Basic UUDECODE
    for this
  - unarc the resulting file. (Use Ralph Walden's ARCX.COM)

I'm making no restrictions in the use of these routines - feel free to use
them anywhere and in anything you want, and feel free to give them to anyone
who wants them.

Enjoy!
John DiMarco 

--------------------------------------------------------------------------------
    John DiMarco           Hard work never killed a man ...
jdd@csri.toronto.edu          ... but it sure has scared lots of them! 
{uunet!utai,watmath!utai,decvax,decwrl,ihnp4}!utcsri!jdd      jdd@utcsri.UUCP
--------------------------------------------------------------------------------

----- cut here ------
begin 644 cstrings.arc
M&@1#4U1224Y'4RY!0U0 \ D  $4.64!*2?,-  !/  (  0 $  , !@ % -__a
M!P )  @ "P *  T #  /  X $0 0 !, $@!D_Q0 O/\5 !< %@"M_Q@ J_\9a
M !L &@ = !P OO^6_Q\ '@ A "  U_^1_R( UO^+_R, ) "Z_R4 FO\G "8 a
M* "F_]/_C?\I +O_*@",_RL GO\L +#_K_^L_RT L?\N )#_O?^3_\+_JO\Pa
M "\ ,0!O_S( BO^S_S, F/\T ,[_Q/^R_S4 MO\V #< E_^@_Y+_. #[_]+_a
MAO^;_SD /  Z ,__.P"Y_X__G/\] )W_S?\^ #\ E?]  -3_00!# $( P_^9a
M_X?_RO^W_T0 J/_!_Y3_J?^)_Z?_1@#1_T< 10#Y_T@ WO^(_TL 2@!, $T a
M20!. /?_]O_&__3_R/_'___^S/^U_^+_\?_M__S_^/_6G*QE2!ZO96?UG7:(a
MY6=296=^(F?-\=AW6'#8_U3?6?:5!9?/?WE^24B&K8GXSYH+<%;&L%^,N]D^a
M]_PYUOB,S_\\:RX)N=]0@WY]S>1GECIK(OZSYD15=O.8X77C4UG;MJI^M5VGa
MHL)^3)TU]_/MYFM6SO!8L+;+7CT#'6O5\:KO+&]GS;%@;:?$;9MW\&J[ZK/Xa
M[P_^6?7+/=*:^_EV\S4K9_CWS2R3]N2%&G<_NI"\7(@KX^Y'5P#*/5&\3.22a
M/W[49A&DLL)4<=S]Z I N5<.T;8U)ZI'A4^VZZ>J7,EB5?6(EB%YO):=U7=La
M:XZID[4,R>.U[*R^8UMSI6V_2KQRR/(3[P=?KQ[_+/<_LZTY66V7M^-5WUG>a
MKOQN&W<_NFI;5PJK1&,O77%7>GUJ^Z/%541#$\55;5O:[_\IV\05=Z4U$9*7a
MBP%])(1F4J!?%QG*BCCN?G0%H-PKVK;F1/6H\,F6^Y4L5E6/:!F2QVO967W'a
MMN:8NGRREB%YO):=U7=LX^Y'5P\4VU"(XJZT;5TIK!*-O70HZU/;'UU<130Ta
M45S5MJ7]_I^RK3@4383DY6) 'PGA7-&V_R<F!?IUD:%,X@OV'19TW/WH"D"Ya
M)]HV*="OVE:)*]L"9$M<Z,15?2U@2%XNZU/;'UT)XE?#MK0WH(^$<*[JF4F!a
M?EUD*)/BN/O1%8!R3[1MS8GJ4>&3+9^L94@>KV5G]9TQ=;F?;<V5+%95OY8Aa
M>;R6G=5W;./N1U</%-M01DSB"_8=%G2B;>M*896XVDN'@FBL3VU_M#@41-6$a
M.(>"J!K1T+:EO6WBKC2!8D ?">&<:+,(4IDPM3CN?G0%H-R3HVC;FA/5H\(Ga
MV_5354[6,B2/U[*S^DX[ILZVYDH6JZI?RY \7LO.ZCNM;<V5MOTJ\>0HRT^\a
M'WR]>ORSW/_8UIRLMN-QVXX%<[_DCQ^7A&2X':_ZSN^V<?>CJ[9UI;!*7.VEa
M2_[X<7UJ^Z,371-7-1&2E\M>-AK:_I]0U(EG^Z.[$K8_NKCZJZ$)<57;EO:Va
M%7>EB6I 'PFA602I3**S>M8[[GYT$LR]Q_S!W8^N )1[HFV3 OWJ_K]I6R6Na
M; N0+7&A$U?UM8 A>;FL3VU_=/1EO9-@[CWF#W%5Z]G^Z$H0OQJVI;T!?22$a
M9A&D,HG.ZIGC[D=7 ,H]T;9)=%;/>G=UB#:@CX30+()4)M%9/>NIX^Y')\'<a
M>\P?W/WH"D"Y)]HVB<[J6>\DF'N/^4.T;=&7]4Z"N?>8/QH?/^H9T$=":!9!a
M*I/HK)Y1Q]V/K@"4>Z)MD^BLGO7471VB#>@C(;3]/],B2&62\-U?%O>.NQ^=a
M!'/O,7]P]Z,K .6>:-L2OOO+XMY),/<>\X<H7B;2MA6FBA/%RT2': /Z2 AMa
M_]^V"%*9)'SWE\6.NQ]= 2CW1-LF"=_]97'OK@[1!O21$)I%D,HDX;N_+-,[a
M[GYT$LR]Q_PQ[GYT!:#<DV/<_>B4^0=M6\)W?UFF=Q+,O<?\(8J7B0YE_D';a
M5I@J3A0O$QVB#>@C(32+()5)VHV]X^Y'EQ7,O<?\,>Y^= 6@W+M>>=RRL_K.a
M,>Y^=$KU!Q_+OQ^2M6W"U.*N5QZW[*R^<TP4+Q-IV])N[%U6,/<>\\=$\3+1a
M,:7Z@X_EWP_)VH ^$D*S"%*9H$ZDCKL?758P]Q[SQY3(EN$3>2Q+^7,L_WYHa
M',N_'Y*/<?>C*P#EWO7*XY:=U7>T;<+4XJY7'K?LK+YSB.)E(FT;ZD3JLH*Ya
M]Y@_E,B6X1-Y9"E_COS[H7'DWP_)ARA>)M(&])$0FB7"MRXRE$DLJK([/['Ca
M[D=7 ,H]:1R2K&U+A&]GXSB3;9,"_:IME;BR+4"VQ(5.&JYJ0I)=U2MA/VFXa
MJJ\%#,G+927L)\FNZET+N)"\7-:GMC^Z$L2OAFUIO_]GVW8V"&FXJFT[DPE)a
M=E4;T$=".'<V$&>RGED$J4QB4;N1CKL?70$H]WH:OR,&T;8UE\D#X;7?$Z^Ga
M\5MMEU0[PU[]=H+9_3_+-BG0K^Z/MHV['QUJVRIQ95N?VO[HGL;/54W$(*YJa
MVQ^=Z%H,XJHF0O)RV<M&0]O_$XHZ\6Q_=%?"]D=7@OC5L"WM]_^T 7TDA&81a
MI#*)1>U&QHZ['UT!*/=Z&K\C!CDF!?K%K\ [XI=&VK;F,GD@O/9[XO4T?JOMa
MDFIGV*O?3C"[/]JVY@K?JE/F@?#:[XD7OP)ON?]9_-)H^8EM:R[[RH+5+P;Ya
MW38IT*_N_XEME8A?@6=;@&R)"UT,XBJBH:\%#,G+927L5Z\1\4NC]:GMC^YIa
M_%Q%Q*_ TT0,XBJBH6U_="6(7PW;TMZVGL;/543\"CQ-A.3E8D ?">'^GS:+a
M()5)7-JV=KSC[D=7 ,J]GL;OB$$.*= O?@7>$;\TTK8UE\D#X;7?$Z^G\5MMa
MEU0[PU[]=H+9_=&V-5?X5ITR#X37?D^\^!5XR_W/XI=&RT]L6W/95Q:L?C'(a
M[[9)@7[5MDI<V18@6^)"%X.XBFCH:P%#\G)9"?O5:RY^:82(7X'WJZ'7I[8_a
MNJ?Q<_57_ H\1$,3,8BKVO9'5X+XU; M[0WH(R$TBR"52<Q.SG'WH_-?91(^a
MCW'WHRL Y9YHVV)V<LY_E4GX/$3Q,I&VK3!5G"A>)CI$&]!'0F@602J3F)WBa
MI$ __U4FX?,8=S^Z E#NB;8M9J<X_U4FX?,0Q<M$VK;"5'&B>)GH$&U 'PFAa
M602I3&)V)EPB?/-?91(^CW'WHRL Y9YHVV)V)IS_*I/P>8CB92)M6V&J.%&\a
M3'2(-J"/A-#V_RWC[D?7188R"9SSG./N1U< RCW1M@E3BY-#%"\3:0/Z2 CGa
M N<\YT3Q,I'69E*@7Q<9RB1PSHOC[D=7 ,H]T;8)4XN30Q0O$VD#^D@(YP+Ga
MO#A1O$RDM5DB?.LB0YD$SOF$X^Y'5P#*/=&V"5.+DT,4+Q-I _I(".<"YWS"a
MB>)E(JWM<P :!$-35%))3D=3+D1/0P#<"P  10Y90/1+X1$  $T  @ !  0 a
M P &  4 W_\'  D "  +  H #0 ,  \ #@ 0 (O_$0":_Q( D?^,_Q, % ">a
M_Y#_C?\5 );_%P 6 !@ 9/\: !D &P"3_QP E_\= )S_BO\> +S_'P @ )C_a
M(@ A (;_OO\D ", )0";_X__DO^9_R8 T__1_R@ )P"=_RD J_\J +;_*P"La
M_RP +@ M *W_B/\P "\ ,@ Q (G_,P!O_][_O?\T -+_IO^Q_[#_-0"Z_\K_a
M-@ W *__. "[_];_.0"J_]?_.@#X_X?_L_\\ #L S?\] -C_E/\_ #X 00! a
M +G_LO]# $( 1@!% ([_1 #%_T< I__[_\__J?]) -#_2P!( $H 3 #K_Y7_a
MJ/^@__K_W?^__[C_Q__&_\C_[/___LS_M?_._____/\[(C%(.GV%$1^EISQ(a
M-4N:8U],^X,?5\K8^,TS7RO,R#*";^!!/MAH7U4P1=*LQM]ZK7/4,OZ.7E/ a
MF/@:N[FBJ2"]FJ(D_6QMM*(9?^NUSHF2:0Z(M<YJV<^'SQR[N=8Y"JKR;>)[a
M94^OL*KY)D=!S3%%$)E1<Z\P"B[?3%Q#/>3:"%,Y\( 3#=@4U.^GS/A;KW56a
MRWX^?.:,^E,]S3<YE<W<[]D466OV:@0W$XG'OG?+1VD;O>8IG>:(QVE_\$K9a
M6AEC3D'0__ [S?=*^LM4)INR^GN>-$48HS5,&C!'/$[[@Z]BRF-;]GV=J@+(a
M&.V&\?/!IHP 7'TD]WWR'"0#>])[Q..T/_@H6ROOU9+^,I7)IDS@09JC8.8>a
M]Z0IPOAM5&WZV3H:NSG*/C,;F?8(!'6_995:QM_1>Z&DX*:-7CLDY4=RK7/$a
M1^EZB#H'Q-@7T_[@QY/&[^>^K'56FWZV'A!KS3UI_'Z^)HW?3QEEKX><PRSXa
MF;C6[ L4$#"J&9EVHKQK27^9F8U,6T8@J&N=>R2)QWJ*#(C*M#_XI/'[*2, a
M)PW(9PZ(L4>KEO',L0J/MPR(F=S\7F'J0_443"*Q2N/W4\:RUAF-,:>R\YGFa
MON]ZK1IU8HXGC=_/?1E[-'_40^* 6*6:D6DGRCI1_<Z=Y@[1>/Y8NWHW#EV%a
MPNYW;X>H\[V"[WI-&K^?,LI>#SG&PV]D_#::!3]?8S?7^I%1]GK(/9+F", 9a
M <TI"#1% -=9KE</#T$DRFL$X+(<JXK-]^J.2"SIQ)R199AL;32'UM_/%4;Aa
ML68U87R IQ?3_N#'9&3?^?#M[V@-J_(H"F#/4SK-$8_3_N"C;*V\=GBZ7D72a
MD<U)X_=39DS,8;*UT0)[?N=JLD1KV%<5FVIZ[_MBVA_\^#5V<U5@A1D1.L=Na
MKE,ZS;7^,H4I63ZS?A^/PJ/8'!#3\*"\%UN[PLQOSLA2,8WX.\?6KG5.FMUDa
M-!?3_N#'51J_GR,>I_W!97=#%)3HM= %JL*8KQJ*1?[IKV73][VQFVN=DV8Wa
M&<W5[\K3]X6GE:>'\/3WE-TEQ^\=_%HMN/)TZ+6\25^XDCYV<R04PN^M8?(Ha
M"F#7JT@ZLCEI_'[*D%LGKC7[8MH?_+A*X_=3WBN,K<"^4_N8:8Y'X5%L5B!&a
MP6\2Y8,/X>GO*6L8!;])[!K3_N#'D\;OIZQAUZ3Q^REC-W?S:=:;1.'W@O1;a
MK_67*4S)\IFO_=Z7505$_L'F&B:/H@#V#M!Z,>T/?CQVLUZ3CFQ.&K^?LN]Ka
MG1-6<PK"B:R^5MG-4?";Q-XAVYCI:YWJN&?\UKY7:PGVG=K'S+5.R2$\_3UEa
MWQ?!@U5!.)'5U^2KBHW&ICGVD2F$7>7OD ;7(%ZADJ$01O+0.[Y*022SAK7.a
M'?+\[M_/"L0B>' *PHFLOFLMZ1S"T]]3QIAC&0'6@E%(JI7<$'XM;KCNEA67a
M@A<;#''QXE?9O;JCVT4KZ2]#>/I[CD4>-66MN5?C?1G[8MH?_'C2^/T<N[FRa
M?:F\LN)2\&*#(2Z>47^J]V7<L\G28ZF'?XYE\7N%GO%;.PI^D]AKG8MI?_#Ca
M*HW?S\5K6.N<L)J3QN_GON^JTI'-$8 J]VM&_:G>[QF_M9,&S'VO9>_%$PV/a
M->?0H^#-W\?SQ]IWO1N7XM!5*.Q^ QR9H")SKU9R0_BUJR&^6U9<"EYL,,3%a
MBU]E]^J.;A>MI+\,X>GO.19YU)3%^S*NUZ0CFY/&[^=K[.8H^$UBRWZOH;(Oa
MIOW!CR>-W\\9]:=ZOR<-F++OM>R]DLY=DXYL3AJ_GQ,-CS7GT#MDM>!GXEJSa
M+U! P*AF9-J)\AJT3C1^R0INH[7.$1^E%R@@8%0S,NU$F?%;6P\Y"GZ3V&F^a
M5^L5&TAWRYVP:_%UMZRX%+S88(B+%]^K.[I=M)+^,H2GO^<H^$UBRUIGE<;Oa
MY^(1".K8%]/^X,>3QN_G&L;UFG1D<]+X_7POGFAXK#F''@5O_EYY_EC[7JU7a
M;"#=+7?"KEWQW;+B4O!B@R$N7GRO[NAVT4KZRQ">_IZCX#>)+6N=51J_GXM'a
M(*CC79..;$X:OY]K&'N-:7_PXTGC]_.]>*+AL>8<>H>L%OQ,7&OV!0H(&-6,a
M3#M1WJOUB@VDN^5.V+4K5#[];'VWK+@4O-A@B(L7WZL[NETT0_:#+FN=L^EGa
MZP&QUEFO24<V)XW?S\7OE70N[$[Y\CM$G?NRZM#[3NUCIKGO:_UEQ#\?S'>Ma
MY(;P:Q<Y?N_7+G+\WL&O7>3XO4F#7ZL["L)%CM^;M.[H=M'(\7L/GA[OFG1Da
M<]+X_7ROQA[MFG1D<]+X_1P08SS\1L9HU::?K:=RM$-.P>^=YGNAR)O+[4O-a
M<DS;1FN=$U9S+/N^UKF8]@<_KBK[P_9=*[DA_-I5<.7IT&M7P96G0Z2O7057a
MGKZ5M.[H=M$*KCP]WC7IR.:D\?OY7@UW&TT:OY\R(&;3S]:S*;+6[ .L&=C#a
M=@T+%! PJAF9=J),Y6B'W'?EZ7<-1=Y<;E_&LN^+:7_PXZGL#]MWK>2&\&M7a
MN)+^VD5"(;SNZ';1PI7T\:AF][0#G))( *J5?204PD<\3ON#SZ@3<ZUSQ+<Ia
M2M+Z9;QKTI'-2>/W\[UPM]&(;U.4I%*!F$T_6\^FR%JS#W 9V,-V#:N! @)&a
M-2/33I0QYI1$]7>GN;N'IZM11XO@(6/.,\VI@/E:828XF1Y9!^/QO1J*O+G<a
M6/9],>T/?CR5_6'[KI7<$'[M"EV@*HSYVA6Z0(E>NT(7*%'HM;JC(%RA6.2?a
M7G=TNV@7J IC#G 4E&C7I".;J]+X_93WPAXU\5.V8SP?-;UE#:NM4W+$X[0_a
MN(PQ=\4&4AERZ\3:FGUEQ:5@>4V^T]PUZ<CFI/'[*6/,ZM"S7_V=YAK&L^EGa
MZP&Q0 $!JU0S,NU$>2\4>7.YL>S[8MH?_+BJ[ _;=ZWDAO!K5ZBQ[+4KU'B]a
M=H4:"W5'MXMV@=\D]GAEQ:7@UZ[80/H:X IAI=HPWC7IR.:D\?OY7BCRYG)Ca
MV?<:T_[@QU/9'[;O6LN*2\'WO6(#Z7T+8:7=<B?LVG5_MF6O7?=G>[U6=W2?a
MU_W9%NJ.;A?M K])[/&N24<V)XW?SS547EEQ*?BU*S:0O@:X0ECIO5#DS>7&a
MLN\UIOW!CZ>R/VS?JT<DWEH(7<'ER\=AX7=""PLO!8=(6C$\4SE:LGP;U1T%a
MCFKV,]<Z%W:G?/EZB#K7, $U=\/VR4'KQ+5F7UR*0U>A4.^W0S2JV<_OYUKGa
MPNZ4+[\;QL\'F^.NK7.'/+_[]W- K'7N"I4,A3"2A][Q5:K$M_E>&'2^IL&8a
M-XFOM>9>ZUR]0A>H"F,.X>GO.>.W=@X](R#950J(2=M&^\0B>&;"!-YU1X$Ka
MZ1S"T]]3ZB.YLN)2\&*#(2[>%>32K>1W P4$W!O+>*>% ]O:J2J C-$.#T$Da
MOL9NKO4C<]AIX<"VWC!^/M@<$&N=<U9S5Y!+MY+ORZJ2J/[N--^KM3 -2JYUa
M2@[AZ>\ITVF51?#L^ZK*9+^?.V1WXA[) ;'6N9CV!S^N"L*)K*K?SUGV\^$Sa
MW[66](/R6BB5?B\H7PO:H ^Z^WCO**AK+2I:T(#VD?Y;&2G4>N?.14[2 F^:a
/)*."_]V X WO-)\:%!H a
 
end   

----- cut here -----
-- 
--------------------------------------------------------------------------------
    John DiMarco           Hard work never killed a man ...
jdd@csri.toronto.edu          ... but it sure has scared lots of them! 
{uunet!utai,watmath!utai,decvax,decwrl,ihnp4}!utcsri!jdd      jdd@utcsri.UUCP