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