[FM]FULLMSX for BLOG

詳しいMSXパソコンなどの情報はホームページで!
https://fullmsx.web.fc2.com/

MSXの割り込みプログラム 冬号はどうなる?

2024-09-30 20:46:50 | 1chipMSX

MSXのほうは次世代MSXBASICというと新しい命令もあるのですが、
今まで未知とされていた部分を切り開くことがかなりあるように思います。
MSX-DOSのイースターエッグをはじめとして、
まだ知られていない、使ったことがない部分は多くあります。

その中で割り込みプログラムを考えてみたいです。
割り込みとは1つのプログラ厶に2、3のプログラムを割り込みをさせることをします。
身近な例としてプログラムが動かなくなってタスクマネージャーを開いたりできます。
またゲーム中のタスクからプログラムを終了させたりできます。

割り込みプログラムは誤動作の原因になり敬遠されがちですが、
割り込みがうまく制御できれば便利な命令ですね。
試しに時刻表示と文字入力の簡単な割り込みをしてみると成功しました。
ON命令を再度宣言すれば割り込みが有効になるので
1から2、2から1とスイッチのように切り替えができます。

応用すれば接続アプリとメインアプリを切り替えることができるようになります。
Device I/O errorでBASICで中断する必要もなくなりますね。

このエラーはデーターレコーダーのロードを中止する時に出るものですが、
実はMSXturboRではカセットインターフェイスが廃止されました。そこで、
デバイスというPC用語があるので格好良く英語のエラーメッセージに変えてみるのもいいかなと
エラーコードで指定したプログラムをしてみたいと思います。
2024/12/30の冬号で公開予定です。では

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ディスクマネージャー DISKBASICで階層ディレクトリ ビデオカメラのMSX

2023-01-06 22:25:55 | 1chipMSX

今回はBlueMSXから1chipMSXにファイルをコピーしてみます。
DSKファイルはディスクマネージャーを使ってMSXファイルにします。

Shiftキーを押しながらファイルを選び解凍(extract)で保存フォルダを選択します。
ここではE:ドライブにje2023フォルダを作りました。
62ファイル全て選択したので保存ボタンを62回押します。

MSX-DOS2がなくても階層ディレクトリを開くことができるので覚えておいてください。
エクスプローラーでWindowsのUSBドライブを見るとこんな感じです。

ファイル名は8文字以内で書きます。
次に1chipMSXで起動してみます。

filesを入力すると拡張子がないファイルがディレトリです。
コール カレントディレクトリ
call chdir("je2023")
このようにすることでWindowsで解凍したディレクリ、ファイルを開くことができます。
画面がワイドなので表示を変えます。
screen0:width 80

MSXパソコンでは横方向が圧縮された感じになりますがHD(16:9)なのでちょうどいいです。

いつも忘れがちですが、そうなんです。
filesで表示します。不要なファイルが沢山ありますがこんな感じです。

追加する機能はCAPSとかなランプの表示を加えます。
あとはテプラでキーボードの前面に50音配列を刻印できないか考えています。
50音配列は初代のワープロやMSXにありました。その後にかな配列やローマ字配列になりましたね。

残念ながら1chipMSXを起動することはできますが安定しませんでした。
このような場合は1chipMSXで書いたプログラムをBlueMSXのBドライブにディレクトリ挿入します。
Aドライブはfullmsx2023.dsk Bドライブはje2023フォルダになります。
BlueMSXを起動してBドライブのファイルをロードします。

このようにB:をファイルの前に付けます。

CAPSとかなの表示を加えました。「かな」を消してランプにするかどうするかです。
1chipMSXが使えなくなったのでWebMSXに変えることを考えていますが、
Web版は使用するPCに依存するのであまり良くはない。

では。

★おまけ

ここではAというファイルを保存していますが
MSXBASICは拡張子はわかりやすいように分類しているだけでAというBASICファイルでもOKです。
LOAD"A"もできます。

テキストファイルの場合は次のエラーがでます。
LOAD"A"
ダイレクト ステートメント イン ファイル
Direct statement in file
Ok
このエラーの場合はMSXBASICファイルではありません。
もしプログラムが含まれていた場合はlistするとエラー直前まで表示できて
原因を特定することができる場合もあります。

MSX2のSCREEN7は高品位テレビ用に開発されたモードで
PCモニタ用というより家庭のテレビで表示できるほうがMSXパソコンは優先だろうと思います。
要するにビデオカメラのモニタになるようなビデオ関係の命令ができたと思います。
SET VIDEOなどです。音声と映像端子をVHSビデオにつなげば録画ができます。
録画されたビデオにMSXでタイトルを入れたりコメントを入れることもできます。
要するにWindowsで動画編集するようなことがMSX2パソコンで可能だったのです。

スーパーインポーズはMSXパソコンにAV入力ポートが必要です。
廉価版のMSX2パソコンばかりでMSX2パソコンに内蔵された諸機能が省かれてしまったのです。
FDD、FM音源、デジタイズ、通信、漢字ROM、アラームなどです。

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

VGA to HDMI アダプタ これでWiiと1chipMSXも動く 不具合を発見

2022-12-14 22:32:45 | 1chipMSX

