This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | Next revision Both sides next revision | ||
mg_notes:apple_iic:iic_bugs [2017/11/10 02:08] M.G. fix link, not markdown |
mg_notes:apple_iic:iic_bugs [2017/11/10 03:34] M.G. |
||
---|---|---|---|
Line 52: | Line 52: | ||
That being said, MAME before [[https://github.com/mamedev/mame/commit/bdcb98307822e79c242782ee67bef966bf4c25de|bdcb983]] did not float the bus for $C0C0-$C0CF. A non-floating bus results in ROM $03 hanging when the card is first accessed, and, due to changes made by Apple, a hang at boot for ROM $04 (and presumably IIc Plus ROM $05). | That being said, MAME before [[https://github.com/mamedev/mame/commit/bdcb98307822e79c242782ee67bef966bf4c25de|bdcb983]] did not float the bus for $C0C0-$C0CF. A non-floating bus results in ROM $03 hanging when the card is first accessed, and, due to changes made by Apple, a hang at boot for ROM $04 (and presumably IIc Plus ROM $05). | ||
- | Another minor issue is that the code wouldn't find a theoretical Slinky that had only one 64K bank built into it, as the loop terminates when the bank hits 0. | + | Another minor issue is that the code wouldn't find a theoretical Slinky that had only one 64K bank built into it, as the loop terminates when the bank hits 0 (beq tsnoram), immediately before the carry flag is checked to see if any RAM was found in bank 0. |
The code could be fixed by using the stack to save the counter and comes out a few bytes shorter: | The code could be fixed by using the stack to save the counter and comes out a few bytes shorter: | ||
Line 118: | Line 118: | ||
If it was undesirable to use the stack, we overwrite sizetemp anyway when the routine exits, so we could replace the pha/pla with sta sizetemp/lda sizetemp at the cost of 4 bytes. | If it was undesirable to use the stack, we overwrite sizetemp anyway when the routine exits, so we could replace the pha/pla with sta sizetemp/lda sizetemp at the cost of 4 bytes. | ||
- |