added more stubs, updated documentation
This commit is contained in:
1 parent
123e5e46c3
commit
8fce9681be
14 files changed
+149
-69
No files matched your search
@@ -52,79 +52,109 @@ Note: vectors at `$0300` are not supported yet - for now only the locations belo
|
|||||||
|
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
| Address | Name | Status | Remarks |
|
| Entry | Unofficial | Name | Status | Remarks |
|
||||||
| :-------: | :---------------- | :------: | :------------------------------------------------: |
|
| :-------: | :--------: | :--------- | :------: | :------------------------------------------------: |
|
||||||
| `($A000)` | cold start vector | PARTIAL | |
|
| | `$E38B` | `ERROR` | NOT DONE | |
|
||||||
| `($A002)` | warm start vector | PARTIAL | |
|
| | `$A483` | `MAIN` | NOT DONE | some implementation exists, but not connected here |
|
||||||
| `$A483` | `MAIN` | NOT DONE | some implementation exists, but not connected here |
|
| | `$A57C` | `CHRNCH` | NOT DONE | |
|
||||||
| `$A57C` | `CHRNCH` | NOT DONE | |
|
| | `$A71A` | `QPLOP` | NOT DONE | some implementation exists, but not connected here |
|
||||||
| `$A71A` | `QPLOP` | NOT DONE | some implementation exists, but not connected here |
|
| | `$A7E4` | `GONE` | NOT DONE | some implementation exists, but not connected here |
|
||||||
| `$A7E4` | `GONE` | NOT DONE | some implementation exists, but not connected here |
|
| | `$AE86` | `EVAL` | NOT DONE | some implementation exists, but not connected here |
|
||||||
| `$AE86` | `EVAL` | NOT DONE | some implementation exists, but not connected here |
|
| `($A000)` | | cold start | PARTIAL | |
|
||||||
| `$E38B` | `ERROR` | NOT DONE | |
|
| `($A002)` | | warm start | PARTIAL | |
|
||||||
|
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
|
### Unofficial BASIC routines/locations
|
||||||
|
|
||||||
|
Not all of them - only these we want to have implemented.
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
|
| Address | Name | Status | Remarks |
|
||||||
|
| :-------: | :----------- | :------: | :------------------------------------------------: |
|
||||||
|
| `$A004` | revision str | DONE | |
|
||||||
|
| `$A68E` | RUNC | NOT DONE | |
|
||||||
|
| `$A7AE` | NEWSTT | NOT DONE | |
|
||||||
|
| `$AB1E` | STROUT | DONE | |
|
||||||
|
| `$BDCD` | LINPRT | NOT DONE | |
|
||||||
|
| `$E3BF` | INIT | NOT DONE | |
|
||||||
|
| `$E422` | INITMSG | NOT DONE | |
|
||||||
|
| `$E453` | RVECT | NOT DONE | |
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
## Kernal
|
## Kernal
|
||||||
|
|
||||||
|
|
||||||
Note: only the jump table addresses are fully supported, real routine addresses are sometimes different!
|
|
||||||
|
|
||||||
|
|
||||||
### Official Kernal routines
|
### Official Kernal routines
|
||||||
|
|
||||||
NOTE: Even the 'DONE' routines won't support features described as missing in one of the previous chapters!
|
NOTE: Even the 'DONE' routines won't support features described as missing in one of the previous chapters!
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
| Address | Name | Status | Remarks |
|
| Address | Unofficial | Name | Status | Remarks |
|
||||||
| :-------: | :------- | :------: | :------------------------------------------------: |
|
| :-------: | :--------: | :---------- | :------: | :------------------------------------------------: |
|
||||||
| `$FF81` | `CINT` | DONE | |
|
| `$FF81` | `$FF5B` | `CINT` | DONE | |
|
||||||
| `$FF84` | `IOINIT` | PARTIAL | CIA initialization incomplete |
|
| `$FF84` | `$FDA3` | `IOINIT` | PARTIAL | CIA initialization incomplete |
|
||||||
| `$FF87` | `RAMTAS` | DONE | |
|
| `$FF87` | `$FD50` | `RAMTAS` | DONE | |
|
||||||
| `$FF8A` | `RESTOR` | DONE | |
|
| `$FF8A` | | `RESTOR` | DONE | |
|
||||||
| `$FF8D` | `VECTOR` | DONE | |
|
| `$FF8D` | `$FD15` | `VECTOR` | PARTIAL | wrong address, code starts from RESTOR |
|
||||||
| `$FF90` | `SETMSG` | DONE | |
|
| `$FF90` | | `SETMSG` | DONE | |
|
||||||
| `$FF93` | `SECOND` | DONE | |
|
| `$FF93` | | `SECOND` | DONE | |
|
||||||
| `$FF96` | `TKSA` | DONE | |
|
| `$FF96` | | `TKSA` | DONE | |
|
||||||
| `$FF99` | `MEMTOP` | DONE | |
|
| `$FF99` | | `MEMTOP` | DONE | |
|
||||||
| `$FF9C` | `MEMBOT` | DONE | |
|
| `$FF9C` | | `MEMBOT` | DONE | |
|
||||||
| `$FF9F` | `SCNKEY` | DONE | could be better integrated with ROM (aliases) |
|
| `$FF9F` | | `SCNKEY` | DONE | could be better integrated with ROM (aliases) |
|
||||||
| `$FFA2` | `SETTMO` | DONE | |
|
| `$FFA2` | | `SETTMO` | DONE | |
|
||||||
| `$FFA5` | `ACPTR` | DONE | |
|
| `$FFA5` | | `ACPTR` | DONE | |
|
||||||
| `$FFA8` | `CIOUT` | DONE | |
|
| `$FFA8` | | `CIOUT` | DONE | |
|
||||||
| `$FFAB` | `UNTLK` | DONE | |
|
| `$FFAB` | | `UNTLK` | DONE | |
|
||||||
| `$FFAE` | `UNLSN` | DONE | |
|
| `$FFAE` | | `UNLSN` | DONE | |
|
||||||
| `$FFB1` | `LISTEN` | DONE | |
|
| `$FFB1` | | `LISTEN` | DONE | |
|
||||||
| `$FFB4` | `TALK` | DONE | |
|
| `$FFB4` | | `TALK` | DONE | |
|
||||||
| `$FFB7` | `READST` | DONE | |
|
| `$FFB7` | | `READST` | DONE | |
|
||||||
| `$FFBA` | `SETFLS` | DONE | |
|
| `$FFBA` | | `SETFLS` | DONE | |
|
||||||
| `$FFBD` | `SETNAM` | DONE | |
|
| `$FFBD` | | `SETNAM` | DONE | |
|
||||||
| `$FFC0` | `OPEN` | DONE | |
|
| `$FFC0` | `$F34A` | `OPEN` | DONE | |
|
||||||
| `$FFC3` | `CLOSE` | DONE | |
|
| `$FFC3` | `$F291` | `CLOSE` | DONE | |
|
||||||
| `$FFC6` | `CHKIN` | DONE | |
|
| `$FFC6` | `$F20E` | `CHKIN` | DONE | |
|
||||||
| `$FFC9` | `CHKOUT` | PARTIAL | |
|
| `$FFC9` | `$F250` | `CKOUT` | PARTIAL | |
|
||||||
| `$FFCC` | `CLRCHN` | DONE | |
|
| `$FFCC` | `$F333` | `CLRCHN` | DONE | |
|
||||||
| `$FFCF` | `CHRIN` | PARTIAL | |
|
| `$FFCF` | `$F157` | `CHRIN` | PARTIAL | |
|
||||||
| `$FFD2` | `CHROUT` | PARTIAL | |
|
| `$FFD2` | `$F1CA` | `CHROUT` | PARTIAL | |
|
||||||
| `$FFD5` | `LOAD` | PARTIAL | no VERIFY support yet, no STOP key support |
|
| `$FFD5` | `$F4A5` | `LOAD` | PARTIAL | no VERIFY support, no STOP key, check $F49E addr |
|
||||||
| `$FFD8` | `SAVE` | NOT DONE | |
|
| `$FFD8` | `$F5ED` | `SAVE` | NOT DONE | check $F5DD location |
|
||||||
| `$FFDB` | `SETTIM` | DONE | |
|
| `$FFDB` | | `SETTIM` | DONE | |
|
||||||
| `$FFDE` | `RDTIM` | DONE | |
|
| `$FFDE` | | `RDTIM` | DONE | |
|
||||||
| `$FFE1` | `STOP` | DONE | |
|
| `$FFE1` | `$F6ED` | `STOP` | DONE | |
|
||||||
| `$FFE4` | `GETIN` | PARTIAL | only some devices supported |
|
| `$FFE4` | `$F13E` | `GETIN` | PARTIAL | only some devices supported |
|
||||||
| `$FFE7` | `CLALL` | DONE | |
|
| `$FFE7` | `$F32F` | `CLALL` | DONE | |
|
||||||
| `$FFEA` | `UDTIM` | DONE | |
|
| `$FFEA` | | `UDTIM` | DONE | |
|
||||||
| `$FFED` | `SCREEN` | DONE | |
|
| `$FFED` | | `SCREEN` | DONE | |
|
||||||
| `$FFF0` | `PLOT` | PARTIAL | cursor blink not handled |
|
| `$FFF0` | | `PLOT` | PARTIAL | cursor blink not handled |
|
||||||
| `$FFF3` | `IOBASE` | DONE | |
|
| `$FFF3` | | `IOBASE` | DONE | |
|
||||||
| `($FFFA)` | NMI vector | PARTIAL | |
|
| `($FFFA)` | | NMI vec | PARTIAL | |
|
||||||
| `($FFFC)` | RESET vector | PARTIAL | |
|
| `($FFFC)` | | RESET vec | PARTIAL | |
|
||||||
| `($FFFE)` | IRQ/BRK vector | PARTIAL | |
|
| `($FFFE)` | | IRQ/BRK vec | PARTIAL | |
|
||||||
|
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
### Unofficial Kernal locations
|
### Unofficial Kernal routines/locations
|
||||||
|
|
||||||
TODO
|
Not all of them - only these we want to have implemented.
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
|
| Address | Name | Status | Remarks |
|
||||||
|
| :-------: | :--------------- | :------: | :------------------------------------------------: |
|
||||||
|
| `$E544` | clear screen | DONE | |
|
||||||
|
| `$E5A0` | setup VIC II | DONE | |
|
||||||
|
| `$EA31` | default IRQ | PARTIAL | |
|
||||||
|
| `$EA7E` | ack CIA1 + below | DONE | |
|
||||||
|
| `$EA81` | ret from IRQ/NMI | DONE | |
|
||||||
|
| `$FE47` | default NMI | PARTIAL | |
|
||||||
|
| `$FE66` | default BRK | DONE | |
|
||||||
|
| `$FF80` | revision byte | DONE | |
|
||||||
|
|
||||||
|
<br />
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
This routine is mentionned in the cartridge writing tutorial here: https://codebase64.org/doku.php?id=base:assembling_your_own_cart_rom_image
|
||||||
|
|
||||||
|
We have to implement (or at least provide stub), otherwise cartridges will crash.
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
|
||||||
|
// XXX provide documentation and implementation
|
||||||
|
|
||||||
|
RUNC:
|
||||||
|
rts
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
This routine is mentionned in the cartridge writing tutorial here: https://codebase64.org/doku.php?id=base:assembling_your_own_cart_rom_image
|
||||||
|
|
||||||
|
We have to implement (or at least provide stub), otherwise cartridges will crash.
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
|
||||||
|
// XXX provide documentation and implementation
|
||||||
|
|
||||||
|
NEWSTT:
|
||||||
|
rts
|
||||||
@@ -1,7 +1,9 @@
|
|||||||
// Print string at $YYAA
|
// Print string at $YYAA
|
||||||
// Compute's Mapping the 64 p101
|
// Compute's Mapping the 64 p101
|
||||||
|
|
||||||
print_string:
|
// print string routine
|
||||||
|
|
||||||
|
STROUT:
|
||||||
// Setup pointer
|
// Setup pointer
|
||||||
sty temp_string_ptr+1
|
sty temp_string_ptr+1
|
||||||
sta temp_string_ptr+0
|
sta temp_string_ptr+0
|
||||||
@@ -11,14 +13,13 @@ print_string:
|
|||||||
|
|
||||||
// Get offset ready
|
// Get offset ready
|
||||||
ldy #$00
|
ldy #$00
|
||||||
|
!:
|
||||||
print_string_loop:
|
|
||||||
// Save Y in X, since X is preserved by chrout, but Y is not
|
// Save Y in X, since X is preserved by chrout, but Y is not
|
||||||
tya
|
tya
|
||||||
tax
|
tax
|
||||||
|
|
||||||
lda (temp_string_ptr),y
|
lda (temp_string_ptr),y
|
||||||
beq print_string_end
|
beq !+
|
||||||
|
|
||||||
jsr JCHROUT
|
jsr JCHROUT
|
||||||
|
|
||||||
@@ -26,10 +27,8 @@ print_string_loop:
|
|||||||
tay
|
tay
|
||||||
|
|
||||||
iny
|
iny
|
||||||
bne print_string_loop
|
bne !-
|
||||||
|
!:
|
||||||
print_string_end:
|
|
||||||
|
|
||||||
pla
|
pla
|
||||||
tax
|
tax
|
||||||
rts
|
rts
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
At least the FB64 (a file browser) uses this routine - but outputting number as ASCI is defintelyy useful routine, certainly much more programs use it.
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
|
||||||
|
//
|
||||||
|
// Well-known BASIC routine, described in:
|
||||||
|
//
|
||||||
|
// - [CM64] Compute's Mapping the Commodore 64 - page 116, XXX
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
LINPRT:
|
||||||
|
rts // XXX implement this
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
|
||||||
|
// XXX provide documentation and implementation
|
||||||
|
|
||||||
|
INIT:
|
||||||
|
rts
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
This routine is mentionned in the cartridge writing tutorial here: https://codebase64.org/doku.php?id=base:assembling_your_own_cart_rom_image
|
||||||
|
|
||||||
|
We have to implement (or at least provide stub), otherwise cartridges will crash.
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
|
||||||
|
// XXX provide documentation and implementation
|
||||||
|
|
||||||
|
INITMSG:
|
||||||
|
rts
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
This routine is mentionned in the cartridge writing tutorial here: https://codebase64.org/doku.php?id=base:assembling_your_own_cart_rom_image
|
||||||
|
|
||||||
|
We have to implement (or at least provide stub), otherwise cartridges will crash.
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
This routine is mentionned in the cartridge writing tutorial here: https://codebase64.org/doku.php?id=base:assembling_your_own_cart_rom_image
|
||||||
|
|
||||||
|
We have to implement (or at least provide stub), otherwise cartridges will crash.
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
|
||||||
|
// XXX provide documentation and implementation
|
||||||
|
|
||||||
|
RVECT:
|
||||||
|
rts
|
||||||
Reference in new issue
Block a user