ず@沖縄

BASICMASTER

chibicc compiler を6800向けに改造する (4) strcpy

MC6800の泣きどころはインデックスレジスタが1つしかないことと、スタック操作が苦手なことだ。例としてstrcpyを書いてみよう。unsigned char *strcpy(unsigned char *dst, unsigned cha...
BASICMASTER

いまさらベーシックマスターの開発環境を作ってみる(47) MAME

各種エミュレーターで有名な MAMEdev.org | Home of The MAME Project が、バージョン0.270からBASICMASTER Jrをサポートしていた。(Sony NWS-3270があるのも大変そそりますが、こ...
BASICMASTER

生成AI(gemini)を使って16進ダンプリストを入力する

過去のプログラムで遊ぶ時に 避けられないのがプログラムリストの入力である。BASICであれば、入力時・実行時にエラーが出るので、まだなんとかなる。でも、16進ダンプは打ち間違えると、プログラムが暴走してどこで間違えたかわからない。後年になる...
BASICMASTER

ベーシックマスターの文字列出力は$04が終端文字(ベーシックマスター開発 その46)

最近、Quoraを読んでいたら以下のような質問があった。 C言語の文字列は、何故、文字列長を含めたデータ構造にしなかったのでしょうか?昔からのプログラマだと、MS-BASICやUCSD Pascalは文字列長+文字だったなあ、とか、その前は...
BASICMASTER

MC6800のプログラミングテクニック(14) 多バイト整数の2の補数

MC6800のプログラミングテクニック(1) 16bit数値の2の補数の計算とMC6800のプログラミングテクニック(7) 分岐条件の生成(2)の記事を書いてから、ずーっと考えていたことがある。多バイトの2の補数はもっと簡単に作れないか?1...
BASICMASTER

MC6800のプログラミングテクニック(13) 多バイトの+1/-1操作をinc/decで行う

6800にはメモリを直接操作する命令があり、便利に使える。下記の11種がそれだ。 CLR/COM/NEG/DEC/INC/ROL/ROR/ASL/ASR/LSR/TSTシフト・ローテート命令は多倍長の乗除算に使えるし、他の命令もちょっとした...
BASICMASTER

chibicc compiler を6800向けに改造する (3) ++ と —

ポストデクリメントとプリインクリメントという概念を初めて知ったのは、古のCPUであるSC/MP(スキャンプ) IIのデータシートであった。当時のパソコン雑誌には、なぜか、SC/MP IIの記事が多数掲載されていた。しかしSC/MP IIに関...
BASICMASTER

MC6800のプログラミングテクニック(12) 多バイト整数の比較

MC6800には豊富な分岐命令があって、1バイトの数値の大小を比較するのは簡単である、という話を前に書いた。 6800の分岐命令(ベーシックマスター開発 その30) | ず@沖縄そのときに、2バイトの比較はやや面倒であると書いたが、多バイト...
BASICMASTER

chibicc compiler を6800向けに改造する (2) 関数呼び出しの仕組み

去年の末から、 rui314 (Rui Ueyama) さんの rui314/chibicc: A small C compiler を MC6800向けに改造しています。今回は関数呼び出しの仕組みのメモです。 zu2/chibicc-68...
BASICMASTER

chibicc compiler を6800向けに改造する (1)

去年の末から、 rui314 (Rui Ueyama) さんの rui314/chibicc: A small C compiler を MC6800向けに改造しています。簡単なプログラムが動作するようになったので、公開しました。 zu2/...
BASICMASTER

6800用のコンパイラを探して – CC6303 (3)(ベーシックマスター開発 その45)

6800用のコンパイラを探して – CC6303 (2)(ベーシックマスター開発 その44) | ず@沖縄の続き。今回はCC6303の生成するオブジェクトについてについてのメモです。 zu2/CC6303: A C compiler for...
BASICMASTER

MC6800のプログラミングテクニック(11) シフト操作の高速化

複数回の左右シフト操作を効率化したい。例えば、AccABを左に8bitシフトする場合は、TBAが使える。LSLB/ROLA が4cycle必要なので、普通に書くと32cyc,16bytes必要。(8回繰り返して 8bit左シフト) lslb...
スポンサーリンク