EX-80は、1978年4月に東芝から発売されたワンボードマイコン。

## 概要

正式名称は「TLCS80A・EX-80」で、既製品のTLCS-12A用評価ボードの上位モデル。CPUにはIntel 8080A互換品のTMP9080ACが使用され、入力装置として16進キーボード(KB-1)、出力装置として8桁の7セグメントLED(EX-80Aは未実装)とテレビインターフェース、入出力制御用のモニタプログラム、プログラムの入出力を行うためのオーディオカセットインターフェースを備える。標準価格85,000円。

最大の特徴はテレビインターフェースを標準装備している点で、拡張機器なしでテレビ出力が行えるマイコンシステムとしては発売当時で最廉価の製品だった。RF出力で10文字×26行のテキスト表示(かなり横長の文字になる)が行え、プログラム入力や任意のテキスト表示(ゲーム等)に利用できるほか、モニタプログラムを使用してプログラムの逆アセンブルやレジスタ内容のトレースを行うことができた。また基板上の「BIT-CHAR」スイッチを切り換えることでキャラクタジェネレータでデコードせずに80ドット×26行のビットパターンとして表示させることも可能(テキストとの混在は不可)。テレビ音声からはキークリック音や任意のパルス波を鳴らすことができた。

I/OポートはIntel 8255と互換性のあるTMP9555Cを使用した8ビットのポートを3つ備え、EX-80ではポートAをキーボード入力、ポートCをシステムコントロールに使用している。ポートCのビット3はTV音声出力に使用していて、ビットパターンを送出することで任意の音階を鳴らすことができる。ポートBは未使用でユーザーが任意に使用可能。

LEDとTVの表示はDMAによって行っているので、VBLANKおよびHBLANK以外はCPUがHOLDされるが、高速に処理したい場合はポートCのビット7をインヒビットすることでDMAを止めることができる。

製品自体ははプリント基板と部品一式が提供されるフルキットで、使用可能な状態にするために全ての部品を自分で半田付けした上で自前で用意した電源ユニットに接続する必要があった。サポートは秋葉原に開設されたサポートセンター『マイコンセブン』で行われた。

後に廉価版のEX-80Aが標準価格65,000円で発売された。EX-80との違いは以下の通り。

- LSIをセラミックからプラスチックパッケージに変更
- 付属パーツの7セグメントLEDを省略してテレビ表示専用に(パターンは用意されているので自分でパーツを調達すれば取り付け可能)
- 付属品からアンテナ切り換えボックスを省略

## 主な仕様

|  |  |
| --- | --- |
| CPU | TMP9080AC 2.048MHz |
| ROM | TMM331AP 2KB(モニタプログラム用) |
| PROM | TMM322C 最大2Kバイト(別売) |
| RAM | TMM314P SRAM 1KB / 最大2KB |
| キーボード | データキー(0~Fの16キー)、機能キー(9キー) |
| LEDディスプレイ | 7セグメントLED アドレス部4桁 + データ部4桁 ※EX-80Aは未装備 |
| テレビディスプレイ インターフェース | キャラクタジェネレータ T3477A テレビシンクジェネレータ TC5003P キャラクタ表示(10文字×26行)またはビットパターン表示(80ドット×26行) キャラクターセット 128字種(英大文字、数字、英記号、カタカナ、カナ記号) RF出力(家庭用テレビに接続可能) |
| オーディオカセットテープ インターフェース | プログラマブル・コミュニケーション・インターフェース TMP9551C カンサスシティスタンダード準拠 300bps FM変調方式 |
| パラレルI/Oポート | TMP9555C 8ビット×3ポート |
| 拡張バス | 100ピンコネクタ |
| 電源 | ±5V, +12V(推奨品:エルコー製 HMC-3) |
| 基板寸法 | 310×230mm |
|

### メモリマップ

| 種類 | アドレス | サイズ | 内容 |
| --- | --- | --- | --- |
| ROM | 0000H - 07FFH | 2KB | モニタプログラム |
| 0800H - 0FFFH | (2KB) | ユーザーPROM用(オプション) |
| - | 1000H - 7FFFH | (28KB) | (基板上実装不可) |
| RAM | 8000H - 81FFH | 0.5KB | モニタ用ワーキングエリア テキスト表示用VRAM(12文字×32行) |
| 8200H - 83FFH | 0.5KB | ユーザーズエリア |
| 8400H - 87FFH | (1KB) | ユーザーズエリア(オプション) |
| - | 8800H - FFFFH | (30KB) | (基板上実装不可) |
|

