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.