Fixed MESS problems

From Ninerpedia
Revision as of 11:45, 13 July 2008 by Mizapf (talk | contribs) (→‎Mini Memory's persistent memory)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Back to TI MESS emulation home page.

File system bug

Symptom: All MESS versions starting from 0.98 have a bad file system emulation bug which causes read and write errors on emulated disks. (Analysis of MESS 0.98 file system bug)
Reason: In the MESS core, the image handling and the floppy drive handling underwent substantial restructuring. The problem is that the core maintainers believed that there is no point in distinguishing between the medium track count and the drive track count. However, the TI controller (especially the HFDC) can work with 80-track drives, and when they sense a 40-track medium, they apply double-steps. The emulation, however, forced the drive geometry to the medium geometry, which caused tracks starting from the middle to be unreachable.
Solution: Introduced a new flag in the device description of the floppy and a test on that flag.

Border not rendered

Symptom: In the screen display, the border is not shown; the screen contents touch the surrounding window frame.
Reason: Changes in video rendering.
Solution: Modified the display parameters.

Geneve unable to boot

Symptom: The Geneve emulation fails to boot. After loading some sectors from the boot drive, the booting stops, and the error message appears:

CANNOT READ FROM FLOPPY DISK
PRESS ANY KEY TO RESTART

Reason: Same file system issue which was introduced with 0.98.
Solution: Introduced a flag which keeps the drive geometry.

Geneve reset does not work

Symptom: Resetting the Geneve with Ctrl-LShift-RShift does not work. Emulation hangs. Obviously the page is incorrect, says 0xf8 pointing to DRAM (instead of 0xf0 pointing to Boot ROM). Memory locations are all 0x00.
Reason: Probably an MDOS bug, the page is intentionally set to 0xf8 which mirrors 0xf0 (as do 0xf2, ..., 0xfe). Either mask bits, or check EPROM size.
Solution: Page address masked with 0xf1 when greater than 0xf0.

Emulator crashes when working with floppies

Symptom: The emulator crashes with a "Fatal error", telling that some function may only be called in init state.
Reason: The MESS maintainers inserted safety assertions in my bugfix, without checking whether this again breaks the bugfix.
Solution: Wait for 0.123 or check out the latest sources from subversion.

Mechatronics mouse

Symptom: The Mechatronics mouse gets input from swapped axes. Moving the mouse left-right causes the pointer to move up-down, and moving up-down causes the pointer to go left-right. There is at least one situation (configuration-dependent) when this bug does not show up. After doing changes in the on-screen menu, the axes get swapped and keep swapped.
Reason: The mouse is queried by creating a rising edge on selecting joystick lines 1 and 2. This was incompletely implemented, just checking for a selection of line 2 (or not line 2). When the system was reset in between, the state became inconsistent.
Solution: Complete check for rising/falling edge and reset of swap flag.

Mini Memory's persistent memory

Symptom: When a program is saved to Mini Memory and the emulator is terminated, the program is gone on the next start.
Reason: The Mini Memory RAM is not saved to a file. That is, it is actually a RAM disk pretending to be permanent storage.
Solution: Using the NVRAM save procedures from MESS (since 0.126)