fixed VECTOR defaults location, needed by GEOS

This commit is contained in:
FeralChild64 committed 2019-09-24 18:52:48 +02:00
1 parent 6949bd3f48
commit 571efdd03d
5 files changed
+33 -29

No files matched your search

+3 -2
View File
@@ -98,8 +98,8 @@ NOTE: Even the 'DONE' routines won't support features described as missing in on
| `$FF81` | `$FF5B` | `CINT` | DONE | |
| `$FF84` | `$FDA3` | `IOINIT` | PARTIAL | CIA initialization incomplete |
| `$FF87` | `$FD50` | `RAMTAS` | DONE | |
| `$FF8A` | | `RESTOR` | DONE | |
| `$FF8D` | `$FD15` | `VECTOR` | PARTIAL | wrong address, code starts from RESTOR |
| `$FF8A` | `$FD15` | `RESTOR` | DONE | |
| `$FF8D` | `$FD1A` | `VECTOR` | DONE | |
| `$FF90` | | `SETMSG` | DONE | |
| `$FF93` | | `SECOND` | DONE | |
| `$FF96` | | `TKSA` | DONE | |
@@ -153,6 +153,7 @@ Not all of them - only these we want to have implemented.
| `$EA31` | default IRQ | PARTIAL | |
| `$EA7E` | ack CIA1 + below | DONE | |
| `$EA81` | ret from IRQ/NMI | DONE | |
| `$FD30` | default vectors | DONE | |
| `$FE47` | default NMI | PARTIAL | |
| `$FE66` | default BRK | DONE | |
| `$FF80` | revision byte | DONE | |
+24
View File
@@ -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
+3
View File
@@ -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