Merge pull request #44 from pzembrod/x16-r41

X16 r41
This commit is contained in:
Carsten Strotmann 2022-09-05 12:20:11 +00:00 committed by GitHub
commit bda78c41f9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
26 changed files with 139 additions and 94 deletions

View File

@ -34,7 +34,7 @@ clean:
binaries: $(vf_binaries) binaries: $(vf_binaries)
test: $(test_resuls) test-v4th-x16-39.result test: $(test_resuls)
test64: std64 blk64 test64: std64 blk64
@ -93,66 +93,79 @@ cbmfiles/v4th-x16:
$(test_logs): $(test_files_petscii) emulator/run-in-vice.sh $(test_logs): $(test_files_petscii) emulator/run-in-vice.sh
test-v4thblk-c64.log: emulator/v4thblk-c64.T64 disks/scratch.d64 test-v4thblk-c64.log: emulator/v4thblk-c64.T64 disks/empty.d64
rm -f cbmfiles/test.log rm -f cbmfiles/test.log disks/scratch.d64
cp disks/empty.d64 disks/scratch.d64
DISK9=scratch emulator/run-in-vice.sh v4thblk-c64 \ DISK9=scratch emulator/run-in-vice.sh v4thblk-c64 \
"include run-blk-tests.fth\n1234567890\n" "include run-blk-tests.fth\n1234567890"
petscii2ascii cbmfiles/test.log $@ petscii2ascii cbmfiles/test.log $@
test-v4th-c64.log: emulator/v4th-c64.T64 test-v4th-c64.log: emulator/v4th-c64.T64
rm -f cbmfiles/test.log rm -f cbmfiles/test.log
emulator/run-in-vice.sh v4th-c64 \ emulator/run-in-vice.sh v4th-c64 \
"include run-std-tests.fth\n1234567890\n" "include run-std-tests.fth\n1234567890"
petscii2ascii cbmfiles/test.log $@ petscii2ascii cbmfiles/test.log $@
test-v4thblk-c16+.log: emulator/v4thblk-c16+.T64 disks/scratch.d64 test-v4thblk-c16+.log: emulator/v4thblk-c16+.T64 disks/empty.d64
rm -f cbmfiles/test.log rm -f cbmfiles/test.log disks/scratch.d64
VICE=xplus4 emulator/run-in-vice.sh v4thblk-c16+ \ cp disks/empty.d64 disks/scratch.d64
"include run-blk-tests.fth\n1234567890\n" VICE=xplus4 DISK9=scratch emulator/run-in-vice.sh v4thblk-c16+ \
"include run-blk-tests.fth\n1234567890"
petscii2ascii cbmfiles/test.log $@ petscii2ascii cbmfiles/test.log $@
test-v4th-c16+.log: emulator/v4th-c16+.T64 test-v4th-c16+.log: emulator/v4th-c16+.T64
rm -f cbmfiles/test.log rm -f cbmfiles/test.log
VICE=xplus4 emulator/run-in-vice.sh v4th-c16+ \ VICE=xplus4 emulator/run-in-vice.sh v4th-c16+ \
"include run-std-tests.fth\n1234567890\n" "include run-std-tests.fth\n1234567890"
petscii2ascii cbmfiles/test.log $@ petscii2ascii cbmfiles/test.log $@
test-v4thblk-c16-.log: emulator/v4thblk-c16-.T64 test-v4thblk-c16-.log: emulator/v4thblk-c16-.T64
rm -f cbmfiles/test.log rm -f cbmfiles/test.log
VICE=xplus4 emulator/run-in-vice.sh v4thblk-c16- \ VICE=xplus4 emulator/run-in-vice.sh v4thblk-c16- \
"include run-min-tests.fth\n1234567890\n" "include run-min-tests.fth\n1234567890"
petscii2ascii cbmfiles/test.log $@ petscii2ascii cbmfiles/test.log $@
test-v4th-c16-.log: emulator/v4th-c16-.T64 test-v4th-c16-.log: emulator/v4th-c16-.T64
rm -f cbmfiles/test.log rm -f cbmfiles/test.log
VICE=xplus4 emulator/run-in-vice.sh v4th-c16- \ VICE=xplus4 emulator/run-in-vice.sh v4th-c16- \
"include run-std-tests.fth\n1234567890\n" "include run-std-tests.fth\n1234567890"
petscii2ascii cbmfiles/test.log $@ petscii2ascii cbmfiles/test.log $@
test-v4th-x16.log: cbmfiles/v4th-x16 emulator/sdcard.img test-v4th-x16.log: cbmfiles/v4th-x16 emulator/sdcard.img
rm -f cbmfiles/test.log rm -f cbmfiles/test.log
emulator/run-in-x16emu.sh v4th-x16 \ emulator/run-in-x16emu.sh v4th-x16 \
"include run-std-tests.fth\n1234567890\n" "include run-std-tests.fth\n1234567890"
mcopy -i emulator/sdcard.img ::TEST.LOG cbmfiles/test.log mcopy -i emulator/sdcard.img ::TEST.LOG cbmfiles/test.log
petscii2ascii cbmfiles/test.log $@ petscii2ascii cbmfiles/test.log $@
test-v4th-x16-39.log: $(test_files_petscii) emulator/run-in-vice.sh
test-v4th-x16-39.log: cbmfiles/v4th-x16 emulator/sdcard.img test-v4th-x16-39.log: cbmfiles/v4th-x16 emulator/sdcard.img
rm -f cbmfiles/test.log rm -f cbmfiles/test.log
emulator/run-in-x16-39.sh v4th-x16 \ emulator/run-in-x16-39.sh v4th-x16 \
"include run-std-tests.fth\n1234567890\n" "include run-std-tests.fth\n1234567890"
mcopy -i emulator/sdcard.img ::TEST.LOG cbmfiles/test.log mcopy -i emulator/sdcard.img ::TEST.LOG cbmfiles/test.log
petscii2ascii cbmfiles/test.log $@ petscii2ascii cbmfiles/test.log $@
test-v4th-x16-39.golden: test-v4th-x16.golden test-v4th-x16-39.golden: test-v4th-x16.golden
cp $< $@ cp $< $@
test-v4th-x16-41.log: $(test_files_petscii) emulator/run-in-vice.sh
test-v4th-x16-41.log: cbmfiles/v4th-x16 emulator/sdcard.img
rm -f cbmfiles/test.log
emulator/run-in-x16-41.sh v4th-x16 \
"include run-std-tests.fth\n1234567890"
mcopy -i emulator/sdcard.img ::TEST.LOG cbmfiles/test.log
petscii2ascii cbmfiles/test.log $@
test-v4th-x16-41.golden: test-v4th-x16.golden
cp $< $@
test-%.result: test-%.log test-%.golden tests/evaluate-test.sh test-%.result: test-%.log test-%.golden tests/evaluate-test.sh
rm -f $@ rm -f $@
tests/evaluate-test.sh $(basename $@) tests/evaluate-test.sh $(basename $@)
disks/scratch.d64: disks/empty.d64
cp $< $@
emulator/sdcard.img: emulator/sdcard.sfdisk emulator/sdcard.img: emulator/sdcard.sfdisk
rm -f $@ $@.tmp rm -f $@ $@.tmp
dd if=/dev/zero of=$@.tmp count=64 bs=1M dd if=/dev/zero of=$@.tmp count=64 bs=1M

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -11,7 +11,7 @@ rm -f "${basedir}/cbmfiles/devenv"
# load include and dos from file-words.d64 block 10 in drive 11. # load include and dos from file-words.d64 block 10 in drive 11.
# savesystem and then scratch file notdone to exit emulator. # savesystem and then scratch file notdone to exit emulator.
keybuf="2 drive 19 load\n47 load\n1 drive 26 load\n3 drive 10 load\n\ keybuf="2 drive 19 load\n47 load\n1 drive 26 load\n3 drive 10 load\n\
savesystem devenv\ndos s0:notdone\n" savesystem devenv\ndos s0:notdone"
DISK9=vforth4_1 DISK10=vforth4_3 DISK11=file-words \ DISK9=vforth4_1 DISK10=vforth4_3 DISK11=file-words \
"${emulatordir}/run-in-vice.sh" "c64-volksforth83" "${keybuf}" "${emulatordir}/run-in-vice.sh" "c64-volksforth83" "${keybuf}"

