x16-emulator-r39 ("Buenos Aires")
Known issues (fixed in repo):
- CodeX does not work
- RTC does not work
- Emulator reports r38 (ROM correctly reports r39)
Main differences:
- Switch to Proto2 Hardware
- banking through zp addresses 0 and 1
- modified I/O layout
- modified VIA GPIO layout
- support for 4 controllers
- I2C bus with SMC and RTC/NVRAM
- ROM Changes:
- SD card and banked LOAD fixes
- 320x240 framebuffer (mode $80/128)
- 80x30,40x60,40x30,40x15,20x30,20x15 text modes
- more powerful keyboard APIs
- full SNES-like keyboard joystick
- BASIC
LOCATE
- CodeX Interactive Assembly Environment
- macOS emulator is now universal Intel/ARM, Windows emulator is now 64 bit
Compatibility notes: You'll need to update your code if you
- changed ROM or RAM banks by writing VIA registers (it's $00/$01 now)
- accessed VIAs directly (different location)
- used
SCREEN
orJOY
in BASIC, the API has changed - used screen_set_mode, the API has changed
- used the floating point Math library, the API has changed
See the Programmer's Reference Guide for details.
Emulator:
- Features
- implemented VIA timers [Natt Akuma]
- added option to disable sound [Jimmy Dansbo]
- added support for Delete, Insert, End, PgUp and PgDn keys [Stefan B Jakobsson]
- debugger scroll up & down description [Matas Lesinskas]
- added anti-aliasing to VERA PSG waveforms [TaleTN]
- Bugs
- fixed sending only one mouse update per frame [Elektron72]
- fixed VSYNC timing [Elektron72]
- switched front and back porches [Elektron72]
- fixed LOAD/SAVE hypercall so debugger doesn't break [Stephen Horn]
- fixed YM2151 frequency from 4MHz ->3.579545MHz [Stephen Horn]
- do not set compositor bypass hint for SDL Window [Stephen Horn]
- reset timing after exiting debugger [Elektron72]
- don't write nvram after every frame
- fixed write outside of line buffer [Stephen Horn]
- fixed BRA extra CPU cycle [LRFLEW]
- fix: clear layer line once layer is disabled
- fixed BBSx/BBRx timing [Natt Akuma]
- Other
- misc speed optimizations [Stephen Horn]
ROM:
- KERNAL
- Adaptation to match Proto 2 Hardware
- support for 4 SNES controllers
- 512 KB ROM instead of 128 KB
- new I/O layout
- PS/2 and SNES controller GPIOs layout
- banking through $00 and $01
- Proto 2 Hardware Features
- I2C bus (driver by Dieter Hauer, 2-clause BSD)
- SMC: reset and shutdown support
- RTC: DA$/TI$ and KERNAL APIs bridge to real-time-clock
- Screen Features
- New screen_mode API allows setting and getting current mode and resolution
- support for 320x240 framebuffer (mode $80/128) [with gaekwad]
- added 80x30,40x60,40x30,40x15,20x30,20x15 text modes (note new numbers!)
- Keyboard Features
- added KERNAL vector to allow intercepting PS/2 codes [Stefan B Jakobsson]
- added kbdbuf_peek, kbdbuf_get_modifiers, kbdbuf_put API
- Other Features
- support for LOADing files without 2-byte PRG header [Elektron72]
- support for LOAD into banked RAM (acptr and macptr)
- support BEL code (PRINT CHR$(7))
- keyboard joystick (joystick 0) supports all SNES buttons
- support for 4 SNES controllers (joystick 1-4) [John J Bliss]
- Bugs
- fixed crash in FB_set_pixels for count>255 [Irmen de Jong]
- fixed bank switching macros [Stephen Horn]
- fixed preserving P in JSRFAR [CasaDeRobison]
- fixed race condition in joystick_get [Elektron72]
- removed ROM banking limitations from JSRFAR and FETVEC [Elektron72, Stefan B Jakobsson]
- fixed disabling graphics layer when returning to text mode [Jaxartes]
- fixed default cursor color when switching to text mode
- reliable mouse_config support for screen sizes
- Adaptation to match Proto 2 Hardware
- Math
- renamed "fplib" to "math"
- made Math package compatible with C128/C65, but fixing FADDT, FMULTT, FDIVT, FPWRT
- BASIC
- Features
- added BIN$ & HEX$ functions [Jimmy Dansbo]
- added LOCATE statement
- Bugs/Optimizations
- removed extra space from BASIC error messages [Elektron72]
- fixed DA$ and TI$ when accessed together or with BIN$()/HEX$() [Jaxartes]
- fixed null handling in GET/READ/INPUT [Jaxartes]
- fixed bank setting in VPOKE and VPEEK [Jaxartes]
- fixed optional 'color' argument parsing for LINE, FRAME, RECT
- Features
- DOS
- reliable memory initialization
- fixed writing LFN directory entries across sector boundary
- fixed missing partitions ($=P) if type is $0B
- fixed loading to the passed-in address when SA is 0 [gaekwad]
- fixed problem where macptr would always return C=0, masking errors
- GEOS
- text input support
- CodeX
- integrated CodeX Interactive Assembly Environment into ROM [mjallison42]