x16-emulator-r35
Main differences:
BREAKING CHANGES:
- The zero page and $0200+ layouts have changed once again. From now on, they will not remain stable. New KERNAL APIs will be added to replace direct variable access.
- RAM bank 0 ($A000-$BFFF) is now used for KERNAL variables. Applications should use banks 1 and above.
A lot of new APIs were added to the KERNAL. You can now draw to the 320x200@256c screen from assembly without touching VERA registers. The graphics API can also draw proportional text (using the built-in font, or a user-supplied font in GEOS format), and supports most PETSCII control codes.
The Programmer's Reference Guide describes all new KERNAL calls:
https://github.com/commanderx16/x16-docs
Known Issues:
The built-in monitor has several regressions.
Emulator:
- video optimization [Neil Forbes-Richardson]
- added '-geos' to launch GEOS on startup
- added '-test' to launch (graphics) unit test on startup
- debugger
- switch viewed RAM/ROM bank with numpad + and numpad - [Kobrasadetin]
- optimized character printing [Kobrasadetin]
- trace mode:
- prepend ROM bank to address in trace
- also prints 16 bit virtual regs (graph/GEOS)
- fixes
- initialize memory to 0 [Kobrasadetin]
- fixed SYS hex argument
- disabled "buffer full, skipping" and SD card debug text, it was too noisy
ROM:
-
API Fetures
- new KERNAL API: low-level and high-level 320x200@256c bitmap graphics
- new KERNAL API: get mouse state
- new KERNAL API: get joystick state
- new KERNAL API: get/set date and time (old RDTIM call is now a 24 bit timer)
- new floating point API, jump table at $FC00 on ROM bank 4 (BASIC)
-
KERNAL Features
- invert fg/bg color control code (Ctrl+A) [Daniel Mecklenburg Jr]
-
BASIC
- added COLOR <fg, bg> statement to set text color
- added JOY(n) function (arg 1 for joy1, arg 2 for joy2)
- added TEST statement to start graphics API unit test
- CHAR statement supports PETSCII control codes (instead of GEOS control codes), including color codes
-
misc
- KERNAL variables for keyboard/mouse/clock drivers were moved from $0200-$02FF to RAM bank #0
- $8F (set PETSCII-UC even if ISO) printed first after reset [Mikael O. Bonnier]
-
bug fixes:
- got rid of $2c partial instruction skip [Joshua Scholar]
- fixed TI/TI$
- fixed CDBOS infinite loop
- zp address 0 is no longer overwritten by mouse code
- mouse scanning is disabled if mouse is off
- VERA state is correctly saved/restored by IRQ code