こ-06
IT-開発-OS/低レイヤ
「自作OS」を軸に技術調査やOS自体の作成、近年は「独自なOS」とするための理論の考案・検証等を行っている個人サークルです。自作OSを行う対象のハードウェアとして、近年はゲームボーイやセガサターン、PDP-7といったレトロハードを対象にしています。
新刊
同人誌・40ページ・紙・500円「バイナリ生物学」の理論を1960年代のコンピュータであるPDP-7でも動くくらいシンプルにした設計を解説し、
PDP-7のシミュレータ上で動作するPoC実装で行った実験とその結果を紹介する本です!
実験としては「デイジーワールド」と呼ばれるモデル環境を再現する実験を行いました。
「バイナリ生物学の実装の上で生物による自己制御のようなものが働くのかどうか」といった所を実験を用いて紹介します!
[目次]
はじめに
第1章 PDP-7とバイナリ⽣物学、DaisyOSについて
第2章 PDP-7向け設計の解説
第3章 PoC実装を⽤いた実験の紹介
おわりに
「SimH」というシミュレータを用いて、「PDP-7」という1960年代のコンピュータをアセンブリ言語で直接制御するベアメタルプログラミングを行う本です!
基本的な計算の行い方から始め、テレタイプによる入出力で「HELLO WORLD!」や「エコーバック」のプログラムを作ったり、シミュレータ上で動作するベクタースキャンディスプレイを制御したりします!
[目次]
はじめに
第1章 SimHのセットアップと初めてのプログラム
第2章 計算を⾏ってみる(疑似乱数⽣成)
第3章 テレタイプで⽂字の⼊出⼒(HELLO WORLD!/エコーバック)
第4章 ベクタースキャンディスプレイとライトペン(図形描画/ヒット検出)
おわりに
普段、実行バイナリや画像ファイル等のバイナリを得る手段として、プログラミングやレタッチソフトでの画像作成などを行います。
ただ、バイナリが得られれば手段は何でも良いと考えると、もっと色々な手段が考えられそうです。
バイナリ生物学では、バイナリを生物として振る舞わせるシステムを考えます。
そして、バイナリが生物の振る舞いをすることで、生物的な「自己進化」・「自己再生」・「自己増殖」により
バイナリが自ずと最適な形へ適応していくシステムを考えます。
本書では、実行バイナリの構成要素を単細胞生物の構成要素と対応付けて考えることで、
実行バイナリにおける「代謝」・「運動」・「成長」・「増殖」・「死」を設計できる事を説明し、
それに基づいて作成したデモで、意図的に混入されたバグが、生物的振る舞いにより自己修復される様子を紹介しています。
[目次]
はじめに
第1章 「⽣きている」と⾔い張る戦略
第2章 設計とモデル
第3章 PoC実装の実⾏結果
おわりに
動作デモ:
https://youtu.be/Ml8CgPcODt0
普段、実行バイナリを得る手段としてプログラミングという方法をとりますが、
本書では、生物学的なアプローチで実行バイナリを生成するシステムを作り、実験した結果を紹介しています。
前著「バイナリ生物学入門」で、実行バイナリと単細胞生物のそれぞれの構成要素を対応付けすることで、実行バイナリを単細胞生物に見立て、
生物の振る舞いである「代謝」・「運動」・「成長」・「増殖」・「死」の設計を解説し、生物的振る舞いによりバグを自己修復するデモを紹介しました。
本書では、新たに「進化」の設計を解説し、ELFバイナリを生成するシステムで、
「機械語命令部分が空(終了ステータスさえ返さないのでエラー終了する)」の実行バイナリから、
「終了ステータス0で正常終了する(exitシステムコールをちゃんと呼ぶ)」実行バイナリへ進化させる実験と、
「Aという1文字を標準出力へ出力する」実行バイナリへ進化させる実験を紹介しています。
[目次]
はじめに
第1章 daisy-toolsのコンセプトとアーキテクチャ
第2章 daisy-toolsの使い方
第3章 実験結果紹介
おわりに
バイナリ生物学の理論をGB向けに実装してみたものです。
バイナリ生物学に基づいた独自のデータ構造と状態遷移により、実行バイナリを生物(単細胞生物)として扱います。
それにより、実行バイナリが持つ機械語の命令列を、細胞分裂時の突然変異による進化で目的の形へ作り変える事ができます。(このGB実装では突然変異は一部分のみ。)
ゲームボーイで動作するOSです。
読み書きと保存ができるファイルシステムを持ち、
同梱のバイナリエディタでゲームボーイ(8ビット)
のマシン語プログラミングが行えます。
(おまけとしてライフゲームプログラムも同梱)
セガサターンのエミュレータのソースコードを読む本です。
本書はC言語がわかれば大丈夫です!
エミュレータのソースコードを読むと、ハードの作りがわかるのはもちろんですが、
色々なゲームを再現するために、「とあるゲームの特殊な振る舞い」とかをサポートするための実装もあったりして
当時のゲーム開発も垣間見えたりします。
ソースコードを読むのが好きで、なおかつセガサターンなどの90年代のゲームハードが好きな方には特におすすめです。
[目次]
はじめに
第1章 Yabauseのソースファイルを分類する
第2章 Yabause本体部分
第3章 CPU周り
第4章 画面描画周り
第5章 サウンド周り
おわりに
セガサターンのCDドライブ周りは実は内部的に独立したシステムになっています。
この本では、セガサターンのCDシステムを公式で公開している図やエミュレータのソースコードで解説し、
実際のCDシステムの制御の様子をエミュレータのログで見ていきます。
[目次]
はじめに
第1章 セガサターンのCDドライブ周り
第2章 エミュレータのソースコードでわかるCDシステムの制御方法
第3章 CDコマンド発行の流れを見る
おわりに
実はセガサターンには、当時あったデバイスを使うことで、電子楽器を接続するインタフェースであるMIDIの接続が行えます。
この本では、それを使ってMIDIキーボードやPCとの通信を試します。
そして、PCとの通信の応用例として、PCから受信した実行バイナリをメモリへロードして実行するローダを作ってみます。
[目次]
はじめに
第1章 セガサターンとMIDIについて
第2章 MIDIキーボードのMIDIメッセージを読む
第3章 PCと繋ぎMIDIメッセージを送受信
第4章 簡単なプロトコルでPCから実行バイナリをロード・実行
おわりに
筆者が行っている「セガサターン自作シンセサイザー」の取り組みについての技術解説本です。
セガサターンの音源ICがシンセサイザーだって作れるほどの機能を持っていることをエミュレータのコードで解説しています。
■ セガサターン自作シンセサイザーのデモ動画集
https://youtube.com/playlist?list=PLyRFvsy-N_GQKmC8_yqhvtLsnxlyxn1Lp
[目次]
はじめに
第1章 セガサターンのサウンド周り
第2章 オシレータとピッチベンド
第3章 EG(エンベロープジェネレータ)
第4章 LFO(低周波オシレータ)
おわりに