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:email@example.com Message was sent through the cbm-hackers mailing listReceived on 2013-05-26 01:00:04
Archive generated by hypermail 2.2.0.