This question is mostly for bbraun, but I'm posting here in case others have help suggestions too.
A couple months back in the "Another IIci ROM hack" thread, bbraun described his progress developing a bootable ROM disk: viewtopic.php?f=29&t=16544&start=575#p162903 He was having a problem where after booting from the ROM disk, the mouse cursor didn't move: "I still have the problem of no cursor movement. As I noted before, the rawmouse low global gets updated, so it looks like interrupts are working, but the CrsrTask isn't getting called." I'm wondering-- did you ever discover what was going on here?
Last fall I built a prototype Mac Plus replica in an FPGA, booting from a read-only floppy disk image implemented in the FPGA board's ROM. It booted the System 6.0.8 Finder successfully, and you could exercise the Mac and run programs for a minute or two, but then it would freeze-up. I never looked into the cause of the freeze-ups further, until today. It turns out it's virtually the identical problem that bbraun encountered!
What I'm seeing is that the mouse interrupt handler still gets called when the mouse is moved, and the low-memory mouse position global variable MTemp gets updated correctly, but the vblank task that actually redraws the mouse pointer at the new position never gets called. In the Mac Plus ROM, this VBL task is at $401E86. If I set a breakpoint there, it gets hit repeatedly when the Mac is at the question-mark disk screen, waiting for a System floppy to be inserted. But after booting into the Finder, that cursor VBL task never gets called, even when the mouse is responding and moving normally. So it seems that System 6.0.8 actually patches the ROM and replaces the cursor VBL task with a new one loaded from disk, which then resides at an unknown location in RAM. And for reasons unknown, after a minute or two of activity in the Finder, that RAM-based cursor VBL task stops getting called, so the mouse pointer stops moving on the screen.
So... I'm not sure how to go about troubleshooting this further. Without even knowing where the RAM-based cursor task is, I can't set a breakpoint in it, and I don't have a disassembly to examine it. Bbraun's experience suggested this somehow had something to do with the disk driver. Can anyone think of anything else that might cause this behavior? Maybe if another VBL task got stuck in an infinite loop and never completed, it might prevent the cursor VBL task from ever getting called? Or maybe the task is getting ejected from the task list entirely somehow? Any suggestions on other tests I might try running, to see if I can narrow down the problem further?
A couple months back in the "Another IIci ROM hack" thread, bbraun described his progress developing a bootable ROM disk: viewtopic.php?f=29&t=16544&start=575#p162903 He was having a problem where after booting from the ROM disk, the mouse cursor didn't move: "I still have the problem of no cursor movement. As I noted before, the rawmouse low global gets updated, so it looks like interrupts are working, but the CrsrTask isn't getting called." I'm wondering-- did you ever discover what was going on here?
Last fall I built a prototype Mac Plus replica in an FPGA, booting from a read-only floppy disk image implemented in the FPGA board's ROM. It booted the System 6.0.8 Finder successfully, and you could exercise the Mac and run programs for a minute or two, but then it would freeze-up. I never looked into the cause of the freeze-ups further, until today. It turns out it's virtually the identical problem that bbraun encountered!
What I'm seeing is that the mouse interrupt handler still gets called when the mouse is moved, and the low-memory mouse position global variable MTemp gets updated correctly, but the vblank task that actually redraws the mouse pointer at the new position never gets called. In the Mac Plus ROM, this VBL task is at $401E86. If I set a breakpoint there, it gets hit repeatedly when the Mac is at the question-mark disk screen, waiting for a System floppy to be inserted. But after booting into the Finder, that cursor VBL task never gets called, even when the mouse is responding and moving normally. So it seems that System 6.0.8 actually patches the ROM and replaces the cursor VBL task with a new one loaded from disk, which then resides at an unknown location in RAM. And for reasons unknown, after a minute or two of activity in the Finder, that RAM-based cursor VBL task stops getting called, so the mouse pointer stops moving on the screen.
So... I'm not sure how to go about troubleshooting this further. Without even knowing where the RAM-based cursor task is, I can't set a breakpoint in it, and I don't have a disassembly to examine it. Bbraun's experience suggested this somehow had something to do with the disk driver. Can anyone think of anything else that might cause this behavior? Maybe if another VBL task got stuck in an infinite loop and never completed, it might prevent the cursor VBL task from ever getting called? Or maybe the task is getting ejected from the task list entirely somehow? Any suggestions on other tests I might try running, to see if I can narrow down the problem further?