今回はVGA to HDMIアダプタを購入してみました。
使い捨てをしないでできれば最後まで使いたいということで
買ってみました。まだまだ遊べます。

変換アダプタを購入する時の注意点としてはHDMI→VGAとVGA→HDMIの2つがあります。
前者の場合はHDMIからVGAのプロジェクターなどに接続する目的です。
2,000円程度で安いです。

後者の場合はVGA(dsub9ピン)からHDMIの接続です。
4,000円程度で高いです。
ネットで検索すると前者がヒットされます、

というわけで高いけどWii-Fitやりたいので買いました。
久しぶりにWiiを起動しました。問題なくできました。

接続ケーブルの劣化で映像が暗かったりノイズが発生したので交換しました。
買ってから10年以上経っているので交換して問題なく動作しています。

アップスキャンコンバータ(プリンストンのデジ像)につないでDVD&ビデオデッキに接続して
DVDも見ることができました。

久しぶりに1chipMSXも今までのとおりに動かしてみましたが画像が出ませんでした。
そこで出力が弱い可能性があるので直結をしてみましたが、
残念ながらDISKBASICまで起動はできたのですが安定しませんでした。

症状としては垂直同期あたりが正常ではなく
斜めに線のようなノイズが出ていたりして数分経つと白黒の画面になって
カラーになりMSXBASICまで出て数秒すると元の症状に戻ったり
MSXturboRの最期の症状と変わりませんでした。
やはり2年間程度、起動していないのが原因だろうと思っています。

DVDデッキはWiiのドラクエ10で遊んでいたので復活できたと思います。
だた気になるのは
この機器のUSB給電・オーディオからVGA出力を通り1chipMSXに逆流してしまう現象になって

アップスキャンコンバータではアナログ出力がスルーなので問題ありませんが

1chipMSXの電気の流れが変わり部分的に過電流で一時復帰して
電源が切れなくなってお釈迦になっていませんでした。
一時的に電池を+ー逆に入れたりしたような過電流なら壊れることは少ないです。

その後はダメもとでUSB給電なしで1chipMSXは復活しました。。

「よかった。ちょっとヒヤリとしましたね、」
「分解した時に間違えてこんなことあってすぐに電源を切ったりするので」
「壊れることはないだろうと思いましたが、数年放置していたのでもしかすると壊れたかも」
「でも1chipMSXはまだ健在です。」

ということは1chipMSXを起動するとVGAにスルーで電流が流れるということです。
1chipMSXはDISKBASICからSDカードの読み書きができたので正常動作しました。

不具合なのかよくわかりませんが、
この機器はVGAかUSBかどちらかで給電可能になっているようです。
まず、VGAのみを繋げてみて映像が出ないようならUSBからの給電がよいと思います。
USB2.0で電流値が低い場合はセルフパワーのUSBハブが必要な場合がありましたが、
USB3.0や電流値が高いなら直結すればバスパワーで対応できるので今のマシンならOKです。





こういう逆流する欠陥商品が出回っていることが恐ろしいです。
また他社製品からの逆流対策もメーカーが考えなけばいけないというのも残念です。
変換アダプタはもちろん改造、改変にあたるのでメーカー保証対象外になります。
昔の製品はAIWAがダメとかあったのですが品質保証について厳しい基準です。
日本の製品ではありえないことです。

Wiiとかビデオのメニューを見ると16:9ならグラフィックが劣っているイメージがないので
それよりも新しいマシンという感じが強くて次世代機に合うかなと思いました。
新フォントが欲しいです。

数時間起動するとWii本体に熱で膨張してディスク読み取りエラーになりました。
いったん電源コネクタを外して本体を8時間程度冷やすことで回復しました。
このWiiはスタンバイモードって意外と発熱するんですね。
ファンの清掃をしてみます。

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

MSX2日本語入力システムを作る 新しく辞書を作ります

2022-12-05 15:49:38 | 1chipMSX

12月になりました。ご無沙汰しております。
1chipMSXでは日本語入力の利便性の向上のためプログラミングをはじめました。
ミナカンで公開したのですが変換速度が遅いために鑑賞プログラムで終わりました。
2023年は実用に向けて日本語入力システムの以前に作ったものをゼロベースでやっています。
これによりMSX2+より前のMSX2で漢字コードの文書を表示することができます。

MSX2パソコンで動作する設計でSCREEN7、漢字ROMを使っています。
PUT SPRITEに次いでPUT KANJI命令ですが当時の本を見るとマジック的なイメージがあるような気がします。
当時はロール紙に印刷する電子計算機がメインでPCは知らない方が大半でオフィスオートメーションしている限られた会社だけでした。
Windows95以前は電卓持って帳簿に手書きで罫線とか定規で引いて数字を書いている会社が多かったです。
というわけで8ビットでもできる!オマケ機能なので処理能力を上げるために半角には変換できないようにします。

セットアップの処理の流れは入力した文字を大文字にするようにコードをキャラクタコード順に並べます。
MSX2+で小文字を大文字に変えます。濁点などは2文字を判別してト→ドに変えます。
ここで128コード以降のひらがな、カタカナは変換できないので
漢字BASICのコードを入力します。これでコンソールの準備はできました。

