home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
cpm
/
bbsing
/
pbbs
/
pbbs5fix.lbr
/
PBBS50.FZX
/
PBBS50.FIX
Wrap
Text File
|
1990-12-09
|
12KB
|
298 lines
Fixes for PBBS
Version 5.0
December 10/90
When PBBS version 5.0 was released on October 9/90, it
unfortunately contained a number of bugs. This file will provide
patches which will fix all known bugs (as of December 10/90).
The internal date for each fixed module (at label VERDAT:) should
be changed to reflect the release date of this fix file (December
10/90). Please ensure that you do change the dates, so that you
(and I!) will know that the patches have been installed.
PBBS50.MAC
Within the PBBS main module, there have been several
problems reported. The following seven patches should eliminate
all of the known bugs within PBBS 5.0.
The first problem involves the incorrect paging of the
initial welcome screen. Near the label WELC:, insert the 2 lines
as shown below:
WELC:
IF WELON
LD A,24 ; Set screen to <===== INSERT
LD (TLIN),A ; 24 lines <===== THESE LINES
LD HL,WELCOM
CALL TYPE ; Display the text file
ENDIF ; WELON
There are 2 small problems which occur only if you attempt
to compile the system with the EQUate ONEMNU set to NO. One
involves a missing label and the other is a relative jump which
is out of range. The following changes will fix these problems.
Below the label PCMD:, add the label PMENU1: as shown below:
PCMD: CALL PCRLF
IF NOT SET25
LD HL,UNAME
CALL PRLC
ENDIF ; NOT SET25
LD C,RMTOS ; BYE's 'Time on system...' function
CALL SPBDOS
LD HL,UNAME ; Make him feel at home
LD B,30
CALL PRINTS
CALL PRINT
DB ', the PBBS commands are: '
DB 'B,C,D,G,I,J,L,M,N,T,U,W,X,Y or ?: ',0
PMENU1: CALL GTCHAR ; Get a character from the console<==ADD LABEL
CP CR ; Carriage return?
JR Z,PMENU1 ; Yes, get another one
And, below label SYSRED: make the changes shown in the next code
fragement:
SYSRED: LD A,(ACESS) ; Better be a Sysop..
CP COSYS
IF NOT ONEMNU
;; JR C,MMENU2 ; Send him back empty <=== DELETE
JP C,MMENU2 ; Send him back empty <=== INSERT
ELSE
JP C,OMENU2 ; Send him back empty
ENDIF ; NOT ONEMNU
The next problem occurs if you are using Wayne Masters FOR-8
software and have compiled PBBS with the FOR8 EQUate set to YES.
In this case, the system fails to page properly when it shifts
from the initial (small) FOR file to the secondary (large) FOR
file. Two places have to be patched to correct this problem.
First, below lable WFOR1:, insert the 3 lines shown below:
WFOR1: LD HL,WHATSFOR ; Point to FOR file
CALL TYPE ; and display it
IF FOR8
JR Z,WFOR2 ; If aborted, skip next
LD A,1 ; Else, fake 'last line' for <==INSERT
LD (TLINES),A ; TWAIT subroutine <==INSERT
CALL TWAIT0 ; Force a pause between the 2 files<==INS
LD HL,WHATSF8 ; Point to second FOR file
CALL TYPE ; and display it
ENDIF ; FOR8
Then, below label TWAIT: add the label TWAIT0: as shown:
TWAIT: LD A,(CNTN) ; Doing continuous read?
OR A
JR NZ,ABORT ; Yes, so skip screen full test
TWAIT0: LD A,(FBYTE) ; Get user's flag byte <==ADD LABEL
BIT MORBIT,A ; Are [more] pauses on?
JR NZ,ABORT ; If no, go check for abort
LD A,(TLINES) ; Else, get number of lines to go
Some sysops are encountering problems with the ZMD file
transfer program. It appears that certain versions of this
program will insert unwanted nulls (0's) into the ZMD.LOG (or
KMD.LOG) file. When a user attempts to read this log via the [N]
command, the resulting screen can be rather messy. The following
patch should eliminate this screen problem. Near the label
ONEMOR:, insert the following line as shown:
ONEMOR: LD A,(HL) ; Get character
AND 7FH ; Strip any high bits
JR Z,NXTONE ; If null, dump it <== INSERT
CP LF ; Else, check for eol - LF is the marker
JR Z,CHCK ; that we will use to determine each line
CP 7FH
JR Z,NXTONE
The next patch solves a compile problem that occurs if you
attempt to compile PBBS 5.0 with the NMFLDRS EQUate set to 1.
Make the following changes at label TDNTD0:
TDNTD0: ; <== INSERT LABEL
IF NMFLDRS GT 1
;;TDNTD0:LD A,(MFLDR) ; Else, see if user is <== DELETE LABEL
LD A,(MFLDR) ; Else, see if user is
OR A ; reading the 'GLOBAL' folder
When a user has set his profile so that hotkeys are not
used, some of the yes/no responses are printed incorrectly. To
correct this, make the following changes near label PRYES:
PRYES: LD HL,YESMSG ; Point to 'Yes'
JP M,PRYES1 ; If coming from default <==INSERT
LD A,(FBYTE) ; Else, get the user's flag byte
BIT HOTBIT,A ; and test the hotkey flag
JR Z,PRYES1 ; If hotkeys on, must print 'Y'
INC HL ; Else, 'Y' already printed
PRYES1: CALL PRINTM
XOR A ; Clear zero
INC A ; Set plus
RET
PRNO: LD HL,NOMSG
JP M,PRNO1 ; If coming from default <==INSERT
LD A,(FBYTE) ; Else get the user's flag byte
BIT HOTBIT,A ; and test the hotkey flag
JR Z,PRNO1 ; If hotkeys on, must print 'N'
INC HL ; Else, 'N' already printed
NOTE: The above two changes should also be made at the same
labels in PMSG50.MAC.
The last patch involves two problems with threading. The
release version of PBBS 5.0 would allow the system to go into an
endless loop searching for threads under certain circumstances
and also would hang the system completely if a thread was
attempted while reading your 'new PRIVATE mail' from the question
asked during login! This patch fixes both of these problems.
Since this patch is rather more complex than the previous ones,
it is recommended that all code between labels RTHD: and CORTHD:
be deleted and that the following code fragment be extracted from
this document and inserted into the PBBS50.MAC file.
IF MSGTHD
RTHD: LD HL,MRLNK ; Set up for reverse link
LD (TNEW1+1),HL ; Insert it into code
LD HL,(MRLNK) ; Get reverse link
JR THD
FTHD: LD HL,MFLNK ; Set up for forward link
LD (TNEW1+1),HL ; Insert it into code
LD HL,(MFLNK) ; Get reverse link
THD: PUSH HL ; Save message number on stack
CALL MIOPEN ; Open message index file
POP HL ; Restore message number
NTHD: LD A,L ; Is the link=0?
OR H
JR NZ,TNEW ; If not, go display the header
LD HL,(LSTMSG) ; Else, restore last message displayed number
TNEW: CALL GETRC ; Convert msg # to message index rec #
JR C,CORTHD ; If exact match not found, tell us
LD HL,(RRNO1) ; Else, get message index rec #
CALL GET ; Get message index record
LD A,(ACESS) ; Get user's access level
CP COSYS ; Is user a SYSOP?
JP NC,RDMS3 ; If yes, they can read anything
LD A,(PFLAG) ; Else, threading is just like reading
LD (TMPFLG),A ; public, so save the 'public read'
LD A,1 ; flag and set it
LD (PFLAG),A ; for this test
CALL TDONTD ; Go see if user can read this one
PUSH AF ; Save flags
LD A,(TMPFLG) ; Restore the 'public read' flag
LD (PFLAG),A ; to its original state
POP AF ; and restore flags
JP Z,RDMS3 ; If user may see this one, go read it
TNEW1: LD HL,(MFLNK) ; Else, get next link
JR NTHD ; and go check it out
CORTHD: CALL CORMSG ; Print corrupt thread message
This completes the changes for PBBS50.MAC.
PMNT50.MAC
There is a small problem with the 'G)oto' command in PMNT50.
The following patches will correct this problem. Near the label
MGOTO:, make the following changes:
MGOTO: CALL PRINT
;; DB 'oto',LF ; <=== DELETE THIS LINE
DB 'oto',LF,0 ; <=== INSERT THIS LINE
MGOTO1: CALL PRINT ; <=== INSERT THIS LINE
DB CR,LF,'Message number to go to (1-',0
LD HL,(IMNXT) ; Next message number
DEC HL
CALL PB2ASC
CALL PRINT
DB '): ',0
LD B,5
XOR A ; Set echo
LD C,A
LD D,A
CALL INPUT ; Returns 0 if nothing entered
;; JP Z,ENDNUM ; Nothing entered so quit <== DELETE
JP Z,MLOP1 ; Nothing entered so quit <== ADD
Then, below label GN1:, make the following changes:
GN1: CALL PRINT ; Else, tell him about it
DB CR,LF,'Enter message number only.',CR,LF,0
;; JR MGOTO ; <=== DELETE THIS LINE
JR MGOTO1 ; <=== INSERT THIS LINE
Finally, near label ENDNUM:, make the changes shown below:
;;ENDNUM:JP MGOTO ; <=== DELETE THIS LINE
NANY: CALL PRINT
DB CR,LF,'Not a valid message number',0
;; JP MGOTO ; <=== DELETE THIS LINE
JP MGOTO1 ; <=== INSERT THIS LINE
There is also a problem with the private/public toggle in
the message maintenance routines. Near the label TPP:, make the
following changes:
TPP: CALL PRINT
DB 'oggle',0
LD A,(MPUBF)
;; XOR 0FFH ; <== DELETE THIS LINE
AND 01 ; <== INSERT THIS LINE
XOR 01 ; <== INSERT THIS LINE
LD (MPUBF),A
LD HL,(RRNO1)
CALL PUT
JP MLOP1
This completes the changes for PMNT50.MAC.
PMSG50.MAC
This is a minor problem when trying to abort a message in
PMSG 5.0. This can be corrected as follows. Below label
EXITCR:, make the following changes:
EXITCR: PUSH BC ; Save buffer length for later handling
PUSH IX ; Save address for later handling
LD IX,(MSG)
INC IX
LD A,(IX)
OR A
;; JP Z,ABXIT ; <=== DELETE THIS LINE
JP Z,ABXIT0 ; <=== INSERT THIS LINE
Then, near label ABXIT, as follows:
ABXIT: CALL PRINT
DB 'bort',0
;; LD A,(MODE) ; <=== DELETE THIS LINE
ABXIT0: LD A,(MODE) ; <=== INSERT THIS LINE
OR A
JR Z,PMSGEX
CALL PRINT
This completes the changes to PMSG50.MAC.
Ian Cottrell
December 10/90