Jump to content

Dev Tools

Share Programming Libraries & Development Tools here

25 files

  1. BASLOAD

    BASLOAD is best described as a BASIC tokenizer. It takes BASIC source code stored on disk in plain text format, and loads it into RAM. While loading the file, it's tokenzied so that it can be run by the built-in BASIC interpreter.
    The purpose of BASLOAD is to enhance the programming experience by letting you edit BASIC source code in the editor of your choosing without using line numbers. Instead of line numbers, named labels are defined as targets for GOTO and GOSUB statements.
    Instructions on how to use it and source code is found here:
    https://github.com/stefan-b-jakobsson/basload

    17 downloads

       (0 reviews)

    Updated

  2. cc64 X16

    cc64 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.

    250 downloads

       (2 reviews)

    Updated

  3. BASIC PREPROCESSOR

    BASIC PREPROCESSOR allows one to create Commodore BASIC programs with a normal text editor without line numbers. Features:
    Much as strings begin and end with a quotation mark ("), macro constructs begin and end with a commercial at sign (@). This means that you cannot include @ in a macro, but otherwise any character may be used. A label can be defined on a line by itself as @+LABEL@. A label can be referenced after a GOTO or GOSUB as @-LABEL@ (including ON statements). A long variable name can be used as @!NAME@. A preprocessed comment can be used as @' whatever text you want @. These comments are not written to the PRG file. Any leading whitespace on a line is removed before writing the code to the PRG file. The preprocessor (probably) requires an emulator built from the master github branch. The program is written almost completely in BASIC. The one exception has to do with tokenization. Normally as you enter lines of BASIC the computer will translate them into a compressed tokenized form, and this is necessary for the programs to be usable. In order for BPP.PRG to create tokenized BASIC programs, it has a small machine language routine in golden RAM that converts from plain text to tokenized form. The tokenized form is written to the output PRG file.
    Here is a super simple example called SIMPLE.BPP.
    An animated GIF demonstrates the process of using the program.

    79 downloads

       (0 reviews)

    Updated

  4. ROM template

    This is a template for ROM based assembly programs that you are free to use or continue upon.
    It's made for the CA65 assembler.
    Usage:
    Create your program code as normal. Of coarse, you need to place all variables in RAM and avoid any self modifying code. Include the file kernal.inc. This will: Create jump vectors for all "public" KERNAL function, and Set the IRQ vector in $fffe-ffff, so that the KERNAL interrupt handler is called. The file example.s is a small hello world test.
    The project is built with build.sh.
    The file example.cfg contains the memory segment settings needed by the assembler/linker.
    The source code is also available on Github:
    https://github.com/stefan-b-jakobsson/x16-romtemplate

    18 downloads

       (0 reviews)

    Submitted

  5. VolksForth X16

    VolksForth 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)  
    Copyright
    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

    77 downloads

       (0 reviews)

    Updated

  6. BASIC Pre-processor in Perl

    Scott's dev tool prompted me to post this one.

    This is a dev tool for people who write things in BASIC, but write it off-board, and like to have some more modern features. 

    This script runs best on a UNIX or (perhaps) a Windows environment.
    It supports
    (1) Labels.
    (2) Long variables.
    (3) Multiple source files.
    (4) "Ephemeral" comments.

    Your source files must not use line numbers.  This script will create them for you.
    Labels look like C64 LIST's:
     
    {:this is a label} goto {:this is a label} Long variables are actually namespaces that work for strings, floats, or ints.  They can have periods in them, so they can even vaguely resemble object field accessors. Declare and use them like this:
    longvar \thing.entry \thing.entry$ = "the thing!" \thing.entry = 5.0  

    Ephemeral comments start a line with a semicolon.  Their entire content is ignored and thrown away when the output BASIC source is built.  I think it's useful for development documentation that's not needed in the target BASIC 2.0 code.
    ; ;   This comment will never show up in the target code. ; This invokes the script, passes in files 1...n  (however many you have), and redirects STDOUT to a target file (here, output-file.bas).  That output file is ASCII source, and is directly loadable into the emulator via the -bas flag.  
     
    perl basic-labelmaster.pl file1.list file2.list ... filen.list > output-file.bas  
     
     

    6 downloads

       (0 reviews)

    Updated

  7. 8sh

    https://github.com/bobbyjim/x16-8sh
    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.
     
     
     
     

    49 downloads

       (1 review)

    Updated

  8. Hex dumper

    A 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.
     

    66 downloads

       (0 reviews)

    Updated

  9. VTUI Library

    VTUI (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. 

     

    457 downloads

       (2 reviews)

    Updated

  10. x16tial renumber

    Version 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!)
    To activate:
    LOAD "XREN.PRG",8,1
    SYS 1300
    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!

    22 downloads

       (0 reviews)

    Updated

  11. x16tial Page Examiner

    Here'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.
    LOAD"XPAGEX",8,1
    SYS 1024
    (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.

    13 downloads

       (0 reviews)

    Updated

  12. x16tial mouse aid

    The 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 with:
    LOAD"XMA",8,1   (or use XMA.PRG if you like typing, also LOAD can be abbreviated with L-Shift-O)
    SYS 1024
    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.

    73 downloads

       (1 review)

    Updated

  13. Simplest Sound Effects Library for BASIC programs

    Usage
    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:      

    52 downloads

       (0 reviews)

    Updated

  14. mkcard

    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.

    33 downloads

       (0 reviews)

    Updated

  15. Tilemap Converter for Pyxel Edit

    This 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.
    Instructions:
    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 : ) ).

    24 downloads

       (0 reviews)

    Updated

  16. Tiled Map Editor BASIC DATA export

    This file is a JavaScript extension for the Tiled Map Editor. It will export your Tiled map as BASIC DATA statements. Inspired by Johan Kårlin export files.
    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.

    27 downloads

       (0 reviews)

    Updated

  17. XCI: eXtremely Compact Interpreter

    XCI 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.

    96 downloads

       (0 reviews)

    Updated

  18. cx16_conv: Graphics Conversion Tools

    This 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

    15 downloads

       (0 reviews)

    Submitted

  19. alpha xForth Compiler

    NOTE: 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.

    75 downloads

       (0 reviews)

    Updated

  20. Paper Template 640x480

    A basic PDF template for a 640x480 screen so you can print up and draw your ideas the old fashioned way. 

    22 downloads

       (0 reviews)

    Updated

  21. Paper Template 320x240

    A basic PDF template for a 320x240 screen so you can print up and draw your ideas the old fashioned way.

    30 downloads

       (1 review)

    Submitted

  22. 12-bit palette script for Aseprite

    Aseprite 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.

    46 downloads

       (1 review)

    Updated

  23. libX16

    libX16 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

    23 downloads

       (0 reviews)

    Submitted

  24. Vera Graphics Converter

    Version 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.

    Basic usage:
    Open an image file using File/Open...
    Configure the settings according to your needs.
    Export the image using File/Export Bitmap/Tiles/Sprites...

    Image Modes:
    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.

    RGBA:
    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.

    Indexed:
    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.

    Transparency
    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.

    Image Mode:
    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.

    Splitting files
    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.

    The Palette
    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.
     

    197 downloads

       (3 reviews)

    Updated

  25. Extensions for exporting maps from Tiled Map Editor

    These files are two javascript extensions for the Tiled Map Editor. They allow you to export your map either as assembler source code (ACME syntax) or in a raw binary format including a two byte header set to 0. They support flipping of tiles and let you select a palette offset. If you are using another assembler the first extension can easily be changed for your needs if you have som basic knowledge of javascript : ).
    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/

    87 downloads

       (0 reviews)

    Updated

×
×
  • Create New...

Important Information

Please review our Terms of Use