home *** CD-ROM | disk | FTP | other *** search
- ProBas Technical Notes
-
- ProBas is a collection of 232 routines, 226 of which are written in assembly
- language, and the remaining 6 in BASIC. ProBas works with all versions of the
- Microsoft QuickBASIC compiler, the Microsoft Business Basic compiler, and the
- IBM BASIC compiler.
-
- ProBas is shipped with the .OBJ files for all assembler routines, and the
- source code to the BASIC routines. Assembly language source code is not
- included. All ProBas routines are designed to be stored in a library and
- invoked using the CALL statement.
-
- A selection of batch files is included to create the proper type of library
- (.LIB link library, .EXE user library, or .QLB quick library) for your
- particular compiler. This allows you to easily manage what is in your library
- or libraries.
-
- ProBas comes with a 600-page manual which is divided into three sections:
- Introduction, Tutorial, and Reference. The Introduction section covers
- installation, setup, an overview of ProBas, and chapters on using BASIC,
- Programming in BASIC, Top-Down BASIC, and The BASIC Numbers Game. The Tutorial
- section provides an in-depth look at using various ProBas routines to perform
- day-to-day chores. For example, there is a 46-page chapter on using the
- various ProBas screen snapshot routines that not only examines each routine in
- clear English, but also presents real-life situations and tips on handling
- them. The Reference section, arranged in alphabetical order, devotes at least
- a page, often more, to each routine. Each listing includes the routine's
- compatibility level, (BIOS, CLONE, DOS, ANY) type, (input, video, etc.) a
- detailed description, calling syntax, and a BASIC example using the routine.
- Any compiler limitations, such as QuickBASIC 4.0-only, are also listed in
- boldface italics.
-
- You'll also receive a ready-to-run DEMO program that uses many of the ProBas
- routines-- with over 300k of fully narrated source code. The source was
- designed to be read like a book and shows in great detail how to take maximum
- advantage of the ProBas routines to do things like design bar and pull-down
- menus with full mouse support, or create a window the user can "drag" on the
- screen using the mouse or cursor keys.
-
- ProBas contains a number of routines that work with what we call virtual
- screens. How it works is simple: you DIM(2000) a dynamic array for use as a
- virtual screen and treat it just as if it were the display screen. Rather than
- use XQPRINT to display a string, you use DXQPRINT. Similarly, you use
- DWindowManager in place of WindowManager to draw windows. The DPUTSCREEN
- routine is used to display all or part of the virtual screen to the display
- screen in the blink of an eye. Displaying is a memory to memory block move at
- assembly language speeds. You just can't get any faster.
-
- Virtual screens are not limited to 25x80, or 43x80 screens. Using the CALCSIZE,
- VGETSCREEN and VPUTSCREEN routines, you can cut and paste a portion of a screen
- to its own array, DIMed to just the size necessary. In the ProBas demo, we
- examine this technique in great detail. For example, we used a FOR/NEXT loop
- to write seven pull-down menus, complete with text (read in via a READ/DATA
- statement) to a full-sized virtual screen. As each menu was finished, it was
- moved to its own virtual screen array. When the loop is done, the full-sized
- array is ERASEd and the seven menu arrays take up less memory than a single
- 25x80 screen. The entire process takes just 23 lines of code and less than one
- 18th of a second to execute. With all seven menus in memory, a single call to
- DPUTSCREEN displays any menu instantly. Because such virtual screens are
- stored in dynamic numeric arrays, you can use all available base memory, and
- optionally EMS memory, to store literally hundreds of screens in memory at a
- time, all ready for display at assembly speeds.
-
- And that's not even using the SCRUNCH routine to compress the screens. SCRUNCH
- uses run-length encoding to compress screens by 75 to 90%. In the ProRef
- package, we used the ProScreen screen editor to draw 49 pull-down menus. The
- 49 files took up a little over 200k. After running them through SCRUNCH, the
- 49 files were compressed to a single file of just 16,114 bytes. ProRef reads
- this file into a single dynamic array so that all 49 menus are in memory and
- instantly available.
-
- ProBas allows you to have virtual screens that are far larger than the physical
- display screen. You can create a virtual screen of up to 255 rows and 132
- columns and then treat the display screen as a "window" that "moves" over the
- larger virtual screen. Any ProBas routine that ends in the letters "SS" works
- with this type of sizable-screens.
-
- But screens handling routines make up just a fraction of the ProBas library....
-
- BASIC is notoriously slow in the area of file I/O. ProBas includes a complete
- set of assembly language disk read and write routines that are optimized for
- speed. You can create or open a file, (using DOS or network access and
- locking) and perform reads or writes in any of three ways (to or from a buffer,
- to or from an array, and to or from a string). You can even mix and match
- techniques as desired.
-
- To read 300 records of 100 bytes each into memory in BASIC, you OPEN a file,
- field it, and do 300 GETs, storing each field in its own string or numeric
- array. Obviously you would either run out of string space or patience long
- before reaching the end of the file. With ProBas, you DIM a dynamic numeric
- array to 15,000 elements (1 integer = 2 bytes), call DFREAD specifying 30,000
- bytes, and in slightly over one 18th of a second (on an 8Mhz 1 Wait State AT)
- the data is in memory.
-
- With ProBas, you can read in a megabyte of data and store it in EMS in less
- than one half second. Even though you are storing mixed string and numeric
- data in a numeric array, the DGETREC and DPUTREC routines handle the conversion
- to strings invisibly. Keeping track of where you are in the file is easy with a
- wide variety of record, byte, and offset file pointers that allow you to work
- with files up to 2 gigabytes in size. For smaller files, up to available
- string space, use the SFREAD/SFWRITE routines that work with strings. For the
- occasional access of small amounts of data, the FREAD/FWRITE routines work with
- a buffer.
-
- ProBas includes dozens of routines that just make life a bit easier, such as
- parsing filespecs into drive, path and file, computing elapsed times,
- stripping/rotating/extracting strings, compacting or converting dates and
- times, and general disk I/O routines for directory functions. The savings in
- programmer man-hours pays for ProBas in just a few days. So why re-invent the
- wheel?
-
- The precursor to ProBas, the shareware ADVBAS library, has been used by
- thousands of programmers since 1985 and is available on most BBS systems
- throughout the nation. If you are still not convinced that ProBas is a boon,
- please feel free to download a copy of ADVBAS and "test drive" it. We are
- confident that once you try ADVBAS, you'll want the much larger, more
- comprehensive ProBas library.
-
- ProBas was designed for the professional programmer. You may link ProBas
- routines with your commercial programs without paying any royalty or including
- a Hammerly Computer Services copyright notice.
-
-
-
- Routine List
-
- ADDMATI..........Add an integer to the first x elements in an array
- ANY2DEC..........Convert a number in any base to base 10 (decimal)
- BICKEL...........Check how closely two strings match using Bickels algorithm
- BIGPRINT.........Display (print) big characters to the screen
- BKSCROLL.........Scroll a portion of the screen backwards (down)
- BKSPACE..........Move the cursor back one space (destructive backspace)
- BLINK............Disable blink to allow 16 fore and 16 background colors
- BLOCKMOVE........Copy a block of data from one memory location to another
- BSQ..............Compress or squeeze a string
- BUSQ.............Decompress or unsqueeze a BSQ'd string
- BUSQLEN..........The new length of a BSQ'd (compressed) string
- CALCATTR.........Set the color attributes for direct screen writes
- CALCSIZE.........Calculate the size to DIM an array to hold a partial screen
- CARRIER..........Detect if carrier is present on the comm port
- CHECKKEY.........Check keyboard/mouse for input without waiting
- CHECKSUM.........Calculate the checksum for XMODEM-type protocolos
- CIPHER...........Encrypt a string
- CIPHERP..........Encrypt a string using graphic characters for serial files
- CLRCOLS..........Clear a given column(s)
- CLREOL...........Clear to end of line
- CLREOP...........Clear to end of page (screen)
- CLRKBD...........Clear keyboard buffer of any pending keystrokes
- CLRSOL...........Clear from start of line to cursor
- CLRSOP...........Clear from start of page (screen) to cursor
- COPYFILE.........Copy a file -- faster than SHELLing to DOS and running COPY
- CRC..............Compute a Cyclic Redundancy Check for a record using formula
- CRC2.............Compute a CRC using tables for improved speed
- CRUNCH...........Crunch successive occurrences of a character within a string
- DATASEG..........Returns the value of BASIC's data segment
- DATE2INT.........Convert three integers (MONTH,DAY,YR) to a single integer
- DATEN2S..........Convert three integers (MONTH,DAY,YR) to a string (mm/dd/yy)
- DATES2N..........Converts a string (mm/dd/yy-yyyy) to 3 integers (MONTH,DAY,YR)
- DBIGPRINT........Version of BIGPRINT for use with virtual screens
- DCLEAR...........Do a "CLS" of a virtual screen array
- DCLEARSS........."CLS" a virtual screen array of up to 255 rows and 132 cols
- DDOSTASKS........Turn DoubleDos task switching on or off
- DEC2ANY..........Convert a number in base 10 (decimal) to any base (2-35)
- DELAY............Delay for n seconds using the clock (independent of CPU speed)
- DELAY18TH........Delay for n 18ths of a second using the clock
- DELCHR...........Delete a character from the screen
- DELFILE..........Delete a disk file. Returns error code to eliminate ON ERROR
- DELLINE..........Delete a line (row) on the screen
- DELSUB...........Delete subdirectory. Returns error code to eliminate ON ERROR
- DFREAD...........Read from a file to an array. Much faster than BASIC's GET
- DFWRITE..........Write to a file from an array. Much faster than BASIC's PUT
- DGETREC..........Get a string record that was stored in a numeric array
- DGETSCREEN.......Take snapshot of all or part of a screen and store in an array
- DGETSCREENSS.....Same as DGETSCREEN for screens of up to 255 rows by 132 cols
- DGQPRINT.........Print strings to a graphic screen in an array
- DGXQPRINT........Print strings to a graphic screen in an array w/ color choice
- DISKSTAT.........Disk stats-- free/total clusters, bytes/sector, sector/cluster
- DISSOLVE.........Clear a screen using a "dissolve"
- DMPRINT..........Display string with DOS calls-- supports drivers like ANSI.SYS
- DOSINKEY.........Get a key from the standard input device-- allows redirection
- DOUB2LONG........Convert a double precision value to a simulated long integer
- DPUTREC..........Opposite of DGETREC-- stores a string in a numeric array
- DPUTSCREEN.......Restore a full or partial snapshot, stored in an array
- DPUTSCREENSS.....Same as DPUTSCREEN for screens of up to 255 rows by 132 cols
- DRVSPACE.........Returns the amount of free disk space on a given drive
- DRVSPACEL........Returns free disk space on a given drive in long integer
- DSORT............Sort strings stored in a numeric array
- DSORTB...........Sort strings stored in a numeric array backwards
- DTR..............Tell if Data Terminal Ready (DTR) is detected
- DWindowManager...Version of windowing routine for virtual screen arrays
- DXQPRINT.........Display a string to a virtual screen array
- DYNPTR...........Returns segment and offset of an array
- Elapsed..........Computes the elapsed time between start/stop times (strings)
- EMSCLOSE.........Close (ERASE) an EMS array
- EMSGET...........Get data from an EMS array and put it in a BASIC variable
- EMSOPEN..........Open (DIM) an EMS array
- EMSPUT...........Put data from a BASIC variable to an EMS array
- EQUIPMENT........Equipment info-- RAM in k, # of parallel, serial, game ports
- EXIST............Check if a file exists-- supports network and multi-tasking
- EXTRACT..........Extract a delimited string from within a larger string
- FADEOUT..........Clear the screen using a fadeout to a specified color
- FCLOSE...........Close a file opened with FOPEN or FCREATE
- FCREATE..........Create a file for access with ProBas assembly routines
- FGETLOC..........Get the current location of the file pointer
- FINDFIRSTF.......Find the first file that matches a filespec-- wildcards ok
- FINDNEXTF........Find the next file after a FINDFIRSTF
- FOPEN............Open a file for access with ProBas assembly routines
- FREAD............Read data from a file into a buffer
- FSETEND..........Set file pointer to the end of the file for an append
- FSETLOC..........Set file pointer to a given byte location within the file
- FSETOFS..........Set file pointer to a offset from the current location
- FSETREC..........Set file pointer to the next record in a random acccess file
- FSIZE............Returns the size of a file in bytes
- FWRITE...........Writes data to a file opened with FOPEN or FCREATE
- GETATTRF.........Returns attribute of a file found with FINDFIRSTF/FINDNEXTF
- GETCRT...........Returns zero if a monochrome or nonzero if a color display
- GETDATEF.........Returns date stamp of a file found with FINDFIRSTF/FINDNEXTF
- GETDDOS..........Tells if the program is running under DoubleDos
- GETDOSV..........Returns the version of DOS (2.1, 3.3 etc)
- GETDRV...........Returns the current logged drive
- GETEGA...........Tells if an EGA adapter is installed and how much RAM it has
- GETEXTM..........Returns the amount of extended (AT) memory is installed
- GETFATTR.........Returns the file attribute of a given file
- GETFDATE.........Returns the date stamp of a given file
- GETFTIME.........Returns the time stamp of a given file
- GETKBD...........Returns status of keyboard toggles-- Caps Lock, Num Lock, etc
- GETKEY...........Check keyboard/mouse for input and wait until key or click
- GETLIMM..........Returns the amount of total and free EMS memory, if any
- GETLIMV..........Returns the current EMS version number
- GETLINE..........Reads a line from the screen and puts it in a string array
- GETMOUSELOC......Returns the current mouse cursor location (25x80 text mode)
- GETNAMEF.........Returns the name of the file found with FINDFIRSTF/FINDNEXTF
- GETROWS..........Returns the mode (25 or 43 rows)
- GETSCREEN........Take snapshot of a full or partial screen-- store in an array
- GETSIZEF.........Return the size of a file found with FINDFIRSTF/FINDNEXTF
- GETSIZEFL........Same as GETSIZEFL but returns a long integer
- GETSUB...........Returns the current subdirectory
- GETSWITCH........Returns the DOS switch character
- GETTIME..........Returns the current time to hundredths of a second
- GETTIMEF.........Returns time stamp of a file found with FINDFIRSTF/FINDNEXTF
- GETTVIEW.........Tells if program is running under TopView/DesqView/TaskView
- GETVALIDKEY......Waits until one of a list of valid keys is pressed
- GETVERIFY........Returns the status of the DOS VERIFY switch (off or on)
- GETVIDMODE.......Returns the current video mode (0-16)
- GLOAD............A faster BLOAD
- GQPRINT..........Display a string to the screen in the default color attribute
- GRAFPRINT........Display a string to a graphics screen in any size of type
- GRAFREST.........Restore a snapshot of a graphics screen taken with GRAFSAVE
- GRAFSAVE.........Take a snapshot of a CGA graphics screen
- GXQPRINT.........Display text in the selected color to a graphics screen
- INSCHR...........Insert a character, moving all to the right one position
- INSLINE..........Insert a line (row) on the screen
- INT2DATE.........Restore a date integer saved with DATE2INT back to 3 integers
- INT2TIME.........Restore a time saved with TIME2INT back to three integers
- IPTRSORT.........Integer pointer sort
- KEYPRESS.........Tell if a key is waiting in the keyboard buffer
- LCLOSE...........Close an EMS "file" opened with LOPEN-- treats EMS as a file
- LGET.............Read (GET) a record from an EMS file opened with LOPEN
- LOCASE...........Converts a string to all lower case characters
- Long2Doub........Converts simulated long to double precision for pre-QB4.0
- LOPEN............Open an area of EMS memory as if it were a "file"
- LPRTSORT.........Long Integer Pointer Sort
- LPUT.............Write (PUT) a record to an EMS file opened with LOPEN
- LROTATE..........Rotate the characters in a string left
- LSCROLL..........Scroll a selected portion of the screen to the left
- MAKESUB..........Create a DOS subdirectory (MKDIR)
- MDELCHR..........Delete a character in a window
- MINSCHR..........Insert a character in a window
- MMBUTTON.........Returns which mouse button, if any, is currently pressed
- MMCHECK..........Returns if a mouse in installed, and if so, how many buttons
- MMCLICK..........Tells how many times a mouse button was clicked since last
- MMCURSOROFF......Turn the mouse cursor off
- MMCURSORON.......Turn the mouse cursor on
- MMGETLOC.........Returns the current location of mouse cursor in any video mode
- MMSETLOC.........Sets the location of mouse cursor in any video mode
- MMSETRANGE.......Sets the range on the screen where the mouse cursor may go
- MONTH............Returns the month (January, February, etc.) of a number 1-12
- MPRINT...........Display a string using DOS/BIOS in the window set by MWINDOW
- MULTIAND.........Characters in a given string are ANDed with a given value
- MULTIOR..........Characters in a given string are ORed with a given value
- MULTIXOR.........Characters in a given string are XORed with a given value
- MWINDOW..........Sets up a scrolling region for MPRINT, MINSCHR and MDELCHR
- NumFormat........Like "PRINT USING", except the output goes to a string
- NUMPROC..........Returns the type of coprocessor (8087, 80287, 80387) if any
- PARSEFSPEC.......Parses a filespec into strings for drive, path, and filename
- PCTYPE...........Returns the machine code to tell if on a PC, XT, AT, etc
- PRINTSCREEN......The same as pressing Shift-PrtSc
- PROCESSOR........Returns the type of processor (8088, 80186, 80286, 80386)
- PRTCHECK.........Checks the printer to see if it's ready to avoid ON ERROR
- PRTSWAP..........Swaps the parallel ports associated with two printers
- PUTSCREEN........Restores a full or partial screen snapshot from a static array
- QPRINT...........Displays a string to the screen in the default color
- READBITF.........Read numbers of a custom bit length for compact storage
- RECOLOR..........Change everything on a screen of one color to another color
- RECOLORAREA......Change a portion of a screen from one color to another color
- RENAME...........Rename a disk file-- eliminates ON ERROR trapping
- REPLACE..........Replace every occurrence of a char in a string to another char
- RESETPOINT.......Reset a point on the screen for 80x50 text mode graphics
- REVERSE..........Reverse the order of characters in a string
- REVERSEPTR.......Reverses the order of arrays sorted with pointer sorts
- RROTATE..........Rotate the characters in a string right
- RSCROLL..........Scroll a selected portion of the screen to the right
- SCR2FILE.........Store 25x80 text screen snapshot(s) to a disk file
- SCR2FILESS.......Store screen snapshots (up to 255x132) to a disk file
- SCROLL...........Scroll a selected portion of the screen
- SCRREST..........Save a full screen snapshot to a static array
- SCRSAVE..........Restore a full screen snapshot to the screen
- SCRUNCH..........Uses run-length encoding to compress snapshots by 75-90%
- SETCOMM..........Set baud rate, parity, etc of a comm port without closing it
- SETDRV...........Set the default drive
- SETERROR.........Set the DOS error level upon exit for use in batch files
- SETFATTR.........Set a given file's attribute
- SETFTD...........Set a given file's date/time stamp
- SETKBD...........Set status of the keyboard toggles (Caps Lock, Num Lock, etc)
- SETMATI..........Set the first n values of an integer array to a given value
- SETMOUSELOC......Set the mouse cursor location (25x80 mode only)
- SETMOUSERANGE....Set the mouse range (25x80 mode only)
- SETPIXEL.........Plots a graphics point-- like PSET and PRESET, but much faster
- SETPOINT.........Sets a point on a text screen for 80x50 text mode graphics
- SETROWS..........Set the number of rows on the screen (25 or 43 if EGA)
- SETSUB...........Move to the specified subdirectory
- SETVERIFY........Turn the DOS VERIFY switch on or off
- SFREAD...........Read a string from a file opened with FOPEN/FCREATE
- SFWRITE..........Write a string to a file opened with FOPEN/FCREATE
- SHIFTL...........Shifts all bits in an integer left n times
- SHIFTLL..........Shifts all bits in a long integer left n times
- SHIFTR...........Shifts all bits in an integer right n times
- SHIFTRL..........Shifts all bits in a long integer right n times
- SINPUT...........Fielded input using DOS and WordStar editing commands
- SINPUTSET........Set/modify SINPUT options
- SOUNDEX..........Get the SOUNDEX code of a given string
- SPEAKER..........Turn the speaker on or off without affecting timing routines
- SPTRSORT.........String Pointer Sort
- SSRCH............Similar to INSTR but not case sensitive
- Strip............Strips all leading and trailing blanks from a string
- STRIPBLANKS......Strips leading, trailing or both blanks and control characters
- STRIPCHR.........Strips all occurrences of a given character from a string
- STRIPRANGE.......Strips all characters in a given range from a string
- SUBEXIST.........Tells if a given subdirectory exists
- TESTPIXEL........Tests a graphics point-- like BASIC's POINT but much faster
- TESTPOINT........Tests a point on 50x80 text mode graphics
- TIME2INT.........Convert three integers (HOUR,MIN,SEC) to a single integer
- TIMEN2S..........Convert three integers (HOUR,MIN,SEC) to a string (hh:mm:ss)
- TIMES2N..........Converts a string (hh:mm:ss) to three integers (HOUR,MIN,SEC)
- TINSTR...........Search for a given char type (alpha,numeric, etc.) in a string
- UNSCRUNCH........Decompress a screen snapshot compressed with SCRUNCH
- UPCASE...........Converts a string to all upper case characters
- VGETSCREEN.......Move a partial-screen snapshot to its own array
- VGETSCREENSS.....Same as VGETSCREEN for screens of up to 255 rows and 132 cols
- VPUTSCREEN.......Move a partial screen back to a full-sized screen array
- VPUTSCREENSS.....Same as VPUTSCREEN for screens of up to 255 rows and 132 cols
- WEEKDAY..........Returns the day of the week as an integer (1-7)
- WindowManager....Draw windows on screen with options like shadow and exploding
- WRITEBITF........Allows compact storage of numbers using custom bit lengths
- XLATE............Translate a string using a translation table that you supply
- XMPRINT..........Combines the MPRINT and XLATE functions into a single routine
- XQPRINT..........Display a string directly to the screen in the color specified
-
-
- Routines in upper case are written in assembly language.
- Routines in mixed upper/lower case are written in BASIC.
- Routines ending in "SS" are for sizable virtual screens.
-
-
-
- ProBas ToolKit Technical Notes
-
- The philosophy behind the ProBas Professional BASIC Programming Library is to
- provide powerful, proven, low-level routines that afford the programmer the
- most capability with the least encumbrance. In other words, no arbitrary
- limitations or preconceptions. If you want to design a bar menu on the 25th
- row, with pull-up menus rather than the more traditional pull-down menus,
- there's nothing to hinder you. Use the XQPRINT, WindowManager, RECOLORAREA and
- mouse routines, and code it any way you like.
-
- The idea behind the ProBas ToolKit is to provide higher-level routines that
- utilize the low-level routines in ProBas and work as "plug-in" modules. For
- example, if you don't want to take the time to code that bar menu with the
- unusual pull-up menus, use the ToolKit and save yourself a lot of work. Or
- maybe you want to display a text file in a window, complete with scrolling and
- paging functions. Wouldn't you rather just specify the filename and call
- WindowText rather than writing and debugging it yourself?
-
- The ToolKit has menu generators to suit almost every need. You may select a
- menu that writes directly to the screen or writes to a virtual screen array,
- with or without mouse support, with or without a scrolling light bar, so that
- only the code that is needed is linked with the program and unnecessary code is
- not there to waste memory or slow things down.
-
- The ProBas ToolKit contains dozens of routines like sizeable mini word
- processors with word wrap and time/date/calendar routines that make life easier
- and help keep you from constantly having to re-invent the wheel.
-
- The ToolKit comes with a complete assembly language Btree indexing system that
- allows you to create, find, add, edit, delete, insert and sort keys in an
- index. Use these routines with the lightning-fast ProBas assembly file I/O
- routines and you can access and manipulate large data bases hundreds of times
- faster than BASIC would allow.
-
- Then there are routines that allow you to patch .EXE files to write self-
- modifying code. Why use cumbersome data files to hold filespecs, passwords, or
- even user-defined menu choices when you can just write the information directly
- to the .EXE file itself?
-
- Or perhaps you would like to pass large amounts of data between programs
- compiled with BCOMxx.LIB or even programs written in different languages. The
- ToolKit provides a complete system of protected memory-resident data areas and
- assembly routines that "peek" and "poke" large chunks of data at a clip.
-
- At HCSI we have not forgotten our shareware roots. Not only does our staff
- regularly add new routines to the ToolKit, but programmers who use ProBas
- frequently contribute routines and allow us to incorporate them in the product.
- It is our intention to make these additions available to registered users at
- minimal cost, usually $10 per disk. Every four to six months a new updated
- manual is available for a nominal charge. Beginning in May 1988, these
- routines will be available to registered users in the ProBas ToolKit area of
- our multi-user BBS so that you can download them for just the cost of the phone
- call.
-
- For years C and Pascal programmers have relied on tools like these to increase
- their productivity and ease their work load. Isn't it time BASIC programmers
- got the same attention?
-
-
-
- ProBas TeleComm ToolKit Technical Notes
-
- The ProBas TeleComm ToolKit is a collection of communication-related tools that
- you $INCLUDE in your programs to provide such features as:
-
- o Xmodem Single File Transfer Protocol (CRC & Checksum)
- o Modem7 Batch File Transfer Protocol (CRC & Checksum)
- o Ymodem Single File Transfer Protocol (CRC & Checksum)
- o Ymodem Batch File Transfer Protocol (CRC & Checksum)
- o VT52 Terminal Emulation
- o VT100 Terminal Emulation
- o ANSI BBS Terminal Emulation
- o Baud rates of 300 bps to 57,600 bps
- o Powerful Keyboard Command Processor/Command Center
- o Script file language for automated modem sessions
- o Dialing directory with advanced editing
- o Auto-dialing via keyboard, database, script file, etc
- o Plus many other help features and conveniences
-
- Each module is added to your code via the $INCLUDE statement and then accessed
- by a GOSUB. You need only include the modules that you use. The ProBas
- TeleComm ToolKit comes with full BASIC source code and each module is heavily
- documented with comments on almost every line of code. You also get a detailed
- manual, sample script files, and source code for a working terminal program
- that uses all of the TeleComm ToolKit modules and routines.
-
- Working with the TeleComm ToolKit is easy. To initiate file transfer for
- example, you just set a few variables and "GOSUB XmodemSend" or "GOSUB
- YmodemRecv" as desired. The transfer will then take place, with or without a
- window showing the progress. When done, the routine returns a full status
- report.
-
- The powerful command center works with both keyboard and script file input for
- hassle-free control. The command center supports the popular ProComm(TM)
- command set. Adding your own command set can be done with a minimum of effort.
-
- The ProBas TeleComm ToolKit requires ProBas and QuickBASIC version 3.0 or
- higher. You may include these tools in your commercial programs without paying
- any royalty or including a Hammerly Computer Services copyright notice.
-
-
-
- ProRef Technical Notes
-
- ProRef is actually three products in one. It is a Terminate and Stay Resident
- (TSR) online help system for ProBas, a TSR online help system for your help,
- and an extension to the QuickBASIC programming environment.
-
- The 232 routines in ProBas are just too much for anyone to remember, and even
- though we are proud of the ProBas documentation, at 600 pages, it's just so
- *big*. ProRef allows you to press a hot-key and quickly find the calling
- syntax and up to six lines of text on each routine. When the hot-key is
- pressed, the ProRef bar menu replaces QuickBASIC's bar menu with choices for
- Screen, sTring, File, Input, Memory, Numeric, Equipment and Other. ProRef
- works just like QuickBASIC, including the mouse, so you already know how to use
- it. For example, to get help for (say) the routines to treat EMS memory as an
- array, just move the mouse to the Memory choice, click the mouse, and move the
- highlight down to the EMS choice. A second menu will appear with each of the
- routine names. Click on any choice, and the calling syntax and help for that
- routine appears. Press the ESC key or click the right mouse button to return to
- QuickBASIC.
-
- Adding your own help information, such as notes and the calling syntax for your
- own routines and subprograms, is easy. Just use your favorite text editor and
- put character delimiters in the beginning and end. Accessing the help is just
- pressing the hot-key and selecting the help from a two-line-per-entry index.
-
- Online help is not exactly front page news, but the most powerful features of
- ProRef are in the area of extending the programming environment. ProRef comes
- with a number of handy pop-up productivity tools that were especially designed
- for the BASIC programmer:
-
- o Pop-up full-screen ASCII chart
- o Pop-up BOX chart to show what graphics characters make up boxes
- o Pop-up multi-mode, dual memory calculator
- o Pop-up SCAN code module tells the codes for any key pressed
- o Pop-up listing of all DOS/ProBas file I/O error codes
- o Pop-up listing of file attributes
-
- Each productivity tool is available from the Other menu, or via a hot-key.
- Nice, but not exactly earth-shattering. But ProRef takes this a good bit
- farther:
-
- You may add up to 10 additional programs to your own menu within ProBas and
- access almost any DOS program from within QuickBASIC, or any other program for
- that matter. Now here's the real kicker: you can make almost any DOS program,
- including the ones you write in BASIC, available via a hot-key.
-
- Now you can pop up great programs like your favorite text editor, modem
- program, or third-party software like The Norton Utilities via hot-key. In
- fact, you can even use your editor as your environment and run QuickBASIC as a
- pop-up! So why use a plethora of TSRs, many of which are only subsets of
- better programs, when you can have the real thing available? Unlike some other
- task-switchers, ProRef doesn't force you to live with an unwelcome user
- interface, use .PIF files, or define every last detail about the program to be
- run. Just select a hot-key and specify the drive:\path\filename of the program
- to run.
-
- ProRef put all of this together in a single package that is super fast,
- seamless, and easy to use. ProRef was written in QuickBASIC, using the
- routines in ProBas and the ProBas ToolKit. TSR capabilities were accomplished
- using the Weiner Shell Memory Resident Programming Utility and Language, which
- is also available from HCSI.
-
-
-
- ProScreen Technical Notes
-
- ProScreen is a state-of-the-art screen generator/editor system that allows you
- to create and edit 25x80 or 43x80 text mode screens. ProScreen does with
- screens what word-processors do for text.
-
- To create a screen, you set the foreground and background colors and begin with
- a blank screen. Pressing the F1 key puts you in Line Draw Mode. You may then
- draw single and double lines anywhere on the screen by pressing a Shift-Arrow
- key combination. Drawing boxes is just as easy. Press F2 for Box Draw Mode,
- position the cursor where you want the upper right corner to be and press
- Enter. A blinking phantom box outlines the box as you move the cursor to the
- lower right corner and press Enter again. You can use any of the standard
- single/double line character configurations for the frame, or you may select
- any of the 256 ASCII characters instead.
-
- Once a box is drawn, you may set a four-sided margin, similar to that of a word
- processor, within the box for text and other graphics in any color. Advanced
- ProScreen features include automatic center of one or all rows within margins,
- text margins, block move, block copy, copy row, copy column and character
- painting.
-
- Color control is a ProScreen forte. With just a few keystrokes, you can change
- the colors on the entire screen, or just within the margins. You can replace
- one color with another, and you can even have 16 foreground colors over 16
- background colors on any CGA, EGA, or VGA adapter. You can finally have color
- combinations like cyan (3) over high intensity cyan (11) or black (0) over
- yellow (14). In fact, you can control the colors for each character on the
- screen.
-
- ProScreen gives you three complete screen buffers so that you can edit three
- different screens at the same time, copy or cut and paste between the buffers,
- merge screens inside or outside windows, and much more. You can even use the
- UnDo key as a fourth buffer to see pop-up windows appear and disappear, because
- the UnDo will undo an UnDo! Each ProScreen function takes only a few
- keystrokes, and an entire indexed manual is available by pressing the Shift-F8
- key. With just 3 or 4 keystrokes, you can jump into help, view an Index, and
- get up to 17 pages of help for any command or function.
-
- We use ProScreen as a tool to help prototype our software. We use the editor
- to design complex screens with overlying menus and pop-up windows in just a few
- minutes, setting the colors the way we want, and using ProScreen's rich set of
- features to handle things like centering. Once the screen is designed, all of
- the row/column, color and screen formatting information is displayed and can
- easily be inserted into the code. Just read the data, write the code, and run
- it. No more tedious writing, compiling, viewing, changing your mind, rewriting,
- and recompiling over and over again to get screens right.
-
- Once a screen is designed, it can be incorporated into your BASIC programs with
- the routines in ProBas or with either the BASIC or assembly modules provided
- with ProScreen. We used ProScreen to design 49 pull-down menus in our ProRef
- product. This made designing the menus a snap and modifying menus down the
- road a breeze. The 49 ProRef screen files take up over 200k of disk space and
- any file can be loaded from disk in less than one 18th of a second using the
- ProBas DFREAD routine. But that wasn't good enough. We used the ProBas
- SCRUNCH routine to put all 49 menus in a single 16,114-byte file and read the
- entire file, all 49 screens, to a 16k array so that any menu can be instantly
- displayed anywhere on the screen, with the fast memory-to-memory screen
- routines in ProBas.
-
- But designing and displaying cute screens is only a fraction of ProScreen's
- abilities. You may specify up to 130 input/output fields per screen. The
- powerful fielding features include 19 pre-defined input masks, 2 user-defined
- input masks, options like mandatory fill, numeric input only, accept input only
- within a predetermined range, and much more. Not only can you design the
- fields in the ProScreen editor, you can test them as well, tweaking things
- until they are just right. Rather than a clumsy attempt at generating
- inefficient BASIC code, the field information is stored in the screen file, and
- you get optimized BASIC source code to $INCLUDE or MERGE into your program
- (ProScreen supports the interpreter) which you access via a GOSUB, passing data
- via arrays. This is much more efficient and has the added benefit of allowing
- you to alter screens and field information without recompiling the program.
-
- ProScreen is a must for designing real-time demos of software. The resident
- PSMPHOTO module stays in memory and allows you to take snapshots of any text-
- mode screen and import it into the ProScreen editor. Since ProScreen screens
- are BLOAD compatible, you can use ProScreen with any of the popular demo
- packages like Dan Bricklin's DEMO or Microsoft's Show Partner. Or you can
- write your own demo program in BASIC.
-
- One of the more powerful features of ProScreen is that you can save windows to
- file just as easily as you can save entire screens. With the PSMPHOTO program
- and the cut and paste capabilties in the ProScreen editor, you can take
- snapshots of each screen in your program, and separate windows and menus into
- their own files. Using the ProBas system of virtual screens, you can create
- dazzling demos or emulate your programs in real time. Just using the example
- code in the ProBas demo, you could pop-up a window generated in your program or
- the ProScreen editor, and allow the user to move it anywhere on the screen in
- real-time, using either a mouse or the arrow keys.
-
- ProScreen comes with a 288-page manual with Introduction, Tutorial, and
- Reference sections that not only show you how to use ProScreen, but also has
- helpful tips and effective techniques on using ProScreen alone, or ProScreen
- and ProBas together for even more power. We even explain in detail how we did
- the trick of compressing 49 screens of over 200k to a single 16k file, and how
- to use it once it has been compressed.
-
- ProScreen was formerly marketed by DNA Systems under the name SMS Screen
- Management System and over 3,000 have been sold throughout the world. We think
- you'll agree that it is the best screen generator/editor on the market.
-
-
-
- Copyright 1988 Hammerly Computer Services, Inc. The information presented
- herein may not be reproduced without permission. Trademarks: ProBas, The ProBas
- ToolKit, The ProBas TeleComm ToolKit, ProScreen, ProRef: Hammerly Computer
- Services, Inc. The Weiner Shell: Gryphon Microproducts Inc. QuickBASIC,
- BASCOM: Microsoft Inc. IBM: International Business Machines Corp. ProComm:
- DataQuest Inc: Norton Utilities: Peter Norton Computing Inc.
-