カーソルは16*16スプライトです。最前面にグラフィックが表示されます。
移動処理でカーソルを消すことなく作れます。処理速度も上がります。
間違えた操作は最初からやり直すなど不親切さはありますが、
プログラム量の軽減のためです。起動します。
第一段階としてあかさたな順に辞書ファイルの区分を大雑把に分けて様子を見ていきます。

最新版ではローマ字変換モードに変える手間がかかるので最新版では
プログラムにPOKE&HFCFC,69を加えて英数の状態からローマ字変換に変わります。
このローマ字変換はMSX2から使うことができます。

単漢字変換をやっています。
例えば2223、2224、2225…のように漢字コードを+1にしていくと、
音訓になっていないのでかなり変換に苦労します。
そこで漢和辞典の音訓索引からの独自の辞書を採用しています。
特長としては「呼ぶ」を「呼」というふうに「よ」候補になります。
漢字の読みを略した場合に対応できます。
また「呼」は「呼称」の「こ」候補にもあります。※
こんなふうに単漢字変換候補を出すことができます。

保存形式は10桁ごとに漢字を並べています。
1行10文字の漢字候補に変えてテンキーからの入力も対応します。
この辞書は400行程度の大きなデータです。
これを毎回、1行1行ロードすると数十秒かかってしまいます。
また高速で表示されるのでBASICのメモリを消費します。
使わなくなったデータの解放のため最適化で30秒程度止まる場合もあります。
調べてみないとわかりませんが問題を解消する場合はRUNコマンドで再起動がよいかもしれません。
頻繁に発生するようなら考えてみたいと思います。

※手作りのため常用漢字で候補にないものはアップデートする場合があります。

デバッグの流れですが例えば「つ」の場合を見てみます。


8ビットの技としてキャラクターコードごとに辞書を作ります。
ロードをカウントすることで行数を把握できます。
数値が高いほうが時間がかかるということです。
MSXturboR相当でも124はかなり時間がかかっています。
そこでファイル名で辞書を作って一発で変換できるようにします。

フロッピーディスクドライブはファイル数が少ないほど高速に動作しますが、
50音なら50個作ると意外と時間がかかります。
頻度の高い候補のみをファイルにすることで快適に動作します。



DICメンテナンスプログラムで辞書を作ります。
基本の辞書ファイルをカットして設定します。

まず2を選択してロードします。
3は例えば「あ」の変換に対応する辞書のファイル名を表示しています。
4の設定は煩雑な処理になるので自動化して誰でも設定できるようにします。

自動ファイルができました。5でセーブして変更完了です。
システムを起動すれば「つ」が一発で候補になります。

日本語入力を即席で作ったもので漢字対応にできるような設計です。

背景デザインはデバッグ中にはこの画面にします。
正式バージョンでは背景を変えます。

最初から候補が出る直前の行はカットして別名保存するプログラムができれば
ショートカットした辞書ができます。第一段階はこんなところです。

今後の展望としては辞書システムの改良がメインになる予定です。

MSXパソコンはロードが遅いのでファイルを種類ごとに分割して処理時間を軽減します。
第二段階は熟語の属性コードの設定が可能になります。単漢字変換から単語変換への流れです。
また入力中に変換候補が出るようなAI変換ができればと思います。

年号が令和に変わる時期に予定していましたが問題がクリアできず不採用に終わりました。
単漢字は1文字でしたが新しく属性コードを設定することで同音異義語を使うことができます。
「処理上の問題」「処理場の問題」などの変換対応です。

最終段階では既存辞書との互換性と利便性の向上です。
MSX2+以降ではユーザー辞書を登録できますがSRAMを使うので登録できる語句が少ないです。
当時は「建設省」でしたが「国土交通省」など時代とともに日本語も変わっていきます。
時代に対応できる辞書を作るために辞書管理もできる大きな辞書データが必要です。
駅名データ、市町村合併後の地名データなどもあります。
そこでテキストで今までの方法で簡易的な辞書から読み込めるようにしてみたいと思います。

余談ですが最近はデスクワークをやっているのですが1年程度やっていると億劫なところがなくなり、
打ち込んだり書いたりしてルーティン作業すると思考能力が上がる感じがします。
何か頭にイメージしたものや話したことなど筆記する習慣ができますね。

日本語変換で数十年も経ちますが;誤字脱字が社会的に多い気がします。
1行を変換なしで入力すれば一発で変換できる世の中になっていると思いますね。
なんか思わず変換キーを押してしまうんですね。
ちょっとWindows10でやってみると

>うめたてちがすくなくしょりじょうのもんだい
埋立地が少なく処理上の問題
>うめたてちがすくなくしょりじょうをどうするか
埋立地が少なく処理場をどうするか

という結果です。変換数を1回にすることで校正機能がはたらき精度の高い変換ができるようです。
広告とかメディアに印刷などするともう修正はききませんから;
間違えを少なくするには文書化して使う語句だけを抜き取れば校正できると思います。

>きかいがありこうかんかいにさんかすることにしました
機会があり交換会に参加することにしました
>きかいがありこうかんをいらいしました
機会があり交換を依頼しました。
正:代わりとなる機械があり交換を依頼しました。

