OXYGENHUB
# 8e8d9cad1884 x16-emulator / RELEASES.md
31.6 KiB · Markdown · last changed chore(): initial commit 16 days ago renderedsource blame history raw
03a3459e Andy McCall 1
2
<p align="center">
3
  <img src="./.gh/logo.png" />
4
</p>
5
6
## Releases
7
8
### Release R49 ("Pyrite")
9
10
* Features/Fixes
11
	* VERA: Add warnings when reading to write-only and when writing to read-only registers [irmen]
12
	* VERA: Make SPI busy time more true to hardware
13
	* VERA: Fix wrong behavior of 8bpp sprites when palette offset is nonzero
14
	* VERA PSG: Fix noise frequency being double that of hardware
15
	* SDCARD: add READ_MULTIPLE_BLOCK support [stople]
16
	* VIA: Fix for IFR flag handling [catharinejm]
17
	* Let emulator exit with Alt+F4 even if SDL does not handle it [JimmyDansbo]
18
	* Only free clipboard memory buffer when it comes from SDL's paste handler
19
	* Added serial MIDI emulation via FluidSynth
20
	* Exclude threading (needed for FluidSynth) in wasm build
21
	* Added `-gs` support, which implements a system with 24-bit addressable RAM and a 65C816 processor, in anticipation of the planned X16 GS with this feature. [Fulgen301]
22
	* Vastly improved performance of the HostFS's implementation of MACPTR
23
	* Added HostFS implementations of XMACPTR and XMCIOUT to mirror the CMDR-DOS implementations
24
	* 65C816 emulation fixes for MVN, MVP [Fulgen301, cnelson20]
25
	* Move from C99 to C11, some C syntax and header fixes [skeeto]
26
	* Additional web emulator options, including those to support CPU type and speed [JimmyDansbo]
27
	* Emulator debugger fixes, including support for GS, and pressing F9 a second time to clear the breakpoint
28
	* More changes in the [ROM]https://github.com/X16Community/x16-rom/tree/r49#release-49-pyrite.
29
30
### Release R48 ("Cadmium")
31
32
* Features/Fixes
33
	* Emulated VERA SPI clock has been updated to half of the VERA clock speed rather than the CPU clock.
34
	* Trace for ROM banks 13-15 (x16edit and Basload) is now supported [stefan-b-jakobsson]
35
	* Fixed debug reads from the stack and a few unbounded values in the debugger display
36
	* VERA PSG: for the saw and triangle waves, the inverse of the pulse width value is XORed with the value of the wave. This is the behavior of VERA 47.0.2 on hardware. [m00dawg]
37
	* Allow setting the amount of RAM in the web version of the emulator [JimmyDansbo]
38
	* Windows 11: Rounded corners should no longer cut off the lower left and lower right of the emulator window.
39
	* New memory statistics feature [irmen]
40
	* HostFS: Implement DOS "T"ell command
41
	* Debugger now includes elapsed cpu clocks since the last breakpoint or step
42
	* 65C816: Fixed stack relative indirect address calulation wrongly using the direct page [Fulgen301]
43
	* 65C816: high bytes of .X and .Y are now cleared when PLP or RTI set x=1 [cnelson20]
44
	* 65C816: PEI no longer does improper page wraparound, `[dp]` indirect modes now properly read the address. [Fulgen301]
45
	* More changes in the [ROM]https://github.com/X16Community/x16-rom/tree/r48#release-48-cadmium.
46
47
### Release 47 ("Roswell")
48
49
This is a major release with numerous bugfixes, as well as introducing 65C816 support.
50
51
* Features/Fixes.
52
	* Optionally emulate a 65C816 CPU, selectable via a new command line switch `-c816`. There is also a `-c02` command line switch to explicitly select 65C02 mode.  [Fulgen301]
53
	* In order to make room for the full 65C816 vector table, the R47 ROM relocates the "MIST" KERNAL signature from 0xFFF6 to 0xC008. Emulator has been updated to check for the signature in the newer location. [Fulgen301]
54
	* Made IEC device addressing more flexible by preventing the HostFS from consuming every device number [DragWx]
55
	* Improved timing calculations for HostFS operations to translate wall clock time to elapsed CPU ticks
56
	* If HostFS is in use, the default `-abufs` audio buffer count is 32, otherwise 8. This should reduce audio stuttering for games which load assets from disk while sound is playing.
57
	* HostFS can be changed to respond to a non-default device number. New command line option `-hostfsdev`. Using this option in conjunction with `-sdcard` allows both devices to appear on the system.
