2017-01-29 23:54:00 +00:00
|
|
|
# ROM 5X by MG
|
|
|
|
|
2017-03-11 19:02:13 +00:00
|
|
|
## PRELIMINARY, NOT EXTENSIVELY TESTED
|
2017-01-29 23:54:00 +00:00
|
|
|
|
2017-03-11 19:02:13 +00:00
|
|
|
This is ROM 5X, providing the ROM 4X functionality to the Apple IIc Plus ROM
|
|
|
|
version 5.
|
2017-01-29 23:54:00 +00:00
|
|
|
|
2017-02-12 19:53:47 +00:00
|
|
|
There are almost no free bytes in the main bank of the IIc Plus firmware, so
|
|
|
|
I had to get creative to get into the alternate bank, where I then had to split
|
2017-03-11 19:02:13 +00:00
|
|
|
the code up across multiple smaller free spaces due to the massive 3.5 drive
|
|
|
|
handling code. Ironically this makes the code larger as well.
|
2017-02-12 19:53:47 +00:00
|
|
|
|
|
|
|
For those interested, I hijack the monitor BEEP1 routine. The beep routine has
|
|
|
|
an LDA #$40 and then calls WAIT with this value for a .1 second delay,
|
|
|
|
presumably so that multiple beeps are distinct from each other.
|
|
|
|
|
|
|
|
I patch the JSR WAIT to be STA $C028, which switches to the other bank.
|
|
|
|
The code in the other bank checks the accumulator and for two values calls
|
|
|
|
either reset5x or boot5x, and for any other value executes the WAIT (assuming
|
2017-03-11 19:02:13 +00:00
|
|
|
that we got there from BEEP1) and returns back to BEEP1.
|
2017-02-12 19:53:47 +00:00
|
|
|
|
|
|
|
Then, in only 6 bytes I can create two entry points that load the value into
|
|
|
|
A that we need for the reset or boot routines, and then jump to the above patch.
|
2017-01-29 23:54:00 +00:00
|
|
|
|
2017-01-29 23:38:12 +00:00
|
|
|
|