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