C 64 Studio
C 64 Studio
C 64 Studio
==========
This app 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 (several formats are available)
Additionally to this C64 Studio comes with a charset, sprite and media editor.
Version history:
================
15.12.2018 - 5.9: Fix: issue where local labels inside bracketed zones were
not properly recognized inside macros
Fix: improper token offset during macro call relabeling
Fix: Set default debug start address label (was empty on
first creation)
Fix: ifdef issue that was present in ifndef (defines
evaluating to zero)
Fix: bug with config values outside 0 to 0xffff which
were silently swallowed
Fix: !ifndef also checking if value was not zero
Fix: BASIC, several renumber bugs (on gosub/goto) empty
lines were removed {space} was inserted for blanks
Fix: Fixed scoping bug with !zone inside inactive zone
Add: missing BASIC macros, RVS, OFF, SPACE, SPACES, ARROW
UP, ARROW LEFT
Fix: Fixed renumber bug for BASIC, when macros were
inside string literals
Add: Allow late evaluation of symbols in !basic pseudo op
Add: Added support for several statements for !basic
pseudo op
Add: theming shenanigans (new color entry "control
background"), should allow for "dark themes"
Fix: Fixed wrong label zone info (local line index was
not set properly) for labels in lines with separating colons
Add: Allowed debug start address setting per config
instead of global Allow debug start address also to use a label
Fix: Fixed early evaluation of ifndef inside macros
Fix: allow negative values automatically
Fix: Disable "unused label" message for local labels
inside a !for loop
Add: added missing petcat macros (swlc, swuc, ensh, dish)
Fix: Fixed bug in local label uniquification inside
loops.
Fix: Fixed potential cross-thread-invocation of method
Add: grid for map editor
Fix: Fixed several sprite editor issues (off by one on
sprite index, layer re-sorting/removing was not properly saved)
Add: added jump to line
Fix: Fixed errornous collapsing of - with literal number
when a subtraction was intended
Fix: Fixed wrong duplicate Y mapping for BASIC in english
defaults
Fix: Fixed int +/- off by one edge case
Fix: Fixed file not properly opening on dragging drop
Fix: Allow emulator run without productversion (would
bail before)
Fix: Outline sorting totally borked, labels/constants
were not added in their zone depending on sorting
Fix: Potentially fixed Compyx' crash problem
Fix: Fixed line separator issue, separators where fused
into labels
Fix: Fixed !addr scope check if inside inactive scope
25.05.2018 - 5.7: Fix: easyflash, RGCD and magic desk cart generation was
borked
Add: BASIC upper/lowercase toggle
Add: Library paths
Fix: Bug in !media for graphicscreen not being full width
Add: Simple up to date check
Fix: Unfolding of folded blocks during compiling
Add: Enhanced disassembly and preprocessed file output
Fix: Late breakpoints not working at all
Fix: several bugs in loops inside macros, nested macros
Fix: D64/D81 disk image BAM check for free space
Add: Graphic screen editor allows export to Koala
Fix: Binary import for charset screen if color bytes are
> 15
Fix: Set filename in container media to outer filename
(not HURZ anymore)
Add: Grid in charset screen editor
Add: Import charset and charset screen from assembly
Add: Key binding for collapsing/expaning all folded
blocks
Add: Export to charset screen from map editor
Fix: Local labels in macros were not properly localized
Add: Option to move range of charset in charset screen
editor with automatic screen adjustment
Add: Override charset display mode in charset screen
editor
27.02.2018 - 5.6: Fix: Macro source info was using file name at calling
location, not of the macro source location
Fix: Fixed loading bug in ValueTableEditor, table with
values was refilled but automatically cleared when loading tables without formula
Add: making !media accept startindex/count optionally for
value tables
Fix: fixed source export of map editor column by column.
Add: Added MAP_DATA binary export to MapEditor also fixed
row by row and column by column where it was the wrong way around
Add: Enhanced !basic pseudo op to allow line number and
text comment
Add: Added text entry mode for char screen designer
Add: Added delta info to relative-jump-too-far
Fix: Corrected stupid bug in !basic pseudo op, pointer to
basic file end was totally wrong
Add: Enabled including of assembly symbols in BASIC files
(and subsequently debugging the called assembly)
Add: BASIC macros now allow hex values (prefixed with $)
Fix: Fixed autocomplete for enabled tabs (hopefully not
breaking everything else with tabs)
Add: support for V5 of charpad ctm files
Add: a include map sample project with charset
Add: added binary editor to "Window" menu as well
Fix: save all now also saves documents which are not part
of the solution
Add: Added value table editor to Window menu as well
Fix: selection highlighting now also works in BASIC
Fix: added missing BASIC macro symbols
Fix: total rewrite of syntax coloring for BASIC
Add: double click selection in BASIC now selects the
token beneath
Fix: Fixed operator precedence, hi-/lo-byte operators had
lower prio than comparison
Fix: Fixed renumber issue: Non-existing target line
numbers were set to zero, now they stay unchanged
Fix: BASIC: Renumber does not mess up spaces anymore
BASIC: Renumbering does not at new line at the end
BASIC: Renumbering does not mess up control codes
Fix: Importing image in charset editor now used the
import dialog.
Import dialog checks does not bitch about hires
chars anymore if they have a valid custom color
Fix: Fixed crash when shortcutkeys in toolbarstrip
doesn't like the short cut
Fix: Shortcut tooltips are now adjusted when app state
changes (debug toolbar shortcuts)
Add: Option to hide auto complete
Add: Experimental auto-adjusting of moved symbols
(editing will move symbol infos accordingly)
Add: Added export for charscreen projects
Add: Made miniview toggle-able via context menu
Add: added spritepad support (*.spd), Importing in sprite
editor and reading via !media
Add: better color selection for manual drawing in graphic
screen editor
19.08.2017 - 5.3: Add: Intellisense now shows entries which contain the
typed string instead of only starting with
Fix: Mediatool and Mediamanager paths are now properly in
apostrophes for paths with spaces
Add: Added debugger interface to decouple VICE remote
debugger
Add: simple emulator framework (capable of running up to
the BASIC startup screen)
Add: Watches can now be moved up/down via context menu
Fix: !if inside !macros didn't work properly
Fix: Bug in watches due to VICEs binary mem dump when
only one byte is wanted
Add: Undo for default upper/lower case charsets in
charset screen
Add: Custom colors for sprite/charset display in memory
view
30.05.2017 - 5.2: Fix: Crash if "rebuild" with non project was clicked in
toolbar
Fix: 40 track .d64 images can now be opened in File
Manager
Add/Fix: Background worker to speed up general behaviour
(switching docs, etc.)
Fix: Proper support for VICE 3.1
Add: 1bit image import
Add: quick hacked CBMPrgStudio support
Fix: Fixed bug in !pet, @ was compiled to $00 instead of
$40 (increases ACME compatiblity)
Fix: Allow key mapped actions to work even if no document
is currently active
08.05.2016 - 4.7: Add: Label file for VICE (run and debug mode)
Add: Outline allows for showing/hiding local/shortcut
labels
Add: BASIC - Short cut of commands automatically replaced
with full command
Add: !macros now also work with {} brackets similar to
ACME
Add: Code folding, also saved
Add: MediaTool for simple pre/post build processing
24.07.2015 - 4.3: Fix: Colors on startup with new settings are now set to
sensible values
Fix: Replaced Scintilla in most places with a pure .NET
control. A big step towards better cross platform. Also better syntax coloring
Fix: !ifs inside macro definitions now work
Fix: Big speed up on preparsing when opening multi file
projects
04.06.2015 - 4.2: Fix: Import File in Media Manager now refreshes the file
view
Fix: Nested for loops now really work as intended
Fix: Crash with combined binary complements
Fix: Bitmap export now properly uses actual size (not
forced to 320x200)
Fix: Crash yet again in projectless mode (using files
without project/solution)
Add: !BASIC pseudo op
Add: Sprite editor effects (shift, rotate, mirror, etc.)
now work on whole selection
Add: Undo for charset and graphic screens
Add. Graphic screen now directly resizable
01.10.2014 - 3.8: Fix: Comments with non ASCII characters could break macro
insertion
Fix: Several DASM pseudo ops have been added and/or fixed
Fix: Adding new item could overwrite existing file
Fix: !error, !warn and !message pseudo op now properly
evaluate expressions as text
Fix: Dependencies can now be compiled without opening the
file
Fix: Running external commands with spaces in path now
finally really works (ouch!)
Fix: Import of paletted images now works (didn't show up
in the preview dialog)
Add: Symbols/tokens of dependencies and included files
are now also updated after successful compile
Add: !warn pseudo op
Add: binary not operator (!)
Add: Methods CHARVERT, COLORVERT, CHARCOLORVERT,
COLORCHARVERT, CHARSET to !media and !mediasrc for character screen projects
Add: Tab Context menu to close, or close all but this
05.08.2014 - 3.7: Fix: Charpad .ctm import could have wrong colours
Add: Dependencies allow to include symbols (useful for
multiparters)
Add: Add existing item asks to copy file if not inside
project folder
Add: Better range export for sprites
Add: Symbol import for dependencies
Fix: !media did not work right for spritesets
Fix: potential hang with !for pseudo op if step values
did not add up to end value exactly
22.10.2013 - 3.2: Add: Add item to project asks for filename upfront
Fix: Pasting image in graphic editor does not check for
validity
Add: Binary editor (File->New->Binary Editor)
Fix: Deleting live breakpoints while in broken state
might delete wrong breakpoint
Add: Better PDS assembler support, DH, DL, CBM, EQU,
proper local labels
Fix: Major speedup on longer warning/error list
Fix: Media Manager: Rewrote file handling (load address
was getting messed up again)
Fix: Assembler type auto detect now really working
13.09.2013 - 3.1: Fix: Read Only displays (Output) are now really read only
Fix: Search All had off by one line numbers
Fix: Replace all could run into endless loops if the
replaced text contained the search text
Add: Search All now brings search result list to
foreground
Add: Search All now shows proper line numbers for
currently closed documents
Add: Debugger now jumps to disassembly if cpu pointer is
not in code
09.08.2013 - 3.0: Fix: Saving element outside project path doesn't crash
anymore
Fix: Complete rebuild of BASIC tokenizer according to C64
kernal
Add: Support for store/load/exec breakpoint types
Add: Focus now shifts to Emulator/IDE during debugging
depending on state
Add: Find/Replace dialog of Scintilla replaced by self
built dialog, now allows search in file and properly holds search/replace history
(may be buggy)
Add: Button to force hires/multicolor on all characters
in Charset Editor
08.04.2013 - 2.8: Fix: Import and Export from disk image in media manager
was corrupt
Fix: Graphic screen editor now properly handles repeated
checks for MC charset
Fix: Basic string macros were borked when toggling label
mode
Fix: Disassembler now produces better output (and doesn't
stop cold too easily)
Fix: Hanging debugger with Vice 2.4
Add: Saving of graphic screen editor data
Add: Export of graphic screen to binary data
Add: "External functions" to assembler (e.g. io.filesize)
Add: Open Explorer from Project Explorer
Add: Code labels can now be used in Pre/Post-Build Events
(e.g. moving addresses)
Add: Binary display for Media Manager
18.11.2012 - 2.6: Add: support for WinVICE 2.4 (debugger responses changed)
Add: support for PDS style assembler
23.09.2012 - 2.4: Changed ASM parser, now checks for * inside !IF work
Fixed saving of charset export file name
Proper behaviour for files saved outside of project
folder
Enabled watches for ,x and ,y (needs to be selected)
Fixed Basic bugs: * was resulting in @, PRINTX was not
recognized as PRINT
Fixed asm bugs: 3 digit hex numbers were treates as
single byte
Fixed crash for properties of new Basic files that were
not saved yet
Syntax Coloring customizable (in certain limits)
Grid in sprite/charset editor
Copy/Paste in sprite/charset editor now doesn't care
about image size
PETSCII character table
06.04.2012 - 2.2: Stored open state of element (not all elements are opened
automatically)
Fixed D64 export bug (file was truncated)
Added breakpoint support
Added !bank pseudo op
Added Magic Desk cartridge type
Added help documentation (not complete yet)
19.02.2012 - 2.1: Fixed drop bug (.c64 file would not open project)
Fixed run bug if basic project was run after asm project
Synced toolbar new menu with menu new
Fixed bug in !bin pseudo op (!bin <filename>,1000,0 would
raise an error even when the file was big enough)
Added syntax coloring for opcodes (ror, rol, bvc, bvs,
brk, php, plp, clv, cld)
Fixed bug in Basic parser, now to/from label mode works
again for goto
07.12.2011 - 1.9: Fixed bug in !bin when more bytes were requested than
available in the file
Fixed treatment of non document elements (source would
not build if floating)
Added Media Manager to manipulate .T64 and .D64 files
Added .d64 export
Added tooltips in ASM files (plus debug info)
16.08.2011 - 1.6: Fixed parse bug, things like LDA #'H' can now be parsed
Complete rewrote GDI handling for sprite and charset
editor (no more resource leaks)
Added Pre/Custom/Post Build events per configuration
(useful for exomizing)
Fixed some crash bugs
21.06.2011 - 1.3a: Fixed weird exception when using Umlauts at the line end
Added tab configuration
Added undo/redo to toolbar/menu
Autocreate project if new document is created without
project
02.06.2011 - 1.2b: Fixed crash when pushing "Macros" without active document
Fixed copy/paste bug in charset editor
Added clipboard import for sprites
Cleared undo buffer on direct file load
Fixed parse bug which allowed LDA/STA (xxx),x
Added copy/paste for sprites
24.05.2011 - 1.2a: Fixed sprite editor import and export (horribly messed
up)
License
=======
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.
C64 Studio uses FastColoredTextBox by Pavel Torgashov under the Lesser Gnu Public
License v3.0:
From http://opensource.org/licenses/lgpl-3.0.html:
This version of the GNU Lesser General Public License incorporates the terms and
conditions of version 3 of the GNU General Public License,
supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, �this License� refers to version 3 of the GNU Lesser General Public
License, and the �GNU GPL� refers to
version 3 of the GNU General Public License.
�The Library� refers to a covered work governed by this License, other than an
Application or a Combined Work as defined below.
The �Minimal Corresponding Source� for a Combined Work means the Corresponding
Source for the Combined Work, excluding any
source code for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The �Corresponding Application Code� for a Combined Work means the object code
and/or source code for the Application, including
any data and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries
of the Combined Work.
If you modify a copy of the Library, and, in your modifications, a facility refers
to a function or data to be supplied by an
Application that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy
of the modified version:
##a) under this License, provided that you make a good faith effort to ensure that,
in the event an Application does not supply
the function or data, the facility still operates, and performs whatever part of
its purpose remains meaningful, or
##b) under the GNU GPL, with none of the additional permissions of this License
applicable to that copy.
The object code form of an Application may incorporate material from a header file
that is part of the Library. You may convey
such object code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters,
data structure layouts and accessors, or small macros, inline functions and
templates (ten or fewer lines in length), you do
both of the following:
##a) Give prominent notice with each copy of the object code that the Library is
used in it and that the Library and its use
are covered by this License.
##b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that, taken together,
effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse engineering for
debugging such modifications, if you also do
each of the following:
##a) Give prominent notice with each copy of the Combined Work that the Library is
used in it and that the Library and its use
are covered by this License.
##b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
##c) For a Combined Work that displays copyright notices during execution, include
the copyright notice for the Library among
these notices, as well as a reference directing the user to the copies of the GNU
GPL and this license document.
##d) Do one of the following: ##0) Convey the Minimal Corresponding Source under
the terms of this License, and the Corresponding
Application Code in a form suitable for, and under terms that permit, the user to
recombine or relink the Application with a
modified version of the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.
##1) Use a suitable shared library mechanism for linking with the Library. A
suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer system, and (b) will
operate properly with a modified version of the
Library that is interface-compatible with the Linked Version.
##e) Provide Installation Information, but only if you would otherwise be required
to provide such information under section 6 of
the GNU GPL, and only to the extent that such information is necessary to install
and execute a modified version of the Combined
Work produced by recombining or relinking the Application with a modified version
of the Linked Version. (If you use option 4d0,
the Installation Information must accompany the Minimal Corresponding Source and
Corresponding Application Code. If you use option
4d1, you must provide the Installation Information in the manner specified by
section 6 of the GNU GPL for conveying Corresponding
Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the Library side by side
in a single library together with other
library facilities that are not Applications and are not covered by this License,
and convey such a combined library under
terms of your choice, if you do both of the following:
##a) Accompany the combined library with a copy of the same work based on the
Library, uncombined with any other library
facilities, conveyed under the terms of this License.
##b) Give prominent notice with the combined library that part of it is a work
based on the Library, and explaining where to find
the accompanying uncombined form of the same work.
The Free Software Foundation may publish revised and/or new versions of the GNU
Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version, but may differ
in detail to address new problems or concerns.
If the Library as you received it specifies that a proxy can decide whether future
versions of the GNU Lesser General Public
License shall apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose
that version for the Library.
C64 Studio also uses Weifen Luo's Dockpanel Suite which is licensed under:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR
IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.