update information and add first few routines.
This commit is contained in:
1 parent
6bb9d8abd0
commit
c336252105
5 files changed
+52
-1
No files matched your search
@@ -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
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
; $FFFA - CPU NMI Hanlder
|
||||
; Uncontrovertial as this is also a CPU requirement.
|
||||
|
||||
.word nmi_handler
|
||||
@@ -0,0 +1,4 @@
|
||||
; $FFFC - CPU Reset Vector
|
||||
; Uncontrovertial, as it is a CPU requirement, and nothing else.
|
||||
|
||||
.word reset_entry
|
||||
@@ -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
|
||||
@@ -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
|
||||
Reference in new issue
Block a user