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

投稿

検索エンジン duckduckgo

なんでもかんでも、個人情報を抜きまくるgoogleじゃなく、普段遣いはduckduckgoを使っているんだが、検索結果に怪しいのがゴロゴロ出るのを排除したいときgoogleだとサードパーティのblockerプラグインがいくらでも出てくるんだが、duckduckgoではほとんど出てこない。 そもそも、duckduckgo自体が標準でブロック機能を持っているからなんだが、これが登録できるドメインが5つまでで救いようがない。Bang機能というのだが、ブラウザのプラグインもだいたいは、このBang機能にブロック登録するだけのお粗末なものばかり。 duckduckgoのヘルプにBangの数を増やせないのかと探してみたら、Bangとは別で一時的に特定ドメインを検索対象から除外するオプションが有ることを発見した。 「-site:」のあとに除外したいドメイン名を入れて 普通に検索ワードを入れて検索。複数ドメインを除外したい場合はカンマで区切って列挙できる。逆に特定ドメインだけを検索対象にする場合は頭のマイナスを外すと特定ドメイン内だけを検索するようになる。  「そば -site;tabelog.com,rakuten.co.jp」とか検索窓に入れるだけ。 
最近の投稿

6809 エミュレータ アレコレ

6809のプログラムの動作確認環境について linux PC上でクロスアセンブルしたものを SBC6809やFM7などの6809マシンに持って行って動作させるのが単純な話なんだが、 パラメータを一つ変えては、SDカードやEEPROMに書き込んで、動作させてみてを繰り返すのは あまりにも非効率すぎる、プロならICEとかを使うのが王道だが趣味の道楽でそんな道具揃えてなど居られない。 そこで、PC上でエミュレータで動作させて、おおかた完成させてから実機に持ち込むやり方になる。 6809のエミュレータ環境を探すといろいろ有るが、懐かしのFMシリーズなどのPCエミュや 海外だとTRSなどの6809PCのものが結構出てくる。ただ そこまで多機能なモノは必要ではないのだ ACIAでのデータのやり取りをシミュレートしてくれるだけのボードマイコンを再現してくれるので十分なのだ web検索で探すと、6809tools,6809usim,6809 という3つが候補に上がる 6809toolsは、アセンブラのA09と実行環境のV09の組み合わせなんだが、 ROMエリアとACIAポートアドレスが固定で、ソースを変更しても動作させることが出来ない。 6809usimも同様にACIAポートが変更できない、動作させるためのROMを同梱のmakeROMで作るしか出来ないとか 今どきのlinux環境で素直にビルドできないとか問題山盛りすぎて話にならない。 最後の6809(正式名は6809 Assembler, Simulator, Debugger (in rust))で https://github.com/gorsat/6809 で公開されてる。 概要としては、ACIAポートを起動時のコマンドラインオプションで指定でき、 エミュレータ本体に簡易マクロアセンブラとデバッガが内蔵されており、 ブレークポイントだけじゃなく、ステップトレースまでこなし、 端末画面2つ必要なのを除けば、使い勝手は申し分ない。 他のアセンブラで作った、HEX、モトローラSレコード、BINも実行できるのも有り難い。 github経由でしか、作者にメッセージが送れないので残念。

ターミナル表示の録画、動画化について

端末上のテキスト表示を記録するには asciinemaを使うが、 これだけでは〇〇.castというあまり一般的ではないファイルができるだけで、 これを公開してもごく一部にしか通じない。 まず、 $ asciinema rec othello.cast などと、asciinemaを記録モードで起動 例としてcpmで動作するGAME80コンパイラGC80で作った オセロプログラム起動、終了、録画停止 $ asciinema play othello.cast   で記録の再生、確認 これを一般的なmp4動画にしたいと悩む。 おなじみのduck.aiにお伺いをたてるとasciinema-animとか言うのが有るらしい と言われるが見当たらない、普通にweb検索をかけても出ないところを見ると お約束の嘘解答に騙されてしまったようだ。 そこで、改めて探し出したのが sh2mp4 だ。 コレ単体で端末の表示の記録録画ができるらしいが 今回欲しいのは〇〇.castをmp4動画に変換する機能。 $ sh2mp4 --cast-file othello.cast othello.mp4 とかやって、できたmp4動画を見たら「*」記号が「.」と代わらんぐらい小さくて納得いかず。 オプションにフォントの種類とサイズが代えあられるらしいので試した結果 $ sh2mp4 --cast-file othello --font "Source Code Pro" --font-size 14 othello.mp4 で、できた動画がこんな感じ   が、ローカルで見ると内容が判るんだが、ブログに上げてみると上の動画はただの黒い画面に小さな点がチマチマしてるようにしか見えない。全く使えない。 別のやり方を探す、単純に画面を動画としてキャプチャするsimplescreenrecorderというの試す。   

GAME09

