By rjeA hex dumper I wrote, because I wanted one like the one I've got on my UNIX machines.
It should be able to handle "proper" address 0 RAM banking, as well as r38 RAM banking (it checks the KERNAL version).
Set the color with the number keys.
Change the view by $100 with left/right cursor, by $300 with up/down, and by $1000 by enter/left arrow.
By JimmyDansboVTUI (Vera Text User Interface) library
Can be used to create text user interfaces using VERA instead of relying on the KERNAL functions for writing to screen.
The library is less than 1KB which means it can be loaded into Golden RAM at $400. As an alternative, include files are provided for Acme and CA65 assemblers.
See https://github.com/JimmyDansbo/VTUIlib for documentation, examples and include files.
By x16tialVersion 0.1.1: renumber your BASIC programs!
BUT, for now, GOTOs, GOSUBs, THENs, and ONs will have to be manually fixed with the aid of the cross reference that prints when you execute the renumber.
(Copy the cross reference list from the shell window and paste it somewhere handy. Make sure you have -echo on when you start your emulator!)
NEW (this resets BASIC's memory pointers)
and load your basic program, then type:
REN <starting line number>, <increment>
The old line number, an arrow, and the new line number will then print, giving you a cross reference for fixing gotos and such.
Currently, <increment> needs to be 1-255
HIGHLY RECOMMENDED: Download and activate XMA (x16tial mouse aid) from the Dev Tools area as well, which is very handy for getting around your program to make those changes.
FUTURE VERSION(s) will incorporate making the changes to the references, but for now, this should save some work in renumbering your program(s).
This is good for R38, future revisions of ROMs will probably break this. But I will try to supply updates as quickly as possible.
Note: It *is* possible to get illegal line numbers (> 63999). What you do after this, you do so at your own risk!
By x16tialHere's a utility that will display the contents of any memory page at the top of the screen, actively and persistently.
Helps to see what's going on in different areas of memory, like zero page, the stack, page $02, page $03, page $9f, page $a0 (bank 0).
I found it useful to track down memory locations for the mouse aid program, specifically quote mode and insert mode flag locations.
(NEW to reset BASIC memory pointers, if need)
Just POKE 99,<page number> to change pages. There's a "ruler" to help you determine what location you're looking at. The 4 lines are 64 bytes each.
By x16tialThe X16's default text screen is HUGE! 480% percent bigger than the C64's! Or is it 380%? Whatever, it's nice!
This small utility is designed to help navigate this awesome space, primarily when developing in BASIC.
It turns the mouse on and enables:
Left Click: Locate cursor where clicked.
Right Click: Clear screen and execute LIST.
LOAD"XMA",8,1 (or use XMA.PRG if you like typing, also LOAD can be abbreviated with L-Shift-O)
The idea is that it really improves getting around large basic programs. One hand on mouse, other on the stop key, right click to start listing, stop when need, click where you want to edit, boom. 🙂
** BUG **: To prevent a lockup, after loading and activating XMA, just type a quick NEW.
If not, if you try to enter a basic program line (with a line number, not immediate) the emulator will hang. Or you can just load an existing BASIC file.
This is probably a holdover bug from the C64 (or BASIC V2), where BASIC's memory pointers get set strangely when loading a program that doesn't sit in BASIC's memory area.
With 1.1.0, you can now SYS 1024 after doing a reset to reactivate XMA.
By pzembrodVolksForth Readme
VolksForth is a 16bit Forth System produced by the German Forth Gesellschaft e.V.
The main repository lives here: https://github.com/forth-ev/VolksForth
Major development of this system was done between 1985 until 1989. The VolksForth Project was revived in 2005 with the goal to produce a managable Forthsystem for computer systems with restricted system resources.
Some modern Forth Systems were influenced by or were derived from VolksForth (GNU-Forth, bigForth).
The current Version of VolksForth is 3.81. Version 3.9.x will be interim versions on the way to sync all VolksForth targets and move towards compliance with the 2012 Forth standard.
Version 3.8.x is based on the Forth 83 standard, Version 4.00 will be based on the current 2012 Standard (https://forth-standard.org).
At this time VolksForth is available for this Systems:
VolksForth MS-DOS (Intel x86 architecture i8086/i186/i286/i386/i486 etc) VolksForth 6502 (Commodore 64, Commodore Plus 4, Commander X16, Apple 1, Apple ][, Atari XL/XE) VolksForth Z80 (CP/M, Schneider CPC) VolksForth 68000 (Atari ST, Amiga with EmuTOS)
The VolksForth Sources are made available under the terms of the BSD Lizenz - http://www.opensource.org/licenses/bsd-license.php
The Handbook is Copyright (c) 1985 - 2020 Forth Gesellschaft e.V. ( Klaus Schleisiek, Ulrich Hoffmann, Bernd Pennemann, Georg Rehfeld, Dietrich Weineck, Carsten Strotmann).
(most of the Information is still in german. We are planning to provide future versions with englisch documentation)
Have fun with VolksForth the VolksForth Team
By pzembrodcc64 is a small-C compiler, written in Forth, targeting the 6502 CPU.
It's hosted on the C64, on the C16 with 64k RAM, and now on the X16.
Runtime targets are available for all 3 platforms, on each host, allowing cross-compilation.
The code lives at https://github.com/pzembrod/cc64.
It's licensed under the 2-clause BSD license: https://github.com/pzembrod/cc64/blob/master/COPYING
See https://github.com/pzembrod/cc64/blob/master/Usage.md for usage.
See https://github.com/pzembrod/cc64/blob/master/C-lang-subset.md for details about the supported subset of C.
Released under the 3 clause BSD license.
Because of its simplicity the library can be stored in a 1K space below basic programs, starting at $0400. Save the EFFECTS.PRG program in the directory where your BASIC program is stored, which would typically be in the same directory from where you are running the emulator. Load library with LOAD command: LOAD”EFFECTS.PRG”,8,1,$0400 Since this routine after the first run adds a new interrupt handler it is good practice to only load it once. It is therefore recommended to do a simple check: IF PEEK($400)=0 THEN LOAD”EFFECTS.PRG”,8,1,$0400 And that is it. Now you only need to call the needed sound effect from the BASIC program with a simple SYS command. We have four different effects so four different addresses can be called: SYS $400 PING Is designed for events like picking coins or rewards. SYS $403 SHOOT Effect that can be used for shooting the gun or other weapon. SYS $406 ZAP Electricity zapping or perhaps a laser gun sound. SYS $409 EXPLODE Long explosion for when we successfully blow something up Alternative binary named EFFECTSHI.PRG that loads into memory at $9000 can be downloaded. Of course calls are then $9000 for PING, $9003 for SHOOT, $9006 for ZAP and $9009 for EXPLODE. Full source code and walk through is available at my blog: https://www.8bitcoding.com/p/simplest-sound-effects-library-for.html Demo video:
Someone asked for help creating new sdcard images to be used with the emulator, so I banged around in vim for a while and dug around in DDG until I found enough hints around using sfdisk and mtools to create a suitable file w/o needing any root permissions. Due to limits of the FAT32 filesystem, the smallest image you can format with FAT32 is 32 MB.
$ mkcard -f scratch.img -s 32 Checking that no-one is using this disk right now ... OK Disk scratch.img: 34 MiB, 35651584 bytes, 69632 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes >>> Created a new DOS disklabel with disk identifier 0x9983f409. scratch.img1: Created a new partition 1 of type 'W95 FAT32 (LBA)' and of size 33 MiB. scratch.img2: Done. New situation: Disklabel type: dos Disk identifier: 0x9983f409 Device Boot Start End Sectors Size Id Type scratch.img1 2048 69631 67584 33M c W95 FAT32 (LBA) The partition table has been altered. Syncing disks.
You'll need the mtools and util-linux packages installed to use the script. Unfortunately, this limits this to be only be usable by Linux users (maybe Windows 10 users with WSL as well, don't know, don't have a Win10 setup to try with), I don't see sfdisk in the macOS ported versions of util-linux packages.
To make things even easier to use these files with mtools, create a ~/.mtoolsrc file with something like:
mtools_skip_check=1 drive s: file="~/scratch.img" exclusive partition=1 drive x: file="~/basic-progs.img" exclusive partition=1 drive y: file="~/demos.img" exclusive partition=1
And now you can use mcopy to copy files to your s:, x: or y: drives. Just make sure you UPPERCASE the filenames so x16emu will display the filenames as you expect them to look.
This is the early early stage of an attempted "shell" for the X16.
By definition, a command shell is an interpreter that exposes the system. In practice, the shell exposes the system through an immediate-mode scripting language, which can also be executed from a file. The Commodore computers' boot mode is a kind of "BASIC shell".
This shell currently does almost nothing. I am slowly working out a set of mid-level operations for it, and plan to add the shell's command inventory on top of that. Then, I'll add the ability to run full scripts from file. Then, I'll add the ability to "pipe" the output of one script into another. In this manner, I hope to build up a small inventory of useful utilities.
By Johan KårlinThis is a tool for converting tilemaps made in Pyxel Edit to the binary format that X16 uses in tile mode 2/4/8 bpp. A two byte header set to 0 will be added. It is a simple Console Application made in .NET core. If I understand things right it should be executable on macOS and Linux beside WIndows.
1. Export your tilemap from Pyxel Edit , select JSON as format (NOT xml or text).
2. Run the application (PyxelTilemapConverter.exe) with two arguments: filename and which palette offset your tiles should be using.
Pyxel Edit is very handy because you can design both tilesets and tilemaps in the same application. It helps to cut development time. But if you're looking for a better tilemap editor I strongly reccommend Tiled Map Editor which is very powerful. And the good news is that I have made two extensions for exporting maps from Tiled as well : ) ).
When exporting it will prompt for the starting BASIC line number. The script will output a few data statements about the map. Then the tile data will be output in DATA statements with 16 elements.
By SlithyMattXCI is a graphical adventure game engine for the Commander X16. It is inspired by past engines such as SCI and SCUMM, but designed to maximize the potential of the X16 and keep the games just small enough to run, and allow developers to create games without having to program in BASIC or Assembly.
Learn more about XCI on the official GitHub page: https://github.com/SlithyMatt/x16-xci
There you will find all the source code, documentation, and example code and templates.
There is also a tutorial series currently in production on YouTube:
In the downloadable ZIP file you will find the engine executable binary for the X16 (XCI.PRG) and two embedded archives of the Windows and Linux software development kits (xci.exe). The SDK is written in standard C and can be compiled to pretty much any modern platform, including Mac and Raspberry Pi.
Stay up to date by watching the GitHub, and occasional builds will also be uploaded here.
By JennTooThis is a Python package for converting graphics into VERA-formatted data and palettes. From what I could tell, the only other software that could do this is buried in the x16-demos repository.
The package can be installed by downloading it here, or by installing it directly from PyPI (package name cx16_conv).
Information about usage can be found in the GitHub repository, or by running "cx16-conv --help",
Feedback and PRs are welcome!
GitHub Repository: https://github.com/Nitori-/cx16_conv
By BruceMcFNOTE: v0.1.4 seems to have fixed or reduced the severity of the corrupted dictionary in v1.3. Known Bugs: .S may give spurious results. DOES> is broken, do not attempt to use it.
I just uploaded this to see if it runs in the try it now box. It appears to run fine, including the words that operate programmatically based on the width of the display.
With some work with an effective in system Monitor program, it would be possible to save a copy of xForth including words you have defined on the console, but for practical purposes, this still requires a SAVE word to be able to save an image of the file after extending, and an INCLUDE word to load a script from a .SEQ file. Once those are written, I will be able to test to see how close to American National Standards Forth (ANS Forth) compliance this system actually comes.
While it runs, it is not fully exercised, so I would be very surprised if there were not bugs. "Alpha" in the title means that there ARE bugs, though I fixed two substantial ones since the last release. Bug reports & suggested bug fixes both accepted, the first dutifully and the second gleefully.
About upper and lower case: there is NO ASCII CONVERSION in this system. ANS Forth requires that ANS standard words be recognized in upper case, and its up to the individual Forth what they do about lower case. Most modern Forths are not case sensitive. This one is. So if you are in Graphics mode, do EVERYTHING in upper case. If you switch to Upper/Lower case mode, do EVERYTHING in lower case. If you enter the command WORDS to see all of the words in the dictionary, you will note some that look like /FORTH/ which is what I did when eForth had lower case words that were "platform" words that the standard Forth word in upper case was built upon. You will also see /DO/ /?DO/ and /LOOP/ as the "platform" words that DO ?DO and LOOP are built upon.
No conversion also means the the line comment word \ is entered and shown as the English Pound Sterling, aka GBP, sign, _ is backarrow, and ^ is up arrow. On the command line, any character from $00 to space is treated as whitespace, as is any character from $80 to Non-Break-Space ($A0).
For some brief usage examples and pointer to more about the Forth programming language, see the discussion forum posts attached to this upload.
A basic PDF template for a 640x480 screen so you can print up and draw your ideas the old fashioned way.
A basic PDF template for a 320x240 screen so you can print up and draw your ideas the old fashioned way.
By izbAseprite script that converts the current palette into a 12-bit (4096 colour) palette, i.e. 4-bits per channel.
To install in Aseprite, go to File -> Scripts -> Open scripts folder
Then drop the script into that folder and restart Aseprite. You might also want to assign a hotkey to the script via Edit -> Keyboard Shortcuts.
It's also useful for things like creating gradients. Just create a gradient in the normal way, then run the script, and each colour in the palette will be nudged into the closest CX16 colour.
By ChrisLlibX16 is a utility library for those using C with the CC65 toolchain for the Commander X16. Library documentation is available from the github page: https://github.com/CJLove/libX16
This is a beta v0.1.0 release of libX16 for the Commander X16 rom version r37 and CC65.
The attached artifact includes the library header files and library file for linking.
Alternatively the library can be referenced as a git submodule in the .gitmodules file:
[submodule "libX16"] path = libX16 url = https://github.com/CJLove/libX16
By SandmageVersion 0.1
This software converts indexed and RGBA images in the formats PNG, JPG or GIF into binary data suitable for the VERA chip in the upcoming 8-Bit Computer Commander X16.
Open an image file using File/Open...
Configure the settings according to your needs.
Export the image using File/Export Bitmap/Tiles/Sprites...
You can open either an indexed image with an embedded palette or a regular RGBA image.
Depending on the image mode, the software behaves slightly differently.
In RGBA mode, VGC needs to match the pixel colors to the colors in the palette. This can be done by comparing color similarity in RGB (Red, Green, Blue), HSL (Hue, Saturation, Lightness) or HSV (Hue, Saturation, Brightness) mode. Select the conversion strategy that works best for your image. Ideally load a palette that matches all colors in the image.
You can specify the bit depth of the image by changing the pixel mode. 1 Bit per Pixel results in 2 colors, 2 Bits per Pixel result in 4 colors, 4 Bits per Pixel result in 16 colors and 8 Bits per Pixel uses the whole palette of 256 colors.
The colors usable by the image depend on the palette offset.
In indexed mode VGC assumes that all pixels in the image have the correct index. It is still necessary to select the correct palette offset to give a correct export. On export the palette offset is subtracted and the index value capped on the selected pixel mode.
Any pixel in the image that has an alpha value of 255 is set to the index selected in "Transparent Color Index". The minimum value is the palette offset.
The VERA Graphic chip has three modes. Bitmap, tiled with a tile dimension of 8 * 8 pixels and tiled with a tile dimension of 16 * 16 pixels. Both tile modes split the image in separate tiles and limit their number to 256, since the VERA chip cannot address more than 256 tiles. It is also possible to limit their number even further.
To use a tile mode the width and height of your image must be divisible by 8 or 16.
The VERA chips supports 4 different resolutions: 640x480, 320x480, 640x240 and 320x240. VGC does not enforce these resolutions.
It is also possible to generate sprite maps. In sprite mode the tiles can have 8, 16, 32 or 64 pixels in width or height. They are however limited to 128 tiles, and similarly, the source images dimensions have to be divisible by the tile dimensions. Sprites can only have a color depth of 4 or 8 Bits per Pixel.
PRG File Header
It is possible to save the exported binary file with 2 leading bytes. This is necessary for some load routines in the Commander X16 Kernal.
The exported files can be saved in chunks of a given size. The VERA Video RAM is paged in pages of 2048 bytes. Files can be split at any page, depending on how you want to store or load your data. The PRG File Header is saved to every individual file.
You can load and save the color palette in the Format used by the Gnu Image Manipulation Program (GIMP)
Other software like Aseprite can read and save this format too.
You can also export the palette in the format used by the VERA chip. The PRG Header option is applied to this as well. The file splitting is not.
Analyzing the image.
You can double click on colors in the palette to change them.
When you hold the left mouse button on a color in the palette, the parts of the image using this color are highlighted.
Similarly, when you click on the image the color in the palette is also highlighted.
Installation is done by simply placing the files in the extension folder of Tiled. It will then immediately be read and installed if Tiled is running.
Windows C:/Users/<USER>/AppData/Local/Tiled/extensions/ macOS ~/Library/Preferences/Tiled/extensions/ Linux ~/.config/tiled/extensions/ For more information about extensions, see the official documentation: https://doc.mapeditor.org/en/stable/reference/scripting/