View File

@ -11,7 +11,7 @@ rm -f "${basedir}/cbmfiles/tcbase"
keybuf="3 drive 20 load\n3 drive 10 load\nsave\n\ keybuf="3 drive 20 load\n3 drive 10 load\nsave\n\
2 drive 4 load\ninclude tc-base.fth\n\ 2 drive 4 load\ninclude tc-base.fth\n\
savesystem tcbase\ndos s0:notdone\n" savesystem tcbase\ndos s0:notdone"
DISK10=tc38q DISK11=file-words "${emulatordir}/run-in-vice.sh" \ DISK10=tc38q DISK11=file-words "${emulatordir}/run-in-vice.sh" \
"v4th-c64-4tc" "${keybuf}" "v4th-c64-4tc" "${keybuf}"

View File

@ -15,7 +15,7 @@ rm -f "${basedir}/cbmfiles/${target}"
# load include and dos from file-words.d64 block 10. # load include and dos from file-words.d64 block 10.
# savesystem and then scratch file notdone to exit emulator. # savesystem and then scratch file notdone to exit emulator.
keybuf="3 drive 20 load\n3 drive 10 load\n\ keybuf="3 drive 20 load\n3 drive 10 load\n\
savesystem ${target}\ndos s0:notdone\n" savesystem ${target}\ndos s0:notdone"
DISK11=file-words "${emulatordir}/run-in-vice.sh" \ DISK11=file-words "${emulatordir}/run-in-vice.sh" \
"${source}" "${keybuf}" "${source}" "${keybuf}"

