GAME68クロスコンパイラを書いてみた(3) (ベーシックマスター開発 その32)
GAME68クロスコンパイラを書いてみた(2) (ベーシックマスター開発 その21) | ず@沖縄の続き。 コンパイラの改良は意外に面白く、最適化の勉強の勉強も兼ねてあれこれ手を入れてみた。最新版は以下に置く。 BASICMASTER/GA ...
6800の分岐命令とインタプリタ(ベーシックマスター開発 その31)
MC6800の分岐命令が面倒臭いのは6800の分岐命令(ベーシックマスター開発 その30) | ず@沖縄で書いた。 MC6800でなくても、CPUの扱えるレジスタ長を超えると大小比較は面倒くさくなる。 その面倒臭さを当時のインタプリタはどう ...
6800の分岐命令(ベーシックマスター開発 その30)
6800には豊富な分岐命令がある。複数の条件フラグを参照する分岐命令もあり、プログラミングを楽にしてくれる……はずなのだけど、うっかりすると罠にハマってしまう。実際ハマった。 解説資料も少なくて、初学者の参考になるようなサイトも見つけきれな ...
簡易グラフィックスとPLOTルーチン(ベーシックマスター開発 その29)
BASICMASTERには、64x48dotの簡易グラフィックスを表示する機能がある。64x48は、今ではフォント1文字のサイズである。 それでも、この制限された狭いグラフィック表示の中で、頑張って見栄えの良い画面を作ろうとしたものだ。 簡 ...
6800のCPX命令とエミュレーター(3)(ベーシックマスター開発 その28)
6800のCPX命令とエミュレーター(2)(ベーシックマスター開発 その27) | ず@沖縄の続き。 さて、MC6800のCPX命令はわかりにくいフラグ変化があるという話をしてきた。実は、いくつかのエミュレータ実装でも誤っているものがあるの ...
6800のCPX命令とエミュレーター(2)(ベーシックマスター開発 その27)
6800のCPX命令とエミュレーター(1)(ベーシックマスター開発 その26) | ず@沖縄の続き。 MC6800のCPX命令は上位・下位を別々に引き算していて、N,Vフラグには上位同士の結果しか反映されないことはわかった。なぜそうなってい ...
6800のCPX命令とエミュレーター(1)(ベーシックマスター開発 その26)
開発にはエミュレーターを使っているのだけど、CPX命令の処理が正しくないエミュレーターがあるようだ。そもそも6800のCPX命令は変なのである。 私がBASICMASTERを使っていたころは、世の中のプログラムはCPX命令の後は必ずBEQ/ ...
6800のアセンブラプログラム最適化(1)(ベーシックマスター開発 その25)
昔は1バイトでも短いプログラムの方が大事だった。私の買ったベーシックマスターは全メモリが16KBぐらい。狭い。 メモリ追加して 32KB使えるようになっても言語処理系を入れるとカツカツだった。 (メモリも今のようなモジュールじゃなくて、16 ...
除算ルーチンの検討(ベーシックマスター開発 その24)
前回はさまざまな乗算処理を見てみた。今回は除算。乗算ではシフト方向によって 大きく2つの方法があるが、除算も同様。 また、16bit*16bitの乗算で結果の下16bitだけを使う場合は符号あり・符号なしのどちらでも同じルーチンが使えるが、 ...
乗算ルーチンの検討(ベーシックマスター開発 その23)
BASICMASTERは日立製のCPU HD6800を使っている。これはモトローラのMC6800の互換品。昔のCPUなので乗算・除算命令は無く、シフト命令と加減算を組み合わせる必要がある。 コンパイラを作成・改良するにあたり、各種言語で、1 ...
6800用のコンパイラを探して – Fuzix/CC6303(ベーシックマスター開発 その22)
GAMEコンパイラの書き直しのために、参考になる6800で動くコンパイラがないかと探していたら、EtchedPixels氏(aka Alan Cox氏)によるFuzix OS内にCコンパイラがあった。 6502用のCコンパイラであるCC65 ...
GAME68クロスコンパイラを書いてみた(2) (ベーシックマスター開発 その21)
前回記事で「区切りとして github に置きました。この版はこれで終わりにして、第2版を作ろう」と書いたのですが、2週間で書いた割には意外に実用になるので、バグ修正と高速化を1週間ほど頑張ってみました。 現在では、ASCII 1979年7 ...