MEGA65 / mega65-freezemenu

Freeze Menu Program for the MEGA65
GNU General Public License v3.0
8 stars 11 forks source link

Directory issue ".." is missing #16

Closed hstampfl closed 1 year ago

hstampfl commented 3 years ago

After changing into a subdirectory, I can't go back into the above folder.

gardners commented 3 years ago

Which bitstream and FREEZER.M65 are you using? Please provide an m65 of the FREEZER.M65 Also, please confirm that the subdirectory actually has a .. entry in it, if you mount the SD card on another system. If it's not on the file system, it won't be offered as an option.
What may also work as a work-around is to press the <- key at the top-left of the C64/C65 keyboard, as this will attempt to chdir(".."), even if its not showing in the directory listing.

hstampfl commented 3 years ago

I have installed bitstream mega65r3-20210105.10-138-hd-712c81f.bit. See the Freezermenu screenshot. mega65-screen-000000 freeze

Ok, the problem is not the "..". When you go into a subdirectory and you return to the root, the root is empty and do only show following: mega65-screen-000001

Also closing freeze and open it again does not solve the problem. I have to reboot to get the freezemenu work properly.

gardners commented 3 years ago

ok. Please check with the SD card in another computer if it has .. in the directory you are entering. You can also make a dump of the SD card and zip it and attach it, and I can see if there are clues for me in there.

gardners commented 3 years ago

There are multiple test revisions of freezer that show the same version number, so please still md5 the FREEZER.M65 file for me if you can, so that I can confirm for sure which you are using.

hstampfl commented 3 years ago

Aargh, because of your initial request for an m65 I thought you would like to have a screenshot. Here the MD5 F:>CertUtil -hashfile FREEZER.M65 MD5 MD5-Hash von FREEZER.M65: 76642b8675e5e359a5460a9ddb14f281

hstampfl commented 3 years ago

As I wrote in detail, the problem is not related to the "..", it looks like a problem when you go into a subfolder and then go back to the root. It looks like the directory listing after change back to root is not working because in the root you don't have an '..".

gardners commented 3 years ago

Hmm.. But if it was back to the root directory, then the contents of that would be visible again.

Can you please run m65 -X on boot, then once you have changed directory into the sub-directory, and then again when you have used .. to go back out, i.e., where this issue is triggered. This will give me some debug info on the internal state of the hypervisor, including the cluster number of the current directory.

I can confirm that you are using the latest version of FREEZER.M65, so that shouldn't be a problem.

Thanks, Paul.

hstampfl commented 3 years ago

D:\Mega65\M65>m65 -l COM4 -X MEGA65 Cross-Platform tool. version: 20201130.22-master-e84f537+DIRTY [T+0sec] Getting started.. NOTE: Scanning bitstream file '(null)' for device ID INFO: Using fpga_id 3631093 HYPPO status: Disk count = $00 Default Disk = $00 Current Disk = $00 Disk Table offset = $00 Cluster of current directory = $00000000 opendir_cluster = $00000000 opendir_sector = $00 opendir_entry = $00 dirent structure: Filename = 'Venezualen casaba melon production statistics (2012-2015).txt ' Filename len = $00 Short name = 'FILENAME.EXT' Start cluster = $00000000 File length = $00000000 ATTRIB byte = $00 Requested filename len = $00 Requested filename = 'Venezualen casaba melon production statistics (2007-2011).txt ' sectorsread = $0000 bytes_remaining = $00000000 current sector = $00000000, current cluster = $00000000 current sector in cluster = $00 File descriptor #0: disk ID = $ff, mode = $00 start cluster = $00000000, current cluster = $00000000 sector in cluster = $00, offset in sector = $0000 File descriptor #1: disk ID = $ff, mode = $00 start cluster = $00000000, current cluster = $00000000 sector in cluster = $00, offset in sector = $0000 File descriptor #2: disk ID = $ff, mode = $00 start cluster = $00000000, current cluster = $00000000 sector in cluster = $00, offset in sector = $0000 File descriptor #3: disk ID = $ff, mode = $00 start cluster = $00000000, current cluster = $00000000 sector in cluster = $00, offset in sector = $0000 Current file descriptor # = $00 Current file descriptor offset = $00 Dos error code = $00 SYSPART error code = $00 SYSPART present = $00 SYSPART start = $00000000

gardners commented 3 years ago

That's from cold start before booted to READY? (Its not showing any partitions detected etc). Please also run it:

  1. At READY before you do anything
  2. From in FREEZER before changing directory
  3. From in FREEZER after changing directory, when it shows an empty listing with no .. Thanks, Paul.
hstampfl commented 3 years ago

