Lispと一緒(48) Wio TerminalでもuLisp、レイトレーシングのデモ

RayTracingDemo
Joseph Halfmoon

前回はホフスタッターQ数列でクロージャを学びましたです。今回は1ピクセル描画関数 draw-pixel の「重そうなデモ」ということで Graphics examples の Ray tracing を試行。@200MHzとはいえ uLispインタプリタで直列処理。360×240ピクセルの画面に出力するのに約11分。

“Lispと一緒(48) Wio TerminalでもuLisp、レイトレーシングのデモ” の続きを読む

ぐだぐだ低レベルプログラミング(204)x86(16bit)、冷遇? TEST

TESTopcode
Joseph Halfmoon

x86(16bit)の練習の最初の方で、ADD、ADC、SUB、SBB、AND、OR、XOR、CMPの8命令を練習。こいつらオペコードマップの目抜き通りに綺麗にならんでます。その中でCMP命令はSUBに似ています。一方AND命令に似ているTEST命令はオペコード的にはトビトビの場所に冷遇?されているんだこれが。

“ぐだぐだ低レベルプログラミング(204)x86(16bit)、冷遇? TEST” の続きを読む

Lispと一緒(47) Wio TerminalでもuLisp、ホフスタッターQ数列

speedup
Joseph Halfmoon

前回前々回とuLispのグラフィクスの使い方を学び始めました。グラフィクスににはアリガチな(再帰駆使した)デモ例題有。マンデルブロ集合、バンズリーのシダなど別シリーズでやったものも在。デモのuLispコードを読んでいくと流石、素人老人が思いつかないスマートなコード。今回はホフスタッターQ数列でクロージャを学びます。
“Lispと一緒(47) Wio TerminalでもuLisp、ホフスタッターQ数列” の続きを読む

Lispと一緒(46) Wio TerminalでもuLisp、プリミティブ描画関数

drawRect
Joseph Halfmoon

前回はuLispのGraphics extensionsの全般的な表示設定について確認。文字出力をLCDへ向けてでした。今回はいよいよグラフィクスの描画に入ります。まずはアリガチな丸描いて四角描いて的な描画関数どもを練習してみます。一通り最低線の描画セットはある感じ。こんだけあればなんとかなるべよ。ホントか?

“Lispと一緒(46) Wio TerminalでもuLisp、プリミティブ描画関数” の続きを読む

Lispと一緒(45) Wio Terminal、LCD画面の設定

rotation
Joseph Halfmoon

前回より練習台をラズパイPico2機からWio Terminalに変更。LCD画面表示用の関数どもの練習のためです。今回はディスプレイ設定のキホン的なところを確認。とりあえず前回同様のLCDへの文字列の出力を使って設定を確認してみました。しかしデフォルトの文字サイズでは老眼の目には見えんぞなもし。

“Lispと一緒(45) Wio Terminal、LCD画面の設定” の続きを読む

ぐだぐだ低レベルプログラミング(203)x86(16bit)、CMC、CLC、STC

CMC_CLC_STC
Joseph Halfmoon

前回はCBWとCWDでした。今回はCMC、CLCとSTCです。似たような3文字ニーモニックの命令が続きますが他意はありません。x86は3文字ニーモニックの命令が多いだけのこと。今回の3命令に共通するのは末尾のCです。CARRY FLAGのCです。キャリーフラグ(CF)を操作したいことがそれだけ多いってこってす。

“ぐだぐだ低レベルプログラミング(203)x86(16bit)、CMC、CLC、STC” の続きを読む

Lispと一緒(44) Wio Terminalでグラフィクス出力の準備

uLisp4_6b_on_WioTerminal
Joseph Halfmoon

約40回に渡って ラズパイPico2機上の uLisp を練習。今回よりWio Terminalを練習台としたいです。uLisp処理系は同じ 4.6b を使用です。Wio TerminalにはグラフィクスとWiFiという「素のラズパイPico2」に欠けている2大機能が備わっています。練習できなかった関数どもに触れる筈。

※2025年2月16日追記:Wio TerminalにはWiFiハードウエアが登載されていますが、uLispの処理系4.6bではサポートないです。あちゃ~、

“Lispと一緒(44) Wio Terminalでグラフィクス出力の準備” の続きを読む

