投稿日: Mar 22, 2017 9:42:25 AM
なんで0.4秒やねん。
サンプルとしてこれはどうなのってことなので。
0.1秒待つコードがこちら。
単純に1/4しただけだけどな。
37 ; wait about 100ms 38 wait: push af 39 ld a,25 40 waitloop: call wait2 41 dec a 42 jp nz,waitloop 43 pop af 44 ret 45 46 wait2: push af 47 ld a,100 48 wait2loop: nop 49 dec a 50 jp nz,wait2loop 51 pop af 52 ret
厳密に0.1秒(100ms)ではないのでそこは注意だけど。
そもそも厳密な処理をエミュレータに求めるのもどうかと思うのでス。
z80とか8080の書籍っていうのは昔ならそこらじゅうに、町の図書館にすらあったわけですがもはや絶滅状態で、Web上の情報だよりだったりするんですがちらっと探したら国立国会図書館にわんさかあるわあるわ。これはもう利用登録して見にいくしかない。
z80とかで書籍になっててよかったものといえば 演算ライブラリ とかですね。
あれは価値がある…。ちなみに今買おうとするとプレミア価格で一万円以上の値がついていたりします。(ひどい)
書籍どおりに実装するしないはさておいて浮動小数点演算ライブラリはどうにかしたいですね。
せめて電卓くらいの計算が出来るとかっこいいので8080の演算ライブラリはちょっと考えましょう(出来るとはいってない)
Arduino上で動かすという時点であまり速度は求めていなかったんですがi8080エミュレータ意外と速い気がするのでテストも兼ねつついろいろやってみようと思います。
そういえばmachineクラスを少々直しました。
ピン方向レジスタの設定でr/wといいつつwしか出来なかったのでDDRのrを追加しました。
これによってPORTとPINのI/Oアドレスが移動しました。
現段階で使ってる人がいるとは思えないけどご注意。