diff --git a/STATUS.md b/STATUS.md index 01af1e7c..d5178191 100644 --- a/STATUS.md +++ b/STATUS.md @@ -136,7 +136,7 @@ NOTE: Even the 'DONE' routines won't support features described as missing in on | `$FFE7` | `$F32F` | `CLALL` | DONE | | | `$FFEA` | | `UDTIM` | DONE | | | `$FFED` | | `SCREEN` | DONE | | -| `$FFF0` | | `PLOT` | PARTIAL | cursor blink not handled | +| `$FFF0` | `$E50A` | `PLOT` | PARTIAL | cursor blink not handled | | `$FFF3` | | `IOBASE` | DONE | | | `($FFFA)` | | NMI vec | PARTIAL | | | `($FFFC)` | | RESET vec | PARTIAL | | @@ -150,16 +150,17 @@ Not all of them - only these we want to have implemented.
-| Address | Name | Status | Remarks | -| :-------: | :---------------- | :------: | :------------------------------------------------: | -| `$E544` | clear screen | DONE | | -| `$E5A0` | setup VIC II & IO | PARTIAL | | -| `$EA31` | default IRQ | PARTIAL | | -| `$EA7E` | ack CIA1 + below | DONE | | -| `$EA81` | ret from IRQ/NMI | DONE | | -| `$FD30` | default vectors | DONE | | -| `$FE47` | default NMI | PARTIAL | | -| `$FE66` | default BRK | DONE | | -| `$FF80` | revision byte | DONE | | +| Address | Name | Status | Remarks | +| :-------: | :------------------ | :------: | :------------------------------------------------: | +| `$E544` | clear screen | DONE | | +| `$E50C` | set cursor position | PARTIAL | cursor blink not handled | +| `$E5A0` | setup VIC II & IO | PARTIAL | | +| `$EA31` | default IRQ | PARTIAL | | +| `$EA7E` | ack CIA1 + below | DONE | | +| `$EA81` | ret from IRQ/NMI | DONE | | +| `$FD30` | default vectors | DONE | | +| `$FE47` | default NMI | PARTIAL | | +| `$FE66` | default BRK | DONE | | +| `$FF80` | revision byte | DONE | |
diff --git a/bin/basic_mega65.rom b/bin/basic_mega65.rom index 2b665a44..a8762c7b 100644 Binary files a/bin/basic_mega65.rom and b/bin/basic_mega65.rom differ diff --git a/bin/kernal_generic.rom b/bin/kernal_generic.rom index 95444870..722812e8 100644 Binary files a/bin/kernal_generic.rom and b/bin/kernal_generic.rom differ diff --git a/bin/kernal_mega65.rom b/bin/kernal_mega65.rom index e6925302..b978c8a2 100644 Binary files a/bin/kernal_mega65.rom and b/bin/kernal_mega65.rom differ diff --git a/bin/kernal_ultimate64.rom b/bin/kernal_ultimate64.rom index f2e21005..0eff723a 100644 Binary files a/bin/kernal_ultimate64.rom and b/bin/kernal_ultimate64.rom differ diff --git a/c64/kernal/e50a.interop b/c64/kernal/e50a.interop new file mode 100644 index 00000000..392ddf02 --- /dev/null +++ b/c64/kernal/e50a.interop @@ -0,0 +1,4 @@ +The original reason to move PLOT routine into its original position was to provide support for unofficial $E50C address: + +- it is well known: https://www.lemon64.com/forum/viewtopic.php?t=3296&%3Bstart=15 +- 'Duotris' game calls $E50C during startup screen initialization diff --git a/c64/kernal/plot.s b/c64/kernal/e50a.plot.s similarity index 64% rename from c64/kernal/plot.s rename to c64/kernal/e50a.plot.s index 0f439cde..e72b33d2 100644 --- a/c64/kernal/plot.s +++ b/c64/kernal/e50a.plot.s @@ -11,6 +11,10 @@ PLOT: bcs plot_get + // Note: the 'set' part has to start from $E50C, as this is a known address + // - https://www.lemon64.com/forum/viewtopic.php?t=3296&%3Bstart=15 + // - 'Duotris' game calls $E50C during startup screen initialization + plot_set: sty TBLX stx PNTR @@ -23,4 +27,3 @@ plot_get: ldy TBLX ldx PNTR rts -