View File

@ -18,7 +18,7 @@ nosave="${2}"
test -z "${nosave}" && rm -f "${basedir}/cbmfiles/${target}" test -z "${nosave}" && rm -f "${basedir}/cbmfiles/${target}"
rm -f "${basedir}/cbmfiles/${logfile}" rm -f "${basedir}/cbmfiles/${logfile}"
keybuf="include ${source}\nsave-target ${target}\ndos s0:notdone\n" keybuf="include ${source}\nsave-target ${target}\ndos s0:notdone"
test -n "${nosave}" && keybuf="include ${source}\n" test -n "${nosave}" && keybuf="include ${source}\n"
DISK10=tc38q "${emulatordir}/run-in-vice.sh" \ DISK10=tc38q "${emulatordir}/run-in-vice.sh" \

View File

@ -8,20 +8,26 @@ test -n "$DISK11" || DISK11=empty
emulatordir="$(realpath --relative-to="$PWD" "$(dirname "${BASH_SOURCE[0]}")")" emulatordir="$(realpath --relative-to="$PWD" "$(dirname "${BASH_SOURCE[0]}")")"
basedir="$(realpath --relative-to="$PWD" "${emulatordir}/..")" basedir="$(realpath --relative-to="$PWD" "${emulatordir}/..")"
executable="${1}"
keybuf="${2}"
autostart="" autostart=""
if [ -n "$1" ] if [ -n "${executable}" ]
then then
autostart="-autostart ${emulatordir}/${1}.T64" autostart="-autostart ${emulatordir}/${executable}.T64"
fi fi
keybuf=""
warp="" warp=""
if [ -n "$2" ] if [ -n "${keybuf}" ]
then then
keybuf="${2}" # keybuf="${2}"
# The following could also just be a cp. # The following could also just be a cp.
ascii2petscii "${emulatordir}/notdone" "${basedir}/cbmfiles/notdone" ascii2petscii "${emulatordir}/notdone" "${basedir}/cbmfiles/notdone"
warp="-warp" warp="-warp"
# Magic env variable KEEPEMU: Only if not set, send in the final CR.
if [ -z "${KEEPEMU}" ]; then
keybuf="${keybuf}\n"
fi
fi fi
"$VICE" \ "$VICE" \

