Skip to content

Commit

Permalink
r38 release notes
Browse files Browse the repository at this point in the history
  • Loading branch information
mist64 committed Aug 26, 2020
1 parent 4486f71 commit f1782d4
Show file tree
Hide file tree
Showing 5 changed files with 111 additions and 54 deletions.
7 changes: 5 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@

# the mingw32 path on macOS installed through homebrew
MINGW32=/usr/local/Cellar/mingw-w64/6.0.0_2/toolchain-i686/i686-w64-mingw32
MINGW32=/usr/local/Cellar/mingw-w64/7.0.0_2/toolchain-i686/i686-w64-mingw32
# the Windows SDL2 path on macOS installed through ./configure --prefix=... && make && make install
WIN_SDL2=~/tmp/sdl2-win32

Expand Down Expand Up @@ -97,12 +97,15 @@ define add_extra_files_to_package
cp ../x16-rom/build/x16/rom.bin $(TMPDIR_NAME)
cp ../x16-rom/build/x16/kernal.sym $(TMPDIR_NAME)
cp ../x16-rom/build/x16/keymap.sym $(TMPDIR_NAME)
cp ../x16-rom/build/x16/cbdos.sym $(TMPDIR_NAME)
cp ../x16-rom/build/x16/dos.sym $(TMPDIR_NAME)
cp ../x16-rom/build/x16/geos.sym $(TMPDIR_NAME)
cp ../x16-rom/build/x16/basic.sym $(TMPDIR_NAME)
cp ../x16-rom/build/x16/monitor.sym $(TMPDIR_NAME)
cp ../x16-rom/build/x16/charset.sym $(TMPDIR_NAME)

# Empty SD card image
cp sdcard.img.zip $(TMPDIR_NAME)

# Documentation
mkdir $(TMPDIR_NAME)/docs
pandoc --from gfm --to html -c github-pandoc.css --standalone --metadata pagetitle="Commander X16 Emulator" README.md --output $(TMPDIR_NAME)/docs/README.html
Expand Down
148 changes: 101 additions & 47 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,40 @@

This is an emulator for the Commander X16 computer system. It only depends on SDL2 and should compile on all modern operating systems.

Features
--------

* CPU: Full 65C02 instruction set
* VERA
* Mostly cycle exact emulation
* Supports almost all features:
* composer
* two layers
* sprites
* VSYNC, raster, sprite IRQ
* Sound
* PCM
* PSG
* YM2151
* SD card: reading and writing (image file)
* VIA
* ROM/RAM banking
* keyboard
* mouse
* gamepad

Missing Features
----------------

* VERA
* Does not support the "CURRENT_FIELD" bit
* Interlaced modes (NTSC/RGB) don't render at the full horizontal fidelity
* VIA
* Does not support counters/timers/IRQs
* Sound
* No SAA support


Binaries & Compiling
--------------------

Expand Down Expand Up @@ -148,21 +182,51 @@ On startup, the X16 presents direct mode of BASIC V2. You can enter BASIC statem
* The X16 does not have a `STOP + RESTORE` function.


SD Card Images
--------------

The command line argument `-sdcard` lets you attach an image file for the emulated SD card. Using an emulated SD card makes filesystem operations go through the X16's DOS implementation, so it supports all filesystem operations (including directory listing though `DOS"$` command channel commands using the `DOS` statement) and guarantees full compatibility with the real device.

Images must be greater than 32 MB in size and contain an MBR partition table and a FAT32 filesystem. The file `sdcard.img.zip` in this repository is an empty 100 MB image in this format.

On macOS, you can just double-click an image to mount it, or use the command line:

# hdiutil attach sdcard.img
/dev/disk2 FDisk_partition_scheme
/dev/disk2s1 Windows_FAT_32 /Volumes/X16 DISK
# [do something with the filesystem]
# hdiutil detach /dev/disk[n] # [n] = number of device as printed above

On Linux, you can use the command line:

# sudo losetup -P /dev/loop21 disk.img
# sudo mount /dev/loop21p1 /mnt # pick a location to mount it to, like /mnt
# [do something with the filesystem]
# sudo umount /mnt
# sudo losetup -d /dev/loop21

