fixed VECTOR defaults location, needed by GEOS
This commit is contained in:
1 parent
6949bd3f48
commit
571efdd03d
5 files changed
+33
-29
No files matched your search
@@ -0,0 +1,24 @@
|
||||
|
||||
//
|
||||
// Official Kernal routine, described in:
|
||||
//
|
||||
// - [RG64] C64 Programmer's Reference Guide - page 293 (RESTOR), 304 (VECTOR)
|
||||
// - [CM64] Compute's Mapping the Commodore 64 - page 237
|
||||
//
|
||||
// CPU registers that has to be preserved (see [RG64]): none
|
||||
//
|
||||
|
||||
RESTOR:
|
||||
|
||||
clc // clear carry - for writing to system table
|
||||
ldx #<vector_defaults
|
||||
ldy #>vector_defaults
|
||||
|
||||
// FALLTHROUGH
|
||||
|
||||
VECTOR:
|
||||
|
||||
// Our implementation is longer than the original one,
|
||||
// placing it here would cause a collision with VECTOR defaults
|
||||
|
||||
jmp vector_real
|
||||
@@ -0,0 +1,3 @@
|
||||
Location of the default Kernal vector values, described in Compute's Mapping the Commodore 64, page 237
|
||||
|
||||
It is referenced by GEOS - see https://github.com/mist64/geos/blob/master/inc/c64.inc
|
||||
File renamed without changes.
@@ -1,22 +1,5 @@
|
||||
|
||||
//
|
||||
// Official Kernal routine, described in:
|
||||
//
|
||||
// - [RG64] C64 Programmer's Reference Guide - page 293 (RESTOR), 304 (VECTOR)
|
||||
// - [CM64] Compute's Mapping the Commodore 64 - page 237
|
||||
//
|
||||
// CPU registers that has to be preserved (see [RG64]): none
|
||||
//
|
||||
|
||||
RESTOR:
|
||||
|
||||
clc // clear carry - for writing to system table
|
||||
ldx #<vector_defaults
|
||||
ldy #>vector_defaults
|
||||
|
||||
// FALLTHROUGH
|
||||
|
||||
VECTOR:
|
||||
vector_real:
|
||||
|
||||
// Temporary storage location - checked on real C64 that this is the
|
||||
// address originally used; after calling VECTOR and checking zero page
|
||||
@@ -41,17 +24,10 @@ VECTOR:
|
||||
ldy #$1F
|
||||
bcc vector_restore
|
||||
|
||||
// FALLTHROUGH
|
||||
|
||||
vector_store:
|
||||
lda CINV, y
|
||||
sta (_caller_arr_ptr), y
|
||||
dey
|
||||
bpl vector_store
|
||||
|
||||
// Restore status register (IRQ) before return
|
||||
plp
|
||||
rts
|
||||
|
||||
// FALLTHROUGH
|
||||
|
||||
vector_restore:
|
||||
lda (_caller_arr_ptr), y
|
||||
Reference in new issue
Block a user