Dash-8X 暫定仕様公開 [近況報告]
N-BASIC 専用の Dash-80 をパワーアップし、かつ、NEC の PC-8001/8801 シリーズ全てで動作するようにするという構想で始めた Dash-8X ですが、この辺でちょっとだけ、現時点でまとまっている仕様を公開します。
知らない方のために、ちょいと Dash-80 を紹介しておきます。
Dash-8X の元になっているのは上でも書いたとおり Dash-80 なのですが、これは PC-8001 の Disk BASIC とファイルシステムに互換性のあるプログラムローダーです。
一番のウリである「フリーアリアを消費しない」事を実現するため、Disk BASIC で拡張される「ファイル入出力機能」は付いていません。
セーブ機能が付いていないのは、優先順位を低く考えているのと作者の怠慢のせいです^^;
肝心のロード機能ですが、これは BASIC コードのファイルだけではなく N80/N80SR/N88-BASIC でサポートされているバイナリファイルのロードもサポートしています。 ただ、残念ながら ASCII セーブされたファイルのロード機能はありません。
あ、「FILES」コマンドはありますよ^^ カーソルを移動して「load "」と打てばファイル名を打ち直さなくてもロードできるように Disk BASIC とは表示形式が変えてあります。
Dash-80 の機能をまとめると、以下のようになります。
(Dash-80 Readme.txt からの転載)
Dash-8X では、上記の Dash-80 の機能に加えて以下の機能を装備しようと目論んでいます。
…と、まぁ、やりたい事は盛り沢山ですが、全てを一気にインプリメントはできないので、機能を追加する度にマイナーバージョンアップという形でリリースする事になると思います。
とりあえずは、ベータ版リリースに向けて頑張る事にします^^
★
知らない方のために、ちょいと Dash-80 を紹介しておきます。
Dash-8X の元になっているのは上でも書いたとおり Dash-80 なのですが、これは PC-8001 の Disk BASIC とファイルシステムに互換性のあるプログラムローダーです。
一番のウリである「フリーアリアを消費しない」事を実現するため、Disk BASIC で拡張される「ファイル入出力機能」は付いていません。
セーブ機能が付いていないのは、優先順位を低く考えているのと作者の怠慢のせいです^^;
肝心のロード機能ですが、これは BASIC コードのファイルだけではなく N80/N80SR/N88-BASIC でサポートされているバイナリファイルのロードもサポートしています。 ただ、残念ながら ASCII セーブされたファイルのロード機能はありません。
あ、「FILES」コマンドはありますよ^^ カーソルを移動して「load "」と打てばファイル名を打ち直さなくてもロードできるように Disk BASIC とは表示形式が変えてあります。
Dash-80 の機能をまとめると、以下のようになります。
(Dash-80 Readme.txt からの転載)
- NEC PC-8001 / 8801 シリーズ用のプログラムローダーです
- N-BASIC モードで動作します
- 起動時以外はフリーエリアを使用しません
- Disk BASIC とファイルシステム互換です
- N-BASIC で書かれた BASIC プログラム/ N80/N80SR/N88-Disk BASIC 互換のバイナリデータをロード/実行できます
- Disk BASIC 互換のオートスタート機能付です
- Disk BASIC と同等のエラーメッセージが表示されます
- Disk BASIC の難点であった MOUNT / REMOVE 命令をなくしました
- FILES / LFILES 命令の書式が Disk BASIC と異なります
- FILES / LFILES 命令で表示/印刷される内容が Disk BASIC と異なります
★
Dash-8X では、上記の Dash-80 の機能に加えて以下の機能を装備しようと目論んでいます。
- N/N80/N80SR/N88-BASIC モードで動作
- 当たり前ですが、PC-8001/8801 シリーズ全てでの動作が目標です。
- ASCII 形式ファイルの読み込み機能
- これは現在試行錯誤中です。
- セーブ機能の実装
- これはぜひとも実現したい機能です。
- 外部コマンド機能
- ファイル転送やディスクフォーマット等の処理をメインメモリを使用せず、サブシステム内で処理できれば…。
- グラフィックデータの読み込み機能
- コマンド一発で読み込めれば…\(^_^)/
セーブ機能を付ける場合はグラフィックデータも可能なようにしないといけませんね。 - システム初期化部分をモジュール化
- モジュール化し、かつ拡張可能にすることで汎用性を向上させます。
PC-8001mkIISR / PC-8801mkIISR 両対応のミュージックディスクとかに流用が可能になるかも!?
★
…と、まぁ、やりたい事は盛り沢山ですが、全てを一気にインプリメントはできないので、機能を追加する度にマイナーバージョンアップという形でリリースする事になると思います。
とりあえずは、ベータ版リリースに向けて頑張る事にします^^
始めまして、いつも、Dash-80を使わせていただいてます。ROM-BASICのプログラムをそのまま修正無しで動かせるのは良いですね(フリーエリアが減らないのはすばらしいです)。
1つ質問なんですが、マシン語だけのプログラムを動かすと、何も無い所にドットが表示されます。例えば、BUGFIREとか、SCRAMBLEとかです。
もしかして、Dash-80起動時にCOLOR 7,32を実行されてますでしょうか?
とりあえず、COLOR 7,0を実行するBASICプログラムを実行してから起動するようにしたので問題ないのですが、なんでかなぁと思いまして、書きこみさせていただきました。
(当時、COLOR文の第2引数なんて使ったこと無かったですw)
by Dash-80の1ユーザーです (2010-11-30 23:57)
Dash-80の1ユーザーですさん、コメントありがとうございます。
利用者の方から感想を貰う機会が少ないので、こういう書き込みは大変嬉しいです。
ソースを引っ張り出して調べたら、ご指摘のとおり IPL 内の処理で COLOR 文の第2パラメータのワークエリアに 32 を書き込んでましたA^^;
当時のプログラムは、フリーエリアの状態が電源投入時とおなじでないと正常動作しないモノとかありましたから、やはり変な小細工はしない方が良いみたいですね。
次のヴァージョンで修正させていただきます。
余談になりますが、マシン語の LOAD / RUN 文はプログラム中に書くことができますし、ファイル名に文字変数を使用することも可能ですから、工夫すればメニュープログラムも作れます。ただ DSKI$ が使えないので、実行するプログラムのリストは DATA 文で持っておかないとダメですが(笑)
これからも Dash-80 をよろしくお願いいたします。
BUGFIRE は友達と競ってよくやりました。
SCRAMBLE は何回やってもうまくできないヘボでした(笑)
なつかしす^^
by Thunderbolt (2010-12-01 06:06)
わぁ、即レスありがとうございます。
また、変な名前ですいません。
ちなみに、マシン語のRUN文の構文は、どういうものでしょうか?
RUN"machinobj",&HC5C0,&HE3CC
Missing operand
…う~ん。
今は、下記BASICでスタートさせてます。
10 COLOR 7,0,0
20 DEF USR=&HE3CC:A=USR(0)
by Dash-80の1ユーザーです (2010-12-02 23:03)
えーと、書式は readme.txt に書いたと思うのですがちょっと分かり難かったでしょうか(汗)
どういった方法でマシン語のプログラムを保存されたのか分かりませんが、Dash-80 では N80/N80SR/N88-BASIC の BSAVE で保存されたのと同じ形式のファイルであれば LOAD/RUN できます。ただ、BSAVE では実行開始アドレスは保存されないので「実行開始アドレス≠先頭アドレス」の場合はちょっと工夫が要ります。
解決法としては、
1.マシン語の先頭に JP 命令を追加して BSAVE しなおす
2.マシン語ファイルのデータを操作して、先頭に JP 命令を付け足す
3.BASIC のプログラムを介して実行する
の3つがあります。
ファイルの数を増やしたくない場合は、1か2の方法が有効ですが、若干マシン語の知識が必要です。更に2は BASIC でデータファイルを扱う知識が必要です。一番楽なのは、やっぱり3ですね^^
1 ' SAVE "B-FIRE.bas"
2 ' BUG FIRE! loader
3 '
10 COLOR 7,0,0:DEFINT A-Z
20 LOAD "B-FIRE.bin"
30 DEF USR=&HE3CC:A=USR(0)
LOAD 文は、読み込む対象がバイナリファイル(マシン語も含む)であれば BASIC のプログラム中に書いても OK です。
書式: RUN <ファイル名>
RUN 文には、現在の仕様ではオプションのパラメータは指定できません。
拠って BSAVE 時に指定した先頭アドレス以外の番地をロードアドレスにする事はできません。 また、必ず先頭アドレスから実行を開始します。
これは、N-BASIC 以外の BASIC で BSAVE されたファイルとの互換性を維持するためと、アドレス指定処理を追加する事で Dash-80 が BASIC の未使用領域内に収まらなくなる可能性があるためです。
「可能性」と書いたのは、他にも実装したい機能があるからなのですが、アドレス指定はある方が便利なのは分かっているので(笑)次のヴァージョンでは追加したいです。
DSKF 関数とかもあれば便利ですね。
by Thunderbolt (2010-12-03 06:09)
いつも即レス&丁寧な説明ありがとうございます。
質問の背景を説明しておらず、すいませんでした。
実は、t88ファイルからd88(オートスタート付き)ファイルへの自動変換ツールを作っています。
t88tool.exe bugfire.t88 E3CC
てな感じで実行すると、t88ファイルからBASICとマシン語のプログラムを抽出して、Dash-80のシステムディスクに抽出したファイルを登録して、最後にオートスタート用コマンド(LOAD"machin":RUN"BASIC")をセットします。
#変換処理の完全自動化と、起動後の自動スタートの両方をめざしてます。
最初は、後段の処理にはp80makeを利用していたんですが、ちょっと起動が遅いので、もっと早いものを探してDash-80にたどりつきました。
ちょっと前までは、セーブ機能とかも期待していたんですが、今はツール内でファイルの登録をできるようになったので、いらなくなりました。
また、自動実行もBASICのプログラムで対応したので、特にいらなくなりました。
前回、readme.txtに、マシン語の開始アドレスの指定の仕方が無かったので質問させていただきましたが、スタートアドレスが無いのは、DISK-BASICの仕様だったんですね。であれば、私もそこは変えないほうが良いと思います。
ということで、今となっては、Dash-80には、今の小さくて軽いままでいて欲しいなぁ、という感じです。
#わがままで、すいませんw
これ以上、コメント欄を荒らしても何なので、どこかで、今作っている変換ツールを公開したいと思います。
最後に、解決法1の提案ありがとうございます。確かに簡単に対応できますね。頭に3バイト追加するだけです。(C3 nn nn、ハンドアセンブルしていた頃がなつかしい…)
当時だったら、当然それをやって自動化したと思いますが、今となっては、プログラム部分はそのままの形で保全したいという気持ちが強いです。
N-BASICのプログラムがそのまま改造無しに起動できてしまう所に、Dash-80の魅力を感じているのです。開始アドレスも思い出の1つということでしょうか…
by Dash-80の1ユーザーです (2010-12-03 21:22)
t88tool.exe 良いですね^^
全国の PC-8001 ユーザーのために、完成したらぜひとも公開をお願いします。
>Dash-80には、今の小さくて軽いままでいて欲しいなぁ、という感じです。
Dash-80 は、Disk-BASIC のように「冗長で回りくどい」処理をしていないので、動作が軽いんだと思います。
小さいのは、データファイル関係のルーチンが全く含まれていないのが一番の理由ですね。
Disk-BASIC はデータを一旦バッファに貯めてから転送してますが、Dash-80 は「ダイレクト転送方式」ですから、その分体感速度も速いですしね^^
将来的にセーブ機能を追加したとしても 500 バイト程度しか増えないはずです…というか、大きくも重くも、しようと思ってもできないです(笑)
>今となっては、プログラム部分はそのままの形で保全したいという気持ちが強いです。
>開始アドレスも思い出の1つということでしょうか…
その気持ちよーく分かります^^
I/O 誌掲載のゲームなら、当時は開始アドレスを聞いただけでゲーム名を当てる事ができたものです。
by Thunderbolt (2010-12-04 00:12)
はじめまして。DASH80を使用させて頂いているのですが質問があります。
MOUNT機能を削除されたとの事ですがオートマウント機能は正常に動作されているでしょうか?
M88エミュレーターで確認しているのですがDASH80をNモードで実行させた後、ドライブ1のDISKをゲームDISK(D88形式)に交換してLOAD”ゲーム”とやってもFILE NOT FOUNDとなってゲームDISKを認識してくれません。
何か自分の思い違いがあるでしょうか?
by みれい (2010-12-14 15:06)
はじめまして、みれいさん。
コメントありがとうございます。
Dash-80 は他のサイトでもプログラムの公開に使用されており、最新ヴァージョン 1.0b1 において不具合は報告されておりません。 また、作者も不具合があるとは認識しておりません。
1.0b より前のヴァージョンには致命的なバグがありますので、古いヴァージョンを使っておられるなら、〔本館〕サイトから最新版を DL してください。
ご質問の件ですが、他の N-BASIC 系の NEC 純正システムディスクで起動した場合に、当該のディスクに差し替えて FILES コマンドを実行すると正常にファイルリストが表示されますでしょうか?
ファイルリストが表示されれば、当該のディスクは Disk-BASIC 互換形式の 2D ディスクですので、LOAD"~" で読み込めるはずです。
もし、ファイルリストが表示されなかったり、意味のないデータが表示されたりすれば、そのディスクは 1D の Disk-BASIC であるか、もしくは Disk-BASIC 互換形式の 2D ディスクではないと思われます。
Disk-BASIC のシステムが手元にない場合は、D88 形式のファイルをバイナリエディタ等で確認しないと、起動しない原因を探るのは難しいですね。
ご不明の点は、またコメントしてください。
蛇足ですが、問題が起こった場合に、自分の間違いを疑う前に他人の間違いを疑うのはどうかと思いますが…。
by Thunderbolt (2010-12-14 18:22)
早速のお返事ありがとうございます。
初めに最初に他人の間違いを疑ったわけでは無い事をいっておきます。
話の流れ上、そのように書くようにしただけであって、それによって不愉快な気分にされたら申し訳ありません。
しかし、他意はないので誤解があるといやなので。
自分の間違いを一番、疑っておりDISK-BASICが手元にないので確認のしようがないのですが手元にDISK-BASICが手に入ったらFILESコマンドで確かめてみたいと思います。
お返事ありがとうございました。
by みれい (2010-12-15 07:48)
>初めに最初に他人の間違いを疑ったわけでは無い事をいっておきます。
と言われても、そういう書き方をしている以上、まず最初に他人の間違いの可能性を疑っていると解釈されても仕方がないと思いますが…。
その上、「いっておきます。」と「えらそう」なのはどうしてでしょう? 謙虚に反省している書き方とは思えません。
>話の流れ上、そのように書くようにしただけであって、
>しかし、他意はないので誤解があるといやなので。
その言葉を付け足したところで何も変わりませんし、自身の書き方を正当化しようとしているとしか受け取れません^^
…ネットは匿名であると同時に匿年齢ではあるが、年齢/知識/経験というものはコメントの書き方から容易に推測できてしまうってことが分かっていない…
…相手が怒っていると分かれば謝罪はするが強弁して正当化しようとするのは、到底まっとうな社会人とは判断しがたい…
…相手の反感を買ったと分かれば、前回よりも注意深く言葉を選んで書こうとするはずだが、それもできない…
…プロフィールとか他の記事/コメントを読めば、ブログ主がどの程度の年齢/知識/経験なのかは容易に理解できるはずなのだが、それをしない/できないってのは、実年齢/精神年齢が幼稚だと自ら証明している…
これまでの書き込みから、'80年代に実機を経験した社会人とは到底思えませんので、今後の書き込みには「荒らし」として対処させていただきます。 ご了承ください。
by Thunderbolt (2010-12-15 15:10)
こんばんは、「Dash-80の1ユーザーです」 改め 「bugfire」です。
#ふだんbugfireを名乗っているのですが、この業界でこのハンドル名はさすがに恥ずかしいので前回まで名乗れませんでした。すいません。
>これ以上、コメント欄を荒らしても何なので、どこかで、今作っている変換ツールを公開したいと思います。
何とか自分のページを作りました。
PC-8001エミュレータに関する覚え書きみたいなものですが、例のt88tool(ver0.80)も公開しています。
AutoStartに関する記事中でDash-80を紹介させていただいています。
また、t88toolでは、Dash-80を使わせていただいています。
不都合等、ありましたら、ホームページのメールアドレスまでご連絡ください。
平日はなかなかメールチェックできませんが、確認しだい、対処させていただきます。
では、失礼します。
by Dash-80の1ユーザーです 改め bugfire (2010-12-15 21:15)
bugfire さん、コメントありがとうございます。
>この業界でこのハンドル名はさすがに恥ずかしいので前回まで名乗れませんでした。
レトロPC/レトロゲーム界には、自分がリスペクトするゲームやPCの名前をハンドル名の一部にされている方はたくさんおられますよ。 Twitter なんか 「○○6001」とか「orion○○」とか…たまによく似た名前で混乱してしまいますがww
まぁ、あまりにもメジャーすぎるとちょっと気が引けちゃいますが^^ 私は堂々と名前を付けている方を尊敬します。
>AutoStartに関する記事中でDash-80を紹介させていただいています。
ありがとうございます。大変嬉しいです(T_T感涙)
>何とか自分のページを作りました。
早速今から拝見しに行きます㏄= ㏄=┌( ・_・)┘ダッーシュw
by Thunderbolt (2010-12-15 22:15)
Thunderbolt様
こんばんは、bugfireです。
まずは、ご訪問いただきありがとうございました。
blogはまだやってないので、何かありましたら、またゲストブックにお願いします。
また、相互リンクありがとうございます。
(バナー作らんとですな)
Dash-8Xのベータ版、期待しております。
by bugfire (2010-12-19 21:13)
bugfireさん、コメントありがとうございます。
>blogはまだやってないので、何かありましたら、またゲストブックにお願いします。
了解しました^^
最初のうちは勢いで何とかなるんですが、blogって続けるにはパワーが要りますから大変ですよ。 そのうちネタに困ってきたりもするし・・・(笑)
>Dash-8Xのベータ版、期待しております。
BASIC ワークエリアの値の意味を取り違えてたり・・・
4機種対応は大変ですが、やると公表した以上なんとしても公開までは漕ぎ着けなければ・・・
でも、時間が取れなくて、あまり進んでません orz
待ってる皆さんに早くお届けしたいんですけどね^^;
>バナー作らんとですな
ぜひぜひお願いします。 バナーがあると見栄えがしますし、アイキャッチ効果も大きいですしね^^
最後にお願いなんですが、「Thunderbolt様」ってのはどうも苦手でして、「さん」付けにしてもらえませんでしょうか。
by Thunderbolt (2010-12-20 00:29)
度々、失礼します。bugfireです。
>>バナー作らんとですな
>ぜひぜひお願いします。 バナーがあると見栄えがしますし、アイキャッチ効果も大きいですしね^^
バナー用GIF作りましたです(Linkのページの一番下においておきます)。
PC-8001のプレート(エンブレム)の質感を思い出しながら作りましたが、いかがでしょうか?
(後で比べたら、プレートよりもさらに古めかしい色合いになっていました…)
by bugifre (2010-12-28 02:49)
bugfireさん、バナー作成お疲れ様です^^
早速使わせていただきます。
あまり似せすぎると、只のPC-8001ロゴと間違いそうなので、これくらいがちょうど良いのでは?
by Thunderbolt (2010-12-28 15:54)