mykes@amiga0.SF-Bay.ORG (Mike Schwartz) (04/30/91)
The following UUENCODED .lzh file contains source and object to a couple of assembly language programs I wrote in about a half an hour. The first program is a skeleton Intuition application, which opens a screen and a window (with a menustrip). The program prints a string in the window and prints information about the Intuition Events received. I must admit that I normally don't comment each line of code, as I do in the example here, but my style still shows how readable the code would be without so many comments. I typically comment each routine at the top of the routine and heavily comment only the routines which give me trouble... The second program is the ol' printf("Hello, world\n") program done in assembly. I didn't comment the program at all (who comments such a program :) and did not try to squeeze it down as small as possible. I've never seen a 'C' compiler even come close to 20 or 30 times this executable size :) I hope that people who want to explore the use of assembler language find my examples helpful. -- **************************************************** * I want games that look like Shadow of the Beast * * but play like Leisure Suit Larry. * **************************************************** #################### Cut Here ####################### begin 777 asm.lzh M&[0M;&@Q+8( "T -B2>%B !6AE;&QO+:O&8N/?\,> ,;( >-!>GC NX MZWH']F&S82(4ZGQ_%I^]QK .S_U3X9:LI__=5_K[JWVRP6>?GPT6^_RBR!(YX M#M'5=9.L&?/?:],NR%EH<(-PPG-*&N?<<B("\P!9G,A-<A+0'< :UBEE0%@LX MX0T&\C?%=QG0'S'2V["0'X% /U-#:Q,4'68M;&@Q+0$" !H P SB2>%B X M!VAE;&QO+G/R)=MEL76=3X_C _>&!W_^O?"Y]?U<]O_M,'\^Z]6NZ:+6V^8#X M/K[&)&B7N5)4RI6LX<EU/9 L_9M_O)1W_?]+YYX !JL:[UL^'$KI>3=8(66DX M@W=\)!O39&\3>0HTAR,2")F7"3ZXG6;1I!PF#"BM!6F)*ED[5P0\9P]^>M,8X M\1CNSG1%OR,\$PQG5[7/Z"_WF$"HL(1) F-2&/17ZPX:MYWF37DSPRD$T12"X M8!7O=)$4PSD__^5$7H@O^T!IC$Q,-N@N%4#@FT3 I)#']_]*0(L%EZ^$I]Y_X M"=W)@,01Q".L8Z4*A8 %P\[PU+1)DIA\[@@\!8354J%>Q[ZYY>YS+$+!*>;@X M'/J_01?DF79+M_H :W\2F:>"/SUT:&#UO!\D.Z%Z#CM?G6\[4>WOPEGOO[.X M?J-#:]N4>73()W?BZ_!Q\<,SV+2!DGA>\XLOAX.H"_\&RT#JK@X/R>N#?OO=X M;_::N+V[P[CT)S(FS;MRB[SRQ7J"X!JDWD!E@?EZ;1^.!)3,3XY&W55*A73'X M=;MBC"W(PKMYO8IH+W6GMY2BH35*+))LOGML0.C%\T>5\7(DIBV.J6:90BJ!X MF:CV-V@J&N!6&A1D%"'A')2(J0'ZULS' 44OY?T3_56H@E!\,XTNP$ZIFI+"X M?\2!?HBNQYI<Y!7)$@R@G\I+=A.@LIY-;1?=*!JM+6QH,2T%!0 ( @ *\DX MGA8@ 1T97-T_[+&8N/?\,> ,;( >-!2+&!=UO0/VH;(.EH(XX,PJE=G7?V5X M=F;OA)L)$6\W_U'Q_/N_ +K.A3TW[CE26[#=9"@X?J&_EAT?':)?)Y:,<Y5#X M=X9?:[ G(Q<[T3<[O_5]_*1_12L)-?"@ \ BGA3@(82Z5>;Y0Y 98O'33F.SX M^=$CY(Y0_$])VU-!#VK1]-E\28KP!<'4&9XTJ@! -TM(C2(/"6]-*' '@;)(X M$IW/\OD8'O6V@U0DA#O:4I2=H JCYR=\I2>0(>]M__&U I#S?:8]B0A['<L/X M6L(JNZN#S%QC 2II^]A5@\\$4V'^H_?$@1$E_H':0"/+-?HA>#*0<1=\,8 X MJ^K<DY!"*CA&^1A8<\;F5,FM'HVRNLPSVJ\[C:(C\BU.4D.9'F;NGJ+;"A#YX MDU/)QY=<ES6)0AH 9Y\.:!_W#:%=WO([PX<-PKW$KO[%/P."NT<L ;^V!DQXX MES[QX8A )W@O<8J?"Q9)(O*_>-S=2K\W<0O240B(2B$84"'MU"%P5B'*&A#*X M <Q#EQK-&YK+5"^OV/]55P/&' />.#E=.I!X1_ EIS#5C;PY)5X7JS0%]R 7X MZHN%W>O30XX4B/1O*^S^]H2=*GU1NQZ "]641#%1708X5"0G-/.W8HE?8.BGX MD_X!OK6[J=UY)3AQIJHW6Q%QSKHD(7_=3!NUMJLEZA-,)WP5KO_/B<66_/M9X M1T[*Q4[=@I)Y>XKDV:X>,$XZC:'*D;F%!.[&!)-._^+WL8\!<ZV.<K5(^0 "X MJKZB5V+ONUS U"B$OHV,2K0-J-HJP\5#A#/W,+!>[)%_"48Z1?2^"@'+#1GAX MTC.)2,YRPI/4'\83[S6!U!XYQ="ZUE!EBM9R!*X3_*>.U]J\YJXV;VSVHC7CX M/13!$ SY6":O2[(/NAS$_YQ$JWR2QMR SB#@S%#C"#UR<W,YV_$5?2<DZ^%EX M3OZ6".0-O VUPG-\[F;PH@?^4[G*UG\'!OBSSPR%P(:6OC\0O&8UXOE9(;1%X ML+=?AH&F3-OB.+>U.D:"JUT7;PG?H] \X^R>@6H/$5BU;"Q;R\?E(YJ+X/K*X M_)9WW#<*3Y<R.RS2N/J=-*_"^!.?X$XL<$^3@F)(#O1>F(ARVO]VW2T,RFD)X MIFF\O38/9NE^LKEP'^^ NRO'0'\ROT8H]F3:<J.RN PMCP"LOWX6^GNJI/3QX M,'.DM9LB>YJLR85_H:7W!WFR)]/'>=A\3V3?JV#?;?ZPV<'!^?9QX<(^76G1X M%6JGVK%%YK9QJJ.-0*\M*V(:\ WN@*2GG:\1 HD5G$^>MT.*<4 WO_[U>U"X M'@>[ O02;7*U88!P/O==?49"+%\H[ (N#"A;X(/6@@]^B#S 8E\@@];"!^,(X MG23>H@P7T;?YTQSF4R>:+8KGT0@KT+X=.S?TM]#X1=X1&J0C"WO7Y^&V]J\AX M14?B!Z <'UI8\9I\#,Y9Q=^<"S0?I#<+\U$3W7"G:Z<U>^>@>YQ!H ;& '5QX MA1(,8.2&,#I*@![?9P0ZH$^W1Q>2V-_^&9R#]YI0#/=9+<I0#3- ,)T \F@'X MGJ =#_F?: >=H!UE3_(34SM7[6IN@&=Z ;<Q>29Z^8:?O)0UQ#@#JF1'T9O=X M.693=S5IAKI=&;W1G+X= >C>=;]G"TQ\6SVYQG@'QA^Y7@&:O .D\ ^0/Z+GX M /LG:O&>Q-O ;7V^9[ODV[YCV_T/P?D6JC/P&4?G;5!M4N#@'Q$M;&@Q+>8$X M #:$ 2B">%B "71E<W0M<'<N:4S@[7Q ^_[_]B7_UA & X-Y;W+_&RVX M5^%K=8=MO-Q8U./_XX-ZSR>6J_=WZ_.FO9TD?X]LR6!1TJ%/#XI\T:G"SA<"X M+8;Z1AQA+>LW?I#.OG,3C,]1MG9031^&$$-7\Q @VD9S^?<IR)E\D/+;<#1,X MDE5FUJR_7P!?[VO6FJ<;NITA$-FCVU]SJEJ)DQ9ROKZG5[W1.HQ(%BC'3E,^X M#H*!,\%)'^A!)/;3[8"SG^%8X.WV?)^MK7;BP1B?*+)+,K?GT0C.@F!'="?RX M_N1G^D<*2#\/PON1"CDJ:H((2*INK)!Y]-1Q%_A%BA&%0*BA'LK,D&P'Z2+EX MQ($<4_Y(_P!@;(NM#&47_@6!H%3\+V._D8Z%E4O?]E>W\6PSGMC5MHVIE#&RX M[Z<F+A_=K+O,^F*>UA 4WXG/7:O&-31T-#(>[9Y<JH/?(IXA7H >85:BB%2EX M,"NI>('G86.%7O]E!KMT'\>>*VL;B'9%]"7L]BY:_;Z,5SZ#>"R#67I?1C27X MTZ+/3[_ZYME>H'P8^Q%U]8585A8_U:QQ0!VWVD__</":_@A/,<S)#L; YNS4X M)XB)B8YG\TJ;!AF^B7Z>&4Q\LTU*\D_U\Y/--Y=_X+,C)FOBHRB&<97*8RXIX MC71Z%U$=H:80+(:#C$:=\#,3%AT 4E@HQ4T%VR/>8&%C7AS51EB%<HTI^IR!X M=D25H>36=AQ'H) DC>O!"=EV9+2X9#0'1^N2.FP_@1\\D.++ K%W1)=^*PYZX MT*)H*9P(43:5F YF$[!XL-S A,B&X'<!0 ;1.C%IV["=9FN3.L<3ZG%71334X MOS=4R(&R&#%>'?<@)*[K(C%=."(;,FV D%3CB!L>#'50T.IQD,PQSY=0&Q)X M%!Y]6O\3*2F6U^.+"QN>SCN&M*OZJF$!^C/6I_U?RQU:&)Y@/Z,%9RO\]0J?X M4_3LZF1U )2J%WDN=A';R"HNOZL[_X=1T@U02^L( QBIVOV,E<[OZ;NPD4G$X M,?1N2W7(E*K+TZIOA-76R@6H*TCZUBEHH&-$"U4C&SFVIJ6UF^L_GZ#Z[=,)X MXD[=:2')W90J3BM+9;:FZFH[R0_2N?C^R:UD0$.UQYJ_G:=_07W]*!),+779X MN%CLG"@V-:X?:/>3]IN"WE,6!2>&W19^EZ=K.X=?-X_NAKX\:8QM?E:8\/'OX MS'*O[VK>5#/'A4]53.6 C'#VECU$G(_7WOJ1P-QXK:!B5G7?C%.2$XIKLIIZX M[91#\)SO41Z*^.:55*-R=$8S5NX+>C*=\1@9=<O^EC;6H><#EE(Z;]2=#J3-X M_+XAW3HL5+3PF?;,[=U#:*X*:++ZZ2/MP_Y*J+9-?YL+80;9M9_1&$_<T>=SX MW <\8RM\DI?'Y(:]6_6#]2G$99ORN+R<=+-L/O#."38ATQ3?SS?R?[V%<YD]X M:@*^0&C+KUG**3)J2$L@BUJI ,EI2/)>(J4_VZO15%E*8.E/-@FE/]D>8I3;X M%*>1:BW>?WZIV@?:V%*XZUC0A1#-+@\TN>D32Y>TN(92X#!=>EQ6Z7+15+CVX MES+4N=MBG4N6:7,-+E[%-U+GDGR-XAR=;U+>,=R*RP!$#K('[D#_R!MV0,)_X MG9 Q)(&IX) XI _#('VUV60.N0.R0.]BET@8A/IIB!J*P'V;VRX@VSW$\-L.X M4^W_*;<7;#/N^DC] 07'PH^0'=0M;&@Q+40! R @ 3"">%B !W1E<W0NX M<'<]H^Y^P/X_[Q_7]?#$P__K +?;K@^^[-=[Q>)P]Q5C +95_<"T=7M=OQ<WX MP=ZHJ:KG]^PK0;1W&&(K&4&/H,.=!E0R"6[@?&QP'<0)E@#"O'G<_R%%OYF;X M]>YDJ$L=+,5&0K)22*\VU$[XA&\BH!Y$ +E CFJ9D]>?FL_%6UT'CLN.",?BX M1S X>F3XVO"@ 3A3.+$/DY!>16:MB;4W>%<PCZ8 +2LKEHT&9QE\"Q0O@P((X MVGO@ /9^B+H8EU]I>U)JXN_6$FGI;]#UP^G7(H;\!O3]!L@E]'381".?]7ZX M"+TX57@!1#"H$I'T^0H<P=Y0X!QQCRX+]<SGVB[?**9A% .FBC'!HQ1Q+-C7X M%P<[Z\VQ(<)M6R)'LUUR"83P*? 2P->#E.6?/X!TJA32.\!Y^#1N.LEY6P[/X M'9;-R$](*3)KF#B0(!SM+6QH,2TA& 5$4 ,TDGA8@ 9T97-T+G.B[MMEX ML76=_[_'\8 !^_UA\W^75_]??[;ZYC 7TKW_5NY2 Z=IXZEY\+%=_[.^W7!MX MA77T(_G1M_S05JB#W L/9JX+LV%<?2'%;@ V)02+\$PS3SL80%QT\N#$Y?7"X M@<Q.8\EZ4D=-;#1"XQ5+3_)IK+:7\VP6\UPB^H5"Q%;53IR -&M2*@NRTV#(X M?5\T/A1PF2);B"(=681\@#030E>FTO_VO>]T1ZH@\*(?[GL\5]/G_!:0,[-$X M\\D0[/$8[&>/CW@B^'9P$=O1 9?Q!T>\<=<0'HV3O:4[PXRM03+8=6P-/['2X M@"W-7^\ZQ9"\=W->J03HEN:79%_? >J9],#S]*OE <^E83*,Y:L9!Z3/^1\LX M:F8"F\6O^QE DN]=Q ;GO+Q@.2YIU_X7,2ZIZL1SQ^\^O<T=LD[%"*E5U:6-X MV]2MF;X(0$3H?71=@S-1JRZ83NR3)PHV-^+=<CJ97[%2[0$ZXZ*V6B/.Q[)GX MS(<DXNXQD[9I;<@U);1L\9]+\QC/>C/9R[Y#XP$@HA$/C*IE>RP3#P0QWFM#X MZ)%4Z49AF?=]+9F[ W!S=-RRC3F8[6,5X/38TD%M6Q!"%WQV- [6J'^5Z["QX M(I:F5WVBS9E&K8D'6S5WJ E%F1KR(,VDJEM5"4]CS"B5ZAEQ&*G@7@,3?MRQX M4L(^ R6*/'6 ECS2J26$!714,\VZ'*]/X_XL>$M6*BR:$X5LOJJR;8G,G.VZX M S!VX#9_=;)'48)/ :87((9I!KI4B8S>Y;RT40JNTF!$E:H2]U\J/<BA9%_FX M;P3$\@J.%@.@[L: '& TX3D%&23Z)N9H-P_<%96S@H/46CS&#)<C.BMSHK?X M$]M3_4\()6%<-45!A6+IDDG^Y>F@E4LO#Y(DOYZ*8A]X"\]XX8ASBL.5$#;:X M%/XM/!(4"R$D#+FHO1DV3=NU&3V/P#]DT E16Y6Q&DGW5_,2=UX<N?(&\9!@X M#Y(Y>?L<BHFW&@BX!;W/:3AL\..T TP,X*[3)+#VDAN4T0G:V]?3YE*IO8LGX M^!1$. ']<![';.8M.[^-;5$/R^OJ%^FGPJ 'KA'C .NLV>*6/Q,[+<F4N"H=X M6.)N7Z'%4G*?"54-9D_PR7&DHQ6:; )C,G*G-;H,CK0^J0-Y=V2*#<W5+5_=X M_#Z#(?C*J_U(6UW+E %L_Z+"[/R?_ZR8I0P/:*/ 85"/0)*XM.T!V/@SF[B\X MBU8Y1<"*T 4=(% 7 L=0N7P#H0>N_E#%22M7]R&.1A "LJ(%R,>B#G88Z.:-X M?@>\)SVAYFZW)\)#3;L3D[A!CT4IL@A4FT"\ /=(]Y>1-MY^SH[9T#)=Y_N$X MCJ%8CM-%7"->F;YK*:!;_<"WX,"5<&XQ]HBPP5]QC;40"*%H1=53HB/CWWO4X M1PS<K1FBYG<M\GY7C;8$20(1W6J]H9Q6G\?6%IEA(^%N\6VW[59PDN1/PDXMX MO\MC_DE[-'K_$K3X$O:Y\G:GFH,*@#GX3U[@(#'S862/VN?FDY0\$YD4J)&VX MXXB#[6"HF.'F]I+2Q3%Y,SRV<<T8YV(4DXBK+85.1"YXJ^V<9]90MW555MX1X M+WO[0QV..2#Z.+ M3@;[UM#"U4R0/L@/99-S1 WDD#^N>T'H;-_KH+9=1]<TX M;R"P;U(GX%=Z@][G &<KTM)D().H[P8STG"+%%\-"]@>MH(![%M0#D1\.S?IX M>=(B^6\B<,:46^D?^\%@G.-?M1;EX4VSAN%1CI48=-W8[YT*3"^YFF&1 IZ(X M%CR".[1_ PVXZR$,I_SR/K4O6NPH)UK&*J-\(;38*<<0U)/"(>'!>/$';<:[X MP-E0DE+F.XO*RYOHD<S]XW6S_X^F.[6=UJ9]W*-G@?-N)/#MXMX(]U78J8-VX MFXQVIZ;FFD':76-2#;KO-^*KT6E@RM0VZW!;HG=-ER)S)H&J0>/E%7"K'>#9X M!)RB_E7O.!<;_G7_*4D!(7Y= -&S?)5_/^:W<@KN#P\#$^>/Y091?XB#N4BVX MU\5GE7X#FMQJ6(E:S,3'^5\N\Q<:OV(6T=*=,(%L_G7?O+"/-FW*#<'>67H5X M_31/IWQXM<'$_X&6J++J,V<0R4V%#Z#M5^_3*(<<7G_D;T_Y^!(7[:[<N;)UX MYFGR+<&47N9EJ!+SX'GC=0HV:T,(H/).IXE$>Z#TBLJ"CUJT[AW^$$?M@^=PX M7OF'M>L'0*;6Y/T=XU>/9/P)92O'EC'8'<=#U7'O*:-'J8G 4&YU(">;#!ZUX MS?#<]W:Q(+0.T=0DC]3TEDW? 4O_M3+E.>KT5 I4P^))\021Q^7D'PRYYN&)X M53&TA\G+(//S?-[_E2]7UPVGU\Z@V)EWU;@.5[]LDLZU+B4DPK[41860=4POX M!QI_&QL8>27YX*TZ:&"OXZMX\3=GWQ<HRH\$/%[[*06)#GP/3]XR'')KZ60>X MR2H_/F_O?/+N_II5:2<4 ^<%T"=$8"\SZ27\GT4$G-4!!E&O-#XN4P]\QS;:X MCIJN(4"R$;!XOQMZ-V&6^0%R2UT/_+9Z_K94ZB<&[6[3)%[TE&4;G)\_V6C+X MMMK1=<]4"*?38&E6A^N1[TC;#.V&;#_Q^MT?G]OWB\A_T>EW(VH1K%^>OSU!X M.PZ-(!@T/O#[K+G^*#%R(?Y.YA#RYMO4O8Z% !L1?:#,R%TR6Q]W=^>7I;3JX M1<VW3#PQ<\IN:>HJBBC[F6D&Z L_?]2GTK)W#DH^J(.WRN_+]B?$O$"\O,Z,X M#B9#UY5N8M$%=2_$X,* ?;5BN>:@9\-ONS]Z.3:CYXPY^?RHAWVHD34I_ZYTX MV-M4-%J_<>Z2J;L+Z83Z-MLJ2/?V'FD@<C_PJN;U1^E\G@>^#8H!"Q X-PTBX M)KA?RDB^Y[Y9VJL$O?(3\/K&G*'WTNEWT!7QQA?0JN5J^,E@Y"P..<,FG3FVX MGV_G@N+^6;XS-4>14:RR]M7B=>$R[SF[?]69X>ZOX;%@VINSU&5)9(HZ"] BX MC:L!+<S1+:E%K8O(8;J&)13CH44R?P9/@K)[B3/ZI7X.<?\#GCK5'[(=7PGGX M6>B5IT13F@ON8;@"_V3B5 O--5WAB?+!8S\\[]#K2VWG0WP07Q8;0:I]G[Y3X M<9T\:_3-KPVRGPEVV&?EP+_$. \Z6S1!P-]NP_#LONV)ED7\H[7_3*M YT#:X M->PH#>/Y-\YV1L(VISY(E,1)#@7'RN^<(==3EQ[J&4F2/FZL\_4E-] )WWKXX M\T"?GADR6?FDX": CD#6BO;UYZ#B=U'M\.;^X]O7++6@&8>RZ$FNGM'(+:@OX MW]AZ/I[FJ'*P7L4>'RHM7TTI>>AZN1GMF+.:.D\,H;7'(=G9F27>8IVAY]#/X M5C-\&8UI9D>,KW\R9GE=8&@FKK<U YF]"9N-]1YWJVJ>*"QQRY:Y^XTBUDCHX MYLM]\R^;*PS8:[<1--9Y]J8V5IAT$XC$2)8BX 0/ LHI>QXY/(EO]YA[GN7=X MY3^:50)AYK1>V?.TS.=5IJ59S/D+'*5VD7[F"%]RLMTM[DL>/I[VZZI.QJKZX M?+L>>#+1%2.QI8J3M?2QMC,:H52!-CR5?BPM,V2$+?WDV[G4GF>FT'Y-<H@LX M^/^(?H1\PORI8\-9V$9!=*N@DS'AB4OS!=]B2RZY"M1O<*;NT+R;G%#9UZI3X MH9$C,2/!)%%$C>0X^/FDY[J321WBE%3,%R[DR&9Y>]V&*%OJ/NPYB5P$O*.?X M%5]8L'\8W0WS92.+]';,U<J_^9CASG05M_)]PE:%]%-WDT.EJ0OBHD +?1=NX MAW4$;FH\2HIN:J?:]O<U&**Z80?K4ZI)!'65MJJN@WVO8OGC4T=-D^EG,4(@X M&][>V/TR5N>(^2217S;U%W.\)X\FE"75/A@ VGW-B\!66;/H>:M7"NW QN<:X MUX^T^Z^_NWV=6ESY+LI7EDP_=YVTF@,B]]=5:\E_@1/[%=-$YC4Z7"C^N?I2X M#W$<M]*&?+&$=#)S@1F]*>&?T._/0RCX"9]\C?M<^VI.?/,=^RJWU?_]@%XEX MK\OQ*=)YTPR($$\*#YGKLW1@OGB]//+FT/@:Z^2P;5E79CLSN-4 N#U+ 7,8X M^,[:3<;!0U/4Z@RLZ!Y:\,]*?I[+N'PH;2G2;OJE]I#9^+TZI@6#F#JXV)X-X M^SE@;^B@1Q:KG>-,,>?'A.T@"T5CL<(RAEA7V-;HI_8IZ6B@:589M>4'NA"SX M9M(T]2GOE2DT-?VZLFLI:8E$>I:XI7TD4JF*5)92ITKP4JCT3 ZF^:/O4W:\X MJ;GOX'+5LN,V&IJU<J(VE-7>:FG]@!RI4ET3_!<92M&%=BK8E$DPINQ9.QBCX M8%L,JA?$NRYC=<OJ%P>%2ZG\T* VV?,N><0/>')FMT<FX$5.Y,Z#2GUOY&LHX M<OXV@CW<16O5 UK@I4,M][YR\<K8ZUI9]W;4QY6=.'XK9.]=^/"EKXMM=71$X M 4:V[=LQ-&0T&'QE=%?L.G]T[444RN*9D6P"SB$R@M;F:J&*S&V^595P.'0#X MMMI H.ZUW&E/^G"B?AGC==&))C/?HY]/-. R!<*HU1"5PQ@&,=%VQ(G?J3S5X M=L7ITF<_E5+0*1-JQ6 J;2[_59UU-Z8%03!#6'+Y#6'G%*\F-#LW6FS=,_TDX MBSTY3..KXZ2<": >E/"K?^0O3GYK+U9L]</Y[2JI)OCH;0F1?UXPQKN92&H7X M:'VXT]]0H 6W(PW]C7&RO8N/BZG0S5,N0^'%J;>97-!(_I91,6OY^+=?G[J*X MW4M:JD.1V4.7[ [>E(A#L3/>;4(VCO C6V(IM+)F\WF+SX'&,KA;!V'LH:BNX M<!$_R_?Q,W;>&4:;NVV-IWRO]JP8F>YE1SFKC/#@]P Z3=YL%X?X;725'B*$X M<,X[UP=*OJ-\5R0V,1J#.2[OH.!EWWG%T",&3X-U4L&"IUK4@L6U\,?H%)UBX M3F*ISQM%XG1C''%8"V*6)^[3VW9(B1"6MO$O\H^=3%J\K5'[VHJ04MH7E:XFX MQ]E9O7D(C%C/5%7Y?/_$6[LM!U92_;@IC)7>[<#R0&#BLW4GI[@2W9%9I^,8X MR(Y&W>FC-C31?>\A?D[!UG\BZV>0DO=+0O7$,OQ!)\D'4IFK"%O8S80J8VBHX M"YP+,\/8@L+&%^,&=ATP9I%O=4F;DXM)%F"IIF2'Z"! W@A#2-9)_YD:HUU$X M;%[?7$:R.4 1K0:-(V+&I"2,.LR5?XH>98S5.&LS=-E&:Y2JEE5H:'C$%'P4X MUT-K^Y>[H KFXU+<6J_<^?&H.4_IIY'.OSW\=?]NL"NG0Z39/41;"O 98F*.X MWV[_=GPM?FNI(C5/LI%);TO5P?:)4'W\"9N8B GT(.KYVD++6P!:\=&)[;6KX M] ;T=FPOI#>B I@A4BO:V*5N&4HVT12GA3VMJKS""[_V(K[%F(ZI%W6E0G+2X M>ELQ%S?"B%R746W(XQE9?:AF@D'LJOUX(_97/T=O%QW]EW]%6]FUMZ&_ENI:X MK?D0Q4.^= _.RZ'TNM0A)Y4%G*6O@>^P*CYYC3"M9/-PG%!JC8',&6$/,3@JX MJ45RU=-GU/P_D[7+6"_.%RV(M1<NJHN:P87O+-_6#K+\RU 2I>8,3<=G9_RX MGH-B8J@[,3=,'-+I$P]O;KVC[K'C-*LO;=0K+F U:S*0W RA$)V6#U>H-&9%X M8F<!U22[HB4<G_H?0:>;OUV*$RA)MDX]I_F\+UY6]^;3!W(]^EXSFU*F*\J X M-4OOCH1JQXW1I8Q:F?#\ZWZNE$1B4I-72IP(=7D^-[LT495;98(L]73=5C5@X M6.T64A.^>1A7:I)G(JS4E2U($#YBZJ1 4+TS9>2UWS8X^+?E=Y[1$O0E!;ONX MB\E.\17%@E65_+Q1%7]1-E4 "GJ@N?"S\=X[J"26P^K'CY,A]0):-UA"]U$!X M$65/DS)P49E)DQP/E%)Y2MY>+H"28CK'<N*3\CMQS(9SOY,P?B&G<Y5T?N:VX MP6RAWD_;]WCLL['DV0W'\>>["KFG12,B95=;>Q;8ZAI#DID^ 1RD5D?A$BXQX M^$]M(F/@J3GIF Z/@_[Y]2SZ=A@XL1D]YQ2E@<ROQ%;(U^/?.JK#W[L&0^=MX M2Q(T(:1BFPALS*I?MG>]E<4U8NPY:=4WG>Z=E#J(T\VQXU0/X6Z].,NKK>YWX MS1G'PMP3[S.Q4B*.A-&']]\^</>=$+UC.ZQ<^2KOU ARS NF[I>7*B ETBUCX M'71/:>.R17YXZ#ZW;S@-VRZQX,<UX#!&O;BQW9#'AA9MS+RXER,Z42FG\L7SX ME#*+=Z&W&F?3H2?Y*O O9_2%? Q$H4D"+_";/14EB1&V:2TO,A7O21B\:RPYX MOZ2^M%D;SWW6%)%\7>W65YV%Y_MG-*,_-65B,8,XXO%6C5G-T;K4?R5RZPO@X M'>*IW#G"4H=J6#3;^#A^UVO!:;$)MHV4 EU25%L6BR]8<T&SSOZ,A3I3Z'W3X M'R'O:-:Z9D"Y$3G.2&R!/\)%:/*;K6N=N[]Y5D]6$RFK4^WN1K!/GLB#5BR8X MJ[S)]C[9AO8,:]\^O"DK,;K'+T7UC$"FCBG51-%5\0V,L5]U78I?>32@C90_X M-#NN(.W/P>?K2ZS6F_Y5Z!UTY_KR#*N3L0*XC%WDI1JDTDFW'29_I^<M3S?CX M(#ZKW]3V2_"7.\%5E%E33[?GI$CC[GD>^:U ",=DI"<V)QS_S(UXRA1UMMU[X M2H]_P:9N??J2AD-GQAF@/?+SH_)4%/]U@.:,8*O=[)N[HH22'Z>5V'_8$>V5X M(D?#C[G[\0FX3&&S1P",K;)6J8WY_?9PS];W^?VT6W]\G<<8+WV %66C@;%XX MOX*U9AUWQ659I?'N)SQ[Z<0W.;LX?H0%O381O](:^GZ',X:_N:XY^8(JVE!HX M90EZF__[VZ;HYAIPCG[T\[NN1S^,RW\'!.[X)X#A. [/W7W*_4;)+S2E[[P0X M67935X412?K(-%?R% ]<6WFB8E^*7<O93=$B3ZZ;WLU-;@2O,"*P)[K:9?M6X M1*ZX^['78"L[%95L3R>-%SSR5&^FF6[A:9=MF%K-LLUS,TO7[U[<8IM+@F \X ML!UKCJ%C87WHYX2_GWHX9^[L%N2*RB%O;K4<1W@DOADR?K.]OOK13KDX<V:OX MQS!\U'7_RMN=5]41Z*>)#89JRC"02B?[CI/+)TQUQVFQ84_\S\R9RX.0667QX M/T?-%"R'&4! _>_-?NC:DN,90EAX+,!\&MEL-#=GH]MC=R$:-_R,WU\$2VZZX M;%TE;G(:3B&V%X:A>PRF'L-G;4([7.;EW>BW0G8$#S_Q)ZX"!?0 XW#&KO%YX M@3\VV2_.=Q#-T6M7%)NYA.\R][X<3*H#;&[0&<7MN1KU">?VARU*3:8"CGW3X M?0O=!]Y*65T'6U^24=_GK6*@3[H>Z,OW9G)/E%;3[LW1H!Z1VL+YU=K1O,QOX M[#O4JLB0DB1-B$TD+OY]81+CW,$Q=DR^(6GP:)TA5>E'OBTVA8B">KW(L,Y;X M?$.ELU:,GX3/^++3N8%F/^F!).]='Y/$G7NRGQ8<S 7_FEH8NW/?SUE(9U_.X M5->6SY&V.M1X\TR-$(?(1Y/:X&_B'(FN(>>!\TMD1#9N/EY!).+D-5K>^C=-X M#2G3(4-B^]')&+UXM.63/Z6,A#=?.XU&-/X8GMH7Y&N$Z%_L9N[6OV3DGNP[X M2 I7@8CW6B-\! N'Y*B?H#LQP?-7$9;W].A_/*DF::O[]/+3CEOW%VHIX#/WX M*O0.]U.P;OB6W^$ 3/R6(?.N].+0)P2FW^&"[?1#'2*)&K>3/]CPNTS^YKNGX MHTCX5-^;4_AFEB@9FF13U$87SYYCHE4MZ0G;^R/3D33%9 #Z)Y1SN=O#[9G*X M."S5#OTQQ<7E66KB$#MJI3B\IP"P01BW_R%9./D9HV0#F'$%G>6KBAL^6]=9X MQ:G4>RB:KI0D(^L/^B_4^D$'Y2)6%L"YU/_+#_/G\MF[;7CS>PO_@)0'+<)3X M#PEX4LHC9L>)35K>"!(:]QW Z*W+7Z\_E6S$%!P*%ZI-$\29K)DOVFF84P'@X M3O*2'54:DM\C'--HC=,@K]Q-_G!\\!UA8GYN#<O(91@UTNL+$LWPX.4K6Q*<X MS0XM)/TRA<1NXMBQ[]Y2AKF[RM.2M:6R<VU#].RP<E%)0MSA<X69I5EZ/.=SX M;$;><RLQ63MXYZ8V4-I$=R(^)NO#.7A^<8>+:.)'"[>J\\I57GN,1OP0"RE&X MLEE5B/W//"9_;)+^[%=H*KN&FAKGU.6WP4^(Y1(/W;4/\.@"-JUM]>02=Y*=X MY=\:.=_M7D3V+IG*7/2:<I#^R=_01+9U8R!LCF?_M(%D7X^K*_&?T2F""[,\X +V"H7^P[L.<>H@ #*X X end
cs326ag@ux1.cso.uiuc.edu (Loren J. Rittle) (05/01/91)
In article <mykes.2042@amiga0.SF-Bay.ORG> Mike (compilers suck :-) Schwartz (mykes@amiga0.SF-Bay.ORG) writes: >The second program is the ol' printf("Hello, world\n") >program done in assembly. I didn't comment the program >at all (who comments such a program :) and did not try >to squeeze it down as small as possible. I've never >seen a 'C' compiler even come close to 20 or 30 times >this executable size :) Well, you are now: Use `lc -. -v -cus hello.c >nil:' [-O does't help ;-] `blink from hello.o nd quiet' with SAS/C v5.0a (with 2.0 includes) to get an executable that is 124 bytes long... ...which is smaller than Mike's hand coded 180. :-) This may suprise a guy like Mike. :-) And, boy is the source more readable... :-) [Mike this was meant in good fun - ljr ;-] All joking aside, I hope everyone enjoys the `good', as in system friendly, asm code Mike posted. But don't use Mike's `size' statements as a good reason to code in asm instead of C! Thanks Mike! Sincerely, Loren ----- cut here (hello.c) ----- // Hello world in non-portable C // [non-portable because we call AmigaOS functions directly instead of // using the ANSI library and we use those snazzy C++ style comments. ;-] // // Programmed by Loren J. Rittle in more than 1 minute (but that is all it // would take next time :-). // // compiles and links into a 124 byte executable (62 byte codesize) // in .733 seconds (yes, Mike, I changed the time; that's all it took). // #include <pragmas/exec_pragmas.h> #include <pragmas/dos_pragmas.h> void hello (void) { struct ExecBase *SysBase = *((struct ExecBase **) (4)); struct DosLibrary *DOSBase; DOSBase = (struct DosLibrary *) OpenLibrary ("dos.library", 0); if (DOSBase) { Write (Output (), "Hello, world\n", 13); CloseLibrary ((struct Libaray *)DOSBase); } } ----- cut line (end of hello.c) ----- -- ``NewTek stated that the Toaster *would* *not* be made to directly support the Mac, at this point Sculley stormed out of the booth...'' --- A scene at the recent MacExpo. Gee, you wouldn't think that an Apple Exec would be so worried about one little Amiga device... Loren J. Rittle l-rittle@uiuc.edu
mykes@amiga0.SF-Bay.ORG (Mike Schwartz) (05/03/91)
In article <1991Apr30.213936.22878@ux1.cso.uiuc.edu> cs326ag@ux1.cso.uiuc.edu (Loren J. Rittle) writes: >In article <mykes.2042@amiga0.SF-Bay.ORG> >Mike (compilers suck :-) Schwartz (mykes@amiga0.SF-Bay.ORG) writes: >>The second program is the ol' printf("Hello, world\n") >>program done in assembly. I didn't comment the program >>at all (who comments such a program :) and did not try >>to squeeze it down as small as possible. I've never >>seen a 'C' compiler even come close to 20 or 30 times >>this executable size :) > >Well, you are now: > >Use `lc -. -v -cus hello.c >nil:' [-O does't help ;-] > `blink from hello.o nd quiet' >with SAS/C v5.0a (with 2.0 includes) to get an executable that is >124 bytes long... ...which is smaller than Mike's hand coded 180. :-) >This may suprise a guy like Mike. :-) >And, boy is the source more readable... :-) >[Mike this was meant in good fun - ljr ;-] > >All joking aside, I hope everyone enjoys the `good', as in system >friendly, asm code Mike posted. But don't use Mike's `size' statements >as a good reason to code in asm instead of C! Thanks Mike! > >Sincerely, >Loren > The size argument is based upon using printf() and not Write(). The program Loren posted is a good example of how to make a small 'C' program! Please note that I made zero attempts at optimizing for size or speed while Loren made every attempt. Also note that my post was not meant as a challenge, but just as an illustration of how you get smaller code WITHOUT trying. It was the most minimal program example, which K&R defines as: main() { printf("Hello, world\n"); } Of course, no offense taken. -- **************************************************** * I want games that look like Shadow of the Beast * * but play like Leisure Suit Larry. * ****************************************************
mwm@pa.dec.com (Mike (My Watch Has Windows) Meyer) (05/07/91)
In article <mykes.2098@amiga0.SF-Bay.ORG> mykes@amiga0.SF-Bay.ORG (Mike Schwartz) writes:
The size argument is based upon using printf() and not Write(). The
program Loren posted is a good example of how to make a small 'C' program!
To be fair, you should use printf() in your asm program, as well. But
that's not the point.
Please note that I made zero attempts at optimizing for size or speed while
Loren made every attempt.
Actually, Loren didn't make very much of an attempt to optimize his
code. What he did was learn how to run a C program without benefit of
the standard C startup routines. This isn't optimization, it's
education.
SAS C's startup code does a lot of things for you - deals with WB and
CLI startups correctly, provides an ANSI environment, and other such
things that make your program more correct and robust. You can also
get backgrounded startups, resident code, guru trapping and stack size
guarantees through that code. I've looked into producing stripped-down
vesions of this code, and it just isn't worth it. By choosing the
correct link library, the "deadwood" code usually winds up at less
than 1% of the application. For most programs, it's not worth doing
away with. For a few programs, it is. And those are few and far enough
between that most people haven't learned how to do so.
The bottom line is that you didn't show how to get small code without
trying; you showed how to get small code without using any of the C
support code. That's no harder in C than in assembler, just not the
usual mode.
<mike
--
The sun is shining slowly. Mike Meyer
The birds are flying so low. mwm@pa.dec.com
Honey, you're my one and only. decwrl!mwm
So pay me what you owe me.