## EX-80BS (BASIC System)

1978年11月25日発売。標準価格99,800円。価格は日本電気のTK-80BSに対抗する意味合いで10万円以下に設定された。発売当初は期間限定でゲームプログラムが書き込まれたPROM(1KB)と応用プログラム集をプレゼントするキャンペーンが実施された。

EX-80BSボード(完成品)、フルキーボード(KB-2)、マザーボード(100ピン×3スロット)で構成され、EX-80(A)と接続することでLEVEL-I BASIC(4KB)が使用可能。EX-80上のモニタROMとRAMをBSボードのソケットに載せ替えて使用する。RAM容量は標準4KB(EX-80の1KB、VRAM 1KBを含む)・最大16KB(+ VRAM 1KB)。EX-80とEX-80BSの接続は、2つのボードをマザーボードで接続してメモリーICを移動させるほかに、信号線のジャンパー接続とEX-80側のプルアップ抵抗1個の取り外しが必要になる。パターンカットは必要としない。

フルキーボードはラミネート加工のタッチ式キーボード(JIS配列58キー、LEDインジケーター付)が付属する。キータッチすると電子音が鳴る仕様で、音量調整用のボリュームがキーボードの裏面に付いている。ユニット自体は山下電気製のJISキーボード「F8J」のOEM品で、EX-80BSでは入力できない文字や使用しない制御キーも含んでいる。なお付属のキーボード以外でもJIS8ビットコードを出力するものであればケーブル加工して接続すれば一応動作はする(`ETX` キーは `CTRL` + `C` で代用する)。

VRAMとして1KBのRAM(TMM314)がFC00~FFFF番地に割り当てられており32文字×25行のキャラクターが表示できる。文字セットは2KBのマスクROM(TMM334)に8×8ドットのパターンで収められており、英大文字・数字・英記号64種、カタカナ・カナ記号64種、漢字・グラフィック文字128種が使用できる。PROM用のソケットも用意されており、ユーザ定義パターンのPROMを乗せることでソフト的に切り換えて表示させることが可能になる。

I/OポートはTMP9555をオプションで取り付けることで8ビットのパラレルポートが3ポート追加できる。全てのポートがユーザーが利用可能。

BASICの起動は、まず電源投入後にEX-80側のキーパッドで "3000" `ADR` `RUN` を実行すると画面上の文字幅が約半分になりEX-80BS側のモニタ(MONITOR-B)が起動する。次にEX-80BSのキーボードで "BS" `CR` を入力するとBASICインタプリタが起動してユーザーエリアの終了アドレスを聞いてくるので、標準の4KBの場合は "8C00" `CR` を入力するとプロンプト記号 ">" が表示されBASICが使用できる状態になる。

BASIC実行中に `ETX` を押すと割り込み状態になり、`⌦ Del` で復帰、`CR` で実行中のプログラムを停止、`⌫ BS` でBASICインタプリタを抜けてMONITOR-Bに戻る。

電源は+5Vの電流容量がEX-80単体では3.0A程度で問題なかったが、EX-80BSを使う場合は最低で4.0A、メモリを最大まで実装した場合は8.0Aの容量が必要となる。

### LEVEL-I BASIC 仕様

BASICインタプリタは「東大版PALO ALTO TINY BASIC」をベースとする東芝オリジナルの4KB BASICを使用。

|  |  |
| --- | --- |
| 数値 | -32767から+32767の整数。後ろにHを付けると16進数になる |
| 変数 | アルファベット1文字、A~Zの26個。データ型は数値のみ |
| 配列 | @(0)~@(n)。添え字の最大値はフリーエリアに依存(SIZE値の約半分) |
| 演算子 | +, -, \*, /。2乗の演算子は無し。優先順位は括弧と算術式に従う |
| 関係子 | <, <=, = >=, >, #。≠は"#"を使用する(<>や><は使用不可) |
| その他 | セミコロン区切りでマルチステートメントの記述が可能 |
|

### メモリマップ

