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 | |
|
| `$FF81` | `$FF5B` | `CINT` | DONE | |
|
||||||
| `$FF84` | `$FDA3` | `IOINIT` | PARTIAL | CIA initialization incomplete |
|
| `$FF84` | `$FDA3` | `IOINIT` | PARTIAL | CIA initialization incomplete |
|
||||||
| `$FF87` | `$FD50` | `RAMTAS` | DONE | |
|
| `$FF87` | `$FD50` | `RAMTAS` | DONE | |
|
||||||
| `$FF8A` | | `RESTOR` | DONE | |
|
| `$FF8A` | `$FD15` | `RESTOR` | DONE | |
|
||||||
| `$FF8D` | `$FD15` | `VECTOR` | PARTIAL | wrong address, code starts from RESTOR |
|
| `$FF8D` | `$FD1A` | `VECTOR` | DONE | |
|
||||||
| `$FF90` | | `SETMSG` | DONE | |
|
| `$FF90` | | `SETMSG` | DONE | |
|
||||||
| `$FF93` | | `SECOND` | DONE | |
|
| `$FF93` | | `SECOND` | DONE | |
|
||||||
| `$FF96` | | `TKSA` | DONE | |
|
| `$FF96` | | `TKSA` | DONE | |
|
||||||
@@ -153,6 +153,7 @@ Not all of them - only these we want to have implemented.
|
|||||||
| `$EA31` | default IRQ | PARTIAL | |
|
| `$EA31` | default IRQ | PARTIAL | |
|
||||||
| `$EA7E` | ack CIA1 + below | DONE | |
|
| `$EA7E` | ack CIA1 + below | DONE | |
|
||||||
| `$EA81` | ret from IRQ/NMI | DONE | |
|
| `$EA81` | ret from IRQ/NMI | DONE | |
|
||||||
|
| `$FD30` | default vectors | DONE | |
|
||||||
| `$FE47` | default NMI | PARTIAL | |
|
| `$FE47` | default NMI | PARTIAL | |
|
||||||
| `$FE66` | default BRK | DONE | |
|
| `$FE66` | default BRK | DONE | |
|
||||||
| `$FF80` | revision byte | 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 @@
|
|||||||
|
|
||||||
//
|
vector_real:
|
||||||
// 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:
|
|
||||||
|
|
||||||
// Temporary storage location - checked on real C64 that this is the
|
// Temporary storage location - checked on real C64 that this is the
|
||||||
// address originally used; after calling VECTOR and checking zero page
|
// address originally used; after calling VECTOR and checking zero page
|
||||||
@@ -41,17 +24,10 @@ VECTOR:
|
|||||||
ldy #$1F
|
ldy #$1F
|
||||||
bcc vector_restore
|
bcc vector_restore
|
||||||
|
|
||||||
// FALLTHROUGH
|
|
||||||
|
|
||||||
vector_store:
|
|
||||||
lda CINV, y
|
lda CINV, y
|
||||||
sta (_caller_arr_ptr), y
|
sta (_caller_arr_ptr), y
|
||||||
dey
|
|
||||||
bpl vector_store
|
// FALLTHROUGH
|
||||||
|
|
||||||
// Restore status register (IRQ) before return
|
|
||||||
plp
|
|
||||||
rts
|
|
||||||
|
|
||||||
vector_restore:
|
vector_restore:
|
||||||
lda (_caller_arr_ptr), y
|
lda (_caller_arr_ptr), y
|
||||||
Reference in new issue
Block a user