Releases: forth-ev/VolksForth
VolksForth 6502-C64 3.9.6
Main topic of this release is the removal of all usages of Kernal variable
uses esp. in the X16 VolksForth kernel. Because the addresses of Kernal
variables can change between different X16 Kernal releases, their use was in
the past the main reason why VolksForth broke after new X16 ROM releases.
With Kernal variable access replaced by Kernal API calls or by emitting
control characters, the VolksForth kernel should now be much more robust
when the X16 Kernal changes.
A secondary topic if this release is more bundled Forth sources, which are
now also better described (see Release content above).
And a third topic is the beginning of an English translation of the
original German VolksForth/UltraForth manual for C64 and C16.
Since this release affects some multitasking behaviour, the translation
was started with the chapter about the multitasker.
Changes affecting only the X16 VolksForth kernel:
- Clearing the IOStatus is now possible through the ExtApi call ($FEAB, thanks
to mooinglemur for implementing this), so the dependency on the address of
IOStatus could be removed. - The implementation of line input in EXPECT was changed from switching cursor
on and off and using GETIN to using BASIN - which automatically handles the
cursor and also makes use of the CBM screen editor. The Kernal var dependency
that came with switching the cursor on and off is now removed.
The downside is that the
cooperative multitasker now can't run tasks during line input. The old
tasker-compatible EXPECT is now available as separtate source
x16input-tsk.fth. For details on this see tasker.md. - The clearing of the Kernal variables QtSw and Insrt after each
char written to the console via CHROUT most likely has no real purpose.
It was therefore removed from the X16 variant. - Up to version 3.9.5, the VolksForth kernel used BkgPenCol (X16: $0376)
to set both background and pen color during initialization. It would be
great ot have e.g. an ExtApi function to set BkgPenCol, similar to the
X16 BASIC commandCOLOR
. I'm planning to suggest this,
but for the time being setting the background and pen color is
instead done via PETSCII control codes instead. To reflect this change,
the CBM VolksForth wordINK-POT
has been renamed toX16-INK-POT
,
and it contains only 3 values (border color code, background color PETSCII
control charcter, pen color PETSCII control character. This removes the
dependency on BkgPenCol and thereby on the last remaining Kernal variable
that was used by VolksForth.
Changes affecting all VolksForth kernels (C64, C16, X16):
- The direct clearing of MsgFlg (X16: $028d) at the beginning of
(busin and (busout was removed; it shouldn't have had any real purpose.
The cooperative multitasker was extracted from the original disk 3 (see
disks/vforth4_3.fth
)
into the files tasker.fth, multitask.fth
and taskdemo.fth
. The latter was
ported to the X16 as taskdemo-x16.fth
.
rom-ram-sys.fth
was split up into a C64 and a C16 flavour. There is no X16
equivalent; X16 bank switching poses challenges and opportunities completely
different from those on C16 and C64.
New sources added: lists,fth, tasker.fth, multitask.fth, taskdemo.fth, taskdemo-x16.fth, x16input-tsk.fth, tmp6502asm.fth, x16tmpheap.fth, rom-ram-c16.fth, rom-ram-c64.fth
VolksForth 6502-C64 3.9.5
This release adapts the X16 VolksForth to the R46 ROM.
It also adds an X16 binary with added words to invoke the
ROM-based X16Edit (XED), to list directories and files (DIR and CAT)
and to issue DOS commands and read the error channel (DOS).
For C64 and C16 this release should be a no-op.
This release is only valid for VolksForth 6502 C64.
As of now (Dec 2023), the different VolksForth platforms
(6502, 68k, 8080, 8086) don't have shared code or shared versioning.