Re: Another DOS oddity...

From: Julian Perry <jp_at_digitaltapestries.com>
Date: Sun, 26 May 2013 10:02:54 +1000
Message-ID: <948452564.20130526100254@digitaltapestries.com>
AS I had recalled, "Inside Commodore DOS" by Immers & Neufield
confirms the bug. (I remember seeing it myself)
Apparently there are 2 bugs.
One: the "referred blocks" occasionally will give you track 18 (!)
Two: if a B-A is given to an already existing block, the error channel
will return the next free block, but allocate all blocks on the
requested track! (which is what you're seeing)

The fix they suggest is quite drastic. It involves M-R reading the
BAM in DOS RAM into a string on the C64 - doing the block-allocate -
and if the B-A returns "No Block" - M-W writing the allocated block
BACK to RAM, overwriting the damage done.

Inside Commodore DOS can be found at:
www.pagetable.com/docs/Inside%20Commodore%20DOS.pdf

The bug is documented in page 207, and a program example of dodging
the bullet on page 91 thru 94.

I bought that book when it first came out - and it's been a valuable
reference ever since!.

Julian


> Hi,

> I was testing a small program for B-A and B-F commands and found a strange
> error.

> https://plus.google.com/u/0/108561624393340605896/posts/YT6WU9dA68M

> If I allocate a few blocks, then free one of them to allocate it again (at
> least that's the test sequence), the whole track is being allocated.

> That's with DOS 2.6 on a 2031 emulation. 

> André


>        Message was sent through the cbm-hackers mailing list



-- 
Best regards,
 Julian                            mailto:jp@digitaltapestries.com


       Message was sent through the cbm-hackers mailing list
Received on 2013-05-26 01:00:04

Archive generated by hypermail 2.2.0.