What's New
v2.3.9
-
New:
*works in any expression — the program-counter symbol can now be used inside operand expressions, not just on its own:BNE *-5,JMP *+20,LDA #<*,LDA #>(*+63). A*that follows a value (e.g.STRIDE*2) is still multiplication. -
New: Local (dotted) labels — a label such as
.loopbelongs to the scope of the nearest preceding global label, soDrawSpriteandClearScreencan each have their own.loopwithout colliding. Reference them as.loopinside the scope orClearScreen.loopfrom outside. -
New: Long-branch pseudo-ops —
LBNE,LBEQ,LBCC,LBCS,LBMI,LBPL,LBVC,LBVSassemble to an inverted branch over aJMP(5 bytes) so the target can be any distance away. -
New:
.assertdirective —.assert end - start <= 256or.assert * < $A000, "message"is checked at assembly time and fails the build with a clear message (and the actual value) when the expression is false. -
New: Self-modifying-code labels — write
LDA value:#$00and the labelvaluepoints at the instruction's operand byte, soSTA valuelater patches it — no separateinstruction+1label needed. -
Improved: Friendly out-of-range branch errors — a branch that lands outside −128…+127 now reports exactly how far it overshoots and suggests the matching
LBxxlong branch. -
New: Workspace save / open — save the exact set of open file-backed tabs, the active tab and each tab's editor mode (Block/Expert/Ultimate Basic) to a
.vawsworkspace file. Workspaces auto-save on change, and the app auto-restores your last workspace on launch. - New: Global memory panel toggle — show or hide the full C64 memory panel from a dedicated UI switch.
- New: Localized Ultimate Basic command reference — command descriptions in the autocomplete popup and the command reference panel are now available in Hungarian, English, Spanish, German and Dutch, with English fallback for anything not yet translated.
-
Improved: Ultimate Basic graphics documentation — refreshed help text for
COLOR PENand the plot/line/rect/circle and multicolor drawing commands to match current compiler behavior. -
Fixed: KERNAL routine reference — corrected the
SETLFS($FFBA) andPLOT($FFF0, carry-flag read/write semantics) entries in the disassembler's KERNAL address table. - Fixed: Memory usage with many tabs open — per-tab undo/redo history is now capped (with a small debounce), preventing the unbounded memory growth that a long session with many open documents used to cause.
- Improved: Editor toolbar cleanup — removed the redundant breakpoint toggle buttons from the Expert and Ultimate Basic toolbars (breakpoints are still set from the line-number gutter), and aligned the Expert toolbar height with the Ultimate Basic toolbar.