The following marked 'PE QB45 FIX are changes I made to solve a COMM port
problem I was having when running the Maple version of RBBS 17C
It appears to me that QB 45 closes the Comm Port on a Shell to a different
program...If the program that you shell to does NOT access the Com port 
when you return to rbbs you will find the local screen works correctly
but the user on the other end can do nothing to make the BBS work other then
drop carrier....what appears to be happening is the COM port never gets opened
after the SHELL and RBBS will recieve NO input from the Comm port.

These changes are in the process of being tested and I don't know if there
are any other un seen problems using QB45.. if you have access to a patched
version of QB3.0 I recommend using it since none of the above problems
ever occured using QB3.0...If you must use QB45 and are having problems
try these changes and see if it solves at least this problem

    Pete Eibl < Maple Street BBS 1-414-771-2805 PCP Node WIMIL >


Changes to RBBSSUB1.BAS..............

'
' $SUBTITLE: 'VIEWTXT - Subroutine to display ASCII file from ARC file'
' $PAGE
'
  SUB VIEWTXT STATIC
  ON ERROR GOTO 65000
60148 SUBROUTINE.PARAMETER = 1
      A$ = "Would you like to view an ASCII file from this ARC (Y/[N])"
TURBo.KEY = -TURBO.KEY.USER
      CALL TGET
IF SUBROUTINE.PARAMETER = -1 THEN_   'Pe 11/29/88
   EXIT SUB                          'Pe 11/29/88
       IF NOT YES THEN _
       EXIT SUB 
60149  A$ = "What file(s) to view, [ENTER] quits"                       'DMOD1
     CALL TGET
       B = 1                                                            'DMOD1
       IF Q = 0 THEN _                                                  'DMOD1
          EXIT SUB                                                      'DMOD1
       LAST.ARC = Q                                                     'DMOD1
       FIRST.ARC = B                                                    'DMOD1
       FOR ARC.INDEX = FIRST.ARC TO LAST.ARC                            'DMOD1
 Z$ = B$(ARC.INDEX)                                                     'DMOD1
      CALL ALLCAPS (Z$)  
      CALL PETER2                                                       'PEMOD1
     IF OK = FALSE THEN 60149                                           'PEMOD1
      CALL BRKFNAME (Z$,DRV$,PREFIX$,EXT$,FALSE)                        'DMOD1
 IF EXT$ = "ARC" OR EXT$ = "COM" OR EXT$ = "EXE" OR EXT$ = "BAS" OR _   'DMOD1
         EXT$ = "BIN" OR EXT$ = "LIB" OR EXT$ = "OBJ" OR EXT$ = "PIC" THEN _ 
         CALL QTPUT ("Sorry, only ASCII files can be viewed",1) :_      'DMOD1
         GOTO 60149                                                     'DMOD1
      CALL QTPUT ("Please stand by while I extract that file....",1)    'DMOD1
' make mods here for ARC A program ******
 IF MID$(LIBRARY.ARCHIVE.PROGRAM$,1,2) ="PK" THEN _
      SHOWME$ = "PKXARC -R " + FILE.NAME$ + " " + Z$ + " "+ARKVIEW.PATH$
 IF MID$(LIBRARY.ARCHIVE.PROGRAM$,1,2) ="AR" THEN _
      SHOWME$ = "ARCE " + FILE.NAME$ + " " + Z$ + " "+ARKVIEW.PATH$ + " /R"
      SHELL SHOWME$                                                     'PEMOD1
PRIVATE.DOOR = TRUE       'PE QB45 FIX
CALL XFRETURN             'PE QB45 FIX
PRIVATE.DOOR = FALSE      'PE QB45 FIX
      Z$ = ARKVIEW.PATH$ +"\"+ Z$     'Added \ to fix error 63
      TEMP$ = Z$    
'
      CALL BUFFILE (Z$,X)                                             'PEMOD2
        IF NOT OK THEN _
         CALL QTPUT(CHR$(7)+"File NOT found or bad Spelling",1) :_
        GOTO 60149
      CALL KILLWORK(TEMP$)   'get rid of the files that were xtracted   PEMOD1
       NEXT                                                             'DMOD1
