home *** CD-ROM | disk | FTP | other *** search
/ Amiga Elysian Archive / AmigaElysianArchive.iso / wp_dtp / proan111.lha / ProANSI.doc < prev    next >
Text File  |  1992-05-28  |  25KB  |  856 lines

  1.  
  2.                                Introduction
  3.  
  4.                                   Welcome
  5.  
  6. Welcome  to  ProANSI,  a  flexible  ansi editor for the Commodore AMIGA.  I
  7. started  writing  this  program last year, because I was not satisfied with
  8. the  existing  programs.   They all had their strong points, but neither of
  9. them  was  complete.   Because  I desparately needed a good program for the
  10. design of all menus for my BBS I wrote ProANSI.
  11.  
  12. I originally started developing ProANSI on an A2000C under 1.3, but lateron
  13. I  switched  to  my  A500  under  2.04.   Therefore I decided to design the
  14. program  so that it will run both under 1.x and under 2.04, and use as many
  15. features  of  each  OS as possible.  Recently I've upgraded to the A3000/25
  16. and continued the development on this machine.
  17.  
  18.                                  ShareWare
  19.  
  20. This  program is brought to you under the concept of ShareWare.  This means
  21. that  if you like this program after using it for a limited period you must
  22. register  it.   You  can  contact  me through my BBS:  ``The Empire Strikes
  23. Back'',  which  is situated in Delft, The Netherlands.  You can reach it by
  24. calling:   (0)15-147099.   The  BBS  will  also  be used as support BBS for
  25. ProANSI.   Alternatively  you  can reach me at NLA-NET 14:100/501.2 (matrix
  26. netmail).
  27.  
  28. For  more  information  on registering please read the ``Registration.doc''
  29. which  is  supplied  with  this archive.  All legal stuff can also be found
  30. there.
  31.  
  32.                                Installation
  33.  
  34. Installing  ProANSI is really simple.  You just put it on your harddisk and
  35. it  will  work.   In  your  LIBS:   directory  you  will need the following
  36. libraries:
  37.  
  38.  -  ``diskfont.library''
  39.  -  ``req.library''                                        Under 1.xx only!
  40.  -  ``rexxsyslib.library''
  41.  -  ``asl.library''                                        Under 2.04 only!
  42.  -  ``utility.library''                                    Under 2.04 only!
  43.  
  44.  
  45. Optionally, you can use an IBM style font.  The (hardcoded) default font is
  46. the  ``IBM.font'', but you can easily change this in the preferences, so in
  47. fact,  you  can  use  any  8  by  8 fixed-width font that is in your FONTS:
  48. directory.
  49.  
  50. ProANSI can be started from a Shell or from the Workbench.  No arguments or
  51. tool  types  can  be  added.  Everything should work fine with the standard
  52. stack  size,  so  you don't have to change that either.  ProANSI works both
  53. under PAL and NTSC, and will open its screen accordingly.  PAL systems have
  54. a vertical resolution of 30 lines, NTSC systems have 23 at present.
  55.  
  56.                            Working with ProANSI
  57.  
  58. It  is very easy to work with ProANSI, because of the fact that the program
  59. sticks closely to the style guide.
  60.  
  61.                                The Keyboard
  62.  
  63. A  lot  of  things  (if  not everything) can be done by using the keyboard,
  64. which  was done on purpose, because creating a screen forces you to use the
  65. keyboard  anyway.   Therefore, almost every menu option also has a keyboard
  66. shortcut.  When ProANSI reads a key from the keyboard, it always takes into
  67. account the current keymap, so this program can be used with any keymap (so
  68. everybody should be happy :-)
  69.  
  70.                               Cursor Movement
  71.  
  72. The  cursor  can  be  moved  in several ways.  If you type a character, the
  73. cursor  will  automatically  move right one position.  Typing Return forces
  74. the  cursor  to  the beginning of the next line.  Furthermore, you can move
  75. the  cursor  with the cursor keys.  If you hold down the SHIFT key together
  76. with  the cursor movement keys, the cursor will move to the boundary of the
  77. screen.  Finally, you can move it with the mouse by pressing the left mouse
  78. button.
  79.  
  80.                                Function Keys
  81.  
  82. With  the  ten function keys you can select one of ten different keyblocks.
  83. The  current  keyblock  is  shown  in  the  bottom right area of the status
  84. window.
  85.  
  86.                            The numeric keyblock
  87.  
  88. These  keys  can  be defined by the user.  As mentioned before, the current
  89. keyblock  is  shown  in  the status window.  The keyblocks were designed so
  90. that  you  can  easily  access  all  the (otherways hard to reach) graphics
  91. characters.
  92.  
  93.                               The ESCape Key
  94.  
  95. With  this  key  you  can bring back the status window (to front) if you've
  96. clicked  it  to back with the appropriate gadget.  This mechanism was added
  97. to allow you to view the screen completely.
  98.  
  99.                            Backspace and DELete
  100.  
  101. Both  keys  work  like  they  should.   Remember that neither backspace nor
  102. DELete  will  move the rest of the line if you are not in insert mode.  The
  103. backspace  key  can  be  made destructive or not.  If it is not, and insert
  104. mode is off, the cursor will only go left one character.
  105.  
  106.                                  The Menus
  107.  
  108. The  menus  work  as  with  any  normal  program.   As many menu options as
  109. possible  were  given  a  keyboard  shortcut, so you don't need to grab the
  110. mouse every time you want to select a menu item.
  111.  
  112. Project
  113.  
  114. This  menu  allows you to control the project you're working on, so this is
  115. where you can for example load or save your work.
  116.  
  117.  - New
  118.  
  119. Starts a new project, which totally erases the project you were working on.
  120. This  action  cannot  be undone by using the undo option, so make sure your
  121. project was saved before selecting this option.
  122.  
  123.  - Open...
  124.  
  125. Loads a new project from disk.  The current project will be erased.  If you
  126. want  to cancel this operation, you can click the `Forget It' gadget in the
  127. file requester.  Nothing will be erased when you do this.
  128.  
  129.  - Include...
  130.  
  131. Adds  a  project  to  the  current  one.  It starts inserting text from the
  132. current cursor position, and if it encounters a clearscreen code, this will
  133. be converted to `cursor home' and the screen will not be cleared.
  134.  
  135. Keep  in  mind  that the No Background and No Foreground flags will stay in
  136. effect  when loading a picture.  This allows you to instantly filter colors
  137. from a file.
  138.  
  139.  - Save
  140.  
  141.    - Ascii
  142.  
  143. The  screen  is  saved  as pure (extended) ascii.  All color information is
  144. lost, and no cursor movement instructions will be used.
  145.  
  146.    - Ansi
  147.  
  148. The  screen  is  saved  as an ansi screen, including colors.  I've tried to
  149. keep this routine more or less ANSI X3.64 -- 1979 compatible.
  150.  
  151.    - Ansi Anim
  152.  
  153. The screen is saved as an ansi animation.  The program remembers everything
  154. you enter, and can therefore build an ansi animation from that information.
  155.  
  156.  
  157.  - Save As
  158.  
  159.  
  160.    - Ascii...
  161.  
  162. Same  as  under  Save  only  that  here you will always be asked to enter a
  163. filename.
  164.  
  165.    - Ansi...
  166.  
  167. Same  as  under  Save  only  that  here you will always be asked to enter a
  168. filename.
  169.  
  170.    - Ansi Anim...
  171.  
  172. Same  as  under  Save  only  that  here you will always be asked to enter a
  173. filename.
  174.  
  175.  
  176.  - Preview
  177.  
  178. Shows  how  the  screen  will  be built if you save it.  In case of an ansi
  179. animation,  you  will  see the screen as you've entered it.  Otherwise, the
  180. screen will be rebuilt top to bottom.
  181.  
  182.  - About...
  183.  
  184. Shows you the current version number of the program.
  185.  
  186.  - Quit
  187.  
  188. Ends  the  program after asking for a conformation that this is really what
  189. you want.
  190.  
  191.  
  192. Edit Normal
  193.  
  194. Here you can perform all edit operations when in normal mode.  When you are
  195. in  animation  mode, this menu will be ghosted which means you can't select
  196. any items.
  197.  
  198. For  most items you will have to select an area with your mouse first.  You
  199. do this by holding down the left mouse button and dragging the mouse across
  200. the area you want to select.
  201.  
  202.  - Mark Block
  203.  
  204. This  item  allows  you  to mark a block with your cursor keys.  This is an
  205. alternative  to  the  mouse drag method, for those of you who don't want to
  206. reach for the mouse every time they want to mark a block.
  207.  
  208.  - Cut Block
  209.  
  210. Cuts  out  the selected area.  The contents will be put in the copy buffer.
  211. The  empty  space  is filled with spaces (in foreground color 7, background
  212. color 0).
  213.  
  214.  - Copy Block
  215.  
  216. Copies the selected area to the copy buffer.
  217.  
  218.  - Paste Block
  219.  
  220. Pastes the area in the copy buffer back to the screen.  The top left corner
  221. is determined by the position of the cursor.
  222.  
  223.  - Box Block
  224.  
  225. Draws  a  box  around  the  selected area.  The box will be drawn using the
  226. currently selected keyblock, using the 7 as the top-left, 9 as top-right, 1
  227. as  bottom-left and 3 as bottom-right character, the 0 for horizontal lines
  228. and the Enter key for vertical lines.
  229.  
  230.  - Cut Line
  231.  
  232. Cuts  the line on which the cursor is standing out of the screen.  The rest
  233. of  the  screen will be moved up one line, and the line you cut out is kept
  234. in the so called line buffer.
  235.  
  236.  - Copy Line
  237.  
  238. Copies the line the cursor is standing on to the line buffer.
  239.  
  240.  - Paste Line
  241.  
  242. Pastes  the  line  from the line buffer to the line the cursor is currently
  243. on.   The  rest  of the screen is moved down one line, and the last line of
  244. the screen is therefore lost.
  245.  
  246.  - Delete Line
  247.  
  248. Deletes  the  line  the cursor is on.  It will not be removed but is filled
  249. with spaces.
  250.  
  251.  
  252. Edit Anim
  253.  
  254. In  this menu you'll find all edit operations that can be performed when in
  255. animation  mode.   Most  of  them  have  something to do with the undo/redo
  256. buffer, which is used when making an animation.  If you're not in animation
  257. mode,  this  entire  menu  will  be  ghosted, and therefore no items can be
  258. selected.
  259.  
  260.  - Undo
  261.  
  262. With the Undo function you can take back your edit operations step by step.
  263. If you undo something it will not be lost, so you can also undo some steps,
  264. then add some new, and finally redo the steps you'd undone.
  265.  
  266.  - Undo All
  267.  
  268. Simply  repeats  the  Undo  operation until it arrives at the blank (black)
  269. screen you started with.
  270.  
  271.  - Zap Undo
  272.  
  273. This  operation  works  like the Undo option except for the fact that a Zap
  274. Undo can't be taken back by the Redo option (it is gone, therefore the name
  275. `zap').
  276.  
  277.  - Redo
  278.  
  279. With  the  `redo'  function  you  can  redo  everything you've removed with
  280. `undo'.
  281.  
  282.  - Redo All
  283.  
  284. Calls  the  Redo  function  until  it  arrives  at the end of the undo/redo
  285. buffer.
  286.  
  287.  - Kill Redo Buffer
  288.  
  289. Kills  all  characters in the redo buffer.  This is useful when you want to
  290. delete the `rest' of an animation.
  291.  
  292.  
  293. Color
  294.  
  295. This menu allows you to do almost anything with the colors of your project.
  296. You can recolor characters or blocks, and lots of other useful things.
  297.  
  298.  - No Foreground
  299.  
  300. If  this  flag  is enabled, you can't overwrite the foreground color of the
  301. characters,  which  means that it will remain the same.  This is handy when
  302. you  want  to  change  some  text in a multicolor screen, without having to
  303. worry  about (re)selecting colors all the time.  Also, you could filter the
  304. foreground colors out of a screen by enabling this option, and subsequently
  305. loading an ansi screen.
  306.  
  307.  - No Background
  308.  
  309. If  this  flag  is enabled, you can't overwrite the background color of the
  310. characters.  The same rules apply as with No Foreground.
  311.  
  312.  - Get
  313.  
  314.    - Foreground
  315.  
  316. Grabs  the foreground color under the cursor, and selects it as the current
  317. foreground color.
  318.  
  319.    - Background
  320.  
  321. Grabs  the background color under the cursor, and selects it as the current
  322. background color.
  323.  
  324.    - Both
  325.  
  326. Grabs  the fore- and background color under the cursor, and selects them as
  327. the current colors.
  328.  
  329.  - Set
  330.  
  331. If  a  block  was marked, these functions apply to the whole block, if not,
  332. they apply to the character under the cursor.
  333.  
  334.    - Foreground
  335.  
  336. Changes the foreground color.
  337.  
  338.    - Background
  339.  
  340. Changes the background color.
  341.  
  342.    - Both
  343.  
  344. Changes both the foreground and the background color.
  345.  
  346.  
  347. Prefs
  348.  
  349. In  this  menu,  you  can  configure  the  program  to your own needs.  All
  350. preference  settings can be saved under a selectable name.  At startup, the
  351. file  ``ProANSI.prefs''  is  automatically  loaded, if found in the current
  352. directoryWhen  started  from  a  Shell be careful with including ProANSI in
  353. your path, because if you do, you'll be able to start it from any directory
  354. and it probably won't find it's preferences..
  355.  
  356.  - Open...
  357.  
  358. Opens  new preferences.  Be careful when using this option, because it will
  359. erase  your current project.  Of course, you'll be notified of this, so you
  360. can abort the operation if you selected it be accident.
  361.  
  362.  - Save
  363.  
  364. Saves the preferences under the `current' name.
  365.  
  366.  - Save As...
  367.  
  368. Saves  the  preferences  under  a  name  you can select using a file (save)
  369. requester.   As  a convention you should use `.prefs' as a suffix, but this
  370. is  not  necessary at all.  ProANSI recognizes the files it saves.  For the
  371. programmers  amongst you, the format of the preferences file is supplied in
  372. the `Technical Reference' chapter..
  373.  
  374.  - Screen Mode...
  375.  
  376. This feature is not implemented in this version of ProANSI, but was left in
  377. because in the future it probably will.
  378.  
  379.  - Palette...
  380.  
  381. Allows  you  to  change  the  on screen colors.  Be careful to stick to the
  382. original  ansi  colors  unless you know what you're doing.  This option was
  383. implemented  so  you  can  adjust the colors slightly to adapt them to your
  384. monitor.
  385.  
  386.  - Font...
  387.  
  388. Here  you can select a new font.  Be careful to only use 8 by 8 fixed-width
  389. fonts.   Especially  under  1.x  (when the ``req.library'' is used) you can
  390. select lots of other fonts, but this will not look good.
  391.  
  392.  - Keyblocks...
  393.  
  394. Opens  the  keyblocks  editor,  where all ten keyblocks can be modified.  I
  395. think  the  window  that  opens  kind of explains itself.  You can select a
  396. keyblock by number and modify the keys by selecting them and changing their
  397. ascii code.  Remember that any code can be selected here, but not all codes
  398. are printable in most programs.
  399.  
  400.  - Insert
  401.  
  402. Toggles the insert mode, which only works in normal mode (when Anim Mode is
  403. turned off).
  404.  
  405.  - Line Wrap
  406.  
  407. Toggles the line wrap mode, which affects the way the cursor reacts when it
  408. reaches  the  left  or right border.  This only applies to editing, and has
  409. nothing to do with the way screens are loaded or saved.
  410.  
  411.  - Page Wrap
  412.  
  413. Toggles the page wrap mode, which affects the way the cursor reacts when it
  414. reaches the top or bottom of the screen.
  415.  
  416.  - Destructive BS
  417.  
  418. Toggles  the backspace key, which can be made destructive or not.  If it is
  419. destructive,  it  will  erase the character when you press the key, if not,
  420. the cursor will simply move left one character.
  421.  
  422.  - Anim Mode
  423.  
  424. Toggles  the  animation  mode.   The current project will be converted, but
  425. some  information  will be lost when going out of the animation mode, which
  426. is inevitable.
  427.  
  428.  - Save CR+LF
  429.  
  430. Toggles  the saving of a CR (Carriage Return) with each line feed.  This is
  431. necessary  on  most MS-DOS machines, and saves you the trouble of having to
  432. do  this  yourself.   The  save  routines  will take this into account when
  433. optimizing  the length of the file, so enabling this option will be shorter
  434. than simply adding a CR in front of each LF by hand.
  435.  
  436.  - Save Clearscreen
  437.  
  438. Toggles the saving of a clearscreen code at the start of each file.
  439.  
  440.  
  441.                                ARexx Support
  442.  
  443. Probably the most powerful feature of ProANSI is its ARexx interface.  This
  444. is  the  main  reason why I started programming ProANSI in the first place.
  445. For  example,  how  many  times  have  you tortured yourself by loading and
  446. saving  dozens  of files, just because you want to create ascii versions of
  447. your  ansi screens?  Now you can do this with a simple script file.  If you
  448. are SysOp of a BBS then you could also generate screens with arexx commands
  449. automatically,  for  example  to  generate  new  `lastcallers'  screens, or
  450. messages  to  next  caller, or news bulletins, or...  The possibilities are
  451. endless.
  452.  
  453. I've  included lots of example scripts, including an AutoMenu script, which
  454. creates  menus  automatically  from  simple script files, in which you only
  455. need to specify the commands, (hot)keys and titles of each menu.
  456.  
  457.                                 Using ARexx
  458.  
  459. For  a  more  complete  description  of  ARexx,  you'll have to dig up your
  460. manual.   I'll  only explain the necessary things.  ProANSI 's message port
  461. name  is  ``REXX_ProANSI'' (mind the case!), and all commands are explained
  462. in  the  `Command  Reference'  section.   Please  don't  forget  to turn on
  463. `OPTIONS  RESULTS'  if you want to have results.  ARexx is a language which
  464. can best be learned by using it, so have fun!
  465.  
  466.                              Command Reference
  467.  
  468. In  general,  all  commands  will return a return code of 10 when something
  469. went  wrong,  and  0 when the command succeeded.  Some commands return 5 if
  470. you're  in  the  wrong  mode (in Normal Mode, undo for example won't work).
  471. Arguments must be supplied unless they are in square brackets.
  472.  
  473.  
  474. quit
  475.  
  476. Stops  the program as soon as possible, without further confirmation.  Make
  477. sure you've saved your work.
  478.  
  479. Example:  quit
  480.  
  481.  
  482. version
  483.  
  484. Returns  the  current (FULL) version string.  Make sure to turn on `OPTIONS
  485. RESULTS', because the string is returned in the variable `result'.
  486.  
  487. Example:  version
  488.  
  489.  
  490. go_up  [nr]
  491.  
  492. Moves  the  cursor up.  If the optional argument is supplied, you can state
  493. how  many  lines the cursor will move up.  If you don't supply an argument,
  494. the cursor will go up one position.
  495.  
  496. Example:  go_up 5
  497.  
  498.  
  499. go_down  [nr]
  500.  
  501. Moves the cursor down.  If the optional argument is supplied, you can state
  502. how many lines the cursor will move down.  If you don't supply an argument,
  503. the cursor will go down one position.
  504.  
  505. Example:  go_down
  506.  
  507.  
  508. go_left  [nr]
  509.  
  510. Moves the cursor left.  If the optional argument is supplied, you can state
  511. how many lines the cursor will move left.  If you don't supply an argument,
  512. the cursor will go left one position.
  513.  
  514. Example:  go_left 30
  515.  
  516.  
  517. go_right  [nr]
  518.  
  519. Moves  the  cursor  right.   If  the optional argument is supplied, you can
  520. state  how  many  lines the cursor will move right.  If you don't supply an
  521. argument, the cursor will go right one position.
  522.  
  523. Example:  go_right 7
  524.  
  525.  
  526. set_pos  xpos ypos
  527.  
  528. Places  the cursor at a certain position.  The origin (0,0) lies at the top
  529. left of the screen.
  530.  
  531. Example:  set_pos 2 4
  532.  
  533.  
  534. print_string  string
  535.  
  536. Prints  a string, starting at the current cursor position.  This string can
  537. contain  only  printable ascii characters, so you're not allowed to include
  538. ansi  codes.   The  string  argument  doesn't  has  to be in quotes when it
  539. contains  spaces,  because  everything behind the command is treated as the
  540. string.  The sting is printed in the current text colors.
  541.  
  542. Example:  print_string This is an example.
  543.  
  544.  
  545. select_col  fore back
  546.  
  547. Selects  a  new  fore  and back color.  This is the same as selecting a new
  548. color  in  the  status  window.   Color  values  range from 0 -- 15 for the
  549. foreground and 0 -- 7 for the background.
  550.  
  551. Example:  select_col 15 3
  552.  
  553.  
  554. select_fcol  fore
  555.  
  556. Selects a new foreground color (0 -- 15).
  557.  
  558. Example:  select_fcol 6
  559.  
  560.  
  561. select_bcol  back
  562.  
  563. Selects a new background color (0 -- 7).
  564.  
  565. Example:  select_bcol 3
  566.  
  567.  
  568. set_col
  569.  
  570. Changes  the fore- and background colors under the cursor (or block) to the
  571. currenly selected colors, just like the menu command Set -- Both.
  572.  
  573. Example:  set_col
  574.  
  575.  
  576. set_fcol
  577.  
  578. Changes  the  foreground  color under the cursor (or block) to the currenly
  579. selected foreground color, just like the menu command Set -- Foreground.
  580.  
  581. Example:  set_fcol
  582.  
  583.  
  584. set_bcol
  585.  
  586. Changes  the  background  color under the cursor (or block) to the currenly
  587. selected background color, just like the menu command Set -- Background.
  588.  
  589. Example:  set_bcol
  590.  
  591.  
  592. undo
  593.  
  594. Undoes  the  last change, just like the menu command.  Of course, this only
  595. works in Anim Mode.
  596.  
  597. Example:  undo
  598.  
  599.  
  600. redo
  601.  
  602. Redoes  the  last change, just like the menu command.  Of course, this only
  603. works in Anim Mode.
  604.  
  605. Example:  redo
  606.  
  607.  
  608. zap_undo
  609.  
  610. Zap  undoes  the  last change, just like the menu command.  Of course, this
  611. only works in Anim Mode.
  612.  
  613. Example:  zap_undo
  614.  
  615.  
  616. undo_all
  617.  
  618. Undoes all changes, just like the menu command.  Of course, this only works
  619. in Anim Mode.
  620.  
  621. Example:  undo_all
  622.  
  623.  
  624. redo_all
  625.  
  626. Redoes all changes, just like the menu command.  Of course, this only works
  627. in Anim Mode.
  628.  
  629. Example:  redo_all
  630.  
  631.  
  632. kill_redos
  633.  
  634. Kills  all  characters  in the redo buffer, just like the menu command.  Of
  635. course, this only works in Anim Mode.
  636.  
  637. Example:  kill_redos
  638.  
  639.  
  640. new
  641.  
  642. Starts  a  new  project, without asking for confirmation, so be careful and
  643. save your current project before calling this function.
  644.  
  645. Example:  new
  646.  
  647.  
  648. preview
  649.  
  650. Previews the current screen or animation, just like the menu option.
  651.  
  652. Example:  preview
  653.  
  654.  
  655. get_xpos
  656.  
  657. Returns the current x-position of the cursor (in the variable `result').
  658.  
  659. Example:  get_xpos
  660.  
  661.  
  662. get_ypos
  663.  
  664. Returns the current y-position of the cursor (in the variable `result').
  665.  
  666. Example:  get_ypos
  667.  
  668.  
  669. get_fcol
  670.  
  671. Returns  the current foreground color of the character under the cursor (in
  672. the variable `result').
  673.  
  674. Example:  get_fcol
  675.  
  676.  
  677. get_bcol
  678.  
  679. Returns  the current background color of the character under the cursor (in
  680. the variable `result').
  681.  
  682. Example:  get_bcol
  683.  
  684.  
  685. get_char
  686.  
  687. Returns  the  current  ascii code of the character under the cursor (in the
  688. variable `result').
  689.  
  690. Example:  get_char
  691.  
  692.  
  693. save_ascii  filename
  694.  
  695. Saves the screen as an (extended) ascii file.  You must supply a (path and)
  696. filename.
  697.  
  698. Example:  save_ascii menus:main-user.txt
  699.  
  700.  
  701. save_ansi  filename
  702.  
  703. Saves the screen as an ansi file.  You must supply a (path and) filename.
  704.  
  705. Example:  save_ansi menus:main-user.gr1
  706.  
  707.  
  708. save_ansi_anim  filename
  709.  
  710. Saves  the  screen as an ansi animation file.  You must supply a (path and)
  711. filename.
  712.  
  713. Example:  save_ansi_anim menus:main-user.anim
  714.  
  715.  
  716. load_file  filename
  717.  
  718. Opens a project from filename.  It erases anything you're currently working
  719. on, so be careful.
  720.  
  721. Example:  load_file menus:lastcaller.gr1
  722.  
  723.  
  724. include_file  filename
  725.  
  726. Includes filename to the current project.
  727.  
  728. Example:  include_file menus:header.gr1
  729.  
  730.  
  731. mark_block  x1 y1 x2 y2
  732.  
  733. Marks  a block.  This is the same as marking a block with the mouse, except
  734. that you don't see the block when you mark it like this.  It doesn't matter
  735. which corners of the block you specify.
  736.  
  737. Example:  mark_block 10 20 40 5
  738.  
  739.  
  740. cut_block
  741.  
  742. Cuts the marked block out of the screen, unless we're in Anim Mode.
  743.  
  744. Example:  cut_block
  745.  
  746.  
  747. copy_block
  748.  
  749. Copies the marked block, unless we're in Anim Mode.
  750.  
  751. Example:  copy_block
  752.  
  753.  
  754. paste_block
  755.  
  756. Pastes  the block which was in the copy buffer back on screen, unless we're
  757. in  Anim  Mode.   The topleft corner is the current cursor position, so you
  758. might want to set that first.
  759.  
  760. Example:  paste_block
  761.  
  762.  
  763. box_block
  764.  
  765. Draws a box around the currenly marked block, unless we're in Anim Mode.
  766.  
  767. Example:  box_block
  768.  
  769.  
  770. cut_line
  771.  
  772. Cuts the line out of the screen, just like the menu option, unless we're in
  773. Anim Mode.
  774.  
  775. Example:  cut_line
  776.  
  777.  
  778. copy_line
  779.  
  780. Copies the line, just like the menu option, unless we're in Anim Mode.
  781.  
  782. Example:  copy_line
  783.  
  784.  
  785. paste_line
  786.  
  787. Pastes  the line which was in the line buffer back on screen, just like the
  788. menu option, unless we're in Anim Mode.
  789.  
  790. Example:  paste_line
  791.  
  792.  
  793. delete_line
  794.  
  795. Deletes the line, just like the menu option, unless we're in Anim Mode.
  796.  
  797. Example:  delete_line
  798.  
  799.  
  800.                             Technical Reference
  801.  
  802.                           Preference file format
  803.  
  804. The  preference  files  start  with a four character ID, which currently is
  805. `PAN1' but will be changed whenever the file format changes.  After the ID,
  806. the  following structure is saved.  All fields in the preferences files are
  807. READ ONLY, and only apply to the current (`PAN1') file format.
  808.  
  809. typedef struct program_prefs
  810. {
  811.      USHORT         num_of_colors;
  812.      USHORT         palette[16];
  813.      UBYTE          x_size, y_size;
  814.      char           font_name[40];
  815.      USHORT         flags;
  816.      UBYTE          keyblocks[10][18];
  817. };
  818.  
  819. /*
  820.  * Flag definitions, as used in the USHORT flags field:
  821.  */
  822. #define F_INSERT        0x0001 /* Insert/Overstrike      */
  823. #define F_LINEWRAP      0x0002 /* Line Wrap (LEFT/RIGHT) */
  824. #define F_PAGEWRAP      0x0004 /* Page Wrap (UP/DOWN)    */
  825. #define F_DESTRUCTIVEBS 0x0008 /* Destructive BackSpace  */
  826. #define F_UNDOREDO      0x0010 /* Enable Anim Mode       */
  827. #define F_SAVECRLF      0x0020 /* Save LF as CR+LF       */
  828. #define F_CLEARSCREEN   0x0040 /* Save Clearscreen Code  */
  829. #define F_NOFOREGROUND  0x0080 /* No Foreground          */
  830. #define F_NOBACKGROUND  0x0100 /* No Background          */
  831.  
  832.                                  Thank You
  833.  
  834. In  this  chapter  I  want  to  thank  everybody  who  helped  me  with the
  835. development  of  ProANSI.  Without these people, ProANSI wouldn't have been
  836. the program it is today.
  837.  
  838.  
  839.  -  First  I  want  to  thank  Albert-Jan  Brouwer for his support when I'd
  840. encountered  some weird crashes.  Since I didn't have a MMU, I couldn't use
  841. the  ``Enforcer'',  so  he  did this for me.  In the end, we discovered the
  842. bug, but without his help I would probably never have found it.
  843.  
  844.  -  Secondly  I  want  to thank all the beta testers, who came up with some
  845. nice ideas and lots of bug reports.  I want to thank Leo Elsinga for coming
  846. up  with  the name for my editor.  Thanks also go to:  Cor Knijnenburg, Aad
  847. Nieuwmans,  Louis  Roggeveen,  Rene  Te  Pas, René Kuipers, Ed Mirck, Peter
  848. Kist, Peter Hagen and Frank Groen.
  849.  
  850.  - Finally I want to thank Bard Papegaaij for learning me how to program in
  851. `C'  and especially how to handle large projects.  And, last but not least,
  852. Joost Boerhout for sending me the documents of the ANSI/VT100 standards.
  853.  
  854.  -  Of course, there will be many people I've forgotten, so please don't be
  855. angry if your name isn't here.  Just contact me and I will fix it!
  856.