| 種類 | アドレス | サイズ | 内容 |
| --- | --- | --- | --- |
| ROM | 0000H - 07FFH | 2KB | EX-80 モニタROM (MONITOR-A) |
| 0800H - 0FFFH | (2KB) | EX-80 ユーザーPROM用(オプション) |
| 1000H - 2FFFH | (8KB) | EX-80BS ユーザーPROM用(オプション) |
| 3000H - 3FFFH | 4KB | EX-80BS モニタROM (MONITOR-B) LEVEL-I BASICインタプリタ |
| - | 4000H - 7FFFH | (16KB) | (基板上実装不可) |
| RAM | 8000H - 81FFH | 0.5KB | EX-80 MONITOR-A用ワークRAM |
| 8200H - 83FFH | 0.5KB | EX-80 マシン語サブルーチン用RAM |
| 8400H - 8BFFH | 2KB | EX-80BS BASICユーザーズRAM |
| 8C00H - BFFFH | (13KB) | EX-80BS 増設用BASICユーザーズRAM(オプション) |
| - | C000H - FBFFH | (15KB) | (基板上実装不可) |
| VRAM | FC00H - FFFFH | 1KB | EX-80BS テキスト表示用VRAM(32文字×25桁) |
|

### LEVEL-I BASIC 命令一覧

| コマンド | 備考 |
| --- | --- |
| LET | LETは省略可。 |
| REM |  |
| INPUT | 「INPUT A」の書式で「A ?」の入力待ちになる。 「INPUT "A=" A」の書式で「A= ?」の入力待ちになる。 |
| IF |  |
| GOTO | GOTOの行番号は数式でも記述可。 |
| FOR | 「FOR I=x TO y STEP z」の書式で記述する。STEPは省略可。 |
| NEXT |  |
| GOSUB |  |
| RETURN |  |
| PRINT | 「PRINT A,B,C」の書式で変数の値を6桁ずつ続けて表示して最後に改行する。 末尾にカンマを付けると最後の改行は入らなくなる。 「PRINT #1,A,#2,B,#3,C」の書式で変数の値を1桁、2桁、3桁でそれぞれ表示する。 (変数の値が指定桁数より大きい場合は無視されて全桁表示される) 「PRINT "凹F5,F6,EF,EE凹"」の書式で16進数が文字コードに変換されてリストに入力される。 (凹マークは `⇧ Shift` + `[` で入力) |
| STOP | プログラムの実行を停止してプロンプトに戻る。 |
| CLEAR | 画面をクリアしてカーソル位置を左上に戻す。 |
| CURSOR | 「CURSOR 横,縦」でカーソル位置を移動させる。 |
| PEEK | 「A=PEEK(8200H)」で8200番地の値が変数Aに代入される。 |
| POKE | 「POKE 8200H,A」で8200番地に変数Aの値が書き込まれる。 |
| CALL | 「CALL 8200H」で8200番地のマシン語サブルーチンを呼び出す。 呼び出し後に暴走するとEX-80側のMONITOR-Aに戻ることがある。 |
| ABS() | 「Y=ABS(X)」で変数Xの絶対値を変数Yに入れる。 |
| RND() | 「RND(10)」で1から10までの乱数を作る。 |
| SIZE | フリーエリアのバイト数を出力する。 標準のRAM 4KBの場合、NEWを実行した直後の値は2766(バイト)になる。 |
| LIST | リストが長い場合は1ページ毎に停止して `LF` キーで次のページを表示する。 |
| RUN | 実行中のプログラムを中断させる場合は `ETX` キーで割り込み状態にして `CR` キーを押す。 |
| NEW | プログラムと全てのアドレスポインタが初期化される。 |
| TAPEH | 「TAPEH,ファイル名」でプログラムをカセットテープにセーブする。ファイル名は最大20文字。 |
| CHECKH | セーブしたプログラムとRAM上のプログラムが一致するかをベリファイする。 |
| LOADH | テープからプログラムをロードする。 |
|

### MONITOR-B コマンド一覧

| コマンド | 内容 |
| --- | --- |
| BS | BASICインタプリタを呼び出す |
| IV | 画面表示を白黒反転させる |
|

### エラーメッセージ一覧

| エラーメッセージ | 内容 |
| --- | --- |
| WHAT? | 文法エラー |
| HOW? | オーバーフロー |
| SORRY | メモリオーバー |
|

## オプション機器

