Skip to content

x16-emulator-r35

Choose a tag to compare

@mist64 mist64 released this 20 Dec 15:53
· 160 commits to master since this release

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