› USER CALLS THROUGH MOE››1677 CLEARBUFF........Clear MOE's modem input buffer (used to clear buffer after a user logs off)››1680 MOPEN............Open modem and switch to concurrent I/O››1683 MCLOSE...........Close modem››1686 not used at this time››1689 BUFFERLOAD.......Block load routine. Loads data from a disk into a block of memory››1692 RSTAT............Read an item from the status window››1695 WSTAT............Write an item into the status window››1698..................Terminal/chat routine››1701 SPAPOINT.........SpartaDos point routine (can point past a 32K file up to 8 megs)››1704 BUFFERSAVE.......Block save routine. Saves data from a block of memory to a disk file››1707 WORDPROC.........Word processor routine (used for editors)››1710 FINDLINE.........Used by the message editor to find out where line numbers should be placed››1713 BELL.............That annoying-sounding chat bell routine››1716 CP...............Command parser (used to recognize commands at the command prompt)››1719 CPWORD...........Used to compare names and other items as when posting a message to a user)››1722 MOVEFORW.........Move a block of memory to a lower address (if they overlap)››1725 MOVEBACK.........Move a block of memory to a higher address (if they overlap)››1728 INSET............Determine whether an account number is present in a list of accounts››1731 TIME.............Converts date/time in standard form into a six-bute value yy,mm,dd,hh,mm,ss)››1734 DISPLIST.........Display a list of keywords to the screen (used by file area)››1738 COMMASK..........Determine if the user has access to the command he just tried to execute›› Here are examples of how to use some of these USR calls:››X=USR(1677)...Clears MOE's input buffer››X=USR(1680)...Open modem and activate concurrent I/O››X=USR(1683)...Close modem››X=USR(1689,IOCB,ADR(BUFFER$),LEN(BUFFER$))››This routine will load data from a disk file into memory. Here, IOCB defines the channel that the load routine should use when doing the load. This number can range from 1 to 7. The second parameter is the address where the data is to be loaded. In this example, a string called BUFFER$ will be used to store the data. The last parameter is the number of bytes that are to be loaded. When the load is completed, X will equal the number of bytes that were actually loaded. If it is less than the number of bytes that were specified to be loaded (e.g., LEN[BUFFER$]), then an End Of File was encountered during the load.›› Here's an example of how the routine can be used to display a text file:››100 OPEN #1,4,0,"D:TEXTFILE"›200 DIM BUFFER$(1000):BUFFER$=" "›300 X=USR(1689,1,ADR(BUFFER$),› LEN(BUFFER$))›400 IF X=0 THEN 700›500 PRINT BUFFER$(1,X);›600 IF X=LEN(BUFFER$) THEN 300›700 CLOSE #1›› This will display a text file at comparable speed to machine language print-file routines (because most of the actual work IS being done in machine language). Note the buffer size does not have to be 1000. If more memory is available, this number can be bigger.››X=USR(1704,IOCB,ADR(BUFFER$),LEN(BUFFER$))›› This will save data from an area of memory into a disk file. Here, IOCB defines the channel that the save routine should use when doing the save. This number can range from 1 to 7. The second parameter is the address where the data is to be saved from. In this example, a string called BUFFER$ is used to hold the data. The last parameter is the number of bytes that are to be stored. When the save has completed, X will equal the number of bytes that was actually saved.››X=USR(1701,IOCB,INT(POS/65536),POS-INT(65536)*65536)›› This routine is a POINT routine that will allow pointing past a 32K file. Here,IOCB defines the channel that the point routine should use when doing the point. POS is the position within the file that is to be pointed to. POS can range from 0 to 8,388,607 (as opposed to just 0 to 32,767 with BASIC).››X=USR(1692,ITEM,ADR(ITEM$))›› This routine will copy an item from the status window into an area of memory (usually a string address). This routine is used in two different ways (depending on the item you are accessing). All items in the window are treated as text EXCEPT for single-binary fields (like Cd, At, 80c, Lnf, etc.,---any item that has two settings [on or off]). The Commands field and the Sections field are exceptions (because they contain multiple items). These two fields are still treated as text (i.e., strings). In this example, ITEM is the item number of the item that you wish to copy. The second parameter is the address to which you would like to copy the item. Refer to the status winndo displaying item numbers of particular items previously displayed in this manual. Here is an example of how to use this routine:››100 DIM NAME$(20):NAME$(20)=" "›200 X=USR(1692,1,ADR(NAME$))›300 PRINT NAME$›› If an item is a binary item, this routine works a little differently. For example:››100 X=USR(1692,40,0)›200 IF X THEN PRINT "CLEAR SCREENS ARE ON"›› In this example, 40 is the item number for the clear screen. The second parameter (zero) is a dummy value. It is not used, but some kind of number must be there (any number). You could reduce this program to the following:››100 IF USR(1692,40,0) THEN PRINT "CLEAR SCREENS ARE ON"›››X=USR(1695,ITEM,ADR(ITEM$))›› This routine will copy an item from an area of memory (usually a string variable) into the status window. This routine is used in two different ways (depending on the item you are accessing). All items in the window are treated as text EXCEPT for single-binary fields (like Cd, At, 80c, lnf, etc.,--any item that has two settings [on or off]). The Commands field and the Sections field are exceptions (becuase they contain multiple items). These two fields are still treated as text (i.e., strings). In this example, ITEM is the number of the item that you wish to copy. The second parameter is the address from which you would like to copy this item. Refer to the status window displaying item number of particular items previously displayed in this manual. Here is an example of how to use this routine:››100 DIM NAME$(20):NAME$="JOHN DOE"›200 X=USR(1695),A,ADR(NAME$))›› If an item is a binary item, then this routine works a little differently. For example:››100 X=USR(1692,40,1)›› In this example, 40 is the line number for the clear-screen setting. The second parameter, 1, sets clear-screens to true (i.e., ON). A zero in this parameter could turn clear-screens off.›› X=USR(1698)..Enters into chat mode›› X=USR(1713)..Makes an annoying sound›› The other USR routines are geared more toward perfoming a specific function---they are not recommended for general programming use within CARINA II. You may decide yourself that you want to use a BASIC routine within CARINA II (like the quick routine that searches for a user by his/her name), and that's fine. Take note of what these USE routines do, but don't concern yourself with how they do it.›› VT-52 GRAPHICS›› VT-52 Graphics is an extension to the ASCII character set much like special ATARI graphics characters within ATASCII are an extension to ASCII; however, VT-52 graphics are, in a way, much more complex. Within CARINA II inverse, cursor-control keys, and color are supported with VT-52 graphics when in ASCII mode. MOE automatically translates ATASCII inverse into VT-52 inverse, to represent VT-52 inverse. Never use the VT-52 equivalent escape characters to represemt inverse. The only time you should use escape characters is when changing character color. Cursor controls and inverse characters within ATASCII are automatically translated.›› You can change either the foreground color or the background color of a character when changing colors with VT-52 graphics. This is done by a continuation of these characters within a text file (or even within BASIC's) PRINT statememts. The first character is the escape character. This character can be displayed by hitting the ESC key twice when in BASIC. Some text editors will not allow you to have this character within a text file (like ATARI WRITER or even CARINA II's editor), so if you want to change VT-52 colors within a text file, you will need to use a text editor that wil allow you to use this character. The second character will either be a lower-case 'b' or a lower-case 'c'. A lower-case 'b' will change the character color (foreground color) and a lower-case 'c' will change the background color. The next character will represent one of four colors that you want to change. These colors are represented by the ASCII values zero through three (i.e., ctrl-comma, Ctrl-A, Ctrl-B, and Ctrl-C respectively). Here's how each value translates as far as color:››Ctrl-, ASC(0)...Default background› color (usually is› BLACK)›Ctrl-A ASC(1)...RED›Ctrl-B ASC(2)...GREEN›Ctrl-C ASC(3)...Default background› color (usually is› WHITE)›› Here is how you would change the background color of a character to red: Within a BASIC statement, or within a text file, press the keys ESC ESC c Ctrl-A. These characters should be displayed: a lower case 'c', and a Ctrl-A. Anything else that is printed after this escape sequence will now have a background color of red. To change it back to normal type ESC ESC c Ctrl-comma. These escape sequences are frequently used within the BASIC code of CARINA II. List out these modules to the screen to see some examples of how these are used.› Whenever MOE is active, these escape codes will always be marked out on your screen (the SysOp'S screen). Whether they are masked out on the user's screen depends on whether or not his VT-52 option is on and his VT-52 color option is on. In order for these VT-52 codes to be sent, VT-52 mode must be on AND color mode must be on; otherwise, only VT-52 inverse and cursor controls will be sent.››› TROUBLE-SHOOTING››› PROBLEM POSSIBLE SOLUTION››Your modem picks Turn the AT command›up the phone on off in your›an imcoming call configuration and›but does not reRUN BOOTBBS.›send a carrier.››Everything works Check your modem's›fine when logging dip switches. Make›on locally, but sure you are using›the BBS does not the proper modem›seem to be device handler.›communicating›with the modem›properly.››Callers receive Check your baud›a lot of garbage rate configuration.›while on-line. Make sure it is set› to your modem's› highest possible› possible baud rate.››Your BBS crashes Make sure all of›or resets every the system folders›time you log on. are on the proper› drives. Make sure› your configuration› specifies the› proper drive› numbers for those› folders. Make sure› your USRVAL_0.DAT› file is on the› proper drive. Make› sure the drive that› your password file› resides has enough› free space for the› password file to› expand.››The system clock When you are not›at the top of using an R-Time›the screen loses 8-Cartridge, the›time rapidly. Z-Handler loses› time rapidly.› Unfortunately, this› is normal.››You've created You may not have›sections but they copied the›do not appear SECTIONS.DAT file›when logging on. from your ramdisk› back down to a disk› drive before you› rebooted. Load the› SECTIONS.DAT file› into a text editor› and see if all of› your sections are› listed. Recreate› the sections if› they are not. You› may not have access› to them. Look at› the full-page› status window and› check.››The BBS locates You may have backed›users when up your password›referenced by file without›account numbers backing up your›but not by names. index file. Run the› MAKEINDEX program.›