祝VZエディタソースコード公開
https://qiita.com/kaizen_nagoya/items/baad23cf4a041ce845a9
祝:ソースコード公開:VZエディタ移植の方法と成果。註釈 coding(123)
https://qiita.com/kaizen_nagoya/items/5551be98dcbed8f41949
オープンソース化されたVZエディタをブラウザ上で動かしてみる
https://qiita.com/Takaraya/items/785ac9319c3934e30703
Github
vcraftjp/VZEditor
https://github.com/vcraftjp/VZEditor/
誰でもわかるVZエディタ。0から始める。
https://qiita.com/kaizen_nagoya/items/afe6c4cdccbfdd94baab
SRC
順次、ソースコードの解説、改良点などを追記予定。
source code
https://github.com/vcraftjp/VZEditor/tree/main/SRC
順次、ソースコードの解説、改良点などを追記予定。
.batファイルは、ShellScriptの簡単なもの。
.makファイルは、Makefileの簡単なもの。
.lnkファイルは、LinkScript
.omkは、Optasm用Makefileだったような気がする。
AC.BAT
LK.BAT
MK.BAT
VZ.LNK
VZ.MAK
VZ.OMK
バッチファイル、Makeファイルのソースコードを掲載。
ファイルの最後の制御コードがあっているかどうか不明。
ご存知の方がおみえでしたら、ご教示ください。
AC.BAT
echo off
rem ------- Assemble a source -------
rem ... called by cmos.def [f¥10],[SHIFT]+[f¥10]
rem
rem %ASM% :assembler name cap (opt,t,m) ex. set asm=opt
rem %MASM% :assemble option (/ml) ex. set masm=/ml
echo ===== %ASM%asm %1 =====
if not "%2"=="" goto asm2
if not "%HARD%"=="" goto asm1d
%ASM%asm %MASM% %1;
goto end
:asm1d
%ASM%asm %MASM% /d%HARD% %1;
goto end
:asm2
if not "%HARD%"=="" goto asm2d
%ASM%asm %MASM% /%2 %1;
goto end
:asm2d
%ASM%asm %MASM% /d%HARD% /%2 %1;
goto end
:end
if errorlevel 1 echo
最終行とその前のecho行のところがESCAPEコードになっている。
元がなんだったか、ご存知の方がおみえでしたらご教示ください。
これであっているのかもってなっている。
LK.BAT
echo off
rem ------- Link VZ, other tools -------
rem usage: lk [vmap, etc.]
rem
rem %LNK% :linker name cap (t, ) ex. set lnk=t
if not "%1"=="" goto link_tool
set LNKFILE=@vz.lnk
set LNKCOM=vz%HARD%
goto start
:link_tool
set LNKFILE=%1
set LNKCOM=%1
:start
if "%LNK%"=="t" goto tlink
:mslink
link /m /noi %LNKFILE%,%LNKCOM%,%LNKCOM%;
exe2bin %LNKCOM%.exe %LNKCOM%.com
del %LNKCOM%.exe
goto done
:tlink
tlink /c /m /t %LNKFILE%,%LNKCOM%,%LNKCOM%;
if errorlevel 1 goto end
:done
if exist %LNKCOM%.sym del %LNKCOM%.sym
dir %LNKCOM%.com
:end
set LNKFILE=
set LNKCOM=
MK.BAT
echo off
rem ------- Make vz???.com -------
rem usage: mk [98,J31,IBM,IBMJ,AX,55,US]
rem mk vmap
rem
rem %ASM% :assembler name cap (opt,t,m) ex: set asm=opt
if exist dummy goto init
type nul >dummy
:init
if not "%1"=="" goto init2
if not "%HARD%"=="" goto makevz
goto mk_98
:init2
type nul >dummy
for %%a in (98 j31 J31 ibm IBM ibmj IBMJ ax AX 55 us US) do if "%1"=="%%a" goto mk_%%a
command /c ac %1
lk %1
:mk_98
set HARD=
set masm=/dPC98
goto makevz
:mk_J31
set HARD=J31
set masm=/dJ31
goto makevz
:mk_IBM
set HARD=IBM
set masm=/dIBMV
goto makevz
:mk_IBMJ
set HARD=IBMJ
set masm=/dIBMJ
goto makevz
:mk_AX
set HARD=AX
set masm=/dIBMAX
goto makevz
:mk_55
set HARD=55
set masm=/dJBM
goto makevz
:mk_US
set HARD=US
set masm=/dUS
goto makevz
:makevz
echo ===== Make VZ%HARD% %2 =====
set %ASM%asm=%MASM%
if "%ASM%"=="opt" goto optmake
if "%ASM%"=="t" goto tmake
make vz.mak
goto link
:optmake
optasm @vz.omk
goto link
:tmake
make -fvz.mak
goto link
:link
if errorlevel 1 goto error
lk
:error
echo
VZ.LNK
main+
alias+
char+
core+
disp+
dos+
expr+
filer+
gets+
harderr+
inst+
key+
ledit+
macro+
memo+
menu+
misc+
open+
printf+
scrn+
smooth+
string+
text+
view+
wind+
xscr+
swap+
ems+
msg
VZ.MAK
.asm.obj:
$(ASM)asm /ml $(MASM) $*;
vz.com: main.obj alias.obj char.obj core.obj disp.obj dos.obj expr.obj\
filer.obj gets.obj harderr.obj inst.obj key.obj ledit.obj macro.obj\
memo.obj menu.obj misc.obj open.obj printf.obj scrn.obj smooth.obj\
string.obj text.obj view.obj wind.obj swap.obj ems.obj xscr.obj msg.obj
main.obj: vz.inc main.asm
alias.obj: vz.inc alias.asm
char.obj: vz.inc char.asm
core.obj: vz.inc core.asm
disp.obj: vz.inc disp.asm
dos.obj: vz.inc dos.asm
expr.obj: vz.inc expr.asm
filer.obj: vz.inc filer.asm
gets.obj: vz.inc gets.asm
harderr.obj: vz.inc harderr.asm
inst.obj: vz.inc inst.asm
key.obj: vz.inc key.asm key98.asm keyibm.asm dummy
ledit.obj: vz.inc ledit.asm
macro.obj: vz.inc macro.asm
memo.obj: vz.inc memo.asm
menu.obj: vz.inc menu.asm
misc.obj: vz.inc misc.asm
open.obj: vz.inc open.asm
printf.obj: sprintf.inc printf.asm
scrn.obj: vz.inc scrn.asm scrn98.asm scrnibm.asm dummy
smooth.obj: vz.inc smooth.asm
string.obj: vz.inc string.asm
text.obj: vz.inc text.asm
view.obj: vz.inc view.asm
wind.obj: vz.inc wind.asm
xscr.obj: vz.inc xscr.asm
swap.obj: vz.inc swap.asm
ems.obj: vz.inc ems.asm
msg.obj: vz.inc msg.asm dummy
VZ.OMK
main.obj vz.inc main.asm
main /ml;
alias.obj vz.inc alias.asm
alias /ml;
char.obj vz.inc char.asm
char /ml;
core.obj vz.inc core.asm
core /ml;
disp.obj vz.inc disp.asm
disp /ml;
dos.obj vz.inc dos.asm
dos /ml;
expr.obj vz.inc expr.asm
expr /ml;
filer.obj vz.inc filer.asm
filer /ml;
gets.obj vz.inc gets.asm
gets /ml;
harderr.obj vz.inc harderr.asm
harderr /ml;
inst.obj vz.inc inst.asm
inst /ml;
key.obj vz.inc key.asm key98.asm keyibm.asm dummy
key /ml;
ledit.obj vz.inc ledit.asm
ledit /ml;
macro.obj vz.inc macro.asm
macro /ml;
memo.obj vz.inc memo.asm
memo /ml;
menu.obj vz.inc menu.asm
menu /ml;
misc.obj vz.inc misc.asm
misc /ml;
open.obj vz.inc open.asm
open /ml;
printf.obj sprintf.inc printf.asm
printf /ml;
scrn.obj vz.inc scrn.asm scrn98.asm scrnibm.asm dummy
scrn /ml;
smooth.obj vz.inc smooth.asm
smooth /ml;
string.obj vz.inc string.asm
string /ml;
text.obj vz.inc text.asm
text /ml;
view.obj vz.inc view.asm
view /ml;
wind.obj vz.inc wind.asm
wind /ml;
xscr.obj vz.inc xscr.asm
xscr /ml;
swap.obj vz.inc swap.asm
swap /ml;
ems.obj vz.inc ems.asm
ems /ml;
msg.obj vz.inc msg.asm dummy
msg /ml;