[comp.sys.atari.8bit] Unsprite 5 -- the Mac/65 source code

fseipel@hpuxa.ircc.ohio-state.edu (Frank E. Seipel) (03/02/91)

 Well, somebody requested the Mac/65 source code to Unsprite, so here it is.
This is from A.N.A.L.O.G. Issue #70, March 1989 , written by Jason Leigh.
See the article for details on using sprites in your own programs (sorry,
I do not have the article except on paper).

uuencoded Mac/65 file.
----------------------------cut here-------------------------
begin 0666 UNSPRIT5.M65
M_OZ9&@H (%@[("HJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ%  @6#L@*B @
M(" @(%5.("T@4U!2251%4R @(" @("H> "!8.R J*BHJ*BHJ*BHJ*BHJ*BHJ
M*BHJ*BHJ*BHJ*B@ 'E@[(" @07-S96UB;&5R('5S960@.B!-04,V-3( !5@[
M/  &#T5)1@ B6#M0<F]G<F%M('1O('1R86YS9F5R(&)L;V-K<R!O9E  '5@[
M<V-R965N(&1A=&$@:6X@82!W:6YD;W<N6@ %6#MD !]8.R @("!"62!*05-/
M3B!,14E'2" X+S(X+S@V;@ ?6#L@(" @04Y!3$]'($-/35!55$E.1R @,3DX
M-G@ !5@[@@ <6#M4;R!U<V4@<F]U=&EN92!I;B!"05-)0XP !5@[E@!76#M#
M3U!9/5534BA71%=#4%DL4V-R965N(%-T87)T+%-T87)T6"Q3=&%R=%DL16YD
M6"Q%;F19+$)U9F9E<B!!9&1R97-S+$=R87!H:6-S($UO9&4IH  [6#LH)T=R
M87!H:6-S(&UO9&4G(&-O<G)E<W!O;F1S('1O('1H;W-E(&]N('1H92!83" F
M(%A%<RFJ  58.[0 05@[4$%35$4]55-2*%=$5U!35$4L4V-R965N(%-T87)T
M+%-T87)T6"Q3=&%R=%DL0G5F9F5R($%D9')E<W,IO@ %6#O(  58.]( %5@[
M("HJ*B!%455!5$53("HJ*MP !5@[Y@ ''04 !O  'H5,3U9!3!X2" $[.TQO
M($)Y=&4@4&%R86TN^@ <A4A)5D%,'A(( CL[1F]R(%@@86YD("\N! $<AE-#
M4DY,3QX2" ,[.U-C<F5E;B!204TN#@$7AE-#4DY(21X2" 0[.U-T87)T+A@!
M%X535%A,3QX2" 4[.U-T87)T6"XB 0Z%4U182$D>$@@&+ $5@U-461X2" <[
M.U-T87)T62XV 12$15A,3QX2" @[.T5N9%@N0 &$15A(21X2" E* 1*"15D>
M$@@*.SM%;F19+E0!'X9'4DU/1$4>$@@+.SM'<F%P:&EC<R!-;V1E+EX!"X)$
M6!X2" QH 0N"1%D>$@AR 2&'5$Q-14U,3QX2" X[.U1O<"!,969T(&-O<FYE
M<GP!'X=43$U%34A)'A((#SL[4D%-(&QO8V%T:6]N+H8!'8-04$(>$@@0.SM0
M:7AE;',@4&5R($)Y=&60 1R#0E!,'A(($3L[0GET97,@4&5R($QI;F6: 0^&
M04-23U-3'A(($J0!A$1/5TX>$@@3K@$FAD1)4D5#5!X2"!0[.S$]4$%35$4@
M)B P/4-/4%D@5TY$5[@!'(932$E&5%,>$@@5.SM3:&EF="!A;&EG;L(!$8A4
M14U04TA&5!X2"!;, 1F&5$5-4$Q/'@;0.SM496UP;W)A<GDNU@&&5$5-4$A)
M'@;1X $=A4)51DQ/'@;..SM"=69F97(@061D<F5S<R[J 0R%0E5&2$D>!L_T
M 1F(5$U03$]#4%D>!LP[.U1%35!,3RTQ_@$/B%1-4$A)0U!9'@;-" (%6#L2
M AA8.RHJ*B!354)23U5424Y%4R J*BH< @58.R8"'E@[355,5$E03$E#051)
M3TX@0T].5%)/3$Q%4C "!5@[.@(''04 8$0"'X1-54Q44CX("CL[1&\@;75L
M=&EP;&EC871I;VY. AI(@DTQ.SMO9B!,3U9!3"Q(259!3"!T;U@"%B&#6#$P
M.SMA8V-U;75L871O<BYB @J"33%2/@@4; ('2()-,G8"""&#6#(P@ (*@DTR
M4CX( HH"!TB"33.4 @@A@U@R,9X""H)-,U(^""BH @=(@DTTL@(((8-8-#"\
M @J"3312/@@$Q@('2()--= "!R&"6#3: @J"3352/@@(Y ('2()--NX"!R&"
M6#CX @>"338Z @,%6#L, QY8.R!-54Q425!,62!"62 Q,"!!3$=/4DE42$T6
M P58.R #&8-8,3 E/@@ .SM32$E&5"!,1494(#,J QA1A4Q/5D%,.SM424U%
M4R!43R!8."PT QE0AE1%35!,3SL[5$A%3B!!1$0@6#(N/@,*485(259!3$@#
M"U"&5$5-4$A)4@,8@U@Q,2P[.S,@;&5F="!S:&EF=',N7 ,*585,3U9!3&8#
M"E6%2$E604QP P0S>@,'*3X( X0#"$B#6#$QC@,$+)@#(56&5$5-4$Q/.SM!
M9&0@=&\@,2!L969T('-H:69T+J(#"U6&5$5-4$A)K ,$++8#"U&&5$5-4$Q/
MP ,*3X5,3U9!3,H#"E"%3$]604S4 PM1AE1%35!(2=X#"D^%2$E604SH PI0
MA4A)5D%,\@,$+/P#!#H&! 58.Q $%%@[($U53%1)4$Q9($)9(#(P&@0%6#LD
M!!V#6#(P((-8,3 [.TUU;'1I<&QY(&)Y(#$P+BX$%X-8,C$L.SM8,B!A;&=O
M<FET:&TN. 0*585,3U9!3$($"E6%2$E604Q,! 0L5@0$.F $!5@[:@046#L@
M355,5$E03%D@0ED@-#!T! 58.WX$'8-8-# @@U@R,#L[375L=&EP;'D@8GD@
M,C NB 04(8-8,C$[.T1O=6)L92!I="Z2! 58.YP$$U@[($U53%1)4$Q9($)9
M(#2F! 58.[ $"X)8-""#6#(QN@0((8-8,C'$! 58.\X$$U@[($U53%1)4$Q9
M($)9(#C8! 58.^($"H)8."""6#3L! @A@U@R,?8$!5@[  486#M$259)4TE/
M3B!#3TY44D],3$52"@4%6#L4!2.$1$E64U(^" ([.T1I=FED92!,3U9!3"](
M259!3"!B>1X%%DB#1%8Q.SMA8V-U;75L871O<BXH!0DAA$1)5C(R!0N#1%8Q
M4CX(!#P%"$B#1%8R1@4)(81$258T4 4+@T16,E(^" A:!0A(@T16,V0%"2&$
M1$E6.&X%"(-$5C,Z> 4%6#N"!1Q8.T1)5DE324].($)9(#(@04Q'3U))5$A-
MC 4%6#N6!0F$1$E6,BR@!0I7A4A)5D%,J@4*5X5,3U9!3+0%!"R^!00ZR 4%
M6#O2!1Q8.T1)5DE324].($)9(#0@04Q'3U))5$A-W 4%6#OF!0Z$1$E6-""$
M1$E6,O %"2&$1$E6,OH%!5@[! 8<6#M$259)4TE/3B!"62 X($%,1T]2251(
M30X&!5@[& 8.A$1)5C@@A$1)5C0B!@DAA$1)5C(L!@58.S8&(%@[1V5T(%!0
M0B!A;F0@0E!,(&9R;VT@=&%B;&4N0 8%6#M*!A2(0T]0641!5$$DAD=234]$
M150&#E&(4$E84$)95$4Y7@8(4(-04$)H!E&'0EE415!,3CER!@A0@T)03'P&
M!#J&!@58.Y &)U@[0V%L8W5L871E(%1O<"!,969T($-O<FYE<B!!9&1R97-S
M+IH&!5@[I 8A6#M%<75I=F%L96YT($)!4TE#('-T871E;65N=#HMK@8D6#M4
M3$U%33U30U).*U-462I"4$PK24Y4*%-46"]04$(IN 8%6#O"!AB&5$Q#04Q#
M48-35%D[.U-462I"4$S,!@I0A4Q/5D%,U@8'43X( . &"E"%2$E604SJ!@A1
M@T)03/0&"2"$355,5/X&"E&%3$]604P(!PQ0AU1,345-3$\2!PI1A4A)5D%,
M' <,4(=43$U%34A))@<$+# '%5&&4T-23DQ/.SM!9&0@4T-23CH'#$^'5$Q-
M14U,3T0'#%"'5$Q-14U,3TX'"U&&4T-23DA)6 <,3X=43$U%34A)8@<,4(=4
M3$U%34A); <348535%A,3SL[4U18+U!00G8'"E"%3$]604R !PI1A5-46$A)
MB@<*4(5(259!3)0'"%&#4%!"G@<)((1$2593J <$++('&%&%3$]604P[.T%D
M9"!T;R!43$U%3;P'#$^'5$Q-14U,3\8'#%"'5$Q-14U,3] '"E&%2$E604S:
M!PQ/AU1,345-2$GD!PQ0AU1,345-2$GN!P0Z^ <%6#L"""=8.R,C(R!%3D0@
M3T8@1T5.15)!3"!354)23U5424Y%4R C(R,," 58.Q8(!5@[( @E6#LJ*BHJ
M($U!24X@0T]062!"3$]#2R!23U5424Y%("HJ*BH(!5@[- @D6#M'970@<&%R
M86UE=&5R<R!F<F]M(%534B!C;VUM86YD/@@%6#M(" 4/25((%X971%=#4%DW
M.SM296UO=F4@5$]37 @&#T5)9@@;-SL[(%-C<F5E;B!3=&%R="!!9&1R97-S
M< @+4(930U).2$EZ" 0WA @+4(930U).3$^."" W.SL@4W1A<G18(&]F(%1O
M<"!,969T($-O<FYE<I@("E"%4U182$FB" 0WK @*4(535%A,3[8(!#? "#<[
M.R!3=&%R=%G*" A0@U-46=0((#<[.R!%;F18(&]F($)O='1O;2!2:6=H="!#
M<FYRW@@)4(1%6$A)Z @$-_(("5"$15A,3_P("S<[.R!%;F19!@D$-Q )!U""
M15D:"1TW.SL@4W1O<F%G92!B=69F97(@861D<F5S<R0)"E"%0E5&2$DN"00W
M. D*4(5"549,3T()%#<[.R!'<F%P:&EC<R!M;V1E3 D$-U8)"U"&1U)-3T1%
M8 D'43X( &H)&U"&1$E214-4.SLP/4-/4%D@,3U005-4170)!5@[?@D@6#L@
M1V5T(%!00B!A;F0@0E!,(&9O<B!'4DU/1$6("058.Y()((A#3U!91$%409P)
M!5@[I@DA6#L@1V5T(%1,345-("A4;W @3&5F="!-96UO<GDIL D%6#NZ"0L@
MAE1,0T%,0\0)!5@[S@D76#L@0V%L8W5L871E($18("8@1%G8"1I8.R!$6#U)
M3E0H*$58+5-46"DO4%!"*>()!5@[[ D$._8)$5&$15A,3SL[15@M4U18  H*
M4X535%A,3PH*"E"%3$]604P4"@E1A$582$D>"@I3A5-46$A)* H*4(5(259!
M3#(*%U&#4%!".SM$:79I9&4@8GD@4%!"/ H)((1$25931@H*485,3U9!3% *
M!"Q:"@=//@@!9 H'4()$6&X*!5@[> H.6#M$63U%62U35%F""@58.XP*!#N6
M"@=1@D59H H(4X-35%FJ"@0LM H'3SX( ;X*!U""1%G("@58.](*&U@[36%I
M;B!,;V]P(%1O(&=E="!B;&]C:]P*!5@[Y@H86#M3=&]R92!$6" F($19(&9I
M<G-T\ H>6#MA<R!H96%D97)S(&]F('1H92!B=69F97(N^@H%6#L$"P<D/@@ 
M#@L'48)$6!@+#%! A4)51DQ/-B(+"B.%0E5&3$\L"PI1A4)51DQ/-@L'4CX(
M $ +!TB"1S%*"PHCA4)51DA)5 L*@D<Q48)$65X+#%! A4)51DQ/-F@+"B.%
M0E5&3$]R"PI1A4)51DQ/? L'4CX( (8+"4B$3$]/4) +"B.%0E5&2$F:"P58
M.Z0+$5@[3F]W(&1O(&QO;W!SK@L?6#M3964@97%U:79A;&5N="!"05-)0R!C
M;V1E+K@+!5@[P@L>A$Q/3U!1/@@ .SM&3U(@1$]73CTP(%1O($19S L=4(1$
M3U=..SM&3U(@04-23U-3/3 @5&\@1%C6"PM0AD%#4D]34^ +!R0^" #J"PB#
M4D50+/0+#%&'5$Q-14U,3_X+"T^&04-23U-3" P+4(9414U03$\2# Q1AU1,
M345-2$D<# =//@@ )@P+4(9414U02$DP# M1AD1)4D5#5#H,'U(^" $[.R Q
M($UE86YS(%!!4U1%+" P/4-/4%E$# I&A5!!4U1%3@P744"&5$5-4$Q/-CL[
M1V5T($)Y=&58# Q00(5"549,3S9B# DAA$-/4%EL#!2%4$%35$4@B5!!4U1%
M0EE4178,#X1#3U!9(X5"549,3X ,"E&%0E5&3$^*# =2/@@ E P'2()&,9X,
M"B.%0E5&2$FH# Z"1C$CAD%#4D]34[(,"U&&04-23U-3O P'4H)$6,8,"$2#
M4D50T P'43X( -H,"U"&04-23U-3Y P$+.X,#%&'5$Q-14U,3_@,"$^#0E!,
M @Q0AU1,345-3$\,#%&'5$Q-14U(218'3SX( " ,4(=43$U%34A)*@DCA$1/
M5TXT"5&$1$]73CX'4H)$64@(1(-215!2'#H[.T1O;F4L(%)%5%523B!43R!"
M05-)0RY<!5@[9@58.W F6#L@*BHJ($U!24X@4$%35$4@0DQ/0TL@4D]55$E.
M12 J*BIZ!5@[A 4/28X=AU=$5U!35$4W.SM'970@<&%R86UE=&5R<RZ8!@]%
M2:(2-SL[1V5T(%-T87)T(&]FK!A0AE-#4DY(23L[<V-R965N(%)!32ZV!#? 
M"U"&4T-23DQ/R@0WU!)0A5-46$A).SM3=&%R=%C>!#?H"E"%4U183$_R!#?\
M!#<&#A!0@U-463L[4W1A<G19$ X$-QH.&E"%0E5&2$D[.T)U9F9E<B!!9&1R
M97-S) X$-RX."E"%0E5&3$\X#@=1/@@!0@X44(9$25)%0U0[.S$]4$%35$5,
M#@58.U8.%5@[($-A;&-U;&%T92!43$U%36 .!5@[:@X+((943$-!3$-T#A,D
M/@@ .SM'970@1%@L($19?@X,44"%0E5&3$\VB X'4()$6)(."B.%0E5&3$^<
M#@I1A4)51DQ/I@X'4CX( + .!TB"2#&Z#@HCA4)51DA)Q X/@D@Q44"%0E5&
M3$\VS@X'4()$6=@."B.%0E5&3$_B#@I1A4)51DQ/[ X'4CX( /8.!TB"2#( 
M#PHCA4)51DA)"@\<@D@R48-04$([.TE&(#$@<&EX96PO0GET910/%U(^" $[
M.W1H96X@;F\@<VAI9G0N'@\F2(E#04Q#4TA)1E0[.V5L<V4@8V%L8W5L871E
M('-H:69T<RXH#P@A@T530S(/%HE#04Q#4TA)1E0CAU1,345-3$\\#QU1AU1,
M345-3$\[.TEN8W)E;65N="!43$U%348/!U(^" !0#PI(A4-/3E0Q6@\,(X=4
M3$U%34A)9 \%6#MN#QE8.T-A;&-U;&%T92!3:&EF="!P;G1R> \=6#L@/2!3
M5%@@+2 H*%-46"]04$(I*E!00BF"#P58.XP/&X5#3TY4,5&%4U183$\[.RA3
M5%@O4%!"*98/"E"%3$]604R@#PI1A5-46$A)J@\*4(5(259!3+0/"%&#4%!"
MO@\)((1$2593R \$+-(/%U&#4%!".SLH4U18+U!00BDJ4%!"W \)((1-54Q4
MY@\:.SL[(%-46"TH*%-46"]04$(I*E!00BGP#PI1A5-46$Q/^@\94X5,3U9!
M3#L[($]N;'D@;&\@8GET9000$#X[.R!R96QE=F%N="X.$!E1@U!00CL[1V5T
M(",@;V8@<VAI9G1S&! ;4CX("#L[9G)O;2!S:&EF="!T86)L97,N(A *2(5#
M0T-.,2P0#U&)4TA&5$%"3$4X.380"2&$0T-#14 0A4-#0TXQ4CX(!$H0"DB%
M0T-#3C-4$ ]1B5-(1E1!0DQ%-#E>$ DAA$-#0T5H$!6%0T-#3C-1B5-(1E1!
M0DQ%,CER$!^$0T-#15"&4TA)1E13.SM3=&]R92!S:&EF=',N?! >@T530R&$
M3$]/4#L[(%!U="!T;R!S8W)E96XNAA %6#N0$!]8.U-U8G)O=71I;F4@=&\@
M<'5T(&)Y=&5S(&ENFA B6#MC;W)R96-T('!O<VET:6]N('=I=&@@8V]R<F5C
M=*00%E@[;G5M8F5R(&]F('-H:69T<RZN$ 58.[@0$HE005-414)95$51@U!0
M0L(0&%(^" $[.R!)9B!N;W0@,2!0:7AE;,P0'$B'4%)/0T5%1#L[('!E<B!B
M>71E('1H96[6$!E10(5"549,3S8[.W-H:69T+"!E;'-EX! 84$"&5$5-4$Q/
M-CL[:G5S="!P=70NZA $.O00#X=04D]#145$43X( /X0&5"(5$5-4%-(1E0[
M.T-L96%R(%1E;7 ($0M1AE1%35!,3Q(14(A435!,3T-061P1"U&&5$5-4$A)
M)A$?4(A435!(24-063L[0V]P>2!414U03$\O2$D@)C 1'B*(5$U03$]#4%D[
M.V1E8W)E;65N="!B>2 Q+CH148A435!,3T-06401!U(^!O].$0E(A$M/3E18
M$2*(5$U02$E#4%EB$1F$2T].5"4^"  [.T1O(')E<75I<F5D;!$:44"%0E5&
M3$\V.SLC(&]F('-H:69T<RYV$1&%2T].5#$IAE-(24944X 1"$:#15A4BA$$
M+)01!54_GA%5B%1%35!32$94J!$$,[(1"B&%2T].5#&\$2"#15A44$"&5$5-
M4$Q/-CL[4'5T(&]N('-C<F5E;L81#U% B%1-4$Q/0U!9-M 1&$R(5$5-4%-(
M1E0[.T]2(&)Y=&4M,=H1#U! B%1-4$Q/0U!9-N01!#KN$058._@1%5@[(%!I
M>&5L<R!P97(@0GET90(2!5@[#!(\B%!)6%!"651%"P@!/0@!/0@!/0@$/0@(
M/0@$/0@(/0@$/0@(/0@"/0@"/0@"/0@!/0@!/0@(/0@$%A(%6#L@$A-8.T)Y
M=&5S('!E<B!,:6YE*A(%6#LT$CN'0EE415!,3@L(*#T(%#T(%#T("CT("CT(
M%#T(%#T(*#T(*#T(*#T(*#T(*#T(*#T(*#T(%#T(*#X2!5@[2!(D6#M486)L
M92!O9B!S:&EF=',@9F]R(#@@4%!"(&UO9&5S4A(%6#M<$BB)4TA&5$%"3$4X
M"P@(/0@'/0@&/0@%/0@$/0@#/0@"/0@!/0@ 9A(%6#MP$B18.U1A8FQE(&]F
M('-H:69T<R!F;W(@-"!04$(@;6]D97-Z$@58.X02&8E32$9404),130+" @]
M" 8]" 0]" *.$@58.Y@2)%@[5&%B;&4@;V8@<VAI9G1S(&9O<B R(%!00B!M
M;V1E<Z(2!5@[K!(3B5-(1E1!0DQ%,@L("#T(!+82!5@[P!(/6#LW-C<@0GET
M97,N'1T='1T='1T='1T='1T='1T='1T='1T='1T='1T='1T='1T='1T='1T=
M'1T='1T='1T='1T='1T='1T='1T='1T='1T='1T='1T='1T='1T='1T='1T=
,'1T='1T='1T='1T=
 
end