[net.micro.apple] Prodos Questions and Answers II

gordon@cadomin.UUCP (Gordon Atwood) (06/16/86)

Old Stuff:

     In my last article I mentioned a problem I was (and am) having convincing a
RENUMBER program to execute under Prodos.  Its an old program, which allows you
to merge files or renumber them.  One response (the only one) suggested it
wasn't setting up the Himem pointer correctly.  My apologizes, I thought I had
made it clear in my article that the program was loading, and settin himem
correctly.  However, when told to renumber a Basic program (via the & command) it
hangs.

     To Clarify:
     1)  The program is loaded, and Himem is adjusted correctly.  The & command
is set correctly.

     Possible Problems:
     1)  Prodos may insist on the Renumber program occupying a buffer that has
been allocated via the Prodos ALLOC_BUF routine.
     2)  Prodos no longer uses the Lomem pointer in the same way.  The whole
procedure for finding the beginning of the Basic program seems to have changed.

     Number 2) seems the most likely culprit, but 1) will eventually screw
something up.

     If I ever get around to fixing this problem (or if someone sends me a 
usable solution) I will post it.

-----

New Stuff:

     Another warning:

     The Prodos convert routine has an interesting bug (feature).  It seems
that if you have a DOS 3.3 Basic Program which contains REM statements which
in turn contain '$' (dollar signs), and you try to convert this program to
a Prodos file, it becomes beautifully garbled.

     I have only studied this in one direction (DOS-->Prodos).  My particular
sample had a reminder as to what Hex address I was getting at in the program.
The solution was to replace '$' with 'HEX'.  Note, '$' used in actual
statements, like BLOAD TEMP, A$1000, L$1000 ar converted correctly.


     My latest problem:

     Careful examination of various documenation (and many experiments) has
revealed that Prodos is quite series in calling TEXT files ASCII TEXT files.
Such files will only store 7-bit data.  The MSB is ignored.  This, of course,
means that actually byte values that you might wish to save in a text file
must either be 7-bit, or spread over 2 characters.  (Needless to say, I find
it abhorrent that Apple has once again chosed to ignore versatility in code).

     Now, my specific application would be most easily implemented if I could
have random access files storing 8-bit bytes.  The information could then
be stored in strings and read in and written out using the READ and WRITE
commands.  However, even if I use a User-defined file type, the READ and
WRITE routines still chop of the MSB.

     One of the things I intend to investigate is the NEWLIN routine.  However,
nowhere in the documentation, is there any indication that this routine is
actually used when you read and write information from a Basic program to a
file.

     If you have encountered this problem, and have managed to get around it,
I would be most interested in hearing your solutions.

----

     A final question:

     Has anyone out there purchased (or otherwise obtained) the Beneath Apple
Prodos Supplement Package?  (This is apparently only available to people who
have purchased the Beneath Apple Prodos Manual).  Is it any good, how detailed
is its information.  What else can you tell me.

     [Please read that paragraph twice before answering.  I am interested in
the Supplement, not the initial manual].


Hope you found this of some interest and use.

G.H.A.