home *** CD-ROM | disk | FTP | other *** search
/ PC-Online 1998 February / PCOnline_02_1998.iso / filesbbs / dos / mxp_110a.exe / MAXINFO.DOC < prev    next >
Encoding:
Text File  |  1997-02-23  |  108.7 KB  |  2,200 lines

  1.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2.  ║     FIRST THINGS FIRST - READ THE FILE WARNING.TXT BEFORE PROCEEDING!     ║
  3.  ╚═══════════════════════════════════════════════════════════════════════════╝
  4.  ╔═══════════════════════════════════════════════════════════════════════════╗
  5.  ║ You may want to freq or download the file MAXTIPS.DOC from my BBS to help ║
  6.  ║ you understand the ins and outs of MAX Graphics more clearly. There isn't ║
  7.  ║ anything complicated about adding MAX Graphics to your BBS or doors,  but ║
  8.  ║ I figure any extra help and information is better than none at all. True? ║
  9.  ╚═══════════════════════════════════════════════════════════════════════════╝
  10.   ┌──────────   ┌───────────   ┌─────   ┌─────────────────────────────────────┐
  11.  ┌───     ┌───  ┌───     ┌───   ┌───    │    Creators of "The Comm Router"!   │
  12.  ┌───     ┌───  ┌───     ┌───   ┌───    │                                     │
  13.  ┌───     ┌───  ┌───     ┌───   ┌───    │     Now the official managers of    │
  14.  ┌───     ┌───  ┌───     ┌───   ┌───    │       "BBS Utiliteez Software"      │
  15.  ┌───     ┌───  ┌───     ┌───   ┌───    │                                     │
  16.  ┌───     ┌───  ┌───     ┌───   ┌───    │ Stephan Pollack  [CEO]              │
  17.   ┌──────────   ┌───────────   ┌─────   │ Doug Harrington  [Chief Programmer] │
  18.                                         │  FidoNet 1:285/703 - utilz@bbc.net  │
  19.    Online  Development  Incorporated    │    Support BBS/FAX: 308-762-2239    │
  20.                                         └─────────────────────────────────────┘
  21. ───────────────────────────────────────────────────────────────────────────────
  22.   ▀▀▀   ▀▀▀   ▀▀▀▀▀   ▀▀   ▀▀
  23.   ▀▀▀▀ ▀▀▀▀  ▀▀   ▀▀   ▀▀ ▀▀
  24.   ▀▀ ▀▀▀ ▀▀  ▀▀▀▀▀▀▀    ▀▀▀    ╔══ ╦═╗ ╔═╗ ╦═╗ ╦ ╦ ╦ ╔═╗ ╔═╗
  25.   ▀▀  ▀  ▀▀  ▀▀   ▀▀   ▀▀ ▀▀   ║ ╦ ╠╦╝ ╠═╣ ╠═╝ ╠═╣ ║ ║   ╚═╗
  26.   ▀▀     ▀▀  ▀▀   ▀▀  ▀▀   ▀▀  ╚═╝ ╩╚═ ╩ ╩ ╩   ╩ ╩ ╩ ╚═╝ ╚═╝  v1.15
  27. ───────────────────────────────────────────────────────────────────────────────
  28.   The Universal Multimedia Interface For BBS Software
  29.   Copyright 1995-1997 * Larry L. Athey * BBS Utiliteez Software
  30. ───────────────────────────────────────────────────────────────────────────────
  31.  
  32.  
  33.   Information Regarding MAX Graphics:
  34.   ───────────────────────────────────
  35.   Notice is hereby given that the MAXscript/MAXcontrol/MAXcolor language,
  36.   and MAXterm are products of BBS Utiliteez Software and are protected by
  37.   US copyrights listed with the US Library Of Congress (1996)....
  38.  
  39.   No changes, additions, subtractions, or other modifications shall be made
  40.   to MAXscript/MAXcontrol/MAXcolor language or the MAX Graphics development
  41.   kit without express written permission from Larry L. Athey, BBS Utiliteez
  42.   Software, Alliance, Nebraska, USA....
  43.  
  44.   The MAXscript/MAXcontrol/MAXcolor language may be used in any BBS or Door
  45.   software 100% royalty free. You are also allowed to implement full local
  46.   graphics viewing in any BBS or Door software 100% royalty free. However,
  47.   any program that uses the MAXscript/MAXcontrol/MAXcolor language *MUST*
  48.   bear the MAX Graphics/BBS Utiliteez Software copyright notice....
  49.  
  50.  
  51.   Example: MAX Graphics and the MAXscript/MAXcontrol/MAXcolor language is
  52.            Copyright 1995-1997 * Larry L. Athey * BBS Utiliteez Software
  53.  
  54.  
  55.   Disclaimer:
  56.   ───────────
  57.   MAX Graphics, MAXscript/MAXcontrol/MAXcolor and MAXterm are by no means
  58.   copies of, or otherwise plagiarized remote graphics methods used by any
  59.   other BBS software. Even though MAXterm responds to 3 commands used by
  60.   RIPscript and other RIP capable BBSes, this isn't any kind of a copyright
  61.   infringement of the RIP technology. These same strings of text randomly
  62.   occur in computers all the time. Besides, according the the US Library Of
  63.   Congress there is no copyright or trademark issued protecting the text
  64.   strings: !|1K|*|#|#|#  or  ! ....
  65.  
  66.   Even though there may be some similarities between MAX Graphics and some
  67.   other graphical BBS packages, this is not done intentionally. Since I have
  68.   ran about every graphical BBS out there from DOS to Windows platforms, I'm
  69.   bound to create things in the image of my own memory. I by no means, just
  70.   set out to duplicate someone else's program or interface. If there is any
  71.   part of MAX Graphics that resembles any program you may have written, just
  72.   treat it as a parody. You know, like what Weird Al Yankovich does to other
  73.   people's songs. The only difference is that I just have a crappy sense of
  74.   humor when it comes to programming....<G>....
  75.  
  76.   This document and the MAX Graphics development kit are freeware, but are
  77.   not public domain.
  78.  
  79.   ....End of disclaimer....
  80.  
  81.  
  82. ───────────────────────────────────────────────────────────────────────────────
  83.  
  84.  
  85.   One Quick Note Before We Start:
  86.   ───────────────────────────────
  87.   I'm going to apologize ahead of time in case any part of this documentation
  88.   seems kind of vague. I'm a programmer, not a teacher, so all I can do is my
  89.   best.  Plus,  it appears that there is a world wide campaign to abolish the
  90.   reading of any and all documentation,  so I really don't spend a whole heck
  91.   of a lot of time writing any documentation any more. If for some reason you
  92.   can't understand what a certain feature does by reading this document,  all
  93.   I can suggest is that you tinker around with that feature for a while until
  94.   you understand what it's actually doing.  Hands on experience is always the
  95.   best teacher and most effective way of learning something new....
  96.  
  97.   I am going to tell you right now that the word "RIP" is used who knows how
  98.   many times in this document, but to normal people that doesn't matter...It
  99.   is just that there are some people in this world that like to pick my docs
  100.   apart to find things to whine about for who knows what reason, and that is
  101.   one point a couple people have made to me.  They seem to think that I need
  102.   to learn more about "Product Focus" because the word RIP is mentioned like
  103.   150 times here...Big deal, RIP is part of the product focus, accept it....
  104.  
  105.  
  106. ───────────────────────────────────────────────────────────────────────────────
  107.  
  108.  
  109.   What Is MAX Graphics Anyway?
  110.   ────────────────────────────
  111.   What is MAX? MAX Graphics is alternative to the inferiority of RIP1, 2 & 3
  112.   graphics. I'm not about to plagiarize on any other graphical BBS out there,
  113.   so what I have done is devised a new SVGA graphics protocol that you can
  114.   implement into any RIP capable BBS. RIP and RIP2 simply do not offer a high
  115.   enough quality graphical user interface for the caller, yet for some reason,
  116.   people insist on supporting the RIP format in their doors and BBSes. RIP1 is
  117.   only an EGA graphics interface, RIP2 is barely SVGA interface, RIP3 is yet
  118.   another WinDozzzze based internet/telnet toy, but MAX is a true full SVGA
  119.   graphical user interface with full digital sound capabilities that you can
  120.   drop in and use with _ANY_ BBS package out there!
  121.  
  122.   MAX is mainly for those people that want to be able to offer a _True_ SVGA
  123.   graphical user interface to their callers without forcing them have to go
  124.   out and change BBS software. All you really need to do to implement MAX
  125.   Graphics into any BBS is rename or save all of the .MAX screens to .RIP or
  126.   whatever naming convention your BBS uses for RIP screen files and put them
  127.   where your BBS will read and send them. Unfortunately, BBSes with built in
  128.   local display of RIP graphics won't be able to display these screens locally.
  129.   Hey, maybe you or someone else out there will drum up the nerve to write a
  130.   BBS package that will display local MAX Graphics. <G> Until then what you
  131.   can do is modify your BBS program's system prompts to say "MAX" instead of
  132.   RIP to eliminate confusion for your callers. If your BBS doesn't have the
  133.   capability to edit prompts, you could always take the long way around the
  134.   block and use a hex editor. Be advised that this may be a violation of the
  135.   warranty or copyright of your BBS software. It's completely up to you how
  136.   you choose to go about modifying your system prompts.
  137.  
  138.   Unlike other graphical BBS terminals (past and present) you can run the
  139.   MAXterm program in conjunction with any other existing terminal program.
  140.   MAXterm is compact and can be made even more compact by simply deleting
  141.   portions of the program you don't need. Some people will not want to use
  142.   the bundled screen and icon editors, so you would simply delete the two
  143.   files SCRNEDIT.EXE and ICONEDIT.EXE....By doing so, you can cut the disk
  144.   requirements for MAXterm down to about 200K. In addtion, MAXterm saves
  145.   disk space by compressing all of its graphics resources when they aren't
  146.   in use. Other programs such as RIPterm, FX-Term, StarLink, Etc, keep all
  147.   of the resources stored on the hard drive uncompressed thus chewing up
  148.   disk space and slowing down the program's overall operation due to the
  149.   excessive disk access time required to locate a specific resource file.
  150.  
  151.   Be advised that neither MAXterm or MAXscript/MAXcontrol/MAXcolor support
  152.   RIP graphics due to a HUGE royalty fee involved. This is the main reason
  153.   that the MAX Graphics development kit is 100% royalty free. RIP has been
  154.   commercialized from day one and is still commercialized to this day. Plus,
  155.   even if I were able to get permission to support RIP graphics, it would be
  156.   pointless. RIP and MAX use a completely different graphics interface and
  157.   script decoding methods. MAXterm would become so bloated from the excess
  158.   code (and out-dated EGA graphics code at that), it would simply retard the
  159.   program to the point of being inoperable on most systems.
  160.  
  161.   Anybody can create and view MAX screen files. All you need is a copy of the
  162.   MAXterm terminal or a text editor. Creating a MAX screen file is as simple
  163.   as writing a graphics program in Pascal and BGI. The MAXterm program can
  164.   edit and display screens locally and has a built in editor for creating or
  165.   modifying icons.
  166.  
  167.  
  168.   Here is a very brief overview of what MAX graphics can provide:
  169.   ───────────────────────────────────────────────────────────────
  170.   -Pascal like script language (More "English-Like" than RIPscript).
  171.   -Allows the use of MAXcontrol "Control Code Language" to enhance speed.
  172.   -All remote screen colors can be changed via MAXcolor codes.
  173.   -Freeware Borland/Turbo Pascal 7.0 door and utility development kit.
  174.   -Allows the use of MAX screens in any RIPscript v1.54 capable BBS.
  175.   -All screens use 640x480 pixel resolution and 256 colors.
  176.   -Fully mouse driven graphical user interface with windows.
  177.    Window types: 1. Standard Block (Similar to MS-Windows 3.XX or OS/2)
  178.                  2. Invisible      (Used for saving screen regions)
  179.                  3. Flat Panel     (A window with no title header)
  180.                  4. Transparent    (Similar to looking thru a window screen)
  181.                  5. Standard Panel (Similar to Windows 95)
  182.   -Use of icons in screens (Multiple sizes and styles).
  183.   -Use of buttons in screens (Multiple sizes and styles).
  184.   -Use of over 300 GEM fonts in screens (Say it with me, "NO BGI FONTS!").
  185.   -Use of a scrolling picklist in any screen.
  186.   -Use of a text file reader in any screen.
  187.   -Use of a text editor in any screen.
  188.   -Use of data entry fields in screens (5 different types).
  189.   -Use of 256 color PCX graphics images in screens.
  190.   -Use of VOC/WAV/MID sound files in any screen.
  191.   -The creation of fully animated 640x480x256 resolution door games.
  192.   -Freeware MAXterm user resource update door for any BBS.
  193.   -More is yet to come!
  194.  
  195.  
  196.   NOTE: The name MAX is in no way connected with the Maximus BBS software....
  197.  
  198.  
  199. ───────────────────────────────────────────────────────────────────────────────
  200.  
  201.  
  202.   Creating Screen Files:
  203.   ──────────────────────
  204.   Unlike other graphics protocols out there, MAX Graphics does not require
  205.   you to unload $200.00 on a paint/drawing program. Even though a paint or
  206.   drawing program is considered to be a luxury, it's by no means a necessity.
  207.   MAXpaint is available to streamline screen creation, but if you don't want
  208.   to invest any money in software, then you will be pleased to know this....
  209.   MAXterm has complete local screen editing and viewing capabilities as well
  210.   as an icon editor. If you are familiar with the Pascal programming language,
  211.   then MAXscript will be like second nature to you. If you are not familiar
  212.   with Pascal, fear not, this will still be an easy language for you to learn.
  213.   MAXscript is a very Human Like script language. There is no need for you to
  214.   learn a bunch of mundane pipe codes or escape sequences, everything is done
  215.   with simple commands and variables. The only thing you may have a hard time
  216.   getting used to is the resolution of the screens, but that won't last for
  217.   long. When I first got into using high resolution graphics in my programs,
  218.   it took me about 2 or 3 weeks to get used to 640x480x256 after working with
  219.   80x25x16 for God knows how many years before that.
  220.  
  221.  
  222.   A quick example of a very basic screen file would look like this:
  223.   ─────────────────────────────────────────────────────────────────
  224.   Start_Screen()
  225.   Draw_Window(100,100,630,380,1,'Welcome To MAX Graphics!')
  226.   Put_Image(150,150,'CLOUD.PCX')
  227.   Shadow_Text(350,150,5,0,2,'This Sure Beats RIP Eh?')
  228.   Draw_Button(530,350,80,67,1,20,'Continue')
  229.   Play_Sound('FUNKY.VOC')
  230.   End_Screen()
  231.  
  232.   NOTE: MAXscript commands are NOT case sensitive!
  233.  
  234.   In the above example, there are 7 elements to the screen. I will refer to
  235.   them as Element #1....Element #7 in my explanation of their functions....
  236.   All commands always end with a pair of left and right parenthesis to tell
  237.   MAXterm when it has reached the end of a command string. In most commands,
  238.   the parameters or Variables are separated by commas inside of parenthesis.
  239.   Any text you wish to print, and any file names you wish to define must be
  240.   declared inside of apostrophes. Those are the only rules you have to follow
  241.   with script commands. Pretty simple huh?
  242.  
  243.   Element #1: This tells MAXterm that a new screen is about to be drawn and
  244.               it needs to clear or reset all variables in memory. All screens
  245.               absolutely must begin with the Start_Screen() command or its
  246.               MAXcontrol counterpart!
  247.  
  248.   Element #2: This draws a window on the screen using 4 coordinates. In all
  249.               examples where specific screen coordinates are used, they will
  250.               be in the fashion of X1,Y1,X2,Y2...Your X coordinates are the
  251.               columns and the Y coordinates are the rows. In an SVGA screen,
  252.               your minimum and maximum X1,Y1,X2,Y2 coordinates are limited
  253.               to 0,0,639,479. So the window in the example shown above will
  254.               be plotted at 100,100,630,380....
  255.  
  256.               But what about the other two parameters/variables? The other
  257.               two parameters are for telling MAXterm what type of window to
  258.               display and what text to place in the window header. See the
  259.               "Overview" section above for a definition of window types.
  260.  
  261.   Element #3: This tells MAXterm to display a graphic image at the X1,Y1
  262.               coordinates. MAX Graphics only supports 256 color PCX images.
  263.               This shouldn't present any problem since there are a number
  264.               of shareware programs & utilities out there that can convert
  265.               any graphics image from one format to any other and alter its
  266.               color palette if necessary.
  267.  
  268.   Element #4: This tells MAXterm to display a string of text at the X1,Y1
  269.               coordinates. This command tells MAXterm to make the text be
  270.               in color #5 (Magenta) with a #0 (Black) background. MAXterm's
  271.               first 15 colors in its palette match the first 15 colors in
  272.               the ANSI palette. The next parameter tells MAXterm which font
  273.               to use for the text. MAXterm has three built in fonts and can
  274.               load any font from an external GEM font file. The definitions
  275.               for the fonts are:  1 - 5x8 Bitmapped Font
  276.                                   2 - GEM "System" Font
  277.                                   3 - 8x14 ROM Resident Font
  278.                                   4 - User Defined External Font
  279.  
  280.               The last parameter of course is the text you wish to display.
  281.  
  282.   Element #5: This tells MAXterm to draw a button on the screen at the X1,Y1
  283.               coordinates. The third parameter is the width of the button in
  284.               pixels, this might take a little time to get used to. The next
  285.               parameter, the 67 tells MAXterm what character to send to the
  286.               BBS when this button is clicked with the mouse. The next param-
  287.               eter tells MAXterm whether or not to plot a Small Icon on the
  288.               button (1=Yes, 0=No). The next parameter is the number of the
  289.               icon in the currently selected "Small_Icon" library file. The
  290.               last parameter of course is the text to print in the button.
  291.  
  292.               NOTE: The "67" is the ASCII value for the character "C". I'm
  293.                     sure that most people don't know the ASCII values for
  294.                     each character on your keyboard, so the screen editor
  295.                     in the MAXterm program has a routine to read & display
  296.                     the ASCII values for you.
  297.  
  298.   Element #6: This tells MAXterm to play a sound file. The MAXterm program
  299.               supports VOC, WAV, and MID (MIDI) sound files.
  300.  
  301.   Element #7: This tells MAXterm that the end of the screen file has been
  302.               sent and that it should jump into "Wait State". MAXterm has
  303.               two modes: Draw Mode and Wait State. The command that throws
  304.               MAXterm into Draw Mode is the same command string that a BBS
  305.               or door sends to RIPterm to tell it to clear the screen and
  306.               prepare to draw a new screen. All screens absolutely must end
  307.               with the End_Screen() command or its MAXcontrol counterpart!
  308.  
  309.   There you have it, a very basic example of a MAXscript screen file. As you
  310.   will see further on into this document, there are a lot more MAXscript and
  311.   MAXcontrol commands. Don't let the large number of commands intimidate you,
  312.   they are only here to provide complete flexibility in screen, door and BBS
  313.   design. Even the most sophisticated of screen files can be created using
  314.   the bare minimum of script commands.
  315.  
  316.   All MAX commands must appear on a line by themselves! You cannot put two
  317.   MAX commands on the same line and expect them to work. You can also not
  318.   put a MAX command and something like a BBS color code on the same line or
  319.   MAXterm will regard the entire command as being invalid. If you need to
  320.   insert something like a color code into a screen file, it must be put on
  321.   a line completely by itself.
  322.  
  323.  
  324.   The RIPscript Misconception:
  325.   ────────────────────────────
  326.   There is one misconception you may have about this and I will clear that up
  327.   for you right now. Even though RIP's graphics are based on short strings of
  328.   these crazy obscure characters, it's not any faster. RIP graphics are all
  329.   based on "Line Drawing" methods all the way down to the BGI fonts used in
  330.   RIP graphics, there are very little, if any, predefined graphics elements
  331.   or "Graphics Primitives". You may think that first example script command
  332.   is so long that it would take longer to draw than any RIP command would....
  333.   WRONG! MAXterm and the MAX Graphics development kit already have the Window
  334.   Primitive predefined. If you were to do the same thing with RIP, you would
  335.   need to send 40....Say it with me....FORTY COMMANDS to draw a simple window
  336.   on the user's screen. To draw a "Transparent" window on the user's screen
  337.   you would need to send in upwards of 40,000 commands to the user because you
  338.   would have to plot out the majority of the window Pixel-By-Pixel. Now do you
  339.   see the MAX advantage?
  340.  
  341.   The RIPSCRIP.DOC makes a huge deal out of the fact that their language is
  342.   not humanly readable. They claim that it is faster than other languages
  343.   they compared it against (in 1991 and before) that were humanly readable,
  344.   but they didn't have MAX at that time. They were trying to design their
  345.   language around slowpoke 2400 baud to 9600 baud modems. The truth is now
  346.   nobody (nobody in their right mind) uses any less than a 14400 baud modem.
  347.   RIP's methods still aren't that fast even with their short little cryptic
  348.   script commands. They fail to tell you that RIPscript takes anywhere from
  349.   10 times to 40 times or more of their commands to do the same thing that
  350.   you can do with one command from other languages. MAXscript is the slowest
  351.   way of communicating with MAXterm, but it is still light years faster than
  352.   RIPscript - EVEN AT 2400 BAUD!
  353.  
  354.   Take a look at the RIPSCRIP.DOC some time, it's available on just about
  355.   any BBS, and see how many RIPscript commands it would take to equal just
  356.   one MAXscript command. If you really want to speed up things in MAX, you
  357.   can also use MAXcontrol commands which are basically just as cryptic as
  358.   RIPscript commands. Every MAXscript command has a MAXcontrol counterpart,
  359.   so you can sacrifice the humanly readable concept in exchange for added
  360.   display speed. It's up to you how you want to do things, but either way
  361.   you look at it - RIP graphics simply do not compare to MAX Graphics in
  362.   any way - not in speed - and most definitely not in appearance!
  363.  
  364.  
  365.   The Difference Between MAXscript and MAXcontrol Commands:
  366.   ─────────────────────────────────────────────────────────
  367.   There are two ways of communicating with MAXterm. MAXscript is a script
  368.   language that is humanly readable and understandable. MAXcontrol is also a
  369.   script language of sorts, however it is not meant to be humanly readable.
  370.   It is low level language meant to communicate with MAXterm at a much faster
  371.   rate and provide complete Host <> Caller interaction.
  372.  
  373.   MAXcontrol works with MAXterm by using a two way communications method.
  374.   MAXcontrol codes are not readable by the average Joe. A MAXcontrol command
  375.   always starts with an ASCII #255 followed by a ~ (ASCII #126) and is
  376.   terminated with another ASCII #255 to indicate the end of the command. The
  377.   actual MAXcontrol commands are placed between the ASCII #126 and the final
  378.   ASCII #255. Just like MAXscript, your parameters or variables are to be
  379.   separated by commas with your text and hotkey declarations to be placed
  380.   inside of apostrophes. MAXcontrol codes may also be used in a screen file
  381.   with MAXscript commands. That kind of defeats the purpose of the MAXscript
  382.   screen files being humanly readable by others, but that's completely up to
  383.   you how you want to create your screens. You can replace any script command
  384.   with a control command to give your screens an extra speed boost. MAXterm
  385.   first looks for MAXcontrol codes, if it doesn't detect the MAXcontrol code
  386.   sequence, it will then look for MAXscript commands. All MAXscript commands
  387.   have a MAXcontrol code counterpart, see below:
  388.  
  389.    MAXscript: Draw_Window(100,100,630,380,1,'Welcome To MAX Graphics!')
  390.  
  391.   MAXcontrol: #255#126#128100,100,630,380,1,'Welcome To MAX Graphics!'#255
  392.           Or:  ~Ç100,100,630,380,1,'Welcome To MAX Graphics!' 
  393.  
  394.   Keep in mind that you CANNOT put the 4 characters "#255" in a MAX screen
  395.   file or send them to the comport in your program and expect results from
  396.   it. The #255 is the ASCII value of a character. Since this character has
  397.   no actual screen image, just like the spacebar creates, the #255 is used
  398.   strictly for clarity purposes only.
  399.  
  400.   In most text editors, you can add an extended key code anywhere by using
  401.   your ALT key and your numeric keypad. For example, to add an ASCII #255,
  402.   you would hold your ALT key and type 2 5 5 on the numeric keypad. After
  403.   you release the ALT key, the character will appear. This procedure also
  404.   works in most programming IDE's as well.
  405.  
  406.   Notice in the "Or:" example, you can't see the ASCII character #255 but
  407.   it's still in there. Go to that line and hit your END key and you'll see
  408.   that your cursor will show up one space past the end of the line. Now you
  409.   may not believe this, but the MAXcontrol commands really are about 50% to
  410.   60% faster than MAXscript commands. The string Draw_Window( is replaced by
  411.   a single ASCII character #128. If you are a programmer, what this means is
  412.   MAXterm can use a "CASE" routine instead of an "IF THEN ELSE", which you
  413.   know is a major advantage. Either way you look at it, the command line for
  414.   a MAXcontrol command is shorter, which means it will transfer faster, it
  415.   doesn't take a rocket scientist to figure that out.  ;)
  416.  
  417.  
  418. ───────────────────────────────────────────────────────────────────────────────
  419.  
  420.  
  421.   The Ins & Outs Of MAX Graphics:
  422.   ───────────────────────────────
  423.   As mentioned in the above, MAXscript can be used in any BBS that supports
  424.   RIP graphics (ie: RIPscript v1.54)....When a BBS detects RIP graphics in
  425.   the remote's terminal program, it sends an ASCII #27 plus [ plus !  (!).
  426.   RIPterm will return "RIPSCRIP015410", but all most BBSes look for is to see
  427.   if there is now data available at the comport after sending that string of
  428.   text. MAXterm returns "RIPSCRIP015400" upon reception of the ! RIPscript
  429.   Autosensing command, even though it is not RIP compatible. This is just to
  430.   fool the BBS into thinking it is so the BBS can send the MAX screen files
  431.   renamed as RIP screen files.
  432.  
  433.   After your BBS or door program has determined whether or not the user has
  434.   RIP capabilities, you send the string #255~#255 to the comport. Remember,
  435.   the #255 is an ASCII #255, not the 4 characters: # and 2 and 5 and 5. When
  436.   MAXterm receives this string of commands, it will return the version number
  437.   of MAXscript it supports (ie: #.##)....From this point on, you will need to
  438.   tell your program that "YES" the remote caller does have MAXscript _AND_
  439.   MAXcontrol capabilities.
  440.  
  441.   Now before any RIP compatible BBS or door sends screen file data to the
  442.   remote, it sends a pair of commands to tell the remote to clear the screen
  443.   of any previously sent graphics, see below:
  444.  
  445.   RIP Clear Screen: Command #1 = #13#10  (Blank Line)
  446.                     Command #2 = #12#13#10  (Same as TTY Clear Screen)
  447.  
  448.   This basically has the same effect on MAXterm. This tells any MAX Graphics
  449.   compatible terminal program to kill all active windows on the screen. Some
  450.   RIP capable BBS programs and doors will only send the second command, so
  451.   you will have to design your programs mainly around Command #2 to clear the
  452.   screen. Command #1 is mainly just to send a blank line to tell the terminal
  453.   program ignore any previous commands which helps prevent display errors. In
  454.   the event your BBS doesn't send the ASCII #12 to clear the graphics screen,
  455.   you will need to insert it at the beginning of your screen files. Keep in
  456.   mind that some BBSes rely on the RIP screen file to clear the screen. Look
  457.   at a RIP screen file created with RIPaint sometime. You will see that the
  458.   ASCII character #12 is always on a line by itself at the beginning. As you
  459.   can very well guess, RIPscript is another one of those things that never
  460.   really achieved widespread standardization. TeleGrafix standardized it in
  461.   their specifications, but not all BBS authors followed suit (there's a big
  462.   surprise....NOT!). DOOR.SYS, FILES.BBS, and FILE_ID.DIZ all suffered the
  463.   same thing, hopefully MAX Graphics won't....Anyhow, if the author of your
  464.   BBS software neglected to follow the RIP standards to the "T", I would
  465.   suggest you add a blank line and then an ASCII #12 at the beginning of
  466.   every screen file in your BBS.
  467.  
  468.   After this command has been sent, this tells MAXterm to jump into "Draw
  469.   Mode". While the program is in Draw Mode, it will only respond to MAXscript
  470.   and MAXcontrol commands. It will completely ignore ANSI escape sequences
  471.   and RIPscript commands at this point. From here, you must send commands to
  472.   the terminal programs to instruct them to draw items on the screen, or jump
  473.   into "Wait State" mode. All MAX screens must always end with an End_Screen()
  474.   Or #255#126#254#255 to throw them in to "Wait State". If your BBS or Door
  475.   program sends added information after the screen file is sent, you need to
  476.   add a "Text View Window" immediately before the End_Screen() command.
  477.  
  478.   In some BBS or door programs, after a RIP screen is drawn, they may create
  479.   some sort of dynamically generated text at the bottom of the screen. Some
  480.   BBS programs do this to tell the user what the currently selected message
  481.   or file area is or other system messages. If your BBS or door does this you
  482.   will need to define a Text View Window somewhere on the screen using the
  483.   command Text_View_Window(X1,Y1,C,R) or #255#126#252X1,Y1,C,R,#255....Keep
  484.   in mind this command should appear immediately before your End_Screen()....
  485.  
  486.   A counterpart to the Text_View_Window() command called Text_View_Port() is
  487.   available that performs the same function, but is only the view port with
  488.   no window frame around it. The command syntax is exactly the same....
  489.  
  490.   In some cases, your BBS or door program will require MAXterm to emulate a
  491.   regular ANSI/ASCII terminal program. MAXterm responds to the same command
  492.   strings that RIPterm does to throw it back into text mode, see below:
  493.  
  494.   RIP To Text: Command #1 = #13#10  (Blank Line)
  495.                Command #2 = !|1K|*|#|#|#  (Plus a #13#10)
  496.             Or Command #2 = !|1K|*|  (Plus a #13#10)
  497.             Or Command #2 = #27[1!  (Plus a #13#10)
  498.  
  499.   Again, the first command may not be sent by all BBS and door programs, keep
  500.   in mind though that MOST of them do. Also, some BBSes only follow up their
  501.   RIP commands with just a #13 rather than a #13#10, however, most of them do
  502.   send the #13#10. The second commands are the ones that you should really
  503.   focus on. The second command will instruct MAXterm to pop up a new window
  504.   on the screen that supports 80x25x16 resolution using font type #3. Font
  505.   type #3 is needed so the program can display high ASCII characters. MAXterm
  506.   is also capable of dropping all the way back to full text mode ANSI in the
  507.   event of this command.
  508.  
  509.   To throw MAXterm back into graphics mode, simply send the RIP clear screen
  510.   command again. Keep in mind that while MAXterm is in text mode, or ANSI
  511.   emulation mode - all MAX commands will be interpreted as raw text. In the
  512.   event that you attempt to use a MAX screen file in your BBS and all you
  513.   see are the raw commands, you will have to manually add a blank line and
  514.   an ASCII #12 at the beginning of the screen file.
  515.  
  516.  
  517.   THIS IS EXTREMELY IMPORTANT, READ IT AND UNDERSTAND IT!
  518.   ───────────────────────────────────────────────────────
  519.   In some BBS packages, there are oversights by the author where they forgot
  520.   to add the "RIP to TEXT" command, one such reported case is with Renegade.
  521.   The author forgot to add the "RIP to TEXT" command before displaying files
  522.   and messages, possibly in even more places than that. In this event, if a
  523.   user selects to list files, they will be given a blank SVGA screen with no
  524.   apparent way of escape. Programming errors like this can cause you serious
  525.   headaches as well as for your users.
  526.  
  527.   So, how do you fix it? SIMPLE!....Since I have no experience with Renegade
  528.   I can't give you any specifics, but this general information should point
  529.   you in the direction you need to accomplish remedying the error. MAXterm
  530.   and RIPterm both respond to the same command to flip the terminal back to
  531.   text mode. As stated in the above, the two commands used to make MAXterm
  532.   and RIPterm do this are:
  533.  
  534.                            RIP to TEXT: !|1K|*|#|#|#
  535.                                     Or: #27[1!
  536.  
  537.   In the case of some BBS packages, there is a "Language File". This file is
  538.   usually just a text file with each line being the text for specific system
  539.   prompts. This isn't gospel, because there are also some packages that use
  540.   a separate screen file for every system prompt. If there is a place in the
  541.   BBS software where a "RIP to TEXT" command is needed, but does not exist,
  542.   it is usually pretty simple to add one. In one of my experiments in TriBBS
  543.   I had to add this command to the beginning of a prompt in the BBS language
  544.   file. What I first did was add the color code to turn the text to Black on
  545.   Black. This was just to hide the !|1K|*|#|#|# command. Then I added that
  546.   command right before changing the color back to what the prompt originally
  547.   used. That command by itself added to the beginning of the prompt fixed
  548.   the problem where the user was stuck at a blank SVGA screen. This can be
  549.   adapted to almost any BBS package. If not, then you should contact your
  550.   BBS software author and tell him/her to correct this error in their code.
  551.  
  552.  
  553.   Handling Windows:
  554.   ─────────────────
  555.   MAXterm and the MAX Graphics development kit handle windows in a similar
  556.   fashion to the way OS/2 and Windows does. Meaning, every time you draw a
  557.   new window, the previous window and its functions become inactive. You'll
  558.   notice this right away because the window header of the previous window
  559.   will darken every time a new window pops up. The only time you won't have
  560.   this "Visual Index" is in the event you are using "Flat Panel" windows or
  561.   "Invisible" windows. In that case, you'll just have to be sure you kill a
  562.   window when it's no longer needed. Otherwise, the user will be stuck at a
  563.   window with no obvious way out which will force them to drop carrier. By
  564.   using multiple windows you can create menus with sub-menus and and make
  565.   it possible to have an unlimited number of buttons and fields per screen.
  566.   Refer to the Draw_Window() and Kill_Window() commands for more info.
  567.  
  568.  
  569.   Handling PCX Images:
  570.   ────────────────────
  571.   All 256 color PCX image files have their color palette values stored in the
  572.   last 768 bytes of the file. Divide this by three and what you have is 256
  573.   groups of three numbers. These three numbers are the Red, Green, Blue values
  574.   for each color (#0 to #255) in that order. Chances are that every PCX image
  575.   will have values which are different from the values used in MAX Graphics so
  576.   the image will need to be "Re-Scaled" on the fly, or the image will need to
  577.   be permanently Re-Scaled with some kind of a graphic image file editor. One
  578.   of the best shareware editors (if not the all around best) is a program by
  579.   the name of "NeoPaint" from the NeoSoft Corporation. You can usually find
  580.   this program on any shareware CD-ROM, or you can call their support BBS at
  581.   (503)383-7195 or send a message to support@neosoft.com and ask where you can
  582.   find it on the internet. At the end of this document you will find the color
  583.   values (Red, Green, Blue values) for each color in the MAX Graphics palette.
  584.   There is also a file included in this archive called MAXGRAPH.PAL which is a
  585.   pre-made palette file for the NeoPaint program which will allow you to do a
  586.   permanent palette Re-Scale on the image. If you don't Re-Scale the palette,
  587.   then MAX Graphics will attempt to Re-Scale the image on the fly before
  588.   displaying. The down side to this is that the colors won't match exactly due
  589.   to the excessive amount of code required to perform an accurate Re-Scaling
  590.   and there will be a very noticable delay. You would be wiser to permanently
  591.   Re-Scale the image before using it in any screen file.
  592.  
  593.  
  594.   External Font Files:
  595.   ────────────────────
  596.   MAXterm and the MAX Graphics development kit all use the GEM font format.
  597.   GEM fonts are used by a tremendous number of programs such as NeoPaint and
  598.   NeoBook from NeoSoft and numerous other programs developed using the GX-Text
  599.   programming kit by Genus Microprogramming. There are also a few utilities
  600.   out there to convert Windows fonts to GEM format. This gives you an endless
  601.   amount of available fonts to use in your screens and MAX Graphics compatible
  602.   programs. For lots of GEM fonts and other GEM font utilities, please call
  603.   the BBS number listed at the end of this document.
  604.  
  605.  
  606.   Inline Color Tokens:
  607.   ────────────────────
  608.   Inline color tokens are used for coloring text files and message text.
  609.   These were probably first introduced in the RoboBOARD/FX BBS software,
  610.   and then adopted by other graphical BBS packages. Only colors 0 to 15
  611.   are valid for use as inline color tokens. An inline color token looks
  612.   like this: {0} or {12} or {14}. You simply put a number (0 to 15) in a
  613.   pair of fancy brackets and it changes the color of any following text.
  614.   ie: Standard_Text(100,100,15,2,'This {14}is {15}a {14}test.')....This
  615.   would create a string of text alternating between white and yellow.
  616.   
  617.  
  618.   Handling Icons:
  619.   ───────────────
  620.   MAX Graphics supports 3 sizes of icons, 16x16, 30x30 and 60x60 pixels. Each
  621.   pixel is a color value 0 to 255 with color #255 being transparent. You may,
  622.   at your own discretion, use icons from RoboBOARD/FX by Seth Hamilton, or
  623.   from Shotgun Professional by GUNN Data Systems. The RoboBOARD/FX *.ICO &
  624.   the Shotgun *.30 icon files must be renamed with the extension *.002 and
  625.   the Shotgun *.16 icon files must be renamed with the extension *.001. There
  626.   are also a few utilities for RoboBOARD/FX out there that will convert any
  627.   Windows icon to the *.ICO, *.30, or *.002 format, so you shouldn't have any
  628.   problems finding enough icons for your system. You may also create your own
  629.   icons using MAXterm's built in icon editor.
  630.  
  631.   If you are running any MAX compatible doors in your BBS, you may want to
  632.   add a command or set of commands at the beginning of the menu screen file
  633.   that the door is called from to restore the icon library file names or the
  634.   mouse mask. Some doors may use their own custom icon libraries or may also
  635.   change the mouse mask. So you will want to change them back to the default
  636.   values for your BBS upon returning from the door. Doing this is simple and
  637.   shouldn't be looked at as a "Task" or anything like that. All you need to
  638.   do is add at the most, 4 commands to that menu screen, such as:
  639.  
  640.   Small_Icon_Library('ICON_LIB.001')  [Use whatever icon library file name]
  641.   Medium_Icon_Library('ICON_LIB.002') "                                   "
  642.   Large_Icon_Library('ICON_LIB.003')  "                                   "
  643.   Mouse_Mask(0)                       [Use whatever mouse mask number]
  644.  
  645.   Doing this will assure that when a caller returns from a door, they will
  646.   be seeing the correct icons in your screens and the correct mouse mask.
  647.  
  648.  
  649.   Icons and Door/BBS Programming:
  650.   ───────────────────────────────
  651.   If you are writing a MAX Graphics compatible door or a BBS program you can
  652.   chop the size of your icon libraries down to just the size you need if you
  653.   aren't using all 100 icons in the library. By doing this, you can prevent
  654.   your icons from being altered in MAXpaint as well since MAXpaint will only
  655.   read 100 record icon libraries. You are by no means required to distribute
  656.   full size icon libraries with your programs. When you are displaying icons
  657.   you are simply seeking to a specific zero based record location. So if you
  658.   write a program that only uses 5 icons, then chop that sucker down to only
  659.   5 records (icons). This will save space in your archive, on the hard drive,
  660.   and will result in a faster transfer in automatic resource update programs.
  661.  
  662.  
  663.   MAX and ANSI/ASCII:
  664.   ───────────────────
  665.   If you are unfamiliar with the ins & outs of graphics programming, then you
  666.   are probably not aware of the fact that fonts in graphics mode don't have a
  667.   background color. Such is the case with the GEM fonts in MAX Graphics and
  668.   the BGI fonts in RIP. When you try to support ANSI terminal emulation in a
  669.   graphics based program, you need to first block out the area where the font
  670.   is to be located using the current ANSI background color. As you can guess,
  671.   this slows things down quite a bit, especially in the case of scrolling the
  672.   screen. If you intend to use MAX Graphics in your BBS, you should do one of
  673.   two things:
  674.  
  675.   1. Use MAX screens throughout your BBS as to avoid flip-flopping between
  676.      graphics and ANSI emulation mode.
  677.  
  678.   2. Eliminate any ANSI screens that excede 24 lines (ie: Rows) as to avoid
  679.      scrolling MAXterm's screen in SVGA ANSI emulation mode.
  680.  
  681.   This may sound like a lot of work, but if you simply do one of these two
  682.   things, you will have more users trying MAXterm and staying with MAXterm.
  683.   The reason a lot of users try a graphical terminal program and then switch
  684.   back to their original ANSI terminal program is because if the speed of
  685.   ANSI in regular Plain Jane text mode. If you simply create a matching MAX
  686.   screen for all ANSI/ASCII screens, then MAXterm will work just that much
  687.   faster, and your users will continue to use MAXterm.
  688.  
  689.  
  690.   Special Files:
  691.   ──────────────
  692.   MAXterm supports some special files that may be of interest to you. In the
  693.   dialing directory of MAXterm, you will notice a field for each BBS entry
  694.   called "Board ID". This is the 8 letter name that a BBS uses for its .PKG
  695.   files, or in other cases, its ID for its QWK/REP packets. When you start
  696.   up MAXterm, it will unpack DEFAULT.PKG which is a compressed file with the
  697.   default graphics resources. Each BBS can custom create their own .PKG file
  698.   which you can download and place in your \RESOURCE\ subdirectory. You will
  699.   want to change the Board ID in the diailing directory to match the first 8
  700.   letters of the .PKG file. It's best to keep your .PKG files in ZIP format,
  701.   but you may choose any archive method. You just need to make sure all of
  702.   your users have this archiver in their DOS path. MAXterm is compiled with
  703.   all the correct command line parameters for ZIP, ARJ, LHA and RAR archives.
  704.   There are also spaces for adding the name of a batch file to execute any
  705.   other type of archiver program.
  706.  
  707.   In your .PKG file, besides storing font files, image files, or sound files,
  708.   you may also include a file named BACKDROP.MAX which is a script file you
  709.   wish to display immediately upon connection to your system. This will be an
  710.   actual indestructable backdrop which will display all the time. Most people
  711.   put graphics images, custom drawings, or other text in their back drops. It
  712.   is completely up to you what you want to display there. The Start_Screen()
  713.   and End_Screen() commands are not required in this screen file....
  714.  
  715.  
  716.   Handling Remote Screen Files:
  717.   ─────────────────────────────
  718.   As mentioned in the above, you can store MAX screen files in your graphics
  719.   resource packages. These can be a little tricky if you don't follow a few
  720.   basic rules. If you aren't careful, you can lock up the user's terminal by
  721.   sending the wrong commands. A remote screen file is the same as any other
  722.   MAX screen file, with the exception that there is no Start_Screen() and
  723.   End_Screen() command in the screen file. The screen file your BBS sends is
  724.   what sends those two commands. An example would be like this:
  725.  
  726.   Your BBS sends this information:  Start_Screen()
  727.                                     Draw_Window(100,99,539,400,5,'RIP... NOT!')
  728.                                     Show_Remote_Screen('REMOTE1.MAX')
  729.                                     End_Screen()
  730.  
  731.    The file REMOTE1.MAX does this:  Set_Fill_Style(1,239)
  732.                                     Bar(104,127,204,395)
  733.                                     Bar(104,127,534,227)
  734.                                     Load_Font('CAM42.FNT')
  735.                                     Shadow_Text(12,40,14,0,4,'Welcome To MAX Graphics!')
  736.                                     Load_Font('TTL12_68.FNT')
  737.                                     Shadow_Text(128,150,10,0,4,'RIP... NOT!')
  738.                                     Load_Font('CAM42.FNT')
  739.                                     Shadow_Text(172,243,10,0,4,'This Is MAX!')
  740.                                     User_Button(449,355,80,35,16)
  741.                                     Put_Medium_Icon(497,358,3)
  742.                                     Standard_Text(462,365,0,2,'Quit')
  743.                                     Standard_Text(462,365,4,2,'Q')
  744.  
  745.   Now this is only a basic example of the way you would use a remote screen
  746.   file. In most cases, the reason you would want to use a remote screen file
  747.   is because the file is so huge that it would draw too slow if you were to
  748.   send it over the modem line by line. Even a slowpoke 386/SX25 with a 2400
  749.   baud modem would draw a 500+ line screen file in just a few seconds. This
  750.   is why the Remote_Screen_File() concept was implemented. You can make your
  751.   BBS or door program fly like a jet by using this method. As you can guess,
  752.   if the user doesn't have the file REMOTE1.MAX in their graphics resource
  753.   package, they will see nothing and may think their terminal has locked up
  754.   on them and drop carrier. You should Keep your Draw_Window() commands in
  755.   your main screen file, this is just a safety precaution. You never know
  756.   if a user will attempt to modify your resources on their system, so you
  757.   should try to keep all critical commands out of the remote screen files.
  758.  
  759.  
  760.   Getting Remote Data:
  761.   ────────────────────
  762.   Getting data from the remote such as, getting editor text, or getting the
  763.   entry field data, etc, requires you follow just one simple rule. You must
  764.   get the needed data before the current window is killed. Once you kill the
  765.   current window, that data is gone forever. So if your BBS or door program
  766.   requires information from the terminal whether it be from the text editor
  767.   or from data entry fields, be sure you get this data before any command is
  768.   sent to clear the graphics screen, or to flip the terminal back to text
  769.   mode, or before any Kill_Window() command is sent.
  770.  
  771.  
  772.   Handling PickLists and Text Readers:
  773.   ────────────────────────────────────
  774.   If you plan on using picklists or text readers in your screens or programs,
  775.   keep in mind that these items must be the first item in the window. If you
  776.   ignore this rule, then your users will get locked into a loop that they can
  777.   only get out of by their dropping carrier. Picklists and text readers will
  778.   always occupy button numbers 1 and 2. So you will need to have one more
  779.   button on the screen to escape from the loop. If you are doing this in your
  780.   programs, you will need to look for button number 3 rather than 1. Now, the
  781.   most important part about text readers and picklists....You will need some
  782.   method of escape from one of these screens, the most obvious choice is to
  783.   add a button to the screen. The ordinal value that this button returns must
  784.   be and alternate keypress. Say for example you used Draw_Button() to plot
  785.   a button somewhere on the screen and labeled it "Quit", the "Q" would be
  786.   highlighted in red. Set the ordinal value that button returns to 16 which
  787.   would force the user to either click on that button with their mouse, or
  788.   press ALT-Q to escape the loop. Keep in mind that not all BBSes allow the
  789.   use of alternate keypresses, so picklists and text readers should only be
  790.   used in doors or BBSes that directly support MAX Graphics.
  791.  
  792.  
  793.   MAX Limits and General Rules:
  794.   ─────────────────────────────
  795.   All MAX screens must contain at least one window! If you do not observe
  796.   this rule, you will be having numerous users dropping carrier on your BBS
  797.   because they will be locked into a blank SVGA screen with no way out.
  798.  
  799.   All MAX commands must appear on a line by themselves! You cannot put two
  800.   MAX commands on the same line and expect them to work. You can also not
  801.   put a MAX command and something like a BBS color code on the same line or
  802.   MAXterm will regard the entire command as being invalid. If you need to
  803.   insert something like a color code into a screen file, it must be put on
  804.   a line completely by itself.
  805.  
  806.   The Minimum/Maximum X1,Y1,X2,Y2 screen coordinates are 0,0,639,479 but you
  807.   should limit your screens to 0,21,639,458 to allow for a status bar at the
  808.   top and bottom of the screen set to a 20 pixel height.
  809.  
  810.   Colors range from 0 to 255 with colors 0 though 16 matching the same colors
  811.   found in the ANSI color palette.
  812.  
  813.   Color number 255 in icon files is transparent.
  814.  
  815.   The maximum number of buttons you can have in a window is 30. Buttons are
  816.   defined as Draw_Button(), Radio_Button(), User_Button(), Click_Zone() and
  817.   the scroll buttons on the picklist or text reader. Even though a BBS will
  818.   have no problems sending screen files with more than 30 buttons, however,
  819.   MAXterm with bomb out with a "Constant Out Of Range" error.
  820.  
  821.   As with button number limits, the 30 count limitation also applies to the
  822.   entry fields and flipping icons. Exceeding this limit will also cause the
  823.   MAXterm program to bomb out with a "Constant Out Of Range" error.
  824.  
  825.   As with button number limits, the 30 count limitation also applies to the
  826.   Button Extensions.
  827.  
  828.   If for any reason you need more buttons, fields, or flipping icons, simply
  829.   create another window and link it as a sub-menu. Keep in mind that as soon
  830.   as the next window is drawn, all your buttons, fields, and flipping icons
  831.   in the previous window will become inactive. To reactivate them you simply
  832.   kill the last window drawn on the screen.
  833.  
  834.   Only one picklist, or one text reader, or one text editor is allowed per
  835.   window. You cannot mix and match these in the same window and you cannot
  836.   have more than one of any of them per window. Failing to observe this rule
  837.   will result in your users being locked into a never ending loop without
  838.   any form of escape.
  839.  
  840.   The picklist is limited to 800 items with each item being 80 characters
  841.   wide. This is the absolute largest the picklist could be made due to the
  842.   64K limit in Pascal's data segment. There's absolutely nothing that can
  843.   be done to make this any larger outside of resorting to disk access for
  844.   the picklist, which of course, would slow down performance in a big way.
  845.  
  846.   Certain commands _MUST_ be used with a follow up command. You can place
  847.   other commands between the initial and follow up commands, but when you
  848.   are suppose to use a follow up command and neglect to do so, you will
  849.   crash or lock up MAXterm. The initial and follow up commands are shown
  850.   below:
  851.  
  852.   Initial:                         Follow Up:
  853.   ───────────────────────────────────────────────────
  854.   New_Pick_List()                  Set_Up_Pick_List()
  855.   New_Text_Editor()                Run_Text_Editor()
  856.   New_Text_Reader()                Show_Text_Page()
  857.  
  858.   You can place other commands in between these commands to load up text
  859.   files, define a new text file for the editor to save to, or to reset the
  860.   picklist to a specific item number before display. Whatever you decide
  861.   to put between them is up to you. Just keep in mind that you _MUST_ call
  862.   the follow up command some time before the End_Screen() command is called.
  863.  
  864.   There is a very special exception to this concept. There are three commands
  865.   that absolutely must be used together: Start_Text_File(), Put_Text_File(),
  866.   and End_Text_File(). These three commands are used for creating a text file
  867.   in the caller's \SESSION\ subdirectory. You can put as many Put_Text_File()
  868.   commands as needed in between Start_Text_File() and End_Text_File(), just
  869.   remember that none of these three commands can be used without the others!
  870.   If you attempt to use any of these commands strictly on their own, you can
  871.   be guaranteed that you will crash the remote caller's terminal program.
  872.  
  873.  
  874. ───────────────────────────────────────────────────────────────────────────────
  875.  
  876.  
  877.   MAXscript and MAXcontrol Command Library:
  878.   ─────────────────────────────────────────
  879.   After your BBS or door program has determined whether or not the user has
  880.   RIP capabilities, you send the string #255#126#127#255 to the comport. If
  881.   the caller has MAXscript and MAXcontrol capabilities, it will return the
  882.   the MAXscript version number it supports in the format #.## ....From here
  883.   you will tell your program "YES" there is FULL remote MAX Graphics support.
  884.  
  885.  
  886.   AddTo_PickList('Text String')
  887.   MAXcontrol: #255#126#149'Text String'#255
  888.               This command adds items to the picklist. The maximum number
  889.               of items in a picklist is 800. Each item should be less than
  890.               or equal to 80 characters wide. If it is longer, the excess
  891.               length will simply be truncated.
  892.               See Also: New_PickList(), SetUp_PickList(),
  893.                         Reset_PickList(), Get_Pick_Info()
  894.  
  895.  
  896.   Animate_Icon(XStart,YStart,XEnd,YEnd,Delay,IconSize,Icon)
  897.   MAXcontrol: #255#126#173XStart,YStart,XEnd,YEnd,Delay,IconSize,Icon#255
  898.               This command animates a Small, Medium, or Large icon from
  899.               XStart/YStart to XEnd/YEnd. "Delay" is the total number of
  900.               milliseconds between each icon plot. "IconSize" determines
  901.               whether the icon is a Small, Medium, or Large icon (1-Small,
  902.               2-Medium,3-Large) and "Icon" is the icon's record position
  903.               in the current icon library. Here's a hint to help eliminate
  904.               flicker when animating the icon....The "Delay" should be a
  905.               multiple or a divisor of the icon's pixel width or height.
  906.               Meaning, a medium icon that is 30x30 pixels should have a
  907.               delay factor of 15,30,60,120,etc....There is no technical
  908.               proof to warrant this, however, this is the method I use
  909.               and it sure works for me on my system....
  910.               See Also: Flip_Icon()
  911.  
  912.  
  913.   Bar(X1,Y1,X2,Y1)
  914.   MAXcontrol: #255#126#159X1,Y1,X2,Y1#255
  915.               This command draws a solid filled rectangle on the screen
  916.               defined by the X1,Y1,X2,Y2 coordinates with the currently
  917.               selected color and fill style selected by Set_Fill_Style().
  918.               See Also: Set_Fill_Style(), Rectangle()
  919.  
  920.  
  921.   Button_Extension(ButtonNumber,'UpTo20Characters')
  922.   MAXcontrol: #255#126#183ButtonNumber,'UpTo20Characters'#255
  923.               In some BBS packages such as PCBoard, Renegade, Nexus, Etc,
  924.               you may assign entire strings to certain functions on your
  925.               menus. In standard MAX and RIP buttons you can only send a
  926.               character per button press. By adding an extension to the
  927.               button, you can send the character assigned to the button
  928.               and up to 20 additional characters. Buttons are drawn on
  929.               the screen in sequential fashion and are numbered in the
  930.               MAXterm program from #1 up to #30. So let's say you want
  931.               to make the first button drawn on the screen send a string
  932.               like "/G"....You would first plot a button and assign the
  933.               character "/" to it. Since you are working with the first
  934.               button you would use Button_Extension(1,'G') to add the
  935.               "G" to the first button on the screen. Now when ever the
  936.               user clicks on that button, it will send "/G" instead of
  937.               just the "/" character by itself.
  938.  
  939.  
  940.   Change_Field(FieldNumber)
  941.   MAXcontrol: #255#126#152FieldNumber#255
  942.               This command will tell your program to make a new Entry
  943.               Field active. After this command is issued, you need to
  944.               issue the command Redraw_Field() to make the change take
  945.               effect. This command is mainly for BBS and Door programs.
  946.               See Also: Entry_Field(), Redraw_Field(), Field_Text()
  947.  
  948.  
  949.   Clear_Screen(Color)
  950.   MAXcontrol: #255#126#161Color#255
  951.               This command will clear the screen from 0,21,639,458 in the
  952.               color determined by the "Color" variable. This command will
  953.               not touch the top and bottom status bars.
  954.  
  955.  
  956.   Click_Zone(X1,Y1,Width,Height,HotKey)
  957.   MAXcontrol: #255#126#171X1,Y1,Width,Height,HotKey#255
  958.               This command turns a specified region of the screen into a
  959.               button of sorts. This will basically draw a frame on the
  960.               screen that presses and releases with mouse clicks. X1/Y1
  961.               is where the zone starts. "Width" is the width of the zone
  962.               in pixels and "Height" is the height of the zone in pixels.
  963.               "HotKey" is the ASCII value of the character the zone is
  964.               suppose to represent. Using this command in conjunction
  965.               with the Bar() command allows you to create buttons with
  966.               custom sizes, colors, and fill styles.
  967.               See Also: Draw_Button(), Radio_Button(), User_Button()
  968.  
  969.  
  970.   Draw_Bezier(X1,Y1,StartAngle,EndAngle,XRadius,YRadius,Color)
  971.   MAXcontrol: #255#126#172X1,Y1,StartAngle,EndAngle,XRadius,YRadius,Color#255
  972.               This command draws a filled elliptical sector using X1/Y1 as
  973.               the center point, and XRadius/YRadius as the horizontal and
  974.               vertical axis. The sector travels from StartAngle to EndAngle
  975.               and is drawn in the color specified by "Color". The sector is
  976.               filled with the current fill style set by Set_Fill_Style().
  977.               See Also: Draw_Elipse(), Set_Fill_Style()
  978.  
  979.  
  980.   Draw_Button(X1,Y1,PixelWidth,HotKey,UseIcon,Icon#,'ButtonTitle')
  981.   MAXcontrol: #255#126,#130X1,Y1,PixelWidth,HotKey,UseIcon,Icon#,'ButtonTitle'#255
  982.               This command draws a standard raised button on the screen
  983.               at X1/Y1 coordinates. This type of button has a predefined
  984.               height of 20 pixels. You define the width of the button with
  985.               the PixelWidth variable. This width is intentionally not
  986.               predefined so you can create a more customized look to the
  987.               screens you create. The HotKey variable determines the key's
  988.               (ASCII Value) that needs to be pressed to make MAXterm return
  989.               the Button # value. With no buttons on the screen, the button
  990.               value is zero. If this is the first button on the screen, the
  991.               button value will return a 1, if it's the second button, it
  992.               will return a 2, and so on. The UseIcon variable tells MAXterm
  993.               whether or not to plot a 16x16 (Small Icon Type) icon on the
  994.               button (0=No,1=Yes). The Icon# variable determines the icon
  995.               number in the currently selected 16x16 icon library file.
  996.               See Also: Small_Icon_LIB(), Radio_Button(),
  997.                         Click_Zone(), User_Button()
  998.  
  999.  
  1000.   Draw_Circle(X1,Y1,Radius,Color)
  1001.   MAXcontrol: #255#126#158X1,Y1,Radius#255
  1002.               This command draws circle on the screen inside with the
  1003.               X1,Y1 coordinates being the center of the circle. Radius
  1004.               is the amount of pixels from the center to the outmost
  1005.               edge of the circle. The color of the cirle is determined
  1006.               by the "Color" variable. The circle can be filled with a
  1007.               a color and pattern of your choice. See the Flood_Fill()
  1008.               command for more information.
  1009.               See Also: Flood_Fill(), Set_Fill_Style()
  1010.  
  1011.  
  1012.   Draw_Ellipse(X1,Y1,StartAngle,EndAngle,XRadius,YRadius,Color)
  1013.   MAXcontrol: #255#126#166X1,Y1,StartAngle,EndAngle,XRadius,YRadius,Color#255
  1014.               This command draws and elliptical arc using X1/Y1 as the
  1015.               center point, and XRadius/YRadius as the horizontal and
  1016.               vertical axis. The ellipse travels from StartAngle to
  1017.               EndAngle and is drawn in the color specified by "Color".
  1018.               See Also: Set_Fill_Style(), Flood_Fill(), Draw_Bezier()
  1019.  
  1020.  
  1021.   Draw_Line(X1,Y1,X2,Y2,Color)
  1022.   MAXcontrol: #255#126#132X1,Y1,X2,Y2,LineColor#155
  1023.               This command draws a line from X1,Y1 to X2,Y2 in the color
  1024.               specified by the variable "Color".
  1025.  
  1026.  
  1027.   Draw_Rectangle(X1,Y1,X2,Y2,Color)
  1028.   MAXcontrol: #255#126#162X1,Y1,X2,Y2#255
  1029.               This command is similar to the Bar() command with the small
  1030.               exception that there is no fill, this is just a frame. You
  1031.               can still fill the rectangle with the Flood_Fill() command
  1032.               if you wish. The color of the frame is determined by the
  1033.               variable "Color".
  1034.               See Also: Flood_Fill(), Set_Fill_Style()
  1035.  
  1036.  
  1037.   Draw_Triangle(X1,Y1,X2,Y2,X3,Y3,Color);
  1038.   MAXcontrol: #255#126#178X1,Y1,X2,Y2,X3,Y3,Color#255
  1039.               This command draws a triangle on the screen using the
  1040.               variables X1/X1, X2/Y2, X3/Y3 as the triangle's points
  1041.               going clock-wise with X1/Y1 being the top point of the
  1042.               triangle. The triangle is drawn in the color specified
  1043.               by the "Color" variable. The triangle is drawn unfilled
  1044.               but can be filled by Flood_Fill().
  1045.               See Also: Flood_Fill(), Set_Fill_Style()
  1046.  
  1047.  
  1048.   Draw_Window(X1,Y1,X2,Y2,WindowType,'WindowTitle')
  1049.   MAXcontrol: #255#126#128100,100,630,380,WindowType,'WindowTitle'#255
  1050.               This command draws a window at X1,Y1,X2,Y2 the coordinates.
  1051.               WindowType defines which type of window to display on the
  1052.               user's screen. There are four window types at this time:
  1053.               1 - Standard Block Window
  1054.               2 - Invisible Window
  1055.               3 - Flat Panel Window
  1056.               4 - Transparent Window
  1057.               5 - Standard Panel Window
  1058.               Any window type setting outside of these ranges will cause
  1059.               the program to default to window type #1.
  1060.               See Also: Kill_Window()
  1061.  
  1062.  
  1063.   Editor_File('FILENAME.TXT')
  1064.   MAXcontrol: #255#126#176'FILENAME.TXT'#255
  1065.               This command tells the text editor what file name to save
  1066.               the text in MAXterm's text buffer to. The file is stored
  1067.               in the user's \MAXTERM\SESSION\ subdirectory. This command
  1068.               needs to be called some time before Run_Text_Editor() or
  1069.               the program will use the default TEXTFILE.TXT file name.
  1070.               See Also: New_Text_Editor(), Run_Text_Editor(),
  1071.                         Load_Text_File(), Start_Text_File(),
  1072.                         Put_Text_File(), End_Text_File()
  1073.  
  1074.  
  1075.   End_Screen()
  1076.   MAXcontrol: #255#126#254#255
  1077.               This command is used in either screen files or BBS or door
  1078.               programs to throw MAXterm into its "Wait State" mode. This
  1079.               command must be issued at the end of EVERY screen file or
  1080.               when ever your BBS or door program is finished drawing. This
  1081.               command does not apply to remotely stored screen files.
  1082.               See Also: Start_Screen()
  1083.  
  1084.  
  1085.   End_Text_File()
  1086.   MAXcontrol: #255#126#182#255
  1087.               This command closes the text file created by Start_Text_File()
  1088.               so that it can be read by Load_Text_File(). Absolutely do not
  1089.               forget to issue this command after Start_Text_File() and do
  1090.               not issue this command unless there was a Start_Text_File()
  1091.               previously issued. Ignoring these rules will cause MAXterm to
  1092.               crash, no doubt about it!
  1093.               See Also: Start_Text_File(), Put_Text_File(), HTML_Browser()
  1094.  
  1095.  
  1096.   Entry_Field(X1,Y1,EntryType,Width,'DefaultText')
  1097.   MAXcontrol: #255#126#131X1,Y1,EntryType,Width,'DefaultText'#255
  1098.               This command plots an entry field on the screen at X1/Y1
  1099.               coordinates. This is only meant to be used with BBS or
  1100.               door programs due to the way it returns the text entered
  1101.               in the fields. However, you can still use these in your
  1102.               screens for purely cosmetic purposes. There are six types
  1103.               of EntryTypes: 0 - Normal Input
  1104.                              1 - Numeric Input
  1105.                              2 - Proper Input
  1106.                              3 - Date/Phone # Input
  1107.                              4 - Secret Input
  1108.                              5 - Upper Case Input
  1109.               After all of your items have been drawn in the window you
  1110.               will issue the End_Screen() command which will activate the
  1111.               scrolling of the Entry_Fields. In some part of your program
  1112.               you will have to execute the command Get_Field_Data() after
  1113.               the user clicks a button which is not a Picklist or Text File
  1114.               Reader scroll button. This will tell MAXterm to send the text
  1115.               string from each field to the comport in a fashion similar to
  1116.               a MAXcontrol code. The entry fields are numbered 1..30 as they
  1117.               are drawn on the screen and text strings will be returned to
  1118.               your BBS or door in a sequential fashion with a #13#10 at the
  1119.               end of each text string. MAXterm will send a #255#255#13#10
  1120.               to indicate there is no more data to send.
  1121.               See Also: Get_Field_Data()
  1122.  
  1123.  
  1124.   Field_Text(FieldNumber,'Field Text')
  1125.   MAXcontrol: #255#126#248FieldNumber,'Field Text'#255
  1126.               This command is mainly for MAX BBS and Door programs....
  1127.               At some point in your program, you will find the need to
  1128.               dynamically change the text in an entry field. This command
  1129.               is to be used in conjunction with Change_Field() and the
  1130.               Redraw_Field() commands. Say you have three fields on the
  1131.               screen, the last field drawn is Field #3. Then say that for
  1132.               some reason you suddenly need to change the text in field
  1133.               #3. You would execute this command, then Change_Field(3),
  1134.               the Redraw_Field(). You may also omit the Change_Field()
  1135.               and Redraw_Field() and wait for the user to change to this
  1136.               field on their own.
  1137.               See Also: Entry_Field(), Change_Field(), Redraw_Field()
  1138.  
  1139.  
  1140.   Flip_Icon(X1,Y1,Icon1,Icon2,Icon3,Icon4,Size);
  1141.   MAXcontrol: #255#126#179X1,Y1,Icon1,Icon2,Icon3,Icon4,Size#255
  1142.               This command is used to place icons on the screen that will
  1143.               continuously draw over top of each other while the mouse is
  1144.               in operation. This creates an animated effect and is useful
  1145.               for creating spinning or flipping images. Be careful when
  1146.               using this feature, the more icons you have flipping, the
  1147.               slower your mouse will react. If at all possible, use the
  1148.               "Small" icons for this feature to increase mouse reaction.
  1149.               See Also: Put_Small_Icon(), Put_Medium_Icon(), Put_Large_Icon(),
  1150.                         Small_Icon_Lib(), Medium_Icon_Lib(), Large_Icon_LIB()
  1151.  
  1152.  
  1153.   Flood_Fill(X1,Y1,BorderColor)
  1154.   MAXcontrol: #255#126#165X1,Y1,BorderColor#255
  1155.               This command fills an area starting at the X1/Y1 coordinates
  1156.               using the color and fill determined by the Set_Fill_Style()
  1157.               command. The BorderColor variable determines the color of
  1158.               the lines (or borders) where you want the fill to stop at.
  1159.               Say you used the command Draw_Circle(100,100,50,64). The
  1160.               border of the circle is in color #64. After you determine
  1161.               the color and style of the fill with Set_Fill_Style(), you
  1162.               would use Flood_Fill(100,100,64) to fill the circle to its
  1163.               borders or any other overlapping shapes so long as their
  1164.               borders are in color # 64 as well.
  1165.               See Also: Set_Fill_Style(), Draw_Rectangle(), Draw_Circle()
  1166.  
  1167.  
  1168.   Frame_High(X1,Y1,X2,Y2)
  1169.   MAXcontrol: #255#126#144X1,Y1,X2,Y2#255
  1170.               This command simply draws a pseudo 3-D frame on the screen
  1171.               at the X1,Y1,X2,Y2 coordinates that appears to be raised.
  1172.               Meaning the top and left side of the frame are brighter
  1173.               than the bottom and right sides.
  1174.               See Also: Frame_Low()
  1175.  
  1176.  
  1177.   Frame_Low(X1,Y1,X2,Y2)
  1178.   MAXcontrol: #255#126#145X1,Y1,X2,Y2#255
  1179.               This command is the opposite of the Frame_High() command.
  1180.               This draws a frame on the screen at X1,Y1,X2,Y2 that
  1181.               appears to be lowered.
  1182.               See Also: Frame_High()
  1183.  
  1184.   
  1185.   Get_Editor_Text()
  1186.   MAXcontrol: #255#126#249#255
  1187.               This command is used to send the text saved to the text file
  1188.               created by the text editor. The text is sent in the form of
  1189.               a character by character transfer with a #13#10 at the end
  1190.               of every line to indicate a line feed. The MAXterm program
  1191.               will send a #255#255#13#10 to indicate there is no more data
  1192.               to send.
  1193.               See Also: New_Text_Editor(), Run_Text_Editor()
  1194.  
  1195.  
  1196.   Get_Field_Data()
  1197.   MAXcontrol: #255#126#250#255
  1198.               This command is NEVER to be used in anything but a BBS or a
  1199.               door program. NEVER use this command in screen files! If your
  1200.               program uses entry fields for anything, then you will need a
  1201.               way of getting the field data from the user's terminal back
  1202.               to your program. For every entry field on the user's screen,
  1203.               this command will cause the remote's terminal program to send
  1204.               the text string from each field with a #13#10 at the end. The
  1205.               MAXterm program will send a #255#255#13#10 to indicate there
  1206.               is no more data to send.
  1207.               See Also: Entry_Field()
  1208.  
  1209.  
  1210.   Get_Pick_Info()
  1211.   MAXcontrol: #255#126#247#255
  1212.               This command is used to get the pick list item number and
  1213.               text. First the item number will be sent followed by the
  1214.               string #13#10, then the item text will be sent in the same
  1215.               fashion. The MAXterm program will send a #255#255#13#10 to
  1216.               indicate that it is finished sending data.
  1217.               See Also: New_Pick_List(), Set_Up_PickList,
  1218.                         Reset_PickList(), Add_To_PickList();
  1219.  
  1220.  
  1221.   Hide_Mouse()
  1222.   MAXcontrol: #255#126#139#255
  1223.               This command hides the mouse cursor from view. This is
  1224.               important to do before you do any drawing or text plotting
  1225.               of any kind. If you don't, the user will end up with a
  1226.               blemish on the screen as soon as they move their mouse.
  1227.               You shouldn't have to worry about using this command or
  1228.               the Show_Mouse() command if you are drawing complete MAX
  1229.               screen files with the Start_Screen() and End_Screen() in
  1230.               them. About the only people that will ever have to worry
  1231.               about these commands are BBS or BBS door programmers.
  1232.               See Also: Show_Mouse()
  1233.  
  1234.  
  1235.   HTML_Browser('FILENAME.HTM')
  1236.   MAXcontrol: #255#126#187'FILENAME.HTM'#255
  1237.               This command starts up MAXterm's HTML browser. The actual
  1238.               HTML file must have the .HTM file extension, .HTML is not
  1239.               a valid file extension in DOS. The .HTM file must already
  1240.               exist in the caller's \SESSION\ subdirectory. You can use
  1241.               a resource update door to get the file to the user, but it
  1242.               is wiser to build the file on the fly if you change your
  1243.               HTML files on a regular basis. The HTML2MAX.EXE utility in
  1244.               MAXpaint will automatically convert an HTML file to a MAX
  1245.               screen file your BBS can send on the fly. Otherwise, you
  1246.               will need to add the remote text file building commands in
  1247.               the HTML file where needed.
  1248.               See Also: Start_Text_File(), Put_Text_File(), End_Text_File()
  1249.  
  1250.  
  1251.   Kill_Window()
  1252.   MAXcontrol: #255#126#129#255
  1253.               This command is mainly used in BBS or door programs designed
  1254.               around MAX Graphics. Any time you use Draw_Window(), you must
  1255.               use Kill_Window() unless you are creating screens. Any time a
  1256.               new screen is sent, the RIP clear screen command is sent prior
  1257.               to the screen file. This does a global Kill_Window in MAXterm,
  1258.               so you don't have to worry about using this in your screens.
  1259.               The reason for this command is so you can kill any window you
  1260.               have created in order to restore that portion of the screen
  1261.               and also restore buttons/fields/picklists/editor/reader/etc
  1262.               that may happen to exist in the previous window (if any).
  1263.               See Also: Draw_Window()
  1264.  
  1265.  
  1266.   Large_Icon_LIB('FILENAME.003')
  1267.   MAXcontrol: #255#126#135'FILENAME.003'#255
  1268.               This tells MAXterm to change icon library files for its
  1269.               "Large" (60x60) icons. All Large icon libraries have an
  1270.               extension of "003"....If the extension is any different,
  1271.               the default icon library will be used.
  1272.               See Also: Medium_Icon_LIB(), Small_Icon_LIB(),
  1273.                         Put_Large_Icon()
  1274.  
  1275.  
  1276.   Load_Font('FILENAME.FNT')
  1277.   MAXcontrol: (#255#126#148'FILENAME.FNT'#255
  1278.               This command will dispose of the currently loaded GEM
  1279.               font file in memory and load a new one. GEM font files
  1280.               must have the .FNT extension. These fonts are the user
  1281.               defined fonts and referred to as Font Type #4.
  1282.               See Also: Standard_Text(), Shadow_Text()
  1283.  
  1284.  
  1285.   Load_Text_File('FILENAME.TXT')
  1286.   MAXcontrol: #255#126#167'FILENAME.TXT'#255
  1287.               This command is used to load a text file into the buffer
  1288.               used by the text reader and text editor. This command is
  1289.               called _AFTER_ the call to New_Text_Reader() and after
  1290.               the call to New_Text_Editor(). Note: You don't have to
  1291.               load a text file into the text editor if you don't want
  1292.               to. Run_Text_Editor() and Show_Text_Page() are called
  1293.               _AFTER_ this command. This file must exist in the user's
  1294.               ?:\MAXTERM\SESSION\ subdirectory.
  1295.               Note: The text buffer only allows for 99 lines of text.
  1296.               See Also: New_Text_Editor(), New_Text_Reader(),
  1297.                         Run_Text_Editor(), Show_Text_Page(),
  1298.                         Editor_File(), Start_Text_File(),
  1299.                         Put_Text_File, End_Text_File()
  1300.  
  1301.  
  1302.   Lowered_Box(X1,Y1,X2,Y2)
  1303.   MAXcontrol: #255#126#147X1,Y1,X2,Y2#255
  1304.               This command draws a box on the screen at that appears to
  1305.               be lowered at the X1,Y1,X2,Y2 coordinates.
  1306.               See Also: Raised_Box()
  1307.  
  1308.  
  1309.   MAXecute('FILENAME.EXE');
  1310.   MAXcontrol: #255#126#185'FILENAME.EXE'#255
  1311.               This command instructs MAXterm to execute a special program
  1312.               called a "MAXecutable". These are special executable files
  1313.               that run within the MAXterm environment. Some developers have
  1314.               found that they can make more elaborate programs by working
  1315.               outside of the MAXscript constraints. So they have written
  1316.               doors that run a special executable on the remote end. This
  1317.               command is usually reserved for door developers.
  1318.  
  1319.  
  1320.   Medium_Icon_LIB('FILENAME.002')
  1321.   MAXcontrol: #255#126#134'FILENAME.002'#255
  1322.               This tells MAXterm to change icon library files for its
  1323.               "Medium" (30x30) icons. All Medium icon libraries have an
  1324.               extension of "002"....If the extension is any different,
  1325.               the default icon library will be used.
  1326.               See Also: Small_Icon_LIB(), Large_Icon_LIB(),
  1327.                         Put_Medium_Icon()
  1328.  
  1329.  
  1330.   Mouse_Mask(MaskNumber)
  1331.   MAXcontrol: #255#126#141MaskNumber#255
  1332.               This command changes the "Mask" of the mouse cursor. There
  1333.               are a total of 19 mouse masks: 0  - Standard Arrow
  1334.                                              1  - Up Arrow
  1335.                                              2  - Down Arrow
  1336.                                              3  - Left Arrow
  1337.                                              4  - Right Arrow
  1338.                                              5  - Check Mark
  1339.                                              6  - Up Hand
  1340.                                              7  - Down Hand
  1341.                                              8  - Left Hand
  1342.                                              9  - Right Hand
  1343.                                              10 - Stop Hand
  1344.                                              11 - Hour Glass
  1345.                                              12 - Diagonal Cross
  1346.                                              13 - Rectangular Cross
  1347.                                              14 - Rectangular Box
  1348.                                              15 - Target Cross
  1349.                                              16 - Target Circle
  1350.                                              17 - Target Box
  1351.                                              18 - Question Mark
  1352.               Any number outside of these ranges will cause the
  1353.               mouse mask to default to zero.
  1354.               See Also: Hide_Mouse(), Show_Mouse()
  1355.  
  1356.  
  1357.   New_PickList(X1,Y1,OnScreen,Width)
  1358.   MAXcontrol: #255#126#168X1,Y1,OnScreen,Width#255
  1359.               This command initializes the scrolling picklist on the
  1360.               screen and allocates memory for it. The upper left corner
  1361.               of the picklist will be at X1/Y1 coordinates. The OnScreen
  1362.               variable determines how many items (in rows) will appear
  1363.               on the screen, and the Width variable determines how wide
  1364.               (in characters) the picklist will be. There are however a
  1365.               couple rules you must follow when using picklists in your
  1366.               screens and programs. The picklist MUST be the first item
  1367.               in the window. When you are in your repeat loop initiated
  1368.               by End_Screen() the top scroll button in the picklist with
  1369.               return 1 and the other will report 2. All other buttons
  1370.               added to the screen after the picklist will return values
  1371.               from 3 on up.
  1372.               See Also: AddTo_PickList(), SetUp_PickList,
  1373.                         Reset_PickList(), Get_Pick_Info()
  1374.  
  1375.  
  1376.   New_Text_Editor(Y1)
  1377.   MAXcontrol: #255#126#154Y1#255
  1378.               This command initializes the text editor on the screen. You
  1379.               will notice that there only a Y1 coordinate because the
  1380.               text field takes up the whole width of the screen. You'll
  1381.               need to call Draw_Window() before this for two reasons...
  1382.               The first reason is because you will most likely want to
  1383.               have some kind of a header to display what the text file
  1384.               or message is that is being edited. The second reason is
  1385.               because you will need to save the entire screen before
  1386.               you plot the editing field on the screen. That way when
  1387.               the user is done with their editing, you can make a call
  1388.               to Kill_Window() to restore the entire screen. After you
  1389.               call this command, you may optionally stuff the buffer
  1390.               with text from a text file. See Load_Text_File() for more
  1391.               information.
  1392.               See Also: Draw_Window(), Kill_Window(), Editor_File(),
  1393.                         Load_Text_File(), Run_Text_Editor()
  1394.  
  1395.  
  1396.   New_Text_Reader(Y1)
  1397.   MAXcontrol: #255#126#156#Y1#255
  1398.               As with the New_Text_Editor command, this command uses
  1399.               only the Y1 coordinate because the text file reader takes
  1400.               up the whole width of the screen. All of the same rules
  1401.               as the New_Text_Editor command apply here. You will need
  1402.               to issue a command to Draw_Window() to save the previous
  1403.               screen. See Load_Text_File() for more information.
  1404.               See Also: New_Text_Editor(), Draw_Window(),
  1405.                         Kill_Window(), Show_Text_Page()
  1406.  
  1407.  
  1408.   Pie_Slice(X1,Y1,StartAngle,EndAngle,Radius,Color)
  1409.   MAXcontrol: #255#126#175X1,Y1,StartAngle,EndAngle,Radius,Color#255
  1410.               This command draws a pie slice on the screen using X1/Y1
  1411.               coordinates as the center "Point" and draws the arc of
  1412.               the slice from StartAngle to EndAngle. The over all size
  1413.               of the slice is determined by "Radius". The pie slice is
  1414.               drawn in "Color" and filled by the current color and fill
  1415.               style determined by Set_Fill_Style()
  1416.               See Also: Set_Fill_Style(), Draw_Bezier()
  1417.  
  1418.  
  1419.   Play_Sound('SOUND.FIL')
  1420.   MAXcontrol: #255#126#163'SOUND.FIL'#255
  1421.               This command plays 1 of three types of sound files through
  1422.               the user's sound card. Supported sound formats are VOC, WAV,
  1423.               and MID (MIDI). The user MUST have the environment variable
  1424.               for their sound card set for their sound card before this
  1425.               function will work for them.
  1426.  
  1427.  
  1428.   Put_Image(X1,Y1,'IMAGE.PCX')
  1429.   MAXcontrol: #255#126#164X1,Y1,'IMAGE.PCX'#255
  1430.               This tells MAXterm to display a graphic image at the X1,Y1
  1431.               coordinates. MAX Graphics only supports 256 color PCX files
  1432.               since this is strictly an SVGA interface. Converting and/or
  1433.               cropping the image or altering its palette can be done with
  1434.               about any shareware or commercial graphics image editor. One
  1435.               such shareware image editor is called NeoPaint from NeoSoft
  1436.               Corporation and is available on almost any shareware CD-ROM.
  1437.  
  1438.  
  1439.   Put_Large_Icon(X1,Y1,IconNumber)
  1440.   MAXcontrol: #255#126#136X1,Y1,IconNumber#255
  1441.               Plots a "Large" (60x60) icon at the X1/Y1 coordinates.
  1442.               IconNumber is the zero based record number of the icon
  1443.               in the currently selected Large_Icon_LIB. If the icon
  1444.               number you select IconNumber is larger than the amount
  1445.               of icons in the library (minus 1), then icon #0 will
  1446.               be used instead.
  1447.               See Also: Put_Small_Icon(), Put_Medium_Icon(),
  1448.                         Large_Icon_LIB()
  1449.  
  1450.  
  1451.   Put_Medium_Icon(X1,Y1,IconNumber)
  1452.   MAXcontrol: #255#126#137X1,Y1,IconNumber#255
  1453.               Plots a "Medium" (30x30) icon at the X1/Y1 coordinates.
  1454.               IconNumber is the zero based record number of the icon
  1455.               in the currently selected Medium_Icon_LIB. If the icon
  1456.               number you select IconNumber is larger than the amount
  1457.               of icons in the library (minus 1), then icon #0 will
  1458.               be used instead.
  1459.               See Also: Put_Small_Icon(), Put_Large_Icon(),
  1460.                         Medium_Icon_LIB()
  1461.  
  1462.  
  1463.   Put_Pixel(X1,Y1,Color)
  1464.   MAXcontrol: #255#126#177X1,Y1,Color#255
  1465.               This command is as "Low-Level" as low-level can get.
  1466.               This plots a single pixel at X1/Y1 coordinates in the
  1467.               color specified by the "Color" variable. This command
  1468.               may not be of that much use to you, but it is here in
  1469.               case you do actually need it.
  1470.  
  1471.  
  1472.   Put_Small_Icon(X1,Y1,IconNumber)
  1473.   MAXcontrol: #255#126#138X1,Y1,IconNumber#255
  1474.               Plots a "Small" (16x16) icon at the X1/Y1 coordinates.
  1475.               IconNumber is the zero based record number of the icon
  1476.               in the currently selected Small_Icon_LIB. If the icon
  1477.               number you select IconNumber is larger than the amount
  1478.               of icons in the library (minus 1), then icon #0 will
  1479.               be used instead.
  1480.               See Also: Put_Medium_Icon(), Put_Large_Icon(),
  1481.                         Small_Icon_LIB()
  1482.  
  1483.  
  1484.   Put_Text_File('String');
  1485.   MAXcontrol: #255#126#181'String'#255
  1486.               After you have created the text file using the command
  1487.               Start_Text_File(), you must call this procedure repeatedly
  1488.               until you are finished writing to the file. Keep in mind
  1489.               that in _SCRIPT.PAS this command uses Pascal's WRITELN....
  1490.               See Also: Start_Text_File(), End_Text_File(), HTML_Browser()
  1491.  
  1492.  
  1493.   Radio_Button(X1,Y1,HotKey)
  1494.   MAXcontrol: #255#126#170X1,Y1,HotKey#255
  1495.               This command draws a small rounded button on the screen at
  1496.               X1/Y1 coordinates. The HotKey variable is the ASCII value
  1497.               of the character that is returned when the user clicks on
  1498.               the button with their mouse. Unlike the Draw_Button command
  1499.               there is no icon, pixel width, icon settings, or title for
  1500.               this type of button.
  1501.               See Also: Draw_Button(), Click_Zone(), User_Button()
  1502.  
  1503.  
  1504.   Raised_Box(X1,Y1,X2,Y2)
  1505.   MAXcontrol: #255#126#146X1,Y1,X2,Y2#255
  1506.               This command draws a box on the screen at that appears to
  1507.               be raised at the X1,Y1,X2,Y2 coordinates. This is basically
  1508.               a Flat Panel Window with no screen saving abilities.
  1509.               See Also: Lowered_Box()
  1510.  
  1511.  
  1512.   Redraw_Field()
  1513.   MAXcontrol: #255#126#153#255
  1514.               This command must be issued immediately after a call to the
  1515.               Field_Text() and Change_Field() commands. This command is
  1516.               mainly for BBS and Door programs.
  1517.               See Also: Entry_Field(), Change_Field(), Field_Text()
  1518.  
  1519.  
  1520.   Reset_PickList(ItemNumber)
  1521.   MAXcontrol: #255#126#151#255
  1522.               This command resets the highlight bar in the picklist to a
  1523.               specified picklist item. You issue this command and then
  1524.               issue the SetUp_PickList() command.
  1525.               See Also: New_PickList(), AddTo_PickList(),
  1526.                         SetUp_PickList(), Get_Pick_Info()
  1527.  
  1528.  
  1529.   Reset_Remote()
  1530.   MAXcontrol: #255#126#169#255
  1531.               This command is used to reset all colors and file names in
  1532.               the remote's terminal program to their default values. See
  1533.               the section of this document on MAXcolor codes.
  1534.  
  1535.  
  1536.   Run_Text_Editor()
  1537.   MAXcontrol: #255#126#155#255
  1538.               This command must be issued ONLY after the New_Text_Editor()
  1539.               command has been issued.
  1540.               See Also: New_Text_Editor(), Load_Text_File(), Editor_File()
  1541.  
  1542.  
  1543.   Set_Fill_Style(Pattern,Color)
  1544.   MAXcontrol: #255#126#160Pattern,Color#255
  1545.               This sets the fill style to be used to fill in the center
  1546.               of a Bar or Circle. A setting of zero will cause the shape
  1547.               to be drawn on the screen with just the frame being set by
  1548.               the "Color" variable. There are 12 different fill styles:
  1549.               0  - No Fill
  1550.               1  - Solid Fill
  1551.               2  - Line Fill
  1552.               3  - Light Slash Fill
  1553.               4  - Heavy Slash Fill
  1554.               5  - Heavy Back Slash Fill
  1555.               6  - Light Back Slash Fill
  1556.               7  - Light Cross Hatch
  1557.               8  - Heavy Cross Hatch
  1558.               9  - Interleave Fill
  1559.               10 - Wide Dot Fill
  1560.               11 - Close Dot Fill
  1561.               Any number outside of these ranges will cause the fill
  1562.               style to default to zero.
  1563.               See Also: Bar(), Circle(), Polygon()
  1564.  
  1565.  
  1566.   SetUp_PickList()
  1567.   MAXcontrol: #255#126#150#255
  1568.               After the picklist has been initialized with New_PickList()
  1569.               and has had items added to it with AddTo_PickList(), it is
  1570.               now ready to run in the mouse loop. This command tells the
  1571.               program that you are finished adding items to the picklist
  1572.               and that it is now ready. When using picklists you need to
  1573.               remember that the picklist always adds two buttons to the
  1574.               beginning of your screen. The current item in the picklist
  1575.               with the highlight bar on it is returned in the variable
  1576.               PickInfo.Current in the MAX Graphics interface unit. Should
  1577.               you wish to return that text into your program, you would
  1578.               access it as PickList[PickInfo.Current]....
  1579.               See Also: New_PickList(), AddTo_PickList(),
  1580.                         Reset_PickList(), Get_Pick_Info()
  1581.  
  1582.  
  1583.   Shadow_Text(X1,Y1,TextColor,ShadowColor,FontType,'Your Text')
  1584.   MAXcontrol: #255#126#143X1,Y1,TextColor,ShadowColor,FontType,'Your Text'#255
  1585.               This is command is similar to Standard_Text() except this
  1586.               command plots your text with a shadow behind it. You simply
  1587.               define two colors here instead of just one....
  1588.               FontTypes are: 1 - 5x8 bitmapped font
  1589.                              2 - GEM "System" font
  1590.                              3 - 8x14 ROM resident font
  1591.                              4 - External GEM font
  1592.               See Also: Standard_Text(), Load_Font()
  1593.  
  1594.  
  1595.   Show_Mouse()
  1596.   MAXcontrol: #255#126#140#255
  1597.               Any time a call to Hide_Mouse() is called, you will need
  1598.               to call this command to re-enable the users mouse cursor.
  1599.               You shouldn't have to worry about using this command or
  1600.               the Hide_Mouse() command if you are drawing complete MAX
  1601.               screen files with the Start_Screen() and End_Screen() in
  1602.               them. About the only people that will ever have to worry
  1603.               about these commands are BBS or BBS door programmers.
  1604.               See Also: Hide_Mouse()
  1605.  
  1606.  
  1607.   Show_Remote_Screen('FILENAME.MAX')
  1608.   MAXcontrol: #255#126#251'FILENAME.MAX'#255
  1609.               This command is used to display a remotely stored screen
  1610.               file. In some cases, a screen can simply become too large
  1611.               to send over the modem and display quick enough for your
  1612.               likings. What you can do is create a screen file and then
  1613.               place it in your PKG file for your system. Keep in mind
  1614.               that the actual screen file must not contain either the
  1615.               Start_Screen() or End_Screen() commands. Those commands
  1616.               will already be issued in the screen file that executes
  1617.               the Show_Remote_Screen('FILENAME.MAX') command.
  1618.               See Also: Start_Screen(), End_Screen()
  1619.  
  1620.  
  1621.   Show_Text_Page()
  1622.   MAXcontrol: #255#126#157#255
  1623.               This command must be issued ONLY after the New_Text_Reader()
  1624.               command has been issued, this activates the text reader.
  1625.               See Also: New_Text_Reader
  1626.  
  1627.  
  1628.   Siren()
  1629.   MAXcontrol: #255#126#184#255
  1630.               This command is the equivalent to the CTRL-G Bell in an
  1631.               ANSI/TTY terminal program, only it's about 100 times as
  1632.               annoying. This simply creates a siren tone through the
  1633.               caller's PC speaker.
  1634.               See Also: Play_Sound()
  1635.  
  1636.  
  1637.   Small_Icon_LIB('FILENAME.001')
  1638.   MAXcontrol: #255#126#133'FILENAME.001'#255
  1639.               This tells MAXterm to change icon library files for its
  1640.               "Small" (16x16) icons. All Small icon libraries have an
  1641.               extension of "001"....If the extension is any different,
  1642.               the default icon library will be used.
  1643.               See Also: Medium_Icon_LIB(), Large_Icon_LIB(),
  1644.                         Put_Small_Icon()
  1645.  
  1646.  
  1647.   Standard_Text(X1,Y1,TextColor,FontType,'Your Text')
  1648.   MAXcontrol: #255#126#142X1,Y1,TextColor,FontType,'Your Text'#255
  1649.               This command is used to plot text at the X1/Y1 coordinates
  1650.               on the screen. TextColor is the color of your text and
  1651.               FontType is the type of font you want you text printed
  1652.               in. FontTypes are: 1 - 5x8 bitmapped font
  1653.                                  2 - GEM "System" font
  1654.                                  3 - 8x14 ROM resident font
  1655.                                  4 - External GEM font
  1656.               See Also: Shadow_Text(), Load_Font()
  1657.  
  1658.  
  1659.   Start_Screen()
  1660.   MAXcontrol: #255#126#253#255
  1661.               This command is used in either screen files or BBS or door
  1662.               programs to throw MAXterm into "Draw mode". This command must
  1663.               be issued at the beginning of EVERY screen file to clear/reset
  1664.               all variables in MAXterm's memory. This command does not apply
  1665.               to remotely stored screen files.
  1666.               See Also: End_Screen()
  1667.  
  1668.  
  1669.   Start_Text_File('FILENAME.TXT')
  1670.   MAXcontrol: #255#126#180'FILENAME.TXT'#255
  1671.               This command builds a text file in the the caller's \SESSION\
  1672.               subdirectory. This can be used for about any purpose, but the
  1673.               main reasons would be for creating a text file to load in the
  1674.               text editor or text reader. Keep in mind that this command
  1675.               absolutely MUST be followed up by an End_Text_File() command
  1676.               or you could possible cause MAXterm to crash the next time
  1677.               this command is called.
  1678.               See Also: Put_Text_File(), End_Text_File(), HTML_Browser()
  1679.  
  1680.  
  1681.   Text_View_Port(X1,Y1,C,R)
  1682.   MAXcontrol: #255#126#186X1,Y1,C,R#255
  1683.               This command can be used in screen files or BBS and door
  1684.               programs. The reason for this function is that there are
  1685.               some BBS programs that create dynamically generated text
  1686.               after the screens are drawn. This text is most generally
  1687.               to tell the user what the active file or message area is
  1688.               or to send the user general system info or warnings. You
  1689.               would use this command to define a view port the screen
  1690.               where you want this information displayed. This command
  1691.               plots the Text View Port at X1/Y1 coordinates with the
  1692.               R defining how many text rows to display and with the C
  1693.               defining how many text columns to display.
  1694.               See Also: Text_View_Window()
  1695.  
  1696.  
  1697.   Text_View_Window(X1,Y1,C,R)
  1698.   MAXcontrol: #255#126#252X1,Y1,C,R#255
  1699.               This command can be used in screen files or BBS and door
  1700.               programs. The reason for this function is that there are
  1701.               some BBS programs that create dynamically generated text
  1702.               after the screens are drawn. This text is most generally
  1703.               to tell the user what the active file or message area is
  1704.               or to send the user general system info or warnings. You
  1705.               would use this command to define a window on the screen
  1706.               where you want this information displayed. This command
  1707.               plots the Text View Window at X1/Y1 coordinates with the
  1708.               R defining how many text rows to display and with the C
  1709.               defining how many text columns to display.
  1710.               See Also: Text_View_Port()
  1711.  
  1712.  
  1713.   User_Button(X1,Y1,Width,Height,HotKey)
  1714.   MAXcontrol: #255#126#174X1,Y1,Width,Height,HotKey#255
  1715.               This command draws and actual button on the screen in the
  1716.               current button face color. Similar to Click_Zone(), only
  1717.               this user defined zone is filled with color.
  1718.               See Also: Draw_Button(), Radio_Button(), Click_Zone()
  1719.  
  1720.  
  1721. ───────────────────────────────────────────────────────────────────────────────
  1722.   TO BE CONTINUED: (More Commands Are Sill Being Added, Hang In There!)
  1723. ───────────────────────────────────────────────────────────────────────────────
  1724.  
  1725.  
  1726.   MAXcolor Commands:
  1727.   ──────────────────
  1728.   You can remotely change the colors used in the user's terminal program for
  1729.   drawing graphics primitives. However, there are no text based counterparts
  1730.   to these commands in order to retain the highest possible speed. These are
  1731.   similar to MAXcontrol commands, the exception to the rule is that the #126
  1732.   in MAXcontrol is replaced by a #125, all MAXcolor variables start at #127.
  1733.   For a better description of what each variable is used for, please see the
  1734.   file SVGAUNIT.PAS in the MAX Graphics development kit.
  1735.  
  1736.   Win1Back      = #255#125#127ColorNumber#255
  1737.   Win4Back      = #255#125#128ColorNumber#255
  1738.   Win1High      = #255#125#129ColorNumber#255
  1739.   Win4High      = #255#125#130ColorNumber#255
  1740.   Win1Low       = #255#125#131ColorNumber#255
  1741.   Win4Low       = #255#125#132ColorNumber#255
  1742.   Win1Frame1    = #255#125#133ColorNumber#255
  1743.   Win1Frame2    = #255#125#134ColorNumber#255
  1744.   Win4Frame     = #255#125#135ColorNumber#255
  1745.   ActiveHdr     = #255#125#136ColorNumber#255
  1746.   InactiveHdr   = #255#125#137ColorNumber#255
  1747.   HdrTitle      = #255#125#138ColorNumber#255
  1748.   ButtonFrame   = #255#125#139ColorNumber#255
  1749.   ButtonFace    = #255#125#140ColorNumber#255
  1750.   ButtonHigh    = #255#125#141ColorNumber#255
  1751.   ButtonLow     = #255#125#142ColorNumber#255
  1752.   ButtonHot     = #255#125#143ColorNumber#255
  1753.   ButtonText    = #255#125#144ColorNumber#255
  1754.   FrameHigh     = #255#125#145ColorNumber#255
  1755.   FrameLow      = #255#125#146ColorNumber#255
  1756.   BoxBack       = #255#125#147ColorNumber#255
  1757.   BoxHigh       = #255#125#148ColorNumber#255
  1758.   BoxLow        = #255#125#149ColorNumber#255
  1759.   FieldTextHigh = #255#125#150ColorNumber#255
  1760.   FieldTextLow  = #255#125#151ColorNumber#255
  1761.   FieldBack     = #255#125#152ColorNumber#255
  1762.   FieldFrame    = #255#125#153ColorNumber#255
  1763.   FieldHigh     = #255#125#154ColorNumber#255
  1764.   QuoteColor    = #255#125#155ColorNumber#255
  1765.   MsgColor      = #255#125#156ColorNumber#255
  1766.   TearColor     = #255#125#157ColorNumber#255
  1767.   FlagColor     = #255#125#158ColorNumber#255
  1768.   MsgIDcolor    = #255#125#159ColorNumber#255
  1769.   TextBack      = #255#125#160ColorNumber#255
  1770.   PickHighFore  = #255#125#161ColorNumber#255
  1771.   PickHighBack  = #255#125#162ColorNumber#255
  1772.   ScreenColor   = #255#125#163ColorNumber#255
  1773.  
  1774.  
  1775.   Special System Commands:
  1776.   ────────────────────────
  1777.   MAXterm also responds to special commands that are actually extensions of
  1778.   the MAXcolor commands. MAXcolor commands are allocated from #127 to #199,
  1779.   MAXterm system control commands are allocated from #200 to #254 using the
  1780.   variable type #125. (Are ya' confused yet? <G>) These extended commands
  1781.   are for querying MAXterm for special information, making it perform some
  1782.   special functions, and changing its internal variables. If you are not a
  1783.   programmer, then these commands will have little or no value to you and
  1784.   should be avoided at all costs.
  1785.  
  1786.   #255#125#200#255 : This command is used to make MAXterm send back the
  1787.                      user's name and password. Both of these are sent to
  1788.                      the BBS/Door program followed by a #13#10. When the
  1789.                      terminal is finished, it will send a #255#255#13#10.
  1790.  
  1791.   #255#125#201#255 : This command tells MAXterm to send a complete list
  1792.                      of all resources in the \SESSION\ subdirectory. Each
  1793.                      resource file name is sent to the BBS/Door followed
  1794.                      by a #13#10. When the terminal is finished, it will
  1795.                      send a #255#255#13#10. This command is very usefull
  1796.                      if you are implementing automatic resource updating.
  1797.  
  1798.   #255#125#202#255 : This command tells MAXterm to change its download
  1799.                      path to the \SESSION\ subdirectory.
  1800.  
  1801.   #255#125#203#255 : This command tells MAXterm to change its download
  1802.                      path to the \RESOURCE\ subdirectory.
  1803.  
  1804.   #255#125#204#255 : This command tells MAXterm to change its download
  1805.                      path back to its original path after it has been
  1806.                      changed to another path.
  1807.  
  1808.   #255#125#205#255 : This command tells MAXterm to send back all of its
  1809.                      critical system information. Each line of info is
  1810.                      followed by a #13#10. When the terminal is finished
  1811.                      it will send a #255#255#13#10.
  1812.  
  1813.   #255#125#206'FILENAME.EXT'#255 : This command tells MAXterm to delete
  1814.                                    a specific file in the \SESSION\ sub-
  1815.                                    directory. This is especially handy
  1816.                                    for updating your own resources or if
  1817.                                    you have implemented previewing of
  1818.                                    image files in your BBS/Door program.
  1819.  
  1820.   #255#125#207'FILENAME.EXT'#255 : This command tells MAXterm to delete
  1821.                                    a specific file in the \RESOURCE\ sub-
  1822.                                    directory. This is especially handy
  1823.                                    for doing complete updates of your
  1824.                                    BBS resource .PKG file.
  1825.  
  1826.  
  1827. ───────────────────────────────────────────────────────────────────────────────
  1828.  
  1829.  
  1830.   The MAX Graphics Color Palette:
  1831.   ───────────────────────────────
  1832.   To provide full compatibility from platform to platform, the actual palette
  1833.   settings (Red, Green, Blue values) are shown below. In BGI and most every
  1834.   other graphics programming interface, the Red, Green, Blue values are in a
  1835.   range of 0 to 63. Below are the Red, Green, Blue values shown left to right
  1836.   for each color in the MAX Graphics palette. The first row of numbers shown
  1837.   is color #0 and the last is color #255. In a lot of cases, these settings
  1838.   can be copied to a text file and used in other "Paint" programs such as the
  1839.   NeoPaint program from NeoSoft Corporation. Included in this archive called
  1840.   MAXGRAPH.PAL which is a pre-made palette file for NeoPaint. For information
  1841.   on how to obtain a copy of the NeoPaint program, please contact the company
  1842.   at the address or phone numbers listed below....
  1843.  
  1844.   NeoSoft Corporation
  1845.   354 NE Greenwood Avenue, Suite 108
  1846.   Bend, OR 97701-4631
  1847.  
  1848.   VOICE: (503)389-5489
  1849.     FAX: (503)388-8221
  1850.     BBS: (503)383-7195
  1851.  
  1852.   MAX Graphics Palette Values:
  1853.   ────────────────────────────
  1854.   0 0 0
  1855.   0 0 42
  1856.   0 42 0
  1857.   0 42 42
  1858.   42 0 0
  1859.   42 0 42
  1860.   42 21 0
  1861.   42 42 42
  1862.   21 21 21
  1863.   21 21 63
  1864.   21 63 21
  1865.   21 63 63
  1866.   63 21 21
  1867.   63 21 63
  1868.   63 63 21
  1869.   63 63 63
  1870.   15 3 12
  1871.   18 6 15
  1872.   21 9 18
  1873.   24 12 21
  1874.   28 16 25
  1875.   32 20 29
  1876.   36 24 33
  1877.   40 28 37
  1878.   44 32 41
  1879.   48 36 45
  1880.   52 40 49
  1881.   56 44 53
  1882.   58 46 55
  1883.   60 48 57
  1884.   62 50 59
  1885.   63 54 60
  1886.   0 0 18
  1887.   0 0 23
  1888.   0 0 28
  1889.   0 0 33
  1890.   0 0 38
  1891.   0 0 43
  1892.   0 0 48
  1893.   0 0 53
  1894.   0 0 58
  1895.   0 0 63
  1896.   0 8 63
  1897.   0 15 63
  1898.   0 20 63
  1899.   0 25 63
  1900.   0 30 63
  1901.   0 35 63
  1902.   0 40 63
  1903.   0 45 63
  1904.   0 50 63
  1905.   0 55 63
  1906.   0 60 63
  1907.   0 63 63
  1908.   7 10 31
  1909.   12 15 41
  1910.   17 20 41
  1911.   22 25 46
  1912.   27 30 51
  1913.   32 35 56
  1914.   37 40 61
  1915.   41 48 63
  1916.   15 0 30
  1917.   20 0 35
  1918.   25 0 40
  1919.   30 0 45
  1920.   35 0 50
  1921.   45 0 60
  1922.   50 0 63
  1923.   55 25 63
  1924.   58 31 63
  1925.   63 35 63
  1926.   63 40 63
  1927.   63 45 63
  1928.   63 50 63
  1929.   63 55 63
  1930.   63 60 63
  1931.   0 18 0
  1932.   5 22 0
  1933.   10 27 5
  1934.   15 32 10
  1935.   20 37 15
  1936.   25 42 20
  1937.   30 47 25
  1938.   35 52 30
  1939.   40 57 35
  1940.   45 62 40
  1941.   0 20 0
  1942.   0 25 0
  1943.   0 30 0
  1944.   0 35 0
  1945.   0 40 0
  1946.   0 45 0
  1947.   0 50 0
  1948.   0 55 0
  1949.   0 60 0
  1950.   0 63 5
  1951.   0 63 26
  1952.   0 63 34
  1953.   18 63 43
  1954.   40 63 48
  1955.   52 63 54
  1956.   58 63 55
  1957.   20 0 0
  1958.   25 0 0
  1959.   30 0 0
  1960.   34 0 0
  1961.   38 0 0
  1962.   42 0 0
  1963.   46 0 0
  1964.   50 0 0
  1965.   54 0 0
  1966.   58 0 0
  1967.   62 0 0
  1968.   63 22 22
  1969.   63 32 32
  1970.   63 35 35
  1971.   63 43 43
  1972.   63 45 45
  1973.   63 52 52
  1974.   63 57 57
  1975.   20 9 0
  1976.   25 14 5
  1977.   30 19 10
  1978.   35 24 15
  1979.   40 29 20
  1980.   45 34 25
  1981.   50 39 30
  1982.   55 44 35
  1983.   60 49 40
  1984.   63 52 43
  1985.   63 55 48
  1986.   63 57 50
  1987.   29 12 0
  1988.   37 16 0
  1989.   41 18 0
  1990.   48 18 0
  1991.   53 18 0
  1992.   56 21 3
  1993.   59 24 6
  1994.   63 28 10
  1995.   63 32 0
  1996.   63 38 10
  1997.   63 43 10
  1998.   63 49 18
  1999.   63 52 0
  2000.   63 54 0
  2001.   63 56 0
  2002.   63 58 0
  2003.   63 60 0
  2004.   63 63 0
  2005.   63 63 10
  2006.   63 63 20
  2007.   63 63 30
  2008.   63 63 40
  2009.   63 63 50
  2010.   0 15 15
  2011.   0 20 20
  2012.   0 25 25
  2013.   0 30 30
  2014.   0 35 35
  2015.   0 40 40
  2016.   0 45 45
  2017.   0 50 50
  2018.   0 55 55
  2019.   0 60 60
  2020.   30 63 63
  2021.   41 63 63
  2022.   50 63 63
  2023.   52 63 63
  2024.   40 0 25
  2025.   43 0 27
  2026.   46 1 29
  2027.   53 2 34
  2028.   59 8 36
  2029.   63 12 40
  2030.   63 20 41
  2031.   63 25 44
  2032.   62 31 47
  2033.   63 35 49
  2034.   62 44 56
  2035.   63 49 60
  2036.   63 10 10
  2037.   63 15 15
  2038.   63 20 20
  2039.   63 25 25
  2040.   63 30 30
  2041.   63 35 35
  2042.   63 40 40
  2043.   63 45 45
  2044.   63 50 50
  2045.   63 55 55
  2046.   20 20 0
  2047.   25 25 0
  2048.   30 30 0
  2049.   35 35 5
  2050.   40 40 10
  2051.   45 45 15
  2052.   50 50 20
  2053.   55 55 25
  2054.   60 60 30
  2055.   63 63 40
  2056.   63 63 50
  2057.   63 63 58
  2058.   0 10 0
  2059.   0 17 0
  2060.   10 20 10
  2061.   15 25 15
  2062.   20 30 20
  2063.   25 35 25
  2064.   30 40 30
  2065.   35 45 35
  2066.   40 50 40
  2067.   45 55 45
  2068.   50 60 50
  2069.   55 63 55
  2070.   25 15 0
  2071.   30 20 5
  2072.   35 25 10
  2073.   40 30 15
  2074.   45 35 20
  2075.   50 40 25
  2076.   55 45 30
  2077.   60 50 35
  2078.   63 55 40
  2079.   63 60 45
  2080.   2 2 2
  2081.   5 5 5
  2082.   8 8 8
  2083.   10 10 10
  2084.   12 12 12
  2085.   14 14 14
  2086.   16 16 16
  2087.   18 18 18
  2088.   20 20 20
  2089.   22 22 22
  2090.   24 24 24
  2091.   26 26 26
  2092.   28 28 28
  2093.   30 30 30
  2094.   32 32 32
  2095.   34 34 34
  2096.   36 36 36
  2097.   38 38 38
  2098.   40 40 40
  2099.   42 42 42
  2100.   44 44 44
  2101.   46 46 46
  2102.   48 48 48
  2103.   50 50 50
  2104.   52 52 52
  2105.   54 54 54
  2106.   56 56 56
  2107.   58 58 58
  2108.   61 61 61
  2109.   63 63 63
  2110.  
  2111. ───────────────────────────────────────────────────────────────────────────────
  2112.  
  2113.                            -=≡STANDARD DISCLAIMER≡=-
  2114.  
  2115.           Not  responsible  for   direct,   indirect,   incidental   or
  2116.           consequential  damages  resulting  from any defect, error, or
  2117.           failure to perform.  No other warranty expressed or  implied.
  2118.           Some  of  the trademarks mentioned in this product appear for
  2119.           identification  purposes  only.   Backup  all  hard   drives,
  2120.           floppies,  and  CD-ROMs  before  running  this  or  any other
  2121.           program.  Any resemblance to real persons, living or dead  is
  2122.           purely  coincidental.   Void where prohibited.  Some assembly
  2123.           required.   List  each  check  separately  by  bank   number.
  2124.           Batteries   not   included.    Contents   may  settle  during
  2125.           shipment.  Use only as directed.  Do not use while  operating
  2126.           a  motor vehicle or heavy equipment.  Postage will be paid by
  2127.           addressee.  Apply only to affected area.  May be too  intense
  2128.           for  some  viewers.   Do  not  stamp.   Use  other  side  for
  2129.           additional listings.  For  recreational  use  only.   Do  not
  2130.           disturb.   All  models  over  18  years of age.  If condition
  2131.           persists, consult your physician.  No user-serviceable  parts
  2132.           inside.   Freshest  if eaten before date on carton.  It takes
  2133.           ten first class stamps to mail a VHS cassette.  This  product
  2134.           is  meant  for  educational  purposes  only.  Do not apply to
  2135.           mucous membranes.  Subject to change without  notice.   Times
  2136.           approximate.   Simulated  picture.   Your  mileage  may vary.
  2137.           This is not a news broadcast.  No postage necessary if mailed
  2138.           in the United States.  Breaking seal  constitutes  acceptance
  2139.           of  agreement.   For  off-road use only.  As seen on TV.  One
  2140.           size fits  all.   Many  suitcases  look  alike.   Contains  a
  2141.           substaintial  amount  of  non-tobacco ingredients.  Celebrity
  2142.           lookalike.  Colors may, in time, fade.   Slippery  when  wet.
  2143.           For  office  use  only.  Not affiliated with the American Red
  2144.           Cross.  Drop in any mailbox.  Edited  for  television.   Keep
  2145.           cool; process promptly.  Post office will not deliver without
  2146.           postage.    List   was  current  at  time  of  printing.   At
  2147.           participating locations only.  Not the Beatles.   Substantial
  2148.           penalty for early withdrawal.  Grass catcher must be attached
  2149.           or  door  closed while engine is running.  Do not write below
  2150.           this line.  Falling rock.  Lost  ticket  pays  maximum  rate.
  2151.           Your  cancelled  check  is  your  receipt.  Add toner.  Place
  2152.           stamp here.  Avoid contact with  skin.   Sanitized  for  your
  2153.           protection.   Be  sure  each item is properly endorsed.  Sign
  2154.           here without admitting guilt.  Slightly higher  west  of  the
  2155.           Mississippi.    Not   affiliated  with  Snyder's  of  Berlin.
  2156.           Employees and their families are  not  eligible.   Beware  of
  2157.           dog.    Not   responsible   for   errors  in  typesetting  or
  2158.           photography.  Contestants have been briefed on some questions
  2159.           before the show.  Limited time  offer,  call  now  to  insure
  2160.           prompt delivery.  You must be present to win.  Dramatized for
  2161.           television.   Persons  using hold-open latches must remain at
  2162.           the refueling point during refueling.  No passes accepted for
  2163.           this  engagement.   No  purchase  necessary.   Use  only   in
  2164.           well-ventilated area.  Keep away from fire or flame.  Replace
  2165.           with  same  type.   Approved for veterans.  Booths for two or
  2166.           more.  Check here if tax deductible.  Bleu Cheese 25¢  extra.
  2167.           Some  equipment  shown  is  optional.  Price does not include
  2168.           taxes.  No Canadian coins.   Not  recommended  for  children.
  2169.           Prerecorded   for  this  time  zone.   Reproduction  strictly
  2170.           prohibited.   3%  surcharge  on  Visa  and  MasterCard.    No
  2171.           solicitors.  No pedestrians, bicycles, or farm machinery.  No
  2172.           anchovies  unless otherwise specified.  Vapors harmful.  Stop
  2173.           engine.  No smoking.  List  at  least  two  alternate  dates.
  2174.           First  pull  up,  then  pull  down.   Call  toll  free before
  2175.           digging.  Driver does  not  carry  cash.   Record  additional
  2176.           transactions  on  back  of  previous  stub.   Dealer  retains
  2177.           incentives.  May not be  available  in  Alaska,  Hawaii,  and
  2178.           Puerto Rico.  Sorry, Canada Eh!
  2179.  
  2180.           This notice supersedes all previous notices.
  2181.  
  2182. ───────────────────────────────────────────────────────────────────────────────
  2183.  
  2184.    Stephan Pollack [CEO]
  2185.    Douglas Harrington Jr. [Chief Programmer]
  2186.    Online Development Incorporated
  2187.    921 Box Butte Ave.
  2188.    Alliance, NE, 69301
  2189.    FAX/BBS #: (308)762-2239
  2190.    FidoNet  : 1:285/703
  2191.    Internet : utilz@bbc.net
  2192.               http://www1.ridgecrest.ca.us/~sprice/maxgraphics.html
  2193.  
  2194.  ╔═══════════════════════════════════════════════════════════════════════════╗
  2195.  ║ You may want to freq or download the file MAXTIPS.DOC from my BBS to help ║
  2196.  ║ you understand the ins and outs of MAX Graphics more clearly. There isn't ║
  2197.  ║ anything complicated about adding MAX Graphics to your BBS or doors,  but ║
  2198.  ║ I figure any extra help and information is better than none at all. True? ║
  2199.  ╚═══════════════════════════════════════════════════════════════════════════╝
  2200.