58
	* Matching the VERA hardware feature, the layer config T256 bit can be used as a palette switch in tile and bitmap modes. Most useful in 2bpp and 4bpp depths, setting this bit on the layer forces the resolved high bit of the palette entry index to 1. For instance, in 4bpp mode, a tile pixel with index 1, on a tile configured with palette offset 6 would normally resolve to palette entry 0x61 (or 97 decimal), having this layer bit set will cause this pixel to resolve to palette entry 0xE1 (or 225 decmial).
59
	* Copying VERA hardware behavior, the LINE IRQ can happen in the non-visible vertical blanking area.
60
	* HostFS: empty filename now returns an error as appropriate
61
	* IO2, the YM2151 range, is partially decoded on hardware. Emulator behavior now matches this so that the YM2151 is mirrored throughout the $9F42-$9F5F range.
62
	* New command line switch `-nokeyboardcapture` causes capture mode to operate without intercepting OS-level keystrokes such as Alt+Tab.
63
	* Improvements to `-wuninit` warnings to show the appropriate opcode and location of uninitialized accesses.
64
	* Recognize the INTL1 key code, which exists on some keyboard layouts such as pt-BR.
65
	* Update the 65C02 opcode table to properly handle multi-byte NOPs and update cycle counts.
66
	* `-trace` output has been updated and enhanced, showing banks for effective addresses. Add listings for new banks.
67
	* new `-longpwron` option to match SMC 47 long power button press behavior at power on.
68
	* VERA FX: fix address resolution bug with 4bpp unaligned cache filling.
69
	* VERA: DC_VSTOP was taking effect one scanline too late.
70
	* SMC: update activity light logic. Hardware was mistakenly documented as allowing 255 PWM intensity levels, while in fact it is binary on/off.
71
	* VERA PSG: update PSG volume table from VERA 47.0.0. Prior to this change, there were multiple PSG volume values at the low end that resulted in the same output level.
72
	* SDL2: Set the application name to "Commander X16 Emulator", which shows up in the audio mixer, and in the screensaver inhibit application list on Linux desktop environments. This should be a bit more informative than "My SDL application".
73
	* New `-pastewarp` command line switch that warps the emulator when receiving paste data either from the clipboard or from the `-bas` command line switch.
74
	* HostFS: improve path parsing with both CMD and unix path syntax, particularly with absolute path names.  DOS"MD//:TEST" now creates the directory in the FS root rather than erroneously in the current directory.
75
	* VERA: DC_HSCALE and DC_VSCALE values > 0x80 now render as they do on hardware.
76
	* SMC 47.0.0 fast PS/2 read support
77
	* Now with native build for Apple Silicon (built on the GitHub MacOS ARM runner)
78
	* More changes in the [ROM]https://github.com/X16Community/x16-rom/tree/r47#release-47-roswell.
79
80
81
### Release 46 ("Winnipeg")
82
83
This is mainly a bugfix release.
84
85
* Features/Fixes
86
	* A change in the ROM caused controllers to have their buttons offset due to how the emulated VIA responds to polling. The issue was fixed in the ROM and while it was not technically an emulator bug and no changes were made to the emulator's joystick routines, it gets a mention here.
87
	* HostFS: UNLSN was incorrectly setting the KERNAL status byte based on whether a file existed upon open. It has been changed to behave like CMDR-DOS. (discovered by [voidstar78])
88
	* HostFS: Opening a file in Modify mode now properly creates file if it doesn't yet exist (discovered by [m00dawg])
89
	* Audio: prevent `-sound none` from trying to use the uninitialized ymfm YM2151 library. The YM status register was also modified to always return 0 in this case. (discovered by [jestin])
90
	* WebAssembly: improve handling of zip files without `manifest.json` [Cyber-Ex]
91
	* GUI: If emulator launches in a window with the titlebar offscreen, move the window so that it is visible. (with help from [irmen])
92
	* GUI: Mouse movement now uses relative motion in capture mode, which makes the position of the host mouse irrelevant while in capture mode.
93
	* GUI: new `-capture` command line option to start emulator with mouse captured
94
	* Testbench: miscellaneous fixes [irmen]
95
	* More changes in the [ROM]https://github.com/X16Community/x16-rom/tree/r46#release-46-winnipeg.
96
97
### Release 45 ("Nuuk")
98
99
This is a minor release with respect to the emulator.  The bulk of the changes are in the [ROM]https://github.com/X16Community/x16-rom/tree/r45#release-45-nuuk.
100
101
* Features/Fixes
102
	* Revert VERA PSG amplitude resolution back to 6 bits. This was upped previously to match VERA firmware. It was subsequently reverted in VERA to make room for the FX feature. [akumanatt]
103
	* Intellimouse support added to the emulated SMC, partially implementing the new feature in hardware SMC firmware 45.1.0. [stefan-b-jakobsson]
