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
@@ -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 | |
|
||||
|
||||
@@ -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