From 802890ff9cb151d062c630848d56d62235b0a899 Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Mon, 5 Aug 2019 19:14:38 +0200 Subject: [PATCH] started working on autostart software support --- STATUS.md | 2 +- c64/kernal/ea31.interop | 8 ++++++++ c64/kernal/{getin.s => f13e.getin.s} | 0 c64/kernal/f13e.interop | 8 ++++++++ c64/kernal/{chrin.s => f157.chrin.s} | 0 c64/kernal/f157.interop | 8 ++++++++ c64/kernal/f1ca.interop | 8 ++++++++ c64/kernal/f20e.interop | 8 ++++++++ c64/kernal/f250.interop | 8 ++++++++ c64/kernal/{close.s => f291.close.s} | 0 c64/kernal/f291.interop | 8 ++++++++ c64/kernal/{clall.s => f32f.clall.s} | 0 c64/kernal/f32f.interop | 8 ++++++++ c64/kernal/f333.interop | 8 ++++++++ c64/kernal/f34a.interop | 8 ++++++++ c64/kernal/{open.s => f34a.open.s} | 0 c64/kernal/f4a5.interop | 8 ++++++++ c64/kernal/{load.s => f4a5.load.s} | 0 c64/kernal/f5ed.interop | 8 ++++++++ c64/kernal/{save.s => f5ed.save.s} | 0 c64/kernal/f6ed.interop | 8 ++++++++ c64/kernal/{stop.s => f6ed.stop.s} | 0 c64/kernal/fe47.interop | 8 ++++++++ c64/kernal/fe66.interop | 8 ++++++++ c64/kernal/vector_defaults.s | 16 ++++++++-------- 25 files changed, 129 insertions(+), 9 deletions(-) create mode 100644 c64/kernal/ea31.interop rename c64/kernal/{getin.s => f13e.getin.s} (100%) create mode 100644 c64/kernal/f13e.interop rename c64/kernal/{chrin.s => f157.chrin.s} (100%) create mode 100644 c64/kernal/f157.interop create mode 100644 c64/kernal/f1ca.interop create mode 100644 c64/kernal/f20e.interop create mode 100644 c64/kernal/f250.interop rename c64/kernal/{close.s => f291.close.s} (100%) create mode 100644 c64/kernal/f291.interop rename c64/kernal/{clall.s => f32f.clall.s} (100%) create mode 100644 c64/kernal/f32f.interop create mode 100644 c64/kernal/f333.interop create mode 100644 c64/kernal/f34a.interop rename c64/kernal/{open.s => f34a.open.s} (100%) create mode 100644 c64/kernal/f4a5.interop rename c64/kernal/{load.s => f4a5.load.s} (100%) create mode 100644 c64/kernal/f5ed.interop rename c64/kernal/{save.s => f5ed.save.s} (100%) create mode 100644 c64/kernal/f6ed.interop rename c64/kernal/{stop.s => f6ed.stop.s} (100%) create mode 100644 c64/kernal/fe47.interop create mode 100644 c64/kernal/fe66.interop diff --git a/STATUS.md b/STATUS.md index 286da229..77ec702d 100644 --- a/STATUS.md +++ b/STATUS.md @@ -30,7 +30,7 @@ The following ROM features are currently missing: Features currently being worked on: -* IEC support needs more testing ang bugfixing; alternative drive ROMs (JiffyDOS, DolphinDOS, etc) usually don't work with current implementation, `@$` leaves the drive led on, most likely other problems can be found +* IEC support needs more work; alternative drive ROMs (JiffyDOS, DolphinDOS, etc) usually don't work with current implementation, SAVE / VERIFY are not implemented, etc. # API status diff --git a/c64/kernal/ea31.interop b/c64/kernal/ea31.interop new file mode 100644 index 00000000..09ebb21a --- /dev/null +++ b/c64/kernal/ea31.interop @@ -0,0 +1,8 @@ +All the Kernal routines, for which there are vectors in $0314-$0333, 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 (custom IRQ routine, custom STOP routine, etc.), while others points the original Kernal 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 Kernal addresses there (for example, if the file overrides keyboard input buffer and screeen memory). + +For various cartridges (like IDE64) this just means disabling their extensions; for us that would mean improperly functionning Kernal. diff --git a/c64/kernal/getin.s b/c64/kernal/f13e.getin.s similarity index 100% rename from c64/kernal/getin.s rename to c64/kernal/f13e.getin.s diff --git a/c64/kernal/f13e.interop b/c64/kernal/f13e.interop new file mode 100644 index 00000000..09ebb21a --- /dev/null +++ b/c64/kernal/f13e.interop @@ -0,0 +1,8 @@ +All the Kernal routines, for which there are vectors in $0314-$0333, 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 (custom IRQ routine, custom STOP routine, etc.), while others points the original Kernal 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 Kernal addresses there (for example, if the file overrides keyboard input buffer and screeen memory). + +For various cartridges (like IDE64) this just means disabling their extensions; for us that would mean improperly functionning Kernal. diff --git a/c64/kernal/chrin.s b/c64/kernal/f157.chrin.s similarity index 100% rename from c64/kernal/chrin.s rename to c64/kernal/f157.chrin.s diff --git a/c64/kernal/f157.interop b/c64/kernal/f157.interop new file mode 100644 index 00000000..09ebb21a --- /dev/null +++ b/c64/kernal/f157.interop @@ -0,0 +1,8 @@ +All the Kernal routines, for which there are vectors in $0314-$0333, 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 (custom IRQ routine, custom STOP routine, etc.), while others points the original Kernal 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 Kernal addresses there (for example, if the file overrides keyboard input buffer and screeen memory). + +For various cartridges (like IDE64) this just means disabling their extensions; for us that would mean improperly functionning Kernal. diff --git a/c64/kernal/f1ca.interop b/c64/kernal/f1ca.interop new file mode 100644 index 00000000..09ebb21a --- /dev/null +++ b/c64/kernal/f1ca.interop @@ -0,0 +1,8 @@ +All the Kernal routines, for which there are vectors in $0314-$0333, 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 (custom IRQ routine, custom STOP routine, etc.), while others points the original Kernal 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 Kernal addresses there (for example, if the file overrides keyboard input buffer and screeen memory). + +For various cartridges (like IDE64) this just means disabling their extensions; for us that would mean improperly functionning Kernal. diff --git a/c64/kernal/f20e.interop b/c64/kernal/f20e.interop new file mode 100644 index 00000000..09ebb21a --- /dev/null +++ b/c64/kernal/f20e.interop @@ -0,0 +1,8 @@ +All the Kernal routines, for which there are vectors in $0314-$0333, 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 (custom IRQ routine, custom STOP routine, etc.), while others points the original Kernal 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 Kernal addresses there (for example, if the file overrides keyboard input buffer and screeen memory). + +For various cartridges (like IDE64) this just means disabling their extensions; for us that would mean improperly functionning Kernal. diff --git a/c64/kernal/f250.interop b/c64/kernal/f250.interop new file mode 100644 index 00000000..09ebb21a --- /dev/null +++ b/c64/kernal/f250.interop @@ -0,0 +1,8 @@ +All the Kernal routines, for which there are vectors in $0314-$0333, 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 (custom IRQ routine, custom STOP routine, etc.), while others points the original Kernal 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 Kernal addresses there (for example, if the file overrides keyboard input buffer and screeen memory). + +For various cartridges (like IDE64) this just means disabling their extensions; for us that would mean improperly functionning Kernal. diff --git a/c64/kernal/close.s b/c64/kernal/f291.close.s similarity index 100% rename from c64/kernal/close.s rename to c64/kernal/f291.close.s diff --git a/c64/kernal/f291.interop b/c64/kernal/f291.interop new file mode 100644 index 00000000..09ebb21a --- /dev/null +++ b/c64/kernal/f291.interop @@ -0,0 +1,8 @@ +All the Kernal routines, for which there are vectors in $0314-$0333, 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 (custom IRQ routine, custom STOP routine, etc.), while others points the original Kernal 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 Kernal addresses there (for example, if the file overrides keyboard input buffer and screeen memory). + +For various cartridges (like IDE64) this just means disabling their extensions; for us that would mean improperly functionning Kernal. diff --git a/c64/kernal/clall.s b/c64/kernal/f32f.clall.s similarity index 100% rename from c64/kernal/clall.s rename to c64/kernal/f32f.clall.s diff --git a/c64/kernal/f32f.interop b/c64/kernal/f32f.interop new file mode 100644 index 00000000..09ebb21a --- /dev/null +++ b/c64/kernal/f32f.interop @@ -0,0 +1,8 @@ +All the Kernal routines, for which there are vectors in $0314-$0333, 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 (custom IRQ routine, custom STOP routine, etc.), while others points the original Kernal 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 Kernal addresses there (for example, if the file overrides keyboard input buffer and screeen memory). + +For various cartridges (like IDE64) this just means disabling their extensions; for us that would mean improperly functionning Kernal. diff --git a/c64/kernal/f333.interop b/c64/kernal/f333.interop new file mode 100644 index 00000000..09ebb21a --- /dev/null +++ b/c64/kernal/f333.interop @@ -0,0 +1,8 @@ +All the Kernal routines, for which there are vectors in $0314-$0333, 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 (custom IRQ routine, custom STOP routine, etc.), while others points the original Kernal 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 Kernal addresses there (for example, if the file overrides keyboard input buffer and screeen memory). + +For various cartridges (like IDE64) this just means disabling their extensions; for us that would mean improperly functionning Kernal. diff --git a/c64/kernal/f34a.interop b/c64/kernal/f34a.interop new file mode 100644 index 00000000..09ebb21a --- /dev/null +++ b/c64/kernal/f34a.interop @@ -0,0 +1,8 @@ +All the Kernal routines, for which there are vectors in $0314-$0333, 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 (custom IRQ routine, custom STOP routine, etc.), while others points the original Kernal 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 Kernal addresses there (for example, if the file overrides keyboard input buffer and screeen memory). + +For various cartridges (like IDE64) this just means disabling their extensions; for us that would mean improperly functionning Kernal. diff --git a/c64/kernal/open.s b/c64/kernal/f34a.open.s similarity index 100% rename from c64/kernal/open.s rename to c64/kernal/f34a.open.s diff --git a/c64/kernal/f4a5.interop b/c64/kernal/f4a5.interop new file mode 100644 index 00000000..09ebb21a --- /dev/null +++ b/c64/kernal/f4a5.interop @@ -0,0 +1,8 @@ +All the Kernal routines, for which there are vectors in $0314-$0333, 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 (custom IRQ routine, custom STOP routine, etc.), while others points the original Kernal 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 Kernal addresses there (for example, if the file overrides keyboard input buffer and screeen memory). + +For various cartridges (like IDE64) this just means disabling their extensions; for us that would mean improperly functionning Kernal. diff --git a/c64/kernal/load.s b/c64/kernal/f4a5.load.s similarity index 100% rename from c64/kernal/load.s rename to c64/kernal/f4a5.load.s diff --git a/c64/kernal/f5ed.interop b/c64/kernal/f5ed.interop new file mode 100644 index 00000000..09ebb21a --- /dev/null +++ b/c64/kernal/f5ed.interop @@ -0,0 +1,8 @@ +All the Kernal routines, for which there are vectors in $0314-$0333, 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 (custom IRQ routine, custom STOP routine, etc.), while others points the original Kernal 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 Kernal addresses there (for example, if the file overrides keyboard input buffer and screeen memory). + +For various cartridges (like IDE64) this just means disabling their extensions; for us that would mean improperly functionning Kernal. diff --git a/c64/kernal/save.s b/c64/kernal/f5ed.save.s similarity index 100% rename from c64/kernal/save.s rename to c64/kernal/f5ed.save.s diff --git a/c64/kernal/f6ed.interop b/c64/kernal/f6ed.interop new file mode 100644 index 00000000..09ebb21a --- /dev/null +++ b/c64/kernal/f6ed.interop @@ -0,0 +1,8 @@ +All the Kernal routines, for which there are vectors in $0314-$0333, 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 (custom IRQ routine, custom STOP routine, etc.), while others points the original Kernal 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 Kernal addresses there (for example, if the file overrides keyboard input buffer and screeen memory). + +For various cartridges (like IDE64) this just means disabling their extensions; for us that would mean improperly functionning Kernal. diff --git a/c64/kernal/stop.s b/c64/kernal/f6ed.stop.s similarity index 100% rename from c64/kernal/stop.s rename to c64/kernal/f6ed.stop.s diff --git a/c64/kernal/fe47.interop b/c64/kernal/fe47.interop new file mode 100644 index 00000000..09ebb21a --- /dev/null +++ b/c64/kernal/fe47.interop @@ -0,0 +1,8 @@ +All the Kernal routines, for which there are vectors in $0314-$0333, 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 (custom IRQ routine, custom STOP routine, etc.), while others points the original Kernal 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 Kernal addresses there (for example, if the file overrides keyboard input buffer and screeen memory). + +For various cartridges (like IDE64) this just means disabling their extensions; for us that would mean improperly functionning Kernal. diff --git a/c64/kernal/fe66.interop b/c64/kernal/fe66.interop new file mode 100644 index 00000000..09ebb21a --- /dev/null +++ b/c64/kernal/fe66.interop @@ -0,0 +1,8 @@ +All the Kernal routines, for which there are vectors in $0314-$0333, 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 (custom IRQ routine, custom STOP routine, etc.), while others points the original Kernal 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 Kernal addresses there (for example, if the file overrides keyboard input buffer and screeen memory). + +For various cartridges (like IDE64) this just means disabling their extensions; for us that would mean improperly functionning Kernal. diff --git a/c64/kernal/vector_defaults.s b/c64/kernal/vector_defaults.s index 962cd3c5..67e7791a 100644 --- a/c64/kernal/vector_defaults.s +++ b/c64/kernal/vector_defaults.s @@ -8,19 +8,19 @@ vector_defaults: .word default_irq_handler ;; CINV - .word $0000 ;; CBINV XXX implement this - .word $0000 ;; NMINV XXX implement this + .word $0000 ;; CBINV XXX implement this, has to be $FE66 for autostart support + .word $0000 ;; NMINV XXX implement this, has to be $FE47 for autostart support .word open ;; IOPEN .word close ;; ICLOSE - .word chkin ;; ICHKIN - .word ckout ;; ICKOUT - .word clrchn ;; ICLRCH + .word chkin ;; ICHKIN XXX move routine to $F20E - for autostart support + .word ckout ;; ICKOUT XXX move routine to $F250 - for autostart support + .word clrchn ;; ICLRCH XXX move routine to $F333 - for autostart support .word chrin ;; IBASIN - .word chrout ;; IBSOUT + .word chrout ;; IBSOUT XXX move routine to $F1CA - for autostart support .word stop ;; ISTOP .word getin ;; IGETIN .word clall ;; ICLALL - .word $0000 ;; USRCMD XXX implement this - .word load ;; ILOAD + .word $0000 ;; USRCMD XXX implement this, has to be $FE66 for autostart support + .word load ;; ILOAD .word save ;; ISAVE