104
		* Scroll wheel is supported (mouse device ID 3)
105
		* Not implemented: Extra buttons (mouse device ID 4)
106
	* New emulator debug register behaviors
107
		* Reading from \$9FB8-\$9FBB in this order returns the 32-bit CPU clock counter, snapshotted at the time \$9FB8 is read. Previously the clock counter would remain in motion and the upper counter bits could roll over unpredictably.
108
		* Writing to \$9FB8-\$9FBB has new behaviors:
109
			* \$9FB8: resets the cpu clock counter to 0.
110
			* \$9FB9: prints a debug message to the console `User debug 1: $xx`.
111
			* \$9FBA: prints a debug message to the console `User debug 2: $xx`.
112
			* \$9FBB: prints the UTF-8 representation of the ISO character to the console. This can be treated like a debug STDOUT.
113
		* Before using any of these emulator debug registers, it's recommended to test for emulator presence first.
114
			* Read from `$9FBE` and `$9FBF`. When running under the emulator, the returned values should be `$31` and `$36` respectively. If any other values are returned, you can usually assume to be running on real hardware. While the stock machine doesn't have any I/O devices that listen to the emulator I/O range, an add-on card could choose to use that same address space in the future for its own functions.
115
	* New MCIOUT (blockwise write) implementation for HostFS, mirroring the feature in the kernal for use on SD card.
116
	* New command key and capture behavior:
117
		* Ctrl+M/⇧⌘M is always processed by the emulator to toggle (mouse/keyboard) capture, regardless of the state of the "Disable Emulator Keys" flag.
118
		* Turning capture mode on disables all other emulator keys until capture mode is toggled off. While capture is on, the emulator also routes most OS shortcut key combos to the X16: for instance, Alt+Tab.
119
120
121
### Release 44 ("Milan")
122
123
This is the third release of x16-emulator by the X16Community team
124
125
* Features/Fixes
126
	* Many changes to HostFS, including
127
		* Fix regression for loading "`:*`" from HostFS while also using an SD card image
128
		* Fix `-prg` and `-sdcard` options working together, which did not properly handle the case after emulator reset
129
		* Proper wildcard behavior in dir filters and OPEN string
130
		* Fix filetype directory filter command parsing
131
		* Add `$=L` long mode directory listing to emulate the new feature in the ROM.
132
		* Speed up directory filetype filter
133
		* Add CMD/SD2IEC style directory navigation: `CD:←` to enter parent directory
134
		* Partial emulation of case-insensitivity in filenames on case-sensitive host filesystems.
135
			* This works in `OPEN` strings and directory names in commands (`CD:`, etc.) which do not contain a `/` character.
136
			* It also works on the last path segment in relative or absolute paths in directory names or `OPEN` strings. In other words, if given a path specification containing one or more `/` characters, it will do only a case-insensitive search on the part after the final `/`.
137
		* Proper translation between UTF-8 filenames and their ISO representations.
138
	* Implement VPB behavior to match hardware [akumanatt]
139
		* Fix BRK to have VPB behavior
140
	* Support for additional keycodes (NumLock, Menu) [stefan-b-jakobsson]
141
	* Fix debugger to set the correct bank for breakpoints [gaekwad]
142
	* New `-fullscreen` CLI option
143
	* Proper cleanup when the emulator exits when in full screen [irmen]
144
	* FX emulation, which mirrors the features in the FX enhancement to the VERA firmware. See the [VERA FX Reference]https://github.com/X16Community/x16-docs/blob/master/VERA%20FX%20Reference.md for details.
145
	* Writing bit 6 and bit 7 together into VERA_AUDIO_CTRL now enables looping the PCM FIFO (and does not reset the FIFO). Any other write into VERA_AUDIO_CTRL disables looping.
146
	* New `-opacity` CLI option for window transparency [tstibor]
147
	* New support for screenshots (Ctrl+P/⌘P) [dressupgeekout]
148
	* Fix small memory leak caused by pasting into the emulator
149
	* Use relative mouse motion while in grabbed mode
150
	* Remove `-geos` CLI option [dressupgeekout]
151
	* New YM2151 audio core: remove old MAME core, replace with ymfm
152
		* Allows for IRQs from the YM, requires specifying `-enable-ym2151-irq` on the command line
153
	* Emulate hardware open bus behavior when reading from a device that doesn't exist in the `$9Fxx` space
154
	* Reset via I2C command: defer machine reset to the main loop, which allows the I2C write routine to return cleanly.
155
	* Fix 65C02 `BIT` immediate behavior [XarkLabs]
