O p   @`! #@%')+-/1 3@5`7;=?A C@E`GIKMOQ S@U`W[]_a c@e`gikmoq s@u`wy{} @` @ ` @ ` @ ` @ ` ǀ ɠ @ ` ׀ ٠  @`@`!Aa   !Aa!!#A%a')+-/1!3A5a79;=?A!CAEaGIKMOQ!SAUaWY[]_/cAeagikmoq!sAuawy{}!Aa!Aa!Aa!Aa!Aaɡ!Aaׁ١!Aa/Aa " B b  !"!B!b!!!!!"/"#B"%b"'")"+"-"/#1"#3B#5b#7#9#;#=#?$A"$CB$Eb$G$I$K$M$O%Q"%SB%Ub%W%Y%[%_&/&cB&eb&g&i&k&m&o'q"'sB'ub'w'y'{'}'(/(B(b((((()")B)b)))))*"*B*b*****+"+B+b+++++,",B,b,ǂ,ɢ,,,-"-b-ׂ-٢---.".B.b...../"/B/b/////0#0C0c00 0 0 01#1c11112!#2#C2%c2'2)2+2-2/31#33C35c37933=3?4!  @`! #@%')+-/1 3@5`7;=?A C@E`GIKMOQ S@U`W[]_a c@e`gikmoq s@u`wy{} @` @ ` @ ` @ ` @ ` ǀ ɠ @ ` ׀ ٠  @`@`!Aa   !Aa!!#A%a')+-/1!3A5a79;=?A!CAEaGIKMOQ!SAUaWY[]_/cAeagikmoq!sAuawy{}!Aa!Aa!Aa!Aa!Aaɡ!Aaׁ١!Aa/Aa " B b  !"!B!b!!!!!"/"#B"%b"'")"+"-"/#1"#3B#5b#7#9#;#=#?$A"$CB$Eb$G$I$K$M$O%Q"%SB%Ub%W%Y%[%_&/&cB&eb&g&i&k&m&o'q"'sB'ub'w'y'{'}'(/(B(b((((()")B)b)))))*"*B*b*****+"+B+b+++++,",B,b,ǂ,ɢ,,,-"-b-ׂ-٢---.".B.b...../"/B/b/////0#0C0c00 0 0 01#1c11112!#2#C2%c2'2)2+2-2/31#33C35c37933=3?4_GFADEMO  MDSCROLL  MDMAPMAKER  MDJOYSTICK  MDANPIC1 PI1 a MD"}BALLPLR ANM a MD&BALLPLR MSK a MD(BALLPLR SEQ a MD0$BALLPLYRSPT a MD9}SPRITE_FPRG c MDY'C .  MD..  MDBALLPLR BAS k MDBALLPLR2PI1 k MD"}BALLPLR2SPT k MD"}b.  MD..  MDJOYSUBS O u MDJOYSUBS S u MD SCROLL PAS u MDWSCROLL PI1 u MD"}SCROLL PRG u MD(USCROLL SPT v MD>"}SPR5 O v MD^ SPR5 PAS v MDa .  MD..  MDBLOCK1 SPT MDh"}BLOCK2 SPT MD"}BLOCK3 SPT MD"}MAPMAKERPAS MDMAPMAKERPRG MDeSPR2 O MDSPR2 PAS MD] TEST MAP MD!`.  MD..  MDJOYSTICKDEF MD\ JOYSTICKI MD]~JOYSTICKPI1 MDa"}JOYSTICKRSC MD JOYSTICKRSD MDJOYSTK PAS MD)JOYSTK PRG MDtJOYSUBS O MDJOYSUBS S MD JOYTEST PI1 MD"}SPR4 O MD8PSPR4 PAS MD;;DwppwU33ss77w+ RR󛘛Y8p8p8p8p;;;;Rpppp{{{{Rppppûûûû{{{{Rppppûûûûyyyyy@@@@@@@@@@@@@@@@@@xxxx@@@@@@@@@@@@@@@@@_xxxx@@@@@@@@@@@@@@@@@_xxxx@@@@@@@@@@@@@@@@@_xxxx@@@@@@@@@@@@@@@@@_xxxx@@@@@@@@@@@@@@@@@_xxxx@@@@@@@@@@@@@@@@@_xxxx@@@@@@@@@@@@@@@@@_xxxx@@@@@@@@@@@@@@@@@_xxxx@@@@@@@@@@@@@@@@@@xxxx@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@xxxx@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@xxxx@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@xxxxy????y????II????II0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB1 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBCCCC  ????IBBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBCCCC  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBBBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB{{{{  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  ????I  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB1 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBCCCC<<<< xxxx|||| ????I BBBB EEEE@@@@ 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB CCCCϼ yyyyxxxx 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB BBBB AAAAD@D@D@D@ 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB{{{{ AAAA|||| 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  ????I  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB1 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBAAAA 9999@@@@ ????IAAAA EEEE@@@@ 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBAAAA EEEE 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBAAAA EEEE 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBByyyy 9999 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  ????I  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB1 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBxxxx    >>>>ssss ????IEEEE@@@@    ((((  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBQQQQyyyy    ȈȈȈȈ 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBQQQQ     0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBLLLL    gggg 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  ????I  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB1 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB9999 ssss ????I " " " "  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBWWWW #### 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB4444 """" 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB9999 rrrr 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  ????I  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB1 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB = = = =OOOO ????IJJJJ A A A APPPP 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBDDDD A A A ASSSS 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBJJJJ A A A A 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB = = = =OOOO 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  ????I  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB1 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB<<<<    r$r$r$r$ ????I@@@@    #%#%#%#% 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB@@@@    ϼϼϼϼ"""" 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB@@@@ (((("e"e"e"e 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB<<<<    ȦȦȦȦr$r$r$r$ 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  ????I  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB1 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB}}}}|||| 9999@@@@ ????IAAAA[[[[@@@@ @@@@ 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBByyyyxxxx @@@@ 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBAAAADQDQDQDQ@@@@     0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBAAAA4Q4Q4Q4Q|||| 9999@@@@ 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  ????I  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB1 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB""""r'r'r'r'>>>>    ȞȞȞȞπ ????I#h#h#h#h """" 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB""""  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB"("("("(  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBr(r(r(r(    ȼȼȼȼbbbb 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  ????I  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBp 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB """"ssss ????I   0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB   0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB   0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB pppp 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB   ????I  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB1 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB1 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB1 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBI????II0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBI0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBI0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBI0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBI????I   0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB AAAA 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  ????I  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  ????I  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB ????I 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBAAAAAAAA 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBaaaa 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB ????I 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBaaaa 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBAAAAAAAA 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB ????I 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  ????I  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  ????I  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB  0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB AAAA 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB 10000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB 1????I 10000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB 10000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBI0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBI0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBI????II0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBI0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBB@@@@@@@@@@@@ 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBDDDDHHHH8888AAAAyyyyHHHH 0000!!!!BBBB!!!!BBBB!!!!BBBB!!!!BBBBDDDDDDDDqqqqDDDDAAAAEEEEpppp ????I<<<<DDDDIIIIDDDDAAAAEEEEHHHH ????INNNNDDDD8888EEEEDDDD  3 xxxx9I'P        !"#2345678999999999<~~~???<xp8< <~~~?????ǀ?x88>p|p <~~~ <~~~?x <~~~w><|8{ <~~~??|<8p? <~~~wx88>p|p <~~~? <~~~x <~~~???<|8s <~~~??<p8<?p <~~~x|>ǀ <~~~?? <~~~?? <~~~??}x|><ca <~~~8???>x<p88p? <~~~?x|> <~~~`` <~~~? <~~~?}xx><cas < ???88800000????788000000????77788800000??????777788000000????????88??????88????????88000000??????777788880000????7778888800x????78888800x????88800000?????88000000????7??88800000??????77??8880000????????88000000???????88000000?????88000000????77???88000000??????7??88800000?????88888000?  !"#$%&'               B Q`dSfBUDP0s17wJ<<<<<<<<<<p ` b F8 F8 L2 F8 F8 b p l L0 X  X  0@ P 0@ X  X  l l l L4 L4 h 8H h L4 L4 l ;G ;G 3O 3O '_ G' '_ 3O 3O ;G   p0pp0@0`00`0@ 0`x(x|(x(`0  0@x(|(x(@ 0 ? 1 @|x(P|x( @ 1!@ pP pP@ 1`    p p<< 8@@ X@8 99 p k`7w`  p # x# g p /  ppp` @0@ @@ #\  0@8@g0H @0@@@@@<@8@@0  (@ @@ @@   0&,(@ @@6p    @@  X >>p~@@:*,p @  6``lD<?`@    @p @    >@?   @ x0@` @>?  @> `0@xp `` `ppxpp8`8ppp `808T`<<08@@)@!@80 `@# `@`@0 @@@@0@@' @8800 0Pp9  `` ?:hP  @ ?? xx `  =x<h` ``;00   `y ` @ d4pp`plp @p0hxx||~x\T048l6"0 <<  ><> @ 46pP / ;8(?/ pP?/@ c`b`8888```` c`b` <<<<A a``a```8888``@`` a``a```??ppppǀǀǀǀ??``ppppÀÀ``??>>??>> ??  ss000``  @@@  `                    8((: : : : : (($ #$ ' #10  10  1>  10  10  # / 0# 0/ 40'98  98  1>  98  98  40'0/ 818!88'98 !< !< !< 98 88'8!088 << <880008800008800000000q888888888888000888888088008888888888888888880 000088  0000000 0088880000 00088888800 00 000 00000000 00000000000000000000000000000 000000000000 00000000xxxxxxxx000088880000??xx??xx????????????????                              #&" 1 . '#* #8  <   #0 0 8   80 90 8  0 00 0'8 8 8 00 00 98 00 8"88 8'8 8 8 88 88 98 88 88888,0 <8088800008088008000< 00?0?0  ? 0888888888880888888888880088888Y888888888888808800000008800000000 0080000000000000000000888 000000000000000000000000 00000000000000000000000000000000000000000000000 000000000000 00000000000000000000??00????00??00??00??????????I<<<<b L2 p bX  P l X       L4 8H l L4   3O '_ ;G 3O  ;;80000```__  1`````@0@0@000 001@ 0000I I I`v ) B! i`464 D4)4"p @ 6 "0    8 |   0    ``  x0|||p|p  O0    xx``0    xx0008    @@~``````@@  @````p@  3?@ @ @ @ n>x p@@@@00`#|x< x@@@@x 0 # x8  x8!P88@@@@  P 8 8p 888     @@>.<,, @@000088888888????????B< ,x 6 <-0 3 @@@@?@??;;  ` ` ` p&p \.p0 p@p`ppppA _Bpppppp||^`7A o"h#8#8#8,Oc.N//Bg?<JNA BbBy8N NV?<NAN^NuNV?./. ?<6NAN^ _ONNV?<NNN^NuNV?.?. ?<NNN^ _ONNV?<NNN^NuNV?<%NNN^Nu/,HNV8A>-HN5BnP=n R?< BgBg?<HnHnHnhHnPHn8BgNN^,_ _TN/,HNV2A8-HN5?<BgBgBgHnHnHnbHnJHn2BgN=nD0.N^,_Nu/,HNV2AF-HN5=nJ=n L?<iBgBg?<HnHnHnbHnJHn2BgN=nd0.N^,_ _XN/,HNV&A-HN5A,BP1|}"Hn,Hn ?O$OpQ?<NZ3:h`CO$OpQ?<NZ3:h`CO$OpQ?<NZ3:h`CtO$OpQ?<NZ3:h`xC2O$OpQ?<NZ3:h`NCO$OpQ?<NZ3:h`$CO$OpQ?<NZ3:h`CtO$OpQ?<NZ3:h`C2O$OpQ?<NZ3:h`CO$OpQ?<NZ3:h`|CO$OpQ?<NZ3:h`RCjO$OpQ?<NZ3:h`(C*O$OpQ?<NZ3:h`CO$OpQ?<NZ3:h`CO$OpQ?<NZ3:h`CbO$OpQ?<NZ3:h`CO$OpQ?<NZ3:h`VCO$OpQ?<NZ3:h`,CO$OpQ?<NZ3:h`CHO$O"p!Q?<NZ3:h`CO$OpQ?<NZ3:h`CO$OpQ?<NZ3:h`CxO$OpQ?<NZ3:h`ZC6O$OpQ?<NZ3:h`0CO$OpQ?<NZ3:h`CO$O pQ?<NZ3:h`CdO$OpQ?<NZ3:h`C"O$OpQ?<NZ3:h`CO$OpQ?<NZ3:h`^CO$OpQ?<NZ3:h`4CVO$OpQ?<NZ3:h` CO$OpQ?<NZ3:h`CO$OpQ?<NZ3:h`@ @Nb@0;NlBpFtJ xN$|R(0Z,VN^,_ _TN[3][SETBLOCK FAILURE][ OK ][3][INVALID LOAD FORMAT][ OK ][3][INTERNAL ERROR][ OK ][3][RANGE ERROR][ OK ][3][NO MORE FILES][ OK ][3][INVALID DRIVE][ OK ][3][INVALID BLOCK ADDRESS][ OK ][3][NOT ENOUGH MEMORY][ OK ][3][ACCESS DENIED][ OK ][3][TOO MANY OPEN FILES][ OK ][3][PATH NOT FOUND][ OK ][3][FILE NOT FOUND][ OK ][3][INVALID FUNCTION NUMBER][ OK ][3][DISK CHANGE][ OK ][3][BAD SECTOR ON FORMAT][ OK ][3][UNKNOWN DEVICE][ OK ][3][MEDIA CHANGE][ OK ][3][WRITE PROTECTED][ OK ][3][GENERAL ERROR][ OK ][3][READ FAULT][ OK ][3][WRITE FAULT][ OK ][3][TOS ERROR # 9][ OK ][3][SECTOR NOT FOUND][ OK ][3][UNKNOWN MEDIA][ OK ][3][SEEK ERROR][ OK ][3][BAD REQUEST][ OK ][3][CRC ERROR][ OK ][3][UNKNOWN ERROR][ OK ][3][DRIVE NOT READY][ OK ][3][TOS ERROR # 1][ OK ][3][DISK ERROR # 11][ OK ][3][DISK ERROR # 10][ OK ][3][BAD FILENAME][ OK ][3][DISK ERROR # 8][ OK ][3][DISK ERROR # 7][ OK ][3][DISK ERROR # 6][ OK ][3][DISK ERROR # 5][ OK ][3][DISK ERROR # 4][ OK ][3][DISK ERROR # 3][ OK ][3][DISK ERROR # 2][ OK ][3][DISK ERROR # 1][ OK ]/,HNVA-HN5NR=@0.`V"n E`t"n E``"n E|`L"n Ef`8"n EP`$"n E:`"n E$`"n E`"n E`"n E`"n E`"n E`"n E`"n E`p"n Et`\"n E^`H"n Eh`4 @b@0;N&:NbvN^,_ _XNP:O:N:M:L:K:J:I:H:G:F:E:D:C:B:A:/,HNVA|-HN5p. =@0.rAAfp=@0.raAfp=@0.rBAfp=@0.rbAfp=@0.rCAfp=@0.rcAfp=@0.rDAfp=@0.rdAfp=@0.rEAfp=@0.reAfp=@0.rFAfp=@0.rfAfp=@0.rGAfp=@0.rgAfp=@0.rHAfp=@0.rhAfp=@0.rIAfp =@0.riAfp =@0.rJAfp =@0.rjAfp =@0.rKAfp =@0.rkAfp =@0.rLAfp =@0.rlAfp =@0.rMAfp =@0.rmAfp =@0.rNAfp=@0.rnAfp=@0.rOAfp=@0.roAfp=@0.rPAfp=@0.rpAfp=@Hn?.N8 .".//N5" .//N5 -@0.^` .2<Hl Bn`p=@` .ΰl Bn`p=@`b .2<Hl Bn`p=@`@ .2< Hl Bn`p=@`S@ @b@0;Nf0.|r|Af0BnC>O$O0p/Q?<NZ3:h`p=@0.N^,_ _OTN[3][ |THIS DISK DOES NOT|HAVE ENOUGH R00M][ OK ]/,HNVDAT-HN5AFBP1|BgN7 HnFHn ?C*E40<$Q3ACEA0<$Qp3Jj`BgN?.NBgNHn|N&~N^,_Nu\*.ANM/,HNVA>-HN5A.BP1| N.HnNC.EfN3PHn??.HnN2p.rAf ?<0??<?.0.@AHp0.@AHp0.@AHpNtRn`=n=n 0.no=n =n0.nR@?N*XA`0 ?<?.HnHnHnN?<?.HnHnHnN0.n?N*XAf0 0.n?N*XAl0 0.n?N*XAr0 Af]"O2"A`]"O2"N,Ax0 Al]"O2"A`]"O2"N,A~0 Ar]"O2"A`]"O2"N,A0 BgN*XAZ0 =n0.S@=@R0.nRn<0.AZ]"O2"Ax]"O2"N+?N*LN-AT0 0.@AT]"O2"N*2A10.AZ]"O2"A~]"O2"N+?N*LN-AT0 0.@AT]"O2"N*2A10.AZ]"O2"A]"O2"N+?N*LN-AT0 0.@AT]"O2"N*2A1AZ]"O2"p?N*XN-AZ0 Rn`Bn nn0.@A20JAj0.@ABp0.@A20JAj0.@ABp0.@A20JAj0.@ABp0.@A20p@o0.@rA10.@A20p@o0.@rA10.@A20p@o0.@rA1?<?.0.@AHp0.@AHp0.@AHpNRn`N^,_ _XN/,HNV A -HN5Bn Bn Bn nnP?<?.HnHnHnNn0.@AN10.@A10.@An1Rn`?<?9KHnHnHnNNNפNDp3J\?<CBgBg?<#?<N-@/.?<Bg?<?<?<?<?<0<p?NJ=@/.?<Bg?<?<?<?<?<0<pR@?NJ=@/.?<Bg?<?<?<?<?<0<pT@?NJ=@/.?<Bg?<?<?<?<?<0<pV@?NJ=@/.?<Bg?< ?<?<?<?<0<pX@?NJ=@/.?<Bg?< ?<?<?<?<0<pZ@?NJ=@/.?<Bg?<?<?<?<?<0<p\@?NJ=@/.?<Bg?<?<?<?<?<0<p^@?NJ=@/.?<Bg?<?<?<?<?<0<pP@?NJ=@/.?<Bg?<?<?<?<?<0<p@ ?NJ=@ /.?<Bg?<?<?<?<?<0<p@ ?NJ=@"/.?<Bg?<?<?<?<?<0<p@ ?NJ=@$/.?<Bg?<?<?<?<?<0<p@ ?NJ=@&/.?<Bg?<?<?<?<?<0<p@ ?NJ=@(/.?<Bg?<?<?<?<?<0<p@?NJ=@*/.?<Bg?< ?<?<?<?<0<p@?NJ=@,/.?<prA??<?<?<?<?/.?<prA??<?<?<?<?/.0.@A?0Bg?<N=n?<?.HnHnHnN09JV2.AApf>/.0.@A?0Bg?<N=n?<?.HnHnHnN09JV2.AAΰpf>/.0.@A?0Bg?<N=n?<?.HnHnHnN\Rn`/.BgNp3JV09JVyJXW09JVnWÄCBd/.N\/.N 09JVnf^Bn nnP0.@AN=p0.@A=p0.@An=p?<?.HnHnHnNRn`NN^,_NuOKCANCELBLUEGREENREDVIEWBLENDSWAP/,HNVA-HN5p=@NNNDp=@?< BgBg?<?<N-@/.?<Bg?<?<?<?<Bg?<NJ=@/.?.CO$OpQ?.?<N/.?<Bg?<?<?<?<Bg?<NJ=@/.?.CO$OpQ?.?<N/.?<Bg?<?<?<?<Bg?<NJ=@/.?.C.O$OpQ?.?<N/.?<prA??<?<?<?<Bg?<NJ=@/.?.CO$OpQ?.?<N/.?<prA??<?< ?<?<Bg?<NJ=@/.?.CVO$OpQ?.?<N/.?<prA??<?< ?<?<Bg?<NJ=@/.?.CO$OpQ?.?<N/.?<prA??<?< ?<?<Bg?<NJ=@/.?.CO$OpQ?.?<N/.N/.BgN=@p=@ nn$0.2.AApf=nRn`/.N\/.N N0.N^,_NuCANCELFILL ALLFLOOD FILL 8-WAYFLOOD FILL 4-WAYarea to be filled.and click mouse inChoose type of FILL/,HNVA-HN5p=@NNLNDp=@?< BgBg?<?<N-@/.?<Bg?<?<?<?<Bg?<NJ=@/.?.CO$OpQ?.?<N/.?<prA??<?<?<?<Bg?<NJ=@/.?.CO$OpQ?.?<N/.?<prA??<?<?<?<Bg?<NJ=@/.?.CO$OpQ?.?<N/.?<prA??<?<?<?<Bg?<NJ=@/.?.C:O$OpQ?.?<N/.?<prA??<?< ?<?<Bg?<NJ=@/.?.CO$OpQ?.?<N/.?<prA??<?< ?<?<Bg?<NJ=@/.?.CbO$OpQ?.?<N/.?<prA??<?< ?<?<Bg?<NJ=@/.?.CO$OpQ?.?<N/.?<prA??<?<?<?<Bg?<NJ=@/.?.CO$OpQ?.?<N/.N/.BgN=@p=@ nn$0.2.AApf=nRn`/.N\/.N N0.N^,_NuCANCELSAVE ANIMATION FILESAVE PALLET FILESAVE SPRITE FILELOAD ANIMATION FILELOAD PALLET FILELOAD SPRITE FILEFILES/,HNVA-HN5BgNp=@p=@CnEpQp@p@p@p@?<BgBg?<&?<N#Ix/9Ix?<Bg?<?<?<$?<Bg?<NJ3JZ/9Ix?9JZAO"Op?"Q?.?<N/9Ix?<Bg?<?<?<$?<Bg?<NJ3JZ/9Ix?9JZCO$OpQ?.?<N/9Ix?<Bg?<?<?<$?<Bg?<NJ3JZ/9Ix?9JZC O$OpQ?.?<N/9Ix?<Bg?<?<?<$?<Bg?<NJ3JZ/9Ix?9JZCO$OpQ?.?<N/9Ix?<Bg?<?<?<$?<Bg?<NJ3JZ/9Ix?9JZC&O$OpQ?.?<NCEpQ0<@/9Ix?<Bg?<?<?<$?<Bg?<NJ3JZ/9Ix?9JZAO"Op?"Q?.?<N/9Ix?<Bg?<?< ?<$?<Bg?<NJ3JZ/9Ix?9JZC6O$O p Q?.?<N/9Ix?<Bg?<?< ?<$?<Bg?<NJ3JZ/9Ix?9JZCO$OpQ?.?<N/9Ix?<Bg?<?< ?<$?<Bg?<NJ3JZ/9Ix?9JZCRO$OpQ?.?<N/9Ix?<Bg?<?<?<$?<Bg?<NJ3JZ/9Ix?9JZCO$OpQ?.?<NCEpQ0<@/9Ix?<Bg?<?<?<$?<Bg?<NJ3JZ/9Ix?9JZAO"Op?"Q?.?<N/9Ix?<Bg?<?<?<$?<Bg?<NJ3JZ/9Ix?9JZCO$OpQ?.?<N/9Ix?<prArA??<?<?<?<?<?<NJ3JX/9Ix?9JXChO$O?.?<N/9IxN/9IxBgN3JV/9IxN\/9IxN NBgNN^,_NuOKUsed by permission of OSS.Copyright 1986 OSS & CCDPortions of this programO.S.S Personal PascalProgram Writen inVersion 1.0Copyright 1986Chatsworth Ca. 9131121125 Chatsworth st.Future Software SystemsBrought to you by ST SPRITE FACTORY /,HNVA-HN5NCEpQCvEpQC`E?<BgBg?<?<N-@/.?<Bg?<?<BgBgBgBgNJ=@/.?.AO"Op?"Q?<BgN/.?<Bg?<?<?<?<Bg?<NJ=@/.?.AO"Op?"QAO"Op?"QCO$O?<?<N/.?<prArA??<?<?<?<?<?<NJ=@/.?.C:O$O?<?<N/.?<prA??<?<?<?<?<?<NJ=@/.?.CO$OpQ?<?<N/.N/.?.N=@/.N\/.?.HnN0.nW0.nWÄCBdFp.rAnp0C"n / AO$Op?$QN"_2p=@`Bn/.N N0.N^,_ _XNCancelOK99# 0 to 15....: __HOW FAR TO SHRINK/,HNVA-HN5NCEpQCEpQC|E?<BgBg?<?< N-@/.?<Bg?<?<BgBgBgBgNJ=@/.?.AO"Op?"Q?<BgN/.?<Bg?<?<?<?<Bg?<NJ=@/.?.AO"Op?"QAO"Op?"QCO$O?<?<N/.?<prA??<?<?<?<?<?<NJ=@/.?.CXO$O?<?<N/.?<prA??<?<?<?<?<?<NJ=@/.?.CO$OpQ?<?<N/.?<prArA??<?<?<?<?<?<NJ=@/.?.CO$O?<?<N/.?<prA??<?<?<?<?<?<NJ=@/.?.C0O$OpQ?<?<N/.?.pr A?BgN/.?.?< BgN/.N/.?.N=@/.N\/.?.HnN0.nW0.nWÄCBdpp.rAnp0C"n/ AO$Op?$QN "_2p=@/.?.NrAJ@g"n p2`"n BQ`Bn/.N N 0.N^,_ _PNCancelOKRIGHTLEFT99# 1 to 90....: __HOW FAR TO ROTATE/,HNVAF-HN5NCpEpQCJEpQC$EpQCE?<BgBg?<?< N-@/.?<Bg?<?<BgBgBgBgNJ=@/.?.AO"Op?"Q?<BgN/.?<Bg?<?<?<?<Bg?<NJ=@/.?.AO"Op?"QAO"Op?"QCDO$O?<?<N/.?<Bg?<?<?<?<Bg?<NJ=@/.?.AO"Op?"QAO"Op?"QCO$O?<?<N/.?<prArA??<?<?<?<?<?<NJ=@/.?.CvO$O?<?<N/.?<prA??<?<?<?<?<?<NJ=@/.?.CO$OpQ?<?<N/.N/.?.N=@/.N\/.?.HnN/.?.HnN0.nf Bn`|p.rAnp0C"n/ AO$Op?$QN|"_2p.rAnp0C"n / AO$Op?$QNB"_2p=@/.N N0.N^,_ _PNCancelOK99Y= 0 to 15...: __X= 0 to 15...: __HOW FAR TO SHRINK/,HNVA-HN5NNCEpQCEpQC~E?<BgBg?<?<N-@/.?<Bg?<?<BgBgBgBgNJ=@/.?.AO"Op?"Q?<BgN/.?<Bg?<?<?<?<Bg?<NJ=@/.?.AO"Op?"QAO"Op?"QCO$O?<?<N/.?<prArA??<?<?<?<?<?<NJ=@/.?.CXO$O?<?<N/.?<prA??<?<?<?<?<?<NJ=@/.?.CO$OpQ?<?<N/.N/.?.N=@/.N\/.?.HnN"n p20.nW0.nWÄCBd\p.rAnp0C"n / AO$Op?$QNf"_2"n 0rAl "n p2p=@`Bn/.N N0.N^,_ _XNCancelOK99# 1 to 99....: __ENTER # OF VBLANKS/,HNVAP-HN5CHO$O2p1Q?<NZ3:h09:hrAf p3J^BgNN^,_Nu[1][ |ARE YOU SURE YOU|WANT TO QUIT ?][ YES | NO ]/,HNVA-HN5BnBnp=@p=@Bn nnBn n n|0.2. A=@0.@Ak10.@Ak10.@Ak10.@Ak10.@ =@0.@ =@Rn`~0.@ =@0.@ =@Bnp=@Rn`FN^,_Nu/,HNVA2-HN509Jh@eAmO"Op?"QN8=@HyIDHyI?<?<0.@Ak?00.@Ak?00<R@@ ?0<R@@l?NCRjELj0<?$QCKES0<$QNHyIDHyI?<?<?<?<0<R@@ ?0<R@@l?NHyIDHyI?< ?<%?< ?<%0<R@@?0<R@@?NNDN^,_Nu/,HNVA-HN5?<N?.N0. `x?<"?<p0@R@?p@R@?N 0`?<2?<p@@R@?p@R@?N 0`^?<B?<pP@R@?p@R@?N 0`8?<R?<p`@R@?p@R@?N 0`?<b?<pp@R@?p@R@?N 0`?<r?<0<@R@?p@R@?N 0`?<?<0<@~R@?p@R@?N 0`?<?<0<@nR@?p@R@?N 0`t?<?<0<@^R@?p@R@?N 0`L?<?<0<@NR@?p@R@?N 0`$?<?<0<@>R@?p@R@?N 0`?<?<0<@.R@?p@R@?N 0`?<?<0<@R@?p@R@?N 0`?<?<0<@R@?p@R@?N 0`?<?<0<@R@?p@R@?N 0`\?<?<0< @R@?p@R@?N 0`4 @b,@0;Nx6^&NvN^,_ _XN/,HNVA-HN5NNBn nn80.@AK20Ad Bg?.N0.@AKBpRn`0. @rAK1?<?. N3 KNHyIDHyI0?<"?<?<"?<0< R@@?pR@@?NND"y:bEXj0<?$QNDN^,_ _TN/,HNVA-HN5?<N?. Np?<NN0.`0<@?p&\@?0. AJC IO$Op?$QN ^`0<@ ?p0\@?0. AJC IO$Op?$QN ^`l0<@?p:\@?0. AJC IO$Op?$QN ^`00<P@?pD\@?0. AJC IO$Op?$QN ^`0<@?pN\@?0. AJC IO$Op?$QN ^`0<@?pX\@?0. AJC IO$Op?$QN ^`~0<^@?pb\@?0. AJC IO$Op?$QN ^`D0<@ ?pl\@?0. AJC IO$Op?$QN ^`0<\@?pv\@?0. AJC IO$Op?$QN ^`0<@?0<\@?0. AJC IO$Op?$QN ^`0<@?p&\@?0. AJC IO$Op?$QN ^`T0<@ ?p0\@?0. AJC IO$Op?$QN ^`0<@?p:\@?0. AJC IO$Op?$QN ^`0<^@?pD\@?0. AJC IO$Op?$QN ^`0<@?pN\@?0. AJC IO$Op?$QN ^`f0<V@?pX\@?0. AJC IO$Op?$QN ^`,0<^@?pb\@?0. AJC IO$Op?$QN ^`0<@?pl\@?0. AJC IO$Op?$QN ^`0<^@?pv\@?0. AJC IO$Op?$QN ^`|0<@?0<\@?0. AJC IO$Op?$QN ^`>S@ @b4@0;NF4p"\N8tNDN^,_ _XN/,HNVA-HN5?. N?<N?<NN0.`&?<?<&0<R@@B?p.R@@?N 0`:?<?<00<R@@B?p8R@@?N 0`?<?<:0<R@@B?pBR@@?N 0`?<?<D0<R@@B?pLR@@?N 0`?<?<N0<R@@B?pVR@@?N 0`?<?<X0<R@@B?p`R@@?N 0`r?<?<b0<R@@B?pjR@@?N 0`J?<?<l0<R@@B?ptR@@?N 0`"?<?<v0<R@@B?p~R@@?N 0`?<?<0<R@@B?0<R@@?N 0`?<?<&0<+R@@ ?p.R@@?N 0`?<?<00<+R@@ ?p8R@@?N 0`?<?<:0<+R@@ ?pBR@@?N 0`X?<?<D0<+R@@ ?pLR@@?N 0`0?<?<N0<+R@@ ?pVR@@?N 0`?<?<X0<+R@@ ?p`R@@?N 0`?<?<b0<+R@@ ?pjR@@?N 0`?<?<l0<+R@@ ?ptR@@?N 0`?<?<v0<+R@@ ?p~R@@?N 0`h?<?<0<+R@@ ?0<R@@?N 0`>S@ @b4@0;N@h0Z"JrNDN^,_ _XN/,HNVA-HN50. @AJl20Aep=@ nnD0.@AJl20Ad(?.BgN?.?<N0.@AJlBpRn`?. ?<N?. BgN0. @rAJl1ByJdByJbNHyIDHyI0?<?<&?<?<&0<+R@@B?0<R@@?NNDN^,_ _TN/,HNVAx-HN5?. BgN.?. ?<N0. @AJlBpNHyIDHyI0?<?<&?<?<&0<+R@@B?0<R@@?NNDN^,_ _TN/,HNVA-HN5NBgN?<N?<N?<?<0<R@@7?0<R@@_?N 0?<N\?<Np?<N0<V@?0<P@?AmO"Op?"QN ^HyIDHyI0?<?<?<?<0<R@@7?0<R@@_?NNDN^,_Nu/,HNVAv-HN5pn=@0.@2. AAAK1K0.@ ?0. @%??<?<N 00.@?0. @?N N^,_ _XN/,HNVA-HN5pn =@0.@2.AAAK1K0.@ ?0.@%??<?<N 00.@?0.@?N 09Jd@d?.?.NN^,_ _XN/,HNVA-HN5N?<N?9KN?9KN?<N09JP@rH=@09JN@rH=@09Jd@d?.?.NN09Jb@d?.?.N0.@2.AAAK1K0.@ ?0.@%??<?<N 00.@?0.@?N NDN^,_Nu/,HNVA-HN5Bn nnBn nn0.@2.AAAK200.@4.BBA pg~0.@2.AAA ?0N0.@2.AAA ?0N0.@ ?0.@%??<?<N 00.@?0.@?N Rn`BRn`,C EK0<$QN^,_ _ON/,HNVA-HN5N*Bn nnZp=@Bn nn@0.@2.AA2.A4.BBAK40A10.S@=@Rn`Rn`AO"O0<"QNZN^,_Nu/,HNVAf-HN5N0.ApA]"O2"A0 0.At`A]"O2"A0 0. rAf$0.Ar>A]"O2"A0 Bn nn2Bn nn0.@2.AAABpRn`Rn`Bn nnBn nn0.@?N*XA0 0.@?N*XA0 A]"O2"A]"O2"N+A]"O2"A]"O2"N+N-A0 A]"O2"A]"O2"N+A]"O2"A]"O2"N+N-A0 A]"O2"p?N*XN-A0 A]"O2"p?N*XN-A0 A]"O2"N*0=@A]"O2"N*0=@0.rAop=@0.J@jBn0.rAop=@0.J@jBn0.@2.AA2.A4.BBAK40A1Rn`FRn`0Bn nnp=@ nn0.@2.AAA20JAfp0.R@@2.AAA20JAV0.S@@2.AAA20JAVCBd00.@2.AA2.RAA4.BBA40A1Rn`fRn`NAO"O0<"QNN^,_ _XN/,HNVA-HN5NBn nnZp=@Bn nn@0.@2.AA2.A4.BBAK40A10.S@=@Rn`Rn`AO"O0<"QNBN^,_Nu/,HNVA-HN5Bn nnBn nn0.@2.AAAK200.@4.BBA pgH0.@2.AAA ?0N0.@ ?0.@%??<?<N 0Rn`xRn`bC EK0<$QN^,_ _ON/,HNVA-HN5Bn nnPBn nn<0.@?0.@?NT=@0.@2.AAA1Rn`Rn`AO"O0<"QNN^,_Nu/,HNVA-HN5N Bn nnZp=@Bn nn@0.@2.AA2.A4.BBAK40A10.S@=@Rn`Rn`AO"O0<"QN:N^,_Nu/,HNVA-HN5NlBn nnZp=@Bn nn@0.@2.AA2.A4.BBAK40A10.S@=@Rn`Rn`AO"O0<"QNN^,_Nu/,HNVA -HN50.@2.AAAK20n f0.@2.AAAK1K0.@ ?0.@%??<?<N 00.@?0.@?N 0.rAm?.0.S@??. NL0.rAn?.0.R@??. N,0.rAm0.S@??.?. N 0.rAn0.R@??.?. NN^,_ _\N/,HNVA-HN50.@2.AAAK20n f0.@2.AAAK1K0.@ ?0.@%??<?<N 00.@?0.@?N 0.rAm?.0.S@??. NL0.rAn?.0.R@??. N,0.rAm0.S@??.?. N 0.rAn0.R@??.?. N0.rA\0.rA\CBd0.S@?0.S@??. N0.rA_0.rA_CBd0.R@?0.R@??. N0.rA_0.rA\CBd0.S@?0.R@??. NP0.rA\0.rA_CBd0.R@?0.S@??. NN^,_ _\N/,HNVA-HN5Bn nnBn nn0.@2.AAAK20n fb0.@2.AAAK1K0.@ ?0.@%??<?<N 00.@?0.@?N Rn`pRn`ZN^,_ _TN/,HNVA-HN5CO$O-p,Q?<NZ3:h09:hrAfxNDByoCtEmNN(HyIHyID?9k?9k?<?<0<R@@ ?0<R@@l?NNNVND`NN^,_Nu00[2][ |Where to put file ?][ FILE 1 | FILE 2 ]/,HNVA-HN5CO$O.p-Q?<NZ=@NBnprAr A??<?<?<p/?9Jf?< ?<%0<@R@?0<@R@?BgBgBgBgBgHyIXHyJLHy:hHy:hHyJPHyJNHy:hN=@0.rAJ@g09JfF@3Jf0.r AJ@V0.rAJ@WCBdN=yJP=yJN0.rAJ@g0.|]0.r A^C0.|]C0.r%A^CBd?<N?9KN09JP@rH=@09JN@rH=@0.@2.AAAK1KN0.@ ?0.@%??<?<N 0NDp=@0.|r|AfF09JP@rH=@09JN@rH=@BnprAr A??<?<?<p/?9Jf?< ?<%0<@R@?0<@R@?BgBgBgBgBgHyIXHyJLHy:hHy:hHyJPHyJNHy:hN=@0.rAJ@g09JfF@3Jf0.r AJ@V0.rAJ@WCBdN0=yJP=yJN0.rAJ@g<0.|]0.r A^C0.|]C0.r%A^CBdp=@0.|r|Af09JP@rH=@09JN@rH=@?<?<0<@ R@?0<@lR@?N<0.nJ@jD@=@0.nJ@jD@=@0.@=@0.@=@?<N?9KN?9KN?<NN0.`6?.?.?.?.N`4?.?.?.?.N`S@ @b@0;NN T=@?.HnHnHnHnN?.?.?.?.NRn`(NAO"O0<"QNۺNDN^,_ _XN/,HNVA>-HN5NNNDHnN=@0.@d?.?.NN^,_Nu/,HNVAB-HN5NNȎNDHnHnNt=@0.@d?.?.NdN^,_Nu/,HNVAp-HN5Bn0.J@Z0. J@ZC0.rA_C0. rA_CBdByo0.r A\0. J@ZC0.r?A_C0. rA_CBd p3o0.r@A\0. J@ZC0.r_A_C0. rA_CBd p3o0.r`A\0. J@ZC0.rA_C0. rA_CBd p3o0.|\0. J@ZC0.|_C0. rA_CBd p3o0.|\0. J@ZC0.|_C0. rA_CBd p3o0.|\0. J@ZC0.|_C0. rA_CBd p3o0.|\0. J@ZC0.|_C0. rA_CBd p3o0.|\0. J@ZC0.|_C0. rA_CBd p3o0.|\0. J@ZC0.|?_C0. rA_CBd p 3o0.J@Z0. r A\C0.rA_C0. r?A_CBd p 3o0.r A\0. r A\C0.r?A_C0. r?A_CBd p 3o0.r@A\0. r A\C0.r_A_C0. r?A_CBd p 3o0.r`A\0. r A\C0.rA_C0. r?A_CBd p 3o0.|\0. r A\C0.|_C0. r?A_CBd p3o0.|\0. r A\C0.|_C0. r?A_CBd p3o0.|\0. r A\C0.|_C0. r?A_CBd p3o0.|\0. r A\C0.|_C0. r?A_CBd p3o0.|\0. r A\C0.|_C0. r?A_CBd p3o0.|\0. r A\C0.|?_C0. r?A_CBd p3o0.J@Z0. r@A\C0.rA_C0. r_A_CBd p3o0.r A\0. r@A\C0.r?A_C0. r_A_CBd p3o0.r@A\0. r@A\C0.r_A_C0. r_A_CBd p3o0.r`A\0. r@A\C0.rA_C0. r_A_CBd p3o0.|\0. r@A\C0.|_C0. r_A_CBd p3o0.|\0. r@A\C0.|_C0. r_A_CBd p3o0.|\0. r@A\C0.|_C0. r_A_CBd p3o0.|\0. r@A\C0.|_C0. r_A_CBd p3o0.|\0. r@A\C0.|_C0. r_A_CBd p3o0.|\0. r@A\C0.|?_C0. r_A_CBd p3o0.J@Z0. r`A\C0.rA_C0. rA_CBd p3o0.r A\0. r`A\C0.r?A_C0. rA_CBd p3o0.r@A\0. r`A\C0.r_A_C0. rA_CBd p 3o0.r`A\0. r`A\C0.rA_C0. rA_CBd p!3o0.|\0. r`A\C0.|_C0. rA_CBd p"3o0.|\0. r`A\C0.|_C0. rA_CBd p#3o0.|\0. r`A\C0.|_C0. rA_CBd p$3o0.|\0. r`A\C0.|_C0. rA_CBd p%3o0.|\0. r`A\C0.|_C0. rA_CBd p&3o0.|\0. r`A\C0.|?_C0. rA_CBd p'3o0.J@Z0. |\C0.rA_C0. |_CBd p(3o0.r A\0. |\C0.r?A_C0. |_CBd p)3o0.r@A\0. |\C0.r_A_C0. |_CBd p*3o0.r`A\0. |\C0.rA_C0. |_CBd p+3o0.|\0. |\C0.|_C0. |_CBd p,3o0.|\0. |\C0.|_C0. |_CBd p-3o0.|\0. |\C0.|_C0. |_CBd p.3o0.|\0. |\C0.|_C0. |_CBd p/3o0.|\0. |\C0.|_C0. |_CBd p03o0.|\0. |\C0.|?_C0. |_CBd p13o0.J@Z0. |\C0.rA_C0. |_CBd p23o0.r A\0. |\C0.r?A_C0. |_CBd p33o0.r@A\0. |\C0.r_A_C0. |_CBd p43o0.r`A\0. |\C0.rA_C0. |_CBd p53o0.|\0. |\C0.|_C0. |_CBd p63o0.|\0. |\C0.|_C0. |_CBd p73o0.|\0. |\C0.|_C0. |_CBd p83o0.|\0. |\C0.|_C0. |_CBd p93o0.|\0. |\C0.|_C0. |_CBd p:3o0.|\0. |\C0.|?_C0. |_CBd p;3o0.J@Z0. |\C0.rPA_C0. |_CBdp=@0.|\0. |\C0.|?_C0. |_CBdp=@0.N^,_ _XN/,HNVA-HN5?<N?<N?<NBgBg?<?BgN Bg?<AO"Op?"QN ^`S@ @b@0;NND?<?<?<?<p/BgBgBgBgBgBgBgBgBgBgHyIXHyJLHy:hHy:hHnHnHy:hN=@?.?.N2=@=nN"y:bEXj0<?"QND0.N^,_ _TNANIMATE | --CLICK ON NEXT FRAME-- | CANCEL --CLICK ON FRAME TO COPY-- --CLICK ON FRAME TO EDIT-- /,HNVAv-HN5ByJj=yoByAp=@CxEpQC`EC2EpQN=yJhp3JhNJ3JhNrNDN"y:bERj0<?"QND?9AHnNp.rAl ?<0?CEp?$Q`DCEp?$Q`0CEp?$Q`S@ @b@0;NBg?<AO"Op?"QN ^ND?<?<?<?<p/BgBgBgBgBgBgBgBgBgBgHyIXHyJLHy:hHy:hHyJFHyJDHy:hN3JR?9JF?9JDN=@0.J@fR0.`,=yo`:=yo`."n 2oBn`S@ @b@0;N`Bn0.R@=@0.|r|Af0.J@f80.nm"n2"n2`"n2"n2p=@N"y:bEXj0<?"QND0.J@gBn3o0.N^,_ _O NCANCEL | CLICK ON FILE 1 DESTINATION | CANCELCANCEL | CLICK ON FILE 2 ENDING FRAME | CANCELCANCEL | CLICK ON FILE 2 STARTING FRAME | CANCEL/,HNVAR-HN5?9oHymNp9mrAn"?<0?=yo?<N=@=yo3oNHyIHyID0.@Ak?00.@Ak?0?<?<0<R@@ ?0<R@@l?NN ND?< NN^,_Nu/,HNVAN-HN5?<NHnHnN=@N0.@d?.?.N?<NXNDN^,_Nu/,HNVAh-HN5?<N,CXO$O&p%Q?<NZ3:hN09:hrAf N`Nd?<NNDN^,_Nu[1][WHICH DIRECTION ?][ HORIZ | VERT ]/,HNVA"-HN5?<NN-2?<NN^,_Nu/,HNVA -HN5?<N\N`?<NRN^,_Nu/,HNVA-HN5?<N,N=yJhp3JhN3JhNrCO$O.p-Q?<NZ3:h09:h`6"y:bERj0<?"Q`4"y:bEj0<?"Q`S@ @b@0;NN09:h`NBg?<C O$O&p%QN ^`@Bg?<CO$O&p%QN ^`S@ @b@0;NprA??<?<?<p/BgBgBgBgBgBgBgBgBgBgHyIXHyJLHy:hHy:hHy:hHy:hHy:hN=@"y:bEXj0<?"QND?<NN^,_Nu --VIEWING FILE TWO-- --VIEWING FILE ONE-- [2][ |Which file to view ?][ FILE 1 | FILE 2 ]/,HNVA-HN5?<N09Jh@eNNNDHnHnHnN=@0.r;Ao*BnCO$O!p Q?<NZ=@0.no*BnCO$O7p6Q?<NZ=@0.r;Ao*BnCZO$O!p Q?<NZ=@0.@d"=n=n0.nn0.r;AnvHyHHyI0.@Ak?00.@Ak?00.@Ak?00.@Ak?00<R@@ ?0<R@@l?N0.R@=@Rn`nAmO"Op?"QN=@NHyIHyID0.@Ak?00.@Ak?0?<?<0<R@@ ?0<R@@l?NNTND?<NN^,_Nu[3][ |Invalid Position2][ OOPS! ][3][ |Start must be less|than or equal|to end][ OOPS! ][3][ |Invalid Position1][ OOPS! ]/,HNVA -HN5?<NVN?<NLN^,_Nu/,HNVA-HN509Jh@ddNCKE[0<$QCnEmp?$QAcO"O0<"QNNbByJhNND`tCKEc0<$QCmEnp?$QCLEmNA[O"O0<"QNNp3JhNVNDN^,_NuPB/,HNVA-HN5N.NBn nn&0.@2.AAK40A1Rn`Bn nnPp=@ nn:0.@2.SAAA2.A4.BBAK40AK1Rn`Rn`HyIHyID?< p%Z@??< ?<%0<R@@?0<R@@[@?NNHyIHyID?<0<R@??<?<0<R@@ ?0<R@@lS@?NBn nn0.@AK200.@Apg0.@A?0N0.@A?0N0.@ ?p@%??<?<N 00.@?0<@?N 0.@2.AA40AK1Rn`FNRNDN^,_Nu/,HNVA-HN5N,NBn nn&0.@2.AAK40A1Rn`p=@ nmNBn nn:0.@2.RAAA2.A4.BBAK40AK1Rn`Sn`HyIHyID?< ?<%?< p%Z@?0<R@@?0<R@@[@?NNHyIHyID?<?<?<0<R@?0<R@@ ?0<R@@lS@?NBn nn0.@AK200.@Apg|0.@A?0N0.@A?0N0.@ ??<%?<?<N 00.@??<N 0.@2.AA40AK1Rn`TN^NDN^,_Nu/,HNVA-HN5N8NBn nn&0.@2.AAK40A1Rn`p=@ nnNBn nn:0.S@@2.AA2.A4.BBAK40AK1Rn`Rn`HyIHyIDp Z@??<%?< ?<%0<R@@[@?0<R@@?NNHyIHyID0<R@??<?<?<0<R@@ S@?0<R@@l?NBn nn0.@ASh200.@Apg0.@A?0N0.@A?0Np@ ?0.@%??<?<N 00<@?0.@?N 0.@2.AA40ASh1Rn`FN\NDN^,_Nu/,HNVA-HN5N6NBn nn&0.@2.AASh40A1Rn`Bn nnPp=@ nm:0.R@@2.AA2.A4.BBAK40AK1Sn`Rn`HyIHyID?< ?<%p Z@??<%0<R@@[@?0<R@@?NNHyIHyID?<?<0<R@??<0<R@@ S@?0<R@@l?NBn nn0.@AK200.@Apg|0.@A?0N0.@A?0N?< 0.@%??<?<N 0?<0.@?N 0.@2.AA40AK1Rn`TNhNDN^,_Nu/,HNVA-HN5CE?p>QN3PHn?0.r`A]0.rRA^C0.rA]C0.r A^CBd ?<N0.rpA]0.rbA^C0.rA]C0.r A^CBd ?<N0.|]0.rrA^C0.rA]C0.r A^CBd ?<N0.|]0.|^C0.rA]C0.r A^CBd ?<NN0.|]0.|^C0.rA]C0.r A^CBd ?<N0.|]0.|^C0.rA]C0.r A^CBd ?<N0.|]0.|^C0.rA]C0.r A^CBd ?< N0.|]0.|^C0.rA]C0.r A^CBd ?< N^0.|]0.|^C0.rA]C0.r A^CBd ?< N"0.|]0.|^C0.rA]C0.r A^CBd ?< N0.|]0.|^C0.rA]C0.r A^CBd ?< N0.|]0.|^C0.rA]C0.r A^CBd ?<Nn0.| ]0.|^C0.rA]C0.r A^CBd ?<N20.|]0.r A^C0.|]C0.r%A^CBdNv0.|]0.|^C0.r.A]C0.r&A^CBdN܌0.|]0.|^C0.r8A]C0.r0A^CBdN0.|]0.|^C0.rBA]C0.r:A^CBdN0.|]0.|^C0.rLA]C0.rDA^CBdN0.|]0.|^C0.rVA]C0.rNA^CBdN0.|]0.|^C0.r`A]C0.rXA^CBdN0.|]0.|^C0.rjA]C0.rbA^CBdN0.|]0.|^C0.rtA]C0.rlA^CBdN0.|]0.|^C0.r~A]C0.rvA^CBdN0.|]0.|^C0.|]C0.|^CBdNf0.|+]0.|^C0.r.A]C0.r&A^CBdN0.|+]0.|^C0.r8A]C0.r0A^CBdN0.|+]0.|^C0.rBA]C0.r:A^CBdN0.|+]0.|^C0.rLA]C0.rDA^CBdN0.|+]0.|^C0.rVA]C0.rNA^CBdNB0.|+]0.|^C0.r`A]C0.rXA^CBdN0.|+]0.|^C0.rjA]C0.rbA^CBdN0.|+]0.|^C0.rtA]C0.rlA^CBdN0.|+]0.|^C0.r~A]C0.rvA^CBdN0.|+]0.|^C0.|]C0.|^CBdN0.|]0.|^C0.|]C0.|^CBdN0.|]0.|^C0.|]C0.|^CBdN0.|]0.|^C0.|]C0.|^CBdN|0.|]0.|^C0.|]C0.|^CBdNFN^,_Nu/,HNVAB-HN5p=@p =@?<NNBgN?<"?< ?.?.N 0?<N?<2?< ?.?.N 0?<N?<B?< ?.?.N 0?<N?<R?< ?.?.N 0?<N?<b?< ?.?.N 0?<N?<r?< ?.?.N 0?<N?<?< ?.?.N 0?<N?<?< ?.?.N 0?<N?<?< ?.?.N 0?< N?<?< ?.?.N 0?< N?<?< ?.?.N 0?< N?<?< ?.?.N 0?< N?<?< ?.?.N 0?< N?<?< ?.?.N 0?<N?<?< ?.?.N 0?<N?<?< ?.?.N 0"y:bEXj0<?$QNDN^,_Nu/,HNVA-HN5?9JT?<?<?<p/?9Jf?< ?<%0<@R@?0<@R@?BgBgBgBgBgHyIXHyJLHy:hHy:hHyJPHyJNHy:hN3JR09JRrAJ@gNV09JRrAJ@g09JfF@3Jf09JRr AJ@V09JRrAJ@WCBdN$~09JRrAJ@gNLN^,_Nu/,HNVA-HN5BgN*XAp0 ?<{/<\(Ap"0 ?<|/<MjAp(0 ?;5Aq<0 ?Ar0 ?<;/<}MAr0 ?A0 0.2.ApA]"O2"At`A0 0.S@=@Rn`vN^,_Nu/,HNVA&-HN5NByJ:p3J8prArAr A3JTBgNByJdByJbByKBn nn0.@AKBpRn`p=@ nn0.@AJlBpRn`CEmByoCEJCEJpQCEJCEJpQCtEJCZEJC@EJpQC$EJpQCEJpQCEKCEKCEKpQCEK&CEK2pQChEK>CJEKJpQC.EKVpQCEKbCEKnpQCEKzp3JlBn nnLBn nn80.@2.AAAKBp0.@2.AAASBpRn`Rn`N`ByJhByJfByJjBn nn0.@AABpRn`p 3Ip 3I~p$3Ip,3Ip 3IN^,_NuQUITINSERTVIEWSHRINKCHNG CLRFLIPROTATECOPYPASTECUTUNDOANIMATEFRAMECIRCLEBOXLINEMIRRORFILLCLEARFILE00/,HNVAL-HN5Bn nn&?.0.@AÌ?0N=@Rn`BgNNN^,_NuA#8A90B1|A901|NJ@kN3J.09J.J@f>NNN|#:bBy:f y:fn209:f@/?9:f? _PNCOPY_RECT ?Hz~G/,HNV4A-HPN5 ."r=@6~H ."rr=@4~I=n4=n6~K~L .r=@6~M .rr=@4~N=n4=n6~Pp=@~R~S=nP=nR~T0.nS@=@T~U0.nS@=@V~W=nX=nZ~X0.nS@=@\~Y0.nS@=@^~[~\?<mBg?<?<HnHnHnhHnPHn8BgN~^N^,_X> _ONNu/,HNVN5AJ-Hp=@"n 0.r1JAV0.rdA]CBd0.R@=@`"n 0.S@@N^,_ _XN/,HNVfN5A6-H"nE4p$Q"np)R@rA"n p)=@Bn0.@eR0.J@W"n 0.r1p\@WÄC"n 0.r1p:@WÄCBd p=@` 0.S@=@`Bn0."n r)Al20.R@=@0.R@=@0."n 2.t1A`0.@0.R@rAHnN!8-@lHnN!8-@p?<ZHnHntHnlHnhN0.vJ@f Bn`p=@HnN>HnN6"nE2p"Q"n E2p"Qp.=@Bn0.@eR0.J@W0.rA0p\@WÄC0.rA0p:@WÄCBd p=@` 0.S@=@`p=@p.=@f0.nfn,0.R@=@"n 0.2.tA0Rn`"n 0.@0.N^,_ _PNNu/,HNVAp-HN50.T@=@?.N -@/.?-HN5=n PBnR?<BgBg?<HnHnHnhHnPHn8BgNN^,_ _TN/,HNV8AN-HN5?.?. N =n=n ?<lBg?<BgHnHnHnhHnPHn8BgNN^,_ _XN/,HNVA"-HN5?. N ?<?. NN^,_ _TN/,HNVA.-HN50. rA?N ?<h0. rA?NN^,_ _TN/,HNVAz-HN5?. N =n 0. rAo0p=@0. S@=@ 0. rAop=@0. @=@ ?<?.N.0.rAo?<?. NN^,_ _TN/,HNV6A@-HN5=n =n?<'Bg?<BgHnHnHnhHnPHn8BgNN^,_ _XN/,HNVA-HN5?<j?. NN^,_ _TN/,HNV8A>-HN5BnP=n R?< BgBg?<HnHnHnhHnPHn8BgNN^,_ _TN/,HNVA-HN5?<?. NN^,_ _TN/,HNV2A-HN5Hn2Hn4Hn6N!BgBgNl=nP=nR0.nS@=@T=nV0.nS@=@X0.n S@=@Z=n\0.n S@=@^=n`=nb?<BgBg?<HnHnHnhHnPHn8?<N?.4?.6NN^,_ _PN/,HNV8A`-HN5=nP=nR0.nS@=@T0.n S@=@V?< ?< Bg?<HnHnHnhHnPHn8?<NN^,_ _PN/,HNVAr-HN5HnHnHnN!BgN?<NHnHnHnN!?.Nn?.?.?.?. N*?.N?.N?.NBN^,_ _PNNu/,HNVtA2-HN5=n-n x?<NHnHnHnxHntNN^,_ _\N/,HNVA-HN5?</. NN^,_ _XN/,HNVA-HN50. ?BNnN^,_ _TN/,HNVA2-HN5N J@f ?<BN8N R@?N N^,_Nu/,HNVA@-HN5N rAo(N S@?N N J@f ?<BNN^,_Nu/,HNVA<-HN5p?BNp=@N =@0.nn NrRn`N^,_Nu/,HNVtA,-HN5p=@?<kHnHnHnxHntNN^,_Nu/,HNVtA,-HN5p=@?<kHnHnHnxHntNN^,_NuNu/,HNVN5p.R@rAHnN!8/?. N=@0.N^,_ _ONNu/,HNVN5A-H=nF=n@=nD=nB0.:rA=@=n8=n6=n4=n20.0rA=@=n. =n, =n*=n(=n>=n<-n$?<HnHnHnHnN=n"n2"n2"n2"n 2"n 2"n20.N^,_ _O38Jy8fXNX/"_/$|7 a."|7Ta&Hy7?<NJy8g _9NBgNAg`NuNu/,HNV-n=n ?<4HnHnHnHnN=n0.N^,_ _\N _#x#x#x#x#xx#xx0/3x| H |7"|xH2H2H209x @pf2<`2<3x"<x0<NBNu _<#x#x#x#x"_#x:3E3_3_ 2/3yx Jg.El: yx8DSEk0 yx00 yx0Q?"<x0<sNBJ_g2 yx:( yx8DSEk0 yx00 yx0QNu _3xN09xNu _3xN09xNu _3x3xN _"_$_2x4xN _3x3xN _"_$_2x4xN _3xN09xNu09xNu _3xN _37N _3737N _37N _37N _37N _"_$_&_674727N _"_$_&_674727N _ RNHy _024SBgQ@4BAAc/LyNuHy!NnRange error during set-operationHy _0246@SCBgQAn68DCCc 0AgRB`/LyNuHy _0@CEHS@rIVW.J?/LyNuHy _0@CEHS@rIVV.J?/LyNuHy _0@CEHS@2FA_VW.J?/LyNuHy _0@CEHS@2FAYVW.J?/LyNuHy _0@274BAAc7V`tO>/LyNuHy _0@"_24BAAc1V`t>/LyNuHy _02S@AC2YQ/LyNuHy _02S@AC2YQ/LyNuHy _02S@AC2FAYQ/LyNuB9y.`Py.By8 _0g$_jp"_// Hy0N&~Ly0J@fP)J9y.f" f |` f|` f |` f|`4<G BQB) @e *:f&Jrt `e QG&tWJBkZG&&3 J9y.f g< g6`d f H@?3|NAXNuBy8(_ _/ C( g  f,t4(H / /?(?<@NA LJkvfNu4(SBraQNu(g^ f,H typ`:Hy>p`.Hy>p`"Hy>p`Hy>p` Hy>p _/fJ/ gLJ/kJ`L/ fJkB`</jJk2`,gbJk&` Jk`"eb// ebr`r`rAV ?/Ly>NuHy>v` Hy>v _ `Hy>v` Hy>v _0HJ[fBBg`,j Dj4<` 4<ЀkSB`Jf].B/BJg 2/.?o /@?A /Ly>NuHy>v` Hy>v _ [2Jkp`&4<cH@j JgR@kJ@kJgD@?/Ly>NuHy>v` Hy>v _ [2Jkp`$4<cd JgRkJk~JgD//Ly>NuJ/ goNuNuHy> _?///` Hy> _0/2// Jv/ 8://N~/DD?DBoJgJgC|k?>BGHGv8ބdRC8ބdRC>HGvކdRC8ބdRCHGv48ބBޅB:>HG8ކkE߇SDkBg|d RdRDUJg( DbRD ME \/Ly>NuBBo `Hy> _0/2// v/ 8://~/?DD?DBo 8JgJgG|HD8H@0zr)`рe efef<څ߇QgRCgڼd RGdSCJCkD|blo/EC \/Ly>NuoHy> _p2/g/ f/W?o `ֲ@e:f$/&e&f // d*B6//J/ k`(&// S@Q`&// `R"/?/[4JfFӃddRdRR/eJd RdRd`/AG o Jk`z0H*kS/JkFft grkRBjIHA~`( dtHAI.kRBҁjBG` BBRBӁj/e2/AG o Jk\/Ly>NuHy> _0 @&b(C/C/)?/Ly>NuHy1`Hy0Ly>Nn Hz@CPt$> nk(:C@hԥ*5 c_1ɿ1.Ź^ k:v #-xŬX&x2n)h? SYQa@%oNˏ'?9x!7I|o|@Eŭ+E75vV 9@{pvPFloating point overflowFloating point division by zero 8Nu#2 _ g8e8d 92NHy3`Hy3Nnt`t _"_0gR@| e.G2$S" ghjebb"*f&"`v&A%S"`l&J`ذ|gb*|f8"92g0$A#2`""92g$A#2`"92g $A#2"`"E8&R"$b Hy2NnJgr"QHd2S@k"QN _"_0" g8e8d gR@ @mz @ e@E2"fB3@B$`\&A2+@ef "'I`F"3@B$`8$K`ư|f"2#2` |f"2#2` "2#2NHeap overruns stackPointer NILPointer not in heapHyp _0"_e /LypNuHy5VNn/B9y/|yNuHyp _0 @f0"|ynynp` "_J@jpEyr4@ BbBS@kQ/LypNuHyp _4SBkt82$_rAdd0 @f0"|ynynp` "_J@jp6ADb6CG0IS@k$eQ/LypNuHyp _4k2SAk0"_p6B@bE0)CS@kQ/LypNuHyp _2$_r0 @f0"|ynynp` "_J@jp@kS@kv&J$IRC4(K Vg RQBg`?/LypNuHyp _4kF2SAk>0 @f0"|ynynp` "_J@jp6B@bEySBkQ/LypNuString overflow _ hNVf 0(gr"OD@Hd2S@k "Q` _"y8e Hy5NnN#z#z .f -|5`-|5 nNнzf yzNStack overruns heapH?z _z gBjDRE"g8jDRE$6HBJBg8HAJAf,HBJBf$ւi EdD.` $HB8`B/L?zNu0NvDNHz|` Hz| _z f0NjDRE"g`jDREdJgR(`DfxJg<`DxSDbb JgHA8`"tcRЀ`xeWJg(MdD.`B/LzNu098Nu _38NBy8Nu[3][4][ Abort ]Copyright 1986, CCD and OSS, Inc.    -,2 &&4*  ( "B֨& ..($$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$l`&&* (   "*  "* j ,  "* (  "$ j"$, $ ^* j *  "* *   "* (&  " R, &>< B H&&&F , , Vn .020( ,( ,( & & & , , , , , , , , , , , , , , , , , , , , , , , , 2( .     **0..> 0$0$02  *0&0&0,0,0,0,0 @ *0,0,0,0,0,0,0,0 @ N" "$"$"$"$"" "$"$"$"$"" "$.  R$*&L2,.0 nVR$*&L.0.02,.0 j.`f$*&L&L2,.0 hR$*&L2,.0 V NNl ".. *&( V ,  &"" "" " $""" "  " $F ,(*( *F &,. . " .  & ., ,2  &,0:*,HV".~&&hHV0:*,HVHV , ,r0 ,0   &T .0*N"* 40*d4F " J .0*N"* 40*d4v &"" J*0*N"* 40*d4:  F60 H ,*n&0 ^x N4  *" |$$< 0"  > B: < :< :< :< :<  B 4""$. F  , . ""VD .      6(n  H$ N  0.F0&d" b$6T000 "  *$ &4<   *6R * `..   *$.6  * $$("B$0   0&&N  D448 "  * 0    T 24*( T 24*  ^ T 24*( T 24*  (   &j(  $ f               0 *Y06 & 0      6X"d.06 ,\60LP"4*>4@ l*trp`  zP,&D0T>0,8&&,F.:F*@4n(>2020nD(."F<".$ B " 4T R"BBD 4@@(&. ,@ ,,2 4 ,2 4 ,2 ,,T  V& ,,  ,6   $LL2`*2 "T &( &0&  >          ,*< * * , , 0 , " nBB6 pD D< P z  f H F  2  <   , FR ( *@ B @ B V  GfABASICJ`ppppZBBBJXBXBYEXEYYZFLOCDUMMYFRAMEDRCURXCURYSHSCREENREZ WORK_SCREENBPALAPBKUPCSCR1 SHOW_SCREENWKSCREEN WORK_SCREENSCN1SCN2TEMPSHSCREENFLOCPALETRABPALFRAMEBKUPCSCR1SCR2GREXITGLEXIT BLANK_SCREENSET_COLR SAVE_PALET RETN_PALETGO_LEFTGO_RIGHT GO_UPLEFT GO_DNLEFT GO_UPRIGHT GO_DNRIGHTPHYSBASE SETSCREENPHYBASE ALOC_SCREEN SWAP_SCREEN.*pp !@p ! FMFz"7R!M! BALLPLR2.SPT!zDFF"PM!l!l!zzlFM!F8MFMF!FFF FEFEFExxFExxFhEG F*EGFE#  F @ EF @ EF @ EF@ EF!!!! FEFEF FEFEFEFExxF F"7R!M! BALLPLR2.PI1!zDFF"PM!l!l!zzlFM!F8MFMFFlF F EF EF!!x!x!F EF EFF 6 JF ! !!FMF  ! ! !F F j JF ! !!FMF  ! ! !F F ZS F\FFFFF FMFzYFqF+FEGpFE`!! F F.F+FEF<EGHFRE?@@ F Eg FE`!! F4F` F.F+FM|EGpFW E`!! F ZFG.F+FEEGpFE`!! Fl FG.F+FM1 !F  JF EF EF EF-F  F4 F   JF E F FE|F .F+FM0 !F v JF EF EF E F-F F4 F  JF EF FE|F.F_@x_ |`IH$ K }JH)Bp&F0#P`dSfBUDP0s1ppLgg~gggggggggggggggggg矇矇矇矆~~~~gg~gg~~~燇燆~~~gg008x00`y'x|xpxx0̱ϱÁ 0ϱϱ0`̭ݭx0ف|00`!̭ݭ 000`y1x߁|xxx`Ç999ÙxO<|yQDyyFPpaPApapa;A;;]_D]]ES%$%%^M{x{{]QD]]DmmmPEv@vv{@{{ß}x}}O=www}7C7C7C؍0a0a0at?t?t?~~~8A8A8A6"s"{`"6<(<<777>"">>~2~~o`"ooȍ $#*O@>OO ﻮ톘www"&"⻺ ﻮhr"x"Ȼ!"˾ˮnnnnnn a `ca` c`ofoof a`o`ooocooggg矆o`oo~f~~gggga矞g`ggffffg`ggnfnngofagogo` gcggg`gg~g`~g~ggcggGGGgggfff~g~g~gffffgfgfggggggg~g~g~gggg? qEEqyyqq?q  (yy9}}9}}`0ww0yy?ݟݟ8 __gwwņfww`wwgww?0fwwQvQsS>CE88??A`//33@00?1LnnAaa;;u0HjjŠ#?/8 A(C kk 0L 111  ooo묃{{{...0q88@8? <qDay}}<@3ooޫޫ&Ooo?y;￀======LLLwww?}__xq8~~ǎ?0<<]]8||? x{{dvvىg^^?p}}0c{{\?]]]ɎɎɎsss>>>????    ```` PyyyyȀـــى''''!!!!<<<>>>####P$$$$"y"y"y"y'''' (((("""" P    ȜȜȜȜ''''qqqqȼȼȼȼqqqqȀI P`dSfBUDP0s17w<O<Op <<<<L2 <<<<l ` b F8 F8 P F8 F8 b p h L0 X  X  0@ 0@ 0@ X  X  l 8D h H0 H0 ` @  ` H0 H0 h 8D 0L 0L X  X 0L 0L 8Dp @0pp0@0`0xt0`0 0`xtx`0  ? 0@xx@ 0 1 @|x |x @ 1`!@ p  p@ 1   <p p9< 8@@7X@8 # x9 p k`/w`  p pp` # g p #\  p||f@0@ @@ @<  0@8@ 0H @0@@@@@@@8@@0   (@ @@ p   0&,(@ @@6     @@  X >>p~@@:*,p @  6``lD<`@< `0@xp```ppxppx8ppp<  `80(p8` `@< 0888!0 0808@`@`@||0 =<@0@@@980=<0 ?:=<0Pp}f>>  ` ` x<h@  @   xx `  =h` ``;000H  `yp ` @ d4pp`pl0 @p0hxx||~x\T048l6"0 <<  ><> @ 46pP / ;8(?/ pP?/@ c`b`8888```` c`b` <<<<A a``a```8888``@`` a``a```??ppppǀǀǀǀ??``ppppÀÀ``??>>??>> ??  ss  ` a4"h#!|R0<a(0<a"Nu0<aa "y!INu?<"NNT @Nu??<?<NM\NuC(APNu0<B9aJ9g _2|C1|NINIT_STIEND_STIC"STICKlget_vect6old_vecdo_stickRsend_cmdBstick0donenoteventjwaitxstick1type* !NOTICE: * * THESE MATERIALS are UNSUPPORTED by OSS! If you do not understand how to * use them do not contact OSS for help! We will not teach you how to * program in Pascal. If you find an error in these materials, feel free * to SEND US A LETTER explaining the error, and how to fix it. * * THE BOTTOM LINE: * * Use it, enjoy it, but you are on your own when using these materials! * * * DISCLAIMER: * * OSS makes no representations or warranties with respect to the contents * hereof and specifically disclaim all warranties of merchantability or * fitness for any particular purpose. This document is subject to change * without notice. *  * OSS provides these materials for use with Personal Pascal. Use them in * any way you wish. * .xdef INIT_STICK,END_STICK,STICK .text * * Get the address of the keyboard packet handle table, and replace the joystick * handler. Set up our own vector as the joystick handler INIT_STICK: bsr get_vectors move.l 24(a0),a1 * Stick handler is at *a0[6] move.l a1,old_vec move.l #do_stick,24(a0) move.w #$12,d0 * Turn mouse off bsr send_cmd move.w #$15,d0 * And turn joystick on, interrogate mode bsr send_cmd rts * Then return to caller * * Turn off joysticks, and turn on mouse. Replace the old joystick packet * handler vector. END_STICK: move.w #$08,d0 * Turn off joysticks by turning on mouse bsr send_cmd bsr get_vectors * Now replace old stick handler move.l old_vec,a1 move.l a1,24(a0) rts * Return to caller * get_vectors: move.w #34,-(sp) * Get address of keyboard packet handler tbl trap #14 add.l #2,sp move.l d0,a0 rts * send_cmd: move.w d0,-(sp) * Just perform a bconout to the keyboard move.w #4,-(sp) move.w #3,-(sp) trap #13 add.l #6,sp rts * do_stick: lea stick0,a1 * Get a pointer to our data area in a1 move.b (a0),d1 * Get direction bits move.b d1,(a1) * and save in our data move.b 1(a0),d1 move.b d1,1(a1) st done notevent: rts * STICK: move.w #$16,d0 * Interrogate joystick clr.b done bsr send_cmd wait: tst.b done beq wait move.l (sp)+,a0 * Save return address move.w (sp)+,d1 * get stick number (0-1) and.w #1,d1 lea stick0,a1 move.b (a1,d1.w),d0 * Return with our stick value as the fn. result and.w #$FF,d0 jmp (a0) * and return * .bss old_vec: .ds.l 1 stick0: .ds.b 1 * position for stick 0 stick1: .ds.b 1 * and stick 1 done: .ds.b 1 .end {$P-} { turn pointer checking off.. } {$U100} { reserve space for scroll data 100 k bytes} PROGRAM JOYSTICK; (* Link with SPR5.O and JOYSUBS.O *) CONST (*$I gemconst.pas *) (* Include all the GEM constants *) TYPE ALBLOCK = array[0..3] of long_integer; a_ray = array[0..50] of array[0..4] of integer; Screendef = ^Screendata; Screendata = PACKED ARRAY[0..32511] OF byte; scrn_memory = packed array [ 0..31999 ] of BYTE; c_pallet = array[0..15] of integer; degas_pic = record rez : integer; pal : c_pallet; scr : scrn_memory; end; degas_file = file of degas_pic; ptr_screen = ^scrn_memory; { pointer to the screen array } pallet = record pal0 : c_pallet; end; p_file = file of pallet; seq = record ary : array[1..18] of a_ray; stats : array [1..18] of integer; end; seq_file = file of seq; msk_data = packed array[0..7679] of byte; msk_ptr = ^msk_data; msk_rec = record msk : msk_data; end; msk_file = file of msk_rec; mfdb_fields = (addr1,addr2,wid_pix,ht_pix,wid_wds,flag,num_planes,r1,r2,r3); mfdb = array[mfdb_fields] of integer; grid = array[0..31] of array[0..31] of integer; p_name = packed array[0..63] of char; (*$I gemtype.pas *) VAR c: char; mask_data : msk_data; m_ptr : msk_ptr; mask_rec : msk_rec; mask_mode : integer; s_ptr : ptr_screen; { a pointer to a packed array of bytes... } sc1 : ptr_screen; { a pointer to a packed array of bytes... } sc2 : ptr_screen; { a pointer to a packed array of bytes... } sc4 : ptr_screen; { a pointer to a packed array of bytes... } dummy,x,y : integer; scr1 : scrn_memory; scr2 : scrn_memory; scr3 : scrn_memory; scr4 : scrn_memory; scroll_space : long_integer; ldummy : long_integer; rez1 : integer; pal1 : c_pallet; pal2 : c_pallet; pal3 : c_pallet; pal4 : c_pallet; pal6 : c_pallet; pal7 : c_pallet; pal8 : c_pallet; current_pallet : c_pallet; pic : degas_pic; screen,backup,unscreen,sprite,backup1,mask,scroll_data : MFDB; current_x,current_y, last_x,last_y, llast_x,llast_y, speed, vspeed, vvbls, vmode, vmmode : integer; frame_loc : array[0..59] of array[1..2] of integer; frame,last_frame : integer; ssp,vbladr,nvbls,vblque_adr,address,vblsem: long_integer; vbl_flag,ok_flag,quit_flag,anim_flag,sprite_flag,mask_flag : boolean; Curlogbase: Screendef; Curphybase: Screendef; Visible_Screen:Screendef; Build_Screen: Screendef; Screen1: Screendef; Screen2: Screendef; SPVBL_BOX,STICK_BOX,COPY_BOX,VB_BOX,SP_BOX,THE_BOX : DIALOG_PTR; {$I \PASCAL\SOURCE\PEEKPOKE.PAS } (*$I gemsubs.pas *) (* Include all GEM subroutines *) Procedure wvbl; XBIOS( 37 ); { Text_Height - Set the height in pixels of text, when it is drawn using the Draw_String library call. } PROCEDURE Text_Height( height : integer ) ; TYPE Ctrl_Parms = ARRAY [ 0..11 ] OF integer ; Int_In_Parms = ARRAY [ 0..15 ] OF integer ; Int_Out_Parms = ARRAY [ 0..45 ] OF integer ; Pts_In_Parms = ARRAY [ 0..11 ] OF integer ; Pts_Out_Parms = ARRAY [ 0..11 ] OF integer ; VAR control : Ctrl_Parms ; int_in : Int_In_Parms ; int_out : Int_Out_Parms ; pts_in : Pts_In_Parms ; pts_out : Pts_Out_Parms ; PROCEDURE VDI_Call( cmd, sub_cmd : integer ; nints, npts : integer ; VAR ctrl : Ctrl_Parms ; VAR int_in : Int_In_Parms ; VAR int_out : Int_Out_Parms ; VAR pts_in : Pts_In_Parms ; VAR pts_out : Pts_Out_Parms ; translate : boolean ) ; EXTERNAL ; BEGIN pts_in[0] := 0 ; pts_in[1] := height ; VDI_Call(12, 0, 0, 2, control, int_in, int_out, pts_in, pts_out, false); END ; { Get_Height - Get the height in pixels of text, when it is drawn using the Draw_String library call. } FUNCTION Get_Height : integer ; TYPE Ctrl_Parms = ARRAY [ 0..11 ] OF integer ; Int_In_Parms = ARRAY [ 0..15 ] OF integer ; Int_Out_Parms = ARRAY [ 0..45 ] OF integer ; Pts_In_Parms = ARRAY [ 0..11 ] OF integer ; Pts_Out_Parms = ARRAY [ 0..11 ] OF integer ; VAR control : Ctrl_Parms ; int_in : Int_In_Parms ; int_out : Int_Out_Parms ; pts_in : Pts_In_Parms ; pts_out : Pts_Out_Parms ; PROCEDURE VDI_Call( cmd, sub_cmd : integer ; nints, npts : integer ; VAR ctrl : Ctrl_Parms ; VAR int_in : Int_In_Parms ; VAR int_out : Int_Out_Parms ; VAR pts_in : Pts_In_Parms ; VAR pts_out : Pts_Out_Parms ; translate : boolean ) ; EXTERNAL ; BEGIN VDI_Call(131, 0, 0, 0, control, int_in, int_out, pts_in, pts_out, false); Get_Height := pts_out[9] ; END ; PROCEDURE str( n: integer; VAR s: str255 ); VAR digit, (* Holds each digit value of 'n' as it is created *) divisor, (* Division by this is used to find each digit *) i: integer; (* Index in string at which to put next character *) leading: boolean; (* True, if the next digit will be the leading digit *) (* add_char - Add a single character to the string, incrementing the curren index. *) PROCEDURE add_char( c: char ); BEGIN i := i + 1; s[i] := c; END; BEGIN (* str - main routine *) i := 0; (* Start at the beginning of the string *) IF n < 0 THEN (* If the number is negative, add a minus sign *) BEGIN add_char( '-' ); n := -n; END; divisor := 10; leading := true; WHILE divisor > 0 DO BEGIN digit := n DIV divisor; IF (digit <> 0) OR NOT( leading ) THEN BEGIN add_char( chr(digit + ord('0')) ); leading := false; END; n := n MOD divisor; divisor := divisor DIV 10; END; IF i = 0 THEN add_char( '0' ); s[0] := chr(i); END; FUNCTION val( s: str255 ): integer; VAR minus: boolean; i,n : integer; BEGIN i := 1; WHILE (i < length(s)) AND (s[i] = ' ') DO i := i + 1; n := 0; IF length(s) >= i THEN BEGIN IF s[i] <> '-' THEN minus := false ELSE BEGIN minus := true; i := i + 1; END; WHILE (i <= length(s)) AND (s[i] IN ['0'..'9']) DO BEGIN n := (n * 10) + ord(s[i]) - ord('0'); i := i + 1; END; IF minus THEN n := -n; END; val := n; END; Function Get_cur_disk : integer; GEMDOS( $19 ); Function malloc ( space : long_integer ) : long_integer; GEMDOS( $48 ); Function mfree ( addr : long_integer ) : long_integer; GEMDOS( $49 ); Procedure get_free_space(var buffer : alblock; disk : integer ); GEMDOS( $36 ); Function IO_Result : integer; EXTERNAL; Procedure IO_Check( b : boolean ); EXTERNAL; FUNCTION Getphybase : Screendef; Xbios(2); FUNCTION Getlogbase : Screendef; Xbios(3); FUNCTION logbase : ptr_screen; Xbios(3); FUNCTION GETREZ : integer; Xbios(4); PROCEDURE Setscreen(Logloc,Phyloc : Screendef; Rez : INTEGER); Xbios(5); Procedure swap; var tempscreen : screendef; begin Tempscreen := Visible_Screen; Visible_Screen := Build_Screen; Build_Screen := Tempscreen; Setscreen(Build_Screen,Visible_Screen,-1); end; FUNCTION Alloc_Screen : Screendef; CONST Scraddrresolution = 256; VAR Scrjunk: RECORD CASE Byte OF 0 : (Sali: Long_Integer); 1 : (Sa: Screendef); END; BEGIN WITH Scrjunk DO BEGIN NEW(Sa); IF Sali MOD Scraddrresolution <> 0 THEN Sali := Sali + (Scraddrresolution - (Sali MOD Scraddrresolution)); END; Alloc_Screen := Scrjunk.Sa; END; Procedure init_form(var form :mfdb; var addr : scrn_memory ); EXTERNAL; Procedure init_mask_form(var form :mfdb; var addr : msk_data ); EXTERNAL; Procedure init_scroll_form(var form :mfdb; addr : long_integer ); EXTERNAL; Procedure copy_rect( var s,d : mfdb; from_x,from_y, to_x,to_y, wid,ht,mode : integer); EXTERNAL; Procedure copy_mask( var s,d : mfdb; from_x,from_y, to_x,to_y, wid,ht,mode : integer); EXTERNAL; PROCEDURE Init_Stick; EXTERNAL; PROCEDURE End_Stick; EXTERNAL; { Call this routine to get the current joystick value. The values returned for the eight directions are as follows: 5 1 9 \|/ If the trigger is depressed, then 128 will be added to the 4--0--8 direction value /|\ \ 6 2 10 "which_stick" should be given the value 0 or 1. } FUNCTION Stick( which_stick: integer ): integer; EXTERNAL; FUNCTION physbase : ptr_screen; XBIOS( 2 ); function set_colr( reg,col : integer ) : integer; xbios(7); PROCEDURE SRestore( where : integer; name : STRING ); VAR f : degas_file; { a file containing a screenful of bytes.. } x : integer; BEGIN { reset automatically fills file buffer with data from first record } reset( f, name ); pic := f^; with pic do begin case where of 1: begin pal1 := pic.pal; scr1 := pic.scr; end; 2: begin pal4 := pic.pal; scr4 := pic.scr; for x := 0 to 15 do dummy := set_colr(x,pal4[x]); end; end; end; { file is automatically closed when we leave this procedure. } END; Procedure error_rtn(error : integer); begin case error of 1: dummy := do_alert('[3][DISK ERROR # 1][ OK ]',1); 2: dummy := do_alert('[3][DISK ERROR # 2][ OK ]',1); 3: dummy := do_alert('[3][DISK ERROR # 3][ OK ]',1); 4: dummy := do_alert('[3][DISK ERROR # 4][ OK ]',1); 5: dummy := do_alert('[3][DISK ERROR # 5][ OK ]',1); 6: dummy := do_alert('[3][DISK ERROR # 6][ OK ]',1); 7: dummy := do_alert('[3][DISK ERROR # 7][ OK ]',1); 8: dummy := do_alert('[3][DISK ERROR # 8][ OK ]',1); 9: dummy := do_alert('[3][BAD FILENAME][ OK ]',1); 10: dummy := do_alert('[3][DISK ERROR # 10][ OK ]',1); 11: dummy := do_alert('[3][DISK ERROR # 11][ OK ]',1); -1: dummy := do_alert('[3][TOS ERROR # 1][ OK ]',1); -2: dummy := do_alert('[3][DRIVE NOT READY][ OK ]',1); -3: dummy := do_alert('[3][UNKNOWN ERROR][ OK ]',1); -4: dummy := do_alert('[3][CRC ERROR][ OK ]',1); -5: dummy := do_alert('[3][BAD REQUEST][ OK ]',1); -6: dummy := do_alert('[3][SEEK ERROR][ OK ]',1); -7: dummy := do_alert('[3][UNKNOWN MEDIA][ OK ]',1); -8: dummy := do_alert('[3][SECTOR NOT FOUND][ OK ]',1); -9: dummy := do_alert('[3][TOS ERROR # 9][ OK ]',1); -10: dummy := do_alert('[3][WRITE FAULT][ OK ]',1); -11: dummy := do_alert('[3][READ FAULT][ OK ]',1); -12: dummy := do_alert('[3][GENERAL ERROR][ OK ]',1); -13: dummy := do_alert('[3][WRITE PROTECTED][ OK ]',1); -14: dummy := do_alert('[3][MEDIA CHANGE][ OK ]',1); -15: dummy := do_alert('[3][UNKNOWN DEVICE][ OK ]',1); -16: dummy := do_alert('[3][BAD SECTOR ON FORMAT][ OK ]',1); -17: dummy := do_alert('[3][DISK CHANGE][ OK ]',1); -32: dummy := do_alert('[3][INVALID FUNCTION NUMBER][ OK ]',1); -33: dummy := do_alert('[3][FILE NOT FOUND][ OK ]',1); -34: dummy := do_alert('[3][PATH NOT FOUND][ OK ]',1); -35: dummy := do_alert('[3][TOO MANY OPEN FILES][ OK ]',1); -36: dummy := do_alert('[3][ACCESS DENIED][ OK ]',1); -39: dummy := do_alert('[3][NOT ENOUGH MEMORY][ OK ]',1); -40: dummy := do_alert('[3][INVALID BLOCK ADDRESS][ OK ]',1); -46: dummy := do_alert('[3][INVALID DRIVE][ OK ]',1); -49: dummy := do_alert('[3][NO MORE FILES][ OK ]',1); -64: dummy := do_alert('[3][RANGE ERROR][ OK ]',1); -65: dummy := do_alert('[3][INTERNAL ERROR][ OK ]',1); -66: dummy := do_alert('[3][INVALID LOAD FORMAT][ OK ]',1); -67: dummy := do_alert('[3][SETBLOCK FAILURE][ OK ]',1); OTHERWISE : DUMMY := DO_ALERT('[3][UNKNOWN ERROR][ OK ]',1); end; end; Procedure get_default( var str1 : path_name); var x : integer; begin x := get_cur_disk; case x of 0: str1 := 'A:'; 1: str1 := 'B:'; 2: str1 := 'C:'; 3: str1 := 'D:'; 4: str1 := 'E:'; 5: str1 := 'F:'; 6: str1 := 'G:'; 7: str1 := 'H:'; 8: str1 := 'I:'; 9: str1 := 'J:'; 10: str1 := 'K:'; 11: str1 := 'L:'; 12: str1 := 'M:'; 13: str1 := 'N:'; 14: str1 := 'O:'; 15: str1 := 'P:'; OTHERWISE : STR1 := 'A:'; end; end; Function check_space(x : integer ; str1 : path_name) : boolean; var ch : char; y : integer; block : ALBLOCK; fa,ta,bps,spa,ans : long_integer; flag : boolean; begin ch := str1[1]; if ch = 'A' then y := 1; if ch = 'a' then y := 1; if ch = 'B' then y := 2; if ch = 'b' then y := 2; if ch = 'C' then y := 3; if ch = 'c' then y := 3; if ch = 'D' then y := 4; if ch = 'd' then y := 4; if ch = 'E' then y := 5; if ch = 'e' then y := 5; if ch = 'F' then y := 6; if ch = 'f' then y := 6; if ch = 'G' then y := 7; if ch = 'g' then y := 7; if ch = 'H' then y := 8; if ch = 'h' then y := 8; if ch = 'I' then y := 9; if ch = 'i' then y := 9; if ch = 'J' then y := 10; if ch = 'j' then y := 10; if ch = 'K' then y := 11; if ch = 'k' then y := 11; if ch = 'L' then y := 12; if ch = 'l' then y := 12; if ch = 'M' then y := 13; if ch = 'm' then y := 13; if ch = 'N' then y := 14; if ch = 'n' then y := 14; if ch = 'O' then y := 15; if ch = 'o' then y := 15; if ch = 'P' then y := 16; if ch = 'p' then y := 16; get_free_space(block,y); fa := block[0] * block[2] * block[3]; case x of 1: if fa < 6000 then flag := false else flag := true; 2: if fa < 32768 then flag := false else flag := true;  3: if fa < 2048 then flag := false else flag := true; 4: if fa < 3096 then flag := false else flag := true; end; if flag = false then begin check_space := false; dummy := do_alert('[3][ |THIS DISK DOES NOT|HAVE ENOUGH R00M][ OK ]',1); end else check_space := true; end; Function check_original(filename : path_name): boolean; TYPE ck = record ck1 : integer; end; ck2 = file of ck; var f : ck2; error : integer; begin io_check(false); reset(f,filename); error := io_result; if error = 0 then begin check_original := false; end else check_original := true; end; Procedure build_scrn; begin hide_mouse; s_ptr^ := scr4; { and assign file buffer to screen } show_mouse; end; Procedure Load_sprite; var f : degas_file; x,error : integer; def_path,filename,STR1 : path_name; t : boolean; begin get_default(str1); filename := ''; def_path := CONCAT(STR1,'\*.SPT'); t := get_in_file(def_path,filename); build_scrn; set_mouse(M_Bee); IO_check(false); if t then begin reset( f, filename ); error := IO_result; if error = 0 then begin pic := f^; with pic do begin pal3 := pic.pal; scr3 := pic.scr; end; sprite_flag := true; end else begin set_mouse(M_Arrow); error_rtn(error); end; end; set_mouse(M_Arrow); end; Procedure Load_playfield; var f : degas_file; x,error : integer; def_path,filename,STR1 : path_name; t : boolean; begin get_default(str1); filename := ''; def_path := CONCAT(STR1,'\*.PI1'); t := get_in_file(def_path,filename); build_scrn; set_mouse(M_Bee); IO_check(false); if t then begin reset( f, filename ); error := IO_result; if error = 0 then begin pic := f^; with pic do begin scr1 := pic.scr; end; sprite_flag := true; end else begin set_mouse(M_Arrow); error_rtn(error); end; end; set_mouse(M_Arrow); end; Procedure still_rtn; begin end; Procedure up_rtn( var my : integer ); begin speed := speed - 1; if speed < 2 then speed := 2; my := my - speed; if my < 0 then my := 0; end; Procedure dn_rtn( var my : integer ); begin speed := speed - 1; if speed < 2 then speed := 2; my := my + speed; if my >= (823) then my := 823; end; Procedure btn_up_rtn( var my : integer ); begin speed := speed + 1; if speed > 15 then speed := 15; my := my - speed; if my < 0 then my := 0; end; Procedure btn_dn_rtn( var my : integer ); begin speed := speed + 1; if speed > 15 then speed := 15; my := my + speed; if my >= (823) then my := 823; end; Procedure set_sprite_table; var x,y,tx,ty,bx,by,num : integer; begin tx := 0; ty := 0; for y := 0 to 5 do begin for x := 0 to 9 do begin num := x+(y*10); frame_loc[num,1] := tx; frame_loc[num,2] := ty; tx := tx + 32; end; ty := ty + 32; tx := 0; end; end; Procedure go_loop; var x,my : integer; flag : boolean; begin speed := 1; my := 0; REPEAT X := stick(1) & $00ff; case x of 0 : still_rtn; 1 : up_rtn(my); 2 : dn_rtn(my); 128 : still_rtn; 129 : btn_up_rtn(my); 130 : btn_dn_rtn(my); otherwise : ; end; copy_rect(scroll_data,screen, 0,my, 0,0, 160,200, 3); swap; UNTIL KEYPRESS = TRUE; end; Procedure go_stick_rtn; var x : integer; begin hide_mouse; Setscreen(Screen1,Curphybase,-1); sc1 := logbase; sc1^ := scr1; Setscreen(Screen2,Curphybase,-1); sc2 := logbase; sc2^ := scr1; Visible_Screen := Screen2; Build_Screen := Screen1; Setscreen(Build_Screen,Visible_Screen,-1); Init_stick; go_loop; End_Stick; Setscreen(Curlogbase,Curphybase,-1); show_mouse; end; Procedure event_rtn; var mouse_x,mouse_y,event : integer; msg : message_buffer; begin repeat event := Get_Event(E_Button, 1,1,1, (* left button down *) 0, (* timer set to 0 *) False,0,0,0,0, False,0,0,0,0, msg, dummy, (* Key pressed *) dummy,dummy, (* Not used *) mouse_x,mouse_y, dummy ); If (event & E_Button) <> 0 then ; until Quit_flag = true; end; (* STUFF_SCROLL_DATA fills the new screen area with sprites *) Procedure stuff_scroll_data; var x,y,mx,my,zx,zy : integer; begin for y := 0 to 31 do begin for x := 0 to 5 do begin copy_rect( backup,scroll_data, 0,0, x * 32,y * 32, 32,32, 3); end; end; end; BEGIN if Init_gem >= 0 then begin if getrez = 0 then begin scroll_space := malloc(65536); (* allocate large screen *) s_ptr := physbase; init_mouse; show_mouse; for x := 0 to 15 do pal2[x] := set_colr(x,-1); SRestore(1, 'SCROLL.SPT' ); { read screen data from file... } screen[addr1] := 0; screen[addr2] := 0; init_form(backup,scr1); init_form(unscreen,scr2); init_scroll_form(scroll_data,scroll_space); set_sprite_table; stuff_scroll_data; hide_mouse; SRestore(2, 'SCROLL.PI1' ); { read screen data from file... } s_ptr^ := scr4; scr1 := scr4; show_mouse; Curlogbase := Getlogbase; Curphybase := Getphybase; Screen1 := Alloc_Screen; Screen2 := Alloc_Screen; frame := 0; current_x := 0; current_y := 0; last_x := 0; last_y := 0; llast_x := 0; llast_y := 0; quit_flag := false; go_stick_rtn; for x := 0 to 15 do dummy := set_colr(x,pal2[x]); ldummy := mfree( scroll_space ); (* unallocate scroll screen *) end else dummy := do_alert('[1][ | LOW REZ ONLY ][ OK ]',1); exit_gem; end; END. { End of file: JOYSTICK.PAS } \pp"wffD30 @wMHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHx? PHUxUUUNHx0NHUxUU0UNHx0NHUxUU0UNHx<8<8<8<9<9<98880NHUxUUffffyyya0UNHx  xyy0NHUxUUߟ `99 99xxx<&<><>0UNHxx 99xyy~0NHUxUUxyy 0UNHx$8<9<9 88xx&>>0NHUxUUffff~a~g`0UNHxga`0NHUxUU0UNHx0NHUxUU0UNHx0NHUxUU0UNHx0NHUxUU0UNHx0NHUxUUnnn0UNHxQ0NHUxUUuu@0UNHxT@0NHUxUU{{0UNHx0NHUxUU0UNHx0NHUxUU0UNHx0NHUxUU0UNHx0NHUxUU0UNHx 0NHUxUU0UNHx0NHUxUU0UNHxN%ڱڱ8}}}E000$0NHUxUU);;;D}}}e(0UNHxWFλN]}}`* oo0NHUxUU+ Իֻ@U]}}]kU*0UNHx_-ұڱ * 00,0NHUxUU @Q {E 0UNHxv|N<.y 60NHUxUU0UNHx0NHUxUU0UNHx0NHUxUU0UNHx0NHUxUU0UNHx0NHUxUU0UNHx??NHUxUU??UNHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUU dUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHx POHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUU /HxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUU`Q o"h#St#Sx#S|,Opc.N//Bg?<JNA Bb3SN:N,~EK ?Hz~/,HNVA(-HPNP-n~"np)-@~ .N^,_X> _XNPE ?Hz~%/,HNVA&-HPNP-n~&"n0H-@~' .N^,_X> _XNPE ?Hz~6/,HNVA"-HPNP-n~7"n-Q~8 .N^,_X> _XNPOKE ?Hz~H/,HNVA*-HPNP-n~I"n0.A@~JN^,_X> _\NWPOKE ?Hz~Y/,HNVA"-HPNP-n~Z"n2~[N^,_X> _\NLPOKE ?Hz~j/,HNVA"-HPNP-n~k"n"~lN^,_X> _PNNV?<%NNN^NuTEXT_HEIGH?Hz></,HNV8AN-HPNPBnP><=nR><?< BgBg?<HnHnHnhHnPHn8BgNB><N^,_X> _TNE_EGT?Hz></,HNV2AD-HPNP?<BgBgBgHnHnHnbHnJHn2BgNB><=nD><0.N^,_X>NuADD_CHAR ?Hz></,HNVA>-HPNP V0(R@ V1@>< V"h V0(A2.><N^,_X> _TNSTR ?Hz></,HNVA$-HPNPBn><0.J@j&><><?<- NNP><0.D@=@><><=|'><p=@><><0.rAo><><0.2.H=@><0.J@V0.F@@Bd&><><0.r0A? NN><Bn><><0.2.HH@=@><0.r H=@><`l><0.J@f><?<0 NNt><"n0.@><N^,_X> _\NA ?Hz></,HNVA|-HPNPp=@><><0.r.A]0.ArA0p @WCBd><0.R@=@`><Bn><p.nm><><0.ArA0p-@g><><Bn`&><><><p=@><0.R@=@><><><0.r.A_0.ArA0?Hz?<NF>0@BdB><><0. 2.CtA0Br0A=@><0.R@=@><`><0.@d><0.D@=@><><=n><0.N^,_X> _ONNV?<NAN^NuNV/.?<HNAN^ _ONNV/.?<INAN^ _ONNV?./. ?<6NAN^ _ONNV?<NNN^NuNV?<NNN^NuNV?<NNN^NuNV?<NNN^NuNV?./. /.?<NNN^ _O NSWAP ?Hz></,HNVAN-HPNP-y><#><#></9/9?<N^,_X>NuLO_CE?Hz><-/,HNVA-HPNP><.?<HnNK></ .2<H//NP"><0Jg* .2<$.6<H//NP&HЁ-@><1><3-n><5 .N^,_X>NuNV?<NNN^NuNV?.?. ?<NNN^ _ONSRESTORE ?Hz><p/,HNV&AP-HPNPA,BP1|}"Hn,Hn?<qCE40<G$Q><rC-I&><s><t0.d`><u><u><vCEp$Q><wC0E0<?$Q><x`><y><y><zCEnp$Q><{C0E0<?$Q><|Bn* n*n.><|?.*0.*A@An?0N3Rn*`><}`><~S@ @b@0;N*l><><><Hn,NIN^,_X> _OTNERROR_RTN ?Hz></,HNVA -HPNP0.`:><><C O$OpQ?<N93`><><C O$OpQ?<N93`><><C \O$OpQ?<N93`X><><C O$OpQ?<N93`&><><C O$OpQ?<N93`><><C xO$OpQ?<N93`><><C ,O$OpQ?<N93`><><C O$OpQ?<N93`^><><C O$OpQ?<N93`,><><C JO$OpQ?<N93`><><C O$OpQ?<N93`><><C O$OpQ?<N93`><><C hO$OpQ?<N93`d><><C O$OpQ?<N93`2><><CO$OpQ?<N93`><><CO$OpQ?<N93`><><CHO$OpQ?<N93`><><CO$OpQ?<N93`j><><CO$OpQ?<N93`8><><CfO$OpQ?<N93`><><CO$OpQ?<N93`><><CO$OpQ?<N93`><><CO$OpQ?<N93`p><><C@O$OpQ?<N93`>><><CO$OpQ?<N93` ><><CO$OpQ?<N93`><><CXO$OpQ?<N93`><><CO$OpQ?<N93`v><><CO$O"p!Q?<N93`D><><CpO$OpQ?<N93`><><C$O$OpQ?<N93`><><CO$OpQ?<N93`><><CO$OpQ?<N93`|><><C<><CO$O pQ?<N93`><><CO$OpQ?<N93`><><CVO$OpQ?<N93`><><CO$OpQ?<N93`><><CO$OpQ?<N93`P><><CrO$OpQ?<N93`><><C$O$OpQ?<N93`><><CO$OpQ?<N93`><@ @Nb@0;NT"Z(`.f4l:r@L~Fx><N^,_X> _TN[3][SETBLOCK FAILURE][ OK ][3][INVALID LOAD FORMAT][ OK ][3][INTERNAL ERROR][ OK ][3][RANGE ERROR][ OK ][3][NO MORE FILES][ OK ][3][INVALID DRIVE][ OK ][3][INVALID BLOCK ADDRESS][ OK ][3][NOT ENOUGH MEMORY][ OK ][3][ACCESS DENIED][ OK ][3][TOO MANY OPEN FILES][ OK ][3][PATH NOT FOUND][ OK ][3][FILE NOT FOUND][ OK ][3][INVALID FUNCTION NUMBER][ OK ][3][DISK CHANGE][ OK ][3][BAD SECTOR ON FORMAT][ OK ][3][UNKNOWN DEVICE][ OK ][3][MEDIA CHANGE][ OK ][3][WRITE PROTECTED][ OK ][3][GENERAL ERROR][ OK ][3][READ FAULT][ OK ][3][WRITE FAULT][ OK ][3][TOS ERROR # 9][ OK ][3][SECTOR NOT FOUND][ OK ][3][UNKNOWN MEDIA][ OK ][3][SEEK ERROR][ OK ][3][BAD REQUEST][ OK ][3][CRC ERROR][ OK ][3][UNKNOWN ERROR][ OK ][3][DRIVE NOT READY][ OK ][3][TOS ERROR # 1][ OK ][3][DISK ERROR # 11][ OK ][3][DISK ERROR # 10][ OK ][3][BAD FILENAME][ OK ][3][DISK ERROR # 8][ OK ][3][DISK ERROR # 7][ OK ][3][DISK ERROR # 6][ OK ][3][DISK ERROR # 5][ OK ][3][DISK ERROR # 4][ OK ][3][DISK ERROR # 3][ OK ][3][DISK ERROR # 2][ OK ][3][DISK ERROR # 1][ OK ]GET_DEFAUL?Hz></,HNVA:-HPNPN=@><0.`><><"nE4`><><"nE`><><"nE`><><"nE`><><"nE`><><"nE`l><><"nE`P><><"nEb`4><><"nED`><><"nE&`><><"nE`><><"nE`><><"nE`><><"nE`><><"nE`p><><"nEr`T><><"nEt`8>< @b@0;N.Jf*Fb~><N^,_X> _XNP:O:N:M:L:K:J:I:H:G:F:E:D:C:B:A:HC_PC?Hz></,HNVA`-HPNPp.=@><0.rAAfp=@><0.raAfp=@><0.rBAfp=@><0.rbAfp=@><0.rCAfp=@><0.rcAfp=@><0.rDAfp=@><0.rdAfp=@><0.rEAfp=@><0.reAfp=@><0.rFAfp=@><0.rfAfp=@><0.rGAfp=@><0.rgAfp=@><0.rHAfp=@><0.rhAfp=@><0.rIAfp =@><0.riAfp =@><0.rJAfp =@><0.rjAfp =@><0.rKAfp =@><0.rkAfp =@><0.rLAfp =@><0.rlAfp =@><0.rMAfp =@><0.rmAfp =@><0.rNAfp=@><0.rnAfp=@><0.rOAfp=@><0.roAfp=@><0.rPAfp=@><0.rpAfp=@><Hn?.N>< .".//NP" .//NP -@><0.d`><>< .2<pHl Bn` ><p=@`><>< .ΰl Bn` ><p=@`~><>< .2<Hl Bn` ><p=@`P><>< .2< Hl Bn` ><p=@`"><S@ @b@0;N6d><0.|r|AfD><><Bn><CRO$O0p/Q?<N93><><` ><p=@><0.N^,_X> _OTN[3][ |THIS DISK DOES NOT|HAVE ENOUGH R00M][ OK ]HC_RG?Hz></,HNVDA|-HPNPAFBP1|BgNQ><HnFHn?<NQ=@D><0.DJ@f><><Bn><><` ><p=@><HnFNI0.N^,_X> _ORNBUILD_SCRN?Hz></,HNVA>-HPNPN8\><"yE0<?"Q><N8><N^,_X>NuLOAD_SPRIT?Hz><*/,HNV,A-HPNPA,BP1|}"HnNd><+CE><,NMHn?<-Hn2HnN5h=@0><.N></?<N80><0BgNQ><10.0@d><2><3Hn,Hn?<4NQ=@*><50.*J@f><6><7CE40<G$Q><8C-I,><9><:CENp$Q><;C0E0<?$Q><<><=p3><>><?`&><@><@><ABgN80><B?.*N><C><D><EBgN80><FHn,NIN^,_X>Nu\*.SPTLOAD_PLAYF?Hz><P/,HNV,A-HPNPA,BP1|}"HnN><QCE><RNMHn?<SHn2HnN5h=@0><TN><U?<N80><VBgNQ><W0.0@d><X><YHn,Hn?<ZNQ=@*><[0.*J@fh><\><]CE40<G$Q><^C-I,><_><`C0E0<?$Q><a><bp3><c><d`&><e><e><fBgN80><g?.*N><h><i><jBgN80><kHn,NIN^,_X>Nu\*.PI1STILL_RTN ?Hz><o/,HNVA-HPNPN^,_X>NuUP_RTN ?Hz><s/,HNVAh-HPNP09S@3><t09rAl p3><u"n$n0y2><v"n0J@j"nBQ><wN^,_X> _XNDN_RTN ?Hz><{/,HNVAl-HPNP09S@3><|09rAl p3><}"n$n0y2><~"n0|7m "n27><N^,_X> _XNBTN_UP_RTN?Hz></,HNVAh-HPNP09R@3><09rAo p3><"n$n0y2><"n0J@j"nBQ><N^,_X> _XNBTN_DN_RTN?Hz></,HNVAl-HPNP09R@3><09rAo p3><"n$n0y2><"n0|7m "n27><N^,_X> _XNSET_SPRITE?Hz></,HNVA-HPNPBn><Bn><Bn nn><><><Bn n nn><><><0.2. A=@><0.A;@A1><0.A;@A1><0.@ =@><Rn`><0.@ =@><Bn><Rn`N><N^,_X>NuGO_LOOP ?Hz></,HNVAH-HPNPp3><Bn><><><?<N4|=@><0.`><><N`><><HnN(`v><><HnN`b><><N`R><><HnN`>><><HnN`*><><`>< @b@0;Nr><Hy0Hy><Bg?.><BgBg><?<?<><?<N1><N><?< NAT2|p|@f><N^,_X>NuGO_STICK_R?Hz></,HNVA -HPNPN8\></9/9?<N>#><"yE0<?"Q></9/9?<N#><"yE0<?"Q><#><#></9/9?<N4j><N><N4></9/9?<N8><N^,_X>NuEVENT_RTN ?Hz></,HNVA-HPNP><><?<><?<?<?<><p/><BgBgBgBgBg><BgBgBgBgBg><Hn><Hy><HyHy><HnHn><><HyN:=@><0.rAJ@g><09|r|AfT><N^,_X>NuSTUFF_SCRO?Hz></,HNVA-HPNPBn nn><><><Bn nnZ><><><HyHy0><BgBg><0.@?0.@?><?< ?< ><?<N1><Rn`><Rn`z><N^,_X>NuA#SAS0B1|AT601|><N@VJ@k><><NlJ@fv><></<N#><Nۖ#><N8><N8>< By yn<>< >< 09A@/?9?< ?<CTO$O p QN>>< By>< By><HyHyN/><HyHyN/><Hy0/9N1(><NT><N><N8\><?<CO$O p QNڬ><"yE0<?"Q><CE0<?$Q><N8><N#><Nت#><Nt#><Nf#><By><By><By><By>< By><!By><"By><#By><$N><%By yn4><%?909A@A.?0N~3Ry`><&/9Nצ#><'><(`,><(CHO$OpQ?<N93><)N@><*><+HyT6NIN;:[1][ | LOW REZ ONLY ][ OK ]SCROLL.PI1SCROLL.SPTNuINIT_FORM ?Hz~/,HNVA-HPNP .r=@~ .rr=@~~"n2~"n3n~~"n3|@~ "n3|~!"np3@~""nBi ~#"np3@ ~$N^,_X> _PNINIT_MASK_?Hz~./,HNVA-HPNP .r=@~/ .rr=@~0~1"n2~2"n3n~3~4"np 3@~5"n3|~6"np3@~7"nBi ~8"np3@ ~9N^,_X> _PNINIT_SCROL?Hz~B/,HNVA-HPNP .r=@~C .rr=@~D~E"n2~F"n3n~G~H"n3|~I"n3|~J"np 3@~K"nBi ~L"np3@ ~MN^,_X> _PNCOPY_RECT ?Hz~p/,HNV4A-HPNP .$r=@6~q .$rr=@4~r=n4=n6~t~u . r=@6~v . rr=@4~w=n4=n6~y=n~{~|=nP=nR~}0.nS@=@T~~0.nS@=@V><=nX=nZ><0.nS@=@\><0.nS@=@^><><?<mBg?<?<HnHnHnhHnPHn8BgNB><N^,_X> _ONCOPY_MASK ?Hz></,HNV4A6-HPNP .$r=@6>< .$rr=@4><=n4=n6><>< . r=@6>< . rr=@4><=n4=n6><=n><Bn><p=@><><=nP=nR><0.nS@=@T><0.nS@=@V><=nX=nZ><0.nS@=@\><0.nS@=@^><><?<yBg?<?<HnHnHnhHnPHn8BgNB><N^,_X> _ONa4"h#!|40<a(0<a"Nu0<aa "y!INu?<"NNT @Nu??<?<NM\NuC(AP Nu0<B9 aJ9 g _2|C1|NNu/,HNVNPAJ-Hp=@"n 0.r1JAV0.rdA]CBd0.R@=@`"n 0.S@@N^,_ _XN/,HNVfNPA6-H"nE4p$Q"np)R@rA"n p)=@Bn0.@eR0.J@W"n 0.r1p\@WÄC"n 0.r1p:@WÄCBd p=@` 0.S@=@`Bn0."n r)Al20.R@=@0.R@=@0."n 2.t1A`0.@0.R@rAHnND~-@lHnND~-@p?<ZHnHntHnlHnhNB<0.vJ@f Bn`p=@HnN>HnN6"nE2p"Q"n E2p"Qp.=@Bn0.@eR0.J@W0.rA0p\@WÄC0.rA0p:@WÄCBd p=@` 0.S@=@`p=@p.=@f0.nfn,0.R@=@"n 0.2.tA0Rn`"n 0.@0.N^,_ _PNNu/,HNVtA2-HNP=n-n x?<NHnHnHnxHntNB=n<-n$?<HnHnHnHnNB<=n"n2"n2"n2"n 2"n 2"n20.N^,_ _O` |=X` |=kaJah o`< |=` |=$a. |=2a8 oaa: o `/ |=a _/ |=a _"f/ |=a _`V"nH .g |=`Jk |=` |=aL/ .f^Xt AH aLQa/ |=at&<'HǏf CgJfr `t20/ax$HG faf |=aP _a`/2<$aR _tv"0 :e^H a2LYCQNu3:/ |=|a _?ga `2Nu<|H瀀09:Ry: |<LNu;~;;;Z;b;jBus errorAddress error accessing Attempt to divide by zeroValue out of rangeInteger overflow[3][][ Abort ]Error in Called by PROCEDURE FUNCTION MAIN PROGRAMat line at PC *unknown*Nu/,HNVnAL-HNP?<MHnHnzHnrHnnNB<"n2|"n2~"n2"n 2=nz0.N^,_ _ON/,HNV,A-HNP0. rAg p=@.`$Hn,Hn,Hn,Hn,N\?NC~pd=@.=n p=@ n n0.@rA1Rn`p=@?..Bg?< BgHnHnHn`HnHHn0BgNB=n0.N^,_ _TN/,HNVAV-HNC=@?.NC~=n ?<fBg?<BgHnHn"n/ Hn"n/ BgNB?.NC~N^,_ _O N/,HNV4A-HNC=@6?. NC~?. HnhHn8?<N^0.hJ@g pe=@4`p=@4?.4BgBgBgHnHnHnhHnPHn8BgN>B0. n6g?.6NC~` BgNC~N^,_ _TN/,HNV8A2-HNP?<BgBgBgHnHnHnhHnPHn8BgNBN^,_Nu/,HNVjA-HNPBnj?< HnHnzHnrHnnNB<=nzl0.lrAg?<N=@j?.jNC?.jNC~?34/LxNuHx _0@"_24BAAc1V`t>/LxNuHx _02S@AC2YQ/LxNuHx _02S@AC2YQ/LxNuHx _02S@AC2FAYQ/LxNuB9`PBySr _0g$_jp"_// HNILJ@fP)J9f" f |` f|` f |` f|`4<G BQB) @e *:f&Jrt `e QGITtWJBkZGIl3 J9f g< g6`d f H@?3|NAXNuBySr(_ _/ C (g ( fxJ(ft4($IH / /?(?<?NA LJk,g*fJg  f"J` g  Wf NuJgJ(f P Nu!|Nu4(SBa@J(f8Jg. fJ(f"gr W1Agp f W1A1AQNu(gfJ(fT f6H`?<NAT fHyK\/<?0 @f0"|p` "_J@jp6B@bESBkQ/LNuString overflow _ hNVf 0(gr"OD@Hd2S@k "Q` _"ySte HyPlNAN## .f -|P\`-|P\ nNнf yNStack overruns heapH? _z gBjDRE"g8jDRE$6HBJBg8HAJAf,HBJBf$ւi EdD.` $HB8`B/L?Nu0NvDNH|` H| _z f0NjDRE"g`jDREdJgR(`DfxJg<`DxSDbb JgHA8`"tcRЀ`xeWJg(MdD.`B/LNu09SrNu _3SpNBySrNu[3][4][ Abort ]Copyright 1986, CCD and OSS, Inc.    -.,VTPTL\:@&JjR~  D(&$4@>0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 2 BB <. ( $ >. ( $ >8 X \ X \j,b                ,*< * * , , 0 , " nBB6 < V  <   , FR ( *@ B @ B V   Npp"wffD30 @wMHxHUxUUUUUUUUUUUUUUUUUU?@?@?@Hx `_ `_ `_HUxUUUUUUUUUUUUUUUUUU/`_/`_/`_Hx(`_(`_(`_HUxUUUUUUUUUUUUUUUUUU+c_+c_+c_p+b^HFz+b^HFz+b^HFzp+b^HFz+b^HFz+b^HFzp+b^HFz+b^HFz+b^HFzp+b^HFz+b^HFz+b^HFzp+b^HFz+b^HFz+b^HFzp+b^HFz+b^HFz+b^HFz2pp"wffD30 @w +b^HFz+b^HFz+b^HFzHx"+b^HFz+b^HFz+b^HFzHUxUUUUUUUUUUUUUUUUUU"+b^HFz+b^HFz+b^HFzHx"+b^HFz+b^HFz+b^HFzHUxUUUUUUUUUUUUUUUUUU"+b^HFz+b^HFz+b^HFzHx"+b^HFz+b^HFz+b^HFzHUxUUUUUUUUUUUUUUUUUU"+b^HFz+b^HFz+b^HFzp+b^HFz+b^HFz+b^HFzp+b^HFz+b^HFz+b^HFzp+b^HFz+b^HFz+b^HFzp+b^HFz+b^HFz+b^HFzp+b^HFz+b^HFz+b^HFzp+c_+c_+c_pp"wffD30 @w@(`_(`_(`_B/`_/`_/`_UUUUUUUUUUUUB `_ `_ `_B?@?@?@UUUUUUUUUUUUFvUUUUUUUUUUUU bpp"wffD30 @wMHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUU$pp"wffD30 @wMHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUU$pp"wffD30 @wMHxOHUxUUUUUUUUUUUUUUUUUUOHxDOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUU$pp"wffD30 @wMHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUU$pp"wffD30 @wMHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUU 2pp"wffD30 @wMHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUU$pp"wffD30 @wMHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUU$pp"wffD30 @wMHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUU 2pp"wffD30 @wMHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUU$pp"wffD30 @wMHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUU$pp"wffD30 @wMHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUU kpp"wffD30 @wMHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUU$pp"wffD30 @wMHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUUOHxOHUxUUUUUUUUUUUUUUUUUU ` b NuINIT_FORM ?Hz~/,HNVA-HPN .r=@~ .rr=@~~"n2~"n3n~~"n3|@~ "n3|~!"np3@~""nBi ~#"np3@ ~$N^,_X> _PNINIT_MASK_?Hz~./,HNVA-HPN .r=@~/ .rr=@~0~1"n2~2"n3n~3~4"np 3@~5"n3|~6"np3@~7"nBi ~8"np3@ ~9N^,_X> _PNINIT_SCROL?Hz~B/,HNVA-HPN .r=@~C .rr=@~D~E"n2~F"n3n~G~H"n3|~I"n3|~J"np 3@~K"nBi ~L"np3@ ~MN^,_X> _PNCOPY_RECT ?Hz~p/,HNV4A-HPN .$r=@6~q .$rr=@4~r=n4=n6~t~u . r=@6~v . rr=@4~w=n4=n6~y=n~{~|=nP=nR~}0.nS@=@T~~0.nS@=@V><=nX=nZ><0.nS@=@\><0.nS@=@^><><?<mBg?<?<HnHnHnhHnPHn8BgN><N^,_X> _ONCOPY_MASK ?Hz></,HNV4A6-HPN .$r=@6>< .$rr=@4><=n4=n6><>< . r=@6>< . rr=@4><=n4=n6><=n><Bn><p=@><><=nP=nR><0.nS@=@T><0.nS@=@V><=nX=nZ><0.nS@=@\><0.nS@=@^><><?<yBg?<?<HnHnHnhHnPHn8BgN><N^,_X> _ONINIT_FOR stackchkINIT_MASINIT_SCRhCOPY_RECVDI_CALLCOPY_MASP        ,  ,.{$M+} {$E+} { link this with scroll.o } program addr_stuff; { this is a module to go with scroll.pas - necessary in order to convert addresses to integers } type { these are echos of types in scroll.pas } scrn_memory = packed array[0..31999] of byte; mfdb_fields = (addr1,addr2,wid_pix,ht_pix,wid_wds,flag,num_planes,r1,r2,r3); mfdb = array[mfdb_fields] of integer; PROCEDURE init_form(var form : MFDB; addr : long_integer); { initializes a form to point to a chunk of memory off screen } { note that the caller passes a 32K chunk of memory as what it thinks is a var parameter, thus passing its address } var hi_byte,lo_byte : integer; begin { convert the address to integers } lo_byte := int(addr & $0f); hi_byte := int( ShR(addr,16) & $0f); { and initialize all fields of the MFDB } form[addr1] := hi_byte; form[addr2] := lo_byte; { some assumptions here } form[wid_pix] := 320; { medium or high rez } form[ht_pix] := 200; { medium rez } form[wid_wds] := 20; form[flag] := 0; { device dependent } form[num_planes] := 4; { again, med rez } end; PROCEDURE init_mask_form(var form : MFDB; addr : long_integer); { initializes a form to point to a chunk of memory off screen } var hi_byte,lo_byte : integer; begin { convert the address to integers } lo_byte := int(addr & $0f); hi_byte := int( ShR(addr,16) & $0f); { and initialize all fields of the MFDB } form[addr1] := hi_byte; form[addr2] := lo_byte; { some assumptions here } form[wid_pix] := 32; { medium or high rez } form[ht_pix] := 1920; { medium rez } form[wid_wds] := 2; form[flag] := 0; { device dependent } form[num_planes] := 1; { again, med rez } end; PROCEDURE init_scroll_form(var form : MFDB; addr : long_integer); { initializes a form to point to a 64K chunk of memory off screen } var hi_byte,lo_byte : integer; begin { convert the address to integers } lo_byte := int(addr & $0f); hi_byte := int( ShR(addr,16) & $0f); { and initialize all fields of the MFDB } form[addr1] := hi_byte; form[addr2] := lo_byte; { some assumptions here } { custom screen memory 160 X 1024 pixels ) form[wid_pix] := 160; { low rez pixels} form[ht_pix] := 1024; { low rez pixels} form[wid_wds] := 10; form[flag] := 0; { device dependent } form[num_planes] := 4; { again, low rez } end; PROCEDURE copy_rect(src,dst : long_integer; from_x,from_y,to_x,to_y,width,height,mode : integer); { heres where we actually copy a rectangle from one loc. to another } { using gem raster copy function } TYPE Ctrl_Parms = ARRAY [ 0..11 ] OF integer ; Int_In_Parms = ARRAY [ 0..15 ] OF integer ; . Int_Out_Parms = ARRAY [ 0..45 ] OF integer ; Pts_In_Parms = ARRAY [ 0..11 ] OF integer ; Pts_Out_Parms = ARRAY [ 0..11 ] OF integer ; VAR control : Ctrl_Parms ; int_in : Int_In_Parms ; int_out : Int_Out_Parms ; pts_in : Pts_In_Parms ; pts_out : Pts_Out_Parms ; hi_byte,lo_byte : integer; PROCEDURE VDI_Call( cmd, sub_cmd : integer ; nints, npts : integer ; VAR ctrl : Ctrl_Parms ; VAR int_in : Int_In_Parms ; VAR int_out : Int_Out_Parms ; VAR pts_in : Pts_In_Parms ; VAR pts_out : Pts_Out_Parms ; translate : boolean ) ; EXTERNAL ; begin { put source MFDB address in control array } lo_byte := int(src & $0f); hi_byte := int( ShR(src,16) & $0f); control[7] := hi_byte; control[8] := lo_byte; { and same for destination MFDB } lo_byte := int(dst & $0f); hi_byte := int( ShR(dst,16) & $0f); control[9] := hi_byte; control[10] := lo_byte; int_in[0] := mode; { mode } { set the points for src and dest } pts_in[0] := from_x; pts_in[1] := from_y; pts_in[2] := from_x + width - 1; pts_in[3] := from_y + height - 1; pts_in[4] := to_x; pts_in[5] := to_y; pts_in[6] := to_x + width - 1; pts_in[7] := to_y + height - 1; { do the copy } VDI_Call(109,0,1,8,control,int_in,int_out,pts_in,pts_out,false); end; PROCEDURE copy_mask(src,dst : long_integer; from_x,from_y,to_x,to_y,width,height,mode : integer); { heres where we actually copy a rectangle from one loc. to another } { using gem raster copy function } TYPE Ctrl_Parms = ARRAY [ 0..11 ] OF integer ; Int_In_Parms = ARRAY [ 0..15 ] OF integer ; Int_Out_Parms = ARRAY [ 0..45 ] OF integer ; Pts_In_Parms = ARRAY [ 0..11 ] OF integer ; Pts_Out_Parms = ARRAY [ 0..11 ] OF integer ; VAR control : Ctrl_Parms ; int_in : Int_In_Parms ; int_out : Int_Out_Parms ; pts_in : Pts_In_Parms ; pts_out : Pts_Out_Parms ; hi_byte,lo_byte : integer; PROCEDURE VDI_Call( cmd, sub_cmd : integer ; nints, npts : integer ; VAR ctrl : Ctrl_Parms ; VAR int_in : Int_In_Parms ; VAR int_out : Int_Out_Parms ; VAR pts_in : Pts_In_Parms ; VAR pts_out : Pts_Out_Parms ; translate : boolean ) ; EXTERNAL ; begin { put source MFDB address in control array } lo_byte := int(src & $0f); hi_byte := int( ShR(src,16) & $0f); control[7] := hi_byte; control[8] := lo_byte; { and same for destination MFDB } lo_byte := int(dst & $0f); hi_byte := int( ShR(dst,16) & $0f); control[9] := hi_byte; control[10] := lo_byte; int_in[0] := mode; { reverse xparent mode } int_in[1] := 0; { Color index set point } int_in[2] := 1; { Color index unset point } { set the points for src and dest } pts_in[0] := from_x; pts_in[1] := from_y; pts_in[2] := from_x + width - 1; pts_in[3] := from_y + height - 1; pts_in[4] := to_x; pts_in[5] := to_y; pts_in[6] := to_x + width - 1; pts_in[7] := to_y + height - 1; { do the copy } VDI_Call(121,0,1,8,control,int_in,int_out,pts_in,pts_out,false); end; { just a module, no main program } begin end. -wpp"wffD30 @%$%$%$% DDDDDDDDG;DG;DG;DG!;D """"""""#?"#?"#?"#!?" !$%  $           DDDDDDDDDD""""""""""          -                              wwwwww;DGG;DDDDDDGDpp?"##?""""""#"?ttvv`ss`uu`vv``ss`uu`vv^ |`ss`uu`vv``ss`uu`vv66ww6ww6ww55DD5݊""55ww  ww  ww    DGD pp;DGDDDDDDDDDD ;D"#"? tt?"#"""""""""" ?" vv   )ss Quu Qvv Q Qss Quu Qvv Q Qss Quu Qvv & + Qss Quu Qvv (  ww  ww  ww    DD  ݊""              GG;DG;D ;DG;D DDDDG##?"#?" ?"#?" """"#      H`````````````> ^"$                    DDDDDDDDDDDDD""""""""DDDDDDDDDDDDDDDDDDDD DDDDDDDwpp"wffD30 @DD""ww@@?DDODD;DDDĻDDDDDDD?D@""0]"]"""?"""""4$,(t" "f3n /nf30wwwtwwu@xxff33;DD_;DJ H 0ff33]""?"c#@P@ff33oxxA"" C ff33wxx  j+P+Pff33?;xx_? ?( ff33?]xx߀?? ?2k(ff33?ogxx? ? @A,ff33?wgxx~? ?  ff33`;gxx_? ?E ff33 ]gxx?? ? *``ff33 ogxx? ?QQHH00ff33@wgxxp? ?f ff33P;gxxX? ?P@p `@ff33?]gxx0? ?GDH@ff33ogxx? ?DD o_ b@_????o??_@?o$$$ ;DDDDDDDDDD ]"""""""""" n!ww`"݀"@"$""www!;ĻDPĻD@"݀"@ĻDDwwv]"0?"wwwpww"݀"@@?"";ĻDEwwwĻD@DDĻD@ww]"#DDD????wwĻD@ n"""?_????ĻD@??O _???????/ ?????? _?????? o?_???????O _???????/ ?????? _h?????? o?_???????O _???????/ ?????? _? o_?O ?/ ? _  o O / ? _  o ?? ??[ [ [ [ cc cc ww ww7wwww7 77W DDDDW WW g @""""g gg w@w ww7wp_ww`77737tw w;ĻDPWwww?wwwwwwWWv D]"0gDDDDDDDDDggG37t"@nw"""u""""""ww#37t_07O7737t ?WW /WW37t gg gg37t?ww www37t??77 O7737t ?WW /WW37t gg gg37t?ww www37t??77 O7737t ?WW /WW gg gg37t?w www37t??7 70 @W W!g @g g!w@w w!77 7!WW W!gg g!ww wDDDD""""????????????????????????????????????????????^"D5 1 1pDDDDDDDD1`"""""""""   ?? ???? ` ?????0?????`xx G ????1< = ??????!? ?????? #? ??????#? ??????;G ??????'? ??????'?? ????/? ????  ??;DG ???"#?? 111??1??15 D>Cwpp"wffD30 @nppQCQCQ9   QA 8  @@P@@ r @@) ;;; @@0"   n x "  @@ !p @@ "p @p@@?! 0zN @rr@@?z@@@ z @@΀! <0<@@@ *@&2OO@@x`x@ : @!B <pp0? @/ Pz?@ @>>ee 00$`/`@/ :op@`@ ? / 0>A 0??00  @ ` ~p ,|`   @@@ !@ B"  @@@@@A 8  <0<) AA22 @?p x`x)Y @ 000- 88} 8F ?| <`P   > >@$$ W W8p9VRR    R@@@@R@@@@V@@@@@@@@U@@@@@@@@BG@U@@@@@@@@@g U@@@@@@@@ aAU     ~U 00 00 00 00o VUh` U00 00 00 00  U|`````|| U???f3@UwwwL`U??U>>>P{``{P?88?Q    aaa&{$P-} { turn pointer checking off.. } Program shell; (* Link this program with SPR2.O *) CONST (*$I gemconst.pas *) (* Include all the GEM constants *) Desk_Title = 3; (* Value for Desk menu item *) files = 0; (* File attribute for a file *) volumes = 8; (* File attribute for the volume *) folders = 16; (* File attribute for a folder *) xx_max = 99; (* x axis of level *) yy_max = 59; (* y axis of level *) max_levels = 5; (* # of levels *) TYPE ALBLOCK = array[0..3] of long_integer; BUF_TYPE = PACKED ARRAY[0..255] OF CHAR; BUFI_TYPE = PACKED ARRAY[0..255] OF INTEGER; { The ST screen is 32000 bytes of data, so. } scrn_memory = packed array [ 0..31999 ] of BYTE; degas_pic = record rez : integer; pal : array [0..15] of integer; scr : scrn_memory; end; degas_file = file of degas_pic; ptr_screen = ^scrn_memory; { pointer to the screen array } c_pallet = array[0..15] of integer; pallet = record pal0 : c_pallet; end; p_file = file of pallet; mfdb_fields = (addr1,addr2,wid_pix,ht_pix,wid_wds,flag,num_planes,r1,r2,r3); mfdb = array[mfdb_fields] of integer; p_name = packed array[0..63] of char; level = array[0..xx_max] of array[0..yy_max] of integer; file_rec = record frec : level; end; scrn_file = file of file_rec; (*$I gemtype.pas *) VAR s_ptr : ptr_screen; { a pointer to a packed array of bytes... } dummy,x : integer; scr1 : scrn_memory; scr2 : scrn_memory; scr3 : scrn_memory; scr4 : scrn_memory; rez1 : integer; pal1 : c_pallet; pal2 : c_pallet; current_pallet : c_pallet; pic : degas_pic; fr : file_rec; fr1 : file_rec; fr2 : file_rec; fr3 : file_rec; fr4 : file_rec; fr5 : file_rec; mainscreen,screen,sprite,sprite1,sprite2 : MFDB; msg : Message_Buffer; (* GEM message buffer *) Info_Box : Dialog_Ptr; (* Need this for Dialog Box *) out_char : char; (* Used to display characters 2to the screen *) sf, info_item, ok_button, button, event_val, event, mouse_x, (* x value of mouse when button pressed *) mouse_y, (* y value of mouse *) what_key, (* Key pressed and processed *) key_lo, (* Low order byte of key *) key_hi, (* High order byte of key *) hx, (* Hold the maximum screen values for WM_Fulled message *) hy, hw, hh, xm, (* Screen work area after we open the window *) ym, wm, hm, cw, (* Character size, width, height and the box size *) ch, bw, bh, MX, MY, MW, MH, cur_x, (* Cursor position for displaying to the screen *) cur_y, zeron, (* Device zero is the printer *) escn, onescol, tenscol, c_cnt, time_bar, from_frame, btn_state, scx,scy, scn, what_sprite, curent_level, y : integer; screen_flag, copy_flag, enter, mirrorh_flag, mirrorv_flag, r1_flag, QUIT_FLAG : BOOLEAN; sline1, sline2, sline3, sline4, sline5, sline6, sline7, sline8, sline9, sline10 : str255; frame_loc : array[0..59] of array[1..4] of integer; frame_str : str255; temp_str : str255; frame : integer; fpath : p_name; fname : path_name; scrn_aray1 : level; scrn_aray2 : level; scrn_aray3 : level; scrn_aray4 : level; scrn_aray5 : level; (*$I gemsubs.pas *) (* Include all GEM subr>outines *) Function Get_cur_disk : integer; GEMDOS( $19 ); Procedure get_free_space(var buffer : alblock; disk : integer ); GEMDOS( $36 ); Function IO_Result : integer; EXTERNAL; Procedure IO_Check( b : boolean ); EXTERNAL; { physbase returns a pointer to the start of the ST's screen. } FUNCTION physbase : ptr_screen; XBIOS( 2 ); function set_colr( reg,col : integer ) : integer; xbios(7); FUNCTION GETREZ : INTEGER; XBIOS($4); Procedure wvbl; XBIOS( 37 ); Procedure init_form(var form :mfdb; var addr : scrn_memory ); EXTERNAL; Procedure copy_rect( var s,d : mfdb; from_x,from_y,to_x,to_y,wid,ht : integer); EXTERNAL; { Text_Height - Set the height in pixels of text, when it is drawn using the Draw_String library call. } PROCEDURE Text_Height( height : integer ) ; TYPE Ctrl_Parms = ARRAY [ 0..11 ] OF integer ; Int_In_Parms = ARRAY [ 0..15 ] OF integer ; Int_Out_Parms = ARRAY [ 0..45 ] OF integer ; Pts_In_Parms = ARRAY [ 0..11 ] OF integer ; Pts_Out_Parms = ARRAY [ 0..11 ] OF integer ; VAR control : Ctrl_Parms ; int_in : Int_In_Parms ; int_out : Int_Out_Parms ; pts_in : Pts_In_Parms ; pts_out : Pts_Out_Parms ; PROCEDURE VDI_Call( cmd, sub_cmd : integer ; nints, npts : integer ; VAR ctrl : Ctrl_Parms ; VAR int_in : Int_In_Parms ; VAR int_out : Int_Out_Parms ; VAR pts_in : Pts_In_Parms ; VAR pts_out : Pts_Out_Parms ; translate : boolean ) ; EXTERNAL ; BEGIN pts_in[0] := 0 ; pts_in[1] := height ; VDI_Call(12, 0, 0, 2, control, int_in, int_out, pts_in, pts_out, false); END ; { Get_Height - Get the height in pixels of text, when it is drawn using the Draw_String library call. } FUNCTION Get_Height : integer ; TYPE Ctrl_Parms = ARRAY [ 0..11 ] OF integer ; Int_In_Parms = ARRAY [ 0..15 ] OF integer ; Int_Out_Parms = ARRAY [ 0..45 ] OF integer ; Pts_In_Parms = ARRAY [ 0..11 ] OF integer ; Pts_Out_Parms = ARRAY [ 0..11 ] OF integer ; VAR control : Ctrl_Parms ; int_in : Int_In_Parms ; int_out : Int_Out_Parms ; pts_in : Pts_In_Parms ; pts_out : Pts_Out_Parms ; PROCEDURE VDI_Call( cmd, sub_cmd : integer ; nints, npts : integer ; VAR ctrl : Ctrl_Parms ; VAR int_in : Int_In_Parms ; VAR int_out : Int_Out_Parms ; VAR pts_in : Pts_In_Parms ; VAR pts_out : Pts_Out_Parms ; translate : boolean ) ; EXTERNAL ; BEGIN VDI_Call(131, 0, 0, 0, control, int_in, int_out, pts_in, pts_out, false); Get_Height := pts_out[9] ; END ; FUNCTION Get_pixel(x,y : integer) : integer ; TYPE Ctrl_Parms = ARRAY [ 0..11 ] OF integer ; Int_In_Parms = ARRAY [ 0..15 ] OF integer ; Int_Out_Parms = ARRAY [ 0..45 ] OF integer ; Pts_In_Parms = ARRAY [ 0..11 ] OF integer ; Pts_Out_Parms = ARRAY [ 0..11 ] OF integer ; VAR control : Ctrl_Parms ; int_in : Int_In_Parms ; int_out : Int_Out_Parms ; pts_in : Pts_In_Parms ; pts_out : Pts_Out_Parms ; PROCEDURE VDI_Call( cmd, sub_cmd : integer ; nints, npts : integer ; VAR ctrl : Ctrl_Parms ; VAR int_in : Int_In_Parms ; VAR int_out : Int_Out_Parms ; VAR pts_in : Pts_In_Parms ; VAR pts_out : Pts_Out_Parms ; translate : boolean ) ; EXTERNAL ; BEGIN pts_in[0] := x; pts_in[1] := y; VDI_Call(105, 0, 0, 2, control, int_in, int_out, pts_in, pts_out, false); Get_pixel := int_out[1] ; END ; PROCEDURE SRestore( name : STRING ); VAR f : degas_file; { a file containing a screenful of bytes.. } x : integer; BEGIN reset( f, name ); pic := f^; with pic do begin rez1 := pic.rez; pal1 := pic.pal; scr1 := pic.scr; end; for x := 0 to 15 do dummy := set_colr(x,pal1[x]); current_pallet := pal1; { reset automatically fills file buffer with data from first record } s_ptr^ := scr1; { and assign file buffer to screen } { file is automatically closed when we leave this procedure. } END; PROCEDURE str( n: integer; VAR s: str255 ); VAR digit, (* Holds each digit value of 'n' as it is created *) divisor, (* Division by this is used to find each digit *) i: integer; (* Index in string at which to put next character *) leading: boolean; (* True, if the next digit will be the leading digit *) (* add_char - Add a single character to the string, incrementing the curren index. *) PROCEDURE add_char( c: char ); BEGIN i := i + 1; s[i] := c; END; BEGIN (* str - main routine *) i := 0; (* Start at the beginning of the string *) IF n < 0 THEN (* If the number is negative, add a minus sign *) BEGIN add_char( '-' ); n := -n; END; divisor := 10; leading := true; WHILE divisor > 0 DO BEGIN digit := n DIV divisor; IF (digit <> 0) OR NOT( leading ) THEN BEGIN add_char( chr(digit + ord('0')) ); leading := false; END; n := n MOD divisor; divisor := divisor DIV 10; END; IF i = 0 THEN add_char( '0' ); s[0] := chr(i); END; FUNCTION val( s: str255 ): integer; VAR minus: boolean; i,n : integer; BEGIN i := 1; WHILE (i < length(s)) AND (s[i] = ' ') DO i := i + 1; n := 0; IF length(s) >= i THEN BEGIN IF s[i] <> '-' THEN minus := false ELSE BEGIN minus := true; i := i + 1; END; WHILE (i <= length(s)) AND (s[i] IN ['0'..'9']) DO BEGIN n := (n * 10) + ord(s[i]) - ord('0'); i := i + 1; END; IF minus THEN n := -n; END; val := n; END; Procedure bconout(dev, c:integer); (* Put a character to a device *) BIOS(3); (* Necessary for esc character *) PROCEDURE draw_menu_str; var st1,st2,st3,st4,st5,st6,st7,st8,st9 : str255; begin str(scx,st1); str(scy,st2); str(scn,st8); str(curent_level,st3); st4 := 'LEVEL '; st5 := ' X = '; st6 := ' Y = '; st7 := ' SPRITE = '; st9 := concat(st4,st3,st5,st1,st6,st2,st7,st8); draw_string(0,199,st9); end; Procedure build_screen; VAR Y,X : INTEGER; begin s_ptr^ := scr1; { and assign file buffer to screen } end; Procedure Do_Redraw; begin Hide_Mouse; build_screen; Show_Mouse; end; Procedure screen_backup; begin hide_mouse; show_mouse; end; Procedure error_rtn(error : integer); begin case error of 1: dummy := do_alert('[3][DISK ERROR # 1][ OK ]',1); 2: dummy := do_alert('[3][DISK ERROR # 2][ OK ]',1); 3: dummy := do_alert('[3][DISK ERROR # 3][ OK ]',1); 4: dummy := do_alert('[3][DISK ERROR # 4][ OK ]',1); 5: dummy := do_alert('[3][DISK ERROR # 5][ OK ]',1); 6: dummy := do_alert('[3][DISK ERROR # 6][ OK ]',1); 7: dummy := do_alert('[3][DISK ERROR # 7][ OK ]',1); 8: dummy := do_alert('[3][DISK ERROR # 8][ OK ]',1); 9: dummy := do_alert('[3][BAD FILENAME][ OK ]',1); 10: dummy := do_alert('[3][DISK ERROR # 10][ OK ]',1); 11: dummy := do_alert('[3][DISK ERROR # 11][ OK ]',1); -1: dummy := do_alert('[3][TOS ERROR # 1][ OK ]',1); -2: dummy := do_alert('[3][DRIVE NOT READY][ OK ]',1); -3: dummy := do_alert('[3][UNKNOWN ERROR][ OK ]',1); -4: dummy := do_alert('[3][CRC ERROR][ OK ]',1); -5: dummy := do_alert('[3][BAD REQUEST][ OK ]',1); -6: dummy := do_alert('[3][SEEK ERROR][ OK ]',1); -7: dummy := do_alert('[3][UNKNOWN MEDIA][ OK ]',1); -8: dummy := do_alert('[3][SECTOR NOT FOUND][ OK ]',1); -9: dummy := do_alert('[3][TOS ERROR # 9][ OK ]',1); -10: dummy := do_alert('[3][WRITE FAULT][ OK ]',1); -11: dummy := do_alert('[3][READ FAULT][ OK ]',1); -12: dummy := do_alert('[3][GENERAL ERROR][ OK ]',1); -13: dummy := do_alert('[3][WRITE PROTECTED][ OK ]',1); -14: dummy := do_alert('[3][MEDIA CHANGE][ OK ]',1); -15: dummy := do_alert('[3][UNKNOWN DEVICE][ OK ]',1); -16: dummy := do_alert('[3][BAD SECTOR ON FORMAT][ OK ]',1); -17: dummy := do_alert('[3][DISK CHANGE][ OK ]',1); -32: dummy := do_alert('[3][INVALID FUNCTION NUMBER][ OK ]',1); -33: dummy := do_alert('[3][FILE NOT FOUND][ OK ]',1); -34: dummy := do_alert('[3][PATH NOT FOUND][ OK ]',1); -35: dummy := do_alert('[3][TOO MANY OPEN FILES][ OK ]',1); -36: dummy := do_alert('[3][ACCESS DENIED][ OK ]',1); -39: dummy := do_alert('[3][NOT ENOUGH MEMORY][ OK ]',1); -40: dummy := do_alert('[3][INVALID BLOCK ADDRESS][ OK ]',1); -46: dummy := do_alert('[3][INVALID DRIVE][ OK ]',1); -49: dummy := do_alert('[3][NO MORE FILES][ OK ]',1); -64: dummy := do_alert('[3][RANGE ERROR][ OK ]',1); -65: dummy := do_alert('[3][INTERNAL ERROR][ OK ]',1); -66: dummy := do_alert('[3][INVALID LOAD FORMAT][ OK ]',1); -67: dummy := do_alert('[3][SETBLOCK FAILURE][ OK ]',1); OTHERWISE : DUMMY := DO_ALERT('[3][UNKNOWN ERROR][ OK ]',1); end; end; Procedure get_default( var str1 : path_name); var x : integer; begin x := get_cur_disk; case x of 0: str1 := 'A:'; 1: str1 := 'B:'; 2: str1 := 'C:'; 3: str1 := 'D:'; 4: str1 := 'E:'; 5: str1 := 'F:'; 6: str1 := 'G:'; 7: str1 := 'H:'; 8: str1 := 'I:'; 9: str1 := 'J:'; 10: str1 := 'K:'; 11: str1 := 'L:'; 12: str1 := 'M:'; 13: str1 := 'N:'; 14: str1 := 'O:'; 15: str1 := 'P:'; OTHERWISE : STR1 := 'A:'; end; end; Function check_space(x : integer ; str1 : path_name) : boolean; var ch : char; y : integer; block : ALBLOCK; fa,ta,bps,spa,ans : long_integer; begin ch := str1[1]; if ch = 'A' then y := 1; if ch = 'a' then y := 1; if ch = 'B' then y := 2; if ch = 'b' then y := 2; if ch = 'C' then y := 3; if ch = 'c' then y := 3; if ch = 'D' then y := 4; if ch = 'd' then y := 4; if ch = 'E' then y := 5; if ch = 'e' then y := 5; if ch = 'F' then y := 6; if ch = 'f' then y := 6; if ch = 'G' then y := 7; if ch = 'g' then y := 7; if ch = 'H' then y := 8; if ch = 'h' then y := 8; if ch = 'I' then y := 9;  if ch = 'i' then y := 9; if ch = 'J' then y := 10; if ch = 'j' then y := 10; if ch = 'K' then y := 11; if ch = 'k' then y := 11; if ch = 'L' then y := 12; if ch = 'l' then y := 12; if ch = 'M' then y := 13; if ch = 'm' then y := 13; if ch = 'N' then y := 14; if ch = 'n' then y := 14; if ch = 'O' then y := 15; if ch = 'o' then y := 15; if ch = 'P' then y := 16; if ch = 'p' then y := 16; get_free_space(block,y); fa := block[0] * block[2] * block[3]; case x of 1: begin if fa < 1024 then begin check_space := false; dummy := do_alert('[3][ |THIS DISK DOES NOT|HAVE ENOUGH R00M][ OK ]',1); end else check_space := true; end; 2: begin if fa < 32768 then begin check_space := false; dummy := do_alert('[3][ |THIS DISK DOES NOT|HAVE ENOUGH R00M][ OK ]',1); end else check_space := true; end; end; end; Function check_original(filename : path_name): boolean; TYPE ck = record ck1 : integer; end; ck2 = file of ck; var f : ck2; error : integer; begin io_check(false); reset(f,filename); error := io_result; if error = 0 then begin check_original := false; end else check_original := true; end; Procedure scram_int(scrn,loc: integer; var value : integer); var temp : integer; begin temp := scrn & $00FF; scrn := shl(temp,8); value := scrn|loc; end; Procedure desc_int(var value,scrn,loc : integer); var temp : integer; begin loc := value & $00FF; temp := value & $FF00; scrn := shr(temp,8); end; Procedure build_screen_rtn; var from_loc,to_loc,x,y,temp,scrn : integer; begin hide_mouse; for y := 0 to 5 do begin for x := 0 to 9 do begin to_loc := (y*10)+x; case curent_level of 1 : temp := scrn_aray1[scx+x,scy+y]; 2 : temp := scrn_aray2[scx+x,scy+y]; 3 : temp := scrn_aray3[scx+x,scy+y]; 4 : temp := scrn_aray4[scx+x,scy+y]; 5 : temp := scrn_aray5[scx+x,scy+y]; end; desc_int(temp,scrn,from_loc); if scrn = 0 then copy_rect(sprite,mainscreen, frame_loc[from_loc,1],frame_loc[from_loc,2], frame_loc[to_loc,1],frame_loc[to_loc,2], 32,32); if scrn = 1 then copy_rect(sprite1,mainscreen, frame_loc[from_loc,1],frame_loc[from_loc,2], frame_loc[to_loc,1],frame_loc[to_loc,2], 32,32); if scrn = 2 then copy_rect(sprite2,mainscreen, frame_loc[from_loc,1],frame_loc[from_loc,2], frame_loc[to_loc,1],frame_loc[to_loc,2], 32,32); end; end; S_PTR^ := SCR1; draw_menu_str; show_mouse; end; Procedure Load_sprite; var f : degas_file; x,error : integer; def_path,filename,STR1 : path_name; t : boolean; begin screen_backup; get_default(str1); filename := ''; def_path := CONCAT(STR1,'\*.SPT'); t := get_in_file(def_path,filename); do_redraw; set_mouse(M_Bee); IO_check(false); if t then begin reset( f, filename ); error := IO_result; if error = 0 then begin pic := f^; with pic do begin rez1 := pic.rez; pal1 := pic.pal; if what_sprite = 0 then scr2 := pic.scr; if what_sprite = 1 then scr3 := pic.scr; if what_sprite = 2 then scr4 := pic.scr; end; for x := 0 to 15 do dummy := set_colr(x,pal1[x]); current_pallet := pal1; end else begin set_mouse(M_Arrow); error_rtn(error); end; end; set_mouse(M_Arrow); end; Procedure Load_map; var f : scrn_file; x,error : integer; def_path,filename,STR1 : path_name; t : boolean; begin screen_backup; get_default(str1); filename := ''; def_path := CONCAT(STR1,'\*.MAP'); t := get_in_file(def_path,filename); do_redraw; set_mouse(M_Bee); IO_check(false); if t then begin reset( f, filename ); error := IO_result; if error = 0 then begin fr1 := f^; get(f); fr2 := f^; get(f); fr3 := f^; get(f); fr4 := f^; get(f); fr5 := f^; with fr1 do begin scrn_aray1 := frec; end; with fr2 do begin scrn_aray2 := frec; end; with fr3 do begin scrn_aray3 := frec; end; with fr4 do begin scrn_aray4 := frec; end; with fr5 do begin scrn_aray5 := frec; end; build_screen_rtn; end else begin set_mouse(M_Arrow); error_rtn(error); end; end; set_mouse(M_Arrow); end; Procedure Save_map; var f : scrn_file; x,error : integer; def_path,filename,str1 : path_name; t,orig : boolean; begin screen_backup; get_default(str1); filename := ''; def_path := CONCAT(STR1,'\*.MAP'); t := get_in_file(def_path,filename); do_redraw; IO_check(false); set_mouse(M_Bee); if t then begin orig := check_original(filename); if orig then begin if t then t := check_space(2,filename); end; end; if t then begin with fr1 do begin frec := scrn_aray1; end; with fr2 do begin frec := scrn_aray2; end; with fr3 do begin frec := scrn_aray3; end; with fr4 do begin frec := scrn_aray4; end; with fr5 do begin frec := scrn_aray5; end; rewrite(f,filename); error := IO_Result; if error = 0 then begin f^ := fr1; put(f); f^ := fr2; put(f); f^ := fr3; put(f); f^ := fr4; put(f); f^ := fr5; put(f); end else begin set_mouse(M_Arrow); error_rtn(error); end; end; set_mouse(M_Arrow); end; (* If we get a message from GEM that our window is now to be the front window, then this routine will bring it to the front. *) (* So you want to build a DIALOG BOX. Here's how you do it *) Procedure infodial; var str1 : str255; begin set_mouse(M_arrow); sf := System_Font; str1 := ' THE SPRITE FACTORY '; STR1[1] := CHR(14); STR1[2] := CHR(15); STR1[25] := CHR(14); STR1[26] := CHR(15); Info_Box := New_Dialog(15,0,0,38,18); info_item := Add_DItem(Info_Box,G_Text,None,1,1,36,1,0,$1180); Set_DText(Info_Box,info_item,STR1,sf,TE_Center); info_item := Add_DItem(Info_Box,G_Text,None,1,3,36,1,0,$1180); Set_DText(Info_Box,info_item,'by M.F. HOLLENBECK',sf,TE_Center); STR1 := 'Copyright 1986'; str1[11] := chr(189); info_item := Add_DItem(Info_Box,G_Text,None,1,5,36,1,0,$1180); Set_DText(Info_Box,info_item,str1,sf,TE_Center); info_item := Add_DItem(Info_Box,G_Text,None,1,7,36,1,0,$1180); Set_DText(Info_Box,info_item,'Version BETA 1.0',sf,TE_Center); info_item := Add_DItem(Info_Box,G_Text,None,1,9,36,1,0,$1180); Set_DText(Info_Box,info_item,'Program Writen in',sf,TE_Center); info_item := Add_DItem(Info_Box,G_Text,None,1,10,36,1,0,$1180); Set_DText(Info_Box,info_item,'O.S.S Personal Pascal',sf,TE_Center); info_item := Add_DItem(Info_Box,G_Text,None,1,11,36,1,0,$1180); Set_DText(Info_Box,info_item,'Portions of this program',sf,TE_Center); str1 := 'Copyright 1986 OSS & CCD'; str1[11] := chr(189); info_item := Add_DItem(Info_Box,G_Text,None,1,12,36,1,0,$1180); Set_DText(Info_Box,info_item,str1,sf,TE_Center); info_item := Add_DItem(Info_Box,G_Text,None,1,13,36,1,0,$1180); Set_DText(Info_Box,info_item,'Used by permission of OSS.',sf,TE_Center); ok_button := Add_DItem(Info_Box,G_Button,Selectable|Exit_Btn|Default, 14,15,8,2,2,$1180); Set_DText(Info_Box,ok_button,'OK',sf,TE_Center); Center_Dialog(Info_Box); button := Do_Dialog(Info_Box,0); End_Dialog(Info_Box); Delete_Dialog(Info_Box); DO_REDRAW; set_mouse(M_ARROW); end; Procedure esc_char; begin dummy := do_alert('[1][ |ARE YOU SURE YOU|WANT TO QUIT ?][ YES | NO ]',1); IF dummy = 1 then quit_flag := true; set_mouse(M_arrow); end; Procedure set_sprite_table; var x,y,tx,ty,bx,by,num : integer; begin tx := 0; ty := 0; bx := 31; by := 31; for y := 0 to 5 do begin for x := 0 to 9 do begin num := x+(y*10); frame_loc[num,1] := tx; frame_loc[num,2] := ty; frame_loc[num,3] := bx; frame_loc[num,4] := by; tx := tx + 32; bx := bx + 32; end; ty := ty + 32; by := by + 32; tx := 0; bx := 31; end; end; Procedure screen_flip; begin hide_mouse; SCREEN_FLAG := NOT SCREEN_FLAG; IF SCREEN_FLAG THEN S_PTR^ := SCR1; IF SCREEN_FLAG = FALSE THEN begin if scn = 0 then S_PTR^ := SCR2; if scn = 1 then S_PTR^ := SCR3; if scn = 2 then S_PTR^ := SCR4; line_color(1); draw_mode(1); line_style(2); line(0 , 0,319, 0); line(0 , 31,319, 31); line(0 , 63,319, 63); line(0 , 95,319, 95); line(0 ,127,319,127); line(0 ,159,319,159); line(0 ,191,319,191); line( 0, 0, 0,191); line( 31, 0, 31,191); line( 63, 0, 63,191); line( 95, 0, 95,191); line(127, 0,127,191); line(159, 0,159,191); line(191, 0,191,191); line(223, 0,223,191); line(255, 0,255,191); line(287, 0,287,191); line(319, 0,319,191); end; draw_menu_str; show_mouse; end; Procedure page_up_rtn; begin if scy < 6 then scy := 0 else scy := scy - 6; end; Procedure page_down_rtn; begin if scy > (yy_max-12) then scy := (yy_max - 6) else scy := scy + 6; end; Procedure page_left_rtn; begin if scx < 10 then scx := 0 else scx := scx - 10; end; Procedure page_right_rtn; begin if scx > (xx_max-20) then scx := (xx_max - 10) else scx := scx + 10; end; Procedure up_rtn; begin if screen_flag then begin if key_lo <> 56 then begin if scy > 0 then scy := scy - 1; end else page_up_rtn; build_screen_rtn; end; end; Procedure down_rtn; begin if screen_flag then begin if key_lo <> 50 then begin if scy < (yy_max-6) then scy := scy + 1; end else page_down_rtn; build_screen_rtn; end; end; Procedure left_rtn; begin if screen_flag then begin if key_lo <> 52 then begin if scx > 0 then scx := scx - 1; end else page_left_rtn; build_screen_rtn; end; end; Procedure right_rtn; begin if screen_flag then begin if key_lo <> 54 then begin if scx < (xx_max-10) then scx := scx + 1; end else page_right_rtn; build_screen_rtn; end; end; Procedure home_rtn; begin if screen_flag then begin if curent_level < 5 then curent_level := curent_level + 1 else curent_level := 5; build_screen_rtn; end; end; Procedure insrt_rtn; begin if screen_flag then begin if curent_level > 1 then curent_level := curent_level - 1 else curent_level := 1; build_screen_rtn; end; end; Procedure f1_rtn; begin if ((screen_flag = true) OR (scn = 0)) then begin scn := 0; screen_flip; end else begin screen_flag := true; scn := 0; screen_flip; end; end; Procedure f2_rtn; begin if ((screen_flag = true) OR (scn = 1)) then begin scn := 1; screen_flip; end else begin screen_flag := true; scn := 1; screen_flip; end; end; Procedure f3_rtn; begin if ((screen_flag = true) OR (scn = 2)) then begin scn := 2; screen_flip; end else begin screen_flag := true; scn := 2; screen_flip; end; end; Procedure f4_rtn; begin load_map; build_screen_rtn; end; Procedure f5_rtn; begin save_map; build_screen_rtn; end; Procedure f6_rtn; begin dummy := do_alert('[1][LOAD SPRITE FILE ! ][ F1 | F2 | F3 ]',1); if dummy = 1 then what_sprite := 0 ; if dummy = 2 then what_sprite := 1 ; if dummy = 3 then what_sprite := 2 ; load_sprite; build_screen_rtn; end; Procedure f7_rtn; begin end; Procedure f8_rtn; begin end; Procedure f9_rtn; begin end; Procedure check_key; begin CASE key_lo of 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51, 52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71, 72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91, 92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108, 109,110,111,112,113,114,115,116,117,118,119,120,121,122,123, 124,125,126,127 : ; 8 : ; 13 : ; (*carr_return*) 27 : esc_char; (*esc_car*) 0,1,2,3,4,5,6,7,9,10,11,12,14,15,16,17,18,19,20,21,22,23,24, 25,26,28,29,30,31 : ; (*not_used*) END; end; Procedure check_key1; begin CASE key_hi of 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51, 52,53,54,55,56,57,58,69,70, 73,74,76,78,79,81,83,84,85,86,87,88,89,90,91, 92,93,94,95,96,99,100,101,102,103,104,105,106,107,108, 109,110,111,112,113,114,115,116,117,118,119,120,121,122,123, 124,125,126,127 : ; 71 : home_rtn; 82 : insrt_rtn; 59 : f1_rtn; 60 : f2_rtn; 61 : f3_rtn; 62 : f4_rtn; 63 : f5_rtn; 64 : f6_rtn; 65 : f7_rtn; 66 : f8_rtn; 67 : f9_rtn; 68 : esc_char;(* f10 *) 98 : ;(* help key *) 77 : right_rtn; (* right arrow *) 75 : left_rtn; (* left arrow *) 72 : up_rtn; (* up arrow *) 80 : down_rtn; (* down arrow *) 97 : ;(* undo key *) 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24, 25,26,27,28,29,30,31 : (*not_used*); END; end; Procedure key_process; begin key_lo := what_key & $00FF; key_hi := what_key & $FF00; key_hi := ShR(key_hi,8); check_key; check_key1; end; Procedure ld_sp1; begin dummy := do_alert('[1][LOAD SPRITE FILE 1 ][ YES | NO ]',1); if dummy = 1 then BEGIN what_sprite := 0 ; load_sprite; build_screen_rtn; END; end; Procedure ld_sp2; begin dummy := do_alert('[1][LOAD SPRITE FILE 2 ][ YES | NO ]',1); if dummy = 1 then BEGIN what_sprite := 1 ; load_sprite; build_screen_rtn; END; end; Procedure ld_sp3; begin dummy := do_alert('[1][LOAD SPRITE FILE 3 ][ YES | NO ]',1); if dummy = 1 then BEGIN what_sprite := 2 ; load_sprite; build_screen_rtn; END; end; Procedure ld_map; begin dummy := do_alert('[1][LOAD MAP FILE ? ][ YES | NO ]',1); if dummy = 1 then load_map; end; Procedure clear_scrn_aray; var x,y,z : integer; begin for x := 0 to xx_max do begin for y := 0 to yy_max do scrn_aray1[x,y] := 58; end; for x := 0 to xx_max do begin for y := 0 to yy_max do scrn_aray2[x,y] := 58; end; for x := 0 to xx_max do begin for y := 0 to yy_max do scrn_aray3[x,y] := 58; end; for x := 0 to xx_max do begin for y := 0 to yy_max do scrn_aray4[x,y] := 58; end; for x := 0 to xx_max do begin for y := 0 to yy_max do scrn_aray5[x,y] := 58; end; end; Procedure convert_frame( frame : integer; var fx,fy : integer ); begin fx := frame mod 10; fy := frame div 10; end; Procedure copy_sprite( frame : integer ); var fx,fy,value : integer; begin if scn = 0 then copy_rect(sprite,mainscreen, frame_loc[from_frame,1],frame_loc[from_frame,2], frame_loc[frame,1],frame_loc[frame,2], 32,32); if scn = 1 then copy_rect(sprite1,mainscreen, frame_loc[from_frame,1],frame_loc[from_frame,2], frame_loc[frame,1],frame_loc[frame,2], 32,32); if scn = 2 then copy_rect(sprite2,mainscreen, frame_loc[from_frame,1],frame_loc[from_frame,2], frame_loc[frame,1],frame_loc[frame,2], 32,32); convert_frame(frame,fx,fy); scram_int(scn,from_frame,value); case curent_level of 1: scrn_aray1[scx+fx,scy+fy] := value; 2: scrn_aray2[scx+fx,scy+fy] := value; 3: scrn_aray3[scx+fx,scy+fy] := value; 4: scrn_aray4[scx+fx,scy+fy] := value; 5: scrn_aray5[scx+fx,scy+fy] := value; end; do_redraw; draw_menu_str; end; Procedure get_sprite( frame : integer ); begin from_frame := frame; screen_flip; end; Procedure get_mouse_xy; var mx,my,frame : integer; begin mx := mouse_x; my := mouse_y; if ((mx >= 0) and(my >= 0)and(mx <= 31) and(my <= 31)) then frame := 0; if ((mx >= 32) and(my >= 0)and(mx <= 63) and(my <= 31)) then frame := 1; if ((mx >= 64) and(my >= 0)and(mx <= 95) and(my <= 31)) then frame := 2; if ((mx >= 96) and(my >= 0)and(mx <= 127)and(my <= 31)) then frame := 3; if ((mx >= 128)and(my >= 0)and(mx <= 159)and(my <= 31)) then frame := 4; if ((mx >= 160)and(my >= 0)and(mx <= 191)and(my <= 31)) then frame := 5; if ((mx >= 192)and(my >= 0)and(mx <= 223)and(my <= 31)) then frame := 6; if ((mx >= 224)and(my >= 0)and(mx <= 255)and(my <= 31)) then frame := 7; if ((mx >= 256)and(my >= 0)and(mx <= 287)and(my <= 31)) then frame := 8; if ((mx >= 287)and(my >= 0)and(mx <= 319)and(my <= 31)) then frame := 9; if ((mx >= 0) and(my >= 32)and(mx <= 31) and(my <= 63)) then frame := 10; if ((mx >= 32) and(my >= 32)and(mx <= 63) and(my <= 63)) then frame := 11; if ((mx >= 64) and(my >= 32)and(mx <= 95) and(my <= 63)) then frame := 12; if ((mx >= 96) and(my >= 32)and(mx <= 127)and(my <= 63)) then frame := 13; if ((mx >= 128)and(my >= 32)and(mx <= 159)and(my <= 63)) then frame := 14; if ((mx >= 160)and(my >= 32)and(mx <= 191)and(my <= 63)) then frame := 15; if ((mx >= 192)and(my >= 32)and(mx <= 223)and(my <= 63)) then frame := 16; if ((mx >= 224)and(my >= 32)and(mx <= 255)and(my <= 63)) then frame := 17; if ((mx >= 256)and(my >= 32)and(mx <= 287)and(my <= 63)) then frame := 18; if ((mx >= 287)and(my >= 32)and(mx <= 319)and(my <= 63)) then frame := 19; if ((mx >= 0) and(my >= 64)and(mx <= 31) and(my <= 95)) then frame := 20; if ((mx >= 32) and(my >= 64)and(mx <= 63) and(my <= 95)) then frame := 21; if ((mx >= 64) and(my >= 64)and(mx <= 95) and(my <= 95)) then frame := 22; if ((mx >= 96) and(my >= 64)and(mx <= 127)and(my <= 95)) then frame := 23; if ((mx >= 128)and(my >= 64)and(mx <= 159)and(my <= 95)) then frame := 24; if ((mx >= 160)and(my >= 64)and(mx <= 191)and(my <= 95)) then frame := 25; if ((mx >= 192)and(my >= 64)and(mx <= 223)and(my <= 95)) then frame := 26; if ((mx >= 224)and(my >= 64)and(mx <= 255)and(my <= 95)) then frame := 27; if ((mx >= 256)and(my >= 64)and(mx <= 287)and(my <= 95)) then frame := 28; if ((mx >= 287)and(my >= 64)and(mx <= 319)and(my <= 95)) then frame := 29; if ((mx >= 0) and(my >= 96)and(mx <= 31) and(my <= 127)) then frame := 30; if ((mx >= 32) and(my >= 96)and(mx <= 63) and(my <= 127)) then frame := 31; if ((mx >= 64) and(my >= 96)and(mx <= 95) and(my <= 127)) then frame := 32; if ((mx >= 96) and(my >= 96)and(mx <= 127)and(my <= 127)) then frame := 33; if ((mx >= 128)and(my >= 96)and(mx <= 159)and(my <= 127)) then frame := 34; if ((mx >= 160)and(my >= 96)and(mx <= 191)and(my <= 127)) then frame := 35; if ((mx >= 192)and(my >= 96)and(mx <= 223)and(my <= 127)) then frame := 36; if ((mx >= 224)and(my >= 96)and(mx <= 255)and(my <= 127)) then frame := 37; if ((mx >= 256)and(my >= 96)and(mx <= 287)and(my <= 127)) then frame := 38; if ((mx >= 287)and(my >= 96)and(mx <= 319)and(my <= 127)) then frame := 39; if ((mx >= 0) and(my >= 128)and(mx <= 31) and(my <= 159)) then frame := 40; if ((mx >= 32) and(my >= 128)and(mx <= 63) and(my <= 159)) then frame := 41; if ((mx >= 64) and(my >= 128)and(mx <= 95) and(my <= 159)) then frame := 42; if ((mx >= 96) and(my >= 128)and(mx <= 127)and(my <= 159)) then frame := 43; if ((mx >= 128)and(my >= 128)and(mx <= 159)and(my <= 159)) then frame := 44; if ((mx >= 160)and(my >= 128)and(mx <= 191)and(my <= 159)) then frame := 45; if ((mx >= 192)and(my >= 128)and(mx <= 223)and(my <= 159)) then frame := 46; if ((mx >= 224)and(my >= 128)and(mx <= 255)and(my <= 159)) then frame := 47; if ((mx >= 256)and(my >= 128)and(mx <= 287)and(my <= 159)) then frame := 48; if ((mx >= 287)and(my >= 128)and(mx <= 319)and(my <= 159)) then frame := 49; if ((mx >= 0) and(my >= 160)and(mx <= 31) and(my <= 199)) then frame := 50; if ((mx >= 32) and(my >= 160)and(mx <= 63) and(my <= 199)) then frame := 51; if ((mx >= 64) and(my >= 160)and(mx <= 95) and(my <= 199)) then frame := 52; if ((mx >= 96) and(my >= 160)and(mx <= 127)and(my <= 199)) then frame := 53; if ((mx >= 128)and(my >= 160)and(mx <= 159)and(my <= 199)) then frame := 54; if ((mx >= 160)and(my >= 160)and(mx <= 191)and(my <= 199)) then frame := 55; if ((mx >= 192)and(my >= 160)and(mx <= 223)and(my <= 199)) then frame := 56; if ((mx >= 224)and(my >= 160)and(mx <= 255)and(my <= 199)) then frame := 57; if ((mx >= 256)and(my >= 160)and(mx <= 287)and(my <= 199)) then frame := 58; if ((mx >= 287)and(my >= 160)and(mx <= 319)and(my <= 199)) then frame := 59; if screen_flag then copy_sprite(frame); if screen_flag = false then get_sprite(frame); end; Procedure event_rtn; begin event := Get_Event(event_val, 1,1,1, (* left button down *) 0, (* timer set to 0 *) False,0,0,0,0, False,0,0,0,0, msg, what_key, (* Key pressed *) dummy,btn_state, (* Not used *) mouse_x,mouse_y, dummy ); If (event & E_Keyboard) <> 0 then key_process; If (event & E_Button) <> 0 then get_mouse_xy; end; Procedure init; var x,y : integer; begin zeron := 0; escn := 27; event_val := E_Keyboard|E_Button; Text_Style(Normal); Sys_Font_Size(cw,ch,bw,bh); set_sprite_table; screen_flag := true; clear_scrn_aray; scx := 0; scy := 0; scn := 0; curent_level := 1; end; Procedure eop_processing; VAR X,DUMMY : INTEGER; begin for x := 0 to 15 do dummy := set_colr(x,pal2[x]); set_mouse(M_arrow); Exit_Gem; end; BEGIN If Init_Gem >= 0 then begin IF GETREZ = 0 THEN begin Init_Mouse; Hide_Mouse; s_ptr := physbase; { grab location of screen... } for x := 0 to 15 do pal2[x] := set_colr(x,-1); init; show_mouse; ld_sp1; ld_sp2; ld_sp3; ld_map; hide_mouse; do_redraw; screen[addr1] := 0; screen[addr2] := 0; init_form(mainscreen,scr1); init_form(sprite,scr2); init_form(sprite1,scr3); init_form(sprite2,scr4); SHOW_MOUSE; build_screen_rtn; Quit_Flag := false; Repeat event_rtn Until Quit_flag = true; eop_processing; end else dummy := do_alert('[1][ | LOW REZ ONLY ][ OK ]',1); end; end. ` o"h###,Oc.N//Bg?<JNA Bb3NHNaNV?<NAN^NuNV?./. ?<6NAN^ _ONNV?<NNN^NuNV?.?. ?<NNN^ _ONNV?<NNN^NuNV?<%NNN^NuTEXT_HEIGH?Hz></,HNV8AN-HPNBnP><=nR><?< BgBg?<HnHnHnhHnPHn8BgN(><N^,_X> _TNE_EGT?Hz></,HNV2AD-HPN?<BgBgBgHnHnHnbHnJHn2BgN(><=nD><0.N^,_X>NuE_IE ?Hz></,HNV2AZ-HPN=nJ><=nL><?<iBgBg?<HnHnHnbHnJHn2BgN(><=nd><0.N^,_X> _XNSRESTORE ?Hz><$/,HNV&A-HPNA,BP1|}"Hn,Hn?<%CE40<G$Q><&C-I&><'><(3`><)CEbp$Q><*CE`0<?$Q><+><,Bn* n*n2><-><-?.*0.*A@Ab?0Nd3^Rn*`><.CbEp$Q><0><2"yXE`0<?"Q><4><5Hn,N$N^,_X> _ORNADD_CHAR ?Hz><E/,HNVA>-HPN V0(R@ V1@><F V"h V0(A2.><GN^,_X> _TNSTR ?Hz><J/,HNVA$-HPNBn><K0.J@j&><L><M?<- NNP><N0.D@=@><O><P=|'><Qp=@><R><R0.rAo><S><T0.2.H=@><U0.J@V0.F@@Bd&><V><W0.r0A? NN><XBn><Y><Z0.2.HH@=@><[0.r H=@><\`l><]0.J@f><^?<0 NNt><_"n0.@><`N^,_X> _\NA ?Hz><i/,HNVA|-HPNp=@><j><j0.r.A]0.ArA0p @WCBd><k0.R@=@`><lBn><mp.nm><n><o0.ArA0p-@g><p><qBn`&><r><r><sp=@><t0.R@=@><u><v><v0.r.A_0.ArA0?Hz?<N0@BdB><w><x0. 2.CtA0Br0A=@><y0.R@=@><z`><{0.@d><|0.D@=@><}><~=n><0.N^,_X> _ONNV?.?. ?<NMN^ _ONDRAW_MENU_?Hz></,HNVAb-HPN?9,HnN><?9,HnN><?9,HnN><?9,HnNp><C*EpQ><C EpQ><CEpQ><CE p Q><NFHn?<Bg?<AO"Op?"QNyx><N^,_X>Nu SPRITE = Y = X = LEVEL BUILD_SCRE?Hz></,HNVA*-HPN"yXE`0<?"Q><N^,_X>NuDO_REDRAW ?Hz></,HNVA,-HPNN><N~><N><N^,_X>NuSCREEN_BAC?Hz></,HNVA$-HPNN><N><N^,_X>NuERROR_RTN ?Hz></,HNVA -HPN0.`:><><C O$OpQ?<N3^`><><C O$OpQ?<N3^`><><C \O$OpQ?<N3^`X><><C O$OpQ?<N3^`&><><C O$OpQ?<N3^`><><C xO$OpQ?<N3^`><><C ,O$OpQ?<N3^`><><C O$OpQ?<N3^`^><><C O$OpQ?<N3^`,><><C JO$OpQ?<N3^`><><C O$OpQ?<N3^`><><C O$OpQ?<N3^`><><C hO$OpQ?<N3^`d><><C O$OpQ?<N3^`2><><CO$OpQ?<N3^`><><CO$OpQ?<N3^`><><CHO$OpQ?<N3^`><><CO$OpQ?<N3^`j><><CO$OpQ?<N3^`8><><CfO$OpQ?<N3^`><><CO$OpQ?<N3^`><><CO$OpQ?<N3^`><><CO$OpQ?<N3^`p><><C@O$OpQ?<N3^`>><><CO$OpQ?<N3^` ><><CO$OpQ?<N3^`><><CXO$OpQ?<N3^`><><CO$OpQ?<N3^`v><><CO$O"p!Q?<N3^`D><><CpO$OpQ?<N3^`><><C$O$OpQ?<N3^`><><CO$OpQ?<N3^`><><CO$OpQ?<N3^`|><><C<><CO$O pQ?<N3^`><><CO$OpQ?<N3^`><><CVO$OpQ?<N3^`><><CO$OpQ?<N3^`><><CO$OpQ?<N3^`P><><CrO$OpQ?<N3^`><><C$O$OpQ?<N3^`><><CO$OpQ?<N3^`><@ @Nb@0;NT"Z(`.f4l:r@L~Fx><N^,_X> _TN[3][SETBLOCK FAILURE][ OK ][3][INVALID LOAD FORMAT][ OK ][3][INTERNAL ERROR][ OK ][3][RANGE ERROR][ OK ][3][NO MORE FILES][ OK ][3][INVALID DRIVE][ OK ][3][INVALID BLOCK ADDRESS][ OK ][3][NOT ENOUGH MEMORY][ OK ][3][ACCESS DENIED][ OK ][3][TOO MANY OPEN FILES][ OK ][3][PATH NOT FOUND][ OK ][3][FILE NOT FOUND][ OK ][3][INVALID FUNCTION NUMBER][ OK ][3][DISK CHANGE][ OK ][3][BAD SECTOR ON FORMAT][ OK ][3][UNKNOWN DEVICE][ OK ][3][MEDIA CHANGE][ OK ][3][WRITE PROTECTED][ OK ][3][GENERAL ERROR][ OK ][3][READ FAULT][ OK ][3][WRITE FAULT][ OK ][3][TOS ERROR # 9][ OK ][3][SECTOR NOT FOUND][ OK ][3][UNKNOWN MEDIA][ OK ][3][SEEK ERROR][ OK ][3][BAD REQUEST][ OK ][3][CRC ERROR][ OK ][3][UNKNOWN ERROR][ OK ][3][DRIVE NOT READY][ OK ][3][TOS ERROR # 1][ OK ][3][DISK ERROR # 11][ OK ][3][DISK ERROR # 10][ OK ][3][BAD FILENAME][ OK ][3][DISK ERROR # 8][ OK ][3][DISK ERROR # 7][ OK ][3][DISK ERROR # 6][ OK ][3][DISK ERROR # 5][ OK ][3][DISK ERROR # 4][ OK ][3][DISK ERROR # 3][ OK ][3][DISK ERROR # 2][ OK ][3][DISK ERROR # 1][ OK ]GET_DEFAUL?Hz></,HNVA:-HPNN=@><0.`><><"nE4`><><"nE`><><"nE`><><"nE`><><"nE`><><"nE`l><><"nE`P><><"nEb`4><><"nED`><><"nE&`><><"nE`><><"nE`><><"nE`><><"nE`><><"nE`p><><"nEr`T><><"nEt`8>< @b@0;N.Jf*Fb~><N^,_X> _XNP:O:N:M:L:K:J:I:H:G:F:E:D:C:B:A:HC_PC?Hz></,HNVA -HPNp.=@><0.rAAfp=@><0.raAfp=@><0.rBAfp=@><0.rbAfp=@><0.rCAfp=@><0.rcAfp=@><0.rDAfp=@><0.rdAfp=@><0.rEAfp=@><0.reAfp=@><0.rFAfp=@><0.rfAfp=@><0.rGAfp=@><0.rgAfp=@><0.rHAfp=@>< 0.rhAfp=@>< 0.rIAfp =@>< 0.riAfp =@>< 0.rJAfp =@>< 0.rjAfp =@><0.rKAfp =@><0.rkAfp =@><0.rLAfp =@><0.rlAfp =@><0.rMAfp =@><0.rmAfp =@><0.rNAfp=@><0.rnAfp=@><0.rOAfp=@><0.roAfp=@><0.rPAfp=@><0.rpAfp=@><Hn?.N>< .".//N" .//N -@><0.d`><><>< .2<HlD><>< Bn><!CO$O0p/Q?<N3^><"><#` ><#p=@><$`><%><%><& .ΰlD><'><(Bn><)CvO$O0p/Q?<N3^><*><+` ><+p=@><,`><-S@ @b@0;N~><.0.N^,_X> _OTN[3][ |THIS DISK DOES NOT|HAVE ENOUGH R00M][ OK ]HC_RG?Hz><;/,HNVDA|-HPNAFBP1|BgN><<=N=@D><>0.DJ@f><?><@Bn><A><B` ><Bp=@><CHnFN$0.N^,_X> _ORNSCRAM_INT ?Hz><H/,HNVA@-HPN0.|=@><I0.H=@><J"n0.n2><KN^,_X> _PNDESC_INT ?Hz><P/,HNVAF-HPN"n$n0|2><Q"n0|=@><R"n0.H2><SN^,_X> _O NBUILD_SCRE?Hz><X/,HNVA-HPNN><YBn nn\><Z><Z><[Bn n n6><\><\><]0. n=@><^09,`2><_><_09,nAcx29,nC;AAA;=p`><`><`09,nAcx29,nC;AAAjf=p`><a><a09,nAcx29,nC;AAAF=p`><b><b09,nAcx29,nC;AAA&=p``><c><c09,nAcx29,nC;AAA=p`$><dS@ @b@0;N8t><eHnHnHnN><f0.J@f|><gHy,LHy,t><h0.A;@A7?00.A;@A7?0><i0.A;@A7?00.A;@A7?0><j?< ?< Ndl><k0.rAf|><lHy,8Hy,t><m0.A;@A7?00.A;@A7?0><n0.A;@A7?00.A;@A7?0><o?< ?< Ndl><p0.rAf|><qHy,$Hy,t><r0.A;@A7?00.A;@A7?0><s0.A;@A7?00.A;@A7?0><t?< ?< Ndl><uRn`><vRn`><w"yXE`0<?"Q><xN><yN><zN^,_X>NuLOAD_SPRIT?Hz></,HNV,Ah-HPNA,BP1|}"N><HnNH><CPE><NFHn?<Hn2HnNe=@0><N><?<N><BgN><0.0@d><><Hn,Hn?<N=@*><0.*J@f8><><CE40<G$Q><C-I,><><3`><CEbp$Q><09,J@fCE`0<?$Q><09,rAfCE`0<?$Q><09,rAfCE`0<?$Q><><Bn( n(n2><><?.(0.(A@Ab?0N3^Rn(`><CbEp$Q><><`&><><><BgN><?.*N><><><BgN><Hn,N$N^,_X>Nu\*.SPTLOAD_MAP ?Hz></,HNVnA-HPNAnBP1|.N><HnN><CE><NFHn?<HntHnNe=@r><NJ><?<N><BgN><0.r@d><><HnnHn?<N=@l><0.lJ@f><><CEA0< $Q><HnnNp><CEp0< $Q><HnnNp><CE0< $Q><HnnNp><CEd0< $Q><HnnNp><CED0< $Q><CA-In><><"nnE;0< $Q><><Cp-In><><"nnEjf0< $Q><><C-In><><"nnEF0< $Q><><Cd-In><><"nnE&0< $Q><><CD-In><><"nnE0< $Q><><N><><`&><><><BgN><?.lN><><><BgN><HnnN$N^,_X>Nu\*.MAPSAVE_MAP ?Hz></,HNVlA`-HPNAnBP1|.N><HnN><CHE><NFHn?<HntHnNe=@p><N2><BgN><?<N><0.p@dn><><AO"O2p"QN=@r><0.r@d8><><0.p@d"?<AO"O2p"QN=@p><><><0.p@d><><CA-Il><><"nlE;0< "Q><><Cp-Il><><"nlEjf0< "Q><>< C-Il>< >< "nlEF0< "Q>< >< Cd-Il><><"nlE&0< "Q><><CD-Il><><"nlE0< "Q><><HnnHn?<N=@l><0.lJ@f><><CEA0< "Q><HnnN^><CEp0< "Q><HnnN^><CE0< "Q><HnnN^><CEd0< "Q>< HnnN^><!CED0< "Q><"HnnN^><#><$`&><%><%><&BgN><'?.lN&><(><)><*BgN><+HnnN$N^,_X>Nu\*.MAPINFODIAL ?Hz><8/,HNVA-HPNBgN><9p3-><:C(EpQ><;p@><<=p@><>p@><??<BgBg?<&?<NhL#,><@/9,?<Bg?<?<?<$?<Bg?<Ni3-><A/9,?9-0|AeAO"Op?"Q?9-?<Nn><B/9,?<Bg?<?<?<$?<Bg?<Ni3-><C/9,?9-0|AeCO$OpQ?9-?<Nn><DCEpQ><E0<@><F/9,?<Bg?<?<?<$?<Bg?<Ni3-><G/9,?9-0|AeAO"Op?"Q?9-?<Nn><H/9,?<Bg?<?<?<$?<Bg?<Ni3-><I/9,?9-0|AeCO$OpQ?9-?<Nn><J/9,?<Bg?<?< ?<$?<Bg?<Ni3-><K/9,?9-0|AeCXO$OpQ?9-?<Nn><L/9,?<Bg?<?< ?<$?<Bg?<Ni3-><M/9,?9-0|AeCO$OpQ?9-?<Nn><N/9,?<Bg?<?< ?<$?<Bg?<Ni3-><O/9,?9-0|AeCFO$OpQ?9-?<Nn><PCEpQ><Q0<@><R/9,?<Bg?<?< ?<$?<Bg?<Ni3-><S/9,?9-0|AeAO"Op?"Q?9-?<Nn><T/9,?<Bg?<?< ?<$?<Bg?<Ni3-><U/9,?9-0|AeCO$OpQ?9-?<Nn><V/9,?<prArA?><W?<?<?<?<?<?<Ni3,><X/9,?9,0|AeCO$O?9-?<Nn><Y/9,Nmn><Z/9,BgNl3,><[/9,Nm><\/9,Nh><]N֦><^BgN><_N^,_X>NuOKUsed by permission of OSS.Copyright 1986 OSS & CCDPortions of this programO.S.S Personal PascalProgram Writen inVersion BETA 1.0Copyright 1986by M.F. HOLLENBECK THE SPRITE FACTORY ESC_CHAR ?Hz><c/,HNVA`-HPNCXO$O2p1Q?<N3^><d09^rAf p3-><eBgN><fN^,_X>Nu[1][ |ARE YOU SURE YOU|WANT TO QUIT ?][ YES | NO ]SET_SPRITE?Hz><m/,HNVAP-HPNBn><nBn><op=@><pp=@><qBn nn ><r><r><sBn n n><t><t><u0.2. A=@><v0.A;@A71><w0.A;@A71><x0.A;@A71><y0.A;@A71><z0.@ =@><{0.@ =@><|Rn`F><}0.@ =@><~0.@ =@><Bn><p=@><Rn`><N^,_X>NuSCREEN_FLI?Hz></,HNVA-HPNN><09-F@3-><09-@d"yXE`0<?"Q><09-|r|Afl><><09,J@f"yXE`0<?"Q><09,rAf"yXE`0<?"Q><09,rAf"yXE`0<?"Q><?<0AN~0><?<0|AN}><?<0|AN~f><BgBg?<?BgNzV><Bg?<?<??<NzV><Bg?<??<??<?NzV><Bg?<_?<??<_NzV><Bg?<?<??<NzV><Bg?<?<??<NzV><Bg?<?<??<NzV><BgBgBg?<NzV><?<Bg?<?<NzV><?<?Bg?<??<NzV><?<_Bg?<_?<NzV><?<Bg?<?<NzV><?<Bg?<?<NzV><?<Bg?<?<NzV><?<Bg?<?<NzV><?<Bg?<?<NzV><?<Bg?<?<NzV><?<?Bg?<??<NzV><><NΦ><N><N^,_X>NuPAGE_UP_RT?Hz></,HNVA>-HPN09,rAl By,`><09,]@3,><N^,_X>NuPAGE_DOWN_?Hz></,HNVAF-HPN09,r;AAop;]@3,`><09,\@3,><N^,_X>NuPAGE_LEFT_?Hz></,HNVA@-HPN09,r Al By,`><09,@3,><N^,_X>NuPAGE_RIGHT?Hz></,HNVAJ-HPN09,rcAAopc@3,`><09,@ 3,><N^,_X>NuUP_RTN ?Hz></,HNVAz-HPN09-@d\><><09,r8Ag2><><09,rAo09,S@3,><><` ><N><N><><N^,_X>NuDOWN_RTN ?Hz></,HNVA|-HPN09-@d^><><09,r2Ag4><><09,r;]AAl09,R@3,><><` ><N><N4><><N^,_X>NuLEFT_RTN ?Hz></,HNVAz-HPN09-@d\><><09,r4Ag2><><09,rAo09,S@3,><><` ><Nd><N><><N^,_X>NuRIGHT_RTN ?Hz></,HNVA~-HPN09-@d`><><09,r6Ag6><><09,rcAAl09,R@3,><><` ><N&><N><><N^,_X>NuHOME_RTN ?Hz></,HNVAd-HPN09-@dF><><09,rAl09,><R@3,`><p3,><N`><><N^,_X>NuINSRT_RTN ?Hz></,HNVAd-HPN09-@dF><><09,rAo09,><S@3,`><p3,><N><><N^,_X>NuF1_RTN ?Hz>< /,HNVA-HPN09-|r|AW09,J@WÄCBd$>< >< By,>< N>>< ><`,><><><p3-><By,><N ><><N^,_X>NuF2_RTN ?Hz></,HNVA-HPN09-|r|AW09,rAWÄCBd&><><p3,><N><><`.><><><p3->< p3,><!NX><"><#N^,_X>NuF3_RTN ?Hz><'/,HNVA-HPN09-|r|AW09,rAWÄCBd&><(><)p3,><*N><+><,`.><-><-><.p3-></p3,><0N><1><2N^,_X>NuF4_RTN ?Hz><6/,HNVA -HPNN><7Nr><8N^,_X>NuF5_RTN ?Hz><<=N*><>N^,_X>NuF6_RTN ?Hz><B/,HNVA-HPNCO$O(p'Q?<N3^><C09^rAfBy,><D09^rAf p3,><E09^rAf p3,><FNN><GNl><HN^,_X>Nu[1][LOAD SPRITE FILE ! ][ F1 | F2 | F3 ]F7_RTN ?Hz><L/,HNVA-HPNN^,_X>NuF8_RTN ?Hz><P/,HNVA-HPNN^,_X>NuF9_RTN ?Hz><T/,HNVA-HPNN^,_X>NuCHECK_KEY ?Hz><X/,HNVA-HPN09,`^><Y><Z><[><\><]><^><^`P><_><_`D><`><``8><a><aN`(><b><c><c`><d @b @0;N><eN^,_X>NuCHECK_KEY1?Hz><i/,HNVA|-HPN09,`N><j><k><l><m><n><o><o`@><p><pN`0><q><qN$` ><r><rN`><s><sN>`><t><tN`><u><uN`><v><vN`><w><wN`><x><xN`><y><yN`><z><zN`><{><{Nz`><|><|`t><}><}N6`d><~><~N`T><><N.`D><><N`4><><`(><><><`>< @b @0;N&6FVfv><N^,_X>NuKEY_PROCES?Hz></,HNVAZ-HPN09,|3,><09,|3,><09,H3,><NH><N><N^,_X>NuLD_SP1 ?Hz></,HNVAn-HPNCfO$O$p#Q?<N3^><09^rAf$><><By,><N><N0><><N^,_X>Nu[1][LOAD SPRITE FILE 1 ][ YES | NO ]LD_SP2 ?Hz></,HNVAp-HPNChO$O$p#Q?<N3^><09^rAf&><><p3,><NV><Nt><><N^,_X>Nu[1][LOAD SPRITE FILE 2 ][ YES | NO ]LD_SP3 ?Hz></,HNVAp-HPNChO$O$p#Q?<N3^><09^rAf&><><p3,><Nښ><Nָ><><N^,_X>Nu[1][LOAD SPRITE FILE 3 ][ YES | NO ]LD_MAP ?Hz></,HNVAP-HPNCHO$O!p Q?<N3^><09^rAfNܒ><N^,_X>Nu[1][LOAD MAP FILE ? ][ YES | NO ]CLEAR_SCRN?Hz></,HNVA-HPNBn ncnT><><><Bn n;n0><0.Acx2.C;AAr:A;1Rn`><Rn`><Bn ncnT><><><Bn n;n0><0.Acx2.C;AAr:Ajf1Rn`><Rn`><Bn ncnT><><><Bn n;n0><0.Acx2.C;AAr:AF1Rn`><Rn`><Bn ncnT><><><Bn n;n0><0.Acx2.C;AAr:A&1Rn`><Rn`><Bn ncnT><><><Bn n;n0><0.Acx2.C;AAr:A1Rn`><Rn`><N^,_X>NuCONVERT_FR?Hz></,HNVA:-HPN"n0.r HH@2><"n0.r H2><N^,_X> _O NCOPY_SPRIT?Hz></,HNVAV-HPN09,J@f><Hy,LHy,t><09,A;@A7?009,A;@A7?0><0.A;@A7?00.A;@A7?0><?< ?< Ndl><09,rAf><Hy,8Hy,t><09,A;@A7?009,A;@A7?0><0.A;@A7?00.A;@A7?0><?< ?< Ndl><09,rAf><Hy,$Hy,t><09,A;@A7?009,A;@A7?0><0.A;@A7?00.A;@A7?0><?< ?< Ndl><?.HnHnN><?9,?9,HnNp><09,`2><><09,nAcx29,nC;AAA;1`><><09,nAcx29,nC;AAAjf1`><><09,nAcx29,nC;AAAF1`><><09,nAcx29,nC;AAA&1``><><09,nAcx29,nC;AAA1`$><S@ @b@0;N8t><N^><N\><N^,_X> _TNGET_SPRITE?Hz></,HNVA$-HPN3,><Nz><N^,_X> _TNGET_MOUSE_?Hz></,HNVA-HPN=y,><=y,><0.J@Z0.J@ZC0.rA_C0.rA_CBdBn><0.r A\0.J@ZC0.r?A_C0.rA_CBdp=@><0.r@A\0.J@ZC0.r_A_C0.rA_CBdp=@>< 0.r`A\0.J@ZC0.rA_C0.rA_CBdp=@>< 0.|\0.J@ZC0.|_C0.rA_CBdp=@>< 0.|\0.J@ZC0.|_C0.rA_CBdp=@>< 0.|\0.J@ZC0.|_C0.rA_CBdp=@>< 0.|\0.J@ZC0.|_C0.rA_CBdp=@><0.|\0.J@ZC0.|_C0.rA_CBdp=@><0.|\0.J@ZC0.|?_C0.rA_CBdp =@><0.J@Z0.r A\C0.rA_C0.r?A_CBdp =@><0.r A\0.r A\C0.r?A_C0.r?A_CBdp =@><0.r@A\0.r A\C0.r_A_C0.r?A_CBdp =@><0.r`A\0.r A\C0.rA_C0.r?A_CBdp =@><0.|\0.r A\C0.|_C0.r?A_CBdp=@><0.|\0.r A\C0.|_C0.r?A_CBdp=@><0.|\0.r A\C0.|_C0.r?A_CBdp=@><0.|\0.r A\C0.|_C0.r?A_CBdp=@><0.|\0.r A\C0.|_C0.r?A_CBdp=@><0.|\0.r A\C0.|?_C0.r?A_CBdp=@><0.J@Z0.r@A\C0.rA_C0.r_A_CBdp=@><0.r A\0.r@A\C0.r?A_C0.r_A_CBdp=@><0.r@A\0.r@A\C0.r_A_C0.r_A_CBdp=@><0.r`A\0.r@A\C0.rA_C0.r_A_CBdp=@>< 0.|\0.r@A\C0.|_C0.r_A_CBdp=@><!0.|\0.r@A\C0.|_C0.r_A_CBdp=@><"0.|\0.r@A\C0.|_C0.r_A_CBdp=@><#0.|\0.r@A\C0.|_C0.r_A_CBdp=@><$0.|\0.r@A\C0.|_C0.r_A_CBdp=@><%0.|\0.r@A\C0.|?_C0.r_A_CBdp=@><'0.J@Z0.r`A\C0.rA_C0.rA_CBdp=@><(0.r A\0.r`A\C0.r?A_C0.rA_CBdp=@><)0.r@A\0.r`A\C0.r_A_C0.rA_CBdp =@><*0.r`A\0.r`A\C0.rA_C0.rA_CBdp!=@><+0.|\0.r`A\C0.|_C0.rA_CBdp"=@><,0.|\0.r`A\C0.|_C0.rA_CBdp#=@><-0.|\0.r`A\C0.|_C0.rA_CBdp$=@><.0.|\0.r`A\C0.|_C0.rA_CBdp%=@></0.|\0.r`A\C0.|_C0.rA_CBdp&=@><00.|\0.r`A\C0.|?_C0.rA_CBdp'=@><20.J@Z0.|\C0.rA_C0.|_CBdp(=@><30.r A\0.|\C0.r?A_C0.|_CBdp)=@><40.r@A\0.|\C0.r_A_C0.|_CBdp*=@><50.r`A\0.|\C0.rA_C0.|_CBdp+=@><60.|\0.|\C0.|_C0.|_CBdp,=@><70.|\0.|\C0.|_C0.|_CBdp-=@><80.|\0.|\C0.|_C0.|_CBdp.=@><90.|\0.|\C0.|_C0.|_CBdp/=@><:0.|\0.|\C0.|_C0.|_CBdp0=@><;0.|\0.|\C0.|?_C0.|_CBdp1=@><=0.J@Z0.|\C0.rA_C0.|_CBdp2=@><>0.r A\0.|\C0.r?A_C0.|_CBdp3=@><?0.r@A\0.|\C0.r_A_C0.|_CBdp4=@><@0.r`A\0.|\C0.rA_C0.|_CBdp5=@><A0.|\0.|\C0.|_C0.|_CBdp6=@><B0.|\0.|\C0.|_C0.|_CBdp7=@><C0.|\0.|\C0.|_C0.|_CBdp8=@><D0.|\0.|\C0.|_C0.|_CBdp9=@><E0.|\0.|\C0.|_C0.|_CBdp:=@><F0.|\0.|\C0.|?_C0.|_CBdp;=@><H09-@d ?.Nz><I09-|r|Af ?.N><JN^,_X>NuEVENT_RTN ?Hz><N/,HNVA-HPN?9,><O?<?<?<><Pp/><QBgBgBgBgBg><RBgBgBgBgBg><SHy,><THy,><UHy^Hy,><VHy,Hy,><W><XHy^NT3,><Z09,rAJ@g ><[N><]09,rAJ@g ><^N.><_N^,_X>NuINIT ?Hz><f/,HNVA-HPNBy,><gp3,><hprA3,><iBgN><jHy,Hy,Hy,Hy,NB><kN~><lp3-><mN ><nBy,><oBy,><pBy,><qp3,><rN^,_X>NuEOP_PROCES?Hz><y/,HNVAf-HPNBn nn0><z><z?.0.A@A?0N<=@Rn`><{BgN><|NR><}N^,_X>NuA#A0B1|A01|><NJ@k><><NJ@f><><NB><N><N#X><By\ y\n<><><09\A@/?9\?<N><N><N><N`><N><N><N><N><By,`><By,b><Hy,tHy`Nc><Hy,LHy`Nc><Hy,8Hy`Nc><Hy,$Hy`Nc><N><N><By-><><><><N 09-|r|Af><N><><`,><C>O$OpQ?<N3^><><HyN$N[1][ | LOW REZ ONLY ][ OK ]NuINIT_FORM ?Hz~/,HNVA-HPN .r=@~ .rr=@~~"n2~"n3n~~"n3|@~ "n3|~!"np3@~""nBi ~#"np3@ ~$N^,_X> _PNCOPY_RECT ?Hz~G/,HNV4A-HPN ."r=@6~H ."rr=@4~I=n4=n6~K~L .r=@6~M .rr=@4~N=n4=n6~Pp=@~R~S=nP=nR~T0.nS@=@T~U0.nS@=@V~W=nX=nZ~X0.nS@=@\~Y0.nS@=@^~[~\?<mBg?<?<HnHnHnhHnPHn8BgN(~^N^,_X> _ONNu/,HNVNAJ-Hp=@"n 0.r1JAV0.rdA]CBd0.R@=@`"n 0.S@@N^,_ _XN/,HNVfNA6-H"nE4p$Q"np)R@rA"n p)=@Bn0.@eR0.J@W"n 0.r1p\@WÄC"n 0.r1p:@WÄCBd p=@` 0.S@=@`Bn0."n r)Al20.R@=@0.R@=@0."n 2.t1A`0.@0.R@rAHnN-@lHnN-@p?<ZHnHntHnlHnhN0.vJ@f Bn`p=@HnN>HnN6"nE2p"Q"n E2p"Qp.=@Bn0.@eR0.J@W0.rA0p\@WÄC0.rA0p:@WÄCBd p=@` 0.S@=@`p=@p.=@f0.nfn,0.R@=@"n 0.2.tA0Rn`"n 0.@0.N^,_ _PNNu/,HNVAp-HN0.T@=@?.Np-@/.?-HN=n PBnR?<BgBg?<HnHnHnhHnPHn8BgN(N^,_ _TN/,HNV8AN-HN?.?. Nx=n=n ?<lBg?<BgHnHnHnhHnPHn8BgN(N^,_ _XN/,HNVA"-HN?. N?<?. NN^,_ _TN/,HNVA.-HN0. rA?N?<h0. rA?NN^,_ _TN/,HNVAz-HN?. N=n 0. rAo0p=@0. S@=@ 0. rAop=@0. @=@ ?<?.N.0.rAo?<?. NN^,_ _TN/,HNV6A@-HN=n =n?<'Bg?<BgHnHnHnhHnPHn8BgN(N^,_ _XN/,HNVA-HN?<j?. NN^,_ _TN/,HNV8A>-HNBnP=n R?< BgBg?<HnHnHnhHnPHn8BgN(N^,_ _TN/,HNVA-HN?<?. NN^,_ _TN/,HNV2A-HNHn2Hn4Hn6NBgBgNl=nP=nR0.nS@=@T=nV0.nS@=@X0.n S@=@Z=n\0.n S@=@^=n`=nb?<BgBg?<HnHnHnhHnPHn8?<N(?.4?.6NN^,_ _PN/,HNV8A`-HN=nP=nR0.nS@=@T0.n S@=@V?< ?< Bg?<HnHnHnhHnPHn8?<N(N^,_ _PN/,HNVAr-HNHnHnHnNBgN?<NHnHnHnN?.Nn?.?.?.?. N*?.N?.N?.NBN^,_ _PNNu/,HNVtA2-HN=n-n x?<NHnHnHnxHntNN^,_ _\N/,HNVA-HN?</. NN^,_ _XN/,HNVA-HN0. ?BNnN^,_ _TN/,HNVA2-HNN\J@f ?<BN8N\R@?NdN^,_Nu/,HNVA@-HNN\rAo(N\S@?NdN\J@f ?<BNN^,_Nu/,HNVA<-HNp?BNp=@N\=@0.nn NrRn`N^,_Nu/,HNVtA,-HNp=@?<kHnHnHnxHntNN^,_Nu/,HNVtA,-HNp=@?<kHnHnHnxHntNN^,_NuNu/,HNVNp.R@rAHnN/?. NZ=@0.N^,_ _ONNu/,HNVNA-H=nF=n@=nD=nB0.:rA=@=n8=n6=n4=n20.0rA=@=n. =n, =n*=n(=n>=n<-n$?<HnHnHnHnN=n"n2"n2"n2"n 2"n 2"n20.N^,_ _O/L'/L'3|NAXNuBy(_ _/ C( g  f,t4(H / /?(?<@NA LJkvfNu4(SBraQNu(g^ f,H t'bHy'b/<??<@NA LNu fH t` fH t` f NuHyY` Hy20< LNREWRITE required prior to WRITE or PUTDisk or directory fullBy(_ _/ C (g ( fxJ(ft4($IH / /?(?<?NA LJk,g*fJg  f"J` g  Wf NuJgJ(f P Nu!|Nu4(SBa@J(f8Jg. fJ(f"gr W1Agp f W1A1AQNu(gfJ(fT f6H`?<NAT fHy/<?0 @f0"|'d'dp` "_J@jp6B@bE'SBkQ/L'fNuString overflow _ hNVf 0(gr"OD@Hd2S@k "Q` _"ye HyNN#(#( .f -|`-| nNн(f y(NStack overruns heapH?( _z gBjDRE"g8jDRE$6HBJBg8HAJAf,HBJBf$ւi EdD.` $HB8`B/L?(Nu0NvDNH(|` H(| _z f0NjDRE"g`jDREdJgR(`DfxJg<`DxSDbb JgHA8`"tcRЀ`xeWJg(MdD.`B/L(Nu09Nu _3NByNu[3][4][ Abort ]Copyright 1986, CCD and OSS, Inc.    -.:@&JjRr0ZF< <0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ^h BBltRX"<6 ( $  <( >6 ( $6 >6$ $ > Z " " " & ." " " & " & " & " & ." " " & 2 "       n~    <<< < <\\\\ H H( H ( H( HHH    t888 L  t  t  t  jLdPh     |H T>   N   <* &   *     FJ"d.06 ,\60LP"4*>4@ l*trp`  zP,&D0T>0,8&&,$ B " 4T R"BBD <. ,@ ,,2 4 ,2 4 ,2 ,,T  V& ,,  ,6   $L    8@F L2`*2 "T &( &0&  >          ,*< * * , , 0 , " nBB6 pD D< V  <   , FR ( *@ B @ B V  ` 8 NuINIT_FORM ?Hz~/,HNVA-HPN .r=@~ .rr=@~~"n2~"n3n~~"n3|@~ "n3|~!"np3@~""nBi ~#"np3@ ~$N^,_X> _PNCOPY_RECT ?Hz~G/,HNV4A-HPN ."r=@6~H ."rr=@4~I=n4=n6~K~L .r=@6~M .rr=@4~N=n4=n6~Pp=@~R~S=nP=nR~T0.nS@=@T~U0.nS@=@V~W=nX=nZ~X0.nS@=@\~Y0.nS@=@^~[~\?<mBg?<?<HnHnHnhHnPHn8BgN~^N^,_X> _ONINIT_FOR stackchkCOPY_RECVDI_CALL    {$M+} {$E+} { link this with mapmaker.o } program addr_stuff; { this is a module to go with mapmaker.pas - necessary in order to convert addresses to integers } type { these are echos of types in mapmaker.pas } scrn_memory = packed array[0..31999] of byte; mfdb_fields = (addr1,addr2,wid_pix,ht_pix,wid_wds,flag,num_planes,r1,r2,r3); mfdb = array[mfdb_fields] of integer; PROCEDURE init_form(var form : MFDB; addr : long_integer); { initializes a form to point to a chunk of memory off screen } { note that the caller passes a 32K chunk of memory as what it thinks is a var parameter, thus passing its address } var hi_byte,lo_byte : integer; begin { convert the address to integers } lo_byte := int(addr & $0f); hi_byte := int( ShR(addr,16) & $0f); { and initialize all fields of the MFDB } form[addr1] := hi_byte; form[addr2] := lo_byte; { some assumptions here } form[wid_pix] := 320; { low rez } form[ht_pix] := 200; { low rez } form[wid_wds] := 20; form[flag] := 0; { device dependent } form[num_planes] := 4; { again, low rez } end; PROCEDURE copy_rect(src,dst : long_integer; from_x,from_y,to_x,to_y,width,height : integer); { heres where we actually copy a rectangle from one loc. to another } { using gem raster copy function } TYPE Ctrl_Parms = ARRAY [ 0..11 ] OF integer ; Int_In_Parms = ARRAY [ 0..15 ] OF integer ; Int_Out_Parms = ARRAY [ 0..45 ] OF integer ; Pts_In_Parms = ARRAY [ 0..11 ] OF integer ; Pts_Out_Parms = ARRAY [ 0..11 ] OF integer ; VAR control : Ctrl_Parms ; int_in : Int_In_Parms ; int_out : Int_Out_Parms ; pts_in : Pts_In_Parms ; pts_out : Pts_Out_Parms ; hi_byte,lo_byte : integer; PROCEDURE VDI_Call( cmd, sub_cmd : integer ; nints, npts : integer ;  VAR ctrl : Ctrl_Parms ; VAR int_in : Int_In_Parms ; VAR int_out : Int_Out_Parms ; VAR pts_in : Pts_In_Parms ; VAR pts_out : Pts_Out_Parms ; translate : boolean ) ; EXTERNAL ; begin { put source MFDB address in control array } lo_byte := int(src & $0f); hi_byte := int( ShR(src,16) & $0f); control[7] := hi_byte; control[8] := lo_byte; { and same for destination MFDB } lo_byte := int(dst & $0f); hi_byte := int( ShR(dst,16) & $0f); control[9] := hi_byte; control[10] := lo_byte; int_in[0] := 3; { replace mode } { set the points for src and dest } pts_in[0] := from_x; pts_in[1] := from_y; pts_in[2] := from_x + width - 1; pts_in[3] := from_y + height - 1; pts_in[4] := to_x; pts_in[5] := to_y; pts_in[6] := to_x + width - 1; pts_in[7] := to_y + height - 1; { do the copy } VDI_Call(109,0,1,8,control,int_in,int_out,pts_in,pts_out,false); end; { just a module, no main program } begin end. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::: :::::::::::::::::::::::::::::::::::::::::::::: ;  :::::::::::::::::::::::::::::::::::::::::::::   : ;:::::::::::::::::::::::::::::::::::::::::::::: : :::::::::::::::::::::::::::::::::::::::::::::: :$" ;:::::::::::::::::::::::::::::::::::::::::::::::  :::::::::::::::::::::::::::::::::::::::::::::::$9 ;:::::::::::::::::::::::::::::::::::::::::::::::::  :::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::: 1 :::::::::::::::::::::::::::::::::::::::::::::::: ;;::::::::::::::::::::::::::::::::::::::::::::::::::::::: ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::: ; ::::::::::::::::::::::::::::::::::::::::::::::::::::::::  ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::%":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: !::::::::::::::::::::::::::::::::::::::::::::::::::: 8:::::::::::::::::::::::::::::::::::::::::::::::::::  ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::!:::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::%"::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::$#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::: 7777777777777::::::::::::::::::::::::::::::::::::::::::::: 7777777777777 "::::::::::::::::::::::::::::::::::::::::: 777777777::::::::::::::::::::::::::::::::::::::::::::::: 777777777 $:::::::::::::::::::::::::::::::::::::::::::: 777777777:::2:::::::::::::::::::::::::::::::::::::::::::: 777777777 #::::::::::::::::::::::::::::::::::::::::::::: 777777777::::::::::::::::::::::::::::::::::::::::::::::::: 777777777:::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::r::::::::::::::::::::::::::::::::::::::::::::::::"BOX CENTERDNRTRLFTRRTRUPRDNR DNLFT UPRT UPLFT BUTTON EXITBTNCOPYBOXBT9BOXT9BOXBT0BOXBT1BOXBT2BOXBT3BOXBT4BOXBT5BOX BT6BOX BT7BOX BT8BOX BT10OX BT11OXBT12OXBT13OXBT14OXBT15OXSPVBLBOXVBLITEMSPITEMOKBTN(* resource set indicies for JOYSTICK *) CONST box = 0; (* form/dialog *) center = 3; (* IMAGE in tree BOX *) dnrt = 4; (* IMAGE in tree BOX *) lft = 5; (* IMAGE in tree BOX *) rt = 6; (* IMAGE in tree BOX *) up = 7; (* IMAGE in tree BOX *) dn = 8; (* IMAGE in tree BOX *) dnlft = 9; (* IMAGE in tree BOX *) uprt = 10; (* IMAGE in tree BOX *) uplft = 11; (* IMAGE in tree BOX *) button = 12; (* IMAGE in tree BOX *) exitbtn = 13; (* BUTTON in tree BOX *) copybox = 1; (* form/dialog *) bt9 = 1; (* BUTTON in tree COPYBOX *) t = 2; (* TEXT in tree COPYBOX *) bt0 = 3; (* BUTTON in tree COPYBOX *) bt1 = 4; (* BUTTON in tree COPYBOX *) bt2 = 5; (* BUTTON in tree COPYBOX *) bt3 = 6; (* BUTTON in tree COPYBOX *) bt4 = 7; (* BUTTON in tree COPYBOX *) bt5 = 8; (* BUTTON in tree COPYBOX *) bt6 = 9; (* BUTTON in tree COPYBOX *) bt7 = 10; (* BUTTON in tree COPYBOX *) bt8 = 11; (* BUTTON in tree COPYBOX *) bt10 = 12; (* BUTTON in tree COPYBOX *) bt11 = 13; (* BUTTON in tree COPYBOX *) bt12 = 14; (* BUTTON in tree COPYBOX *) bt13 = 15; (* BUTTON in tree COPYBOX *) bt14 = 16; (* BUTTON in tree COPYBOX *) bt15 = 17; (* BUTTON in tree COPYBOX *) speedbox = 2; (* form/dialog *) b5 = 1; (* BUTTON in tree SPEEDBOX *) b1 = 2; (* BUTTON in tree SPEEDBOX *) b2 = 3; (* BUTTON in tree SPEEDBOX *) b3 = 4; (* BUTTON in tree SPEEDBOX *) b4 = 5; (* BUTTON in tree SPEEDBOX *) bup = 7; (* IMAGE in tree SPEEDBOX *) bdn = 8; (* IMAGE in tree SPEEDBOX *) b6 = 9; (* BUTTON in tree SPEEDBOX *) vblbox = 3; (* form/dialog *) vb5 = 1; (* BUTTON in tree VBLBOX *) vb1 = 2; (* BUTTON in tree VBLBOX *) vb2 = 3; (* BUTTON in tree VBLBOX *) vb3 = 4; (* BUTTON in tree VBLBOX *) vb4 = 5; (* BUTTON in tree VBLBOX *) vbup = 7; (* IMAGE in tree VBLBOX *) vbdn = 8; (* IMAGE in tree VBLBOX *) vb6 = 9; (* BUTTON in tree VBLBOX *) t2 = 10; (* TEXT in tree VBLBOX *) thebox = 4; (* form/dialog *) vbtn1 = 4; (* BOXTEXT in tree THEBOX *) vbtn2 = 5; (* BOXTEXT in tree THEBOX *) vbtn3 = 6; (* BOXTEXT in tree THEBOX *) vbtn4 = 7; (* BOXTEXT in tree THEBOX *) vbtn5 = 8; (* BOXTEXT in tree THEBOX *) vbtn6 = 9; (* BOXTEXT in tree THEBOX *) vbtn7 = 10; (* BOXTEXT in tree THEBOX *) vbtn8 = 11; (* BOXTEXT in tree THEBOX *) vbtn9 = 12; (* BOXTEXT in tree THEBOX *) sbtn0 = 14; (* BOXTEXT in tree THEBOX *) sbtn1 = 15; (* BOXTEXT in tree THEBOX *) sbtn2 = 16; (* BOXTEXT in tree THEBOX *) sbtn3 = 17; (* BOXTEXT in tree THEBOX *) sbtn4 = 18; (* BOXTEXT in tree THEBOX *) sbtn5 = 19; (* BOXTEXT in tree THEBOX *) sbtn6 = 20; (* BOXTEXT in tree THEBOX *) sbtn7 = 21; (* BOXTEXT in tree THEBOX *) sbtn8 = 22; (* BOXTEXT in tree THEBOX *) mbtn1 = 24; (* BUTTON in tree THEBOX *) mbtn2 = 25; (* BUTTON in tree THEBOX *) mbtn3 = 26; (* BUTTON in tree THEBOX *) mbtn0 = 27; (* BUTTON in tree THEBOX *) cbtn0 = 30; (* BUTTON in tree THEBOX *) cbtn1 = 32; (* BUTTON in tree THEBOX *) cbtn2 = 33; (* BUTTON in tree THEBOX *) cbtn3 = 34; (* BUTTON in tree THEBOX *) cbtn8 = 35; (* BUTTON in tree THEBOX *) cbtn9 = 36; (* BUTTON in tree THEBOX *) cbtn10 = 37; (* BUTTON in tree THEBOX *) cbtn11 = 38; (* BUTTON in tree THEBOX *) cbtn12 = 39; (* BUTTON in tree THEBOX *) cbtn13 = 40; (* BUTTON in tree THEBOX *) cbtn14 = 41; (* BUTTON in tree THEBOX *) cbtn15 = 42; (* BUTTON in tree THEBOX *) tbexit = 43; (* BUTTON in tree THEBOX *) cbtn4 = 44; (* BUTTON in tree THEBOX *) cbtn5 = 45; (* BUTTON in tree THEBOX *) cbtn6 = 46; (* BUTTON in tree THEBOX *) cbtn7 = 47; (* BUTTON in tree THEBOX *) ww 0@Ppaa``` aao aah!?aao< ??aa`~?3aao~-?!aa`<?aao33 aaO2~0`!!aaexo ?aaUS0? `U?aaU`?egs aa eF? <#UU2?W?aaa Uv2yxGf~W?L?aa%<?`0jǪg~g?saa2>U,UT3?Uaaa?~qenݖ~paa? <aa d;U/0oeK0<~k +y3aa?@mUxKV߲`3 x/0ffdvծaa@`oުPXQǩ/XO0j cBB</%W8aa_}iƂ?)2`€V- 0xʿ%^~@%`[<d _/IUW2)aa_<sjv?ۀ$~fxb3s /00p%~p eyT?aa? Y G?U6?~~/K0[!aR>$~)[/0$/ -? aax U~/K08x>?`s N<bUU̳?T)`& paa*e8 [g<` x<[8l mUE*,>kf_TπaabT`?U?KK0/`?~(6?aff2J~<@UU2?Z@aa _1UO̰?pH~jfYc?U?U곥UU2?Uaa+xif@~Ik?~UU2?Uj&ᏟÚ?k%<fYaaM?p3pU~VϘ?`[<%|f3fNW>U ?T,paaY?&ǀǀY?kg `%<fX3p_ `aal< VӰ0U?US,aap~/0o fYxaa8<~WRߕaaf~M?~aar<~*>*aa%5>UÀ?aa @Sl~R|faa]n+4>,<#:_aa YxGtaa_*YuS<aaR U,:`aa4?@@~|aa=8?3aa|9?!aa<?aa?NO0aa?xaa@@?@@@DDD aaa4?[`yyy111###DDD9999 9 9 aa0/0EEE}}}}}}___AAAaaj{0DDD$$$EEEAAAPPPA A A aaJj`xxx999DDD999999aaGaa4p>aa bb0*0*0*0*qqqq{{{{}}}}yyyy (((((((("""" @EEEE ssss####x@x@x@x@yyyy ((((    """" @AAAA r/r/r/r/ ####|@|@|@|@AAAA 0*0*0*0*bb0*0*0*0*ssssȾȾȾȾAAAAȒȒȒȒxxxx"""" ((((       BBBB,,,,"""" ((((<<<<    CCCCpppp"""" ((((    "B"B"B"B))))<<<<ǾǾǾǾ>>>>    >>>((((>>>>####((((RRRR((((""""""""((((""""####<<<<ǾǾǾǾzzzzoooo####<<<<ǾǾǾǾ```````` 0*0*0*bb0*0*0*0* EEEE!!!!====$$$$!!!!QQQQEEEE!!!!Q@Q@Q@Q@AAAA((((!!!!))))!!!!J8J8J8J8AAAA0000!!!!QQQQ!!!!QQQQDDDDAAAA((((<<<<^^^^====xxxxCCCC$$$$0*0*0*0*bb???030 0 0  0 0 0 09999     QQQQ@@@@     QQQQ@@@@ 0 0 0 0 QQQQ@@@@  0 0 0 08@8@8@8@      0 0 01111 f f$ f ENTER DIRECTION TO EDITEXITNOT (S XOR D)CHOOSE COPY MODEDELETES AND DS AND (NOT D)S (overwrite)(NOT S) AND DD (do nothing)S XOR DS OR DNOT (S OR D)NOT D (inverse)S OR (NOT D)NOT S (inv.ovr)(NOT S) OR DNOT (S AND D)SOLID 1512346ADJUST SPEED512346ADJUST VBLANKSVblanks :Speed :234567890012345678XPARENTXORR/XPRNTREPLACEMASK MODEDELETECOPY MODES AND DS AND (NOT D)S (overwrite)S OR (NOT D)NOT D (inverse)NOT (S XOR D)NOT (S OR D)NOT S (inv.ovr)(NOT S) OR DNOT (S AND D)SOLID 1DONE(NOT S) AND DD (do nothing)S XOR DS OR DB ?  ???? ?? ?? p ??????8|? '??8??*??8??jJ* zZ$<=Qbcr$12 ?NOPZ[ \defhijlmnpqrtuvxyz|}~   r$   0s A  A A A A    A    A   A ,  A : A H a> r%AC AdAkAs A A  A A A A A A A AAa  rA  A A A A    s   V  d  A "      rA 3 A 5A 7A 9A ;  s   r    A =   r%     r  6 R n            r  2 N j         r$  ./r$  J !"#$ %&*'8(E)U*b +p ,x -}./ 1  f fnvYBOX CENTERDNRTRLFTRRTRUPRDNR DNLFT UPRT UPLFT BUTTON EXITBTNCOPYBOXBT9BOXT9BOXBT0BOXBT1BOXBT2BOXBT3BOXBT4BOXBT5BOX BT6BOX BT7BOX BT8BOX BT10OX BT11OXBT12OXBT13OXBT14OXBT15OXSPEEDBOXB5EDBOXB1EDBOXB2EDBOXB3EDBOXB4EDBOXBUPDBOXBDNDBOX B6DBOXVBLBOXXVB5OXXVB1OXXVB2OXXVB3OXXVB4OXXVBUPXXVBDNXX VB6XX T2XXTHEBOXXVBTN1XVBTN2XVBTN3XVBTN4XVBTN5X VBTN6X VBTN7X VBTN8X VBTN9XSBTN0XSBTN1XSBTN2XSBTN3XSBTN4XSBTN5XSBTN6XSBTN7XSBTN8XMBTN1XMBTN2XMBTN3XMBTN0XCBTN0X CBTN1X!CBTN2X"CBTN3X#CBTN8X$CBTN9X%CBTN10X&CBTN11X'CBTN12X(CBTN13X)CBTN14X*CBTN15X+TBEXITX,CBTN4X-CBTN5X.CBTN6X/CBTN7Xp{$P-} { turn pointer checking off.. } PROGRAM JOYSTICK; (* Link with JOYSUBS.O and SPR4.O *) (* resource set indicies for JOYSTICK *) CONST box = 0; (* form/dialog *) center = 3; (* IMAGE in tree BOX *) dnrt = 4; (* IMAGE in tree BOX *) lft = 5; (* IMAGE in tree BOX *) rt = 6; (* IMAGE in tree BOX *) up = 7; (* IMAGE in tree BOX *) dn = 8; (* IMAGE in tree BOX *) dnlft = 9; (* IMAGE in tree BOX *) uprt = 10; (* IMAGE in tree BOX *) uplft = 11; (* IMAGE in tree BOX *) button = 12; (* IMAGE in tree BOX *) exitbtn = 13; (* BUTTON in tree BOX *) copybox = 1; (* form/dialog *) bt9 = 1; (* BUTTON in tree COPYBOX *) t = 2; (* TEXT in tree COPYBOX *) bt0 = 3; (* BUTTON in tree COPYBOX *) bt1 = 4; (* BUTTON in tree COPYBOX *) bt2 = 5; (* BUTTON in tree COPYBOX *) bt3 = 6; (* BUTTON in tree COPYBOX *) bt4 = 7; (* BUTTON in tree COPYBOX *) bt5 = 8; (* BUTTON in tree COPYBOX *) bt6 = 9; (* BUTTON in tree COPYBOX *) bt7 = 10; (* BUTTON in tree COPYBOX *) bt8 = 11; (* BUTTON in tree COPYBOX *) bt10 = 12; (* BUTTON in tree COPYBOX *) bt11 = 13; (* BUTTON in tree COPYBOX *) bt12 = 14; (* BUTTON in tree COPYBOX *) bt13 = 15; (* BUTTON in tree COPYBOX *) bt14 = 16; (* BUTTON in tree COPYBOX *) bt15 = 17; (* BUTTON in tree COPYBOX *) speedbox = 2; (* form/dialog *) b5 = 1; (* BUTTON in tree SPEEDBOX *) b1 = 2; (* BUTTON in tree SPEEDBOX *) b2 = 3; (* BUTTON in tree SPEEDBOX *) b3 = 4; (* BUTTON in tree SPEEDBOX *) b4 = 5; (* BUTTON in tree SPEEDBOX *) bup = 7; (* IMAGE in tree SPEEDBOX *) bdn = 8; (* IMAGE in tree SPEEDBOX *) b6 = 9; (* BUTTON in tree SPEEDBOX *) vblbox = 3; (* form/dialog *) vb5 = 1; (* BUTTON in tree VBLBOX *) vb1 = 2; (* BUTTON in tree VBLBOX *) vb2 = 3; (* BUTTON in tree VBLBOX *) vb3 = 4; (* BUTTON in tree VBLBOX *) vb4 = 5; (* BUTTON in tree VBLBOX *) vbup = 7; (* IMAGE in tree VBLBOX *) vbdn = 8; (* IMAGE in tree VBLBOX *) vb6 = 9; (* BUTTON in tree VBLBOX *) t2 = 10; (* TEXT in tree VBLBOX *) thebox = 4; (* form/dialog *) vbtn1 = 4; (* BOXTEXT in tree THEBOX *) vbtn2 = 5; (* BOXTEXT in tree THEBOX *) vbtn3 = 6; (* BOXTEXT in tree THEBOX *) vbtn4 = 7; (* BOXTEXT in tree THEBOX *) vbtn5 = 8; (* BOXTEXT in tree THEBOX *) vbtn6 = 9; (* BOXTEXT in tree THEBOX *) vbtn7 = 10; (* BOXTEXT in tree THEBOX *) vbtn8 = 11; (* BOXTEXT in tree THEBOX *) vbtn9 = 12; (* BOXTEXT in tree THEBOX *) sbtn0 = 14; (* BOXTEXT in tree THEBOX *) sbtn1 = 15; (* BOXTEXT in tree THEBOX *) sbtn2 = 16; (* BOXTEXT in tree THEBOX *) sbtn3 = 17; (* BOXTEXT in tree THEBOX *) sbtn4 = 18; (* BOXTEXT in tree THEBOX *) sbtn5 = 19; (* BOXTEXT in tree THEBOX *) sbtn6 = 20; (* BOXTEXT in tree THEBOX *) sbtn7 = 21; (* BOXTEXT in tree THEBOX *) sbtn8 = 22; (* BOXTEXT in tree THEBOX *) mbtn1 = 24; (* BUTTON in tree THEBOX *) mbtn2 = 25; (* BUTTON in tree THEBOX *) mbtn3 = 26; (* BUTTON in tree THEBOX *) mbtn0 = 27; (* BUTTON in tree THEBOX *) cbtn0 = 30; (* BUTTON in tree THEBOX *) cbtn1 = 32; (* BUTTON in tree THEBOX *) cbtn2 = 33; (* BUTTON in tree THEBOX *) cbtn3 = 3Z4; (* BUTTON in tree THEBOX *) cbtn8 = 35; (* BUTTON in tree THEBOX *) cbtn9 = 36; (* BUTTON in tree THEBOX *) cbtn10 = 37; (* BUTTON in tree THEBOX *) cbtn11 = 38; (* BUTTON in tree THEBOX *) cbtn12 = 39; (* BUTTON in tree THEBOX *) cbtn13 = 40; (* BUTTON in tree THEBOX *) cbtn14 = 41; (* BUTTON in tree THEBOX *) cbtn15 = 42; (* BUTTON in tree THEBOX *) tbexit = 43; (* BUTTON in tree THEBOX *) cbtn4 = 44; (* BUTTON in tree THEBOX *) cbtn5 = 45; (* BUTTON in tree THEBOX *) cbtn6 = 46; (* BUTTON in tree THEBOX *) cbtn7 = 47; (* BUTTON in tree THEBOX *) (* MENU MAP OF SCREEN *) m1_bx = 159; m1_tx = 58 ; m1_by = 127; m1_ty = 115; m2_bx = 263; m2_tx = 162; m2_by = 127; m2_ty = 115; m3_bx = 159; m3_tx = 58 ; m3_by = 142; m3_ty = 130; m4_bx = 263; m4_tx = 162; m4_by = 142; m4_ty = 130; m5_bx = 159; m5_tx = 58 ; m5_by = 157; m5_ty = 145; m6_bx = 263; m6_tx = 162; m6_by = 157; m6_ty = 145; m7_bx = 159; m7_tx = 58 ; m7_by = 172; m7_ty = 160; m8_bx = 263; m8_tx = 162; m8_by = 172; m8_ty = 160; m9_bx = 211; m9_tx = 110; m9_by = 187; m9_ty = 175; frm = 0; spd = 1; vbl = 2; mmod = 3; cmod = 4; (*$I gemconst.pas *) (* Include all the GEM constants *) TYPE ALBLOCK = array[0..3] of long_integer; a_ray = array[0..50] of array[0..4] of integer; Screendef = ^Screendata; Screendata = PACKED ARRAY[0..32511] OF byte; scrn_memory = packed array [ 0..31999 ] of BYTE; c_pallet = array[0..15] of integer; degas_pic = record rez : integer; pal : c_pallet; scr : scrn_memory; end; degas_file = file of degas_pic; ptr_screen = ^scrn_memory; { pointer to the screen array } pallet = record pal0 : c_pallet; end; p_file = file of pallet; seq = record ary : array[1..18] of a_ray; stats : array [1..18] of integer; end; seq_file = file of seq; msk_data = packed array[0..7679] of byte; msk_ptr = ^msk_data; msk_rec = record msk : msk_data; end; msk_file = file of msk_rec; mfdb_fields = (addr1,addr2,wid_pix,ht_pix,wid_wds,flag,num_planes,r1,r2,r3); mfdb = array[mfdb_fields] of integer; grid = array[0..31] of array[0..31] of integer; p_name = packed array[0..63] of char; (*$I gemtype.pas *) VAR c: char; mask_data : msk_data; m_ptr : msk_ptr; mask_rec : msk_rec; mask_mode : integer; s_ptr : ptr_screen; { a pointer to a packed array of bytes... } sc1 : ptr_screen; { a pointer to a packed array of bytes... } sc2 : ptr_screen; { a pointer to a packed array of bytes... } sc4 : ptr_screen; { a pointer to a packed array of bytes... } dummy,x,y : integer; scr1 : scrn_memory; scr2 : scrn_memory; scr3 : scrn_memory; scr4 : scrn_memory; scr5 : scrn_memory; rez1 : integer; pal1 : c_pallet; pal2 : c_pallet; pal3 : c_pallet; pal4 : c_pallet; pal6 : c_pallet; pal7 : c_pallet; pal8 : c_pallet; current_pallet : c_pallet; pic : degas_pic; screen,backup,unscreen,sprite,backup1,mask : MFDB; current_x,current_y, last_x,last_y, llast_x,llast_y, vspeed, vvbls, vmode, vmmode : integer; frame_loc : array[0..59] of array[1..2] of integer; frame,last_frame : integer; ssp,vbladr,nvbls,vblque_adr,address,vblsem: long_integer; vbl_flag,ok_flag,quit_flag,anim_flag,sprite_flag,mask_flag : boolean; up_aray : a_ray; dn_aray : a_ray; up_lft_aray : a_ray; dn_lft_aray : a_ray; lft_aray : a_ray; rt_aray : a_ray; up_rt_aray : a_ray; dn_rt_aray : a_ray; still_aray : a_ray; btn_up_aray : a_ray; btn_dn_aray : a_ray; btn_up_lft_aray : a_ray; btn_dn_lft_aray : a_ray; btn_lft_aray : a_ray; btn_rt_aray : a_ray; btn_up_rt_aray : a_ray; btn_dn_rt_aray : a_ray; btn_still_aray : a_ray; still_cnt, up_cnt, dn_cnt, up_rt_cnt, dn_rt_cnt, up_lft_cnt, dn_lft_cnt, lft_cnt, rt_cnt : integer; btn_still_cnt, btn_up_cnt, btn_dn_cnt, btn_up_rt_cnt, btn_dn_rt_cnt, btn_up_lft_cnt, btn_dn_lft_cnt, btn_lft_cnt, btn_rt_cnt : integer; mode : integer; vbl_cnt : integer; speed_cnt : integer; mode_str : str255; speed_str : str255; vbl_str : str255; still_max, up_max, dn_max, up_rt_max, dn_rt_max, up_lft_max, dn_lft_max, lft_max, rt_max : integer ; btn_still_max, btn_up_max, btn_dn_max, btn_up_rt_max,  btn_dn_rt_max, btn_up_lft_max, btn_dn_lft_max, btn_lft_max, btn_rt_max : integer ; Curlogbase: Screendef; Curphybase: Screendef; Visible_Screen:Screendef; Build_Screen: Screendef; Screen1: Screendef; Screen2: Screendef; SPVBL_BOX,STICK_BOX,COPY_BOX,VB_BOX,SP_BOX,THE_BOX : DIALOG_PTR; (*$I gemsubs.pas *) (* Include all GEM subroutines *) Procedure wvbl; XBIOS( 37 ); { Text_Height - Set the height in pixels of text, when it is drawn using the Draw_String library call. } PROCEDURE Text_Height( height : integer ) ; TYPE Ctrl_Parms = ARRAY [ 0..11 ] OF integer ; Int_In_Parms = ARRAY [ 0..15 ] OF integer ; Int_Out_Parms = ARRAY [ 0..45 ] OF integer ; Pts_In_Parms = ARRAY [ 0..11 ] OF integer ; Pts_Out_Parms = ARRAY [ 0..11 ] OF integer ; VAR control : Ctrl_Parms ; int_in : Int_In_Parms ; int_out : Int_Out_Parms ; pts_in : Pts_In_Parms ; pts_out : Pts_Out_Parms ; PROCEDURE VDI_Call( cmd, sub_cmd : integer ; nints, npts : integer ; VAR ctrl : Ctrl_Parms ; VAR int_in : Int_In_Parms ; VAR int_out : Int_Out_Parms ; VAR pts_in : Pts_In_Parms ; VAR pts_out : Pts_Out_Parms ; translate : boolean ) ; EXTERNAL ; BEGIN pts_in[0] := 0 ; pts_in[1] := height ; VDI_Call(12, 0, 0, 2, control, int_in, int_out, pts_in, pts_out, false); END ; { Get_Height - Get the height in pixels of text, when it is drawn using the Draw_String library call. } FUNCTION Get_Height : integer ; TYPE Ctrl_Parms = ARRAY [ 0..11 ] OF integer ; Int_In_Parms = ARRAY [ 0..15 ] OF integer ; Int_Out_Parms = ARRAY [ 0..45 ] OF integer ; Pts_In_Parms = ARRAY [ 0..11 ] OF integer ; Pts_Out_Parms = ARRAY [ 0..11 ] OF integer ; VAR control : Ctrl_Parms ; int_in : Int_In_Parms ; int_out : Int_Out_Parms ; pts_in : Pts_In_Parms ; pts_out : Pts_Out_Parms ; PROCEDURE VDI_Call( cmd, sub_cmd : integer ; nints, npts : integer ; VAR ctrl : Ctrl_Parms ; VAR int_in : Int_In_Parms ; VAR int_out : Int_Out_Parms ; VAR pts_in : Pts_In_Parms ; VAR pts_out : Pts_Out_Parms ; translate : boolean ) ; EXTERNAL ; BEGIN VDI_Call(131, 0, 0, 0, control, int_in, int_out, pts_in, pts_out, false); Get_Height := pts_out[9] ; END ; PROCEDURE str( n: integer; VAR s: str255 ); VAR digit, (* Holds each digit value of 'n' as it is created *) divisor, (* Division by this is used to find each digit *) i: integer; (* Index in string at which to put next character *) leading: boolean; (* True, if the next digit will be the leading digit *) (* add_char - Add a single character to the string, incrementing the curren index. *) PROCEDURE add_char( c: char ); BEGIN i := i + 1; s[i] := c; END; BEGIN (* str - main routine *) i := 0; (* Start at the beginning of the string *) IF n < 0 THEN (* If the number is negative, add a minus sign *) BEGIN add_char( '-' ); n := -n; END; divisor := 10; leading := true; WHILE divisor > 0 DO BEGIN digit := n DIV divisor; IF (digit <> 0) OR NOT( leading ) THEN BEGIN add_char( chr(digit + ord('0')) ); leading := false; END; n := n MOD divisor; divisor := divisor DIV 10; END; IF i = 0 THEN add_char( '0' ); s[0] := chr(i); END; FUNCTION val( s: str255 ): integer; VAR minus: boolean; i,n : integer; BEGIN i := 1; WHILE (i < length(s)) AND (s[i] = ' ') DO i := i + 1; n := 0; IF length(s) >= i THEN BEGIN IF s[i] <> '-' THEN minus := false ELSE BEGIN minus := true; i := i + 1; END; WHILE (i <= length(s)) AND (s[i] IN ['0'..'9']) DO BEGIN n := (n * 10) + ord(s[i]) - ord('0'); i := i + 1; END; IF minus THEN n := -n; END; val := n; END; Function Get_cur_disk : integer; GEMDOS( $19 ); Procedure get_free_space(var buffer : alblock; disk : integer ); GEMDOS( $36 ); Function IO_Result : integer; EXTERNAL; Procedure IO_Check( b : boolean ); EXTERNAL; FUNCTION Getphybase : Screendef; Xbios(2); FUNCTION Getlogbase : Screendef; Xbios(3); FUNCTION logbase : ptr_screen; Xbios(3); FUNCTION Getrez : integer; Xbios(4); PROCEDURE Setscreen(Logloc,Phyloc : Screendef; Rez : INTEGER); Xbios(5); Procedure swap; var tempscreen : screendef; begin Tempscreen := Visible_Screen; Visible_Screen := Build_Screen; Build_Screen := Tempscreen; Setscreen(Build_Screen,Visible_Screen,-1); end; FUNCTION Alloc_Screen : Screendef; CONST Scraddrresolution = 256; VAR Scrjunk: RECORD CASE Byte OF 0 : (Sali: Long_Integer); 1 : (Sa: Screendef); END; BEGIN WITH Scrjunk DO BEGIN NEW(Sa); IF Sali MOD Scraddrresolution <> 0 THEN Sali := Sali + (Scraddrresolution - (Sali MOD Scraddrresolution)); END; Alloc_Screen := Scrjunk.Sa; END; Procedure init_form(var form :mfdb; var addr : scrn_memory ); EXTERNAL; Procedure init_mask_form(var form :mfdb; var addr : msk_data ); EXTERNAL; Procedure copy_rect( var s,d : mfdb; from_x,from_y, to_x,to_y, wid,ht,mode : integer); EXTERNAL; Procedure copy_mask( var s,d : mfdb; from_x,from_y, to_x,to_y, wid,ht,mode : integer); EXTERNAL; PROCEDURE Init_Stick; EXTERNAL; PROCEDURE End_Stick; EXTERNAL; { Call this routine to get the current joystick value. The values returned for the eight directions are as follows: 5 1 9 \|/ If the trigger is depressed, then 128 will be added to the 4--0--8 direction value /|\ 6 2 10 "which_stick" should be given the value 0 or 1. } FUNCTION Stick( which_stick: integer ): integer; EXTERNAL; FUNCTION physbase : ptr_screen; XBIOS( 2 ); function set_colr( reg,col : integer ) : integer; xbios(7); PROCEDURE SRestore( where : integer; name : STRING ); VAR f : degas_file; { a file containing a screenful of bytes.. } x : integer; BEGIN { reset automatically fills file buffer with data from first record } reset( f, name ); pic := f^; with pic do begin case where of 1: begin pal1 := pic.pal; scr1 := pic.scr; end; 2: begin pal4 := pic.pal; scr4 := pic.scr; for x := 0 to 15 do dummy := set_colr(x,pal4[x]); end; end; end; { file is automatically closed when we leave this procedure. } END; Procedure error_rtn(error : integer); begin case error of 1: dummy := do_alert('[3][DISK ERROR # 1][ OK ]',1); 2: dummy := do_alert('[3][DISK ERROR # 2][ OK ]',1); 3: dummy := do_alert('[3][DISK ERROR # 3][ OK ]',1); 4: dummy := do_alert('[3][DISK ERROR # 4][ OK ]',1); 5: dummy := do_alert('[3][DISK ERROR # 5][ OK ]',1); 6: dummy := do_alert('[3][DISK ERROR # 6][ OK ]',1); 7: dummy := do_alert('[3][DISK ERROR # 7][ OK ]',1); 8: dummy := do_alert('[3][DISK ERROR # 8][ OK ]',1); 9: dummy := do_alert('[3][BAD FILENAME][ OK ]',1); 10: dummy := do_alert('[3][DISK ERROR # 10][ OK ]',1); 11: dummy := do_alert('[3][DISK ERROR # 11][ OK ]',1); -1: dummy := do_alert('[3][TOS ERROR # 1][ OK ]',1); -2: dummy := do_alert('[3][DRIVE NOT READY][ OK ]',1); -3: dummy := do_alert('[3][UNKNOWN ERROR][ OK ]',1); -4: dummy := do_alert('[3][CRC ERROR][ OK ]',1); -5: dummy := do_alert('[3][BAD REQUEST][ OK ]',1); -6: dummy := do_alert('[3][SEEK ERROR][ OK ]',1); -7: dummy := do_alert('[3][UNKNOWN MEDIA][ OK ]',1); -8: dummy := do_alert('[3][SECTOR NOT FOUND][ OK ]',1); -9: dummy := do_alert('[3][TOS ERROR # 9][ OK ]',1); -10: dummy := do_alert('[3][WRITE FAULT][ OK ]',1); -11: dummy := do_alert('[3][READ FAULT][ OK ]',1); -12: dummy := do_alert('[3][GENERAL ERROR][ OK ]',1); -13: dummy := do_alert('[3][WRITE PROTECTED][ OK ]',1); -14: dummy := do_alert('[3][MEDIA CHANGE][ OK ]',1); -15: dummy := do_alert('[3][UNKNOWN DEVICE][ OK ]',1); -16: dummy := do_alert('[3][BAD SECTOR ON FORMAT][ OK ]',1); -17: dummy := do_alert('[3][DISK CHANGE][ OK ]',1); -32: dummy := do_alert('[3][INVALID FUNCTION NUMBER][ OK ]',1); -33: dummy := do_alert('[3][FILE NOT FOUND][ OK ]',1); -34: dummy := do_alert('[3][PATH NOT FOUND][ OK ]',1); -35: dummy := do_alert('[3][TOO MANY OPEN FILES][ OK ]',1); -36: dummy := do_alert('[3][ACCESS DENIED][ OK ]',1); -39: dummy := do_alert('[3][NOT ENOUGH MEMORY][ OK ]',1); -40: dummy := do_alert('[3][INVALID BLOCK ADDRESS][ OK ]',1); -46: dummy := do_alert('[3][INVALID DRIVE][ OK ]',1); -49: dummy := do_alert('[3][NO MORE FILES][ OK ]',1); -64: dummy := do_alert('[3][RANGE ERROR][ OK ]',1); -65: dummy := do_alert('[3][INTERNAL ERROR][ OK ]',1); -66: dummy := do_alert('[3][INVALID LOAD FORMAT][ OK ]',1); -67: dummy := do_alert('[3][SETBLOCK FAILURE][ OK ]',1); OTHERWISE : DUMMY := DO_ALERT('[3][UNKNOWN ERROR][ OK ]',1); end; end; Procedure get_default( var str1 : path_name); var x : integer; begin x := get_cur_disk; case x of 0: str1 := 'A:'; 1: str1 := 'B:'; 2: str1 := 'C:'; 3: str1 := 'D:'; 4: str1 := 'E:'; 5: str1 := 'F:'; 6: str1 := 'G:'; 7: str1 := 'H:'; 8: str1 := 'I:'; 9: str1 := 'J:'; 10: str1 := 'K:'; 11: str1 := 'L:'; 12: str1 := 'M:'; 13: str1 := 'N:'; 14: str1 := 'O:'; 15: str1 := 'P:'; OTHERWISE : STR1 := 'A:'; end; end; Function check_space(x : integer ; str1 : path_name) : boolean; var ch : char; y : integer; block : ALBLOCK; fa,ta,bps,spa,ans : long_integer; flag : boolean; begin ch := str1[1]; if ch = 'A' then y := 1; if ch = 'a' then y := 1; if ch = 'B' then y := 2; if ch = 'b' then y := 2; if ch = 'C' then y &:= 3; if ch = 'c' then y := 3; if ch = 'D' then y := 4; if ch = 'd' then y := 4; if ch = 'E' then y := 5; if ch = 'e' then y := 5; if ch = 'F' then y := 6; if ch = 'f' then y := 6; if ch = 'G' then y := 7; if ch = 'g' then y := 7; if ch = 'H' then y := 8; if ch = 'h' then y := 8; if ch = 'I' then y := 9; if ch = 'i' then y := 9; if ch = 'J' then y := 10; if ch = 'j' then y := 10; if ch = 'K' then y := 11; if ch = 'k' then y := 11; if ch = 'L' then y := 12; if ch = 'l' then y := 12; if ch = 'M' then y := 13; if ch = 'm' then y := 13; if ch = 'N' then y := 14; if ch = 'n' then y := 14; if ch = 'O' then y := 15; if ch = 'o' then y := 15; if ch = 'P' then y := 16; if ch = 'p' then y := 16; get_free_space(block,y); fa := block[0] * block[2] * block[3]; case x of 1: if fa < 6000 then flag := false else flag := true; 2: if fa < 32768 then flag := false else flag := true; 3: if fa < 2048 then flag := false else flag := true; 4: if fa < 3096 then flag := false else flag := true; end; if flag = false then begin check_space := false; dummy := do_alert('[3][ |THIS DISK DOES NOT|HAVE ENOUGH R00M][ OK ]',1); end else check_space := true; end; Function check_original(filename : path_name): boolean; TYPE ck = record ck1 : integer; end; ck2 = file of ck; var f : ck2; error : integer; begin io_check(false); reset(f,filename); error := io_result; if error = 0 then begin check_original := false; end else check_original := true; end; Procedure build_scrn; begin hide_mouse; s_ptr^ := scr4; { and assign file buffer to screen } show_mouse; end; Function Load_sprite : boolean; var f : degas_file; x,error : integer; def_path,filename,STR1 : path_name; t : boolean; begin get_default(str1); filename := ''; def_path := CONCAT(STR1,'\*.SPT'); t := get_in_file(def_path,filename); build_scrn; set_mouse(M_Bee); IO_check(false); if t then begin reset( f, filename ); error := IO_result; if error = 0 then begin pic := f^; with pic do begin pal3 := pic.pal; scr3 := pic.scr; end; sprite_flag := true; load_sprite := true; end else begin set_mouse(M_Arrow); error_rtn(error); load_sprite := false; end; end else Load_sprite := false; set_mouse(M_Arrow); end; Procedure Load_playfield; var f : degas_file; x,error : integer; def_path,filename,STR1 : path_name; t : boolean; begin get_default(str1); filename := ''; def_path := CONCAT(STR1,'\*.PI1'); t := get_in_file(def_path,filename); build_scrn; set_mouse(M_Bee); IO_check(false); if t then begin reset( f, filename ); error := IO_result; if error = 0 then begin pic := f^; with pic do begin scr1 := pic.scr; end; sprite_flag := true; end else begin set_mouse(M_Arrow); error_rtn(error); end; end; set_mouse(M_Arrow); end; Procedure Load_mask; var f : msk_file; m : msk_rec; x,error : integer; def_path,filename,STR1 : path_name; t : boolean; begin get_default(str1); filename := ''; def_path := CONCAT(STR1,'\*.MSK'); t := get_in_file(def_path,filename); build_scrn; set_mouse(M_Bee); IO_check(false); if t then begin reset( f, filename ); error := IO_result; if error = 0 then begin m := f^; with m do begin mask_data := m.msk; mask_flag := true; end; end else begin set_mouse(M_Arrow); error_rtn(error); end; end else mask_flag := false; set_mouse(M_Arrow); end; Procedure Save_seq_file; var f : seq_file; s : seq; x,error : integer; def_path,filename,str1 : path_name; t,orig : boolean; begin if anim_flag then begin get_default(str1); filename := ''; def_path := CONCAT(STR1,'\*.SEQ'); t := get_in_file(def_path,filename); build_scrn; IO_Check(false); set_mouse(M_Bee); if t then begin orig := check_original(filename); if orig then begin if t then t := check_space(1,filename); end; end; if t then begin with s do begin s.ary[1] := up_aray ; s.ary[2] := dn_aray ; s.ary[3] := up_lft_aray ; s.ary[4] := dn_lft_aray ; s.ary[5] := lft_aray ; s.ary[6] := rt_aray ; s.ary[7] := up_rt_aray ; s.ary[8] := dn_rt_aray ; s.ary[9] := still_aray ; s.ary[10] := btn_up_aray ; s.ary[11] := btn_dn_aray ; s.ary[12] := btn_up_lft_aray ; s.ary[13] := btn_dn_lft_aray ; s.ary[14] := btn_lft_aray ; s.ary[15] := btn_rt_aray ; s.ary[16] := btn_up_rt_aray ; s.ary[17] := btn_dn_rt_aray ; s.ary[18] := btn_still_aray ; s.stats[1] := still_max; s.stats[2] := up_max; s.stats[3] := dn_max; s.stats[4] := up_rt_max; s.stats[5] := dn_rt_max; s.stats[6] := up_lft_max; s.stats[7] := dn_lft_max; s.stats[8] := lft_max; s.stats[9] := rt_max; s.stats[10] := btn_still_max; s.stats[11] := btn_up_max; s.stats[12] := btn_dn_max; s.stats[13] := btn_up_rt_max; s.stats[14] := btn_dn_rt_max; s.stats[15] := btn_up_lft_max; s.stats[16] := btn_dn_lft_max; s.stats[17] := btn_lft_max; s.stats[18] := btn_rt_max; end; rewrite(f,filename); error := IO_Result; if error = 0 then begin f^ := s; put(f); end else begin set_mouse(M_Arrow); error_rtn(error); end; end; set_mouse(M_Arrow); end else dummy := do_alert( '[1][ | NO SEQUENCE | DEFINED ][ OOPS ]',1); end; Procedure Load_seq_file; var f : seq_file; s : seq; x,error : integer; def_path,filename,str1 : path_name; t : boolean; begin get_default(str1); filename := ''; def_path := CONCAT(STR1,'\*.SEQ'); t := get_in_file(def_path,filename); build_scrn; IO_Check(false); set_mouse(M_Bee); if t then begin reset( f, filename ); error := IO_Result; if error = 0 then begin s := f^; with s do begin up_aray := s.ary[1]; dn_aray := s.ary[2]; up_lft_aray := s.ary[3]; dn_lft_aray := s.ary[4]; lft_aray := s.ary[5]; rt_aray := s.ary[6]; up_rt_aray := s.ary[7]; dn_rt_aray := s.ary[8]; still_aray := s.ary[9]; btn_up_aray := s.ary[10]; btn_dn_aray := s.ary[11]; btn_up_lft_aray := s.ary[12]; btn_dn_lft_aray := s.ary[13]; btn_lft_aray := s.ary[14]; btn_rt_aray := s.ary[15]; btn_up_rt_aray := s.ary[16]; btn_dn_rt_aray := s.ary[17]; btn_still_aray := s.ary[18]; still_max := s.stats[1]; up_max := s.stats[2]; dn_max := s.stats[3]; up_rt_max := s.stats[4]; dn_rt_max := s.stats[5]; up_lft_max := s.stats[6]; dn_lft_max := s.stats[7]; lft_max := s.stats[8]; rt_max := s.stats[9]; btn_still_max := s.stats[10]; btn_up_max := s.stats[11]; btn_dn_max := s.stats[12]; btn_up_rt_max := s.stats[13]; btn_dn_rt_max := s.stats[14]; btn_up_lft_max := s.stats[15]; btn_dn_lft_max := s.stats[16]; btn_lft_max := s.stats[17]; btn_rt_max := s.stats[18]; end; end else begin set_mouse(M_Arrow); error_rtn(error); end; end; set_mouse(M_Arrow); end; Function gf_rtn( var mx,my,frame : integer ) : integer ; begin gf_rtn := 0; if ((mx >= 0) and(my >= 0)and(mx <= 31) and(my <= 31)) then frame := 0; if ((mx >= 32) and(my >= 0)and(mx <= 63) and(my <= 31)) then frame := 1; if ((mx >= 64) and(my >= 0)and(mx <= 95) and(my <= 31)) then frame := 2; if ((mx >= 96) and(my >= 0)and(mx <= 127)and(my <= 31)) then frame := 3; if ((mx >= 128)and(my >= 0)and(mx <= 159)and(my <= 31)) then frame := 4; if ((mx >= 160)and(my >= 0)and(mx <= 191)and(my <= 31)) then frame := 5; if ((mx >= 192)and(my >= 0)and(mx <= 223)and(my <= 31)) then frame := 6; if ((mx >= 224)and(my >= 0)and(mx <= 255)and(my <= 31)) then frame := 7; if ((mx >= 256)and(my >= 0)and(mx <= 287)and(my <= 31)) then frame := 8; if ((mx >= 287)and(my >= 0)and(mx <= 319)and(my <= 31)) then frame := 9; if ((mx >= 0) and(my >= 32)and(mx <= 31) and(my <= 63)) then frame := 10; if ((mx >= 32) and(my >= 32)and(mx <= 63) and(my <= 63)) then frame := 11; if ((mx >= 64) and(my >= 32)and(mx <= 95) and(my <= 63)) then frame := 12; if ((mx >= 96) and(my >= 32)and(mx <= 127)and(my <= 63)) then frame := 13; if ((mx >= 128)and(my >= 32)and(mx <= 159)and(my <= 63)) then frame := 14; if ((mx >= 160)and(my >= 32)and(mx <= 191)and(my <= 63)) then frame := 15; if ((mx >= 192)and(my >= 32)and(mx <= 223)and(my <= 63)) then frame := 16; if ((mx >= 224)and(my >= 32)and(mx <= 255)and(my <= 63)) then frame := 17; if ((mx >= 256)and(my >= 32)and(mx <= 287)and(my <= 63)) then frame := 18; if ((mx >= 287)and(my >= 32)and(mx <= 319)and(my <= 63)) then frame := 19; if ((mx >= 0) and(my >= 64)and(mx <= 31) and(my <= 95)) then frame := 20; if ((mx >= 32) and(my >= 64)and(mx <= 63) and(Gmy <= 95)) then frame := 21; if ((mx >= 64) and(my >= 64)and(mx <= 95) and(my <= 95)) then frame := 22; if ((mx >= 96) and(my >= 64)and(mx <= 127)and(my <= 95)) then frame := 23; if ((mx >= 128)and(my >= 64)and(mx <= 159)and(my <= 95)) then frame := 24; if ((mx >= 160)and(my >= 64)and(mx <= 191)and(my <= 95)) then frame := 25; if ((mx >= 192)and(my >= 64)and(mx <= 223)and(my <= 95)) then frame := 26; if ((mx >= 224)and(my >= 64)and(mx <= 255)and(my <= 95)) then frame := 27; if ((mx >= 256)and(my >= 64)and(mx <= 287)and(my <= 95)) then frame := 28; if ((mx >= 287)and(my >= 64)and(mx <= 319)and(my <= 95)) then frame := 29; if ((mx >= 0) and(my >= 96)and(mx <= 31) and(my <= 127)) then frame := 30; if ((mx >= 32) and(my >= 96)and(mx <= 63) and(my <= 127)) then frame := 31; if ((mx >= 64) and(my >= 96)and(mx <= 95) and(my <= 127)) then frame := 32; if ((mx >= 96) and(my >= 96)and(mx <= 127)and(my <= 127)) then frame := 33; if ((mx >= 128)and(my >= 96)and(mx <= 159)and(my <= 127)) then frame := 34; if ((mx >= 160)and(my >= 96)and(mx <= 191)and(my <= 127)) then frame := 35; if ((mx >= 192)and(my >= 96)and(mx <= 223)and(my <= 127)) then frame := 36; if ((mx >= 224)and(my >= 96)and(mx <= 255)and(my <= 127)) then frame := 37; if ((mx >= 256)and(my >= 96)and(mx <= 287)and(my <= 127)) then frame := 38; if ((mx >= 287)and(my >= 96)and(mx <= 319)and(my <= 127)) then frame := 39; if ((mx >= 0) and(my >= 128)and(mx <= 31) and(my <= 159)) then frame := 40; if ((mx >= 32) and(my >= 128)and(mx <= 63) and(my <= 159)) then frame := 41; if ((mx >= 64) and(my >= 128)and(mx <= 95) and(my <= 159)) then frame := 42; if ((mx >= 96) and(my >= 128)and(mx <= 127)and(my <= 159)) then frame := 43; if ((mx >= 128)and(my >= 128)and(mx <= 159)and(my <= 159)) then frame := 44; if ((mx >= 160)and(my >= 128)and(mx <= 191)and(my <= 159)) then frame := 45; if ((mx >= 192)and(my >= 128)and(mx <= 223)and(my <= 159)) then frame := 46; if ((mx >= 224)and(my >= 128)and(mx <= 255)and(my <= 159)) then frame := 47; if ((mx >= 256)and(my >= 128)and(mx <= 287)and(my <= 159)) then frame := 48; if ((mx >= 287)and(my >= 128)and(mx <= 319)and(my <= 159)) then frame := 49; if ((mx >= 0) and(my >= 160)and(mx <= 31) and(my <= 191)) then frame := 50; if ((mx >= 32) and(my >= 160)and(mx <= 63) and(my <= 191)) then frame := 51; if ((mx >= 64) and(my >= 160)and(mx <= 95) and(my <= 191)) then frame := 52; if ((mx >= 96) and(my >= 160)and(mx <= 127)and(my <= 191)) then frame := 53; if ((mx >= 128)and(my >= 160)and(mx <= 159)and(my <= 191)) then frame := 54; if ((mx >= 160)and(my >= 160)and(mx <= 191)and(my <= 191)) then frame := 55; if ((mx >= 192)and(my >= 160)and(mx <= 223)and(my <= 191)) then frame := 56; if ((mx >= 224)and(my >= 160)and(mx <= 255)and(my <= 191)) then frame := 57; if ((mx >= 256)and(my >= 160)and(mx <= 287)and(my <= 191)) then frame := 58; if ((mx >= 287)and(my >= 160)and(mx <= 319)and(my <= 191)) then frame := 59; if ((mx >= 0) and(my >= 192)and(mx <= 80)and(my <= 199)) then gf_rtn := 1; if ((mx >= 239)and(my >= 192)and(mx <= 319)and(my <= 199)) then gf_rtn := 2; end; Procedure get_vblspd_box(var speed,vblanks : integer); VAR dialog : dialog_ptr; button,prompt_item,get_speed,get_vblks,ok_btn : integer; Promt_str,PSa,PSa1,PSb,fs,fs1 : str255 ; BEGIN Promt_str := 'Enter SPEED and VBL'; PSa := 'SPEED.: __'; PSa1 := 'VBLANKS.: __'; PSb := '99'; dialog := New_Dialog( 6, 0, 0, 25, 10 ) ; prompt_item := Add_DItem( dialog, G_String, None, 2, 1, 0, 0, 0, 0 ) ; Set_DText( dialog, prompt_item, Promt_str , System_Font, TE_Left ) ; GET_speed := Add_DItem( dialog, G_FText, None, 2, 3, 18, 1, 0, $1180 ); Set_DEdit( dialog, GET_speed, PSa, PSb, speed_str, System_Font, TE_Center ) ; GET_vblks := Add_DItem( dialog, G_FText, None, 2, 5, 18, 1, 0, $1180 ); Set_DEdit( dialog, GET_vblks, PSa1, PSb, vbl_str, System_Font, TE_Center ) ; ok_btn := Add_DItem( dialog, G_Button, Selectable|Exit_Btn|Default, 8, 7, 9, 2, 2, $1180 ) ; Set_DText( dialog, ok_btn, 'OK', System_Font, TE_Center ) ; Center_Dialog(dialog); button := Do_Dialog(dialog,get_speed); End_dialog(dialog); GET_DEDIT(DIALOG,GET_speed,fs); GET_DEDIT(DIALOG,GET_vblks,fs1); vblanks := val(vbl_str); speed := val(speed_str); if button = ok_btn then begin if length(fs) <= 0 then fs := '1'; speed := val(fs); if speed < 0 then speed := 0; if length(fs1) <= 0 then fs1 := '1'; vblanks := val(fs1); if vblanks < 1 then vblanks := 1; end; str(vblanks,vbl_str); str(speed,speed_str); delete_dialog(dialog); END; Procedure do_the_box( var speed,vbls,mmode,mode : integer ); var button,x : integer; begin case speed of 0: obj_setstate(the_box,sbtn0,selected,true); 1: obj_setstate(the_box,sbtn1,selected,true); 2: obj_setstate(the_box,sbtn2,selected,true); 3: obj_setstate(the_box,sbtn3,selected,true); 4: obj_setstate(the_box,sbtn4,selected,true); 5: obj_setstate(the_box,sbtn5,selected,true); 6: obj_setstate(the_box,sbtn6,selected,true); 7: obj_setstate(the_box,sbtn7,selected,true); 8: obj_setstate(the_box,sbtn8,selected,true); end; case vbls of 1: obj_setstate(the_box,vbtn1,selected,true);  2: obj_setstate(the_box,vbtn2,selected,true); 3: obj_setstate(the_box,vbtn3,selected,true); 4: obj_setstate(the_box,vbtn4,selected,true); 5: obj_setstate(the_box,vbtn5,selected,true); 6: obj_setstate(the_box,vbtn6,selected,true); 7: obj_setstate(the_box,vbtn7,selected,true); 8: obj_setstate(the_box,vbtn8,selected,true); 9: obj_setstate(the_box,vbtn9,selected,true); end; case mmode of 0: obj_setstate(the_box,mbtn0,selected,true); 1: obj_setstate(the_box,mbtn1,selected,true); 2: obj_setstate(the_box,mbtn2,selected,true); 3: obj_setstate(the_box,mbtn3,selected,true); end; case mode of 0: obj_setstate(the_box,cbtn0,selected,true); 1: obj_setstate(the_box,cbtn1,selected,true); 2: obj_setstate(the_box,cbtn2,selected,true); 3: obj_setstate(the_box,cbtn3,selected,true); 4: obj_setstate(the_box,cbtn4,selected,true); 5: obj_setstate(the_box,cbtn5,selected,true); 6: obj_setstate(the_box,cbtn6,selected,true); 7: obj_setstate(the_box,cbtn7,selected,true); 8: obj_setstate(the_box,cbtn8,selected,true); 9: obj_setstate(the_box,cbtn9,selected,true); 10: obj_setstate(the_box,cbtn10,selected,true); 11: obj_setstate(the_box,cbtn11,selected,true); 12: obj_setstate(the_box,cbtn12,selected,true); 13: obj_setstate(the_box,cbtn13,selected,true); 14: obj_setstate(the_box,cbtn14,selected,true); 15: obj_setstate(the_box,cbtn15,selected,true); end; for x := 0 to 15 do dummy := set_colr(x,pal4[x]); center_dialog(the_box); button := Do_dialog(the_box,0); if obj_state(the_box,vbtn1) & selected <> 0 then vbls := 1; if obj_state(the_box,vbtn2) & selected <> 0 then vbls := 2; if obj_state(the_box,vbtn3) & selected <> 0 then vbls := 3; if obj_state(the_box,vbtn4) & selected <> 0 then vbls := 4; if obj_state(the_box,vbtn5) & selected <> 0 then vbls := 5; if obj_state(the_box,vbtn6) & selected <> 0 then vbls := 6; if obj_state(the_box,vbtn7) & selected <> 0 then vbls := 7; if obj_state(the_box,vbtn8) & selected <> 0 then vbls := 8; if obj_state(the_box,vbtn9) & selected <> 0 then vbls := 9; if obj_state(the_box,sbtn0) & selected <> 0 then speed := 0; if obj_state(the_box,sbtn1) & selected <> 0 then speed := 1; if obj_state(the_box,sbtn2) & selected <> 0 then speed := 2; if obj_state(the_box,sbtn3) & selected <> 0 then speed := 3; if obj_state(the_box,sbtn4) & selected <> 0 then speed := 4; if obj_state(the_box,sbtn5) & selected <> 0 then speed := 5; if obj_state(the_box,sbtn6) & selected <> 0 then speed := 6; if obj_state(the_box,sbtn7) & selected <> 0 then speed := 7; if obj_state(the_box,sbtn8) & selected <> 0 then speed := 8; if obj_state(the_box,mbtn0) & selected <> 0 then mmode := 0; if obj_state(the_box,mbtn1) & selected <> 0 then mmode := 1; if obj_state(the_box,mbtn2) & selected <> 0 then mmode := 2; if obj_state(the_box,mbtn3) & selected <> 0 then mmode := 3; if obj_state(the_box,cbtn0) & selected <> 0 then mode := 0; if obj_state(the_box,cbtn1) & selected <> 0 then mode := 1; if obj_state(the_box,cbtn2) & selected <> 0 then mode := 2; if obj_state(the_box,cbtn3) & selected <> 0 then mode := 3; if obj_state(the_box,cbtn4) & selected <> 0 then mode := 4; if obj_state(the_box,cbtn5) & selected <> 0 then mode := 5; if obj_state(the_box,cbtn6) & selected <> 0 then mode := 6; if obj_state(the_box,cbtn7) & selected <> 0 then mode := 7; if obj_state(the_box,cbtn8) & selected <> 0 then mode := 8; if obj_state(the_box,cbtn9) & selected <> 0 then mode := 9; if obj_state(the_box,cbtn10) & selected <> 0 then mode := 10; if obj_state(the_box,cbtn11) & selected <> 0 then mode := 11; if obj_state(the_box,cbtn12) & selected <> 0 then mode := 12; if obj_state(the_box,cbtn13) & selected <> 0 then mode := 13; if obj_state(the_box,cbtn14) & selected <> 0 then mode := 14; if obj_state(the_box,cbtn15) & selected <> 0 then mode := 15; obj_setstate(the_box,tbexit,normal,true); end_dialog(the_box); for x := 0 to 15 do dummy := set_colr(x,pal3[x]); end; Function get_anim_seq(var anim_array : a_ray ; var a_count : integer ) : boolean; var n,x,temp,frame,event,mx,my : integer; msg1,msg2,msg3,msg4 : str255; flag,temp1 : boolean; msg : message_buffer; begin a_count := 0; flag := true; msg1 := 'DONE | SEQUENCE # '; msg2 := '000'; msg3 := ' CHOOSE NEXT FRAME | DONE'; repeat hide_mouse; s_ptr^ := scr3; line_color(1); draw_mode(1); line_style(2); line(0 , 0,319, 0); line(0 , 31,319, 31); line(0 , 63,319, 63); line(0 , 95,319, 95); line(0 ,127,319,127); line(0 ,159,319,159); line(0 ,191,319,191); line( 0, 0, 0,191); line( 31, 0, 31,191); line( 63, 0, 63,191); line( 95, 0, 95,191); line(127, 0,127,191); line(159, 0,159,191); line(191, 0,191,191); line(223, 0,223,191); line(255, 0,255,191); line(287, 0,287,191); line(319, 0,319,191); line_style(1); str(a_count,msg2); repeat if length(msg2) < 3 then insert('0',msg2,1); until length(msg2) = 3; msg4 := concat(msg1,msg2,msg3); text_height(4); text_color(1); draw_mode(2); draw_string(0,199,msg4); show_mouse; event := Get_Event(E_Button, 1,1,1, (* button down *) 0, (* no timer *) FALSE,0,0,0,0, False,0,0,0,0, msg, dummy, (* or Key pressed *) dummy,dummy, (* Not used *) mx,my, dummy ); n := gf_rtn(mx,my,frame); if n = 0 then begin do_the_box(vspeed,vvbls,vmmode,vmode); anim_array[a_count,frm] := frame; anim_array[a_count,vbl] := vvbls; anim_array[a_count,spd] := vspeed; anim_array[a_count,mmod] := vmmode; anim_array[a_count,cmod] := vmode; a_count := a_count + 1; end else flag := false; until flag = false; if n = 2 then get_anim_seq := false else get_anim_seq := true; end; Procedure vbl_box(var x : integer); var button : integer; begin center_dialog(vb_box); obj_setstate(vb_box,vbdn,normal,true); obj_setstate(vb_box,vbup,selected,true); button := do_dialog(vb_box,0); case button of vb1 : begin x := 1; obj_setstate(vb_box,vb1,shadowed,true); end; vb2 : begin x := 2; obj_setstate(vb_box,vb2,shadowed,true); end; vb3 : begin x := 3; obj_setstate(vb_box,vb3,shadowed,true); end; vb4 : begin x := 4; obj_setstate(vb_box,vb4,shadowed,true); end; vb5 : begin x := 5; obj_setstate(vb_box,vb5,shadowed,true); end; vb6 : begin x := 6; obj_setstate(vb_box,vb6,shadowed,true); end; end; if obj_state(vb_box,vbdn) & selected <> 0 then x := 0 - x; end_dialog(vb_box); end; Procedure speed_box(var x : integer); var button : integer; begin center_dialog(sp_box); obj_setstate(sp_box,bdn,normal,true); obj_setstate(sp_box,bup,selected,true); button := do_dialog(sp_box,0); case button of b1 : begin x := 1; obj_setstate(sp_box,b1,shadowed,true); end; b2 : begin x := 2; obj_setstate(sp_box,b2,shadowed,true); end; b3 : begin x := 3; obj_setstate(sp_box,b3,shadowed,true); end; b4 : begin x := 4; obj_setstate(sp_box,b4,shadowed,true); end; b5 : begin x := 5; obj_setstate(sp_box,b5,shadowed,true); end; b6 : begin x := 6; obj_setstate(sp_box,b6,shadowed,true); end; end; if obj_state(sp_box,bdn) & selected <> 0 then x := 0 - x; end_dialog(sp_box); end; Procedure bkup_rtn; var x : integer; begin hide_mouse; copy_rect(screen,backup1,0,0,0,0,319,199,3); s_ptr^ := scr3; for x := 0 to 15 do dummy := set_colr(x,pal3[x]); show_mouse; end; Procedure restore_scrn; var x : integer; begin hide_mouse; s_ptr^ := scr5; for x := 0 to 15 do dummy := set_colr(x,pal4[x]); show_mouse; end; Procedure get_stick_seq1; var btn,x : integer; flag : boolean; btn_flag : boolean; begin btn_flag := false; obj_setstate(stick_box,button,normal,true); center_dialog(stick_box); btn := do_dialog(stick_box,0); repeat case btn of center :begin obj_setstate(stick_box,center,normal,true); bkup_rtn; if obj_state(stick_box,button) & selected <> 0 then flag := get_anim_seq(btn_still_aray,btn_still_max) else flag := get_anim_seq(still_aray,still_max); restore_scrn; end; dnrt :begin obj_setstate(stick_box,dnrt,normal,true); bkup_rtn; if obj_state(stick_box,button) & selected <> 0 then flag := get_anim_seq(btn_dn_rt_aray,btn_dn_rt_max) else flag := get_anim_seq(dn_rt_aray,dn_rt_max); restore_scrn; end; lft :begin obj_setstate(stick_box,lft,normal,true); bkup_rtn; if obj_state(stick_box,button) & selected <> 0 then flag := get_anim_seq(btn_lft_aray,btn_lft_max) else flag := get_anim_seq(lft_aray,lft_max); restore_scrn; end; rt :begin obj_setstate(stick_box,rt,normal,true); bkup_rtn; if obj_state(stick_box,button) & selected <> 0 then flag := get_anim_seq(btn_rt_aray,btn_rt_max) else flag := get_anim_seq(rt_aray,rt_max); restore_scrn; end; up :begin obj_setstate(stick_box,up,normal,true); bkup_rtn; if obj_state(stick_box,button) & selected <> 0 then flag := get_anim_seq(btn_up_aray,btn_up_max) else flag := get_anim_seq(up_aray,up_max); restore_scrn; end; dn :begin obj_setstate(stick_box,dn,normal,true); bkup_rtn; if obj_state(stick_box,button) & selected <> 0 then flag := get_anim_seq(btn_dn_aray,btn_dn_max) else flag := get_anim_seq(dn_aray,dn_max); restore_scrn; m end; dnlft :begin obj_setstate(stick_box,dnlft,normal,true); bkup_rtn; if obj_state(stick_box,button) & selected <> 0 then flag := get_anim_seq(btn_dn_lft_aray,btn_dn_lft_max) else flag := get_anim_seq(dn_lft_aray,dn_lft_max); restore_scrn; end; uprt :begin obj_setstate(stick_box,uprt,normal,true); bkup_rtn; if obj_state(stick_box,button) & selected <> 0 then flag := get_anim_seq(btn_up_rt_aray,btn_up_rt_max) else flag := get_anim_seq(up_rt_aray,up_rt_max); restore_scrn; end; uplft :begin obj_setstate(stick_box,uplft,normal,true); bkup_rtn; if obj_state(stick_box,button) & selected <> 0 then flag := get_anim_seq(btn_up_lft_aray,btn_up_lft_max) else flag := get_anim_seq(up_lft_aray,up_lft_max); restore_scrn; end; button :begin if not btn_flag then btn_flag := true else begin btn_flag := false; obj_setstate(stick_box,button,normal,true); end; end; end; if btn <> exitbtn then btn := redo_dialog(stick_box,0); until btn = exitbtn; obj_setstate(stick_box,exitbtn,normal,true); end_dialog(stick_box); hide_mouse; s_ptr^ := scr4; { and assign file buffer to screen } for x := 0 to 15 do dummy := set_colr(x,pal4[x]); show_mouse; end; Procedure still_rtn; begin still_cnt := still_cnt + 1; if still_cnt >= still_max then still_cnt := 0; frame := still_aray[still_cnt,frm]; mode := still_aray[still_cnt,cmod]; mask_mode := still_aray[still_cnt,mmod]; end; Procedure up_rtn; begin up_cnt := up_cnt + 1; if up_cnt >= up_max then up_cnt := 0; frame := up_aray[up_cnt,frm]; current_y := current_y -up_aray[up_cnt,spd]; if current_y < 0 then current_y := 0; vbl_cnt := up_aray[up_cnt,vbl]; mask_mode := up_aray[up_cnt,mmod]; mode := up_aray[up_cnt,cmod]; end; Procedure dn_rtn; begin dn_cnt := dn_cnt + 1; if dn_cnt >= dn_max then dn_cnt := 0; frame := dn_aray[dn_cnt,frm]; current_y := current_y + dn_aray[dn_cnt,spd]; if current_y >= 167 then current_y := 167; vbl_cnt := dn_aray[dn_cnt,vbl]; mask_mode := dn_aray[dn_cnt,mmod]; mode := dn_aray[dn_cnt,cmod]; end; Procedure lft_rtn; begin lft_cnt := lft_cnt + 1; if lft_cnt >= lft_max then lft_cnt := 0; frame := lft_aray[lft_cnt,frm]; current_x := current_x - lft_aray[lft_cnt,spd]; if current_x < 0 then current_x := 0; vbl_cnt := lft_aray[lft_cnt,vbl]; mask_mode := lft_aray[lft_cnt,mmod]; mode := lft_aray[lft_cnt,cmod]; end; Procedure up_lft_rtn; begin up_lft_cnt := up_lft_cnt + 1; if up_lft_cnt >= up_lft_max then up_lft_cnt := 0; frame := up_lft_aray[up_lft_cnt,frm]; current_x := current_x - up_lft_aray[up_lft_cnt,spd]; if current_x < 0 then current_x := 0; current_y := current_y - up_lft_aray[up_lft_cnt,spd]; if current_y < 0 then current_y := 0; vbl_cnt := up_lft_aray[up_lft_cnt,vbl]; mask_mode := up_lft_aray[up_lft_cnt,mmod]; mode := up_lft_aray[up_lft_cnt,cmod]; end; Procedure dn_lft_rtn; begin dn_lft_cnt := dn_lft_cnt + 1; if dn_lft_cnt >= dn_lft_max then dn_lft_cnt := 0; frame := dn_lft_aray[dn_lft_cnt,frm]; current_y := current_y + dn_lft_aray[dn_lft_cnt,spd]; if current_y >= 167 then current_y := 167; current_x := current_x - dn_lft_aray[dn_lft_cnt,spd]; if current_x < 0 then current_x := 0; vbl_cnt := dn_lft_aray[dn_lft_cnt,vbl]; mask_mode := dn_lft_aray[dn_lft_cnt,mmod]; mode := dn_lft_aray[dn_lft_cnt,cmod]; end; Procedure rt_rtn; begin rt_cnt := rt_cnt + 1; if rt_cnt >= rt_max then rt_cnt := 0; frame := rt_aray[rt_cnt,frm]; current_x := current_x + rt_aray[rt_cnt,spd]; if current_x >= 287 then current_x := 287; vbl_cnt := rt_aray[rt_cnt,vbl]; mask_mode := rt_aray[rt_cnt,mmod]; mode := rt_aray[rt_cnt,cmod]; end; Procedure up_rt_rtn; begin up_rt_cnt := up_rt_cnt + 1; if up_rt_cnt >= up_rt_max then up_rt_cnt := 0; frame := up_rt_aray[up_rt_cnt,frm]; current_x := current_x + up_rt_aray[up_rt_cnt,spd]; if current_x >= 287 then current_x := 287; current_y := current_y - up_rt_aray[up_rt_cnt,spd]; if current_y < 0 then current_y := 0; vbl_cnt := up_rt_aray[up_rt_cnt,vbl]; mask_mode := up_rt_aray[up_rt_cnt,mmod]; mode := up_rt_aray[up_rt_cnt,cmod]; end; Procedure dn_rt_rtn; begin dn_rt_cnt := dn_rt_cnt + 1; if dn_rt_cnt >= dn_rt_max then dn_rt_cnt := 0; frame := dn_rt_aray[dn_rt_cnt,frm]; current_x := current_x + dn_rt_aray[dn_rt_cnt,spd]; if current_x >= 287 then current_x := 287; current_y := current_y + dn_rt_aray[dn_rt_cnt,spd]; if current_y >= 167 then current_y := 167; vbl_cnt := dn_rt_aray[dn_rt_cnt,vbl]; mask_mode := dn_rt_aray[dn_rt_cnt,mmod]; mode := dn_rt_aray[dn_rt_cnt,cmod]; end; Procedure btn_still_rtn; begin btn_still_cnt := btn_still_cnt + 1; if btn_still_cnt >= btn_still_max then btn_still_cnt := 0; frame := btn_still_aray[btn_still_cnt,frm]; mode := btn_still_aray[btn_still_cnt,cmod]; mask_mode := btn_still_aray[btn_still_cnt,mmod]; end; Procedure btn_up_rtn; begin btn_up_cnt := btn_up_cnt + 1; if btn_up_cnt >= btn_up_max then btn_up_cnt := 0; frame := btn_up_aray[btn_up_cnt,frm]; current_y := current_y -btn_up_aray[btn_up_cnt,spd]; if current_y < 0 then current_y := 0; vbl_cnt := btn_up_aray[btn_up_cnt,vbl]; mask_mode := btn_up_aray[btn_up_cnt,mmod]; mode := btn_up_aray[btn_up_cnt,cmod]; end; Procedure btn_dn_rtn; begin btn_dn_cnt := btn_dn_cnt + 1; if btn_dn_cnt >= btn_dn_max then btn_dn_cnt := 0; frame := btn_dn_aray[btn_dn_cnt,frm]; current_y := current_y + btn_dn_aray[btn_dn_cnt,spd]; if current_y >= 167 then current_y := 167; vbl_cnt := btn_dn_aray[btn_dn_cnt,vbl]; mask_mode := btn_dn_aray[btn_dn_cnt,mmod]; mode := btn_dn_aray[btn_dn_cnt,cmod]; end; Procedure btn_lft_rtn; begin btn_lft_cnt := btn_lft_cnt + 1; if btn_lft_cnt >= btn_lft_max then btn_lft_cnt := 0; frame := btn_lft_aray[btn_lft_cnt,frm]; current_x := current_x - btn_lft_aray[btn_lft_cnt,spd]; if current_x < 0 then current_x := 0; vbl_cnt := btn_lft_aray[btn_lft_cnt,vbl]; mask_mode := btn_lft_aray[btn_lft_cnt,mmod]; mode := btn_lft_aray[btn_lft_cnt,cmod]; end; Procedure btn_up_lft_rtn; begin btn_up_lft_cnt := btn_up_lft_cnt + 1; if btn_up_lft_cnt >= btn_up_lft_max then btn_up_lft_cnt := 0; frame := btn_up_lft_aray[btn_up_lft_cnt,frm]; current_x := current_x - btn_up_lft_aray[btn_up_lft_cnt,spd]; if current_x < 0 then current_x := 0; current_y := current_y - btn_up_lft_aray[btn_up_lft_cnt,spd]; if current_y < 0 then current_y := 0; vbl_cnt := btn_up_lft_aray[btn_up_lft_cnt,vbl]; mask_mode := btn_up_lft_aray[btn_up_lft_cnt,mmod]; mode := btn_up_lft_aray[btn_up_lft_cnt,cmod]; end; Procedure btn_dn_lft_rtn; begin btn_dn_lft_cnt := btn_dn_lft_cnt + 1; if btn_dn_lft_cnt >= btn_dn_lft_max then btn_dn_lft_cnt := 0; frame := btn_dn_lft_aray[btn_dn_lft_cnt,frm]; current_y := current_y + btn_dn_lft_aray[btn_dn_lft_cnt,spd]; if current_y >= 167 then current_y := 167; current_x := current_x - btn_dn_lft_aray[btn_dn_lft_cnt,spd]; if current_x < 0 then current_x := 0; vbl_cnt := btn_dn_lft_aray[btn_dn_lft_cnt,vbl]; mask_mode := btn_dn_lft_aray[btn_dn_lft_cnt,mmod]; mode := btn_dn_lft_aray[btn_dn_lft_cnt,cmod]; end; Procedure btn_rt_rtn; begin btn_rt_cnt := btn_rt_cnt + 1; if btn_rt_cnt >= btn_rt_max then btn_rt_cnt := 0; frame := btn_rt_aray[btn_rt_cnt,frm]; current_x := current_x + btn_rt_aray[btn_rt_cnt,spd]; if current_x >= 287 then current_x := 287; vbl_cnt := btn_rt_aray[btn_rt_cnt,vbl]; mask_mode := btn_rt_aray[btn_rt_cnt,mmod]; mode := btn_rt_aray[btn_rt_cnt,cmod]; end; Procedure btn_up_rt_rtn; begin btn_up_rt_cnt := btn_up_rt_cnt + 1; if btn_up_rt_cnt >= btn_up_rt_max then btn_up_rt_cnt := 0; frame := btn_up_rt_aray[btn_up_rt_cnt,frm]; current_x := current_x + btn_up_rt_aray[btn_up_rt_cnt,spd]; if current_x >= 287 then current_x := 287; current_y := current_y - btn_up_rt_aray[btn_up_rt_cnt,spd]; if current_y < 0 then current_y := 0; vbl_cnt := btn_up_rt_aray[btn_up_rt_cnt,vbl]; mask_mode := btn_up_rt_aray[btn_up_rt_cnt,mmod]; mode := btn_up_rt_aray[btn_up_rt_cnt,cmod]; end; Procedure btn_dn_rt_rtn; begin btn_dn_rt_cnt := btn_dn_rt_cnt + 1; if btn_dn_rt_cnt >= btn_dn_rt_max then btn_dn_rt_cnt := 0; frame := btn_dn_rt_aray[btn_dn_rt_cnt,frm]; current_x := current_x + btn_dn_rt_aray[btn_dn_rt_cnt,spd]; if current_x >= 287 then current_x := 287; current_y := current_y + btn_dn_rt_aray[btn_dn_rt_cnt,spd]; if current_y >= 167 then current_y := 167; vbl_cnt := btn_dn_rt_aray[btn_dn_rt_cnt,vbl]; mask_mode := btn_dn_rt_aray[btn_dn_rt_cnt,mmod]; mode := btn_dn_rt_aray[btn_dn_rt_cnt,cmod]; end; Procedure set_sprite_table; var x,y,tx,ty,bx,by,num : integer; begin tx := 0; ty := 0; for y := 0 to 5 do begin for x := 0 to 9 do begin num := x+(y*10); frame_loc[num,1] := tx; frame_loc[num,2] := ty; tx := tx + 32; end; ty := ty + 32; tx := 0; end; end; Procedure go_loop; var x : integer; begin REPEAT X := stick(1) & $00ff; case x of 0 : still_rtn; 1 : up_rtn; 2 : dn_rtn; 3 : ; 4 : lft_rtn; 5 : up_lft_rtn; 6 : dn_lft_rtn; 7 : ; 8 : rt_rtn; 9 : up_rt_rtn; 10 : dn_rt_rtn; 128 : btn_still_rtn; 129 : btn_up_rtn; 130 : btn_dn_rtn; 131 : ; 132 : btn_lft_rtn; 133 : btn_up_lft_rtn; 134 : btn_dn_lft_rtn; 135 : ; 136 : btn_rt_rtn; 137 : btn_up_rt_rtn; 138 : btn_dn_rt_rtn; otherwise : ; end; x := 1; While x <= vbl_cnt do begin wvbl; x := x + 1; end; (* sc1 := logbase; sc1^ := scr1; *) { and assign file buffer to screen } copy_rect(backup,screen, llast_x,llast_y, llast_x,llast_y, 32,32, 3); if mask_flag then copy_mask(mask,screen, $0,frame*32, $Qcurrent_x,current_y, $32,32, $mask_mode); copy_rect(sprite,screen, frame_loc[frame,1],frame_loc[frame,2], current_x,current_y, 32,32, mode); llast_x := last_x; llast_y := last_y; last_x := current_x; last_y := current_y; swap; UNTIL KEYPRESS = TRUE; end; Procedure init_rtn; var x : integer; begin vspeed := 0; vvbls := 1; vmode := 7; vmmode := 2; for x := 0 to 50 do begin up_aray[x,frm] := 0; dn_aray[x,frm] := 0; up_lft_aray[x,frm] := 0; dn_lft_aray[x,frm] := 0; up_rt_aray[x,frm] := 0; dn_rt_aray[x,frm] := 0; lft_aray[x,frm] := 0; rt_aray[x,frm] := 0; still_aray[x,frm] := 0; btn_up_aray[x,frm] := 0; btn_dn_aray[x,frm] := 0; btn_up_lft_aray[x,frm] := 0; btn_dn_lft_aray[x,frm] := 0; btn_up_rt_aray[x,frm] := 0; btn_dn_rt_aray[x,frm] := 0; btn_lft_aray[x,frm] := 0; btn_rt_aray[x,frm] := 0; btn_still_aray[x,frm] := 0; up_aray[x,vbl] := 1; dn_aray[x,vbl] := 1; up_lft_aray[x,vbl] := 1; dn_lft_aray[x,vbl] := 1; up_rt_aray[x,vbl] := 1; dn_rt_aray[x,vbl] := 1; lft_aray[x,vbl] := 1; rt_aray[x,vbl] := 1; still_aray[x,vbl] := 1; btn_up_aray[x,vbl] := 1; btn_dn_aray[x,vbl] := 1; btn_up_lft_aray[x,vbl] := 1; btn_dn_lft_aray[x,vbl] := 1; btn_up_rt_aray[x,vbl] := 1; btn_dn_rt_aray[x,vbl] := 1; btn_lft_aray[x,vbl] := 1; btn_rt_aray[x,vbl] := 1; btn_still_aray[x,vbl] := 1; up_aray[x,spd] := 1; dn_aray[x,spd] := 1; up_lft_aray[x,spd] := 1; dn_lft_aray[x,spd] := 1; up_rt_aray[x,spd] := 1; dn_rt_aray[x,spd] := 1; lft_aray[x,spd] := 1; rt_aray[x,spd] := 1; still_aray[x,spd] := 1; btn_up_aray[x,spd] := 0; btn_dn_aray[x,spd] := 0; btn_up_lft_aray[x,spd] := 0; btn_dn_lft_aray[x,spd] := 0; btn_up_rt_aray[x,spd] := 0; btn_dn_rt_aray[x,spd] := 0; btn_lft_aray[x,spd] := 0; btn_rt_aray[x,spd] := 0; btn_still_aray[x,spd] := 0; up_aray[x,mmod] := 2; dn_aray[x,mmod] := 2; up_lft_aray[x,mmod] := 2; dn_lft_aray[x,mmod] := 2; up_rt_aray[x,mmod] := 2; dn_rt_aray[x,mmod] := 2; lft_aray[x,mmod] := 2; rt_aray[x,mmod] := 2; still_aray[x,mmod] := 2; btn_up_aray[x,mmod] := 2; btn_dn_aray[x,mmod] := 2; btn_up_lft_aray[x,mmod] := 2; btn_dn_lft_aray[x,mmod] := 2; btn_up_rt_aray[x,mmod] := 2; btn_dn_rt_aray[x,mmod] := 2; btn_lft_aray[x,mmod] := 2; btn_rt_aray[x,mmod] := 2; btn_still_aray[x,mmod] := 2; up_aray[x,cmod] := 7; dn_aray[x,cmod] := 7; up_lft_aray[x,cmod] := 7; dn_lft_aray[x,cmod] := 7; up_rt_aray[x,cmod] := 7; dn_rt_aray[x,cmod] := 7; lft_aray[x,cmod] := 7; rt_aray[x,cmod] := 7; still_aray[x,cmod] := 7; btn_up_aray[x,cmod] := 7; btn_dn_aray[x,cmod] := 7; btn_up_lft_aray[x,cmod] := 7; btn_dn_lft_aray[x,cmod] := 7; btn_up_rt_aray[x,cmod] := 7; btn_dn_rt_aray[x,cmod] := 7; btn_lft_aray[x,cmod] := 7; btn_rt_aray[x,cmod] := 7; btn_still_aray[x,cmod] := 7; end; up_cnt := 0; dn_cnt := 0; up_lft_cnt := 0; dn_lft_cnt := 0; up_rt_cnt := 0; dn_rt_cnt := 0; lft_cnt := 0; rt_cnt := 0; still_cnt := 0; up_max := 0; dn_max := 0; up_lft_max := 0; dn_lft_max := 0; up_rt_max := 0; dn_rt_max := 0; lft_max := 0; rt_max := 0; still_max := 0; btn_up_cnt := 0; btn_dn_cnt := 0; btn_up_lft_cnt := 0; btn_dn_lft_cnt := 0; btn_up_rt_cnt := 0; btn_dn_rt_cnt := 0; btn_lft_cnt := 0; btn_rt_cnt := 0; btn_still_cnt := 0; btn_up_max := 0; btn_dn_max := 0; btn_up_lft_max := 0; btn_dn_lft_max := 0; btn_up_rt_max := 0; btn_dn_rt_max := 0; btn_lft_max := 0; btn_rt_max := 0; btn_still_max := 0; mode := 7; mask_mode := 2; str(mode,mode_str); vbl_cnt := 1; str(vbl_cnt,vbl_str); speed_cnt := 1; str(speed_cnt,speed_str); anim_flag := false; sprite_flag := false; end; Procedure adj_speed( adj : integer ); var x : integer; begin for x := 0 to 50 do begin if up_aray[x,spd] <> 0 then begin up_aray[x,spd] := up_aray[x,spd] + adj; if up_aray[x,spd] < 1 then up_aray[x,spd] := 1; end; if dn_aray[x,spd] <> 0 then begin dn_aray[x,spd] := dn_aray[x,spd] + adj; if dn_aray[x,spd] < 1 then dn_aray[x,spd] := 1; end; if up_lft_aray[x,spd] <> 0 then begin up_lft_aray[x,spd] := up_lft_aray[x,spd] + adj; if up_lft_aray[x,spd] < 1 then up_lft_aray[x,spd] := 1; end; if dn_lft_aray[x,spd] <> 0 then begin dn_lft_aray[x,spd] := dn_lft_aray[x,spd] + adj; if dn_lft_aray[x,spd] < 1 then dn_lft_aray[x,spd] := 1; end; if up_rt_aray[x,spd] <> 0 then begin up_rt_aray[x,spd] := up_rt_aray[x,spd] + adj; if up_rt_aray[x,spd] < 1 then up_rt_aray[x,spd] := 1; end; if dn_rt_aray[x,spd] <> 0 then begin dn_rt_aray[x,spd] := dn_rt_aray[x,spd] + adj; if dn_rt_aray[x,spd] < 1 then dn_rt_aray[x,spd] := 1; end; if lft_aray[x,spd] <> 0 then begin lft_aray[x,spd] := lft_aray[x,spd] + adj; if lft_aray[x,spd] < 1 then lft_aray[x,uspd] := 1; end; if rt_aray[x,spd] <> 0 then begin rt_aray[x,spd] := rt_aray[x,spd] + adj; if rt_aray[x,spd] < 1 then rt_aray[x,spd] := 1; end; if still_aray[x,spd] <> 0 then begin still_aray[x,spd] := still_aray[x,spd] + adj; if still_aray[x,spd] < 1 then still_aray[x,spd] := 1; end; if btn_up_aray[x,spd] <> 0 then begin btn_up_aray[x,spd] := btn_up_aray[x,spd] + adj; if btn_up_aray[x,spd] < 1 then btn_up_aray[x,spd] := 1; end; if btn_dn_aray[x,spd] <> 0 then begin btn_dn_aray[x,spd] := btn_dn_aray[x,spd] + adj; if btn_dn_aray[x,spd] < 1 then btn_dn_aray[x,spd] := 1; end; if btn_up_lft_aray[x,spd] <> 0 then begin btn_up_lft_aray[x,spd] := btn_up_lft_aray[x,spd] +adj; if btn_up_lft_aray[x,spd] < 1 then btn_up_lft_aray[x,spd] := 1; end; if btn_dn_lft_aray[x,spd] <> 0 then begin btn_dn_lft_aray[x,spd] := btn_dn_lft_aray[x,spd] + adj; if btn_dn_lft_aray[x,spd] < 1 then btn_dn_lft_aray[x,spd] := 1; end; if btn_up_rt_aray[x,spd] <> 0 then begin btn_up_rt_aray[x,spd] := btn_up_rt_aray[x,spd] + adj; if btn_up_rt_aray[x,spd] < 1 then btn_up_rt_aray[x,spd] := 1; end; if btn_dn_rt_aray[x,spd] <> 0 then begin btn_dn_rt_aray[x,spd] := btn_dn_rt_aray[x,spd] + adj; if btn_dn_rt_aray[x,spd] < 1 then btn_dn_rt_aray[x,spd] := 1; end; if btn_lft_aray[x,spd] <> 0 then begin btn_lft_aray[x,spd] := btn_lft_aray[x,spd] + adj; if btn_lft_aray[x,spd] < 1 then btn_lft_aray[x,spd] := 1; end; if btn_rt_aray[x,spd] <> 0 then begin btn_rt_aray[x,spd] := btn_rt_aray[x,spd] + adj; if btn_rt_aray[x,spd] < 1 then btn_rt_aray[x,spd] := 1; end; if btn_still_aray[x,spd] <> 0 then begin btn_still_aray[x,spd] := btn_still_aray[x,spd] + adj; if btn_still_aray[x,spd] < 1 then btn_still_aray[x,spd] := 1; end; end; end; Procedure adj_vblanks( adj : integer ); var x : integer; begin for x := 0 to 50 do begin up_aray[x,vbl] := up_aray[x,vbl] + adj; if up_aray[x,vbl] < 1 then up_aray[x,vbl] := 1; dn_aray[x,vbl] := dn_aray[x,vbl] + adj; if dn_aray[x,vbl] < 1 then dn_aray[x,vbl] := 1; up_lft_aray[x,vbl] := up_lft_aray[x,vbl] + adj; if up_lft_aray[x,vbl] < 1 then up_lft_aray[x,vbl] := 1; dn_lft_aray[x,vbl] := dn_lft_aray[x,vbl] + adj; if dn_lft_aray[x,vbl] < 1 then dn_lft_aray[x,vbl] := 1; up_rt_aray[x,vbl] := up_rt_aray[x,vbl] + adj; if up_rt_aray[x,vbl] < 1 then up_rt_aray[x,vbl] := 1; dn_rt_aray[x,vbl] := dn_rt_aray[x,vbl] + adj; if dn_rt_aray[x,vbl] < 1 then dn_rt_aray[x,vbl] := 1; lft_aray[x,vbl] := lft_aray[x,vbl] + adj; if lft_aray[x,vbl] < 1 then lft_aray[x,vbl] := 1; rt_aray[x,vbl] := rt_aray[x,vbl] + adj; if rt_aray[x,vbl] < 1 then rt_aray[x,vbl] := 1; still_aray[x,vbl] := still_aray[x,vbl] + adj; if still_aray[x,vbl] < 1 then still_aray[x,vbl] := 1; btn_up_aray[x,vbl] := btn_up_aray[x,vbl] + adj; if btn_up_aray[x,vbl] < 1 then btn_up_aray[x,vbl] := 1; btn_dn_aray[x,vbl] := btn_dn_aray[x,vbl] + adj; if btn_dn_aray[x,vbl] < 1 then btn_dn_aray[x,vbl] := 1; btn_up_lft_aray[x,vbl] := btn_up_lft_aray[x,vbl] +adj; if btn_up_lft_aray[x,vbl] < 1 then btn_up_lft_aray[x,vbl] := 1; btn_dn_lft_aray[x,vbl] := btn_dn_lft_aray[x,vbl] + adj; if btn_dn_lft_aray[x,vbl] < 1 then btn_dn_lft_aray[x,vbl] := 1; btn_up_rt_aray[x,vbl] := btn_up_rt_aray[x,vbl] + adj; if btn_up_rt_aray[x,vbl] < 1 then btn_up_rt_aray[x,vbl] := 1; btn_dn_rt_aray[x,vbl] := btn_dn_rt_aray[x,vbl] + adj; if btn_dn_rt_aray[x,vbl] < 1 then btn_dn_rt_aray[x,vbl] := 1; btn_lft_aray[x,vbl] := btn_lft_aray[x,vbl] + adj; if btn_lft_aray[x,vbl] < 1 then btn_lft_aray[x,vbl] := 1; btn_rt_aray[x,vbl] := btn_rt_aray[x,vbl] + adj; if btn_rt_aray[x,vbl] < 1 then btn_rt_aray[x,vbl] := 1; btn_still_aray[x,vbl] := btn_still_aray[x,vbl] + adj; if btn_still_aray[x,vbl] < 1 then btn_still_aray[x,vbl] := 1; end; end; Procedure go_stick_rtn; var x : integer; begin hide_mouse; for x := 0 to 15 do dummy := set_colr(x,pal3[x]); Setscreen(Screen1,Curphybase,-1); sc1 := logbase; sc1^ := scr1; Setscreen(Screen2,Curphybase,-1); sc2 := logbase; sc2^ := scr1; Visible_Screen := Screen2; Build_Screen := Screen1; Setscreen(Build_Screen,Visible_Screen,-1); Init_stick; go_loop; End_Stick; Setscreen(Curlogbase,Curphybase,-1); for x := 0 to 15 do dummy := set_colr(x,pal4[x]); show_mouse; end; Procedure m1_rtn; var t :boolean; begin mask_flag := false; t := load_sprite; if t then begin dummy := do_alert('[3][ LOAD MASK ? ][ YES | NO ]',1); if dummy = 1 then load_mask; end; end; Procedure m2_rtn; var x : integer; begin for x := 0 to 15 do dummy := set_colr(x,pal7[x]); speed_box(x); build_scrn; adj_speed(x); for x := 0 to 15 do dummy := set_colr(x,pal4[x]); end; Procedure m3_rtn; begin load_seq_file; anim_flag := true; end; Procedure m4_rtn; var x : integer; begin for x := 0 to 15 do dummy := set_colr(x,pal7[x]); vbl_box(x); build_scrn; adj_vblanks(x); for x := 0 to 15 do dummy := set_colr(x,pal4[x]); end; Procedure m5_rtn; begin save_seq_file; end; Procedure m6_rtn; begiMn if sprite_flag then begin get_stick_seq1; anim_flag := true; end else dummy := do_alert('[3][ |NO SPRITE FILE| IN MEMORY ][ OOPS! ]',1); end; Procedure m7_rtn; begin load_playfield; end; Procedure m8_rtn; begin if sprite_flag then begin if anim_flag then go_stick_rtn else dummy := do_alert('[3][ |NO STICK SEQUENCE| IN MEMORY][ OOPS! ]',1); end else dummy := do_alert('[3][ |NO SPRITE FILE| IN MEMORY][ OOPS! ]',1); end; Procedure m9_rtn; begin dummy := do_alert('[3][ |ARE YOU SURE YOU|WANT TO QUIT ][ YES | NO ]',1); If dummy = 1 then quit_flag := true; end; Procedure button_pressed(mx,my : integer); begin if ((mx < m1_bx) and (mx > m1_tx) and (my < m1_by) and (my > m1_ty)) then m1_rtn; if ((mx < m2_bx) and (mx > m2_tx) and (my < m2_by) and (my > m2_ty)) then m2_rtn; if ((mx < m3_bx) and (mx > m3_tx) and (my < m3_by) and (my > m3_ty)) then m3_rtn; if ((mx < m4_bx) and (mx > m4_tx) and (my < m4_by) and (my > m4_ty)) then m4_rtn; if ((mx < m5_bx) and (mx > m5_tx) and (my < m5_by) and (my > m5_ty)) then m5_rtn; if ((mx < m6_bx) and (mx > m6_tx) and (my < m6_by) and (my > m6_ty)) then m6_rtn; if ((mx < m7_bx) and (mx > m7_tx) and (my < m7_by) and (my > m7_ty)) then m7_rtn; if ((mx < m8_bx) and (mx > m8_tx) and (my < m8_by) and (my > m8_ty)) then m8_rtn; if ((mx < m9_bx) and (mx > m9_tx) and (my < m9_by) and (my > m9_ty)) then m9_rtn; end; Procedure shift_colors; var x : integer; begin for x := 0 to 3 do wvbl; pal6[5] := pal4[14]; pal6[6] := pal4[5]; pal6[7] := pal4[6]; pal6[8] := pal4[7]; pal6[9] := pal4[8]; pal6[10] := pal4[9]; pal6[11] := pal4[10]; pal6[12] := pal4[11]; pal6[13] := pal4[12]; pal6[14] := pal4[13]; pal4 := pal6; for x := 0 to 15 do dummy := set_colr(x,pal4[x]); end; Procedure event_rtn; var mouse_x,mouse_y,event : integer; msg : message_buffer; begin repeat event := Get_Event(E_Button|E_Timer, 1,1,1, (* left button down *) 0, (* timer set to 0 *) False,0,0,0,0, False,0,0,0,0, msg, dummy, (* Key pressed *) dummy,dummy, (* Not used *) mouse_x,mouse_y, dummy ); If (event & E_Button) <> 0 then button_pressed(mouse_x,mouse_y); If (event & E_Timer) <> 0 then shift_colors; until Quit_flag = true; end; BEGIN if Init_gem >= 0 then begin if getrez = 0 then begin if load_resource('JOYSTICK.RSC') then begin find_dialog(box,stick_box); find_dialog(copybox,copy_box); find_dialog(speedbox,sp_box); find_dialog(vblbox,vb_box); find_dialog(thebox,the_box); s_ptr := physbase; init_mouse; show_mouse; init_rtn; for x := 0 to 15 do pal2[x] := set_colr(x,-1); SRestore(1, 'JOYTEST.PI1' ); { read screen data from file... } SRestore(2, 'JOYSTICK.PI1' ); { read screen data from file... } hide_mouse; s_ptr^ := scr4; pal6 := pal4; pal7 := pal4; show_mouse; Curlogbase := Getlogbase; Curphybase := Getphybase; Screen1 := Alloc_Screen; Screen2 := Alloc_Screen; screen[addr1] := 0; screen[addr2] := 0; init_form(backup,scr1); init_form(unscreen,scr2); init_form(sprite,scr3); init_form(backup1,scr5); init_mask_form(mask,mask_data); set_sprite_table; frame := 0; current_x := 0; current_y := 0; last_x := 0; last_y := 0; llast_x := 0; llast_y := 0; quit_flag := false; event_rtn; for x := 0 to 15 do dummy := set_colr(x,pal2[x]); end else dummy := do_alert('[3][ | NO RESOURCE FILE][ DARN! ]',1); end else dummy := do_alert('[3][ | LOW REZ ONLY ][ OK ]',1); exit_gem; end; END. { End of file: JOYSTICK.PAS } `X o"h###,Oc.N//Bg?<JNA Bb3N:N(NV?<%NNN^NuTEXT_HEIGH?Hz><0/,HNV8AN-HPNvBnP><1=nR><2?< BgBg?<HnHnHnhHnPHn8BgN><3N^,_X> _TNE_EGT?Hz><P/,HNV2AD-HPNv?<BgBgBgHnHnHnbHnJHn2BgN><Q=nD><R0.N^,_X>NuADD_CHAR ?Hz><b/,HNVA>-HPNv V0(R@ V1@><c V"h V0(A2.><dN^,_X> _TNSTR ?Hz><g/,HNVA$-HPNvBn><h0.J@j&><i><j?<- NNP><k0.D@=@><l><m=|'><np=@><o><o0.rAo><p><q0.2.H=@><r0.J@V0.F@@Bd&><s><t0.r0A? NN><uBn><v><w0.2.HH@=@><x0.r H=@><y`l><z0.J@f><{?<0 NNt><|"n0.@><}N^,_X> _\NA ?Hz></,HNVA|-HPNvp=@><><0.r.A]0.ArA0p @WCBd><0.R@=@`><Bn><p.nm><><0.ArA0p-@g><><Bn`&><><><p=@><0.R@=@><><><0.r.A_0.ArA0?Hz?<N0@BdB><><0. 2.CtA0Br0A=@><0.R@=@><`><0.@d><0.D@=@><><=n><0.N^,_X> _ONNV?<NAN^NuNV?./. ?<6NAN^ _ONNV?<NNN^NuNV?<NNN^NuNV?<NNN^NuNV?<NNN^NuNV?./. /.?<NNN^ _O NSWAP ?Hz></,HNVAN-HPNv-yHb><#HfHb><#Hf></9Hf/9Hb?<N^,_X>NuLO_CE?Hz></,HNVA-HPNv><?<HnNV>< .2<H//NN"><Jg* .2<$.6<H//NN&HЁ-@><><-n>< .N^,_X>NuNV?<NNN^NuNV?.?. ?<NNN^ _ONSRESTORE ?Hz></,HNV&AP-HPNvA,BP1|}"Hn,Hn?<CEj40<G$Q><Cj-I&><><0.d`><><><ClEjp$Q><CE0h0<?$Q><`><><><ClEp$Q><CEh0<?$Q><Bn* n*n.><?.*0.*A@A?0N30fRn*`>< `><!S@ @b@0;N*l><"><#><$Hn,NN^,_X> _OTNERROR_RTN ?Hz><(/,HNVA -HPNv0.`:><)><)C O$OpQ?<N30f`><*><*C O$OpQ?<N30f`><+><+C \O$OpQ?<N30f`X><,><,C O$OpQ?<N30f`&><-><-C O$OpQ?<N30f`><.><.C xO$OpQ?<N30f`></></C ,O$OpQ?<N30f`><0><0C O$OpQ?<N30f`^><1><1C O$OpQ?<N30f`,><2><2C JO$OpQ?<N30f`><3><3C O$OpQ?<N30f`><4><4C O$OpQ?<N30f`><5><5C hO$OpQ?<N30f`d><6><6C O$OpQ?<N30f`2><7><7CO$OpQ?<N30f`><8><8CO$OpQ?<N30f`><9><9CHO$OpQ?<N30f`><:><:CO$OpQ?<N30f`j><;><;CO$OpQ?<N30f`8><<><<=><=CO$OpQ?<N30f`><>><>CO$OpQ?<N30f`><?><?CO$OpQ?<N30f`p><@><@C@O$OpQ?<N30f`>><A><ACO$OpQ?<N30f` ><B><BCO$OpQ?<N30f`><C><CCXO$OpQ?<N30f`><D><DCO$OpQ?<N30f`v><E><ECO$O"p!Q?<N30f`D><F><FCpO$OpQ?<N30f`><G><GC$O$OpQ?<N30f`><H><HCO$OpQ?<N30f`><I><ICO$OpQ?<N30f`|><J><JC<K><KCO$O pQ?<N30f`><L><LCO$OpQ?<N30f`><M><MCVO$OpQ?<N30f`><N><NCO$OpQ?<N30f`><O><OCO$OpQ?<N30f`P><P><PCrO$OpQ?<N30f`><Q><QC$O$OpQ?<N30f`><R><RCO$OpQ?<N30f`><S@ @Nb@0;NT"Z(`.f4l:r@L~Fx><TN^,_X> _TN[3][SETBLOCK FAILURE][ OK ][3][INVALID LOAD FORMAT][ OK ][3][INTERNAL ERROR][ OK ][3][RANGE ERROR][ OK ][3][NO MORE FILES][ OK ][3][INVALID DRIVE][ OK ][3][INVALID BLOCK ADDRESS][ OK ][3][NOT ENOUGH MEMORY][ OK ][3][ACCESS DENIED][ OK ][3][TOO MANY OPEN FILES][ OK ][3][PATH NOT FOUND][ OK ][3][FILE NOT FOUND][ OK ][3][INVALID FUNCTION NUMBER][ OK ][3][DISK CHANGE][ OK ][3][BAD SECTOR ON FORMAT][ OK ][3][UNKNOWN DEVICE][ OK ][3][MEDIA CHANGE][ OK ][3][WRITE PROTECTED][ OK ][3][GENERAL ERROR][ OK ][3][READ FAULT][ OK ][3][WRITE FAULT][ OK ][3][TOS ERROR # 9][ OK ][3][SECTOR NOT FOUND][ OK ][3][UNKNOWN MEDIA][ OK ][3][SEEK ERROR][ OK ][3][BAD REQUEST][ OK ][3][CRC ERROR][ OK ][3][UNKNOWN ERROR][ OK ][3][DRIVE NOT READY][ OK ][3][TOS ERROR # 1][ OK ][3][DISK ERROR # 11][ OK ][3][DISK ERROR # 10][ OK ][3][BAD FILENAME][ OK ][3][DISK ERROR # 8][ OK ][3][DISK ERROR # 7][ OK ][3][DISK ERROR # 6][ OK ][3][DISK ERROR # 5][ OK ][3][DISK ERROR # 4][ OK ][3][DISK ERROR # 3][ OK ][3][DISK ERROR # 2][ OK ][3][DISK ERROR # 1][ OK ]GET_DEFAUL?Hz><Y/,HNVA:-HPNvN,=@><Z0.`><[><["nE4`><\><\"nE`><]><]"nE`><^><^"nE`><_><_"nE`><`><`"nE`l><a><a"nE`P><b><b"nEb`4><c><c"nED`><d><d"nE&`><e><e"nE`><f><f"nE`><g><g"nE`><h><h"nE`><i><i"nE`p><j><j"nEr`T><k><k"nEt`8><l @b@0;N.Jf*Fb~><mN^,_X> _XNP:O:N:M:L:K:J:I:H:G:F:E:D:C:B:A:HC_PC?Hz><w/,HNVA`-HPNvp.=@><x0.rAAfp=@><y0.raAfp=@><z0.rBAfp=@><{0.rbAfp=@><|0.rCAfp=@><}0.rcAfp=@><~0.rDAfp=@><0.rdAfp=@><0.rEAfp=@><0.reAfp=@><0.rFAfp=@><0.rfAfp=@><0.rGAfp=@><0.rgAfp=@><0.rHAfp=@><0.rhAfp=@><0.rIAfp =@><0.riAfp =@><0.rJAfp =@><0.rjAfp =@><0.rKAfp =@><0.rkAfp =@><0.rLAfp =@><0.rlAfp =@><0.rMAfp =@><0.rmAfp =@><0.rNAfp=@><0.rnAfp=@><0.rOAfp=@><0.roAfp=@><0.rPAfp=@><0.rpAfp=@><Hn?.N>< .".//N" .//N -@><0.d`><>< .2<pHl Bn` ><p=@`><>< .ΰl Bn` ><p=@`~><>< .2<Hl Bn` ><p=@`P><>< .2< Hl Bn` ><p=@`"><S@ @b@0;N6d><0.|r|AfD><><Bn><CRO$O0p/Q?<N30f><><` ><p=@><0.N^,_X> _OTN[3][ |THIS DISK DOES NOT|HAVE ENOUGH R00M][ OK ]HC_RG?Hz></,HNVDA|-HPNvAFBP1|BgN><HnFHn?<N=@D><0.DJ@f><><Bn><><` ><p=@><HnFN0.N^,_X> _ORNBUILD_SCRN?Hz></,HNVA>-HPNvN֢><"y0REh0<?"Q><N><N^,_X>NuODSRT?Hz></,HNV&A-HPNvA&BP1|}"HnNd><CE~><N8Hn?<Hn,Hn~Nz=@*><N><?<Nv><BgN><0.*@d><><Hn&Hn~?<N=@$><0.$J@f><><CEj40<G$Q><Cj-I&><><ClEp$Q><CE*h0<?$Q><><p3!&><p=@><><`.><><><BgNv><?.$N><Bn><><><` ><Bn><BgNv><Hn&N0.N^,_X>Nu\*.SPTLOAD_PLAYF?Hz></,HNV,A-HPNvA,BP1|}"HnN^><CE><N8Hn?<Hn2HnNz=@0><N><?<Nv><BgN><0.0@d><><Hn,Hn?<N=@*><0.*J@fh><><CEj40<G$Q><Cj-I,><><CE0h0<?$Q><><p3!&>< >< `&>< >< >< BgNv>< ?.*N><><><BgNv><Hn,NN^,_X>Nu\*.PI1LOAD_MASK ?Hz></,HNVRA-HPNvANBP1|HnN><CE¦><N8Hn?<HnTHn¦Nz=@R>< N&><!?<Nv><"BgN><#0.R@d><$><%HnNHn¦?<&N=@L><'0.LJ@fX><(><)CEN0<$Q><*><+><,CNEL0<$Q><-p3!$><.></><0`&><1><1><2BgNv><3?.LN><4><5><6` ><6By!$><7BgNv><8HnNNN^,_X>Nu\*.MSKSAVE_SEQ_F?Hz><D/,HNVPA-HPNvANBP1|$09!(@db><E><FHnN><GCE><HN8Hn?<IHnTHnNz=@P><JNH><KBgN><L?<Nv><M0.P@dn><N><OAO"O2p"QNH=@R><P0.R@d8><Q><R0.P@d"?<AO"O2p"QNF=@P><S><T><U0.P@d(><V><W><X><YC!0EN4p~$Q><ZC#.EL4p~$Q><[C%,EJ4p~$Q><\C'*EH4p~$Q><]C)(EF4p~$Q><^C+&ED4p~$Q><_C-$EB4p~$Q><`C/"E@4p~$Q><aC1 E>4p~$Q><bC3E<4p~$Q><cC5E:4p~$Q><dC7E84p~$Q><eC9E64p~$Q><fC;E44p~$Q><gC=E24p~$Q><hC?E04p~$Q><iCAE.4p~$Q><jCCE,4p~$Q><k=yHF*><l=yHD,><m=yHB.><n=yH@0><o=yH>2><p=yH<4><q=yH:6><r=yH88><s=yH6:><t=yHX<><u=yHV>><v=yHT@><w=yHRB><x=yHPD><y=yHNF><z=yHLH><{=yHJJ><|=yHHL><}><~HnNHn?<N=@L><0.LJ@f6><><CEN0<"Q><HnNNP><><`&><><><BgNv><?.LN:><><><BgNv><><`4><><><C<HnNNN^,_X>Nu[1][ | NO SEQUENCE | DEFINED ][ OOPS ]\*.SEQLOAD_SEQ_F?Hz></,HNVRA-HPNvANBP1|$HnN><CE><N8Hn?<HnTHnNz=@R><N8><BgN><?<Nv><0.R@d><><HnNHn?<N=@L><0.LJ@f><><CEN0<$Q><><><CNE!04p~$Q><CLE#.4p~$Q><CJE%,4p~$Q><CHE'*4p~$Q><CFE)(4p~$Q><CDE+&4p~$Q><CBE-$4p~$Q><C@E/"4p~$Q><C>E1 4p~$Q><C<C:E54p~$Q><C8E74p~$Q><C6E94p~$Q><C4E;4p~$Q><C2E=4p~$Q><C0E?4p~$Q><C.EA4p~$Q><C,EC4p~$Q><3*HF><3,HD><3.HB><30H@><32H>><34H<><36H:><38H8><3:H6><3<HX><3>HV><3@HT><3BHR><3DHP><3FHN><3HHL><3JHJ><3LHH><><><`&><><><BgNv><?.LN۲><><><BgNv><HnNNN^,_X>Nu\*.SEQFRN ?Hz></,HNVA`-HPNvBn><"n0J@Z"n0J@ZC"n0rA_C"n0rA_CBd"nBQ><"n0r A\"n0J@ZC"n0r?A_C"n0rA_CBd "np2><"n0r@A\"n0J@ZC"n0r_A_C"n0rA_CBd "np2><"n0r`A\"n0J@ZC"n0rA_C"n0rA_CBd "np2><"n0|\"n0J@ZC"n0|_C"n0rA_CBd "np2><"n0|\"n0J@ZC"n0|_C"n0rA_CBd "np2><"n0|\"n0J@ZC"n0|_C"n0rA_CBd "np2><"n0|\"n0J@ZC"n0|_C"n0rA_CBd "np2><"n0|\"n0J@ZC"n0|_C"n0rA_CBd "np2><"n0|\"n0J@ZC"n0|?_C"n0rA_CBd "np 2><"n0J@Z"n0r A\C"n0rA_C"n0r?A_CBd "np 2><"n0r A\"n0r A\C"n0r?A_C"n0r?A_CBd "np 2><"n0r@A\"n0r A\C"n0r_A_C"n0r?A_CBd "np 2><"n0r`A\"n0r A\C"n0rA_C"n0r?A_CBd "np 2><"n0|\"n0r A\C"n0|_C"n0r?A_CBd "np2><"n0|\"n0r A\C"n0|_C"n0r?A_CBd "np2><"n0|\"n0r A\C"n0|_C"n0r?A_CBd "np2><"n0|\"n0r A\C"n0|_C"n0r?A_CBd "np2><"n0|\"n0r A\C"n0|_C"n0r?A_CBd "np2><"n0|\"n0r A\C"n0|?_C"n0r?A_CBd "np2><"n0J@Z"n0r@A\C"n0rA_C"n0r_A_CBd "np2><"n0r A\"n0r@A\C"n0r?A_C"n0r_A_CBd "np2><"n0r@A\"n0r@A\C"n0r_A_C"n0r_A_CBd "np2><"n0r`A\"n0r@A\C"n0rA_C"n0r_A_CBd "np2><"n0|\"n0r@A\C"n0|_C"n0r_A_CBd "np2><"n0|\"n0r@A\C"n0|_C"n0r_A_CBd "np2><"n0|\"n0r@A\C"n0|_C"n0r_A_CBd "np2><"n0|\"n0r@A\C"n0|_C"n0r_A_CBd "np2><"n0|\"n0r@A\C"n0|_C"n0r_A_CBd "np2><"n0|\"n0r@A\C"n0|?_C"n0r_A_CBd "np2><"n0J@Z"n0r`A\C"n0rA_C"n0rA_CBd "np2><"n0r A\"n0r`A\C"n0r?A_C"n0rA_CBd "np2><"n0r@A\"n0r`A\C"n0r_A_C"n0rA_CBd "np 2><"n0r`A\"n0r`A\C"n0rA_C"n0rA_CBd "np!2><"n0|\"n0r`A\C"n0|_C"n0rA_CBd "np"2><"n0|\"n0r`A\C"n0|_C"n0rA_CBd "np#2><"n0|\"n0r`A\C"n0|_C"n0rA_CBd "np$2><"n0|\"n0r`A\C"n0|_C"n0rA_CBd "np%2><"n0|\"n0r`A\C"n0|_C"n0rA_CBd "np&2><"n0|\"n0r`A\C"n0|?_C"n0rA_CBd "np'2>< "n0J@Z"n0|\C"n0rA_C"n0|_CBd "np(2>< "n0r A\"n0|\C"n0r?A_C"n0|_CBd "np)2>< "n0r@A\"n0|\C"n0r_A_C"n0|_CBd "np*2>< "n0r`A\"n0|\C"n0rA_C"n0|_CBd "np+2><"n0|\"n0|\C"n0|_C"n0|_CBd "np,2><"n0|\"n0|\C"n0|_C"n0|_CBd "np-2><"n0|\"n0|\C"n0|_C"n0|_CBd "np.2><"n0|\"n0|\C"n0|_C"n0|_CBd "np/2><"n0|\"n0|\C"n0|_C"n0|_CBd "np02><"n0|\"n0|\C"n0|?_C"n0|_CBd "np12><"n0J@Z"n0|\C"n0rA_C"n0|_CBd "np22><"n0r A\"n0|\C"n0r?A_C"n0|_CBd "np32><"n0r@A\"n0|\C"n0r_A_C"n0|_CBd "np42><"n0r`A\"n0|\C"n0rA_C"n0|_CBd "np52><"n0|\"n0|\C"n0|_C"n0|_CBd "np62><"n0|\"n0|\C"n0|_C"n0|_CBd "np72><"n0|\"n0|\C"n0|_C"n0|_CBd "np82><"n0|\"n0|\C"n0|_C"n0|_CBd "np92><"n0|\"n0|\C"n0|_C"n0|_CBd "np:2><"n0|\"n0|\C"n0|?_C"n0|_CBd "np;2>< "n0J@Z"n0|\C"n0rPA_C"n0|_CBdp=@><!"n0|\"n0|\C"n0|?_C"n0|_CBdp=@><#0.N^,_X> _O NGET_VBLSPD?Hz><,/,HNVA:-HPNvC^EpQ><-C4EpQ><.C EpQ></CE><1?<BgBg?<?< N>-@><2/.?<Bg?<?<BgBgBgBgN=@><3/.?.0|AeAO"Op?"Q><4?<BgN><5/.?<Bg?<?<?<?<Bg?<N=@><6/.?.0|AeAO"Op?"QAO"Op?"QAF6O"Op?"Q><7?<?<Nj><8/.?<Bg?<?<?<?<Bg?<N=@><9/.?.0|AeAO"Op?"QAO"Op?"QAG6O"Op?"Q><:?<?<Nj><;/.?<prArA?><<=/.?.0|AeCO$O?<?<N><>/.N`><?/.?.Nv=@><@/.N><A/.?.0|AeHnNV><B/.?.0|AeHnNV><C"n/ AG6O$Op?$QN"_2><D"n/ AF6O$Op?$QN"_2><E0.nf><F><Gp.rAnp1C><H"n/ AO$Op?$QN6"_2><I"n0J@j"nBQ><Jp.rAnp1C><K"n/ AO$Op?$QN"_2><L"n0rAl "np2><M><N"n?HyG6NX><O"n?HyF6ND><P/.N><QN^,_X> _PNOK99VBLANKS.: __SPEED.: __Enter SPEED and VBLDO_THE_BOX?Hz><V/,HNVA-HPNv"n0`><W><W/9Hr?<0|Ae?<?<NX`><X><X/9Hr?<0|Ae?<?<NX`l><Y><Y/9Hr?<0|Ae?<?<NX`>><Z><Z/9Hr?<0|Ae?<?<NX`><[><[/9Hr?<0|Ae?<?<NX`><\><\/9Hr?<0|Ae?<?<NX`><]><]/9Hr?<0|Ae?<?<NX`><^><^/9Hr?<0|Ae?<?<NX`X><_><_/9Hr?<0|Ae?<?<NX`*><` @b@0;NP~6d><a"n0`><b><b/9Hr?<0|Ae?<?<NX`><c><c/9Hr?<0|Ae?<?<NX`n><d><d/9Hr?<0|Ae?<?<NX`@><e><e/9Hr?<0|Ae?<?<NX`><f><f/9Hr?<0|Ae?<?<NX`><g><g/9Hr?< 0|Ae?<?<NX`><h><h/9Hr?< 0|Ae?<?<NX`><i><i/9Hr?< 0|Ae?<?<NX`Z><j><j/9Hr?< 0|Ae?<?<NX`,><kS@ @b@0;NN|4b><l"n0`><m><m/9Hr?<0|Ae?<?<NX`><n><n/9Hr?<0|Ae?<?<NX`|><o><o/9Hr?<0|Ae?<?<NX`N><p><p/9Hr?<0|Ae?<?<NX` ><q @b@0;N6d><r"n0`><s><s/9Hr?<0|Ae?<?<NX`><t><t/9Hr?< 0|Ae?<?<NX`><u><u/9Hr?<!0|Ae?<?<NX`><v><v/9Hr?<"0|Ae?<?<NX``><w><w/9Hr?<,0|Ae?<?<NX`2><x><x/9Hr?<-0|Ae?<?<NX`><y><y/9Hr?<.0|Ae?<?<NX`><z><z/9Hr?</0|Ae?<?<NX`><{><{/9Hr?<#0|Ae?<?<NX`z><|><|/9Hr?<$0|Ae?<?<NX`L><}><}/9Hr?<%0|Ae?<?<NX`><~><~/9Hr?<&0|Ae?<?<NX`><></9Hr?<'0|Ae?<?<NX`><></9Hr?<(0|Ae?<?<NX`><></9Hr?<)0|Ae?<?<NX`f><></9Hr?<*0|Ae?<?<NX`8>< @b,@0;N<Bn nn.><?.0.A@A?0N30fRn`></9HrN`></9HrBgNv=@></9Hr?<0|AeNɺrAJ@g "np2></9Hr?<0|AeNɺrAJ@g "np2></9Hr?<0|AeNɺrAJ@g "np2></9Hr?<0|AeNɺrAJ@g "np2></9Hr?<0|AeNɺrAJ@g "np2></9Hr?< 0|AeNɺrAJ@g "np2></9Hr?< 0|AeNɺrAJ@g "np2></9Hr?< 0|AeNɺrAJ@g "np2></9Hr?< 0|AeNɺrAJ@g "np 2></9Hr?<0|AeNɺrAJ@g"nBQ></9Hr?<0|AeNɺrAJ@g "np2></9Hr?<0|AeNɺrAJ@g "np2></9Hr?<0|AeNɺrAJ@g "np2></9Hr?<0|AeNɺrAJ@g "np2></9Hr?<0|AeNɺrAJ@g "np2></9Hr?<0|AeNɺrAJ@g "np2></9Hr?<0|AeNɺrAJ@g "np2></9Hr?<0|AeNɺrAJ@g "np2></9Hr?<0|AeNɺrAJ@g"nBQ></9Hr?<0|AeNɺrAJ@g "np2></9Hr?<0|AeNɺrAJ@g "np2></9Hr?<0|AeNɺrAJ@g "np2></9Hr?<0|AeNɺrAJ@g"nBQ></9Hr?< 0|AeNɺrAJ@g "np2></9Hr?<!0|AeNɺrAJ@g "np2></9Hr?<"0|AeNɺrAJ@g "np2></9Hr?<,0|AeNɺrAJ@g "np2></9Hr?<-0|AeNɺrAJ@g "np2></9Hr?<.0|AeNɺrAJ@g "np2></9Hr?</0|AeNɺrAJ@g "np2></9Hr?<#0|AeNɺrAJ@g "np2></9Hr?<$0|AeNɺrAJ@g "np 2></9Hr?<%0|AeNɺrAJ@g "np 2></9Hr?<&0|AeNɺrAJ@g "np 2></9Hr?<'0|AeNɺrAJ@g "np 2></9Hr?<(0|AeNɺrAJ@g "np 2></9Hr?<)0|AeNɺrAJ@g "np2></9Hr?<*0|AeNɺrAJ@g "np2></9Hr?<+0|AeBg?<NX></9HrN><Bn nn.><?.0.A@A?0N30fRn`><N^,_X> _ONE_NMS?Hz></,HNVAb-HPNv"nBQ><p=@><CnEpQ><CRE><C EpQ><><><N֢><"y0RE*h0<?"Q><?<0AN"><?<0|ANЖ><?<0|ANX><BgBg?<?BgNH><Bg?<?<??<NH><Bg?<??<??<?NH><Bg?<_?<??<_NH><Bg?<?<??<NH><Bg?<?<??<NH><Bg?<?<??<NH><BgBgBg?<NH><?<Bg?<?<NH><?<?Bg?<??<NH><?<_Bg?<_?<NH><?<Bg?<?<NH><?<Bg?<?<NH><?<Bg?<?<NH><?<Bg?<?<NH><?<Bg?<?<NH><?<Bg?<?<NH><?<?Bg?<??<NH><?<0|ANX><"n?HnNB><><><p.rAl ?<0?<p.rAf><N8Hn?<?<NX><?<0AN><?<0|ANЖ><Bg?<AO"Op?"QNj><N><?<><?<?<?<><p/><BgBgBgBgBg><BgBgBgBgBg><Hn><Hy0f><Hy0fHy0f><HnHn><><Hy0fNF=@><HnHnHnNծ=@><0.J@f><><Hy Hy Hy Hy N><"n$n0A2 2><"n$n0A2 3y ><"n$n0A2 3y ><"n$n0A2 3y ><"n$n0A2 3y ><"n$n0R@2><><` ><Bn><0.|r|Af4><0.rAf Bn` ><p=@><0.N^,_X> _PN CHOOSE NEXT FRAME | DONE000DONE | SEQUENCE # VBL_BOX ?Hz></,HNVA-HPNv/9HzN`></9Hz?<0|AeBg?<NX>< /9Hz?<0|Ae?<?<NX>< /9HzBgNv=@>< 0.`>< >< >< "np2></9Hz?<0|Ae?< ?<NX><`v><><><"np2></9Hz?<0|Ae?< ?<NX><`4><><><"np2></9Hz?<0|Ae?< ?<NX><`><><><"np2></9Hz?<0|Ae?< ?<NX><`><><><"np2></9Hz?<0|Ae?< ?<NX><`n>< >< ><!"np2><"/9Hz?< 0|Ae?< ?<NX><#`,><$S@ @b@0;Nh`&><%/9Hz?<0|AeNɺrAJ@g"np$nR2><&/9HzN><'N^,_X> _XNSPEED_BOX ?Hz><,/,HNVA-HPNv/9HvN`><-/9Hv?<0|AeBg?<NX><./9Hv?<0|Ae?<?<NX><//9HvBgNv=@><00.`><1><1><2"np2><3/9Hv?<0|Ae?< ?<NX><4`v><5><5><6"np2><7/9Hv?<0|Ae?< ?<NX><8`4><9><9><:"np2><;/9Hv?<0|Ae?< ?<NX><<`><=><=><>"np2><?/9Hv?<0|Ae?< ?<NX><@`><A><A><B"np2><C/9Hv?<0|Ae?< ?<NX><D`n><E><E><F"np2><G/9Hv?< 0|Ae?< ?<NX><H`,><IS@ @b@0;Nh`&><J/9Hv?<0|AeNɺrAJ@g"np$nR2><K/9HvN><LN^,_X> _XNBKUP_RTN ?Hz><Q/,HNVA-HPNvN֢><RHyHyBgBgBgBg?<??<?<N><S"y0RE*h0<?"Q><TBn nn.><T?.0.A@A?0N30fRn`><UN><VN^,_X>NuRESTORE_SC?Hz><[/,HNVA|-HPNvN֢><\"y0RE$h0<?"Q><]Bn nn.><]?.0.A@A?0N@30fRn`><^N><_N^,_X>NuGET_STICK_?Hz><f/,HNVA-HPNvBn><g/9H?< 0|AeBg?<NX><h/9HN`><i/9HBgNv=@><j><k><k0.`.><l><l><m/9H?<0|AeBg?<NX><nN><o/9H?< 0|AeNɺrAJ@g"><pHyCHyHX><qNf=@`><qHy1 HyHFNJ=@><rN<><s`><t><t><u/9H?<0|AeBg?<NX><vN2><w/9H?< 0|AeNɺrAJ@g"><xHyAHyHP><yN=@`><yHy/"HyH>N=@><zN><{`><|><|><}/9H?<0|AeBg?<NX><~N></9H?< 0|AeNɺrAJ@g"><Hy;HyHJ><N=@`><Hy)(HyH8N=@><N><`j><><></9H?<0|AeBg?<NX><N></9H?< 0|AeNɺrAJ@g"><Hy=HyHH><Nz=@`><Hy+&HyH6N^=@><NP><`><><></9H?<0|AeBg?<NX><NF></9H?< 0|AeNɺrAJ@g"><Hy3HyHV><N=@`><Hy!0HyHDN=@><N><`"><><></9H?<0|AeBg?<NX><N></9H?< 0|AeNɺrAJ@g"><Hy5HyHT><N2=@`><Hy#.HyHBN=@><N><`~><><></9H?< 0|AeBg?<NX><N></9H?< 0|AeNɺrAJ@g"><Hy9HyHL><N=@`><Hy'*HyH:Nr=@><Nd><`><><></9H?< 0|AeBg?<NX><NZ></9H?< 0|AeNɺrAJ@g"><Hy?HyHR><N=@`><Hy-$HyH@N=@><N><`6><><></9H?< 0|AeBg?<NX><N></9H?< 0|AeNɺrAJ@g"><Hy7HyHN><NF=@`><Hy%,HyH<N><`><><><0.@e><p=@`:><><><Bn></9H?< 0|AeBg?<NX><><`.><W@ @ b @0;Nh T@><0.r Ag/9HBgN=@><0.r Afp></9H?< 0|AeBg?<NX></9HN><N֢><"y0REh0<?"Q><Bn nn.><?.0.A@A?0N|30fRn`><N><N^,_X>NuSTILL_RTN ?Hz></,HNVA-HPNv09ER@3E><09EyHFmByE><09EA2 A1 3! ><09EA2 A1(3E0><09EA2 A1&30P><N^,_X>NuUP_RTN ?Hz></,HNVA-HPNv09ER@3E><09EyHDmByE><09EA2 A!03! ><09 29EC2 A!2p3 ><09 J@jBy ><09EA2 A!43E2><09EA2 A!630P><09EA2 A!83E0><N^,_X>NuDN_RTN ?Hz></,HNVA-HPNv09ER@3E><09EyHBmByE><09EA2 A#.3! ><09 29EC2 A#0p3 ><09 |m 3 ><09EA2 A#23E2><09EA2 A#430P><09EA2 A#63E0><N^,_X>NuLFT_RTN ?Hz></,HNVA-HPNv09ER@3E><09EyH8mByE><09EA2 A)(3! ><09 29EC2 A)*p3 ><09 J@jBy ><09EA2 A),3E2><09EA2 A).30P><09EA2 A)03E0><N^,_X>NuUP_LFT_RTN?Hz></,HNVA8-HPNv09ER@3E><09EyH<09EA2 A%,3! ><09 29EC2 A%.p3 ><09 J@jBy ><09 29EC2 A%.p3 ><09 J@jBy ><09EA2 A%03E2><09EA2 A%230P><09EA2 A%43E0><N^,_X>NuDN_LFT_RTN?Hz></,HNVA<-HPNv09ER@3E><09EyH:mByE><09EA2 A'*3! ><09 29EC2 A',p3 ><09 |m 3 >< 09 29EC2 A',p3 >< 09 J@jBy >< 09EA2 A'.3E2>< 09EA2 A'030P>< 09EA2 A'23E0><N^,_X>NuRT_RTN ?Hz></,HNVA-HPNv09E R@3E ><09E yH6mByE ><09E A2 A+&3! ><09 29E C2 A+(p3 ><09 |m 3 ><09E A2 A+*3E2><09E A2 A+,30P><09E A2 A+.3E0><N^,_X>NuUP_RT_RTN ?Hz></,HNVA<-HPNv09ER@3E><09EyH@mByE>< 09EA2 A-$3! ><!09 29EC2 A-&p3 ><"09 |m 3 ><#09 29EC2 A-&p3 ><$09 J@jBy ><%09EA2 A-(3E2><&09EA2 A-*30P><'09EA2 A-,3E0><(N^,_X>NuDN_RT_RTN ?Hz><,/,HNVA@-HPNv09ER@3E><-09EyH>mByE><.09EA2 A/"3! ></09 29EC2 A/$p3 ><009 |m 3 ><109 29EC2 A/$p3 ><209 |m 3 ><309EA2 A/&3E2><409EA2 A/(30P><509EA2 A/*3E0><6N^,_X>NuBTN_STILL_?Hz><:/,HNVA-HPNv09E.R@3E.><;09E.yHXmByE.><<09E.A2 AC3! ><=09E.A2 AC3E0><>09E.A2 AC30P><?N^,_X>NuBTN_UP_RTN?Hz><C/,HNVA-HPNv09E,R@3E,><D09E,yHVmByE,><E09E,A2 A33! ><F09 29E,C2 A3 p3 ><G09 J@jBy ><H09E,A2 A3"3E2><I09E,A2 A3$30P><J09E,A2 A3&3E0><KN^,_X>NuBTN_DN_RTN?Hz><O/,HNVA-HPNv09E*R@3E*><P09E*yHTmByE*><Q09E*A2 A53! ><R09 29E*C2 A5p3 ><S09 |m 3 ><T09E*A2 A5 3E2><U09E*A2 A5"30P><V09E*A2 A5$3E0><WN^,_X>NuBTN_LFT_RT?Hz><[/,HNVA-HPNv09E R@3E ><\09E yHJmByE ><]09E A2 A;3! ><^09 29E C2 A;p3 ><_09 J@jBy ><`09E A2 A;3E2><a09E A2 A;30P><b09E A2 A;3E0><cN^,_X>NuBTN_UP_LFT?Hz><g/,HNVA8-HPNv09E$R@3E$><h09E$yHNmByE$><i09E$A2 A73! ><j09 29E$C2 A7p3 ><k09 J@jBy ><l09 29E$C2 A7p3 ><m09 J@jBy ><n09E$A2 A73E2><o09E$A2 A7 30P><p09E$A2 A7"3E0><qN^,_X>NuBTN_DN_LFT?Hz><u/,HNVA<-HPNv09E"R@3E"><v09E"yHLmByE"><w09E"A2 A93! ><x09 29E"C2 A9p3 ><y09 |m 3 ><z09 29E"C2 A9p3 ><{09 J@jBy ><|09E"A2 A93E2><}09E"A2 A930P><~09E"A2 A9 3E0><N^,_X>NuBTN_RT_RTN?Hz></,HNVA-HPNv09ER@3E><09EyHHmByE><09EA2 A=3! ><09 29EC2 A=p3 ><09 |m 3 ><09EA2 A=3E2><09EA2 A=30P><09EA2 A=3E0><N^,_X>NuBTN_UP_RT_?Hz></,HNVA<-HPNv09E(R@3E(><09E(yHRmByE(><09E(A2 A?3! ><09 29E(C2 A?p3 ><09 |m 3 ><09 29E(C2 A?p3 ><09 J@jBy ><09E(A2 A?3E2><09E(A2 A?30P><09E(A2 A?3E0><N^,_X>NuBTN_DN_RT_?Hz></,HNVA@-HPNv09E&R@3E&><09E&yHPmByE&><09E&A2 AA3! ><09 29E&C2 AAp3 ><09 |m 3 ><09 29E&C2 AAp3 ><09 |m 3 ><09E&A2 AA3E2><09E&A2 AA30P><09E&A2 AA3E0><N^,_X>NuSET_SPRITE?Hz></,HNVA-HPNvBn><Bn><Bn nn><><><Bn n nn><><><0.2. A=@><0.A;@A 1><0.A;@A 1><0.@ =@><Rn`><0.@ =@><Bn><Rn`N><N^,_X>NuGO_LOOP ?Hz></,HNVAx-HPNv><><?<N|=@><0.`b><><N`z><><N`j><><N`Z><><`N><><N`>><><N`.><><N`><><`><><NZ`><><Np`><><N`><><N`><><N`><><N`><><`><><N`><><N`><><NN`v><><`j><><N`Z><><N`J><><N`:><><`.>< @b@0;N *:JZjv><p=@><><0.yE2n$><><NX><0.R@=@><`><><><HyHy><?9 ?9 ><?9 ?9 ><?< ?< ><?<N><09!$@dJHyHy><Bg09! @?><?9 ?9 ><?< ?< ><?90PN"><HyHy><09! A;@A ?009! A;@A ?0><?9 ?9 ><?< ?< ><?9E0N><3  ><3  ><3  ><3  ><N><?< NAT2|p|@f><N^,_X>NuINIT_RTN ?Hz></,HNVA -HPNvBy ><p3 ><p3 ><p3 ><Bn n2n ><><><0.A2 A!0Bp>< 0.A2 A#.Bp>< 0.A2 A%,Bp>< 0.A2 A'*Bp>< 0.A2 A-$Bp>< 0.A2 A/"Bp><0.A2 A)(Bp><0.A2 A+&Bp><0.A2 A1 Bp><0.A2 A3Bp><0.A2 A5Bp><0.A2 A7Bp><0.A2 A9Bp><0.A2 A?Bp><0.A2 AABp><0.A2 A;Bp><0.A2 A=Bp><0.A2 ACBp><0.A2 rA!41><0.A2 rA#21><0.A2 rA%01><0.A2 rA'.1><0.A2 rA-(1>< 0.A2 rA/&1><!0.A2 rA),1><"0.A2 rA+*1><#0.A2 rA1$1><$0.A2 rA3"1><%0.A2 rA5 1><&0.A2 rA71><'0.A2 rA91><(0.A2 rA?1><)0.A2 rAA1><*0.A2 rA;1><+0.A2 rA=1><,0.A2 rAC1><.0.A2 rA!21></0.A2 rA#01><00.A2 rA%.1><10.A2 rA',1><20.A2 rA-&1><30.A2 rA/$1><40.A2 rA)*1><50.A2 rA+(1><60.A2 rA1"1><70.A2 A3 Bp><80.A2 A5Bp><90.A2 A7Bp><:0.A2 A9Bp><;0.A2 A?Bp><<0.A2 AABp><=0.A2 A;Bp><>0.A2 A=Bp><?0.A2 ACBp><A0.A2 rA!61><B0.A2 rA#41><C0.A2 rA%21><D0.A2 rA'01><E0.A2 rA-*1><F0.A2 rA/(1><G0.A2 rA).1><H0.A2 rA+,1><I0.A2 rA1&1><J0.A2 rA3$1><K0.A2 rA5"1><L0.A2 rA7 1><M0.A2 rA91><N0.A2 rA?1><O0.A2 rAA1><P0.A2 rA;1><Q0.A2 rA=1><R0.A2 rAC1><T0.A2 rA!81><U0.A2 rA#61><V0.A2 rA%41><W0.A2 rA'21><X0.A2 rA-,1><Y0.A2 rA/*1><Z0.A2 rA)01><[0.A2 rA+.1><\0.A2 rA1(1><]0.A2 rA3&1><^0.A2 rA5$1><_0.A2 rA7"1><`0.A2 rA9 1><a0.A2 rA?1><b0.A2 rAA1><c0.A2 rA;1><d0.A2 rA=1><e0.A2 rAC1><fRn`B><gByE><hByE><iByE><jByE><kByE><lByE><mByE><nByE ><oByE><pByHD><qByHB><rByH<><sByH:><tByH@><uByH>><vByH8><wByH6><xByHF><yByE,><zByE*><{ByE$><|ByE"><}ByE(><~ByE&><ByE ><ByE><ByE.><ByHV><ByHT><ByHN><ByHL><ByHR><ByHP><ByHJ><ByHH><ByHX><p3E0><p30P><?9E0HyE6N><p3E2><?9E2HyG6N><p3E4><?9E4HyF6N><By!(><By!&><N^,_X>NuADJ_SPEED ?Hz></,HNVA -HPNvBn n2n ><><><0.A2 A!220JAgx><><0.A2 2.C2 A!240nA!21><0.A2 A!220p@l0.A2 rA!21><><0.A2 A#020JAgx><><0.A2 2.C2 A#040nA#01><0.A2 A#020p@l0.A2 rA#01><><0.A2 A%.20JAgx><><0.A2 2.C2 A%.40nA%.1><0.A2 A%.20p@l0.A2 rA%.1><><0.A2 A',20JAgx><><0.A2 2.C2 A',40nA',1><0.A2 A',20p@l0.A2 rA',1><><0.A2 A-&20JAgx><><0.A2 2.C2 A-&40nA-&1><0.A2 A-&20p@l0.A2 rA-&1><><0.A2 A/$20JAgx><><0.A2 2.C2 A/$40nA/$1><0.A2 A/$20p@l0.A2 rA/$1><><0.A2 A)*20JAgx><><0.A2 2.C2 A)*40nA)*1><0.A2 A)*20p@l0.A2 rA)*1><><0.A2 A+(20JAgx><><0.A2 2.C2 A+(40nA+(1><0.A2 A+(20p@l0.A2 rA+(1><><0.A2 A1"20JAgx><><0.A2 2.C2 A1"40nA1"1><0.A2 A1"20p@l0.A2 rA1"1><><0.A2 A3 20JAgx><><0.A2 2.C2 A3 40nA3 1><0.A2 A3 20p@l0.A2 rA3 1><><0.A2 A520JAgx><><0.A2 2.C2 A540nA51><0.A2 A520p@l0.A2 rA51><><0.A2 A720JAgx><><0.A2 2.C2 A740nA71><0.A2 A720p@l0.A2 rA71><><0.A2 A920JAgx><><0.A2 2.C2 A940nA91><0.A2 A920p@l0.A2 rA91><><0.A2 A?20JAgx><><0.A2 2.C2 A?40nA?1><0.A2 A?20p@l0.A2 rA?1><><0.A2 AA20JAgx><><0.A2 2.C2 AA40nAA1><0.A2 AA20p@l0.A2 rAA1><><0.A2 A;20JAgx><><0.A2 2.C2 A;40nA;1><0.A2 A;20p@l0.A2 rA;1><><0.A2 A=20JAgx><><0.A2 2.C2 A=40nA=1><0.A2 A=20p@l0.A2 rA=1><><0.A2 AC20JAgx><><0.A2 2.C2 AC40nAC1><0.A2 AC20p@l0.A2 rAC1><><Rn`X><N^,_X> _TNADJ_VBLANK?Hz></,HNVA-HPNvBn n2n><><><0.A2 2.C2 A!440nA!41><0.A2 A!420p@l0.A2 rA!41><0.A2 2.C2 A#240nA#21><0.A2 A#220p@l0.A2 rA#21><0.A2 2.C2 A%040nA%01><0.A2 A%020p@l0.A2 rA%01><0.A2 2.C2 A'.40nA'.1><0.A2 A'.20p@l0.A2 rA'.1><0.A2 2.C2 A-(40nA-(1><0.A2 A-(20p@l0.A2 rA-(1><0.A2 2.C2 A/&40nA/&1><0.A2 A/&20p@l0.A2 rA/&1>< 0.A2 2.C2 A),40nA),1>< 0.A2 A),20p@l0.A2 rA),1>< 0.A2 2.C2 A+*40nA+*1>< 0.A2 A+*20p@l0.A2 rA+*1>< 0.A2 2.C2 A1$40nA1$1><0.A2 A1$20p@l0.A2 rA1$1><0.A2 2.C2 A3"40nA3"1><0.A2 A3"20p@l0.A2 rA3"1><0.A2 2.C2 A5 40nA5 1><0.A2 A5 20p@l0.A2 rA5 1><0.A2 2.C2 A740nA71><0.A2 A720p@l0.A2 rA71><0.A2 2.C2 A940nA91><0.A2 A920p@l0.A2 rA91><0.A2 2.C2 A?40nA?1><0.A2 A?20p@l0.A2 rA?1><0.A2 2.C2 AA40nAA1><0.A2 AA20p@l0.A2 rAA1><0.A2 2.C2 A;40nA;1><0.A2 A;20p@l0.A2 rA;1><0.A2 2.C2 A=40nA=1><0.A2 A=20p@l0.A2 rA=1><0.A2 2.C2 AC40nAC1>< 0.A2 AC20p@l0.A2 rAC1><!Rn`(><"N^,_X> _TNGO_STICK_R?Hz><'/,HNVA-HPNvN֢><(Bn nn0><(?.0.A@A?0Nz30fRn`><)/9Hj/9H^?<*N#0V><+"y0VE0h0<?"Q><,/9Hn/9H^?<-N#0Z><."y0ZE0h0<?"Q></#HnHb><0#HjHf><1/9Hf/9Hb?<2N|><3N><4N><5/9HZ/9H^?<6Bn nn0><6?.0.A@A?0Nz30fRn`><7N><8N^,_X>NuM1_RTN ?Hz><=/,HNVA-HPNvBy!$><>N=@><?0.@dL><@><ACNO$OpQ?<N30f><B090frAfN!><C><DN^,_X>Nu[3][ LOAD MASK ? ][ YES | NO ]M2_RTN ?Hz><I/,HNVA-HPNvBn nn0><I?.0.A@A ?0Nz30fRn`><JHnN><KNv><L?.N><MBn nn0><M?.0.A@A?0Nz30fRn`><NN^,_X>NuM3_RTN ?Hz><R/,HNVA$-HPNvNP><Sp3!(><TN^,_X>NuM4_RTN ?Hz><Y/,HNVA-HPNvBn nn0><Y?.0.A@A ?0Nz30fRn`><ZHnN><[Nv><\?.N><]Bn nn0><]?.0.A@A?0Nz30fRn`><^N^,_X>NuM5_RTN ?Hz><b/,HNVA-HPNvN#t><cN^,_X>NuM6_RTN ?Hz><g/,HNVAn-HPNv09!&@d&><h><iN><jp3!(><k><l`,><lC2O$O,p+Q?<N30f><mN^,_X>Nu[3][ |NO SPRITE FILE| IN MEMORY ][ OOPS! ]M7_RTN ?Hz><q/,HNVA-HPNvN><rN^,_X>NuM8_RTN ?Hz><v/,HNVA-HPNv09!&@d\><w><x09!(@d><y><zN`,><zCO$O/p.Q?<N30f><{><|`,><|C2O$O*p)Q?<N30f><}N^,_X>Nu[3][ |NO SPRITE FILE| IN MEMORY][ OOPS! ][3][ |NO STICK SEQUENCE| IN MEMORY][ OOPS! ]M9_RTN ?Hz></,HNVAT-HPNvCLO$O3p2Q?<N30f><090frAf p3!*><N^,_X>Nu[3][ |ARE YOU SURE YOU|WANT TO QUIT ][ YES | NO ]BUTTON_PRE?Hz></,HNVAP-HPNv0.|]0.r:A^C0.rA]C0.rsA^CBd ><N><0.|]0.|^C0.rA]C0.rsA^CBd ><NF><0.|]0.r:A^C0.|]C0.|^CBd ><N><0.|]0.|^C0.|]C0.|^CBd ><N><0.|]0.r:A^C0.|]C0.|^CBd ><N><0.|]0.|^C0.|]C0.|^CBd ><N><0.|]0.r:A^C0.|]C0.|^CBd ><N ><0.|]0.|^C0.|]C0.|^CBd ><N ><0.|]0.rnA^C0.|]C0.|^CBd ><N><N^,_X> _XNSHIFT_COLO?Hz></,HNVA-HPNvBn nn><NXRn`><3><3><3><3><3><3><3><3><3><3><CEp$Q><Bn nn0><?.0.A@A?0Nz30fRn`><N^,_X>NuEVENT_RTN ?Hz></,HNVA-HPNv><><pr A?><?<?<?<><p/><BgBgBgBgBg><BgBgBgBgBg><Hn><Hy0f><Hy0fHy0f><HnHn><><Hy0fNF=@><0.rAJ@g?.?.N|><0.r AJ@gN><09!*|r|Af.><N^,_X>NuA#A0B1|A01|><NިJ@k><><NJ@fd><><CO$O p QN@d><><BgHyHN><?<HyH~N><?<HyHvN><?<HyHzN><?<HyHrN><Nl#0R><N4><N><Nf><By0d y0dn>><><090dA@/?90d?<?<CO$O p QN><?<CO$O p QN><N֢><"y0REh0<?"Q><CEp$Q><CE p$Q><N><N#HZ><N#H^><N#Hj><N#Hn><By><By><HyHy0hN><HyHyhN><HyHy*hN><HyHy$hN><HyHyLNF><N><By! ><By ><By ><By ><By ><By ><By ><By!*><N><By0d y0dn6><?90d090dA@A?0Nz30fRy0d`><><`,><CO$O!p Q?<N30f><><`,><CHO$OpQ?<N30f><ND><><HyNNٌ[3][ | LOW REZ ONLY ][ OK ][3][ | NO RESOURCE FILE][ DARN! ]JOYSTICK.PI1JOYTEST.PI1JOYSTICK.RSCNuINIT_FORM ?Hz~/,HNVA-HPNv .r=@~ .rr=@~~"n2~"n3n~~"n3|@~ "n3|~!"np3@~""nBi ~#"np3@ ~$N^,_X> _PNINIT_MASK_?Hz~./,HNVA-HPNv .r=@~/ .rr=@~0~1"n2~2"n3n~3~4"np 3@~5"n3|~6"np3@~7"nBi ~8"np3@ ~9N^,_X> _PNCOPY_RECT ?Hz~\/,HNV4A-HPNv .$r=@6~] .$rr=@4~^=n4=n6~`~a . r=@6~b . rr=@4~c=n4=n6~e=n~g~h=nP=nR~i0.nS@=@T~j0.nS@=@V~l=nX=nZ~m0.nS@=@\~n0.nS@=@^~p~q?<mBg?<?<HnHnHnhHnPHn8BgN~sN^,_X> _ONCOPY_MASK ?Hz></,HNV4A6-HPNv .$r=@6>< .$rr=@4><=n4=n6><>< . r=@6>< . rr=@4><=n4=n6><=n><Bn><p=@><><=nP=nR><0.nS@=@T><0.nS@=@V><=nX=nZ><0.nS@=@\><0.nS@=@^><><?<yBg?<?<HnHnHnhHnPHn8BgN><N^,_X> _ONa4"h#H!|0<a(0<a"Nu0<aa "yH!INu?<"NNT @Nu??<?<NM\NuCH(APHNu0<B9HaJ9Hg _2|CH1|NNu/,HNVNvAJ-Hp=@"n 0.r1JAV0.rdA]CBd0.R@=@`"n 0.S@@N^,_ _XN/,HNVfNvA6-H"nE4p$Q"np)R@rA"n p)=@Bn0.@eR0.J@W"n 0.r1p\@WÄC"n 0.r1p:@WÄCBd p=@` 0.S@=@`Bn0."n r)Al20.R@=@0.R@=@0."n 2.t1A`0.@0.R@rAHnN-@lHnN-@p?<ZHnHntHnlHnhN0.vJ@f Bn`p=@HnN>HnN6"nE2p"Q"n E2p"Qp.=@Bn0.@eR0.J@W0.rA0p\@WÄC0.rA0p:@WÄCBd p=@` 0.S@=@`p=@p.=@f0.nfn,0.R@=@"n 0.2.tA0Rn`"n 0.@0.N^,_ _PNNu/,HNVnNvAL-Hp. R@rA Hn N-@r?<nHnHnzHnrHnnN0.zJ@V=B0.N^,_ _ON/,HNVnNvAD-H=n=n ?<pHnHnzHnrHnnN0.zJ@g -nn`B .N^,_ _XN/,HNVNvA-H"n / Bg?.Nz"_"N^,_ _\N/,HNVNvA-H"n / Bg?.NF"_"N^,_ _\N/,HNVtNvA -H?<oHnHnHnxHntNN^,_NuNu/,HNVAp-HNv0.T@=@?.N-@/.?-HNv=n PBnR?<BgBg?<HnHnHnhHnPHn8BgNN^,_ _TN/,HNV8AN-HNv?.?. Nj=n=n ?<lBg?<BgHnHnHnhHnPHn8BgNN^,_ _XN/,HNVA"-HNv?. Nz?<?. NN^,_ _TN/,HNVA.-HNv0. rA?N?<h0. rA?NN^,_ _TN/,HNVAz-HNv?. N=n 0. rAo0p=@0. S@=@ 0. rAop=@0. @=@ ?<?.N.0.rAo?<?. NN^,_ _TN/,HNV6A@-HNv=n =n?<'Bg?<BgHnHnHnhHnPHn8BgNN^,_ _XN/,HNVA-HNv?<j?. NN^,_ _TN/,HNV8A>-HNvBnP=n R?< BgBg?<HnHnHnhHnPHn8BgNN^,_ _TN/,HNVA-HNv?<?. NN^,_ _TN/,HNV2A-HNvHn2Hn4Hn6NBgBgNl=nP=nR0.nS@=@T=nV0.nS@=@X0.n S@=@Z=n\0.n S@=@^=n`=nb?<BgBg?<HnHnHnhHnPHn8?<N?.4?.6NN^,_ _PN/,HNV8A`-HNv=nP=nR0.nS@=@T0.n S@=@V?< ?< Bg?<HnHnHnhHnPHn8?<NN^,_ _PN/,HNVAr-HNvHnHnHnNBgN?<NHnHnHnN?.Nn?.?.?.?. N*?.N?.N?.NBN^,_ _PNNu/,HNVtA2-HNv=n-n x?<NHnHnHnxHntNN^,_ _\N/,HNVA-HNv?</. NN^,_ _XN/,HNVA-HNv0. ?BNnN^,_ _TN/,HNVA2-HNvNNJ@f ?<BN8NNR@?NVN^,_Nu/,HNVA@-HNvNNrAo(NNS@?NVNNJ@f ?<BNN^,_Nu/,HNVA<-HNvp?BNp=@NN=@0.nn NrRn`N^,_Nu/,HNVtA,-HNvp=@?<kHnHnHnxHntNN^,_Nu/,HNVtA,-HNvp=@?<kHnHnHnxHntNN^,_NuNu/,HNVNvp.R@rAHnN/?. NL=@0.N^,_ _ONNu/,HNVNvA-H=nF=n@=nD=nB0.:rA=@=n8=n6=n4=n20.0rA=@=n. =n, =n*=n(=n>=n<-n$?<HnHnHnHnN=n"n2"n2"n2"n 2"n 2"n20.N^,_ _O/LINuHI _0@"_24BAAc1V`t>/LINuHI _02S@AC2YQ/LINuHI _02S@AC2YQ/LINuHI _02S@AC2FAYQ/LINuB9J`PJBy _0g$_jp"_// HJNLJJ@fP)J9Jf" f |` f|` f |` f|`4<G BQB) @e *:f&Jrt `e QGtWJBkZG3 J9Jf g< g6`d f H@?3|NAXNuBy(_ _/ C( g  f,t4(H / /?(?<@NA LJkvfNu4(SBraQNu(g^ f,H tJHyJ/<??<@NA LNu fH t` fH t` f NuHyK` Hy$0< LNREWRITE required prior to WRITE or PUTDisk or directory fullBy(_ _/ C (g ( fxJ(ft4($IH / /?(?<?NA LJk,g*fJg  f"J` g  Wf NuJgJ(f P Nu!|Nu4(SBa@J(f8Jg. fJ(f"gr W1Agp f W1A1AQNu(gfJ(fT f6H`?<NAT fHy/<?N/B9J:/|J:NuHJ _0 @f0"|JJp` "_J@jpEJ:r4@ BbBS@kQ/LJNuHJ _4SBkt82$_rAdd0 @f0"|JJp` "_J@jp6ADb6CG0IS@k$eQ/LJNuHJ _4k2SAk0"_p6B@bE0)CS@kQ/LJNuHJ _2$_r0 @f0"|JJp` "_J@jp@kS@kv&J$IRC4(K Vg RQBg`?/LJNuHJ _4kF2SAk>0 @f0"|JJp` "_J@jp6B@bEJ:SBkQ/LJNuString overflow _ hNVf 0(gr"OD@Hd2S@k "Q` _"ye HyNN#KB#K> .f -|`-| nNнK>f yKBNStack overruns heapH?KF _z gBjDRE"g8jDRE$6HBJBg8HAJAf,HBJBf$ւi EdD.` $HB8`B/L?KFNu0NvDNHKF|` HKF| _z f0NjDRE"g`jDREdJgR(`DfxJg<`DxSDbb JgHA8`"tcRЀ`xeWJg(MdD.`B/LKFNu09Nu _3NByNu[3][4][ Abort ]Copyright 1986, CCD and OSS, Inc.    -.<:@&JjRN  D(&$4@>0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 2 BB <. ( $*8B. ( $ >. ( B$& >0  : 8l.( B $ >r(<*D *D :: &|HJ>d  *Hh  J." N 8>    .&&&&&<"@   .&&&&&<"@  4< 4<  *********VN  4<    <      <       <      <       <        <       <        <         <    <      <       <      <       <        <       <        <         4@ l*trp`  zP,&D0T>0,8&&,$ B " 4T R"BBD <. ,@ ,,2 4 ,2 4 ,2 ,,T  V& ,,  ,6   $L    8@F L2`*2 "T &( &0&  >          ,*< * * , , 0 , " nBB6 pD D< V  <   , FR ( *@ B @ B V  ` a4"h#!|R0<a(0<a"Nu0<aa "y!INu?<"NNT @Nu??<?<NM\NuC(APNu0<B9aJ9g _2|C1|NINIT_STIEND_STIC"STICKlget_vect6old_vecdo_stickRsend_cmdBstick0donenoteventjwaitxstick1type* !NOTICE: * * THESE MATERIALS are UNSUPPORTED by OSS! If you do not understand how to * use them do not contact OSS for help! We will not teach you how to * program in Pascal. If you find an error in these materials, feel free * to SEND US A LETTER explaining the error, and how to fix it. * * THE BOTTOM LINE: * * Use it, enjoy it, but you are on your own when using these materials! * * * DISCLAIMER: * * OSS makes no representations or warranties with respect to the contents * hereof and specifically disclaim all warranties of merchantability or * fitness for any particular purpose. This document is subject to change * without notice. *  * OSS provides these materials for use with Personal Pascal. Use them in * any way you wish. * .xdef INIT_STICK,END_STICK,STICK .text * * Get the address of the keyboard packet handle table, and replace the joystick * handler. Set up our own vector as the joystick handler INIT_STICK: bsr get_vectors move.l 24(a0),a1 * Stick handler is at *a0[6] move.l a1,old_vec move.l #do_stick,24(a0) move.w #$12,d0 * Turn mouse off bsr send_cmd move.w #$15,d0 * And turn joystick on, interrogate mode bsr send_cmd rts * Then return to caller * * Turn off joysticks, and turn on mouse. Replace the old joystick packet * handler vector. END_STICK: move.w #$08,d0 * Turn off joysticks by turning on mouse bsr send_cmd bsr get_vectors * Now replace old stick handler move.l old_vec,a1 move.l a1,24(a0) rts * Return to caller * get_vectors: move.w #34,-(sp) * Get address of keyboard packet handler tbl trap #14 add.l #2,sp move.l d0,a0 rts * send_cmd: move.w d0,-(sp) * Just perform a bconout to the keyboard move.w #4,-(sp) move.w #3,-(sp) trap #13 add.l #6,sp rts * do_stick: lea stick0,a1 * Get a pointer to our data area in a1 move.b (a0),d1 * Get direction bits move.b d1,(a1) * and save in our data move.b 1(a0),d1 move.b d1,1(a1) st done notevent: rts * STICK: move.w #$16,d0 * Interrogate joystick clr.b done bsr send_cmd wait: tst.b done beq wait move.l (sp)+,a0 * Save return address move.w (sp)+,d1 * get stick number (0-1) and.w #1,d1 lea stick0,a1 move.b (a1,d1.w),d0 * Return with our stick value as the fn. result and.w #$FF,d0 jmp (a0) * and return * .bss old_vec: .ds.l 1 stick0: .ds.b 1 * position for stick 0 stick1: .ds.b 1 * and stick 1 done: .ds.b 1 .end wppwU33ss77w\\?\\?\\?\\?\\?\\?\\?J\?\\?\\?\\?\ xxx\?````\   \ ?````\ 00000\ ````?0000\???\?\\^^??^^??^^??^^??^^??^^??^>^??^^??^^??^^??^^??[[??[[6666 ??[??? [̄??0000[xx00^??^^XX?XX?XX?XX?XX?XX?XX?XX?XX?XX?XX?X?xxxX̀̀?0000X̀̀00X   xxxx?X̀̀00X̀̀?````XxxxX?XXZZ???ZZ???ZZ???ZZ???ZT???ZZ???ZZ???ZZ???ZZ???ZZ???ZZ???Y<<````Y8888ffff???````Ynn``Yvvvv`````?`?``?Yff``Yffff`````?`?``?Y~~<<Z???ZZ XX???XX???XX???X&f2???XX???XX???XX???XX???XX???XX???XX???X~`0X8888   pp?p?p?X`X   aaaa???````XaXffff````00?0?0?X~<0X???XX ` T NuINIT_FORM ?Hz~/,HNVA-HPN .r=@~ .rr=@~~"n2~"n3n~~"n3|@~ "n3|~!"np3@~""nBi ~#"np3@ ~$N^,_X> _PNINIT_MASK_?Hz~./,HNVA-HPN .r=@~/ .rr=@~0~1"n2~2"n3n~3~4"np 3@~5"n3|~6"np3@~7"nBi ~8"np3@ ~9N^,_X> _PNCOPY_RECT ?Hz~\/,HNV4A-HPN .$r=@6~] .$rr=@4~^=n4=n6~`~a . r=@6~b . rr=@4~c=n4=n6~e=n~g~h=nP=nR~i0.nS@=@T~j0.nS@=@V~l=nX=nZ~m0.nS@=@\~n0.nS@=@^~p~q?<mBg?<?<HnHnHnhHnPHn8BgN~sN^,_X> _ONCOPY_MASK ?Hz></,HNV4A6-HPN .$r=@6>< .$rr=@4><=n4=n6><>< . r=@6>< . rr=@4><=n4=n6><=n><Bn><p=@><><=nP=nR><0.nS@=@T><0.nS@=@V><=nX=nZ><0.nS@=@\><0.nS@=@^><><?<yBg?<?<HnHnHnhHnPHn8BgN><N^,_X> _ONINIT_FOR stackchkINIT_MASCOPY_REChVDI_CALLCOPY_MAS      $  ${$M+} {$E+} (* link this with joystick.o *) program addr_stuff; { this is a module to go with joystick.pas - necessary in order to convert addresses to integers } type { these are echos of types in joystick.pas } scrn_memory = packed array[0..31999] of byte; mfdb_fields = (addr1,addr2,wid_pix,ht_pix,wid_wds,flag,num_planes,r1,r2,r3); mfdb = array[mfdb_fields] of integer; PROCEDURE init_form(var form : MFDB; addr : long_integer); { initializes a form to point to a chunk of memory off screen } { note that the caller passes a 32K chunk of memory as what it thinks is a var parameter, thus passing its address } var hi_byte,lo_byte : integer; begin { convert the address to integers } lo_byte := int(addr & $0f); hi_byte := int( ShR(addr,16) & $0f); { and initialize all fields of the MFDB } form[addr1] := hi_byte; form[addr2] := lo_byte; { some assumptions here } form[wid_pix] := 320; { low rez } form[ht_pix] := 200; { low rez } form[wid_wds] := 20; form[flag] := 0; { device dependent } form[num_planes] := 4; { again, low rez } end; PROCEDURE init_mask_form(var form : MFDB; addr : long_integer); { initializes a form to point to a chunk of memory off screen } { monoplane bit mask of sprite file } var hi_byte,lo_byte : integer; begin { convert the address to integers } lo_byte := int(addr & $0f); hi_byte := int( ShR(addr,16) & $0f); { and initialize all fields of the MFDB } form[addr1] := hi_byte; form[addr2] := lo_byte; { some assumptions here } form[wid_pix] := 32; { 32 pixels wide } form[ht_pix] := 1920; { 1920 words long } form[wid_wds] := 2; { 2 words (32 bits) wide } form[flag] := 0; { device dependent } form[num_planes] := 1; { monoplane } end; PROCEDURE copy_rect(srcQ,dst : long_integer; from_x,from_y,to_x,to_y,width,height,mode : integer); { heres where we actually copy a rectangle from one loc. to another } { using gem raster copy opaque function } TYPE Ctrl_Parms = ARRAY [ 0..11 ] OF integer ; Int_In_Parms = ARRAY [ 0..15 ] OF integer ; Int_Out_Parms = ARRAY [ 0..45 ] OF integer ; Pts_In_Parms = ARRAY [ 0..11 ] OF integer ; Pts_Out_Parms = ARRAY [ 0..11 ] OF integer ; VAR control : Ctrl_Parms ; int_in : Int_In_Parms ; int_out : Int_Out_Parms ; pts_in : Pts_In_Parms ; pts_out : Pts_Out_Parms ; hi_byte,lo_byte : integer; PROCEDURE VDI_Call( cmd, sub_cmd : integer ; nints, npts : integer ; VAR ctrl : Ctrl_Parms ; VAR int_in : Int_In_Parms ; VAR int_out : Int_Out_Parms ; VAR pts_in : Pts_In_Parms ; VAR pts_out : Pts_Out_Parms ; translate : boolean ) ; EXTERNAL ; begin { put source MFDB address in control array } lo_byte := int(src & $0f); hi_byte := int( ShR(src,16) & $0f); control[7] := hi_byte; control[8] := lo_byte; { and same for destination MFDB } lo_byte := int(dst & $0f); hi_byte := int( ShR(dst,16) & $0f); control[9] := hi_byte; control[10] := lo_byte; int_in[0] := mode; { mode } { set the points for src and dest } pts_in[0] := from_x; pts_in[1] := from_y; pts_in[2] := from_x + width - 1; pts_in[3] := from_y + height - 1; pts_in[4] := to_x; pts_in[5] := to_y; pts_in[6] := to_x + width - 1; pts_in[7] := to_y + height - 1; { do the copy } VDI_Call(109,0,1,8,control,int_in,int_out,pts_in,pts_out,false); end; PROCEDURE copy_mask(src,dst : long_integer; from_x,from_y,to_x,to_y,width,height,mode : integer); { heres where we actually copy the mask from one loc. to another } { using gem raster copy tranperent function } TYPE Ctrl_Parms = ARRAY [ 0..11 ] OF integer ; Int_In_Parms = ARRAY [ 0..15 ] OF integer ; Int_Out_Parms = ARRAY [ 0..45 ] OF integer ; Pts_In_Parms = ARRAY [ 0..11 ] OF integer ; Pts_Out_Parms = ARRAY [ 0..11 ] OF integer ; VAR control : Ctrl_Parms ; int_in : Int_In_Parms ; int_out : Int_Out_Parms ; pts_in : Pts_In_Parms ; pts_out : Pts_Out_Parms ; hi_byte,lo_byte : integer; PROCEDURE VDI_Call( cmd, sub_cmd : integer ; nints, npts : integer ; VAR ctrl : Ctrl_Parms ; VAR int_in : Int_In_Parms ; VAR int_out : Int_Out_Parms ; VAR pts_in : Pts_In_Parms ; VAR pts_out : Pts_Out_Parms ; translate : boolean ) ; EXTERNAL ; begin { put source MFDB address in control array } lo_byte := int(src & $0f); hi_byte := int( ShR(src,16) & $0f); control[7] := hi_byte; control[8] := lo_byte; { and same for destination MFDB } lo_byte := int(dst & $0f); hi_byte := int( ShR(dst,16) & $0f); control[9] := hi_byte; control[10] := lo_byte; int_in[0] := mode; { reverse xparent mode } int_in[1] := 0; { Color index set point } int_in[2] := 1; { Color index unset point } { set the points for src and dest } pts_in[0] := from_x; pts_in[1] := from_y; pts_in[2] := from_x + width - 1; pts_in[3] := from_y + height - 1; pts_in[4] := to_x; pts_in[5] := to_y; pts_in[6] := to_x + width - 1; pts_in[7] := to_y + height - 1; { do the copy } VDI_Call(121,0,1,8,control,int_in,int_out,pts_in,pts_out,false); end; { just a module, no main program } begin end.