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 >
Text File  |  1992-08-15  |  9KB  |  184 lines

  1. BCFS, August 13th version
  2. (C) 1992 by Scott McNay.  All Rights Reserved.
  3.  
  4. FidoNet: 1:395/11
  5. BBS: 817-554-5331
  6. I may be contacted via the MAPLE, RBBS_MAPLE, or RBBS-PC echos.
  7.  
  8.  
  9.                                       -=-
  10.  
  11. These mods are free for use by RBBS SysOps and are offered for inclusion with
  12. the stock RBBS release.
  13.  
  14.                                       -=-
  15.  
  16. BCFS is a mod to allow the /Fs switch of BC 7.x to be used when compiling RBBS,
  17. thus giving the sysop much more string space to work with, and also removing
  18. one of the restrictions on the RBBS developers.  The mod involves changes to
  19. nearly all of the assembler routines provided with RBBS.  These routines are
  20. backward compatible, allowing RBBS to be compiled without BC 7.x's /Fs switch.
  21. With the addition of RBBSQBFS.OBJ, RBBS can also be compiled with QB.  However,
  22. compiling with QB or without the /Fs switch will NOT give any advantage.
  23.  
  24. At this point, I have been unable to test all of the routines (SEE HISTORY AT
  25. BOTTOM FOR UPDATES!).  The routines that I have been able to test are QBARCV6
  26. (View command), FOSSCOMM (FOSSIL support), RBBSUTIL (finding a file,
  27. uppercasing a string), ANSI19 (DOS screen output), MOVCSTR (creating ANSI
  28. string), and FINDWORD (find next/previous word on line).  The last two are part
  29. of ANSIED.  I have been unable to test RBBSHS (HearSay), BASNOV (Novell),
  30. RBBSDV (DesqView), PC-NET (PC-Net?), 10-NET (3-COM), BDRIVEC2 (Corvus), and
  31. XMODEM (Xmodem/Ymodem Checksum and CRC calculation).  I would appreciate
  32. knowing if these routines work or not.
  33.  
  34. In case you're wondering how much free memory BASIC gets with this mod, here
  35. are some actual figures from my system:
  36.  
  37.    Free Temporary String Space = 65430
  38.    Free Common String Space = 57024
  39.    Free Local String Space = 61776
  40.    Free Far Space = 146512
  41.  
  42. It surprising to see MENU0 telling you that you have 64K of free string space.
  43. I got the report above by adding the following lines to the output of the
  44. Utilities Statistics command.  This code is in RBBS-PC.BAS in the stock code,
  45. and is in RBBSSUB5.BAS in Maple.  In Maple, the lines that these replace have
  46. the CINT function in them.  Remove it or else you may see negative numbers.
  47.  
  48.    CALL LPrnt ("Free Temporary String Space = "+(STR$(FRE("A"))),1)
  49.    CALL LPrnt ("StackSpace = "+  (STR$(FRE(-2)) + " bytes"),1)
  50.    CALL LPrnt("Free Common String Space ="+ (STR$(FRE(ZWASZ$))),1)
  51.    CALL LPrnt("Free Local String Space ="+ (STR$(FRE(WASZ$))),1)
  52.    CALL LPrnt("Free Far Space ="+ (STR$(FRE(-1))),1)
  53.  
  54. To implement these mods, just copy the .OBJ files over the original .OBJ files
  55. and add '/Fs' to the command line for BC 7.x for ALL of the .BAS files.  Then,
  56. update your LINK response file to say "ANSI19" instead of "ANSI17". If you use
  57. QB, these mods will NOT help, but may be added anyway, in which case
  58. RBBSQBFS.OBJ must be added to the list of files to link.  In case it isn't
  59. clear: RBBSQBFS.OBJ _MUST_ be used with QB and _MUST_NOT_ be used with BC 7.x.
  60. Here is an example:
  61.  
  62.    @echo on
  63.    bc /Fs /O /FPi /Ot /MBF /s rbbs-pc;
  64.    bc /Fs /O /FPi /Ot /MBF /x rbbssub1;
  65.    bc /Fs /O /FPi /Ot /MBF    rbbssub2;
  66.    bc /Fs /O /FPi /Ot /MBF    rbbssub3;
  67.    bc /Fs /O /FPi /Ot /MBF    rbbssub4;
  68.    bc /Fs /O /FPi /Ot /MBF    rbbssub5;
  69.    ; Next 5 lines are for Maple and/or ALIAS, DOORSYS, ANSIED, RCHAT, ANSICHAT
  70.    bc /Fs /O /FPi /Ot /MBF    alias;
  71.    bc /Fs /O /FPi /Ot /MBF    doorsys;
  72.    bc /Fs /O /FPi /Ot /MBF    ansied;
  73.    bc /Fs /o /FPi /Ot /MBF    Rchat300;
  74.    bc /Fs /o /FPi /Ot /MBF    ansichat;
  75.    Link @LINK.dat;
  76.  
  77. LINK.DAT would be something like:
  78.  
  79.    rbbs-pc+rbbssub1+rbbssub2+
  80.    rbbssub3+rbbssub4+rbbssub5+
  81.    fosscomm+pc-net+basnov+10-net+rbbsdv+
  82.    bdrivec2+givebk31+rbbsutil+ansi19+        < Change ANSI17 to ANSI19
  83.    qbarcv6+xmodem+rbbshs+                    < For stock code only
  84.    rbbsqbfs+                                 < For QB _ONLY_
  85.    rchat300+                                 < For Maple/internode chat only
  86.    alias+                                    < For Maple/Alias mods only
  87.    doorsys+                                  < For Maple/DOOR.SYS mods only
  88.    ansichat+                                 < For Maple/ANSIChat only
  89.    ansied+findword+movcstr,                  < For Maple/ANSIED only
  90.    ,,/STACK:1024/NOE;
  91.  
  92.  
  93. Verification of proper operation: RBBS should be compiled both with and without
  94. the /Fs option, and the routines checked both ways.  If the routines work in
  95. one case and not the other, that will help me find the problem.  For those
  96. familiar with DEBUG, breakpoints have been placed in the untested routines.
  97.  
  98.  
  99. History:
  100. 0726: Initial release
  101.       Known to work: FOSSCOMM, RBBSUTIL, ANSI17, QBARCV6, FINDWORD, MOVCSTR
  102.       Unverified: PC-NET, BASNOV, 10-NET, RBBSDV, BDRIVEC2, XMODEM, RBBSHS,
  103.          RBBSQBFS.
  104.  
  105. 0728: Updated from ANSI17 to ANSI18, forwarded by Dan Drinnon, and VERY heavily
  106.       optimized it.  Also fixed a bug that's been around for a while in which
  107.       lines that go past the right end of the screen get cut off instead of
  108.       wrapping, so that your display will now look more like that of the users.
  109.       Made a booboo while assembling the files.  The 0726 OBJ files WILL work
  110.       ok, in spite of the errors reported.  The 0728 update contains new .OBJ
  111.       files that will not give error messages.
  112.  
  113. 0729: IGNORE THE FOLLOWING.
  114.      |BCFS0728 took care of lines getting cut off at column 80 on the sysop
  115.      |side.  0729 modifies ANSI18 to return a count of the number of line
  116.      |wraps, allowing RBBS to keep a more accurate line count.  RBBSSUB2 needs
  117.      |to be modified for this.
  118.  
  119.      |In LPrnt, replace:
  120.      |        CALL ANSI(ZCrLf$,ZWasCL,ZWasCC) : _
  121.      |with:
  122.      |        CALL ANSI(ZCrLf$,ZWasCL,ZWasCC,T) : _                  'BCFS0729
  123.      |        ZLinesPrinted = ZLinesPrinted + T : _                  'BCFS0729
  124.  
  125.      |In PScrn, replace:
  126.      |   ELSE CALL ANSI (Strng$,ZWasCL,ZWasCC) : _
  127.      |with:
  128.      |   ELSE CALL ANSI (Strng$,ZWasCL,ZWasCC,T) : _                  'BCFS0729|
  129.      |      ZLinesPrinted = ZLinesPrinted + T : _                  'BCFS0729
  130.  
  131.      |In SkipLine, replace:
  132.      |        CALL ANSI(ZCrLf$,ZWasCL,ZWasCC) : _
  133.      |with:
  134.      |        CALL ANSI(ZCrLf$,ZWasCL,ZWasCC,T) : _                  'BCFS0729
  135.      |        ZLinesPrinted = ZLinesPrinted + T : _                  'BCFS0729
  136.  
  137. 0801: Ignore BCFS0729.  The changes in it are either not needed any more or
  138.       won't always work as intended.
  139.  
  140.       Rewrote ANSI() completely, renaming it to ANSI19.ASM.  There should no
  141.       longer be any problems with wrapping around column 80, or anomalous
  142.       results when printing an ANSI code while located in column 80, or
  143.       overwriting the status line even if ANSI codes are used to move the
  144.       cursor to the status line, or looking past the end of the string.  Fixed
  145.       problem with missing LF's during chat.  Change RBBSSUB2 as follows:
  146.  
  147.       3750 IF SendRemote THEN _
  148.               CALL PutCom(WasX$)
  149.            IF WasX$ = ZCarriageReturn$ THEN _
  150.               CALL LPrnt (ZCrLf$,0) : _
  151.               Col = Col - 1 : _
  152.               GOTO 3850 _
  153.            ELSE _
  154.               CALL LPrnt (WasX$, 0)
  155.  
  156.       Went through and checked the other files to make sure that they meet BC's
  157.       requirements, namely saving DI, SI, BP, DS, and ES.  ES does not need to
  158.       be saved for BC, but may need to be saved for QB.  Updated QBARCV6 to
  159.       recognize current PAK/SDN and ZIP compression methods.  Also optimized
  160.       XMODEM.  Commented out unused code in BDRIVEC2.  Since all of the
  161.       routines were modified, they will all need to be verified again.
  162.  
  163.       Known to work: FOSSCOMM, RBBSUTIL, ANSI19, FINDWORD, MOVCSTR.
  164.       Unverified: PC-NET, BASNOV, 10-NET, RBBSDV, BDRIVEC2, XMODEM, RBBSHS,
  165.          RBBSQBFS, QBARCV6.
  166.  
  167. 0812: Went through FOSSCOMM and fixed possible problem with the FosWrite and
  168.       FosRead routine.  Also commented out the unused routines.  Made data
  169.       areas overlap to save a few bytes.  This version not released.
  170.  
  171. 0813: Modified FOSSCOMM to include the functionality of BYPASS.OBJ internally.
  172.       BYPASS.OBJ comes with X00, and allows a program to directly call X00's
  173.       INT 14h service routine, instead of calling whatever happens to be at INT
  174.       14h.  Having the code built in to FOSSCOMM actually makes it slightly
  175.       faster than the original code, even if a FOSSIL other than X00 is used.
  176.       Calling X00 directly prevents a multitasker from trying to control the
  177.       COM ports, and also removes the overhead of such attempts.  I can add in
  178.       the ability to directly access other FOSSILs if there is enough demand.
  179.  
  180.       Made RBBSQBFS work (for those who use QB).  RBBSDV is also known to work.
  181.  
  182.       I am still getting occasional lockups, and I have not been able to trace
  183.       them as of yet.
  184.