Compare commits

...

12 Commits

Author SHA1 Message Date
Carsten Strotmann
bda78c41f9
Merge pull request #44 from pzembrod/x16-r41
X16 r41
2022-09-05 12:20:11 +00:00
Philip Zembrod
d6d38e13a4 Merge branch 'master' into x16-r41
# Conflicts:
#	6502/C64/src/vf-cbm-file.fth
2022-08-29 22:21:27 +02:00
Philip Zembrod
313b87d58d Update x16tmpheap.fth to prototype #2 board's bank switching address 2022-08-28 23:12:05 +02:00
Philip Zembrod
c6716dced5 Update all binaries to 3.9.4 2022-08-28 23:06:41 +02:00
Philip Zembrod
2ff06c912a Add initial VERSIONS.ORG file with C64/C16/X16 versions 2022-08-17 23:04:25 +02:00
Philip Zembrod
b670672a82 Update version in logo string from 3.9.3 to 3.9.4 2022-08-08 00:37:44 +02:00
Philip Zembrod
14f3eaf3ad Add comment about C16 OS bug workaround 2022-08-08 00:37:00 +02:00
Philip Zembrod
992fcfe751 Introduce the KEEPEMU environment variable into run-in-vice.sh that facilitated debugging. 2022-08-07 22:43:31 +02:00
Philip Zembrod
3a4eff97c4 Reduce the direct use of the Kernal variable IOStatus by using the Kernal API routine READST.
Also remove the code referencing the old R38 RAM/ROM bank switching registers.
Finally remove some unused Kernal variable labels.
2022-08-07 22:42:40 +02:00
Philip Zembrod
2c86e4809f Remove references to the Kernal variables InDev and OutDev which
are needed to implement BUSOFF via CLRCHN and which moved on X16
between r38 and r41 and will likely change again, and replace with
own variables and calls to UNLSN and UNTLK.
2022-07-31 23:54:37 +02:00
Philip Zembrod
cae5f7c94d Get v4th-x16 to work with r41 of x16emu and x16 ROM.
Main change is that c64key? and getkey are implemented through new
Kernal API calls instead of direct reading the keyboard buffer.
A separate intermediate test target for r41 is introduced.
But also the main x16 target is switched to r41 now.
Also, the KEEPEMU env var is introduced to run-in-x16emu.sh
for debugging that has proved its usefulness in cc64 emulator scripts.
2022-07-31 21:56:33 +02:00
Philip Zembrod
6812352db3 Detect and message file-not-found condition in INCLUDE 2022-07-06 01:36:15 +02:00
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