JR-100:エミュレータv2にCPU速度設定機能を追加

長らく放置していたJR-100エミュレータver2に新機能を追加しました。CPU速度を設定する機能です。コメントでいただいていた機能をいつか実装しようと思いながらずっと手を着けられずにいましたがようやくできました。ついでにR6522の実装も強化しています(外見はよく分からないと思いますが)。 ダウンロードはこちらよりお願いします。 JR-100エミュレータ こんな設定画面です。ほぼ10倍速となる10MHzまで指定できます。 JR-100のBEEP音の周波数はクロック周波数に直結しているため、例えば実機でクロックを2倍に修正するとBEEP音の周波数も2倍になるはずですが、エミュレータではクロック … “JR-100:エミュレータv2にCPU速度設定機能を追加” の続きを読む

JR-100: コンポジットビデオ信号のキャプチャ

念願のオシロスコープを購入したので、JR-100が出力するビデオ信号をキャプチャしてみました。 購入したオシロスコープはPico Technology社のpicoscope2205Aというモデルです。秋月電子で購入、税込28,000円でした。 ■主な仕様 (秋月電子のサイトから引用) ・帯域幅:25MHz ・チャンネル数:2チャンネル ・入力インピーダンス:1MΩ||14pF ・ビット数:8ビット ・バッファ:16キロサンプル ・波形発生器機能:DC~100kHz 正弦波、矩形波、三角波、DC、ランプ波形、sinc関数、ガウス関数、正弦半波 ※詳細はPico Technology社のサイトを参 … “JR-100: コンポジットビデオ信号のキャプチャ” の続きを読む

JR-100: MB14392について(1)

JR-100: 全体

松下電器が発行していた技術報告書からJR-100の論文を入手しました。 JR-100に搭載されているMB14392というLSIの仕様が長年謎だったのですが、この論文に情報が載っていたので、少しずつ分析していこうと思います。 ※ 分析のまとめはこのサイトのまとめページの方に順次追記していきます。 さてまずMB14392は、200ゲートアレイのセミカスタムLSI(マスタスライス方式)とのこと。マスタ・スライスLSIとは、 配線層のみの変更で専用回路を設計できるLSI。セルベースLSIでは,40枚程度のマスクを機器メーカーが用途に応じてカスタマイズする。マスタ・スライスLSIは,トランジスタ層と配線 … “JR-100: MB14392について(1)” の続きを読む

R6522:Timer1の1サイクルの長さ

R6522が持つ2つのタイマーのうちタイマー1は、設定した初期値(Nとする)の間隔でI/OポートBのPB7ピンの信号を反転させる機能を持っています。つまりNの値を変えることで任意の周波数の矩形波を出力できるのです。JR-100ではこれを利用して、PB7にスピーカーを接続していて、任意の音程の音を鳴らすことができます。 さて、R6522のデータシートによると、PB7の反転周期は初回がN+1.5サイクル、2回目以降はN+2サイクルとあります。図の説明ではタイマーが0になるたびに初期値Nがロードされデクリメントを続けるとあるので、一見するとNサイクル周期になるような気がします。それなのになぜなぜN+ … “R6522:Timer1の1サイクルの長さ” の続きを読む

6802アセンブラで逆アセンブラ形式の出力に対応

6802アセンブラで逆アセンブラ形式の出力に対応した。こんな感じで出力する。とりあえず相対分岐命令の時にラベル名を出すようにした。理想的にはアドレッシングモードがdirectとextendedのときもラベル名を出すべきな気もするけどまだできていない。まあいいか。だいぶ完成形に近づいてきた気がするな。

 

R6522のシフトレジスタの挙動が分からない

R6522のシフトレジスタの挙動をデータシートをもとに調べていますが、理解できないところが多い。 モード0: SRが無効になるモードなのに、CB1の立ち上がりエッジでCB2にシフトアウトするように読める。(“In this mode the microprocessor can write or read the SR and the SR will shift on each CB1 positive edge shifting in the value on CB2”) モード1: T2カウンタの下位バイト(Nとする)のタイムアウトごとにシフトするはずだが、添えられ … “R6522のシフトレジスタの挙動が分からない” の続きを読む

JR-100+GV-USB2

JR-100: 全体

JR-100実機の画面をキャプチャするために、IOデータのGV-USB2を購入。コンポジット入力をUSB経由でPCに取り込むものなのだが、うまく取り込めない。 JR-100側でキーを押してもキャプチャ画面には反映されず、コンポジット入力を差しなおしたりGV-USB2をPCから抜き差ししてみても、真っ黒い画面になるか静止画になるかどちらかだ。 あらためて調べてみると、公式サイトにこんな情報が……。 弊社製品は、カラーの映像信号用機器として設計されておりモノクロ信号の入力では動作保証を行っておりません。 モノクロ信号については、正しく表示が行えない場合もあります。 大変申し訳ございませんが、何卒ご … “JR-100+GV-USB2” の続きを読む

6802用アセンブラを作る(5) 一応完成

ひとまず仕様をfixさせ、ユーザーズガイドを作成しました。結局構文解析部分は命令毎に規則を書き下す方式にしました。状態遷移表の状態数は740状態、遷移数は3445個です。これくらいなら許容範囲かな? 規則部はこんな感じ。各命令に対応するシンボルから始まり、それぞれの命令で指定可能なアドレシングモードの規則を記述しています。文法違反の場合は、特別なエラー命令(ErrorInstruction)を生成し、パーサから抜けた後に命令リストをスキャンし、まとめてエラー表示する方式とします。

ちょっと悩んだのがアドレシングモードのうちDir … “6802用アセンブラを作る(5) 一応完成” の続きを読む

6802用アセンブラを作る(4) JR-100でのテスト

作成したアセンブラのプロトを使って、JR-100の実機試してみました。最終的な目的はJR-100に搭載されているVIA(6522)のテストのためなので、マシン語から直接VIAのレジスタを叩いてJR-100のスピーカーから音階を鳴らしてみました。JR-100への入力は同じく自作のFSKプレイヤーを使います。 プログラム JR-100ではVIAのPB7がスピーカーに接続されています。つまりVIAのタイマー1のフリーランモードでPB7に出力される方形波が音声として再生されるため、タイマー1の初期値を生成したい周波数に合わせて調整すればよいということです。タイマーが0になるごとにPB7出力が反転するの … “6802用アセンブラを作る(4) JR-100でのテスト” の続きを読む

6802用アセンブラを作る(3) プロトタイプ完成

構文解析部分で少し悩みましたが、ひとまずプロトタイプはできました。パーサーを自分で作るのとは異なり、ジェネレータを使うとエラー処理をうまく書くのが難しいです。いまのところ最低限の処理しか実装していません。またたまに例外を発生しますのでお気を付けを……。 2017/3/25追記 アセンブラの正式版の説明はこちらに移動しました。お手数をおかけします。 構文解析について 行の構文解析のところで二つの方式で悩みました。 方式1: 命令の正当性を構文規則で表現する こんな規則になります。

この方式だと構文エラーが自動的に判定できるので(当 … “6802用アセンブラを作る(3) プロトタイプ完成” の続きを読む