`IBM p0@ A"xCp"QN4K@Mv$:a~JCg2A!lLj)HLA;aBaX: <SfaH:Aa(BVNuA-aa4:?<NATH@<g<1f`HP?< NA\NutaB xNBlBJlBgNu lA 4Vf vfNuH*xMpa^ UZIOgJ": M0<TgQ`4ACp 2Q N2<40<XQ0Hz?< NN\p *Na LNHxBgHxBHU?NNONuEY EY*$~ THE FUZION VIRUS KILLER III ~pY,,MEMORY IS CLEANqY,.VIRUS FOUNDY.$qDO YOU WANT TO CLEAR IT ? (Y/N) u@`  @`! #@%`')+-1 3@5`79;?A CE`GIKMOQ S@UWY[]_a c@e`gikmoq s@uwy{} @` @ o @ ` @ ` @ ` ǀ @ ` ׀ ٠ /Oo/Oo ?AqIK SAU]_Q`giq!s{}1@aq AQ`!Ñ1@aq A@`  @`! #@%`')+-1 3@5`79;?A CE`GIKMOQ S@UWY[]_a c@e`gikmoq s@uwy{} @` @ o @ ` @ ` @ ` ǀ @ ` ׀ ٠ /Oo/Oo ?AqIK SAU]_Q`giq!s{}1@aq AQ`!Ñ1@aq ADESKTOP INFHOTWHEEL =OCKFALL TOS MANKIDE2 _WHEEL TOS0w3UwpP0O Z= Oa&t d*@ Vm 1DXlO$8L`t   ( < P d x      0 cc8?π0?0 00??&$7 ~f^o??? ?D_??H@?.?0~@A `...~q?0? `N1GDG?@_=p0P0@>!?XXX@8`0 #x @0B<`@`|`p```?0`?0000;,@ ` | |?@?  `;I /= ?@@ ` |  |@?@@@?@pp30  , `~@??  |  |@?@ppsa>  ??  |  |@```@`ca?@.?:>???!` ||`phX``@`?@~7?=?? |??| 0|??|``@`@`???/?;??~??!|| |??!``@?@`@`??'=?> ~  | |?? @@??? >  |  |??@??  0 >  | ` |/= ?@@`x 8 x  x p | ` |,@??>~ <`8@$p" @0B< #x0?3 ; fv@&@@H~=\\xpNHNo~f^?vxp00s'>?xoyX 0>??@l4??V  p <>> 0```  ``` 0<>> p   V4??l>??@8??>Xoy'>?xs8?>pxv?7??πNHNxp\\=~|4x|?0?<<^@G_0>@``p LLp66p@` xx066 0/P??O `~ >' '8? p xx  8 x`@@O@O0p > 0 ??@`p`0p hxx >???@@`@px8x ~'=?>??`@`?@@` p@`` xx??!|/?;??~???@`@```  `~ 7?=?? |~?@``@``phX @``.?:>??@ac@```@`?<< > as@pp?@?`~@  , 30@pp@@@?@??@0I ;` @? ?`8;0000```?0`?`p`|`@  8`XXX@>!?p0P0@=_?@߀@ ...>1? `~@A?.?0@?:??D_? ???` $7 ??&2 0?8?π0ccp~x9???>>5@ @@ '>ۀ!Aa@0{{3 ? 9?@09 96??';P?3=0@?? 0@g`l <>.L p C  123 ð<y3 9p9x|G:::?||xs xlp"p!80b|##| B X <8x@<x`h8x 0xee |  0t|h8x  h8x  |^~0x6 x|L|h8x  h8x  h8x~t\~|r^~@?t<|  h8x h8x~t\~|h<|>4? <<@?~||@?zn~ 4< t<| h8x ~4~<0~:.~> <<@?~`pp?<<0@?d<|  v^~ 4<  h8x 4<  v^~@?d<|0@``@?~`pp <<0~:.~> ~4~< h8x t<| 4<@?zn~~||~  <<>4?h<|~t\~| h8x  h8x@?t<|>r^~|,<< xx  @pph8x|t|x|L|px8x 0x6|^~    h8x>h8x|h8x0t| hxx| xee  `h8x@<x8xX <B  ||##0蜸b!8"plps x' '8??||xF:::|x9p93 y123 ð<347 C p >.Ll <`066 0g0@ ?3=0???';P9 96?@0<<^@G_03 ? {{!Aa@0>ۀ'π @ @@>5>>??~xp2`?:π@0 8`?@   ` p@``@`p`0p`O@O0p@@ >O `~fhn0@ xx@`4x|?0?|7??8?8??> a09,@ a09,@ a|LNuA 3,3,a/JgJf$0< aD0< a<g,a.`H?<?<?<NML` _Jg*y, yP,my, y,frNua a JBgAk AJ@Nu0<`a ?2A Jgt 4B%HAA!0<aZ0<YaR0aL0aFf0< a60a 0J@NuH?<?<?<NML`00<`A+C)0<QNuH`a@A?<Hy?<=NAP3LkA+akaNuA:\ARTPRINT.INF3xpNaa>@AH`?<Hy?<7AȾ/ pu(}ӂ, ]}( R, w}](u uw(|h kp d5 ]| 5c w|<v=  w( P pu(uv ]}( R w}* w݈" ]w(}Ղ* p m'zh Cza/J wz_)8s f8wLj) m ` ` ` ` 00000` ` ` ` ` 0`"@"@"@? " @`` " 00 @0?0 0 "`@``  "0?@ @0 " ?@@ " ?@@ " ?@@ " ?@@ " ?@@ " ?@@ " ?@@ " ?@@ " ?@@ " ?@@ " ?@@ " ?@@ " ?@@ " ?@@ " ?@@ " ?@@9  CqP" ?@z$ @E "u" ?}@%w>@o8cǜw}  <P" ?|@@w݈"7E@ (u" ?}@%>@0w݈"WE0  &vP" ?@z$@(0w݈"g  "0?@ @0aΞ18cǜ0w 0 "`@`` "0 @??0 " @``"@?"@"@"@"@"@? " @`` " 00 @0?0d 0 "`@`` $  "0?@ @0D$ ``" ?@@D$ " ?@@@UUUUD$ " ?@ ?@  D$ " ?@ ?@ D$ " ?@ ?@  D$ " ?@ ?@D$ " ?@ ?@ D$ " ?@ ?@D$ " ?@ ?@ D$ " ?@`@UUUUD$ ?``" ?@@@ UUUUD$ " ?@@@UUUUD$ " ?@@*UUUWD$ " ?@@D$ ?@0" ?@@D$ ?@" ?@@D$ ?@ct" ?@0oϐ@ctqD$ ?@u"" ?@(w@"uvD$ ?@t>>" ?@/p@"t0D$ @]R" ?@(w@"R vD$ "#" ?@0aϞp@c#vq $ "0?@ @0d 0 "`@`` "0 @??0 " @``"@?"@"@   ? ``  0? 0 0 ` `    0    ? ?? ?                      q ? ??1 ? ??1  q       ?@0     ?@  ";sA ?@8~  6uڊ%w  ?@E A *9< ?@ E A?? ?"uz_  @E A "udAg 9~      0 0 ` `  ??0 `` ?  ?`` 0?0`` 033  33 3030???3030???3030???3030???3030???3030???0?3030??S0S0?? ?N? >u "t;<#?u " Aܾ# 0`` ??0``? values for two printers are shown below, if no ARTPRINT.INF file is present the Panasonic values are used. PRINTER- Panasonic KXP1124 (24 pin) Microline MP192 (9 pin) Initialisation `," *O*m - ЭЭ"ҍ.A// Bg?<JNAO /<~?<HNA\Jg#-/<Q?<HNA\Jg#- /<~?<HNA\Jg~#-/<~?<HNA\JgX#-4#3$3 #3.3#3N3#3n3#3|3#33 3 3$33&33(33*N'3M3$33&33(33*N'33n3N#Xa!/<~?<HNA\Jg#-,/<?<HNA\Jgp#-0?<NNT#-`K.aha$C-$Ia"a a%a&By,a^aaa%a`aNua&a"BgNAaC-$Ia"~aa D/<;d?<NN\By-HBy-J3-L3 -Naaa%Ha! y,ma%3-83-<3=->3#-@ahJ@gBy,a#`n3A-83-<3}->3#-@a0J@g3,a#`43-83-<3->3#-@aJ@g3,a#f`3-83-<3->3#-@aJ@g3,a#,`3-83-<3>->3#-@aJ@g3,a"`Jy,f3-83)-<3>->3K-@a>J@ga"a`F3-83%-<3->3-@aJ@g y,fa"tah`a3-83Q-<3>->3s-@aJ@g a,` y,n3-83{-<3,->3-@aJ@g~Jy,gty,A-C-3-83%-<3->35-@3-B3-D3-Fa >By-HBy-J3-LBy-Na`^3-83-<3,->3-@aJ@g y,gxy,A-C-3-835-<3->3%-@3-B3-D3-FaBy-H3 -J3-L3 -NaX`3-83{-<3 ->3-@a2J@g~Jy,gty,A-C-3-83%-<3->3%-@3-B3-D3-FaBy-HBy-JBy-L3 -Na` 3.-83{-<3<->3-@aJ@g y,gxy,A-C-3-83%-<3->3%-@3-B3-D3-FaD3-HBy-J3-L3 -Na`` y,f3-83%-<3->3-@aJ@ga 3-83Q-<3>->3s-@aJ@ga a`3-83)-<3>->3K-@apJ@g< y,g y,g$y,``Jy,gy,`J y,f,3-83%-<3->3-@aJ@ga 3-83Q-<3>->3s-@aJ@ghA,09,H20 y,gRA|oBA`SAJAj2<1a *By-HBy-J3-L3 -Naha3-83)-<3>->3K-@aBJ@gD y,g y,g,y,a`.Jy,gy,a` y,f3-83%-<3->3-@aJ@ga3-83Q-<3>->3s-@aJ@gaa`3-83)-<3>->3K-@afJ@g< y,g y<,g$y,`VJy,gy,`@ y,f3-83)-<3>->3K-@aJ@gH y,g Jy,g2y,aaL` y',gy,aa,3-83y-<3>->3-@aJ@gaa`3-83Q-<3>->3s-@aPJ@gaVa`X3-83-<3>->3-@aJ@gpaK0@a6 y-8fVNuA-,C- y,mg y,mg*`2a`.aa &`"a,a Fa H`aNa`atNuaA-,C-3-83-<3->3-@3?-B3$-D3-Fa`3-83-<3->3-@3C-B3$-D3-Fa$ y,mg y,mgz`3-83(-<3->3(-@3C-B3L-D3-Fa3-83x-<3->3x-@3C-B3$-D3-Fa`3-83(-<3->3)-@3C-B3L-D3-FaH3-83x-<3->3x-@3C-B3$-D3-Fa `63-83(-<3->3)-@3C-B3L-D3-Fa3-83x-<3->3x-@3C-B3$-D3-Fa`3-83x-<3->3)-@3C-B3L-D3-FaP3-83x-<3->3x-@3C-B3$-D3-Fa`>3G-83(-<3->3)-@3C-B3t-D3-FaNu3,-83-Nu3,-83-3-<-@y -<y -@a3-H-83-J-<3-8->3-<-@y -8y ->a3,a3-H-83-J-<3-8->3-<-@y-<y-@a^3-H-83-J-<3-8->3-<-@y-8y->a"A409,H2040JAkFIJ69,89,KLCD68B%3->3-@3-H-83-J-3-@3-H-83-J-3-@a J@g:09,29,y-o$y-o3-3- ` 3,aJA309,H29-49-69-89- :9,<9,MNEFEFB%D%IJKL1111By-8By-3S-@3-B3-D3-FaNu09,29,A%49,69,JKBCHI|mT|nL| mD|n9,O22p0H29,IA@3,J@j D@|nȑy,2B@`|l|o2<@3,M,>9,O06pH29,IA@#,B,3,J@k@|lJ|o~3,,̰|odBy,,`P@ J@k 3,#,,̰|lBy,#,,2HHH$HP*H0HH@I-4I>4<FF09,zr6{8G4JEkBPFXSEQQ, M--"M09,29,468:<CDEFFQiiiYYYYQ,,QNu09,29,A%HIJ@kJAk|n| n3-H3-Jy,y,3-L3-NA549,69,89,KLy-Ly-N y-Lm 3-L y-Nm 3-NBC>2BD:@M<Cy,1PRDRAy-NoRCR@y-Lo09,29,HIy-Hy-J3-L3-N y-Lo 3-L y -No 3 -NaNu3-J-P3-P-JA509,y-Jy,y-HH20By-T|mA3-T4H„0@IJ3-83-<3-B3-D09-HH3->09-JH3-@3-F09-@@%3-@A-0Jy-TgA-4C-a Dy-J09-Jy-No$y-H09-Hy-LoNuA-0Jy,gA-4C-09,Jy,g@H2H3-<09,Jy,g@AH3-83->3/-@3-B3-D3-Fa Nua 3,ab09,Jy,g@H2H3-<09,Jy,g@AH3-809-829-< y,l 3,y, y,l 3,y,3->3-@3-8-83-<-<3->->3-@-@a3,aa 4NuC-0Jy,gC-4$Iaa aaaJy,ga y,gn y,m8 y,a By,3,3,Jy,g3,`|09,29,HI@Jy,gA3,3,3,a^aaVJy,gH09,29,HIHI49,Jy,gB6H„8BKL3,3,CoC@3,޲DoDA3,09,Jy,g@H249,Jy,gBAHJy,y,|?o y,޴|o y,`aVNuN&N'343$33&33(33*By3,H33N#3|N'33n-8N&N'Nu32B232323-82:a .32B232323-<2:a Nu/<.?<NN\Nu/<-?<NN\NuA;0<2< "y- 44JH4 AJ! QQNuB903,-83-A-I1B!TBg/<-?<ny-@npNu3232B2By23-82v3-<2x3->2z3-@2|anNu3232B2By23-82v3-<2x3->2z3-<2|3->2~3-@23-823-@23-823-<2aNu3 2B232323,2:aNu32B232323,2:a32B232323,2:a`32B232323,2:a4Nu3N3$33&33(33*By3,33NaNu3'2B23232By2:3232@32B32D32F32H32J32L32NN'32"3Jy2"gNu33$By3&33(By3*N'Nu3|2By232By232N'32,32,32,Nu32B2B2N'Nu?9-832v>9-<32xN'NuH3m232By232By2K0#2$K1#2(<<#03?0y030y0><30By030B0By0#13?1y131y0><31By131B1 By1$:9-B<9-D3-82v3-<2xy2x3-82zy2z3-<2|3->2~3-@2y23->2y23-@23-F2:N'LNu?<%NNTNu3|2B232By232N'Jy2fNuBy-^<9-< y'->g>9-8H`.9-8$JjB3-^.*m `dm d` m  `6C0I1B8HE QI1B>9-2QNuA-a y-"y-0aNuA-a y-"y-4aNuA-az y-"y-,aA;C;d"#h#h#h #h#h#h#hNuA-a( y-"y- 0<'2QNuaaTajaNua azaNuBg/?<=NAP3-Nu.<aX.< aNA1C;"#h#h#h #h#h#h#h y-"<}a$Nu.< aA1C;"#h#h#h #h#h#h#h.<aaNuaa~a y-Hgalay-HJy-Hj` y-"<}aBy-HBy-JBy-La>JAf aza"y-J09-Py-JfNu |-Nua"P09-Jy-H29-Th3-V3-X3-Z3-\Nu y-09-Jy-HNu"y-09-L3-V3-X3-Z3-\09-Ly-N3-LNu><y-NHaA13-H3-J3-V3-X3-Z3 -\Nuan y-09-L111109-Ly-N3-LNu y-09-J0HNu y-09-J y-Hf S@Nua"P09-J29-Th81:1<1>1Nu y-09-L1-H1-R1-V1-X1-Z1-\ 09-LX@y-N3-LBy-HNua."P09-J29-Th3-V3-X3-Z3-\Nu3-N3-P3-TNu y-0<>BXQNuC1/ /?9-p??NA Nu//?9-0<??NA Nu?9-?<>NAXNu-x-z-|-~-- SPRITES0.CPTSPRITES1.CPTCARS.CPTCOLLISIO.DATEDITMENU.CPTTRAC0000.DAT"3DUfpP0wpP0pP0wU3P0"wfU  [1][ Hot Wheels | Track Editor | (c) John Gymer 1991 | Kingfisher Software ][ Great! ][1][ | Cover Whole Track | with current sprite... | Are you sure? ][ Ok | Cancel ][1][ Can't use drones yet... | The Route Marker entry | after the last used | Route Marker must be | Deleted to mark end! ][ Rightyho! ][1][ Can't use drones yet... | You haven't set any | Route Markers! | (Must start at Route | Marker 0) ][ Ok Cobber! ][1][ | Quit Track Editor... | Are you sure ? ][ Ok | Cancel ][1][ | Save Track... | Are you sure ? ][ Ok | Cancel ]That track doesn't exist!@V&&&*& 4            .       L                 "       "  &     24  &`      2 *     <2 *                         $    .   "          "     F     4 :2P        j_k182X9x?6eϺ*2COgZ@7gId9zrgpk"oI%fMY@Sv*\Y{St{ed4!z-ˉ+Mn^%JGn|\DѾYwK9>1݃cwpN֢]AᩯNg-.]+ibϽ!l$6vWOQJ6Uqc#GN}"nZ8+VV`w]QwS׈NH{O-ѿk%P8Isy8lFL*hF+?ؗ5H0>7ϕoltṙ"/UI͟(0VhvS8Q٩QtSrޜ[1bycҺqaץÔ>GSÖφ[g8#grcog7R8oKogy r Hot Wheels Track Editor Documentation by John Gymer Kingfisher Software All Rights Reserved written for Atari ST User June 1991 To load the Track Editor double-click on the file "EDITOR.PRG" and wait for it to load. Follow the prompts until the editor screen appears. Operation of the Editor is through the mouse. MODE ICONS Along the top of the screen are the 5 Mode Icons. From left to right... 1: Background editor 2: Check Point editor 3: Car Positions 4: Route Marker editor 5: Disc options The options for each of these modes appears down the right hand side of the screen. The bottom right icon (QUIT) exits the program. If you choose to Quit it is best to reboot completely rather than using this option - don't ask me why... it works perfectly from DevPac2! I will now attempt to explain each of these modes... drum roll pleeeeze...! BACKGROUND EDITOR There are 3 icons associated with this mode... 1: Choose icon - this brings up the Sprites screen from which you select what you want to draw onto the track - like a paint brush. Alternatively, you can press the right mouse button while the mouse pointer is over the track display to bring up this screen. More than one icon may be selected at a time by dragging the box over the ones you want. There are 2 Sprites screens which you can select between to grab the various sprites. Click on the bar at the bottom of the Sprites screens to swap between the two. 2: Cover - this option allows you to cover the whole of the track area with the current sprite. An Alert box appears to check that you really want to do such a drastic thing! 3: Move Arrows - allows you to scroll around the track area. NOTE: when designing tracks always remember that collision detection works on anything GREEN. CHECK POINT EDITOR Check points are areas into which the cars must go in order to complete a lap. They are set in ascending order ALWAYS starting from 0. Cars MUST travel through these areas in the right order. There is provision for up to 31 Check Point areas. To select a Check Point area on the track simply click on the track and drag the box which will appear until it is the size you want. NOTE: Make these boxes sufficiently large to ensure that a car is detected when it passes along that section of the track. NOTE2: Before you run the Game program "HOTWHEEL.PRG" ensure that AT LEAST ONE Check Point is set. The icons concerned with this mode are... 1: Check Point number - select which Check Point you are editing by clicking on the left and right mouse buttons to decrease and increase the value by one respectively. 2: Delete - Once you've set all the Check Points for one lap you MUST move onto the Check Point after the last one you used and Delete it using this button. This acts as a marker for the last Check Point so the the game knows when a lap has been completed and starts detecting from Check Point 0 again. 3: Move Arrows - allows you to scroll around the track area. CAR POSITIONS Using these options you can position the 3 cars anywhere on the track. This controls where they start at the beginning of a race. To position a car on the track simply click on the track area. The car will appear at that position. Take care to position them on the track and not on any GREEN areas! The icons concerned are... 1: Car - select car 1, 2 or 3 to position. 2: Direction - select with the left and right mouse button what direction the current car will face at the start of a race. 3: Move Arrows - allows you to scroll around the track area. ROUTE MARKER EDITOR This is similar to the Check Point Editor but is used to control the route that the drones take around the track. Only 1 route can be created which MUST ALWAYS start at Route Marker 0. To place a Route Marker on the track simply click on the track at the desired position. A cross-hair cursor will appear on the track at that position with red lines pointing in the direction of the previous Marker and also the Next Marker so that you can judge whether you've put them in the right place or not. Make sure that the lines don't go too close to the edge of the track or else the drones are likely to get stuck! NOTE: At least one Route Marker MUST be set if drones are going to be used or else how do they know where to go?! NOTE2: It is sensible to place Route Markers fairly close together or the drones will become stuck on the edge very easily. The icons concerned with the Route Marker mode are... 1: Route Marker Number - select which Route Marker you wish to edit. 31 are provided. 2: Delete Route Marker - this option is used to mark the end of the Route Marker list. Once you have selected the last Route Marker, increase the number by 1 and Delete it. YOU MUST DO THIS! If you don't, the drones will not know where to go after the last one! 3: Move Arrows - used to scroll around the track area. DISC OPTIONS To load and save tracks from the disk you must use the icons which appear for this mode... 1: Track number - select which track you want to load or save. Range is 0 to 9999 although I can't really see you making that many!! The files created are named "TRACxxxx.DAT" where "xxxx" is the four digit track number eg. 0001, 0002 etc. 2: Save Track - click here and an Alert box will appear to make sure that you really want to Save that track. Click on OK to save or Cancel to abort. 3: Load Track - click here to load a previously saved track from disk. You can also load in the ready-made tracks and edit those! TECHNICAL GUMPH All files which are in the "HOTWHEEL" folder must remain in the same folder or else the programs may not work correctly. The whole folder may be moved to a RamDisk or HardDisk from which they should run perfectly. The picture files are in Compact Format which is used by Microdeal's Canvas Art Package. If you wish to add some more icons to the editor screens you must load them into Canvas. NOTE: Icons must be on a 16*16 grid like the ones supplied. Only use the colours used on the current "SPRITES0.CPT" and "SPRITES1.CPT" screens (8 colours - greys, white, black, light blue and greens). If you use more, they simply wont be displayed when you run the game. Thanks to HiSoft for the incredible DevPac 2 assembler! Thanks to my brother Simon and his mates, Squirt and Womble, for play testing and creating some of the tracks. R&ynƒIIu4׬0 Wb0œb+ῴ,px4^Aʺ$9c2A[_ -ls \?Џ8ъS>N_fjM &KJ+wQOa Swzh}G]vx^k=:,Ms,;G53UwpP0pw3G[o    & :Pdz".6BJV]gq{/CNWku )1=EQYemx  I^r        ' ;Pdx'/;COWcw  4?H\p{    $ . 8 D J V ^ j r }               $ 3 9 M a u             # . 7 @ B J V ^ j r ~               / : C W k v           ),3=GQZfmy   `?#w@8>sC@ ;p@C~><8?yx?7x `?  ?;?0>3 /?~(>'?A`X/"7߿ ? A0~|_ .7>??~@?< P???????<H>? > o| @ ?7?P|v@@@<?@????????0<` ?`A u?0??  @A??? Btr 0?}d@@?? 3I @'0 ˆ<@R?@nc@@>~ /P0@>~<0 @g`~  x   @> t 2 @ @ > ,` 1@ 0 >  `0!>?  W 0`00>   .80>?0 ?C`!` D<8 0 ?MCa?0 ? O`  0x@@C@`q0 .A| @D9Oð<` gp` e #x|>?  ??8?pp??8 `n>8  p??sxx@^@?@@ {<0?@`@@ F" ??}01 p P? }` h@?e/0| O ! ?|?o?|> a@+4?<| CD @ /AF ?~DK?>@G ??|E @?*5@@@  ??G?#|`0? ``c? ?@0@ `  @ |18D# >H A`_ 0 (n, D@0>@@ ?gO A@@0 0(? y| Ø<` !D@|~ f@?A0>B  Ca >@G 0 @`@3? !@@0 @@?@ G #?00@_?0?`n0>A p"3<?  .g  w? @@q>`@ ``g='? ɀ@07'@07 7l@0x?18$?@~@E` 4p@:g @@`? l x=`?#w@8>8sC@ ;p@C~><>8?yxx?7x `??  ?;??0>3 /?~(>'?A`X/"7߿ ? A0~|_ .7>???~@|?<?  P??????>H|? >> ?o| @ ?7??Pv@@>?@??????0<` ?`A u?0???  @A???? Btr 0?}d@@??? 3I @'0 ˆ<@R?@nc@@>~~ /P0@>~~<0 @g`~~  x   @>> t 2 @ @ >> ,` 1@ 0 >>߀  `0!>>?  W 0`00>>   .80>>?0 ?C`!` D<8 0 ?MCa?0 ? O`  0x@@C@`q0 .A| @D9Oð<` gp` e #x|> ?.N\/9N"X/9N"X`"?.NT??.?. ?.NP` nfHnHy2.A H҈0. @HЁ @HhNlO ?.NBT @'f2?.?. ?.N"F\/9N"X/9N"X`"?.NBT??.?. ?.NPN^NuNVN?<NT?<NTJ@fHy?<N\0<`JyYgJyYfaLJyYgJyYfaMBByYByYByYByYByYByYByXByXByXByXBy^@3^BBy^FBy^>3^DJyXg 3^DaAaA4aDBy]By]By]By]By]By]By]By]By]ByX~ByXByXCY`EY`aIaHCYdEYdaIaHa?.a@aIna+la;.ByYHByYJByYLa #YdY#Y`Ya+XAXCY !i!i!i 1iByXByXByXByXByXByXByXByXByXByXByXByXByXByXByXByXByY:ByYByY@ByYBByXlByXdByXfByXh3XjByXn3Xp3XrJyYRgByXpByXrJyXgByXpa:a="yY` yYdaIa)a;6By]By]By^By]By]By^By]By]By^JyXfJyXnf 3]]3]]3]^aByYNaXa JyYZga!a!a"HJyYXgaa6aFa aTa#a$a&$aaja`JyXpf 3]]3]]3]^JyXnf 3]]3]]3]^aaaJyYZga la a!JyYXgapaaaaa#a$@a%xaa"aada(8JyYNgaa*aFJyXlfDJyXngJyXpgJyXrg 3Xl yXg( yXg`yXl yXlma9aAa=ta=PNuJyYPgX3]X3^X3XX3XX3XdX3XXa3XX3X]3X^3XXdJyXf JyYRgj3XX3YX3]X3^X3XfX3XXa3XX3X]3X^3XXfJyYRgj3]X3^X3YX3YX3XhX3XXa,3XX3X]3X^3XXhNuAaLB@2I4060JBkNyXږyXJBjDBJCjDC|n |nJyXf3 X` @|?mJyXgDByXByX yXn 3XyXyXJyXj yXNuJyYRgJyXfnBy^JyXpf^3^3XX3YX3XX3Y@YDa3YDY@3XX3XY3XXBy^JyXrf^3^3YX3YX3XX3YBYDa,3YDYB3XY3XY3XXNuAb09YDH2040JAj ByYD`68yXژyX:<JCjDCJDjDD|@n|@n yYD`68JDf3XJCj3XJCjDCJDjDDdBG| mL~|mB~|5m8~|Rm.~|zm$~|m~|Jm~|m><JEj&JFj<< G>| mBG`G`JFk <<G><:9XޜE|lF |oF JFkyX`yX`JyXj 3X yXoByXNuAa09Y:H20406080:9X<9XAm@Bm:Cn4Dn.yY: pfByY:yYHa3YN09Y8yYHfJyXnf3XjXnyXjNuJyXf JyYRgnAa09YBm8Cn2Dn,yYH20406080:9Y<9YAm@Bm:Cn4Dn.yY> pfByY>yYLa83YN09Y8yYLfJyXrf3XjXryXjNu3YHZ<3Z@a?I_3BZ<3Z@a?JyXf JyYRg23YJZ<3Z@a?dI_3Z<3Z@a>JyYRg23YLZ<3Z@a?*I_3Z<3Z@a>Nu yY0<H(((((( ( (QNu"yY09XH@2@@4BAIGYpI s09XH@K09XH@H$HRJBgRZ0<2<RRRRRRBBQBBQNu"yY09XH@P2@@4BAIGYpI s09XH@K09XH@PH$HRJBgRZ0<2< RRRRRRBBQ~~PQ"yY09XH@P2@@4BAIGYpI s09XH@K09XH@PH$HRPJBgRZ0<2< RRRRRRBBQ~~PQNuJyYRgabEL09XH"r yYh09XH29XIA@K@09XH29XIA@@2HHH$HP*H0HH@I[4I>4<FF0<aV MYhY"M0<r468:<CDEFFQiiiYYYYQQNu6{8G4F06{8G4F06{8G4F06{8G4F06{8G4FX6{8G4FX6{8G4FX6{8G4FXQ|NuEL09XH"r yYh09YH29XIA@K@3XJ@j D@|nyX2B@`|lr|vo2<@3X09XH29XIA@@#XBX3XJ@k@|?l|o~3XX|/odByXX`P@ J@kؑ3X#XX|lByX#XX2HHH$HP*H0HH@I[4I>4<FF09XaX MYhY"M09X29X468:<CDEFFQiiiYYYTQXXQaNuEL09XH"r yYh09YH29XIA@K@3XJ@j D@|nyX2B@`|lr|vo2<@3X09YH29XIA@@#XBX3XJ@k@|?l|o~3XX|/odByXX`P@ J@kؑ3X#XX|lByX#XX2HHH$HP*H0HH@I[4I>4<FF09Xa&X MYhY"M09X29X468:<CDEFFQiiiYYYTQXXQNuEL09XH"r yYh09YH29XIA@K@3XJ@j D@|nyX2B@`|lr|vo2<@3X09YH29XIA@P@#XBX3XJ@k@|l|o~3XX|odByXX`P@ J@kؑ3X#XX|lByX#XX2HHH$HP*H0HH@I[4I>4<FF09XaNX MYhY"M09X29X468:<CDEFFQiiiYYYTQXXQaNuEL09XH"r yYh09YH29XIA@K@3XJ@j D@|nyX2B@`|lx|vo2<@3X09YH29XIA@P@#XBX3XJ@k@|l|o~3XX|odByXX`P@ J@kޑ3X#XX|lByX#XX2HHHP$HP*H0HH@I[4I>4<FF09XalX MYhY"M09X29X468:<CDEFFQiiiYYYTQXXQNuJyYRga:aEL09XH"r yYh09XH29XIA@K@09XH29XIA@P@2HHH$HP*H0HH@I[4I>4<FF0<av MYhY"M0<r468:<CDEFFQiiiYYYYQQaNuEL09XH"r yYh09YH29XIA@K@3XJ@j D@|nyX2B@`|lr|vo2<@3X09XH29XIA@P@#XBX3XJ@k@|l|o~3XX|odByXX`P@ J@kؑ3X#XX|lByX#XX2HHH$HP*H0HH@I[4I>4<FF09XaX MYhY"M09X29X468:<CDEFFQiiiYYTYQXXQNuaEL09XH"r yYh09YH29XIA@K@09XH29XIA@P@2HHHP$HP*H0HH@I[4I>4<FF0<a MYhY"M0<r468:<CDEFFQiiiYYTYQQNuEL09XH"r yYh09XH29XIA@K@3XJ@j D@|nyX2B@`|lx|vo2<@3X09XH29XIA@P@#XBX3XJ@k@|l|o~3XX|odByXX`P@ J@kޑ3X#XX|lByX#XX2HHHP$HP*H0HH@I[4I>4<FF09XaX MYhY"M09X29X468:<CDEFFQiiiYYYYQXXQNu09X4<B 6<@C@ 3X y Xo(3@X yXlHÀH@3X09X4<B@6<C @@3 X y@Xo(3X yXlHÀH@ 3X yXl 3X y@Xo 3@X y Xl 3 X yXo 3XNu09X4<B 6<@C@ 3X y Xo(3@X yXlHÀH@3X09X4<B@6<C@@3X y@Xo(3X yXlHÀH@3X09Y4<B 6<@C@ 3X y Yo(3@X yYlHÀH@3X09X4<B@6<C@@3X y@Xo(3X yXlHÀH@3X yXl 3X y@Xo 3@X yXl 3X yXo 3X yXl 3X y@Xo 3@X yXl 3X yXo 3XNuJyXf JyYRg 3XX3XX3XX3YX3XX3XX3XX3XX3XX3XX3XX3XX3X~Xa3XX~3XX3XX3XX3XY3XX3XX3XX3XX3XX3XX3XX3XXNuJyYRg 3XX3YX3YX3YX3XX3XX3XX3XX3XX3XX3XX3XX3XXa3XX3XX3XY3XY3XY3XX3XX3XX3XX3XX3XX3XX3XXNuJyYRg 3XX3XX3YX3YX3XX3XX3XX3XX3XX3XX3XX3XX3XXa3XX3XX3XX3XY3XY3XX3XX3XX3XX3XX3XX3XX3XXNu<9XN>9XO29XI49XJFGJAjDAJBjDB| n | o<9XNF>9XOGA[09XHHp269XKCC469XKCCFmhGmb8:D E DlPElJFGCc89XLH8Lq@m(q@n 8Lq@mq@n`QrByX`3^F3^:3^>3^HyX yXo3X`VJyXfLJyXfB09X29X49X69X3X3X3X3X3X3XNu3XX3XX3XX3XX3XX3XX3XXa3XX3XX3XX3XX3XX3XX3XXNuJyXf JyYRg3XX3XX3XX3XX3YX3XX3XXa3XX3XX3XX3XX3XY3XX3XXNuJyYRg3XX3XX3XX3YX3YX3XX3XXaJ3XX3XX3XX3XY3XY3XX3XXNuJyXfJyXfA[09XHHp429XIAA629XIAA"yYp8L:MME6<B8:<lmnDEFMNDE|l Q`j3X09XD@3X09XD@3X3X3^F3^:3^>3^H` yXNuyXJyXj:3X09]yXJyXj 3X yXoByX3^X3XX3XX3XX3XX3XX3YY03YY23Y*Y63Y$Y4JyXf,JyXg"JyXg yXJyXf`ByXaJyXg yX3XX3XX3XX3XXNuJyXf JyYRg(yXJyXj:3X09]yXJyXj 3X yXoByX3^X3XX3YX3XX3XX3XX3YY03Y Y23Y,Y63Y&Y4JyXf,JyXg"JyXg yXJyXf`ByXapJyXg yX3XX3XY3XX3XXNuJyYRg(yXJyXj:3X09]yXJyXj 3X yXoByX3^X3YX3YX3XX3XX3XX3YY03Y"Y23Y.Y63Y(Y4JyXf,JyXg"JyXg yXJyXf`ByXa>JyXg yX3XY3XY3XX3XXNu<9X>9XJyXgAY09XH2040Y4Y489Y0:9Y006J@jD@JCjDC@o89Y606J@jD@JCjDC@o:9Y6AgmDAl<` DAo<BgmEBl>` EBo>3X3XyXyX`nJFg&jyY2JFkBF`yY2JFjBFJGg&jyY2JGkBG`yY2JGjBG3X3XyXyX yXl 3X yXo 3X y Xl 3 X yXo 3XNu#YZ<#YY#Z<YEYCYaa6NuByX?<?<NMXJ@g?<?<NMXH@3XNu yY"yYd]0<2QNua|3ZL3ZN yY09ZNyZLH20|4fJyYPf2< yY|m yYA4H„0@JIH"yYp09ZN 09ZL0<23h3hQyZNJyZNjHyZLJyZLj.a a8adNu yYp"yYt$I]0<<<>FG2Y4GZF2QNu yYp"yYx$I]0<<<>FG2Y4GZF2QNu yYp"yY|$I]0<<<>FG2Y4GZF2QNuAaL0<?0QBBAaL"yY0<2<6@K810|4f(68KL^C^DKL:M1P1PRB|?g QQNu3XX3XX3XX3XXAY09XH2040JAjDAJBjDB69X89XJCjDCJDjDDY$Y$CAB Bo$3 ^F3^>3^<^:3^HAY09XH2040JAjDAJBjDB69X89XJCjDCJDjDDY&Y&CAB Bo$3 ^F3^>3^<^:3^HNuaJyYgJyYfa4 yY"yY`a@CY`EY`aaJyYTga JyYVga RJyYXga JyYZga JyYPga JyYRga @aaa3}XtajafJy]f Jy]g aaJy]ga3Z<3;Z@3MZB3fZDaJ@gJyXgByXaa3QZ<3;Z@3ZB3fZDaJ@gJyXf3XaHa|3Z<3;Z@3ZB3fZDaJ@g yYTaaB3Z<3;Z@3=ZB3fZDaHJ@g yYVaa3Z<3kZ@3MZB3ZDaJ@g yYXa a3QZ<3kZ@3ZB3ZDaJ@g yYZa 0a3Z<3kZ@3ZB3ZDaJ@g yYPa aZ3Z<3kZ@3=ZB3ZDa`J@g yYRa a 3MZ<3Z@3rZB3&ZDa&J@gB3ZL3(ZN3Y0ZF3XZH3ZJ3ZDa 3ZFY03Z<3Z@3ZB3&ZDaJ@gB3ZL3(ZN3Y2ZF3ZH3ZJ3ZDa 83ZFY23Z<3Z@3ZB3&ZDaRJ@gB3ZL3(ZN3Y4ZF3ZH3ZJ3ZDa 3ZFY43Z<3Z@33ZB3&ZDaJ@gB3ZL3(ZN3Y6ZF3ZH3ZJ3ZDa d3ZFY63Z<3Z@3ZB3ZDa~J@gB3ZL3cZN3Y8ZF3ZH3ZJ3ZDa 3ZFY83 Z<3Z@31ZB3&ZDaJ@g09XzHAY1Y0AY1Y2AY$1Y4AY*1Y63ZL3ZN3XzZFyZF3ZH3ZJ3ZDa H3ZFXzyXza3QZ<3Z@3ZB3ZDaVJ@g$yY\ yY\oByY\a a3Z<3Z@3MZB3ZDa J@g$yY^ yY^oByY^a Ba3Z<3Z@3=ZB3ZDaJ@g^a09XzHAY1Y0AY1Y2AY$1Y4AY*1Y6NuJy]g09]yXxJy]g2JyXxfJy]kyXx`09]yXxJyXxjByXx yXxo 3Xx <PSJjNu3XaA^j09XxH3Z<3Z@3ZB3ZD29ZByZI_3XZ<3Z@aNu3Y2Z<3Z@a I_3Z<3Z@ajNu3Y4Z<3Z@aI_3Z<3Z@a8Nu3Y8Z<3Z@aI_3Z<3Z@aNu3XzZ<yZ<3Z@anI_3Z<3Z@a09XzHAY3Y0AY3Y2AY$3Y4AY*3Y6aaaaNu3Y6Z<3Z@aI_3Z<3Z@aJNu3Xa3Z<3;Z@3MZB3fZDJyXg3QZ<3ZBayZ<yZ@yZByZDa3Xa&Nu3Xa3Z<3;Z@3MZB3fZDanyZ<yZ@yZByZDaJ3QZ<3;Z@3ZB3fZDa&yZ<yZ@yZByZDa3Xa|Nu3Xan3Z<3;Z@3ZB3fZDa yZ<yZ@yZByZDa 3XaNu3Xa 3Z<3;Z@3=ZB3fZDa byZ<yZ@yZByZDa >3Xa Nu3Xa 3Z<3kZ@3MZB3ZDa yZ<yZ@yZByZDa 3Xa VNu3Xa H3QZ<3kZ@3ZB3ZDa yZ<yZ@yZByZDa z3Xa Nu3Xa 3Z<3kZ@3=ZB3ZDa <yZ<yZ@yZByZDa 3Xa Nu3Xa 3Z<3kZ@3ZB3ZDa yZ<yZ@yZByZDa 3Xa 0Nu yY"yY` 0< 2QNuCYdEYda JyXfaߴa^aJ`aaaaA,1|a3^6 yYdH$yY`a3^6A,1|at yYdH$yY`ah3^6 yYdH$yY` aD yYd"yY`aCY`EYda a 8By^6ByYFNu/<,?<NN\Nu0< !j!j!j Q <SJjNu yXgn yXgbJyXgR3YFa aa ?<?<NMXJ@g?<?<NMX`Jy]f Jy]gaaByYFNu yY` <>BXQajJyYgJyYfa< yY"yY`0<>JyYRf0<)JyXf0<2QEY`CY`a A_C[tE !j!j!j !j!j!j!j1i1i1i 1i1i1i 09Y^29XnSAIA111JyXg,09Y\29XpSAIA111/<_?<NN\a (a .Jy]ga "Nu3}XtJy]g09]yZF09ZFyZLl09ZLyZNo09ZN3ZF3ZFZ<3ZDZ@a I_3ZHZ<3ZJZ@a 2a. yXtg3Xt` 3}XtJy]f\Nu09XtHSJy]gJjNuA_C[tEG, !j!j!j !j!j!j!j09Y\1q1q1q09Y^1q1q1qJyXf1i1i1i &'h'h'h 'h'h'h'h/<_?<NN\a tNuA_C[tE !j!j!j !j!j!j!j09Y\1q1q1q09Y^1q1q1q/<_?<NN\Nu/<[T?<NN\Nu/<^?< NN\Nu/<^?< NN\Nu/<H?<&NN\Nu/<H?<&NN\Nu#pL #HpNu#L pNuHJy^6kgJy^8kpg y^8Jy^8n3^6`N3-^809^8Hpy^6HR@  `xJyYFf yXlm6  `.JyYVgJy^Fg09^:29^F>9^HiA2@IA09^FH@ y^>Jy^>jD3^>y^F y^Hf( y^FlBy^F` JyYTgdJy^@fv09X29XJ@jD@JAjDAA62<4@4AJB8<|Pl8< `y^@>9^Dy^@lBy^@JyXgJy^Bfv09X29XJ@jD@JAjDAA62<4@4AJB8<|Pl8<  ` y^B>9^Dy^BlBy^BLN/<[4?<NN\NuAL0<2< "yYl44J4 AJ! QQNu?<"NNT @#^2#] M>#]!|M>#]!|M>#]!|M>#]!|M@#]!|M>?<?<?<NM\?<?<?<NM\Nu?<?<?<NM\?<?<?<NM\ y^2!y] ]!y]!y]!y]!y]NuNuH(H@HC^3]3](HH3](HH@C^3]3](HH3]LNuB9[3XZ<3Z@aAZI_!TBg/?<=NAPJk@3Z yY"<a >AY"<a .Aa"<a a 4`HCY`EY`aaaIZ32Z<3`Z@a[?<?<NMXNuAZaAc"< a a NuB@29X49XֲyZ3Z@`@3ZB`B3ZD`D3Z<`F3ZD`H3Z<`J3Z@`LalNu3 _B_3_3_3X_a>Nu3'_B_3_3_By_3`NR3_B_3_3_3_NRNu#__#__#`:_#`v_#`_3d_By_3 _3`_3_3`3`3`3`3`3` 3` 3`3`3`NR3_`Jy_g9Z<3`:>9Z@3`9Z9Z@RGH@JyZbgI_ 0g  `-Nu3{_B_B_By_NRNu3z_B_3_By_By_NRNu#``"<` <NBNu3`_#__"<_ <sNBNu3e_B_B_NRNu0<>2QNuAZa yYd"yYaA,C"#h#h#h #h#h#h#h3YNuAZa yYd"yYa3YNuAZar yYd"yYa`A,C"#h#h#h #h#h#h#h3YNuAZa yYd"yYaA,C "#h#h#h #h#h#h#h3YNuAZa yYd"yYa3YNuAZa yYd"yYa3YNuAZar yYd"yYl0< ""QNuaJyYfaJyYfaFJyYfaJyYfaJyYfaJyYfafNua aaRNuBg/?<=NAP3ZNu.< aA_FC,"#h#h#h #h#h#h#h.<aaNuaa~a yZLgalayZLJyZLj` yYh"<}aByZLByZNByZPa>JAf aza"yZN09ZTyZNfNu |YdNua"P09ZNyZL29ZXh3ZZ3Z\3Z^3Z`Nu yY`09ZNyZLNu"yYh09ZP3ZZ3Z\3Z^3Z`09ZPyZR3ZPNu><yZRHaA_F3ZL3ZN3ZZ3Z\3Z^3 Z`Nuan yYh09ZP111109ZPyZR3ZPNu yY`09ZN0HNu yY`09ZN yZLf S@Nua"P09ZN29ZXh81:1<1>1Nu yYh09ZP1ZL1ZV1ZZ1Z\1Z^1Z` 09ZPX@yZR3ZPByZLNua."P09ZN29ZXh3ZZ3Z\3Z^3Z`Nu3ZR3ZT3ZXNu yY`0<>BXQNuC_F/ /?9Zp??NA Nu//?9Z0<??NA Nu?9Z?<>NAXNu}  Z|Z~ZZZZ SPRITES0.CPTSPRITES1.CPTCARS.CPTCOLLISIO.DATMAINMENU.CPTPREFMENU.CPTPANELS.CPTFINISH.CPTTRAC0000.DATThat track does not exist!@"3DUfpP0wpP0pP0wU3P0"wfU                              dWChC,C 2'Ls'''4':NgP:g:g:>gjNPjjj>NP>  V&&&&* & & &  &  &  & &"   *&            "       :  >        &          ,(                   L \ ` h * *      2 *      2  *      2 *     $ 2  *P *      2 0L *     $ 2                         , 6B        V                    J    , ( 0 ***T                                                               *    H 4    V       2H2  ,< > 2      6    J      "  F   4    4  4      *P        ϟOְ1@~L[68Ab#==V* 9o4y# Z98/@bE6>S=>Wg}g&_G[goTz't [aeiy\Jo;vSO|?+%+ (rܸF%/w߁F,0~ Hot Wheels Game Documentation by John Gymer Kingfisher Software All Rights Reserved written for Atari ST User June 1991 Hot Wheels is a fast action car racing game in which you take the wheel of a spanking new Ferrari 348. One player can practice a track on their own or race against two computer-controlled drones. Alternatively, two players can compete at the same time using a split-screen display (a la Super Cars 2). In two player mode one drone can be added to the race. To play Hot Wheels, double-click with the left mouse button on the program named "HOTWHEEL.PRG" and wait for it to load. Hot Wheels will run on any ST but if you have 1 meg memory or more, there will be MUCH less disk accessing. THE MAIN MENU There are 4 icons on the Main Menu. From left to right: 1: Play Game - this loads in the current track from disk (floppy / hard / ram disks all work) and begins a game. The default game is a one player game with 2 drones which takes place on Track 0. 2: Track selector - this option allows you to choose a new track to play on. To change the value, move to that icon (the border of the box will flash), hold down the joystick button and pull up or down. 3: Preferences - this icon takes you to the Preference screen where you can set up various race parameters. 4: Quit - Exits the game... NOTE: on some versions of TOS it is best to reboot completely rather than using the Quit option! PLAYING THE GAME Once you have clicked on Play Game from the Main Menu the selected track will load. The track will appear with the race starter lights in the middle at the top of the screen. When the light turns green... you're off! To Turn move the joystick Left or Right. The Fire Button is for accelerating. To brake simply let go of the Fire Button. Beware of bumping into other cars as this will slow you down A LOT! Bumping into the grass will have a similar effect. Avoid oil slicks if they appear on the track or else you'll spin out of control! When you finally complete a race (all cars must complete a fixed number of laps which defaults at 5 laps) the order of cars across the line will be shown on a separate screen. To Pause the game press any key. Any other key OR the fire button will unpause it. To Abort a game press Escape OR Q. THE PREFERENCE MENU There are 16 options on the Preference Menu. From left to right and top to bottom... NOTE: CHANGING A VALUE - any option which contains a number can be changed by selecting that option (border of option will flash), holding down the Fire Button and moving the joystick up or down. 1: Car number - this can take the values 1, 2 or 3 which select the car you wish to set up. The individual settings for the car selected will appear in the next 4 options once you release the Fire Button. Car 1 is for Player 1, Car 2 is for Player 2/Drone 1, Car 3 is for Drone 2. 2: Acceleration - the higher the value here the better the acceleration of that car. Values range from 1 to 40 but between 10 and 20 is recommended. 3: Brakes - the higher the value the better the brakes of that car. Range is 1 to 40. 4: Top Speed - the higher the value the faster the top speed. Range is 1 to 40. 5: Traction - the higher the value the better grip that car has. Making the traction less makes the game more fun to play?!!! 6: 1 Player Mode - Joystick 1 will control car 1 and any other cars will be computer controlled drones. 7: 2 Player Mode - when a game is started the track screen will be split into 2 with Car 1 (Joystick 1) on the left and Car 2 (Joystick 2) on the right. 8: Engine noise - selects whether the engine can be heard or not (for if it becomes a bit of a dank-horse-windy-crank-earache!). 9: Sound effects - turn the screeches and the bump sound effects on or off. 10: Car collision detection - fed up with being bashed around by the other cars? No need to worry if you turn this option off... boring! 11: Edge Detection - detects whether the car bumps when it hits any green areas. If you turn this off you can go anywhere on the screen! However, you'll still have to follow the track route or you wont complete any laps! 12: Oil slicks - some tracks may have oil slicks dotted about. If you turn this option off the oil slicks will not appear... boring again! 13: Drones - selects whether or not there are any computer-controlled cars racing against you. When this is switched on the number of cars in a race is always made up to 3 ie. in 1 Player mode there are 2 drones, in 2 Player mode there is only 1 drone. 14: Player 1 Car Colour - select the paint job on Player 1's Car. 15: Player 2 Car Colour - select the paint job on Player 2's Car. (Drones are always green). 16: Laps - the number of Laps in a race. Range 1 to 99. 17: Exit - returns to the Main Menu where you can start your race. GO FOR IT! If you get bored with the tracks supplied you can always create your own using the Track Editor program "EDITOR.PRG". Documentation for that program is in a separate file. Nothing more to say about the game itself... have fun! Ui3mZhAh/}>l 7?_apvj|n~~>egCYޕޮy~gYk9}᪥ަg.v?M?NMbsof{U?}B=#H67axh `Q\mv{G^[>gjO83Ǚ_pb!:,'X_J:;#m?Wy{;~WM~S߻sXNn}zL7Vf95ɜgב=yԼ}zl }s~lOScpǬ:-Tuv8n-F77>O^O5Ό{{.h%%Tx)4lA#>F.~_o+_vS%zGDS78Lo6PM)oy d \Kg| ]NƢ\KᡬE?[:7>[{Qv2>ƨV JH9c#Q\:scXO4{~G[B*q\_=l魁s"p2UD""3fD`Uw#'*.37;>BGKORW[_cfkoswz'+;?OScg{/CWk /3?CGW[ko #7K_s #'*.37;>BGKTO<<xxxxxx #'7;KO_csw<<2   * = Q et5x    qz~  DDDDDDDDDDDD   UUUU UUUU UUUU $ . 4 8UUUU HUUUU L U ] `UUUU iUUUU qUUUU t }         ª    ػ ỻ      ( 8 < L P _ dDD l x   UU     UU   ȪUU  UU         % 3 9 G M [ a o u                # ) 7 = Q ` e m s                  ! ' - ; A O U c i w {          "*>Rfz   *>Rcf(ww???? @@@@ @@@@???? AAAA`!!!!CCCCa###?#GGFG 1?b''&'OOLO ? qq"''$'NNDIO  qq"&&%'LLDKO  <<??qq"&&%'?LLDKO  qq"&&%' 'LLDKO  qq"&&%'LLDKO  @@??qq"&&%'  LLDKO  13 ??qq"&&%' LLDKO  qq"&&%'LLDKO  qq"&&%'LLDKO  33qq"&&%'LLDKO  ??qq"&&%'?LLDKO  qq"&&%'?LLDKOp  qq"&&%'p?LLDKO<  qq"&&%'?LLDKO9  qq"&&%'LLDKOp  qq"&&%'LLDKOp  ??qq"&&%'@@LLDKO8"&&%' LLDKO  00?qq"&&%' LLDKO  @@?qq(8"&&%'LLDKO  qq G@PW "&&%'LLDKO   ??qq UPUPU_U_"&&%'LLDKO  qq"&&%'LLDKO  qq /"&&%'LLDKO  qq ?"&&%'pwLLDKO  ??qq "&&%'LLDKO  ??qq_P P?_"&&%' LLDKO  qq@_"&&%'LLDKO  qq?"&&%'LLDKO  qq@@@@"&&%'LLDKO  ??qq**"&&%'LLDKO  qq"&&%'LLDKO  qq"&&%'LLDKO  qq"&&%'LLDKO  @<@<__qqqq"&=&=%'yy==LLDKOȜȜ  !!@A@Aqq"""&A&A%'EEAALLDKO((   !!MM^^qq<<"&9&9%'yy99LLDKO((   !!EEPPqq(("&&%'ADADLLDKO((   ====__qq&&"&y&y%'A7A7yyLLDKOǜǜ   qq"&&%'LLDKO``  qq"&&%'LLDKO ? qq"''$'NNDIO 1?b''&'OOLOa####GGFG`!!!!CCCC???? AAAA @@@@ @@@@?????<>x>??<<<<<<<<<<<<<=<=xxxxxxxx <<<{{{xxx??<<<><>||<<<<<<>>||xxxx?x?x?xxxxxx?????????00017a303330s73030333036133301303061{{""aappqq"9"9 >>HH ""pp"c"c ""@@"" pApA@@yyqq  ?p@ p>s   0 x3>@0A0? @DD{D@ _pۀ(h @Bp_mU`UP0_?UU}p!?0@?/@pUPUSQ0 UUUUUUUTUU8<ϳP00 yx@zU U~B?UTUTy`UUY8M *?@F:x?z~8@8 qz???? @ ?`z~+8`q ?Az/?0?@wk<b?4x pS_ qT| ?!~@A>_ ??GN{}_ ?< @@<??p<<?  p ? AD <?(?x8vt96D?^A?????=4UV???_|8sd??h%U/?;pyXTHUE?[`xU?HUŪ?`?|0xUUU@ 0;=l|@'p8 |? `( d?x>?$08$|  @(``p? 8 ??@0x@?`3ˏ /`  ?/ 0ï~p 4? p N2_ܩ?@@p?@0 !? #cD]40/@,p ?d `@@x't} ? `??pAz@R??G@?b?'  k<8!uW? |??7  x (|< jG U@8? ?  p>g QO 3ɀpPx< @?Qy?F8</(!|q|{|{8<1` `!|y~y~,80$< p  `80(xO`  ?gO k' ` ? :q{t!`pp  w7AÀ `_?{@w@PsW0ppH? _?X|pp  `?~aPp00p@? ?р >`po?w0pp@@?~><1/wp@q@~><? ?~p`qw!~|x8<>^> ~Hx8<>ap F~P?`x>X?@?p,..@0< ?4x| <>@0o>@z<8~ x8?A8??<^?yˏ9}|_+og}5l??_??_?8Ҁ ?vp; ??<??8<8x???????&*r=ˋ.-gvus9TCWx޵a& 4N-8>G]Z$Ls{v'^m[-.F :G{ZhZlY+v]+r{H7v)lWڿQH+`ZyD/s1mxH?(Z^, XhXl\Ţ#S,c}/(3;Ɋ2|1Pdlh]PlC|^9ɘOICi^m+VW C}Q?y'2t_vob|OV׎4 PF4~h%]fkj=5z4ȏG\--v^ں%u7כ%EA%yo*R\C4ݚ9n9XX"\'qGNeO0x/$巐=I_/jga'IW, 8sICQ?^R}>U=·KoN'ӝ| &&ɪ1ǼÅO\Tiq2YW||$ⶔ&w+ّr\Y+n5K^ 6W\.#PG z m㯐Xi:-G I z08]>Q< iLNN\FKᾨbrج8r5+H}bMF,uM5PCyXsazجBz1PżǴk+y,zXF!Q }0x`Y5'*(L.ɟ4AF3UwpP0p')=Qelry&:Nbv~~*.6<BJPV^djqx~'  + ? S g {         / C W k          3 G [ o| =@x`v|b>nA}A_ oo88oxx~uw o00@?@?>?swo??wwwowpwwo?߀?>?ccwrpow67?߀?~~swwwow>?~wwo~"#"#"#obb"?"?>?}?@o}`@999ppo}t}||aaßy?? C[o 88<`sE060@Po8Hx 00Q@`w}99 oxh008yEV??`Ca[o P`~pUwp00AUo8Px`~o>?}o ?} o, @| o, @|o< @|o  @|o9 = @|>??oπ߀!@}o @~o @o @o @o @o???o>?ooo A}`v|`>n@z@^=000 x x x   ?/?/?/?/?/?/~^~^~^}]}]}]}]}]}]????????????888888    xx xx x// ?// ?/ ?//?//?/?^^ ~^^ ~^ ~]]}]]}]}]] }]] }] }?? ??? ?? ?????????    88 8 88 8 8 8$$$Wb1$|V*xPK_.|} OWA%IXYpP!#¬됯+۾΄?5K"O1;FBzן;K3k+ dUHc& q Ԋ(|܉^粠\kGsV}wZe7sMEk vV4]R02-ߝQ]G2=+ Sp%.9sﲋDݓt6Z͗{W&Vιli2z5} '[ߥI]!KˡM)_D3ct0%7ٸּA$R|q9BQUȪL?; QOȉG7SpT~_i|/T_RKqSx=䗔ߨ́:< Z?6-FkK#!WlB.V϶rU?W) Ŵ`47fuS}͔ܯo?_TWk,ӌ92/J~jé0=k ݀Ǹ7*d`9;YN'"0~Jmȏq{༳>(g,:):% $Q67<>plmVLޡʿVQG19 yӨ,}tD+-x>l[5Ǻ3hWg>n{ۨ኷^!6.ּ t$ӑ]8N?Cn]?T>yNfHtp_3mut;☰䘷g{pC^ϙKr] }Gm7aW*[bw4bѵg@2.IrgꗴZZiio (kJ2t{l'}o8{?k%W-vc`^/(=Q3UwpP0p????$-|</<8A<<C<LU<<W<]<_i|<k<s}???<<<<<<<<<g|  !%)-159=AEIMQUY]aeimquy}  !%)-159=AE  !%)-159=AEILQUY]'` $8L`uy `mrw| ' HMRW]bglqv{  ! 5  # 7 A K P U Z _ d i n s x }                   '       " ' , 1 6 ; @ E J O T Y ^ c h m r w |                          0 D r w     &+:?HNS\bgkpv{ $).38=BGLQV[`ejoty~??<<???><?<|<?<>|<>|<<<?<<<<<<<<?<<|<?<<>???<??<?<=<=<=<<|<<<<<<|<|<<|<<<<<<<<<<<>|<>|8Aq7pȉ}ׂ(@$HAA $Q) DDu׊("p,|P@$HAwy $`1 xaD "p*}Ղ*@$HAA @$)@ @PD]ע("p)z)P@$H<0} 0$.% @oxeؚ'wq7pȉ@$H $  $H`$0 0 dL2&`0 ``Fb#1??1C!a??0`aA ?@ @ ?````    bbbb " " " ""???"!B""0"|"!"""~@"!"""@"\_""""!"""???"!"|""" "0"@"o " |"`x?"?""? "@x @( "?"""" PD"?""? ""}Hw "?""? ""E@P"?""? ""B߀ "?""WW?  "4@""?"uu? "?"?""թ? "@Z|""?"߹? ?"@L""?"? ""?"0"> ?"a ` "" "0!"0s"" ???""p""""`"?""g"?"""""?""?"}1E"pAAAx"""Ake;"o} """y;TU#"8 <7p"""A˻4DM0"} ""?"}1E"_|w""""" " " " "bbbb````    {bbbb {" @@" " "{"o?""" 0l "BySP """00**"®SQ?"""~^"+)?PP"0"";?"#! "O ""  "?/ ?"3 "" ܇ " 4g?"?""o "gNO o"k"" ΀"NCC@@""" !#" @o_"@@~";>" |" @w" @|"}" ^ "w"9`!>?Հ "<|" ɿ2D;"@@"!?k"?̐4 o?" "/_"`e" ~ "   ""ǀ"_"  ?" "<"o"!?"`/"? <ހ" w" ?" o" |" " ܇" @@_"px  " " 8 ~" @@_"x|?" )":>"NC@Wo"/>>"`"~^YxY<"gFG@"{dp"?"00T~"B y@@"  "~" 2* *謿"?/?PP" O" ?"sJJsͻO"by@PP"o""ms""y?``" "<7AȾx"@@P?"pp""u"_,""@pp"p" "C*p"  """"??"]"_)""22""f<7AȾ" " """ " "bbbb````    bbbb " " " """""""??"""" ?@"""" ?@"""rs" ?@""<@"<?" ?@""]?"] " ?@""C@"C?" ?@""W@"W" ?@"3"Y@"Y" ?@"3"9">" ?@"?300"=">" ?@"?x00"y"?" ?@"x00"x"{"??"000"8|nx"8|nx""?000"D{QD" D{QD""?x00"D{Qx" D{Qx""?x00"D{QP" D{QP"E`x`"?300"8 pL" 8 pL"KEPDP"30"""EWax^"30"r"r"EPPP""n"n"=`Lo""??"?""""""""" p""""!P""""!q""""!""""="""""" " " " "bbbb/.?<=NP>JGl 3N0<`?. ?NվX0LN^NuNV n"n 09#S@F3UwpP0p0@ %(0<Pdx`` I]q 2FZgn{"6J^r&:Nbv *>Rfz !5B@FV Zj0n` `)0 4 D@X@l0y 2FZnx  & E    S {      4 9 = B  G      Y a u @ @      0         . 6 B V k     @   0  2FZn@00UUUUUUUU UUUUUUUU9Mau@@qZsۄ  3<  ?7?@0 ?  $?67` ?DD??ND"D"8?@?@???B$?@@?TU(@݀??8sxs ? ?ؾA!(7;ݻ݀ ?[_?P|@a9>!!?Ͽ? )~??_g??DJdʂ`0?_oAF??A ?8?__??y@@@@@@Gؿw??qs@@@@o@@@x?w??w00 00 0008w@??3H@@~@@@@@@@?? `™<??`  C@??0?>? ?00I A@??x @??4o e$U$@??=?@??`~???" "P@?h~?Hw?@ "@@?K~0wXg?""@?yA^@X`@@?sG@?/`ww`ߟ_@@??# ~ o C@??@7@@?@?@@D@D@? 00@@x@@q@@ x Q`00}`?p7??}p9?p?Ex#@@@U`?r ?>@@@u@d 0?@@@33@   33 .  00?x o!?4o??33]x?=?#33Z?`+oo@P?h? wHw?H?K~?0?gXg?33@?y?0?v33@r?s??v@?/?? @@` #?A?   33 ??@@@33@?@@@?0O00@` ~@    _ ?00 _0?toD0 o|@?0A.@w z?AA. }?? QA @`?!U9 @O??}Em7``ߟ@ яQ {0  Y ߗ]}?@@"_ A @? 0O@?@?]}.0~00pQ.@@~A}@p׏A}   ǰ g?00 @ @ǿAA.w??p@@ @˿}.? ;Hc]A ?|>@gqA?|?>| ]]* !??ٿU*Hww??|?`Wu A?}?<} B?`W???< ?A(`l ?* ;};?"|>q }~?>|?a~@׿>|`  |>0@0 @x8 ??;8=?A?}lox<??<g0??|?q?(7>|??@a|>?@y~? /x s```p?? 8   8x @?@@@@@oq0 00 0?@~@`™<??` ? ??? ? ?0? @ǿ@˿0?@˿< 00?8q?q<?@?.~@? ?0w?``>? ? ?? ?? `<?????`G0<???`ww @߿_06 я? я? ?p   o?0# ߗ? ߗ?;?8`@7p ? ?~ ?p??~  0pxp@ p8p׏ 0@px? {00@p?@??pp@ ? ? 8@=#c?c??p`<6???{?`~0< ? ??s?w~>ٿ?ٿ??c???|??v? y ?@? By.?w3 ` ?  s<`>w0@?8  __ @}?} @<@0@? }@@q??a?q@@w   w  ?   s s?  D3   @@7?!!@wo?o  ww? @owg? p  v? 00!Ϸ__v?`  @_@   M_@0@ @ A@0Oxaw`?@ xAA 0 }A0$0 *QA@t`   *Uo|`~' Em @ ? Q Qz`@OxoP#]}`?3'K A`/uo ]}@`}@IQ? @O/_\qvw'A}/- w8;;#g 0{`0 '_ 4AA<<`G_ɛ \|H }? 0O@?p@^rKHJ ]A?~0 +  A@~A}@@>i9H$ ]]?  ǰ w 0+_j  U? f$c8yy  Wu<<?wr=I.?x $ W 0D_ $ AWl ? $ |w?   !WW( _jx  Hww "7{000  ?.  "Kwq  `` aZ $J  ???$@@@@BC8H$@@CC@??H  UUUU<$_y8y=}=D@(PEDD@@ADAd@0yDD@9T@9AT@(PQDQD@A4@ADL<$_M8C}y=7D3|dZy S_ oDpF-sruR:+}| \/>VOgjx+F3UwpP0p0@ 1EYm !5I] 1EQYauUUUUUUUU΀ !2FQZelpnqty`@UUUUUUUU 0 !5I]qՀ UUUUUUUU#&:INbvƀ'*0<>DQUUUUUUUUXdlx܀"`,6 =@J@TY^@chmr0w|@UUUUUUUU ̀ ).1=BEYmUUUUUUUU  ! 6 I ] q      Հ     UUUUUUUU UUUUUUUU  % ( 9 < M P V a d j u x ~           ŀ    ܀ `        @   @ & ) , 20 50 7 : = @UUUUUUUU T h |    ̀     0 D X l UUUUUUUU         4 H \ p    UUUUUUUU Ԁ  $8L`tĀUUUUUUUU&:Nb)vv_@??UUUUUUUU?o ? 0 0?* 0 ?C83?3D??@??lm0@ ??D P ?02 DG8N}9`|y`  ??W0?QDAy ? ?@a ? -<@ A ;xyp!?@?5B~QDD@y0 ?P)\??8Q94D}Z ? B# ?y?Z? @?@$R/<=?*UU  >O@ @?I$R9?!!{8@}?0?P ??! Y$RT!?!@~߿UUUUUUUU  R>?!!{ >_w0 N" v8cv>t> %R!??u u׊(5u8D >_`_M ?~8*=?~^ >_{?~P ??~^>{0g R>?}! aÞ<ya`^!0._7?`,R(>?Q@ya`?_Pn߿@op?.P??a!8ya` ?!?\_/?,R*( ?Tya`8>}_8HR ??, Sx <_ ?H-R"??ya`?> ~?,R(`/?`~ ? ?Z-R"!/?1 ? R??_ ,S(=?_ ,R@??]5}ׂ(";=˽B0?]UosÏ @A?_C>??o#????? I@x8>?``?0??@04D _?@F0I`?p8 C??@F00 C??? 0 ?L{E`=&׀{0[[+TW0?0 @߿0WW+ T0?0A``0+TT _? C` `|?? 0`?  R?? ?`??@a O@@nT'??8@}???? @D4c;?#???UTUTUTUT  D'???w0 ?@D< p%T>*/D>|~00~  {`p?{g7?0ϳ0 ???@o?#0_/? x@8@A 0@0X@0C>?@  _000p00 oqR_ s_??0@Ͽo04o:?oqR0?c /@??@o`0'")g`ۯ$O!g0 ?)ܿ@"F0E? F1 A'޽(:p9 0"7?@LxV??&׀x??x0_tG}kO?80op?X??0 opVw?? `op?<0op\q/O??? opg?f ? #@?`'???@y>pϾ"  " " "<  <<<ʀ"  (( qyp<  >-- Create mode Remove wrong letters----------------------- Change crossword size Reset crossword ----------------------- Load help file ^H----------------------- Load configuration ^C Save configuration Enter title ^T Load printer driver Configuration Print crossword ^P----Crossword---- Make front ^1 Crossword font Square size------Clues------ Make front ^2 Clues font-------Help------ Make front ^3 Help font------Fonts------ Title font Choose fonts ^FEnter a new crossword size.______New size:__99OKCancelEnter a new square size.______New size:__99Minimum s' '()812+,- 8 12 xyz {|} H'''HHHHKLHH' HHHHHHHH_`HHH H''HH:H'HH '''HH:''HH HHH'HHH:HHHH H'HHHMbHHHH HHHHHH:HHH'H HHHM99N':HHHHH H'HHMb'Ha9bHHH 4 H'H':HHHHH HH:H'HHH KLHHHH HH_`'HHHHHHH <=>?@APQR4STU'ef gh'  0P@0PP0 0  0 ppPp@ pp0 estionsfor improv aNMNaN :H:::Mb9()*:ab:M9b9+,- :'ab94 :'9 : 9 4:HH9 MN%& MN MN  'MN 01   DE01 #$  DE ' 01  DE '9: 9: ,-9:./ 4%& N M`````` N M NIM <=>N M@APQRNI5''MSTUdef ghi  p @p@ ` PP P`p 0 P @ @ `P  0 p PP P ``P@p p0    0  PpP`   `    @0 HHH   H()*++,-KLH 4 _`H    H xyz{|} HttttuH D HH 0 Hxt %&X#$ HKLH HH_`H ,- H 4"H BC"12+,-H<=>VW" HPQR"1212 H ef H9N {|} HHHH'H H9NHHHHH HH9N9: H'H 9NH 9:H HHH HH94 HHH %& H H x H'H<=>?@AHPQRjkhiSTUH'Hdef ~|} ghiH   ` P@`@p``  `P  @p 0 P @ @ `P  0 p PP @  ` pp`p    `  p @ pP     @0B<' EFG()*EFYZG++,- YZG xyz [M HH [9 ''H H'H'()*??@A HH 4STU 4 HH KN''''''''''gh HH N   'H ()4++,- HH \+ H' xyz{|} H'HH H'HH '' HH<=>>@A HPQR?STU H'def ghi'H <=?@APQR4STUdef gh  `P0P ` pp 0   `pp`@`0@@@pP ` @ `0  0 @P @pP `@ P` ``P ^t|`Kt?}I '???????????>?()*????????a>?12+,- ??????????u>? ????12>?12???? ???  ???94 ??? ??? ?????????????????? +?? ???????????????N + ? + ?9: + ? ?????????????? #$+ ? ????????????? + ?????????????? + ?????N H9???? + ?8??? ''9????? + ??? '9????N? +M??N 9???4N? ?,- 9??N? ??????????**????? ?????8 <=4??????@APQR????????STU'ef gh@@P@pP`  @` p `  ` p@ 0P0     0  `p @@ P@`p% H '' H H()*4+,-' HH ' H 'HH HHH23456 %&HH#$ 'FGHIJ ,- ./,- BCZ[\]^ VWnopqr<=>48BC PQRVW 'ef   \ ()*84'#$ x 6 xyz{|} 'M8 #$''Mj ' H' ./ ,- 9EF" YZ" LEFEF" hiYZYZ"jk|} ~P p` ` p @0 p @0 0 p` 0`@`p 0   @ p p 0@P ` p  0   P@0 P p`P HH' ''IH()**L+,-H * H xyz ^M  'M H''%&' ' IH()*,#$ ?@A'*:9 ()*?STU xyzgh ()JKKKN\ *KKKN] [' <=>>:IHII''I'' %&IPQR:q  ef{|} IHLLLL++,-<=>+,-I PQR+'444 Ief{|}'444#$ ''H%& '3_12 I'<=>3_8888>?@AHPQR3_12STUHdef gh@0@p`  0 p@ `` PP 0 p ` `00P  PPP0p  p @ 0P  0@@de". Solve mode BCVW()*LL+ 4 '''HH'H'HH'   4 :./4 %&     ()*  J8@A  MSTU '' ' ghi  ,- ./: BC G;VW<=>BCGOc8 PQRVWGw4 def d HHHI 'H 'H    ,- ./ ' 46 <=>LL??@A'PQRSTUdef gh @ ` ` @@ p 0   P`` p@ @` `p`P  P pP`0 p p@ P P 0` 0 p``0p@^& EE  ' ????????>>>>>>>()*???L????+,-()*>>>>a>>>+,- ????????????  >>>>>>u>>>> ????????  >>>>>>>>>>> ?***????  >?01>> ?>>>'????>#$?HDE>> ????,-./????,-./>??? 'M??01 ????****?>>?????>??> Mb ??DE <=>???????BC?????>??@AaN 01?? PQR???????VW??????>STU': DE?? Ief M??>>>?N ghiKL >??> ' ' '' ???4NHIHH''_` >> ' 9????N >%&> ???????)? 9:9>>>> ()*???:9+>>> ???????4+L>>>> ??????????L?N M>>>> ????NMN ' M>>>> ???? 9>>>> ?????????46>> ???????????>>> <=>?????????>?@APQR????????????>>STU5ef gh   @p   0  `p @0 0@P` 0 ` p ` p   0 @ @p pP0 p 5AE}QfX"Ի '++++++>>?";>???????????()*++++++>>>"O>?c??1????8??+,- ++++++++>>>">>?w???????????? +++ ??? +++'' I'I??? +J+''' ??? +++,-  '@A./ >>>>>>>>>>>>I TU++k<=>>>>>>>>>>>+,-   +PQR>>>>>>>>>>>>  def {|>??  %&'I''??? ,-C 94??: ' 4W????????????**>>hi+++ ()*??????????**>>+,-|}+++ ????????????**>>>>+++ ??? ???N|}?>>'+++ +++I??? >>> ./+++ +6+??? I>>>++++++++ +++,- ./??? <=>++L++?+?@A +++++++++++??? PQR+++++++STU<=>+++++++++??@AH'ef gh'PQR+++++++++?STU I''def ghi'@ 0   P0  ` 0 00 pP P p @`  @@00@P p00Pp  00P` In this mode @A BC@A BCTUVWTUVW 44 4   #$ %& H   GGGG H #$ '   H %&    #$ H   ' ' %& H 4 H ' '#$' AB TU4VW  %&  4 %& 4 hij MN ijk|} ~     pp `` `pp@``P `0 P @ `  @@@ Pp `P PpPP0@0@0p0 0@0   @@ hics(240 dpi).  IHHH I????????HHHH??>()*????????+,-HH()*??>+,- ???x???????? 'HHHH ???>>>> ???xyz{|}??? HHHH ???>>> ?????? HHHH ???>>> ?J???? IHHHHHH ??? >>> >>>+++HH'''HI?6? >>> >>>???H''HH??? >J> >>>??+ ??? >>> >>>>>>>>>+++**>>>>>>>>?? >>> <=>>>>>>>>?**>>>>>>>??@A>>> PQR>>>>>>>?**>>>>>>4?STU>>> def {|}****xyz gh\>>> IH****I >>> 'HH****H >>>  gh9**** ' >>> ?????****N >>> ()*?????**?@AHHiH*** >??????**STUIH'''IH*** ??>> gh *** ????>>>????;?************* <=>??>8>????O??c**1*******?@APQR??>>>???????w**********STUdef ghi @pp 00@ PpP 0 p `0@  P  P P 0 P @ ` @ @00P pppP`@A '   TU    4EFEF+,-' ./LYZEFYZ ''YZ tttu()* [DD  ?' 9 x jkH H ~ 4?jkHH suH5stu ~t6tt JHxv '' ' ,- <=> x PQR+,- ' ef{|} ()*? @ABC 4@A TUVW'KL STU 4_` ghi./,- ./ 8 <=>xyz{|}4?@APQRN'MSTUef 'IH gh0 @ 0 p@  0@ p p 0@p@P p@ @ `0p000  0@PPyHMt;  23456 '??????FGHIJ??????()*???8??4,-Z[\]^()*???L??+,- ?????????? nopqr' ?????????? ??????  ?????? ?????? ?????? ???  ??? ???'?J+ ??? ' ??? 9+++,-./+++ ?J? ' >>++"+++++++++? ??? '<=>++"1212++++@A ??? 'PQR>>">>12>>>./>>>>4STU ??? 'def MN ghi ??? '' ?''' ??? ' ???,- BC ??? '@A BC ?????????VW ??? TU++VW ????????? ???+++i?????? ??,-./?++,- K? ???>n>++++??????? ?????>> 4????L??????@Ahi????>>??????STU|} ? ghIH'?H     hi?jkHHHH  |} ~HHHH  @ @p 0 p`0`  ` @  p@@Pp`p `  @ 0p 0@` p 0`@Pp 0 `  D75lv1n' 'HHHH' '??????'H()*???8??+,-'   H()*8+,- ?????????? '  ??????  HHH ?????? H'' ' ?J????''6 ???,-./???,- ./,-./ ??????????EF??EF???????? <=>??????YZEFYZ????@APQR????????YZ?????????STUdef M???N M???N gh'II'HHH'H4??''HH'???'HHIHH'' 9???,- ./???: >>>>>>??????4?????()******+???????+BC+,- *******?./?????????VW ****** *J*I***HH ******    H ??6 ***,-./***   ?,-./ ********** HIHHH <=>**L***?@AHH'H'<=>L?@APQR******STU' PQRSTUdef ghiH'ef ghI   P@0 p `` P 0p@ ``0  @ p    P     pP@ 0P  @ P0   p0 P' '!"#$%&'()* +,- !!4!! !!!  ! !! 4!! !4 !!! !!!! !!!  !!!  !!! !!!! 4!!! !!4  ! !!4 !!!!!  !!!!!!4 !!!!!!!!!! <=>!!!!!!!!!?@APQRSTU'ef gh' @PPp @p 0@p@@ 0@   `0p #a000000 #b000000 #c7770007000600070055200505552220770557075055507703111103 #d #E 18 11 #W 02 01 10 06 0A 09 08 A:\HOTWHEEL\*.*@ #W 00 00 0D 08 15 0B 00 @ #W 00 00 0E 09 15 0B 00 @ #W 00 00 0F 0A 15 0B 00 @ #M 00 00 00 FF A FLOPPY DISK@ @ #M 00 01 00 FF B FLOPPY DISK@ @ #T 00 03 02 FF TRASH@ @ #F FF 04 @ *.*@ #D FF 01 @ *.*@ #G 03 FF *.APP@ @ #G 03 FF *.PRG@ @ #F 03 04 *.TOS@ @ #P 03 04 *.TTP@ @ 13 Sample_1 0 0 1 1 temper Ill-humour 0 0 0 1 thatch Straw-roof 2 0 0 2 mariner Sailor 4 0 0 3 elevated Raised 8 0 0 4 eddy Whirlpool 8 0 1 4 eight Rowing-crew 10 0 0 5 grass Pasture 12 0 0 6 titbit Tasty-morsel 6 1 0 7 grant Allowance 0 2 1 8 agree Concur 6 2 1 9 radiant Beaming 0 4 1 10 contain Hold 6 5 1 12 tip Gratuity 1 6 1 14 free Gratis 8 6 1 15 lose Mislay 10 6 0 16 satiate Fully-satisfy 0 7 0 17 speeds Drives 4 7 1 18 doe Female 12 7 0 20 orient Far-east 0 8 1 21 pace Step 2 8 0 22 chair Seat 6 8 1 23 platter Shallow 4 9 0 24 stay Remain 0 10 1 25 elastic Stretchy 8 10 1 26 amaze Astound 0 12 1 27 stray Wander 7 12 1 28 street Road ͟=Vk> _X- r c=뼆G+9t #N s@;.v{;An>%^üBGw}r!{᠍6ߤ5{Hpo"܆Bhթ\xb !X}F$ C@=iK9q>ض`j${Z;鬼5q`cT+Pp8WxL}uǥ&c=@T\gG`kf3N٦豄 X٧)nA` 9K UJrQs#>}`i_ݜ 9 LwFgНɱ+("Scp⻴zawpfuAӣ dF?zhCRs3S,H JĀ( C6 PI}a}P(cn7P.fj(c]*Úo΁ Rbʚo_iy6{ۉܼ6囦-R)-9z+s+Cu=apNZ?׾Tvncxdyo['r^.{gyP^q9V%= ;/GϖJ>w OLB[3]c{/,bIcF`X5d\lol9ƒs_ dU:rU4y }X=šWk^]=+4'Vt,gnՐSǻce5&{Yz{l/.Eg5vyh'KU?ڗ3~irgw8ωp {y+ս SknƗ&|O/߸V੤!!v =xRUzŬeb祁P3x͝W2ឡg&1U 9Xbap?ƲF$>nWLcۑ_0:f=#m|xwZ gJp&|#ٲ3kPxE:5bi^?pCw]JߤBk_v]O98!ijy  InӸ8廏{Z=uy9ẸKSs̹uaɸĢZnZ765-JܹyXlc2%M(J>XI`}᭒Py5*3EKsB*ŅgX*Jg<ᘤ\X;V{JZ׷2hʘgS? nL"ѐ>w['n-Ϩ2=& = :a%]|<~k&M'*s]q'omP*1qLT`X% ,`飏8GrՑŜ೯`1j]eX#.>lv _9э bܕm%e`ro-qr7S%;SڱRURK-}$mY|j֬wΥTiSX|o6-PncZtPz/]eGvT-T'v@lmc% t;}Mpu? =& S^^>tVeLrVYtl^=g̤bw4ʉ9YpJ_N'jl'빦Bl yFB[ ͊wKiP-*&ΛE>ʨupvl\W-;lނ^4)^~%(K-s:\+ii﹭ħ&\yks?tDnJ+Gvœۈ3fܧ `Lk?#{=i\t~\xg.Xw.`Pfx:k(H Ő orؼHF1qמlEHj ^7'|# ;rWFZQV"29~>BgEg1n& ͢-ƿ~Ѿ,)Ox{?>Q߿Dk_'MŦx 3F9WV|Rd}IPANǜٕҾ_8O)4 Lbn W~Z/~nJBXk(EjʣD7m_s]оkS<=Zdgs$YRCVN_[atYӋ7gר7^[gN%L]VO%g{vSk99wѯT_'z^j6ifWJIR,Ti{k5f}LWfQ{5}YD~}.6y7 b{ZK=}&u=a|>|Rm{ܯq?-~Oc̦xn4Bl)jwg"w5Oj֚O]3`=d3ӿ=/V;΍gy` /K6fzg\kd{fK ɦfse;BJs#xNfk1Po;{y!r5kg 8nfkw\YBz7Ta]hH ?V7WΕU_~i-M+.oۊJiR5%Ʋ[(5;-q2Åwk$eFPpJeivqyY*^/![*a)=RPGwg@A~Tr~ t̯ٓ`Z UޘU2,vݻM CxUgSF>d^{Wo]lڽ_xe+C^iUUqG#u@waG=§wwk[տY_}/džǃZk͌G}og*j>]9oC*UsT1oD9i38Vq `?%a39AaΧ@^y({ʂ̷ p6n}I av X83t*l6Q+ɫ#CJ>=RH-I텩G6y'dL3lo|y˭n=}7Cҳe[~;;j81 LO?K>}XK# ̅C M*ag>1V$ D"[hHSw6*sCe9;-ҙenד3qޥ (gxDP5Gntř_V;[\ wFO_qq*uעR(ܵsf `pduj7B27Ne,'wNd'J_3ֱ(n^\5 0bhmyf{+(eX-E≯2HڝiJY3O׺UEju_{f__,;GQ9h;EZmRy_z]$wC*ۻ.I)LrrJjZܴ 2$ʵ;%QE`zhd2~EYuZ՘x~j,!k84ЀmM;߄MDɻm [Ϟ_c084^fqr/1u2wC<Ge /gҹ[Cg@÷<\:Y2L*vP=%,ƩI*{xyw0VQ=i"xquD%H>M8y5ق쉅'qױP_WP5l&йkRI'%/"Zdݴ|J9I+6D$A5ء5E6Nֺ JFշ !.sǸ5U5Q8|Ohf_q~ȵV9=z/lJho)랕<٘_!kg 㵻a+|MY}Fe2 QKt.݃`sJ̰(~ J̴wF)!&U/(Z[3_l! h q)7$ f8>{o#?o_6 Y :lhP-SL @"I')2Zn4 -f}yQo;›[LF<Ϟ b1%&LK%",* B`lYZ =Cq~pܷ ֵ99vJ{ZARwr]TNʂVAdlN3] dfozuˎ쳽vZBna"\Tov7"*QG`a&q|"FWd_HeŤfG@#5qGk0蕩]X@1h+]\õ.Kȟ^dfBH!a>I6+TZ5_NuR 6d6nIr+pt!w =$)N~+%6.˵&*-}ocC#hp|eof̳Lpܘo\$wEK'rb@gwt_tIؓyK@=emc! " Ɇ[?KHD\_j7-g/ƙeȂ^?@R| 9UX3KbiPO~G@7Liw/,C?QT :OB~&{`/mŏg3n_-n ARɾgΐplyXoӾ^M>5gt;wwdhWi T QCj,WZ~÷?.rr)j[uy`̝p)Adw6.c%1}Il^UR*O Ws= m썣j?CmEG.sjz&7 MڞQJYJ.CWȜ+jj Omk嵽} \kl̓ l!Gͅ? D?e~DoY}qGg 7|?x/~ImP8_RgMa d'9.C7_NdF&߈ݦ;)-]z3`H4~s5/׶?W9۟m*OOHњ~@1r=7}!K ݕ99p[cR(}]~/k4~;IXO{$c9ȯ֠I/s |-qs$}Z j|#jmNPPHgց)Uz_$6!ڷϫ@ -}cC@p -~PQD%9}a WIib| 8h`z] !5g}Ր\P[n\\0HI9 3ƁFldcV^KÜb9u 2wC\YS<KєB~gJ$= p7j IzW|?@{oE9L[6@0Q{*$(//+|DRZϿzzb{W ٨+q~^]W^X_ԡo?਽,N榉@>|<}deYj)xeХ˄4`:Waąٚ.kc?^9ڳzW5x %(QO(pcWS̗`ն.[PC_}Z~}TVeq3?+/43`,$(O}҈;Ű 8R$*_l@w]=Ek='Kf\W-'au`WV|yvw)z^>UYk(F.lQ=26,|cH &ԙ6IpX !`'IpHQ7Z =j)ѹ "O/sW:T_e?2u@8TOɏ r$~oE5L߉v;閔ZApW'C,Quk@s/@%0jE_5$NTFJq幺jw,[{oe\h D~kFx=%P N\f*лae/S/}Ⱦ ɨ_%|[g/?B7/@/jlbD# Pxs–b}S2 d7"/Oba&iY=s\6j;;9BU+׻bwzb{hu +Z=w׎]&ɛsDB$X7ԝrs_use_for_hanging_on 2 7 0 16 armrests A_sea-going_soldier_relaxes_on_the_side_of_an_easy_chair 4 7 0 17 suborder Group_of_families_executed_by_Trident_shipyard_(3-5) 0 8 1 18 circumvent A_number_cut_vermin_in_order_to_get_around_the_problem 10 9 0 19 driver The_RAC_is_his_club_of_course 12 9 0 20 heroin Popular_man_takes_in_real_dope 14 9 0 21 drifts Wanders_aimlessly_in_the_deep_snow 0 10 1 22 farrow Litter_from_the_back_seats_of_the_? 7 10 1 23 overhear Listen_to_another_invitation_to_join_a_group_by_the_sound_of_it 0 12 1 24 onside The_batsman's_leg_is_in_the_correct_position_for_football 7 12 1 25 driveoff Play_golf_if_the_whist_tournament_has_been_cancelled_(5,3) 0 14 1 26 desert What_the_8th_Army_fought_for_was_leave 7 14 1 27 bearings This_type_of_ball_is_taken_by_navigators 15 Cryptic_2 0 0 0 1 fearless Intrepid_directive_to_the_over-anxious 0 0 1 1 flout Express_contempt_for_a_foul-mouthed_hooligan 2 0 0 2 ontario Oration_newly_delivered_in_Canada 4 0 0 3 tuck Friar_popular_with_schoolchildren 7 0 1 4 amorally A_second_mass-meeting_without_regard_to_principles 8 0 0 5 matterofcourse Inevitable_consequence_of_a_golfing_affair_(6,2,6) 10 0 0 6 rued Was_sorry_for_sounding_rude 12 0 0 7 lettuce Allow_some_workers_English_fare 14 0 0 8 yield Agree_to_show_an_interest_in_investment 6 1 0 9 heroworshipper He_stands_in_total_awe_of_Leander_(4-10) 0 2 1 10 article Something_for_the_editor_to_consider 8 2 1 11 trestle Framework_for_the_layout_of_letters 0 4 1 12 lard Fat_Scottish_aristocrat_gets_disheartened 5 4 1 13 boxer Old_Chinese_rebel_is_a_punchy_fellow 11 4 1 14 quid Pound_a_piece_of_tabacco 4 5 0 15 skier Winter_spaortsman_could_be_caught_out 10 5 0 16 steer Direct_supplier_of_beer 0 6 1 17 stocktonontees Macmillan_playing_golf_in_Cleveland_(8-2-4) 14 7 0 18 bytheway Incidentally,it's_at_the_side_of_road_(2,3,3) 1 8 1 19 undersecretary Office_junior_becomes_a_top_civil_servant_(5-9) 2 8 0 20 nutcase Lunatic_action_by_teaching_union_(3-4) 12 8 0 21 airflow Song_played_loadly_and_softly_creates_a_breezy_atmosphere 0 10 0 22 macho Scottish_son_of_house_is_extremely_virile 0 10 1 22 mate Partner_gains_victory_on_board 5 10 1 23 pique Material_evidence_of_resentment 11 10 1 24 arch Not_entirely_popular_church_feature 4 11 0 25 skit Sunday_clothing_provides_a_source_of_amusement 10 11 0 26 paid Settled_one_in_a_small_apartment 0 12 1 27 crackup Increased_cocaine-taking_leads_to_mental_breakdown 8 12 1 28 shallow Everything_in_the_exibition_is_without_substance 0 14 1 29 overturn Upset_an_open_tea-container 10 14 1 30 dowry The_portion_of_the_widow_Ryland . .. @PSON_D PRN PSON_Q PRN BM_D PRN BM_Q PRN HMA09ASFNT HMA18ASFNT $Epson LX-800 * Driver name 1 * Normal IBM printer with 8 bits 960 * Number of horizontal pixels 0 * Top bit is 128 8 * Eight pixels per scanline 27,65,6,27,2 * Printer reset 27,64 * Change to 72 DPI 27,64 * Change to 60 DPI 27,51,1,10 * Line feed 1/216 inches 27,51,23,10 * Line feed 23/216 inches 10,13,27,65,12,27,50 * Line Feed 24/216 inches and carriage return 3 * Oki graphics on 3,2 * Oki graphics off $1b,65,8,27,50,27,76,%1,%2 * IBM graphics %1=n%256 %2=n/256 * Change this ^ to 75 for single density graphics.$=Hexadecimal 65(awi1L6Lmm/}3kh3E+[Ik*)Z6n-ֵ3{cZ k>5k`%uW_]еF$Y D+_9LҾk}澞9}t6ٸè z/?WAʌV.O|xm-$Ц'Lc-h,1׼ 3x{jiFI*Ci<[Z4}Xvf7L4 ݬD-rr)|U?^&o/WJ]z4Wf/FNZ>ڈR"MC(jWLaKqs[m)~ML m{>|Z+XP:˫:+7굝~[l W\ntgto[kɧ^I?+꽚98 "G6CvJص;$*ۢ; 5EX= ~B.sM'>>Qo7u6 Ik`7&b҉wJ|7s򵇾WuP=pe+^i+JVKZ ,(KZU.g|߰{G_wܰ^G-r”=12 oO8j t:i;0S8:/T-Ӻz=EÃgjEY$T I Y٨~E(?dR$ up%rG;豳·:n+Sx.w_/_x3_BsOSs[*}&~^VWxpk]C>گcE\_ΧWg$;g +,9_Ee)xV_>* CEea8,U[Pq =VZe.%% r<'O*YOq4mh_1GgQxlJxY>x?0tuE?X(VOi'SI KsuY{ ?߃خ}O56O.Et}O'g}P0t}O.oX8v/ƉV_=uiGBKO81_Okߌ D4?ݭFAHNJ'8;B:'<7DmDSgY> %J S[8rNqISNz bjx~k&-9vew~.r/p nNzqK2_,/Maz,|yF_kg_?d?531c4٦y?y@G|W`m.OB>?!n˓n-[`wx1ްaߎ٣;{}\sy>3y'wZLj`:J:oVxS>o0EH:t9iD:[g<źK2yubnJ~a~^e.Tc>},.T;w]o1>[;qe$[G[LR;?nd1ݣKhmx_Ch;Ǔt6h):#ϔ'&2M(v 5|OYz-6hPc1bBmrz>yP]ǯ"N>a;ԑx[qiMq9eHzX.*<;ZcqZ']|۹G :'92ϖ}[@ׂ5{d w%v~sg{Ty~,/3/0p8kkCzjCvvՏ6?SCMpɁ?˿7&9=G~۱O Tt@F]]i'y9KTs-٤ĵ>l^~b=LG|gXo)Ɉ__Zι_ڝ|nw&sN!X)/dO_ p^;b.&_F\#> K()/T^ѹ 7d~B?R?_ ܈I_LG&V? ld-rb=?YNw-o+v_rñq _>)C^^'!ϻ{-`&esxǻ\/ߊDϭ|ds.D9$πg5k˹}_Bg̻v3^Qr{VW{i˸ O>x?\E=3x^f?=(^x3^QyZ˵9Hs5LC5Fiٺ-|{.y.&={.^yNYׄ_X*§e|e9i=/5 O >]g=_0u$={ǵ߻9*x9'<*߻sXϸY.k"|)lb ~Gp\2/$/낏}. DozyHxQFߗT\7LIp`yyq})љsK|Hj\י-Bzk-ٯ_ S~b/} >mQ-<6Ygcׇ|=Qjt9s{r6F#鄃ǡYt,_GY%|. Loؗs!\/s w}!ƍt0'hķ7ϟdskýI72 ] 9<,{ #E9(xm9gȯyX>32ǿ:53(x_9x?G { t;L&Ni=^|˼嚐Md?y &0cy[6뵊pg|hҐ&<\+1qڔZ~CGt;D#.An>p!r{`>_~o+I2֖/'?hm3 qMKnE< PA?5`qޡ/N1 $:WTBIM˩3h1uQ GCozjG~rox"8|ωBcgOr.A{xB 6eˑ}3|S dX/~$P t/V}$^[;NWyQsY?^?.|yGyGz'd=={?p9/-}ygś}>9vnr,蹅_/+~ {y4!S%ܶt8,>,bw=ı~%ߑeyӉ!FnC&} 0 =p;7W&9/~}>#ۮ(G? |A>WM~9ӏv8;1^,fPrԟw?s랏5nO~'{t"<^qEpson_Q * Driver Name 1 * Normal IBM Printer with 8 bit graphics per line 1920 * Number of pixels across a page 0 * Top Bit is 128 8 * Eight Pixels per scanline 27,65,6,27,2 * Printer Reset 27,64 * Change DPI 72 27,64 * Change DPI 60 27,51,1,10 * Line feed 1/216 inches 27,51,23,10 * Line feed 23/216 inches 10,13,27,65,12,27,50 * Line Feed 24/216 inches and carriage return 3 * Oki Graphics On 3,2 * Oki Graphics Off 27,65,8,27,50,27,90,%1,%2 * IBM graphics %1=n%256 %2=n/256 * Change this ^ to 76 for double density graphics IBM proprinter II * Driver name 1 * Normal IBM printer with 8 bits 960 * Number of horizontal pixels 0 * Top bit is 128 8 * Eight pixels per scanline 27,65,6,27,2 * Printer reset 27,64 * Change DPI 72 27,64 * Change DPI 60 27,51,1,10 * Line feed 1/216 inches 27,51,23,10 * Line feed 23/216 inches 27,51,24,10,13 * Line Feed 24/216 inches and carriage return 3 * Oki graphics on 3,2 * Oki graphics off $1b,65,8,27,50,27,76,%1,%2 * IBM graphics %1=n%256 %2=n/256 * Change this ^ to 75 for single density graphics IBM proprinter II * Driver name 1 * Normal IBM printer with 8 bits 1920 * Number of pixels across a page 0 * Top bit is 128 8 * Eight pixels per scanline 27,65,6,27,2 * Printer reset 27,64 * Change to 72 DPI 27,64 * Change to 60 DPI 27,51,1,10 * Line feed 1/216 inches 27,51,23,10 * Line feed 23/216 inches 27,51,24,10,13 * Line Feed 24/216 inches and carriage return 3 * Oki graphics on 3,2 * Oki graphics off 27,65,8,27,50,27,90,%1,%2 * IBM graphics %1=n%256 %2=n/256 * Change this ^ to 76 for double density graphics A Madison ~UUUUXXp  +8DINS[bhou~ %0;FOXdou(3;DLT\blv #,9BLT[ahqc(>  88~|<B <x?< /88s18f@9pp<?1DŽ<? <o>8P 1p>!8@8@q0 pn.0Ă8|Ap C | |<=cw9;9q9p8qOC88Á o?7'?)㽞G.]yh>'>' ]GeZŽᣲaS/L!A{bx[eOg>D8o!~ϝd,Le|'|z ''o&W1~D[6W~Ѳ?#ei_`_KstO's߰J܆Wbx2#Ķ8~~G//-o_kykɍ|pIxtZ7U>Bߎ7ȿ% X~^G/Wؚ|*[s/h'侞GϒeSZv^7xX6_v{)+JHs6O#!k=E{,8X|[ky/NzXh|Oj/hϑ'9xWS0qx%G5"9-lh1-IQ2 TEDDYBER.MID> f m1q?{W^?Až aΫl_ꊆVsAp NtrqF4w ׏`$s4d= m[rM%n]Wy Y{b,j_9-iRgH,I'%sآJ=$SMsT@]EO\swEy~ƴ3\].godS7Wo{p@?*0&mk'.~c@?D_70yu{ȖS~Fzn azu${y=X ŗ?<cHr]0sWvj-͞݋n=MWm<=-4 `0{|!\餪t3fu=Z52ݪ,ּ6w \jiU(4 Kŕ}x叼*T3O/ e0Wee@9@l˧LåOTL0XɎ* : 7y /F&nTJ]El5eTšKhRb1b|By |ȦKB "ͪ P@KyNǟčΡy9RF @tn\MSX tKh %bgxl8|7ڧ-3wP]A@d~^xaX&c<[ گm,e^?w "ͪ$N}b1]Jw^*~擔'`"Y#OX`#wy(C  YFoLeK$}Ea0K `tq!d ^>%d>.~(8Vz E&w?!}`l8xvx({GLx#7ponbr -! {6Lfe_A Ӵ-ge]M;h"NoJm'18 *Am耱 w㢥ǫ f'﷢Z6:+@\'H󏷨`6#,H|_* %/ФV+ ap.pP ]WN6CU S=a9xzk]Q?-vw,: ]'˴I^ Iͻs:ϔ > cs|{H w?^ ~I^ [Yȏt\}*(cr~I7X'Ucn5jrM_sNK _yV4Q:pM<\+G?;WR $}E [-T֡T&9Í{cMs۪HN2hdi uow& ЮS%R.sk$Ga v3c'/` ӆ] 䬒hx&uƷ7Fbţ6by83ja\}"O"ے5KBȹ#K|Y^z+˲\ ~!ģ[d7\CO +pa ʨրU5sEug*Wm-8@ZDf[z\eTU MZe 3cG,V QEUk_OThN'R/L+i V|^zzOTx 콷y\XOx|mX"-lh1-t+tf TUTORIAL.TXT_ q5}ou{ 7.@?ﯷ΀,4RYUM6-}TP)SӬeB/8n"L8y{Ymd*e^Zdzv:iFi30jGM@Cy)g.lE#շ*E605\ h|CJS ?*Y~%+]s$Pu7Mr.q}/r.Ώfo!vbٯ,ּwfM| 3`~ezYgYzcKϻOǿ9c}҉s!!9SVmoU :N?:d mܼbtg_+kjǷK[kѰ̆Cj[ոn3 Sȼ0U| fJMc6,"XQ%\jmRm-V-`IE%lY)H _9b"-M-,DNC62Я }0U:M!*pn),ԞkXޞKGP$ d}D ' Xl" CL)Omax!\ޤse^<)%II ՔF+>I[:{D++Xz^AQy@,"xs-)HXQCfjq'J&j,&NN7J+6:eρ5"M*x]툟x`$$Nqk |r0HfKhwzߌi , ,Co1Y(~/'h(s!fD b=xuqzq!py](<{\FW1|rjab5Bg]ܡYĿ"%cvwGo쑛* "᳖Cʷo ڝkKvdC!6^c9aroGUJ-AZ6^T^<$yB/4 GY/X޵/ )T4us|ضBTKPX/Mӵ\G]c`O{å}IO%0j==YQD$7'R6Fu4D-l3mscvX'Kr/IXl5*wGeԍf:cn{̛m}S%z4aPz7EYGm ߑ;,4! n-m9;mm/3Nhw%%p\qy%7G{imkͅ2Kℵ6PV OuL>mY IOWψU5$CE_A$k0;_otPN,^3MJ[oS}U)Fy}dJ_+| ;e6~ %~~Ll4wLo-Va<>vT[{aZzV/:I WxB|xOycuaAMadison ~ UUUUXX $3H[nv /@Qbs&6EYjs'7I[u *<LXiz#0APgu8fp>>?`}f88~ ??0???p?~?p;??>>>x}>88|<p?p??À0?p1??|| >>x}@qp ?8|?~1p?~ ?8<q0?>>>><8q8p 0>>|>~C?~?` |` 8>><8q8? ?>~|0~??? ~`~>>>~?|||>>8 #<@qp@? ?1~| |~ ???0@8>?>?x}|>>8 c0?<>p??~ 8 ~ ???><|>>>C||>  |A0``??~7~ ?~o??><~>>>#|~|>  ~`~` ??3A~<7~n ???|~>>>#|||>?? τ ??c~ >c~<  ???0 ?>~||>>>#|||>/?<x?H pp?~c~ ??? 8|>||>>>#|||>g?<0?H?p>8 8`~ ?~?`||>O|>>>>>#||?|>G~<oHp>?||~1?~ ?| x>|>a?>>>C||<>O<<_L88q|0|1~Ãp?x??pc<88|<> > >>x||<~<88xp??|||???`?`0~x> >>?|0xp><8>|x0??|`p|.  (..  @ENERAL HLP !. OLVE HLP $1<RINTER HLP &9 REATE HLP (<tILES HLP *Cvvswݔ:90=;`dJV &ͿvboH^(GY=>mHZkBdxwY2?k?>sL}+_'k^E/f­~r)SrΚP^\/~Eo. 56'IJv~ܐA<l;TS]s㺠ky?Wӌ2"ᤜs|ܗc>ܲSQ<#Ffn· I+R33\ZEiQ WaDfk3cwU꼟V^g}rVvvW=e^CP^V qަkeZT7 v]ED0N9 fǝz+{t⎒[Db ׏`~98?q_6!z#a?z8bINbל5$^WT&@ o;'mr NuX<8ScXR1b(p4JT"~9Vpc 7!Qu:eZ#ωP)_@Q[pIӖ_c:ml opql]BO:06kJCBy>Ceړir0zpS_`p.T=G eKꍑR>Xڡj\k5'5MóS{ҥ=P'x>+/3& o=-׆|3F&d2?qC/Kl?y1ݝOk}IymjT8R?d~{*_L[K*ߟFV5j.ER}!ҮUdʼn#SIú/fΗk iƜ+iڅځK5h}Q{z814t2oʎ)R 6v,ɯ\eU5r1 K-q:A*iJ1]X$j*.VORJgƖ_x麿{flϹ>hܺzO/7UO4i2G&z([XœY1F?c%ժSrZ!@~nSabDtͳ,+9)M?T${D{ ɸ8ޖkzG1߀R% =p4e62ytOþ}׷J:'/n̽?kqN@7ȗ_z~,i!'}k0JunUƟT݅ڰYSjnMp~} -ôK f۶e4voϭ'Cݶx!e)rT>HIn]&7|pki,hퟌf%K: Q HiZYڳV-Zy4:1?.K|/ӕ2|T<[9"tL F7Hg˼!h\@r^&iqJ฼G> $&/->A 2b5]k Y01}B\Ey AO[x$} w}SC# |9n*_eWcx]c~q㲳}1uygf4CNJ* Y pՙ35Œ!TP'SS\ />V'~ Jt8s`Q;ddąI;sPI@Nn]X g3@L? ڦپimb4#śd}QXrk 35%nC$:Ԁo^0,>ۗFH{B $ |fqb3}zЭfϵs'oW Tʎrk4 J}צZcG~9r _da͛ P\U'7ohREp%aabDuo wz _e[q?<ӗl8'x$BʹP P;/ViLNYbI_O j{0zUs, 7a]l \6?ЯXnci1`됷_I g'OX88Ks]M~c*mM6{E~g5u{o޽?d|*^yr>ÒG9+bTյ S$@̖NհjmN+I짛d+kuGL&榮Jsyah[I嚀 krN HYmEWF{Q1k\EYj2asmvNI’A7 ջ = eLsw"_y^~== k*_$!MoO&xvⲩgFb =QI.}LT~:Sa3KFZv8/ovMssZYfxg4ؘʽ/Ea୨v4`bcܭ'9~ud{7FQᑺn5?&/xq5H{խvr>yIJ!l_XRs'%XPI{hFAXs"9a^W#˕`E | 3 :S㥃 ͱ87}hn*3.W=Ҩ*BD [I T܇0rlROhse`ع4G$;_{z&]\fX|Q;"҅h^pǦ+REcr/&U#Dm2 =ՉR;-j݁Fʌ l4({?KS>A % q%fd)]F,eLsIM8k寍;!w6{^lXw V7ZؽA7zvOpU62OPWfO`‡]ތ`nw}^n\$f7}ˌOw—~5kFϳ ݾwsTs>ra_~G pz}QFI~ң߾ۥqFc+ߡ xoZ+h.9_gO[?sv7}f'; ew@W[B-g(hɂjEj6R%y41oLI;_ *78V5'C:mwGeneral help file: List of some features of this program: * Hot keys: These are keyboard short cuts.Any menu item that contains a caret symbol('^') followed by a letter can be activated by pressing control and that letter simultaneously.For example the FILE menu contains the entry "Load crossword ^L ".So pressing Control-L will load a crossword.The options MAKE FRONT ^1,2,3 in the WINDOWS menu will bring the various windows to the front.Pressing HELP brings the help window to the front. * Changing crossword size: When creating a crossword,you can change its size However,if you decrease the size,ALL THE DATA that you have entered IS LOST. Increasing the crossword size retains all the current data.You can change the size with CHANGE SIZE from the OPTIONS menu. * Crossword limitations: The maximum size of a crossword is 50x50.The maximum number of word/clues is 99 across and 99 down.Only square(ie:nxn) crosswords are possible in this version. * Changing square-size - When you select a font for the crossword window the square-size is optimised to fit that font.However you can alter the square-size by choosing SQUARE SIZE from the windows menu. * Fonts: Crossword editor ST contains 4 "Font slots".These are places where you can load and or delete/reload up to 4 GDOS fonts.To load a font select CHOOSE FONTS from the WINDOWS menu then click on a slot in the dialog shown and choose LOAD FONT.Then use the file selector to choose a .FNT file.To select a font for a window(or for the title),choose FONT from the WINDOWS menu.Then click on the slot that you want when prompted in the dialog box that will appear.This font will now be set to that window.Please note that you can use any font as many times as you like(ie: in all the windows if you want).You cannot load a font twice.You can have a different font to each window and for the title if you like.If you choose a slot that is empty for a window,that window will default to the 6 point system font. You can choose any of the three system fonts for any window or the title. *Title:You can give your crossword a title which will be printed with the crossword if you want.This appears on your printer output in the font you choose but not on the screen as yet(wait for a future version). Help file for "solve mode": Solve mode: This mode allows the user to load pre-defined crosswords and solve them on the screen.Solving a crossword is very simple(provided you can guess the answers).It simply involves pointing and clicking.Firstly,of course you must load the crossword you are going to solve from disk. Entering letters into the crossword: To enter your solution into the crossword you must first click in the crossword in the crossword window.If you click on a square with a white background then that square will be inverted.This indicates that the next letter you enter via the keyboard will go into that square.Use the arrow keys to move the "cursor" around.To hide the cursor simply click on a black area or outside the crossword.You can move the cursor around with the arrow keys or mouse pointer(hold down left button).To delete a letter press backspace and the letter in the current square(The inverted one) will be deleted.When you start typing the cursor automatically moves to the right if it can it will do so until it can not go any further.In this case it will start to go down and will continue down as far as possible.The best way to get the hang of using the cursor is to experiment with it. Solving the crossword: When you have correctly placed all the letters in the crossword,then the program will give you the message "This crossword is solved".If you have only partly finished solving a crossword then you can save your current solutions by selecting SAVE SOLUTIONS from the FILE menu.This allows you to solve part of a crossword and come back to it later even if you turn off your computer. Cheating: There are two ways of cheating.The first is removing all incorrect letters from the current crossword.To do this,first select REMOVE WRONG LETTERS from the OPTIONS menu.This removes any incorrect letters from the current crossword while leaving those that are correct.The second way of cheating is to choose LOAD CROSSWORD in create mode this lu ;B(ehs{ > /R/ŠJ=Ѷ~Ľd]ډ@YHv+ehQK.\[l#]_whO0]k)vܧYzǺNK ;6L/f?Q-W_ ɪ?&k!r8uح+T>h[^T2r{M2ɞU'P~(#Ox- oSJߨ[ }a,Kur%n*A{8b4ֳUb }х-]VJwFxɧbIeǠE8w&O 1ɭ~28'`GW[fF>i؎̯$]Y0{w_B?NC^9Hu¿oĹGy\9:MsLv*x+rߦ^e!2]i,vԛXK^aޒ,wxʭuQz[wőQ?nO4PMy4\TGv\)ºB*&h]S)k5K VeaoDZ{ue;ԯGb K_ _BkwY-v!v6[Ie#"vMvz٧KP *ܕbނ(P+)IY2{_\_G}^wX!̾w ?DdSfضSoz",]u_3^i,EX^?bbN}vm kK_X $C8>WşՕxmzULqy{&]4^nfz)16 =oߘ~F"U鮒.'o1&Jyhi"]V]>Cx֊#UZ~fNë!!;Ǽi5ivO4=4m+W"_i3PMK?!2o5o 29(&5tIapWCxxd}?-ˇy' zLXO'K"wh}wڣHهd8pCW c,c{/^vGe7ZVvݔ \L-%),lcu> A ޙ"椕 )hN#ۉߩNrЎ߽hGWFybU;WlqoyDmߞrؗLۯ}$6no70mL;50s" s2< V: ɘO"7}NLv@R+o'SE1GnEp4 3,Z͑MoУ\8ȧSOؾ kfi1ɿ\;02 (5M87}4Tl{PY4wQ=ڊ?]g7 'w]\}_˱m  6Os_XD\GHw鳬N%R[6KiU߈Mw_ė;rH[R_I;U?yK7;WGvf1wVN@͌L=߈9 Z/_o+;yMG$[ʯ\aqxgn5Wag_C94|Ғ?DOn 7"˓!Od]zhg] ^0d}1\sjuښnNCM<W7FlۓQ]/jXz7gm"/"qP _XOj2=l179{6ɼ's6˛^rcԺzxI.<'Gk7Pm}gwK ~^0U5?;L},LG:?˳x?;/IV޲ f m1q?{Ub4~?XaQ®}}f EB4sQ.#M()nc Zyˎe7**V¾4G`lט1]W*{6r & ã2>;Pkz.';"0_t#$: S@@sR bZTxI w:6ohH3Xr{owڃwKDz i(/@#)n0TGgOSpe|@!X/..kūn9)?֠G#ʜqԇ^Ckdjvē>So) 1Qʍ{퀍Pdj_*ܔEEvE6r79LjG#r1%2)Gnl!J 'XŋB6m{t:S+G̣FP.IB=Ue' f'IV> <$dA:2\`dI>Bv+ 03gap"``U:!O,<@38?Y0Z$@a I{ y{(\2{D p J!xo=lN5xOH tk7pӥƒ x P t=v/>un9Ħ(u!>+|;fO_"," l`p,F,BH<,"   *--------------------------------------* The file X_ACCOMP.TOS in this folder is a Self Extracting Archive file. It should be copied to a blank formatted disk before being run. See the instructions in the ST USER magazine for details. *--------------------------------------* oads a complete crossword,solutions included into memory. Help file on printing crosswords: Printer drivers: These are short text files that contain the printer control codes that are necessary for graphical output of your crosswords.You can load and edit these in any text editor that provides ASCII output.Several standard drivers are provided,these can be used with almost any 9-pin printer.They will work for most IBM and EPSON type printers.For other printers you will have to create your own driver by altering the command sequences in one of the standard drivers.This is very easy and can be done by simply looking up the appropriate control codes and other data in your printer manual.In these files an asterisk(*) indicates the start of a comment for that line.If you have some type of IBM or Epson printer then you should ignore the OKI sections of the driver,just leave them as they are.You should not need to edit a driver however,as the drivers that I have supplied are very general in nature.Codes can be entered in decimal or hex.Hexadecimal numbers should be preceeded by a $ sign. The drivers labeled EPSON are written for the Epson LX-800.The drivers labeled IBM are for the IBM Proprinter II.D stands for double density graphics(120 dpi) and Q stands for quadruple density graphics(240 dpi).For large crosswords you should use the quadruple density drivers.For normal crosswords,the double density graphics gives a much better result.If you want a preview of your crossword,then print it first using only a single strike.This way you can see if it fits properly on the page(it usually will) and pick up any mistakes that you may have made. Printing a crossword: The first step is to load a printer driver by selecting LOAD PRINTER DRIVER from the PRINTER menu.Next choose SELECT FONTS from the PRINTER menu. Once this is done select PRINTER CONFIGURATION from the PRINTER menu.A dialog box will appear that allows you to alter your printer output.Firstly you can select whether you want to use double-strike or single-strike printing. The final 'look' of the crossword is easy to see in version 2.0 of this program.The printing facility is fully WYSIWIG.What you see in your windows resembles the hardcopy very closely.This is because the same fonts are used on the screen and for printing.However,note that in medium resolution the screen display will vary more from the output because there are only 200 vertical pixels as opposed to the more realistic 400 in monochrome. You do not need GDOS installed to use the GDOS fonts. Help file for Create Mode: Getting started: First,you must make sure that the program is in CREATE MODE.The current mode is indicated by a tick in the MODE menu.If you want to create a new crossword and there is already one in memory,then select RESET CROSSWORD from the OPTIONS menu.This erases the current crossword from memory. Creating a new crossword: The strategy behind creating a crossword is "point and click".The program has been designed so that it doesn't allow any of the following errors: (1) Words that don't "overlap" properly,numbers used more then once. (2) Words entered without a clue or a number. To get started with your crossword,first choose CHANGE CROSSWORD SIZE from the options menu and select your desired size.Now all you have to do is to point to the appropriate place in the crossword grid that appears in the crossword window and click.Depending on the status of the selected square a variety of messages and dialogs will appear.You simply fill in. =.. X_WHEEL TOS>-yREAD ME &CARS CPTr>5COLLISIODATv EDITMENUCPTy.[EDITOR PRG}/w5EDITOR TXT=FINISH CPTDFHOTWHEELPRGVGgHOTWHEELTXTp+MAINMENUCPTvTPANELS CPT6 PREFMENUCPTcSPRITES0CPToSPRITES1CPTQTRAC0000DATTRAC0001DATTRAC0002DATTRAC0003DATTRAC0004DATTRAC0005DATTRAC0006DATTRAC0007DATTRAC0008DATTRAC0009DATTRAC0010DATTRAC0011DATTRAC0012DATTRAC0013DATTRAC0014DAT`o` G# k # Ј<.@// ?<?<JNAO N??<LNAH YOBWN(BDE ` R @RD|m:<|`lN>|lN RPRE|RRW`JN8@SD|0|?@BC`(0C| RBG00N RPRE|RRWRComҼeXOLNuHEp0"KAPNN7Pp0"JAPN:5PXDTC|mBD y8`:2@1P|l1PTD|mL NuJ@`1!U@fNuH"y $A$<rHQRQ"y A*p rBDH6SCQRQ@QLNu yNAXONu/?<HNA\O @Nu//??<@NAO Nu?/?<? Extracting : -lh1->5P CARS.CPTb>/˷mm0dԥkۍYIrXM0g/Ikef vS'rBDˌ"W"R\þ48?VG+6c"6ΜK,>{K7_c]`O2ǽ]]_|kw%9n@ ])K,m*j0bUr0 1@jY7Eb%)}}YŶ%t乙.NNxiT"rQ%B&jwΠ|PXU/՟*iF7å֒od3 Kp~#<.x3 6SQQMv xv2s/o*WoYbEȞPt}K& t4<%_Ȯ% .O&Er| =/f̅]k[G5eM>rFxΏ.(2 ٘aGp۰^4`%9gAZN"Y6>L!3? 4`&} 'c򤗧TJ_u>鋼/wU$l3r8]}9C$?5a^^['jgi̫pר(E84?tLOD_i=bMd+d+j]VYSk+ O+q 陮S<~%ߥd<-t7P&Fnt :GXN1-z8_}[IG}Wp^If;ް\ ~ѐʓp K4l\f)jΫa_W*#HzQ#~(v=get'KA3w1)]$ϑȞ l.pY)gM h _5[ꪞ )NBBY*pDvÝ-(翇n_Sv'ֶ^p,!5,z?,?~8}xկwr:{]whOYR/@׼<}1{ ?6*g׮TCɐ.q*6K/bHOf/v)|ggTRAC0015DATHelp file for file operations: Crossword files: These are files that have the ".CRW" file-extender.Each crossword file contains all the information about a particular crossword that you need.This includes the positions of each word,the clues for each word and of course, the words themselves. Solution files: These files have the ".SLN" file-extender.These files are provided as a convient means for you to save your solutions when you are only part way through a crossword.Choosing SAVE SOLUTION from the FILE menu saves the letters that you have entered into the crossword.You can then switch off your ST or run another program.Then later when you load this program again and load the correct crossword,you can reload your saved solutions using LOAD SOLUTIONS. Help files: These are files just like this one.They have the ".HLP" file-extender and can be loaded using LOAD HELP FILE as you must already have done,in order to view this.You can also create your own help files as text files then rename the extender to HLP.Once this is done,you can view your text file while using Erossword-Editor ST. Configuration files: In order to deal effectively with all of the options available to the user,it is highly recommended that you create one of these and load it each time you use crossword-editor.Once you have selected your printer driver, fonts,square sizes etc.Simply select SAVE CONFIGURATION.All the options that you have set will be saved.Later when you load it again they will all be restored to their chosen values.Also the printer driver and fonts will be loaded as well as any font settings for various windows and the print options.For this reason,it is neccessary to have the fonts and driver in the correct disk directory,as saved in your configuration file,otherwise the program will be unable to find and load them. Other files: The other files that Crossword-Editor ST uses are; the printer driver file(".PRN") and any GDOS font files(".FNT").You do not need to have GDOS installed in order to use the GDOS fonts.Any old GDOS font will do,You can load them all.Though some look better than others of course..See the PRINTER.HLP help file for an explaination of the printer driver files. . -F.. -ONOACC ACC .LD ONOACC TXT 1O{/ 7?5cR|Ք4w6o\MYZ8WS-;Fq"JQYBJ%/P-wO., ;%favU ݬET1V+/Vi챙b7v﫚\; pʵ0DøS(%_&oS[>H?yy;O}a[8{z%IG*^n'f7.7 mݺ_5oI7g=盃^Nq)їɰ8~nanBmDF;WonЦ a0V>GXzEwU| .ؐs_*ۄ]:tq=/.g;b=ʺ^{m8L|5N/_]{?>6:69bStd=T#Z4 yqhY^?߻/a:ڟS8>G`>m>YOϚNi=<`T:.@^\` ?zM45_>lSأ@կ~,~q_o/X#S~Z7yWΕz3N[<Mx=oH?ǻ_k (?yhz'(r0SOR#.8o7?8 =Lu+Us(4ov ns|ߊ꿫gp讞^_=Yg^ANNS= ARݍ']ՁctI:gACе;1g<=r\ v4މ;gPjuUUqSfoe)}]|'h}׺zf~V;:aj mu7D;ۜڻ̑FwC{9;>㿌 4ӹ;eKiYAPXWMO?^?^3?uRl&:"*ݢI1h cߜx>Fݷ~Gwþ߽8n_;L;ww'?3r}OzLmBK+Ҧ cj_r_eM5IVyl;5kyF 3_3SQ9>{Yϗ~7{@ԣ[s.2TRggg&Bg)j&͹mWzꚸyXԌơWMۓHk`L[WrH2橮xj_3B.`[ *0- gFRurDY-f@Jj9kr.{pP˿0Gu_gd ;j<5әZ5ߴsSCU>$s/j< B5~.q%b|>5߅@èZ@6p򴋫|"}f<K߽x5u G4G/c~@QԄC̀}tǠ^y >%$?=߽&Wx=VSΫsAS?5ӄ^ٛvnFqw=ogی@?|_Q9^rvn|n;?g@~^|v/X{|?^ݿ}7rxZ̻Ǟx_O؟&vD4[u^#m@3ƨߢ"ߋ=Xv2<<B/ 71|>bSKyYFZ{?wcMG<7Bv[o: >+w1m|k>¯W2{V|U!? ?1 KuZ??$db2mYk8g`[-q1lO6(czGG^Oy,_Tf`U}yO柷haLx|y+JwxLЩ/=dIea']%"r ;/A:3ѸtYg]sϿgϯ?;# 澥|UƢkysrN`ěn^Rvg3\4NYR;"U'fJ¸9} -;v:i9+`~$آz*.'{.;*w5{W^ iqỐ}XN2@n -1Cјo_)?dix]a]-:I_Vn ~T;ȿ)R;g~k9g]Y5e=[? A*zLY 1kUœ/ZjBY\};3l'o ǬCC}{u$ri+[ §p} Oӡk>{Oh/&a~/ڋmboJτu6g> WjwR 8`d˩>|c1oo ڷǒ\{)[_dۃjO1Zߕ$Wѿ}< ;_iOt<?:g?HsgIQ5R'B?yG3C /2k_o_ ~~ŏiuw{wEc`,3I?W|>qrd4*S|;E[سe߆T~,s?1aÕaèbw1?~'e~< v_ _/UcHִM\,]_?kz#*ZTom8?78#Bύϛo/?=/u]oљc|#aFL~?PW::jaǘy?׾}Ê-b^y~_co%-N?.v_lw-65V'9fw39`?t(5#q!lr9v^eS?>kaޏp2cĩwy%^I`n̥ *4BI6xN<RM*J*K"!-lh1- ct COLLISIO.DATǹàf0fy[dݐ@ r#:B0閦Ji%t;G^vp.'XOϼPPp^a.νbl [tWh3| ݤgbԧ2TJbo EKɵdi̲ZDqUlem6(3gY&9%u- [~:7rO':>?LuOпj\ ?SC/FZ]>tC9 e#y_7@? 8d,w@=[rpHETFKPfP|Fޒ]+ gydxۏ.;qW]ےd鷹‡3s7{,/~w-{`Jaev kGqf |$?i뻩ԽWZ/V7Ez{+HLQs?w< KI r0HA0r0HA0rAPDze0HA0?<,NATKWI ^\\rA4HA00r?4HA00r4HA003 3 3 3 3 3 3 3 3 p3a# 3 3 3 3 3 3 p*a# 3 p2at g g6# 3 By 38 32 3, 3& 3 3 p/aJ9 gay`ay3 3 3 3 3 3 3 3 3 p3a`V0??<+NAXNuK M0< 0ej 9bbQ~B@BA-a\ bFB@--aB ;b,B@--a( ;b@??<-NAXNu?<?<NAXNu00 Nu z0 Nu z$ 6NuH e d"8C "WdLNC2@ A\p222BQ"< .0<NB0:Nu MonoAcc v1.0[3][ MonoAcc runs only in | high resolution.][ Sorry ] G. McNeil 27/07/91MonoAcc v1.0 Screen Mouse Clock 123456Date: __/__/__999999123456Time: __:__:__999999InvertFastNormalCancelOKWVVlVV yVV VVVVix`0E@1P`" @ `@@ @ >8 `@ @ Zp v p`@ 8 d n        "X 2l8000 MONOACC Version 1.0. Programmed by Gordon McNeil. Documentation: 16th August 1991. COPYRIGHT NOTICE MonoAcc v1.0 is NOT in the public domain. It may not be distributed without the express consent of the author with the following exception. You may give a copy of the program to anyone you like provided that: a) No money changes hands - even in cases where the charge is ostensibly raised to cover the cost of media or accompanying material. b) The MonoAcc program file is accompanied by this documentation file. PROGRAM DESCRIPTION MonoAcc is a small desk accessory offering a monochrome screen inverter, mouse-accelerator and set/read system clock facility. Written in assembly language and containing its own resource data it uses less than 4k of memory making it ideal for owners of 512k machines. MonoAcc will only run in high-resolution. USING MONOACC To invert the screen simply click on the invert button. This is enacted immediately. A mouse-accelerator which doubles the speed of mouse movement is installed when the accessory is loaded. This can be removed or re-installed by clicking on the "normal" or "fast" buttons. The time and date on the system clock can be set by altering the displayed time (hhmmss; 24-hour clock format) and date (ddmmyy). If you try to set the clock to an invalid time or date, the old value will be retained and a bell sounded to warn you. To enact any changes you have made, exit the dialogue by clicking on "OK" or pressing RETURN. The clock is reset only if you have altered it. Click on "cancel" if you decide not to set the changes you have made. 75ӿc>ootnzO8rZ:޿=^Q3}?`pZfuu?W0nlңFI=y'v4ِ쟨W/@R7UU|] .P}?nw$DN˿oiټ?0?Swɂ=isPL){O+ ߽ёۮ;zm i]72~]w~5i_n^~{~.e}?Яλuz]}޻_'9?߯[ӟ'_)s:+l^'=W]{:_\75`sy=){oq|ߟ91=cb7s?;wA|?A߀k=úNP]|JZ}v8}zl>gIb~!8X~w3VpSNWw@!d`|gO'ua{gB(76ⷠD]˿=.}ƾ_6߃.ɔ:Kiѐ;|6_>ۧM}T?:3}e 96/k=8 'j˼ǽuuN箩sǟ?;=g7A[7o9[pؓ}=OnоouIS/"-lh1-.[iT EDITMENU.CPTbcLˮof8 Zָ$] @*1)Bg( ,^h_[ck s)i'i?iWvz75ྌX0^>@@~Q;e> ʬ%Ea.yK/1aU`[߀ !A& Vy tw0#rhII;I'piyH.RB#}7IZAjRI>H< _&mCi%́"AetG=mJ;0QI;>JEfoP+-AuR'sPZe >E ;B kjOkEjvMϻ'/ؚXP}5$XasX_;|}rvɘ?vt?EL/[S=<3^EKvDsWJ[mkX.-w/[azV! tϽz4:J)b=i@9pw5!.j7T؂<) %K΅LX_Eѽ39|K:Ko`h x B/t /fDlilkZ2aC>sͼ=!AqD6wz\>xZuH{)5h.p bo/nIv7-9>&툻:|ێVv ܣl\ uD{-UZkgazo}^f%qj-9ZƊx9)vܚZ6x{894IyeES] 9s y/in?s9[B_g О^~2n]Sl.F> զ˗~z[l=@e\=R yy+W7u'\Y9Bv;>=z<ʮl0xIY9E~}β9m7xg"6r0N~#_َM_rO`8/*1=ƧRe+#oŷVAnظ"t[0c L;t`}NO^XTO3.~.ߩ`(zwzg7x^/q$7 XNWp?R7^_/߰oΒ \ת/S~wᆴ6^o^Ю],zоK PNeY6[a}{:Z3fs`?U~{ \sP?ȱ%Vr>y*W_@o2lѠ} ?BOſK'>ޤ>a_o[P/ݔ<ȿw࿠(pQAK^uNQT5cC_O\g'#cr@'nZ~y~4|`|8Fq]GiC7{|EJռ QEAOjlE<DȎ%򿇛9 c:oY{~oT5%y17֠S_(Z_{\3׫A9}_Ƃ]|zō嶂B ~Q]|Dw_)Yxc}lߪRrޓZnAV2f퉹@ߵUq7q o7 g'(=_h4(7v{_Wǭ*I*%Y,1>,&WvŭPg:l\eAOBRjX#ݼ(k7) /y 2W|vEs[ UK3<̗x$B&X-zxYPCULy"v&>)WdW:d|pb͡a9_|209x0{/?QcWxڪl3?E`R7ݪkoؽ |˗HW_{38_Mpo::xG3y9U_{ss_`<5 e\>Ko+R :ܦzs/=quq ŷ۝ E=4ޏ N>IoMO;]L@,ǁD,B~W7ךg:[ďCxؼXW:`4ŇK+6sjζ}RuMw? Jk7ܷ<8 7pU"o/~i߯@`ǝGG]ڿ<@EIW\:֚qjWAOZ5~/Oɤ?_?~ؾ2? -H妿'SE5Py)myE89ͯP|oߎ91cSz>{};O'#/gعR~4=GYY_V<\o7M̻}%%{vi@^5~#\#6~/ꮛ|Efݻ޻OB7H=j"__:̢Q_;H>7 đXl\CU>/%hw%x,gT>DqGxr3,^/PV7ڧS<^{OґWC?,sv{j>DG>J/ qgo^R\e7e㿕IjTeav{JW!-2NمHǘMGO3 sC_ |3c%x_\zKP/äÅL7~u?y717mgƼDFTݟÛ_}§xo>yOJ6ސxZe %BCyXRnme7Qáoհ7?^s>Ssnoj[=?dM5N#:_λ??5vZE]KS\;IP 2e~:ǔ=A|ai_~_u/:_AC&* QxC/'{EW.Cv?O-}-IH8K~.39'ʛ  G'C{{R \}7r WsàE~˿ȏZx#;29Nq]R ~x{~pp,"xG(~oxK\9 `.|D.1?]aFk=6.p<;薓gOfle cץ`cOS~}uJGԚ^vՂZ:!Q\X# 집Ѕ]OmS(O0I4y5"h'ӕ ^:澓Cse~8,gU4r}Ss|ߡDSSZZ۾g} |'t9_.?\ ^UMp@mꏮ7W}إߠy`Cxѵ_oʹ?AP]߳w^RGJI%UW?Ev-s:?n|_O)8,rP%s?hB{Qwk_/{;<㽦uNhN~=T{^BCO[{.w'8~OUt~}Wdž~Y##}yߋQrj+q0J_>3uwLHwV|7Ğ&>R|##d~2YfdR9ϻqSo)`ys ˘Zᬏ;2%w2WI近)U!g Xp}&d&F`Gj(F1H="e0Lyp6ryK?*i; y[:_0f𻭖{XK)[;ÖU\O8kqK9r؝Hpu|}z{alk;g|~nW緧WE|FY7𛨔Lb97SjI`Hυ>a2 T-_FO|YI\w{k27.m"rby` )n]n$7g*ˇho-*s#8̛WΉ-Rs`03jI!R,Eӵ'AiGMox|TSMT*EKqoF[@n}m2In RX).r '~}mO qX@[WSk6?X1-h:Ubo6`up|ā7YV8<c:9^W8#t3Ny {y{_{m'~xpN5!Vpp\Z2{\VJ'Kц薋k >OjMD۹:mGcZ2iϱo/ϻފPFHRKH!&sIi|FR4f򌨱S{^;6^*Ӿo^Qs^B_60-e8bq9 ^ x@\V9XG6=&]۬ CZG!v\kX]Xln_1WЌӚ}xqN[%g_ZH4^v3I䫵1~ϚYpyоjپJvk[=VCmiE[-^/koGKcqM\-;M^ӪjWn8-Uncuh{v{3#D7HUZG0}~S&(mKOq;sQv <=#œwz6ܑUzAvϯ/^|={Q9|]WW' h/%vk#GTHxP5Ce@I7ڨT. c"e BvM5y)oS>>|!<ןb7>#9coUv v*u=n܀#)?5w>.&$*$h4#35DUG}RV_G#"2.%0"_Ya?h_R^K:2+Y7]M7Bp6nMdy+QXuT~!Q|6YRUs'F,g ΅QWSɺ[gkZbY9~,s .%^y>!dn׊^c'BGDw)8()-*MFsH!k w'=%W%]{D_/bMe)m9VW2#KKҤpeJ1OkEu'-wtK=&u,ȟl\gN2Kcvp!@ˌitt5!$,J ;q' ,%|^y3:yvm? L%kp b 3CPF=f)[-C!zG%$,dOΔw) /»@ΘHg3[GMI77 ☾ZGԤA8btfL | {>O>BKyȠ+3Rs=祋=jdg{'r1|+vOO+-|1&{3 t;=\W15:Gj)u{IdO)Tߺ1EM(W~#U[u{5Ϝ0ʹ\uڽw^joVt)MA#̧c} ځhM_ŰC_Ů^p2+OY^$=ψET% _ؿw+;E3SFL~~ jdӪGmHg~R(eNYG:~Xջ_Y,/Fw*x>\| {牼{-;ԕ ۠~C|!q߿=%D]]'Ubt$I#ǖ'a'&"v\L\fNBVyNv%;D9Ug}Lv%--Km 'Y,l'k\YF~V% w o: {Bk<:,]D 6J-9]WlՂ߅eզ?jm#ҭ[:yo_t;cMkD:rE_#o3_{ ó7wvJ|{ 7WV-F@5Yx~gfUٴ&.ߖ^HK%]2YzL&)eo(6ݾ*-}=62prW5x՞ހ/+j^6d.h i',G5qqcOQ/YitR- tPCjX):zJgUMe+4?w\NJ`74a/0*^.Fzͷ}=U= rdRCM<4|㯋r'߶:x-QXFPlB3tG#698ڱVBuDžs{^Z8FKl֓@{o^'RmB= p|pؘ0)QjE+ޑz=a%=f:oM{TGF~#:Te|lNNRw੿އԗ4PY@iFiL n'xf,dצU5&G>z+5V7t= oPf+#دOUw/.vֱVHF2AϛwU7ƦIXV!W A&` 5%B&$Q>ZUx=YΐeY_Jn7+=]rzf@Fs\RW]~ r?OZz +m^`;ݎݛ=}Wě[J,.ˌnO{K$wD#7EZ]BCy ,z/_|9̵7CxS<]slMs򄼐zQ*c~4gՀ0y%6 |VU}YQZ락ӷrzXAD}6@${__+f$EbOP;GZ8mtw8y6};:签bT FjJ0bӺO<%:<R&"sb^@ %݈{ګԪֹ\#u>1.b87p5ո{PRVq|7C"Pw y:;R$QA46N DÑLz$ũQ;׫[P*<(JlʙTQ5wZȻw6p ^,/^?#:QeOLŒsM)W $W[y Lśs}S|XgⰖzϺ5q@'U&gK֑Q9h-,,/%bT7ېoA[b!6*d;`K^`.IT˒ij&5 b~VX' cCƿDPl,KӴ)ݶܨ2™#1P90i}ds5B_}3)wOj2*D$æ@ u-lh1- O` EDITOR.TXTϑu?`}?Gú奄 ?w4PX[}hӢ*ʡLK66]%:&^,̓Cw_Dqݫm!3k+CMTm7:)[)7F (Cq-PȧJ*Y}1,hs+RA# <' 犲fX]ƛ5CvO%nx<Kπק!F.f³x3vr BU:nu&5.ԽB(YO@il㟭O[&!Ř0ъo[dyi+!g~vN8:ň =df=q!.3ĥI4vxs W}*)vd(QjG]qmB$5dgrl^/eq V3r n~QODwï>Yhj(oeՏ}Pc%߫hN6y9s-b}#<ߒeP'RQ,(Ѫ'ĊI7v.%ljY-r Jk=OSx.fb{ZʭiAuzim„evDAѪi4lف6k0;V*j`~(cn@Ӹ83}F!N3Ց;kI%U=Znrl䚅fq.fvt45g^:pt9S,PO|^}#cjPly/_Lc4,n^eG ʒ;0mvK Zu}78zR"݇2NКo&eU*s[qRnЂ5)MalEKCPIXSp e!qNhgC9OmiJ#N:AbْG +OjsA]MsBJ_F'^ׯDM9l`XȮ3:\J[2.=<4įk4&.d7oU^N4&59ML #*Uo.@%@NLZ K Wdc)";8u. ^I~٬4 ٵ3Qw[ԹL1"8*ڕk硚-"k7ZyAi)/mPjw$Z‘'6'o;gNO k׋OSa@v bϝj{oAv?K!NZVN#oSN;Gˎ_12L8Qܽ7HȔՏ \&#_]wle3S>~6QF$m6S%MvxΛUnyWw T`=tj8iq %t4Ft?x#rC,Uhz`\.SMǿ< }$WVyd̷!̉qOp?k8۫%9+U\+!ٵ\['A\t5ǃ$it"~E}_А5vyq[_]tF b{B wi=w,WvfR󱭛6[R mjkz1efjQ1 = JvoWz SW ZbOFOꜧ/υW7f'~ v[FwozMvV1~<~<ϜϜ0c~~x?x?c``1||||ϜϜ0c<<??qq`8 3xx pca a<<p?3 `cc88a||ggӀ,,3 `ca||g3g3PP@@ 7 `c<<a||@ > 矜c<<<axxxy? << aqq<<<<a8???? `??`~ ǀ8@ 000 yys`|? ?||??<<<<9ϜϜ0c33xx0<<0 ϜϜ0cyy8<<0ϜϜ0c|yy<<08ϜϜ0c<<<00ϜϜ0c<<<?0 p?p?????lG{I74T|g7 i _V~2M9oC  ~5ɃK>53;Fb馂ߏzm? gGjFH._7.́f֢܉>_~\ Ց{KkUa>z{q0dz|ilg<\-/4ߑ}loMt klOfG<>/_XN|Qk?IoY0 &称==S7P5kʏPjd_"dwC-ڃ{ml'|tNlz~O8QVd9)~`0eˡb5,_P&VU%,YjŲ:Y.ɔN^*_|xڝhDa!jlkU~CMV9_ai=$>wy>9Ν:6,>ػ<]v{^~(_i<;_tI?^56k=X+}/:~79 knc`i-bس%Dτm\i}OC7eOx>59-JO>]]i+LܵŅFzZVSPk1zjֿbѩ>>E8oםrpnnIM09GMJ9Iڥ|j[ qƷq[D۵"|-yndB%$9ːpsվ8sS63q (-lh1-FR FINISH.CPTJbsGÓܷy}ump-¥x4 U$ SPө ucJ"s4PY!tud\z€` B䜹h/ś>RC٪W8zء>VEE+As A^e~}.Gi6Cd Ӏ @/с&O'ض!-Wƞl p4Zz"Gq//w?^O~Nm  i0ظf_w7 8[o.0ς^yy勊s=T㒵6GaVڨ'Mߘ]zsu_ú=vnޫxT{}1zjnK뷵xjg3-'.^yUBL󚡼2;^Sa֮kS.,4ǮSnu8 iQuf-^tʐ[%U;M9UXiEXgfh.|$'^ 3Ћ;$ܓ1'+hl[Tܦl!CVP*]b"ܣlJX+c#^1ěr2'$~I J+V^(/}B4~O:븪7ơj~j~$vƷ \ssrޤLd/vr\rf$2{hkva7zYFWunEԻ>rҴ{XT{zd/^VQ5[~TkmIR}'!z) j "0eb BI<_mI_SïjP}1t$)D_F_z9~2ēt_?g g;z rBYGsO-:yO#[u?Aڟ㭻LuJ^:ۦ7{0:ۻ_|i-s^3ېMϠ3GjyJG͠8> 4:< 1賎= O}=;3JZߥO]w0|S9aTKo/<"͝گ_]jK}uEl_~t NJB{K*q[/ݐysIQ:?R>vW~+p$,}+'˺UѺ2E7PuATʷ:Krp3P}Efnɍ,j3wrX!:rhgǺ\BoE+r!r:ؽrfZNU2h; *WOdȫ@f6W!i񸧋l'g?cKxY-$  Ȭ|%??1?";rԡSxf>{VV5)G5syoL!Ѐqk3#ZHROe6C_2د?6=~/^3xrM=n)'? H n}:Ds>LiK)9AHxg>Ɵ/-̛7Օ :8g[᠂9Μr1eVz< !S.d_ GcH9.9ul!'w.UۦKܒ!O[hi̿ﰭvЫɿfwm!G: C#+ONG˺mTлߗ =h{[Q"ړYO9~3iyXqRnKE|L]w 3 [{<ލ!j̓~3 q4w8DF^{Bw+(*=?h\jk\ u56OvWDuӜ~)OљC\[3x^pGzwWoMøh"I?pC픒{϶cj[vxh /5rfT=z݊: 0wr"a-7{dYj~Ο+MM rz^[2ؾZ4|x~]KtL@%|>Gg mU6!C W>n3͎lsu63~2hc=L|wR ~{s2gUf?F?_3գ S˒"E#|QuF|Oڡ̼?/}o:M[<͖}L-Pǽ7zmγõr>2s黟Zs}z w!m[G?Cr6ͬf;\\f:cvBz_Y>d^KV74ʕ~޸+y_ЮmS{k̖=Q/>gە6'Ϧ6_-uסߵͷ/=Z<\0zKT;qL\O8~Y1g2g0g0 999?999?61g3g39980013683g3g311~`xx1??16p?00gg33| l31 >33`08  ??x?x??? LJLJ8x`??pp ??880  ??``??99p8??88LJ??x8888>8>8>999fp ???111???99 <<xxssc??33999 0UG/{'2oC]gj׌+~d_.P]= ^,}>4 }D+c,uտo'9yCkwM;j}?eyWiWz/A?[Xd*k(nw-'X M&pioEP̞ؐ?BOq$^?YpBlBZY'e?Q+t?<`#ygt Gsxz#?x5E>cl;E>ܺyH~Fgb dyNeG;{/i?b$#~￯,"01\TE}x0eQZ:n3Piym ^>  3-Ed\8zntîyϛ@2GZ<3,y\UΪ|K}?.B:6x=iA=A\y 0a/X֙f'S1Y@,Sw?XX}+4t+1ɠy|^W-LJdv55p׫4>M9erO!^]Cg۠[n϶nCIu`},OOn G2`.o+&'#}OyvgZ(GquϡV-I6xg5 y# ~e[\lejjn!D}Ò~.|'㟯SDe<7f@ 5IsEC]"~sPҟMkzܐӛz{Vhp`ZuILGԌ{yyw Ǡf}|w7A^oXѯt~c^ s2,Y@&?P*Y+NFvOSJWDĩV!O?]~[mX] S)꟏/ (OIO&j}[]b~DZprŸMDwߒkzZh&|^'>,}2O9Fi+G}o'Yfv.Dʟر`wX-O-ß pwBų731tf>䰛ޙm hU`p~a<ϑ=*J_SS}gV֜^1wHxBoG1D.⍊f[?4D 9?=b2;e'}y>ϧ&B6E}\>\Sll"%'[]|z5iZ.P?mX䓜5zRΜ_D@eۯYKrz #N~ܲFO ?qYB促L"X)mFlҷqlKk3&}X Ќ/]ҏ>]_[C4ט*aWz}qOi/]c0}8gh~[Ec-%2*Kq^zfsXWz_/j߂/]M}p|ܵ.].K mVD :ƒnyvji\ˎwkwW^cg-fjgD"}OWYD+UuUgCG=kN]=x,)9J2-B6v2I|.w<$R*EtzBl]8­Mپ :??dyu+w'Q ]|:FzO?~/`l@X~'b}Qo35_31aj~2q=W/Oj'.vbjR 8Oή9TrXP=Խ2N ӭ/cuD.U~0b,\Ƌ̺|=y[7Z67k{όE`"1Z|:Bn3-7pBzq|v4`7`ق%t,i=E=OP]|z`>7߀gH.'1/;#+!!r&28Q{DBgin$K޹m+Ǟ|z?o Ց9}B>񭩆*q?#<&g);J | ~y3UVELLyE]odf|_K|.|>#!D f$B*4^7݀ys\giJV}ZO"9ߨ}&4'X-")z%NNb>S i6.O qqzI8 ~$YKsZ%|CuV^~Oņ^טOHKۦ}$^ܸ 5,\yr.#/?t^V)?I5V_H<[wh=ksgx OW FC O_)5)oz(nd-UTF'X̣ɵߐZFWGZC~sO2b =e{ԭ7\_Ұ 8Tn]MjuvQŸǨd,ojIp0Χ]ҘG>aӻ@Q C>uz&g>"1}WxZ7y~_".FOh5Y{/OwCف_F }R#:_,{ϼ򻧅eߎK!Z|%՜;Yovv6ek}eR<.-! m`o<}st츄+wx# 6N_@Xs?Є iY/91(y5s/Cr^9W!iE"?k>-YFNMI<Xs:`DU5}30n_V}ȷ˸w'ܠ;uZaTWϷ=ʘi-Ԇ5Pwo=N-IީZ"-lh1-)GgC HOTWHEEL.PRGa_i~O "ع],v7d5i2]Epl\7wH;?[-iKzO"}qRM:q:.,t%  Sݱv"3b(K\k3'0Rc DMp'|2!>`a@Toϫܷ0= 96qZ-̩5AK_G H\8-nF0RoK%d٪¸ݳ;o--V6=r>DkAO=Hjܼp8V!]?b͟wS, [ZC̚+|I^\OPӁԹ][HpzkF%73o }Wvt2E7#$x*j-NwYZ_KN,'*጖ygt8K 6t|yykW3;!b?w`~X\%ـ'+JA;N]z.ͨ;K)0zQS6ڠ4D1=>[r n s,S4./FQG{+}+=m$A<<::]oidk!aN":^zE~Hњ'߸d7_h_ObnX;^TBI0KIR[fGg'xݘt}h딿q߿է-®]r|D ܃A/fxncț5 %ųϴ/ (e'OFx)̃]/U?yi(,üPF)31m>oӔ^-#w,7\|d{eZMZ9[=rݸοYoO#Cٔf->HRZ-X֭U굒nZwZ  ͦg?ݢvEGYױ =SJ=z\+ Ljm:~]1D;~ WlL1X`:U;|9sFW92x Lg8Ad9?w塻5jۇ;t'`K]|O dB677& C+`1]i?ۏB'@U: J _0T+ayy ??ss3998cyy'' ??sss??xx? ?1?1 ????GG0 ????????__  0 ?<<`880΀ 1s `a998 ##990π 0--c`990 ''990π0xxsc8g990 ''11103>x c>n3|||Ã<330>y>y%%}c7l3<<x00=??>y>y?=so3 p88mmx<<c`cxx3c p????<<?s0??3>w?<<||p188a<< p0y7<<`8<< 7<<`gg ?||| ́́́3~~~~@@@ >>̏̏3pp<< ZVip.%o҉S(MŨBMg{vlm}Y dΝN[7V§jƩC џTP Fp͜;SDyʹ =rܤ{۩ʝ"sS3j )FpNE}{4䯆ZmⰟGPd%*tܷ;Y*/2dK՗Ze>2qfmn%EO9.-)0{";̀}Iޑ'}NNvKP;l;Cöv·m)`ZoƝs-4U/gpkM[Zs}Dtx:)AC?";N m;t^08$r2mlFrAR{w89CdMf@ [}4 UIF"Id{_Kו'KtC8}-Az~TؕP}I誽4ȭ3Z7u{c{7xօgYVڳV/b@whf+>Ƕ5o176C}MņJb,4/8| aaR'HC>אR~S! fɾءI-}{~L!pp9f5C8&[(HIݮ8p!Nݥ =s/F2gg~5Fe"j\|rY*W3,݌`ᇼO7{ݍeM.¬ibTGq אIɓob[,oosF ^7XZÅ#G1oQm.+&esd-'K9;A *UOlo6o8X*=?s .նzBGr҉S\BzyiGߑz#ryf$Ȟˇ);\In UUgצmmv_XmmMlc[4j_5uj󖯖l-]HzyKkt?͸)MӺZߏ#[Tkrʆ9-J}{[0~߭y;w[imeS[YT쪝K-eEr!˶?^#[LU>}_kM*{He;;ԙYw n.%>p^wV,12Mnd6~6$QOjoY b9 W~mK_NW;f G!~9U7vOC1bM&rM>&3q-Y8 99 9̕ h|m9 Q!I| xWݐna^v<9hoL!VNpC)_TO%Jn :U"G HOh=]oMQ Z*B\NZ0q9i9B5x{Ӓ\azO1Anj+4`Ϝ!|102_M8BR8Eei>&%*if[eZz*LRrʓ_Kf?IqhNԙ()?&J$ N+II1bRpS ?II?5&4~ʓyRdQ&_sb)0O)4ӹOTScR}4n?8n.^ߝ>t8ƟK=녟}3;+Z=4Sr@OZy 24_p6bu޼Sݔ]IU'H옌Z q}hLC-;-;q" AuЫQV Rektp6w'W=;PI%[csA|{OF3Oa 7D*h6ű3lj]J=7Tb?Kb~ŸtѢ֡E;YncCvEhv6fʁmWzmwHz*on|Иu@tͅlr\^s{TwcD> `HѪX8XI0b5\z앂2ʜuo*1y^u,\-hV竷1_G] #F~l}SO?` uN`aͮɝuFv:9 z?ޙzojM./U2(5gxr/%?t*:(.QiAn`'Pܪ8u0yϷg pH Ă~vA6cNp##sw,;H.@ޙ2:3ѪtvাDxZ9~Gk]mLߕM~~DZ(=Y5e@! &HS.Y,܋ek3n xG_ϯ>f K^1>R?"PX_z⟺R Qu21?t)o};LO o !y[W*Cfc[ R:[%^1I\@S { uTT9|U2wXK'"ayRr<&A{95E|\X<t`7(o؁N}#NiJv;q{NH@HYCyɞ<qzWN@TNANbfVk`Ah_Z+M*ъ0Y8h4ƓOAjt7mھ'zQ/=;^m&_|B;ZR$q_ۏJאym)? ؘGlQvby𗉶s/gCF HZw[9Qg0He֍AZt cc3<>??`< `11pp??pp881`1xxχ0ဘ??g|`7``??88`3yyyφ0?ggg``??qq?O`an`??``ggppOaǟ`8??g??xxff8O`` ??  pp``ff0 @`x<<??ggp<<??~???cc00xx<<s0pp`qq00??    ``?:qȹm8OD.a\2dw D eHg-]0ѕriM?OcVm`?Z, ]­C+ʝvA^;p݀s,qlL;Bg>|k^+;so9k~|1o<ɰ3{fmjPUOVJVp|qqi8>a8G?!԰.G]2W,Owօ1 ًrsY_9,&i%޴a1p4^?fky{ ; ~ `6(5s79cc0WnU{vfzHq#ڔG$F_ӽM >i6= h\{,kwA%nS 5!\)gqv1in3V]S) ýF%}ŧ T\LTnO;T1j HmY~%*cV" ]jErL=!Dnŏ> O~ 9}P4FW+zs>7^: |^.FM)/6Ʊ  -o#+wCNOm`JɺôIro b@9׹q ayevr jȖUgF Ȗ#O꾜a_DAu%\P.zb\]yIz>OUV3[iMjX(G؛%ܙrm_܏}3.8y5kiA5=>z[ѷMgɿ\ 3m,!귶3ICBli75؈ t*42> ?Ŭb{ڞ׋@%󀮹|;ڹ%QI %?z#_>`ղg&͊MBYxOJ/)..BB9 a:֎G74%?߬OfMK{W{̿{Cr#'ħz"W> ]e%ex_yE|Kse?T>Ye]%Ni>zREm MziTæ[{\~//ϼƏT^# 'I.ּҟ[Gq O7t:ôjds#2G.(Fb{N`x1^cUp[Qi B{->7OѨy"%_LHmwǒW_h-f'0=j-nAod4D]fjOz|6n/OPnq~'(o>H-T~ܶLy )rkr񪗼7jԦ#Jjs?֣!+O˭%/7 .\2O#w (S' @\@,"ިrܦȼi3Ր9=p$'֜-[JZb:ܞt{oNVfaGW/rfϵ#$k@pH/ZʉEw};Z8nŹ:([_\GP$Ƴq$g!^MV9흚tA dcJ@{F=riKobfo ϧqyc(,uJ:7{$G^=vw)2Y<^>x ᮶$"^mdYz]om}73%-Y3&ZL˙O$=j~}\Ч(F?30ϔ~枊aI x G}DR5R&>\2W,Ul%<)_v^X{,&Lb}qmA:VOधVȐ-9DIS.qEF"[u=Ğ-~OO.׿0^-XfCO?NKemB/ݐq刋v 52:5[{N{n7rĉ~m??:1\szյs7^׬Y`Cl9^]?p'ԴdoqUpp^D_nqwRoy\Ec]*dry-V2aEG|CKl/{O}%,u(/U; Z])7+jx7 :(L8sI|bV\")W 4`J-]}W2^ Av*孺.Y1g}VBёF& xmK#` XYsއk]\6|Vֲ+[Zg&׏^:yV,՞{kÇltWA0 ]м<-'@~|@?E ~-A%1 <0A4xvHn7~jX_}Hx`]-i*r&9Ov냽in$W[TjQWSJzD1r#Eܱkz{ts]̄:o=̀ůUuo+UօpJ[>)~T❢kB؉sbx`c]B¶5{ػoRkK0{vޫ&^wO/жz96ɲW+X _D{q5tי{yy7+\ibF =;`yYp7.9FYitaHӆn5ߦp̈J޲goZc9oi}%ӹ[k]4Vryt5ΖE77.v f4kJ斤- VMKӎwu#V7u`n@N^o-xۜIrExip !GZ,X`+Dٷ߹G b}0ĺd&{ |QN0Jg+I%aTc&4(Vr@`,IQw3]+}T*|])*޽RWSRPb_ZrK$)BuVh1Lи.U(0$8>vJpkkP-׬WK@=e=+7(xpMd 8}h+64fӗ>.M Ҿq-ѪHzv"6,t2\e[Eqhv8'u\5ba 8a'')ѡ gGiT<ğ YA3od C[SfEE@Bkbcto,\ø *WOuX@Wd#% 3քX EĈ:DEi7'D K9 wLA}w'4o4 8Am쾉4;S+H%"}Ҫ1@fL9!.؇`3`:ϸɊCL4 2k]Jg)g7SUTG1VF6E~Y3(L**dT\"*t2V']FވErll5"ntz9Uq|ʮp{ǜP"-lh1-# +%` HOTWHEEL.TXTmu?`}rak·awu*R_p,j踦w׫CkÁRkzͽR܂X*@B%$\}i)댪!.0O|(aIzNئZZ͛ar (uI?*CD%ZzߣT`@ʋV/D /a4] ~k"XbG0Rx q{sr;½W}z#7xi=\9hkzrh+- 'U=rϩ{zr}ͻmGDE*tŋ'C:yR{"g:X9..*yzM J VCQٖGqT)FT,ؽQ|;=G(qW1dҒS9aŷ-7ʓSs<2YUsjk,Y6"D @}_|ȥ9Hv σk贯)Pן˽sIJ{M!cjꑩSY|L P%i97 U9Z{Ҹ -ׄ Vt,l)N'I5"9,nT'Z/?(3be})HK0,bdb첽0!≉n|^ed֛©u~&C"cMTRˮd0 |nh&C=%noS=C94~vގV͡GLwe| x_قÀ00>>? 066>̆?p8877v܆!!q`00fؗ!!?{8a`?0n~އa0a0||8|} @a0a?߃c 0P^^0AAJy0"`"WW0ˠ4 4X! 8@i? @A   T** STE No Through Road Demo * Hardware scrolling, blitter chip sprites, DMA sound, * volume/tone control, cookie jar and joystick port demo. * Copyright c.1991 Adam Greenwood * Feel free to change and use this code * Written for/with Devpac 2 * This program can be run from medium res * ALWAYS SAVE THIS CODE BEFORE TESTING * since the method of directly reading the keyboard * is not gaurenteed to work with debuggers etc. * For debugging replace the direct keyboard read * with bdos call 6 or similar 'proper' routine, or * keyboard will not work in debugger * If this program is assembled to memory ensure that the filenames * in the DATA section include the full path name, if the files * are not in the root directory * The timing has been worked out to allow for 60 Hz. At 50 Hz only * more sprites can be used. * Three screens are used for the horizontal scroll, rather * than 4, since the two pairs which are double buffered can * be overlapped. This only works where the background data * stays the same, and would not work for a mapped background * Two screens are used for restoring background behind the * sprites. * constants: key_data equ $fffc02 keyboard data register * screen address and scrolling constants scrnbase equ $44e original screen base vbasehi equ $ff8201 screen base address high vbasemd equ $ff8203 screen base address middle vbaselo equ $ff820d screen base address low shiftmd equ $ff8260 shift mode rgb equ $ff8240 rgb colour registers linewid equ $ff820f over-length line width hscroll equ $ff8265 pixel scroll value * blitter chip constants blitter equ $ff8a00 blitter chip address * offsets for all blitter chip registers halfton equ 0 halftone RAM registers (16) srcxinc equ $20 source x increment srcyinc equ $22 source y increment srcaddr equ $24 source address endmsk1 equ $28 left end mask endmsk2 equ $2a middle mask endmsk3 equ $2c right end mask dstxinc equ $2e destination x increment dstyinc equ 2!"'/E/<^@ǩ}Z`<*/ڢby5Q{*^k`r?*d7-p>S;X28v<`u+ݍյ,ؓE=t&~x:FCn:I;;L5r>HSm yT8r' gQb , DS.,S95|[gV:~ `(Hsm,XduOKN@@حȣw~AnM:V-PyZ/f ;l ى+=?YXX׋?ht}hǾ}GVBFKLʙ}ʽK{R2&nY1cJoK}a3N>o*D$}$35vroާ_Qwo|-ԓCl72e8۫TwD6 Ks߻Ejf59^KJeؕ 㲇N2}\<8A`Ep |< c##\yѯ9Mdbs }-of'z'5A!3VrŚ2rvreje9ƀ;0xˏxZns5gxTUja^W;aˆ*- {5 ݯ^9қon|{/i\B,:ZQ}EG^DJKNZ{Fw!b(naoaόgw{̜աd{x_ DnD{_^b*$\f8HE&bE~4?#w߉+۱dLw1lmK9Nz[??g"a[QmtDgmUeqbaY:{ffoV &:%; uI(*b?;iznr;>oÁ]"]I9gM,Du:q7Y+tǕ LA샵ß e􉟃yB :97C+幒﹙=^ݸd>mJw͉U߃ 0kwŽ[!0Ԭ|n>ҏ?>6G[P,UpMzb'_J؎ȳ 3/d?]Q׶g;?Cĺo?$6\y@KV"-lh1->$TV` MAINMENU.CPT1[b8 quw{8KA+Z+@S)s}}Gq=Aځ||ǐHagm;@ _ijJpU$tW4-aA.q3vISu'j[ٗχSσ pwpCK&π9fRF倿y n<pOΎ| B/r }%"y/N#g{Q&[(W]aslx69 L~2I~_G'f[ ;x*3*~K̗̟ҟ^7M3ꓙaTnl#mՇM|Pg\i<~0~wGmtw/˖~ 6>9Db^Jvw.G;"v#ύ<{j4ShƏoҟ*iۃkvmz^m`j-6ubz;2?ԟkK˞p~VJ 1kFރphC' Cz㹯:k޹M]9TY3 7 ^H3pk ԏ3&ISFS6`*ik(nwmB ; V`H*k(ըV͑+ޭty$b^ \K[Z WFxhČ"QhKev}IIXKn `W</8?.[EOoG.-~rn/dW6LapBS/0 %(+ΣBޝ1<սan2t23Ǭ`_eC4cLgDGRX-^ݨyn-~0̄:y'v|'Otȇ>P[{mÇm!*Iԇ׮ea3c\sPcBT*BDlwyDq)JA 7e^kDB$f3gunYVpj9vz=; 'ޘ[쪤č5/B ʐ.l/QWx `\_..| x _q/h߷4y>@@0!Cg>⾸WnvOt^,>(hO+^]9'kBN!uY0|) 6l!Ua>߉39C?葒VFZ:)*{rN4{4>|ROœY&i7&w@/jiu}V]OH8fߺ| ص̒7**HMpr 3TP9*֦y"EUk$ ?WѩH=+yaWY,&3DMJQ(Vت':L$pLfֶj< j5㨮=Яi#%>{ Xфөϥ?Qϧ?e x Zuq3ȱWdxg͸g{~|E3=oFfok|թQ׊>wͱu?ί^.؏R/-wspZY< -ҟK$~Fui۪侒y YKJ:Aܫƨ9=2udۖ?'fNJ=ܐό9zd /<߿uԊM/,%Ko3(M<[W-ɰh #fP>z ͮd_]bX#>6,wmDEґtܡM9u8H3=[G}!#u? lv˵u(⠐`)y-<@|3$uU5yS?VTvG*w2=h!שő573udZ(皟wL341 ]VG+>w_'4e:TFyo}TS};1oISϯwGvǒ! D!+*4C]v $}4n;ge}n`bT]+'@7k*o^^+J~ޭu?ud>A4:|?=><{k>Bf A*~74Ss]"zMDFrbW7>.]q(Jmt~ɯg/sy`ב  uoDvܦ}?ل"8t\ '^`ϕ\W\Xf#mڢ0O_Ki5OCd8-?3'ZWv.cqGΎJ1cntܓ_OgC"qAWSF}~߭qDcmoSW᳆?mZ~uЉZnP*v0?7?SwkW.c:Bώ+CKľ% |wo?0T9Φf9OYk̝#ZYeREn-ѻ:[\dO=/~ΔqT$30 destination y increment dstaddr equ $32 destination address xcount equ $36 x count ycount equ $38 y count hop equ $3a halftone operation op equ $3b logical operation linenum equ $3c line number/smudge/HOG/busy skew equ $3d source shift * DMA Sound chip registers mode equ $ff8920 stereo/Mono & frequency enable equ $ff8900 enable register f_strt_h equ $ff8902 frame start high f_end_h equ $ff890e frame end high * System variables for interrupts timera equ $134 timer A vector * MFP 68901 Addresses iea equ $fffa07 interrupt enable A ieb equ $fffa09 interrupt enable B isra equ $fffa0f in service A ima equ $fffa13 interrupt mask A tacr equ $fffa19 timer A control tadr equ $fffa1f timer A data * Microwire constants for volume/tone mw_data equ $ff8922 microwire data register mw_mask equ $ff8924 microwire mask register * Joystick registers fire equ $ff9200 fire button register udlr equ $ff9202 direction register cookies equ $5a0 address of cookie pointer * The names of the official Atari cookies so far _vdo equ '_VDO' video cookie _snd equ '_SND' sound chip cookie * Constants for program sprt_no1 equ 2 3 32x32 sprites sprt_no2 equ 3 4 32x12 sprites sprt_no3 equ 16 17 16x16 sprites * Start of program start move.l a7,a5 addq #4,a7 move.l 4(a5),a5 get basepage move.l $c(a5),d0 get legth of text segment add.l $14(a5),d0 add length of data segment add.l $1c(a5),d0 add length of uninit BSS add.l #$100,d0 add length of basepage move.l d0,-(A7) push length to reserve move.l a5,-(a7) start address to modify move.w #0,-(a7) zero move.w #$4a,-(a7) shrink memory trap #1 add.l #$c,a7 move.w #-1,-(a7) move.w #0,-(a7) move.w #21,-(a7) turn cursor off trap #14 addq #6,a7 clr.l -(a7) set supervisor mode move.w #32,-(a7) trap #1 addq #6,a7 move.l d0,save_stk save old stack move.l #intr_mess,a1 print intro message jsr do_mess to screen move.w #$80,-(a7) disable and get status move.w #64,-(a7) blitmode trap #14 addq #4,a7 btst #1,d0 check blitter exists beq .no_blit if not finish move.l #blit_mess,a1 message to confirm blitter jsr do_mess move.l cookies,a0 address of cookie jar beq .no_jar if 0 no cookie jar * now loop round reading each pair of longwords until * the empty longword is reached .loop move.l (a0)+,d0 cookie name move.l (a0)+,d1 cookie value cmp.l #0,d0 check for empty longword beq .done if empty finished cmp.l #_vdo,d0 check for _vdo cookie bne.s .snd swap d1 value is in high word cmp.w #0,d1 check for standard v/s beq .no_vid if standard out cmp.w #1,d1 check for STE shifter bne.s .TT move.l #STE_mess,a1 message jsr do_mess bra .loop get next cookie .TT move.l #TT_mess,a1 check for TT chip jsr do_mess message bra .loop .snd cmp.l #_snd,d0 check for _snd cookie bne.s .loop btst #1,d1 check for DMA sound beq .no_dma move.l #dma_mess,a1 jsr do_mess bra .loop .done jsr save_regs save all registers jsr get_mem allocate memory move.l #message1,a1 jsr do_mess print screen message jsr load_all load pictures move.l #new_pal,a6 jsr rest_pal set new palette jsr playit start the music! jsr sprites jump to main routine jsr rel_mem release memory jsr rest_regs restore registers jmp fin finish * Messages in case machin does not have the hardware to * run this demo .no_blit move.l #xblt_mess,a1 no blitter chip jsr do_mess jmp getout .no_jar move.l #xjar_mess,a1 no cookie jar jsr do_mess therefore not STE jmp getout .no_vid move.l #xvid_mess,a1 only standard video shifter jsr do_mess jmp getout .no_dma move.l #xdma_mess,a1 no DMA sound chip jsr do_mess jmp getout getout move.l #out_mess,a1 print message and wait jsr do_mess for key press jsr wait_key jmp term * Main routine which initialises and looks after the sprites, * swaps the screens etc. sprites jsr waitv synchronise * first initialise our variables move.b #0,hs_buff hscroll buffer move.w #0,screen_x x coords of screen move.w #0,screen_y y coords of screen move.l #y_list,y_ptr pointer to coords list move.l #0,control0 no joystick control move.w #0,sprt_frm start on frame 0 move.b #0,frame_dir start on direction 0 move.b #0,shiftmd set low resolution * initialise the tables of sprite information for the three * sets of different sized sprites. move.l #sprt_inf1,a0 table 1 (32x32) move.w #sprt_no1,d0 move.l #coords1,a1 start of coordinates list .init1 move.l a1,(a0) address of coords move.l #0,4(a0) background offset add.l #12,a0 next entry add.l #152,a1 move along coords list dbra d0,.init1 move.l #sprt_inf2,a0 table 2 (32x16) move.l #coords2,a1 start of coordinates list move.w #sprt_no2,d0 no. of sprites - 1 .init2 move.l a1,(a0) address of coords move.l #0,4(a0) background offset add.l #12,a0 next entry add.l #124,a1 move along coords list dbra d0,Ao|agy[y|n?ԉL`?׆ *Y/ߐܳ+`_}W05%@7>s`ے{3IF?ρf ۶qcZh֏ny-q _! )6ۺ5<LIk9?,7ܯong_roxqg4Q[GͿvIOOx&/rPd>*g?~Tw-z8V )[~Pm<;_ٯOW?Ϡ5 89qDv흟vKӏ#'VsX; y>V\_H t3=NԵ^E>ɥf11oTxu`t4bI;- ;Mu 3쵑Ti{ũܺ>U &b2> XM#ǟqv&0gAxvU@,PL ( y'`q7lOQ,Eߏgz]DFI}#'{1E/K|}øͪsp's>ٱvf13@@~'?.UQgzɾȴ/ؿ!1~>ݙv_NVK0Ups?53/jfcZ:2 @3.Eh6ЀH'U]Mþf)R))442܇) f=6Ygmz ,trQRqۙH'>(g~P8f64azK^p8]{N~#>fsbt S L5pU-/{d/ҀEպ& ` U%р-{^y1wJ.'WϷSg[f% s{~dpH_Ytzo܁G;Pz.arWOM]$wxMq%\3rWޡ}JZo4}[ﶫ矂8iוc~HW Iuo>?b^šp-|$@~hJҽ剳^SSO4|q{ !ȤpޔAGt?GGdb@ dOa*"g+ZUb[8Gջ-KH##,L`5o+>mQ}}znz{?Wt_{b弾[ B:&}y]Ĩ_9%.7*"Yٳ8{k9+/ \b qp:C}'ǾP*v&^I0L?@'4;{>Z]eJ'v(ryd1ѯ{D=l6 O a!yk}۫UIޥtq7ݶ{#C84u>V(= y~ }Yl"(ۚv(Hy޷h6)ϦY ηN__V֑&/\&,MqU鮷!0[K)>8ᬀinaبT3vj[?s;;-->^ϱQkmW,z#Rq^U#jϓӶ;OJVy/ߞ7e9O'.dDz͡qr:EY-jn:w>r ?uQ~iowx7ܒ7\']G)qn[r3g/qP׍ ,ovEþe(xOB7;J~3X^S}/_gSs$?K\"7V8jͶk̬&dLJ$rx!^F6l'ϫ'4K[nf}4/ ;xQ>SӋ܊>W3߫i*:6Sv+Ǻ|],k{~>ܯ46XnK7Rܭ\YuF llR?>k:Ƞp ?hW6JU<+]y;@' {=SnޯW>E2OT}mA^>#p~_?z]{;# wKD=O`_񕭯n"![Z]YrhַQ{aErHb/;?;j̰_o |MhrWP {¦3vg߮9BFEOR/{ƒ5Ȥ鏝UK4ڙ~C Ֆ.t`=^Y/Z_]zJF>C z N\ ]wqV,|'{hhۣ\F_O.o [XDODžO}wm:1[GsJG^1Wy=?iZOsa4S7[w}-ZU7T25 ȓ!sv~K:&C1n$KIg|za>w+ sRóUZPMi,&;g]l`=aawnm 7&O(@yB H胻KPYuٙ,攮dox45=QSlslOnl%v l}o}'Rtb7K?sHm=Q^#|XRAU5Z9>e9`ynX͡ztn%^!4k$SM=L^GW7fvl$AB4"^ߘ&DO/OEm{x1/WQh63}"ЅSit[i?+ n5j716q~dh&llxqxTed\1Om{]m[l+wW2i0?7:5:rdKh.Wl35i-Zd$[G];߾L>QrUʃ dmt|w `F PŘG@pf\wOt/Glo8E3dAp0"Aߪ׭cU,]I1g/8<߮OjAi`/,l f:߲|VevWpseC/>6ʌ\l&f(YYggYthh_{ϥS~9S(ek2^/9j2b DhQGdR("US@)n<;%9KXFNO} .:㭩e'=g+\ngWM<̶ ,m0BiO~wmb3,׈Q3&M~BR*|ئ[݂:|C_~߳{.init2 move.l #sprt_inf3,a0 table 3 (16x16) move.l #coords3,a1 start of coordinates list move.w #sprt_no3,d0 no. of sprites - 1 .init3 move.l a1,(a0) address of coords move.l #0,4(a0) background offset add.l #12,a0 next entry add.l #36,a1 move along coords list dbra d0,.init3 move.l scrn1_mem,a5 off screen move.l scrn2_mem,a4 on screen move.l a5,d0 off screen jsr set_scrn set screen address .loop jsr do_sprt1 do 32x32 sprites jsr do_sprt3 do 16x16 sprites jsr do_sprt2 do 32x16 sprites exg.l a4,a5 swap screens move.l a5,d0 next on screen jsr waitv synchronise jsr scroll scroll screen jsr joystick check joysticks move.l #back1_set,a0 jsr init_back set up background restore move.l #sprt_inf1,a3 table 1 move.w #sprt_no1,d7 no. of sprites - 1 move.w #32,d3 32 lines jsr undo_sprt restore background move.l #back3_set,a0 jsr init_back set up background restore move.l #sprt_inf3,a3 table 3 (16x16) move.w #sprt_no3,d7 no. of sprites - 1 move.w #31,d3 no. of lines jsr undo_all restore background move.l #back2_set,a0 jsr init_back set up background restore move.l #sprt_inf2,a3 table 2 (32x16) move.w #sprt_no2,d7 no. of sprites - 1 move.w #12,d3 no. of lines jsr undo_sprt restore background move.b key_data,d0 check for key press cmp.b #57,d0 57 = space = quit beq .out jsr set_vt set volume/tone bra .loop .out rts * Routine to monitor joystick ports, and hand over * control of sprites when necessary joystick movem.l d0-d7/a0-a6,-(a7) move.l #joy_0x,a0 address of coords variables move.l #control0,a1 address of control variables move.l #sprt_inf2,a2 address of sprite info move.w fire,d0 fire buttons * first we have to swap the fire button bits for * joysticks 1 and 2 move.w d0,d1 move.w d0,d2 and.w #$0009,d0 clear bits 1 and 2 and.w #$0004,d1 bit 2 only and.w #$0002,d2 bit 1 only lsr.w d1 bit 2 > bit 1 lsl.w d2 bit 1 > bit 2 or.w d1,d0 rebuild d0 or.w d2,d0 d0 = fire bits move.w udlr,d1 d1 = direction bits move.w #3,d7 d7 = loop count .loop move.b (a1),d5 control btst #0,d0 test fire bit bne .udlr cmp.b #0,d5 if control already 1 bne.s .udlr do nothing move.l (a2),a3 address of coords move.w (a3),(a0) set joy x move.w 2(a3),2(a0) set joy y move.b #1,(a1) set control to 1 .udlr cmp.b #0,d5 check control beq .nextone if 0 ignore this stick move.w (a0),d2 x position move.w 2(a0),d3 y position btst #0,d1 check for right bne.s .left cmp.w #270,d2 check for maximum bge.s .down add.w #2,d2 increase y bra .down .left btst #1,d1 check for left bne.s .down cmp.w #2,d2 check for minimum ble.s .down sub.w #2,d2 decrease y .down btst #2,d1 check for down bne.s .up cmp.w #182,d3 check for maximum bge.s .up add.w #2,d3 increase x bra.s .save .up btst #3,d1 check for up bne.s .save cmp.w #2,d3 check for minimum ble.s .save sub.w #2,d3 decrease y .save move.w d2,(a0) save x and y coords move.w d3,2(a0) .nextone addq #4,a0 next set of coords addq #1,a1 next control variable add.w #12,a2 next info entry lsr.b d0 next fire button bit lsr.w #4,d1 next udlr nibble dbra d7,.loop do it again movem.l (a7)+,d0-d7/a0-a6 rts * Routine to look after scrolling of screen, horizontal * and vertical * a5 = base address of off screen scroll movem.l d0-d3/a0/a5,-(a7) move.b hs_buff,d0 get hscroll from buffer move.b d0,hscroll set hscroll move.b #156,linewid value if hscroll non 0 cmp.b #0,d0 set linewid depending on bne.s .done whether hscroll is 0 move.b #160,linewid value if hscroll 0 .done move.l y_ptr,a0 screen y coord list pointer move.w (a0)+,d0 screen y coords cmp.w #100,d0 check for end of list bne.s .set_y move.l #y_list,a0 wrap back to start of list move.l (a0)+,d0 and get value .set_y move.w d0,screen_y save screen y coord * it is important to maintain the screen x and y coords * as global variables as the sprites need for their coords * which are relative to the screen mulu #480,d0 convert to lines move.l a0,y_ptr save pointer * the x coord is just incremented to give a constant horizontal * scroll speed move.w screen_x,d1 get x current position add.w #2,d1 increase x move.w d1,d2 sub.w #320,d2 blt.s .xset check for maximum move.w d2,d1 wrap around .xset move.w d1,screen_x ext.l d1 divu #16,d1 no. of word blocks move.l d1,d2 mulu #8,d1 no. of bytes to add to add.l d0,a5 base address add.l d1,a5 add right no. of lines swap d2 no. of pixels to scroll move.b d2,hs_buff buffer pixel value move.l a5,d0 set screen address jsr set_scrn movem.l (a7)+,d0-d3/a0/a5 rts * routine to look after 32 x 32 sprites * these sprites are animated, and follow a predefined * path around the screen. * in: a5 = address of off screen do_sprt1 move.l #sprt1_set,a0 dimensions for bliUf;!ʲzܻ/Tc4KW1o]`)'_myn ̇;z=Cf-69<7b#МZbsN ;Yb݋o6u^w `ڢXuc}gRvJ9"&\zՍۭܗΛT'Q?,g')Xʳo9Nj ʼ+()운0[7 P7V"E&`:%dFLmgooLc{YU+ْ1Ob%Ȯ5Q1/z& O8NzPmY|2Rw/ qԃst{&OCH#l6v1޹lv~hDQ3>5y+XNBhH9ӌYaLi|-?dWf~B;߆W8+Ωݤٿs[EHx%Ov~ټiϬGMK+?߂)%$d_{#+ԗu  +Loش+2]_4ʫPje.8;~1}~ށƣtd^ {^8ǹ ]Xt -lh1- 6 /R PANELS.CPTObcL{\QjRƁ$yb'Qk[/@ GP\~'gh.kGYBfA?$FA(OD-ێ˕![1Y_^AQy~E r66ݲE#iNɷ\SϒI Lcv7gr3#fp%9+_$h>l"U?X  `ɥHfTdjfX7ԇ43LҢgsL\W|C^+gX&P=+ †-d]t:a* 0{;73~;Cpߪ}Z?xāR7!A#wVr6WdoE~ >pW2u'9Gn0O4,K%lvgfp7RbS:4ː=kʿ 9UjƑ[ok3J}'Zn@u&޽sV/* 5#&T ޿kI }S~hX1}|n8\nJ'qi#%}k̑}nI no_yG"<&ztZ6MeXjzFq{ĀoOIv#JKj礞Q&Be hKiB}NP98VzY@2$o% H'ξ+iep֮[m 1䐠lpp6DkU&9Au;ګվoWZȴTWM>bfm;/^<i-nk30MuGI_Ѝ&\3?M?˖ќdF;V0m|_2GSeq-$=y_r{n(&;}>z[^uO^ONMm蜞8:z_ $pո#SMw/8>  ޾oؿwYs]zgzk̻SY+6}ߟvU͸t=3#³>o0`ρV)/C҂ O}73<)V?W[3#?}k?(Kۇ=b4O>C^t3k~E4zK/jZU-*;/WIxw䘢 ^2۟2s/G8GDsrz1JOwbO/o\ɛ!<dY&_r1kr׸=i⧿(Z<So{tǼMx\/rgS?fO^S5~-?G}}v%|Nn,jʌ'E,_|![zi+tQN%Z}:A^3#.'j3}ʚϷ+?Oy#{O)Zc}]a"]vi꫿ʫV6GՕmfZR3M q]=yE}еsgVxQ4xK0z+ڃƍuhWtGσ2 =]݊%t߼ AG|!Iyf,>doߦ;Y]N! xIO($꼾 mK#x8:ԅr7nExF I{+?O?#7p2 ቝK>?Tէ%.4?j^-x{X_CdRIzԼKnLI >cxomlVn"b #ܱe\+"/-lh1-wcz PREFMENU.CPTbsGÓܷy}ump-³JԯJJh@Zuk.1aE OK,bJ#ΈH}T#(cGK*D|}~;-QpTtHVKaGJ'$ë -Oօ$jVI}ܰrRw_C!PدhZZ#6lQFT*H.1|UXOL?3Z|Wo6<y ba]|Oto G~gAq_|w%VIx_+<ϋvs4O+_ຏ#'3}ES&xPhB4v-<&pOKKplSZgi'y4_%T!&Gp.FA:@CYú?K=rQ]_7]3fX1 iLD5Р `vI?`G#X9{ø.=z_W$]Yz}pw;oYӿ1gSMMu7Oa$?t jsr init_sprt set up blitter for sprite move.l #sprt_inf1,a3 table 1 (32x32) move.l sprt_mem,a0 sprite memory move.w sprt_frm,d0 frame no. for animation cmp.b #0,frame_dir direction we are running beq.s .add through the frames sub.w #1,d0 previous frame cmp.w #0,d0 if start go through in bgt.s .doit opposite direction move.b #0,frame_dir bra.s .doit .add add.w #1,d0 next frame cmp.w #16,d0 if end go through in reverse blt.s .doit move.b #1,frame_dir .doit move.w d0,sprt_frm save frame number ext.l d0 divu #10,d0 use frame number to index move.l d0,d1 the sprites and so to mulu #5120,d0 set the actual source swap d1 address mulu #16,d1 add.w d0,d1 add.w d1,a0 move.w #32,d3 32 lines per sprite move.l #coords1,d6 start of coords list move.w #sprt_no1,d7 .loop move.l (a3),a2 address of coords move.w (a2)+,d0 d0 = x coord cmp.w #400,d0 wrap around if x > 400 ble .less move.l d6,a2 start of coordinates list move.w (a2)+,d0 d0 = x coord .less move.w (a2)+,d1 d1 = y coord move.l a2,(a3) save list pointer add.w screen_x,d0 add.w screen_y,d1 jsr convert d2 = skew, a6 = offset move.l a5,a1 screen address add.l a6,a1 add offset move.l a6,8(a3) save offset for undraw jsr sprt_blit blit sprite add.l #12,a3 next info entry dbra d7,.loop repeat for all sprites rts * routine to look after 32 x16 sprites * these sprites follw a pre defined path unless one of the * joystick fire buttons is pressed, in which case they are * under joystick control. * in: a5 = address of off screen do_sprt2 movem.l d4/a4,-(a7) move.l #sprt2_set,a0 dimensions for blit jsr init_sprt set up blitter for sprite move.l #sprt_inf2,a3 table 2 (32x16) move.w #sprt_no2,d7 no. of sprites - 1 move.l sprt_mem,a0 sprite memory add.l #5392,a0 offset for 32x16 sprite move.w #12,d3 12 lines per sprite move.l #coords2,d6 start of coords list move.l #control0,a4 control move.l #joy_0x,d4 joystick x/y coords .loop move.b (a4)+,d2 check if under joy control bne.s .joy if non zero use joystick * this is the code for not under joystick control move.l (a3),a2 address of coords move.w (a2)+,d0 d0 = x coord cmp.w #400,d0 wrap around if x > 400 ble .less move.l d6,a2 start of coordinates list move.w (a2)+,d0 d0 = x coord .less move.w (a2)+,d1 d1 = y coord move.l a2,(a3) save list pointer bra .no_joy * This is the code for a sprite under joystick control .joy move.l d4,a1 coords pointer move.w (a1),d0 x coord move.w 2(a1),d1 y coord * since x and y are relative to the screen position: .no_joy add.w screen_x,d0 screen offsets add.w screen_y,d1 jsr convert d2 = skew, a6 = offset move.l a5,a1 screen address add.l a6,a1 add offset move.l a6,8(a3) save offset for undraw jsr sprt_blit blit sprite add.l #12,a3 next info entry add.l #4,d4 next coords dbra d7,.loop movem.l (a7)+,a4/d4 rts * routine to handle the 16x16 note sprites in the * centre of the screen. * these sprites are drawn individually but all undrawn * in one go. * a5 = screen address do_sprt3 move.l #sprt3_set,a0 dimensions for blit jsr init_sprt set up blitter for sprite move.l #sprt_inf3,a3 table 3 (16x16) move.w #sprt_no3,d7 no. of sprites - 1 move.l sprt_mem,a0 address of sprite memory add.l #5424,a0 move.w #16,d3 16 lines per sprite move.l #coords3,d6 start of coords list move.w #80,d0 x coord of whole block move.w #85,d1 y coord of whole block add.w screen_x,d0 make relative to screen add.w screen_y,d1 jsr convert d2 = skew, a6 = offset move.l a6,8(a3) only one offset .loop move.l (a3),a2 address of coords move.w (a2)+,d0 d0 = x coord cmp.w #400,d0 wrap around if x > 400 ble .less move.l d6,a2 start of coordinates list move.w (a2)+,d0 d0 = x coord .less move.w (a2)+,d1 d1 = y coord move.l a2,(a3) save list pointer add.w screen_x,d0 relative for individual add.w screen_y,d1 sprite jsr convert d2 = skew, a6 = offset move.l a5,a1 screen address add.l a6,a1 add offset jsr note_blit blit sprite add.l #12,a3 next info entry dbra d7,.loop repeat for all sprites rts * routine to restore background where a sprite was * for one set of sprites * restores on off screen, so uses last but one background adderss undo_sprt move.l 4(a3),a6 old save address move.l 8(a3),d6 new save address move.l d6,4(a3) old = new move.l a6,d5 since the screen is 3 pics divu #480,d5 wide but the background used move.l d5,d4 to restore only 2, we divide swap d4 by 480 and then multiply by mulu #320,d5 320 to get the no. of lines add.w d4,d5 move.l a5,a1 off screen add.l a6,a1 background offset move.l back_mem,a0 background pic add.l d5,a0 jsr back_blit restore background add.l #12,a3 next entry dbra d7,undo_sprt rts * routine to restore background where a sprite was * for set of 16x16 sprites * restores on off sc_XBxx*CwW^M,Aǐc|e^>{|>_| aDn o氼22010~Do0d7 @} ᑟd0s_D\J|qsέi_܆,KYw,>DQ?N׀Ύ)?"8>Sr!}-a(H>oUB̄i υ'j.bKd!!|7 8ƘTTgS3v a4$)~]V&XΧGwϷcqGbN?78qխkեm-^!?'*gX?ye {7|%_''%;F/!XZxߖ5/KiyN_mz");tR(xxy/o?{ᜏG1;{#Mi Ga#d{2G$G#7otՒ֗K}/}/—G~ uE=$JcfVbr]\ڃ.J;&򵺣X>VX;kiL$ckHw7xncrhpYC~3#GBJ,ݤ;&q^Q0.%~ILW]<#`я.Bv[= Q_ea@:{rEYS:kLPm,"vbcfzYKL*7ֲʿgWx;Fv ZpsIZ *+`!_҂m~NF3[_ j_-1͊󢳄~\%]&|.Ͱܜ- ߡMvu{FS{2}ynoy׺|w_HO;vwsف<Q<{՗qN#[ϥ|yORG}?QFu?>ms(N9ޥ^/N{{_%_%}3l'q{ݗ}$ֲ8.  |A^1 L+@h 1+'<0rj=CQ?G5Sĸ `~좤>>Tc.8|ggUBkS? PnQ . 8}iD23}tg89};f,ej<8IS{{r39 >KTiB \a5_khdOPG\Ѿ{6lx#oi9<^Dq~tٖfyy7!䱇Wqs]jTOf c>q==Ww΂ {k֫fZu?Ѿ1\_u=mBrx ukܺb3~/\?mj盫FeWvoXح5x)?|[y緈؞ڏc{ҧ6s?2< i}uohd<ɹFVB\M}'P>rv ?~{X+a_NPcz:ycv%o}kz+yLMSujE}Dѳy% ͜Nc^}95\}+dI=Cy}fU>G{35C|2Whk/u3/ ȳGq╿|Czzֵ|7 S'>z߬cZr^LDX5Ġ}/2[@Na_X0]"}%"wi%O.a:+uu?w`>XeO9f8 [ ^dĮ 98|6iub;m u5ݏ"f>?-Aǐ5ܱO7kZ~{<~֐7O/?<'ԗX/v9{G&3P(צ/6?Eϝo94Mss)7_v`ߩ< m y&qV~|Wzϛк>TbR{^wu{fL~5aEϋw0){ .S^f鿚\S)E^Iun˼sʅ>^=xzo8\fkFϽt <&n[aX3h#[7we8Ft߻W9'{|mWUJdݽ[]UC/C1ԽImNi &u _ %^_m< YQtJ΍]',gI9*#x$iD{KTʯ'WSÖkr? OۯRunUh\õT5|>|ޏ?7xE\d~ESn̕"Kk77讶BBV* kcfg=FowON/k?'~ϥܽ?{ wɾg jOORþ ~+cUgD7G!~S_m_uڧqnKTǙpu?TBA(Xڟs`y}V@@K`_ٴ7(j P`|HR_0Ji/:vWGrIHXzO~D.c)y^^״{6i5˟S{?֏Gv`f~P"dDO(ܴĶc.[33ᎬNvc_/ؼYӨ"~i??sU}|ar_9o>E׋6.'<O~(1EŻ o9ݩ G;u8ܭ=Uk_FT&ݯ /lp^~d.Qw^F -7p̹Fy=qOi7?Dܭ~?.C|(YɤNVa{{poQf%3bNv.b_'; ^^ {~v/Ɗ!؀T2gϿS=uY0 zA Ou9YyA5:rD B_d'ÀAyxreen, so uses last but one background adderss * this particular restore cheats by restoring in one block * for all the 16x16 sprites at once. It does this by finding * the left most sprite at any time and using the offset * for that sprite to blit a 160 pixel wide block of * background which will cover all sprites undo_all move.l #$ffffff,d0 theoretical 16Mb max move.l 4(a3),a6 old save address move.l 8(a3),d6 new save address move.l d6,4(a3) old = new move.l a6,d5 again, convert from divu #480,d5 3 pic to 2 pic by move.l d5,d4 div 480, mul 320 swap d4 mulu #320,d5 add.w d4,d5 move.l a5,a1 off screen add.l a6,a1 background offset move.l back_mem,a0 background pic add.l d5,a0 jsr back_blit restore background rts * routine to convert x and y coordinates into screen base offset * and skew value * in : d0.w = x * d1.w = y * out: d2.w = shift value * a6.l = address offset convert movem.l d0-d1,-(a7) mulu #480,d1 address of correct line move.l d1,a6 offset for lines ext.l d0 divu #16,d0 address of block swap d0 move.w d0,d2 d2.w = shift no. swap d0 remainder mulu #8,d0 amount to shift add.l d0,a6 a6 = offset movem.l (a7)+,d0-d1 rts * routine to initialise blitter chip for a sprite routine * a0 = address of set up table, which is simply a list * of the correct values for the blitter registers needed * to set up the blitter chip * The setup tables are in the data section at the * bottom of the file init_sprt movem.l a0-a1,-(a7) move.l #blitter,a1 blitter address move.w (a0)+,xcount(a1) words per dest. line move.w (a0)+,srcxinc(a1) bytes offset next word move.w (a0)+,srcyinc(a1) bytes to skip after line move.w (a0)+,dstxinc(a1) bytes offset next word move.w (a0)+,dstyinc(a1) bytes to skip move.b #2,hop(a1) use source direct movem.l (a7)+,a0-a1 rts * routine to initialise blitter chip for a background restore * using list of values as above init_back movem.l a0-a1,-(a7) lea blitter,a1 blitter address move.w (a0)+,xcount(a1) words per line dest move.w (a0)+,srcxinc(a1) bytes offset next word move.w (a0)+,srcyinc(a1) bytes to skip after line move.w (a0)+,dstxinc(a1) bytes offset next word move.w (a0)+,dstyinc(a1) bytes to skip move.b #2,hop(a1) use source only move.w #$ffff,endmsk1(a1) no mask, since move.w #$ffff,endmsk2(a1) data is not shifted move.w #$ffff,endmsk3(a1) movem.l (a7)+,a0-a1 rts * Routine to blit block onto background * a0.l = address of block * a1.l = address in background * d2.w = shift value * d3.w = y count (no. of lines) sprt_blit movem.l a0-a3/d0-d3,-(a7) lea blitter,a2 blitter chip address move.w #$ffff,d0 lsr.w d2,d0 mask off left edge move.w d0,endmsk1(a2) Left end mask move.w #$ffff,endmsk2(a2) mid mask not.w d0 move.w d0,endmsk3(a2) Right end mask move.b d2,skew(a2) shift data right move.b #1,op(a2) AND mode move.l #3,d0 mask all 4 bit planes .mask move.l a0,srcaddr(a2) source address move.l a1,dstaddr(a2) dest address move.w d3,ycount(a2) no. of lines move.b #192,linenum(a2) start blit (HOG mode) addq #2,a1 next bit plane dbra d0,.mask move.b #7,op(a2) OR mode move.l #2,d0 OR data over 3 planes addq #2,a0 skip mask plane subq #6,a1 start at second plane .blit move.l a0,srcaddr(a2) source address move.l a1,dstaddr(a2) dest address move.w d3,ycount(a2) no. of lines move.b #192,linenum(a2) start blit (HOG mode) addq #2,a0 next source plane addq #2,a1 next dest plane dbra d0,.blit movem.l (a7)+,a0-a3/d0-d3 rts * Routine to blit 16x16 block onto background * a0.l = address of block * a1.l = address in background * d2.w = shift value * d3.w = y count (no. of lines) * This uses a slightly different method, since * we only need one colour we and all planes * to give colour 0 only. note_blit movem.l a0-a3/d0-d3,-(a7) lea blitter,a2 blitter chip address move.w #$ffff,d0 lsr.w d2,d0 mask off left edge move.w d0,endmsk1(a2) Left end mask move.w #$ffff,endmsk2(a2) mid mask not.w d0 move.w d0,endmsk3(a2) Right end mask move.b d2,skew(a2) shift data right move.b #1,op(a2) AND mode move.l #3,d0 mask all 4 bit planes .mask move.l a0,srcaddr(a2) source address move.l a1,dstaddr(a2) dest address move.w d3,ycount(a2) no. of lines move.b #192,linenum(a2) start blit (HOG mode) addq #2,a1 next bit plane dbra d0,.mask movem.l (a7)+,a0-a3/d0-d3 rts * Blitter routine to save\restore background * a0 = source address * a1 = destination address * d3 = y count (no. of lines) back_blit movem.l a0-a3/d3,-(a7) lea blitter,a2 blitter base address move.b #0,skew(a2) no skew move.b #3,op(a2) replace mode move.l a0,srcaddr(a2) source address move.l a1,dstaddr(a2) dest address move.w d3,ycount(a2) no. of lines move.b #192,linenum(a2) start blit (HOG mode) movem.l (a7)+,a0-a3/d3 rts * Subroutine to sa5 IU?}o\WU\bek8o DW,<5k7 wW F9<½1~4~DzB x⟶`{"n#*"\ a PcӺZn0)˄eyQw5w8}jL@Z{W ̐ys>>0z`ioy/ Ƭfg@zS"-lh1-z)ot SPRITES0.CPTGbcL{\VqjRZ1qQsE&k'@_i_b9;.ڄw/pX$@ơr s4nմbr`X^ 6sЄy \NRsD ~D S^B6w[7)ѺUt_Ks,&:stۨ\L֤nmEo^e\p߈ݸbb.8vBcĜ8?'#=5/ݼ^R;wwg/'>~T'j,`[7FGO-I p/!xjm4EtgCq;P>; h2ܕ\rrXs͜&O'97g(jsr9!>]K\l =o^ |{?CcPTux=/kSObS.3s~cl[x# lL Y#vfbMC__?WP?l}k~;bސ{ͷ.뢮r9"C.(ˉ/~6ʪW|ԟwMCs]e.ċMۜ"!Q>1wG4./^Nڤ3ZݟRF^v&KfI&Oʧt~?ƞs&؄Y5k68ON$Eg"-J;x$3%xv{G"S~tS; ovw{v8 rrO`ؤFy3Wl TwiYveocUs)t^U0O?3u'W`4tYU xzCaic;i5>巰IDuWa|n"ۗD·qoV{vDj=zڑ>'e_7+e`le|g=wQ[0YA*|YN?42 9itU*1ۣ]8k3ƤЕC^{U~Nʹ}%_6ZoL3~M㜟{ϏJ4~KrQB|w\eZ߯ھ]&o?s? _T]Z ~|kZ< _KG~UM{,V½lˀnAN \;Exxw8뇉~ Bߘ~MY-稥;&'7|Taog7?5=?R <<6VLVJk.E_y?Mzcu"o^ |. ׭ ! mSmPa!y|Hgx.N=iLvSAb+b|Rc=2@Y'3—\\-r[3?ڔǦ[{g]G?.uU1O?olGą[/Gq=J[ 0 Xgp ;.Sum{n=U? o?|HǞ}nl_z',m3h8>^}Ӧ>OE{Wlk/ocf@ǿճ8o޸$Fۍ<㞨Մ,OMI7`zxC?(N[>ǎ^I^;Goߩ?7|oK^7ߡS~Rz?i;N=y8wgy?Jz B[n=?|پl7z&۾oo?T|~MHC{t_wnwoVCBAEwV7?^B.v ̗@{~yO9+'3TαC?u<_͆n'o+v_zĩ%Nf:H:7o <l[y1GIk^Fh6] OX+ItQKεK6gH{~ǻ#Ze{fLp|O$r_? |yݳH ==`f{;xW`ea_DgH1؇KzyF<];)$5t_q>{[Cӯ{t_WxG3yc:3obw[[c=+i{jp3{H/?}\7>gЧgT8^ʳ8M'ՎOo]wON _NN-/8>ކyоv`P?KŻYa_՜fv M/kF8r~;)7Qw3m< >C>SBߵ8eʟyks_^+|s~J!8xR >.V7zWj\A/͘Sxg1V^o~1W~Oxg>J}ARZ ywxT}|ڻ/X/ 0_g{[\*z)y/9otkhSzoZƦ2+;p_^t|LƷ~O+3Xyᆭxq]tNĵfoy~^||syħa?7oS:1ϧʧ~~?S/y:{D;T:MD4o%oM?wD=7pkN.Pl?0TX\R^}Iƹ_8sAs|x?;noE{hR}:$ ka׌WoHGoVf{e/o2Z :+~N.ę ^skzPJsKw-y;+U ;)/ |\{_+7l_'f̽Nv;7.O l?j ӝE$1~vfnkrL5wgaˬ7]H/ܿ==|bj^9& xz{g};ײ*^+1 ?/lFþdq³3=beY/s-NקZXxXl$}62?£ߝgp_? 0xS>Wx1g^-&[ʛ%d=a_YˋX~Oo~Jm}GOBԟѬqԸvO߁yM엑J;_t,4$ֶS¤0m9>tgir!2I|W{ҵ_~b?td'֬(b_-tբF]ֲ|W;g>OJ?}ҽ0^[]ؘt<0W>WVyOxWq]1_8)}(T}u'7; /9oOY}KORx?J0$M{M,vxNkP U{~,=(ZI~ڴYG1v9?&՟xgoN v 3Q~.K2~e}=vE35߷>}C<j`/Ϗ>Jx }>RJչݝaIcuw=Y:ds__o5?XQJZ|Xu/~1ZyLoJ{xûМ|_~N_/ǭj{3xG Iubzj{[*ҵ+AIgfO7xoE9#*?gL˅ ?ho vټqrKO ^}TKx^L~W|w;6O^~1 B+ەEwں_!~[&4/<~I5_78_r>KTqYz.?U߫ n!HC^amS;v>g/>}ʞ/T۠??J$s=~{d>_kR|Il.\4?ֆNo{{>D}GF~e&{~;G0oLG|\ѿc An9|rvj<шr%րuWW}~Pc^_/kw {O=ҌK%ʗ]ȬOzԟ7G_?IJ|07?9gP)U7,™z}{9ޢfd?4?I87G67p ffTo^CNќ dA?Q1۪3W7 gS!EQ-c}t|X;oPP9!?tƥ]durv}7ӎ+^#^s:mKde'U0HNofD`(Zd| FԲ#]~׺]G~(3PdɳHҾuΟsB~w! |ݱǪ9c|I~ 9;L:>#m8.?mhLG̃csz?>7b-%~Wj޲kvw4Yo%ߍ.%=8/&WKG=Rg/|s~O?q/s~NGI\KowlI>oQ-oP?H{š?.\RG\Oy3sKO_ߑ䗿SWW;\b zȕ7I2ٴ/7B.Jbsl¯_?O~ !U WK!~7攀QOOfBL5ՎpwF{~o}FO-~f7c?ww }*sZ!5IvsNMBkHl.$‘OKAw5"ǡt~2| i.2D}-W}te)quƽp>2С| ]@w;Li}gOco8Ethʿ>P[aje]Х1#COUͳmnK[3T/J >_4Z|-hɺ?ξ}"دm_~"zc6KR ԅy8Q-3}]\73C;vUM}~X܎>{32ƾN mM;.g MdKDm~wnoh}2uHmj9yv\'FSb.Xo4/=?|'m}>v^3ӋjF]'وܱ@_'sCg;{ƗU>|gn?{&y^oݐvJ= Wx`[m3Ѵp֡pM?l2g>WU>G^.~;*^{:n{I=7'^gM۟?L^KmFnr9q17vvq?u~~2ˋ`xㇾ!7Uoŗ.A+4oA}@5~gߓb,j zh͵3/S1yF w0|'irw~)<P7?@zyNc}ct~Pg= _y)R,R-uW^UQ^9/VBp77CRg\{}ǎo> >}{mZ?Oğ;swW̯(߾늿Xeދ/fxLC=c6C>?&_GǞnV[}3.jIq2svI_Bh|XCWɎ> ~/GO֡ו~LOOD_z #e9UǯV~W͙1e|h44 /!mkXf۵(~rVGoCON_~A %A!yWobW/;}toC~K鏮]Qlչ<.y |axn)xmM|YU'|s=y_!-UE'?j;nnynIGv mȟ/?>xwăT:8<']&|?xt7gq?9 yMmTX.~1|uJ|ďxW}7k|~Q0`zT|uV6̈o?y%"Ԍ+|0ZAv8j`x{k~Cx[e.w d6,-(a7) file handle move.w #63,-(a7) read palette/mode trap #1 add.w #12,a7 mulu #160,d7 move.l a5,-(a7) address of memory move.l d7,-(a7) no. of bytes move.w d6,-(a7) file handle move.w #63,-(a7) read picture trap #1 add.w #12,a7 move.w d6,-(a7) file handle move.w #62,-(a7) close file trap #1 addq #4,a7 movem.l (a7)+,d0-d7/a0-a6 rts * Routine to interleave a picture into memory, 2 pictures wide * in: a6 = address of source, a6 = address of dest * d0 = no. of lines inter_2 movem.l d0-d7/a0-a6,-(a7) move.w d0,d7 sub.w #1,d7 .loop1 move.w #39,d6 .loop2 move.l (a5)+,(a6)+ dbra d6,.loop2 add.l #160,a6 skip 160 bytes to interleave dbra d7,.loop1 lines into one line 320 bytes long movem.l (a7)+,d0-d7/a0-a6 rts * Routine to interleave a picture into memory, 3 pictures wide * in: a6 = address of source, a6 = address of dest * d0 = no. of lines inter_3 movem.l d0-d7/a0-a6,-(a7) move.w d0,d7 sub.w #1,d7 .loop1 move.w #39,d6 .loop2 move.l (a5)+,(a6)+ dbra d6,.loop2 add.l #320,a6 skip 160 bytes to interleave dbra d7,.loop1 lines into one line 320 bytes long movem.l (a7)+,d0-d7/a0-a6 rts * Routine to load a sample into memory * Gets length of sample, allocates memory * then loads sample * d0.w = sample no. * a6 = filename address * Assumes file exists load_spl movem.l d0-d7/a0-a6,-(a7) move.l #sam_recs,a5 mulu #8,d0 add.w d0,a5 a5 = sample record address move.w #2,-(a7) find file move.l a6,-(a7) d0.l = -33 fnf move.w #78,-(a7) else d0.l = DTA address trap #1 creates DTA including addq #8,a7 file size move.w #47,-(a7) get DTA address trap #1 addq #2,a7 move.l d0,a0 move.l 26(a0),d7 d7 = length of file sub.l #4,d7 skip header bclr #0,d7 move.l d7,-(a7) move.w #72,-(a7) trap #1 addq #6,a7 addq #1,d0 bclr #0,d0 ensure even address move.l d0,d6 add.l d7,d0 move.l d6,(a5)+ save start/end addresses move.l d0,(a5)+ move.w #0,-(a7) move.l a6,-(a7) move.w #61,-(a7) open file trap #1 move.w d0,d5 add.w #8,a7 move.w #0,-(a7) move.w d5,-(a7) move.l #4,-(a7) skip header move.w #66,-(a7) trap #1 add.w #10,a7 move.l d6,-(a7) move.l d7,-(a7) read sample move.w d5,-(a7) move.w #63,-(a7) trap #1 add.w #12,a7 move.w d5,-(a7) move.w #62,-(a7) close file trap #1 addq #4,a7 movem.l (a7)+,d0-d7/a0-a6 rts * Routine which sets up and plays samples * Once this is done the sequence can be left to play * and the rest of the program can do what it wants playit jsr initsound init. volume/tone move.w #0,d0 move.b freq,d0 combine frequency and move.w ster,d1 stereo/mono or.w d1,d0 to set mode move.w d0,mode move.l #smpl_list,a1 sample list move.l #loop_list,a2 loop list move.l #sam_recs,a0 move.w #0,d0 move.b (a1)+,d0 get index and use it mulu #8,d0 to find sample add.w d0,a0 move.l (a0)+,d0 get sample addresses move.l (a0)+,d1 jsr sample_ad set addresses move.w #3,enable enable sound, repeat mode jsr init_int initialise timer A interrupt * Now get next sample ready so that we are looking ahead * 1 sample move.b (a2)+,d3 repeat for first sample sub.b #1,d3 check whether need to bne.s .set load next address move.w #0,d0 get index move.b (a1)+,d0 for second sample move.l #sam_recs,a0 mulu #8,d0 add.w d0,a0 move.l (a0)+,d0 start address of next sample move.l (a0)+,d1 end address of next sample jsr sample_ad next sample ready for end move.b (a2)+,d3 of current .set move.b #0,tacr set timer A countdown to move.b d3,tadr correct number of loops move.b #8,tacr using event countdown move.l a1,smpl_ptr save list pointers move.l a2,loop_ptr rts * Routine to initialise Timer A * STE provides interrupt after sample has finished playing * Using event countdown mode we only get the interrupt after * the sample has played the correct number of times init_int move.b iea,old_iea save state of MFP move.b ima,old_ima move.b ieb,old_ieb move.b tadr,old_tadr move.b tacr,old_tacr move.l timera,old_vec save old timer A vector and.b #$9f,ieb turn off 200Hz interrupt ;and keyboard/midi and.b #$df,iea disable Timer Interrupt move.l #tim_rtn,timera address of our routine or.b #$20,iea re-enable Timer A interrupt or.b #$20,ima set Timer A Mask rts * Interrupt handler called when sample finished. * This is the routine which actually loads up the address of the * next sample. * Using event countdown this is called after a specified * number of interrupts tim_rtn movem.l d0-d3/a0-a2,-(a7) move.b #0,tacr stop timer move.l smpl_ptr,a0 get index of next sample move.l loop_ptr,a2 get number of times to play move.b (a2),d0 repeat for next sample cmp.b #0,d0 check for end bne .doit move.l #smpl_list,a0 if end back to start move.l #loop_list,a2 .doit move.l #sam_recs,a1 clr.l d0 move.b (a0)+,d0 use index t,ev~=fCfxޭߩ|.]w߭_I\k _߲vy\whr!P@@WϘ⭫$Һ_ S:az1vIlo{.P)b$Zz|ݿE͓`@.ɒ c3yAJ!,DПV#cd_\>vg?.H$&ߏ[Ed?WV;߿ԓZO_t\IseUI1%vRXboxy?vqG]ĥ?eP'(6K?7>O)reSk=kh'|FD蟿uu(Ws6ˮۡ'"N*.yP~*MmTWn}s_;t qvNל{g$=n~Dyo@B93-grl\q;Hz8 ^j  wFq?_Yq/3? )fkc|?ߔ Oh6^8zO |_ '5O_t+n@ CLF^5Xo(mLd})rsq?_>'V?:l\埉g'+ML"-lh1-p Qx SPRITES1.CPTbcL{\VqjRHUqs1qV@܂tW}L辣l_G/ U{!]_ aab͸Ȯ*$0;I\jy R/`iJw=/8B,*|zb܈0@&0Vh6sk8sn *B݊' NaN`mIӬ3w#8S} .eNt1ӯP_}fs3mR}Rh~YsGO]vT^:O>xIwTxD_5B_t@^m_~@KwfŽ|NU/-%\O{Uiog枱 =}K }N vO_7ՖpE=itK:pCwY4RWk}P?/8ToM݇;#"{ݬ tDzYR|UXlhb䮪]WcovoZU[ֺqcӊKd]ƇE~hTA5HetIrUQ} ~>bWq)xF9ĭzef "(s~d%H~fͱ͚PCu]ZQ[#k ~̶{?yVZ҃$iՑ~?}wualyW,#'~=]w=F^xoUY:?eg16i#yy]yS5DbYG5nb]|k@ϓp\ÔWoߥ7p/?i $C|xԡ[sug+@+Cav}[ὰQ=UWz:ӒDׅ6n?ҮX[] _Ye|7pn>ō5x#vw`s,v}J\pH#>f]YӺh"8싄*<-_|?f}r*vWˋ.WaXvgv#J9{#?;]^lܥa};g9/?tykcW}R =gDֻٳ Èddr- 'z[5w/~+z& b{_ɻMSJ?c^G̒d+,#Uy=}B>>%cM#}V?4汭qVRoxl=ZT![7p.CQ7߭s{ӿSP|pъk%F{1JSYL/Zd~{}~Wz^q}\oORǜᑼw5cy+?ܻ$?OĀ3o˖{a[|m{q>޿OD:Bj;O}_`w4~{w/~lJ-OҾҏ 2|N=G~[qpM{쵊ǫsO; zM[sI? !9_DAMt/:~o"$ -R% U.-/*: ?\MOyI'Jo`|_z@l,|Ĺy??s=%3kFu⹡KtuoȦ{]O.DZa`".ZɪsOW%MXݟ۬~BdD(yo2{}xOgo[)~:/7pόDߟCE'v}`t._r=Wϼ£i҆~~(ͼ ]>sluE,A!Fx/hmdIgݨo곌_ogw;}>sQ?2؞ gϋ1{9>:'$r~G(kޟتv/7ؠ{Ӟhy||Ƿ_@;ys^t%;͛&c߬⍙3w>z:🽹aEz_;Á!߬`YE(E7}d/wKA={s^Ë]o+ǥo get mulu #8,d0 start and end address add.w d0,a1 of sample move.l (a1)+,d0 move.l (a1)+,d1 jsr sample_ad move.b (a2)+,tadr set repeat .noctrl move.l a0,smpl_ptr move along list move.l a2,loop_ptr bclr #5,isra re-enbale lower level interupts move.b #8,tacr restart timer movem.l (a7)+,d0-d3/a0-a2 rte * Routine to set start and end addresses for a sample * d0.l = start address * d1.l = end address * uses movep to set alternate bytes sample_ad movem.l d0-d1/a0,-(a7) move.l #f_strt_h,a0 Frame start high movep.w d0,3(a0) Set start mid & low swap d0 move.b d0,1(a0) Set start high move.l #f_end_h,a0 Frame end high movep.w d1,3(a0) Set end mid & low swap d1 move.b d1,1(a0) Set end high movem.l (a7)+,d0-d1/a0 rts * routine to look after volume/tone * in: d0 = keyscan code. set_vt movem.l d0-d7/a0-a6,-(a7) move.b delay,d1 since we are reading beq.s .ok keyboard data direct sub.b #1,d1 we have to allow a delay move.b d1,delay to simulate key repeat rate bra .out .ok move.l #m_vol,a0 address of vol/tone settings move.l #vt_max,a1 address of max settings move.b d0,d7 d7 = keyscan code move.w #0,d1 d1 = parameter no. move.b #59,d6 code for f1 move.b #60,d5 code for f2 .loop move.b (a0),d0 parameter value move.b (a1)+,d2 parameter max cmp.b d6,d7 test for down bne.s .up cmp.b #0,d0 check for 0 beq .out invalid, so out sub.b #1,d0 parameter down bra .set_it .up cmp.b d5,d7 check for up bne.s .next cmp.b d2,d0 check for max beq .out invalid, so out add.b #1,d0 .set_it move.b d0,(a0) jsr setparams move.b #7,delay bra .out .next cmp.w #4,d1 beq .out addq #1,a0 next parameter add.b #2,d6 next pair of f keys add.b #2,d5 add.w #1,d1 next param bra .loop .out movem.l (a7)+,d0-d7/a0-a6 rts * Routine to initialise volume/tone settings * The addresses here are storage in this program, the * Setparams routine uses these to set actual volume/tone initsound movem.l d0-d1/a0,-(a7) move.b #40,m_vol move.b #20,l_vol move.b #20,r_vol move.b #6,treble move.b #6,bass move.b #2,mix move.l #m_vol,a0 move.w #0,d1 .loop move.b (a0)+,d0 loop round getting jsr setparams value and calling routine add.w #1,d1 for each setting cmp.w #6,d1 blt.s .loop movem.l (a7)+,d0-d1/a0 rts * Routine to set volume & tone * in: d0.b = parameter level * Ranges are: master volume, 0 - 40 * left/right volume, 0 - 20 * treble/bass, 0 - 12 (6 centre) * d1.w = parameter no. * 0 = master volume * 1 = left volume * 2 = right volume * 3 = treble * 4 = treble * 5 = mix GI (sound chip) * Uses microwire to set. setparams movem.l d0-d4/a0-a3,-(a7) move.l #voltone,a0 microwire settings move.l #mw_data,a2 microwire data register move.l #m_vol,a3 parameter Values add.w d1,a3 mulu #2,d1 add.w d1,a0 move.b (a3)+,d1 setting for data move.w (a0)+,d2 microwire address or.b d1,d2 combine them move.w (a2),d4 previous value of microwire data move.w #$7ff,mw_mask set microwire mask for vol/tone move.w d2,(a2) set data - send data .wait move.w (a2),d2 cmp.w d4,d2 current value of microwire data bne.s .wait data sent when returns to previous movem.l (a7)+,d0-d4/a0-a3 rts * Return to user mode and exit fin move.w #0,enable turn off sound move.w sr,-(a7) save status register move.w #$2700,sr disable all interrupts move.l old_vec,timera restore Timer A vector move.b old_iea,iea restore MFP move.b old_ima,ima move.b old_ieb,ieb move.b old_tadr,tadr move.b old_tacr,tacr move.w (a7)+,sr restore status register jsr initsound set vol/tone to default move.b #1,mix mix GI (old sound chip) move.w #5,d1 set mix jsr setparams term move.l save_stk,-(a7) move.w #32,-(a7) trap #1 Return to user mode addq #6,a7 move.w #0,-(a7) trap #1 addq #2,a7 * this code is for debugging, as the debug display * is messed up if hscroll and linewid are non-zero. * when the debugger is invoked, save the PC to a register, * set PC to debug, single step 2 instructions then restore * PC. This has to be done 'blind', so type carefully! debug move.b #0,hscroll move.b #0,linewid section bss oldbase ds.l 1 old screen base oldmode ds.b 1 old screen mode oldhscr ds.b 1 old hscroll value oldline ds.b 1 old linewid value pic_mode ds.w 1 used to dump first word of pic new_pal ds.w 16 next 16 are palette old_pal ds.w 16 stores original palette scrn1_mem ds.l 1 start of first screen scrn2_mem ds.l 1 start of second screen back_mem ds.l 1 start of background memory sprt_mem ds.l 1 start of sprite memory sprt_inf1 ds.l 60 info on 32x32 sprites sprt_inf2 ds.l 60 info on 32x16 sprites sprt_inf3 ds.l 60 info on 16x16 sprites sprt_frm ds.w 1 frame no. for 32x32 frame_dir ds.b 1 direction of animation even * scroll variables y_ptr ds.l 1 pointer to list of y coords screen_x ds.w 1 saved x coord of screen screeᗐ~p=>{g j">Lcܺ35]e+?VC_2I\tcBטqwT ;s\ݪy&߯^peK̗y#0' %y&B.osEwv^uBrvM(Iw}G26 ZjomDtȎlo&d^xeqr^(V<5PJs*pW|s_wq+GەT(/~\gSn2HL'wnAo#{nU^Cケ-=9CvOʹ[͘_T帅iޅ~r`߿Ԍ5PVYsݦ9x5nuv4fN=73Ow\w5}/zfk^~_DB/s{ xL syx!|a YP nz1wNkҁ9L}gГwߧLpW6p>V qӄh9w%flJr}wwwLep)mJu2?X&\7tGkå. [rr&0/U.R,Q;=yT_#T#Mەը~Dr[hz?2Mͳj8~-ſwFEv?$l/s?]2[WJكQ^жD#k3_+s&Ɨz xGCo#_C"^UT?6OW1'=ǼS/~Üe,}ň/\5zWwu+l7q2R_һgТ4=)E!k>A ŷP:{'rMa^Ln|%?U(όRCO[yd݅!eRz.??pn\vFàO 8h%؇Ǵq(1L|⽼{%PpLvg3 KSGNx3Ýg|;b~p>"}Ic?RlÒi>=z;޿wv=#sz' 9?.wholyʞ&'Dy~s{u-gϞ):ì'kdNk7[νu>QLp7=kA69OO\?4y Ӿ|BGZ"ކǔ?fpk|5AI}] vavw/R<{}ְTXs+OíH?2.$;L7lH^^19 \mKooy??wO|7{'<0Q3\6xh[iw{hnfssҮvKڸ;7_lf]W24[ism߽-? =|89K w;F}K+Y 4NN[>T?-3>7c{% #5\ÞI-pI>k$?Cbh%C|,gpφp(ٟ½Sr ۖ.ij۲}{=M7]u;m{R:ip⟁!*o;&}l0Om~m$N>^ݺc޼:A*޹G?Lrw݊Cv-^'_)E~QL~v仂?/}c>e?x1RַO|>sXcB?odc=i wD gm[s&^ m/GjJNPI8G347d)}};̓d! >~qo4~.o2gwf5TTRY^n;M~;61>,v_IL{8{ݾTU~gb{=?'9/O~x-KQ7{xGҖt%/2^Vtss?t<|gP~nG[OH587Y}j/039]ҏobP yq"чt!=J,o~Ͼ3_ha7c%08U(rKx:cTb@R!9.xHm[O>9Vy 3Q.eHu;)}[T)~ڪ^_ܒ8c&5)Su`oPLm(5"Q-lh1-  TRAC0000.DAT#llqqr@>ؗh.ET@jU,뤮Hَxoýn#sjrξ;ۖ,ĸv-m#Hij[8ˍGRـ.8=v]@\7uw#gKtf8;O^/ZR` `PpW JeAf_\^;i;g&l,ipv9HH`-F8.;F,P;,µw.w?۪>1Md>/J| UάT{]6ž % ?φۯ/y`G(>Hi/ xm8}7P{v **)'w\YyN*ھ/; ;nJC9.-o{3;s;5'%7C>_tu?K:בG<)d_coy󬶘{|ho0L"-lh1-n TRAC0001.DATwA9bpe(]ڷٲջW#AtLDL24SCMSInt,vX+n\eȶ:s3Μiaw1єyiXv'eKH={:3-'4体$~\%յZqAFα~=TO22. -˘ 7T -QG~-o_^'pdo_A\w;<>?LJy|G-m:ӹZw3Q';rJYO<r،{P9_7N"Gڳ:/WO=}K[L=h*$fm)E_ιf2>+ʝj<눹eq$}3TKq#~^ TM`7){:GE3<ӇQ![g6\n_y ds.w 1 saved y coord of screen hs_buff ds.b 1 buffer to synchronise hscroll set even save_stk ds.l 1 old stack pointer old_vec ds.l 1 initial interrupt vector old_iea ds.b 1 initial state of MFP: old_ima ds.b 1 old_ieb ds.b 1 old_tadr ds.b 1 old_tacr ds.b 1 even sam_recs ds.l 20 table of sample records smpl_ptr ds.l 1 pointer to sample list loop_ptr ds.l 1 pointer to loop list * storage for volume/tone settings m_vol ds.b 1 master volume l_vol ds.b 1 left volume r_vol ds.b 1 right volume treble ds.b 1 treble bass ds.b 1 bass mix ds.b 1 mix/don't mix GI delay ds.b 1 loop counter to set key repeat even control0 ds.b 4 indicate whether 32x16 sprite is ; under joystick control joy_0x ds.w 8 joystick x and y coords section data sprt_file dc.b 'NTR_SPR.PIC',0 sprite pic scrn_file dc.b 'NTR.PI1',0 background pic intr_mess dc.b 'The STE No Through Road Demo',10,13,10,13 dc.b 'Copyright ',189,'1991 Adam Greenwood',10,13,10,13 dc.b 'This is a source code demo',10,13,10,13 dc.b 'All code and graphics by Adam Greenwood',13,10 dc.b 'Music by No Through Road, ',189,'1990',13,10,13,10,0 blit_mess dc.b 'Blitter Chip Present.',13,10,13,10,0 STE_mess dc.b 'STE Video Shifter Present',13,10,13,10,0 TT_mess dc.b 'TT Graphics Chip Present',13,10,13,10,0 dma_mess dc.b 'DMA Sound Chip Present',13,10,13,10,0 xblt_mess dc.b 'Blitter Chip not present',13,10,0 xjar_mess dc.b 'No Cookie Jar, machine is not STE/TT',13,10,0 xvid_mess dc.b 'Standard Video Shifter only',13,10,0 xdma_mess dc.b 'DMA sound chip not present',13,10,0 out_mess dc.b 'Sorry, cannot run on this machine',13,10 dc.b 'Press any key',0 message1 dc.b 'Loading Pic and Sprites...',13,10,13,10,0 message2 dc.b 'Loading Samples...',0 even * sample filenames: file0 dc.b 'NTR_SPL1.STE',0 file1 dc.b 'NTR_SPL2.STE',0 * Sample and loop lists * Minimum of two entries per list, plus list terminator (0) * smpl_list gives the number of the sample, ie * The first file listed above is 0, the second 1 etc smpl_list dc.b 2,0,4,3,1 loop_list dc.b 1,4,1,1,1,0 * Playback frequency for ALL samples * 0 = 6.25 KHz, 1 = 12.5 KHz, 2 = 25 KHz, 3 = 50 KHz freq dc.b 1 even * Stereo/Mono mode * $00 = stereo, $80 = mono ster dc.w $80 * microwire values for volume/tone voltone dc.w %10011000000 Master volume dc.w %10101000000 Left channel volume dc.w %10100000000 Right channel volume dc.w %10010000000 Treble dc.w %10001000000 Bass dc.w %10000000000 Mix * maximum values for volume and tone settings: vt_max dc.b 40 dc.b 20 dc.b 20 dc.b 12 dc.b 12 * Data used to initialise blitter chip for each operation sprt1_set dc.w 3 x count dc.w 8 source x inc. dc.w 144 source y inc. dc.w 8 dest x inc. dc.w 464 dest y inc. sprt2_set dc.w 3 dc.w 8 dc.w 144 dc.w 8 dc.w 464 sprt3_set dc.w 2 dc.w 8 dc.w 152 dc.w 8 dc.w 472 back1_set dc.w 12 dc.w 2 dc.w 298 dc.w 2 dc.w 458 back2_set dc.w 12 dc.w 2 dc.w 298 dc.w 2 dc.w 458 back3_set dc.w 44 dc.w 2 dc.w 234 dc.w 2 dc.w 394 * three sets of coordinates which the three sets of sprites * follow around the screen. coords1 dc.w 254,79,253,86 dc.w 252,92,248,102,244,107,240,112,236,117 dc.w 232,121,228,124,224,127,220,129,216,132 dc.w 212,134,208,136,204,138,200,139,196,140 dc.w 192,142,188,143,184,144,180,145,176,146 dc.w 172,147,168,147,164,147,160,147,156,147 dc.w 152,147,148,147,144,147,140,147,136,147 dc.w 132,147,128,147,124,147,120,147,116,147 dc.w 112,146,108,145,104,144,100,143,96,142 dc.w 92,140,88,139,84,138,80,136,76,134 dc.w 72,132,68,129,64,127,60,124,56,121 dc.w 52,117,48,112,44,107,40,102,36,92 dc.w 35,86,34,79,35,74 dc.w 36,66,40,56,44,51,48,46,52,41 dc.w 56,37,60,34,64,31,68,29,72,26 dc.w 76,24,80,22,84,20,88,19,92,18 dc.w 96,16,100,15,104,14,108,12,112,12 dc.w 116,11,120,11,124,11,128,11,132,11 dc.w 136,11,140,11,144,11,148,11,152,11 dc.w 156,11,160,11,164,11,168,11,172,11 dc.w 176,12,180,13,184,14,188,15,192,16 dc.w 196,18,200,19,204,20,208,22,212,24 dc.w 216,26,220,29,224,31,228,34,232,37 dc.w 236,41,240,46,244,51,248,56,252,66 dc.w 253,74 dc.w 450 coords2 dc.w 60,30 dc.w 62,31,64,32,66,33,68,34,70,35 dc.w 72,36,74,37,76,38,78,39,80,40 dc.w 82,41,84,42,86,43,88,44,90,45 dc.w 092,46,94,47,96,48,98,49,100,50 dc.w 102,51,104,52,106,53,108,54,110,55 dc.w 112,56,114,57,116,58,118,59,120,60 dc.w 122,61,124,62,126,63,128,64,130,65 dc.w 132,66,134,67,136,68,138,69,140,70 dc.w 142,71,144,72,146,73,148,74,150,75 dc.w 152,76,154,77,156,78,158,79,160,80 dc.w 162,81,164,82,166,83,168,84,170,85 dc.w 172,86,174,87,176,88,178,89,180,90 dc.w 182,91,184,92,186,93,188,94,190,95 dc.w 192,96,194,97,196,98,198,99,200,100 dc.w 202,101,204,102,206,103,208,104,210,105 dc.w 212,106,214,107,216,108,218,109,220,110 dc.w 222,111,224,112,226,113,228,114,230,115 dc.w 232,116,234,117,23ىש݂Y:FĜc )v ZͫWV:NgCbM%/,EofiJ?XVj$Cg l`\J]j-*vPJ).qk/ps<AEIʼn@}@HpxAȂ2 vE%Ix!&t q6@xzut&0A@.5G`E8*4 {3({"-lh1-Rg~ TRAC0002.DAT19bpg8dnU`+X*]h#C:)NIZ.2eC$m#kkCn[Iga?xꏫ>{+,ߥ_d`UֿfvrfPdAU_m9{- `a;#p +Fi<RUGU[i/Μ,B|?w-]菬@f %W, M;?D/o?嗙?6cnXмNya]]Nc9K4zʮ*Wv^ߣY^}q3;/b(0>{1H\bߥ;Ewswjfk&^ܯαvO: -V(ٕ0na_p> *?7Q;f`F}KgkcKyqܽC{d-[SN18jUg9ǿghv] a^r]pېҋfu99wRڶnsq 7 jEmD^(\10D&WvJF;Q N3ypy[Yjw!0 %dN*NJP( ް "`*ucM=8p 2,E (:Q6ƛ]0 q$3E—χL0y /`,wȌB7DnzzyW^Sx_q7AdD `]8FPkm+0c1k"C-lh1-Km TRAC0003.DATۯlqqr@>h.ETF*뚜뤮I o5o1e:D͞y `zn#v105HoI~Vฬ刵b#Y_lyp"0Zf\UƯ Ö\ %MC A ?%ϖZKuTS[Z T^Iqײ?'"?0>`[#dpG:!;+C $gd/ .g?I(4wGjҽC0jԮQN:PxcrGKÜ7< g~z.4J_vH)p80Ϝ>Ƅ5pBUAEYˎDR̢v`Y+?Íч8qۂXAw[a׳X5},[yumSWFauEo-ҮRg(d^[jSWKNp]swN> [`LE[j1,'^ +;]I"FB(kܔuvBC;;hk.x+Tg]MuUts,'k;hA%̎eK:Uxb,]هs3Npؾ,e:2;FY_xxE몥.<ٴ=n".C-*QطnV1<.tYoVwVaK|RpukN5#ء*4eVYP5y\C synVUme2%PM^(=<Qbwu)o#+?+3O5S2}#BPJHk.ZaJWNa+{eJ]@j@Q_&X$KKZJ㌽{,]k-ޝ>,1j ]ߓ / ۢ-:.#.N'iǃ0fW|XZiʥoc(JR(Gw3clٿӊ58wzpˠjRZsSw):F0=A[tk0ƴ2EYOC#gz*O` "-lh1-׫ TRAC0005.DAT@Fq\^a]!\vu]m*V yJz7F4348Ô`Ml/ž6v;F7 s*ZrT_5c,fޯ 8b7*pVcʫKʖ՞SGVD٫5Ld)Nl-Ѩ\[o 8J{*:љsHu-;O+M/>aXnv(pk HrDb'PW'Z֮y_ @DP!6!cL/B=NjwSyW|!/ id-!]`+_[<1xr?" :5ЋǷi`9p~|8P#vUZ$<֟|Ow]0Bf"-lh1- TRAC0006.DAT8b^Ծ߀8*[ʴ՝gE)'K1~X-vXc Hq65d. ;e)ڞ>.\~"@ϩv}CyrHUά8<^~1ND)ح!K+WYs3P ;j:r`HQ񼀬&X/L=|)UW&I~7792ݙҜɋwSUη#U:f(C9Kkz5ZE2 l[,oO]2\^,~|2-+YլM%vJ?|E7nZeR}JeyG$wgFQ:+^$jHዱ&zQki~`#m5TnGZɑ-J7]iUE_-Bq]Er#Kk4]ϖL%v5HJ8;diU( %Xa`[Gal1#d5ra G$"E-lh1-t TRAC0007.DATU8bppu} t6NWқZmCŠjL| mM7~I8 Ωfi瞙令Kj2K甜؝[ט+ PX5 Px'9Pk:d˽pŻ_~8f@7dzOjKj~_3fhMq˫YeVFBPMi"1x tHuu=غ0;]!/@^؋ ѕ89H_[-/=F?F}an OaZK(3y/iWMB3LFn{w6= bRZ&;G"w0fUg $.ﶋ'gFo!~)6}u7gg!sRFISvA,IQ2e:O.-83s.u:ּV+-3JYOkU+̗Yڬ5S.B|H Ukʲ\/ͬ=?ϊʨl5a^h񠁆ز[/jKo^s8%+1c ,#03CD!Kt ] EL)Bom " -lh1-{ TRAC0008.DAT&bpf8dpC-۳[*::i)A1 > i=6Ӈ}}f{~r;BZ|Yqvi+ŋ:Ž˭x$d|gɴo:[SVʥfiuSM7S]־&#$1nAO.L& vx Yg 6"5Ȏtv*9SUܯ ;VrIuz1ۜW7Bí@#7_j@<z+8ZEr6?z/sd_G0LCӫn<ȳ?1=fzI 3=ŽuH_GW%Vq2y ki{ikڠjBN*w] 3B;ňN|? R$xsSSן֋WiWo/M^ $ͥ[Zk6,118,238,119,240,120 dc.w 242,121,244,122,246,123,248,124,250,125 dc.w 252,126,254,127,256,128,258,129 dc.w 259,130,260,131,261,133,262,135,262,137 dc.w 262,139,262,141,262,143,261,145,260,147 dc.w 259,149,258,150,257,151,256,152,255,153 dc.w 253,154,251,155,249,156,247,157,245,157 dc.w 243,157,241,157,239,157,237,157,235,157 dc.w 233,156,231,156,229,155,227,154 dc.w 225,153,223,152,221,151,219,150,217,149 dc.w 215,148,213,147,211,146,209,145,207,144 dc.w 205,143,203,142,201,141,199,140,197,139 dc.w 195,138,193,137,191,136,189,135,187,134 dc.w 185,133,183,132,181,131,179,130,177,129 dc.w 175,128,173,127,171,126,169,125,167,124 dc.w 165,123,163,122,161,121,159,120,157,119 dc.w 155,118,153,117,151,116,149,115,147,114 dc.w 145,113,143,112,141,111,139,110,137,109 dc.w 135,108,133,107,131,106,129,105,127,104 dc.w 125,103,123,102,121,101,119,100,117,99 dc.w 115,98,113,97,111,96,109,95,107,94 dc.w 105,93,103,92,101,91,99,90,97,89 dc.w 95,88,93,87,91,86,89,85,87,84 dc.w 85,83,83,82,81,81,79,80,77,79 dc.w 75,78,73,77,71,76,69,75,67,74 dc.w 65,73,63,72,61,71,59,70,57,69 dc.w 55,68,53,67,51,66,49,65,47,64 dc.w 45,63,43,62,41,61,39,60,37,59 dc.w 35,58,33,57 dc.w 32,56,31,55,30,54,29,53 dc.w 28,51,27,49,27,47,27,45,27,43 dc.w 27,41,28,39,29,37,30,36,31,34 dc.w 33,33,35,32,37,31,39,30,41,29 dc.w 43,28,45,28,47,28,49,28,51,28 dc.w 53,28,55,28,57,29,59,29 dc.w 450 coords3 dc.w 80,85,82,85,84,85,86,85,88,85 dc.w 90,85,92,85,94,85,96,85,98,85 dc.w 100,85,102,85,104,85,106,85,108,85 dc.w 110,85,112,85,114,85,116,85,118,85 dc.w 120,85,122,85,124,85,126,85,128,85 dc.w 130,85,132,85,134,85,136,85,138,85 dc.w 140,85,142,85,144,85,146,85,148,85 dc.w 150,85,152,85,154,85,156,85,158,85 dc.w 160,85,162,85,164,85,166,85,168,85 dc.w 170,85,172,85,174,85,176,85,178,85 dc.w 180,85,182,85,184,85,186,85,188,85 dc.w 190,85,192,85,194,85,196,85,198,85 dc.w 200,85,202,85,204,85,206,85,208,85 dc.w 210,85,212,85,214,85,216,85,218,85 dc.w 220,85 dc.w 220,87,220,89,220,91,220,93,220,95 dc.w 220,97,220,99 dc.w 218,99,216,99,214,99,212,99,210,99 dc.w 208,99,206,99,204,99,202,99,200,99 dc.w 198,99,196,99,194,99,192,99,190,99 dc.w 188,99,186,99,184,99,182,99,180,99 dc.w 178,99,176,99,174,99,172,99,170,99 dc.w 168,99,166,99,164,99,162,99,160,99 dc.w 158,99,156,99,154,99,152,99,150,99 dc.w 148,99,146,99,144,99,142,99,140,99 dc.w 138,99,136,99,134,99,132,99,130,99 dc.w 128,99,126,99,124,99,122,99,120,99 dc.w 118,99,116,99,114,99,112,99,110,99 dc.w 108,99,106,99,104,99,102,99,100,99 dc.w 98,99,96,99,94,99,92,99,90,99 dc.w 88,99,86,99,84,99,82,99,80,99 dc.w 80,97,80,95,80,93,80,91,80,89 dc.w 80,87 dc.w 450 y_list dc.w 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 dc.w 16,17,18,19,20,21,22,23,24,25,26,27,28 dc.w 29,30,31,32,33,34,35,36,37,38,39 dc.w 40,40,40,40,40,40,40,40,40,40,40 dc.w 40,40,40,40,40,40,40,40,40,40 dc.w 40,40,40,40,40,40,40,40,40,40 dc.w 40,40,40,40,40,40,40,40,40,40 dc.w 39,38,37,36,35,34,33,32,31,30,29,28,27 dc.w 26,25,24,23,22,21,20,19,18,17,16,15,14 dc.w 13,12,11,10,9,8,7,6,5,4,3,2,1 dc.w 0,0,0,0,0,0,0,0,0,0 dc.w 0,0,0,0,0,0,0,0,0,0 dc.w 0,0,0,0,0,0,0,0,0,0 dc.w 0,0,0,0,0,0,0,0,0,0,100 end `D *OXO*m - ЭЭ// ?<?<JNA ?<6< N< |N&|~><6<Nv |N&|><6<N<9<9g N `bNuH |"|$|0924@ ABIJAB29><f<f&R01k<gT46(f|lB`f |oBf |lC`f |oC01CXHRI IQzLNuH9;|d,p27ې@27e48J 53.O6sz`o\1Y-Qa~Յsn:¼J.`j͍f-+|5 2(G~@@H=j^I9WQT F訨REHN B\B%̗$oJhD~;iPvX\"r-lh1-9t TRAC0009.DAT+2b__Am VyU.LCab$!xHF2Ԣ;x_ 9"w|{5=;¹kw{d (n6o?=NEvn9\t*1,B=ͣF+.|D+'*ʕA ؔA90@WJ$> 4sJ!#wDm"-lh1- TRAC0010.DAT21y̬:>;Äo;_-9Vج1 DƄk$x]wќr 30=.[ᰜ(j&X`en#m;<+"F䛓hkDҡe/WTUh3HӮtz-jclчMZ6x9(ɩ4զP4Tj'HtfTyR5}5U~H:yV _2b,mт<)t{ky9Nx>sb ?O~a]r"HLh 9^vq'ߦ MC3[W_c [qd/,+zQ|C> ^nҹ(ߕ7?|\JqFuekܦ2^9[UK-/k_ l+~uy{?}mm S܀OʦRj6?_,K7'L eʋ6;S( WQcClλԽ~mb(I{0Dp;TYL듞7% YNt*㋻^ݧ- F5LXȢF| ăt $Fwfo4j:J~P770`S?fD4Λ^XLsCn3#)8=Fr=0Sbli FPoH43O-`Aý*71^}NUoyX oHހ ~cHӂj@.`"urZu֕ ]%RiQKԤc>m3+e ilyn+ep8u1^zL@ W?@33%pyRv3j\:h}80:u md{BamRjRHAV>BUDc))D.2ӯڔ "-lh1-B TRAC0012.DAT[78b~7) ;-+neeo}2njiJQ/,W:8Fc}꟫oT:v B_۾-ƕLwIV-{E Qe,B4^Sv7p;`hvmI`FlL󞁵)@NIhUI)]GSM~*=Gh5:3 Htǖ84Qrɍ?JfX} |(qܕWˎ$%ߕ O(J,,&nKq/t},wO~*/0N]WM[zS9(^(_3l{Ǯ{!ڋe > ҉O]{BpgyW}Gaxl[voGf(wQ$"(O(K:Jf90g:V 1ޅWd6^Mnĝ1j7Ó8zT=?p{ ZrQ@,sp=P܈GD夡f.HWlHp8/|"OƋ'=90_Qba{x%x {SW m(}n2s!rΩl)DXXcd83$Km2}>E>BV5or817N$g/?AY<8tTfX"-lh1-t TRAC0014.DATlqqr} . A] tUtuWK[zъ6֢4iXL+7rr`Dw,8#rTέd$/֑J/÷87ȧ$2@Γ'DK~1Q&=sjp" -HEɃLfO ~X}d{2SEO5=bqf;=~]73AӋ>w J. WP >hlx  ϔod,x2E1p\o0ي,7OԤ!yDXqL59Z!} ۨ>}ÐGa:됺 }m$[!z'vuR^^+fxhI Ւ+],|W]K!s c?6k6NDF}O];1rPu1d=z_Z@I_(Q&p8ZE.R+b$,qalJ5[jǡ f;sHlR-9iYj4{S"&M$➛V Xhd_kePss H@DM1#Km֏elq0Ґi"A.I|%Rq lf½E+6Tkuc-`OY](`x"-lh1-n TRAC0015.DATilqqr@>ؗh.ETƾ[UOn}i=؁-ԑ5s=R}ŝm."2aBv`93V `ohoVc|2<$S0|o$F02&yvyxN"M'NN4 QNuH |N&|>< y6< ,<(|(<f$S0|o$F02&` "D02)yvyxN"M'NN4 QLNu |N&|~>< y06<,<0<P2<UyvyxN'N$S0|o$F02&yvyxN"MN QNu,k,+'F*(HD@D"M yN QNu <,k,+'F*(HD@D"M yNNuH,AHH@4H@LNuH"|3X63X 3X"3X.3X0|:LNuHC3X63X 3X"3X.3X0|:3|(3|*3|,LNuHE0<N 0<,yN @N @N @,yN N ,|D*y><hN (0<(,ywN @N @N @,yN N "|BN ,|V0<N d,|c0<N d | " |$8 |$J"8 | $8 NuH?</?<=NA<PO/<L/<"??<?NA / /??<?NA ??<>NAXOLNuH>G<<',QQLNuH>G<<',Q@QLNuH*|?</?<NNAPO?</NATO @.(/?<HNA\OR@,Ї**?</?<=NA:?<?/<?<BNA //??<?NA ??<>NAXOLNuN(0<9{29|A3 "|p$|u |0< "N p3N f0< | "N p##Nu #49 9# 49 9 NuH y$y<f |p$|u"|B "N p##LNsH |H@@ |HAALNuH9g`p |"|2<<;<<f<gF`fg4N~`|gRHA`LNuH( |2<N~A|mLNuH |~$|"&|483$44DfLNu3@F'#4 FN(2<N~/9|?< NA\O?<NATOeNTR_SPR.PICNTR.PI1The STE No Through Road Demo Copyright 1991 Adam Greenwood This is a source code demo All code and graphics by Adam Greenwood Music by No Through Road, 1990 Blitter Chip Present. STE Video Shifter Present TT Graphics Chip Present DMA Sound Chip Present Blitter Chip not present No Cookie Jar, machine is not STE/TT Standard Video Shifter only DMA sound chip not present Sorry, cannot run on this machine Press any keyLoading Pic and Sprites... Loading Samples...NTR_SPL1.STENTR_SPL2.STE@@(  * *,OV\fkpuy||xtplhd`\XTPLHD@<|8y4u0p,k(f$\#V"O#J$B(8,30.4)8%<"@DHLPTX\`dhl p t x | "%).38BJ<>@ B!D"F#H$J%L&N'P(R)T*V+X,Z-\.^/`0b1d2f3h4j5l6n7p8r9t:v;x<z=|>~?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~~}|{zyxwvutsrqponmlkjih}g{fyewducsbqao`m_k^i]g\e[cZaY_X]W[VYUWTUSSRQQOPMOKNIMGLEKCJAI?H=G;F9E7D5C3B1A/@-?+>)='<%;#:!9 876531/-+)'%$"!!# %')+-/13579;PURUTUVUXUZU\U^U`UbUdUfUhUjUlUnUpUrUtUʵaBffFsk [ WBD9܎k|aH{wsGG>\M35U4htD y%Ei{N]ŞB~N{ƈFK۔ȓO娩9^d ОO* g1 /LdcxG|M7/v` s 0? w1&Tg/ywA/^gſeCz0"," l`p,F,BH<,"   *--------------------------------------* The file X_WHEEL.TOS in this folder is a Self Extracting Archive file. It should be copied to a blank formatted disk before being run. See the instructions in the ST USER magazine for details. *--------------------------------------* . .. OCKFALLPRGOCKFALLTXTA`~aLBaAaaaa(aHaaa aa8aZ?<?<NMXJ@kNJ9 g6Jy g B9 `aJ9 ~g 0000g`J9k*`?<NAT<qg<Qg`ha `aFRMt :LyQc@a`0aKBgNA NO LIVES LEFT! TIME OUT! GAME OVER<C zLA20a<`<C zKA28a<aah`CONGRATULATIONS! YOU HAVE FINISHED!< C zKA20a<< C zKpA<(a<a><,a8a`6J9dg#J3JNu#Mt<C zKAx a;<C{ zKAxXa;< Cm zJAxxa;#0000300B#01801ByBy  ~B9dNuEL=01SC: 000000LI: 5TIME: 01800000000000,z <<B@2<( Na><a0Q><M a9yJf.9Jf dAr\ 9f 0`RSQ<CL zIAx0a:`Nu 0000f `@S9j61AX 0f 9`S< C zIjAxa:Nu :Ia< :IR 0H@0<C zI,Axa9NuaJfa0< Cz zHA(a9#r< C zHA20a9l120<C zHA<0a9>a><dap zHM2`a>< K"X %0f 9`SRa"0< NCa8 0000gQ 0000faLKX %0f 9`SMX &9f 0`R zGA<`0<Ca8 zGAx0< Cda8t 1800f0<Cz zGAF(a8R` 000fp<Ci zGAZ8a8,9KgNu LEVEL 00 COMPLETEDTIME BONUS: EXTRA TIME: MAXIMUM TIME GIVEN!! PRESS FIREa>QNu4< zG"zG0<_2<OTTQQQNu zF"zF0<a$H&I4<2<'$BQ``QQNuJ9fFJ9Af <# P ># P BBy FBy HBy J LB9 M N:a:<gBB@ za`aLB9 NuJy gSy 0: z2 y 6a59 MASPj9Kg `gd y .VD3&#&£׹歭ֺ$) F/.*:I79.[P[XPBWVOf>RU^2DAVbQMMDB;6, bb%2 "4) (7: #XOT3JTFFK^,3aV+QiI"N]S&$ 72    ,! 2+ "!Ἕžҵϸ  -?@(&!-?4)*9.?P!`<:<5H46@.F,!+ , #!2>+'*07>H4&,) !(#)$Ө ̹ȶ 1 ' !9.#I6\. #m>@WIM[9/:&2a%UB . 2ѣϵ绺ި/0 - [((&! $: 4 ԭBٺ &''( 0)4:;7qUWHGNbH =D KCP.3,,1߯Ϥ   @$+C) 18# # (Ѽ,+,3*?Kb ;?%'7BT"4$&5G&"    Ȯ ("%+V X.<#5H*+-N+>7=+#'%˷عݳؿ ) !-* ((,AU0)O:>!$):. C,  . #3,f# R ># R B3 F3 H N`|gd y # Z ># Z B3 F3 H N`gb y :gV:SaJkF<3 Jf# b ># b B3 F3 H N`gb y0 :gV:>Ra\JkF<3 Jff# j ># j B3 F3 H N`6BBy J# P ># P B3 F3 H NJ9 k~gUy <@ 6`bgTy <@ 6`FgUy : y JfQ 6`"gTy : y JfP 6 MS9 Nj. NT >Sy Fj3 H F# B >09 : z2 y 6a2Nua7Z<gb<g.<g4<gP<g<g<<g(`(a4Z` a&S9A2<Ma4`aZa<Ma4/B@EB|&zB8< (K6< f|2< La.2< La$PQ Q `ffzf`6 y :gbJ(fZ|a`/B@2<Aa `@ y :g.J(f&|a,/B@2<Aa ` `fff`p y :gJ(f|a/B@2<Aa*& 4<C JkJ) ffQiS)Q `v y :gdJ(f\|ab/B@2<Aa& 4<C dJkJ) ffPiR)Q `<Nu LBNuB zLg `$g `gQ`P?B@a*0Nu( ! )*+*"#$#%&'&(,-./022 2 2 2 2 2222       SykNu3$z?d6< <&J8<a3<fPa3JkB:gJgLMBJg"|g f|g fPRQ QNuB(B@2< Ka2<A aH><M,a1L@| g(:ng`/ 0:F zF2 z8aN# 60:. z.2 z a6`dSa2:"gDJf>a2: g.Jf(B(B@2< Ka2<A aH><Mza0RL@| g':gT`Ra2,:gJfa2:gJfB(B@2< Kax2<A alH><Ma/L@| g):Bg`p#H\de><A2 QNuH*;C;Dz1|Bm :1ra1`|g (gJ(g | `P|0g (gJ(g | `,|g (gJ(g | `| L Nu(2 2 2 2 zR<S9ej*eT\S9djd#&\G$8<Jk:+(S+ Sk jR+a0fJjJ,KB@2< Sa 02 La 2< Va &N&<MJa.&`g kg4+Sa/<g Jf`@<7| ` kg6+a/<g Jf`@<7| `v k0g4+Ra/<g Jf`@<7| `: kg*+a/D<g Jf`@<7| `g k0g4+Ra/<g Jf`@<7| ` kg6+a.²<g Jf`@<7| `z kg4+Sa.<g Jf`@<7| `> kg.+a.H<g Jf`@<7| `g kg6+a.<g Jf`@<7| ` kg4+Sa-Ʋ<g Jf`@<7| `~ kg6+a-<g Jf`@<7| `@ k0g0+Ra-L<g Jf`@<7| `f kg6+a-<g Jf`@<7| ` k0g4+Ra,ʲ<g Jf`@<7| ` kg6+a,<g Jf`@<7| `D kg4+Sa,P<g Jf`@<7| `BBk C gSk`HgRk`2gSk k fQgRk k fP02 La'V0+ z@2 Sa'FH0:2: 4+6+aJ@g  L QNu#b><AL QNu/ zt 1C1Dz*B( H _Nu@            zX8S9j*TS9j#46<E&MrJkJ* g` QNuJyg*a)Jg:*NBJg jg f j0gfR`:gB(0*2< Raj*$*a)> jfA4B*`jJfd:fB/ 0:n zn2 z`av# 6 60:L zL2 z>aT _|0*2< Ra>`|0*2< Ra&<Ma&5| | `*Sa(|Jf:ga(dJf:ڼgB(2<0* Rajj*$Q`*Ra(JfF:g<a(Jf.:|g$B(2<0* Rahjj*$P`Jj kSj j1 gHj0*2 Ra#B*a'|f><M$a%$,S9A`p2< Ra*a'ZBBj 0* z~2 Ra`n0*2 Ra"*a',<f(<Ma%$,S9A`,Sj j* fff2`ZaJk|a JkraJkha*Jk^`aJkPaxJkFaJkJjg*a&Jfa^Jk@| <NuJjgCD1N&4+/G,)!0  # 䵳 7#? !H-;. 1L&,G.5P10   )+&* $O-,+?\";=2& & , гȽƷ '50C7$!)DWE3+ BD4%&$"& +$.濸Ϋ )+ $B#70 @C;E> - /+  꼺 ! ':%"-1PVB 7E D".4A U +%f=$!$*=L'1("0  <"  ֯ "!/G!1'@2$%(,+T""!<& ?( "   !#,.# !423J (!3+'&J;3-*%E.H 6" %$6%J,%N)  &" (; %60 ' ճ  -!$(7J & )3 3B %H%7 % 1=K,&3)& B08$ ,  /" ֻ ( &$#!00 "! 2!"#%1)6 ) - %F%( <)()(7B(6(2A*#-"'  »  (#*5%/ 3 받ŤЕ &  b/N]3Ha* ȿ ﳣ %7$1$(^0)E B+od! g '.  '! ! #H+& $' 27LL53T'NJ !? R06!$&(1 < 7 :OHP2H! :'" "&,M*$  Q54=Խ *8%XgL&;35$ M" Լ# /dDL 146 K+!)4/#/ 3 <F ) վ  "!C P8 gAUL0H :4 )*$ ? 53$A3 D!6< @(%&9':43" (<-2 )@ /9/0 Q -6 !T&3] < ÷, '/V4I!-" !'; "B,  ǽ8 IS.!-Y(NF0$)/ C /8)67* >ܬ! ( . P?,CD?!+3  65 ȿ߿9"1P 5;3"!W I'-8 ɿڨ# ( - &.(?9N&*',,*BƾԵ-!$=_( %D5QY0 ="$-( )Ⱥ&7/ $ F3+5";0G92G/ G1 "&0˝ҿԼϸ 0.% 90C -Z1B'%7?[^#H% (&Ԫƿ &0)4) )--3"  +4 85O !(ѳڼҳöӹ' 48EH1UGE 2C. A / . ׿# 漹ĭ $   G (/',64,9P; C6?(-B  /- Һ'69>;1' &  :!&ʾ  79 2."%*)3#%$ #H9J'  #6 9ӹ&  2 UL/F-1C$ 1" - !7 !&  $2):*%=!(5A18$7-  콼 8$ &> !G1'B&#Ȧ *&- *-).4<0C,RLA-9U+/&6:/*2 پԞ#!3"*;/53R 3 (*Sa%Jfa,Jk|@| <Nu j0gb*Ra%JfRaJkH@| <Nu jg.*a%vJfaJk@| <NuBNu5| * gUj@`JgTj@`4gUj j fQ`gTjJj fP0* z2 Ra xH0:@2:>4*6*aJ@g  L`G<<gJk +gQBNu<Nud x ><Ma"L09 : z2 y 6aM<<20: za><aJ20: zxaQ20:n zfa|><1a"20:X zPafS9 ~<90<<C4 z/AxhaJ9 ~g3( aB@2<( zaNu3JyMgByMNua@J@g`&r4P4h4h4hQNurt4ີPHBht4)ີhHBh t4)ີhHBh t4)ີhHBhPQNu@c@@c`8BBc`*AcAAc`CCc`0">3"37H"l3$H"l3l$Hll l l """"""   ~>AAA>~' 8'O@pO9ǜ9       ####ffFbFbffeaceŃãŠeaceeaceŃãŠ塅xxx```;)59(IsΞyHyyx<8'''xxxxx```9=98I3yHIsΞyHyyx<8O#pp|>|>xxx```y?yxI3yHIsΞyHyyx<0C pp|>|>@??@??@ ??@ @ ??@ P*??UT*UTUT*UT*??P ׿ 0''3-&M5,>&6<0"H,%$=/4 %&;Ƕ  6 =" *30    Q'":/'%!S& 105 (+    F"  V,"*"$#-&HZ:&7!%$  *# !. $%, -0 (,ҩɶϱ  :/Q&-$(R"!O27BBAEi4OK ($0( )  E!(!#*L*:LN89$%ܹ--&H%=CS K@W622  ؼ޿ Ӹؽ 1 0 .I 4D(!N,AK_$3<:$ .('(*Ѹͽѽ ! 1.=: :CFD ! $2$ 6"     "(39=? ƨ̻ʺ# =%(2B!#@G(VE('1 Ƨ㹸 &$  1 % (64I "17  ܭֻ.))$ OK!?/#=*N #& νڴ  @ --102+,@LRI -&$_? *6(س $!)H-'@$A,.  '+   %&#@ " .945,&$1+®   Z4#L.+26 '@!+G&ű C@$*#%D>)P,@.9#ɳ0 #"!:1J82&!=4%$),ҹܵ  #  W'* +/&3.*%G=;6'2"/$ # '? G@$ 2659#.м %51 !' +,*)+4 ' & "    9",F2,!*4/    Ը$  !M:(/>"$&     % 03'V$= *$ &    +1)8>=,(;<- ,6*)ڱ".2/$#. * -Ҩ"$   &0S? /84!I7''- 1("!:@! !($* ) $ %2  #((+  3 (.- 0+()3/$1&#& ּ  #  3,)*(7D:. !,  !&* (*'3"= :$ O$$#  ;"13'Q, ' .% *   ) ?.*'(D,)5    '8$'&,5-&    14(    ,>0* $Q ' (@  ݽ%     #0 *%# % ,.D B/0   " 7#޼ (6"FD ?%$! &   ˿Լ 5"7: 1L4 + "(,'? &   ,  عD&1+ G OD38Y<+ '  %%Խɬ*3F**,H.WG< <#.(39( , QF! &5; &0 1 㚣 )?**.<!&:63Q=M$U'+/Բ̫ ,   56 * &  ܣ& $1 00=,0)%-B%E$  "!5& +31-38,$..' +#(    ڜĽ' #'=#6/_93(JM !-"D4.  ???????? ```pppxxx????????``pppxxx????????00xxx ??00>>00?\?\??``pp``` >>00>>00>>>>00>>00>?<|?``` pP ?? =|=| ::9?```ppp pP ?|?| =|=| =|=|<|?x pP ?|?| =|=| =|=>>==;;``885T5T..;;``@@@@@@@@@@@@@@@@>|>|>|>|>|>|>|>|@@@@@@@@@@@@@@@@>~~>>>>>H CjJy<BQE $RC 0<;"QE &z VBDB9A<< BC(K><H|(f2B*# , ,3 03 2 4a`|f R9A`p|f R9A`^|f#`:|fB*a`&|f R9A`|f R9Aa402 LaܪPCR9AQ, DQa~NuA BNu,z D>< KB@2 |0maV |0mA0<CaQK0I &><B@2 MaPQ<C2A pat<C4A ad< C=A*aTaØM"><?B^QBGMa۶<<SGjP><BfMt< g< g A j4<CB@QiiiPQ z :A9E0<"H&Jxph`XPH@80( TT@PQQ69Kf0?<?<NMXJ@g?<NAT|xgP|XgH`Nu( '0 )627($>""'/ " #  %*% ׵ϲ⹨θ  $6%9.K4;UQ '&=4%-0'   %+$* 'F3-3"#9-.0+< ͭݴ $-&+#,SN_yJ,Y2[$&D31"д(!,"!4 ''I&45';L1)C  $#'! &  ֦ȸڼ+  ;2OsT *>L 2.>' 缥/"!!&KL7@7))M*'G@!'S 0#, ! ѻDZ  D%6"F1LDKnB9@'*!ٲѷ!%,36% 91;%/A<',0!B#$ƶ$$BB; 0?.1,6/(A$ ̽  +-  C920( $,@ IK  " 'M049#ڸ ڷ <*+*$K/ ἴ )/3,(.33':DB><19 $E +  %  !"  5")) !$!$ +26+3C%F7J1)1DU%;0  ȿ+91:$B :+0(¯   2$ 3%8#R^; I"2R045FK;-M>O"G%N320#!ӧ־6    4,,# #/1;":#1>[<:($A,!2.-<& %ȶ2,*)'/4 )5 ǽڴ7( & &= - ) 9I;8.!41%"@;#  !-7!.9,.(; ̫ɼ˾ 0!FQ(#I&1CJ@GNC,2T#A8N9EbI&48( &B, =ǽž0#&)ݻ & "'&C BUB`]DBnIm7BTT^b-hP+[7B?&   З%=96!+ر̳ͣ맿᰿޹IAG(EHD@)?_]+c\NE5Ab& V5%-I(I5  "%( ؾ̹Ǻ֝í׼ !74*$?i2FL=$&9!=LpgR+2T.17O)@F9, 9)4;2%# #" "F ;%=D/<>Y5>J@ -6. 217Ĵ 䦯ޢȮȫ%ĸƵȺ 870&'H0 8,WbDV8ZZ_31VjfHo=RXH[JTGY'/!OJJB  ȼǽÿ //-'$  '  9&˽"+&7 1.D0/+19EMMI?K);0"09" 1 зѻϸ$)($%H%6B*/G%9;+,035%/ +   ̼"  '=&550CEF/,C7)"8&' /& κ ), 95 $'6-6(2! )!!% <,5   2 ҷǰ )( "3"'/K(;F8<S$,9B)EE#2@Q7C /$  !*   '6 57 1* !"&5=% ɾ /C%) #$/G ,(51 C8(.>(!"&"%18  Ի   (0'  /*   3&(/#(5#01!  '  &" *$! "$$"!    *       +# $+&*1-#2/3    #&  &')+,4<2"     $   WELCOME TO ROCKFALL HERE COME THE INSTRUCTIONS: THE BASIC IDEA BEHIND THE GAME IS TO COLLECT ALL OF THE DIAMONDS IN EACH LEVEL. SOME OF THEM MAY BE HIDDEN IN SAFES. TO OPEN THEM COLLECT A KEY WHICH WILL REVEAL THEM. ON SOME SCREENS THERE CAN BE UPTO FOUR MONSTERS. THEY START OFF AS EGGS AND MUST BE PUSHED SO THAT THEY FALL AND BREAK. WHEN THEY START TO MOVE YOU MUST KILL THEM BY PUSHING A BOULDER ONTO THEM. ANOTHER CREATURE WHICH LIVES IN THE CAVES IS THE PULSATOR. THESE ARE BLIND CREATURES WHICH FOLLOW THE EDGE OF THE CAVE AND OTHER OBJECTS. YOU MUST SET UP A PATH FOR THEM TO FOLLOW SO THAT THEY ARE LEAD INTO THE TRAPS. DO THIS BY LEAVING OBJECTS OR MOVING BOULDERS INTO THEIR PATH. ON ENTERING A TRAP THEY WILL TURN INTO A DIAMOND. AFTER YOU HAVE COLLECTED ALL THE DIAMONDS AND KILLED ANY MONSTERS YOU MUST GO TO THE EXIT WHICH WILL TAKE YOU TO THE NEXT LEVEL. AS IF THAT WASN'T ENOUGH, THERE IS ALSO A TIME LIMIT! YOU START OFF WITH 3 MINUTES FOR THE FIRST LEVEL. FOR THE FOLLOWING LEVELS YOU ARE GIVEN AN EXTRA 2 MINUTES ON TOP OF WHAT YOU HAVE LEFT FROM THE PREVIOUS LEVEL. IF THE TIME LIMIT RUNS OUT IT'S "GAME OVER"! YOU WILL LOSE A LIFE IF YOU COME INTO CONTACT WITH EITHER A MONSTER OR A PULSATOR. FALLING BOULDERS AND EGGS AREN'T TOO GOOD FOR YOUR HEALTH EITHER! CONTROLS: JOYSTICK ONLY. FIRE MAKES YOU LOSE A LIFE - USED WHEN YOU GET TRAPPED. "Q" WILL ABORT THE CURRENT GAME. ROCKFALL IS A SOS SOFTWARE PRODUCTION, WHO ARE: JASON BRASIER, PHILIP BROWN AND JAMES BROWN. TIME TO WRAP... BY JASON BRASIERTODAY'S HIGHEST = 000000PRESS FIRE TO START OR X TO EXITKDIAMOND K8BOULDER KpKEXITZSAFE Z8PULSATOR ZpEGGiKEY i8TRAP ipMONSTER23456788?<"NNT @C^"C<???<NN\`<f<ff8pff8|l8}f~; `p0000p`6666~~`` @~~``8p``<~ffff~<8x~~<~>|`~~<~~~~<`ff~~~~`|~~<<~`|~f~<|~<~f~~f~<<~f~>~<xx~~~~`xx`<~<~fnl`~><~~~fff|~f~~f~|<~f``f~<|~ffff~|~~xx`~~~~xx```<~`nnf~>fff~~fff~~~~f~~<~~ffffff~&! ƫʷź·ٿ 3+.S*.0GB-@M@R:^RKI9JYpUU]]`efdc\NZYN2GQBJD4,41".% "    ټų̨įƻĞǾ Է 9$  &3B>3#CC&*DFI*".0'/$7 ,A29<6::4 &( 0 4$!*,  ,Ǯ㼫кĬʬЧž 4 1 ,   !$ 1#,*$!"+F,=; &(   #/+##*/9(-E$1@8'0OTU\F@HJ%3*3-" ձ  2,=I:06bM.=0?(EF!K 4*&&)"+ % , ( 00  <./%14(,)'İѴֲ٭ֵп "&?.">7T4J_1!0I*:(A*-((+0"+9+)5* ..# ).   5,! н ( #* DB,( "75+@վڿӲ!&#!)'(<:1;.&* (%. %&6# $ٽ  $'&);'"!&4!.=GHE%*9*8$#<44% ؿټֻ㼽 &)>)/82!(2,3,B96) "+!    ӿұؼ )#*/1$0 ,$<2;:1, )! !%887(,:.:'>9:BC,9L83W0,6 0ͻ "&0?&<&, -#0+ !!)M@"պž *%278-1E"4.6-.<690P*//##"!  <$  $&)ED? ; ++&$0#*%30T;%. лϼ$$+<, '69%7B5:46B$ &      & -$?C5,+ -34(%@1+4             ((  (           ((            (       (       ((    (   (      (              ((            (      (              (    (     (  ( (    (       ǽ۾  &$& /6),)$!/*%71A;*#$%  B4(:A )>2,,;0," ˺л+(%1!!. $&'",07H;!2$'""  #    %42)%3/"+'$86&,)! /# Ƨݽ¾  --8+3.A+*0;179C-$    % /3-""">"8 (!' $3&!8,  0λʭ ,--=4$3)>" .+;17,>/< !     1&  " (+8+"4 '!*,*  ͵  940B882 * (-;$32#)/ .1    Ѿ  " .- ,!:5"*2 ,15   ǹ "!&)H/@("+!-$=A0< %7     ۿ  5)4() &-'"-" !,5 *5%  ־4;?.*-(# ($9.'#2TA'* 6  !$  4)"";E+;VC?(L72,(/ =;*'4E )5Q )S1): :$:O(_ !ڨྼF@1&,"6 D!!B!1! ڱո < 5 NO"5, ZT Y+5R9F19g2J%%$C4+ 5)Ăꕵڰ"7#"ʳӵν޶:#H,X+'OIU14SMBMo^yU4fzLEbeMGf? 8EI B ڙČؤ©̥  (.-%4 7k#3i6 +cG^"K)1&kLC #$!駶 ̷'L :$C$M/E!&,mS)MQW:;aLSeP8M.- 9DòϧϬ󯹯 Ժŷ  ."b,30d!9X(kIAxS'o0#$0":6(G !4ʭ DĽ׷ʽľϾ? Ck8A-$-UM_9ba8 B'[ %H2!@%4&  ʾԳҧʽ׶ ΰҾ& *B?GIE1%jkH,Y[\X#00'&6   í0 A&:MEG;D>&!Y<$7HVZR,+bC)8 $"./(2* ߶ɿű֩ت˿*"$ 48!ID+K8E>YR2HFS=9AO /$;ڿ%9.)9BB]QF.?83L?;D3[&gG23I1 % 1  ȧǸ֧Ծ  %3NG7;:3+JN13ELB$.4   ( %$$D=FE8HL 4=C@R6UNV^^F"/9MC"6 Ымť¬к 6 2!+;*;Md+DGHHONe`,/%S" ) " (!126@Y6(0\L44)7L\\7NQ]QJ4@0+,F<1 ٹ̽´ʪ!&!14 5<621*@RMPJ8KCRN3HJ1%".   ּͯ%'&$:01>K7kR,9^P8$Z58MP89LOHP/A4# ϻ͸Եʴͺ´ 3!") AG,3]4FQ@.6B=?1;C : "   ϼϾ뭲Ϲ *.*+!" 7(+8*45=X0 3."%')G2@5K7:> '* ƺ񹷸ٿ A1"C$$3*8@5;DB+Bg@!SI?*LJ 4& "+ տٰ־ $37+ <&!2@G$.%  &L9A3    ƿ  ++ 4)609U*#J:$7*  0# %#̿ѿ&*& 3'0$? 38  (     0 !%*%--D>D G,  ʹմ #-  . !  $$ '             -" )!       4&:$")6#    #, !'25$ " !      *(/ ((&           )+$'(" "!,##       (               ((    (     ((   (        (            (        ((  (   (                 ( ((           (  (              (H 6 x  F n   & J   FJ"& >*  ""          P x(44(nr  rBD  0 ljRn ^  f " 2 2 H L 6"  & 0V(\ $            - *,+,. 2 % -&   " -   #,#.!%'"!                                           /$ !    !     #&                   #&                                                                                $        #         $#       + " %*   .% .62-_#V' *)0  λӿáź  (/1O;&AGIo3PH8CnEQ@6K;;Y@2QZN=MC2TC7G!$.!!-&   $ %# %*) ӽбǼӶîƪϳ 1.24A,"?&426E]$YF<1PDMY0R_KT[rpjjnf_PN,82>-,#)1?"<0 ͮνҽ׻ $ -*7  ľԹܥҿȿɷ $ ! %<8A-0B'A(%>.7%;>)=?W6UZ[dWqTB_H,KH%[J5Q2.3 ƴΪ"5;.3;289J1 +;20!'  ߩ&   6/ L 6 !* $-<$ "#&<-2L;A=6,"/ҿڼ͠ھ(=&- 3 %N 3!0%0 K +**, %  -# 6 ,.  <:6 '2'&4' 4,%'2HW':%01< ۯԱĻ›ѴǼ1e ,0RH .B> "5".O+ '==;#-'F$#  )(, 3 5`7"6(# *-);DC&(>8%7 úݽ˳ >('? C0I! 0F 3;#,%- 74&94/21'ED$ 6    )@0+A#. 279D5(%%' ̻˲¦ 1+0=$(>26#/>0 0)*)1 #!/$2I/1#)00   ϳ  )$ > P>#C0)4>NI4J+"D, ޮ§  ,+, ?<:-E%#3*2'2-3=71  ּп " 39%+ % 9UB1 @39%<" GL9* -*溳̭𷮫  $6B:#2M**".- / '7'+;?   #! " #L?/ $."#?:E,2 ᬞ̭θ)",6 G.9 Rockfall - Instructions Rockfall is a game based on the classics Boulderdash and the Repton series. Therefore, you should have a fairly good idea of what the game involves, but there are some differences. The basic idea of the game is to collect all of the diamonds in each level. You do this by simply walking over them with your character. The first hazard you will come across comes from the boulders. They fall whenever they are unsupported, and they can also roll off other objects which aren't level. If a boulder falls on your head, then it's bye-bye to one of your lives. Boulders are also they key to finishing the levels. It will be necessary to move them to strategic positions within the levels. You move them by pushing them from either the left or the right side. You can't push them up or down. Some of them may be hidden in safes. You must first collect a key which will open ALL of the safes which will then reveal the diamonds allowing you to collect them. No game is complete without some nasties. There are two nasties in Rockfall, which are monsters and Pulsators. I will deal with the monsters first. There can be upto four monsters on a level. They start off as eggs, and must be pushed so that they fall and break. After a few seconds the monster will emerge, and start running about the level. In order to complete the level you must also kill all of the monsters. This is done by pushing a boulder onto them. Unlike monsters, Pulsators are running about the level from the time you enter it. They are strange creatures which find their way around by keeping the wall (or other object which get's in their way) to their left. Somewhere around the level will be a trap for each one of the Pulsators. It is your job to guide them to the traps. This is done by leaving objects or moving boulders in their path. When a Pulsator enters a trap it will turn into a diamond. Therefore, to complete the level you must trap all of the Pulsators. It isn't possible to kill them by dropping boulders onto them. In fact, you could 'daze' them instead, which means that they start to travel in a small circle (stopping you from finishing the level as they will never enter a trap!). It is possible to undaze them, but that's for you to find out. When you have done all that, you must make your way to the exit, which should now be showing the word 'OUT'. This will take you to the next level. Did I mention the time limit? No. Well, you start off with 3 minutes (180 seconds) to complete the first level. For following levels, you get an extra two minutes (120 seconds) in addition to what you have left from the previous level. If this time should happen to reach zero, then I'm afraid it's the immortal words 'GAME OVER'! You start off with five lives. You will lose one whenever you come into contact with a monster or a Pulsator. You will also die if you allow a boulder or an egg to fall on your head! As a recap, you complete the level by doing the following within the time limit: 1. Collect all of the diamonds. 2. Collect all diamonds hidden in safes. 3. Kill all of the monsters. 4. Trap all of the Pulsators. 5. Walk to the exit. To control your character, 'tatoe-head, you use the joystick. The four main directions make him move in that direction. Be careful with the fire button, as that makes him lose one of his lives. This is used when you get him trapped in part of the level. Pressing fire may get him out (notice I said 'may', as this will put him back at the starting position). Other controls are operated from the keyboard. The first one, by pressing 'X', will allow you to return to the desktop. To abort a game completely press 'Q'. There are 48 levels in Rockfall, so you'd better get cracking as it will take some time to complete. Some of the levels will seem impossible, but I assure you the game has been thoroughly tested and each level can be completed in a single life. CREDITS: Rockfall was written by Jason Brasier using the Devpac 2 assembler. All graphics and sound are also by Jason Brasier. Additional ideas and most of the levels came from Philip and James Brown. F3#/'$  )>J#*ֹ !!8* (%#$(5*+& ,# =$%%ط 1 5C>J.30 I>?#(3!-(-8( ߲˷ͼ   1'6 *$7.0:I, >& L8"6' Ƕŵ  $+&P!*$#C(%%</! 4$1# B1  ̼ݼ$ #!,( $ 2 F>159* D #!2  جֻ·0)+/ 21/&'3-: 6*"2"! )" %& ) ַ ' ;50'! 3<,063%:H * &0(Ųȴ +"3=.?&+79 3-;"*-) 5+% #%%$   ֻ)$$" ! :$''6!," 12<6'4")+<6 !  ȷ۶  %''<""<%J-' -F'9$-& 5% $% +- ï! +1 *.,. .2,,*%3#@K--: - # зϻ!+ #5Q0),)=A097(071$     !  9    4 +,5] *e%3"#C';-'=% κ˼Ͼ²  )+/')2.2@?2L?LKTe9ps_CEe7>86AN.A96.JL4%;,%'%$&$!" 쾸ҸܫĵۦҴ̮ĸ  /LF-J>CaWTbe_^`c3GHR>)83S 393") 03 /9(9-" %2;*19-1 =H 7'47*#CήͶ̼خַұ-!@)U+HalgOpaAEgyZ_ckMXX`CKYP +'״ָʰ"& );:4./*,6%1#37*.B:2=8! ۼ ܬ)ܴȝṯ! ' =+VJTG/#hgD7TS_=CAlV):_KNCO1' ͘ԩ#F/42%? 083B(#  8Ƚ ĸ#5@"C" %>;'G?EJ^_QDRh0-gmT__lU,8ZV%7CE&%ͺǠ鳹ǵҺ #C0)#' "  > %%$5$$  νͷ%0  A/?;I=HHJ`.FGW-nN1;HPXP86?D*( Ѥսμ/0!,36)0F4. %4&5 GP?!  &+ ȯ@Q,('% ?+,IBB(J[B)6(,?J&-*=651,2εŕ˵Ⱥٴ 56 *&'S9*-/:+$'A0*Z/ - '@*( #"Ȭ  0 5*H7. &1":;WF9B5;?BL)&1E/6-+&+(  ݶʪҒֵʦڰ'!+"4 ;%?6+1*)%*7'*$)" % +&"=*:(#GN 8()T-!1,/\9F1:-+";7&"2B0$$   'ȹնö  -A C\";,$)6'QON11/#$D-%%(1,$ ڿɥ +&."  !(8A0#6OE9->3!:C!'8<0*4*     ƾ̢,@!(D938 &&9%2G =3*$'-3, +!ձ   -?:=)1L.*#)7)4.'-)   Ͻݾ & LD9.%$1("+%6!- +    #2';$ /& &$˺0$0 '>&"7- -#   -$" )      !!,     % /,72 +-"&)            ++#4##    ##  & )   27 :'&$                   &  . K.. ART_3 ACBL&-ART_3 MBSbNrART_3 PRG8Lionpoulos,, j():,:3This manual can only be used on a colour monitor/TV:2: 2(@2:q:2::ͦ:::: : b<,",3,D,U,f,w,G,Q,,P,,,p,$F PART_3.MBS`PTEXT$(),M$(,),LINE$(%),!V(): `Z N :'::,,,(,,:::,:STOS Online Manual v1.2b:,:() 1991 RATSoft:, :$Press right mouse button to continue:, :Left button to quit:: :,,:,06,'K: pK:K:::K Z::: ::N ***** SELECT COMMAND.N*:::::ZN4 X6P: YB:Z,X,YXO,YA:Z:Y:XZ():K:K N> NHK '6NRZOPTNZN>N\::,((OPTN=4Vx))P,B((OPTN)),((OPTN=4Vx))PO,B((OPTN))A,x,B,,:SCR$(,x,B,)"NfN OPTNNp:N: MN:S,S$:(M)S$: OS:A$:(M,O) A$ :M$(M,O)A$NzO:MNN::::(,x,B)SCR$:::,NN,N,N,N,N4N:: N N*NMNSELCT:MNBA::N .u0NOt:N P:NʜO:NԜO:NޜOL:NO:NO:NO`:OO:OO:OP:O$O8:*O. **** Variable/String Commands ****O8,, ARRAYS ,DIM,MATCH,SORT,, STRING ,ASC,CHR$,FLIP$,HEX$,INSTR,LEFT$,LEN,LOWER$,MID$,RIGHT$,SPACE$,STR$,STRING$,UPPER$,VAL,, VARIABLE ,DATE$,DEC,FIX,INC,RND,TIMER,TIME$,, MISCELLANEOUS ,DATA,LET,READ,RESTORE,VARPTROB *** EDITOR/SYSTEM ***OL, , ENTERING ,AUTO,CHANGE,DELETE,FULL,GRAB,KEYLIST,LIST,MERGE,MULTI,REM,RENUM,SEARCH,, LOAD/SAVE ,FLOAD,FSAVE,, RUNNING ,CALL,COMPTEST,CONT,FOLLOW,RUN,WAIT,, SYSTEM ,CLEAR,CURRENT,DEFAULT,ENGLISH,FRANCAIS,FREE, FREQUENCY,LANGUAGE,LOWER,NEW,RESET,SYSTEM,UNNEW,UPPEROV *** PROGRAM CONTROL ***8O`, , CONTROL STRUCTURES ,END, FOR...NEXT,GOSUB,GOTO,IF...THEN...ELSE, ON...GOSUB, ON...GOTO,POP,REPEAT...UNTIL,RESUME,RETURN,STOP, WHILE...WEND,, ERRORS ,BREAK,ERROR,ERRL,ERRN, ON ERROR GOTOOj *** LOADING/SAVING ***Ot,, ACCESSORIES ,ACCLOAD,ACCNB,ACCNEW,ACCSAVE,, BINARY ,BLOAD,BSAVE,, FILES , EXTENSIONS, FILE SELECT$,LOAD,RENAME,SAVEO~ *** DIRECTORIES ***O, , DIRECTORIES ,DFREE,DIR,DIR$, DIR FIRST$, DIR NEXT$,DRIVE,DRIVE$,DRVMAP,KILL,MKDIR,  # #!      "  "   % +  ,#!                        #"                                             #')'$$!                            #&!#*.)! +                   #''             %(   '   !    &%'E0>P''( ) ƿҲĶȹ 19.(9>13:EC>?A?;LUPZSCR`[^gZEJLIEEIPH5)2H?.570(542-   ƶ¼ĺͿ  ;**%+=@99<+K9@D,$;E#<+0-/*%4!6!=$C(1%- )22#96.8I@/38->, + !&(   Ƹ !$0.** ?+9-'>;+,,4-..&(00  +("' #* &  &#>(7!./, 5?#"$!  !$* Լ˿    * #.- 85  " '! , ˮҼݻ̿     ,!$:$% ϺúA("$.,.) A3'QP05O6%6.0='.0!'7<]@:A8H6 + !; 7: "  5&4%1=%'Q2)(0  ̰԰͹Ԥɾ +76A35? 7$"6)*>    ! 62EjRCX=@C6+#6!* %$7$'3(<..+!;$<%  A 5!%0ӻټѿ*3 2& NB1TL5M92)   #2.#) &-E )A'@; *-"&5B2* ##!%7>9 ̢ڨ۵ "7 7 )P =ZR>FAA=S*) / Ⱦ .(&.,80!($/+#62+>(  /)'ƹĸ Ȯ" +3AB292RU0@B4."'5L!ѷ!3$!-%C. &&@ .8=  ,/7  ̩ܱ  4  #%(<+'9J":0 .٫  ! %54*(* + 0 <1; 0#P#* 0+Ѹݵ #%&%!= 76:T3@@"$:   #4 -= / ! $:2) *-*"&'*A<.$0ͺ̸  #,  $輨 !' $8, +5+L2  1$7!+A$  зСҺ!)4'3<-&'C?@D;045!F) ֺ    9 0):C!5?.$&,"7"6,齲ğϹ 01(B2'- 0B,E"$.G6PREVIOUS,RMDIRO *** FILING COMMANDS ***O, , FORMATION ,CLOSE#,EOF,FIELD,LOF,OPEN,OPEN IN#,OPEN OUT,POF,PORT,, READ ,GET, INPUT$(#N),INPUT#, LINE INPUT#,, WRITE ,PRINT#,PUT$O *** MEMORY BANK COMMANDS ***O,, ENQUIRY ,HEXA,HUNT,LENGTH,LISTBANK,START,, FORMATION ,BCOPY,BGRAB,COPY,ERASE, RESERVE AS,SAMCOPYO *** BINARY ***OĠ,, ENQUIRY ,BIN$,BTST,DEEK,DREG,LEEK,PEEK, , MANIPULATION ,AREG,BCHG,BCLR,BSET,DOKE,FILL,LOKE,POKE,ROL,ROR,TRAP OΊ *** MATHS/ARITHMETIC ***Oؠ,, FUNCTIONS ,ABS,DEF FN,EXP,FN,INT,LN,LOG,MAX,MIN,MOD,RND,SGN,SQR,SWAP,, OTHERS , ARITHMETIC,LOGICALO *** TRIG ***O젦, , TRIG FUNCTIONS ,ACOS,ASIN,ATAN,COS,DEG,HCOS,HSIN,HTAN,PI,RAD,SIN,TANO *** PRINTER ***rP,, PRINTER ,HARDCOPY,LDIR, LLISTBANK,LLIST,LPRINT,WINDCOPYP *** KEYBOARD ***P,, INPUT ,FKEY,INKEY$,INPUT,INPUT$, LINE INPUT,SCANCODE,, MISCELLENOUS , CLEAR KEY, KEY SPEED,KEY,PUT KEY,WAIT KEYu0 **** MANUAL ****>u:W$M$(MNBA,MNSELCT):S( )PuDPOS(S( )( ),W$):POS uNP(POS)puX((PNPD)((POS(W$)) ))SPOS:uDTubPOPOS: I%:LINE$(I) :IulTL:BL:NLINES(POS):NLINESNLNLNLINES&uv INLINESuP(PO)uP XLINE$(I)LINE$(I)TEXT$(P):PO: `uPO:Iu:Y1I:Y2y:,,,':,,(,;:,,N,t:,,,:(POS)DY2:, ,,::PuNLINESY1:, ,',::(u, ,d,::Ju,,,%,,:,Y1,Y2u:LINE$()::W$: 1INL:,I:LINE$(I):I:::Buƞ _::Z():Zu uТZ u uڢZv uZv(uZ:@u::: "Nf vTLufv ,:(#);:,::TL:BL:LINE$(TL);:u&vBLNLINESufv ,:(#);:,::TL:BL:LINE$(BL);:uv* **** DATE$lv4:,,,",,:,, ,",,::vHv>vR:|:: Input todays date:;D$:D$::vH::::8vH|::: The current date is :4vR INVALID DATE:::d::v>v\ **** TIME$lvf:,,,,,:,, ,,,::vzvpv:|:: Input the time:;D$:D$::vz::::4vz|::: The time is ::4v INVALID TIME:::d::vpv**** FREEzv:,,,,,:: There are() bytes free:::v **** FILE SELECT$v:D$(*.*,Select any file,)::, , ,,,::, ,,,,:: You selected:|::D$QUITD$$v:::v **** DFREE>vʫ:,,,(,,::vԏv:D:D$ There are(D) bytes free:D$::D$on disk :D$:::\vޠPut a formatted disk:: in drive , then hit a key:w::vv **** DRVMAPvD$:D1$:I:A$(AI) :D:(I,D)񸢚D$D$A$D1$D1$A$vI: :&(1! !# &@( 57C& &# M$! 7 阿Ѹÿ 8<503*79% ;!/% . ' %Ҽ䶸  $5E2/!  . .;%H0$%( :Q".08,  ؿѨ컱ҷ#  &)#%*7)(6OL0(MU5 40 7 #7(9 29#01)/I5UG6%;!L  ):: #ڿ̾ӹ+=  ?-*0HI$/$O/&! &(, !4&. +'"#/$76)8)"% +!  "0 "м !,4.+KO- 4:! ! ʹ /! //+'1 (!$ #;EH$ #&#9%"  ϵۯ橙ɜ $9Z#M*/_{dDDzz4hbmmGfd\]V[,AVTROM*0H50鐍Ŀ˪%F D :*Q99@BGJ08 GP$%&ժҞݮȰܾ%  I#*E"R0p >0O1&0 G,0.T@%YN>HQI0-,) !1#    &:#5049%8" мۼ! &5Z2*9 G(J4:%)=024=$%!A# )/ # / '!  " ( 0!&F(?O-7:V'OC.<+E%. % !, %   .K&&  ľ %*(TH@K9i36.KC46)"L 2 ,  ((&("5A #Գ&#0"@[=(IJB"7H_#L)R: &K0KI) ҿ4  +   '&,4䱬ت   54B7 ! $?$IMG&U=@22  9:( )&!" 7" ྾ ֽٸ # !=@-Oh.%9)@I34>0('0 ,*$  ̽  - 3<'$1 ֻ̱ * ,%>A$$!$8SXDTP 'U2 2+%#0   )  1(,ݵ箺  5'- +CH( $C.C5 /B '?:;>2++   .,  3  2:C1",%FA0**3Q309O&/ >- )!" 5  3  36DF4&K$ '0"<,:%#(  $)) < &մ  $"( $- ,2"-!9?OQ2/#,4 $EF4"% #- *! * Ǿڹ   0 73!N_2!6:4! "?&"9K.&!6 $')'*    $3 22 #.B8;B=%:>8 -2  , %'$0 ۹  ռ) T>=K&/,(\H5BQ9!+-22>4&!@=2,-0%1!       #  !" (1 ,1(1@7Q?$7I'* //)1(&(6(2,   ::Drives connected:::D$::: :Drives not connected:::D1$:::w **** FKEYw:: :,:Last function key pressed: none:::A:Aw,:(A) w::w$ **** INKEY$/SCANCODEw.:: :,:Last key pressed: ::SCANCODE : ::D::A$:A$wBA(A$):AAA A A$ Bw8,:A$:,:D:D; wB::wL **** INPUT$wV: :,:Input 4 characters::Type EXIT to exit:::::A$():A$:(A$)EXIT:$@ **** ROUTE TO DEMONSTRATIONSJ::.TTOPTN :Nf^v:J|MNSELCTv,(,(,(,(,(,(,v:v:>§MNSELCTw,w$,(,wL,(,w$:ḐMNSELCTv*,(,(,(,(,(,v\: ` *** SET UP TEXT ARRAY ****j: UI z:TEXT$(I)(I):I:TEXT$(&)Example::TEXT$(@) STOS Basic :TEXT$(_) :TEXT$()(),:TEXT$()().:I(): W{tTEXT(I):TEXT PTEXT$(W)TEXT$(W)(TEXT):I: >tI:W:: **** WAIT KEYL:, ,,,,:HIT A MOUSE KEY:$::::X ,::s,,:,:HIT A MOUSE KEY::8,,,(, ,,::ܢ(츊):5There is not enough memory to run this on-line manual:2:::: :h梸0:FILE$(*.MBS,'Please find the file PART_3.MBS for me!)::B:An error, code ;;, has ocurred in line ;:Lionpoubnkr H D '''PALT"3DUfwGBQPp$???@`pxlfca@|`  ʀ  ʀ   x 3<{ x s|{ { x 3< y 3<} s|~ ~ } s|y 3< | s|~ ~ ~ ~ | s| x 3<~ ~ ~ ~ ~  @@@@@@@@@@@@@ "  90 5/+.F3!4?F.AC00>6/..#72     &))-$'))8%4-*0  " #       3+1--#--++7&0:1//7@04%*,2    #(0&+>>62-5=4$*6  "($$    !/-/'(214&! )"&#*--$*("#(6?B&01)      ѹ   &/! <8'%%*56+8*44 , '3&      "$!5( ;'4,-05**9+#*)(<, )     ӽ #('$#'>'(>6.8/($,/&=!.&'"   '.5))92@4 <76?3&% ) .-+     ص-"'3>(*& 064+!73*7/!//$" # ˰  $  #/ :#"2,28(()? +"5)-%F   0  - Ҳʴȼ !   &9-$*$#./7E#-(1)( !  #2$+ D( ߹Ӿ%'+% );%"!$%   FL!޶  ! T-+ID*( !ڸϸ& *$3: E$D3E0SBF1+24@׾ƾ޸;(%. 3%/ ..-  'ƻɷ &#+"L67?QX`Vk]0)7BB.+RB /)O" #  (,3#9 / %0-8 ٯӹڹȸȧA#02F3!#;i>$ C4%4EfP'IH$P4!G23( *  '" S/2 *; ))3 ʭƴ΅ 4?$)(M8=$ #:$ 8 )0!A)./" $-/F$)(" Ȱֺѽ%/>*50'G.BB/(% ,   7d4,"  $  ūȾ -&1E-1E/  )B%  "%+H/!,   ثܹγ  ( *"1B%BO*5! !  "$ ! 3K.!$   -Ȼļ  ""/G8F# '&7!( +3:E x s|{ { { { x s| x 3<{ x s|{ { x 3< { y 3<z { { {  | s|{ { { { | s| c("3DUfwGBQPp$ ࠀ @@@@@@@ 0` p @@ @ʊ  UUUUUUUUUUUUUUT_0@@? @ A@02)IUU%$UUPH 8`@00 ?@ @@@@@V @IHHM @```0p00xx0xx00p0xxx00p0x UUH @0 x{xx@ B{@TE^">"0p00p00p0xx0p00p0xxx0p00p0xxx@  @@<~fj|6 0<0 ~pp@`p`H8   @A ?@@ ? $xp`@0_?@?@  UUUUUUUUUUUUUUUUUU?TW?~|e~`@?A@?0ֶUUlnQ :H`@϶Ȉ::8D$? ?ACGO_?@[{jueyINk[UmUWRZXH ?[g Ąlll?p@`99 $9p">"pppApqp0ppp@@<~fj|60 0  47g``練  > ???L\twg``gwt\LD@  0 47g``g74 ?47g``g74 ?,47g``g74  @@ ?4t 0 ??|xp`@@*5?UU[ 0YI0p0 ?@ @@@@><80 ? 60?UUW,8x0p00xx0xx00p0xxx0?0p0xm`o @ ?07@ A]t">"0p00p00p0xx0p00p0xxx0p00p0xxx@  !AU]AA]YE]AA]EI]AAIAtttEtut4tttߟ__ߟ ?0`~pp@`t||xp   47g``g74   47g``g74   0 47g``g74 47g``g74 47g``g74  0 UUUUUUUUUUU *UUTW?~|``p@)/)/x@xHx ' %  # طν (*M,#S  & 1; 8 #1D # ! # #  جݽ   .G7%@C)E!   &1-( -@    $ ҫо ($ '.)31 4R #&46*"#@=  6 2.D -,  ęζв0G (5{D-jv&H 5g+O+O>2&A 4ʞ)<H I1*Q?.GWDAO8%eD*+28276E$ 0% # +" ȶԶǷ̿߼ݾ  %0" /["M5/2J62@6JL C2+7 &)96! 9$' :57,&!/%  D 2A.  +*".+ %# ơѦѧğ͸Ⱦ + = $*$45$#V-WGc&&@1% 0I1B"%WI\('"$ " ۻ ܹ  != "  &%'BN'"K* =-:7 = >   $ 1(!  * 7 6..6%%-  $- )&F).&%!ݿ̾ŵ$  &!$5&) !)  #/(':@ K,,3>IP6*!#20,@43߻$ '$ *% /<  "'%# 23'AB5('0ᵯƾDZ "#   % ,%0  + % 502@R6:"*)%1" ζȾ Ʋ%+#* 4 !&=-(.'#,)H24 +"   *ڹź )/  % /*D   $/-L?.9*RB '-ֽ  $+    %+1+$;   , 6-OA&E%< 6 еԼ . %  18C   ' ((1GK35($)$'8 (ƺĿ '    %:C" &&%#/JF5',; %  ̸ ! %  'C*  !- /8PJ$'#42Ү /   ! 1() (+0)7a80118  !8     1    $")IK2- 0 04  ݿ˿  +     )"'  $ )%<>Q+ +,(! $?  սþ%      +" '(#&.8GG4)(7& ܷ% 0! + 9  ;#(11:K-, 6-" ޯ0   + 2+5&'     +5 5FB!9! #G%-  $ # 5 %*I3:% % 1  * *T4>+( B(&ڹ   )#0 8&#;     3 6SE/ !5/!"  ׻#*  C [")?!7;42  #   $$%N. 0%2  /B Ƴ¶   -$ 7?)-?682=+9-! ! #0/N9"2,* $ ׹  %  0".0+/-'!+ :87@ /    ,&E, &("-6B4 $#(1 &, ^޼<~fj|6`@@@ *UA*||@ P(0!P|<@/w8:::9_wW χ߀߀` 8'w'wïûëû(zP`?О<??=?P(P8P(p8P(p8+_v 6!!uT@x , paЀa~P-~ ! `π`π`π````p9|ށ\ރߛ|,@>@>AEwwPwPwPwPwPwwwwwwwww8wwwwwww wwwwwwwwwwwwwwww   0    Mǀq(ʰv 6@B@@5F(?^  ?@/5  P5wVP ~P(~hP!.8P @?@0@0@0@0@?X`0 oO_O__,8'w'w}߬y""P""""""""""x"x"x"0"(x"x"zP"""""" S" C" C" C""""""""""""" P( P8 P( p8 P( p8      } D D  :(   | ""ƀ@x555wVP``PPPplll;? |xsg? `09p ?{? c;lp?Ǐ0cǰ<9;c1cqxs99{`c{9s9s9q{scc1ss??991g??c?c{{1ccy?9sqscss1z)x{=z1c?sSLX AFFFLAGSC1C0to when by ~ number from Returns the position of in one string or integer If is not a negative returned must be using used first character with characters STOS Converts optional memory between addresses and if Basic Sets then all are specified can set numbers will after reserved variable either statement list defined which variables only instruction on line pointer direct mode current window screen program text for omitted last file directory at address bank that command being commands sprite instructions movement condition Turns holding resolution channel contents left background colour index pixels cursor corner coordinates positive Draws measured opposing elliptical corners plotted pattern coordinate sprites animation mouse pressed before length starting expression Use lines start files bit associated point direction played value it end Changes function been The NB. Use in directNDIM DIM A(L,M,N,..) Dimensions an array A {contain (L+1) }(M+1) }(N+1) } . . elements. NMATCH MATCH(T(0),S) occurrence S ( real integer) dimensional array T. S found, whose absolute nearest match T. T() sorted SORT MATCH NSORT SORT A(0) Sorts array A ( real integer) into ascending order. NASC ASC(A$) ASCII code A$. NCHR$ CHR$(N) ASCII code N. NFLIP$ FLIP$(A$) Reverses order A$. NHEX$ HEX$(N[,L]) N into representing N hexadecimal (base 16) form. L (optional) ꄂfinal & PRINT HEX$(125) $7D PRINT HEX$(125,4) $007D NINSTR INSTR(A$,B$[,S]) Finds B$ inside A$. S (optional) A$ {started & PRINT INSTR("STOS","S") 1 PRINT INSTR("STOS","S",2) 4 NLEFT$ LEFT$(A$,N) leftmost N A$. LEFT$(A$,N) = T$ leftmost N A$ {T$. T$ longer than A$ truncated { A$. NLEN LEN(A$)  A$. NLOWER$ LOWER$(A$) A$ { lower case. & PRINT LOWER$("STOS") stos NMID$ MID$(A$,N[,M]) middle M A$ 뀂N'th M (optional)  MID$(A$,N[,M]) = T$ M A$ {T$ 뀂N'th M replaced up { A$. NRIGHT$ RIGHT$(A$,N) rightmost N A$. RIGHT$(A$,N) = T$ rightmost N A$ {T$. T$ longer than A$ truncated { A$. NSPACE$ SPACE$(N) Creates N spaces. NSTR$ STR$(N) N (real) { NSTRING$ STRING$(A$,N) N long A$. NUPPER$ UPPER$(A$) A$ { upper case. & PRINT UPPER$("Basic") BASIC NVAL VAL(A$) A'(,+ .4&    154 !"" =49&#%  -/3! 30    '"8,&#C-8:!, $$) ,. "A%     '! " ,*#%7%9D)! %/7"20   '551"0,&-,I8.% 2" 66 @0) (  (  7135$&!27:=4! '%*?* ,   $' :6/+>:+/%  ! -.&% ,    "#8? 3>BC05' # "*& @2 9   2G ,9ECA'?  $ #57 0     ",-0%+KDR-&+4  +$& )% .(.)"   )2"&)?KB;::    : '$/     # %6-277O"[5-,),8(' &.3&   ' 5 F/66Q@63396&'D 0-5    %(' ( *)H@([1H&5% F  E /7&!* $   + ' RPPYQ[QYg\uYjll]fda_\YWURPNLJHEDA@><:975420/-,*)(&%!! ʽĶǝưȡյ&",>C& 7=9#"$"C,++1E@67TT+ 1#/% ' $$ 0 &*-,$: 7&     !  &'  5+."! &$ #   )   -1*    13)")81G#T=F$5+" + !1 &-#   ʾ   +##8! 2#+#0!( )(    %   "$5.,%%-!0"  !           2 $2.7) 8 302*)         "# ))39* 1/?&4 +  ۾      . $(4)50=, 7( &      ۿ  !  "/,,+ %,(-#      %#  !* # %.428 !)<   ! (&B+$*/- 7( 1-6(   ( 7>  '0)%.D".78,#2'     $#,. %  *,.!/*+1$"4/08)1#!        #+ , 0'*#),#.!<'%$ #   ,) !""%2+)",04(      .%+ ))   '!+$$ ',,     $!))  '*-<48#0H62,# նͷǽ(8?0,:6$'&*3(0  %A<*$+)8& ,%'+1(ôʺȳ$ { & PRINT VAL("100STOS") 100 DDATE$ DATE$ = "DD/MM/YYYY" date internal clock. DATE$ date internal clock. NDEC DEC N Subtracts 1 N. NFIX FIX(N) decimal places {displayed |printing real 07 printed full any trailing zeros truncated. & FIX(2):PRINT PI 3.14 FIX(-4):PRINT PI 3.1415E+00 FIX(7):PRINT PI 3.1415922 NINC INC N Adds 1 {N. NRND RND(N) random 0 N inclusive. N RND NTIMER TIMER = N internal timer {N. TIMER internal timer. DTIME$ TIME$ = "HH:MM:SS" time internal clock. TIME$ time internal clock. NDATA DATA allows data { assigned {} READ DATA & 10 DATA 123,"STOS" NLET LET Assigns { (optional). NREAD READ { read next item data DATA & 10 DATA 123,"STOS" 20 READ A,A$ NRESTORE RESTORE N Moves READ { item DATA N. NVARPTR VARPTR(A) location A Integers: location Real: location two long words contain String: location NAUTO AUTO [S[,I]] Automatically outputs next each time RETURN hit. S (optional) I (optional) increment. NB. 텸 NCHANGE CHANGE A$ TO B$,[S-E] occurrences A$ S E (optional) {B$. NB. 텸 NDELETE DELETE S-E Deletes S E. NB. 텸 NFULL FULL Expands { full NB. 텸 NGRAB GRAB P[,S[-E]] Grabs S {E (optional) P. NB. 텸 NKEYLIST KEYLIST Lists key assignments. NB. 텸 NLIST LIST [S[-E]] Lists S E (optional). NB. 텸 NMERGE MERGE F$ Merges F$ disk Any repeated over-written. NB. 텸 NMULTI MULTI N Displays N (2-4) preset windows simultaneously. NB. 텸 NREM REM All REM ignored interpreted } NRENUM RENUM Renumbers whole 뀶10 increasing }10. RENUM N Renumbers whole 뀶N increasing }10. RENUM N,M Renumbers whole 뀶N increasing }M. RENUM N,M,S-E Renumbers S E 뀶N increasing }M. NB. 텸 NSEARCH SEARCH A$ Searches occurrence A$. A$ next occurrence search searched NB. 텸 NFLOAD FLOAD F$ Displays selector. F$ defines path. have legal extension. NB. 텸 NFSAVE FSAVE F$ Displays selector. present saved name selected. F$ defines path. NB. 텸 NCALL CALL N Calls machine code N N. NCOMPTEST three COMPTEST ʤ }compiler. They {|˞ menu updates, check CONTROL-C done. COMPTEST ON Checks carried out control (eg GOTO, WHILE) slow like PRINT WAIT. COMPTEST OFF No checks updates done, thus speeding up flow. COMPTEST ALWAYS Checks updates done every slowed, but ͞ menus smoother. NCONT CONT Restarts has stopped }STOP }break. NB. 텸 NFOLLOW FOLLOW [VARLIST,[S-E]] Halts every S E (optional), printing values VARLIST (optional). FOLLOW OFF off FOLLOW NB. 텸 NRUN RUN Runs RUN N Runs N. RUN F$ Runs F$ disk. NWAIT WAIT N Halts N/50 seconds. NCLEAR CLEAR Erases temporary banks resets READ NCURRENT CURRENT  NDEFAULT DEFAULT Resets editor redraws windows. NENGLISH ENGLISH Forces error messages { output English. NB. 텸 NFRANCAIS FRANCAIS Forces error messages { output French. NB. 텸 DFREE FREE amount free NFREQUENCY FREQUENCY Swaps scan rate interrupts 50 60 Hertz visa-versa. (NB: Some TVs cannot handle 60 Hz so should never them.) NB. 텸 NLANGUAGE LANGUAGE 0 English messages ɓ 1 French. NLOWER LOWER Makes lower case upper case |listed. NB. 텸 NNEW NEW Erases NB. 텸 NRESET RESET Re-initialises editor. NB. 텸 NSYSTEM SYSTEM Quits returns {GEM environment asking question 'SURE? (Y/N)'. NB. 텸 NUNNEW UNNEW Attempts {recover has erased NEW NB. 텸 NUPPER UPPER Makes upper case lower case |listed. NB. 텸 NEND END Exits NFOR...NEXT FOR A = N TO M [STEP L] : NEXT A A loaded N. within FOR...NEXT loop performed until NEXT reached. A increased }L (optional: otherwise 1), within loop repeated again. This done until A>M. NGOSUB GOSUB N Jumps {subroutine Ķ N. jump back { |RETURN ȋreached. NGOTO GOTO N Jumps {N. NIF...THEN...ELSE IF...THEN...[ELSE] Allows {interpreted certain conditions. ELSE (optional) allows second {interpreted ο met. structure is: IF THEN statement1 [ELSE statement2] statement1 statement2 any ΐlogical NON...GOSUB ON var GOSUB line1,line2,... jumps {subroutines line1,line2 etc depending 'var'; line1 var 1, line2 var 2 etc. jump back {| RETURN ȋreached. NON...GOTO ON A GOTO line1,line2,... jumps {line1, line2 etc depending A; line1 A=1, line2 A=2 etc. NPOP POP Removes return ń GOSUB allowing subroutine {exited without RETURN NREPEAT...UNTIL REPEAT : UNTIL ̜REPEAT UNTIL repeated until ΋TRUE. NRES '.8$%(38/@6??/:- 7)%󫨭򀾀ķ&?7$T0< H :("0 %! +/;#Γ˖̤̟۲е%25;&"8ȿ˾ 7 />2 MX-D%=11#''""#"<! - ;99? DD9T4%!y?=-.C@ 3'2>7/:_>#>MA@8">'(&&9 ڨ¬ & !(" EP-$/(*F<9 G !(9 1    -)8? +0% 1ЪȰ (*21D%,NR%D*/$B* ; E,2=4$" &%8侶 Ҽ # ) 1)7'";0V+!E %/9'&". U%&4>! (+ܺΰǻ 9 3    , G$CDI$7 (!D7&  % '"7/*:6! )̧֣Ѵ5(.6 * .  "') 7, = ׽ !(G008 2   +6&* +索Ǫʢҹ B:  . "" +   1#0/$; :       ' ƻéò /0&%) !!8 +  ) + +1:7)"  #$"#  öέī4,, 1  (" 5(+   %!  3  ûѿ(%.+ + '   $5+)%    "     )9!%1&9 )     +*&  - !<(#*>64#,-><-192*606'(    ++//-3"4M7%B39B28$2&?   /A*  80(7&,;#?0G(-&)     -0%"0 !+B"8L! .$$  '#)*#+             #)*2),3.+9#<*2;#: #  $   " -$   .#,L>$ %+)  /7", ɷ2D $3 *!4#' /$ +''/  '!$  %" '). /0#,/ %!$  ! ! %!     !"5LB>?@17=5/Ԙc )K+<72KJ ]?"b*' ? 3* !ʴˆѧ󨝲Ǿ'-7kASFnRNd<4'3 /+<3*N.) $   67 J()F!" ; #6 ʲ ̻*" )6 !  '!=  '+= &,8"*])]6F* /1" 1 /7ǻԦɸ1   ' 2?# 64 (50 '  *0-.!+'; B ) '    $!5%&)$ 1!*  - - ( 4  .00,"B(4M% 2'   Ϲ E )<8 " -$ C +   +"74+ $/& K F&- ,"(      "    8.968> - %   !&**,3-"(. ֽϵ, .'M 5% ! %).'        !+6'5%07$$4"        &"      ,# # 0$ %*) &+"(UME RESUME { restart an error has trapped }ON ERROR GOTO RESUME Jumps back { caused error. RESUME NEXT Jumps { caused error. RESUME N Jumps {N. NRETURN RETURN { GOSUB executed. NSTOP STOP Halt execution NWHILE...WEND WHILE : WEND ̜ WHILE WEND ̤ repeated while ΋TRUE. NBREAK BREAK OFF off action CONTROL+C, so Ǎ cannot stopped } user. BREAK ON ϵCONTROL+C key. NERROR ERROR N Causes error code N. & ERROR 71 causes BAD DATE error {occur. NERRL ERRL Return where error occurred. NERRN ERRN  error {occur. NON ERROR GOTO ON ERROR GOTO N When an error occurs flow directed {N. It acts once, so should re-issued another error occurs. NACCLOAD ACCLOAD F$ Loads accessory F$. F$="*", accessories éloaded. NACCNB ACCNB accessory  0 has installed as an accessory, 4 15 has. NACCNEW ACCNEW Clears accessories NACCSAVE ACCSAVE F$ Saves extension .ACB so may loaded as an accessory as normal basic NBLOAD BLOAD F$,N Loads F$ into N N. NBSAVE BSAVE F$,S TO E Saves S E as F$. NEXTENSIONS recognises 11 standard extensions uses { load save their correct format. .BAS .ACB Accessory .PI1 Low picture .PI2 Medium picture .PI3 High picture .NEO Low picture (Neochrome format) .MBK Memory .MBS Set banks .VAR All time save .ASC ASCII format .PRG Run executable GEM desktop. DFILE SELECT$ F$ = FILE SELECT$(P$[,T$[,B]]) Displays selector so Ǎname selected disk. P$ path, T$ (optional) title dialogue box. B (optional) border style box. NLOAD LOAD F$ Loads – legal extensions disk. NRENAME RENAME O$ TO N$ name O$ {N$. "NSAVE SAVE "FILE.BAS" Saves SAVE "FILE.ACB" Saves as an accessory. SAVE "FILE.PI1"[,N] SAVE "FILE.PI2"[,N] SAVE "FILE.PI3"[,N] SAVE "FILE.NEO"[,N] Saves ňN. SAVE "FILE.MBK",N Saves N. SAVE "FILE.MBS" Saves banks. SAVE "FILE.VAR" Saves currently SAVE "FILE.ASC" Saves as ASCII SAVE "FILE.PRG" Saves so executable desktop. DDFREE DFREE amount free space disk. NDIR DIR[/W] [P$] Lists õdisk. P$ (optional) path specifying { listed. Wildcards used; "*" replaces up {8 characters; "?" replaces /W (optional) DIR {across page instead down. NDIR$ DIR$ path. NDIR FIRST$ DIR FIRST$(P$,F) Finds satisfying path name P$, returning containing its name parameters. F contains type {searched for: Bit 0 Normal read/write Bit 1 Read Bit 2 Hidden Bit 3 Hidden system Bit 4 Volume labels (Disk name) Bit 5 Folders Bit 6 Files written { closed. A flag -1 searches any type. no exists null otherwise following format. Characters Usage 0 - 12 Filename 13 - 21 Length 22 - 32 Date saved 33 - 41 Time saved 42 File type (As above) NDIR NEXT$ DIR NEXT$ Find next ± satisfies path flag }use DIR FIRST$, same format When no more found null NDRIVE DRIVE  drive. 1 drive A, 2 drive B etc. NDRIVE$ DRIVE$ letter representing drive. DDRVMAP DRVMAP binary denoting status drives connected {ST. Bit 0 drive A, 1 drive B etc. A {1 means ǂdrive connected. NKILL KILL F$ Erases F$ disk. Wildcards "*" "?" {denote up {eight single respectively. NMKDIR MKDIR F$ Creates folder named F$ disk. NPREVIOUS PREVIOUS Takes path up NRMDIR RMDIR F$ Deletes empty folder F$ disk. NCLOSE# CLOSE #N Closes N. NEOF EOF(#N) TRUE reading N Ă FALSE NFIELD FIELD #N,L1 AS F1$,L2 AS F2$... FIELD defines record structure random access N. F1$ field L1 etc. There up {16 alphanumeric fields up { 65535 bytes long. When record read, F1$, F2$ etc each loaded values stored particular record. & FIELD #1,15 AS NAME$,3 AS TITLE$, 5 AS NUMBER$ creates field three strings. Each element NAME$, TITLE$ NUMBER$ have maximum 15, 3 5 respectively. NLOF LOF(#N) ꄂ N. NOPEN OPEN #N,"R",F$ Opens random access F$ N. OPEN #N,"MIDI" Opens Midi interface N. OPEN #N,"AUX" Opens RS232 port N. OPEN #N,"PRT" Opens parallel (printer) port N. Channel N (1-10) always opened any its manipulated. NOPEN IN# OPEN IN #N,F$ Opens sequential F$ N. Its Ӧ read written. NOPEN OUT OPEN OUT #N,F$[,B] Opens new sequential F$ N. It written {read. F$ already exists erased. B (optional) an describing type { created. Bit 0 Normal read/write Bit 1 Read Bit 2 Hidden Bit 3 Hidden system Bit 4 Volume labels (Disk name) Bit 5 Folders Bit 6 Files written { closed. NPOF POF(#N) = M N {M. POF(#N) returns ·N. NPORT PORT(#N) PORT returns TRUE input device connected {N waiting input, FALSE NGET GET #N,R Retrieves R'th record random access N was created FIELD NINPUT$(#N) INPUT$(#N     !  " *!"*"(,-*!8/) "      ! %   +),    " #&$     %' % $ )   "$% ( # (.$;,' $+ -!   +2)&1+  $  /    "   ,+9++* *, "4 *   !$ %     +     4 +,+            +     (  +!   &  ! >O͹Ҷ_(bG[,Qmz`q>a0h6 `>Y:#[EH>9M1=D,%! "Ѝ˕ 9'&[PH\1VUK:NNKJ;@>%)  ױ¿  Y9 ɶ / -- +2  8* Ҽ '#-(9(),>!A:#Y4-,.,$ $2&+,  % ) (! 0 '.)O # %(5 %F4 /   [I7Z) =U:3/ ʪ1L "**# %1>,J . ?3 )6  F), '' )"-&2 ' ,) #$+8! ."2 ) <7 *0 >- =(!%$ I A!!  &7 # ($ !  $X? <-' (0X 8,5$8$1*< M  +' "  .:PCH J6 ;44ټ  %%    3'H &) .0 " & %,     7'" & 3$ , S  ! #7!&!%(   1     8  !3H  ' .    $  ',    "*   5&   (-$%  7   +##! ( ; 4    !  '+  !   %    ! *)#   '$"*+! $  $ 9&  #/ ,& ' $+.!  "6  : DD?????@@?  ?@@?  ?@@?  ?@??~@~> |x ??@????~@~> |x ??@????,M) Reads M N. NINPUT# INPUT #N,VARLIST Reads information sequential ˆdevice connected {N. Each piece information separated }comma total  exceed 500 any time. NLINE INPUT# LINE INPUT #N,[S$,]VARLIST Reads data N. Each item separated } S$ (optional). S$ RETURN assumed. NPRINT# PRINT #N,VARLIST Is same as normal PRINT except its output directed towards N. NPUT PUT #N,R Writes up FIELD {record R random access opened N. has just created each record written correct order. A record written onto any record already exists. NHEXA HEXA ON ꄍ Ʃoutput hexadecimal form |LISTBANK HEXA OFF output {decimal. NHUNT HUNT(S TO E,A$) A$ S E. 0 A$ found. NLENGTH LENGTH([P,]N) N P ( assumed), 0 does exist. A P 1 {4 programs 1-4 5-16 accessories 1- 12. NLISTBANK LISTBANK Lists banks } NSTART START([P,]N) 냄 N P ( assumed), 0 does exist. A P 1-4 programs 5-16 accessories. NBCOPY BCOPY N TO M Copies N {M. NBGRAB BGRAB P[,B] Copies B (optional) P. B banks copied. NCOPY COPY S,F TO D Copies even S E {D. NERASE ERASE N Deletes N %NRESERVE AS RESERVE AS SCREEN N Reserves temporary N size RESERVE AS DATASCREEN N Reserves permanent N size RESERVE AS SET N,L Reserves permanent N, L bytes long use } 4, second 5 etc. 1 {3 internal sets. 4 {9 user RESERVE AS WORK N,L Reserves temporary N, L bytes long. RESERVE AS DATA N,L Reserves permanent N, L bytes long. N range 1 15. All any purpose, but some within special purposes. Sprites put 1, icons 2, music 3 menus 15. L always rounded up { nearest 256. A permanent Ƌ always saved along whereas temporary lost. NSAMCOPY SAMCOPY S,E,D Copies S E {D. S, E D odd even locations, unlike COPY NBIN$ BIN$(N[,L]) N into binary form. L (optional) defines  & PRINT BIN$(132) %10000100 PRINT BIN$(132,10) %0010000100 NBTST BTST(M,N) Tests M N. 1, TRUE else FALSE. Bit 0 far right NDEEK DEEK(N) two-byte  (0 65535) Ăeven N. NDREG DREG(N) reads data register N (0- 7) 68000 processor use }next TRAP call. NLEEK LEEK(N) four-byte long  (0 4294967295) Ă even N. NPEEK PEEK(N) single byte  (0 255) N. NAREG AREG(N) reads register N (0-6) 68000 processor use }next TRAP call. NBCHG BCHG B,M B N 0 {1 visa versa. NBCLR BCLR B,N B N {0. NBSET BSET B,N B N {1. NCOPY COPY S,F TO D Copies even S E {D. NDOKE DOKE P,N Loads two-byte N (0 65535) into even P. NFILL FILL S TO F,N Fills even S F N (0- 65535). NLOKE LOKE P,N Loads four-byte N (0 4294967295) into even P. NPOKE POKE P,N Loads single byte N (0 255) into P. NROL binary digits an rolled } digits ROL Digits rolled off moved {right ROL (ROL.B) rolls an 8  ROL.W rolls 16  ROL.L rolls 32  NROR binary digits an rolled right } digits ROR Digits rolled off right moved { ROR (ROR.B) rolls an 8  ROR.W rolls 16  ROR.L rolls 32  NTRAP TRAP T,VARLIST A low level giving access many GEMDOS functions. T trap  VARLIST {put 68000 processor stack use } routine called. By default, 16 bits long. By placing 'W' following 32 bits long. 'L' specifies following 16 bits long. given, ń put stack, CHR$(0) added { AREG DREG {pass information {Ş data registers. NABS ABS(N) N. NDEF FN DEF FN V[(L1,L2...)] = E Defines user V. L1, L2 etc (optional) parameters passed into E. NEXP EXP(N) exponential N. NFN FN V[(L1,L2...)] Evaluates user V. There same  as DEF FN. NINT INT(N) part floating  NLN LN(N) Calculates natural logarithm N. NLOG LOG(N) Calculates logarithm base 10 N. NMAX MAX(A,B) maximum strings A B. NMIN MIN(A,B) minimum strings A B. NMOD A MOD B remainder A/B. NRND RND(N) random 0 N inclusive. N RND NSGN SGN(N) -1 N 0 zero, 1 NSQR SQR(N) square root N. NSWAP SWAP A,B Swaps over ӄtwo same type. NARITHMETIC ^ power / * divide multiply MOD modulo operator + - plus minus above listed order priority. Any expressions enclosed brackets evaluated NLOGICAL AND, OR XOR returns }comparison two They also {compare logical expressions. NOT(A) changes binary digits 1 {0 visa versa. TRUE = -1 FALSE = 0 NACOS ACOS(N) arc cosine N (-1 {1) radians. NASIN ASIN(N) arc sine N (-1 { 1) radians. NATAN ATAN(N) arc tangent N (-1 {1) radians. NCOS COS(N) cosine N (radians). NDEG DEG(N) N radians { degrees. NHCOS HCOS(N) hyperbolic cosine N. NHSIN HSIN(N) hyperbolic sine N. NHTAN HTAN(N) hyperbolic tangent N. NPI PI PI (3.14159). NRAD RAD(N) N degrees { radians . NSIN SIN(N) sine N (radians). NTA~@~> |x ??@????~@~> |x ??@????~@~> |x ??@????~@~> |x ??@??@?  ?@@?  ?@@?  ?@@?  ?@@?  ?@@?  ?@@?  ?@@?  ?@@?  ?@@?  ?@@?  ?@@?  ?@@?  ?@@?  ?@@?  ?@@?  ?@@?  ?@@?  ?@@?  ?@@?  ?@@@?  ?@??????????H@H@@?  ?@@?  ?@z_ @?  ?@z^p@8  0 ?@@z_wp@8  0 ?@@rOwp@8 N TAN(N) tangent N. NHARDCOPY HARDCOPY Dumps copy { printer. NLDIR LDIR[\W] [P$] Lists { printer. P$ (optional) defines path. Wildcards path string; "*" replaces up {8 characters; "?" replaces An /W LDIR { across page instead down. NLLISTBANK LLISTBANK Lists banks } NB. 텸 NLLIST LLIST [S-E] Lists S E (optional) {printer. NB. 텸 NLPRINT LPRINT Works as PRINT, but sends data {printer. NWINDCOPY WINDCOPY Prints out {printer. DFKEY FKEY 0 20 corresponding {key pressed; 0 means no keys pressed; 11-20 shows shift same time. DINKEY$ INKEY$ key | called. A null stings shows no key NINPUT INPUT ["PROMPT",]VARLIST Waits strings { input keyboard, followed }'RETURN'. "PROMPT" replaced } "?" supplied. VARLIST numeric separated }commas, input separated } commas. DINPUT$ S$ = INPUT$(N) Waits N { input keyboard, putting them S$. input shown NLINE INPUT LINE INPUT same as INPUT, except Ǎ separated }'RETURN'. DSCANCODE SCANCODE code  key detected INKEY$ 0 null NCLEAR KEY CLEAR KEY Clears keyboard buffer. NKEY SPEED KEY SPEED R,D speed, R, ı keys repeat 1/50 seconds. D delay keys repeat. NKEY KEY(N) = A$ Assigns A$ up {64 long {key N (1-20). A$ whenever key answer {keyboard input A ` denotes return. NPUT KEY PUT KEY = S$ Puts S$ into keyboard buffer {simulate keyboard input. A ` denotes return. NWAIT KEY WAIT KEY Pauses until key ``Pack-IceI*L,LsaKMGLA "grѓg f``GP$]*$**ԓ**ԓpDAG$QC&NN&&Sj&n".扑&&SjN%a*d"ra$dCv !a"H@@Vҩ%QnNuf%Nurf%AQNuCtaTxr1 Hka1 Ag"CvtaTr1 HaBq jD`rptadpt?aBC@!!Q`R   Ice!os` `N<ٔs&<\3Stoă(ic mpiler V 1.0 >y Francois Lionet008 }8!`Otڜ$< ڹU2zPr?G/UʵGW(&pFdդ B4Vxw?zM^K= U ]w*Jg`BY9؃ nI ;&Jf;( HzB O@fb f BX^ NA\Ki_0!]y|@C}_"ZXWz;$gY.B#rXg wL8vp$AtdȘI͓NNT;@CjqQ8P(*s7.,Q , MI谗 k+ owe|#EhOV`0.MGd+K.+S2O6+k:h:B@u̠ p( B(L +Av"Y`@pEfrud 9v .,Fֶ@x}Yyc$Hz`<# b#hA|Cp"!3, w$NA*-BG&$(.@_gP ?fV~`A2fj`ݒ&Rd~Gg^ȵ(kfB`&`&&`JG5+N/ f@ ֨&y/,7N,_ܬրG f($RB@N" u|J@5L%˅hENQ D+H=%S/ӈ(OyIfBk09B`0o'gp `upR`p. dT`0l"9:"B jԁNb UjPj[j R OfwӀg  3Pd  &aH"J )EЩ|#GҎ$I$ Jg` ggՒ`&#`L#Ŵ.pNG~NCpNE )#2#v7A`O! s`0e B1ms"- hNB#?aH[ G+ p,mp 0Q ߖ ^?A/,v6HzD?*JbT ph)*,~]<efy^qp25nk0S[pfsave.bas3runM= dir$ + "\OpreviousOoff:TlP2W3{Ti 4[0{mo 1,ne(accload"*"J?defaulBenvkey list`/JP21d %c(  1234B5V6 7Y!8;19 f20:\JzpjZ"n6ܞ^v :x)d^5b1^(ar s+mlzsw  v rESW7 2۠Ţ0 0 ?@@rNp@8  0 ?@@fgp@8  0 ?@@Fbp@8  0 ?@@Nr@?  ?@Ä@?  ?Ä@?  ?Ǐ@?  ?@?  ?@?  ?@?  ?@?  ?@?  ?@?  ?@?  ?@?  ?@?  ?@?  ?@?  ?@?  ?@?  ?@?  ?@@?  ?@@?  ?@@?  ?@???_)5@@H@}ς0 "@ _o`By&Ryo|28H"&#=g4Vx*(---)V~7I*s[6;&WOVؐ Vhni<1A/ [y\g\) [T^Ÿ=X' Z - і+O T7~{$ xWDj٪2dpQ-F 7$o@ \-la0f6+ pxV[ <lV<;\ixDMoc: xxA\Npe"V lzxqMWfJg:6Y8x^y|\gdpj;r C5/=j கxAޞM<, $x,%Cy8quDJ!kxݶ P]YWN>qoaA':x:[x LZù6Eіgo/P:Jwax1@\G+D\[baܟÆxCpX25qx66 nKq1x,s2 387o.7k0X pKG2ҭ5XY'|f2Rf4?@. xQI[9yW/.'^;ޘ-NK tkx}0ӮPr 릀η( ^p%9Dq*d/@U:lKq x{F'< o_dxbx^zX"L/+%q%'Bwg)G 6v~Kx5an{{ t&Z~g` ;xr\{x^Wew87g~y>xn^/Cxxr"8άm9:g(XrqÒ";%|mxMwydw윎:ŊOxO6/E/xS\)9^10S;;|,=ںf=q_-p#`s_slk?<)炷ـ'ab|[cK_7c P/F6|i5db vpsݬ'xA L'GhYgkxV+cT/6 yPfi ).e?1XWmL'mj`ic^ `ǧm L:Φ͊[xn~bsc ܦ8?UJ.-x9\'lE'}B Y\,x*pp^EX ux0Jlj$Spgd xG ,oօZF&n5xK_Llv7MJf66uۀ.GwVֲ,T3V?IV іw\~uΙ xA+-,2C2OEy +O0/@v !~7mgH7LjI x>#pi?\7,:;6d 1=J CsD\e#O[]m> Xc&.W@&x_:3x~S 6 E*n7m$} l8{݁-aa;WQ3j6 ^p T KqUwt7V l%-w;[Y(=qS^7QVPoHYlCsn/$G"P$-+ T l7z .xQlz| E`nmRX"Rf3X{hg4L!x, {$ x3p{̪ x|k%`ہs(pCCt^gDGeB|dTXFNSF QwSGn0 w+I4- sU-AMt3+q1e+ KеH*2πd,◢uQJjDFD2k6K,w($HCf6H/)Ҁi XioU)pݥ(e%FuG&g,zxB㑲eLQ,Of^&wWWCK4gfMf3mBe,ٖWTv&k2${f_gf|(zieJufzJgf/+[u-4!YB"^2^ pxSA/B?V %ZBo;/D;XJ"_2$f4x &H[C'Z=@p cܖX?gMNM\6< &_Lz.%NNTfJju-D` "D (lv C{:"kRdЁJjf՚`S`BQO1#B@<'_oΰbƣ35iIX, VE_. m ֈR0o.)H>P"[HkY&w&ⳕyE`!i 8;V-`&F?v3lRLB YoKqD;g#f1^g4( 0`F[9b JBkf,VUEl{`4NGRvG A?."|RBFvuE+02 ^,CoŋWXdS@B 1cpvC;E,ުV~g]Uf3?RsBB 8!W I_ [BdXJ!pNF@p Bu)8.PxhP`O9y 0^;ΰ4$XbSA$-AJX%~H} W–JcRkXh4g(0p һpNEGRf k&/@Ff@ms ;΢2nrRA0BAJP2eTRA f'tRy%^r #K0gg(X"+LhOK1f"JdgE۷TYtqLo'IgN=ҁzpWf|<؝d~*HF00<(&k̄-dǑkError # press any key. hgmh?҄>A%`E3 ]0p׈dPsg dp.GxB*{.nO&0Ng$q"P Pge`(T]53sEc8kv6Y4Lv `E p >gۇHB=;!Y6:.s?ZOa.!HB-B 6x Ft\€8QgF>T:52V_a2g&cf@@@_?&QuyTA8-\' ,GRA`20rƺR90&  h?,J)?bt<):&&fwSff$ /gJx6a&&`,$6,F&`tI*P&cy.-4;SFg ,ǏJ~eY.`fGp1pDp *?? hPlease redo fr! start.Recommencer au dbut S.V.P. /BD]$NSFDtg KVް$jT%:ǮڀgͩYb̊`BCgj1E.fTFzU fDTeg mEf8e/KAZ+%+(-f i% gD0e[9c *SB,H J*Fz@`8]Ė`R#&`B wJAfJ7D"|%Dvfr, gpNFO@,_ڱV1DgJf~0+Hg.S@bt gAh`q"Ax-YTX#,q!5`+ X`4Wbg ;BWw3yþW .Q#$0- QS@l t(ut;HLiXX}(ZC(xC N!"#$%&'( 육 *+,-./0123@ ^^[J@ʕe@u?Y3NMXYW/r;ؐZn:* u?"y2-bB@BA`z2ZG|GOtCç `45h $IBܢx= KfSg 7Bml랾BlRC`mRAYq(֖tmf{`OfJBŪ՟NC,_>$H&N&~Rޔ(R]g,"dz\,gn&qT0UQzYqȴ/0 >2k/~R@0SQJ k8V QIa=jH 9^f}032Xvz ?2 &o(:dքe _A8`*|r,.f3Dtc.& C UvJ eBd> EA|d_$&`&"C~2 C$) P#H #a0d! !¯͕g&E"G~dN SGg<.fg` R`7" 0g2S@H'4`δH$k$`eJ,Xx g:k&@`"@ (l0l (TH&LXSgog&J_g.+InghjsBU ,(ʾ R`fX`!sgb~A{"ANyg`=9@^kZA , Vsh-E!^ 2_gkBwu: ,+J"J`p"Ի fKV7?Fnj"lQv3(a;EdӖ:jTe x^dI}1c 4@~v[D0{UB#k`5CAև=fuƊHusfJg p,FBHpEzc&OKva_f JEf$p` η(мdRFXRCǀfvu]BC:EI~}|3JX2q I$ )ЩҸ)$I$!HJgB` ߰gՒ``iO&-˯ 2rg+ր1!mi"mn/dX2UA=  g$" tY??C.\ C4SBe,I8SR"Hd$F2 fQ- uc%<v@v܄g:O *f6Bo.ѭJ+K& yZ[6IQ s-kV,+--Jagk_%\JXfƏ3HNE !+^.jv,C O8egD > h+ :gAe`]"L`.Jx'Fg(B@~ gjpǞC0!esABBB0aeS@g jTA^`CxRA0H>1'@g0STR@Ac;G?^aoQ6x\8Yf d9wY@y&+b;C7_m5bz J^B -ܴqJyαTNbHabBAd>Bd:A23C3 / 0oO6$q6} 2ypEl:)7`PDIdpprx3U vL\n np հoǩdp `8Mp#lY׏_IJ,aț."C&ACVPbJcbD\e@-je:g8:MpmPHx@&-$H4p3 ;+@51; $n_ Y p4%W$؅\7f6IZ2gb1kьpqv6f^$^+s2Kl̀}/I͘"&G_yd7ي/z\tgpengjehebw\dVedP gJeH$@ g@e>&@e8e4JGf'߈UZg?p2p*Džp!ݿN- BX/2<;e^Rz0(a. R>$.pb,2HAFE@STE Reference Documentation, v1.00 for ST User CoverDisk Another STE extra from Adam Greenwood The following list is a complete reference for the STE, including all new registers and variables plus original ones which are of special interest on the STE. This list is designed to be used in conjunction with the 'Inside the STE' series of articles. ================= 1. DMA SOUND CHIP ================= 1.1 SOUND CHIP REGISTERS: ------------------------- $ff8900 (r/w) enable register: 00 - disable sound (default state) 01 - enable sound, play once 11 - enable sound, loop forever $ff8902 (r/w) frame base address high $ff8904 (r/w) frame base addeess middle $ff8906 (r/w) frame base address low $ff8908 (ro) frame address counter high $ff890a (ro) frame address counter middle $ff890c (ro) frame address counter low $ff890e (r/w) frame end address high $ff8910 (r/w) frame end address middle $ff8912 (r/w) frame end address low $ff8920 (r/w) sound mode control: bit 7 6 5 4 3 2 1 use m . . . . r r m - 0 = stereo mode, 1 = mono mode rr - 00 = 6.258 kHz frequency 01 = 12.517 kHz 10 = 25.033 kHz 11 = 50.066 kHz 1.2 INTERRUPT CONTROL: ---------------------- MFP Interrupt vectors for sound control: $134 Timer A vector $13c GPI(7) mono monitor detect vector MC68901 MFP configuration registers for sound: $fffa03 Active edge $fffa07 Interrupt enable A $fffa0f Interrupt in service A $fffa13 Interrupt mask A $fffa19 Timer A control $fffa1f Timer A data Timer A uses bit 5, GPI(7) bit 7 Shift mode register: $ff8260 Shift mode For interrupt at start of sample: Screen mode Active edge ----------- ----------- 2 (mono) Positive - or.b #$80 with edge 0,1 (colour) Negative - and.b #$7f with edge 1.3 VOLUME/TONE CONTROL: ------------------------ Microwire registers: $ff8922 microwire data register $ff8924 microwire mask register Volume/Tone addresses and parameters: Master Volume: 10 011 DDDDDD Left Volume: 10 101 xDDDDD Right Volume: 10 100 xDDDDD Treble: 10 010 xxDDDD Bass: 10 001 xxDDDD Mix: 10 000 xxxxDD Where x indicates don't care, and D is a data bit. Volume/Tone data values: Master Volume: 0 - 40 (0 = -80dB, 40 = 0dB) Left/Right Volume: 0 - 20 (0 = -80dB, 20 = 0dB) Treble/Bass: 0 - 12 (0 = -12dB, 6 = 0dB, 12 = +12dB) Mix: 0 - 3 (0 = -12dB, 1 = Mix PSG, 2 = don't mix PSG, 3 = reserved) ===================== 2. VIDEO SHIFTER CHIP ===================== 2.1 EXTENDED COLOUR PALETTE --------------------------- $ff8240 - $ff835e rgb colour registers colour word: bit 11 10 9 8 7 6 5 4 3 2 1 0 meaning R0 R3 R2 R1 G0 G3 G2 G1 B0 B3 B2 B1 Rx = Red , Gx = Green, Bx = Blue where x = bit no. Giving the following colour range: intensity level 0 1 2 3 4 5 6 7 8 9 a b c d e f 4-bit nibble 0 8 1 9 2 a 3 b 4 c 5 d 6 e 7 f 2.2 SCREEN ADDRESS REGISTERS ---------------------------- $ff8201 screen base address high (vbasehi) $ff8203 screen base address middle (vbasemd) $ff820d screen base address low (vbaselo) 2.3 HORIZONTAL SCROLLING ------------------------ $ff820f over-length line width (linewid) $ff8265 pixel scroll offset (hscroll) =============== 3. BLITTER CHIP =============== 3.1 BLITMODE TOS CALL --------------------- Xbios call 64 - Blitmode flag.w Status bit 0 - enable 1-14 - reserved 15 - 0 = clear 1 = get Blitmode 64 trap #14 (tidy #4) Returns d0.w: <:a"0:abC3(Y;[&Jg"d ~ =Ȑ{"pLn!G~Bkk[rfs\*,#I|jVHg&@4PJ@g<cQ%g}~z2WncBAe"mg O7"H-qCLp՟xCFF0ĺ,e|T(r2Lc`T#\2N yB>r`f0JEf,|?pٝќ}0<w2Xp`]g?H̠g2Ⱥ,L g p"kS2_W]oB16J?38)(7p̈́2d/b%A]& xCi $Hp{BpT&mmY&-O`%Z+K K}%xApCXr//r@`UpےP/g}~kk^h'` fdpX)hVNJ!@9J&̩gVt #I=s Щ2$I$ JgB` g1&gՒ``Wp L0k\&!V׿V/YftG&ր P@c&&+@i8"*&//$/&6kV I v_0k^rPpQhބ3*86tf1,Y( &-ϱ\kBAvW崉-u^CNgF.dz0SCH>ܺJk g0{<qP| g4;d,~B ^nk0Ɗu)PS@9B7s$^tpReuzup??.Hꬠ p `~5468:O`ֹge#f[ V~}`V _NEv024=f]5QB@4|RwerfƎ`δ*TG>f}j$-gzίUe ּdheP\ e{nĚ^lgFWRBA4K7;.``unrٖls[AFBV`"ve0D0[$3 "^`^2Xbeff[a셃H(ePB f1@v\澠?2x(L̘x5iNH1 =H:Cf2s$n Vf$/?j;L\yprjJU**Ե-X,Hp ~ .[DT3g }Ζ2 >Ȗd- 0=׈Y8U2nT" QD[^Ė>QA?O2uƈ۲re`?촰AX> \B2 A},b hd ,u9 *.Gl S{e8#H2ִF#xV jV+Ę a9xL{ g|)kc f;Bx#= g|Jj+^Af\aҼU+@AU r) ~p-HVJ$] ;oɂ0aE IE~ZH@~#&0~$@!DN QBU#e=e jWT@oi({_6 Q jHPa5jF 8Ш= Hq`1.NITXhNr(>R̾JfPrAI DBZB[UG,E1BEp J)sd6BD 1_zRBPCAdRDS,J1@fPdɌ`46þvzi f,5> ';EX ;W:Lց1"p B p'pHRpL֣pryhpWi&_BCJX9mBB\ e׹vS"SeX dP ^P=&kgobq_;_9O=3;AR2&UeK^" d\n&I:Ƒǖ"9-7fS>$K@C+|,N>uCnfGD5E @$Hk@2J*~C\ 3| JZ6%MAdX8eZEXB;D`~!TDTEyH̨"402B><(gOGc4Dv 2-kHFm,0140,oHѫBpm#pr u5f~" B6j:cF0wM$^Bg LULQp t+d^}@y,eGXb>0 Қj2JhX%C`Ag +Fnd68:X B|*v`H.~*.NR@fRC;C|$Hg6k4GD Tf*i9VJEg4$"-@j(%.upt(܍k&/ك(ff;8_+ g/bۘ,m2ݏne6Ɓ0JPPe TRAp~q/~pCx&IBݱ쩁f|$I[?qH)0<W/6 63{ƸBABC8P`\ŗ[SCt]>HB/ۙ HA'&sB"bZ %RӪ 5|lQD.nm>ɒ#4` &K5߲"%n.3 C"{2x4*667ʑfըɠJ098. c JC}6 S?xX`T@<(IE( ?H>}<:x827ExWJA|2JBjMN@GBDbJ/I~8?>< c"0(7@ƕtF*Hн0Yǁ SA$^?$9:+" @䯁 I8SDk"C%pB\PrR`QoʖTckH f~ 2"_ _A&_B`BC N^ dReRCܯ!fKSJCCBA,H$+g g*08 ]JB:V1h:_H@?V/ 0pOqQv:=/OZQ"vxyRX"_e3Bp q rp:\q<8~0zCRFvfA~ke"+'"m uu& &JSfQgFjg8AU\Bvyx "̠jg (edGH;?Y"H p!jGO55*RuBAXE.gnRA`JAgA _q`$[4gV]"Jge+*fxge E7`"e/ȋ Э @geHC## p؛m}h-*.*~ q;@/"0-~H0ba/|AKQ?$0400@go^g0r|0S@( QB,;#kp0r~WXSNBa8~c7LuB@~CJBgp/BGNCE^IfDfZG\[D&WrtM+1Q4<?BQ;}vkVf >0H&L_pO PJ96$"Se& dAr~SeSd_X p{#35T` PҀV]- xF82LF6B$ s 5%`<r:*Y*.W J#ʆAe $P v!PRIV@x (&,(0 2*n2iRd@ԭd D X8 (pT >Jt  = un l8*""@2F  &. + 8 ^b* (($*BxAV*E 92F@`y(C:"*Hd$ /4&1Je#!j^(%&s3. 6Z'('޷ NAa0NRNAaNNAa:NNAaNNAaNNAaN6NAaNNAaNNAaN.NAaTNzNAaOOAaO OAa 8OQ ^O (P"OE4$OlC" &FO~օM'POׅ(0Oׅ )rOw*`Oض+Om,O ,-PlS*P.Bu0ׅM/0uIy/~u{/u}0ݡ0u1^uvNuRuv2Vuv4utue5uݦ6um7zuF7uu*u̸8ZuDu89v ^98vО:HV:|46v>h;v]#?nvz?v @vvn"ADvtBvYQv2C~vn[Dv6EvFF^wcQhHwlIhwݦEIw8K~w4qL:wo*wWLj@ׅM MN>nNbNNO6`jOuQ ]QRbnR6MSpܯSxTUþ3T;q\Yly&RÇdb5l"#$!Wor/TV 8JxOns+M v1.2b 1991Ϳr8So+$Pz righ3mouљtinue[^eft but@o qu7nd]Du'ѐKbAM!HU IPX*jffu=͗VLQD#H>֬PAXDca+5p$* GIJvcbe@zFI3ClcݧuEҟf1e"+fdVaݘV%- |hya$U +OD֣`)-IC̨HAMIыNcJ"CH2`%/d 1FkFf 8NPG3Y2MPGɌ9LYD|hOFpdA7CH%#AULmzk7HV`AI2,G]I"QU,SCLANGUAG -KޘUSYEMlNpUP$* ClHOLTRU%FN ֙ 6ºf;QIFd!٭ʧs(BˊPՄSiHfam(SU2*TUe@ WHp.WU&)lR V̦͓uT ') GOm(ɕ"iS/+3+2OXW#ACC] yVxQX,I 6:Sl aKKBXV)NaaUEUq#F@A)+Nc U sXKd^a'R0.(Kg0MK7TbEVU&K`1T0ESE.نEL#ˆCqpPOFG2 $G(#N)Ĺ kb#^ WXe# #"#&,֬#pB&,֬#pF#pJ#,pNAH?/N8\&9pJ&CD֬$|p6$ g$jԃl$<m/<\?< NA\?` 9'xx]W@Wx>/xq>H+[!K9a5*@2w%\Poh rE(\'PhG,G7ƒ?0((6 "ԗ&8 XU(?#_nu#B*HTN *UlBPN$zVF%^`&.'Ju!$*.CR{0 uaJ 3'$b2* 7(* cf*69M1d/5 _wj`/]B#UMP`xrN9`# d!|B*;p!xg 1V!s#t~OKU`YJ )7upgHnp-Q./4߆%C,fp)`pNE ?NL~NsppeBC]Urg)B.z(JEgw<5^ (Rsp Rp̤NALdX\?YXNMB#8f*FбpkT$ ,lʭ3ػ3f.YBg?@7NN\?nDB 2:%786?LC }WkeHADEz'KlHF0N*䗝mՌ:CMdx3Ś$Yþ2h760VAZFtFj Gø-f <,88WOH/g5w9SƝfj0f2XE(`}(0E$2 H#28c&B8):o]fz<2lBCBB 8B>t(ȮfD{Be̸G<>DRBE޾Fcp[K\0{eR\/c~{gur)7MSG(_+nGL?ۿ#x>,S4]Qv 6ւ>0f?b0HK8@:\&C@Bn8XBCc:` dHu/L :LDEp0 t0M 4.Xi̓q2 P# 3qX,$M$&Jvl•:I̡9L63H>H6)JH>ݫ3[4fIm6DRC C ZofB2uJJl̰00W#V˙,^ȬKr` ڶ~fX hh^2*F5"Qs1kԖUݱ$Ì9Xp'L:8 ,; *f mUF,HFVrVF]%3.,RGX=qHNՀ[D.h܃ 0l$9{ R@AouŵV 4"?Y$[J*–񵘞.[0<;,_*SF:|E6KGCRIk0X P`*N1S~TMuP֋ʅ.[V8.Bov2梞0xLؔSJQج/M.K6D ٟFRG7]}n8tp:> <wṈVF7MҊV,*Ly `HijLkHv; ٹkJ fs4c)Xxb^W{<2E4 :&I2Y9i6ڳeܺ$e0$NTJ痌sqʘH0n`V7b6HFDGƹGDX_p' yuF`E,xpy PXWAP5\$>0րRAt}m<\"l)SfB r4(Hm`Phgq!fxjD#0h U^/, Lf  flŬ),?aLr6 aUG! yZhϠ p1 A](A >-St`l?Șl=OGO!J)N녣@դpupaP=9|`ZDEb0zhf4@Q`6]86B@]D_&(HDs$V$ ƍ xRYffj$ %HC]UBKp}Ι#] {u0HJ\0ꢀ(>qn22KX 0tI&d8OȬg f1.-1\*npKb %$qXOܖh+!ldc b cV*9A,˳JB|9B@' ݚev`$Ê,00M7 :e?PHAq \ +˺* .iSG6\8lLVDxuFnTr".Qi!( ZXx4tO\ۚ.:abkG1M$YMY;U]\"L#O $I4 : vFJfF]^QMQNRHSEj c y"N:lBGsϸSJ#f]Jc fD7xUVTJQX(G`St4"n9&bfBѓDDZf gd LT UL2 SAI DОSBgA׊),D)7 v5hBI ( `#3$Ǹ~0X` p L& BB 02EHABA ӒJ:D@@TzXd *??P:620abTA|Bh-0x@2 BJlHJl2 R@RAHE*4 6x,xf" C1Bʣ1Cn ہ,&t)6G G6_tSXQAJgʏHz/9 ?#2gY #.VLW>< '"y#N-xA^Pd"QNut 8 $h&% $_`(0"p @Bh0<LHмp @!yt0<LHмp @Bh"0<LHмp @Bh0.HЮ @Jg,Rn?< /<]0.HЮ/NW` J@f0<LHмp @Hh 0<LHмp @Hh 0<LHмp @Hh/<]0.HЮм /NB0<LHмp @0( @2<LHҼp Ah2<LHҼp Ah HH-@0<LHмp @1n`?< /<]0.HЮ/NW` J@f0.HЮм /NXO-@0<LHмp @Jf(?. /<]/<fNC /<faXO`& .tc0<LHмp @!n`2?</<]0.HЮ/NW` J@fR0<LHмp @ h "l 0<LHмp @=h"Hn0.@H2<LHҼp A8HP/<]0.HЮ\/NB|g(?. /<]/<fNC /<faXO`xHnaXO2.AH4<LHԼp B$0 Pf,Hn?. /<]v/<fNC/<fa6XO`0<LHмp @Rh"`&?. /<]O/<fNC /<faXO`?</<]I0.HЮ/NW` J@fd0<LHмp @Hh/<]F0.HЮZ/NB |g&?. /<])/<fNC /<fajXO`20.HЮ/?. /<]/<fNC/<fa6XO0.HЮ @Jg0.S@HЮ @ )gRn`0.HЮ/NXO`Ry yo/<\NCTXO?<N8@TO`N^NuNV``aa/<H/<dNCTPO/</<dNCTPO/</<dNCTPOHn/9ta POHn/9ta "XO Hм @HP/<dNCT ?9/<dNCT\O/<dNdXOa|g`BgN8@TON^NuNV`:`/.arXO/.NV\XOJ@g n %f`?</<d/.NW` J@f .\//<HNV|PO`?</<d/.NW` J@f .P//<NV|PO`n?</<d/.NW` J@f .P//<NV|PO`8?</<d/.NW` J@fH .Z/a ZXO#tJtf(?. /<di/<fNC /<fNdXO`?</<d`/.NW` J@f .P/a XO29AHҼx A 09@Hмx @Jf,?. /<d>/<fNC /<fNdXO`R09@Hмx @/a XO|f,?. /<d/<fNC /<fNdXO`Ry ybo ?. /<c/<fNC Sy`?< /<c/.NW` J@f?. .м /N \O`?< /<c/.NW` J@f?. .м /N\O`b?< /<c/.NW` J@f?. .м /N\O`,?. /<c/<fNC /<fNdXO`N^NuNV``/<cdNCTXO/<l?<HnND* .H?NX*TO@ .Sg .Ff .Sf#l3`z/<cKNCTXO/<l?<ZHnND* Hna XO/<cIHnN=$PO#JfHn/<c(NCTPO?<N8@TO3`N^NuNV``/<c /<HNV|PO/<c/<NV|PO/<c/<NV|POBt/<c /<NV|PO/<c/<#NV|PO/<b/<.NV|PO/<b/<9NV|PO/<b/<DNV|PO/<b/<ONV|PO/<b/<ZNV|POByBy By By3`N^NuNV``NB/<bNCTXO?</<bNCT\O/<l?<ZHnND* HnNV\XOJ@olHna "XO/<bHnN=$PO-@JfDHn/<beNCTPO/<bHNCTXO/<l?< HnND* ?<N8@TO`/<b-NCTXO?<N8@TOBn n0( |fBg?<+/<b(HnNC n0( |fHnNV\XOS@HA +ffHnNV\XO|lTRnHnNV\XOS@HA /.?<_HnNV\XOHA/ND* HnaXO`p?.Hna\\O`4/.N=XO`N^NuNV`@`B-n/.aXOJ@gS`Hn/.a|PO/<b&/.NCPO`N^NuNV``z-n/.aXOJ@gS`Hn/.a0POJn o&Bn0.n l/<b$/.NCPORn`-n .br/.a:XOJ@fHn/.aPO/.aXO|l./.aXOHAH?/<b!/.NC `/<b/.NCPOR`/<b/.NCPOJn o&Bn0.n l/<b/.NCPORn`-n .b:/.azXOJ@f/<b/.NCPO`/<b/.NCPOR`/<b/.NCPO`N^NuNV``NB/<aNCTXO/<aNCTXO/<aNCTXO/<aNCTXO/<alNCTXO/<aDNCTXO/<a&NCTXO/<aNCTXO/<`NCTXO/<`NCTXO/<`NCTXO?</<`NCT\O/<l?<HnND* .H?NX*TO@.H`N,~`N+`BgNTO`?<NTO`?<NTO`?<NTO`N5H`N%`N.`N2`N!`0<`/<`zNdXO``|Am|Znސ|AH {N.>NXblv0<`N^NuNV``zSn -n/.aXO|g/.aXO|fS`Bn0.n l0S/.aXO|g/.aXO|fS`Rn` .`N^NuNV``vSn -n/.aXO|g/.aXO|fR`Bn0.n l,R/.a^XO|g/.aPXO|fR`Rn` .`N^NuNV``"/</.N[PO=@0.`N^NuNV``b/.aXO|g/.aXO|f0<`FL @ &N ,adۡ 1f66(>h<&|(t-t fwN|@ù)  ;8[k#xjlxlyƝH<6F-$}7}jY*MpzK{8W {k`n;$$BoQht/R} m߸7Qx<fWl6Al ޑ~@8Fv[oXVh{lV(B@@xf`Ah[@3xw;(EվbRJFsq|/|-)B*R?pSH$ $HPw;n--.ex_xQV} $V} `}?:U} Ąn}tߘ//#̜f xI *& ( -x*B@\zP:B:LPBt*V &U(PBԪPXPxA]ZX,# XTe#Y,MULX)ENCRE^`Jwlll/TM*]yfFglOvٷp8XX36 o̶B{g@nšZ"#F(bs^~`~B?x|߭1l np+1>W$ɹ``:Le@!6:|`0|/`ٺ{*2*`i4fvn͚>fsCQg؀0``.Zt|ϭ1kÆ6n֟?C~r ѐc o fc8|_𸪬f0gݳyc~xz Y:{n~wd&y?L ?W~9a|` ca9Ɔ `s '`OO _Ξc<~Ɵ|О!c>֟@l'{ɽ? )fc19   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~F&<۪z+ &o0 +e5 ;w_`8pf9e03g|֣sZۅ+p Je|>h~bVm;=NIq;px p؍d7:MIv͒hv#n j|6e VKpXhù~:We: x˜7̸VXJn9.AV=:r/Vp%Hx ˎll71x@`8 &>w!"<& "nvr=gn~v^:~YE~00~&0@&~lNzL~2f~ffk \D|Rzz2 ٤8ƂXgf[_UQ>Kލ Mpqd^|JxG ?€%B<^x1n;q0 'Ņ0e $' 0$ l" PKMpD >?xLHOj$e-.o [Vq<̙y>Vq|>??d^|%XN&X ;d&!!< @sdy  #'OvmNO&#g6 N u  8`00.m*8~ߧLvM~M!a}' a' EqXhq uluiuukG|qXz2^]SpBuff ~WWmouse.spr>[p/P}@{^~#6#6 U^#,Hbl^p\gџGf$Zjѭ @d,SFB\/gNP _pL~W~[6(A6W,THBxWvNBGREScV8BQ{MW7]G bh1(fA10ltch<dBm` -Ќ3#`lDFii5x U@"T*̕D: AY fi3F/d2RG>mq9:· ^?!l"N>ZL:BZDB_>C˷BFCBBܟPACƫЖrB Bn]'%b$eܼMb֔wjev XQsrBBڙG@NHAAg<"{> ҫ6zMsJ"E0HCAJQG.sSGH>X$1m&J(z{G{@WCM( 0BM@0oD"U@:@T@g*E2#'I3^-3` dvnG*[6`OX6Qw>dB:fhZ5R3P|a`y02+@U4*R`'M `:ne#:*ʭQ˻VH`E2CE f xptv`8*տQ7JGk2<48It}`cb_wր8DSIHyHVZ2$IRM> 8_'ƾح!6"<Wv(`N^NuNV``~/.NV\XOJ@o6/.NV\XOS@HЮ @  n/.NV\XOS@HЮ @B`/.NV\XOJ@o n  n .R//.NV|PO``N^NuNV`|`/<ls/.NCPOJyf/<lZ/.NCPO yf/<lA/.NCPO yf/<l(/.NCPO yf/<l/.NCPO`N^NuNV`r` yf/<kNdXO`/<kNCTXO/<l?<2HnND* Hn/<kHnNB |fBn-yp-ypBn0.yl0<LHмp @/NV\XOno"0<LHмp @/NV\XOV@=@0<LHмp @ (d0<LHмp @-h0<LHмp @ (c0<LHмp @-hRn`@/.N4XOJ@gS`/.N4XOJ@gR`0.no/<kNdXO``NHnNA XO0.H//< .^/N[PO2.HЁ2.HЁ/N[PO=@Bn0.nl/</<H/<ka/9NC?.0.R@?/<kS/9NC HnNBXO//<k4/9NC /9aXO0.S@HЮ2.nRAHЁ-@Jnf20.HЮ2.H//.0.T@?/9NB`"0.HЮ//.Bg/9NBBn0.ylJnfj?.?./<k)HnPNC 0<LHмp @/HnP/9NC 0.nHЮ//.?.a `0<HЮ//.?.ax /<k'/9NCPORn`JRn`> yf/9N=XO`&/<k NCTXO/<l?<HnFND* `N^NuNVF``-n .b0<LHмp @ .\e20<LHмp @ .b/<k/9NCPO`d0<LHмp @ .\c20<LHмp @ .b/<k/9NCPO`/<k/9NCPO .^-@`4`N^NuNV`` yf/<jNdXO`/<jNCTXO/<l?<2HnND* Hn/<jHnNB |fBn-yp-ypBn0.yl0<LHмp @/NV\XOno"0<LHмp @/NV\XOV@=@0<LHмp @ (d0<LHмp @-h0<LHмp @ (c0<LHмp @-hRn`@0.no/<jxNdXO`FNHnNA XO0.H/ .2.HЁ2.HЁ/N[PO=@Bn0.nl/</<H/<jW/9NC?.0.R@?/<jI/9NC HnNBXO//<j*/9NC /9azXO0.S@HЮ2.nRAHЁ-@Jnf20.HЮ2.H//.0.T@?/9N`"0.HЮ//.Bg/9NBn0.ylJnfj?.?./<jHnPNC 0<LHмp @/HnP/9NC 0.HЮ2.H//.?.a `0.HЮ//.?.ax /<j/9NCPORn`NRn`F yf/9N=XO`&/<jNCTXO/<l?<HnFND* `N^NuNVF`\`v-n .b\/.N^XO|g/.N^XO|f/<i/9NCPO`0<LHмp @ .e40<LHмp @ .b/<i/9NCPO`0<LHмp @ .c20<LHмp @ .b/<i/9NCPO`x0<LHмp @0<LHмp"@ )R"(f20<LHмp @ .f/<i/9NCPO`/<i/9NCPOR``N^NuNV```NHnNA XO/</<H/<i/9NCHnNBXO//<i/9NC ?9 /<i/9NC /<i/9NCPOBn0.y l~0<Hм @0<LHмp @/0<Hм @0<LHмp @/0<Hм @?(/<i}/9NCRn`x yf/9N=XO`&/<i`NCTXO/<l?<HnND* `N^NuNV``NNHnNA XO/</<H/<i//9NCHnNBXO//<i"/9NC ?9/<i/9NC /<h/9NCPO/<h/9NCPOBn0.ylXHn0<LHмp @/(NPO0<LHмp @/Hn0<LHмp @?( 0<LHмp @?( 0<LHмp @?(/<h/9NC0<LHмp @?(/<hu/9NC Bn0<LHмp @0.h"lp0.@H2<LHҼp A$0@Hм @/0.@H2<LHҼp A8?/<hF/9NCRn`vRn` yf/9N=XO`&/<h)NCTXO/<l?<HnND* `N^NuNV`` yf/<gNdXO`NHnNA XO-yp-ypBn0.yln0<LHмp @ (d0<LHмp @-h0<LHмp @ (c0<LHмp @-hRn`/.N4XOJ@gS`Bn0.y l/</<H/<g/9NCHnNBXO//<g/9NC /9arXO0.@Hм @//<g/9NC /<g/9NCPO/<gc/9NCPOBnHn/.NPO-n .మdHn/.NPOBnBn0.ylV0<LHмp @ .X"(b,0<LHмp @ (e=|0<LHмp @ (c&0<LHмp @ (2.H=A0<LHмp @ .X"(d(0<LHмp @ .X2.H=ABn0<LHмp @0.h"l\0.@H2<LHҼp A$0nf.0.@H2<LHҼp A80.n=@Rn`Rn`0.n=@?<HnHnNW` J@g$/<gT/9NCPOHnHnNV|PO?.?.Hn/<g.PBCSB2DSA&z06ڲfd}#or! RC4:zl`/o88 -SoNml6l>zo::3 *YH3ź<><3lC3ǔ'*xNuwWMGB 06,g8.SL>1|SG:z:6j 2e<(6< z&J$KBD0ůg RDff __2\سZeC8y/0 65z>B@ ƻLD&I(J8 DPgnvfoxXjv%%X`6KE"~I.BB| ?<"M/x;lgg m &LBşy6REҗRAe[>f SE4SFX~w`&r4nHs5 \5h04upKZo0NCVuXJA`Ac.[F->@u2ш),QO|(ЀhCc$ljd eGYe zdz6 gFuF5Q3 誋xmNNTgd߹$"Q#ؓ]4j :eb(;r,D0 (JmXYw@3R6l@<  Ap BA}\-0zLw W p/BP[8<}s8žDOR34E(;l$~0zO@LO&IS@;.*Hu5Jo K6 %#bǗg f0AzFeyfM&JL$³4:J(CSFxGg4Rs<#pVf38DP8IcX?cHh3Q`2jr Nf$V3&-P΢An*bV[2`r.B*_>19M^XGEV R truJafoh,% 0246x?sCxyz{oH"hijkt~#QPYQY`gTɻ22221,:ESME0:&oT8`iBk.V@Lk #HQTaZǥq٨L$n&&&&kJo=9A kw1j$\J >vI)i K"J'g8vt?}A*、Dj&k|Śe0HCHBHAH@: jk$6 4 2 0 t3333Qg.BC6A&:Hm[ UQaQ̨̗~F CvBB<~Ҳg2TSGgR@Fedl$m J4<ꃺ p#<$HxH" 3L5F ":>3GV*4jQ ɠ*"XQ$$f4 7h$C044w:~E.SDa"*]2E8Ug`<"U 6uDU5SLA:<Q68uF"wJArU+JBjtVd?JMU:JVe<-#URˆؒDCADDB0V0g:@HKCȽDLX~KI<,K7,m>H/J5b20SA"d,#/ ebKBVٸԔ Ӵ???/  P#"zvydZEkgy]bcfЋ`Hܝ0sHAHBJ@l@ʹ9ڀlʹg zto2:n2"_420?~HMf^,]L~Ns8A 4Xg9R@R3{`Q JA8OL@XX 0<넰]&$+&JZ/W!2-gAH(?ۤ:@UM2-XKy3 :|E^JEg+O @Wp\!RS@yF^h g@vǻ 6:Dp##BLBj)+bV_ \V bZ^T@!6v>E8:SYDBa f wg-FTB#j-ַЖUnؘ;B]Y&Aq;蔕BXeZ4Z–I438g8FB5 fLЁMP +ïY b TfSJt"NQSAOM>΢O,K̬{ Ip %+DkšUgr )W0HH2-(eQ,_Ck+VpCZ n,Lw» A$`7WA@,MހÔ* e,E?D2BC` Brvw pV3EeM1j(ʼx~Έaxt6xCv=Dc(0+fv@%ofq7a Bf ? 4lNC /9aXO/<f/9NCPO/<fe/9NCPOBn-n .మdHn/.NPOBnBn0.yl`0<LHмp @ (e>0<LHмp @ .\"(b0<LHмp @0.h=@Rn`0.n=@?.?.Hn/<fM/9NC .^-@`6 yf/9N=XO`&/<f0NCTXO/<l?<HnND* `N^NuNV`` yf/<eNdXO`nNHnNA XO/</<H/<e/9NCHnNBXO//<e/9NC /9aXO?9/<e/9NC /<ep/9NCPO/<eJ/9NCPOBn0.ylpHn0<LHмp @/(NPOHn0<LHмp @/(NPOHn0<LHмp @/(NPOHn0<LHмp @/(NPOHnHnNW*POJ@f/<eAHnNV|POHnHnNW*POJ@f/<e8HnNV|PO0<LHмp @/HnHnHnHn/<e)/9NC0<LHмp @0<LHмp"@ (f/<e#/9NCPO`/<e!/9NCPORn` yf/9N=XO`&/<eNCTXO/<l?<HnND* `N^NuNV`nNVHBC&|l|l ?+ N;TOJ@gk RC`/9pN/9\?9\N Bga TOLN^NuNVHBC|l:0<Hмl @8( 0|g0<Hмl @HPN=XORC`?.NTOLN^NuNVH6.0R@|6?NZTO&@g LN^Nu/<n?< N\O?/+/ NW 0@HЍ @B/NV\XOR@?aTO(@// NV|PO*XJf`NVH&n(ypNf pLN^Nu/ NV\XO6Jg*HA8 =f?/ / NW` J@f `Jg`p`NVH&n/ NV\6.aXO(@g:0R@HJf.KJf L8N^NuJg =gR`Jg ` R` `NVH6.?<?/<?<BN (Jo$?<?/@PO6|l 3\p`?N;TOJ@g |9C 9F BBBlBT `j|`޸|f|`|`NVHBCf6|l00<Hмl @0( |f0<Hмl @GRC`·g/ /. /.a LN^Nup`NV/.N=XOJ@gpN^Nu/./. /.a\`NVH&nf 0TO6g<H`<`NVH&n6. 8.Bg/ N? \OJ@g|0||f3\0N3\09\N^NuNV/ ?</NTO&@/<pV?<N\O0. |gD<H=@ ?. /.?<NNPO3\/ ?<N\OJy\W|&_N^Nu<`NVH&n(n Bg/ ap\OJ@ghACpV0<0QB@,|gD0<@,A :f H| |a@,|-B@LN^Nu?<NTOBA`0<`0<`NVBg/.aJ@g 9ppN^Nup`NVH&n0+ |lH(0+R@H*0+H,oW/<d/N[nPO&/<d/N[PO(/<:/N[PO//</N[POП//</</N[POT/N[nPOПІмCLxN^Nuڼ S`tNVH&n?<,NTOr/?<*NTO&g& LN^NuNVpN^NuNVH n&&|p(|p 7@ S7@ мP7@ 6 ?7@ 7@/ arXO(AC0<0QBl9|/ aP*. R/N[PO7@ 7@7| L8N^NuNV/ &n0+ |l???+?+?+0+@Hмnr @/0+ @HмnV @//<n/<nEg k@ 0<`JFg < f< `B@`vNVH&n(kBDBE6+ ?<Hn?+ NUPO:JEnJDg 0L8N^Nu0`0|gRDkm0`0|gRD LR f? @ 2Aw@ovH@H_tJ%E陰AgbMb`S@@{0 UU3 >Eg^Rl<SGiMȌ=@ f 6>3مl`64f\YAiB9JI5I4A1e`Yg(ϰf3ƄGDUH0M.g*k  ^,V ̐8"BV B[BBRFFB:ôN64ʿ"HN&c]fdpƶ:59;::j4|!?K 4(K)FV]#,GREE◎Ba3Ĵs4G>k ynG*H>3A0#T0ġ5 .EF$Iޢ&J2#AB冁  Baـpź% :ESMM8E7<[Ҷ>=I4+8 J"K1: H0'D`0 2QLFe/:`GSDjxSBg Qv %UHd)ф SnmBDž͝J eP[ψEe RI:r0HIV>2(A@@ o//mkWD|Τ|<ta p\fλx e:ߒuqk 8Musics?0 M / haw GGp1S$~Z8{fR?-wejR_YTPKG/?<~52/-7(&$"#Cd*z ,E-͜f{y##*' ܭH~HC"ёL~Ns0n -s>: {pJxgS-,k`9F64M5 y>gB<:tf &3`,fP2IRAtu_;[*|$7zJVVķg MbvvK6.P:H3kXg4+,J `@`z0 D|eBDL4"4J _0 `(>RBX֖0H%b<-ptS?g( f"z00@pWHf;U>]Y"4!aS1B4`wY2$Mfeg vXV=I,AkcVBP3j ?4G^H JX~-vc8]:3^Zn ;KTr=pU'H.=xc =B|zr0TC=C~ E@,ubVAJA*`Hfp 3T[`2fl2\-+$@ܰk?5i&8M XAfcZ5/Ea=`f645= ҾV d0BU٦ jWlbMKu̸E||g>eKQԟ zN~0"f0sgZ2zY+Y9s`hHFJICT|/-4^0 3cі%0P@;w`$0/X2>j)`1(crM`EP m6L1rka3<ga2Q(+Hr@D20P;X#B-rn cibR JX3=DBAMhW0m P=r=GR ;hNF\_BܶҬp58\pS}p C;.BQ$|8Tt BFw X t lQ<,lc,?1 1Fn!I,PAB(~*0:3!5FBq[)p :Z&&:ŐfT bU0. 0 BAD FLOAT TRAP  ox &NN\/8A~NuHk }fJL"qrXj, uKU(d&Bf L@X7eVՕ2 v3D&Cv(Ȟ4sOJg99G%浂/ rN Q#B&2a sag\Cdf  _S@H| #=#>2k.:x?/>s 6f (2ϐKB P J0t)A`-1e&jd?|"]"@ R Icg,rLpt+"eJ@BBv9b`BC4\?HWq/:LhO Aa"z8fE_.gmmIJp02j'`|er菀.EJAgg <@g$ISAfJDj"JJCfBE-0`>p>b.[Xz 8gYspm,J`62WC`ܶޱ`΍|mn` nl` xFAa jc -4*<xF*x &e<:yi[q\&p],=0_ .]e_Y ,s d . 0 3T^ fpL/z5fJ=1p`}Ae( #Q 4q./9w&"` >N/ "<4VxNs~yaPZ .k-Y "n ` ^bop`0`p@8,G)-^n-Xl o.xn`Ȝ#mxf) xr.Yf= lG|0x `xfw](usc\ 8BGJGl4WJDlD|`^0SlGnxhF`j& :p0"3&Gfw0Q,Y8wc( RFDm B@ȲX\-8H KIzXB<ơ g& gm%$.`QfCz &Egx&&BMe%EfDB@p EK-g"X7W3`!JfB+as.Jg ND@2`0ܐ=3?!a:T.;g fnhUx䗉0l,`:@m`*51 SWJnd"-||ol`<FD H3Ьbf 8R`0m  4^$ fx&` ؞=*zXEBG[RP F3Al`SG|/Bm(@(m/1YM~w άwВGn0rHn@`% @5 9 =x]WWPJ |+3b*nOBG5#|H¯/ @3#+` - Rq` H@GЏ'0m 9o_D@>0 Z3RgV|gRD`?< ?<?<N\ORD . f < H??<?<N\O0`(< `JDo6SDS?<?<?<N\O?< ?<?<N\O?<?<?<N\O`JDoSDS .fP?<?<?<N\O?< ?<?<N\O?<?<?<N\O?<?<?<N\O?< ?<?<N\O?<?<?<N\O`f|`?=C`6S`|Xm|xn|XH {NMLMzMzMzMzMzMzMzMzMzLMVLMzMzMzMzLMzMzLMzMzM.M6MzMzMrMzMTMzMzML`$0L8xN^Nu<<`~?< / JFgP /NTt JFg8I?.?..H?.H??/ /. /.NSl@`I`0H`|.H?/ JFg* /NT JFgI xf/ / NVPO`p0`|`<<|0=|=||`` LTABB.| `:*TI`` NV\H&n(nBGJf B@L8N^Nu n / NXO8JDoBn %fv:<=|=| BF=|=|=|/<oHnrNV|PO/<oHnaNV|POA *f BnBnRRpмo2 @B@|g |fBEB@|02< @:=E`SRpмo2 @B@|g B@ @ ||0f6 n / NXO8|m|xg|Xg=|B.i`l=|`Jnf n fĸ|-W|=@f|+f`=|`"=|`=|`Bn``:.BnB.r n*PJEg8?HnrNW\O-@\|mJFg~J\W|J@gJngtB`nJng n / NXO8|mSEJEfJngtJngBRG`f?HnrNW\O-@\JFgJ\W|J@g`0.^`0.^`KrR ^fR=| ]g -fBn ]grJg0.|gR|g|g`Bn` U @B@=@B@2.@n"UB@2.@l 0.Rn`=|` -W|=@`B`<<`dH <o2Є @B@|g n / NXO8|l`*`NVH&n(n *n.8.BE/ NV\XO< -fz ng no<.Fl8:FJDfJFgJJnf0JDg,JFg Jg .0fBSF/ H?N\O`.SD`JFgJf`.SD`0L8N^NuJgRF`NVH&.&n 8.(KH//N[POмo @H//N[PO&JbB/ NVXOLN^NuNVH&.&n (KJl - D&?./ /a LN^NuNV?./. 0.H/aN^NuNV/?.?./. ?<BN &Jl3\ &N^NuNV?<B?.aN^NuNV//. p0./?.?<?N &Jl3\0&N^NuNV//. /.?.?<?N &Jl3\ &N^NuNV//. p0./?.?<@N &Jl3\0&N^NuNV//. /.?.?<@N &Jl3\ &N^NuNVH&n(n f&yo.JgH?/ NW\OJgR`Jf pL8N^Nu*KJgH?/ NW\OJfR`JgB#o. `NVH&nBCJgRC`0LN^Nu"o oBf /NuNVH&n(n 6.*K0SCJ@gf L8N^NuNVH&n(KJg HHмo2 @B@|g  R` LN^NuNVH&n(KJgRJfSc` .LN^NuNVH&n(n fJf B@LN^NuRR`HHA`NVH&n(n 6.SCgfJf B@LN^NuRR`HHA`NVH&n. H?/ NW\O(@g LN^Nu0<` o0/f NuJfBNu"o oB"/ gS$`2Qg /NuNV0.Hмo2 @B@|g 0. @ N^Nu0.`NV0.Hмo2 @B@|g 0. @ N^Nu0.`NVH .м*p2l,9p2BC|l0@Hмo @JgRC`/rM[B'eb0?c FGX_gS`8pLMr{NӥR7hJg _ڃ5HUθ \8 :* nB,<gShI`@’g0Ri0,HiR Ь/mBXq/42`O<;J2(B8 pf&`$\n?`bvBgy\J8ci'BޖΊcPܠc %뒱>Oq:Xu~xB묽΄lCd^ |OJkƟF o$dƭDxl`b@(<2CyDDބ#rts&e` y2/j"Rf0a:;Z4gSEu0`s,|p`&+Tf/a/k,`(V ?5 |c5Rf`X/2 vw dR6zl*,A4G#` (؄*-BZcR wCUvY™eڎJfj,GXkdgؾgv9iҾFkTe~~Dӆ:^pHG6'R3d6ރSEϧ{BG~k<>څS>:.g< H`|,:&O3E?c+e-6 +;A~i`Dzof l"> nN`B.}X)z(&ѵtra6' a.YSv a&J/'qjDD܅Ck4g0TRB(YCD^c*<ޅABrt`䤚ܐ(&䣞j.XRQH_za gR.$|Ag,._DzG0z.}>^g2?k8'£,,ȩRid~ %"J $V\ރe^ kgv7Pk<d&B꫞kBSAbHG}އ[kWg~NuoD&.<`DgjD` ߏ<u p| 2T0@6D,6 :"'P :m  < 0 ( J X$ fBJ|, ((T *6 *88AaNu /"/a Nu$C4&HCH@ЃH@B@Ђ& NuJf <"Nu$Cbg"B& NupB& NufB& NubH@B2B@H@& Nub"$BBHBB6HC4"BAHAB0Ѓ& NutBdԂҁjbf" & NuNot enough memory Stack overflow Too many activities: aborting Bad parameter on line %d: <%s> ignoredBad cost on line %d: ignored%dcost Too many resources on line %d: ignoredBad resource on line %d: <%s> ignoredBad resource on line %d: ignored%d %[^)]needs Bad date on line %d: ignoredearliest %d,%d,%dduration Insufficient memory for activity name: aborting Too many dependencies: aborting Unknown activity on line %d: %sUnknown activity on line %d: %sBad Percentage Complete on line %d: 100%% assumedCorrupt Dependency on line %d: ignored%d %[^-] -> %[^-] Too many resources: aborting Insufficient memory for resource name: aborting Corrupt Resource on line %d: ignored%[^-]them. Aborting.... Press RETURN to continue a schedule. Please look at dependencies and correct Dependencies seem to contain a loop: cannot make %s Press RETURN to continue %cE%02d/%02d/%02d%d/%d/%dUnknown Input: Ignored %ceZ: Exit Option? K: Print Weekly Schedule as Chart J: Print Cost Schedule I: Print Resource Schedule H: Print Daily Schedule as Chart G: Print Schedule as Report F: Calculate Schedule: Weighted Times E: Calculate Schedule: Maximum Times D: Calculate Schedule: Nominal Times C: Calculate Schedule: Minimum Times B: List Dependencies MENU A: List Activities V %c %c%c Bad filename: aborting Press RETURN to continue File <%s> does not exist: aborting r%ceName of input file? CHAP Planning Program V3.2 (c) C Hobbs 1990 SundaySaturdayFridayThursdayWednesdayTuesdayMondayUNKNOWNUNKNOWNUNKNOWN Unable to open <%s>, aborting w Please enter filename: Should report be directed to (S)creen or (F)ile? Bad input on line %d: line ignored resource dependency activity Too many holidays declared: one on line %d ignoredWeekend declared as holiday on line %d, ignoredBad date on line %d, line ignoredholiday Bad date on line %d, line ignoredbase version planner title Number holidays: %d Base Date: %s %s Version: %s Planner: %s Project: %s Press RETURN to continue *** %s %s %s %s %s Start Start Finish Finish Early Late Early Late Description Number of activities: %d Printed: %s Schedule for project: %s Version %s You must calculate a schedule before you can print it. Press RETURN to continue %8.8s %6d %6d Beginning Needed Cost Week Cost Cumulative Printed: %s Direct Costs for project: %s Version %s You must calculate a schedule before printing its costs. Press RETURN to continue %8.8s %6d %6d ============= Beginning Needed Unit-Days Week Unit-Days Cumulative Resource: %s Printed: %s Resources for project: %s Version %s You must calculate before printing a resource schedule. Press RETURN to continue Needs: %d %s Costs: %d %7d %7d %7d %s %s Dur. Dur. Dur. Start Minimum Nominal Maximum Earliest Description Number of activities: %d Printed: %s Activities for project: %s Version %s Press RETURN to continue %7d %s -> %s Percentage Number of dependencies: %d Printed: %s Dependencies for project: %s Version %s *-=+ Press RETURN to continue %%%d.%ds: Printed: %s Page %d of %d Project: %s Version %s Page width is too small for titles: cannot print chart%dPage width in characters? You must calculate a schedule before you can print it. -= Press RETURN to continue %%%d.%ds: Printed: %s Page %d of %d Project: %s Version %s Page width is too small for titles: cannot print chart%dPage width in characters? You must calculate a schedule before you can print it.weighted activity times maximum activity times nominal activity times minimum activity times Schedule calculated using xArg0123456789ABCDEF Too many arguments Illegal file mode. Day Mon dd hh:mm:ss yyyy o ooonnnnnnnnnnnnnnn%.3s %.3s%3d %02d:%02d:%02d %04d DecNovOctSepAugJulJunMayAprMarFebJanSatFriThuWedTueMonSun@ 0123456789ABCDEF BBBBBBBBBB DDDDDD HHHHHH "0    L" $ 0&.              " 4 2`     & "   $     B  $   &                  $       " ".B V b   ,     ((J> N @ . "          "  X N : ,      *  T J 4  $             $        ""$& ,$(B"     & 2              $0 ( (*  "     *r dZ fN  t   8 2 :f( ZJVTd(*( d4b*64  ":>.Z":" nPx<$($&,~.> 2:.  PLAN: A user guide ================== INTRODUCTION ============ PLAN is a critical path analysis tool for planning projects small or large. In essence you tell the program: - what jobs need to be done - what resources (people, equipment, etc) are needed for each job - how much each job will cost in materials - which jobs must be completely or partially finished before another can begin - what is the very earliest each job can start if everything were available and in return the program calculates all of the dates and gives you: - a detailed day-by-day plan of all of the jobs, either as a chart or as a report - details of how late a particular job can be left without affecting the overall completion date of the project - details of the costs incurred each week during the project - details of how many of each resource you will need each week. RUNNING THE PROGRAM =================== Firstly you must prepare a document in ASCII format containing details of the individual jobs in your project. You can do this with any word-processor as long as you remember to save the document as ASCII (in PROTEXT, for example, use SAVEA instead of SAVE, in FIRSTWORD turn off the WORDPROCESSOR option). The format of this document is given below. When you have created the document describing your project, simply double-click on PLAN.PRG. It will ask you for the name of your document. Type this in (eg. a:\planning\plana) and press RETURN. Then simply follow the instructions. DOCUMENT FORMAT =============== In order to help you, a document called EXAMPLE is included on the disc. It is probably easiest to copy this and then modify it with details of your project. If you would rather type from scratch then note the following: 1. any line beginning with a percentage sign (%) is ignored by the program. Use these lines to record informal information about your project. 2. whenever a date is needed enter it normally with slashes between the days, months and years. For example: 4/5/91. 3. if things won't fit onto one line (this normally happens with 'activity' lines) then end the line with a plus (+) and continue on the next line. Here is an example: You can write activity wash walls (earliest 12/1/90) (needs 1 man) or activity wash walls + (earliest 12/1/90) + (needs 1 man) and they both mean the same. 4. spaces between words don't matter except in the names of things. Thus, for example dependency 100 wash walls -> paint walls and dependency 100 wash walls -> paint walls are treated exactly the same but don't insert more spaces between 'wash' and 'walls' as 'wash walls' is the name of a job. You can use this to line things up nicely to make your document more readable. 5. somewhere in the document you should enter the following keywords at the beginning of a line with the appropriate information after them: title example: title Redecorating the House (this, reasonably enough, is the title of the plan as it should appear on reports) planner example: planner Chris Hobbs (the name of the person putting the plan together) version example: version 1 (the version of the document you have reached (plans have a habit of changing when a job is completed early or late): 1, 2, 3 ... or a, b, c ... or whatever you wish) base example: base 11/6/91 (the basedate of the plan. No dates may be entered earlier than this) 6. for each resource, which may be a person or a piece of equipment, you must enter a line beginning resource example: resource managers You cannot use a resource before you have declared it in this way so it's probably best to put all of these sort of statements somewhere near the top of the document. 7. for each activity you must enter a line beginning activity followed by the name of the activity and then several optional fields. Here is an example with all of the optional fields completed: activity Wash Walls (earliest 12/1/92) (duration 10,12,15) + (cost 150) (needs 1 bucket) (needs 2 men) 'Wash Walls' is the name of the job to be done. For some reason it cannot start earlier than 12/1/92 (perhaps the Christmas decorations must be down first), it will probably take 12 days but it might be finished in 10 but it might take 15, it will cost 150 pounds (for the water?), and it will need 1 bucket and two men. If 'earliest' is missing then the program will schedule the job to start as soon as any earlier jobs (see below: dependencies) are complete. If 'duration' is missing then the program assumes that the job takes no time. If 'cost' is missing then the program assumes that there are no costs other than labour costs associated with the job. If 'needs' is missing then the program assumes that no resources are needed for the job. You can enter as many 'needs' against a job as you like. 8. if one job cannot begin until all or some of another job is finished then you should enter 'dependency' statements. Here's a couple of examples: dependency 100 wash walls -> paint walls dependency 60 paint walls -> remove floor covering These statements tell the program that 100% of the job 'wash walls' must be complete before the job 'paint walls' can begin. Similarly when 60% of the painting is complete we can start removing the floor covering. 9. if there are holidays which will occur during the project, during which you don't want the program to schedule work, then simply list them, one per line, with the keyword 'holiday' in front of them: holiday 25/12/90 holiday 26/12/90 10. the order in which items should be included in the document is relatively free except that nothing can be used unless it has previously been declared. As a rule of thumb, put the items in the following order and there will be no problem: title, planner, base, version holidays resources activities dependencies PROGRAM OPTIONS =============== When you run the programme you are offered a menu to choose from. The options are as follows: List Activities --------------- This simply lists the activities to the screen or disc file (for later printing or bringing into a word processor) List Dependencies ----------------- This simply lists the dependencies to the screen or disc file. Calculate Schedule ------------------ There are four options here: to calculate the schedule using the minimum times that you have given for each activity (a very optimistic schedule), the probable times, the maximum times (a very pessimistic schedule) or using weighted times (the most believeable schedule). Weighted times are calculated as (min time + 4 * prob time + max time) / 6 which is a common scheduling trick to get a realistic time for a job. Print Schedule -------------- There are three ways to print the schedule: as a report, as a daily bar-chart or as a weekly bar-chart. On the report the earliest and latest dates for the start and finish of each job are given unless the job MUST start on schedule when no latest date is given. On the bar-charts the earliest a job could be done is shewn by equal signs (=) and any possible slip by minus signs (-). Thus Wash Walls ========= shews a job which must be completed on the days shewn whereas Wash Walls =========------------ shews a job which can be completed early but could be slipped without affecting the overall project. If you print a bar-chart then the program will ask you how wide your page (or screen) is as the report will probably need to be broken into several parts to fit on the page. A suitable value if you are displaying on the screen is 75: don't try to use 80. If you print such a report then you will need to glue the parts together to get one long printout. Print Resources --------------- This gives a list of how many of each resource will be needed each week. Print Costs ----------- This gives a list of how much cost will be incurred each week. ERROR MESSAGES ============== There are really only two types of the error message displayed by the program. The first occurs if you use, for example, a resource which you have not included in a 'resource' statement earlier in the document. A common error is to declare resource programmer to make 'programmer' a resource and then, in the definition of an activity, write activity write code (needs 2 programmers) The program will, quite correctly, tell you that 'programmers' is not a valid resource. You must either write 'resource programmers' (with the final 's') or '(needs 2 programmer)'. The second sort of error message arises if you try to calculate a schedule which is impossible. Say you have three jobs, A, B and C, and you set up the dependencies dependency 100 A -> B dependency 100 B -> C dependency 100 C -> A This is a fairly blatant example and your mistakes are likely to be more subtle. This tells the program that B cannot begin until A is complete, that C cannot begin until B is complete and A cannot begin until C is complete. Naturally the program won't allow this and displays a message asking you to correct the dependencies. QUESTIONS AND ANSWERS ===================== Why doesn't the program use fancy GEM windows? ---------------------------------------------- Because although it was developed on the ST it has also been run on IBM PCs and micro-VAX computers with dumb terminals. The program is written in SOZOBON C (the best public domain disc in existence) and was easily ported to the other machines which it wouldn't have been had it used pull-down menus, file selection boxes, etc. Has the program been used in earnest? ------------------------------------- Yes certainly. At the lab where I work we use ARTEMIS for our planning, a very sophisticated tool. In order to rough out plans before digging into ARTEMIS we use PLAN. It has been used by numerous engineers in addition to myself, all of whom have requested additions and enhancements which I have ignored. The fact that the program is still used is a testament to its usefulness. PLAN doesn't allow me to specify a maximum number of resources. How do I stop it allocating too many in a particular week? ------------------------------------------------------ This is where we reach the borderline between PLAN and more sophisticated tools. I run the schedule, find the week giving the problem from the resource printout and then introduce an 'earliest' parameter to force some jobs to start later. How do I get a print of the reports? ------------------------------------ Select FILE when offered 'FILE or SCREEN' and then, when all of the reports have been filed, leave PLAN and double click on each file and select PRINT. This technique is also useful for including printouts from PLAN in wordprocessor documents: all reports are written to files in plain ASCII. % % Note that any line beginning with a percentage character is ignored % as are blank lines % % Somewhere in the file you should define the four keywords title, % planner, version (of the plan) and base (base date: nothing can happen % earlier than this). If you don't define them then UNKNOWN is assumed % for title, planner and version and 01/01/80 is assumed for the basedate title Example Plan for Tutorial Purposes planner Chris Hobbs version 1.0 base 11/6/90 holiday 25/12/90 holiday 26/12/90 % % It is not necessary to specify the types of resources but if you do % then the program will add their usages up for you. Resources may % be people or things ('scopes, ovens, etc) and in the future you will % be able to associate costs with them % Here are the resources % ====================== resource programmers resource analysts resource testers % Activities must be specified (otherwise you've got nothing to schedule). % With each activity you can associate all or any of the following % keywards (in brackets as shewn): % % earliest (earliest start date: default is basedate) % duration (shortest, probable and maximum durations (days): % default is zero) % cost (direct cost associated with the activity: % default is zero) % needs (quantity and type of resource needed: % default no resources) % If there is more to come then end the line with a plus sign % Here are the activities % ======================= activity start (earliest 12/01/91) + (duration 1,1,1) activity finish activity prepare feasibility study (duration 10,10,10) (needs 2 analysts) activity write specification (duration 20,25,40) + (needs 5 analysts) + (cost 100) activity design system (duration 20,25,40) + (needs 3 analysts) + (needs 1 programmers) + (cost 230) activity code system (duration 10,10,10) activity test system (duration 10,10,10) activity write test specification (duration 15,20,25) + (needs 2 testers) + (needs 1 programmers) + (needs 1 analysts) + (cost 150) % Again, there is no need to specify dependencies but they are % normally needed. The format is "dependency -> % where the given percentage of the first must be complete before the % last starts % Here are the dependencies % ========================= dependency 100 start -> prepare feasibility study dependency 100 prepare feasibility study -> write specification dependency 100 write specification -> design system dependency 80 design system -> code system dependency 100 code system -> test system dependency 100 write test specification -> test system dependency 100 prepare feasibility study -> write test specification dependency 100 test system -> finish `o` G# k # Ј<.@// ?<?<JNAO N??<LNAH YOBWN(BDE ` R @RD|m:<|`lN>|lN RPRE|RRW`JN8@SD|0|?@BC`(0C| RBG00N RPRE|RRWRComҼeXOLNuHEp0"KAPNN7Pp0"JAPN:5PXDTC|mBD y8`:2@1P|l1PTD|mL NuJ@`1!U@fNuH"y $A$<rHQRQ"y A*p rBDH6SCQRQ@QLNu yNAXONu/?<HNA\O @Nu//??<@NAO Nu?/?<? Extracting : -lh1->5P CARS.CPTb>/˷mm0dԥkۍYIrXM0g/Ikef vS'rBDˌ"W"R\þ48?VG+6c"6ΜK,>{K7_c]`O2ǽ]]_|kw%9n@ ])K,m*j0bUr0 1@jY7Eb%)}}YŶ%t乙.NNxiT"rQ%B&jwΠ|PXU/՟*iF7å֒od3 Kp~#<.x3 6SQQMv xv2s/o*WoYbEȞPt}K& t4<%_Ȯ% .O&Er| =/f̅]k[G5eM>rFxΏ.(2 ٘aGp۰^4`%9gAZN"Y6>L!3? 4`&} 'c򤗧TJ_u>鋼/wU$l3r8]}9C$?5a^^['jgi̫pר(E84?tLOD_i=bMd+d+j]VYSk+ O+q 陮S<~%ߥd<-t7P&Fnt :GXN1-z8_}[IG}Wp^If;ް\ ~ѐʓp K4l\f)jΫa_W*#HzQ#~(v=get'KA3w1)]$ϑȞ l.pY)gM h _5[ꪞ )NBBY*pDvÝ-(翇n_Sv'ֶ^p,!5,z?,?~8}xկwr:{]whOYR/@׼<}1{ ?6*g׮TCɐ.q*6K/bHOf/v)|gg/ 7?5cR|Ք4w6o\MYZ8WS-;Fq"JQYBJ%/P-wO., ;%favU ݬET1V+/Vi챙b7v﫚\; pʵ0DøS(%_&oS[>H?yy;O}a[8{z%IG*^n'f7.7 mݺ_5oI7g=盃^Nq)їɰ8~nanBmDF;WonЦ a0V>GXzEwU| .ؐs_*ۄ]:tq=/.g;b=ʺ^{m8L|5N/_]{?>6:69bStd=T#Z4 yqhY^?߻/a:ڟS8>G`>m>YOϚNi=<`T:.@^\` ?zM45_>lSأ@կ~,~q_o/X#S~Z7yWΕz3N[<Mx=oH?ǻ_k (?yhz'(r0SOR#.8o7?8 =Lu+Us(4ov ns|ߊ꿫gp讞^_=Yg^ANNS= ARݍ']ՁctI:gACе;1g<=r\ v4މ;gPjuUUqSfoe)}]|'h}׺zf~V;:aj mu7D;ۜڻ̑FwC{9;>㿌 4ӹ;eKiYAPXWMO?^?^3?uRl&:"*ݢI1h cߜx>Fݷ~Gwþ߽8n_;L;ww'?3r}OzLmBK+Ҧ cj_r_eM5IVyl;5kyF 3_3SQ9>{Yϗ~7{@ԣ[s.2TRggg&Bg)j&͹mWzꚸyXԌơWMۓHk`L[WrH2橮xj_3B.`[ *0- gFRurDY-f@Jj9kr.{pP˿0Gu_gd ;j<5әZ5ߴsSCU>$s/j< B5~.q%b|>5߅@èZ@6p򴋫|"}f<K߽x5u G4G/c~@QԄC̀}tǠ^y >%$?=߽&Wx=VSΫsAS?5ӄ^ٛvnFqw=ogی@?|_Q9^rvn|n;?g@~^|v/X{|?^ݿ}7rxZ̻Ǟx_O؟&vD4[u^#m@3ƨߢ"ߋ=Xv2<<B/ 71|>bSKyYFZ{?wcMG<7Bv[o: >+w1m|k>¯W2{V|U!? ?1 KuZ??$db2mYk8g`[-q1lO6(czGG^Oy,_Tf`U}yO柷haLx|y+JwxLЩ/=dIea']%"r ;/A:3ѸtYg]sϿgϯ?;# 澥|UƢkysrN`ěn^Rvg3\4NYR;"U'fJ¸9} -;v:i9+`~$آz*.'{.;*w5{W^ iqỐ}XN2@n -1Cјo_)?dix]a]-:I_Vn ~T;ȿ)R;g~k9g]Y5e=[? A*zLY 1kUœ/ZjBY\};3l'o ǬCC}{u$ri+[ §p} Oӡk>{Oh/&a~/ڋmboJτu6g> WjwR 8`d˩>|c1oo ڷǒ\{)[_dۃjO1Zߕ$Wѿ}< ;_iOt<?:g?HsgIQ5R'B?yG3C /2k_o_ ~~ŏiuw{wEc`,3I?W|>qrd4*S|;E[سe߆T~,s?1aÕaèbw1?~'e~< v_ _/UcHִM\,]_?kz#*ZTom8?78#Bύϛo/?=/u]oљc|#aFL~?PW::jaǘy?׾}Ê-b^y~_co%-N?.v_lw-65V'9fw39`?t(5#q!lr9v^eS?>kaޏp2cĩwy%^I`n̥ *4BI6xN<RM*J*K"!-lh1- ct COLLISIO.DATǹàf0fy[dݐ@ r#:B0閦Ji%t;G^vp.'XOϼPPp^a.νbl [tWh3| ݤgbԧ2TJbo EKɵdi̲ZDqUlem6(3gY&9%u- [~:7rO':>?LuOпj\ ?SC/FZ]>tC9 e#y_7@? 8d,w@=[rpHETFKPfP|Fޒ]+ gydxۏ.;qW]ےd鷹‡3s7{,/~w-{`Jaev kGqf |$?i뻩ԽWZ/V7Ez{+HLQs?wootnzO8rZ:޿=^Q3}?`pZfuu?W0nlңFI=y'v4ِ쟨W/@R7UU|] .P}?nw$DN˿oiټ?0?Swɂ=isPL){O+ ߽ёۮ;zm i]72~]w~5i_n^~{~.e}?Яλuz]}޻_'9?߯[ӟ'_)s:+l^'=W]{:_\75`sy=){oq|ߟ91=cb7s?;wA|?A߀k=úNP]|JZ}v8}zl>gIb~!8X~w3VpSNWw@!d`|gO'ua{gB(76ⷠD]˿=.}ƾ_6߃.ɔ:Kiѐ;|6_>ۧM}T?:3}e 96/k=8 'j˼ǽuuN箩sǟ?;=g7A[7o9[pؓ}=OnоouIS/"-lh1-.[iT EDITMENU.CPTbcLˮof8 Zָ$] @*1)Bg( ,^h_[ck s)i'i?iWvz75ྌX0^>@@~Q;e> ʬ%Ea.yK/1aU`[߀ !A& Vy tw0#rhII;I'piyH.RB#}7IZAjRI>H< _&mCi%́"AetG=mJ;0QI;>JEfoP+-AuR'sPZe >E ;B kjOkEjvMϻ'/ؚXP}5$XasX_;|}rvɘ?vt?EL/[S=<3^EKvDsWJ[mkX.-w/[azV! tϽz4:J)b=i@9pw5!.j7T؂<) %K΅LX_Eѽ39|K:Ko`h x B/t /fDlilkZ2aC>sͼ=!AqD6wz\>xZuH{)5h.p bo/nIv7-9>&툻:|ێVv ܣl\ uD{-UZkgazo}^f%qj-9ZƊx9)vܚZ6x{894IyeES] 9s y/in?s9[B_g О^~2n]Sl.F> զ˗~z[l=@e\=R yy+W7u'\Y9Bv;>=z<ʮl0xIY9E~}β9m7xg"6r0N~#_َM_rO`8/*1=ƧRe+#oŷVAnظ"t[0c L;t`}NO^XTO3.~.ߩ`(zwzg7x^/q$7 XNWp?R7^_/߰oΒ \ת