60152 END SUB
'
'*******************************
'*  Subroutine for Viewarc txt *
'*******************************
' SUBTITLE: 'PETER2
' $PAGE
  SUB PETER2 STATIC
  OK = TRUE
  IF INSTR(Z$,"*") OR INSTR(Z$,"?") THEN _
  OK = FALSE : _
  CALL QTPUT ("Sorry Widcars NOT allowed !!",1)
   END SUB
'******************** INSERTED DLVIEWARC HERE ******************
'
' $SUBTITLE: 'DLVIEWARC - Subroutine to  DL a file from ARC file'
' $PAGE
'
  SUB DLVIEWARC STATIC
  ON ERROR GOTO 65000
60168 DLARC = 0
      SUBROUTINE.PARAMETER = 1
      CALL SKIPLINE (1)
      A$ = "Would you like to DOWNLOAD a file from this ARC (Y/[N])"  'DMOD1
      TURBO.KEY = -TURBO.KEY.USER
      CALL TGET
IF SUBROUTINE.PARAMETER = -1 THEN _     'Pe 11/29/88
   EXIT SUB                             'Pe 11/29/88
       IF NOT YES THEN _
       EXIT SUB 
60169  DLARC=1
  CALL QTPUT(FG.4$+FILE.NAME.HOLD$ +FG.2$+ " Contains the following Files"+EMPHASIZE.OFF$,1)
   CALL VIEWARC
   SUBROUTINE.PARAMETER = 1
   CALL SKIPLINE (1)
   A$ = "What file(s) to download, [ENTER] quits"+EMPHASIZE.OFF$ 
    CALL TGET
IF SUBROUTINE.PARAMETER = -1 THEN _      'Pe 11/29/88
   EXIT SUB                              'Pe 11/29/88
      B = 1                                                            'DMOD1
      IF Q = 0 THEN _                                                  'DMOD1
       EXIT SUB                                                        'DMOD1
       LAST.ARC = Q                                                    'DMOD1
       FIRST.ARC = B                                                   'DMOD1
       FOR ARC.INDEX = FIRST.ARC TO LAST.ARC                           'DMOD1
  Z$ = B$(ARC.INDEX)                                                   'DMOD1
     CALL ALLCAPS (Z$)  
     CALL PETER2                                                       'PEMOD1
     IF OK = FALSE THEN 60169                                          'PEMOD1
     CALL BRKFNAME (Z$,DRV$,PREFIX$,EXT$,FALSE)                        'DMOD1
     CALL QTPUT ("Please stand by while I extract that file....",1)    'DMOD1
 IF MID$(LIBRARY.ARCHIVE.PROGRAM$,1,2) ="PK" THEN _
      SHOWME$ = "PKXARC -R " + FILE.NAME$ + " " + Z$ + " "+ARKVIEW.PATH$
 IF MID$(LIBRARY.ARCHIVE.PROGRAM$,1,2) ="AR" THEN _
      SHOWME$ = "ARCE " + FILE.NAME$ + " " + Z$ + " "+ARKVIEW.PATH$+" /R"
     SHELL SHOWME$
PRIVATE.DOOR = TRUE       'PE QB45 FIX
CALL XFRETURN             'PE QB45 FIX
PRIVATE.DOOR = FALSE      'PE QB45 FIX
     IF DLARC = 1 THEN _
    CALL QTPUT(Z$+" Is now  Extracted ...",2)
NEXT ARC.INDEX
CALL QTPUT ("One Moment while I ARC the file for you........",1)
'
'********** ARC all files in the ARKVIEW.PATH$ into VIEWARC.ARC **********
'
 IF MID$(LIBRARY.ARCHIVE.PROGRAM$,1,2) ="PK"  THEN _
  SHELL "PKARC A " + ARKVIEW.PATH$ + "\VIEW.ARC " + ARKVIEW.PATH$ + "\*.*"
 IF MID$(LIBRARY.ARCHIVE.PROGRAM$,1,2) ="AR" THEN _
  SHELL "ARC A " + ARKVIEW.PATH$ + "\VIEW.ARC " + ARKVIEW.PATH$ + "\*.*"
'
'********** Deletes the files that were just ARCED into VIEWARC.ARC **********
'
  FOR ARC.INDEX = FIRST.ARC TO LAST.ARC
      Z$ = B$(ARC.INDEX)
      KILL ARKVIEW.PATH$ + "\" + Z$
  NEXT ARC.INDEX
