home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
GEMini Atari
/
GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso
/
zip
/
bbs
/
grunt140.lzh
/
IO
/
IO.DOC
next >
Wrap
Text File
|
1989-09-18
|
4KB
|
111 lines
*IO* V1.2 by Andy Inman June 1988
----------------------------------
What?
----
IO is a small resident program that works with DOORS programs under FoReM on
the ST, and makes it possible to run programs easily under DOORS, even if they
have not been specially written as Doors programs.
Why?
---
Some DOORS programs (such as Space Empire and Quiz) have been written
specifically for use on a BB. As such they:-
(a) Send output BOTH to the local screen AND the remote user (modem port)
(b) Accept input from EITHER the local keyboard OR the remote user.
(c) Check for a Carrier signal, and exit automatically if the user hangs up.
(d) Maybe, check the user's allowed time, and not allow him to exceed it.
It is possible to run a program that has NOT been specially written for DOORS
by using the " >aux <aux " method described in the FoReM manual, but this
simply re-directs all input/output to the modem, so you cannot see or control
what is happening on your local system. More importantly, if the user
hangs-up, the program will not exit, leaving the BB unavailable - only a
re-boot will fix that!
*IO* does the above a,b, and c, for ANY program, without any modification to
the program itself. (d is less important, though possible, so I haven't
bothered with it!)
How?
---
Run *IO* from the AUTO folder, and it installs itself in memory, and patches
the exception vector for BIOS calls. Thereafter it does nothing until you
ENABLE it.
*IO* is enabled by doing a bios(101) call, and disabled with bios(100).
When enabled, the neccessary i/o re-direction takes place, to BOTH the local
console AND the remote user. If the user hangs-up, *IO* detects the loss of
Carrier, and exits the program.
You will need to have a small 'shell' program to send the bios(100) and
bios(101) calls to enable/disable *IO* itself. The following is an example
in C (a simple example - you made need to do things like free up memory etc,
dependant on your compiler). Alternatively, ask me for a copy of my 'RUNDOOR'
program!
#include <osbind.h>
main()
{
bios(101) /* Enable re-direction */
Pexec(0, "ELIZA.TOS", "", "") /* Run ELIZA */
bios(100) /* Disable re-direction */
}
Obviously, it would be this shell program that you name in the FDOORS.DAT file.
So What's the Hitch?
-------------------
*IO* appears to be incompatible with COPYFIX.PRG (or vice versa) so don't try
to have them both resident. I guess it MAY also give problems with other
routines which patch the bios vectors. However, *IO* does not uses hard-coded
vectors, or System locations, so it should be compatible with most things!!
UPDATES
=======
V1.1
----
*IO* V1.0 had a slight bug in that loss of carrier did not always cause the
program to exit. V1.1 fixes that.
V1.2
----
This version will exit MULTIPLE program levels if the user drops carrier (V1.1
would only exit ONE program). I, for example, use *IO* to run PCommand as a
Doors program (for Sysop use only!) From PCommand, I can run, say, SYSGEN.
Dropping carrier at this point means both Sysgen AND Pcommand must exit to get
back to Forem. I have tested this by running multiple copies of Pcommand from
within itself, and exiting through FIVE+ levels works fine!!
Other programs that are useful to run in this way are ARC, Emacs (or other
TOS-based editor), LinkComp, etc.
Future
------
A future version of *IO* will do input timeout (abort the program if the user
doesn't type anything after, say, a minute or so), and check the users allowed
on-line time, and exit the program if he exceeds it.
The End
-------
That's it!! It would be NICE if, in return for this little program, you would
give me a copy of a suitable game to run!!
If you want to see *IO* in action, give Scary MonSTer BBS a call!!
- Andy Inman - 21 June '88 - Scary MonSTer BBS - 0734 320297 - Fnet node #1003 -