156
	* New NMI trigger emulator hotkey, emulates Ctrl+Alt+Restore on hardware (Ctrl+Backspace/⌘Delete) [XarkLabs]
157
	* Fix line artifact in application icon/logo
158
	* Grabbing the mouse with (Ctrl+M/⇧⌘M) now grabs the keyboard as well. It allows the emulator to receive keystrokes and key combinations which would otherwise be intercepted by the operating system.
159
	* Fix description of fill value in `makecart`
160
	* New features implemented in the [ROM]https://github.com/X16Community/x16-rom/tree/r44#release-44-milan
161
* Build
162
	* Link-time optimization is now enabled by default
163
	* Portability enhancements [dressupgeekout]
164
	* Suppress clang warnings due to deprecated sprintf usage in ymfm lib [XarkLabs]
165
166
### Release 43 ("Stockholm")
167
168
This is the second release of x16-emulator by the X16Community team
169
170
* **BREAKING CHANGE**
171
	* The keyboard protocol between the emulated SMC and the KERNAL has changed, thus x16-emulator version R43 requires x16-rom version R43.
172
	* This change also affects how the custom keyboard handler vector works (keyhdl). For details, see [Chapter 2 of the Programmer's Reference Guide]https://github.com/X16Community/x16-docs/blob/master/X16%20Reference%20-%2002%20-%20Editor.md#custom-keyboard-keynum-code-handler
173
	* **Your Keyboard will not work unless** you are running
174
		* R43 of both x16-rom and x16-emulator
175
* Features
176
	* Updates to support translation from SDL scancodes to new keynum encoding supported by KERNAL [stefan-b-jakobsson]
177
	* More granular support for RAM amount as argument to `-ram`
178
	* Minor HostFS bugfixes and enhancements, including tying the activity light to HostFS activity.
179
	* VERA updates: new support for 240p in NTSC/RGB modes. Chroma disable only works on NTSC.
180
	* Stepping the debugger now supports stepping over `WAI`
181
	* Debugger now shows the correct bank in the disassembly by default. [gaekwad]
182
	* Debugger breakpoints are now bank-specific [gaekwad]
183
	* Randomized RAM is now the default. New option: `-zeroram` [irmen]
184
	* Host's mouse cursor is now shown unless either the KERNAL mouse is enabled or the mouse cursor is captured (Ctrl+M/⇧⌘M).
185
	* Esc key is now Esc rather than STOP.  Pause key sends STOP.  (Ctrl+C is also recognized by the KERNAL as STOP)
186
	* SD card emulation now responds to CMD9
187
	* Emulated SMC can now assert NMI.
188
	* Add `-mhz` option to select a speed other than 8
189
	* When built with `TRACE`, the `-trace` output now shows the effective address for indirect and indexed opcodes and VERA data0/data1 reads and writes.
190
	* New comamnd line option `-midline-effects` that supports mid-line changes to the palette or tile/sprite data. R42 always had this behavior, which results in performance degradation for programs write to VERA heavily if the host CPU is not fast enough. This behavior is now disabled by default. `-midline-effects` restores this optional behavior.
191
	* New features implemented in the [ROM]https://github.com/X16Community/x16-rom/tree/r43#release-43-stockholm
192
* Other
193
	* Release builds have link-time optimization enabled which seems to help performance.
194
	* Add git hash of build to `-version` string.
195
	* WebAssembly enhancements in the supporting html/js [Cyber-EX]
196
	* Fixed potential off-by one row with non-zero DC_VSTART.
197
	* Prevent laggy hostfs reads from causing the emulator to warp to catch up by translating the wall clock time to elapsed 6502 clocks. This effectively makes HostFS MACPTR behave like a DMA card, including the possibility that it prevents the CPU from executing instructions while interrupt sources may have been waiting for service.
198
	* Bugfix: Process multiple SDL events per frame. (Fixed choppy mouse movement if there were keystrokes in the keyboard buffer)
199
	* Audio resampling and ring buffer fixes [DragWx]
200
	* Build fixes on Mac
201
### Release 42 ("Cambridge")
202
203
This is the first release of x16-emulator by the X16Community team
204
205
* Features
206
	* Added testbench mode [stefan-b-jakobsson, indigodarkwolf]
207
	* Added `-noemucmdkeys` option [jestin]
208
	* New `FIFO_EMPTY` flag in `PCM_CTRL` to reflect new VERA feature [ZeroByteOrg]
209
	* Added `-widescreen` option to simulate stretched 640x480 output at a 16:9 aspect ratio [jestin]
210
	* New `SCANLINE` VERA register behavior to reflect updated VERA feature [mooinglemur]
211
	* Added `-randram` and `-wuninit` command line arguments to randomize RAM at boot, and to emit a console warning when uninitialized RAM is read, respectively. [stefan-b-jakobsson]
212
	* Allow specifying non-power-of-2 argument to `-ram`, in increments of 8k [JimmyDansbo]
213
	* Added `-via2` option to selectively enable a VIA at $9F10. [akumanatt]
214
	* Added ROM cart loading with `-cart` and `-cartbin` [indigodarkwolf]
215
	* New `makecart` utility for building `.crt` cartridge files [indigodarkwolf]
216
	* Compressed SD card image support [indigodarkwolf]
217
	* Mouse grab mode, press Ctrl+M (Mac: ⇧⌘M) to toggle. [mooinglemur]
218
	* New `-fsroot` and `-startin` options to specify the root of the emulated host fs, and the host directory to start in respectively. [mooinglemur]
219
	* Many, many new features implemented in the [ROM]https://github.com/X16Community/x16-rom/tree/r42#release-42-cambridge
220
* Other
221
	* PS/2 devices now connected via SMC via I2C, I2C pins have moved to match hardware [stefan-b-jakobsson]
222
	* Recognize middle mouse button [ZeroByteOrg]
223
	* Synchronized keymaps with ROM [megagrump]
224
	* Build fixes [irmen]
225
	* Show dialog when a `STP` instruction is encountered with debug turned off [akumanatt]
226
	* Improved emulated behavior of `WAI` [LRFLEW]
227
	* Clear D flag on interrupt entry [LRFLEW]
228
	* Update BRK length in debugger [indigodarkwolf]
229
	* IRQ/NMI entry clock cycles are now accounted for [mooinglemur]
230
	* Add reason string to memory dump output [irmen]
231
	* Clear sprite line buffer when disabling sprite layer [jestin]
232
	* Improved audio balance between VERA and YM2151. Much improved mixing routines to reduce stutters and clicking. [akumanatt]
233
	* To match hardware, VERA ISR bits are set at VSYNC, LINE, and SPRCOL regardless of whether their respective IEN bits are set [mooinglemur]
234
	* Changes to match Proto 4, including moving VIA1 interrupt pin to IRQ [akumanatt]
235
	* VERA mid-frame raster effects more closely match the timing of real hardware [mooinglemur]
236
	* Enabled and built out CI/CD build workflows [maxgerhardt, indigodarkwolf, mooinglemur]
237
	* Many host fs enhancements, bringing host fs very close to feature parity with SD card images [davidgiven, ZeroByteOrg, mooinglemur]
238
	* Many documentation updates and fixes [veganaize, irmen, tomxp411]
239
240
### Release 41 ("Marrakech")
241
242
* allow apps to intercept Cmd/Win, Menu and Caps-Lock keys
243
* fixed `-prg` with `-sdcard`
244
* fixed loading from host filesystem (length reporting by `MACPTR` on EOI)
245
* macOS: support for older versions like Catalina (10.15)
246
247
### Release 40 ("Bonn")
248
249
* Features
250
	* improved VERA video timings [Natt Akuma]
251
	* added Host FS bridging using IEEE API
252
	* added Serial Bus emulation [experimental]
253
	* added WAV file recording [Stephen Horn]
254
	* possible to disable Ctrl/Cmd key interception ($9FB7) [mooinglemur] 
255
* Other
256
	* Fixed I2C (RTC, SMC)
257
	* Fixed RAM/ROM bank for PC when entering break [mjallison42]
258
	* LST support for -trace
259
260
## Release 39 ("Buenos Aires")
261
262
* Switch to Proto2 Hardware
263
	* banking through zp addresses 0 and 1
264
	* modified I/O layout
265
	* modified VIA GPIO layout
266
	* support for 4 controllers
267
	* I2C bus with SMC and RTC/NVRAM
268
* Features
269
	* implemented VIA timers [Natt Akuma]
270
	* added option to disable sound [Jimmy Dansbo]
271
	* added support for Delete, Insert, End, PgUp and PgDn keys [Stefan B Jakobsson]
272
	* debugger scroll up & down description [Matas Lesinskas]
273
	* added anti-aliasing to VERA PSG waveforms [TaleTN]
274
* Bugs
275
	* fixed sending only one mouse update per frame [Elektron72]
276
	* fixed VSYNC timing [Elektron72]
277
	* switched front and back porches [Elektron72]
278
	* fixed LOAD/SAVE hypercall so debugger doesn't break [Stephen Horn]
279
	* fixed YM2151 frequency from 4MHz ->3.579545MHz [Stephen Horn]
280
	* do not set compositor bypass hint for SDL Window [Stephen Horn]
281
	* reset timing after exiting debugger [Elektron72]
282
	* don't write nvram after every frame
283
	* fixed write outside of line buffer [Stephen Horn]
284
	* fixed BRA extra CPU cycle [LRFLEW]
285
	* fix: clear layer line once layer is disabled
286
	* fixed BBSx/BBRx timing [Natt Akuma]
287
* Other
288
	* misc speed optimizations [Stephen Horn]
289
290
## Release 38 ("Kyoto")
291
292
* CPU
293
	* added WAI, BBS, BBR, SMB, and RMB instructions [Stephen Horn]
294
* VERA
295
	* VERA speed optimizations [Stephen Horn]
296
	* fixed raster line interrupt [Stephen Horn]
297
	* added sprite collision interrupt [Stephen Horn]
298
	* fixed sprite wrapping [Stephen Horn]
299
	* added VERA dump, fill commands to debugger [Stephen Horn]
300
	* fixed VRAM memory dump [Stephen Horn]
301
* SD card
302
	* SD card write support
303
	* Ctrl+D/Cmd+D detaches/attaches SD card (for debugging)
304
	* improved/cleaned up SD card emulation [Frank van den Hoef]
305
	* SD card activity/error LED support
306
	* VERA-SPI: support Auto-TX mode
307
* misc
308
	* added warp mode (Ctrl+'+'/Cmd+'+' to toggle, or `-warp`)
309
	* added '-version' shell option [Alice Trillian Osako]
310
	* new app icon [Stephen Horn]
311
	* expose 32 bit cycle counter (up to 500 sec) in emulator I/O area
312
	* zero page register display in debugger [Mike Allison]
313
	* Various WebAssembly improvements and fixes [Sebastian Voges]
314
315
### Release 37 ("Geneva")
316
317
* VERA 0.9 register layout [Frank van den Hoef]
318
* audio [Frank van den Hoef]
319
    * VERA PCM and PSG audio support
320
    * YM2151 support is now enabled by default
321
    * added `-abufs` to specify number of audio buffers
322
* removed UART [Frank van den Hoef]
323
* added window icon [Nigel Stewart]
324
* fixed access to paths with non-ASCII characters on Windows [Serentty]
325
* SDL HiDPI hint to fix mouse scaling [Edward Kmett]
326
327
### Release 36 ("Berlin")
328
329
* added VERA UART emulation (`-uart-in`, `-uart-out`)
330
* correctly emulate missing SD card
331
* moved host filesystem interface from device 1 to device 8, only available if no SD card is attached
332
* require numeric argument for `-test` to auto-run test
333
* fixed JMP (a,x) for 65c02
334
* Fixed ESC as RUN/STOP [Ingo Hinterding]
335
336
### Release 35
337
338
* video optimization [Neil Forbes-Richardson]
339
* added `-geos` to launch GEOS on startup
340
* added `-test` to launch (graphics) unit test on startup
341
* debugger
342
	* switch viewed RAM/ROM bank with `numpad +` and `numpad -` [Kobrasadetin]
343
	* optimized character printing [Kobrasadetin]
344
* trace mode:
345
	* prepend ROM bank to address in trace
346
	* also prints 16 bit virtual regs (graph/GEOS)
347
* fixes
348
	* initialize memory to 0 [Kobrasadetin]
349
	* fixed SYS hex argument
350
	* disabled "buffer full, skipping" and SD card debug text, it was too noisy
351
352
### Release 34
353
354
* PS/2 mouse
355
* support for text mode with tiles other than 8x8 [Serentty]
356
* fix: programmatic echo mode control [Mikael O. Bonnier]
357
358
### Release 33
359
360
* significant performance optimizations
361
* VERA
362
	* enabled all 128 sprites
363
	* correct sprite zdepth
364
	* support for raster IRQs
365
* SDL controller support using `-joy1` and `-joy2` [John J Bliss]
366
* 65C02 BCD fixes [Norman B. Lancaster]
367
* feature parity with new LOAD/VLOAD features [John-Paul Gignac]
368
* default RAM and ROM banks are now 0, matching the hardware
369
* GIF recording can now be controlled from inside the machine [Randall Bohn]
370
* Debugging
371
	* Major enhancements to the debugger [kktos]
372
	* `-echo` will now encode non-printable characters like this: \X93 for CHR$(93), `-bas` as 	well as pasting accepts this convention again
373
	* `-echo raw` for the original behavior
374
	* `-echo iso` for correct character encoding in ISO mode
375
	* `-ram` to specify RAM size; now defaults to 512
376
377
### Release 32
378
379
* correct ROM banking
380
* VERA emulation optimizations [Stephen Horn]
381
* added `-dump` option to allow writing RAM, CPU state or VERA state to disk [Nils Hasenbanck]
382
* added `-quality` option to change scaling algorithm; now defaults to "best" [Maurizio Porrato]
383
* output of `-echo` can now be fed into UNIX pipes [Anonymous Maarten]
384
* relative speed of emulator is shown in the title if host can't keep up [Rien]
385
* fix: 6502 BCD arithmetic [Rien]
386
* fix: colors (white is now white) [Rien]
387
* fix: sprite flipping [jjbliss]
388
389
### Release 31
390
391
* VERA 0.8 register layout
392
* removed `-char` (character ROM is now part of `rom.bin`)
393
* GIF recording using `-gif` [Neil Forbes-Richardson]
394
* numpad support [Maurizio Porrato]
395
* fake support of VIA timers to work around BASIC RND(0)
396
* default ROM is taken from executable's directory [Michael Watters]
397
* emulator window has a title [Michael Watters]
398
* `-debug` allows specifying a breakpoint [Frank Buss]
399
* package contains the ROM symbols in `rom.txt`
400
* support for VERA SPI
401
402
### Release 30
403
404
Emulator:
405
* VERA can now generate VSYNC interrupts
406
* added `-keymap` for setting the keyboard layout
407
* added `-scale` for integer scaling of the window [Stephen Horn]
408
* added `-log` to enable various logging features (can also be enabled at runtime (POKE $9FB0+) [Randall Bohn])
409
* changed `-run` to be an option to `-prg` and `-bas`
410
* emulator detection: read $9FBE/$9FBF, must read 0x31 and 0x36
411
* fix: `-prg` and `-run` no longer corrupt BASIC programs.
412
* fix: `LOAD,1` into RAM bank [Stephen Horn]
413
* fix: 2bpp and 4bpp drawing [Stephen Horn]
414
* fix: 4bpp sprites [MonstersGoBoom]
415
* fix: build on Linux/ARM
416
417
### Release 29
418
419
* better keyboard support: if you pretend you have a US keyboard layout when typing, all keys should now be reachable [Paul Robson]
420
* `-debug` will enable the new debugger [Paul Robson]
421
* runs at the correct speed (was way too slow on most machines)
422
* keyboard shortcuts work on Windows/Linux: `Ctrl + F/R/S/V`
423
* `Ctrl + V` pastes the clipboard as keypresses
424
* `-bas file.txt` loads a BASIC program in ASCII encoding
425
* `-echo` prints all BASIC/KERNAL output to the terminal, use it with LIST to convert a BASIC program to ASCII
426
* `-run` acts like `-prg`, but also autostarts the program
427
* `JMP $FFFF` and `SYS 65535` exit the emulator and save memory into the host's storage
428
* the packages now contain the current version of the Programmer's Reference Guide (HTML)
429
* fix: on Windows, some file load/saves may be been truncated
430
431
### Release 28
432
433
* support for 65C02 opcodes [Paul Robson]
434
* keep aspect ratio when resizing window [Sebastian Voges]
435
* updated sprite logic to VERA 0.7 – **the layout of the sprite data registers has changed, you need to change your code!**
436
437
438
### Release 27
439
440
* Command line overhaul. Supports `-rom`, `-char`, `-sdcard` and `-prg`.
441
* ROM and char filename defaults, so x16emu can be started without arguments.
442
* Host Filesystem Interface supports `LOAD"$"`
443
* macOS and Windows packaging logic in Makefile
444
445
### Release 26
446
447
* better sprite support (clipping, palette offset, flipping)
448
* better border support
449
* KERNAL can set up interlaced NTSC mode with scaling and borders (compile time option)
450
451
### Release 25
452
453
* sdcard: fixed `LOAD,x,1` to load to the correct addressg
454
* sdcard: all temp data will be on bank #255; current bank will remain unchanged
455
* DOS: support for DOS commands ("UI", "I", "V", ...) and more status messages (e.g. 26,WRITE PROTECT ON,00,00)
456
* BASIC: `DOS` command. Without argument: print disk status; with "$" argument: show directory; with "8" or "9" argument: switch default drive; otherwise: send DOS command; also accessible through F7/F8
457
* Vera: cycle exact rendering, NTSC, interlacing, border
458
459
### Release 24
460
461
* SD card support
462
	* pass path to SD card image as third argument
463
	* access SD card as drive 8
464
	* the local PC/Mac disk is still drive 1
465
	* modulo debugging, this would work on a real X16 with the SD card (plus level shifters) hooked up to VIA#2PB as described in sdcard.c in the emulator surce
466
467
### Release 23
468
469
* Updated emulator and ROM to spec 0.6 – the ROM image should work on a real X16 with VERA 0.6 now.
470
471
### Release 22
472
473
SYS65375 (SWAPPER) now also clears the screen, avoid ing side effects.
474
475
### Release 21
476
477
* support for $ and % number prefixes in BASIC
478
* support for C128 KERNAL APIs LKUPLA, LKUPSA and CLOSE_ALL
479
480
### Release 20
481
482
* Toggle fullscreen using `Cmd + F` or `Cmd + return`
483
* new BASIC instructions and functions:
484
	* `MON`: enter monitor; no more SYS65280 required
485
	* `VPEEK(bank, address)`
486
	* `VPOKE bank, address, value`
487
example: `VPOKE4,0,VPEEK(4,0) OR 32` [for 256 color BASIC]
488
489
### Release 19
490
491
* fixed cursor trail bug
492
* fixed f7 key in PS/2 driver
493
* f keys are assigned with shortcuts now:
494
F1: LIST
495
F2: &lt;enter monitor&gt;
496
F3: RUN
497
F4: &lt;switch 40/80&gt;
498
F5: LOAD
499
F6: SAVE"
500
F7: DOS"$ &lt;doesn't work yet&gt;
501
F8: DOS &lt;doesn't work yet&gt;
502
503
### Release 18
504
505
* Fixed scrolling in 40x30 mode when there are double lines on the screen.
506
507
### Release 17
508
509
* video RAM support in the monitor (SYS65280)
510
* 40x30 screen support (SYS65375 to toggle)
511
512
### Release 16
513
514
* Integrated monitor, start with SYS65280
515
`rom.bin` is now 3*8 KB:
516
	* 0: BASIC (bank 0 at $C000)
517
	* 1: KERNAL ($E000)
518
	* 2: UTIL (bank 1 at $C000)
519
520
### Release 15
521
522
* correct text mode video RAM layout both in emulator and KERNAL
523
524
### Release 14
525
526
* KERNAL: fast scrolling
527
* KERNAL: upper/lower switching using CHR$($0E)/CHR$($8E)
528
* KERNAL: banking init
529
* KERNAL: new PS/2 driver
530
* Emulator: VERA updates (more modes, second data port)
531
* Emulator: RAM and ROM banks start out as all 1 bits
532
533
### Release 13
534
535
* Supports mode 7 (8bpp bitmap).
536
537
### Release 12
538
539
* Supports 8bpp tile mode (mode 4)
540
541
### Release 11
542
543
* The emulator and the KERNAL now speak the bit-level PS/2 protocol over VIA#2 PA0/PA1. The system behaves the same, but keyboard input in the ROM should work on a real device.
544
545
### Release 10
546
547
updated KERNAL with proper power-on message
548
549
### Release 9
550
551
* LOAD and SAVE commands are intercepted by the emulator, can be used to access local file system, like this:
552
553
      LOAD"TETRIS.PRG
554
      SAVE"TETRIS.PRG
555
556
* No device number is necessary. Loading absolute works like this:
557
558
      LOAD"FILE.PRG",1,1
559
560
### Release 8
561
562
* New optional override load address for PRG files:
563
564
      ./x64emu rom.bin chargen.bin basic.prg,0401
565
566
### Release 7
567
568
* Now with banking. `POKE40801,n` to switch the RAM bank at $A000. `POKE40800,n` to switch the ROM bank at $C000. The ROM file at the command line can be up to 72 KB now (layout: 0: bank 0, 1: KERNAL, 2: bank 1, 3: bank 2 etc.), and the RAM that `Cmd + S` saves is 2088KB ($0000-$9F00: regular RAM, $9F00-$9FFF: unused, $A000+: extra banks)
569
570
### Release 6
571
572
* Vera emulation now matches the complete spec dated 2019-07-06: correct video address space layout, palette format, redefinable character set
573
574
### Release 5
575
576
* BASIC now starts at $0401 (39679 BASIC BYTES FREE)
577
578
### Release 4
579
580
* `Cmd + S` now saves all of memory (linear 64 KB for now, including ROM) to `memory.bin`, `memory-1.bin`, `memory-2.bin`, etc. You can extract parts of it with Unix "dd", like: `dd if=memory.bin of=basic.bin bs=1 skip=2049 count=38655`
581
582
### Release 3
583
584
* Supports PRG file as third argument, which is injected after "READY.", so BASIC programs work as well.
585
586
### Release 2
587
588
* STOP key support
589
590
### Release 1
591
592
* 6502 core, fake PS/2 keyboard emulation (PS/2 data bytes appear at VIA#1 PB) and text mode Vera emulation
593
* KERNAL/BASIC modified for memory layout, missing VIC, Vera text mode and PS/2 keyboard