>おだわらにいくきかいがありこしょうしたきかいのてんけんをしました
小田原に行く機会があり故障した機械の点検をしました

まだ日本語は難しいですね;でも面白いです。

MSXはファイル形式をバイナリデータで漢字コードを出力することを予定しています。
データフォーマットなどは自分で作ってください。後日書く予定です。
これをMSX2または1chipMSXに対応していきます。では。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

FULLMSX2020+1パック スプライトを作って移動させる 不具合など 

2022-07-19 18:06:51 | 1chipMSX

今回は最新のスプライト作成プログラムを使ってみます。
今までは多色スプライトまで挑戦しましたがテクニカルなので
単色でスプライトを作って動かすことを目的に作ってみました。

メニューからスプライトイドウプログラムを選びます。

キャラクターエディットのメッシュにカーソルが表示されます。
スプライトはカーソルで移動させてスペースキーで点を打ちます。
BSキーで点を消します。

1のスプライトを押すと音が出てスプライトを作り、
2は作成したスプライトを移動します。
そのほかLOAD,SAVEもできるのでいろいろと楽しんでみてください。


Wを押すと自動でビットマップをロードして
2つのスプライトを作成してキーを押すと足踏みするようになります。
ちょっとしたデモです。BASICでマクロっぽいことをしていましたが、

例えば「何か選択するためのセレクター」を作りたい場合は

こんなふうに作って動かすことができます。
またスプライト互換データが保存されているので
selector.spdにリネームしてスプライトデータを別名保存します。



スプライトパターン15番に登録するとこんな流れになります。
OPEN"SELECTOR.SPD"FORINPUTAS#1:LINEINPUT#1,SP$:CLOSE#1
SPRITE$(15)=SP$
としたかったのですが00h、chr$(0)が保存されない問題が起きてしまいました。(え!)

実は上のようにスプライトのデータにゼロがあると
スプライトデータに不具合が生じることがわかりました。


SCREEN5のスプライトジェネレータテーブルは7800hで
16ドットスプライトの場合は左キャラ16,右キャラ16の合計が32(20h)になり
00~1fhまでがパターンデータになっています。

テストは終わりアップデート版ではカラーとパターン機能を加えました。

アイテムを選ぶような操作でパターン番号(0~14)を決めます。
スプライトの制約があるので全パターンの表示はできませんが、
選択した部分のパターンをこのように表示して空き番号をさがします。
ボタンを押すと切り替わりEnterキーでパターン番号を確定します。
最大15パターンを作ることができます。

おまけとしてスプライトをSCREEN1でも使えるプログラムもあります。
使ってみてください。では。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

1chipMSXオリジナルロゴを16ドットスプライトで作る

2022-06-15 20:54:14 | 1chipMSX

1chipMSXの発売を記念して作ったプログラムをチェックしていました。
残念なことにプログラムがMSXturboR用ということがわかりました。
そこで今回はMSXでも実行できるプログラムで
1chipMSX以外でも雰囲気を味わえたらと思います。

セーブをしなくても30分で打ち終わる程度のものです。

16ドットスプライトはSCREENの第2パラメータを2にします。
120行と130行は円がストップする座標値です。
160行は"&B00000111”こういう文字列にしたものをVALで整数化してさらに
CHR$でキャラクターコードを出力して16回加えていきます。

190行は左のL$と右のR$を加えて最後に混合させます。
そして、230行からのバイナリデータを左と右に分けてキャラクタデータを作ります。

左右から現れて中央で止まるようにもなります。
プログラムはこっちがいいかなとマイナス数値を加算して
スクリーンセーバーのように流しています。最後はオーバーフローで止まります;
当時はスプライトの動画とかアニメーションとか呼んでいましたね。

スプライトはテキストモードでも使えます。
試しに作ってみてラクに手直しがしやすいのが特徴です。
7の水色と5の青が表示されます。


250行はスペースを10個指定して文字を消しています。

あとは部分的に書き直してRENUMをしてみました。
例えば240行と250行の間に245行とか243,245,248行と入力して
RENUM100を実行すると行番号が整理されます。そのほか、
RENUM 1000,300とすれば300から1000になります。便利です。
RENUM 100,,50とすると100,150,200になります。あまり実用的ではありませんが;
こんなふうにできるので続きを書いたりできると思います。さておき、

スプライト表示をサブルーチンに変えてみました。
何かボタンを押すと円が中央に止まります。
TIMEの20を下げると円の速度が速くなります。

スプライト消すにはSCREEN1を入力してください。では。

せっかくなので水色と紺のグラデーションをMSX2で中間色にできるようにしたいです。
次回に続きます。

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

MSXで3D 100×100の3D基礎データを作成 試してみる

2022-06-12 17:11:37 | 1chipMSX

前回に引き続いてMSXで等角図を作成していきます。
3Dはやらないことにしていましたが、ある日に図書館で3Dのイメージが浮かび上がり魅力を感じました。
それで簡単そうな等角図にしてみました。以前は等角図のようで45度でした。
ドットの斜めを利用して立体を作ったものでしたが今回は30度になり少しカメラアングルを下げた感じですね。
とりあえずは区切りがいいところまで進めていきます。

