プログラミング

BREAK実験

PCからZ80プログラムのデバッグができるよう、BREAKサブルーチンを作ってみました。 call BREAKを実行するとレジスタの内容をRAMにダンプしてHALTします。 PCからはBUSRQでRAMを覗くなり書き換えるなりして、気が済んだらNMIでZ80の実行を再開させます。 ORG…

Z80アセンブラでFizzBuzz

レジスタ内容をダンプするシステムコール云々などと言ってましたが、もうちょっと複雑なアセンブラの動作確認がどうしてもしたくなって、BUSRQしてRAMを見にいく方法をさくっと試してみました。 今回のプログラムは遂にLチカを卒業して、FizzBuzzをやってみ…

Haskell 勉強中

引越し後、一向に工作環境が整わないのでZ80プロジェクトも絶賛放置中。ベッドもまだないけど、いい加減に作業机買わないと……。 そんなわけで?最近の家での時間潰しはPCにかじりついてソフトウェア関係の勉強です。「Deep Learning やりたい!」から始まっ…

UbuntuでZ80アセンブラを書く

選択肢は色々あるようですが、次のサイトの zasm というZ80専用アセンブラを使うことにしました。 zasm - z80 assembler - download page オプションでCPUサイクル付きのリストが出せるのが面白そうです。導入方法は、Archiveから実行バイナリをダウンロード…

ROM(EN29F002)ライタ完成

RubyでPC側のソフトも作って、ROM書き込み環境が整いました! PC側書き込みソフト Arduino側ファームウェア 64kBまでのバイナリファイルをROMに書き込めます。64kBというのはPC側ソフトを簡単に実装にするための制限(かつ、Z80で使うには十分な容量)で、フ…

ROMライタのファームウェアひとまず完成

EN29F002用ROMライタ ファームウェア ファームウェアのソースだけあってもしょうがないんですが、共有してみます。書き込み、読み込み、チップ全消去できるのは確認済み。 ROMに対する各操作シーケンスのタイミングがイメージしやすいよう、特に構造化もせず…

ROMライタ製作中

オーソドックスなROMライタというのがどんなものか分からないまま作ってます。データシートのタイミング通りに「コマンド書き込み→データ書き込み→書き込み完了をポーリング(異常検出したらリトライor終了)」を繰り返せばいいとは思うのですが。 ターゲッ…

12ステップ完遂

久々の更新です。 『12ステップで作る組み込みOS自作入門』を完遂。「そもそもOSって何のためにあるの?」というところから学べて、とてもためになりました。RubyやJavascriptでイチャコラとカジュアルなプログラミングに親しんでいただけだった私が、今や「…

ステップ6まで終了

第1部ブートローダ編が終わりました。思ったよりサクサク進めたのは確実に『CPUの創りかた』をこなしてたおかげです。『12ステップで作る〜』は、ステップ6までは章の前半でソフト開発を進め、後半でCPU原理を解説するという構成が多いのですが、この後半部…

12ステップで作る組み込みOS自作入門

本とハードが届いてみたらめちゃ面白そうだったので、思わず始めてしまいました。TOEICなんてどうでもええ! 著者も書いている通り環境構築が一番の壁のようで、私も大いに躓きました。先人たちの情報をググりまくることでStep1を無事クリアできたので、私自…