That's why I was thinking this would be a neat idea - Since I place the video RAM at 16KB, this creates a space in the beginning of RAM that's useful to hold the BIOS and I have about 8KB space (say 6.5KB once I add more features) left over that are useful for buffers or cache.
It will be the place to hold the disk track buffer when formatting disks, but if dynamic allocation is used, this space could be shared without causing large difficulties. If the BIOS needs buffer space for something, it can choke the rx and tx flow until the buffers are small enough then move them (provided the program and other endpoint don't refuse to receive data), and if disk buffers are ever used, they can just be evicted.
It seems like this would be efficient use of memory but it's only possible for a DOS environment when the same program manages all those together.
Do you happen to know offhand how much state is involved that can't be forced out of the buffers by blocking the flow? Is some per connection?