今回はP点を操作して面を作ります。
合計6点のデータを保存しますが3D座標用に20点まで拡張します。

DIM PX(20),PY(20)

PXとPYの配列変数を宣言しました。
さらに各点を計算して数値を配列変数に入れるようになっています。

画面では入っているかを実際に確認しています。
これは100に引き伸ばしたデータですから100分の1にします。
P7も手動で0,127と入れておきます。
座標は絶対値か?相対値か?ちょっとわかりませんが
3Dデータの入力がしやすいように変えていきます。

たしか88BASICで雑誌に載っていた等高線データを作った記憶がありますが、
まぁいいでしょう。BASICでワイヤフレーム程度の3Dは珍しいものではないですね。
3Dのモデリングができなかったのですからね。

かなりシンプルになりました。
真ん中からぐるっと描画しながらXYZの軸を色分けしています。



こんな感じでマニピュレータっぽくなりましたね。
各軸方向はプラスに増加して原点は(127,200)にして考えてみることにします。
次はXYZを100以内で入力をして立体を変えてみます。
増加比をN/100にしてプログラミングしていきます。

指定した大きさの図形ができました。
新ハードが生き延びているのはやはりデザインイメージが良かったのもあると思いますね。
ぶっちゃけ色を塗るだけならMSX2でも似せることはできます。

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

MSX文字を使ってサイコロを作る READ,RESTOREなど

2022-06-02 17:43:19 | 1chipMSX

今回はMSX文字を使ってサイコロを表示します。
MSX1から2に変わるときに作った記憶がありますが忘れています。
GRPHキーを使うことで簡易的なグラフィカルなことができます。
当時のPCやワープロでは罫線を引いて表を作っています。
文字間罫線などもできるようになりました。
今はデータ表に罫線を引いたものはなくなりました。
個別データなら罫線で区切りが必要な場合もあるかもしれません。

さて、こんなふうにDATA文を書きます。実行すると5が表示されます。
FOR文はREADを5回読み込み表示させます。
このプログラムを変えて6まで作ります。
1chipMSXなどPCキーボードの場合は左のAlキーを押しながら入力できます。
I が縦、-が横の罫線でEとTとBとCが四角の頂点の罫線です。
●は]キーです。

とまぁこんなふうにできます。
MSXはテキストの前身の英数のアスキーコードで文字を書きますが、
MSX文字、PCの特殊文字は機種によって違いますが罫線は同じだったと思います。
これを6個作るのは大変ですからオーバーライトで書きます。
160を入力してEnter、170を入力してEnterと通しで行番号を作ります。



どんどん作っていきます。


半分までできました。あと半分作ります。

あと1行で450行までがデータになります。
サイコロの目を修正します。
スペースで消して変更した行はEnterで確定します。
6はマルを加えます。番号を入れておくとよいです。



できました。実行すると1の目になったと思います。
さて、ここで今までのように5を表示させたい場合はRESTORE命令を加えます。
RESTOREはREAD命令で読み込む行番号を指定できます。

こんなふうにできます。
今度は5行の6列でダイスを文字列としてメモリに入れます。


というわけで、こんなふうに完成しました。
実行するとダイスの目を出すことができます。
こんなふうにDATA文を活用することができます。
長くなりましたが、ご視聴ありがとうございました。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

確率変動させる 1/2000の確率を変えレア度を上げる

2022-05-30 17:53:44 | 1chipMSX

お久しぶりです。MSXBASICで確率変動をさせてみたいと思います。
ちょっと宝箱の当たりの確率について考えてみました。

このプログラムではこんなふうな結果になりました。
2000回で1900回目とかハマっていることもありますが、
1300回ぐらいまで回せば1回は宝箱が当たりそうな感じになります。
よくハマると言いますが確率が厳しいのかもしれませんね。

当たりかたを厳しくやってみたいと思います。
5000回の確率で2000回以上は最後になるように設定します。

こんなふうに最後に当たる確率が増えます。
逆に2000以下はレアモンスター出現みたいな設定もいいですね。
Cの値を大きくすればレアの出現率が下がり激レアにできます。
自由に変えることができるので試してみてください。

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

MSXロゴ図形制作プログラム CADの基本機能をプラスしたい

2022-05-10 21:32:44 | 1chipMSX

 移行記念パッケージ(仮)にロゴ制作プログラムを作りました。
使用できるのは直線、三角形、四角形、円で点データと図形データを記録できます。うまく使えば面取り(C、R)もできます。
データ化したので画面に何か書いて消したり自由に使えるようになりそうです。
またグリッドも白から紺色に変えました。
さらに制作中のものは丸文字が描けるように円弧(R)を描けるようにしています。今回のプラスしたかった機能はこんな感じです。

例えば開始点169度の点から円を4等分した点を表示できます。
赤い点が減色されて黒くなってしまいましたが、
頂点をクリックすることで図形を描くことができそうです。
ラジアンの割合を変えることで6等分にして6角形など
多角形を描くことができそうですね。

今度は円弧補間で0.1ピッチのラジアンで50点を表示しました。

実はCIRCLE命令で点表示していて座標指定以外の方法です。
当時のMSXBASICはゲームだけではなく、調べてみるとかなり多用途に応用できたように思います。
ただインタープリタだったから遅かったです。そういうわけでMSXturboR相当にスピードアップ。

