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)
test: $(test_resuls) test-v4th-x16-39.result
test: $(test_resuls)
test64: std64 blk64
@ -93,66 +93,79 @@ cbmfiles/v4th-x16:
$(test_logs): $(test_files_petscii) emulator/run-in-vice.sh
test-v4thblk-c64.log: emulator/v4thblk-c64.T64 disks/scratch.d64
rm -f cbmfiles/test.log
test-v4thblk-c64.log: emulator/v4thblk-c64.T64 disks/empty.d64
rm -f cbmfiles/test.log disks/scratch.d64
cp disks/empty.d64 disks/scratch.d64
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 $@
test-v4th-c64.log: emulator/v4th-c64.T64
rm -f cbmfiles/test.log
emulator/run-in-vice.sh v4th-c64 \
"include run-std-tests.fth\n1234567890\n"
"include run-std-tests.fth\n1234567890"
petscii2ascii cbmfiles/test.log $@
test-v4thblk-c16+.log: emulator/v4thblk-c16+.T64 disks/scratch.d64
rm -f cbmfiles/test.log
VICE=xplus4 emulator/run-in-vice.sh v4thblk-c16+ \
"include run-blk-tests.fth\n1234567890\n"
test-v4thblk-c16+.log: emulator/v4thblk-c16+.T64 disks/empty.d64
rm -f cbmfiles/test.log disks/scratch.d64
cp disks/empty.d64 disks/scratch.d64
VICE=xplus4 DISK9=scratch emulator/run-in-vice.sh v4thblk-c16+ \
"include run-blk-tests.fth\n1234567890"
petscii2ascii cbmfiles/test.log $@
test-v4th-c16+.log: emulator/v4th-c16+.T64
rm -f cbmfiles/test.log
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 $@
test-v4thblk-c16-.log: emulator/v4thblk-c16-.T64
rm -f cbmfiles/test.log
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 $@
test-v4th-c16-.log: emulator/v4th-c16-.T64
rm -f cbmfiles/test.log
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 $@
test-v4th-x16.log: cbmfiles/v4th-x16 emulator/sdcard.img
rm -f cbmfiles/test.log
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
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
rm -f cbmfiles/test.log
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
petscii2ascii cbmfiles/test.log $@
test-v4th-x16-39.golden: test-v4th-x16.golden
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
rm -f $@
tests/evaluate-test.sh $(basename $@)
disks/scratch.d64: disks/empty.d64
cp $< $@
emulator/sdcard.img: emulator/sdcard.sfdisk
rm -f $@ $@.tmp
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.
# 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\
savesystem devenv\ndos s0:notdone\n"
savesystem devenv\ndos s0:notdone"
DISK9=vforth4_1 DISK10=vforth4_3 DISK11=file-words \
"${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\
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" \
"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.
# savesystem and then scratch file notdone to exit emulator.
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" \
"${source}" "${keybuf}"

View File

@ -18,7 +18,7 @@ nosave="${2}"
test -z "${nosave}" && rm -f "${basedir}/cbmfiles/${target}"
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"
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]}")")"
basedir="$(realpath --relative-to="$PWD" "${emulatordir}/..")"
executable="${1}"
keybuf="${2}"
autostart=""
if [ -n "$1" ]
if [ -n "${executable}" ]
then
autostart="-autostart ${emulatordir}/${1}.T64"
autostart="-autostart ${emulatordir}/${executable}.T64"
fi
keybuf=""
warp=""
if [ -n "$2" ]
if [ -n "${keybuf}" ]
then
keybuf="${2}"
# keybuf="${2}"
# The following could also just be a cp.
ascii2petscii "${emulatordir}/notdone" "${basedir}/cbmfiles/notdone"
warp="-warp"
# Magic env variable KEEPEMU: Only if not set, send in the final CR.
if [ -z "${KEEPEMU}" ]; then
keybuf="${keybuf}\n"
fi
fi
"$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
set -e
executable="${1}"
keybuf="${2}"
emulatordir="$(realpath --relative-to="$PWD" "$(dirname "${BASH_SOURCE[0]}")")"
basedir="$(realpath --relative-to="$PWD" "${emulatordir}/..")"
cbmfilesdir="${basedir}/cbmfiles"
@ -16,20 +19,27 @@ do
done
autostart=""
if [ -n "$1" ]
if [ -n "${executable}" ]
then
autostart="-prg ${cbmfilesdir}/${1} -run"
autostart="-prg ${cbmfilesdir}/${executable} -run"
fi
script=""
warp=""
scale=""
debug=""
if [ -n "$2" ]
if [ -n "${keybuf}" ]
then
test -d tmp || mkdir tmp
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"
script="-bas ${x16script}.petscii"
autostart=""

View File

@ -21,10 +21,14 @@
dup 0= swap #cr = or IF 0 exit THEN
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 )
fload-dev @ fload-2nd @ busin
i/o-status?abort
tib /tib bounds
DO bus@ dup eolf? under
DO bus@ i/o-status?abort dup eolf? under
IF I c! ELSE drop THEN
dup 0<
IF drop ELSE I + tib - #tib ! UNLOOP
@ -38,9 +42,6 @@
\ 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
| : fload-open ( addr c -- )
on-fload fload-dev @

View File

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

View File

@ -28,4 +28,4 @@ here dup origin!
$100 allot
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
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
$FFC0 >label OPEN
$FFF0 >label PLOT
$FFB7 >label READST
$FF8A >label RESTOR
$FF93 >label SECOND
$FFE1 >label STOP

View File

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

View File

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

View File

@ -100,7 +100,7 @@ Output: display [ here output ! ]
87 fthpage
Code i/o-status? ( -- n )
IOStatus lda Push0A jmp end-code
READST jsr Push0A jmp end-code
\ b/blk drive >drive drvinit clv14:2x87
@ -131,7 +131,12 @@ Variable (drv 0 (drv !
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
;c: i/o unlock ;
@ -146,10 +151,14 @@ Label nodevice 0 # ldx 1 # ldy
\ ?device clv12jul87
Label (?dev
IOStatus stx (C16 $ae sta ( ) LISTEN jsr
\ because of error in OS
IOStatus stx \ because IOStatus isn't cleared by LISTEN or TALK
\ 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
IOStatus lda 0<> ?[ pla pla nodevice jmp ]?
READST jsr 0<> ?[ pla pla nodevice jmp ]?
rts end-code
Code (?device ( dev --)
@ -164,7 +173,7 @@ Label (?dev
N 2+ lda (?dev jsr
N 2+ lda LISTEN jsr
N lda 60 # ora SECOND jsr
N 2+ ldx OutDev stx
N 2+ ldx LsnDev stx
xyNext jmp end-code
@ -188,8 +197,7 @@ Label (?dev
N 2+ lda TALK jsr
N lda 60 # ora (C16 $ad sta ( )
TKSA jsr
\ because of error in old C16 OS
N 2+ ldx InDev stx
N 2+ ldx TlkDev stx
xyNext jmp end-code
: busin ( dev 2nd -- )

View File

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

View File

@ -13,11 +13,10 @@ User tmpheap[
User tmpheap>
User ]tmpheap
\ $9f61 is the X16 RAM bank select register. This will change to $0001
\ in the next X16 board version.
\ $0000 is the X16 RAM bank select register.
\ 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.
1 $9f61 c! $a000 tmpheap[ ! $c000 dup ]tmpheap ! tmpheap> !
1 $0000 c! $a000 tmpheap[ ! $c000 dup ]tmpheap ! tmpheap> !
: tmp-hallot ( size -- addr )
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