home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The World of Computer Software
/
World_Of_Computer_Software-02-386-Vol-2of3.iso
/
b
/
bullet6.zip
/
BULLET6.NEW
next >
Wrap
Text File
|
1989-06-08
|
41KB
|
1,039 lines
=======[ Reported Bugs and Fixes for RBBS-PC 17.2A ]========
CONVENTIONS:
The temporary fixes are assigned numbers that correspond to the
month, day, and order in which they were reported. The fixes are
dated (if there are any) following the problem description. The
lines of source code that are changed/modified/added are
designated by the comment beginning in column 70 of "' iiMMDD#"
where ii is the initials of the person providing the fix.
To download this file, go to the file subsystem and download the file BULLET6
e.g. the command "d;bullet6;y".
Note: these fixes will be made available in a merge file AFTER they
are fully tested.
Current merge file available: None.
These merges are to applied using BLED to the base code of 17.2A.
-------------------------------------------------------------------
RBBS-PC.EXE 05/28/89 7:00 PM EST Release of CPC17-2A
-------------------------------------------------------------------
Summary
EXE FIX Problem
---- -------- -------
RBBS -none- Get parts of prompt in msg when entering it (very rare)
RBBS -none- Timelock reapplied to downloads after a door
RBBS KG053001 Comments not going to message file when so configured
RBBS KG053101 Submenus with shared options not working
RBBS KG060101 Macro not recognized when has argument on cmd line
RBBS KG060102 "(R)" not being added to subj in replies
RBBS KG060301 Questionnaire chaining not working.
RBBS KG060302 Ques answers reduce embedded spaces to 1 when saved
CNFG KG060303 Config parm 165 displays too many dashes
RBBS KG060304 C)ontinuous stays on forever once picked in PUI
RBBS KG060401 Macro file display not working properly
CNFG RS060401 Parenthese confusing in yes/no prompts
RBBS RS060402 Message not alligned in MENU0
RBBS RS060403 Unable to change callers file in a subboard
RBBS RM060404 Able to use function keys in local mode when not sysop
RBBS MZ060301 Ques chain should write out header data if new data file
RBBS MZ060302 More prompt canceling smart text color
RBBS MZ060303 Graphics call spill over from W)ho scan onto next lines
RBBS KG060701 Macro in one place interferes with entry in another
RBBS -none- Macros not substituted in stacked commands
RBBS -none- Some stacked commands ignored
Contributors include: RS - Randy Sun
MZ - Mike Zakharoff
RM - Robert McAdams
------------------------[ 052801 ]-------------------------
Problem. Will get message edit prompt sometimes inside a line in a
message. Been in RBBS for at least 5 versions. Overwrites part
of line entered. Not reproducible at will, and rare.
------------------------[ 052802 ]-------------------------
Problem. When come back from a door, timelock on downloads gets
reapplied. Does not reapply to dooring.
------------------------[ KG053001 ]-------------------------
Problem. Comments going to a separate file even though there is
room in message file and CONFIG says to put comments in message
file. Caused by new option to let messages grow, when max # of
records exceeds max specified in config.
Solution: Change RBBS-PC.BAS as follows:
1800 MESSAGE.TO$ = "SYSOP"
ORIG.SUBJECT$ = "COMMENT"
GOSUB 1893
IF (ACTIVE.MESSAGES >= MAXIMUM.MESSAGES OR _
((NOT MESSAGES.CAN.GROW) AND _ ' KG053001
(NEXT.MESSAGE.RECORD + 5 > HIGHEST.MESSAGE.RECORD)) OR _ ' KG053001
NOT COMMENTS.AS.MESSAGES ) THEN _
A$ = "Want a REPLY? Use "+MID$(ALL.OPTS$,5,1)+" instead. Leave a comment? (Y/[N])" : _
GOSUB 12999 : _
IF NOT YES THEN _
CALL SKIPLINE (1) : _
RETURN _
ELSE SYSOP.COMMENT = TRUE : _
GOTO 2007
SYSOP.COMMENT = FALSE
SYSOP.MESSAGE = TRUE
FT$ = "comment"
GOTO 2010
------------------------[ KG053101 ]-------------------------
Problem: Shared options on submenus are not found. Eg. if
BLT is bulletin prefix, BLTA.MNU defines a submenu selected
using "A". If '1' is an option on BLTA.MNU, file BLTA1
will not be found (which corresponds to selecting option '1'
in submenu).
Solution: Change RBBSSUB4.BAS as follows:
59530 Z$ = B$(ANS.INDEX)
CALL ALLCAPS (Z$)
IF INSTR(RETURN.ON$,Z$) THEN _ 'check whether calling pgm wants
EXIT SUB
IF INSTR("LH?",Z$) THEN _ 'check whether caller wants help
GOTO 59515
IF INSTR(Z$,".") > 0 THEN _
GOTO 59532
FPRE$ = FRONT.OPT$
GOSUB 59538
IF (BF < 2) AND (NOT OK) THEN _
FPRE$ = MENU.FRONT$ : _ ' KG053101
GOSUB 59538
IF NEW.MENU THEN _
NEW.MENU = FALSE : _
GOTO 59515
IF OK THEN _
EXIT SUB
------------------------[ KG060101 ]-------------------------
Problem. Macros invoked with a command line argument are not
being recognized as macros. E.g. if have macro READ.MCR,
will find if type "READ" but not if "READ 2+".
Solution: Change RBBSSUB2.BAS as follows:
1628 IF MACRO.SAVE > 0 THEN _
GSR.ARA$(MACRO.SAVE) = B$ : _
MACRO.SAVE = 0 : _
B$ = "" : _
FORCE.KEYBOARD = FALSE : _
GOTO 1525
IF (DISTANT.TGET > 0) OR (MACRO.TEMPLATE$ <> "") THEN _
CALL WIPELINE (38) : _
IF NOT NO THEN _
B$ = "" : _
FORCE.KEYBOARD = FALSE : _
GOTO 1525 _
ELSE Q = 0 : _
MACRO.TEMPLATE$ = "" : _
DISTANT.TGET = 0 : _
GOTO 1525
IF MACRO.ACTIVE OR ((NOT IN.STACK) AND INSTR(B$,".") > 0) THEN _ ' KG060189
EXIT SUB
CALL CHKMACRO (B$(1),FOUND) ' KG060189
IF FOUND THEN _
GOTO 1525
EXIT SUB
------------------------[ KG060102 ]-------------------------
Problem: Replies to a message should take the same subject and
put "(R)" in front of it. "(R)" is not being added.
Solution: Change RBBS-PC.BAS as follows:
4621 IF USER.SECURITY.LEVEL < OPT.SEC(5) THEN _
VIOLATION$ = "MORE RE" : _
GOSUB 1380 : _
REPLY = FALSE : _
GOTO 4625
IF LEFT$(SUBJECT$,3) <> "(R)" THEN _
ORIG.SUBJECT$ = "(R)" + _ ' KG060102
LEFT$(ORIG.SUBJECT$,22)
------------------------[ KG060301 ]-------------------------
Problem: Questionnaire chaining not working. Returns every time to
prompt to select questionnaire.
Solution: Change RBBSSUB4.BAS as follows:
SUB ASKUSERS STATIC
QUESTIONNAIRE.ABORTED = FALSE
QUESTIONNAIRE.CHAIN.STARTED = FALSE ' KG060301
REDIM A$(256)
REDIM WORK.ARA$(MAX.WORK.VAR),GSR.ARA$(MAX.WORK.VAR)
'
'
' * LOAD SCRIPT CONTAINING THE QUESTIONS INTO THE A$ DIMENSION *
'
'
64005 CHAT.AVAILABLE = FALSE
QUESTIONNAIRE.CHAIN = FALSE
LAST.QUES = 0
CALL GRAPHIC (USER.GRAPHIC.DEFAULT$,FILE.NAME$) ' KG060301
IF NOT OK THEN _ ' KG060301
EXIT SUB ' KG060301
CALL READPARMS (A$(),2,1)
IF EC > 0 THEN _
EXIT SUB
APPEND.FILE.NAME$ = A$(1)
MAXIMUM.SECURITY.LEVEL = VAL(A$(2))
X = INSTR(A$(2)," ")
.
.
.
------------------------[ KG060302 ]-------------------------
Problem: When using space as a parse character (no semicolon), embedded
multiple spaces are reduced to a single space in the user's reponse. For
example, the questionnaire response of "1 2 3 ." would be written out
to the questionnaire data file as "1 2 3 ." instead of the original
response typed.
Solution: Change RBBSSUB2.BAS as follows:
SUB PARSEIT STATIC
A = INSTR(B$,";")
IF A > 0 THEN _
PARSE.CHAR$ = ";" _
ELSE IF B$ <> SPACE$(LEN(B$)) THEN _
CALL TRIM (B$) : _
X$ = B$ : _ ' KG060302
A = INSTR(B$," ") : _
WHILE A > 0 : _
B$ = LEFT$(B$,A - 1) + _
MID$(B$,A + 1) : _
A = INSTR(A,B$," ") : _
WEND : _
A = INSTR(B$," ") : _
IF A > 1 THEN _
PARSE.CHAR$ = " " _
ELSE A = INSTR(B$,",") : _
PARSE.CHAR$ = ","
IF A < 2 THEN _
B$(1) = B$ : _
EXIT SUB
B$(1) = LEFT$(B$,A - 1)
A = A + 1
EOL = FALSE
1640 B = INSTR(A,B$,PARSE.CHAR$)
C = B-A
IF C < 1 THEN _
EOL = TRUE : _
C = 128
DF$ = MID$(B$,A,C)
IF DF$ <> "" THEN _
Q = Q + 1 : _
B$(Q) = DF$ : _
CALL ALLCAPS(DF$) : _
X = INSTR("NS;/G;",DF$+";") : _
IF X > 0 THEN _
IF LEN(DF$) = 2 THEN _
Q = Q - 1 : _
NON.STOP = NON.STOP OR (X = 1) : _
AUTO.LOGOFF = AUTO.LOGOFF OR (X = 4)
IF NOT EOL AND Q < 50 THEN _
A = B + 1 : _
GOTO 1640
IF PARSE.CHAR$ <> ";" THEN _ ' KG060302
B$ = X$ ' KG060302
END SUB
------------------------[ KG060303 ]-------------------------
Problem: Config parameter number 165 shows extra dashes beyond
the normal boundary. Can also get untrapped illegal function call
when drive/path for message file is long.
Solution: Change CNFG-SUB.BAS as follows:
12470 DISPLAYED.PAGE.NUMBER = 9
GOSUB 30040
' MAX.USR.FILE.SIZE.FRM.DEF = HIGHEST.USER.RECORD
MAX.MSG.FILE.SIZE.FRM.DEF! = HIGHEST.MESSAGE.RECORD
MAX.ALLOWED.MSGS.FRM.DEF = MAXIMUM.NUMBER.OF.MSGS
GOSUB 24800
LOCATE 3,1
PRINT "161. Maximum number of concurrent RBBS-PC's -------" + STR$(MAXIMUM.NUMBER.OF.NODES)
MT$ = "single RBBS-PC copy "
IF MAXIMUM.NUMBER.OF.NODES <> 1 THEN _
MT$ = "concurrent RBBS-PC's" : _
SUBROUTINE.PARAMETER = 2 : _
IF NETWORK.TYPE < 0 OR NETWORK.TYPE > 7 THEN _
SUBROUTINE.PARAMETER = 1 : _
CALL NETTYPE : _
ELSE CALL NETTYPE
IF NETWORK.TYPE = 6 THEN _
MT$ = "NETBIOS "
IF NETWORK.TYPE = 7 THEN _
MT$ = "DoubleDOS "
PRINT "162. Environment running " + MT$ + " ------ " + NETWORK.TYPE$
PRINT "163. RBBS-PC 'recycle' method when users log off --- " + RECYCLE.TO.DOS$
FILE$ = MAIN.MESSAGE.FILE$
GOSUB 30180
MAX.MSG.FILE.SIZE.FRM.DEF! = UG
PRINT "164. Number of records in the User File ------------";STR$(MAX.USR.FILE.SIZE.FRM.DEF)
PRINT "165. Number of records in the Message File ---------";STR$(MAX.MSG.FILE.SIZE.FRM.DEF!) ' KG060303
PRINT "166. Maximum number of messages allowed ------------" + STR$(MAX.ALLOWED.MSGS.FRM.DEF)
PRINT "167. Conference File Maintenance."
PRINT "168. Default extension for compressed files -------- " ; DEFAULT.EXTENSION$
PRINT "169. Message file GROWS in size as messages added -- " ; FNYESNO$(MESSAGES.CAN.GROW)
GOTO 12580
------------------------[ KG060304 ]-------------------------
Problem: Once you select C)ontinous (non-stop) in a
programmable user interface, it remains on forever.
Solution: Change RBBSSUB4.BAS as follows:
59460 NON.STOP = (PAGE.LENGTH < 1) ' KG060304
CALL BUFFILE (MENU.TO.DISPLAY$,X)
------------------------[ KG060401 ]-------------------------
Problem: When displaying a file using macro file display (*F), saying
No to the more prompt does not work. Display continues. Also,
macro recycles when ^k out and file display is last line in macro.
And smart text not substituted in macro file display.
Solution: Change RBBSSUB5.BAS as follows:
63348 CALL TRIM (X$) ' Print File
CALL FINDIT (X$)
IF NOT OK THEN _
GOTO 63336
LINES.PRINTED = 1
NON.STOP = (NON.STOP OR PAGE.LENGTH < 1) ' KG060401
63349 WHILE (NOT EOF(2) AND (NOT NO) AND ((NOT NON.STOP) AND (LINES.PRINTED < PAGE.LENGTH)) AND (SUBROUTINE.PARAMETER > -1)) ' KG060401
CALL READDIR (2,1)
GOSUB 63396 ' KG060401
SUBROUTINE.PARAMETER = 5
CALL TPUT
WEND
DISTANT.TGET = 0
IF SUBROUTINE.PARAMETER < 0 THEN _
EXIT SUB
IF EOF(2) OR NO THEN _ ' KG060401
GOTO 63336
DISTANT.TGET = 2
CALL PAUSEEXIT
EXIT SUB
63465 SUB PAUSEEXIT STATIC
' CALL SKIPLINE (1)
SUBROUTINE.PARAMETER = 4
TURBO.KEY = -TURBO.KEY.USER
A$ = MORE.PROMPT$ + ">" + MID$("? ! ",2*TURBO.KEY+1,2)
FORCE.KEYBOARD = TRUE
NO.ADVANCE = TRUE
CALL TPUT
LINES.PRINTED = 0
B$ = "" ' KG060401
END SUB
Change RBBSSUB2.BAS as follows:
1471 CALL SKIPLINE (1)
STOP.INTERRUPTS = FALSE
RET = TRUE
NO = TRUE ' KG060401
NON.STOP = FALSE
GOTO 1470
------------------------[ RS060401 ]-------------------------
Problem. Yes/no prompt in config has format "(Y)es or N)o)". The
parentheses are hard for the eye to group and are confusing.
Solution: Change CNFG-SUB.BAS as follows:
61200 CALL ASKRO (STRNG$+" Y)es or N)o",24,HJ$) ' RS060401
L = LEN(HJ$)
IF L < 1 OR L > 3 THEN _
GOTO 61207
CALL ALLCAPS(HJ$)
X = INSTR("NY",LEFT$(HJ$,1))
ON X GOTO 61210,61212
------------------------[ RS060402 ]-------------------------
Problem. The "Waiting for ring" message on the opening menu is not
alligned with the rest of the menu.
Solution: Change RBBSSUB2.BAS as follows:
235 EIGHT.BIT = TRUE
SUBROUTINE.PARAMETER = -10
CALL CARRIER
IF SUBROUTINE.PARAMETER = 0 AND _
EXIT.TO.DOORS THEN _
CALL READPROF : _
SUBROUTINE.PARAMETER = 1 : _
GOTO 335
IF SUBROUTINE.PARAMETER = 0 AND _
EXPECT.ACTIVE.MODEM THEN _
BAUD.TEST = VAL(NETBAUD$) : _
CALL TESTREL (NETRELIABLE$) : _
GOTO 328
IF EXPECT.ACTIVE.MODEM OR _
EXIT.TO.DOORS THEN _
SUBROUTINE.PARAMETER = 4 : _
EXIT SUB
IF SUBROUTINE.PARAMETER = 0 THEN _
GOTO 324
PCJR = FALSE
IF COMPUTER.TYPE = 2 AND _
COM.PORT$ = "COM1" AND _
MODEM.STATUS.REGISTER = 1022 THEN _
MODEM.GO.OFFHOOK.COMMAND$ = CHR$(14) + _
"P" : _
PCJR = TRUE
CALL SYSMENU
IF PCJR THEN _
A$ = CHR$(14) + _
"I" _
ELSE A$ = MODEM.RESET.COMMAND$
CALL MODEMPUT (A$)
CALL DELAYIT (MODEM.INIT.WAIT.TIME)
IF PCJR THEN _
A$ = CHR$(14) + _ ' PC-JR'S MODEM COMMAND IDENTIFIER
"C 0," + _ ' SET "AUTO-ANSWER" OFF ON PC-JR'S MODEM
"S 1," + _ ' SET SPEED TO 300 BAUD ON PC-JR'S MODEM
"H" _ ' MANUALLY HANG UP THE PHONE (IF NOT ALREADY)
ELSE A$ = MODEM.INIT.COMMAND$
CALL MODEMPUT (A$)
IF PCJR THEN _
A$ = CHR$(14) + _
"F 4" : _
CALL MODEMPUT (A$)
RINGBACK = FALSE
LOCATE 16,55
IF REQUIRED.RINGS = 0 THEN _
CALL LPRNT("WAITING FOR CARRIER",0) : _
GOTO 237
IF MID$(MODEM.INIT.COMMAND$, _
INSTR(MODEM.INIT.COMMAND$,"S0") + 3,3) = "255" THEN _
CALL LPRNT("RING BACK SYSTEM",0) : _
RINGBACK = TRUE : _
GOTO 236
CALL LPRNT(" WAITING FOR RING ",0) ' RS060402
------------------------[ RS060403 ]-------------------------
Problem. Caller's file not switching to one specified in a subboard.
Note: the danger of having a different caller's file in a subboard is
that if more than one user are in the same subboard using the shared
DEF file, their activity will get intermixed. On the other hand, ok
for one node, and okay for multiple nodes if user different callers
file for each node. Allow sysop flexibility to specify caller's file
even though some will regret doing it.
Change RBBSSUB1.BAS as follows:
117 IF SUBROUTINE.PARAMETER <> -62 THEN _
IF PREV.READ$ = CONFIG.FILE$ THEN _
EXIT SUB _
ELSE PREV.READ$ = CONFIG.FILE$
CLOSE 2
BULLETIN.SAVE$ = BULLETIN.MENU$
CALL OPENWORK (2,CONFIG.FILE$)
CURRENT.DEF$ = CONFIG.FILE$
INPUT #2,DF$, _
DOWNLOAD.DRIVES$, _
SYSOP.PASSWORD.1$, _
SYSOP.PASSWORD.2$, _
SYSOP.FIRST.NAME$, _
SYSOP.LAST.NAME$, _
REQUIRED.RINGS, _
START.OFFICE.HOURS, _
END.OFFICE.HOURS, _
MINUTES.PER.SESSION!, _
DF, _
DF, _
UPLOAD.DIRECTORY$, _
EXPERT.USER.DEF, _
ACTIVE.BULLETINS, _
PROMPT.BELL.DEF, _
DF, _
MENUS.CAN.PAUSE, _
MENU$(1), _
MENU$(2), _
MENU$(3), _
MENU$(4), _
MENU$(5), _
MENU$(6), _
CONFERENCE.MENU$, _
DF, _
WELCOME.INTERRUPTABLE, _
REMIND.FILE.TRANSFERS, _
PAGE.LENGTH, _
MAX.MESSAGE.LINES.DEF, _
DOORS.AVAILABLE, _
DF$, _
MAIN.MESSAGE.FILE$, _
MAIN.MESSAGE.BACKUP$
INPUT #2, X$, _
COMMENTS.FILE$, _
MAIN.USER.FILE$, _
WELCOME.FILE$, _
NEWUSER.FILE$, _
MAIN.DIRECTORY.EXTENTION$
CALL BRKFNAME (X$,Y$,DF$,Z$,FALSE)
IF DF$ <> "" THEN _ ' RB060403
CALLERS.FILE$ = X$
.
.
.
------------------------[ RM060404 ]-------------------------
Problem. Sysop function keys available to local caller who logs on using
Escape and is not sysop.
Solution: Change RBBSSUB3.BAS as follows:
30600 IF KEYBOARD.STACK$ = "" THEN _
KEY.PRESSED$ = INKEY$ _
ELSE KEY.PRESSED$ = KEYBOARD.STACK$ : _
KEYBOARD.STACK$ = ""
FUNCTION.KEY = 0
IF LEN(KEY.PRESSED$) <> 2 THEN _
GOTO 33970
KEY.PRESSED = ASC(RIGHT$(KEY.PRESSED$,1))
IF LOCAL.USER AND NOT SYSOP THEN _ ' RM060404
KEY.PRESSED$ = "" : _
GOTO 33970
IF KEY.PRESSED => F1.KEY AND _
KEY.PRESSED <= F10.KEY THEN _
FUNCTION.KEY = KEY.PRESSED - 58 : _
GOTO 30610
IF KEY.PRESSED = 117 THEN _ 'Ctrl-End
FUNCTION.KEY = 11
IF KEY.PRESSED = 73 THEN _ 'PgUp
FUNCTION.KEY = 12
IF KEY.PRESSED = 72 THEN _ 'up arrow
FUNCTION.KEY = 13
IF KEY.PRESSED = 80 THEN _ 'Down arrow
FUNCTION.KEY = 14
IF KEY.PRESSED = 81 THEN _ 'PgDn
FUNCTION.KEY = 15
IF KEY.PRESSED = 75 THEN _ 'left arrow
FUNCTION.KEY = 16
IF KEY.PRESSED = 77 THEN _ 'Right arrow
FUNCTION.KEY = 17
IF KEY.PRESSED = 141 THEN _ 'CTRL-up arrow
FUNCTION.KEY = 18
IF KEY.PRESSED = 132 THEN _ 'CTRL-PgUp (same as CTRL-UP)
FUNCTION.KEY = 18
IF KEY.PRESSED = 145 THEN _ 'CTRL-down arrow
FUNCTION.KEY = 19
IF KEY.PRESSED = 118 THEN _ 'CTRL-PgDn (same as CTRL-DOWN)
FUNCTION.KEY = 19
IF KEY.PRESSED = 115 THEN _ 'CTRL-left arrow
FUNCTION.KEY = 20
IF KEY.PRESSED = 116 THEN _ 'CTRL-right arrow
FUNCTION.KEY = 21
------------------------[ MZ060301 ]-------------------------
Problem. When do question chain and saving data, should write
out header information if the append data file is different.
Never writes out header in chained questionnaire. "Chain" to
a new data file should be treated not as a continuation of the
previous questionnaire but as a new questionnaire.
Solution: Change RBBSSUB4.BAS as follows:
(line 64003)
SUB ASKUSERS STATIC
QUESTIONNAIRE.ABORTED = FALSE
QUESTIONNAIRE.CHAIN.STARTED = FALSE ' KG060301
REDIM A$(256)
REDIM WORK.ARA$(MAX.WORK.VAR),GSR.ARA$(MAX.WORK.VAR)
PREV.APPEND$ = "" ' MZ060301
64005 CHAT.AVAILABLE = FALSE
QUESTIONNAIRE.CHAIN = FALSE
LAST.QUES = 0
CALL GRAPHIC (USER.GRAPHIC.DEFAULT$,FILE.NAME$) ' KG060301
IF NOT OK THEN _ ' KG060301
EXIT SUB ' KG060301
CALL READPARMS (A$(),2,1)
IF EC > 0 THEN _
EXIT SUB
PREV.APPEND$ = APPEND.FILE.NAME$ ' MZ060301
APPEND.FILE.NAME$ = A$(1)
MAXIMUM.SECURITY.LEVEL = VAL(A$(2))
X = INSTR(A$(2)," ")
IF X > 0 THEN _
IF USER.SECURITY.LEVEL < VAL(MID$(A$(2),X)) THEN _
CALL QTPUT1 ("Higher security needed for this questionnaire") : _
EXIT SUB
'
'
' * THE FIRST RECORD OF THE SCRIPT FILE CONTAINS THREE PARAMETERS:
' * 1. THE NAME OF THE FILE TO APPEND THE ANSWERS TO.
' * 2. THE MAXIMUM SECURITY LEVEL THE + COMMAND CAN RAISE A USER SECURITY
' * 3. THE MINIMUM SECURITY TO USE THIS QUESTIONNAIRE
' * e.g. 'C:XXX.DAT,6 5' writes answers to C:XXX.DAT, can raise to 6,
' * and requires security 5 or more to access
SCRIPT.INDEX = 1
A$(SCRIPT.INDEX) = ACTIVE.USER.NAME$ + _
" " + _
DATE$ + _
" " + _
TIME$
64410 SCRIPT.INDEX = SCRIPT.INDEX + 1
IF SCRIPT.INDEX > SCRIPT.MAX THEN _
GOTO 64500
IF LEFT$(A$(SCRIPT.INDEX),1) = ":" THEN _
QUESTION.SAVE$ = MID$(A$(SCRIPT.INDEX),2) : _
GOTO 64410
IF LEFT$(A$(SCRIPT.INDEX),1) = "!" AND _
LEN(A$(SCRIPT.INDEX)) < 2 THEN _
GOTO 64410
IF LEFT$(A$(SCRIPT.INDEX),1) = "!" THEN _
CALL PRNTWRKA (QUESTION.SAVE$) : _
CALL PRNTWRKA (MID$(A$(SCRIPT.INDEX),2))
IF SCRIPT.INDEX = 1 AND _
APPEND.FILE.NAME$ <> PREV.APPEND$ THEN _ ' MZ060301
CALL PRNTWRKA (A$(SCRIPT.INDEX))
IF EC <> 0 THEN _
A$ = "Unrecoverable failure in script!" : _
SUBROUTINE.PARAMETER = 5 : _
CALL TPUT : _
GOTO 64500
GOTO 64410
------------------------[ MZ060302 ]-------------------------
Problem. Smart Text setting of color is disrupted by More prompt
and taken out until another smart text color command encountered. Should
restore the last smart text color after more prompt.
Solution:
Add the following variable to RBBS-VAR.BAS: LAST.SMART.COLOR$
Change RBBSSUB4.BAS as follows:
58258 LAST.SMART.COLOR$ = SMART.HOLD$ ' MZ060302
RETURN ' MZ060302
58274 SMART.HOLD$ = FG.1$ ' C1 Color 1
GOTO 58258 ' MZ060302
58275 SMART.HOLD$ = FG.2$ ' C2 Color 2
GOTO 58258 ' MZ060302
58276 SMART.HOLD$ = FG.3$ ' C3 Color 3
GOTO 58258 ' MZ060302
58277 SMART.HOLD$ = FG.4$ ' C4 Color 4
GOTO 58258 ' MZ060302
58278 SMART.HOLD$ = EMPHASIZE.OFF$ ' C0 Reset color
LAST.SMART.COLOR$ = "" ' MZ060302
RETURN
59860 CALL QTPUT (EMPHASIZE.OFF$,0)
IF NOT HIGHLIGHT.OFF THEN _ ' MZ060302
CALL QTPUT (LAST.SMART.COLOR$,0) ' MZ060302
IF CANT.INTERRUPT THEN _
TURBO.KEY = 2 : _
A$ = "Press Any Key to continue" _
ELSE A$ = MORE.PROMPT$ + EXTRA.PRMPT$ + LEFT$(">",-EXPERT.USER)
X = LEN(A$) + 2
NO.ADVANCE = OVERWRITE
SUBROUTINE.PARAMETER = 1
IF EXTRA.PRMPT$ = "" AND TURBO.KEY = 0 THEN _
TURBO.KEY = -TURBO.KEY.USER
MACRO.MIN = 2
CALL TGET
IF SUBROUTINE.PARAMETER = -1 THEN _
EXIT SUB
TURBO.KEY = FALSE
NON.STOP = NON.STOP OR (INSTR(" Cc",B$) > 1)
CALL WIPELINE (X + LEN(B$))
IF CANT.INTERRUPT THEN _
NO = FALSE : _
EXIT SUB
IF INSTR(" Aa",B$) > 1 THEN _
ABORT.INDEX = 32000
IF NO THEN _
KEYBOARD.STACK$ = "" : _
COMMPORT.STACK$ = "" : _ ' MZ060302
LAST.SMART.COLOR$ = "" ' MZ060302
END SUB
------------------------[ MZ060303 ]-------------------------
Problem. After do a w)ho scan, graphics can spill over into
lines that follow.
Solution: Change line 9801 of RBBSSUB2.BAS as follows:
SUB WHOSON (NUM.NODES) STATIC
A1$ = ACTIVE.MESSAGE.FILE$
ACTIVE.MESSAGE.FILE$ = ORIG.MESSAGE.FILE$
CALL OPENMSG
FIELD 1, 128 AS MESSAGE.RECORD$
FOR NODE.INDEX = 2 TO NUM.NODES + 1
GET 1,NODE.INDEX
A$ = FG.1$ + "Node" + _
STR$(NODE.INDEX - 1) + FG.2$
REC.INDEX = VAL(MID$(MESSAGE.RECORD$,44,2))
IF REC.INDEX = 0 THEN _
REC.INDEX = -1
AX$ = MID$(" 300 450 1200 2400 4800 960019200",(-5 * REC.INDEX ),5) + _
" BAUD: "
IF MID$(MESSAGE.RECORD$,55,2) = "-1" AND NOT SYSOP THEN _
Y$ = "SYSOP" + SPACE$(21) _
ELSE Y$ = MID$(MESSAGE.RECORD$,1,26)
AX$ = AX$ + FG.3$ + Y$
IF MID$(MESSAGE.RECORD$,40,2) <> "-1" THEN _
AX$ = AX$ + FG.4$ + MID$(MESSAGE.RECORD$,93,22)
IF MID$(MESSAGE.RECORD$,57,1) = "A" THEN _
A$ = A$ + " Online at " + _
AX$ _
ELSE IF NOT SYSOP THEN _
A$ = A$ + _
" Waiting for next caller" _
ELSE A$ = A$ + _
" Offline at " + _
AX$
CALL QTPUT1 (A$)
NEXT
ACTIVE.MESSAGE.FILE$ = A1$
CALL QTPUT (EMPHASIZE.OFF$,0) ' MZ060303
END SUB
------------------------[ KG060701 ]-------------------------
Problem: A macro in 17.2A operates globally everywhere. Hence
the only thing suitable for a macro is something unlikely to be
typed in more than one context. This severely limits the value
of macros, e.g. using "1" or "A" as a macro. Need a way to confine
macros to a particular context.
Solution: Make the following changes. This supports limiting a
macro to a section or a particular command by adding "/<limit>"
after security to use a macro on the 1st line. E.g. "4/M" would
mean to limit macro to callers with at least security 4 and in
the main section, and "2/FD" means to limit macro to callers with
security 2 or higher and using the file download command. Config
is changed to allow nothing to be specified for a macro extension,
which executes much faster than putting in a macro extension which
is never found.
To RBBS-VAR.BAS add the variable LAST.COMMAND$ (note: changes to
RBBS-VAR.BAS require all rbbs modules to be recompiled).
Make the following changes to RBBSSUB2.BAS:
(line 109)
SUB VARINIT STATIC
ACKNOWLEDGE$ = CHR$(6)
ACKC$ = "C" + _
ACKNOWLEDGE$
ACTIVE.MENU$ = "B"
ACTIVE.MESSAGE$ = CHR$(225)
BACKSPACE$ = CHR$(8) + _
CHR$(32) + _
CHR$(8)
BACK.ARROW$ = CHR$(29) + _
CHR$(32) + _
CHR$(29)
BELL.RINGER$ = CHR$(7)
BULLETIN.MENU$ = ""
C.L = 24
CANCEL$ = CHR$(24)
COLOR.RESET$ = CHR$(27) + _
"[00;37;40m"
CONFIG.FILENAME$ = "RBBS-PC.DEF"
CARRIAGE.RETURN$ = CHR$(13)
DELETED.MESSAGE$ = CHR$(226)
DOS.VERSION = 2
END.TRANSMISSION$ = CHR$(4)
ESCAPE$ = CHR$(27)
EXPECT.ACTIVE.MODEM = 0
FALSE = 0
F1.KEY = 59
F10.KEY = 68
GRN$ = "MAIN"
CALL SETHILITE (TRUE)
HOME.CONFERENCE$ = ""
IN.CONF.MENU = -1
LAST.COMMAND$ = "M " ' KG060701
.
.
.
1240 IF LEN(Z$) < 1 THEN _
WHERE.FOUND = 0 : _
EXIT SUB
CALL ALLCAPS (Z$)
Y$ = LEFT$(Z$,1)
WHERE.FOUND = INSTR(STRT.POS,ALL.OPTS$,Y$)
IF WHERE.FOUND = 0 THEN _ 'Not found: decide whether to hunt further
IF STRT.POS < 2 OR RESTRICT.VALID.CMDS THEN _
GOTO 1242 _ ' fully searched or restricted
ELSE WHERE.FOUND = INSTR(1,ALL.OPTS$,Y$) : _ 'hunt further
GOTO 1242
IF WHERE.FOUND => BEG.LIBRARY THEN _
IF WHERE.FOUND < LEN(ALL.OPTS$) - 11 THEN _
IF LIBRARY.TYPE = 0 THEN _
WHERE.FOUND = INSTR(WHERE.FOUND+1,ALL.OPT$,Y$) : _
IF WHERE.FOUND = 0 THEN _
WHERE.FOUND = INSTR(1,ALL.OPTS$,Y$) : _
IF WHERE.FOUND >= BEG.LIBRARY OR WHERE.FOUND = 0 THEN _
WHERE.FOUND = 0 : _
GOTO 1242
IF NOT RESTRICT.VALID.CMDS THEN _
GOTO 1242 ' everything found valid
'
'
' * RESTRICT COMMANDS TO SUBSYSTEMS (EXCEPT GLOBAL AND SYSOP)
'
'
IF WHERE.FOUND > LEN(ALL.OPTS$) - 11 THEN _
IF USER.SECURITY.LEVEL < OPT.SEC(WHERE.FOUND) THEN _
WHERE.FOUND = 0 : _
EXIT SUB _
ELSE GOTO 1242 ' KG060701
IF MID$(ORIG.COMMANDS$,WHERE.FOUND,1) = "G" THEN _
GOTO 1242 ' ACCEPT GOODBYE/GRAPHICS ' KG060701
IF (WHERE.FOUND < STRT.POS) OR _
(STRT.POS < BEG.FILE AND WHERE.FOUND => BEG.FILE ) OR _
(STRT.POS < BEG.UTIL AND WHERE.FOUND => BEG.UTIL ) OR _
(STRT.POS < BEG.LIBRARY AND WHERE.FOUND => BEG.LIBRARY ) THEN _
WHERE.FOUND = 0 ' REJECT: NOT IN SECTION
1242 IF WHERE.FOUND > 0 THEN _ ' KG060701
LSET LAST.COMMAND$ = ACTIVE.MENU$ + MID$(ORIG.COMMANDS$,WHERE.FOUND) : _
EXIT SUB ' KG060701
IF MACRO.ACTIVE OR LEN(Z$) <> 1 THEN _ ' KG060701
EXIT SUB
CALL ACHKMAC (Z$,FOUND)
IF FOUND THEN _
CALL FDMACEXE : _
Z$ = B$(1) : _
GOTO 1240
END SUB
(line 1320)
SUB CHKMACRO (STRNG$,MACRO.FOUND) STATIC
MACRO.FOUND = FALSE
IF MACRO.EXTENSION$ = "" THEN _ ' KG060701
EXIT SUB ' KG060701
IF LEN(STRNG$) < MACRO.MIN THEN _
MACRO.MIN = 1 : _
EXIT SUB
IF LEN(STRNG$) = 1 THEN _
TEMP$ = STRNG$ : _
CALL ALLCAPS (TEMP$) : _
IF INSTR(ALL.OPTS$,TEMP$) > 0 THEN _
EXIT SUB
CALL ACHKMAC (STRNG$,MACRO.FOUND)
END SUB
1325 ' $SUBTITLE: 'ACHKMAC - check if macro exists & process'
' $PAGE
'
' NAME -- ACHKMAC
'
' INPUTS -- PARAMETER MEANING
' STRNG$ STRING TO CHECK IF IS A MACRO
' MACRO.DRVPATH$ DRIVE/PATH WHERE MACROS ARE
' MACRO.EXTENSION$ EXTENSION OF MACROS
' MACRO.OFF FORCE NO MACRO TO BE FOUND
'
' OUTPUTS -- MACRO.FOUND WHETHER A MACRO WAS FOUND
' STRNG$ SUBSTITUTE FOR COMMANDS
' COMMPORT.STACK$ REST OF MACRO
' 0 IF NOT FOUND
'
' PURPOSE -- Executes a macro if found. Does not check if macro
' letter uses a command.
SUB ACHKMAC (STRNG$,MACRO.FOUND) STATIC
TEMP$ = STRNG$
CALL BRKFNAME (TEMP$,DF$,PREFX$,X$,FALSE)
IF TEMP$ = PREFX$ THEN _
FILNAME$ = MACRO.DRVPATH$ + STRNG$ + MACRO.EXTENSION$ _
ELSE FILNAME$ = STRNG$
CALL BADFILE (FILNAME$,A)
IF A > 1 THEN _
EXIT SUB
CALL GRAPHIC (USER.GRAPHIC.DEFAULT$,FILNAME$)
IF NOT OK THEN _
EXIT SUB
CLOSE 2
CALL OPENWORK (6,FILNAME$)
IF EC > 0 THEN _
EXIT SUB
CALL READDIR (6,1)
IF EC > 0 THEN _
EXIT SUB
CALL CHECKINT (A$)
IF EC > 0 OR USER.SECURITY.LEVEL < TESTED.INTEGER.VALUE THEN _
EXIT SUB
A = INSTR(A$,"/") ' KG060701
IF A > 0 THEN _ ' Check macro constraint ' KG060701
X$ = RIGHT$(A$,LEN(A$)-A) : _ ' KG060701
IF LEFT$(LAST.COMMAND$,LEN(X$)) <> X$ THEN _ ' KG060701
EXIT SUB ' KG060701
MACRO.ACTIVE = TRUE
MACRO.FOUND = TRUE
MACRO.ECHO = TRUE
END SUB
12025 ACTIVE.MENU$ = LEFT$(SECTION$,1)
LSET LAST.COMMAND$ = ACTIVE.MENU$ + " " ' KG060701
IF SHOW.SECTION THEN _
SECTION.PROMPT$ = SECTION$ _
ELSE SECTION.PROMPT$ = "Your"
IF COMMANDS.IN.PROMPT=0 THEN _
SECTION.OPTS$ = ""
COMMAND.PROMPT$ = SECTION.PROMPT$ + _
" command" + _
SECTION.OPTS$
END SUB
------------------------[ 060702 ]-------------------------
Problem. Macros are never substituted inside a stacked command.
E.g. if have a macro "D1.MCR" and say "J D1" will not substitute
for "D1" but only say no such option.
Solution: the stacking support in RBBS needs to be rewritten.
Not difficult, but changes are too extensive to do in a mere
bug fix. Fix will be in 17.3.
------------------------[ 060703 ]-------------------------
Problem: Multiple stacked commands are sometimes ignored. E.g.
"D;GAMES;R;S" will door to GAMES but the read since will be
ignored.
Solution: RBBS has never supported multiple stacked commands on
the same level (such as D and R, both in main menu) - only into
a single command. Requires stacking code to be extensively
rewritten. Will have to await 17.3.
------------------------[ 060704 ]-------------------------
Problem. Config takes a lot of memory to compile. Reduce code
size.
Make the following changes to CONFIG.BAS.
10000 ' CONFIG.BAS (RBBS-PC VERSION CPC17-2A)
' by D.Thomas Mack
' The Second Ring
' 39 Cranbury Dr.
' Trumbull, CT. 06611
'
' *******************************NOTICE**********************************
' * A limited license is granted to all users of this program and it's *
' * companion program, RBBS-PC (ver. CPC17-2A), to make copies of this *
' * program and distribute the copies to other users, on the following *
' * conditions *
' * 1. The copyright notices contained within this program are not *
' * altered, bypassed, or removed. *
' * 2. The program is not to be disrtibuted to others in modified *
' * form (i.e. the line numbers must remain the same). *
' * 3. No fee is charged (or any other consideration received) *
' * for coping or distributing these programs without an express *
' * written agreement with D. Thomas Mack, The Second Ring, *
' * 39 Cranbury Dr., Trumbul, CT. 06611 *
' * *
' * Copyright (c) 1983-1989 D. Thomas Mack, The Second Ring *
' ***********************************************************************
' $INCLUDE: 'CNFG-VAR.BAS'
CLEAR
'
' ****************************************************************************
' * DISPLAY THE CONFIG TITLE PAGE
' ****************************************************************************
'
WIDTH 80
CLS
NOT.YET.IN$ = "[Not Implemented]" ' Msg used in config for parm not yet implemented
NONE.PICKED$ = "<none>" ' Standardized message
NUM.FILES = 8
NUM.GLOBAL = 4
NUM.MAIN = 18
NUM.SYSOP = 7
NUM.UTILITY = 12
NUM.LIBRARY = 7
VERSION.NUMBER$ = "17.2A"
I! = FRE(C$)
KEY OFF
CALL CNFGINIT
PRINT TAB(60)"tm"
PRINT TAB(16) STRING$(15,205)" U S E R W A R E "STRING$(15,205)
PRINT
PRINT TAB(17)"Capital PC User Group User-Supported Software"
PRINT
X$ = " "
PRINT "Copyright (c) 1983-1989 D. Thomas Mack, 39 Cranbury Dr., Trumbull, CT. 06611"
PRINT
PRINT X$;" If you use RBBS-PC " + CONFIG.VERSION$ + " and find" ' KG060704
PRINT X$;" it valuable, consider contributing to" ' KG060704
PRINT ""
PRINT X$;" Capital PC Software Exchange"
PRINT X$;" Post Office Box 6128"
PRINT X$;" Silver Spring, Maryland 20906"
PRINT
PRINT X$;" You are free to copy and share RBBS-PC provided" ' KG060704
PRINT X$;" 1. This program is not distributed in modified form."
PRINT X$;" 2. No fee or consideration is charged for RBBS-PC itself."
16340 DELAY! = FNTI! + 15
'
' * NOTIFY THE SYSOP OF THE CONDITIONS FOR USING RBBS-PC "DOORS"
'
CLS
PRINT " ******Warning******"
PRINT "IBM's DOS absolutely REQUIRES any software package running"
PRINT "as a 'door' (i.e. via a communication port) to monitor the"
PRINT "communication port! Otherwise your system will be vulnerable" ' KG060704
PRINT "to being hung -- and worse!!! Be wary of using doors if" ' KG060704
PRINT "don't THROUGHLY understand the doors section in RBBS-PC's" ' KG060704
PRINT "documentation and the pitfalls of using 'doors'!" ' KG060704
16345 GOSUB 60440
CLS
PRINT " ******Warning******"
PRINT "Some environments require that you set the modem to answer"
PRINT "on zero rings (i.e. 'auto-answer'). This is perilous to"
PRINT "using doors because if a user in a door gets disconnected"
PRINT "the modem is set to answer on the very next ring and someone who"
PRINT "you may not want in the door or in DOS will find themselves"
PRINT "able to do you grevious harm, though some environments and" ' KG060704
PRINT "modems work fine." ' KG060704
PRINT "" ' KG060704
CALL GETNUMYN ("Are you sure you want to use doors",SHOOT.YOURSELF) ' KG060704
RETURN
=======[ End Reported Bugs and Fixes ]=======