<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns="http://purl.org/rss/1.0/"
 xmlns:content="http://purl.org/rss/1.0/modules/content/"
 xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"
 xmlns:admin="http://webns.net/mvcb/"
>
<channel rdf:about="http://blog.livedoor.jp/hardyboy/">
<title>まごころせいじつ堂 - MSDOS</title>
<link>http://blog.livedoor.jp/hardyboy/</link>
<description>浜町庄金　研究開発
　マイコンで遊んでばっかりで

</description>
<dc:language>ja</dc:language>
<admin:generatorAgent rdf:resource="http://blog.livedoor.com/?v=2.0" />
<items>
 <rdf:Seq>
  <rdf:li rdf:resource="http://blog.livedoor.jp/hardyboy/archives/9750795.html" />
 </rdf:Seq>
</items>
</channel>

<item rdf:about="http://blog.livedoor.jp/hardyboy/archives/9750795.html">
<title>豊四季タイニーBASICをMS-DOS上で動かす</title>
<link>http://blog.livedoor.jp/hardyboy/archives/9750795.html</link>
<description>　豊四季タイニーBASICのソースをコンパイルしてMS-DOS上で動かしてみる。　きっかけは生の8086上で色々動かせるための環境をどうしようかと考えていてそういえば学生の頃からよく使ったLSI-C86試食版があったな、と。Windows10やWindows7では16bit版のバイナリは実行できな...</description>
<dc:creator>hardyboy</dc:creator>
<dc:date>2021-01-31T02:43:52+09:00</dc:date>
<dc:subject>MSDOS</dc:subject>
<content:encoded><![CDATA[<div>　豊四季タイニーBASICのソースをコンパイルしてMS-DOS上で動かしてみる。</div><br /><div>　きっかけは生の8086上で色々動かせるための環境をどうしようかと考えていてそういえば学生の頃からよく使った<a  href="http://www.lsi-j.co.jp/freesoft/" target="_blank">LSI-C86試食版</a>があったな、と。Windows10やWindows7では16bit版のバイナリは実行できないのでこれは<a  href="http://takeda-toshiya.my.coocan.jp/msdos/" target="_blank">MS-DOS Player for Win32-x64</a>を使い、確認のため<a  href="https://vintagechips.wordpress.com/2015/12/06/%e8%b1%8a%e5%9b%9b%e5%ad%a3%e3%82%bf%e3%82%a4%e3%83%8b%e3%83%bcbasic%e7%a2%ba%e5%ae%9a%e7%89%88/" target="_blank">豊四季タイニーBASIC</a>をコンパイルして実行してみた。</div><br /><div>以上でだいたいわかった方はこちらをどうぞ↓<br /></div><div><a  href="https://gist.github.com/houmei/8d6eff62219dd5636c9ddd5b502e212a" target="_blank">https://gist.github.com/houmei/8d6eff62219dd5636c9ddd5b502e212a</a></div><br /><br /><div>(1)LSI-C86試食版のインストール</div><div>エル・エス・アイ　ジャパン株式会社のフリーソフトウェア集のページからlsic330c.lzhをダウンロードし、.LZH形式が展開できるツールでC:\LSIC86以下に展開。</div><div>C:\BIN以下にある_LCCの内容を修正。昔はPC-98だったのでA:ドライブだったよな〜等</div><br /><blockquote><div><pre># LSI C-86 compiler's configuration file

-DLSI_C
-XC:\LSIC86\BIN -LC:\LSIC86\LIB -IC:\LSIC86\INCLUDE -T -O
-acdos.obj $LSICOPTS
&amp;               #Command line argument will be inserted here
-lknjlib -ldoslib -v</pre></div></blockquote><div>C:\LSIC86\BINにパスを通す。[システムのプロパティ]→[環境変数(N)…]からシステム環境変数のPathにC:\LSIC86\BINを追加。</div><br /><div>(2)MS-DOS Playerの導入</div><div>　<a  href="http://takeda-toshiya.my.coocan.jp/msdos/" target="_blank">MS-DOS Player for Win32-x64</a>からダウンロード。MS-DOSを実行するプロセッサが8086/80286/80386/80486から、コマンド自体が動作する環境が32bit/64bitから選べる。LSI-C86は8086以降から動くのでどれを選んでも問題ない。動作環境はWindows10だと64bit版。これに対応したMSDOS.EXEをC:\LSIC86\BIN以下にコピーする。</div><div>　ここまでで適当にhello.cなど書いて動作確認。16bitバイナリの実行には頭にMSDOSを付けて実行。</div><br /><div>C:\LSIC86&gt; MSDOS LCC HELLO.C<br /></div><br /><div>私の環境では普段使っているデスクトップのWindows10機ではウイルススキャンの対象になっているのかうまく動かなかった。WindowsXP→Windows7→Windows10と継ぎ足しで使ってて切り分けも面倒なので別のパソコンで動かしている。<br /></div><br /><div>(3)豊四季タイニーBASICの修正</div><div>　<a  href="https://vintagechips.wordpress.com/2015/12/06/%e8%b1%8a%e5%9b%9b%e5%ad%a3%e3%82%bf%e3%82%a4%e3%83%8b%e3%83%bcbasic%e7%a2%ba%e5%ae%9a%e7%89%88/" target="_blank">豊四季タイニーBASIC</a>は<a  href="https://github.com/vintagechips/ttbasic_arduino" target="_blank">Arduino版</a>をベースにコンパイルできるよう修正する。</div><div>変更点：</div><div>(1) ソースの文字コードをSJISに変換</div><div>(2) コメント//を/* */の形式に変換</div><div>(3) #define STR_EDITIONを"MSDOS"に<br /></div><div>(4) Terminal controlの部分をputch(c) getch() kbhit() に</div><div>(5) (uintptr_t)を削除。これ<a  href="http://blog.livedoor.jp/hardyboy/archives/7919274.html" target="_blank">Arduino Dueで豊四季タイニーBASIC</a>を動かそうとした時に追加して反映してもらったパッチなのですが外すことに。</div><div>(6) getrnd()再実装。これはarduinoのrandom(MAX,MIN)とrand()の仕様が違うため。</div><div>(7) BYE命令追加。一度basicを起動するとMS-DOSに戻る手段がなかったのでNEWとかRUNといった命令を参考に呼んだらexit()を実行するようにした。</div><div>(8) 末尾にbasic()を呼び出すmain()関数追加。</div><br /><div>配列の上限やらそのあたりはいじっていません。</div><br /><br /><div>　さて今後ですが、具体的にはV20SBC開発環境として使えないかどうか探っていきます。LSI-C86製品版なら組み込み向けのリンクもできるらしいし、BANDAIの携帯ゲーム機WonderSwanの開発環境WonderWitchにはカスタマイズしたLSI-C86が付属していたのですがどこにしまったかな？</div><br /><div>案１：通常のMSDOS向けにリンクしてある.objについて、適切にハードウェアの初期化を行った.objファイルを生成しリンク</div><div>案２：豊四季タイニーBASICからMS-DOSやその他ライブラリに依存した部分(入出力とrand()、exit() )を修正してアセンブラ１本にし、他の8086ターゲットアセンブラに持っていく<br /></div><div>案３：組み込み向けの使用例があるTurbo-Cあたり　海外の事例探し<br /></div><br /><div>　といった感じで。</div><br /><br /><div  class="amazon MediumImage"><div  class="pictBox"><a  target="_blank" href="https://www.amazon.co.jp/dp/B008921FRI?psc=1&amp;tag=keisanki-22&amp;th=1&amp;linkCode=osi"><img  class="pict" alt="ワンダーウィッチ Wonder Witch" src="https://m.media-amazon.com/images/I/51Dxbhu71tL._SL160_.jpg" hspace="5" border="0"></a><br /></div><div  class="itemTitle"><a  target="_blank" href="https://www.amazon.co.jp/dp/B008921FRI?psc=1&amp;tag=keisanki-22&amp;th=1&amp;linkCode=osi">ワンダーウィッチ Wonder Witch</a></div></div><br /><div>


<br /></div>]]>
</content:encoded>
</item>

</rdf:RDF>