On Windows, you can use the [OSFMount](https://www.osforensics.com/tools/mount-disk-images.html) tool.


Host Filesystem Interface
-------------------------

If the system ROM contains any version of the KERNAL, the LOAD (`$FFD5`) and SAVE (`$FFD8`) KERNAL calls are intercepted by the emulator if the device is 1 (which is the default). So the BASIC statements
If the system ROM contains any version of the KERNAL, and there is no SD card image attached, the LOAD (`$FFD5`) and SAVE (`$FFD8`) KERNAL calls (and BASIC statements) are intercepted by the emulator for device 8 (the default). So the BASIC statements will target the host computer's local filesystem:

LOAD"$
LOAD"FOO.PRG
LOAD"IMAGE.PRG",1,1
LOAD"IMAGE.PRG",8,1
SAVE"BAR.PRG

will target the host computer's local filesystem.
Note that this feature is very limited! Manually reading and writing files (e.g. `OPEN` in BASIC) is not supported by the host filesystem interface. Use SD card images for this.

The emulator will interpret filenames relative to the directory it was started in. On macOS, when double-clicking the executable, this is the home directory.

The emulator will interpret filenames relative to the directory it was started in. Note that on macOS, when double-clicking the executable, this is the home directory.
To avoid incompatibility problems between the PETSCII and ASCII encodings, you can

To avoid incompatibility problems between the PETSCII and ASCII encodings, use lower case filenames on the host side, and unshifted filenames on the X16 side.
* use lower case filenames on the host side, and unshifted filenames on the X16 side.
* use `Ctrl+O` to switch to the X16 to ISO mode for ASCII compatibility.
* use `Ctrl+N` to switch to the upper/lower character set for a workaround.


Dealing with BASIC Programs
Expand Down Expand Up @@ -214,63 +278,53 @@ When `-debug` is selected the STP instruction (opcode $DB) will break into the d
Effectively keyboard routines only work when the debugger is running normally. Single stepping through keyboard code will not work at present.


Wiki
----

https://github.com/commanderx16/x16-emulator/wiki

Forum
-----

Features
--------
[https://www.commanderx16.com/forum/](https://www.commanderx16.com/forum/)

* CPU: Full 65C02 instruction set (improved "fake6502")
* VERA
* Mostly cycle exact emulation
* Supports almost all features:
* composer
* two layers
* sprites
* progressive/interlaced
* VSYNC and raster IRQ
* VIA
* ROM/RAM banking
* keyboard
* mouse
* gamepad
* SD card (SPI)
* Sound
* PCM
* PSG
* YM2151

Missing Features
----------------
Wiki
----

* VERA
* Does not support the "CURRENT_FIELD" bit
* Does not support sprite collisions
* Interlaced modes (NTSC/RGB) don't render at the full horizontal fidelity
* VIA
* Does not support counters/timers/IRQs
* Sound
* No SAA support
[https://github.com/commanderx16/x16-emulator/wiki](https://github.com/commanderx16/x16-emulator/wiki)


License
-------

Copyright (c) 2019 Michael Steil <mist64@mac.com>, [www.pagetable.com](https://www.pagetable.com/).
Copyright (c) 2019-2020 Michael Steil <mist64@mac.com>, [www.pagetable.com](https://www.pagetable.com/), et al.
All rights reserved. License: 2-clause BSD


Known Issues
------------
Release Notes
-------------

* Emulator: `LOAD"$` (and `LOAD"$",1`) will show host uppercase filenames as garbage. Use `Ctrl+N` to switch to the X16 upper/lower character set for a workaround.
## Release 38 ("Kyoto")

* CPU
* added WAI, BBS, BBR, SMB, and RMB instructions [Stephen Horn]
* VERA
* VERA speed optimizations [Stephen Horn]
* fixed raster line interrupt [Stephen Horn]
* added sprite collision interrupt [Stephen Horn]
* fixed sprite wrapping [Stephen Horn]
* added VERA dump, fill commands to debugger [Stephen Horn]
* fixed VRAM memory dump [Stephen Horn]
* SD card
* SD card write support
* Ctrl+D/Cmd+D detaches/attaches SD card (for debugging)
* improved/cleaned up SD card emulation [Frank van den Hoef]
* SD card activity/error LED support
* VERA-SPI: support Auto-TX mode
* misc
* added warp mode (Ctrl+'+'/Cmd+'+' to toggle, or `-warp`)
* added '-version' shell option [Alice Trillian Osako]
* new app icon [Stephen Horn]
* expose 32 bit cycle counter (up to 500 sec) in emulator I/O area
* zero page register display in debugger [Mike Allison]
* Various WebAssembly improvements and fixes [Sebastian Voges]

Release Notes
-------------

### Release 37 ("Geneva")

Expand Down
4 changes: 2 additions & 2 deletions main.c
Original file line number Diff line number Diff line change
Expand Up @@ -380,8 +380,8 @@ is_kernal()
static void
usage()
{
printf("\nCommander X16 Emulator\tv.%s (%s)", VER, VER_NAME);
printf("(C)2019,2020 Michael Steil\n");
printf("\nCommander X16 Emulator r%s (%s)\n", VER, VER_NAME);
printf("(C)2019,2020 Michael Steil et al.\n");
printf("All rights reserved. License: 2-clause BSD\n\n");
printf("Usage: x16emu [option] ...\n\n");
printf("-rom <rom.bin>\n");
Expand Down
Binary file added sdcard.img.zip
Binary file not shown.
6 changes: 3 additions & 3 deletions version.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
// Copyright (c) 2019, 2020 Michael Steil
// All rights reserved. License: 2-clause BSD

#define VER "37"
#define VER_NAME "Geneva"
#define VER_INFO "### Release 37 (\"Geneva\")\n"
#define VER "38"
#define VER_NAME "Kyoto"
#define VER_INFO "### Release 38 (\"Kyoto\")\n"

0 comments on commit f1782d4

Please sign in to comment.