BASICで3Dグラフィック

TwitterでBASICで3Dグラフィックを出している方がいらっしゃいまして….

MC68000系のBASICではあったのですが、最近作っていた8080系のマイコンのBASICイケるかもと思いトライしてみました。

SBC8085で3Dグラフィック

SBC8085 (あ、製作記事書いてない…)と SBC8080データパックのGrant’s BASICで試してみました。
参考にさせていただいたソースとの違いが、50行目の追加(PI=3.14)と800行目をちょっと修正しました。あと16進定数は “&H”へ修正。
TeraTERMでTEK4010端末エミュレーションというもので別窓が開いてグラフィックが出ます。マイコンでグラフィックが ! ! ちょっと感動 ! !
(エスケープシーケンスみたいな感じでBASICからはキャラクター文字列が飛んできている感じ。)

SBC8085は3MHz駆動でシリアルコンソールも9600でして28分程度かかりました。

SBC80系 Z80マイコン(10MHz)でトライ

SBC80系バスにつながるZ80マイコン(10MHz)でもチャレンジしてみまして….
11分16秒ぐらいで描画できました。(下はさきほどとほとんど同じ画像ですな…^^) )
MZ-2000とおなじぐらいのスピードが出ました。

Grant’s 6chipマイコンで挑戦

シリアルスピードが影響しているかも?と思い、GWごろに手作りしたZ80マイコンでも同じBASICプログラムを試してみました。
なんとクロックが7.3728MHzとちょっと遅いはずですが最速wの11分14秒ぐらいでグラフィックが完成!
やはり文字列でドット位置の情報が飛んできているのでシリアルのスピードも効いてくるみたいです。

このBASICのグラフィックデモってMZシリーズの宣伝で雑誌でよく見かけた気がします。
当時PC-8001ユーザーだった私は、高精細グラフィックが出ているMZシリーズがうらやましかった思い出がありまして、マイコンでグラフィックが出て感無量です。
(T-T)

広告

SBC68系 128kB バンクメモリボード(3)

SBC68系 128kBバンクメモリーボードのハードウェアができた(はず)なので、メモリーチェックプログラムとかLILBUGへバンク切り替えコマンドを追加してみたいと思います。

メモリーチェックプログラム

SBC6303データパックに拡張32kBメモリーボード用のチェックプログラムがありますので、そちらを参考にバンク切り替えしながらメモリーチェックを実施するプログラムを作ってみます。
以下がgistへUPしたソースです。

  • 今回のRAMボードで$A000-$BFFFに8kBのメモリーも配備したので、プログラムは$B000へ配置しました。
  • バンク切り替えにはHD6303のI/OポートP10〜P12を使用します。3bitの出力に1〜7までのバンク番号(0の場合はバンク1を選択)を出力することで切り替えできます。

実行結果はこんな感じです。うまくチェックできたみたいです。

LILBUGコマンド拡張してバンク切り替えコマンド

バンク切り替えのためにプログラムをいちいちロードしたりして切り替えるのが面倒なのでLILBUGコマンドを作ってみたいと思います。
LILBUGのマニュアルを読んでみると外部コマンドテーブルを作る事ができそう。ユーザーコマンドに該当がなければROM内のLILBUG標準コマンドが実行されるみたいです。

バンク切り替えはBコマンドとかにしたかったのですが、ブレークポイントで使われているため “K”コマンドということにしてみました。

使い方ですが、まずは LILBUGで $B000からGコマンドで実行してください。ユーザー用コマンドテーブルのポインタを更新してバンクメモリーをバンク1へ初期化してLILBUGへ移行します。

! G B000

コマンドの書式は ” K△n “(△:スペース)はバンク切り替えします。nはバンク番号で入力と共に切り替わります。(確認とかナシ)
バンク番号を入れず ” K△[CR] ” だと現在のバンク番号を表示します。

ソースはこちらもgistへ上げました。こちらです。
こちらのプログラムも$B000のRAMに配置しました。ROM化は LILBUG ROMに手が入るなぁと思ってちょっと考え中です。

LILBUGは MIKBUGと違っていろいろと拡張性が考えられているので使いやすいですね!