[Coco] HDBDOS - RETRIEVE FIXED!!
Brett Gordon
beretta42 at gmail.com
Sun Jan 18 17:34:21 EST 2015
I've been highly modifying HDBDOS. One of the "TO DO's" is to figure
out why any changes in the code lower than 0xD930 breaks... even the
stuff after the last SECB patch will break if it gets relocated. I've
ran through the code 3 or 4 times trying to find anything static, but
I haven't found the reason yet. Anything hight than the "MAGIC"
address of 0xD930 can be safely relocated. Also I suggest changing
the manual fills to a lwasm "fill $39,...." This helps a bunch.
* ;;; Check Low DOS out for fitting into low part of low ROM
* ifgt *-0xd930
* error Original DECB too big
* endc
fill 0x39,0xd930-*
and:
;;; This check to make sure our code above fits
;;; into ROM below address 0xe000, technically
;;; the fill below will error out, but not tell
;;; us why.
ifgt *-0xe000
error Low ROM too big
endc
;;; This fill will cause an error on LWASM if our
;;; bottom 8k get too big.
fill $39,MAGICDG+$2000-*
I'll let you gents know if I find anything about the relocations.
-B
On Sun, Jan 18, 2015 at 4:54 PM, Robert Gault <robert.gault at att.net> wrote:
> Chad,
>
> I been trying something similar but for some reason my version of hdbdos.asm
> does not correctly use the fill statement at the end and I either get
> overflow past $2000 or inadequate filling with $39. Also the default
> positions for things like jump tables and the drive value table change
> location in memory.
>
> Anyway I used
>
> LD69A pshs B SAVE SECTOR COUNTER
> ldu #DBUF1 POINT U TO THE TABLE OF LOGICAL SECTORS
> ldb B,U * GET LOGICAL SECTOR NUMBER FROM TABLE
> AND
> stb DSEC * SAVE IT IN THE DSKCON VARIABLE
> ldu #LD6D4 POINT U TO TABLE OF SECTOR FORMATTING
> DATA
> ldb #$03 * GET FIRST 3 DATA BLOCKS AND
> bsr LD6C8 * WRITE THEM TO BUFFER
> lda DCTRK = GET TRACK NUMBER AND STORE lT
> sta ,X+ = IN THE RAM BUFFER
> lda <DCDRV should be $EB ie. drive #
> lsra 0&1 become 0 while 2&3 become 1
> sta ,x+
> lda DSEC * GET SECTOR NUMBER AND
> sta ,X+ * STORE IT IN THE BUFFER
> ldb #$09 = GET THE LAST NINE DATA BLOCKS AND
> etc.
>
> This did not work for me on my system but it could have been a problem
> compiling the code.
>
>
> Robert
>
>
> --
> Coco mailing list
> Coco at maltedmedia.com
> https://pairlist5.pair.net/mailman/listinfo/coco
--
Brett M. Gordon,
beretta42 at gmail.com
More information about the Coco
mailing list