View File

@ -0,0 +1,9 @@
#!/bin/bash
set -e
emulatordir="$(realpath --relative-to="$PWD" "$(dirname "${BASH_SOURCE[0]}")")"
export PATH="${HOME}/x16-r41:${PATH}"
echo "PATH = ${PATH}"
"${emulatordir}/run-in-x16emu.sh" "$@"

View File

@ -1,6 +1,9 @@
#!/bin/bash #!/bin/bash
set -e set -e
executable="${1}"
keybuf="${2}"
emulatordir="$(realpath --relative-to="$PWD" "$(dirname "${BASH_SOURCE[0]}")")" emulatordir="$(realpath --relative-to="$PWD" "$(dirname "${BASH_SOURCE[0]}")")"
basedir="$(realpath --relative-to="$PWD" "${emulatordir}/..")" basedir="$(realpath --relative-to="$PWD" "${emulatordir}/..")"
cbmfilesdir="${basedir}/cbmfiles" cbmfilesdir="${basedir}/cbmfiles"
@ -16,20 +19,27 @@ do
done done
autostart="" autostart=""
if [ -n "$1" ] if [ -n "${executable}" ]
then then
autostart="-prg ${cbmfilesdir}/${1} -run" autostart="-prg ${cbmfilesdir}/${executable} -run"
fi fi
script="" script=""
warp="" warp=""
scale="" scale=""
debug="" debug=""
if [ -n "$2" ] if [ -n "${keybuf}" ]
then then
test -d tmp || mkdir tmp test -d tmp || mkdir tmp
rm -f "${x16script}".* rm -f "${x16script}".*
echo "load\"${1}\"\nrun\n${2}" | sed 's/\\n/\n/g' > "${x16script}".ascii # Magic env variable KEEPEMU: If set, remove the final CR.
if [ -n "${KEEPEMU}" ]; then
tr_remove='\n'
else
tr_remove=''
fi
echo "load\"${executable}\"\nrun\n${keybuf}" | tr -d "${tr_remove}" \
| sed 's/\\n/\n/g' > "${x16script}".ascii
ascii2petscii "${x16script}.ascii" "${x16script}.petscii" ascii2petscii "${x16script}.ascii" "${x16script}.petscii"
script="-bas ${x16script}.petscii" script="-bas ${x16script}.petscii"
autostart="" autostart=""

View File

@ -21,10 +21,14 @@
dup 0= swap #cr = or IF 0 exit THEN dup 0= swap #cr = or IF 0 exit THEN
i/o-status? IF 1 exit THEN -1 ; i/o-status? IF 1 exit THEN -1 ;
| : i/o-status?abort i/o-status? 3 and IF c64cr
fload-dev @ dos-error abort THEN ;
| : freadline ( -- eof ) | : freadline ( -- eof )
fload-dev @ fload-2nd @ busin fload-dev @ fload-2nd @ busin
i/o-status?abort
tib /tib bounds tib /tib bounds
DO bus@ dup eolf? under DO bus@ i/o-status?abort dup eolf? under
IF I c! ELSE drop THEN IF I c! ELSE drop THEN
dup 0< dup 0<
IF drop ELSE I + tib - #tib ! UNLOOP IF drop ELSE I + tib - #tib ! UNLOOP
@ -38,9 +42,6 @@
\ fload-open fload-close 30jun20pz \ fload-open fload-close 30jun20pz
| : i/o-status?abort i/o-status? IF cr
fload-dev @ dos-error abort THEN ;
defer on-fload ' noop is on-fload defer on-fload ' noop is on-fload
| : fload-open ( addr c -- ) | : fload-open ( addr c -- )
on-fload fload-dev @ on-fload fload-dev @