|  |  |
| --- | --- |
| 整数 | 0~±999999999。10桁を超えると自動的に指数になる |
| 実数 | ±0.01000001~±9999999.9。範囲を超えると自動的に指数になる |
| 指数 | ±2.9387358×10 ~±1.70141183×10 |
| 数値変数 | 英字1文字(A~Z)および、英字1文字+数字1文字(A0~Z9) |
| 文字変数 | 数値変数と同じ命名規則で後ろに$を付けたもの。1変数あたり最大32文字 |
| 配列 | 二次元まで。事前にDIM命令での宣言が必要 |
| 演算子 | +, -, \*, /, ^(べき乗)。+は文字列の連結でも使用可 |
| 関係子 | LEVEL-I BASICの関係子の内、=と#は文字列の比較で使用可 |
|

| LEVEL-I | LEVEL-II | 備考 |
| --- | --- | --- |
| TAPEH | SAVE | コマンド名の変更 |
| CHECKH | CHECK | コマンド名の変更 |
| LOADH | LOAD | コマンド名の変更 |
| PRINT | PRINT | 書式制御で使用するシンボルがLEVEL-Iと異なる |
| INPUT | INPUT | LEVEL-IIは文字変数への入力が可(文字列を'で囲む必要がある) |
| IF | IF | LEVEL-IIは条件式に文字列が使用可 |
| STOP | STOP, END | STOPの代わりにENDが使用可 |
| - | ON...GOTO |  |
| - | ON...GOSUB |  |
| - | DIM | 配列は二次元まで |
| - | DATA, READ, RESTORE | DATA文はREAD命令よりも前に置き、データを1行で書き切る必要がある (複数行ある場合は最後の行のみ有効になる) RESTOREは行番号の指定は不可 |
| - | SIN(), COS() | 三角関数。引数はラジアンで指定する |
| - | ATN() | 逆三角関数。答えはラジアンで返される |
| - | LOG(), LN(), EXP() | 常用対数、自然対数、eのべき乗 |
| - | SQR() | 平方根 |
| - | SGN() | 符号を判定し、-1, 0, 1を返す |
| - | INT() | 整数化 |
| - | PAI | π(3.1415926) |
| - | FLD(変数名, m, n) | 文字列のm文字目からn文字を取り出す |
|

| コマンド | 備考 |
| --- | --- |
| GR | 画面をカラーグラフィックモードに変更する |
| COLOR n | PLOTで描画する色を指定する |
| PLOT x,y | COLORで指定した色でドットを描画する |
| SCRN(x,y) | 指定した座標の色番号を読み取る |
| TEXT | 画面をテキストモードに変更する |
| COPY | EX-80BS側のテキストをカラーボード側に転送する |
|

| 種類 | アドレス | サイズ | 内容 |
| --- | --- | --- | --- |
| ROM | 0000H - 07FFH | 2KB | EX-80 モニタROM (MONITOR-A) |
| 0800H - 0FFFH | (2KB) | EX-80 ユーザーPROM用(オプション) |
| 1000H - 17FFH | (2KB) | EX-80BS ユーザーPROM用(オプション) |
| 1800H - 3FFFH | 10KB | EX-80BS モニタROM (MONITOR-B) LEVEL-II BASICインタプリタ |
| 4000H - 5FFFH | (8KB) | カラーボード ユーザーPROM用(オプション) |
| - | 6000H - 7FFFH | (8KB) | (基板上実装不可) |
| RAM | 8000H - 81FFH | 0.5KB | EX-80 MONITOR-A用ワークRAM |
| 8200H - 83FFH | 0.5KB | EX-80 マシン語サブルーチン用RAM |
| 8400H - BFFFH | 15KB | EX-80BS LEVEL-II BASIC ユーザーズRAM |
| - | C000H - E3FFH | (9KB) | (基板上実装不可) |
| VRAM | E400H - E7FFH | 1KB | カラーボード用VRAM(テキストエリア) |
| E800H - FBFFH | 5KB | カラーボード用VRAM(グラフィックエリア) |
| FC00H - FFFFH | 1KB | EX-80BS テキスト表示用VRAM(32文字×25桁) |
|

## その他

- 初歩のラジオ1980年3月号から1981年2月号にかけて、コンピュータに興味を持った女子高生がEX-80BSでBASICを学んでいくという設定のBASIC講座『BASICなんかナンジャラホイ!』が連載された。連載の途中でBASICがLEVEL-IIにバージョンアップしている。
- 特撮ドラマ『ウルトラマン80』では東芝が電機製品協力しており、主人公が活躍する指令室において、EX-80BSのキーボードやプログラムが映るシーンが頻繁に見られる。