[net.micro.pc] PC-dosDOS queries

ark@rabbit.UUCP (10/10/83)

I sure hope someone from Microsoft is reading this...


I'm using an IBM PC-XT with DOS 2.0, and I've got some questions:

1.  It appears that none of the routines in DOS or BIOS will let me
    do interrupt-driven I/O to the RS-232 serial port.  Instead, I
    must grab the interrupt vector and do it all myself.  I can see no
    other way of writing a program that does even something as simple
    as copying characters from the serial port to the screen, because
    sending out a character that causes a scroll can take more than one
    character time at 1200 baud so I lose data.  Suggestions?

2.  There's a lot of software out there that doesn't know about directories,
    and won't because it has to stay compatible with older operating systems.
    These programs include the Pascal compiler, the macro assembler,
    various editors, and so on.  Life would be much easier if I could say:

	MODE Q=C:\SYS

    thus inventing a fictional drive Q that the system would map to c:\sys
    for me.  A bit of a kludge, but so are most compatibility hacks.

3.  How do I change a volume label without reformatting the volume?

4.  Some programs, such as diskcopy, format, compare, automatically
    recycle when they are done. Format, for example, asks if I want to
    format something else.  I can understand why this would be important
    on a machine with only one floppy drive and no hard disk.  HOWEVER,
    I find it a nuisance on the XT.  A program should do exactly what I
    asked it to and then shut up.

5.  Several DOS programs seem to insist on a single file name only,
    even though that name can have wildcard characters.  For instance,
    I do not think I can say "ERASE X Y Z" and have three files vanish.
    Similarly, I would like to say 'FIND "FOO" A B C'

6.  Finally, the linker appears to be able to break open a structure
    called a "library".  How do I create such a thing myself?  How can
    I find out what's in one?

jph@whuxle.UUCP (10/14/83)

#R:rabbit:-204000:whuxle:4200001:000:1705
whuxle!jph    Oct 10 22:53:00 1983

I will try to answer a couple of your questions.

1. For a good example of an INTERRUPT driven routine for the RS232 port look
at the software that comes with the IBM Async Comm
Support package. In Version 1 it is called RS232INT.BAS
and in Version 2 it is RS232INT.EXE. These are
essentailly the same driver routines. They setup the
comm port for I/O and then handle all I/O on an
interrupt basis with a receive buffer of 2000 bytes and
an transmit buffer of 256 bytes. System calls are
provided to handle parity, word length, speed,
send/recv, buffer usage, etc. 

I have been using them on a terminal simulator with
lines running upto 4800 baud and have not dropped a
character yet. When the buffer gets about 200
characters, I send a ^S and when it get down to 50
characters, I send a ^Q. The programs were originally
written to interface with BASIC programs but are not
dependent upon that environment. I have interfaced them
to PASCAL.

By disassembling the program, you will find all the
'tricks of the trade' that actually make it work. I
would recommend this software if you are going to
interface with the RS232 port since it will save a lot
of grief if you try to write your own. Make sure you
get a Version 1 copy, since for some reason they left
out the documentation on the system calls in the second
version.

3. There are several ways to change the disk volume
once it is created. I got a copy of a program from a
BBS that did the function. The other way is to use
DEBUG (a very good general purpose program) and read in
the directory (usually starting at sector 5), change
the name, and then write it back. Not exactly kosher,
but it get the job done without having to write a
program.