近況報告 [近況報告]
なんだか、TwitterのRetroComPeopleアカウントが凍結された。
朝、数回つぶやいただけなのに1日の投稿制限を越えました。…とか洒落にならんわw
なので、別アカのnekotsukai10を凍結解除まで使用します。
新しい記事が投稿されたのかと喜ばれた方にはお詫び申し上げます。
朝、数回つぶやいただけなのに1日の投稿制限を越えました。…とか洒落にならんわw
なので、別アカのnekotsukai10を凍結解除まで使用します。
新しい記事が投稿されたのかと喜ばれた方にはお詫び申し上げます。
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-8X 進行状況、その他 [近況報告]
Dash-8X のリリースに向けてバリバリとコーディング中。
Dash-8X のネーミングはもう既にお察しのとおり、日本語系/漢字系を除く NEC の8ビット系の BASIC 全てで動作する Dash システムです。
PC-8001 用にリリースした Dash-80 は N-BASIC の構想もわりと単純だったのであまり苦労もなくインプリメントできたのですが、Dash-88 パートに苦戦…
N-BASIC だと 'LOAD', 'RUN' 等は Disk-BASIC 専用命令なのでフックを書き換えるだけで済んでしまうところが、N88-BASIC だと他のデバイス("SCRN:","CAS:","KYBD:")との絡みで、フックの書き換えだけという訳にはいかないのですが、まあ、その辺りは Disk-BASIC がやっているのと同じような拡張のやり方で済むので問題はありません。
Dash が売り物にしている「フリーエリアを圧迫しない」点も、 Dash-80 では必要でなかったデバイスディスクリプタ処理を 8000H から 83FFH にあるテキストウィンドウの裏RAMを使用する事であっさり解決♪
問題は N-BASIC ではサポートされていなかった DMA方式のドライブの存在…
Dash は5インチインテリジェントドライブ専用なので、8インチドライブは無用というか邪魔者でしかありません。
ドライブ番号は、8インチDMA→5インチDMA→5インチINT の順で振られるのですが、IPL が読み込まれる時点では既にシステムに接続されているドライブのリストが作成されてしまっています。
このリストをそのまま使用すると、サポートされていないドライブに番号が振られている「みっともない状態」になってしまいますので、これは何とか避けたいところです。 「フリーエリアを圧迫しない」というポリシーにも反しますしね。
もうひとつの問題は、起動時に ”How many files (0-15) ?” と質問される DCB(?)、 FCB とファイルバッファの存在…
N-BASIC では FCB とファイルバッファは Disk BASIC でしか使われなかったため、Dash-80 では全く使用しない方法で組んでいました。
Dash-88 パートを組むにあたっては、他のデバイスで使用される FCB とファイルバッファを無視する訳にはいかないので、あれこれと試行錯誤中です。
ドライブのステータスを管理する DCB は、N88-BASIC のドライブ管理機能自体を使っていないので、全く無視しても良いかな(笑)
Dash-80mkII パートは、まだ手付かず状態なのですが、こっちの方が楽に行けそうな感じ♪
Dash-80 が PC-8001mkII で N80-BASIC から起動した場合でも N-BASIC で起動してしまうのは、N80-BASIC で拡張された 4th ROM をチェックしていないのが原因なので、チェックを追加すればOKのはず。
Dash-88 パートで手詰まり状態になったらこっちを先にやるかもです。
Dash-80SR パートは全くの未着手 orz
N80SR-BASIC の解析は進んでいるのですが、どうしてもフリーエリアを使用しなくてはならないようなので、メモリレイアウトをあれこれ模索中です。
N-BASIC / N80-BASIC / N80SR-BASIC / N88-BASIC と、4つの Dash システムを1枚のメディアに収める件は、実証実験も終わってOKなので問題なし。
元々はシステムを4つリリースすると管理が大変だという訳で「面倒だからまとめてしまえ」と始めた Dash-8X ですが、色々と要望も野望も出てきそうなので、もう少し(…まだまだの間違いかも^^;)時間が掛かりそうです。
個別のシステムがある程度フィックスした時点で「えいやっ」とひとつにまとめてリリースします。
ここからは、使っているアセンブラ「Macro assembler AS」の話。
これまでも、他のアセンブラでできる事ができないとか、マニュアルが不親切で分かりにくいとか、色々と泣かされて来ましたが、またまた大きなバグを発見 OTL
コードの途中に構造体( STRUCT )を配置すると、アセンブルリストを見る限りでは問題なくちゃんとアセンブルされているのですが、出力された HEX ファイルには構造体の領域が確保されていないという…もう顎が外れそうです。
まぁ、データ領域は大抵コード領域の後ろに配置するのが常ですけど、ヘッダーとかに構造体を使わないんでしょうかねぇ…。
アセンブルリストは正常なので、コードジェネレータのバグなのでしょうか…。
使い込めば使い込むほど「ドツボ」に嵌り込んでゆく気がするのは、気のせいなんでしょうか…
Dash-8X のネーミングはもう既にお察しのとおり、日本語系/漢字系を除く NEC の8ビット系の BASIC 全てで動作する Dash システムです。
PC-8001 用にリリースした Dash-80 は N-BASIC の構想もわりと単純だったのであまり苦労もなくインプリメントできたのですが、Dash-88 パートに苦戦…
N-BASIC だと 'LOAD', 'RUN' 等は Disk-BASIC 専用命令なのでフックを書き換えるだけで済んでしまうところが、N88-BASIC だと他のデバイス("SCRN:","CAS:","KYBD:")との絡みで、フックの書き換えだけという訳にはいかないのですが、まあ、その辺りは Disk-BASIC がやっているのと同じような拡張のやり方で済むので問題はありません。
Dash が売り物にしている「フリーエリアを圧迫しない」点も、 Dash-80 では必要でなかったデバイスディスクリプタ処理を 8000H から 83FFH にあるテキストウィンドウの裏RAMを使用する事であっさり解決♪
問題は N-BASIC ではサポートされていなかった DMA方式のドライブの存在…
Dash は5インチインテリジェントドライブ専用なので、8インチドライブは無用というか邪魔者でしかありません。
ドライブ番号は、8インチDMA→5インチDMA→5インチINT の順で振られるのですが、IPL が読み込まれる時点では既にシステムに接続されているドライブのリストが作成されてしまっています。
このリストをそのまま使用すると、サポートされていないドライブに番号が振られている「みっともない状態」になってしまいますので、これは何とか避けたいところです。 「フリーエリアを圧迫しない」というポリシーにも反しますしね。
もうひとつの問題は、起動時に ”How many files (0-15) ?” と質問される DCB(?)、 FCB とファイルバッファの存在…
N-BASIC では FCB とファイルバッファは Disk BASIC でしか使われなかったため、Dash-80 では全く使用しない方法で組んでいました。
Dash-88 パートを組むにあたっては、他のデバイスで使用される FCB とファイルバッファを無視する訳にはいかないので、あれこれと試行錯誤中です。
ドライブのステータスを管理する DCB は、N88-BASIC のドライブ管理機能自体を使っていないので、全く無視しても良いかな(笑)
★
Dash-80mkII パートは、まだ手付かず状態なのですが、こっちの方が楽に行けそうな感じ♪
Dash-80 が PC-8001mkII で N80-BASIC から起動した場合でも N-BASIC で起動してしまうのは、N80-BASIC で拡張された 4th ROM をチェックしていないのが原因なので、チェックを追加すればOKのはず。
Dash-88 パートで手詰まり状態になったらこっちを先にやるかもです。
★
Dash-80SR パートは全くの未着手 orz
N80SR-BASIC の解析は進んでいるのですが、どうしてもフリーエリアを使用しなくてはならないようなので、メモリレイアウトをあれこれ模索中です。
★
N-BASIC / N80-BASIC / N80SR-BASIC / N88-BASIC と、4つの Dash システムを1枚のメディアに収める件は、実証実験も終わってOKなので問題なし。
元々はシステムを4つリリースすると管理が大変だという訳で「面倒だからまとめてしまえ」と始めた Dash-8X ですが、色々と要望も野望も出てきそうなので、もう少し(…まだまだの間違いかも^^;)時間が掛かりそうです。
個別のシステムがある程度フィックスした時点で「えいやっ」とひとつにまとめてリリースします。
★
ここからは、使っているアセンブラ「Macro assembler AS」の話。
これまでも、他のアセンブラでできる事ができないとか、マニュアルが不親切で分かりにくいとか、色々と泣かされて来ましたが、またまた大きなバグを発見 OTL
コードの途中に構造体( STRUCT )を配置すると、アセンブルリストを見る限りでは問題なくちゃんとアセンブルされているのですが、出力された HEX ファイルには構造体の領域が確保されていないという…もう顎が外れそうです。
まぁ、データ領域は大抵コード領域の後ろに配置するのが常ですけど、ヘッダーとかに構造体を使わないんでしょうかねぇ…。
アセンブルリストは正常なので、コードジェネレータのバグなのでしょうか…。
使い込めば使い込むほど「ドツボ」に嵌り込んでゆく気がするのは、気のせいなんでしょうか…
気が多すぎるのも問題です [近況報告]
近頃、作業がうまく進まないのは、どうやら手をつけている案件が多すぎるせいらしい…。
構想中と計画中のモノも入れると12もあるのか(苦笑)
いや、最近手をつけてなくて忘れているのまで含めたら、もっとあるだろうな(大笑)
これ以外にもブログのネタ作りとかもしてるし…OTL
最近、ブログに画像を殆どアップしていないので、ちょいとマイブームのネタをうpですw
作成中の N88-BASIC 用ファイラなんですが、PC-8001/8801で使われているフォントを組み込んで「秀丸」エディタで表示しています。
分かりやすいように「色分け」してますが、見た目は BASIC のスクリーンエディタにそっくりです(笑)
行番号は編集の邪魔なんで無くしてあります。
編集が終わったらマクロで行番号を振りなおして M88 で読み込めば、BASIC での開発も少しは楽になりますね。
- PC-6001/6601/8001/8801/9801シリーズの型番リスト
- 上記以外のPCシリーズの型番リスト
- PCSシリーズのソフトウェアリスト
- PC-6001/6601/8001/8801シリーズのBASIC ROM解析
- N/N80/N80SR/N88シリーズのBASIC コマンドリファレンス
- Dash-80 (BASICファイル互換のプログラムローダ[N-BASIC専用])
- Dash-8X (BASICファイル互換のプログラムローダ[多機種対応版])
- Dash-EX (BASICファイル互換のプログラムローダ[PC-8001SR用拡張RAM版])
- PC-DOS/88 (PC-DOSのPC-8801版)
- Maxima-88 (N88-BASIC用ファイラ)
- Jigsaw-88 (N88-BASIC用ディスクエディタ)
- パソコン黎明期のゲームリスト
構想中と計画中のモノも入れると12もあるのか(苦笑)
いや、最近手をつけてなくて忘れているのまで含めたら、もっとあるだろうな(大笑)
これ以外にもブログのネタ作りとかもしてるし…OTL
★
最近、ブログに画像を殆どアップしていないので、ちょいとマイブームのネタをうpですw
作成中の N88-BASIC 用ファイラなんですが、PC-8001/8801で使われているフォントを組み込んで「秀丸」エディタで表示しています。
分かりやすいように「色分け」してますが、見た目は BASIC のスクリーンエディタにそっくりです(笑)
行番号は編集の邪魔なんで無くしてあります。
編集が終わったらマクロで行番号を振りなおして M88 で読み込めば、BASIC での開発も少しは楽になりますね。
久々に中身のある更新!? [近況報告]
〔本館〕サイトにコンテンツを追加しました。
まぁ、1ページしか新しく追加できないのですが…。
NEC の BASIC の中間言語コード表を新たに追加いたしました。
実は、BASIC のコマンドリファレンスを作成中に、なんとなく作り始めたらできてしまったという、まあ何ともいい加減な代物です(笑)
そういう訳で作成中にリファレンスは、まだ 1/20 程度しか完成していないという体たらくでございます(*゚∀゚)アヒャヒャ
それにしても PC-8801mkII FR に付属のリファレンスマニュアルは、どういう事かライトペン割り込み関係のコマンドの記述が全部ごっそりと抜け落ちている。
予約語の一覧には PEN が記載されているというのに、どういうこった。
これだけじゃないような気がするが、どうだったかなぁ。
PEN 割り込みが起きた場合、どうやってライトペンの押された座標を取得するんだっけ?
使ったこと無いから判らん OTL
まぁ、1ページしか新しく追加できないのですが…。
NEC の BASIC の中間言語コード表を新たに追加いたしました。
実は、BASIC のコマンドリファレンスを作成中に、なんとなく作り始めたらできてしまったという、まあ何ともいい加減な代物です(笑)
そういう訳で作成中にリファレンスは、まだ 1/20 程度しか完成していないという体たらくでございます(*゚∀゚)アヒャヒャ
☆
それにしても PC-8801mkII FR に付属のリファレンスマニュアルは、どういう事かライトペン割り込み関係のコマンドの記述が全部ごっそりと抜け落ちている。
予約語の一覧には PEN が記載されているというのに、どういうこった。
ON PEN GOSUB ... PEN ON PEN OFF PEN STOP
これだけじゃないような気がするが、どうだったかなぁ。
PEN 割り込みが起きた場合、どうやってライトペンの押された座標を取得するんだっけ?
使ったこと無いから判らん OTL