home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1994 #1
/
monster.zip
/
monster
/
BBS_UTIL
/
BM0406_A.ZIP
/
BMASM.ZIP
/
BCFS.DOC
< prev
next >
Wrap
Text File
|
1992-08-15
|
9KB
|
184 lines
BCFS, August 13th version
(C) 1992 by Scott McNay. All Rights Reserved.
FidoNet: 1:395/11
BBS: 817-554-5331
I may be contacted via the MAPLE, RBBS_MAPLE, or RBBS-PC echos.
-=-
These mods are free for use by RBBS SysOps and are offered for inclusion with
the stock RBBS release.
-=-
BCFS is a mod to allow the /Fs switch of BC 7.x to be used when compiling RBBS,
thus giving the sysop much more string space to work with, and also removing
one of the restrictions on the RBBS developers. The mod involves changes to
nearly all of the assembler routines provided with RBBS. These routines are
backward compatible, allowing RBBS to be compiled without BC 7.x's /Fs switch.
With the addition of RBBSQBFS.OBJ, RBBS can also be compiled with QB. However,
compiling with QB or without the /Fs switch will NOT give any advantage.
At this point, I have been unable to test all of the routines (SEE HISTORY AT
BOTTOM FOR UPDATES!). The routines that I have been able to test are QBARCV6
(View command), FOSSCOMM (FOSSIL support), RBBSUTIL (finding a file,
uppercasing a string), ANSI19 (DOS screen output), MOVCSTR (creating ANSI
string), and FINDWORD (find next/previous word on line). The last two are part
of ANSIED. I have been unable to test RBBSHS (HearSay), BASNOV (Novell),
RBBSDV (DesqView), PC-NET (PC-Net?), 10-NET (3-COM), BDRIVEC2 (Corvus), and
XMODEM (Xmodem/Ymodem Checksum and CRC calculation). I would appreciate
knowing if these routines work or not.
In case you're wondering how much free memory BASIC gets with this mod, here
are some actual figures from my system:
Free Temporary String Space = 65430
Free Common String Space = 57024
Free Local String Space = 61776
Free Far Space = 146512
It surprising to see MENU0 telling you that you have 64K of free string space.
I got the report above by adding the following lines to the output of the
Utilities Statistics command. This code is in RBBS-PC.BAS in the stock code,
and is in RBBSSUB5.BAS in Maple. In Maple, the lines that these replace have
the CINT function in them. Remove it or else you may see negative numbers.
CALL LPrnt ("Free Temporary String Space = "+(STR$(FRE("A"))),1)
CALL LPrnt ("StackSpace = "+ (STR$(FRE(-2)) + " bytes"),1)
CALL LPrnt("Free Common String Space ="+ (STR$(FRE(ZWASZ$))),1)
CALL LPrnt("Free Local String Space ="+ (STR$(FRE(WASZ$))),1)
CALL LPrnt("Free Far Space ="+ (STR$(FRE(-1))),1)
To implement these mods, just copy the .OBJ files over the original .OBJ files
and add '/Fs' to the command line for BC 7.x for ALL of the .BAS files. Then,
update your LINK response file to say "ANSI19" instead of "ANSI17". If you use
QB, these mods will NOT help, but may be added anyway, in which case
RBBSQBFS.OBJ must be added to the list of files to link. In case it isn't
clear: RBBSQBFS.OBJ _MUST_ be used with QB and _MUST_NOT_ be used with BC 7.x.
Here is an example:
@echo on
bc /Fs /O /FPi /Ot /MBF /s rbbs-pc;
bc /Fs /O /FPi /Ot /MBF /x rbbssub1;
bc /Fs /O /FPi /Ot /MBF rbbssub2;
bc /Fs /O /FPi /Ot /MBF rbbssub3;
bc /Fs /O /FPi /Ot /MBF rbbssub4;
bc /Fs /O /FPi /Ot /MBF rbbssub5;
; Next 5 lines are for Maple and/or ALIAS, DOORSYS, ANSIED, RCHAT, ANSICHAT
bc /Fs /O /FPi /Ot /MBF alias;
bc /Fs /O /FPi /Ot /MBF doorsys;
bc /Fs /O /FPi /Ot /MBF ansied;
bc /Fs /o /FPi /Ot /MBF Rchat300;
bc /Fs /o /FPi /Ot /MBF ansichat;
Link @LINK.dat;
LINK.DAT would be something like:
rbbs-pc+rbbssub1+rbbssub2+
rbbssub3+rbbssub4+rbbssub5+
fosscomm+pc-net+basnov+10-net+rbbsdv+
bdrivec2+givebk31+rbbsutil+ansi19+ < Change ANSI17 to ANSI19
qbarcv6+xmodem+rbbshs+ < For stock code only
rbbsqbfs+ < For QB _ONLY_
rchat300+ < For Maple/internode chat only
alias+ < For Maple/Alias mods only
doorsys+ < For Maple/DOOR.SYS mods only
ansichat+ < For Maple/ANSIChat only
ansied+findword+movcstr, < For Maple/ANSIED only
,,/STACK:1024/NOE;
Verification of proper operation: RBBS should be compiled both with and without
the /Fs option, and the routines checked both ways. If the routines work in
one case and not the other, that will help me find the problem. For those
familiar with DEBUG, breakpoints have been placed in the untested routines.
History:
0726: Initial release
Known to work: FOSSCOMM, RBBSUTIL, ANSI17, QBARCV6, FINDWORD, MOVCSTR
Unverified: PC-NET, BASNOV, 10-NET, RBBSDV, BDRIVEC2, XMODEM, RBBSHS,
RBBSQBFS.
0728: Updated from ANSI17 to ANSI18, forwarded by Dan Drinnon, and VERY heavily
optimized it. Also fixed a bug that's been around for a while in which
lines that go past the right end of the screen get cut off instead of
wrapping, so that your display will now look more like that of the users.
Made a booboo while assembling the files. The 0726 OBJ files WILL work
ok, in spite of the errors reported. The 0728 update contains new .OBJ
files that will not give error messages.
0729: IGNORE THE FOLLOWING.
|BCFS0728 took care of lines getting cut off at column 80 on the sysop
|side. 0729 modifies ANSI18 to return a count of the number of line
|wraps, allowing RBBS to keep a more accurate line count. RBBSSUB2 needs
|to be modified for this.
|In LPrnt, replace:
| CALL ANSI(ZCrLf$,ZWasCL,ZWasCC) : _
|with:
| CALL ANSI(ZCrLf$,ZWasCL,ZWasCC,T) : _ 'BCFS0729
| ZLinesPrinted = ZLinesPrinted + T : _ 'BCFS0729
|In PScrn, replace:
| ELSE CALL ANSI (Strng$,ZWasCL,ZWasCC) : _
|with:
| ELSE CALL ANSI (Strng$,ZWasCL,ZWasCC,T) : _ 'BCFS0729|
| ZLinesPrinted = ZLinesPrinted + T : _ 'BCFS0729
|In SkipLine, replace:
| CALL ANSI(ZCrLf$,ZWasCL,ZWasCC) : _
|with:
| CALL ANSI(ZCrLf$,ZWasCL,ZWasCC,T) : _ 'BCFS0729
| ZLinesPrinted = ZLinesPrinted + T : _ 'BCFS0729
0801: Ignore BCFS0729. The changes in it are either not needed any more or
won't always work as intended.
Rewrote ANSI() completely, renaming it to ANSI19.ASM. There should no
longer be any problems with wrapping around column 80, or anomalous
results when printing an ANSI code while located in column 80, or
overwriting the status line even if ANSI codes are used to move the
cursor to the status line, or looking past the end of the string. Fixed
problem with missing LF's during chat. Change RBBSSUB2 as follows:
3750 IF SendRemote THEN _
CALL PutCom(WasX$)
IF WasX$ = ZCarriageReturn$ THEN _
CALL LPrnt (ZCrLf$,0) : _
Col = Col - 1 : _
GOTO 3850 _
ELSE _
CALL LPrnt (WasX$, 0)
Went through and checked the other files to make sure that they meet BC's
requirements, namely saving DI, SI, BP, DS, and ES. ES does not need to
be saved for BC, but may need to be saved for QB. Updated QBARCV6 to
recognize current PAK/SDN and ZIP compression methods. Also optimized
XMODEM. Commented out unused code in BDRIVEC2. Since all of the
routines were modified, they will all need to be verified again.
Known to work: FOSSCOMM, RBBSUTIL, ANSI19, FINDWORD, MOVCSTR.
Unverified: PC-NET, BASNOV, 10-NET, RBBSDV, BDRIVEC2, XMODEM, RBBSHS,
RBBSQBFS, QBARCV6.
0812: Went through FOSSCOMM and fixed possible problem with the FosWrite and
FosRead routine. Also commented out the unused routines. Made data
areas overlap to save a few bytes. This version not released.
0813: Modified FOSSCOMM to include the functionality of BYPASS.OBJ internally.
BYPASS.OBJ comes with X00, and allows a program to directly call X00's
INT 14h service routine, instead of calling whatever happens to be at INT
14h. Having the code built in to FOSSCOMM actually makes it slightly
faster than the original code, even if a FOSSIL other than X00 is used.
Calling X00 directly prevents a multitasker from trying to control the
COM ports, and also removes the overhead of such attempts. I can add in
the ability to directly access other FOSSILs if there is enough demand.
Made RBBSQBFS work (for those who use QB). RBBSDV is also known to work.
I am still getting occasional lockups, and I have not been able to trace
them as of yet.