home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 542.lha / Xl_v1.0_Demo / xl.doc.pp / xl.doc
Text File  |  1991-08-10  |  43KB  |  1,729 lines

  1. xl  version 1.00DEMO
  2.  
  3. a cel animation engine
  4.  
  5. by Dr. Kees
  6.  
  7.  
  8.  
  9. Copyright (c) 1991 by Martin C. Kees
  10.  
  11. ALL RIGHTS RESERVED
  12.  
  13.  
  14.  
  15. Introduction
  16.  
  17.  
  18.  
  19. xl is a drawing system that creates single bit-plane animations. The
  20. user can control the drawing process by traditional interactive 
  21. methods using the mouse as a brush or can issue drawing commands from 
  22. a macro program. The set of drawing modes is rich in both modalities. 
  23. User definable Bezier curves, random dot generation, logic controlled 
  24. bitmap transformations, as well as the common line, box, oval, and 
  25. polygon objects can be drawn interactively or from ARexx macros. The 
  26. anim file created by xl can be imported to other animation packages 
  27. for colorization such as Deluxe Paint III, The Disney Animation 
  28. Studio, and the yet to be released pxl.
  29.  
  30.  
  31.  
  32. xl may be launched from WorkBench by double-clicking on it's icon or
  33. from a CLI by 'run xl'. From the CLI the current directory should be
  34. set to the directory containing the xl.config file. This is commonly 
  35. the same directory as the xl program. If the user wants function key 
  36. macros to be loaded then a macro file, xl.macros, should also reside 
  37. in this directory. 
  38.  
  39. xl is terminated by the q key.
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47. Installation
  48.  
  49.  
  50. For xl to run the user needs to copy the req.library file to the libs:
  51. directory. The InstallReq icon does this for you. For ARexx support, 
  52. libs:rexxsyslib.library must also exist and the resident ARexx process 
  53. should be launched. When using Workbench 2.0 you should set the mouse 
  54. screen drag in IControl to multiple qualifier keys not just the Amiga 
  55. key. 
  56.  
  57.  
  58.  
  59. CONFIGURATION FILE
  60.  
  61.  
  62.  
  63. When xl is started it uses options set by the xl.config file. The 
  64. first line of this file should be:
  65.  
  66.  
  67.  
  68. XL CONFIG
  69.  
  70.  
  71.  
  72. Configuration commands and format are as follows:
  73.  
  74.  
  75.  
  76. DISPLAY   LORES | HIRES | LOLACE | HILACE
  77.  
  78.           sets drawing window resolution
  79.  
  80.           
  81.  
  82. BEZIER    #points #segs
  83.  
  84.           #points can be in the range 3-8. #segs in the range 4-512.
  85.  
  86.           
  87.  
  88. FRAMES    #frames          
  89.  
  90.           sets the number of frames to be allocated on start-up.
  91.           A minimum of 4 frames will be allocated.
  92.  
  93.           
  94.  
  95. ATFRAME   #currentframe
  96.           Sets the current frame to edit. Frames are numbered 1-N.
  97.  
  98.  
  99.  
  100. FRAMEDELAY ticks
  101.  
  102.            Sets the interframe delay duration on animation play back.
  103.            Range is 0-60.
  104.  
  105.            
  106.  
  107. COLOR      reg# r g b 
  108.  
  109.            registers 0-4 control the drawing window.
  110.  
  111.            0   background
  112.            1   frame 2 previous
  113.            2   frame 1 previous
  114.            3   current frame
  115.            4   next frame
  116.            registers 5-8 control the ToolBox colors.
  117.  
  118.  
  119.  
  120. USERKEY    NONE
  121.  
  122.            required command 
  123.  
  124.            
  125.  
  126. PASSKEY    NONE
  127.  
  128.            required command
  129.  
  130.            
  131.  
  132. Of the commands listed above the xl.config file MUST contain the
  133. XL, USERKEY, and PASSKEY commands.
  134.  
  135.  
  136.  
  137.  
  138.  
  139. ToolBox Tour
  140.  
  141.  
  142.  
  143. On startup you will see a blank screen in the upper 4/5 of the display
  144. and a ToolBox screen on the lower 1/5. The ToolBox displays 
  145. information about the current state of xl and allows various mode 
  146. selections by clicking on the mode and tool gadgets.
  147.  
  148.  
  149.  
  150. The top line gives the current drawing mode name. If a capture file is
  151. open CAP will appear in this line.  Bezier state and controlpoint info
  152. will be displayed here also. An A will be displayed if autoaspect is
  153. ON for polygon entry.
  154.  
  155.  
  156.  
  157. The left hand box gives coordinate info and frame info. The X Y 
  158. coordinates are relative to the upper left of the display with Y 
  159. values increasing in the downward direction and X increasing to the 
  160. right. The f number is the current frame and the F number is the total 
  161. number of frames currently allocated.
  162.  
  163.  
  164.  
  165. There are two rows of gadgets that either set the current drawing mode
  166. or perform some control function. 
  167.  
  168.  
  169.  
  170. PIXEL BRUSH TOOL ( . - = keys )
  171.  
  172. The top row starts with a pixel brush box that is really nine tiny 
  173. gadgets for each of the 9 built-in brush sizes. Clicking on any of 
  174. these sets the current brush size. Brushes may also be selected from 
  175. the keyboard using the -, = and . keys.
  176.  
  177.  
  178.  
  179. LINE TOOL   ( l key )
  180.  
  181. Next right is the line mode gadget. Clicking on it selects line mode. 
  182. Line will be displayed on the info bar. When in line mode drawing to 
  183. the frame display will done be in lines. Lines are started by a mouse 
  184. click. If the left button is used then the line will eventually be 
  185. DRAWN. If the right button clicked then the line will be ERASED. 
  186. Rubberbanding occurs with mousemovements until the user is ready to 
  187. select the end of the line by either a left or right click. The last 
  188. click can be modified by certain keys:
  189.  
  190.  
  191.  
  192.       LEFT-SHIFT click cancels the line draw operation or
  193.                  'regrabs' the last line drawn on entry.
  194.  
  195.       LEFT-AMIGA 'grabs' the line as a brush. A subsequent click will
  196.                  draw the line. Subsequent clicks can also be modified
  197.                  by the Left-Shift and Left-Amiga keys so that the 
  198.                  line can be stamped at different locations on this
  199.                  frame.
  200.  
  201.                  
  202.  
  203. Note that if the ToolBox is visible an ending click with the right
  204. mouse button will draw through the toolbox to the drawing area below 
  205. while a left mouse click on the toolbox area will be ignored. While 
  206. rubberbanding the toolbox screen can be moved by dragging on the
  207. thin black line at the top of the info bar. Prior to starting a line 
  208. the toolbox may be toggled to the back/front by the F10 function key.
  209.  
  210.  
  211.  
  212.  
  213.  
  214. RECTANGLE TOOL   ( r R key )
  215.  
  216. Next right is the rectangle/block gadget. It selects rectangle or 
  217. filled rectangle mode as the current drawing mode. As in the line mode 
  218. the initial mouse button determines whether the box is drawn or 
  219. erased. The first click selects a corner of the rectangle. Then 
  220. rubberbanding occurs until the opposite corner is selected by a mouse 
  221. click. The last click can be modified in the same manner as in line 
  222. mode to cancel, grab, or regrab the last rectangle.
  223.  
  224.  
  225.  
  226.  
  227.  
  228. CIRCLE TOOL      ( c C key )
  229.  
  230. Next is the circle mode gadget. It selects circle mode for the current 
  231. drawing mode if clicked in the upper half and filled-circle mode if
  232. clicked in the lower half. Circles are drawn in the current resolution
  233. so when in non-square modes the circles will nat be aspect adjusted 
  234. but will be pixel unit circles. Circle mode starts with a mouse click 
  235. to select center of the circle the the circle will rubberband with 
  236. movement of the mouse to set the radius. The initial click right/left 
  237. determines whether the circle is drawn or erased. The last click can 
  238. be modified with the keyboard (as in line mode) to 'grab' the circle 
  239. or to cancel the drawing operation.
  240.  
  241.  
  242.  
  243.  
  244.  
  245. CLIPBRUSH TOOL    ( b key )
  246.  
  247. Next is the brush tool. Clicking on it selects brush clipping mode. A
  248. rectangular area of the current frame can be selected just as if a 
  249. rectangle were being drawn. The selection area can be grabbed by using
  250. the Left-Amiga key and moved over the display to any area. When 
  251. finally selected a transparent brush of that portion of the screen 
  252. will be attached to the mouse and the mode will change to StampBrush. 
  253.  
  254. If the left mouse button is clicked the image will be stamped to the 
  255. frame in a transparent mode. That is: nothing will be erased from the 
  256. screen, just areas in the brush that are solid will overprint. If 
  257. the right button is used then blitter logic will be used to determine 
  258. the result. The default logic is to erase the screen in any solid 
  259. areas of the brush. The logic can be changed by macros to achieve 16 
  260. different effects. 
  261.  
  262. While holding a brush the x and y keys can be used at any time 
  263. to flip the brush in the horizontal or vertical directions. This can 
  264. also be done with macro commands. The ( key on the numeric pad rotates 
  265. the brush about the x=y axis. The numeric pad can be used to change 
  266. the grab point of the brush. The corner and center numbers move the 
  267. grab point to the analogous position. That is: 3 moves to lower right 
  268. and 5 centers. The 4, 6, 8, and 2 keys move the grab point in pixel 
  269. steps or BRUSHADJ size steps if shifted.
  270.  
  271. StampBush mode is one of the few modes that keeps the toolbox and 
  272. keyboard active so that frame changes may be made while holding a 
  273. brush. Once a brush is grabbed it may be recalled by the Shift-B 
  274. keyboard command.
  275.  
  276.  
  277.  
  278. FONT select
  279.  
  280. This gadget calls the font requester to select the current font for
  281. text operations.
  282.  
  283.  
  284.  
  285.  
  286.  
  287. FRAME SELECT    ( 1 2 keys )
  288.  
  289. Next is the frame forward/backward tool. Clicking the corresponding 
  290. arrow changes the current frame displayed. If the current frame has 
  291. been modified there will be a delay while it is updated to memory. 
  292. These gadgets perform the same action as the 1 and 2 keys on the main 
  293. keyboard.
  294.  
  295.  
  296.  
  297.  
  298.  
  299. ADD FRAME       ( a key )
  300.  
  301. The plus gadget adds a duplicate of the current frame as the next 
  302. frame in the animation. To add a blank frame use the add gadget then 
  303. advance to the next frame then clear it.
  304.  
  305.  
  306.  
  307.  
  308.  
  309. MEM FRAME       
  310.  
  311. The MEM gadget saves the contents of the current frame in the 
  312. tempframe buffer. It may be recalled by using the RCL gadget below.
  313.  
  314.  
  315.  
  316.  
  317.  
  318. CLR FRAME/ALL FRAMES
  319.  
  320. The CLR gadget clears the current frame. Before the clear, the frame 
  321. is copied to the tempframe buffer. This erases the previous contents 
  322. of that buffer! The clear can be undone by using the RCL gadget. This 
  323. gadget has a different effect when the LEFT-SHIFT key is down when 
  324. clicked. Then ALL frames will be cleared if the requester is accepted.
  325.  
  326.  
  327.  
  328.  
  329.  
  330. PALETTE TOOL
  331.  
  332. Next right is the palette gadget. Clicking it opens a palette 
  333. requester on the drawing window. Since the drawing window is designed 
  334. to be able to show four frames of the animation in an onion skin view 
  335. 16 colors are required if each of the four frames is in a separate 
  336. bitmap plane. To change the colors of the current frame all eight 
  337. colors on the left half of the display need to be modified to the same 
  338. value. This can be done in a single step using xl's macro commands. If 
  339. the colors are set to different values then pixels on in overlapping 
  340. frames will be made apparent. Feel free to experiment. The default 
  341. settings make the current frame appear on top of the display, then 
  342. going deeper is the next previous, the second previous and last is the 
  343. next frame after the current one.
  344.  
  345.  
  346.  
  347.  
  348.  
  349. SKETCH MODE  ( s key )
  350.  
  351. This is the tool gadget located on the second row just under the 
  352. pixel-brush selector. This is the startup drawing mode. It is the only 
  353. mode that uses clickdown-drag-upbutton protocol. Using the left button 
  354. causes a DRAW response, using the right causes an ERASE. The currently 
  355. selected pixel-brush is used when drawing/erasing.
  356.  
  357.  
  358.  
  359.  
  360.  
  361. BEZIER MODE  ( z key )
  362.  
  363. The next tool is the bezier tool that sets bezier-curve mode. This 
  364. mode draws very nice curved line segments.  The curve is controlled by 
  365. a set of control points. Using the BEZIER macro command or the numeric 
  366. keypad one can set the number of control points to be in the range 3-
  367. 8.  The curve is drawn by a series of line segments relating to the 
  368. control points selected. More segments can smooth the curve generated. 
  369. The number of segments can be set by macro or by using the keyboard 
  370. SHIFT-Z.  The current settings are displayed in the toolbox info bar.
  371.  
  372.  
  373. Drawing a curve is a multistep process. First the endpoints are 
  374. selected in the same manner as in LINE mode. At this point the curve's 
  375. controlpoints will be set for the two endpoints. All other points are 
  376. defaulted to the last point. The next phase is setting the 
  377. intermediate control points. Moving the mouse rubberbands the curve 
  378. using the current control point. The current control point number is 
  379. displayed in the toolbox info bar.  A mouse click locks that control 
  380. point and selects the next control point in the curve until the end-
  381. point is reached. Then the curve is drawn.
  382.  
  383.  
  384. The process of selecting control points does not have to be 
  385. sequential. At any time the keyboard z/x or left-arrow/right-arrow 
  386. keys can be used to go back and forth from control point to control 
  387. point. This allows stepwise definition of the curve in an interactive 
  388. manner. The shifted key will select the first or last control point. 
  389. Note that the current control point is NOT changed until a MOUSEMOVE 
  390. occurs. This enables one to keep a particular control point fixed.
  391.  
  392.  
  393.  
  394. The currently displayed version of the curve can be drawn at any time 
  395. by using the space bar. A SHIFTED-space bar keypress will cancel the 
  396. curve.  A LEFT-SHIFT click will recall the last bezier curve defined 
  397. on entry. The curve will be DRAWN if the starting point was selected 
  398. by the left button and ERASED if selected with the right button.
  399.  
  400.  
  401.  
  402. There are two bezier methods available by macro.  BEZNORMAL selects
  403. the standard bezier curve. The control points define a convex polygon 
  404. that will enclose the generated curve. In this method each control 
  405. point will be a fair distance from the displayed curve.  BEZADJUST 
  406. causes a scaling of the control points so that the curve follows the 
  407. control points more closely. It does not produce curves that lie 
  408. within the convex hull of the control point polygon and does not scale 
  409. them in a symmetric way ( points toward the end are scaled with 
  410. heavier weights).  The default mode is BEZADJUST.  Experiment with the 
  411. two methods to determine which is best for your task.
  412.  
  413.  
  414.  
  415.  
  416.  
  417. POLYGON TOOL   ( p P key )
  418.  
  419. The polygon tool enters polygon mode. Polygons with up to 125 segments
  420. can be drawn/erased. The polygon is entered  in a continuous line 
  421. mode but with the head of the next segment attached to the tail of the
  422. previous segment. The polygon is ended and drawn if the starting 
  423. point is selected. DRAW/ERASE is determined by the initial left/right 
  424. button click.  Auto closure is made with the LEFT-ALT key. The 
  425. LEFT-SHIFT key cancels the polygon and LEFT-AMIGA grabs it for 
  426. stamping.  A CTRL click grabs the polygon without closing it. A LEFT-
  427. SHIFT click on entry to this mode will REGRAB the last polygon 
  428. defined.
  429.  
  430.  
  431.  
  432. During the polygon point entry mode the current scaling and rotation
  433. angle are ignored. If AUTOASPECT is set to ON the the points 
  434. entered will be scaled to the current POLYASPECT settings. If 
  435. AUTOASPECT is OFF the when the polygon is grabbed it might change 
  436. shape depending on the current POLYAPSECT setting.
  437.  
  438.  
  439.  
  440. Once defined the polygon may change its size and orientation depending
  441. on the current state of SCALE, ANGLE, ASPECT and CENTER options for
  442. polygon control. The arrow pad keys affect scaling with the left and
  443. right keys controlling horizontal scale and the up and down arrows
  444. affecting vertical scale. This scaling is relative to the original 
  445. orientation of the polygon so that if a 90 degree rotation angle
  446. is current the up and down arrows will change the vertical size.
  447. The DEL and HELP keys change the current rotation angle with HELP
  448. causing a clockwise rotation and DEL a counterclockwise rotation.
  449. When SHIFTED all keys cause coarse changes in larger increments
  450. than when unshifted. Note that negative scale values have the effect 
  451. of flipping the polygon around the scaling axis. The 4, 6, 8, and 2
  452. keys on the numeric pad move the center of rotation and the grab point
  453. of the polygon. Shifted keys step in larger increments set by 
  454. POLYSTEP.
  455.  
  456.  
  457.  
  458.  
  459.  
  460. OVAL TOOL      ( o key )
  461.  
  462. Oval mode is the same as circle mode except that both a horizontal and
  463. a vertical semi-radius are determined during rubberbanding.
  464.  
  465.  
  466.  
  467. FILL MODE    ( f key )
  468.  
  469. Next is the fill tool. When selected the pointer becomes a fill 
  470. spigot.  The drip is the hot spot of the fill tool. If the left button 
  471. is clicked  the fill tool fills with solid ink until an outline is 
  472. encountered. If the right button is clicked an area is erased until 
  473. cleared screen is encountered.  The fill causes a frame memorize 
  474. before the fill takes place so that leaks can be undone by clicking on 
  475. the RCL gadget. However this also causes loss of any previous MEM 
  476. frame information.
  477.  
  478.  
  479. MAGNIFY tool
  480.  
  481. Clicking on this gadget cycles it's image thru lo, hi, and no 
  482. magnification. The magnifying glass icon is replaced by a pixel view
  483. centered on the current cursor position. In LO mode a 5x3 pixel
  484. display is shown and in HI mode a 10x6 view is displayed. The
  485. highlighted block represents the cursor position. It is white if
  486. that pixel is OFF and blue if ON. Having Magnify ON will slow down
  487. drawing operations, especially in sketch mode.
  488.  
  489.  
  490.  
  491. VIEW TOOL      ( 4 key )
  492.  
  493. The eye gadget displays the animation in a loop until a mousemove
  494. event occurs.  This is the same action that the 4 main keyboard key
  495. produces. For Ping-Pong display use the 6 main keyboard key.
  496.  
  497.  
  498.  
  499.  
  500.  
  501. DELETE FRAME TOOL  ( A key )
  502.  
  503. The minus gadget deletes the current frame from the animation. At
  504. least four frames must exist so this gadget has no effect if there
  505. are only four frames.
  506.  
  507.  
  508.  
  509.  
  510.  
  511. RCL TOOL     ( u key )
  512.  
  513. Clicking the RCL gadget updates the current frame to the current
  514. tempframe buffer contents. That buffer can be set by previous
  515. CLR or MEM gadget usage. Note that on startup the tempframe buffer is
  516. the "about" message.
  517.  
  518.  
  519.  
  520.  
  521.  
  522. AREXX GADGET  ( m key )
  523.  
  524. This gadget starts the process of executing a macro command. There are
  525. four types of macros in xl. The first two are AREXX macros and require
  526. AREXX by W. Hawes. These are indicated on the requester by the AREXX 
  527. and 'AREXX' buttons. The AREXX type is the name of an Arexx program 
  528. that contains commands for xl to execute.  When this type of macro is 
  529. given the user is expected to give the name of the Arexx program that 
  530. xl is to submit to the ARexx server to execute. Arexx will search for 
  531. this program (if a full path name isn't given) starting in the current 
  532. directory and if not found in the system REXX: directory. It will
  533. search for the exact name as entered if it has a file extension. If
  534. no file extension is given it will search for both the plain named
  535. file and if not found will append .xl and search again.
  536.  
  537.  
  538.  
  539. The second type of macro is the 'AREXX' macro. The string entered in 
  540. the macro requester will be sent to ARexx to execute as if it were 
  541. a program.  The string requester will allow programs up to 384 
  542. characters long. Each program line in the string is separated by a 
  543. semi-colon. In this mode the usual beginning /* comment */ line is NOT 
  544. needed.
  545.  
  546.  
  547.  
  548. The two other types of macros are selected with the SCRIPT button. 
  549. Script macros do not require ARexx but are limited to literal 
  550. commands. The first script type is a SCRIPT file request. The user 
  551. gives the filename of a text file containing xl macro commands. The 
  552. file name must include  a path relative to xl's current directory. If 
  553. the name given is REQ, then a file requester will appear for script 
  554. file selection. The script file will then be loaded and executed just 
  555. as if those commands had been sent from ARexx.
  556.  
  557.  
  558.  
  559. The last macro type is the @Command macro. It is entered in the script
  560. string requester with the first character as @ and the rest of the 
  561. line asa single macro command statement. For example: @FIRST would 
  562. execute the FIRST macro which moves the current frame to frame 1 of 
  563. the animation.
  564.  
  565.  
  566.  
  567. In script macros there is no evaluation of the command arguments so
  568. numeric arguments must be given absolutely. Quotes are not stripped
  569. in script argument strings as they are from ARexx. The command set
  570. used in scripts is the same as in ARexx macros except that commands
  571. that return results have no meaning or effect in scripts.
  572.  
  573.  
  574.  
  575. Note that a separate buffer retains the last macro entered for AREXX 
  576. and SCRIPT macros. This allows retention of an 'AREXX' program but 
  577. still macro control with @Commands.
  578.  
  579.  
  580.  
  581. Any of the four types of macro invocation can be attached to a 
  582. FUNCTION KEY.  Using i from the keyboard starts a dialogue to select a 
  583. macro to attach to a function key. Unshifted keys can range from F1 to 
  584. F9.  F11 to F30 are selected by SHIFT ( F11 - F20 )and ALT ( F21 - F30 
  585. ). The current macro key assignments can be saved and/or loaded by the 
  586. LOADMACROS and SAVEMACROS commands.
  587.  
  588.  
  589.  
  590. The Arexx interface in xl is not normally open to external control. To
  591. allow external tasks to send xl macro commands one would have to 
  592. invoke an ARexx program that stayed active while commands are sent to 
  593. the XLPORT. The external task would have to signal that macro when it 
  594. was finished so it could terminate. The public port xl opens will be 
  595. named XLPORT ... XLPORT0 ... XLPORT9 depending on what ports are open 
  596. at startup. Errors occurring in this arrangement would have to be 
  597. handled carefully. The external task would need to respond to error 
  598. returns and clean-up result strings and make sure it signaled the 
  599. active macro before terminating (even from a halt request).
  600.  
  601.  
  602.  
  603. ARexx and Script macro programs may be halted by the holding down
  604. the ESC key.
  605.  
  606.  
  607.  
  608.  
  609.  
  610. CAPTURE TOOL
  611.  
  612. The capture gadget is of help in debugging Arexx macro programs or
  613. in preparing script files. When clicked a file requester appears
  614. waiting for the name of a file. That file will be opened and the
  615. CAP indicator will appear on the toolbox info bar. Any ARexx
  616. commands received will be written to that file until it is
  617. closed by clicking on the capture gadget again. Examining that
  618. file in a text editor will show the actual command strings received
  619. from Arexx. The file will be in the correct format to execute
  620. in the Script macro mode.  For many programs this will be a much
  621. faster way to repeat an exact sequence of commands if the file
  622. is in ram: or on a hard-drive.
  623.  
  624.  
  625.  
  626.  
  627.  
  628. BACK/FRONT gadgets
  629.  
  630. The back and front gadgets are special gadgets that push and pop the 
  631. drawing screen to the back and front but leave the toolbox accessible.
  632. Standard screen back/front gadgets would cause display problems when
  633. using mixed LACE NON-LACE modes.
  634.  
  635.  
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643. KEYBOARD COMMAND Summary
  644.  
  645.  
  646.  
  647. Key       Function
  648.  
  649.  
  650.  
  651. q         QUIT XL   ( The only way to EXIT xl )
  652.  
  653. e         clearframe
  654.  
  655. E         clear all frames
  656.  
  657. r         rectangle mode
  658.  
  659. R         block mode
  660.  
  661. u         update display from tempframe buffer
  662.  
  663. i         install macro to function key
  664.  
  665. o         oval mode
  666.  
  667. O         oval-fill mode
  668.  
  669. p         polygon mode
  670.  
  671. a         add duplicate frame after current frame
  672.  
  673. A         delete current frame
  674.  
  675. s         sketch mode
  676.  
  677. d         select Frame Delay
  678.  
  679. f         fill mode
  680.  
  681. l         line mode
  682.  
  683. z         bezier mode
  684.  
  685. Z         select number of bezier segments
  686.  
  687. c         circle mode
  688.  
  689. C         circle-fill mode
  690.  
  691. b         clipbrush mode
  692.  
  693. B         stampbrush mode
  694.  
  695. m         start macro invocation, user is prompted for type
  696.  
  697. M         start 'AREXX' macro
  698.  
  699. LeftAltm  start SCRIPT macro
  700.  
  701. RightAltm start AREXX macro
  702.  
  703. .         select single pixel brush
  704.  
  705. -         cycle to 'smaller' pixel brush 
  706.  
  707. =         cycle to 'bigger' pixel brush
  708.  
  709. 1         goto previous frame
  710.  
  711. 2         goto next frame
  712.  
  713. 3         goto selected frame
  714.  
  715. 4         play anim in loop until mousemove
  716.  
  717. 6         play anim in ping-pong loop until mousemove
  718.  
  719. F10       toggles toolbox 
  720.  
  721. F1-30     executes current attached macro
  722.  
  723.  
  724.  
  725. Bezier Control
  726.  
  727. SHIFT-click     recalls last curve if done before point entry     
  728.  
  729. z         select next control point toward start
  730.  
  731. x         select next control point toward end
  732.  
  733. Z         select start control point
  734.  
  735. X         select end control point
  736.  
  737. LEFT-ARROW          same as z/Z
  738.  
  739. RIGHT-ARROW         same as x/X
  740.  
  741. SPACE               draws displayed curve
  742.  
  743. SHIFT-SPACE         cancels curve
  744.  
  745. LAMIGA-SPACE        stamps displayed curve but continues rubberbanding
  746.  
  747. 3-8 on numeric pad  selects the number of control points to use in
  748.  
  749.                     bezier mode
  750.  
  751.                     
  752.  
  753.                     
  754.  
  755. Modifiers to clicks during drawing modes
  756.  
  757.  
  758.  
  759. LEFT-SHIFT   cancels mode draw operation if in define mode
  760.              or recalls last line, curve, polygon or rectangle 
  761.              if at entry to mode.
  762.  
  763. LEFT-AMIGA   grabs drawing object as a brush (closes polygon)
  764.  
  765. LEFT-ALT     closes polygon and stamps it
  766.  
  767. CTRL         grabs polygon without closing it
  768.  
  769.  
  770.  
  771. Polygon control
  772.  
  773. ARROW keys   scales polygon in x and y directions in fine steps
  774.  
  775. SHIFT-ARROW  scales polygon in x and y directions in coarse steps
  776.  
  777. DEL          rotates polygon counterclockwise in 1 degree steps           
  778.  
  779. HELP         rotates polygon clockwise in 1 degree steps
  780.  
  781. SHIFT-DEL    rotates polygon counterclockwise in POLYSTEP increments
  782.  
  783. SHIFT-HELP   rotates polygon clockwise in POLYSTEP increments
  784.  
  785. 0 (num pad)  sets polyangle to 0 and polyscale to 100 100
  786.  
  787. 2 8          moves CENTER of polygon in Y direction
  788.  
  789. SHIFT 2 8    moves CENTER in POLYSTEP increments in Y
  790.  
  791. 4 6          moves CENTER of polygon in X direction
  792.  
  793. SHIFT 4 6    moves CENTER in POLYSTEP increments in X
  794.  
  795.  
  796.  
  797.  
  798.  
  799. Brush Control
  800.  
  801.  
  802.  
  803. x            horizontal flip of brush
  804.  
  805. y            vertical flip of brush
  806.  
  807. Numeric Pad Keys
  808.  
  809. (            x=y axis flip of brush
  810.  
  811. 1            grab handle to lower left corner
  812.  
  813. 3            grab handle to lower right corner
  814.  
  815. 7            grab handle to upper left corner
  816.  
  817. 9            grab handle to upper right corner
  818.  
  819. 5            grab handle to center of brush
  820.  
  821. 4, 6         horizontal shift of handle
  822.  
  823. 8, 2         vertical shift of handle
  824.  
  825.  
  826.  
  827.  
  828.  
  829. AREXX MACRO COMMAND FORMAT SUMMARY
  830.  
  831.   
  832.  
  833.   COMMAND     [agr1 arg2 ag3 ... $argN]
  834.               [result= arg1 ... agrN]
  835.  
  836.               Comment to command
  837.               
  838.               Arguments starting with $ are string arguments.
  839.               String arguments must pass enclosing double-quotes
  840.               if embedded blanks are present. If case is to be
  841.               preserved the $arg should be quoted.
  842.               Other arguments are numeric INTEGERS.
  843.               Coordinate values will be clipped to the frame so
  844.               negative coordinates are legal. Spaces delimit
  845.               arguments in xl but leading minus signs will confuse
  846.               Arexx expression evaluation.
  847.  
  848.  
  849.  
  850.   LINE        x1 y1 x2 y2
  851.  
  852.               draws line from x1 y1 to x2 y2 
  853.               using current ink setting and current
  854.               pixel brush
  855.  
  856.               
  857.  
  858.   BLINE3      x1 y1 x2 y2 x3 y3
  859.  
  860.               draws 3 controlpoint bezier curve
  861.               using current bezier method, segments, ink and 
  862.               pixel brush.
  863.  
  864.   
  865.  
  866.   BLINE4      x1 y1 x2 y2 x3 y3 x4 y4
  867.  
  868.   
  869.  
  870.   BLINE5      x1 y1 ... x5 y5
  871.  
  872.   
  873.  
  874.   BLINE6      x1 y1 ... x6 y6
  875.  
  876.   
  877.  
  878.   BLINE7      x1 y1 ... x7 y7
  879.  
  880.   
  881.  
  882.   BLINE8      x1 y1 ... x8 y8
  883.  
  884.   
  885.  
  886.   DOT         x y
  887.  
  888.               turns pixel at x y ON/OFF
  889.               by current ink setting
  890.  
  891.               
  892.  
  893.   INK         0|1
  894.  
  895.               0 erases 1 draws on subsequent commands
  896.  
  897.               
  898.  
  899.   CIRCLE      x y radius
  900.  
  901.   
  902.  
  903.   DISK        x y radius
  904.  
  905.   
  906.  
  907.   OVAL        x y h-radius y-radius
  908.  
  909.   
  910.  
  911.   ODISK       x y h-radius  y-radius
  912.  
  913.   
  914.  
  915.   BOX         x1 y1  x2 y2              
  916.  
  917.               2 opposite corners define the box
  918.  
  919.               
  920.  
  921.   BLOCK       x1 y1  x2 y2
  922.  
  923.               solid box in ink color
  924.  
  925.   
  926.  
  927.   TEXT        x  y  $text
  928.  
  929.               uses x y to place text string relative to the baseline                        
  930.               uses ink setting to draw/erase
  931.               uses current font and style
  932.  
  933.   
  934.  
  935.   FLOOD       x y
  936.  
  937.               fills with ink from x y to outline
  938.               presaves current frame in tempframe buffer 
  939.  
  940.               
  941.  
  942.   LINEPTRN    mask|OFF
  943.  
  944.               sets the 16 bit pattern for lines according to the value
  945.               of mask. Mask can be a string of * and . where the *
  946.               represent ON pixels and the . represent OFF pixels.
  947.               Example:
  948.  
  949.               LINEPTRN '*.*.*.*.*.*.*.*.'
  950.  
  951.               or mask can be a 16 bit integer value:
  952.  
  953.               LINEPTRN 65534
  954.  
  955.               or
  956.  
  957.               LINEPTRN OFF
  958.  
  959.               returns to normal line mode.
  960.  
  961.               
  962.  
  963.   AREAPTRN    ON|OFF|FREE            
  964.  
  965.               Turns on/off area pattern mode for subsequent fill
  966.               modes. An area pattern must be previously defined by
  967.               INITAREA and PUSHPTRN commands. The FREE option
  968.               reclaims memory used for the pattern and turns off
  969.               area pattern mode.
  970.  
  971.               
  972.  
  973.   INITPTRN    size
  974.  
  975.               Allocates memory for an area pattern. Size must
  976.               be a power of 2.
  977.  
  978.               
  979.  
  980.   PUSHPTRN    mask            
  981.  
  982.               adds the pattern defined by mask to the current
  983.               area pattern memory area. Mask can be a string
  984.               of * and . as in LINEPTRN or an integer value.
  985.  
  986.               
  987.  
  988.   USEBRUSH    0|8                   
  989.  
  990.               selects pixel brush 
  991.               0 = single pixel
  992.               8 = 3x3 pixels
  993.  
  994.               
  995.  
  996.   CUT                               
  997.  
  998.               deletes frame and copies to tempframe
  999.  
  1000.               
  1001.  
  1002.   PASTE                             
  1003.  
  1004.               stamps tempframe as full frame
  1005.  
  1006.               
  1007.  
  1008.   SCROLL      dx dy x y width height  
  1009.  
  1010.               scrolls rectangular area of frame by dx dy
  1011.               from position x y. dx and dy are signed values
  1012.               that indicate the amount to move toward
  1013.               the x y position.
  1014.  
  1015.               
  1016.  
  1017.   STAMP       x y                    
  1018.  
  1019.               stamps opaque tempframe at x y offset
  1020.  
  1021.               
  1022.  
  1023.   TRANSSTAMP  x y                    
  1024.  
  1025.               transparent stamp of tempframe at x y
  1026.  
  1027.               
  1028.  
  1029.   STAMPM      x y minterm            
  1030.  
  1031.               stamp of tempframe with blitter logic
  1032.  
  1033.               
  1034.  
  1035.   COPY                              
  1036.  
  1037.               copies current to tempframe
  1038.  
  1039.               
  1040.  
  1041.   NEXT                              
  1042.  
  1043.               move to next frame
  1044.  
  1045.               
  1046.  
  1047.   PREV                              
  1048.  
  1049.               move to previous frame
  1050.  
  1051.               
  1052.  
  1053.   FIRST                             
  1054.  
  1055.               move to first frame 
  1056.  
  1057.               
  1058.  
  1059.   LAST                              
  1060.  
  1061.               move to last frame
  1062.  
  1063.               
  1064.  
  1065.   GOTO        frame#                    
  1066.  
  1067.               move to frame frame#
  1068.  
  1069.               
  1070.  
  1071.   ADD                               
  1072.  
  1073.               add a duplicate frame after current frame
  1074.  
  1075.               
  1076.  
  1077.   ADDFRAMES   frames                  
  1078.  
  1079.               add frames # of duplicates after current
  1080.  
  1081.  
  1082.  
  1083.   CLEARFRAME                        
  1084.  
  1085.               erase current and copies to tempframe
  1086.  
  1087.               
  1088.  
  1089.   CLEARALLFRAMES                     
  1090.  
  1091.               erase all frames
  1092.  
  1093.               
  1094.  
  1095.   DELETE                            
  1096.  
  1097.               delete current frame
  1098.  
  1099.               
  1100.  
  1101.   DELETES     frames                   
  1102.  
  1103.               delete frames # of frames starting at current    
  1104.  
  1105.  
  1106.  
  1107.   XFLIP            
  1108.  
  1109.               flips the current frame horizontally
  1110.  
  1111.               
  1112.  
  1113.   YFLIP                   
  1114.  
  1115.               flips the current frame vertically
  1116.  
  1117.               
  1118.  
  1119.   COLOR       reg r g b                
  1120.  
  1121.               set color register to rgb value
  1122.  
  1123.               
  1124.  
  1125.   SETPOS      x y                      
  1126.  
  1127.               set turtle position
  1128.  
  1129.               
  1130.  
  1131.   PENUP                             
  1132.  
  1133.               set no draw on turtle movement
  1134.  
  1135.               
  1136.  
  1137.   PENDOWN                           
  1138.  
  1139.               set draw on turtle movement
  1140.  
  1141.               
  1142.  
  1143.   SETH        angle                    
  1144.  
  1145.               set turtle heading
  1146.  
  1147.               
  1148.  
  1149.   FW          distance                 
  1150.  
  1151.               move turtle distance pixels in current heading
  1152.  
  1153.               
  1154.  
  1155.   BW          distance                 
  1156.  
  1157.               move turtle -distance pixels in current heading
  1158.               ( or distance pixels in opposite heading)
  1159.  
  1160.               
  1161.  
  1162.   RT          angle                    
  1163.  
  1164.               add angle to heading to get new heading.
  1165.  
  1166.               
  1167.  
  1168.   LT          angle                    
  1169.  
  1170.               subtract angle from heading to get new heading.
  1171.  
  1172.               
  1173.  
  1174.   LINETO      x y            
  1175.  
  1176.               draw a line from current turtle position
  1177.               to the point x y. Use current penstate.
  1178.               New position is x y.
  1179.  
  1180.               
  1181.  
  1182.   TURTLE      x y angle 0|1            
  1183.  
  1184.               setpos seth penup/pendown
  1185.  
  1186.               
  1187.  
  1188.   BEZNORMAL                         
  1189.  
  1190.               use normal bezier method
  1191.  
  1192.               
  1193.  
  1194.   BEZADJUST                         
  1195.  
  1196.               use adjusted bezier method
  1197.  
  1198.               
  1199.  
  1200.   SAVEANIMBRUSH $filename            
  1201.  
  1202.                 save animation in animbrush format
  1203.                 disabled in DEMO version
  1204.  
  1205.                 
  1206.  
  1207.   SAVESCREEN    $filename            
  1208.  
  1209.                 save drawing window as 4 bitplane ilbm
  1210.                 disabled in DEMO version
  1211.  
  1212.                 
  1213.  
  1214.   LOADANIMBRUSH $filename            
  1215.  
  1216.                 load animbrush file as current animation
  1217.                 disabled in DEMO version
  1218.  
  1219.                 
  1220.  
  1221.   SAVEFRAME     $filename            
  1222.  
  1223.                 saves ILBM of current frame                    
  1224.                 disabled in DEMO version
  1225.  
  1226.                 
  1227.  
  1228.   LOADFRAME     $filename            
  1229.  
  1230.                 loads plane 0 of ILBM file to current frame.
  1231.                 Will accept different sizes than frame but
  1232.                 places at upper left corner.
  1233.  
  1234.                 
  1235.  
  1236.   LOADMACROS    $filename            
  1237.  
  1238.                 loads F-key macro file 
  1239.  
  1240.                 
  1241.  
  1242.   SAVEMACROS    $filename            
  1243.  
  1244.                 saves current F-key macros
  1245.  
  1246.  
  1247.  
  1248.   RANDOMBLOCK   x y width height     
  1249.  
  1250.                 fills area with random dots using current randdepth 
  1251.                 ratio. sequences can be repeated by getting and 
  1252.                 setting the random seed.
  1253.                 dots are drawn if ink = 1
  1254.                 and erased if ink = 0
  1255.  
  1256.                 
  1257.  
  1258.   RANDDEPTH     dots total           
  1259.  
  1260.                 sets ratio of dots/totaldots
  1261.                 used in randomblock
  1262.  
  1263.                 
  1264.  
  1265.   GETSEED  
  1266.  
  1267.                 result= seed1 seed2      
  1268.                 returns current random seeds
  1269.  
  1270.                 
  1271.  
  1272.   SETSEED       seed1 seed2               
  1273.  
  1274.                 sets current random seeds
  1275.  
  1276.                 
  1277.  
  1278.   GRAB          x y width height          
  1279.  
  1280.                 clips a brush from current frame
  1281.                 called grab
  1282.  
  1283.                 
  1284.  
  1285.   XFLIPGRAB
  1286.  
  1287.                 flips the current grab-brush horizontally
  1288.  
  1289.                 
  1290.  
  1291.   YFLIPGRAB     
  1292.  
  1293.                 flips the current grab-brush vertically
  1294.  
  1295.                 
  1296.  
  1297.   XYFLIPGRAB     
  1298.  
  1299.                 flips the current grab-brush about x=y axis
  1300.  
  1301.                 
  1302.  
  1303.   SETMINTERM    minterm              
  1304.  
  1305.                 sets right-click stampbrush blitter logic
  1306.  
  1307.                 
  1308.  
  1309.   TRANSBLIT     x y                     
  1310.  
  1311.                 transparent stamp of grab 
  1312.                 to current frame
  1313.  
  1314.                 
  1315.  
  1316.   BLIT          x y                     
  1317.  
  1318.                 opaque stamp of grab to current frame 
  1319.  
  1320.                 
  1321.  
  1322.   BLITM         x y minterm             
  1323.  
  1324.                 stamp of grab to current frame
  1325.                 with blitter logic
  1326.  
  1327.                 
  1328.  
  1329.   BLITINVERSE   x y
  1330.  
  1331.                 blits inverted grab brush
  1332.  
  1333.                 
  1334.  
  1335.   BLITINVERSEBK x y
  1336.  
  1337.                 inverts background and ignores grab brush
  1338.  
  1339.   
  1340.  
  1341.                 
  1342.  
  1343.   BLITSIEVE     x y
  1344.  
  1345.                 turns ON pixels common to grab and background
  1346.                 others are turned OFF
  1347.  
  1348.   
  1349.  
  1350.   CLIPBLIT      xoffset yoffset w h x y
  1351.  
  1352.                 blits a rectangular section of the grab brush
  1353.                 w wide by h high offset from the upper left
  1354.                 corner of the grab brush by xoffset yoffset
  1355.                 to the current frame at position x y.
  1356.  
  1357.   
  1358.  
  1359.   CLIPBLITM     xoffset yoffset w h x y minterm
  1360.  
  1361.   
  1362.  
  1363.   CLIPTRANSBLIT xoffset yoffset w h x y
  1364.  
  1365.   
  1366.  
  1367.   ROTGRABPLANES
  1368.  
  1369.                 If a grab brush is loaded that contains
  1370.                 multiple bit-planes this command rotates
  1371.                 them in a cyclic manner. A six bit-plane
  1372.                 brush can cycle through the six planes.
  1373.                 The current 0 plane will be displayed.
  1374.  
  1375.                 
  1376.  
  1377.   GRABHANDLE    xoff yoff
  1378.  
  1379.                 Sets the handle for the current grab brush.
  1380.                 Offsets are relative to the upper-left corner.
  1381.  
  1382.                 
  1383.  
  1384.   GRABSTEP      size        
  1385.  
  1386.                 Sets the increment for the shifted 2, 8, 4, 6 keys
  1387.                 in moving the grab handle.
  1388.  
  1389.                 
  1390.  
  1391.   FREEGRAB      
  1392.  
  1393.                 frees memory used by grab brush
  1394.  
  1395.                 
  1396.  
  1397.   SAVEGRAB      $filename
  1398.  
  1399.                 disabled in DEMO version
  1400.  
  1401.   
  1402.  
  1403.   LOADGRAB      $filename
  1404.  
  1405.  
  1406.  
  1407.   POLYSCALE     x% y%
  1408.  
  1409.                 sets scaling for polygons
  1410.  
  1411.                 100 100 sets scaling to defined size
  1412.                  50  50 sets scaling to half size
  1413.                 -100 100 flips x axis 
  1414.  
  1415.                 
  1416.  
  1417.   POLYANGLE     angle
  1418.  
  1419.                 sets polygon rotation angle
  1420.  
  1421.                 
  1422.  
  1423.   POLYCENTER    x y
  1424.  
  1425.                 Sets center of rotation for polygon.
  1426.                 The x and y values are relative to
  1427.                 the first point of the polygon. The polygon
  1428.                 will be drawn relative to the center.
  1429.  
  1430.                 
  1431.  
  1432.   POLYASPECT    x% y%
  1433.  
  1434.                 sets an aspect scaling in percent for the
  1435.                 x and y dimensions of the screen.
  1436.                 This helps to preserve the shape of
  1437.                 rotated polygons in various display modes
  1438.  
  1439.                 
  1440.  
  1441.   AUTOASPECT    ON|OFF              
  1442.  
  1443.                 During point entry if autoaspect is on
  1444.                 points will be prescaled to current aspect setting.
  1445.  
  1446.                 
  1447.  
  1448.   POLYSTEP      size        
  1449.  
  1450.                 sets step size of scale and rotation increments
  1451.  
  1452.                 
  1453.  
  1454.   POLY          x y              
  1455.  
  1456.                 draws current polygon at x y using
  1457.                 current scale, rotation and aspect settings.
  1458.                 The polygon will be drawn relative to the CENTER
  1459.                 setting.
  1460.  
  1461.                 
  1462.  
  1463.   AREAPOLY      x y              
  1464.  
  1465.                 draws  FILLED current polygon at x y using
  1466.                 current scale, rotation and aspect settings
  1467.  
  1468.                 
  1469.  
  1470.   POLYSTART     x y 
  1471.  
  1472.                 Starts a polygon defintion
  1473.  
  1474.                 
  1475.  
  1476.   POLYNEXT      x y         
  1477.  
  1478.                 Adds a point to the current polygon definition
  1479.  
  1480.                 
  1481.  
  1482.   POLYCLOSE                   
  1483.  
  1484.                 Ends polygon definition and closes it. If
  1485.                 the 'polygon' is to be non-closed the this command
  1486.                 need not be used.
  1487.  
  1488.                 
  1489.  
  1490.   GETPOLYXY     point# x y
  1491.  
  1492.                 result= x y
  1493.  
  1494.                 returns the screen position of the given point
  1495.                 as if the polygon had been drawn at position x y.
  1496.                 Uses current scale, rotation and aspect settings.
  1497.                 Points are numbered from 0 to N.
  1498.  
  1499.                 
  1500.  
  1501.   GETPOLYCENTER               
  1502.  
  1503.                 result= x y
  1504.  
  1505.                 returns the current center setting of the polygon.
  1506.  
  1507.                 
  1508.  
  1509.                 
  1510.  
  1511.   GETXY      
  1512.  
  1513.                 result= x y           
  1514.  
  1515.                 waits for a mouse click then returns
  1516.                 x y position of click
  1517.  
  1518.                 
  1519.  
  1520.   OKAY1         $string               
  1521.  
  1522.                 displays string in requester
  1523.                 ` is used in string for the " character
  1524.                 ~ is used for a newline character
  1525.  
  1526.                 
  1527.  
  1528.   OKAY2         $string  
  1529.  
  1530.                 result= 0|1  
  1531.  
  1532.                 displays string then returns 0 if cancel hit
  1533.                 or 1 if OK hit
  1534.  
  1535.                 
  1536.  
  1537.   GETSTRING  
  1538.  
  1539.                 result= $string       
  1540.  
  1541.                 gets a string from  a requester
  1542.  
  1543.                 
  1544.  
  1545.   GETINT        
  1546.  
  1547.                 result= integer       
  1548.  
  1549.                 gets a number from requester
  1550.  
  1551.                 
  1552.  
  1553.   GETFRAME      
  1554.  
  1555.                 result= current frame number
  1556.  
  1557.                 
  1558.  
  1559.   GETFRAMES  
  1560.  
  1561.                 result= number of frames in animation
  1562.  
  1563.                 
  1564.  
  1565.   GETPOS     
  1566.  
  1567.                 result=  x y 
  1568.                 current turtle position
  1569.  
  1570.                 
  1571.  
  1572.   GETH       
  1573.  
  1574.                 result= angle
  1575.                 current turtle heading
  1576.  
  1577.                 
  1578.  
  1579.   GETPEN     
  1580.  
  1581.                 result= 0|1
  1582.                 0 if penup or 1 if pendown
  1583.  
  1584.                 
  1585.  
  1586.   GETBRUSH   
  1587.  
  1588.                 result= 0-8
  1589.                 current pixel brush setting
  1590.  
  1591.                 
  1592.  
  1593.   GETCOLOR      reg   
  1594.  
  1595.                 result= r g b
  1596.  
  1597.                 
  1598.  
  1599.   READPIXEL     x y   
  1600.  
  1601.                 result= 0|1
  1602.                 0 if pixel OFF 1 if pixel ON
  1603.  
  1604.                 
  1605.  
  1606.   SCANPIXELON   x y  
  1607.  
  1608.                 result= boolean(0|1) x     
  1609.                 if on pixel exists to right of x y: returns x 
  1610.                 position of next ON pixel to right 
  1611.  
  1612.                 
  1613.  
  1614.   SCANPIXELOFF  x y  
  1615.  
  1616.                 result= boolean(0|1) x     
  1617.                 scans for OFF pixel
  1618.  
  1619.                 
  1620.  
  1621.   CHOOSE        number    
  1622.  
  1623.                 result= randnumber 
  1624.                 return number in range 0 to number-1
  1625.  
  1626.                 
  1627.  
  1628.   TRANSPARENT           
  1629.  
  1630.                 sets colors to those saved by opaque
  1631.  
  1632.                 
  1633.  
  1634.   OPAQUE                
  1635.  
  1636.                 sets colors of non-current frames to background
  1637.                 and saves current colors
  1638.  
  1639.                 
  1640.  
  1641.   LOADFONT      $fontname size     
  1642.  
  1643.                 Loads requested disk font
  1644.  
  1645.                 
  1646.  
  1647.   FONTREQ       
  1648.  
  1649.                 Uses font requester for font load
  1650.                 (Select both a fontname and size)
  1651.  
  1652.                 
  1653.  
  1654.   FREEFONT                   
  1655.  
  1656.                 Frees font from memory
  1657.  
  1658.                 
  1659.  
  1660.   STYLE         $PBIU              
  1661.  
  1662.                 sets font to Plain Bold Italic or Underline
  1663.                 if that upper case letter occurs in argument
  1664.  
  1665.  
  1666.  
  1667.  
  1668.  
  1669. BLITTER LOGIC
  1670.  
  1671.  
  1672.  
  1673. Values for blitter minterm logic should be of the form N*16 where N 
  1674. ranges from 0 to 15. The destination of blits is always the current 
  1675. frame. The source may be various objects, the grab-brush or the 
  1676. tempframe buffer.  Rather than try to explain each minterm effect the 
  1677. follow macro program gives a graphic example. This macro is designed 
  1678. for a HIRES screen. It blits overlapping filled circles using the 16 
  1679. different minterms. The output is much like Venn diagrams modeling the 
  1680. blitter logic used.
  1681.  
  1682.  
  1683.  
  1684. /* blitm demo */
  1685.  
  1686.  
  1687.  
  1688. signal on error
  1689.  
  1690.  
  1691.  
  1692. first
  1693. clearframe
  1694. do j= 1 to 4
  1695.    do k= 1 to 4
  1696.       odisk 128*j 40*k 40 15
  1697.       end
  1698.    end  
  1699.  
  1700. add   
  1701. next
  1702. minterm= 0   
  1703. do j= 0 to 3   
  1704.    do k= 0 to 3
  1705.    grab 80+j*128 20+k*40 120 40
  1706.    blitm 64+j*128 20+k*40 minterm*16   
  1707.    text  64+j*128 30+k*40 minterm*16
  1708.    minterm= minterm +1
  1709.    end
  1710.   end 
  1711. exit  
  1712.  
  1713. error:
  1714.  exit sigl
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720. For more information or comments/problems contact:
  1721.  
  1722.     Martin C. Kees
  1723.     c/o SoftWare on a ShoeString
  1724.     1116 Road 68
  1725.     Pasco, Wa 99301
  1726.    
  1727.  
  1728.     bix:mkees
  1729.