A downloadable tool for Windows

Download NowName your own price

C64 Studio is a .NET based IDE.

The program supports project based C64 assembly or Basic V2. The internal assembler is using the ACME syntax.

In connection with Vice the IDE allows you to debug through your code and watch variables/memory locations, registers and memory.
Any other emulator can be set up as well if it's startable via runtime arguments.

C64 Studio allows you to compile to raw binary, .prg, .t64, .d64 or cartridge format (.bin and .crt for 8k, 16k, MagicDesk, easyflash)

Additionally to this C64 Studio comes with a charset, sprite, graphic and text screen editor plus media editor (tape and disk).

An encompassing help documentation is part of the program.

The full source code is available under the MIT license at GitHub

The current version is 7.7, updated on 21.02.2024:

Add: 68k support (no opcode size fallback yet, but feature complete)
Add: Copy to clipboard adds column selection mode flag 
WIP: Paste column selection block from clipboard inserts all lines
Fix: Potential crash if unknown macros are using in text literal
Add: Charset export for S-BASIC fcm chardefs
Add: When exporting to BASIC DATA statements, option to insert spaces
Fix: BASIC: Paste ^ into BASIC editor now properly converts it
Add: Disassembler, option to keep on disassembling even when encountering code end points (like rts/jmp)
Fix: Potential racing condition in VICE binary monitor debugger interface could crash Add: S-BASIC dialect file for Mega65 Fix: Disassembler crash if a non preset label would be placed inside an opcode
Add: BASIC Toggling label mode does not mess up with #include/#media statements anymore
Fix: Disassembler was broken for new addressing mode (e.g. ldy #$xx)
Fix: BASIC ambigious variable listing
Add: CTRL-Z/shift-Z as alias keybindings for undo redo
Fix: mapping of !fi pseudo op
Fix: Don't crash when viewing 0xde00 in memory viewer
Fix: Adjust SID repeat cycle to 32 registers, avoiding crash when accessing $D440
Fix: breakpoint filter logic of Tiny64Debugger
Add: ASM - Context Menu: Add Watches with different sizes directly
Add: Binary Editor -> Divide
Add: BASIC Ambigious warning for shortened variables now only shows up once per affected variable
Add: assembler - binary literals now collapse properly 
Add: Label Explorer all references shown 
Add: Clicking in Label Explorer on reference selects all references in the code file (not only direct text matches)
Fix: Sprite editor,  sizing/scaling issue with DPI > 100%
Add: Second Solution menu back on main menu
Fix: XC-BASIC-dialect file missing some commands, also BASIC renumber bailing out when basic commands are missing
Add: BASIC Option for temporary meta data less files for custom build steps
Add: Assembler autodetect would choose PDS if "include" was inside comments
Fix: potential crash when storing open nodes with new reference labels
Fix: introduced bug in !text that would miscalc the number of bytes used
Add: charscreen editor, charset export now uses selection from character editor 
Wip: Graphic screen editor zoom/scroll
Add: Option for caret width
Add: Charscreen editor in Mega65 mode didn't allow for all 256 bg colors
Add: ACME assembler mode handles >,< unary operator precedence differently 
Add: C64Ass - Set Assembler Type option
Add: Crash in charscreen editor, after changing to Mega65 FCM mode and switching to the character editor tab
Fix: Recurring ObjectDisposedException because of timer still running
Fix: BASIC allow arrow up as single char token, to avoid adding the arrow as variable name part 
Add: Rename Disk ID now using 5 characters (ignoring the middle one though)
Add: Autodetect BASIC files usage of macros on load
Fix: File Manager, renaming disk/ID ended with wrong characters
Fix: BASIC ^ is properly replaced with Up Arrow on symbol toggle 
Add: $(SolutionPath) as macro for build events
Add: !while pseudo op 
Fix: Speedup in assembling aftermath
Add: !scrxor for ACME compatibility
Add: Custom sounds, as the Windows sounds for build success/failure sound the same per default
Fix: TASM now supports properly stacked local labels +/-
Fix: Update for Tasm support, .if, .else and .fi working, also labels with : following 
Fix the caret fix, we get ObjectDisposedExceptions a lot
Fix issues/105, caret stops blinking due to stupid system wide setting
Fix: BASIC editor swallowing any alt-shortcuts (menu access)
Add: Assembler, math.random and math.randomseed
WIP: Proper DSK filling when building
Fix: Fixed off scale of menu items (forms scaling is finicky)
Add: Make memory PETSCII/character views have selectable byte width
Add: Assembler !skip pseudo op (for ACME compatibility)
Fix: Source editor now does drag/drop with move/copy depending on control key
Fix: Initial breakpoint for C128 set to $5a9B
WIP: CPC DSK format now able to write file to image (only tested with small for now)
Add: Z80, allow LD r,r without apostrophe as well
Add: Sprite Editor import from binary file, sanity check if all would result in black on black, make it white on black
Fix: If invalid opcode combination is used, and opcode is interpreted as label, and then line errors out, still give error message regarding opcode
WIP: CPC DSK format support
Fix: & as hex prefix properly working now, also for selection
Fix: Sprite Editor GIF export now properly uses min/max extents
Fix: Sprite Editor Preview - switching between layers now keeps selected sprite
Add: Z80 Opcodes (!cpu z80)
Fix: Sprite editor import from binary file does not skip given bytes WIP: Z80 #2
Fix totally borked extended Opcodes (non 6510)
Fix: ext functions (e.g. math.sin were broken if acted upon) WIP: Z80
Fix https://github.com/GeorgRottensteiner/C64Studio/issues/102 (new solution with separate project folder was wrong, no project folder was created), node name of project was that of the solution
Fix: Wizard true drive arguments for newer VICE versions is borked

Older version 7.6. from 13.10.2023:

Add: BASIC #chardata meta op
Adjust easyflash cartridge test files
Fix: easyflash cartridge file was half the actual max. size (1MB)
Fix issue 97, find all references tripping over redefined labels
Add: BASIC separate key mapping for fake cursor up/left (instead of the hard wired one)
Fix: BASIC autotoggle quote mode now works properly in lines with REM
Add: Proper VICE version detection for true drive option (goddamn)
Fix: asm macro check for existing macros sometimes failed (Tuple hash was bad)
Rearrange projects to minimize Windows dependencies (C64Ass now has a
Windows-less variant and can run directly on e.g. Linux)
Add: BASIC loading weird bytes are now forced to PETSCII range
Fix: !zone after label inside inactive scope was ignored
Fix: Opcode for zeropage,x and zeropage,y would not evaluate properly
Add: Macro overloading
Add: ACME compatibility, allow == as equality operator
Add: Overloading macro support (ACME and C64Studio only)
Merge pull request #95 from Commodore64128/TASM-help
some additional TASM and 65816 detection code
Add: Proper bookmark support for BASIC
Fix: Only modify preferences display if it actually changes, remove flicker
Add: BASIC editor - set string entry mode on position option
Fix: Do not Auto-replace ? with PRINT inside string literals even with deactivated string entry mode
Fix: Autotruncate Literal Values checkbox not initalized properly in preferences
Add: 65816 support
Add: Assembler - Ctrl-Click jump to file (on !src directives) or symbol
Fix: BASIC renumber with ON GOTO/GOSUB where some values were skipped (e.g. ON GOTO 2,,5)
Add: BASIC SpriteData directive
Fix: Endless loop in sprite editor fill routine
Add: Duplicate display for sprite and charset editor
FiX: Potential OutOfMemoryException when filling outside the actual image
Add: BASIC -> add shortcut keys to context menu
Add: BASIC Editor: Comment/Uncomment selection
Fix: Bookmarks were not properly restored on load
Add: BASIC pseudo op #bindata
Fix: Filename for .prg files in File Manager
Fix: Custom tree node toggle button was only shown if there were more than 1 child node (facepalm)
Fix: value table editor calculation wrong

Older version 7.5. from 28.07.2023:

Fix: Export as DATA statements would calculate char wrap wrong (DATA treated as 1 byte)
Fix: Assembler now allowed something like cmp ($124 + 4) * 10, previously rejected as "unsupported opcode"
Fix another potential crash when exiting the emulator
Add: GIT Support (rudimentary, only simplest functions, be careful with revert!)
Add: Git support in Solution Wizard
Fix: Tiny64 Debugger crashing while trying to access null device
Add: Intellisense filtering now treats parts of a label separately
Add: Preferences for Source Control
Fix: Potential invalidoperationexception when parsing collides with source file opening
Add: Map Editor copy/paste now copies full map if no selection exists, paste works in every mode
Add: Dropping *.spd (SpritePad) file will now open in SpriteEditor
Fix: SpriteEditor import from SpritePad would not set MC flag properly
Add: Create Solution/Project
Fix: Sprite Editor saving to GIF was broken since changing everything to 32bit
Fix stupid bug in ToFilename, upper casing was broken
Breaking fix: Adjust casing of filenames in building, MediaManager and File renaming dialog
Catch potential crash when a font errors out in FontDialog
Update emulator setup docs
Add: Save/Restore help page zoom
Fix: Disassembler, trying to keep scroll offset could result in code being out of the visible area
Fix: Bug in assembler, when using ! operator in !message could modify value of previous set temp label
Fix Potential crash in MC sprites color settings
Fix: Char screen editor - layout screen had duplicate star but missing closing parenthesis
Fix: Charset editor for VIC20, Shift/Rotate Left/Right ignored multicolor flag
Add: ASM &= operator
FIX: BASIC label mode To/From label mode was again hilariously broken
Add: Mapeditor import/export forms
Fix: avoid evaluation of conditions if inside an inactive scope
Fix: Previous fix for if else chain with undefined label was not complete
Fix: else if now skips evaluation conditions if a previous entry in the if/else chain was already handled postive
Add: Setting for max line length indicator in BASIC and ASM editor
Add/Fix: Make preferences dialog vertically resizable
Add: Map Editor automatically select first tile on opening project
Fix: comparison string > int could fail by trying to highbyte the int
Fix: symbol arithmetic, plus treat single char string as char
WIP: StringArithmetic
WIP: More GIT, custom drawing of Solution Explorer
Fix: Can't jump to search results for unnamed file search results
Fix: Crash in charscreen editor in text entry mode when the "cursor" got outside the bottom right corner
Fix: Tiny speedup by avoiding reparsing tokens for lines with label in front
Add: Update TSB dialect file
Add: Of course also use numbers for number x= number assignment
Add: Auto promotion of int/float to float for assignment operators
Fix: internal brackets in nested macros could cause !ifdef to fail
Fix: !ifdef not working inside macro on any but the last parameter (due to internal bracket usage)
Fix: Crash if failed to evaluate expression in else if
Add: String comparison handling
Actually staging before pushing
Add: string label concattenation mostly working now
Fix: Disassembler off by one error could lead to target labels inside an instruction not being added to the output
Fix: Allow label reassignment with different types
Fix borked local label qualification for !if PO
Fix: local symbol qualification with !ifndef PO
Add: Assignment operators (+=, -=, etc.)
Fix: Border/Background palette color count messup for VC20
Add unit tests
Fix: comparison match now returns 0xff instead of 1
Fix: Missing icon in compile result for !message would crash
Fix: local labels not always fully qualified in !if/!ifdef/!ifndef paths
Add: Macro listed in Outline
Add: Message output displays integer decimal and hex
Hack/Fix: Wrong cursor left characters (introduced between 7.3 and 7.4) auto fix if non 3.5 basic dialect
Add: Auto-renumber settings for BASIC
Fix: BASIC disassembler, PRINT preferred to ?
Add: Outline/Label Explorer now properly storing states per ASM File info
Fix: LabelExplorer/Outline did not update on simple compile
Fix: BASIC bug, where referenced line numbers were ignored when the line had a REM at the end and REM stripping was active
Fix: BASIC label mode toggling, keep spaces intact
Add: Label Explorer to separate from Outline
Add: Compile result, use ellipsis in file name, also use theming colors
Fix: Setting parameterd labels inside macro would fail with syntax error
Fix: Tool tips now take line number in account (temporary labels can have different values depending on location in file)
Fix: Outline now shows global labels in global section instead of the zone they're placed inside (TODO - could be an option?)
Fix: No duplicate opened doc when "Save Copy as" is used to overwrite already opened file
Fix: Assembler generating a file with two zero bytes when no data contained, and no start address was given
Fix: BASIC stripping REM was messed up
Add source control dependency
Fix: palette import via !media had the RGB flag wrong
Fix: BASIC preferences not checking font
WIP: Source Control #2
WIP: Tree/Git

Older version 7.4 from 26.03.2023:

Add: Tiny64 Interface to not tie it to Windows directly
Add: Shared version info
Fix: label mode toggle would loose the # on a GET#2 (probably others too)
Fix: BASIC TSB label parsing for syntax coloring
Add: MediaTool: Charset export from map and charscreen projects
Fix: Potential exception when using numbers as shortcut keys and setting them in the context menu
Fix: REM content was handled as separate tokens (and wreaking havoc if a token ended up as an opcode)
Add: Bookmark window, menu/context menu entries for bookmarking
Fix: BASIC Several Ctrl-letter short working (Ctrl-E, Ctrl-M, Ctrl-N, Ctrl-Q, Ctrl-R, Ctrl-S, Ctrl-T)
Fix: Potential crash on duplicate argument entries for a tool (which shouldn't happen)
Fix: opcode size forcing for zeropage did not work if nested brackets were used
Add: Preferences completely replaced
Add: Toggle document tabs via Ctrl-Tab/Ctrl-Shift-Tab
Add: Show shortcut keys on asm source editor context menu
Fix: Rename references keeps scroll offset intact
Fix: Unit tests for cartridge compilation use external compare files now (the constants were getting too long)
Fix: Allow incomplete data import in charscreen editor
Add: Cartridge support for all magic desk size variants (32k,128k,256k,512k,1M)
Fix: easyflash cartridge sample to actually work (Ultimax mode!)
Add: New preferences dialog, with local import/export for ALL options
Add: C128 VDC 80x25 charset mode (and C128 palette)
Fix: https://github.com/GeorgRottensteiner/C64Studio/issues/81
Fix: char screen editor reverse mode, now works for text entry and also uses the intended cache (https://github.com/GeorgRottensteiner/C64Studio/issues/80)
Fix: BASIC It's column, not row, damnit!
Fix: BASIC Update case button caption/image if loading a lower case file
Fix: Renaming a file in Solution Explorer now also properly adjusts dependencies
Add: Show bytes/cycle count of current line, when nothing is selected
Fix: BASIC Ctrl-N would insert the wrong character
Fix: Issue #78, cancel on C64Studio closing (X) would still shut down
Fix: Map editor undo would not update display if scrolled
WIP-Fix: Autocomplete combo in Replace dialog at least works now, not final
Fix: Emulator combo would be empty on first startup, after emulator setup wizard ran
add/fix: Map editor, several convenience functions (default select a map/tile if opened)
Fix: BASIC toggling case would mess up macro casing inside string literals
Add: Import from binary file now allows to skip a number of bytes
Add: Charset editor, import from hex
Fix: BASIC renumber keep spaces between numbers intact
Fix: Broken BASIC renumber would run emulator sometimes
Fix: FileManager drag&drop was broken due to renaming the main namespace
Fix: Remove shadow cursor after triple click
Fix: Scaling issues on high DPI for build event tab
Fix: "Shadow" caret when clicking inside selection
Add: MediaManager support for file types
Update: TSB dialect file
Fix: BASIC auto scan for renumber properly builds with dependencies as well
Fix: BASIC Macro with BASIC token inside would mess up (during renumber, etc.)
Add/Fix: Proper detection of circular inclusion
Add: missing BASIC X16 tokens (again?)
Fix: BASIC renumber with macros inside
Fix: MarQ import without bg colors crashing
Add/Fix: Import charscreen from CTM/Marqs editor now properly updated background color, open file dialog preselects all supported file types
Add: Saving/Restoring bookmarks in assembly view
Fix: BASIC - Re-allow Ctrl-key bindings to work (Ctrl-S, etc. didn't work anymore)
Fix: BASIC toggling label mode would auto-insert macros, now they're kept intact
Fix: Binary editor export to BASIC, adhere to wrap counts
Add: BASIC better label button description plus tool tip
Fix: BASIC editor: Regular Ctrl-key combinations working outside of string enter code
Add: Layout choice of character list for better PETSCII
Add: C64Debugger breakpoint file (currently all breakpoints are added as break on exec)
Fix: Show <source file> on right click now uses correct casing
Add: Rename all references
Fix: VIC20 only allows 8 background colors
Add: Allow text macros in string literals

Older version 7.3, updated on 14.11.2022.

Fix: File Manager rename dialog would remove Shift-Spaces after double clicking a letter in the list
Add: Preliminary Commander X16 support (charset, charscreen, sprites 16/256 colors)

Fix: BASIC renumber issue with hard comments (they'd make line numbers skip)
Fix: abort with error if implicit opcode ends with garbage
Add: Commander X16 charset and hiRes 16 color charscreen support and sample
Fix issue #72 (Maximized C64Studio starting up empty)
Add: Preliminary Commander X16 support for 16 color text modes to charset and char screen
Update: Map Editor selection display
Re-Add: Map Editor - draw tiles with override color
Fix: lzone label did not get cached comments
Add: FileManager: Rename Export to BASIC variants to Open As
Verify charscreen property reloading
Add: Allow BASIC parser to recognize extended tokens inside REM (SB, TSB)
Fix !lzone label not having comments
Add: BASIC detect extended tokens inside REM
Fix: inprecision in value table editor/export
Add: BASIC files store case
Add: !lzone pseudo op
Fix: Potential crashes
Add: Double click in debug breakpoint window jumps to source (if any)
Fix: Overflowexception stopping mousewheel down scrolling in ImageListBox
Fix: Character editor import with "Any" choice for color settings could crash
Upd/Fix: Toggle upper/lower case would screw up shifted letters
Upd: TSB dialect file, add new token CLS
Hack/Fix: Keep bookmarks intact during replace all and followup undo/redo
Fix: BASIC crash on nagivate back/forward, if it was not created by opening a file
Fix: BASIC searching in lower case display now working (hopefully)
Fix: new add label feature in disassembler
Fix: Not switching GUI back from debug mode after stopping non debuggable emulator
Add: Label concattenation via ##
Add: Disassembler add label from address value
Add: Starts of very rudimentary KickAss support
Fix: Adjust caret height to actual line height
Update: Tiny64 internal debugger, better IO reading (still a lot of VIC registers not properly handled)
Add: Proper theming also for selected menu items, list view header and tab headers
"Fix": Unit test for tan(45) would result in values extremely close to 1, but not exactly
Fix: ImageListBox not removing scrollbar if content would fit exactly
Fix: Restore Save As functionality as it was, it caused too much confusion
Add: BASIC65 - VSYNC Token
Add: Charscreen export to BASIC now properly handles colors >= 16 (Ctrl-A/Ctrl-D)
Fix: File manager save of new created media not working
Add: Line number color configurable
Fix: triple click only react on left button
Fix: Sprite editor preview, bg was not drawn transparent
Fix: BASIC autoselect tokens in lowercase mode
Add/Fix: Sprite editor - import errors are now written to the output window
Fix: Another duplicate caret issue in FastColoredTextBox during dragging text
Add: immediate label toggle in ASM file
Refix icon/bitmap confusion of blue flag icon
Add: WiC64 samples
Fix: BASIC pressing enter in string entry mode now properly ends the line
Fix: Typing ? inside comments is not expanded to PRINT anymore
Add: Paste files from explorer are added/copied to the project
Add: Option to toggle shortcut labels in ASM view
Fix: Stray non-blinking caret after drag/drop of text inside FastColoredTextBox
Fix: Compile Result stealing focus when put in foreground/unhidden
Add: Disassembler, options for displaying addresses/data
Add: Direct option for BASIC C64 Font size if using the internal font
Fix: Pound character in !text/!pet
Add: Rename solution
Add: Build support for .NET 3.5 (original version), 4.8 and 6.0
Fix issue #69 (VICE remote binary monitor interface hang)
Fix: char screen editor - stupid bug that nixed all color in "affect only color" mode
Add: Convert data statements from decimal to hex and vice versa
Port project files to SDK format

Older version 7.2, updated on 06.07.2022.

Update Mega65 samples
Fix opcode doc formatting
"Fix" potential errors in dir art import
Fix: Potential crash on malformed path in !src
Add: First experiments with NCM mode (mega65)
Fix: automatic horizontal scrollbar would not always become visible when tabs are hidden under the mini view
Fix: Issue with temp labels that are modified inside !for loops
WIP: Mega65 NCM
Fix: Major speedup for copying sprites to clipboard
Fix palette mapping for unpaletted pictures
Fix: UTF8 encoding without BOM
Fix alpha part of incoming palette
Add vscrollbar to image list box (now works in character selection panels)
Fix: BASIC - Proper handling of hexadecimal literals for BASIC 65
Fix? : Downgrade DockPanelSuite (had some issues one some machines the layout was hosed on startup)
Add: Outline double click automatically selects source
Add: BASIC65 WPOKE token
Add: BASIC warning if truncated variable names end up ambigious
Add BASIC/Assembly combined sample
Fix potential crash in build
Add: Mega65 sample project Dalek Attack (BASIC)
Fix: On charset import in char screen editor verify import format
Fix: Do not auto-collapse binary literals into local labels (#..## variant)
Add: BASIC #include directive
Add: !nowarn pseudo op
Fix label location
Fix: Import/export for sprite editor
DockPanelSuite Crash fix
Update DockPanelSuite
Add: Button to toggle collapse state of zones in assembly
Add: Stop autocomplete on opening when inside a comment
Add: Dependency checking for missing target files
Cleanup: Import methods in separate forms for Charscreen
Add: charscreen editor Cleanedup export methods, add as string, replace space with cursor right and strip unused color options
Cleanup: Export methods for charscreen editor
Fix: Enhancements for issue https://github.com/GeorgRottensteiner/C64Studio/issues/56
Fix: Reordered BASIC dialect file for Mega65/V10 so GOSUB and GOTO are highlighted properly
Fix: PETSCII table issues (no redraw, no insert if docked)


Updates for 7.1:

Add: Charset screen copy to clipboard also copies image section
Add: Force HiRes bitmap export to use the same color settings if possible
WIP: Relocation file
Fix: BASIC disassembler, no token completion inside string literals inside REM
Fix: C64Studio/ACME style macro only possible with + prefix
Fix: Nested loops were broken (again), last loop had wrong values
Fix crash on cloning projects on overwriting existing files
Add: !list pseudo op to suppress output in preprocessed file
Fix: Export from .prg to .bas file, do not inflate control codes to opcodes in REMarks
Add: Clone solution method
Fix: Renaming project also renames the .c64 file
Add: Caption show name of solution and project
Add: Allow copy/paste of charset from Mega65 to C64 with palette mapping
Fix: Potential concurrency issue on accessing dependencies
Fix: Temp labels not showing up in Outline/Intellisense
Add: Graphic screen editor: Support for Mega65 mode
Add: Colors to map project (beginning support for Mega65 modes)
Add: !media support for mapproject (character data)
Add: Charscreen Editor - Export to Marq's PETSCII editor format
Fix: Uncomment on half selected first line would leave the comment prefix
Fix: Potential racing condition accessing DeducedDependency list
Fix: Charset import from ASM now works for Mega65 formats
Major update on Tiny64 emu: Most common opcodes now working with Wolgang Lorenz' test suite, programs start working
Add: Hexbox, Ctrl-A = Select All
Fix: Secondary memory view uses configured colors now
Fix: Tiny64 irq behaviour, now the cursor blinks!
Fix: late resolve of temp label failed
Fix: Allow to type ? in REM again for BASIC
Add: Update Mega65 BASIC dialect file (BIT command)
Fix: add temp label type (would not show up in Outline)
Add: 32 color support for Mega65 HiRes mode
Add: Capture error/output streams for called emulators
Fix: main toolbar button size for super high DPI
Add: BASIC 65 tokens lock,unlock,bit
Add: Auto-open preprocessed file
Fix: Non project files, that are used in a shared build now also share file info (and thus Outline)
Add: Allow multiple zone declaration
Fix: BASIC Shift-Space now works as expected, Shift-Arrowup is now properly known for PI,remove shift-arrowleft
Fix: Issue 59, !trace not working as expeced
Add: Charpad V8 format import support
Add: Pre build chain projects are now properly check for changes on a rebuild attempt
Add: Option for right click behaviour in charset/sprite editor
Fix: Properly build text messages with !warn/!message/!error
Fix: Charscreen editor bg color combo fix
Fix: BASIC Allow ? as first token in label mode
Fix: Charscreen editor, allow 256 color in bg color for Mega65
Fix: Label mode toggling messing up line numbering when hard comments were inside
Fix: Character shortcut keys now also working in sprite/charscreen/map editors
Fix: Syntax coloring for tokens right after line number
Fix: ToString for real number symbols results in proper value (e.g. 1.5 instead of 1)
Fix: Outline store expansion state of "global zone" node
Add: Copy/Paste buttons in charscreen editor
Add: Allow palette import with FCM charset import
Fix: Display FCM char color 0 as transparent
Add: Go To Declaration automatically sets navigation point on source
Fix: Color shortcuts now only select color, not change it (charset editor, sprite editor)
Fix: VIC20 charset editor exchange color missing functionality
Add: Sprite editor clear
Fix: VIC20 charset mirroring X
Add: Active project per solution
Add: Charset screen import from BASIC listing (parsing PRINT statements)
Fix: single character literals
Add: text screen export with offset
Fix: theming issue on project properties for build events
Fix: Rename Atari Sample project folder
Fix: handling of string literals could result in hard coded value 1
Fix: Color chooser dialog in map and text screen editor
Add/Fix: ViC20 uses proper palette
Add: Clone Project option in Solution Explorer


Updates for 7.0:

Add: Mega65 sample projects showing a few new features
Add: Find Reference also works on macros
Add: math.floor and math.ceiling
Add: Import graphic for FCM mode
Add: graphic import, generate palette from > 8bit images
Add: Real number support throughout assembly
Fix: File manager showing proper PETSCII characters for file names
Fix: !fill with expression list filling num times sequence, not num bytes
Add: Sprite Editor, allow importing new palette from clipboard image
Add: Palette editor: Support import of regular formatted palette file RRRRRRRRGGGGGGGGGGBBBBBBBB
Fix: Backspace with tab in front could auto-delete the tab and mess up undo
Add: Exchanging colors now only affeects selected characters
Add: Changing a color auto-selects it for drawing
Fix: Mega65 16bit charmode mostly working
Add: New functions math.todegrees and math.toradians
Fix: BASIC import from prg now properly restores PI symbol
Fix: Charscreen editor - cut off floating selection, fix for 16bit chars
Fix: Share asm file info also if file name case does not match
Fix: Deleting selection with tabs inside and tabs following
Add: Mega65 16bit character support
Add: Charset project multiple palette support
Add: C64Ass -v/--version option
Fix: issue #55, watch entries cannot be deleted permanently
Add: Opcode docs for Mega65
Fix: Allow sta ( x*y) + ( 231 - 3 ),x to compile
Add: active palette per sprite
Add: Outline showing BASIC variables
Add: Store Replace settings in Find/Replace dialog
Fix: Add Project as add Existing item now properly adds the project to the solution
Add: Media Manager support for D81 format
Add: Mega65 modes in Map Editor
Fix: !dword upper two bytes were zeroed out
Fix: BASIC parser logging error on a unclosed macro
Add: assembler source file encoding choice
Fix: Find/Replace showing result on screen (scroll horz), find at first position and proper line index
Add: Sprite Editor fill method
Fix: Do not overlap pasting floating selection in charscreen editor
Fix: assembler type autodetection detecting PDS/DASM with "org" inside string literals
Add: Syntax coloring for button backcolors
Add: Charscreen editor: Painting in one stroke is now one undo step instead of every single char
Fix: undo charset screen size would not update size textboxes
Fix: Char/Sprite list remove mouse over highlight if mouse is outside
Add: C64Ass define, nowarnings, ignore specific warning arguments
Add: autofill current selection in find/replace dialog (only if single line)
Add: Support for VC20 and Mega65 FCM modes in charset and charscreen editor
Major rewrite: Find/Replace now working with tabs properly
Fix: Update BASIC 10 commands to latest doc state
Fix: Find Next/Replace Next now always starts at the cursor pos, not on a previously last found pos
Fix: Caret pos when deleting line and line below is shorted then the deleted one
Fix the strip spacing fix to not destroy code with tabs inside
Add: mega65 support to text screen editor for 80x25 modes (hires and mc for now)
Add: Strip Trailing Spaces now also trips trailing tabs
Fix: Drag&Drop with mouse dragging (plus Ctrl) works again


Updates for 6.9:

Add: restore active tab of tabbed panes
Add: Allow BASIC PETSCII macros inside !text statements (e.g. !text "{clr}hello world")
Partial fix: properly add up line sizes on overlapping content (loops, macro calls)

Partial fix: Offset line memory for nested !for loops
Fix: BASIC build now works from label mode directly
Add: Illegal NOP variants following ACME
Fix: for wrong number of bytes in string literals
Add: allow PETSCII control char substitution in assembly as well: !text "{clr}hello world"
Fix: Export map editor to assembly, unusable label names from unfortunate tile/map names
Fix: Source/label info for lines which are separared via colons
Fix: Memory map output
Maybe complete: Save As now does internal renames, save copy as does not
Fix: ASM Parser, not properly collapsing tokens if the line ends with a comment
Add: Textual memory map output after compiling
Add: Do not mark built files as dirty when switching between loaded projects
Fix: NOP $abcd now working with $0c for 6502/6510
Add: Navigating back/forward
Fix: File Manager Disk image, adding new directory entry may overwrite pointer to next track/sector
Fix: Only remove BASIC meta data line if it is actually present (facepalm)
Add: Search/Replace in whole solution
Fix: Updates the condition field when a new breakpoint is selected
Add: Find all references
Fix: Source code changes now handled with new events, breakpoint moves are now correctly handled
Add: Show all references
Fix: Potential fix for missing 3rd column in debug watch view
Fix: Adding a breakpoint via Debug Breakpoints dialog now adds a breakpoint marker in the source file
Add: Charset screen editor, show selection bounds
Fix: Disassembly not updating with code
Fix: Set BASIC V7 default start address to 7169
Add: Save/Restore BASIC file meta data (start address, dialect) in .bas file itself
Fix: Speedup of syntax coloring update during background parse phase for huge files
Fix: BASIC PRINT export from charset screen editor now working with apostrophes
Fix: bug in watch removal
Fix: Debug watches are now displayed per project/single file
Fix: Pressing the Delete Button in the Breakpoints Window will now remove the breakpoint from the ASM window.
Add/Fix: Undo for category swap
Add: Partial support for Charpad ctm format version 7

The previous version is 6.8, updated on 14.05.2021.

Add: Allow list for !fill expression
Add: Auto-Fill emulator entries on wizard or new entry
Add: !fill expression parsing with list
Fix: BASIC renumber messing up lower case mode
Add: Charsetscreen editor: Shifting
Fix: Charscreen editor: Several display errors in extra wide charscreens
Fix: Tooltips in embedded charset editor control
Add: Wizard emulator detection, Enable OK Button on paste
Add: Binary Editor: Pack half bytes and swizzle
Add: Export option for !mediasrc and maps, mapextradata only
Fix: BASIC : Most issues with upper/lowercase toggling are fixed
Enhance: Error message on wrong character count on !media/!mediasrc for charset
Fix: Imported charsets should always have at least 256 chars
Fix: Exporting from MapEditor to charscreen sets color controls properly
Fix: BASIC code, toggle upper/lower case now properly handle string literals
Add: File manager - Little feature, import screen code asm !byte statements to
automatically create dir art entries
Add: Map editor, allow export of extra data only
Fix: BASIC Editor, auto-complete BASIC commands also in lower case mode
Fix: Change operator prio of modulus to match division/multiplication. This might break things for people who don't use brackets
WIP: TASM/C64Tass support
Fix: Exporting BASIC file via File Manager now sets the chosen BASIC dialect
Fix: Autodetect assembler type fix did not properly handle comments
Fix: Crash when opening help after help was closed via close all function
Fix issue on late evaluation of relative 16 bit branches/jumps
Fix: Optimize assembler detection (skip comments)
Fix: Same issue with POIncludeMedia
Fix: Exception with !binary "
Fix: Restore cursor position/scroll offset after replace all
Add: Image export to clipboard for charscreen editor
Add pseudo op !be16, !le16, !32, !be32, !le32
Add: Adjust syntax color to currently used CPU and assembler
Add unit test for wrong memory segment combination
Fix: off by one error (writing wrong values if !fill was followed by a one byte gap and then more data)
Fix: Wrapping of tile data export in map editor
Fix: Wrong error message with overlapping segments when using !bank pseudo op
Add: Atari 2600 Samples
Add: Store collapsed/expanded state of projects/folders in Solution Explorer
Fix: DASM . as alternative to *
Add: !cpu type 6502
Fix: DASM settings to work with Atari samples
Fix: Stack Overflow when setting EMPTY SPACE background color to Auto
Fix: Re-add alternative illegal opcodes for 6510
Fix: Forward immediate labels in macros
Fix: no stripping of spaces or REMs when renumbering (requires cleanup)
Fix: Add alternative illegal 6510 opcode axs (alt. to sbx)
Fix: Line spacing and zoom issues in ASM and BASIC editor display

08.03.2021 - 6.7:

Biggest new features: Finally proper scaling support for high DPI (e.g. Surface or UHD) plus support for a few new CPU types.

The syntax of the new mnemonics is oriented on ACME. Now you can build BASIC (V10) and assembler programs for the Mega65.

In Detail:

Fix: BASIC V10, wrong opcodes
Fix: Scaling issue of PETSCII table
Fix: scaling on File Manager toolbar
Add: Ctrl-+/- to zoom in BASIC
Add: Ctrl-A (Select All) for BASIC
Fix Basic V3.5 default start address
Add: CPU opcode docs
Fix: BASIC editor line height now works with custom font sizes
Fix: BASIC syntax coloring properly updates now
Fix: keep spaces after line numbers when renumbering
Add/Fix: Scaling issues now almost all gone
Fix: BASIC coloring issues
Fix: BASIC V10 SIN token
Add: !CPU support for 4502, Mega65
Fix: Basic V10 SIN token was wrong (thanks Heinz!)
Fix: BASIC editor scaling issues
Fix: Charset editor scaling issues (DPI)
Fix: Initial debug memory values are not marked as changed
Add: Default start address for BASIC dialects
Fix: Add "exit" to label file when not debugging (VICE 3.5 GTK leaves the monitor open when passing a label file)
Add: File Manager -> export to BASIC now lists all BASIC dialects
Fix: Scaling issue in BASIC editor
Fix: retarget .NET 3.5 for projects set > 3.5 (while not being needed)
Fix: invalidate memory on DebugGo
Add: Basic V10 dialect file
Fix: On new debug session default auto refresh memory to currently visible memory display
Add: Debugger allows changing of registers, PC, SP and flags
Add: Hide disassembly window when debugger jumps back into owned code
Fix: Clipboard ownage of pasted images
Add: character editor. Allow category reordering
Move Charset categories to control
Fix: Do not remove change marks in memory view by scrolling
Fix: Label file enabling in build chain properties
Fix: Old interface in newer GTK VICEs does not support binary dump anymore
Fix: catching exceptions for every single BASIC dialect file
Fix: Bug in duplicate memory map entries, longer length might have gotten lost
Add: Support for !cpu 65C02 and R65C02
Fix: Address of line update when inserting line breaks
Add: Sprite Editor -> save animation to GIF
Add: Charset editor preview, prefill with white spaces instead of black @s
Fix: Crash when removing breakpoint from non-project file
Add: Triple click selects full line
Add: Doc update for math.sin, math.cos, math.tan
Fix: potential crash in FastColoredTextBox
Fix: potential crash
Add: Support for WDC65C02 processor (!cpu)
Fix: dialect files in test project
Add: Add math.sin/math.cos/math.tan to regular options. Float is casted to int
Fix: Sprite Editor - name change of layer would reset cursor on first char
Fix: BASIC label mode after Dialect addon
Add: Make BASIC tokens externally configurable to allow for new dialects
Fix: Potential swallowed remote debugger command in VICE legacy interface
Add: more emulator shenanigans
Fix: Laser BASIC and BASIC Lightning Tokens
Add: Allow copy of file between projects
Add: Major tiny64 update (added display, cia is wip)
Fix: duplicate label text for character editor (this time for good?)
Fix: Replace selection character count with "character" instead of "bytes"
Fix: no inserting spaces in REM when toggling between label/no label mode
Fix: BASIC toggling label mode now properly uses the set symbol mode
Fix: Fixed mixed up charset/watch tool name
Add: Display unused background in map editor
Fix: Character Editor control, slightly offset pixel detection
Fix: Bug when memory section was not filled with trailing * = ... statement
Fix: Broken binary literal parsing
Fix: Replace Win32 StretchBlt with .NET draw code for Charset Editor Control

11.12.2020 - 6.6:

Add: Support for $01 for VICE binary interface
Add: petcat compatiblity at BASIC file import
Fix: reverted errornous DPI adjusting of dialogs
Add: Alternative spelling of {RGHT}
Fix: Crash with warnings without compile config
Fix: Import of lower case BASIC files
Add: Renaming file hides extension
Add: Add display offset to column in hex display
Add: Partial support for concattenated labels (LABEL##VALUE)
Add: DPI awareness
Fix: Crash if solution was closed and one of the add item buttons was clicked
Fix: Charset screen editor: potential selection crash when going outside
Add: Allow editing of disk name/ID in File Manager
Fix: Display Char number in charseteditor
Add: Hack option to allow .byte/.word additionally
Add: Charset editor, import from BASIC (Hex) Data
add second unit test for virtual segments
Add: Virtual values (!byte ?, !word ?)
Fix: Graphic screen editor: Full Paste button of graphic screen offers size adjustment
Fix: Adjust !byte values also when following a label
Add: Display type of undo as tooltip text
Add: Clear screen option to charscreen editor
Fix: start charset editor with default uppercase charset
Fix: Description of regular letters for BASIC key map setting dialog
Fix: Literal 16bit value watches now default to one byte (not two)
Fix: Multiplying watch entries if you have more than one project in a solution
Add: Copy debug watch lines/values to clipboard
Add: Recalculate !byte, !word, etc. values on right click in assembler editor
Add: Binary display of X, Y, A registers in Debug window
Potential crash fix in Undo after Replace all
Add: Map Editor Up/Down to sort maps
Add more info to kernal.asm
Fix: Potential crash in File Manager when deleting files
Add: BASIC Replace ? with PRINT
Fix: Tooltip text for add new file in File Manager
Add: Show Selection length in BASIC editor (useful for PRINTs)
Fix: Allow Ctrl-I in BASIC
Fix: Crash if deleting folder with content in Solution Explorer
Fix: right pad file name with Shift-Space instead of space on import in File Manager
Add: Support for Simons BASIC
Add: missing response type to VICE debugger for binary interface
Fix: Rename bug when file inside sub folder
Add: DASM incdir directive
Add: !realign pseudo op
Fix: Text screen editor, graphic errors if in selection mode, inserting a floating selection and dragging the mouse
Fix: Renumber in BASIC not working if selection was upside down
Fix: FileManager properly move dir entries with duplicate names
Add: File Manager with PETSCII table
Fix: TLS1.2 hack for .NET 3.5 for update check


StatusReleased
CategoryTool
PlatformsWindows
Rating
Rated 5.0 out of 5 stars
(1 total ratings)
AuthorEndurion
TagsCommodore 64, development, ide

Download

Download NowName your own price

Click download now to get access to the following files:

Source Repository
External
C64Studio 7.7
External
C64Studio 7.7 Binary (zipped) 29 MB

Development log

Comments

Log in with itch.io to leave a comment.

(+1)

Thanks for putting this project up on itch.io. :)

Trying to run 7.6 (.NET 6.0) and going through the Help file, error right from the start. The code in "Getting Started - Simple Assembly" won't compile with 

Syntax error: BASIC 

at line 5

!basic

followed by a warning

Unused label !

I see references in your bug fixes to "basic label" a couple of times, so perhaps related? I'm on Windows 10 Home 64-bit (10.0, Build 19045) , running against GTK3VICE-3.7-win64. I've tried setting the debugger to both "Tiny64 Internal Debugger" and my VICE installation.

Huh, I’ve just tried to recreate this, and this is not happening here. Did you modify the code piece?

Are you using a solution/project? In that case, please do a right click in Solution Explorer on the assembly file, choose “Properties”, go to tab “Assembler”, and set it to “C64Studio” manually. It could be that the automatic assembler style detection is thrown off by a code word.

That’s the code I tested with, copied straight from the help:

;startup address
  * = $0801

  ;create BASIC startup (SYS line)
  !basic

  ;increase border color
  inc $d020

  ;return to BASIC
  rts
(1 edit)

Aha, that was the trick. At that point in the "tutorial" (I was just following along in order as explained by the help screen) I didn't even know there was a "Solution Explorer" (IDE seemed to default to the "Label Explorer"). Right-click revealed that copy-pasting the code from the help defaulted to TASM as the Assembler. "C64Studio" worked as expected, thank you.

(1 edit)

Thanks for continuing to develop this. I've found it to be an invaluable tool. :)

After you compile, what does the sideways lock mean?

Can you show a screenshot of that particular icon, I can’t think of an icon that looks like a lock :)

(1 edit)

Ah, that looks like one of the tool windows with zero size. Try making it bigger at the lower right corner. Then you can close it or drag it somewhere you want it to be placed.

Probably the output window, which gets automatically shown after a compile.

Edit: I need to make a window size sanity check, this zero sized windows are a pain.

(1 edit)

Thanks,

Expanding it, opened up the Compiler Messages.

I thought I was just out of coffee :)...

Hai, i was very interested in the "compiles to easyflash(1mb)" format, however i seem to have some issues and before i start an archeological dig on tools and docs i might as well ask : (most tools i find come without documentation for CLI and/or have their original websites removed, vice has a cli tool but you need working .crt files for that if i dont misunderstand)

so the thing : i install the program and it boots just fine, however no wizards and it wont run vice (gtk3.6 64sc) when building (but thats not the real problem) im on USA-dos (windows) 10 64bit (obviously) for this so maybe im missing something im not a daily windows user. i know a bit of asm ( https://janesondergrond.art/dl/#c64 ) and would like to know more in order to create a game sometime between now and 2050.

The problem is here i load the easyflash template and it compiles but vice hangs on a blue screen. If i load the 64kb template and compile it, add some code to switch screencolor between banks it all works but i cant add more b/c i get too many bytes error or something - oversized ) 

If i copy the code from that to the easyflash file it doesnt work either, if i use the example from codebase i get the same blue screen so

(sorry for the lengthy text) is there some kind of pointer or tutorial (or full script with several banks and how to switch) i can use for 1 mb carts . Im sure i can find it and puzzle it together if i spend weeks googling but since asking is free i thought id start with that.

The format doesnt really matter as long as its .crt and 1mb which i can load into my kungfu (and should work on an easyflash hard cart i suppose) and there doesnt seem to be too much docs on it or maybe i just didnt find it

Long question for a probably short answer, nothing urgent, if you feel like it it would be awfully nice if you had a pointer or a script somewhere, thx !!

I’m currently on vacation, so I don’t have access to everything. The issue with cartridges is, that you either are in ROM (which voids self modifying code) and esp. with easyflash, you can only have an active bank at once. This requires a bit of setup, for easyflash you will have several banks that assemble to the same address (!pseudopc and !realpc come into play here)

You can mail me your modified snippet that shows the too many bytes error, so I can take a peek.

thats awesome and thanks for your time (sorry to bother) self-modifying code would be the point for a "persistent world" like at least one ultima i remember, but i'll do some more poking around and check back in the mail later. Again sorry to bother, enjoy your vacation !! (i notice the briley .crt image on my kungfu carts asks if i want to overwrite (=save games) the image so i play from a backup. I will definitely mail you after i prod around some more. pioneering alchemy lol have a great day overthere

Why are there 3 different versions of .NET in the package?

There are some people still using XP (shudder), which can run .NET 3.5 as latest. 4.8 is the last pre .NET Core version, and 6.0 is the current long term version.

They are functionally identical, but the GIT support is only in with .NET 6.0.

Not everybody want’s to install all frameworks; I maybe ought to split the packages.

Thanks for the explanation. :)

Can this be used to create VIC-20 BASIC programs?

(1 edit)

Yes, that works fine. Just choose the proper BASIC dialect (V2 I think) and set the proper start address, depending on the RAM setup.

The name C64Studio is in hindsight somewhat irritating, it supports graphics/charsets (and sprites where applicable) for C64, ViC20, C128, Mega65 and Commander X16.

Nice!