118 lines
5.2 KiB
Markdown
118 lines
5.2 KiB
Markdown
# New features
|
|
|
|
|
|
Here are the features of the Open ROMs not found in the original ROMs from the 80s:
|
|
|
|
* improved keyboard scanning, supports multi-key roll-over and rejection of spurious joystick input
|
|
* joystick (port 1) can be used to move text cursor
|
|
* uses RAM under ROM and I/O: 61436 bytes free
|
|
* extended `LOAD` command
|
|
* start/end addresses are displayed, in the Final cartridge style
|
|
* command with just the file name tries to use the last device if it's number seems sane; otherwise uses 8
|
|
* secondary address over 255 is considered a start address
|
|
* DOS wedge (direct mode only) - `@<drive_number>`, `@<command>`, `@$`, `@$<params>`, `@`
|
|
|
|
NOTE: extra features and their syntax can change in the future!
|
|
|
|
# Features missing
|
|
|
|
|
|
The following ROM features are currently missing:
|
|
|
|
* most BASIC commands
|
|
* BASIC variables
|
|
* BASIC expression parsing
|
|
* floating point routines
|
|
* tape support
|
|
* RS-232 support
|
|
* warm start (RUN/STOP + RESTORE) - NMI/BRK handling is not implemented at all
|
|
* breaking Kernal routines with RUN/STOP key
|
|
|
|
Features currently being worked on:
|
|
|
|
* IEC support needs more work; alternative drive ROMs (JiffyDOS, DolphinDOS, etc) usually don't work with current implementation, SAVE / VERIFY are not implemented, etc.
|
|
|
|
# API status
|
|
|
|
|
|
Status of the various APIs and variables from the original ROMs
|
|
|
|
|
|
## Page 0
|
|
|
|
|
|
TODO
|
|
|
|
|
|
## Pages 2 & 3
|
|
|
|
|
|
TODO
|
|
|
|
|
|
## BASIC
|
|
|
|
|
|
TODO
|
|
|
|
|
|
## Kernal
|
|
|
|
|
|
Note: only the jump table addresses are currently supported, real routine addresses are 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` | PARTIAL | at least PAL/NTSC detection is missing |
|
|
| `$FF84` | `IOINIT` | PARTIAL | at least SID volume handling is missing |
|
|
| `$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` | NOT 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` | PARTIAL | most likely incompleete, @$ doesn't end properly |
|
|
| `$FFC6` | `CHKIN` | DONE | |
|
|
| `$FFC9` | `CHKOUT` | PARTIAL | |
|
|
| `$FFCC` | `CLRCHN` | DONE | |
|
|
| `$FFCF` | `CHRIN` | PARTIAL | |
|
|
| `$FFD2` | `CHROUT` | PARTIAL | |
|
|
| `$FFD5` | `LOAD` | PARTIAL | no VERIFY support yet |
|
|
| `$FFD8` | `SAVE` | NOT DONE | |
|
|
| `$FFDB` | `SETTIM` | NOT DONE | |
|
|
| `$FFDE` | `RDTIM` | NOT DONE | |
|
|
| `$FFE1` | `STOP` | PARTIAL | no connection with UDTIM |
|
|
| `$FFE4` | `GETIN` | PARTIAL | only some devices supported |
|
|
| `$FFE7` | `CLALL` | DONE | |
|
|
| `$FFEA` | `UDTIM` | NOT DONE | |
|
|
| `$FFED` | `SCREEN` | DONE | |
|
|
| `$FFF0` | `PLOT` | NOT DONE | |
|
|
| `$FFF3` | `IOBASE` | DONE | |
|
|
|
|
<br />
|
|
|
|
### Unofficial Kernal locations
|
|
|
|
TODO
|