Cc65: No function to retrieve off-page directory entries

Created on 30 Nov 2020  路  6Comments  路  Source: cc65/cc65

Get1stDirEntry() and GetNxtDirEntry() do not take into account the offpad directory entries. I can work on this. Relevant documentation for

GetOffPageTrSc: (C64, C128) mid-level $9036

Function: Get track and sector of off-page directory.

Parameters: none.

Uses:

  • curDrive drive that disk is in.
  • curType GEOS 64 v1.3 and later for detecting REU shadowing.

Returns:

  • x error ($00 = no error).
  • y $FF if the disk is not a GEOS disk and therefore has no off-page directory block, otherwise $00.
  • r1L track of off-page directory.
  • r1H sector of off-page directory.
  • r4 pointer to curDirHead.

Destroys: a, y, r5.

Description: Commodore GEOS disks have an extra directory block somewhere on the disk called the offpage directory. The GEOS deskTop uses the off-page directory block to keep track of file icons that have been dragged off of the notepad and onto the border area of the deskTop. The off-page directory holds up to eight directory entries. GetOffPageTrSc reads the directory header into the buffer at curDirHead and calls ChkDkGEOS to ensure that the disk is a GEOS disk. If the disk is not a GEOS disk, it returns with $ff in the y register. Otherwise, GetOffPageTrSc copies the off-page track/sector from the OFF_OP_TR_SC word in the directory header to r1 and returns $00 in y.

Example:
; Put off-page block into diskBlkBuf
jsr GetOffPageTrSc ; get off-page directory block
txa ; check for error
bne 99$ ;
tya ; check for GEOS disk
tax ; put in x in case error
bne 99$ ;
LoadW r4,diskBlkBuf ; get off-page block
jsr ; return with error in x
99$ rts

enhancement

Most helpful comment

[...] but probably better to keep it separate in the spirit of the library wrapping concept.

From what I understand that's indeed my opinion.

I can work on this. [...] Ill just create a wrapper for this function.

Thanks in advance :-)

Additionally it is only a C64/128 function and not Apple.

Then it belongs to https://github.com/cc65/cc65/tree/master/libsrc/geos-cbm/disk.

And it should be added below https://github.com/cc65/cc65/blob/master/libsrc/geos-common/symbols.txt#L326

Do you have an idea what https://github.com/cc65/cc65/blob/master/libsrc/geos-cbm/diskdrv.inc#L35 means? It claims that 9036 is GetBorder. Afaik you have/want to change that line...

And finally you'll have to add a line to https://github.com/cc65/cc65/blob/master/include/geos/gdisk.h

All 6 comments

Ill just create a wrapper for this function. Would be nice to be able to include it in the GetXXXDirEntry() functions somehow, but probably better to keep it separate in the spirit of the library wrapping concept. Additionally it is only a C64/128 function and not Apple.

[...] but probably better to keep it separate in the spirit of the library wrapping concept.

From what I understand that's indeed my opinion.

I can work on this. [...] Ill just create a wrapper for this function.

Thanks in advance :-)

Additionally it is only a C64/128 function and not Apple.

Then it belongs to https://github.com/cc65/cc65/tree/master/libsrc/geos-cbm/disk.

And it should be added below https://github.com/cc65/cc65/blob/master/libsrc/geos-common/symbols.txt#L326

Do you have an idea what https://github.com/cc65/cc65/blob/master/libsrc/geos-cbm/diskdrv.inc#L35 means? It claims that 9036 is GetBorder. Afaik you have/want to change that line...

And finally you'll have to add a line to https://github.com/cc65/cc65/blob/master/include/geos/gdisk.h

Do you have an idea what https://github.com/cc65/cc65/blob/master/libsrc/geos-cbm/diskdrv.inc#L35 means? It claims that 9036 is GetBorder. Afaik you have/want to change that line...

Yeah the official name is GetOffPageTrSc. Will plan on updating that.

btw, not a comment in regards to this, but wanted you guys to know Ill be presenting this work along with some other things at the virtual world of commodore event: https://www.tpug.ca/world-of-commodore/world-of-commodore-2020/ I intend on showing how cc65 is used being used to create this application, so would definitely enjoy having any of you there for a callout.

https://www.tpug.ca/world-of-commodore/world-of-commodore-2020/

Cool, always great if people talk about cc65 :-)

And I forgot to mention that it should have its section in https://github.com/cc65/cc65/blob/master/doc/geos.sgml showing up in https://cc65.github.io/doc/geos.html#ss3.5.

Was this page helpful?
0 / 5 - 0 ratings