home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.wwiv.com
/
ftp.wwiv.com.zip
/
ftp.wwiv.com
/
pub
/
MISC
/
GAPQBDR.ZIP
/
WHATSNEW.TXT
< prev
Wrap
Text File
|
1994-01-05
|
19KB
|
486 lines
08/15/94
GAPQBDR now supports the Fossil Interface. This interface requires
that a Fossil Device driver be loaded. We recommend X00.SYS.
In order to utilize the Fossil Interface, your users must add the
following to Line 5 of the Door Configuration file:
FOSSIL
For example:
DOOR.CNF
----------------------
C:\GAP
The Crow's Nest BBS
4
03F8
FOSSIL <- tells GAPQBDR to use the Fossil Interface
D000
320
4
If you've modified the source code, you should study the changes
that were made in INITDOOR.BAS. Specifically, the functions 'read.cnf'
and 'init.door'. Take note of where and how in sets the variable
'interface' (it is set to 3 when using the Fossil Interface) and
how the Fossil port is initialized.
The following Fossil specific functions have been added:
DECLARE FUNCTION fos.setport% ALIAS "FOS_SETPORT" (port%)
' Used to tell Fossil driver we want to use the specified Port
' MUST BE CALLED prior to using any Communications routine (if using
' the Fossil Interface).
' port = COM Port # (0 based, COM 1 = 0, COM 2 = 1, etc)
' Return 0 = success
' 1 = Device Driver Not installed
DECLARE SUB fos.resetport ALIAS "FOS_RESETPORT" ()
' Tells the Fossil Driver we are finished with the port.
DECLARE FUNCTION fos.initport% ALIAS "FOS_INITPORT" (baud&, parity%, d.ata%, s.top%)
' Initializes the Fossil port
' baud = baudrate (long)
' parity = 0 = None, 1 = Odd, 2 = Even
' data = 6, 7, or 8
' stop = 1 or 2
' Return 0 = success
' 1 = bad parameter passed
DECLARE SUB fos.clrtx ALIAS "FOS_CLRTX" ()
' Clears the Fossil port's Transmit Buffer
Note that Fossil Ports are 0 based where COM 1 = Port 0, COM 2 = Port 1,
etc.
04/24/93
GAPQBDR now supports the DigiBoard COM/Xi series of Intelligent
Serial Communications boards. These boards contain 4 or 8 serial
ports along with their own on-board processor to control the ports.
These boards are actually a single-board computer dedicated to handling
serial port I/O.
By moving the serial I/O functions from the Host Computer to the
DigiBoard, the IRQ and Interrupt Latency bottleneck that plagues
Multi-Tasking users is eliminated.
GAPQBDR supports the DigiBoard in two ways:
Direct Programming and INT14/EBIOS calls.
Direct Programming is the fastest because it eliminates the need
for costly software interrupt calls to a slower BIOS. In addition
it does not require the presence of a Device Driver which basically
performs the same functions as the Direct Programming method.
INT14/EBIOS requires that a Device Driver be loaded (this driver
is supplied by DigiBoard). Serial Port I/O is performed by issuing
software interrupts (Interrupt 14).
Whether or not to use the Direct Interface or the INT14/EBIOS
Interface depends on the BBS which will be running the GAPQBDR
program. If the BBS is utilizing the Device Driver, then that is
how a GAPQBDR program must be configured. If the BBS is a GAP system
and the Sysop is using the Direct Interface, then the GAPQBDR program
must be configred the same.
The two interfaces can not be intermixed since the Direct Interface will
essentially put the Device Driver to sleep.
When using the INT14/EBIOS interface and the DigiBoard supplied Device
Driver, it is not necessary to turn on the "Character Waiting" flags
for each of the ports. GAPQBDR does not use these flags as they basically
defeat the purpose of using a multi-port board in a multi-tasking
system. To use these flags an IRQ must be dedicated to the DigiBoard.
If the flags are not used, the IRQ need not be set.
Imagine running 8 ports under a Multi-Tasker where all 8 ports
are in use. As characters are received by each of the 8 ports, an
interrupt is generated. The Device Driver must service the
interrupt request and since the driver runs on the Host Computer,
it will be spending a lot of precious time figuring out which of
the ports generated the interrupt and updating its "Character
Waiting" flag for that port.
By disabling the "Character Waiting" flags and not utilizing the
IRQ, the Host Computer will not know it has 8 serial ports running
at high speed at the same time.
If, however, the Sysop has the IRQ and Character Waiting flags enabled,
no harm is done. GAPQBDR simply will not utilize the flags.
The Character Waiting flags are provided because making Interrupt
14 calls takes longer than simply checking a memory address (which,
by the way, is what the Direct Programming interface does).
To use a DigiBoard with a GAPQBDR program, 4 additional lines have been
added to the Door Configuration file. These 4 new options are:
Line 5 - The COM Port Interface to use:
STANDARD = Regular Communications Port Interface. This
is what you would normally use.
DIGIBOARD = Direct DigiBoard Programming Interface. Must
be used in conjunction with a program called
RESETDIG.EXE. If you don't have this program
but have a DigiBoard, then use the following
option.
INT14/EBIOS = Indirect DigiBoard Support via a Device Driver.
All Communications to the DigiBoard (or any
board that supports INT14/EBIOS) are performed
via a Software Interrupt that the Device Driver
handles.
Line 6 - This is the DigiBoard Memory Window, or the address the
card uses as a communications area between the card and
the Host Computer. Only needed if using an Interface set
to DIGIBOARD. If using STANDARD or INT14/EBIOS, this can
be set to 0. This address must be entered in Hexadecimal.
Valid entries are: C000, C800, D000, and D800
Line 7 - This is the DigiBoard I/O Port address that the Board is
attached to. Only needed if using an Interface set to
DIGIBOARD. If using STANDARD or INT14/EBIOS, can be set
to 0. This address must be entered in Hexadecimal.
Valid entries are: 100, 110, 120, 200, 220, 300 and 320
Line 8 - This is the DigiBoard Channel Number for the port this
program will be utilizing. This is REQUIRED for DIGIBOARD
and INT14/EBIOS Interfaces. This is 1 - 8 for the
DIGIBOARD Interface and usually 4 - 11 for the INT14/EBIOS
Interface. This number tells the program which of the
Com Ports on the DigiBoard it should use.
The new configuration file for a GAPQBDR that will be using a DigiBoard
Serial port would look like the following:
DOOR.CNF
----------------------
C:\GAP
The Crow's Nest BBS
4
03F8
INT14/EBIOS
D000
320
4
Lines 3 and 4 are ignored by the program and can be set to 0.
Because this is an INT14/EBIOS interface, lines 6 and 7 are also
ignored. Line 8 is the Channel Number and in this case, it is the
first serial port on the DigiBoard (Channel Numbers 1 - 4 are
generally reserved for COM 1 - COM 4 on the Host Computer, although
this is up to the Sysop and how he/she configured the Device Driver).
To use the Direct Programming Interface, the configuration file
would look something like:
DOOR.CNF
----------------------
C:\GAP
The Crow's Nest BBS
4
03F8
DIGIBOARD
D000
320
1
Lines 3 and 4 are ignored by the program and can be set to 0.
Line 6 is the Memory Window that the DigiBoard and the program
use to communicate with each other. Line 7 is the I/O port that
the board uses. Line 8 is the Channel Number which, in this case,
is the first serial port on the DigiBoard.
To use the Standard Com Port Interface, the configuration file
would look something like:
DOOR.CNF
----------------------
C:\GAP
The Crow's Nest BBS
4
03F8
STANDARD
0
0
0
Lines 3 and 4 are used ONLY if the program will be using a COM port
other than COM 1 or COM 2. They can be set to 0 if the program will
not be using non-standard COM ports. Line 5 tells the program to
use its own internal interrupt handler. Lines 6-8 are not used and
can be set to 0.
Note that even if the DigiBoard specific options are not used or needed
they must still be present in the Configration File and all Door Specific
options now begin on Line 9.
07/25/92
Note, with this release of GAPQBDR, you MUST change your Door
Configuration files such that you remove line 3 (the PCB flag).
This line is no longer needed since PCB is capable of writing
a DOOR.SYS file.
Your configuration files will now have 4 required lines:
Path to BBS Directory
Name of the BBS
IRQ
Base Address
The 'do.pcb' flag has been removed. GAPQBDR will work with any
BBS system that writes a correct DOOR.SYS file. This includes GAP,
WildCat, and PCB.
05/23/91
Turned on the routines that allow for ports other than
COM 1 and 2.
This requires a change to your Door configuration file.
Lines 4 and 5 of the CNF file are now reserved for use
by GAPQBDR. If your door programs are using these lines
for their own use, you must now begin your own configuration
options on line 6.
Line 4 of the configuration file is the IRQ for the port.
Line 5 of the configuration file is the Base Address for the port.
If the user is using COM 1 or COM 2, then they may enter
a zero (0) on both of these lines, as the default port
assignments are always used for COM 1 and COM 2.
The IRQ (line 4) must be in the range of 1 - 7.
The Base Address (line 5) must be a Hexadecimal number in the
format of:
02E8
03E8
etc.
A sample configuration file is included.
If you are using modified GAPQBDR source code, the two routines
that were changed are read.cnf and init.door (contained in
INITDOOR.BAS).
12/02/90
Modified the COM routines so that all local data is contained
in the Code Segment of the GAPCOM module instead of the
default Data Segment.
This will eliminate the problem some programmers were having
with their doors in that the door could only be run once (under
DesqView). On any subsequent runs, all incomming data from the
remote caller was being vectored to some unknown interrupt handler,
instead of GAPQBDR's own handler.
Hopefully, this will also eliminate the lock up problems some
were having when their door exits back to the BBS system.
12/01/90
Modified the timecredit variable so that it is no longer
initialized with the timecredits as written to DOOR.SYS.
When writing DOOR.SYS, GAP writes the actual time
remaining and this time includes any timecredits the caller
may have. However, when figuring time left, GAPQBDR takes
into consideration the time credits, so if a caller had
10 minutes left and -10 time credits (in GAP), the door
program would log the caller off for lack of time.
You may still use the timecredit variable as before, however
if you intend to update DOOR.SYS with any timecredits given
or taken away from the caller, you must add your timecredits
to a new variable called
realcredit
before updating DOOR.SYS.
Realcredit contains the actual BBS timecredits. It is not used
in figuring time left for a caller while in the door, since
the BBS program is supposed to write the actual time left to
DOOR.SYS.
07/08/90
GAPQBDR has been updated so that it now reads the new fields
in DOOR.SYS. In addition, in a PCB system, the 3 files,
PCBOARD.DAT, PCBOARD.SYS, and USERS are no longer read.
Instead, GAPQBDR will read the DOOR.SYS file that PCB now
writes to obtain the information required to operate.
The following variables have been declared and are available
for use. These variables are read from some of the new fields
in DOOR.SYS:
COMMON SHARED dflt.color AS INTEGER ' BBS default color
COMMON SHARED maxfiles AS INTEGER ' Max files available
COMMON SHARED curfiles AS INTEGER ' Current files downloaded
COMMON SHARED doors.open AS LONG ' Total doors opened
COMMON SHARED mesleft AS LONG ' Total messages left
COMMON SHARED downbytes AS LONG; ' total download bytes
COMMON SHARED handle AS STRING ' caller's Handle
COMMON SHARED event.time AS STRING ' event run time
COMMON SHARED last.new AS STRING ' last new files scan
GAPQBDR is now compatible with BASIC 7. This required but a very
minor change to one of the functions. However, it was a frustating
time, to say the least. In our 'C' programming, we use the
Alternate Math Library as this results in a 10k decrease in CODE
size. So, we set out to install BASIC 7 using the Alternate Math
Library. To utilize this library, you compile your modules using
the /FPa switch. Everything compiles just fine, but when trying
to create the GAPQBDR Quick Library, the Linker complains of
"unresolved external references". After many frustrating hours, we
decided to install BASIC 7 with the Emulator Library (the
default). This Math Library works just fine and so we will just
leave it at that and not attempt to waste any more time trying
to determine why the Alternate Math Library does not work.
There are two ZIP files contained within GAPQBDR that contain the
actual LIB and QLB files. One is for BASIC 7 (or QBX) and the
other is for QB 4.5.
NOTE (09/02/90):
The Quick Library for BASIC 7 has been removed from GAPQBDR.
It seems that the only way to create a 'workable' QLB for
QBX is to use /Fs (far strings). This will create a GAPQBDR.QLB
that QBX can load, but your programs will not work correctly.
GAPQBDR was not written to take advantage of any so called
"features" of BASIC 7 (Far Strings being one of them), so if
you use BASIC 7, you will need to do your compiling using BC.
12/16/89
Updated the GAPDOS record structure to be compatible with the
current version of GAP.
Fixed a problem with dropped carriers and PCB.
10/01/89
Changes to your source file:
If you called previously undocumented GAPQBDR routines,
you will need to include GAPQBSRC.BI right after GAPQBDR.BI.
Previously undocumented functions are now fully referenced
in the printed manual. GAPQBSRC.BI contains the function
declarations for these routines as well as declarations
for the private variables. If you receive a "Sub Program
Not Defined" or an unresolved external reference, you
probably need to include GAPQBSRC.BI.
The error handler is now part of your source modules. It
is in GAPQBERR.BI and MUST be included AFTER any declarations
but BEFORE any basic statments.
' $INCLUDE: 'gapqberr.bi'
In other words, it is in included after any variable
declarations and before any executible statments. Note
that A$ = "This is a sting" is a statment and not a variable
declaration.
Because the error handler is now a part of your program, you must
use the /x switch when compiling your source module.
Please refer to the EXAMPLE.BAS program for more information
as to how the error handler is included in your programs.
A number of new routines were added to this release. These new
functions (as well as descriptions of previously undocumented
routines) are fully referenced in the printed manual.
This release of GAPQBDR requires that the GAP system be at
version 4.3 or higher. New fields were added to DOOR.SYS and
only GAP versions at or above 4.3 are able to write them.
Your previously compiled doors will continue to operate
normally. This change affects only newly compiled programs.
If you licensed the source code, there is additional information
contained within SRCREAD.ME. In addition, you will find that
the source modules were broken up into smaller pieces and that
most of the private routines are now provided.
08/28/89
GAPQBDR now utilizes all new communications routines. It is no
longer dependant upon QB to handle communications I/O. What
this means to you, the programmer, is that you no longer need
worry about your end users having a DTR patched version of
BRUN45.EXE. In addition, those "device time out" and "bad file
number" errors QB gives us when it has problems with the COM
port are eliminated.
The communications routines are written in assembler for speed
and compactness. They are capable of handling any com port you
have set up, however we have limited them to COM 1 - COM 4. They
support speeds to 38.4k, and will automatically use the 16550
FIFO buffer if that chip is installed.
Because of these modifications, you will need to make changes to
your source code if you accessed the com port directly or
through file #9. The communications routines are documented in
the printed manual only.
It is of vital importance that you exit your door via the
leave function. Failure to do so will leave communications
interrupts active which will cause your computer to lock up at
some point.
The GAPQBDR environment variable is no longer used to specify
that the BBS is a PCB system. Instead, line 3 of the door
configuration file is used for this purpose. On line 3 of that
file, enter (or have your end users enter) a 1 if the BBS
is PCB, or 0 for a GAP system. The default is still GAP mode so
if anything other than a 1 is found on line 3 of the configuration
file, GAPQBDR will assume the BBS is GAP. Any options you may
need for a particular door will begin on line 4.