Yes, it was from cold start.

  1. At READY D:\Mega65\M65>m65 -l COM4 -X MEGA65 Cross-Platform tool. version: 20201130.22-master-e84f537+DIRTY [T+0sec] Getting started.. NOTE: Scanning bitstream file '(null)' for device ID INFO: Using fpga_id 3631093 HYPPO status: Disk count = $01 Default Disk = $00 Current Disk = $00 Disk Table offset = $00 Cluster of current directory = $00000002 opendir_cluster = $00000000 opendir_sector = $00 opendir_entry = $00 dirent structure: Filename = '' Filename len = $00 Short name = '' Start cluster = $00000000 File length = $00000000 ATTRIB byte = $00 Requested filename len = $0b Requested filename = '1541ROM.M65' sectorsread = $0000 bytes_remaining = $00000000 current sector = $00000002, current cluster = $00000a38 current sector in cluster = $00 File descriptor #0: disk ID = $ff, mode = $80 start cluster = $00000002, current cluster = $0ffffff8 sector in cluster = $00, offset in sector = $0000 File descriptor #1: disk ID = $ff, mode = $00 start cluster = $00000000, current cluster = $00000000 sector in cluster = $00, offset in sector = $0000 File descriptor #2: disk ID = $ff, mode = $00 start cluster = $00000000, current cluster = $00000000 sector in cluster = $00, offset in sector = $0000 File descriptor #3: disk ID = $ff, mode = $00 start cluster = $00000000, current cluster = $00000000 sector in cluster = $00, offset in sector = $0000 Current file descriptor # = $00 Current file descriptor offset = $00 Dos error code = $00 SYSPART error code = $00 SYSPART present = $00 SYSPART start = $018d9ffe

  2. From FREEZER inside ZX directory before changing directory D:\Mega65\M65>m65 -l COM4 -X MEGA65 Cross-Platform tool. version: 20201130.22-master-e84f537+DIRTY [T+0sec] Getting started.. NOTE: Scanning bitstream file '(null)' for device ID INFO: Using fpga_id 3631093 HYPPO status: Disk count = $01 Default Disk = $00 Current Disk = $00 Disk Table offset = $00 Cluster of current directory = $00000002 opendir_cluster = $00000000 opendir_sector = $00 opendir_entry = $00 dirent structure: Filename = '' Filename len = $00 Short name = '' Start cluster = $00000000 File length = $00000000 ATTRIB byte = $00 Requested filename len = $0b Requested filename = '1541ROM.M65' sectorsread = $0000 bytes_remaining = $00000000 current sector = $00000002, current cluster = $00000a38 current sector in cluster = $00 File descriptor #0: disk ID = $ff, mode = $80 start cluster = $00000002, current cluster = $0ffffff8 sector in cluster = $00, offset in sector = $0000 File descriptor #1: disk ID = $ff, mode = $00 start cluster = $00000000, current cluster = $00000000 sector in cluster = $00, offset in sector = $0000 File descriptor #2: disk ID = $ff, mode = $00 start cluster = $00000000, current cluster = $00000000 sector in cluster = $00, offset in sector = $0000 File descriptor #3: disk ID = $ff, mode = $00 start cluster = $00000000, current cluster = $00000000 sector in cluster = $00, offset in sector = $0000 Current file descriptor # = $00 Current file descriptor offset = $00 Dos error code = $00 SYSPART error code = $00 SYSPART present = $00 SYSPART start = $018d9ffe

  3. From FREEZER after changing directory back to root (showing empty) D:\Mega65\M65>m65 -l COM4 -X MEGA65 Cross-Platform tool. version: 20201130.22-master-e84f537+DIRTY [T+0sec] Getting started.. NOTE: Scanning bitstream file '(null)' for device ID INFO: Using fpga_id 3631093 HYPPO status: Disk count = $01 Default Disk = $00 Current Disk = $00 Disk Table offset = $00 Cluster of current directory = $00000000 opendir_cluster = $00000000 opendir_sector = $00 opendir_entry = $00 dirent structure: Filename = '' Filename len = $00 Short name = '' Start cluster = $00000000 File length = $00000000 ATTRIB byte = $00 Requested filename len = $02 Requested filename = '..' sectorsread = $0012 bytes_remaining = $00000000 current sector = $00000000, current cluster = $00000a38 current sector in cluster = $00 File descriptor #0: disk ID = $ff, mode = $80 start cluster = $00000000, current cluster = $0ffffff8 sector in cluster = $00, offset in sector = $0000 File descriptor #1: disk ID = $ff, mode = $00 start cluster = $00000000, current cluster = $00000000 sector in cluster = $00, offset in sector = $0000 File descriptor #2: disk ID = $ff, mode = $00 start cluster = $00000000, current cluster = $00000000 sector in cluster = $00, offset in sector = $0000 File descriptor #3: disk ID = $ff, mode = $00 start cluster = $00000000, current cluster = $00000000 sector in cluster = $00, offset in sector = $0000 Current file descriptor # = $00 Current file descriptor offset = $00 Dos error code = $00 SYSPART error code = $00 SYSPART present = $00 SYSPART start = $018d9ffe

Regards Heinz ( It's my discordname aswell ;) )

hstampfl commented 3 years ago

Btw... when I stay longer in this position the border get red. Is this an visual error message?

mega65-screen-000002

gardners commented 3 years ago

The border colour change is just the freezer saying it can't give you a directory listing of the selected item (which makes a lot of sense when the selected item is "no disk" ;)

Thanks for the updated m65 -X runs. It seems to be getting cluster 0 for the cluster of the sub-directory. Can you please make a compressed image of the SD card, as I need to see how it is coming to that conclusion.

hstampfl commented 3 years ago

I have created the image. Where can I upload it?

Regards Heinz

gardners commented 3 years ago

Problem seems to be that some FAT implementations use the convention of putting cluster number 0 into .. when it points to the root directory, even though the root directory rarely is in cluster 0 on modern fat implementations. The fix is to add a check for this in HYPPO (not the freeze menu) that checks for this, and calls dos_cdroot if it sees the current directory get set to cluster 0.

lydon42 commented 1 year ago

I assume this is antique. If not, please reopen and attach sd image for testing.