こんなふうに任意の角度からRを弧を設定できそうな雰囲気になってきました。

また弦を指定して二等辺三角形など多角形を作ることもできます。

ラジアンからSINとCOSに距離をかけるとZX,ZYの増分値が出て座標が出ます。
せっかくなので、判別のしかたも書いておきます。一番ラクな方法はMSXBASICのバージョン取得です。

?  PEEK(&H2D)をすることでマシンタイプを調べることができます。
PEEKはメモリの内容を表示する命令です。これを利用してマシンごとに判別します。

「EEEE」とならないように待ち時間を調整します。

さて、今回はカーブ機能も追加されました。
ctrlキーを押しながらカーソルを動かすと高速移動できます。

任意の直線の垂線を引き半径を計算して例えば240度を指定するとこんなふうに描くことができるようになりました。
円弧は反時計回りのほか時計回りにも対応しています。

時計回りは-90と入力します。図形データは圧縮のためX,Yは7から255までで0~6まではラジアン数値に使っています。
この領域の座標データがあった場合は弾かれます。

使ってみると斜線は基準線がないのでメッシュを45度にした定規が欲しい感じもします。

実はMSXのロゴはMSX2からで当時は幾何学的な映像のコンピュータグラフィックスが流行していました。
MSX1からMSX2に変わる頃は線画CGで音が流れるプログラムとかあったので、
もしかするとMSXの斜め移動できるのはその名残かもしれません。

当時は週刊少年マガジンの別冊のハレー彗星マガジン(講談社)の本の
表紙がハレー彗星のコアの部分のCGとか本の裏表紙がCASIOのMSXだったりしましたね。

結局、DEFINTの高速案はやめてマシン速度調整で対応にしました。
というわけでは5月中(5/22)のアップデートで第一期は終わりにします。では。

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

MSXBASICで計算問題を作る 回答時間を測る

2022-05-04 09:43:34 | 1chipMSX

 おはようございます。
今回は計算問題を作って、さらに回答時間を計算するプログラムを入れました。

かなりシンプルなプログラムです。

15行はランダムの宣言で他のBASICではRONDOMIZEという命令になると思います。
たしかシステムタイマーを呼び出してBASICでは数値を加算しているのですが、
RND変数を使用する場合は加算しないでそのままの数値を使います。
この宣言がない場合は規則的なランダム数値?になるようです。
MSXBASICの場合はRND(-TIME)になります。

RAとRBは倍率です。どこまでの範囲にするか最大値を決めます。
RNDはラジアンみたいに0から1の数値でこれに倍率をかけています。
最小値は+1でRNDで0の場合は1になります。最後に3.1245の場合はINTで3にします。

これをAとBの値に入れAとBの足し算表示です。
TIME=0でタイマーをゼロにセットINPUTで入力した後、回答を表示しタイマーを表示します。
TIME変数はMSXBASICの場合は1/60秒になっています。0を入力すれば終了です。

15行を削除して同じ問題にしたり50行と80行の+を-や*に変えてみたり
TIMEをTIME/60にして秒表示にすることができます。
TIME変数は0~65535、最大で約18分までです。


コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

MSXBASICで図形を描く ATNを使って角度計測してみる

2022-04-11 22:08:38 | 1chipMSX

こんにちは。今回は前回の続きをやっていきます。
前回ではMSX2以降のマシンでMSXBASICのCIRCLE命令の弧の指定方法でラジアンを試してみました。

今回は座標系でラジアンを求める計算をやってやっとCIRCLE命令と一致しました。
また度数法も90度までしかまだ対応していませんが、座標の±判別で加算処理をすれば359度まで求めることができそうです。

このようにマウスをクリックする(指定点はSX,SY)と扇形ができます。
指定点から原点の2点間の距離を出して半径を求めました。

ATNアークタンジェントはMSXBASICで何に使うのかよくわかりませんでしたが、
X1,Y1座標を割ること(ATN(Y1/X1))で左下の1.2545~というラジアンの数値を出すことができます。

MSXBASICは遅いですが倍精度実数で計算してくれますが大きな数を扱う仕事にはあまり向かないです。
DEFINTA-Zは0000H~FFFFHの65535を割って±32767に0を含んだ小数点を含まない整数で
BASIC内部のmathpackというオブジェクトを使って浮動小数点演算に対応しています。
例えば42を42E+3とか42E-2とか試してみてください。
これが16ビット以上になるとCPUがやってくれるので高速になっています。



90度以上はラジアン値の補正をするテストプログラムです。
10番の10.RADを指定すると原点からの距離と角度を求めます。
1221行はSXがZXよりも小さいマイナスになる場合です。この場合は円周率を加えます。
1222行はSYがZYよりも大きい場合です。この場合は2倍の円周率を加えます。
メッシュと原点のラインはありませんが結果が出ます。


343度を指定することができました。
図形の重心を原点にしたりよくあります。
343度というような角度指定は製図ではあまり使いませんが90度までは使います。
今回はcircleの角度指定にならってみました。思った角度になったでしょうか?

