BASIC、ときどき機械語

BASIC、ときどき機械語
田中二郎@日本橋学館大学
30年以上の昔から・・・






真空管でラヂオ(12AU7)
トランジスタの登場(2SB56)
電気工作(2SC372)
デジタル回路(TTL 7400)
計算機?(ALU 74LS181)
マイコン
お小遣いとの闘い
 少ない予算
 めざせ、高性能!
 創意工夫
1024×1を8ヶよりは、256×4を2ヶ
 周辺回路は自作
 入出力はスイッチとLED
↑ちょっと豪勢
SADCOM 80-1
 CPU:TMS8080ANL
 Clock:μPD8224D
⇒2MHz
 メモリ:μPD2101AL-4 ×2
⇒256Bytes
開発環境





ハードウェアで、手いっぱい
メモリ容量が少ない(256Bytes)
入力が手動スイッチ
ハンドアセンブルで十分
機械語を記憶してしまう
・・・・・・三つ子の魂100まで・・・・・・
マイコン環境
 電気屋でバイト
 PDA-80(TK-80用開発機)
 テレタイプ=紙テープが使える
⇒長いプログラムが書ける
 最初につくったのは、逆アセンブラ
⇒モニタなどを解析
BASIC





TINY BASIC 大流行
DDJ(PaloAlto TinyBASIC)
Interface Age(POTATO BASIC)
アスキー(電大版BASIC)
インタプリタのソースを読む
⇒勉強になった
 でも、目的は・・・・・・
⇒StarTrekゲーム
パソコン登場
 TK-80BS
 COMPO/BS
カセット再生ができる
⇒音楽付きゲーム
 PC-8001
BASICがROMに入ってる
=中身がわからない
⇒解析だぁ~!
手段はBASIC
 BASICで書く逆アセンブラ
評判がよかった?
⇒雑誌記事に
 エディタやアセンブラもBASICで書く
⇒やったことは、DOSの改良
 解析好き
PC-8801、PC-6001の逆アセンブル
⇒やはり、雑誌記事に
解析する側から、される側へ
 パソコン用BASICインタプリタ作成のバイト
 遅いクロック
=部品を減らすために、ビデオのクロック採用
 少ないメモリ
=開発中に、BIOS側にメモリをとられる
 実行クロック数・バイト数を数えよう
1クロック減るなら、数百行書き換える(^^
⇒マニア受けする機械になった
現在・・・
 Z80の機械語・クロック数は、まだ覚えてる
 「論よりRUN」で開発
↑基礎ができていれば、という条件付き
 インタープリタ系言語が、やっぱり好き
 perl でちょこちょこっと書く、今日この頃
⇒perl で逆アセンブラを書いちゃいました
PaloAltoTinyBasic + StarTrek
 当時を思って、作ってみました
・インタープリタ=2KB
・ゲーム=5.5KB
・モニタ=3KB
 当然、逆アセンブラ付き(^^
 ゲームに、間違いを見つけた
 メモリが余る
⇒ほかに何をいれよう?
AKI-80
 Z80コンパチ(CPU+CTC,SIO,PIO)
 12MHz
 ROM:32K, RAM:32K
 USB-Serial変換:FT232RL
Q&A
 動きはじめるまで、1日かからない
 9600bps, 8-bits, 1-stop, no-parity
割り込みは使っていません
 LEDが光るのは、計算機として当然!
高輝度LEDを0.1mA程度で使用
 電池がCPU板上だと、可愛くない