スキップしてメイン コンテンツに移動

投稿

2018の投稿を表示しています

一部の関西の人にしか通じないネタ

たぶん「30年モノ」くらいだと思う?  拡大 値札に注目! ちなみに、ATMEGA32へのファーム書込用のアダプタを作るのに使用。

こんな細工をしてみた

この夏、2度ほど冷蔵庫のドアが数時間半開きだったのに気付かずに居たことがあったので、ドア警報のようなものがあればと思っていたところ。100均に「磁気スイッチ式LEDライト」が売られていたのでこれを買って、さっそくNANDゲート2個で簡単な発振回路を組んで繋いでみた。 ボタン電池で2、3日くらいの持ちだが、音が不快な高周波な上に隣の家にまで届きそうな勢いの音量だったから更なる改善の予定。

SP-5030にテキストデータを送る方法

すごい消極的な手段だが、linux上で作成したテキストファイルをSP-5030に読ませる方法を確立した。 要は、行の長さ(2バイト)、行番号(2バイト)があれば 後ろがベタテキストでもリスト表示まではやってくれる。後はSP-5030にリスト表示させて、ひたすらエンターキー叩いて、中間コードに戻してもらう。中間コードへの変換漏れがあっても きちんと実行時にエラーになるのでOK。1行あたりの長さを80文字以下にしないとDATA ERRORになって、最悪SP-5030が暴走する。 具体的に使うのは、マクロ機能とキャラクターマッピング機能のある「zasm」を使って見た目はアセンブラのソースの形で作成する。 obj_top: ;BASICプログラム開始位置宣言 line 50,' dima(9),b(9):v=53248:e=1:f=40' line 60,' a$="c0g0c0g0c0g0c0g0c0g0c0g0c0g0"' line 70,' a$=a$+a$+a$+a$+a$+a$+a$' line 80,' limit24063:gosub11000' obj_end: end ;BASICプログラム終了位置宣言 実際には、この前後にアセンブラのための宣言文やキャラクタマッピングの定義なども含まれるので、 地底最大の作戦をテキスト化した参考ファイル を上げておく。 これを使うのには、 MZフォント と zasm が必要です。

MZ_Trekの64bit linuxでのビルドについて

http://www.bsddiary.net:80/mz_trek/で公開されている(9月5日時点でサーバーが不明と出てくる?)MZ_Trekの動作の要のparserってのが、SP-5030サブセットで普通の端末で動作してくれるので、BASICプログラムの簡易テストに便利かなと思ってビルドしてみたんですが、まったく動かず? 単純なFOR文10回ほどのループデすら無限ループになる始末。YACCのどこかに問題があるのかとつらつら眺めても門外漢でさっぱり。XPでは問題ないらしいと聞いて、MakeFileのCFLAGSに-m32オプションを付けて、32bitオブジェクトを吐くようにしたら動いた。64ビット化は誰かにお任せ。
前回の、lixX11のキー対策をfMSX52に対応させた パッチ を載せておく。 一般的なお約束事ですが、このパッチが元で動かなくなっても文句は言わない。

libX11のキー入力検出時の「¥」と「バックスラッシュ」の判別について

MSXエミュのfMSX2をビルドして自分の環境に摺り合わせてる時に、キー入力の諸々で引っかかって、日本語キーボードでのキー表記と実際の入力される文字との差異が若干あったのを修正している時に、¥記号とバックスラッシュ記号がキー入力で判別されないためどちらか利用頻度の少ないキーを間接入力か何がしかの手でやるようにして諦めろ的な記述が見られたのだが、確かに「xev」とかで見ると「¥」も「バックスラッシュ」も同じ「0x5c」を返してくる。でもGNOMEなりMATEなりのデスクトップ環境ではきちんと「¥」キーは「¥」を表示するし、「\」も同様に「\」が出る。と言うことは、何らかの識別の手段があるはずと思い試しにやってみた。 まず、簡単なキー入力表示プログラムを組んでみる。と言っても「http://www43.atpages.jp/opicon69/xlib/key02.html」 のサンプルプログラムを参照してチョコチョコっと改変してるだ けですがね。 以下参照分ーーーーーーーーーーーーーーーーーーーーーーーー #include <x11 lib.h> #include <X11/Xutil.h> #include <X11/keysym.h> #include <X11/XKBlib.h> //XKeycodeToKeysymの代わりにXkbKeycodeToKeysymを使うため #include <stdio.h> #include <stdlib.h> #include <string.h> int main(){         Display *display;         Window window;         XEvent event;         GC gc;         char str[256] = {0};         KeySym keysym;         int quit_flag = 0; /* Xサーバに接続 */         display = XOpenDisplay(NULL); /* ウィンドウを生成 */         window = XCreateSimpleWin