diff --git a/STATUS.md b/STATUS.md index e1f308af..d97aed3d 100644 --- a/STATUS.md +++ b/STATUS.md @@ -46,14 +46,29 @@ For the current status of the low memory location implementation andd usage chec ## BASIC +### Official BASIC routines -TODO +Note: vectors at `$0300` are not supported yet - for now only the locations below can be used! +
+ +| Address | Name | Status | Remarks | +| :-------: | :---------------- | :------: | :------------------------------------------------: | +| `($A000)` | cold start vector | PARTIAL | | +| `($A002)` | warm start vector | PARTIAL | | +| `$A483` | `MAIN` | NOT DONE | some implementation exists, but not connected here | +| `$A57C` | `CHRNCH` | NOT DONE | | +| `$A71A` | `QPLOP` | NOT DONE | some implementation exists, but not connected here | +| `$A7E4` | `GONE` | NOT DONE | some implementation exists, but not connected here | +| `$AE86` | `EVAL` | NOT DONE | some implementation exists, but not connected here | +| `$E38B` | `ERROR` | NOT DONE | | + +
## Kernal -Note: only the jump table addresses are currently supported, real routine addresses are different! +Note: only the jump table addresses are fully supported, real routine addresses are sometimes different! ### Official Kernal routines @@ -63,7 +78,7 @@ NOTE: Even the 'DONE' routines won't support features described as missing in on
| Address | Name | Status | Remarks | -| --------- | :------- | :------: | :------------------------------------------------: | +| :-------: | :------- | :------: | :------------------------------------------------: | | `$FF81` | `CINT` | DONE | | | `$FF84` | `IOINIT` | PARTIAL | CIA initialization incomplete | | `$FF87` | `RAMTAS` | DONE | | @@ -103,6 +118,10 @@ NOTE: Even the 'DONE' routines won't support features described as missing in on | `$FFED` | `SCREEN` | DONE | | | `$FFF0` | `PLOT` | PARTIAL | cursor blink not handled | | `$FFF3` | `IOBASE` | DONE | | +| `($FFFA)` | NMI vector | PARTIAL | | +| `($FFFC)` | RESET vector | PARTIAL | | +| `($FFFE)` | IRQ/BRK vector | PARTIAL | | +
diff --git a/c64/basic/a483.interop b/c64/basic/a483.interop new file mode 100644 index 00000000..ac77e1bd --- /dev/null +++ b/c64/basic/a483.interop @@ -0,0 +1,9 @@ +All the BASIC routines, for which there are vectors in $0300-$030B, have to be available at their original addresses. + +Reason: some autostart software (https://codebase64.org/doku.php?id=base:autostarting_disk_files) override these vectors, so that some point +to new locations (usually Kernal related), while others points the original BASIC routines. Different techniques modify different vectors +(while resetting others to original C64 locations), some don't change the vectors at all, but might still put the original +C64 BASIC addresses there. + +For various cartridges this just means disabling their extensions (like new commands); for us that would mean improperly functionning BASIC. + diff --git a/c64/basic/a483.main.s b/c64/basic/a483.main.s new file mode 100644 index 00000000..680e34f8 --- /dev/null +++ b/c64/basic/a483.main.s @@ -0,0 +1,13 @@ + +// +// Official BASIC routine, described in: +// +// - [RG64] C64 Programmer's Reference Guide - XXX +// - [CM64] Compute's Mapping the Commodore 64 - page 69, XXX +// +// CPU registers that has to be preserved (see [RG64]): XXX +// + + +MAIN: + rts // XXX implement this diff --git a/c64/basic/a57c.chrnch.s b/c64/basic/a57c.chrnch.s new file mode 100644 index 00000000..bc797250 --- /dev/null +++ b/c64/basic/a57c.chrnch.s @@ -0,0 +1,13 @@ + +// +// Official BASIC routine, described in: +// +// - [RG64] C64 Programmer's Reference Guide - XXX +// - [CM64] Compute's Mapping the Commodore 64 - page 69, XXX +// +// CPU registers that has to be preserved (see [RG64]): XXX +// + + +CHRNCH: + rts // XXX implement this diff --git a/c64/basic/a57c.interop b/c64/basic/a57c.interop new file mode 100644 index 00000000..ac77e1bd --- /dev/null +++ b/c64/basic/a57c.interop @@ -0,0 +1,9 @@ +All the BASIC routines, for which there are vectors in $0300-$030B, have to be available at their original addresses. + +Reason: some autostart software (https://codebase64.org/doku.php?id=base:autostarting_disk_files) override these vectors, so that some point +to new locations (usually Kernal related), while others points the original BASIC routines. Different techniques modify different vectors +(while resetting others to original C64 locations), some don't change the vectors at all, but might still put the original +C64 BASIC addresses there. + +For various cartridges this just means disabling their extensions (like new commands); for us that would mean improperly functionning BASIC. + diff --git a/c64/basic/a71a.interop b/c64/basic/a71a.interop new file mode 100644 index 00000000..ac77e1bd --- /dev/null +++ b/c64/basic/a71a.interop @@ -0,0 +1,9 @@ +All the BASIC routines, for which there are vectors in $0300-$030B, have to be available at their original addresses. + +Reason: some autostart software (https://codebase64.org/doku.php?id=base:autostarting_disk_files) override these vectors, so that some point +to new locations (usually Kernal related), while others points the original BASIC routines. Different techniques modify different vectors +(while resetting others to original C64 locations), some don't change the vectors at all, but might still put the original +C64 BASIC addresses there. + +For various cartridges this just means disabling their extensions (like new commands); for us that would mean improperly functionning BASIC. + diff --git a/c64/basic/a71a.qplop.s b/c64/basic/a71a.qplop.s new file mode 100644 index 00000000..a6a8572e --- /dev/null +++ b/c64/basic/a71a.qplop.s @@ -0,0 +1,13 @@ + +// +// Official BASIC routine, described in: +// +// - [RG64] C64 Programmer's Reference Guide - XXX +// - [CM64] Compute's Mapping the Commodore 64 - page 69, XXX +// +// CPU registers that has to be preserved (see [RG64]): XXX +// + + +QPLOP: + rts // XXX implement this diff --git a/c64/basic/a7e4.gone.s b/c64/basic/a7e4.gone.s new file mode 100644 index 00000000..00cc0d6e --- /dev/null +++ b/c64/basic/a7e4.gone.s @@ -0,0 +1,13 @@ + +// +// Official BASIC routine, described in: +// +// - [RG64] C64 Programmer's Reference Guide - XXX +// - [CM64] Compute's Mapping the Commodore 64 - page 70, XXX +// +// CPU registers that has to be preserved (see [RG64]): XXX +// + + +GONE: + rts // XXX implement this diff --git a/c64/basic/a7e4.interop b/c64/basic/a7e4.interop new file mode 100644 index 00000000..ac77e1bd --- /dev/null +++ b/c64/basic/a7e4.interop @@ -0,0 +1,9 @@ +All the BASIC routines, for which there are vectors in $0300-$030B, have to be available at their original addresses. + +Reason: some autostart software (https://codebase64.org/doku.php?id=base:autostarting_disk_files) override these vectors, so that some point +to new locations (usually Kernal related), while others points the original BASIC routines. Different techniques modify different vectors +(while resetting others to original C64 locations), some don't change the vectors at all, but might still put the original +C64 BASIC addresses there. + +For various cartridges this just means disabling their extensions (like new commands); for us that would mean improperly functionning BASIC. + diff --git a/c64/basic/ae86.eval.s b/c64/basic/ae86.eval.s new file mode 100644 index 00000000..3d8b0116 --- /dev/null +++ b/c64/basic/ae86.eval.s @@ -0,0 +1,13 @@ + +// +// Official BASIC routine, described in: +// +// - [RG64] C64 Programmer's Reference Guide - XXX +// - [CM64] Compute's Mapping the Commodore 64 - page 70, XXX +// +// CPU registers that has to be preserved (see [RG64]): XXX +// + + +EVAL: + rts // XXX implement this diff --git a/c64/basic/ae86.interop b/c64/basic/ae86.interop new file mode 100644 index 00000000..ac77e1bd --- /dev/null +++ b/c64/basic/ae86.interop @@ -0,0 +1,9 @@ +All the BASIC routines, for which there are vectors in $0300-$030B, have to be available at their original addresses. + +Reason: some autostart software (https://codebase64.org/doku.php?id=base:autostarting_disk_files) override these vectors, so that some point +to new locations (usually Kernal related), while others points the original BASIC routines. Different techniques modify different vectors +(while resetting others to original C64 locations), some don't change the vectors at all, but might still put the original +C64 BASIC addresses there. + +For various cartridges this just means disabling their extensions (like new commands); for us that would mean improperly functionning BASIC. + diff --git a/c64/basic/e38b.error.s b/c64/basic/e38b.error.s new file mode 100644 index 00000000..eb0fe611 --- /dev/null +++ b/c64/basic/e38b.error.s @@ -0,0 +1,13 @@ + +// +// Official BASIC routine, described in: +// +// - [RG64] C64 Programmer's Reference Guide - XXX +// - [CM64] Compute's Mapping the Commodore 64 - page 69, XXX +// +// CPU registers that has to be preserved (see [RG64]): XXX +// + + +ERROR: + rts // XXX implement this diff --git a/c64/basic/e38b.interop b/c64/basic/e38b.interop new file mode 100644 index 00000000..ac77e1bd --- /dev/null +++ b/c64/basic/e38b.interop @@ -0,0 +1,9 @@ +All the BASIC routines, for which there are vectors in $0300-$030B, have to be available at their original addresses. + +Reason: some autostart software (https://codebase64.org/doku.php?id=base:autostarting_disk_files) override these vectors, so that some point +to new locations (usually Kernal related), while others points the original BASIC routines. Different techniques modify different vectors +(while resetting others to original C64 locations), some don't change the vectors at all, but might still put the original +C64 BASIC addresses there. + +For various cartridges this just means disabling their extensions (like new commands); for us that would mean improperly functionning BASIC. +