ぐだぐだ低レベルプログラミング(202)x86(16bit)、CBW、CWD

u00000028EC
Joseph Halfmoon

前回はファーポインタをレジスタ組にロードするLESとLDSでした。今回は符合拡張を行うCBWとCWDです。8086らしいなと思うのは、この命令、明示的なオペランドをとりません。レジスタはキメウチ、アキュムレータのみです。この辺のレジスタの使い方に偏りがあるのが御先祖に8ビットを頂くx86らしさかと。 “ぐだぐだ低レベルプログラミング(202)x86(16bit)、CBW、CWD” の続きを読む

ぐだぐだ低レベルプログラミング(201)x86(16bit)、ポインタロード、LES、LDS

LES_LDS_pointerload
Joseph Halfmoon

前回は8086範囲をはみ出すENTER/LEAVE命令でしたが、今回は8086以来のファーポインタ(セグメント間参照)のロード命令、LESとLDSです。そろそろ8086命令は一巡するんじゃないかなどと思っていたのですが、数えてみたらまだまだ残ってます。先が長いのでそろそろ8086範囲は終わらせたいのだけれど。

“ぐだぐだ低レベルプログラミング(201)x86(16bit)、ポインタロード、LES、LDS” の続きを読む

Lispと一緒(43) ラズパイPico2でもuLisp、breakとtrace、デバッグ

trace_3endEC
Joseph Halfmoon

今回はuLispのデバッグ機能。この機能はエディタ同様uLisp処理系そのものに組み込まれており、外部プログラムなど必要とはしません。ただし機能を顕現させるには事前の準備が必要です。まずはユーザープログラムの書き換え不要な trace が第1チョイスかと。関数内部の奥深くに探りを入れる場合は breakすかね。
“Lispと一緒(43) ラズパイPico2でもuLisp、breakとtrace、デバッグ” の続きを読む

ぐだぐだ低レベルプログラミング(200)x86(16bit)、ENTER、LEAVEその2

Joseph Halfmoon

前回は、ENTERが作り出すスタックフレームを眺めながらボヤイてましたが演習には至りませんでした。「やりたくないな~」感が充満。Debug.exeは強力なソフトウエアデバッガですが、「ソフトウエアの」デバッガです。自身がブレークかけるためにもスタックを消費。スタック操作の証拠を残すのがメンドイです。仕方ねえ、やるです。

“ぐだぐだ低レベルプログラミング(200)x86(16bit)、ENTER、LEAVEその2” の続きを読む

Lispと一緒(42) ラズパイPico2でもuLisp、SHA256ハードを試用

SHA256sample_EC
Joseph Halfmoon

別シリーズの過去回にてラズパイPico2、RP2350の周辺回路 SHR256計算機(アクセラレータ?)を調べました。メンドいハッシュの計算を自主的に行ってくれる優れものです。調べただけで実機動作がまだだったので、今回uLispから突いて計算できることを確認。まあ動作確認用のサンプルコードでしかないすけど。 “Lispと一緒(42) ラズパイPico2でもuLisp、SHA256ハードを試用” の続きを読む

ぐだぐだ低レベルプログラミング(199)x86(16bit)、ENTER、LEAVEその1

EnterLeaveRetImm
Joseph Halfmoon

前回CALL/RET命令を練習。しかし即値つきRETはENTER/LEAVEと一緒ね、ということで後回し。今回はENTER/LEAVE命令(8086に不在、80186以降のx86が装備)が「想定」しているスタックフレームについて復習していきます。便利?「高水準言語とのセマンティンクギャップ」が叫ばれた当時のアダ花?
“ぐだぐだ低レベルプログラミング(199)x86(16bit)、ENTER、LEAVEその1” の続きを読む

Lispと一緒(41) ラズパイPico2でもuLisp、uLisp to C 変換

takCompileERROR
Joseph Halfmoon

uLisp上の「セルフ」開発ツール、アセンブラコンパイラ、そして前回のエディタと経めぐってきましたが、今回は「クロス開発?」向けのコンバータです。uLisp関数をCのソースコード形態に変換してくれるもの。Arduino環境へ輸出すれば「セルフ」にもなり。しかし「コマケーことはいいんだよ」な感じです。

“Lispと一緒(41) ラズパイPico2でもuLisp、uLisp to C 変換” の続きを読む