' **** Check to see if ARC was successfull if NOT the Exit sub*****
PRIVATE.DOOR = TRUE   'PE QB45 FIX
CALL XFRETURN         'PE QB45 FIX
PRIVATE.DOOR = FALSE      'PE QB45 FIX
VIEW.FILE.NAME$ = ARKVIEW.PATH$ + "\VIEW.ARC"
CALL FINDIT (VIEW.FILE.NAME$)
IF NOT OK THEN _
EXIT SUB
'
'
'********** Tells the caller the name of the file to download **********
'
CALL QTPUT (CHR$(7)+"File has been ARCHIVED ...and named... VIEW.ARC....",2)
CALL QTPUT (CHR$(7)+"To Download this file You MUST enter VIEW.ARC as the file name",2)
CALL DELAYIT (5)
 60172 END SUB
'
'
' $SUBTITLE:  'VOTE   -- subroutine for voting'

'end of changes to RBBSSUB1.BAS
'
'
'
'RBBSSUB4.BAS ..........
'
'
'
62630 PARITY$ = MID$(",N,8,1,E,7,1",7 + 6 * EIGHT.BIT,6)
      IF LOCAL.USER THEN _
         GOTO 62631
      IF FOSSIL THEN _
         CALL SETBAUD _
      ELSE CALL OPENCOM(TALK.TO.MODEM.AT$,PARITY$)
      IF PRIVATE.DOOR THEN _
         CALL DELAYIT (7 + BPS) : _
         CALL QTPUT ("WAIT...............",0)   'PE QB45 FIX
62631 CALL SKIPLINE (2)
      LOCATE 24,1
62632 END SUB
'
' Skip to next ......
'
64510 CHAT.AVAILABLE = (INSTR("MUF",ACTIVE.MENU$) > 0)
      END SUB
' $SUBTITLE: 'VIEWARC - subroutine to display .ARC contents'
' $PAGE
'
'  SUBROUTINE NAME    --  VIEWARC  (Written by Jon Martin)
'
'  INPUT PARAMETERS   --  PARAMETER                   MEANING
'                         FILE.NAME$           NAME OF THE ARC FILE TO BE
'                                              VIEWED.
'
'  OUTPUT PARAMETERS  --  NONE
'
'  SUBROUTINE PURPOSE --  PROVIDES A MECHANISM TO PROVIDE USERS WITH THE
'                         CONTENTS OF AN ARC FILE PRIOR TO DOWNLOADING.
      SUB VIEWARC STATIC
 64600  CLOSE 2 
         IF TURBO.RBBS THEN _
          RETCODE% = 0
 ' ***** MODS to ARCVIEW to Allow ZOO / PAK / DCW files to be viewd ****
 FILNAME$ = "ARCVIEW.COM"
 CALL FINDIT (FILNAME$)
 IF NOT OK THEN _
  CALL QTPUT(" Missing Viewarc Utility...Please tell Sysop " ,1) : _
 EXIT SUB
 SHOWARC$ = "ARCVIEW.COM "+FILE.NAME$ + ">" + ARC.WORK$
 SHELL SHOWARC$
'
PRIVATE.DOOR = TRUE   'PE QB45 FIX
CALL XFRETURN         'PE QB45 FIX
PRIVATE.DOOR = FALSE      'PE QB45 FIX
'
 CALL BUFFILE (ARC.WORK$,X)
 EXIT SUB
' *** Code Below is orig RBBS 17C ***********
'64600  CLOSE 2
'        IF TURBO.RBBS THEN _
'         RETCODE% = 0 : _
'         CALL ARCV (ARC.WORK$,FILE.NAME$,RETCODE%) : _
'         CALL BUFFILE (ARC.WORK$,X) : _
'         EXIT SUB
'************ end of ASM routines for VIEWARC ****************
      IF SHARE.IT THEN _                                             ' KG102402
         OPEN FILE.NAME$ FOR RANDOM SHARED AS #2 LEN=1 _             ' KG102402
      ELSE OPEN "R",2,FILE.NAME$,1                                   ' KG102402
      FIELD 2,1 AS CHAR$
      BYTE.POINTER! = 1
      ARC.END! = LOF(2)
64605 IF BYTE.POINTER! > ARC.END! THEN _
'
'rest is the same.....
'
'End of QB45 Changes............

Pete Eibl
