update information and add first few routines.

This commit is contained in:
Paul Gardner-Stephen committed 2019-04-17 04:53:50 +09:30
1 parent 6bb9d8abd0
commit c336252105
5 files changed
+52 -1

No files matched your search

+9
View File
@@ -0,0 +1,9 @@
; $FFF3 - Get page of IO devices
; Returns Y=$DC, X=$00
; (http://codebase64.org/doku.php?id=base:kernalreference)
;
; As there is nothing between here and $FFFA, we can just hard code this in place.
LDY #$DC
LDX #$00
RTS
+4
View File
@@ -0,0 +1,4 @@
; $FFFA - CPU NMI Hanlder
; Uncontrovertial as this is also a CPU requirement.
.word nmi_handler
+4
View File
@@ -0,0 +1,4 @@
; $FFFC - CPU Reset Vector
; Uncontrovertial, as it is a CPU requirement, and nothing else.
.word reset_entry
+5
View File
@@ -0,0 +1,5 @@
; $FFFE - CPU IRQ Vector.
; This is non-controvertial, as it is a 6502 CPU requirement, and we just have to point
; it to whatever IRQ routine we make.
.word irq_handler
+30 -1
View File
@@ -1,7 +1,36 @@
# Public Interfaces of the C64 KERNAL
# Focus must be on interoperability
In terms of the goal of ensuring interoperability, it is vital that the public interfaces match.
We believe that this activity very closely matches that described in section 12 of
http://classic.austlii.edu.au/au/journals/JlLawInfoSci/2003/2.html
and thus is allowable.
From an interoperability perspective, we should ideally justify why each function, memory location
etc is required, by providing an example existing C64 program that will fail if it is not correct,
thus establishing that every single thing is required for interoperability.
Also, where there are similarities to the original in any routine, these should also ideally be
justified by again finding software that does not work if the content is changed.
# C64 KERNAL Memory Range
While the KERNAL is often referred to as the ROM from $E000-$FFFF, analysis of publicly
available disassemblies, such as https://github.com/mist64/c64rom/blob/master/c64rom_en.txt,
reveal that the KERNAL actually is only the part $E4D3-$FFFF -- the earlier part actually
being parts of the BASIC ROM that did not fit in the 8KB BASIC ROM.
Notably, the boot message of a C64 is thus part of the BASIC, and not the KERNAL.
Thus switching the KERNAL part will not change the boot message. That will occur only
when the BASIC ROM is also replaced.
# Public jump table
# ZP and other well-known RAM usage
The KERNAL uses $90-$FF for various things,
$100-$13D as temporary storage of tape data,
$259-$2A6 for various housekeeping things.
$0314-$0333 for vectors
$033C-$03FB for casette data buffer
Reference: http://sta.c64.org/cbm64mem.html