ÚÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄ¿ ³ ÚÄÄÄÄ¿ ³ À¿ ÚÄÄ¿ ³ ÀÄ¿ ÚÄÙ À¿ ÚÄÄ¿ ³ ³ ³ ³ ³ ³ ÀÄÄÙ ³ ³ ³ ³ ÀÄÄÙ ³ ³ ³ ³ ³ ³ Ú¿ ÚÄÄÙ ³ ³ ³ ÚÄÄÄÄÄÄÙ ÜÛÛ ÜÛÛÛÜ ³ ³ ÚÄ¿³ ³ ³ ³À¿ À¿ ³ ³ ³ ³ ÛÛ ÛÛ ßÛÛ ß ÜÛÛ ³ ÀÄÙ ÀÙ ³ ÚÙ À¿À¿ ÀÄ¿ ÚÄÙ ÀÄ¿ ÚÙ À¿ ÛÛÜ ÜÛÛ ÛÛ ÜÛÛß ÀÄÄÄÄÄÄÄ¿ ÚÙ ÀÄÄÄÄÙ ÀÄÄÄÙ ÀÄÄÄÄÄÄÙ ÀÄÄÄÄÙ ßÛÛÛß ÛÛ ÛÛ ÛÛÛÛÛ ÀÄÙ 1stReader RIP support module by Shane Hathaway Description =========== QRIP is a "1st"-class 100% RIPscrip 1.54 compatible RIP/icon file viewer and RIP terminal TSR. It has been optimized for compact size and maximum speed. It has the capability to change any terminal program which supports the QRIP TSR interface into a RIPscrip-compatible terminal. Features ======== + 100% RIPscrip 1.54 compatibility, in all respects. + The QRIP TSR interface! + Capability to recognize and fix some offline mail strips, with automatic message handling and security. + Strip-resistant RIP protocol. + ANSI anti-strip mode: ESC character not required! + Small size in memory (less than 150k) for reader DOS shells. + Complete extended ANSI support including "ANSI music", blinking, underlining, and a blinking cursor, even in graphics mode. + 1stPlay multimedia support. + Direct ANSI and icon file viewing. + Button-playing in view mode, so you can see how RIPscrip would respond in terminal mode. + The FASTest bezier curves in the business, thanks to the generosity of John Friel and the assembly language expertise of Michael Leavitt. + Skipping/aborting RIP files with a simple keypress. + Quick configuration selection options. + Abortable online music, beeping, and sound effects. + Separate font and icon files directories, and the ability to find all program files without changing directories. + PCBoard/Wildcat! color codes support. + AT-variables, 'club' character, and ANSI music pauses supported. + Support for use as a menu system. + Online speed simulation ranging from 50 - 115200 baud. + Individually-selectable RIP variable security and verification, with 'snoop protection'. + Automatically-handled configuration file and RIP environment variables, with the ability to use DOS environment variables as RIP variables. + Automatic font loading into memory when there's available space. + Keyboard 'sleep timeout' for RIP demos. + Full-screen ANSI pausing option. + Text screen restoration on exit. + An option to leave graphics on the screen at exit. + Special DOS wildcards such as ".", pathnames, and "..". + DOS file sharing and locking. Most of the features are totally automatic, and QRIP comes ready-to- run "right out of the box" -- almost. Before viewing anything, the author recommends you "prime" it by simply typing QRIP. The author also recommends you don't even look at this manual till you've played with this fun utility, and have viewed a huge collection. Go to a directory full of RIP files and type "QRIP *". Prepare to be impressed! Files Included with QRIP ======================== QRIP.EXE The executable. QRIP.DOC This file. *.CHR The 10 external font files. Other RIP packages have the fonts inside the executable - but this increases the amount of base memory required by a RIP viewer. QRIP is optimized for small size. QRIPTECH.TXT Complete description of the QRIP TSR interface. *.ICN, Some distributions of QRIP include all of the *.HIC, standard RIP icon files (*.ICN, *.HIC, and *.MSK). *.MSK You don't need them for proper operation of QRIP, but if QRIP ever gives you the "Icon missing" warning, the icon is probably one of the standard icons. License Information =================== QRIP is copyrighted software. You are granted a limited license to use this program in conjunction with Sparkware's 1stReader, and in compliance with the usage restrictions of 1stReader. You may not copy this program or its documentation for any purpose other than backup purposes. Distribution of the 1stReader edition of QRIP or its documentation to persons other than registered users of 1stReader is expressly prohibited and is in violation of federal laws. Shane Hathaway, the author of QRIP, and Sparkware hereby disclaim all warranties relating to this software, whether expressed or implied, including without limitation any implied warranties of merchantability or fitness for a particular purpose. Neither the author nor Sparkware will be liable for any special, incidental, consequential, indirect or similar damages due to loss of data or any other reason, even if the author, Sparkware, or an agent of the author or Sparkware has been advised of the possibility of such damages. In no event shall the author's or Sparkware's liability for any damages ever exceed the price paid for the license to use the software, regardless of the form of the claim. The person using the software bears all risk as to the quality and performance of the software. System Requirements =================== IBM or compatible computer with a hard drive. EGA or better graphical screen. DOS 3.0 or above. A mouse is recommended, but not required. QRIP Option Quick-Reference =========================== (This reference is similar to the one shown by typing QRIP /?) Usage: QRIP [options] filespec[.RIP/.ICN/.HIC/.MSK/.ANS] [options] /? See this help screen. /g Leave graphics on screen at exit, /gi = unconditionally, /gw /w Write to configuration file. /@ Simulate online baudrate. /TSR Install QRIP as a resident RIP terminal interface. /u Deinstall. /= Set text to put as the picture explanation. /z<##> Sleep timeout in seconds. /d Set filename where [DOS] menuing strings are output. /f Font files path (/f for QRIP.EXE path). /i Icon files path (/i for QRIP.EXE path). /# Offline mail anti-stripping. /a ANSI emulation, /a+ for ANSI anti-stripping. /r RIP emulation. /b Abort keys enabled. /e<##> 1stPlay MME interrupt number. /k Wait for key at RIP_NO_MORE commands (|#). /m Automatic message filtering and security. /p Show picture filename. /s Sound / ANSI music. /x Suppress all normal text. /c Clear screen on exit. /l Disable blinking (for faster graphics). /n Disable mouse. /j Just view files - don't use keyboard. /+ Full screen ANSI pausing. /v Environment RIP variables / QRIPVARS.DEF filename /y<##> The display timeout. Configuration and Usage Options =============================== With all of the features QRIP has, it has a lot of options to match - but almost everything is totally automatic, so you may never need to play with the options. QRIP has an interactive command-line configuration system. Any options you set can be made "stuck" by adding the /w option to write to the configuration file. All of the Yes/No options will also accept "ON", "OFF", "1", "0", "+", "-", etc. (and a whole lot of other things too). Uppercase/lowercase doesn't matter. You can type "QRIP" or "QRIP /?" to see the current configuration status. While looking at the screen, click around with the mouse - there are hidden buttons! /? See the help screen. /g Leave the graphics onscreen at exit, and don't wait for a key. This option can't be saved to the configuration file - you must simply specify it every time you want to use it. NOTE: Using the $HKEYON$ RIP variable, a RIP can override part of this option and cause QRIP to wait for a key even with the /g option. With /gi, you can disable the $HKEYON$ trick. See "Interactive RIP's" for more information. Use /gw to make QRIP wait for a key unconditionally. /w Write all options to the configuration file, QRIP.CFG. /@ Simulate an online baudrate ranging from 50 to 115200. /TSR Install as a TSR. This version of the QRIP TSR is restricted to operating only from within 1stReader. A standalone shareware TSR is soon to come. /u Deinstall the TSR. /= Set the text to put at the bottom of the screen when the picture is through. Note that you *must* put a space between the equals sign and the text, unlike the other options, and it must be the last option. /z<##> Sleep timeout in seconds. Whenever QRIP is waiting for a key, it will timeout after (n) seconds. Good for RIP demos and slide shows. /d Set the filename to which [DOS] strings are output. See "The QRIP Menuing System" for more information. /f Set the path to the font files. If you specify "/f" with no pathname, QRIP will look for the font files in the QRIP.EXE directory - so you usually don't need to set this option. /i Set the path to the icon files (*.ICN, *.HIC, *.MSK). If you specify no pathname, QRIP will look for the icons in the QRIP.EXE directory. /ripm or /1 Quick configuration settings selection. QRIP has more /ansm or /2 options than most people need to understand--so these /back or /3 options are provided to quickly set all other options. /rip or /4 Look at the following chart: /rip+ or /5 /ansi or /6 /net or /7 /show or /8 Quick configuration chart ========================= Default number Name Description ================================================================ 1 ripm General, unedited RIPscrip messages. 2 ansm Unedited ANSI messages. 3 back Viewing a RIPed backscroll buffer. 4 rip Simple, edited RIP files. 5 rip+ Advanced RIP files (buttons activated). 6 ansi Tidied ANSI files. 7 net Network/multitasker RIP.SYS mode 8 show RIP slide shows created with COPY command. Quick settings expansion ======================== Here's what each default setting changes: (* = Yes, - = No) ripm ansm back rip rip+ ansi net show Option Description 1 2 3 4 5 6 7 8 ================================================================== /k Key wait - - - - - - - * /# Antistrip * * - - - - - * /m Message fix * * - - - - - - /a ANSI emu * * * * * * * * /r RIP emu * - * * * - * * /e MME intr 63H 63H 63H 63H 63H 63H 63H 63H /p Caption - - - * * * - - /x TTY suppress * * - - - - - - /b Abort keys * * * * * * - * /n No mouse - - - - - - - - /c Clear at exit - - - - - - - - /l Blinking * * - * * * * * /a+ ANSIantistrip - * - - - - - - /v Environ vars - - - - * - - - /y Disp timeout 0 0 1 0 0 0 0 1 /+ Screen pause * * * - - * - * /j Just view - - * * - * - * /# Offline mail anti-stripping. This will convert some characters that are switched around by the network mail programs back to what they should be. To the author's knowledge, QRIP is the only viewer that does this. /a ANSI emulation. If you don't want ANSI, turn this off. If you use /a+, QRIP _DOES_NOT_REQUIRE_ the ESC character in ANSI screens! QRIP's internal logic is very good about recognizing whether an an open-bracket could actually be the start of an ANSI code, but it's not always possible to tell. With /a+, QRIP can view ANSI's completely stripped of ESC codes, but the default setting is OFF so that QRIP doesn't destroy non-stripped ANSI's. /r RIP emulation. QRIP can become an ANSI-only viewer by turning this off. It will use text mode for the display. /b Abort keys enabled. I'm not sure why you might want to disable the abort keys (SPACE and ESC), but the power is there if you need it. /e<##> 1stPlay MME interrupt number. Defaults to 63H. If you want to disable MME, set this to zero; if Sparky decides to change 1stPlay's interrupt number, change this to the new number (in hex). /k Wait for a key at RIP_NO_MORE (|#). With this option, you could quickly make RIP slide shows all bundled up in one file. /m Automatic message filtering. QRIP can automatically filter out message-header and tagline garbage from offline messages. This option also enables three message security options: 1. It won't write icons to the disk. 2. It won't save the graphics screen to disk. 3. Text variable definition/changing is prevented. /p Show picture filename or user-specified 'explanation text' (see the /= option) at the bottom of the screen. /s Sound / ANSI music enabled. Turn this off if you don't want to wake up the kids. /x Suppress all normal text. If you have message filtering off, all text and ANSI will be skipped. If you have message filtering on, this option simply decides what to do about the message header: if it's on, the header is shown, if it's off, no header. /c Clear screen on exit. If you don't like how QRIP restores the text screen after graphics, turn this option on. /l Disable blinking for faster graphics. QRIP is forced to write every character to the screen *twice* when it's in graphical blinking mode - although most people would rather have the cute blinking. It's up to you. /n Disable mouse. If you have trouble with QRIP's usage of the mouse, you can turn this option on. This can also make QRIP run slightly faster because it doesn't have to waste time initializing the mouse. /j Just view files--don't use the keyboard. This mostly just means that you can use any alphanumeric key to go to the next file. If it's off, most keys can be interpreted as button hotkeys. /+ Full screen ANSI pausing. Turn this on to pause the right before scrolling at the bottom of the screen. /v Environment RIP variables / QRIPVARS.DEF filename. If you specify Yes or No, the flag to use the environment variables (except PATH, COMSPEC, and PROMPT) as RIP variables will be switched on/off. If you specify a filename (paths allowed), that file will become the QRIPVARS.DEF file (as described under "QRIP and User-Defined RIP Variables"). The filename must be more than 3 characters long. /y<###> Display timeout. If this is zero, QRIP will always wait for a key to be pressed to clear the windows it puts up on screen. If it's 1 or more, this represents the number of 18ths of a second to wait before automatically canceling the windows. RIPscrip environment variables ============================== If you don't set up the fonts/icons directories, QRIP recognizes the RIPFONTS and RIPICONS DOS environment variables to specify the path to the fonts and icons files. Try them - they can make things much simpler. Hopefully, other vendors of RIPscrip products will make use of these two environment variables. They can be used to auto-configure systems and reduce wasted hard drive space taken up by multiple sets of font files. QRIP and User-Defined RIP Variables =================================== Sometimes a BBS needs a small piece of information about you, such as your full name, your password, your phone number, etc. for login or registration. RIPscrip gives BBS's the ability to automatically query QRIP for such things. User-defined RIP variables are the key. Some BBS's have the ability to ask you to login only once for your full name and password at login, and every time you login thereafter QRIP will simply tell the BBS what your name and password are. This is done with RIP variables. The BBS asks QRIP to store the information in a database. QRIP uses a file named QRIPVARS.DEF as this database. When a BBS has created this file, find it and take a look at it. Its format is very simple, with a list of variables like this: VARIABLE_NAME=value QRIP uses this format so it's easy to modify anything stored as a variable. You may decide that your password needs to be more secure: there are some people who may use the "RIP variable" feature of RIPscrip to get your password and use your account for their devious hacking. To protect yourself, you can place an asterisk ('*') in the QRIPVARS.DEF file just before the PASSWORD variable name. Before sending the password, QRIP will pop-up a window asking you to verify that you really want to send it, and it will also give you a chance the modify its contents. Here's an example QRIPVARS.DEF file which will cause QRIP to always verify the information before sending VOICE_PHONE, DATA_PHONE, or PASSWORD: FULL_NAME=John Doe ADDRESS=Jean St. CITY=New York ZIPCODE=12345 *VOICE_PHONE=(123)456-7890 *DATA_PHONE=(103)347-3851 COMPANY=New York Enterprises *PASSWORD=abcdefg For even greater security, you can instead put an exclamation point ('!') before the variable. This will make it so QRIP will conceal the contents of the variable from any nosy onlookers when QRIP asks you to verify you want to send it. The QRIP Menuing System ======================= QRIP gives you the ability to use RIP graphics as a menuing system. To use this feature, make your RIP buttons send a host command that starts with "[DOS]" followed by a string to send to a user-specified filename (specified by the /d option). The menuing system is only enabled when a /d option is specified. This feature would best be used for batch files. You might make a RIPMENU.BAT file that looks like this: @echo off if not exist menuopt.bat goto domenu del menuopt.bat :domenu qrip menu /dmenuopt.bat /pn /sn /cy /bn if exist menuopt.bat menuopt.bat Then you would make a MENU.RIP file which displays a picture and defines buttons that send back [DOS] followed by the DOS commands required to run a given program. The DOS command would then be written to TEMP.BAT as soon as the user clicks on a DOS command button. If none of the DOS buttons were pressed, the TEMP.BAT file wouldn't be created and the MENU.BAT file would be exited. The [DOS] processing also supports control characters, RIP variables, and embedded templates, so you can make very complicated menus with QRIP. You might try experimenting with the $>RIPFILE.RIP$ calling sequence, so you can have an entire menu structure. All of these features are better explained in RIPaint and in the RIPscrip document. An example: suppose you want to put three items on the menu, say, Lotus 1-2-3, WordPerfect, and 1stReader. The first button might have a host command of: [DOS]c:^Mcd\\123^Mc:\\123\\123 (Notice how the backslash is doubled. You need to remember to double-up backslashes if you're manually editing RIP files. You don't need to remember that if you're using a RIP art program.) The second button: [DOS]c:^Mcd\\WP60^Mc:\\WP60\\WP And the third: [DOS]c:^Mcd\\1st^Mc:\\1st\\1st When the user clicks on the button, the string after the "[DOS]" will be put (after pre-processing, like changing the ^M to a carriage-return) into whatever filename was specified as the /d option (in this case, TEMP.BAT). This menu system isn't standard RIPscrip, but the [DOS] specifier is designed so RIPterm will ignore it if sent through a BBS. RIPterm will think you intend to do a "chaining" operation - so unless you have an "S" template defined (which you don't have to worry about unless you have a good idea of what I'm talking about, and you've defined an "S" template), the menu system is completely invisible to anything but QRIP. QRIP's auto-message handling ============================ QRIP configures itself by default with automatic message-handling turned ON. What this mainly does is strip out all of the header and tagline garbage from messages. The way it recognizes the beginning of the picture text is it scans for ANSI sequences, and shows everything from there. As soon as it finds a tearline, it stops showing the text. QRIP will also start displaying text when a RIP text window is defined which isn't right at the very top or bottom of the screen. If you don't do one of the two, most other people with QRIP won't see your text because they have the message-handling switched on. A good ANSI sequence to use is: [0m where represents the ASCII 27 character. If you can't type the character into your editor, you can use the Alt-96 character instead: push and hold the Alt key, type 96 on the numeric keypad, and release Alt. Interactive RIP's ================= 1stReader uses the /g option to cause QRIP to exit immediately after viewing the file, and to keep the graphics onscreen. With this option, QRIP doesn't wait for a keypress. The Ansi_Phreak Joey Malacria likes to make interactive RIP's (as does the author), but when QRIP exits so quickly, it doesn't give the user a chance to push on any of the buttons. To circumvent this problem, you can put the following line into your RIP's: !|10000$HKEYON$ QRIP will override the /g and wait for a key anyway. The represents ASCII code 27. If you can't type in the esc character, read the section "QRIP's auto-message handling". If you never want QRIP to override the /g, you can use /gi instead, and the $HKEYON$ is ignored. QRIP and @ variables ==================== QRIP uses the RIP variables as @ variables. This means you can use any RIP variable as an @ variable, anywhere in the text, *including* RIP sequences. In fact, if you were to define a RIP variable "RIPWINDOW" as: !|*|w00001Z1010 and then use @RIPWINDOW@ in a RIP file, QRIP would interpret it as a true RIP sequence. This capability also allows you to create your own @ variables by adding them to QRIPVARS.DEF (outlined under "QRIP and User-Defined RIP Variables"), or whatever file is defined by the /v option. In addition to the standard RIP variables, QRIP also provides an interesting sequence which can be used in @ variables and $$ variables: @.VAR in the QRIP.EXE directory, the icons directory, and the current directory. If it finds .VAR, it selects one of the lines in that file at random and inserts the text of that line into the RIP or ANSI file. Remember when using this syntax, that the filename MUST be in uppercase! A note about RIPscrip security ============================== RIPscrip cannot harm in any way a BBS which is running it. It does, however, have potential for slight damage to the users' terminals, therefore QRIP has the following security features to prevent all hazards: 1. QRIP doesn't allow pathnames when writing icons to disk. 2. Requests to write .EXE, .BAT, and .COM files are ignored. 3. All beeps, bells, and whistles are handled as if they were "ANSI music", and therefore can be aborted by a keypress. When automatic message handling/security is enabled, QRIP enables three more security features: 4. QRIP won't write any icons at all to disk. 5. It won't allow RIP files to save the graphics screen to disk. 6. Text variables are restricted from being defined or re-defined in QRIPVARS.DEF (or whatever the /v option specifies). The Strip-resistant protocol ============================ QRIP recognizes a modified RIP protocol which is more resistant to offline mail stripping. Instead of the !| at the beginning of a line, you can use the following ANSI sequence anywhere in a line: [| where is ASCII 27, 96, or 250. This feature is only enabled when offline anti-stripping (the /# option) and RIP emulation (/r) are both switched on. If you also turn on the ANSI anti-stripping, you could actually have a RIP sequence start with just "[|". QRIP on a network ================= If you run QRIP on a network or in a multitasking environment with the possiblity of several instances of the same QRIP.EXE running simultaneously, all you have to do is start-up QRIP in a different directory for each instance. QRIP's file sharing will engage and will disallow different copies from accessing the same QRIP temporary files, and will place the files in the current directory instead. You don't have to make multiple copies of QRIP.EXE or QRIP.CFG. Bug Reports =========== If you're sure there's something wrong and you've checked everything else, please don't hesitate to report the problem to me. You can reach me on ILink and RIME through the RIPscrip and ANSI conferences, or by calling The Graphics Connection at (801)264-1191. You will be able to leave a (C)omment for the sysop after going through registration, and the sysops will forward your comment to me. If you prefer the 29-cent, slower variety of communication, snail-mail me at: Shane Hathaway 7771 W 3455 So Magna, UT 84044 (USA) THANK YOU! ========== Many thanks to those who have made this project possible! It was on ILink that I first discovered RIP. Thanks to all the administrators for creating an efficient, well-balanced, and well-moderated mail network. Thanks to The Graphics Connection BBS (801)264-1191 for providing me access to ILink, and thanks to Glenda, Michael, and Kay (the sysops) for running TGC so well. Thanks to Sparky, who provided me with a goal to attain: a RIPscrip TSR! Thanks to Glenda for her dedication to the project, for the QRIP Pro file selection screen logo, and for a gigabillion other things. Thanks to Michael Leavitt for tips on a few things and for the assembly-code optimization of the bezier curve routine. Thanks to John Friel for posting a bezier curve routine on ILink that made my lightning-speed bezier possible. Thanks to the RIP artists around the world, especially Michael Arnett, Annie Mendetta, John Kwasnik, Wayne Thomas, and a whole lotta others who helped me debug QRIP without them even knowing it (grin). Thanks to the 1stReader beta team, especially Matthew Waldron, Joe Malacria (the Ansi_Phreak), John "OS/2 forever" Phillips, and Sparky, for reporting bugs I couldn't possibly have guessed would exist. Thanks to TeleGrafix for inventing this wonderful protocol! Thanks again to Joe Malacria, who came up with the idea for the strip-resistant protocol. Last but not least, thanks to my family which lets me use the computer all day. Copyrights and Trademarks ========================= QRIP is Copyright (c)1994 by Shane Hathaway. All Rights Reserved. RIPscrip is a trademark of TeleGrafix Communications, inc. 1stReader and 1stPlay are a trademarks of Sparkware.