[comp.lang.pascal] Multi-user BBS programmed with Turbo Pascal 5.5

TBC101@PSUVM.BITNET (Thomas B. Collins, Jr.) (09/26/89)

I am seriously considering writing a BBS.  I'll probably be writing it
with Turbo Pascal 5.5 since I don't know C...  I'd like to be able to
make it multi-user, and was wondering what I need to do as I
plan/program in order to allow for this.  The only idea I've had so far
is to write it so that it will run under something like Desqview and
then a multiple copies of it for each 'Node' of the BBS.

filbo@gorn.santa-cruz.ca.us (Bela Lubkin) (09/26/89)

In article <89268.185440TBC101@PSUVM.BITNET> Thomas B. Collins, Jr. writes:
>I am seriously considering writing a BBS.  I'll probably be writing it
>with Turbo Pascal 5.5 since I don't know C...  I'd like to be able to
>make it multi-user, and was wondering what I need to do as I
>plan/program in order to allow for this.  The only idea I've had so far
>is to write it so that it will run under something like Desqview and
>then a multiple copies of it for each 'Node' of the BBS.

My former housemate has been running such a system for 3 years.  It started
out in Turbo 3.0, went through Turbo Extender, 4.0, 5.0, and is now running
under 5.5.  It also started on Victor 9000 hardware and stayed that way
until recently -- it was running 4 dialup users and the console on a 5MHz
8088.  Then Jon bought a '386 for development and "retired" his true-blue AT
to BBS service.  It is now running 4 1200 dialups, console, and up to 4 4800
hardwire lines on an 8MHz 286.

This program multitasks internally; I think of it as an entire multiuser
operating system written in Turbo Pascal.  The only thing it uses MS-DOS for
is disk access, and then only as sort of a "device driver" -- he has his own
file system inside a large DOS file.

So yes, this can be done.  There are lots of issues.  Writing a multitasking
kernel is one of the simplest issues, so there probably isn't a lot of point
to burdening yourself with a 3rd-party multitasker unless it has some other
significant benefits.

BTW, the system in question is called XBBS (and is COMPLETELY distinct from
the Xenix package of the same name) and is in my signature.  The author/Sysop
is Jon Shemitz.  If you call his BBS and either post a message or send him a
"Hail", he may have some ideas for you.

Bela Lubkin     * *   filbo@gorn.santa-cruz.ca.us   CIS: 73047,1112
     @        * *     ...ucbvax!ucscc!gorn!filbo    ^^^  REALLY slow [months]
R Pentomino     *     Filbo @ Pyrzqxgl (408) 476-4633 & XBBS (408) 476-4945

wcf@psuhcx.psu.edu (Bill Fenner) (09/27/89)

In article <89268.185440TBC101@PSUVM.BITNET> TBC101@PSUVM.BITNET (Thomas B. Collins, Jr.) writes:
|I am seriously considering writing a BBS.  I'll probably be writing it
|with Turbo Pascal 5.5 since I don't know C...  I'd like to be able to
|make it multi-user, and was wondering what I need to do as I
|plan/program in order to allow for this.  The only idea I've had so far
|is to write it so that it will run under something like Desqview and
|then a multiple copies of it for each 'Node' of the BBS.

You could either do that, or write a multi-tasking kernel, which services
I/O and other requests... then you can have one program running, no
need for Desqview or any other multitasker... unfortunately, writing a
multi-tasking kernel is a bear, and I certainly wouldn't want to try it.
:-)  So your best bet is probably to use a multi-tasker, run multiple copies
of the program, and use *good* *un-limiting* locks on your files... pref.
record-locking if you can figure out how...

Make sure you kill all the locks when you reboot (I had a lot of troubles
with this one time... a file was locked, I rebooted, and it was still locked
so the board would hang waiting to read it... ugh.) ("the board" there refers
to Lynx, which I was evaluating.  Didn't choose it.)

  Bill
-- 
   Bitnet: wcf@psuhcx.bitnet     Bill Fenner       | aaaaaaaaa
  Internet: wcf@hcx.psu.edu                        |            r
 UUCP: {gatech,rutgers}!psuvax1!psuhcx!wcf         |              g
Fido: Sysop at 1:129/87 (814/238 9633) \hogbbs!wcf |               h

madd@bu-cs.BU.EDU (Jim Frost) (09/29/89)

In article <1672@psuhcx.psu.edu> wcf@psuhcx.psu.edu (Bill Fenner) writes:
|unfortunately, writing a
|multi-tasking kernel is a bear, and I certainly wouldn't want to try it.

Actually writing one is pretty easy so long as you don't have to write
the whole thing in assembler.  If you stick to writing a
message-passing kernel and implement just about everything else as a
user process, it's pretty trivial; the kernel portion will be only a
few k on 80x86 hardware.  For a good example, see "MINIX:  Operating
Systems Design And Implementation" by Andrew Tanenbaum.  He
implemented a V7 UNIX interface on a message-passing kernel.
Something simpler would be much less work.

Happy hacking,

jim frost
madd@std.com

TBC101@PSUVM.BITNET (Thomas B. Collins, Jr.) (09/29/89)

In article <89268.185440TBC101@PSUVM.BITNET>, Thomas B. Collins, Jr.
<TBC101@PSUVM.BITNET> says:
>
>I am seriously considering writing a BBS.  I'll probably be writing it
>with Turbo Pascal 5.5 since I don't know C...  I'd like to be able to
>make it multi-user, and was wondering what I need to do as I
>plan/program in order to allow for this.  The only idea I've had so far
>is to write it so that it will run under something like Desqview and
>then a multiple copies of it for each 'Node' of the BBS.
>
>
I've since realized that I'm going to have to use interrupt or event
driven programming.  This shouldn't be too difficult since I have input
and output buffers for the modems and the keyboard.  It just that
breaking everything down into little pieces seems like such a hassle...
I already have one example of how to break down the board into little
pieces, but I'm still interested in any ideas or comments that you have
on the subject.

-------
Tom "Shark" Collins       Since ICS is comprised of 2 people, my views
tbc101@psuvm.psu.edu      are the opinion of at least 50% of the company.

mag2@csd4.csd.uwm.edu (Michael A Gorski) (10/05/89)

In article <89268.185440TBC101@PSUVM.BITNET> TBC101@PSUVM.BITNET (Thomas B. Collins, Jr.) writes:
>I am seriously considering writing a BBS.  I'll probably be writing it
>with Turbo Pascal 5.5 since I don't know C...  I'd like to be able to
>make it multi-user.

There is a multi-user BBS written in Turbo Pascal and it has internodal
chats.

It's called RyBBS by Greg Ryan.  The single user version is shareware
and if you register you get the multi-user version. The single user
version is on Simtel20 (an older version) or you can call:

Greg's RyBBS HomeBase  (414) 962-1097

For the newest version.

My point is, it is possible.

Mike