ブログの練習

ブログを書く練習です。
最近はレトロな計算機(電卓、マイコン、パソコンなど)
に関することを書き始めました。

Fairchild F8 Family (F3850)

2022-08-11 14:18:16 | マイコン
Fairchild F8ファミリーのCPUとメモリインターフェースを入手しました。上がF3850PC(CPU, メーカーのロゴが無いけどFairchaild製だよね?)、下がMostek MK3853P(SMI, Static Memory Interface)です。最近読んだ「I/O別冊8 マイコン活用アイデア集」の最後に紹介記事があったCPUですが、それを読むまでその存在を知りませんでした。
そんなマイナーなCPUにも関わらず、電脳伝説さん(SBCF8が完成)が基板の作成やBASICの移植をしてくれていたので、基板とデータパックを使ってTiny BASIC for the F8を動かしてみました。

ハンダ付けするだけで何のトラブルも無くあっさり起動。プラモデル感覚です。
メモリとUARTは別基板になっていて、全体像はこんな感じ。

最近入手したレトロLED、東芝TLR101を使ってみました。


ASCIIART.BASを整数型BASIC用に書き替えて走らせてみました。
値をF倍して変数に格納して、演算時に整数部分と小数部分に分けて計算しています。
50行目の416はほんとは416.6なので四捨五入して417にしたいのですが、それだと微妙にオーバーフローしてしまうことがあるというギリギリのところなので416にしています。
100行目のa*a-b*b(a+b)*(a-b)の方がかけ算が1回で済んだり、オーバーフローしにくかったりするので良いかと思ったのですが、大差なかったので元のソースに近い式にしています。
130~140行目の発散判定は、計算量削減のために整数部だけで計算しています。
リストはこちら。

10 F=50
11 REM F is '1.0'
20 FOR Y=-12 TO 12
30 FOR X=-39 TO 39
40 C=X*229/100
41 REM 0.0458*F
50 D=Y*416/100
51 REM 0.0833*F
60 A=C
70 B=D
80 I=0
90 Q=B/F; S=B-Q*F
100 T=(A*A-B*B)/F+C
110 B=2*(A*Q+A*S/F)+D
120 A=T
130 P=A/F; Q=B/F
140 IF (P*P+Q*Q)>4 THEN 180
150 I=I+1;IF I<=15 THEN 90
160 PRINT " ",
170 GOTO 200
180 IF I>9 I=I+7
190 PRINT CHR(48+I),
200 NEXT X
210 PRINT
220 NEXT Y

結果は35分29秒。先日のZilog Z8671 BASIC/Debugとほぼ同じでした。

これを走らせている過程で、Tiny BASICのバグらしきものを2つ発見しました。1つ目はこれ。128で割るとエラー(HOW)になります。-128でも同様でした。最初は除数の範囲が-127~127というタイニーな仕様なのかと思ったのですが、そうではなかったようで、128のときだけエラーになります。

もう1つ見つけたバグがこれ。行番号が1桁のときの挙動がおかしいようで、1桁の行が書けなかったり消されちゃったりします。

データパックにソースもあることだし、中を見てみようかな。
コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« Tiger 121R (MODEL-121R) | トップ | FM-7のキーボード修理 »
最新の画像もっと見る

コメントを投稿

マイコン」カテゴリの最新記事