View File

@ -28,5 +28,5 @@ here dup origin!
$100 allot $100 allot
Create logo Create logo
(C16+ ," volksFORTH-83 3.9.3-C16+ " ) (C16+ ," volksFORTH-83 3.9.4-C16+ " )
(C16- ," volksFORTH-83 3.9.3-C16- " ) (C16- ," volksFORTH-83 3.9.4-C16- " )

View File

@ -28,4 +28,4 @@ here dup origin!
$100 allot $100 allot
Create logo Create logo
," volksFORTH-83 3.9.3-C64 " ," volksFORTH-83 3.9.4-C64 "

View File

@ -27,4 +27,4 @@ here dup origin!
$100 allot $100 allot
Create logo Create logo
," volksFORTH-83 3.9.3-X16 " ," volksFORTH-83 3.9.4-X16 "

View File

@ -18,6 +18,7 @@ $FF84 >label IOINIT
$FFB1 >label LISTEN $FFB1 >label LISTEN
$FFC0 >label OPEN $FFC0 >label OPEN
$FFF0 >label PLOT $FFF0 >label PLOT
$FFB7 >label READST
$FF8A >label RESTOR $FF8A >label RESTOR
$FF93 >label SECOND $FF93 >label SECOND
$FFE1 >label STOP $FFE1 >label STOP

View File

@ -9,13 +9,10 @@ include vf-lbls-cbm.fth
0ff4c >label ConOut 0ff4c >label ConOut
090 >label IOStatus 090 >label IOStatus
09a >label MsgFlg 09a >label MsgFlg
099 >label OutDev 0ae >label CurDev
098 >label InDev
0ff19 >label BrdCol 0ff19 >label BrdCol
0ff15 >label BkgCol 0ff15 >label BkgCol
053b >label PenCol 053b >label PenCol
09d >label PrgEnd \ aka eal; seems unused
0b2 >label IOBeg \ aka stal; seems unused
0cb >label CurFlg 0cb >label CurFlg
0cf >label InsCnt 0cf >label InsCnt
0540 >label KeyRep 0540 >label KeyRep

View File

@ -9,13 +9,9 @@ include vf-lbls-cbm.fth
0E716 >label ConOut 0E716 >label ConOut
090 >label IOStatus 090 >label IOStatus
09d >label MsgFlg 09d >label MsgFlg
09a >label OutDev
099 >label InDev
0d020 >label BrdCol 0d020 >label BrdCol
0d021 >label BkgCol 0d021 >label BkgCol
0286 >label PenCol 0286 >label PenCol
0ae >label PrgEnd \ aka eal; seems unused
0c1 >label IOBeg \ aka stal; seems unused
0d4 >label CurFlg 0d4 >label CurFlg
0d8 >label InsCnt 0d8 >label InsCnt
028a >label KeyRep 028a >label KeyRep

View File

