[net.micro.cpm] BIOS2RSX problem

mknox@UT-NGP.ARPA (08/19/84)

The program BIOS2RSX was recently posted to the net.  It maps CP/M-2.2
BIOS calls into CP/M-Plus calls, allowing such programs as DU to run
under CP/M-Plus.  It works well, but recently caused me several sleepless
nights.  The problem was a loss of data in a CP/M-Plus submit file
after the first 128 bytes, IF one of the tasks invoked in the submit
file was a 2.2 program (with BIOS2RSX attached) AND that program did
disk writes.

It turns out that my CP/M-Plus uses the BDOS for blocking/deblocking
(as I am sure many do).  This buffer is not being flushed by BIOS2RSX
and can be overwritten by the 2.2 program.  The fix is to go into
BIOS2RSX and add the following code:

          MVI  C,030h    ;flush disk buffers
          MVI  E,0ffh    ; flush data buffers too
          CALL BDOS      

before any other disk activity is performed.  This seems to fix the
problem nicely.  Note that the problem will not come up if the blocking/
deblocking is done in the CP/M-Plus BIOS.