512byteのブートセクターに収まりブートする、x86マシン語で書かれた「bootBASIC」を発見! 世界最小のチェスプログラムの作者でもある、nanochessさんによる著作「Programming Boot Sector Games (PDF ver.)」を片手に、x86の入門として、16bitのリアルモード向けのbootBASICをmacOSの32bitアプリへと移植。
パスカルの三角形が動いた!
bootBASICは、使える命令も最小限、マルチステートメントもなしのシンプルなBASIC。固定メモリを使っていた元のコードを .data セクションに移して、si/diを32bit化したesi/ediに変更、BIOSの代わりに syscall を使う形にしてできあがり。
アセンブリ言語を使った開発は、アセンブラ nasm によって瞬時にバイナリ化され、即動作。スピード感が気持ちいい。
「Pascal's Triangle」 RUN on IchigoJam web
bootBASICの構文は、IchigoJam BASICにも使えるので、サンプルのプログラムそのままで動いた、パスカルの三角形!
「bootBASIC_32bit src on GitHub」
現在、Mac用のみ。
「Programming Boot Sector Games (PDF ver.)」
1KBの半分、512byteにコンパクトに収めるためのマシン語の基本や、テクニックなど丁寧に解説された本がステキでした!
32bit化でEが付き、64bit化してRが付きと拡張されはしてますが、8bitの名機Z80(1976年)や、16bitアーキテクチャーの王様8086(1978年)の面影、しっかり残ってます。
Z80マシン語でブイブイいわせた人、最近の重量級開発環境が苦手な人、言語の流行り廃りに疲れた人、アセンブラによる超軽量開発で、マシン語でしか到達できない世界を切り開くとかどうでしょう?
links
- 41年経った今でも使える、いにしえのx86マシン語AAAをMacで動かす
- x86 - Wikipedia
- x64 アセンブリーの概要 | iSUS