added more stubs, updated documentation

This commit is contained in:
FeralChild64 committed 2019-09-13 21:39:12 +02:00
1 parent 123e5e46c3
commit 8fce9681be
14 files changed
+149 -69

No files matched your search

+91 -61
View File
@@ -52,79 +52,109 @@ Note: vectors at `$0300` are not supported yet - for now only the locations belo
<br />
| Address | Name | Status | Remarks |
| :-------: | :---------------- | :------: | :------------------------------------------------: |
| `($A000)` | cold start vector | PARTIAL | |
| `($A002)` | warm start vector | PARTIAL | |
| `$A483` | `MAIN` | NOT DONE | some implementation exists, but not connected here |
| `$A57C` | `CHRNCH` | NOT DONE | |
| `$A71A` | `QPLOP` | 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 |
| `$E38B` | `ERROR` | NOT DONE | |
| Entry | Unofficial | Name | Status | Remarks |
| :-------: | :--------: | :--------- | :------: | :------------------------------------------------: |
| | `$E38B` | `ERROR` | NOT DONE | |
| | `$A483` | `MAIN` | NOT DONE | some implementation exists, but not connected here |
| | `$A57C` | `CHRNCH` | NOT DONE | |
| | `$A71A` | `QPLOP` | 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 |
| `($A000)` | | cold start | PARTIAL | |
| `($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 />
## Kernal
Note: only the jump table addresses are fully supported, real routine addresses are sometimes different!
### Official Kernal routines
NOTE: Even the 'DONE' routines won't support features described as missing in one of the previous chapters!
<br />
| Address | Name | Status | Remarks |
| :-------: | :------- | :------: | :------------------------------------------------: |
| `$FF81` | `CINT` | DONE | |
| `$FF84` | `IOINIT` | PARTIAL | CIA initialization incomplete |
| `$FF87` | `RAMTAS` | DONE | |
| `$FF8A` | `RESTOR` | DONE | |
| `$FF8D` | `VECTOR` | DONE | |
| `$FF90` | `SETMSG` | DONE | |
| `$FF93` | `SECOND` | DONE | |
| `$FF96` | `TKSA` | DONE | |
| `$FF99` | `MEMTOP` | DONE | |
| `$FF9C` | `MEMBOT` | DONE | |
| `$FF9F` | `SCNKEY` | DONE | could be better integrated with ROM (aliases) |
| `$FFA2` | `SETTMO` | DONE | |
| `$FFA5` | `ACPTR` | DONE | |
| `$FFA8` | `CIOUT` | DONE | |
| `$FFAB` | `UNTLK` | DONE | |
| `$FFAE` | `UNLSN` | DONE | |
| `$FFB1` | `LISTEN` | DONE | |
| `$FFB4` | `TALK` | DONE | |
| `$FFB7` | `READST` | DONE | |
| `$FFBA` | `SETFLS` | DONE | |
| `$FFBD` | `SETNAM` | DONE | |
| `$FFC0` | `OPEN` | DONE | |
| `$FFC3` | `CLOSE` | DONE | |
| `$FFC6` | `CHKIN` | DONE | |
| `$FFC9` | `CHKOUT` | PARTIAL | |
| `$FFCC` | `CLRCHN` | DONE | |
| `$FFCF` | `CHRIN` | PARTIAL | |
| `$FFD2` | `CHROUT` | PARTIAL | |
| `$FFD5` | `LOAD` | PARTIAL | no VERIFY support yet, no STOP key support |
| `$FFD8` | `SAVE` | NOT DONE | |
| `$FFDB` | `SETTIM` | DONE | |
| `$FFDE` | `RDTIM` | DONE | |
| `$FFE1` | `STOP` | DONE | |
| `$FFE4` | `GETIN` | PARTIAL | only some devices supported |
| `$FFE7` | `CLALL` | DONE | |
| `$FFEA` | `UDTIM` | DONE | |
| `$FFED` | `SCREEN` | DONE | |
| `$FFF0` | `PLOT` | PARTIAL | cursor blink not handled |
| `$FFF3` | `IOBASE` | DONE | |
| `($FFFA)` | NMI vector | PARTIAL | |
| `($FFFC)` | RESET vector | PARTIAL | |
| `($FFFE)` | IRQ/BRK vector | PARTIAL | |
| Address | Unofficial | Name | Status | Remarks |
| :-------: | :--------: | :---------- | :------: | :------------------------------------------------: |
| `$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 |
| `$FF90` | | `SETMSG` | DONE | |
| `$FF93` | | `SECOND` | DONE | |
| `$FF96` | | `TKSA` | DONE | |
| `$FF99` | | `MEMTOP` | DONE | |
| `$FF9C` | | `MEMBOT` | DONE | |
| `$FF9F` | | `SCNKEY` | DONE | could be better integrated with ROM (aliases) |
| `$FFA2` | | `SETTMO` | DONE | |
| `$FFA5` | | `ACPTR` | DONE | |
| `$FFA8` | | `CIOUT` | DONE | |
| `$FFAB` | | `UNTLK` | DONE | |
| `$FFAE` | | `UNLSN` | DONE | |
| `$FFB1` | | `LISTEN` | DONE | |
| `$FFB4` | | `TALK` | DONE | |
| `$FFB7` | | `READST` | DONE | |
| `$FFBA` | | `SETFLS` | DONE | |
| `$FFBD` | | `SETNAM` | DONE | |
| `$FFC0` | `$F34A` | `OPEN` | DONE | |
| `$FFC3` | `$F291` | `CLOSE` | DONE | |
| `$FFC6` | `$F20E` | `CHKIN` | DONE | |
| `$FFC9` | `$F250` | `CKOUT` | PARTIAL | |
| `$FFCC` | `$F333` | `CLRCHN` | DONE | |
| `$FFCF` | `$F157` | `CHRIN` | PARTIAL | |
| `$FFD2` | `$F1CA` | `CHROUT` | PARTIAL | |
| `$FFD5` | `$F4A5` | `LOAD` | PARTIAL | no VERIFY support, no STOP key, check $F49E addr |
| `$FFD8` | `$F5ED` | `SAVE` | NOT DONE | check $F5DD location |
| `$FFDB` | | `SETTIM` | DONE | |
| `$FFDE` | | `RDTIM` | DONE | |
| `$FFE1` | `$F6ED` | `STOP` | DONE | |
| `$FFE4` | `$F13E` | `GETIN` | PARTIAL | only some devices supported |
| `$FFE7` | `$F32F` | `CLALL` | DONE | |
| `$FFEA` | | `UDTIM` | DONE | |
| `$FFED` | | `SCREEN` | DONE | |
| `$FFF0` | | `PLOT` | PARTIAL | cursor blink not handled |
| `$FFF3` | | `IOBASE` | DONE | |
| `($FFFA)` | | NMI vec | PARTIAL | |
| `($FFFC)` | | RESET vec | PARTIAL | |
| `($FFFE)` | | IRQ/BRK vec | PARTIAL | |
<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 />
+3
View File
@@ -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.
+5
View File
@@ -0,0 +1,5 @@
// XXX provide documentation and implementation
RUNC:
rts
+3
View File
@@ -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.
+5
View File
@@ -0,0 +1,5 @@
// XXX provide documentation and implementation
NEWSTT:
rts
@@ -1,7 +1,9 @@
// Print string at $YYAA
// Compute's Mapping the 64 p101
print_string:
// print string routine
STROUT:
// Setup pointer
sty temp_string_ptr+1
sta temp_string_ptr+0
@@ -11,14 +13,13 @@ print_string:
// Get offset ready
ldy #$00
print_string_loop:
!:
// Save Y in X, since X is preserved by chrout, but Y is not
tya
tax
lda (temp_string_ptr),y
beq print_string_end
beq !+
jsr JCHROUT
@@ -26,10 +27,8 @@ print_string_loop:
tay
iny
bne print_string_loop
print_string_end:
bne !-
!:
pla
tax
rts
+1
View File
@@ -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.
+10
View File
@@ -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
+5
View File
@@ -0,0 +1,5 @@
// XXX provide documentation and implementation
INIT:
rts
+3
View File
@@ -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.
+5
View File
@@ -0,0 +1,5 @@
// XXX provide documentation and implementation
INITMSG:
rts
+3
View File
@@ -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.
+3
View File
@@ -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.
+5
View File
@@ -0,0 +1,5 @@
// XXX provide documentation and implementation
RVECT:
rts