mirror of
https://github.com/forth-ev/VolksForth.git
synced 2025-02-21 08:28:59 +00:00
First make-controlled loading of an fb file in CPM VolksForth with logfile output.
Also make rules to convert .fb files to .fth and to run the msdos editor
This commit is contained in:
parent
2cd270b1ef
commit
0062c769c7
@ -1,7 +1,19 @@
|
|||||||
|
|
||||||
fth: include.fth
|
fbfiles = $(wildcard *.fb)
|
||||||
|
fthfiles = $(patsubst %.fb, %.fth, $(fbfiles))
|
||||||
|
|
||||||
run-editor: msdos
|
whitch_runcpm = $(shell which RunCPM)
|
||||||
|
runcpmdir = runcpm
|
||||||
|
cpmfilesdir = cpmfiles
|
||||||
|
|
||||||
|
fth: $(fthfiles)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *.log
|
||||||
|
rm -rf $(runcpmdir)
|
||||||
|
rm -f msdos
|
||||||
|
|
||||||
|
run-editor: | msdos
|
||||||
FORTHPATH="f:\\;f:\\msdos" ../../8086/msdos/emulator/run-in-dosbox.sh f:\\msdos\\volks4th.com
|
FORTHPATH="f:\\;f:\\msdos" ../../8086/msdos/emulator/run-in-dosbox.sh f:\\msdos\\volks4th.com
|
||||||
|
|
||||||
msdos:
|
msdos:
|
||||||
@ -9,3 +21,22 @@ msdos:
|
|||||||
|
|
||||||
%.fth: %.fb ../../tools/fb2fth.py
|
%.fth: %.fb ../../tools/fb2fth.py
|
||||||
../../tools/fb2fth.py $< $@
|
../../tools/fb2fth.py $< $@
|
||||||
|
|
||||||
|
inctest.log: $(patsubst %, $(cpmfilesdir)/%, volks4th.com include.fb) \
|
||||||
|
| emu
|
||||||
|
echo "volks4th" > $(runcpmdir)/input.script
|
||||||
|
echo "include include.fb" >> $(runcpmdir)/input.script
|
||||||
|
echo "bye" >> $(runcpmdir)/input.script
|
||||||
|
echo "exit" >> $(runcpmdir)/input.script
|
||||||
|
./emulator/run-in-runcpm.sh volks4th
|
||||||
|
cp $(runcpmdir)/output.log $@
|
||||||
|
|
||||||
|
emu: $(runcpmdir)/RunCPM
|
||||||
|
|
||||||
|
$(runcpmdir)/RunCPM: $(whitch_runcpm)
|
||||||
|
test -d $(runcpmdir) || mkdir -p $(runcpmdir)
|
||||||
|
cp $< $@
|
||||||
|
|
||||||
|
$(cpmfilesdir)/%: %
|
||||||
|
test -d $(cpmfilesdir) || mkdir -p $(cpmfilesdir)
|
||||||
|
cp $< $@
|
||||||
|
32
8080/CPM/emulator/run-in-runcpm.sh
Executable file
32
8080/CPM/emulator/run-in-runcpm.sh
Executable file
@ -0,0 +1,32 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
emulatordir="$(realpath --relative-to="$PWD" "$(dirname "${BASH_SOURCE[0]}")")"
|
||||||
|
basedir="$(realpath --relative-to="$PWD" "${emulatordir}/..")"
|
||||||
|
cpmfilesdir="${basedir}/cpmfiles"
|
||||||
|
runcpmdir="${basedir}/runcpm"
|
||||||
|
runcpm_a0="${runcpmdir}/A/0"
|
||||||
|
toolsdir="${basedir}/../../tools"
|
||||||
|
|
||||||
|
logfile="${runcpmdir}/output.log"
|
||||||
|
scriptfile="${runcpmdir}/input.script"
|
||||||
|
rm -f "${logfile}"
|
||||||
|
|
||||||
|
test -d "${runcpm_a0}" || mkdir -p "${runcpm_a0}"
|
||||||
|
|
||||||
|
for pathname in ${cpmfilesdir}/*
|
||||||
|
do
|
||||||
|
echo $pathname
|
||||||
|
filename="$(realpath --relative-to="${cpmfilesdir}" "${pathname}")"
|
||||||
|
echo $filename
|
||||||
|
uppercase_filename="$("${toolsdir}/echo-toupper.py" "${filename}")"
|
||||||
|
echo $uppercase_filename
|
||||||
|
cp "${pathname}" "${runcpm_a0}/${uppercase_filename}"
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ -f "${scriptfile}" ]]; then
|
||||||
|
"${runcpmdir}/RunCPM" -i "${scriptfile}" -o "${logfile}"
|
||||||
|
else
|
||||||
|
"${runcpmdir}/RunCPM" -o "${logfile}"
|
||||||
|
fi
|
File diff suppressed because one or more lines are too long
@ -39,12 +39,12 @@
|
|||||||
|
|
||||||
\ *** Block No. 2, Hexblock 2
|
\ *** Block No. 2, Hexblock 2
|
||||||
|
|
||||||
\ fib /fib #fib eolf? phz 06feb22
|
\ fib /fib #fib eolf? phz 05apr22
|
||||||
|
|
||||||
context @ dos also context !
|
context @ dos also context !
|
||||||
$50 constant /tib
|
$50 constant /tib
|
||||||
variable tibeof tibeof off
|
variable tibeof tibeof off
|
||||||
|
\\
|
||||||
: eolf? ( c -- f )
|
: eolf? ( c -- f )
|
||||||
\ f=-1: not yet eol; store c and continue
|
\ f=-1: not yet eol; store c and continue
|
||||||
\ f=0: eol but not yet eof; return line and flag continue
|
\ f=0: eol but not yet eof; return line and flag continue
|
||||||
@ -58,11 +58,11 @@
|
|||||||
|
|
||||||
\ *** Block No. 3, Hexblock 3
|
\ *** Block No. 3, Hexblock 3
|
||||||
|
|
||||||
\ incfile incpos inc-fgetc phz 06feb22
|
\ incfile incpos inc-fgetc phz 05apr22
|
||||||
|
|
||||||
variable incfile
|
variable incfile
|
||||||
variable incpos 2 allot
|
variable incpos 2 allot
|
||||||
|
\\
|
||||||
: inc-fgetc ( -- c )
|
: inc-fgetc ( -- c )
|
||||||
incfile @ f.handle @ 0= IF
|
incfile @ f.handle @ 0= IF
|
||||||
incpos 2@ incfile @ fseek THEN
|
incpos 2@ incfile @ fseek THEN
|
||||||
@ -77,27 +77,27 @@
|
|||||||
|
|
||||||
\ *** Block No. 4, Hexblock 4
|
\ *** Block No. 4, Hexblock 4
|
||||||
|
|
||||||
\ freadline probe-for-fb phz 06feb22
|
\ freadline probe-for-fb phz 05apr22
|
||||||
|
|
||||||
: freadline ( -- eof )
|
: freadline ( -- eof )
|
||||||
tib /tib bounds DO
|
( tib /tib bounds DO
|
||||||
inc-fgetc dup eolf? under 0< IF I c! ELSE drop THEN
|
inc-fgetc dup eolf? under 0< IF I c! ELSE drop THEN
|
||||||
0< 0= IF I tib - #tib ! ENDLOOP tibeof @ exit THEN
|
0< 0= IF I tib - #tib ! ENDLOOP tibeof @ exit THEN
|
||||||
LOOP /tib #tib !
|
LOOP /tib #tib !
|
||||||
." warning: line exteeds max " /tib . cr
|
." warning: line exteeds max " /tib . cr
|
||||||
." extra chars ignored" cr
|
." extra chars ignored" cr
|
||||||
BEGIN inc-fgetc eolf? 1+ UNTIL tibeof @ ;
|
BEGIN inc-fgetc eolf? 1+ UNTIL tibeof @ ;
|
||||||
|
) ;
|
||||||
| : probe-for-fb ( -- flag )
|
| : probe-for-fb ( -- flag )
|
||||||
\ probes whether current file looks like a block file
|
\ probes whether current file name has no .FTH extension
|
||||||
/tib 2+ 0 DO isfile@ fgetc #lf = IF ENDLOOP false exit THEN
|
isfile@ extension dup @ $5446 = swap 2+ c@ $48 = and not ;
|
||||||
LOOP true ;
|
|
||||||
|
|
||||||
|
|
||||||
\ *** Block No. 5, Hexblock 5
|
\ *** Block No. 5, Hexblock 5
|
||||||
|
|
||||||
\ save/restoretib phz 16jan22
|
\ save/restoretib phz 05apr22
|
||||||
|
\\
|
||||||
$50 constant /stash
|
$50 constant /stash
|
||||||
create stash[ /stash allot here constant ]stash
|
create stash[ /stash allot here constant ]stash
|
||||||
variable stash> stash[ stash> !
|
variable stash> stash[ stash> !
|
||||||
@ -115,16 +115,16 @@
|
|||||||
|
|
||||||
\ *** Block No. 6, Hexblock 6
|
\ *** Block No. 6, Hexblock 6
|
||||||
|
|
||||||
\ interpret-via-tib include phz 06feb22
|
\ interpret-via-tib include phz 05apr22
|
||||||
|
|
||||||
: interpret-via-tib
|
( : interpret-via-tib
|
||||||
BEGIN freadline >r .status >in off interpret
|
BEGIN freadline >r .status >in off interpret
|
||||||
r> UNTIL ;
|
r> UNTIL ; )
|
||||||
|
: pushfile r> isfile push fromfile push >r ; restrict
|
||||||
: include ( -- )
|
: include ( -- )
|
||||||
pushfile use cr file?
|
pushfile use cr file?
|
||||||
probe-for-fb isfile@ freset IF 1 load close exit THEN
|
probe-for-fb IF 1 load exit THEN
|
||||||
incfile push isfile@ incfile !
|
incfile push isfile@ incfile ! ; \\
|
||||||
incpos push incpos off incpos 2+ dup push off
|
incpos push incpos off incpos 2+ dup push off
|
||||||
savetib >r interpret-via-tib close r> restoretib ;
|
savetib >r interpret-via-tib close r> restoretib ;
|
||||||
|
|
||||||
@ -134,8 +134,8 @@
|
|||||||
|
|
||||||
\ *** Block No. 7, Hexblock 7
|
\ *** Block No. 7, Hexblock 7
|
||||||
|
|
||||||
\ \ phz 25feb22
|
\ \ phz 05apr22
|
||||||
|
\\
|
||||||
: \ blk @ IF >in @ negate c/l mod >in +!
|
: \ blk @ IF >in @ negate c/l mod >in +!
|
||||||
ELSE #tib @ >in ! THEN ; immediate
|
ELSE #tib @ >in ! THEN ; immediate
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user