@ -100,7 +100,7 @@ Output: display [ here output ! ]
87 fthpage 87 fthpage
Code i/o-status? ( -- n ) Code i/o-status? ( -- n )
IOStatus lda Push0A jmp end-code READST jsr Push0A jmp end-code
\ b/blk drive >drive drvinit clv14:2x87 \ b/blk drive >drive drvinit clv14:2x87
@ -131,7 +131,12 @@ Variable (drv 0 (drv !
Variable i/o 0 i/o ! \ Semaphore Variable i/o 0 i/o ! \ Semaphore
Code busoff ( --) CLRCHN jsr Label LsnDev 0 c,
Label TlkDev 0 c,
Code busoff ( --)
LsnDev lda 0<> ?[ LsnDev stx UNLSN jsr ]?
TlkDev lda 0<> ?[ TlkDev stx UNTLK jsr ]?
Label unlocki/o 1 # ldy 0 # ldx Label unlocki/o 1 # ldy 0 # ldx
;c: i/o unlock ; ;c: i/o unlock ;
@ -146,10 +151,14 @@ Label nodevice 0 # ldx 1 # ldy
\ ?device clv12jul87 \ ?device clv12jul87
Label (?dev Label (?dev
IOStatus stx (C16 $ae sta ( ) LISTEN jsr IOStatus stx \ because IOStatus isn't cleared by LISTEN or TALK
\ because of error in OS \ It's unclear in which situation or use case the following
\ workaround for a C16 OS error is needed. The v4th tests pass
\ even with the following line removed.
(C16 CurDev sta ( ) \ current device number - because of error in OS
LISTEN jsr
60 # lda SECOND jsr UNLSN jsr 60 # lda SECOND jsr UNLSN jsr
IOStatus lda 0<> ?[ pla pla nodevice jmp ]? READST jsr 0<> ?[ pla pla nodevice jmp ]?
rts end-code rts end-code
Code (?device ( dev --) Code (?device ( dev --)
@ -164,7 +173,7 @@ Label (?dev
N 2+ lda (?dev jsr N 2+ lda (?dev jsr
N 2+ lda LISTEN jsr N 2+ lda LISTEN jsr
N lda 60 # ora SECOND jsr N lda 60 # ora SECOND jsr
N 2+ ldx OutDev stx N 2+ ldx LsnDev stx
xyNext jmp end-code xyNext jmp end-code
@ -188,8 +197,7 @@ Label (?dev
N 2+ lda TALK jsr N 2+ lda TALK jsr
N lda 60 # ora (C16 $ad sta ( ) N lda 60 # ora (C16 $ad sta ( )
TKSA jsr TKSA jsr
\ because of error in old C16 OS N 2+ ldx TlkDev stx
N 2+ ldx InDev stx
xyNext jmp end-code xyNext jmp end-code
: busin ( dev 2nd -- ) : busin ( dev 2nd -- )

View File

@ -6,27 +6,18 @@ include vf-lbls-cbm.fth
\ X16 labels \ X16 labels
0ffd2 >label ConOut 0ffd2 >label ConOut
0286 >label IOStatus 0febd >label KbdbufPeek
0289 >label IOStatus
028c >label MsgFlg 028c >label MsgFlg
028b >label OutDev
028a >label InDev
09f2c >label BrdCol 09f2c >label BrdCol
0266 >label BkgCol 0266 >label BkgCol
0284 >label PenCol 0284 >label PenCol
8a >label PrgEnd \ aka eal; seems unused
0292 >label IOBeg \ aka stal; seems unused
0381 >label CurFlg \ aka qtsw 0381 >label CurFlg \ aka qtsw
0385 >label InsCnt \ aka insrt 0385 >label InsCnt \ aka insrt
\ TODO(issues/33): Remove the R?mBank38 labels.
09f60 >label RomBank38
09f61 >label RamBank38
1 >label RomBank 1 >label RomBank
0 >label RamBank 0 >label RamBank
0a000 >label KeyD \ keyboard buffer
0a00a >label Ndx \ #keys in keyboard buffer
037B >label blnsw \ C64: $cc 037B >label blnsw \ C64: $cc
\ 037C >label blnct \ C64: $cd \ 037C >label blnct \ C64: $cd
\ 037D >label gdbln \ C64: $ce \ 037D >label gdbln \ C64: $ce
@ -46,33 +37,12 @@ include vf-lbls-cbm.fth
\ X16 c64key? getkey \ X16 c64key? getkey
Code c64key? ( -- flag) Code c64key? ( -- flag)
RamBank ldx KbdbufPeek jsr
\ TODO(issues/33): Remove the lines accessing RamBank38. txa pha
RamBank38 ldy
0 # lda RamBank sta
RamBank38 sta
Ndx lda
0<> ?[ 0FF # lda ]? pha
RamBank stx
RamBank38 sty
Push jmp end-code Push jmp end-code
Code getkey ( -- 8b) Code getkey ( -- 8b)
RamBank lda N sta GETIN jsr
\ TODO(issues/33): Remove the lines accessing RamBank38.
RamBank38 lda N 1+ sta
0 # lda RamBank sta
RamBank38 sta
Ndx lda 0<>
?[ sei KeyD ldy
[[ KeyD 1+ ,X lda KeyD ,X sta inx
Ndx cpx 0= ?]
Ndx dec
N lda RamBank sta
N 1+ lda RamBank38 sta
tya cli 0A0 # cmp
0= ?[ bl # lda ]?
]?
Push0A jmp end-code Push0A jmp end-code
@ -124,8 +94,6 @@ Label restore pha txa pha tya pha cld
Label first-init Label first-init
sei cld sei cld
RomBank lda $f8 # and RomBank sta \ map in KERNAL ROM RomBank lda $f8 # and RomBank sta \ map in KERNAL ROM
\ TODO(issues/33): Remove this line accessing RomBank38.
RomBank38 lda $f8 # and RomBank38 sta \ map in KERNAL ROM for R38
IOINIT jsr CINT jsr RESTOR jsr \ init. and set I/O-Vectors IOINIT jsr CINT jsr RESTOR jsr \ init. and set I/O-Vectors
ink-pot lda BrdCol sta \ border ink-pot lda BrdCol sta \ border
ink-pot 1+ lda BkgCol sta \ backgrnd ink-pot 1+ lda BkgCol sta \ backgrnd

View File

@ -13,11 +13,10 @@ User tmpheap[
User tmpheap> User tmpheap>
User ]tmpheap User ]tmpheap
\ $9f61 is the X16 RAM bank select register. This will change to $0001 \ $0000 is the X16 RAM bank select register.
\ in the next X16 board version.
\ 1 is the RAM bank selected for the tmpheap. RAM bank 0 is used by the \ 1 is the RAM bank selected for the tmpheap. RAM bank 0 is used by the
\ X16 KERNAL. The banked RAM lives from $a000 to $bfff. \ X16 KERNAL. The banked RAM lives from $a000 to $bfff.
1 $9f61 c! $a000 tmpheap[ ! $c000 dup ]tmpheap ! tmpheap> ! 1 $0000 c! $a000 tmpheap[ ! $c000 dup ]tmpheap ! tmpheap> !
: tmp-hallot ( size -- addr ) : tmp-hallot ( size -- addr )
tmpheap> @ swap - tmpheap> @ swap -

37
VERSIONS.ORG Normal file
View File

@ -0,0 +1,37 @@
#+Title: VolksForth versions
* C64/C16/Plus4/CommanderX16
*3.9.4*
* X16 version adapted to Kernal/Emulator version R41
* Some reduction in use of and dependence on Kernal variables in RAM
*3.9.3*
* X16 version adapted to work with both versions R38 and R39 of
Kernal and Emulator, and thus with prototype boards #1 and #2
* Some code cleanup around moving word headers to the heap
and related tmpheap cleanup
* load, thru, +load, +thru were removed from the v4th versions
like the x16 version that don't have block/buffer disk access.
*3.9.2*
* X16: Zero page area used by v4th moved from $30-$5b to $50-$7b,
inclusive, so that it now doesn't collide with the ROM version of X16Edit
* Initial prepartion for and implementation of tmpheap
* Some minor cleanups and bug fixes.
*3.91*
* X16: Initial version
*3.90*
* Built-in INCLUDE stream file interface
* Separate versions with and without BLOCK words
* C16-32k version resurrected and fixed
* An adapted subset of the ANS test suite is made to pass
* Makefile setup for build and test
* Build sources moved from BLOCK disk images to stream sources