ProDOS-8 / ProDOS8-Testing

QA and Testing for ProDOS-8 Releases
MIT License
29 stars 1 forks source link

ProDOS 2.5a8: No error when SAVEing files when root dir on /RAM is full #65

Open inexorabletash opened 2 years ago

inexorabletash commented 2 years ago

Steps to Reproduce

  1. Boot ProDOS 2.5 Alpha 8
  2. Drop to BASIC.SYSTEM
  3. Type this:
    PREFIX /RAM
    10 FOR I = 1 TO 100
    20 PRINT I
    30 PRINT CHR$(4)"SAVE F";I
    40 NEXT
    RUN 
    CAT

Expected

After some number of entries: DIRECTORY FULL and BREAK IN 30 and CAT shows files F1 and on until the error. With ProDOS 2.0.3 and ProDOS 2.4.2 the the limit is 12

Actual

The numbers count all the way to 100 with no error. CAT shows only files F1 through F51 though.

Context

Noted while comparing RAM limits between ProDOS 2.4.2, ProDOS 2.5, and RamAux.

Your Environment

Virtual II with an Enhanced IIe and 16MB virtual RamWorks card

tim1724 commented 1 year ago

/RAM isn't full. The files are all there. (Older versions of ProDOS create a minimal root directory for /RAM, and they couldn't expand the rood directory as needed, so the directory could get full. ProDOS 2.5 can expand the root directory dynamically, so DIRECTORY FULL shouldn't happen in ProDOS 2.5.)

It's just that CAT is only showing the first 51 entries. (You can LOAD/SAVE/RENAME/DELETE the rest of them just fine.) Presumably the code inside BASIC.SYSTEM just assumes that root directories can't be any bigger than that. (Under normal conditions they weren't in the past.)

Bitsy Bye is also unable to see anything past the first 51 entries, just like BASIC.SYSTEM. Perhaps it borrowed some catalog-reading code from BASIC.SYSTEM or it made the same erroneous assumptions.

The bundled version of Copy II+ lists all the catalog entries just fine.