繰り返しになりますがホームページ移行のため、
みなさんに何かMSXパソコンで特典ができないか考えています。
具体的に決まりましたらホームページでお知らせします。では。



 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

MSXBASICで図形を描く 他のBASICとの違い

2022-04-08 17:32:32 | 1chipMSX

お久しぶりです。プログラミングの近道は新たに覚えて慣れることです。
既に他の言語ができる方も多いと思いますが移植とかそんな難しいことは考えないで
これはカンタンにできる、これはできないと割り切ってその言語やモードが最適かを見極めることです。
言語などが多様化していますのでこういうのがいいと思います。
今回は1980年代に戻ってMSXBASICで図形を描くことをしています。
MSX2のSCREEN5を使いました。

 MSXパソコンはキーボード操作がメインになりビッツーなどグラフィックソフト(GUI)を使ったかたならマウスを使っていました。
この両方のデバイスに対応するために数年前からプログラムを調整していました。

 今回は255x211の解像度で10cmであれば100pxというふうに1mm間隔で描けるようにします。
グリッドは10mm間隔です。
最大で横が255mm、縦が211mmでだいたいA4サイズ横方向で(297x210)に収まる感じです。
寸法を設定すると図形が表示できるようなプログラムにしていこうと思います。
MSXパソコンで残念?なことは低解像度ですがスケールで計算すると何かできそうな感じがしてきました。
低解像度は粗いので逆に座標をクリックしやすいことがよいです。

N88-BASICを使ったことがありますが図形と文字入力を簡単に表示させることができます。
MSXBASICは文字出力という定義をして文字を表示させることはできますが入力はできません。
まだ仮の設定なのでSCREEN0でやっていきます。
この設定の場合プログラムを書き加えたり書き直しをしてもグラフィックを描画しなければ画像が残ります。

文字入力はSCREEN0でグラフィックは文字データと重ならないようにSETPAGEで使用しないエリアにしました。
今のところ四角形、円など基本図形を指定された寸法で表示できるようにしていきます。

例えばスマホの寸法を入力するとこんな感じです。



ブラウン管とは違って液晶モニタなので見え方に若干違いがあるのか、
ぜんぜん縦横比が悪い感じではないです。

または倍精度実数で座標データの入力は可能ですが、
将来的に整数型に変えると32767までの数値に限定されますが処理が高速になります。
小数点が使えないのでデータ閲覧や入力時に変換するようにしました。
例えばデータ値の1が0.01になり、50では0.5です。
このプログラムの有効範囲は0~255.00で変換の場合は小数点2位まで入力する必要があります。
こんなふうにグラフィックモードでプログラムを変えることはN88-BASICではできます。

これはわかりやすいように合成したのですが、CIRCLEは100,100が中心点、R=50、15は白色、Sが開始点、Eが終点の反時計回りに指定します。
単位はラジアンでラジアンとかわからなくても実行結果に慣れれば平気です。
半円が3.14です。円が0か3.14*2になります。度数法の場合は360を割った数になりますがラジアンは3等分とか5等分とか自由です。
高校の数学なのでちょっと難しいかな。またMSXBASICでは工夫する必要があります。
実行画面は円弧の表示のみで90行で入力待ちにして画面が変わるのを止めています。

これを応用して1ドット1ドット移動して文字などの「図形の移動とかできそうな気がしますが」どうなんでしょうか?


ガタガタになりますがこんなふうにできます。(スゴイ)
X軸だけならこうなりますがY軸の場合は角度が変わってくるので半径と角度を算出する必要がありそうでます。

8ドットのMならば8*8px=64の座標の回転角を出す感じです。
このようにディスク面に付箋紙をはってぐるっと回したようになります。
一見簡単そうに見えますがCADで出力すると矩形範囲がテクニカルな部分ということがわかります。

もう少し試してみたいと思います。

最後にグラフィックプログラムで私の最高作品と言えば

1994年に箱根寄木細工の七宝矢羽根のシミュレーションを作りました。
当時は神奈川県に住んでいて厚木から小田原まで通っていました。
まだWindows95が発売される前でパソコン通信が流行していた時代です。

電話代の計算とか雷が光って雷鳴する時間差で推定距離を出したり仕事のほうでは
高校の数学を駆使して木工作業でどんな感じになるのかをシミュレーションしてみました。
七宝の弧の出し方は円をカットしてそれを裏ページでコピーしているのですが、
たしか弧の開始点と終了点の計算をにニ点間の距離で計算していると思います。

このプログラムはMSX2+の漢字BASICとSCREEN8を使っています。
また1chipMSX改ならここまで使うことができます。
漢字BASICではシフトJISコードを使って漢字表示しています。
通常のBASICで漢字の部分は記号や半角ひらがななどのMSX文字に化けています。

僅かな数値の違いで雰囲気が大きく変わることがわかりました。
でもまだ満足していない弧のプログラムを改良したかった(カッターフカスギル)のが心残りですね。
90度の弧ではなく45度くらいの弧とかにできたら良かったです。
その後、サヤ形とか麻の葉とか作ったのですがやっぱりこれがいいです。
さくらじゃなくて七宝の円弧の柔らかい感じがあるとなんとなくいいです。
矢羽根だけも試したのですがやっぱりカクカクカタイ感じですね。
面白そうなものがあればまた載せてみたいと思います。では。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