6809用のGAME インタプリタとコンパイラを作成した方の記事を見つけた。 https://flexonsbd.blogspot.com/2024/03/6800game6809.html  有り難いことにソースを公開して頂いているので、早速入手してSBC6809上で動くように修正を試みる。今現在の自分のところのSBC6809にはBASICとモニタが載っており これらがダイレクトページの0番の取り合いをした結果、BASICが0ページを取り、余裕を見てモニタが3,4ページを使い。GAME09には6,7ページ辺りを割り当てることになる。 コレに伴い、0ページへのダイレクトインデックスでの読み書きをしている命令への修正が必要になる。 GAME09の元になるのは6800系用のGAME3がベースだったらしく。 6800にはDPレジスタはなく、ダイレクトインデクスで扱うのは0000番地からの256バイト分が前提になる。 インタプリタの修正で見つけた変更点は  その1 スタックの扱いについて 6800版 0049    0115    8E 00FF        MAIN      LDS       #STACK1    0196    0204    BE 0116        EDEND     LDS       MAIN+1 0645    04BF    BE 0116        ELSE      LDS       MAIN+1 6809版 0047    011B    10CE    00FF    MAIN      LDS    ...

screen コマンドでの コピーペースト転送の実現について

 以前、GAME言語のあれこれについての中で、GAME80ICなどでZ80-MBC2とのscreenコマンドでのシリアル接続中にソーステキストのコピーペースト転送ができない事に触れていたが、単に使ってる環境に依存した所謂「おまかん」なのだが、回避したければ、素直にwindowsで使うか 若しくは linuxでもwine上でteratermを使えば済む話ではある。だが、我が家に於いては普段使いにできるwindows機など無い。棚の奥を探せばwin7の入った古PCが有るとは思うがボードマイコンとの接続の為だけに引っ張り出してきたいとまでは思わない。そこで ふと考えるにteratermにあってscreenやcu,minicomにないものはと、teratermには、テキスト転送中に行単位、文字単位でミリセカンドのディレイを挟む設定がある。対してlinux系のシリアル接続コマンドにそういった類のモノを知らない(単に自分が知らないだけの可能性もある) 。そこで、duckduckgo検索のサービスである「Duck.AI」に聞いてみた。自分の思いついた革新的なアイデアは大概は先人が既に思いついてる当たり前過ぎるモノというのはいつもの事であっさりと解決策を教えてくれた。

インテルとザイログのニーモニック相互変換について

 CPMやTK-80用のプログラムを書いていると往々にしてインテル記述のアセンブラソースと向き合うことになる。MZ-80やPC-8001などのZ80系列でアセンブラを覚えた身だとザイログ記述の方が馴染みが深い。8086以降のMASMなどでアセンブラを学んだ人たちの方が8080用のインテル記述のアセンブラは飲み込みが容易いと思う。そんな折にインテル記述のソースをザイログ記述に変換するツールが無いかと探して見つけたのが Xlate https://github.com/mnarigon/xlate xlate-8080 [-cl] [-o file] [file] インテル表記をザイログ表記に変換、出力指定なしだと標準出力に結果を吐き出す。  xlate-z80 [-c] [-o file] [file] ザイログ表記をインテル表記に変換、  出力指定なしだと標準出力に結果を吐き出す。  Z80にあって8080に無い命令はCPM用のMAC80に含まれるZ80マクロz80.libに準拠したモノに置き換えられるらしいが  z80.libにZ80固有命令を8080用に置き換えるようなマクロは含まれていないので当てにしないのが無難ではある。  

GC80FIXにI/O操作命令を Z80-MBC2でLチカがやりたい

 もともと、GAME言語には外部の機械語ルーチンを呼び出す機能はついている。だがパラメータのやりとりは前もって決めた特定のメモリに書き込んでやるしかない。以下のやり方はGC80限定のやり方になるが GAME内部では変数の管理はHLレジスタを使った2バイト単位で扱っている。当初 単純に変数Aから変数Bにコピーする動作だけでHLレジスタに変数Aの内容が保持されて 直後に機械語ルーチンを呼び出せばHLレジスタの値(変数Aのコピー)が渡せると考えたのだが、実際は機械語ルーチンの呼び出しの際にHLレジスタのデータは破壊されて別のモノに代わっている。裏レジスタなどのあるZ80でなら回避策もあるのだが、もとのGC80の作者への敬意のためにもZ80の命令をGC80には組み込みたくない。そこで、変数の扱い方についてみて見たところ、2バイト配列に変数を代入する際に一時記憶として配列の基準変数(ポインタ)の値がDEレジスタに保持されることに目をつけた。DEレジスタにあるポインタを機械語ルーチンに渡し、そのポインタをもとにデータをやりとりすれば複数のデータのやりとりも、戻り値の受け取り先にも利用できる。これを踏まえてGAMEではメモリマップドIOの操作は出来るがIOアドレスへのアクセス命令が組み込まれてないので、Z80-MBC2のGPIOやRTC,USRLED,USRボタンなどへの読み書きが直接できない。 10 U=& 13 "Press USER key to exit" / 14* LEDUSER = 0 : REM USER LED write Opcode (0x00) 15* KEYUSER = 128 : REM USER KEY read Opcode (0x80) 16 "Now blinking..." / 18* OUT 1,LEDUSER : REM Write the USER LED write Opcode 19 U:2)=1 U:3)=0 U(0)=U >=$0106  もとはBASICでUSERLEDのチカチカ動作のサンプルをGAME言語化したモノの一部 配列変数U 2バイト目にポート番号 3バイト目に書き込みデータを代入。 配列変数U 0バイト目と1バイト目に(この場合2バイト配列の0番として)変数Uを...