home *** CD-ROM | disk | FTP | other *** search
/ The CDPD Public Domain Collection for CDTV 3 / CDPDIII.bin / pd / programming / amos / lturbo / docs / extension_doc.asc < prev    next >
Encoding:
Text File  |  1980-08-29  |  23.4 KB  |  588 lines

  1. *************************************************************************
  2. *                                    *
  3. *            AMOS 1.3 TURBO extension library    v1.6        *
  4. *                                               *
  5. *                                    *
  6. *                                    *
  7. *    MANUEL ANDRE                            *
  8. *    Prins Boudewijnlaan 155/5                    *
  9. *    2610    WILRIJK                            *
  10. *                                    *
  11. *    BELGIUM                                *
  12. *                                    *
  13. *                                    *
  14. *    DIAL    03/449.54.18                        *
  15. *        32-3-449.54.18                        *
  16. *                                    *
  17. *************************************************************************
  18.  
  19. %%%  !!!! To all users : read this doc-file carefully...      !!!! %%%
  20. %%%  !!!! Some commands are very difficult to use, so be warned  !!!! %%%
  21. %%%  !!!! If you don't know what you are doing, many crashes     !!!! %%%
  22. %%%  !!!! will come to visit you...                 !!!! %%%
  23.  
  24. %%%  !!!! Commands to be extremely carefull with are :         !!!! %%%
  25. %%%  !!!!        Multi Blit                 !!!! %%%
  26. %%%  !!!!        Reserve Stars                 !!!! %%%
  27. %%%  !!!!        Display Stars                 !!!! %%%
  28. %%%  !!!!        F Stars                     !!!! %%%          
  29. %%%  !!!!        Stars Int On                 !!!! %%%
  30. %%%  !!!!        Blit Int On                 !!!! %%%
  31.  
  32. =========================================================================
  33.  
  34. ***  !!!!    Ok guys ! V1.6 has arrived...Without BUGS ???     !!!! ***
  35. ***  !!!!    I don't know...It just happens that I don't have      !!!! ***
  36. ***  !!!!    the time for TESTING my own extension !         !!!! ***
  37. ***  !!!! --->>>>  So write me and test this extension!  <<<<--- !!!! ***
  38.  
  39. =========================================================================
  40.  
  41. ***  !!!!     You can contact me at the following BBS numbers    !!!! ***
  42. ***  !!!!     Great Balls Of Fire : 016/640.912             !!!! ***
  43. ***  !!!!     leave a message to Manuel Andre         !!!! ***
  44. ***  !!!!     Oberon          : 02/731.34.89         !!!! ***
  45. ***  !!!!     leave a message to Manuel Andre         !!!! ***
  46. ***  !!!!                             !!!! ***
  47. ***  !!!!     --> You can call me at home : 03/449.54.18 <--     !!!! ***
  48. ***  !!!!         ask for Manuel      : 32-3-449.54.18     !!!! ***
  49. ***  !!!!                             !!!! ***
  50. ***  !!!! Leave a message ONLY if YOU are a REGISTERED AMOS user !!!! ***
  51. ***  !!!!  and I will answer your questions as soon as possible  !!!! ***
  52. ***  !!!!  I'm working in shifts...so have a little patience...  !!!! ***
  53. ***  !!!!                              !!!! ***
  54. ***  !!!!            Thank YOU !             !!!! ***
  55.  
  56. =========================================================================
  57.  
  58. ***  !!!!   New commands to be expected in the next release ???  !!!! ***
  59. ***  !!!!........................................................!!!! ***
  60. ***  !!!!  Ok, plans for the near future :                       !!!! ***
  61. ***  !!!!        GIVE ME SOME IDEA'S  ???             !!!! ***
  62. ***  !!!!        Plans for MED/OCTAMED support are dropped       !!!! ***
  63. ***  !!!!        because AMOS PRO supports MED !         !!!! ***
  64. ***  !!!!                             !!!! ***
  65. ***  !!!!  ANY SUGGESTIONS FOR OTHER COMMANDS ???                !!!! ***
  66.  
  67. ========================================================================= 
  68.  
  69. ^^^  ????           Special information             ???? ^^^
  70. ^^^  ????........................................................???? ^^^
  71. ^^^  ????                             ???? ^^^
  72. ^^^  ????  There are only some commands that are fully          ???? ^^^
  73. ^^^  ????  compatible with the AMOS Double Buffer process !      ???? ^^^
  74. ^^^  ????  Cfr.: F Plot.  Still all other commands can be used   ???? ^^^
  75. ^^^  ????  if you set Autoback to zero (0).             ???? ^^^
  76. ^^^  ????  Read the AMOS manual for better understanding of      ???? ^^^
  77. ^^^  ????  this technique. Also look in the DEMOS dir for some   ???? ^^^
  78. ^^^  ????  ready to run examples. (ASCII format)         ???? ^^^
  79. ^^^  ????                               ???? ^^^
  80. ^^^  ????  ====================================================  ???? ^^^
  81. ^^^  ????                             ???? ^^^
  82. ^^^  ????  It seems that many people have problems in using the     ???? ^^^
  83. ^^^  ????  new BLITTER commands when double buffering is enabled.???? ^^^
  84. ^^^  ????  So I've included a little demo that shows how to deal ???? ^^^
  85. ^^^  ????  with it.   --> DOUB_BUF_SCROLL.ASC <-- in the DEMOS   ???? ^^^
  86. ^^^  ????  directory.                         ???? ^^^
  87. ^^^  ????                             ???? ^^^
  88. ^^^  ????  ====================================================  ???? ^^^
  89. ^^^  ????                             ???? ^^^
  90. ^^^  ????  How do you get the best speed results ?         ???? ^^^
  91. ^^^  ????  When the program is NOT compiled, the interpreter     ???? ^^^
  92. ^^^  ????  has to search through all commands to find the adress ???? ^^^
  93. ^^^  ????  of the routine to be executed...so a lot of precious  ???? ^^^
  94. ^^^  ????  time is wasted !                     ???? ^^^
  95. ^^^  ????  So, for best speed you should COMPILE your programs     ???? ^^^
  96. ^^^  ????  with the WB or CLI option !    And your pants will be     ???? ^^^
  97. ^^^  ????  ripped off !!!                     ???? ^^^
  98.  
  99. =========================================================================
  100.  
  101.  
  102. ** Include this extension in the extension list as extension nr. 8.
  103. ** Change all your config files with the AMOS configuration program !
  104.    More information about this in the source file. --> new_extension.s
  105.  
  106.  
  107. MISCELLANEOUS INSTRUCTIONS  :
  108. -----------------------------
  109.  
  110. Multi Yes     : enables multitasking.
  111.  
  112. Multi No      : disables multitasking.  Gives about 10% speed increase...
  113.             watch out !!! if you disable the multitasking process, you
  114.             disable the keyboard. So allways enable multitasking if you
  115.             want some input from the keyboard !
  116.  
  117. Vbl Wait x    : wait until the raster beam has reached a given value.
  118.             value must be between 0-256 !
  119.             I've implemented this one because Wait Vbl doesn't work
  120.             if you disable interrupts...
  121.         It also gives a better screen synchronisation than the
  122.         original Wait Vbl command.
  123.         Ex.: 'Let's take a standard screen...
  124.              Screen Open 0,320,200,8,Lowres
  125.              'And lot's of scrollers...
  126.              _SCROLL_NR=0
  127.              For I=0 To 100 Step 10
  128.              Inc _SCROLL_NR
  129.              Blit Store Left 0,_SCROLL_NR,0,0 To 320,I,-1
  130.              Next I
  131.              'So the maximum Y value of the screen that will be
  132.              'SCROLLED is 100. The other screen lines will not
  133.              'be affected by the scroll. So it has no point waiting
  134.              'until the raster beam has reached the TOP of your
  135.              'screen before executing your scrollers !
  136.              Repeat
  137.             ' WAIT UNTIL LINE 101 OF YOUR SCREEN IS REACHED...
  138.             Vbl Wait 101
  139.             ' AND EXECUTE THE SCROLLS
  140.             Multi Blit 1 To 10
  141.              Until Mouse Click
  142.              'Ok, let's give some more information about this
  143.              'procedure...
  144.              'A screen display is made of lines and they
  145.              'are scanned from the top of the display (line 0)
  146.              'to the bottom (line 312 --> PAL, line 262 --> NTSC).
  147.              'Now comes the tricky part...It is possible to alter
  148.              'anything on the screen even if the raster beam is
  149.              'allready further than the area of the screen to be
  150.              'changed ! It will only be visible during the next
  151.              'scan of the screen. So you are able to use the SCAN
  152.              'LINES (more processing time) that are not used by
  153.              'the actual screen for displaying more BOBS,SCROLLERS,...             
  154.              'And this without any annoying flicker on your screen !             
  155.              'Sometimes it takes some experimentation to find the
  156.              'right value. But a smoother display is guaranteed !            
  157.  
  158.  
  159. MISCELLANEOUS FUNCTIONS  :
  160. --------------------------
  161.  
  162. X=Lsl.b(x,y)    : bytewise logical shift to the left.
  163.             ex.: ANSWER=Lsl.b(value,shift count)
  164.              A=Lsl.b(5,1)    gives A=10
  165.              A=Lsl.b(C,1)    gives A=10 with C=5
  166.  
  167. X=Lsl.w(x,y)    : wordwise logical shift to the left
  168.  
  169. X=Lsl.w(x,y)    : long logical shift to the left
  170.  
  171. The same commands exist for logical shifting to the right...
  172.  
  173. X=Lsr.b(x,y)
  174.  
  175. X=Lsr.w(x,y)
  176.  
  177. X=Lsr.l(x,y)
  178.  
  179. X=L Swap(x)     : does the same thing as the machine-language instruction...
  180.             ex.: A=$FFFF1111
  181.              B=L Swap(A)    gives B=$1111FFFF
  182.         
  183. X=Test.b(x,y)   : compares the lower 8 bits of a variable with a given value
  184.                results 0 if false -1 if true
  185.  
  186. X=Test.w(x,y)   : compares the lower word of a variable with a given value
  187.               results 0 if false -1 if true
  188.  
  189. X=Raw Key(n)    : does the same thing as the Key State function but works
  190.           even if multitasking is disabled !
  191.           Thanks SyNTAX/TsL for a new version that works on all
  192.           AMIGA versions !!!
  193.           
  194. X=Left Click    : I've implemented this function because it seems that
  195.           when multitasking is disabled the Mouse Key function
  196.           isn't working anymore...
  197.           Now you can check for the LEFT mouse-button !!!
  198.           Returns TRUE if left mouse is pressed...
  199.  
  200. Additinal Zone commands :
  201. -------------------------
  202.  
  203. These commands can be mixed with the normal Zone commands.
  204.  
  205. X=Hit Spr Zone(dx,dy,n) : checks if sprite number N enters a zone.
  206.                 dx and dy are optional.
  207.             Does the same thing as :
  208.             A=Hzone(X Sprite(n)+dx,Y Sprite(n)+dy)
  209.             But it is shorter and faster ! (20 to 50 %)
  210.  
  211. X=Hit Bob Zone(dx,dy,n) : checks if bob number N enters a zone.
  212.                 dx and dy are optional.
  213.             Does the same thing as :
  214.             A=Zone(X Bob(n)+dx,Y Bob(n)+dy)
  215.             But it is shorter and faster ! (20 to 50 %)
  216.  
  217. New Zone commands :
  218. -------------------
  219.  
  220. These commands are not compatible with the normal Zone commands !
  221.  
  222. Reserve Check x : reserves x check ZONES for my own ZONE (check) routines.
  223.  
  224. Check Erase     : releases the memory used by Reserve Check
  225.  
  226. Reset Check z   : does allmost the same thing as Reset Zone....except the
  227.           zone number must be given.
  228.  
  229. Set Check z,x1,y1 To x2,y2 : does the same thing as the Set Zone command.
  230.  
  231. X=Check(start To end,x,y) : 
  232.              Checks if the given coordinates x,y are within a zone.
  233.              The start and end parameters indicate which zones you
  234.              want to check.  Ideal if there are many zones and
  235.              you want to exclude some zones...
  236.  
  237. X=Hit Spr Check(start To end,dx,dy,n) : 
  238.                  Checks if sprite number N has entered a 
  239.                  zone, dx and dy are optional and give a dis-
  240.                  placement in opposite to the sprites hot
  241.                  spot.
  242.                  The start and end parameters indicate which zones you
  243.                       want to check. Ideal if there are many zones
  244.                   and you want to exclude some zones...
  245.  
  246. New graphics instructions :
  247. ---------------------------
  248.  
  249. R Move    dx,dy : moves relative to the graphics cursor
  250.         does the same thing as: Gr Locate Xgr+dx,Ygr+dy
  251.         but is shorter and faster...
  252.  
  253. R Draw  dx,dy : draw a line relative to the graphics cursor
  254.         does the same thing as: Draw Xgr,Ygr to Xgr+dx,Ygr+dy
  255.         but is shorter and faster...
  256.             
  257. R Box dx,dy   : draw a box relative to the graphics cursor.
  258.         does the same thing as: Box Xgr,Ygr to Xgr+dx,Ygr+dy
  259.         but is shorter and faster...
  260.  
  261. R Bar dx,dy   : draws a filled bar relative to the graphics cursor.
  262.         does the same thing as: Bar Xgr,Ygr to Xgr+dx,Ygr+dy.
  263.         but is shorter and faster...
  264.  
  265. Reserve Object Chip OBJECT,COUNT :
  266.      reserves COUNT*6 bytes CHIP memory for object OBJECT.
  267.      Ex.: you want to define object number 5 with 10 vectors ( 10 Draw
  268.           or Move definitions)
  269.           Reserve Object Chip 5,10 
  270.  
  271. Reserve Object Fast OBJECT,COUNT :
  272.      reserves COUNT*6 bytes FAST memory for object OBJECT.    
  273.      At this point you can define upto 32 objects.
  274.  
  275. Define Draw OBJECT,ELEMENT To X,Y :
  276.      Defines vector ELEMENT in object OBJECT as a Draw instruction
  277.      with X and Y as the coordinates.
  278.      In opposite to older versions, negative coordinates are now
  279.      allowed !
  280.  
  281. Define Move OBJECT,ELEMENT To X,Y :
  282.      Defines vector ELEMENT in object OBJECT as a Move instruction
  283.      with X and Y as the coordinates.
  284.      In opposite to older versions, negative coordinates are now
  285.      allowed !
  286.  
  287. Define Stop OBJECT,ELEMENT :
  288.     Defines vector ELEMENT in object OBJECT as a Stop instruction.
  289.     Now you can Reserve memory for as many VECTORS as you wish, and
  290.     you don't have to Define all VECTORS at the beginning of your
  291.     program!  Just put a Stop instruction as the LAST VECTOR...
  292.     You can add some more VECTORS, just by replacing the Stop
  293.     instruction by a Define Move, a Define Draw or a Define Attr !
  294.     !!! Make sure that the last ELEMENT of an OBJECT definition is !!!
  295.     !!! a Stop instruction. And nothing unpredictable will happen. !!!
  296.  
  297. Define Attr OBJECT,ELEMENT To COLOUR,DRAWMODE :
  298.     Defines vector ELEMENT in object OBJECT as an Attribute instruction.
  299.     Now you can change the Colour and the Drawing-mode in an Object
  300.     definition.
  301.  
  302. Object Draw OBJECT :
  303.      Draws object OBJECT as defined in the vector table.
  304.  
  305. R Object Draw OBJECT,X,Y :
  306.      Draws object OBJECT as defined in the vector table but relative
  307.      to the X and Y coordinates.
  308.  
  309. Object Mag Draw OBJECT,MUL :
  310.      Draws object OBJECT as defined in the vector table but the OBJECT
  311.      coordinates are first multiplied with factor MUL. 
  312.      If you give a negative MUL factor the OBJECT coordinates are
  313.      divided by factor MUL.
  314.  
  315. R Object Mag Draw OBJECT,X,Y,MUL :
  316.      Draws object OBJECT as defined in the vector table but relative
  317.      to the X and Y coordinates and the OBJECT coordinates are
  318.      multiplied with factor MUL.
  319.      If you give a negative MUL factor the OBJECT coordinates are
  320.      divided by factor MUL.
  321.  
  322. Object Erase OBJECT :
  323.      Erases object definition OBJECT and frees the allocated memory.
  324.      Allways discard all the Object definitions before quitting AMOS.
  325.      If not, the reserved memory will be lost... 
  326.  
  327. Object Save "NAME",START To END :
  328.      This instruction will save all DEFINED objects from
  329.      object START to STOP into object-file "NAME".
  330.      If "NAME" > 80 chars nothing will happen...
  331.      If an object is not defined, it will skip to the next
  332.      object until END is reached.
  333.      It also writes the header "OBJE" at the beginning of the file.
  334.      
  335. Object Load Chip "NAME",START 
  336.      This instruction loads the file "NAME" and checks if it is
  337.      an object file. (It checks for the header "OBJE" at the beginning
  338.      of the file.)
  339.      If it is an object file, it will define and load all object
  340.      definitions into object nr. START onwards.
  341.      How many objects are to be defined is taken out of the
  342.      object file.
  343.      Ex.:  Define Object chip(1,20)
  344.            Define Object Chip(2,10)
  345.            Define Object Chip(3,50)
  346.            Define object Chip(4,5)
  347.            Define Move .....
  348.            Define Draw .....
  349.         "    "
  350.         "    "
  351.            Object Save "DF1:OBJECT1_TO_4",1 To 4
  352.            Object Load "DF1:OBJECT1_TO_4",5
  353.            This will define and load object 5 to 8.
  354.           
  355.            Object Load "DF1:OBJECT1_TO_4",2 will not work.
  356.            First you must discard objects 2 to 5 !!!!!
  357.            Maybe I'll change this in the future...             
  358.      
  359. Line 3d X,Y,Z To X1,Y1,Z1 :
  360.      Will draw a line from (X,Y,Z) to (X1,Y1,Z1) in three-
  361.      dimensional space.  To do this I assume a fixed eye position.
  362.      Further I take the eye position as the origin.
  363.      To form a perspective view, we need to define a "vanishing point",
  364.      a theoritical point at which all diminishing parallel lines meet.
  365.      If you were standing on the white lines in the middle of a
  366.      straight road and you looked along th road towards the horizon,
  367.      the vanishing point would be where the white line and the two
  368.      road edges meet.  By taking this eye position, our perspective
  369.      calculations can be simplified to : X=X*D/Z and Y=Y*D/Z...
  370.      Where D is the distance between the eye position and the picture
  371.      plane (the screen). The value I use for D=128.
  372.      So the greater the value of 'Z' the further away the object
  373.      and therefore the smaller the resultant 'X' and 'Y' values.
  374.      This implies that objects appear smaller at a distance !
  375.  
  376.  
  377. Eye 3d X,Y :
  378.     This instruction changes the "point of view" in opposite to
  379.     the picture plane.
  380.     If not initialised when using the Line 3d instruction X will
  381.     have a value of 160 and Y a value of 100.
  382.  
  383. F Plot X,Y,COLOUR :
  384.     This instruction does the same thing as the normal AMOS Plot
  385.     instruction, except that it is 2 to 3 times faster than the
  386.     standard AMOS version and that you must give the COLOUR
  387.     parameter !
  388.     F Plot is now fully compatible with the AMOS double buffering
  389.     process !
  390.  
  391. R=F Point(X,Y) :
  392.     This function does the same thing as the normal AMOS Point
  393.     instruction, except that it is 2 to 3 times faster than the
  394.     standard AMOS version ! 
  395.  
  396. Blit Store Left screen,blitnr,x,y to x1,y1,shift :
  397.     Blit Store Left allows you to define up to 96 different scrolling
  398.     zones.  Each of these zones can be associated with a specific
  399.     scrolling operation which is determined by the variable SHIFT.
  400.     SCREEN defines the screen that you want to scroll.
  401.     BLITNR holds the number of the zone and can range from 1 to 96.
  402.     X,Y refer to the coordinates of the top left-hand corner of the
  403.     area to be scrolled and X1,Y1 to the point diagonally opposite.
  404.     The routine now automatically chops the X and X1 values so that
  405.     they allways ly on a 16 bit boundary !
  406.     Ex.: 198 will become 196 , 307 will become 304
  407.     SHIFT, if this value is positive the zone will be shifted to
  408.     the right.  Negative values indicate that the scrolling will
  409.     be to the left.
  410.     SHIFT values range form -15 to +15.
  411.  
  412. Multi Blit start To end :
  413.     The Multi Blit command scrolls the screen using the settings
  414.     you have specified with the Blit Store Left instruction.
  415.     START and END refer to the zones you wish to scroll.
  416. !!!    Allways be sure that the screens where you have defined 
  417.     scrolling zones are OPEN when you use this command, if not
  418.     a crash will be certain.                     !!!
  419.     If you have defined only 1 zone you should type :
  420.         Multi Blit 1 To 1
  421.     So with this command you can scroll up to 96 zones in one go !
  422.     Why is the Multi Blit command so much faster than the original
  423.     Scroll command from AMOS ? :
  424.         speed is gained on two points :
  425.         A) the BLIITER is fed directly with precalculated values.
  426.         B) I only use the A and D blitter channels, the Scroll
  427.            command uses the B,C and D channels.
  428.  
  429. Blit Int On start To end :
  430.     This command adds a new interrupt server to the VBLANK server
  431.     chain which will do the same thing as the Multi Blit command !
  432.     So the Multi Blit command is now executed every Vbl and is
  433.     running totally independent of your AMOS PROGRAM !
  434. !!!    Allways be sure that the screens where you have defined 
  435.     scrolling zones are OPEN when you use this command, if not
  436.     a crash will be certain.                     !!!
  437.  
  438.     Advantages : 
  439.              Time is saved for your AMOS PROGRAMS.
  440.              You don't have to wait for the Vbl to synchronize
  441.              the Scrolling with your screen display.
  442.  
  443.     Disadvantages :
  444.              None. Hmm...
  445.  
  446. Blit Int Off :
  447.     Turn off the 'BLITTER' interrupt.
  448.  
  449. Blit Speed blitnr,shift :
  450.     With this command you can change the SHIFT (speed) value
  451.     after you have defined a scrolling zone.
  452.     Only use positive values, it determines itself if the defined
  453.     scrolling zone is scrolling to the left or to the right !
  454.  
  455. Blit Erase blitnr :
  456.     Erases and frees the memory used by a particular scrolling
  457.     zone.
  458.     Allways erase all scrolling zones before quitting AMOS or the
  459.     memory used will be lost !
  460.  
  461. Blit Left screen,x,y To x1,y1,shift :
  462.     Does the same thing as the Blit Store Left command except that
  463.     the scroll will be immediately executed.
  464.     This command is still much faster than the AMOS Scroll command !
  465.  
  466. Blit Clear X:
  467.     This is a simple command for clearing any bitplane of a screen.
  468.     If X is negative, all bitplanes of a screen will be erased.
  469.     But if X is positive (0 excluded), then the X vaue refers to the
  470.     bitplane that has to be cleared !
  471.     An 8 colour screen has 3 bitplanes, 1 -> 3 !
  472.     It is about 80 % faster than the Cls command !
  473.  
  474. Reserve Stars COUNT : 
  475.     Reserves memory for COUNT "STAR" definitions.
  476.     It also computes in advance the address of the start of every line.
  477.     This is done for more speed when displaying the 'STARS'.
  478.     You can calculate the amount of memory needed with this formula:
  479.     COUNT*8+Heigth of screen*2
  480.     At this point you can reserve memory for 4000 'STARS'...
  481.     So with 4000 'STARS' in a 320 by 250 screen, 32500 bytes are
  482.     reserved.
  483.  
  484. Define Star NR,X,Y,X SPEED,Y SPEED :
  485.     Defines 'STAR' NR.  X and Y are the initial coordinates of the 'STAR'.
  486.     X SPEED and Y SPEED define the speed of the 'STAR'.
  487.     So your 'STARS' can fly in any direction !
  488.  
  489. Display Stars :
  490.     Displays the 'STARS' onto the screen and computes the next position
  491.     of the 'STARS' depending on the X- and Y SPEEDS.
  492.     I use only 1 bitplane (the first one), so only  1 coloured 'STARS'
  493.     are possible... But you can change the colour of them with the
  494.     Palette or Colour instructions ! This also counts for the F Stars
  495.     command.
  496.     I use the main processor (the MC68000) for displaying the 'STARS'.
  497.     So people who have an A3000 or accelerator boards can display
  498.     many more...
  499.     Limits on a 68000 system (7.14 Mhz) only 'STARS' displayed :
  500.         If you use only a X SPEED (Y SPEED = 0), then 670 'STARS'
  501.         can be displayed in 1 VBL.
  502.         If you use only a Y SPEED (X SPEED = 0), then 660 'STARS'
  503.         can be displayed in 1 VBL.
  504.         But if you use both speeds (X- and Y SPEED <> 0), then 540
  505.         'STARS' can be displayed in 1 VBL. 
  506. !!!    Allways be sure that you are displaying the 'STARS' on the screen
  507.     where you reserved them. This is because I store the start-
  508.     offsets of every line from the current screen when reserved.
  509.     This technique gives more speed when the 'STARS' are displayed !!!
  510.  
  511. Stars Speed START To END,X SPEED,Y SPEED :
  512.     Changes the speed of 'STARS' START To 'STAR' END with the values
  513.     X SPEED and Y SPEED.
  514.  
  515. F Stars :
  516.     Displays the 'STARS' onto the screen without computing the next
  517.     'STAR' position. So your 'STARS' can be freezed without changing
  518.     the SPEED of them !
  519. !!!    Allways be sure that you are displaying the 'STARS' on the screen
  520.     where you reserved them. This is because I store the start-
  521.     offsets of every line from the current screen when reserved.
  522.     This technique gives more speed when the 'STARS' are displayed !!!
  523.  
  524. Stars Compute START To END :
  525.     Computes the next position of the 'STARS' START To END without
  526.     displaying them on the screen.
  527.  
  528. Stars Erase :
  529.     Gives back to the system the memory used by the Reserve Stars
  530.     command.
  531.     Allways erase your 'STARS' before you leave AMOS or the memory
  532.     will be lost !
  533.  
  534. Stars Clip X,Y,X1,Y1 :
  535.     The Stars Clip instruction limits all 'STARS' to a rectangular
  536.     region of the screen.
  537.     X,Y represent the coordinates of the top left corner of the
  538.     rectangle, and X1,Y1 hold the coordinates of the bottom right
  539.     corner.
  540.     This instruction works fine now as it is, but is not really
  541.     finished yet...somethimes you don't get what you want !
  542.     The clipping is only implemented in the Display Stars and
  543.     in the Stars Int On instruction.
  544.  
  545. Stars Int On CLEAR :
  546.     This command adds a new interrupt server to the VBLANK server
  547.     chain which will do the same thing as the Display Stars command !
  548.     So the Display Stars command is now executed every Vbl and is
  549.     running totally independent of your AMOS PROGRAM !
  550.     If CLEAR <> 0 the display will be cleared before displaying the
  551.     'STARS'. This is the 'AUTOMATIC CLEAR MODE'.
  552.     Only the 'STARFIELD PLANE' is cleared, this is the first bitplane.
  553. !!!    Allways be sure that the SCREEN where you have reserved the 'STARS'
  554.     remains open when the 'STARS INTERRUPT' is on. Otherwise a crash
  555.     will be certain...I store the SCREEN ADRESS of the screen where
  556.     the Reserve Stars command was executed. So the 'STARS' will 
  557.     only be displayed in that particular screen.            !!!    
  558.  
  559.     Advantages : 
  560.              Time is saved for your AMOS PROGRAMS.
  561.              You don't have to wait for the Vbl to synchronize
  562.              the display of the stars with your screen display.
  563.  
  564.     Disadvantages :
  565.              Only the X-speed is changed (for more speed).
  566.              Can't be used with Double Buffered screens even
  567.              if Autoback is set to 0 (zero). I'll try to fix 
  568.              this in the future.
  569.     
  570. Stars Int Off :
  571.     Turn off the 'STARS' interrupt.
  572.  
  573. F Circle X,Y,Radius,Colour :
  574.     Does the same thing as the normal Circle command but this new
  575.     version is up to 550 % (for big circles) faster than the ori-
  576.     ginal AMOS BASIC version ! For smaller circles you get a speed
  577.     factor lying around 250 to 400 % ...
  578.     All parameters are the same as in the normal Circle command
  579.     except that you must give a colour ( C ) parameter...  
  580.     At this point you can only use this command in LOWRES screens
  581.     or HIRES+LACED screens.
  582.     Try it in a normal HIRES screen and you'll see what I'm talking
  583.     about...
  584.     There is a known bug in this command, do not use a radius above
  585.     180...there will be no crash, but the result is definitely not
  586.     a circle !
  587.  
  588.