字下げできるMSXBASIC コメント入力 マシン語の名残

2021-02-12 04:54:46 | 1chipMSX

最近はPythonのプログラミングをやっていて「MSXBASICでもできるかも」と
今回はMSXBASICでも可能なワザを特集してみたいと思います。
このプログラムではスプライトを表示させるテストをしました。

 MSXBASICリストは不要なスペースをなくしてメモリを節約できますが、
このようにスペースで字下げすることもできます。
さらに漢字BASICでは日本語入力もできます。
メモ帳でテキスト入力したコメントの文字は化けますが実行可能です。
またREMの代わりにダッシュでコメントを書くこともできます。

 これはマシン語のコメントの名残がMSXBASICに残っているのでしょうか、
設定した情報のコメントを書いたりできるようになっていますね。
MSXBASICがテキストエディタ以前のラインエディタみたいになっていて
カスタマイズという用語ができる前の話です。
 MSXBASICではアスキーファイルをMERGEで複数のファイルからロードできます。

 今のようなスタイルのプログラミングでシストJISで保存したものなら
MSXBASICでは実行可能です。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

タイピング練習プログラム ESCシーケンス MSXのロールダウン MSXファイル版

2020-12-07 18:33:32 | 1chipMSX

 お久しぶりです。前回の記事からOPEN命令を調べてみました。
OPEN"GRP:”AS#1はグラフィック画面に文字出力させる命令です。
これをOPEN"CRT:"AS#1とすればテキスト画面に文字出力できます。
例えばグラフィック画面出力用のPRINT#1の文字列をテキスト画面でも読むことが可能ですね。
考えられるのはデバッグ用にテキストを使う方法かなと思います。
いろいろと調べてみたいです。
 さて、今回のダウンロードではタイピング練習プログラムのサンプルを載せたいと思います。

実行するとロールアップして現れます。
時間がないのでアスキーアート;です。文字を入力すれば敵が落ちます。
エスケープシーケンスを使用してロールダウンをします。

ロールダウンしたい行にLOCATEで指定してPRINT CHR$(27)+"L";を付けます。
これを何度も使うと下へ文字が下がっていきます。

プログラムは1画面程度のもので誰でも改造することができます。

例えばページ2に文字を表示させて論理演算でTPSET(背景色は0)に
すれば重ねることができます。COPY命令で論理演算を指定すると
文字を重ねることでいろいろな効果を出すこともできます。
他のマシンではテキストで文字の色を変えたり図形を合成させたりはできます。
でもMSX2のように文字を合成するプログラムは見たことがないです。
アスキーアートを自由自在にハイライトにしたりMSX2ではなんでもアリですね。
color=(5,0,0,0)と指定すれば
青が黒になることで点滅させたり色を変えたりとイルミネーションのようなことができます。



MSX1のプログラミングは買って間もなかったので
文字のオンパレードや数当てゲームやサイコロなど初心者向けのものを買いました。
それよりも、「コンピュータに触れる!」それだけでもスゴかったですね。
熟練者にはBASICマガジンとかあったのですがそれは無理なことでしたね。
MSXBASICはROMになっているのでアスキーアートに触れることが唯一可能なマシンです。
このアスキーアートを体験すればパソコンはグラフィックだけではないと
アイデアさえあればなんでもできると思います。
アスキーアートは貧弱なイメージですがフォントを使うので
かなりデータを軽量にできます。

フォントでできないならグラフィックを使うほうがMSXらしいですね。

「ディスクドライブがあればビットマップを使うとこんなに美しいグラフィックになるんですよ!」
まんまとHDD商法にやられた感じで実は質を下げてもパソコンは何でもできるんです。
もしかしてデータレコーダもそうなのかなぁ。。。ザナドゥのテープセーブ長いしw

質を下げればと言えばここだけの話、RPGって作業的なこと多くありませんか?
あんなに同じようなことを長時間やるより
5分くらいのゲームでサクッとアイテムゲットできるほうが面白くないですか?
そういう方はレトロゲームを遊ぶと価値観が変わるかもとさておき、

MSXファイル版は待たせたのでいろいろなものが追加されています。

 KIRAKIRA.BASは空中戦の思考プログラムで星が横にスクロールします。
これは256,0-512,212の仮想座標に星をランダムに配置してXの数値を下げることで
右から星が出てくるようにしています。
さらにスクロールすると左に消えても右から星が出てきます。

 STAR_BX.BASはスターブロックの試作ステージ版です。
今のところクリア条件は設定していないのでステージを選択できるようにしています。
と言っても取ってはいけない星の色を決めてステージにしているだけで
 白の星?と赤の星、白と黄色と赤の星など難度が上がり条件が厳しくなりますね。

 TYPPING.BASはタイピング練習ができるプログラムです。
これは10文字のワードを正しく入力すればクリアです。
いろいろと改良してみてください。まだアップデートは考えていません。
ネタとしては良いですが、
MSXから生まれるものはもうない時代だろうと考えています。

MSXファイルデータのダウンロード:
http://wood-art.main.jp/www-hp/fullmsx/2020anniv.html

 

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする