TM V I E W ACiD Productions(tm) Acquisition Enhanced File Viewer Coding by The Hit Man RIP Routines by Cap n Crunch and The Hit Man Layout by Icy Character Font by RaD Man Modem Simulation Routines by Tasmaniac Documentation and Update History of ACiD Productions ACiD View By The Hit Man and RaD Man of ACiD Productions(tm) Current version of ACiD View 2 02 06-01-1994 19 33 Introduction to ACiD View ACiD View welcomes you to the most comprehensive Art View- er in production This innovative program is capable of dis- playing both ANSI and RIP graphics In addition the viewer has been designed with a special interest for those who multi- task ACiD View utilizes its own internal ANSI routines making it capable of viewing ANSI without a separate device driver We hope that ACiD View provides you with as much pleasure as we intended with its creation Features Full File Description and Artist Initial Identification Now supporting our very own special SAUCE Semi Gooey Menu System Mouse support Pull-down Menus Command Line Viewing Slide-Show capable Variable Speed ANSI Viewing Modem-Simulation for both ANSI and RIP Viewing File Masking Drive and Directory switching Level 0-1 RIP Viewing Fully-Features ANSI Scroll Back in several different video modes ANSI Viewing in 80x25 or 80x50 80x43 text modes ANSI Viewing in 640x480x16 VGA mode ANSI Viewing in 320x200x256 MCGA mode ANSI Viewing in 640x480 800x600 and 1024x768x256 SVGA VESA modes Supports up to 2000 files in one directory ACiD View Default Setup (INI) with automatic saving What ACiD View Displays ACiD View will display ANSI screens in several different video modes These modes include the default 80x25 and others such as the 80x43 80x50 text modes 640x480x16 VGA 320x200x256 MCGA 640x480 800x600 and 1024x768x256 VESA SVGA modes ACiD View also supports all of the major SVGA chipsets (Trident Oak TSeng etc ) ACiD View displays most low level (0-1) RIP screens Although it will show all of the RIPs presented in the Acquisition it may not display some of the other RIPS you own This is due to the fact that some of the higher level RIP commands have not yet been implemented ACiD View is capable of displaying ANSI or RIP files at sim- ulated modem speeds To ensure that these files display at the same speed on all computers the timer interrupt is altered This can create a possibility for problems while running ACiD View under a multitasking operating system such as DesqView In order to prevent this problem these modem simulation routines have been disabled within all multitasking environ- ments ACiD View Functions F1 Quick-Help Brief description of function keys F2 Scroll Back Toggles Scrolled viewing ON OFF Default is OFF While ON you can scroll back ANSI in 80x25 80x43 80x50 and 320x200 Modes F3 Toggle Speed Displays files in a variety of speeds No Delay ErrorChecking 38 400 19 200 14 400 12 000 9600 4800 and 2400 bps The default is No Delay If you want to display files at an alternate bps rate you can customize the speed by pressing the (+) or (-) keys to in- crease or decrease the speed repsectively F4 Display Mode Selects the video mode that the selected ANSI is to be viewed in 80x50 Display - If you have a VGA card this will compress the default 8x16 font into an 8x8 font and display the screen This feature is nice when you want to display a big ANSI on one screen VGA 16 - Displays ANSI in 640x480x16 VGA mode MCGA 256 - ACiD View will display ANSIs in 320x200x256 MCGA (mode 13h) graphics mode VESA SVGA - Displays ANSI in 640x480 800x600 and 1024x768x256 SVGA modes VESA SVGA is required for these viewing modes Display Mode Description Flags 25 Line Standard 80x25 Text Mode ABS 50 Line 80x43 80x50 Compressed Text Mode ABES VGA 16 640x480x256 VGA Graphics Mode AV MCGA 256 320x200x256 MCGA Graphics Mode AMS 640x480 640x480x256 VESA SVGA Graphics Mode AG 800x600 800x600x256 VESA SVGA Graphics Mode AG 1024x768 1024x768x256 VESA SVGA Graphics Mode AG RIP 640x350x16 EGA Graphics Mode BER Flags A = Ansimated Viewing Supported B = Modem Simulation Supported R = RipScrip Graphics Supported S = Scroll Back Supported E = EGA Required M = MCGA Minimum Required V = VGA Required G = VESA SVGA Required F5 File-Masking Selects files within a specified file mask Alt+A Ansimation Forces the ansimation flag of the highlighted file Use this option when you know the ANSI you want to view contains ansimation and is not flagged so This option only affects the 320x200x256 MCGA mode Alt+= Quick-Exit Quickly Exits ACiD View without palette fad- ing The ACIDVIEW INI File ACiD View now includes an INItialization file which allows you to set up your preferred defaults upon the loading of the viewer ACIDVIEW INI can be edited with virtually any text editor of your choice While editing the file please note that each line is interpreted as a command unless a semi-colon precedes it Only the information within the quotes or after the equal character should be modified Follow the instructions for each entry as shown in ACIDVIEW INI ACiD View will automatically save any changes made to the configuration during run-time in the initialization file What is SAUCE Recipe for SAUCE Chef cuisinier Tasmaniac ACiD Maitre d h tel Rad Man ACiD ANSi s used to be just ANSi s pictures were just pictures loaders were just loaders and quite frankly every file was just as plain tasting as every other This is about to change how- ever because ACiD has decided to give their files an extra je-ne-sais-quoi In reality we ll be adding SAUCE to every file you can imagine Now before we thoroughly confuse you let us explain what we are doing here SAUCE stands for Standard Architecture for Universal Comment Extensions Although originally intended for personal use in ANSi s and RIP screens early in the developement of EFI (Extended File Information) it was decided that EFI should be extended to have support for more than just ANSi and RIP screens Our brainchild was born and the specs were designed The only aspect left undecided was the name and after rejecting some very funny candidates SAUCE was unanimously chosen This leads us to the big question in the sky What is sauce SAUCE is a universal process to incorporate a full description for any type of file The most outstanding aspect of this concept is that you have access to the complete file name the file s title the creation date the creator of the file the group that the creator is employed by and much much more A full explanation on how you can implement SAUCE is described at the end of this document in the PLATES (Programming Language Architecture To Extract SAUCE) section Although you can create your own programs to implement SAUCE to your files we recommend that you use the SPOON EXE program to ensure a greater universal compatibility SAUCE already supports a plethora of filetypes (See PLATES) If you have a need for the SAUCE specifications please contact us before you make the changes yourself We will accomodate your needs as soon as possible After all SAUCE is designed to become a standard and if people change the specs without allowing us to make a complete update there will be no standard In the event that we change SAUCE we will quickly release a public update which will most definately include an improved and updated SPOON EXE SAUCE has advantages over any other system in use Each description will be added to the file and will provide a file description no matter what computer it is used for SAUCE how- ever also provides a back compatibility that uses a file with descriptions for those files that do NOT already have a SAUCE description Processing in this manner is fully implemented in SPOON EXE and one can extract embedded SAUCE to this data file and add SAUCE to files from this data file PLATES ------ Let us begin with a description of the record layouts used The record layouts and code examples are in a variated pascal pseudo code and should be transferrable enough to implement in most other programming languages For ease of reading the examples assume that the file is correct and that no error- checking need be included How rigorous you check for errors is completely up to you and will most likely depend on the file type you are describing SAUCE RECORD ------------ This portion of the documentation is about the SAUCE record The SAUCE record describes the file in short and provides other information not included in the SAUCE record itself A sauce record is _EXACTLY_ 128 bytes in size Fieldname Name of the field Size Size of the field in BYTES Type Type of data This can be BYTE One byte unsigned numeric value (0 to 255) WORD Two byte unsigned numeric value (0 to 65535) INTEGER Two byte signed numeric value (-32768 to 32767) LONG Four byte signed numeric value (-2147483648 to 2147483647) CHARACTER One byte ASCII value Longer character fields are padded with spaces It is _NOT_ a PASCAL string (with a leading length byte) and it s _NOT_ a C-Style string (with a trailing nul-byte) A 10 byte character field holding the text ANSI would look like this ANSI Numeric fields should be zero when not used character fields should be all spaces when not used V# SAUCE Version number This indicates the version of SAUCE when the field was implemented Description Complete description of the field !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! No fields are REQUIRED to be filled in except for ID Version FileSize DataType and FileType !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! FieldName Size Type V# Description --------- ---- --------- -- ----------- ID 5 Character 00 SAUCE Identification This should be equal to SAUCE or the record is not a valid SAUCE record Version 2 Character 00 Version number of SAUCE Current version is 00 As new features are added to the specifications of SAUCE this version number will change Future versions SHOULD remain compatible with version 00 only ADDING on the specifications it is however not unlikely that this compatibility is impossible to maintain but this is of no concern now Title 35 Character 00 Title of the file Author 20 Character 00 Name or handle of the creator of the file Group 20 Character 00 Name of the group the creator is employed by Date 8 Character 00 Date the file was created This date is in the format CCYYMMDD (Century year month day) There is a good reason why the date is in this format but it s not used in version 00 of SAUCE It will be used in a future version of SAUCE FileSize 4 Long 00 Original filesize NOT including any information of SAUCE DataType 1 Byte 00 Type of Data (See DATATYPES further on) FileType 1 Byte 00 Type of File (See DATATYPES further on) TInfo1 2 Word 00 Numeric information field 1 (See DATATYPES) When used this field holds informative values Any program using SAUCE should not rely on these values being correct or filled in TInfo2 2 Word 00 Numeric information field 2 (See DATATYPES) TInfo3 2 Word 00 Numeric information field 3 (See DATATYPES) TInfo4 2 Word 00 Numeric information field 4 (See DATATYPES) Comments 1 Byte 00 Number of Comment lines (See COMMENTS) Flags 2 Word * 00 Flags indication optional settings switches These flags have different meaning depending on the data type The flags weren t originally in the concept for Version 00 of SAUCE but since the specification of SAUCE expects all filler bytes to be binary zero the flags should be set to ZERO in all previous files and cause no significant harm An Example PASCAL record looks like this TYPE SAUCERec = RECORD ID Array 1 5 of Char Version Array 1 2 of Char Title Array 1 35 of Char Author Array 1 20 of Char Group Array 1 20 of Char Date Array 1 8 of Char FileSize Longint DataType Byte FileType Byte TInfo1 Word TInfo2 Word TInfo3 Word TInfo4 Word Comments Byte Flags Byte Filler Array 1 22 of Char END An Example C record looks like this typedef SAUCEREC char ID 5 char Version 2 char Title 35 char Author 20 char Group 20 char Date 8 signed long FileSize unsigned char DataType unsigned char FileType unsigned int TInfo1 unsigned int TInfo2 unsigned int TInfo3 unsigned int TInfo4 unsigned char Flags char Filler 22 SAUCEREC DATATYPES --------- DataType and FileType hold the information needed to deter- mine what type of file it is There are 5 DataTypes these are (with their respective numeric values) 0) None Undefined filetype you could use this to add SAUCE information to personal datafiles needed by programs but not having any other meaning 1) Character Any character based file Examples are ASCII ANSi and RIP 2) Graphics Any bitmap graphic file Examples are GIF LBM and PCX 3) Vector Any vector based graphic file Examples are DXF and CAD files 4) Sound Any sound related file Examples are samples MOD files and MIDI 5) BinaryText This is RAW memory copy of a text screen It s basically the BIN format you can save from whitin TheDraw Each character is built up of two consecutive bytes The first is the character to be displayed The second is the Attribute byte None ---- When using the None datatype you should have FileType set to zero also This is a compatibility issue as it s not unlikely the None datatype will have filetypes in the future Character --------- When using the Character datatype you have following filetypes available 0) ASCII Plain text file with no formatting codes or color codes TInfo1 is used for the width of the file TInfo2 is used to hold the number of lines in the file 1) ANSi ANSi file With ANSi color codes and cursor positioning TInfo1 is used for the width of the file TInfo2 is used to hold the number of ANSi screen lines in the file 2) ANSiMation ANSi Animation With ANSi color codes and cursor positioning While an ANSi file can also have animated sequences there is a clear distinction While an ANSi may or may not have a beginning animated sequence introducing the group or artist the rest is just a sequence of colored characters An ANSiMation on the other hand is a more like a text mode cartoon TInfo1 is used for the width of the file TInfo2 is used to hold the number of ANSi screen lines the ANSiMation was created for A program using SAUCE may use these two values to switch to the appropriate video mode 3) RIP Remote Imaging Protocol (RIP) graphics file TInfo1 holds the width (should be 640) TInfo2 holds the height (should be 350) TInfo3 holds the number of colors (should be 16) 4) PCBoard File with PCBoard style @X color codes and @ macro s and ANSi codes TInfo1 is used for the width of the file TInfo2 is used to hold the number of ANSi screen lines in the file 5) AVATAR A file with AVATAR and ANSi color codes and cursor positioning FLAGS for the Character Datatype ----- 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 A All non-used bits should be ZERO A) Non-Blink mode (iCE Color) When this bit is SET (equal to 1) The ANSi is created using iCE color codes This is a special mode where the blinking is disabled and you have 16 background colors available Basically you have the same choice for background colors as for foreground colors Please note When the picture does not make specific use of the iCE color you should NOT have this bit set When you do not support the iCE color mode you should probably not display the file as it could look pretty weird in normal mode Graphics -------- For all graphics types TInfo1 holds width of the image TInfo2 holds the Height of the image and TInfo3 holds the number of bits per pixel (a 256 colour image would have 8 bits per pixel a TrueColor image would have 24) Following Graphics filetypes are available 0) GIF (CompuServ Graphics Interchange format) 1) PCX (ZSoft Paintbrush PCX format) 2) LBM IFF (DeluxePaint LBM IFF format) 3) TGA (Targa Truecolor) 4) FLI (Autodesk FLI animation file) 5) FLC (Autodesk FLC animation file) 6) BMP (Windows Bitmap) 7) GL (Grasp GL Animation) 8) DL (DL Animation) 9) WPG (Wordperfect Bitmap) 10) SBM (SUN BitMap) 11) JPG (JPeg compressed File) 12) MPG (MPeg compressed animation video) 13) AVI (Audio Visual Interlace) FLAGS ----- Not used should be all zeroes Vector ------ Following Vector filetypes are available 0) DXF (CAD Data eXchange File) 1) DWG (AutoCAD Drawing file) 2) WPG (WordPerfect DrawPerfect vector graphics) 3) SVI (Sun VectorImage) FLAGS ----- Not used should be all zeroes Sound ----- Following sound filetypes are available 0) MOD (4 6 or 8 channel MOD NST file) 1) 669 (Renaissance 8 channel 669 format) 2) STM (Future Crew 4 channel ScreamTracker format) 3) S3M (Future Crew variable channel ScreamTracker3 format) 4) MTM (Renaissance variable channel MultiTracker Module) 5) FAR (Farandole composer module) 6) ULT (UltraTracker module) 7) AMF (DMP DSMI Advanced Module Format) 8) DMF (Delusion Digital Music Format (XTracker)) 9) OKT (Oktalyser module) 10) ROL (AdLib ROL file (FM)) 11) CMF (Creative Labs FM) 12) MIDI (MIDI file) 13) SADT (SAdT composer FM Module) 14) VOC (Creative Labs Sample) 15) WAV (Windows Wave file) 16) SMP8 (8 Bit Sample TInfo1 holds sampling rate) 17) SMP8S (8 Bit sample stereo TInfo1 holds sampling rate) 18) SMP16 (16 Bit sample TInfo1 holds sampling rate) 19) SMP16S (16 Bit sample stereo TInfo1 holds sampling rate) 20) PATCH8 (8 Bit patch-file) 21) PATCH16(16 Bit Patch-file) FLAGS ----- Not used should be all zeroes BinaryText ---------- The Binary Text format basically has no Filetype since the datatype has already defined how the file will look The FileType however specifies the WIDTH of the BinaryText screen Only the Width is required as the Height can be calculated by dividing the filesize by the Width In an attempt to provide as much WIDTH as possible in a possible 256 values of the Byte-sized FileType The width is specified in Multiples of 2 The fact that the Width is specified in multiples of 2 isn t really a problem since you also need to define the effective screen size in multiples of 2 An example For normal 80*25 binary images as made with TheDraw the FileType value would be 40 (since 2*40 equals 80 g ) All you need to do is divide the width of the binary text image by 2 This gives a maximum width of 510 characters Although currently not supported should there be a need for even bigger images this can be arranged Please note BinaryText expects the character-attribute pairs to be stored one row at a time If you wanted to create a 80*100 Image you could do this by just copying 4 80*25 or 2 80*50 together to form one biger image If for example you wanted to create a 160*25 image from 2 80*25 images you would need to write a little program which would copy line 1 from image 1 line 1 from image 2 Line 2 from Image 1 Line 2 from Image 2 and so on Basically you should have all character-attribute pairs from one line of the COMPLETE image one after the other followed by all char-attribute pairs from the next row and so on If the picture does not fit this format You should use the NONE datatype Besides you d probably want to have it in this format anyway as it seems to be the most logical approach to have these kind of images FLAGS for the BinaryText Datatype ----- 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 A All non-used bits should be ZERO A) Non-blink mode (iCE Color) This bit has exactly the same meaning as for the Character datatype It indicates whether the picture uses iCE color COMMENTS -------- The comment block is an addition to the SAUCE record It holds up to 255 lines of additional information Each line 64 characters wide When the Comments field is not zero it holds the number of additional comment lines are available A single comment line is 64 characters long Like the character fields in the SAUCE record it is padded with spaces and has no leading length byte or trailing null-byte The comment block is preceded with a 5 character identifi- cation mark This identification mark is COMNT SAUCE IN FILES -------------- A file with SAUCE added to it Will look like this FILE DATA Actual file data As if it would be without SAUCE EOF MARKER EOF marker This will assure character files can easily determine the end of file COMMENT BLOCK Optional Comment block SAUCE RECORD SAUCE record The Comment block COMNT Comment block ID bytes COMMENTLINE 1 First comment line COMMENTLINE 2 Second comment line COMMENTLINE N n-th comment line n equals the Comments field in SAUCE record EXAMPLE CODE TO READ SAUCE -------------------------- Variables Byte Count Long FileSize file F Code Open_File(F) Open the file for read access FileSize = Size_of_file(F) Determine filesize Seek_file (F FileSize-128) Seek to start of SAUCE (Eof-128) Read_File (F SAUCE) Read the SAUCE record IF SAUCE ID= SAUCE THEN ID bytes match SAUCE IF SAUCE Comments 0 THEN Is there a comment block Seek_File(F FileSize-128-(SAUCE Comments*64)-5) Seek to start of Comment block Read_File(F CommentID) Read Comment ID IF CommentID= COMNT THEN Comment ID matches COMNT For Count=1 to SAUCE Comments Read all comment lines Read_File(F CommentLine) ENDFOR ELSE Invalid_Comment Non fatal No comment present ENDIF ENDIF ELSE Invalid_SAUCE No valid SAUCE record was found ENDIF SAUCE DATAFILE -------------- The full specifications of the SAUCE datafile are not ready yet INFORMATION OR UPGRADES ----------------------- If you have a need for additional information on SAUCE or need modifications you can contact me at these places Leave a message to TASMANIAC on any of these boards Neo Tokyo +32-50-620112 USR 16800 Dual +32-50-625717 ZyXEL 19200 Channel Zer0 +1-714-532-5950 Practical 14400 +1-714-532-5968 USR 28800 Dual Acquisition Viewer 2 02 1) New RIP routines by Cap n Crunch used in part with already exist- ing source to accelerate display speed 2) ACiD View now uses Tasmaniac s assembly source for SAUCE reading and increases the speed of on-the-fly definition loading 3) Fixed ansimation mode bug 4) Fixed mouse bug and other minute flaws Acquisition Viewer 2 01 1) New pull-down interface by Icy of ACiD Productions Acquisition Viewer 2 00 1) ACiD View takes on a hot new look in its new interface created by Dr Tongue of ACiD Productions The layout has been completely reconstructed and now provides the end user with pull-downs and the same familiar hot keys 2) ACiD View now makes use of on-the-fly SAUCE definition loading This process will greatly increase your initialization speed on computers that contain a multitude of files 3) ACiD View now caters to mouse users supporting a wide spectrum of different mouse types 4) ACiD View has recently been implemented with progress bars Your estimated position in the list of files or directories can now be visually monitored with the help of the elevator located to the right of the file directory listing 5) VESA SVGA viewing updated for 640x480 800x600 and 1024x768x256 modes ACiD View supports the following chipsets as well as the VESA standard mode Ahead ATI Chips & Tech Everex Genoa Paradise Oak Trident TSeng and Video7 If you have trouble viewing in SVGA mode try loading your video cards VESA driver 6) All setup changes made during the run-time of ACiD View will be saved upon exiting the program 7) More minor bugs fixed Acquisition Viewer 1 50 1) ACiD View Control File support Added ACiD View will now load defaults from ACIDVIEW INI 2) Screen now displays the current directory 3) Drive switching now added ACiD View will show drives A - Z (Including FLOPPY SUBST RAM and other drives ) 4) Command line Viewing is now supported! (Type ACiDView ) 5) ND CHECK (NO DELAY mode w Error Checking) display speed added This speed is the same as NO DELAY except it checks if ANSIs con- tain lines with more than 255 characters per line Acquisition Viewer 1 40 1) Multitasking environment awareness implemented (ie DesqView and OS 2 ) 2) Modem simulation routines are now disabled when ACiD View is loaded under multitasking environments 3) Directory switching added Change directories simply by pressing the return key 4) File jumping and auto-sorting added ACiD View will now jump to the first file that begins with the character entered by the user 5) 640x480 viewing is now two times faster than version 1 32 320x200 Normal Wide have also been optimized for speed Acquisition Viewer 1 32 1) Major bug erradicated in file reading routines 2) Fixed the problem with the Viewer exiting if no files were found matching the default mask ACiDView will now simply display the normal interface with no files allowing you to MASK or exit until you specify a valid file mask 3) Fixed the key-reading loop with the 320x200 and 320x200 WIDE emu- lations when ScrollBack was turned off Acquisition Viewer 1 30 1) File Masking added allowing the user to select files within the mask 2) Added 320x200x256 ansimation mode 3) Added modem simulator which emulates user-defined bps rate 4) Minor bug corrected in the scroll back of large ANSIs 5) Removed slow panning upon exit 6) 640x480x16 now FULLY supports ansimations Small bug fixed Acquisition Viewer 1 20 1) Maximum number of files in one directory has been increased to 2 000 2) A bug in the RIP portion of the viewer which caused the colors of plotted objects to display improperly has been squashed 3) RIP code has been optimized for speed and it is now possible to abort the screens 4) Scrolled viewing has since been implemented and 320x200x256 MCGA display modes are now supported 5) The old font has been replaced with a new character set and a new interface has been added which features icons Bugs Did you find any Bugs If so contact me on IRC (#ACiD or #coders ) Greetings go out to Holy Water Remember the End of Time Beastie ACiD (0n9r4+u14+!0nz 0n th3 pr0m0+!0n d00d Fear n a Too bad RaD Man ACiD For the lov--You are the man Your Handle Your Group SAUCE--Tastes great less filling