[comp.os.msdos.programmer] Fixing old BASICA programs

talley@hpuxa.acs.ohio-state.edu (James T. Talley) (03/28/91)

I am faced with fixing a set of antique BASICA programs that pull
some tricks that no longer work.  The programs use BLOAD and
BSAVE to move assembly language routines and collected data in
and out of memory.  The problem seems to be where they are
loading it.

Typically, they DEF SEG=&H1B40 or some similar number (1800,
1B60, etc.).  According to my antique BASICA manual, this is no
problem

 "If your system has enough memory that you can put your
  subroutines outside the BASIC 64K-byte workarea, you don't have
  to do anything to reserve that area ... For example, in a
  96K-byte system, to specify an address in the upper 4K-bytes of
  memory, you could use: 110 DEF SEG=&H1700"

Sigh...

Obviously things have changed since then.  The programs that ran
fine on the old PC in the corner now need to run on PS/2 model
30's with DOS 3.x.

BASICA seems to load higher than 1B40 as a normal course of
events.  The programs seem to be writing over part of DOS or some
user-installed driver code  (There are no TSR's).  Once you exit
BASICA, you usually see lots of garbage flowing down the screen.
This is the point I use CTRL-ALT-DELETE.

I have thought about 1) DIM'ing a large array to hold the data,
2) switching to memory just below the 640K boundary, or 3) coming
up with some way to request the extra memory from DOS.  (I wish
that I could just trash the programs, but they still perform a
useful task.)

I am looking for suggestions for an easy way to fix these
programs.  If you can think of options better than the three I've
thought of, I'd appreciate hearing from you.

Email only, please

James Talley
talley+@osu.edu