工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduino Altair8800シミュレーター

コンポーネントと消耗品

>
Arduino Mega 2560
× 1
Arduino Due
Arduino MegaまたはDueのいずれかが必要ですが、両方は必要ありません!
× 1
LED(汎用)
× 36
汎用トランジスタNPN
× 36
抵抗10kオーム
× 36
抵抗150オーム
× 36
ミニトグルスイッチSPDTオン-オン
16個のアドレススイッチ(SW15-0)と電源スイッチの場合
× 17
モーメンタリスイッチSPDT(オン)-オフ-(オン)
機能スイッチの場合(RUN / STOP / EXAMINE ...)
× 8
フロントパネルの裏当て用の金属シート
× 1
SparkFunBluetoothモデム-BlueSMiRFシルバー
オプション。これをArduinoTX / RXピンに接続すると、Bluetooth対応のコンピューターまたは電話がエミュレートされたAltairのシリアル端末として機能できるようになります。
× 1
SDカードアダプター付きmicroSDカード
オプション。ディスクドライブのエミュレーションにのみ必要であり、シミュレータが機能するために必要ではありません。
× 1

アプリとオンラインサービス

>
Arduino IDE
ArduinoDueFlashStorageライブラリ
Arduino Dueには永続的なストレージ用のEEPROMがありませんが、このライブラリを使用すると、データをオンに保存できます。 -チップフラッシュメモリ。 Arduinoを再フラッシュすると、保存されたものはすべて削除されます!
Arduino Duesoft_uartライブラリ
任意のピンをシリアルインターフェースとして使用できるようにするソフトウェアUART実装(SoftwareSerialライブラリと同様)他のArduinoプラットフォームの)。このライブラリのファイルは、シミュレータに統合するためにいくつかの小さな変更を加える必要があったため、シミュレータソースに含まれています。

このプロジェクトについて

これを作成したいが、完全にゼロから始めるというアイデアが気に入らない場合は、チェックアウトしてください ChrisDavisのAltair-Duinoキット これが来る すべてのコンポーネント、PCB、ケース、および事前にプログラムされたArduino Due!

このプロジェクトを作成して独自のプロジェクトにした他の人の写真を次に示します。

  • Alan Lowther が見つかりました 素敵な金属ケース 彼のバージョンでは、入出力と音声合成のためにRaspberryPiを接続しました。
  • Martin Zumrは、すべて木でできたとても見栄えの良い箱を作りました。
  • クリスデービス( kb0wwp )が作成しました PCB 美しいケース。
  • ジャスティンデイビスが作った ArduinoDue用のAltairシールド

他の誰かが自分の作品を共有したい場合は、私に知らせてください。ここに投稿します。人々が思いつくさまざまなバージョンを見てみたいです!

長い間、Altair8800コンピューターを試してみるのはクールだと思っていました。しかし、ビンテージのAltairsを使用することはまれであるため、高価であり、利用可能な場合は1500ドルから2500ドルの費用がかかります。 altairclone.comなど、他にもいくつかのオプションがありますが、それでも600ドルかかります。これは、非常にクールですが、使用が制限されるコンピューターに費やすには多すぎます。ありがたいことに、AltairCloneの作成者であるMikeDouglasは、彼が探し出し、クローンの作成時に使用したすべての古いドキュメントとソフトウェアをコミュニティで利用できるようにしました。マイクの仕事のおかげで、Altairとその最も人気のある周辺機器の内部動作に関する豊富な情報が便利に利用できます。

ある時点で、Arduino Mega 2560の仕様を調べていて、AltairのフロントパネルからLEDとスイッチを接続して独自のエミュレータソフトウェアを作成するのに十分なI / Oピンがあるかどうか疑問に思い始めました。 ArduinoMegaが正確に持っていることがわかりました 適切な数のI / Oピン。だから私は自分のAltairクローンを作らなければなりませんでした。

<図>

Arduino Megaを使用してシミュレーターを駆動することは問題なく機能し、セットアップは簡単でしたが、エミュレーションはAltairの速度の約25%でしか実行されず、6KBのエミュレートされたRAMしか提供できません(当時はかなりの量でしたが) )。 MegaのEEPROMは4KBしか保持できないため、永続的なストレージ容量(シミュレータで作成されたプログラム/データを保存するため)も制限されます。

Arduino Dueには、エミュレートされたRAMの完全な64KBをサポートするための十分なメモリがあり、Megaよりもはるかに高速に実行されます。さらに、Dueは実行時にデータをフラッシュメモリに保存できます。これにより、シミュレータ自体で使用されていない512Kフラッシュの任意の部分を永続的なストレージに使用できるようになります。

Dueを使用すると、Altair 8800シミュレーターがほぼ元の速度で実行され、64KのエミュレートされたRAMを提供し、多くのAltairソフトウェアを含み、エミュレーターにプログラムとデータをロードおよび保存するための32Kの半永久的なストレージを提供できます。

このプロジェクトの私の目標は、シミュレーターで作業するときに、「本物の」Altair8800の感覚にできるだけ近づくことでした。これには、フロントパネルのライトに実際の動作を可能な限り反映させることも含まれます。そのための1つの基準は、フロントパネルの「Kill​​-the-Bit」ゲームをプレイできるはずであるということでした。それは次のとおりです。

シミュレーションは、Altair8800の音楽デモでも機能するほどオリジナルに忠実であることがわかりました。これは、Altairの回路によって生成された電磁干渉を拾うAMラジオに依存していることに注意してください!

当時、Processor Technologyは、Altairを(当時は)立派な音楽システムに変えるソフトウェアを備えた、Altair用の小さな拡張ボード(ほんの数個のコンデンサと抵抗)をリリースしました。シミュレーターにも同じ追加を行うことができ(ドキュメントを参照)、当時の音楽システム用に作成された曲を再生できます。次に例を示します:

Altairのもう1つの歴史的に重要な拡張機能は、CromemcoDazzlerグラフィックボードでした。ソフトウェアまたはハードウェアの拡張機能を使用して、シミュレータはそのボードをエミュレートすることもできます。

<図> <図>

さらに別のソフトウェア/ハードウェア拡張機能により、シミュレータはプロセッサテクノロジVDM-1グラフィックカードをエミュレートできます。

<図>

もちろん、最終的に私はオリジナルのAltairを所有していないので、それがどのように機能するかに関するすべての情報は、ドキュメントとビデオから取得する必要がありました(以下の謝辞を参照)。多少の違いはあるかもしれませんが、全体的には元の動作を非常によく再現していると思います。既知の(そして意図的な)違いの1つは、HLDAステータスライトです。元のライトでは、CPUが外部デバイスによって停止されたことを確認したことを示します。この機能はシミュレータでは使用されないため、ここではファイル(シリアル/テープキャプチャ/再生)が現在開いていることを通知します。

ハイライト

  • Altairのフロントパネル要素の動作を正確に再現します。
  • 元のAltair8800とほぼ同じ速度(Arduino Dueを使用している場合)またはArduino Megaを使用している場合は25%の元の速度で動作します。
  • エミュレートされたRAMサイズは64KB(期限)または6K(メガ)です
  • Pong、Altair 4K BASIC(最初のマイクロソフト製品)、Altair拡張BASIC、MITSプログラミングシステムII(期限のみ)、AltairタイムシェアリングBASIC(期限のみ)など、多数のAltairプログラムが含まれており、エミュレータに簡単にロードできます。複数のユーザーが同時にBASICを使用できるようにします。
  • BASICおよびアセンブラのサンプルプログラムはエミュレータソフトウェアに含まれており、BASIC /アセンブラに簡単にロードできます。
  • 1つの88-SIO、88-2SIO、および88-ACR(オーディオカセットレコーダーインターフェイス)ボードをエミュレートします。シミュレートされた各シリアルデバイスは、Arduinoのシリアルインターフェースにマッピングできます。デフォルトでは、最も一般的な2つ(88-SIOおよび88-2SIOポート1)は、USBケーブルを介してアクセスできる115200ボー8n1のArduinoのメインシリアルポートにマップされます。シリアルからBluetoothへのドングルをRX / TXシリアルピンに接続することをお勧めします。そうすれば、Bluetooth対応デバイスをAltairの端末として使用できます。
  • Arduino Dueでは、メインシリアルインターフェース(USB)とSerial1インターフェース(ピン18/19)の両方を同時に使用できます。
  • 各シリアルデバイス(ACRテープを含む)に送信されたデータは、Arduinoのローカルストレージ(EEPROMまたはFLASH)に保存されている最大256個のファイルにキャプチャして再生できます。
  • カセットインターフェースは、拡張BASICでのCSAVE / CLOADコマンドの使用をサポートします(サポートは自動であり、ユーザーの操作は必要ありません)。独自のBASICプログラムを開発するのに最適です!
  • Cromemco Dazzlerグラフィックボードをエミュレートします(追加のハードウェア/ソフトウェアが必要です。こちらを参照してください)
  • プロセッサテクノロジVDM1ビデオターミナルボードをエミュレートします(追加のハードウェア/ソフトウェアが必要です。ここを参照してください)
  • 最大16台の88-DCDDディスクドライブ(デフォルト構成では4台)をエミュレートします。ディスクドライブのエミュレーションはオプションですが、SDカードをArduinoのSPIヘッダーに接続する必要があります。 ArduinoDueを使用する場合にのみサポートされます。
  • 最大4台のハードドライブユニット(デフォルト構成では1台)とユニットあたり4台のプラッターが接続された88-HDSKハードドライブコントローラーをエミュレートします。
  • リアルタイムクロックとベクトル割り込み処理を備えた88-RTC-VIボードをエミュレートします。これにより、Altair Time SharingBasicを実行できるようになります。
  • 256バイトのメモリページを永続ストレージに保存し、メモリにロードして戻すことができます。これにより、フロントパネルのスイッチから入力したプログラムを簡単に保存できます。
  • 多くの設定は、統合された構成エディターを介して簡単に変更できます。

Dueを使用する場合、新しいバージョンのスケッチをDueにアップロードすると、シミュレーター内でキャプチャまたは保存されたすべてのものが消去されることに注意してください。これは、保存されたデータがフラッシュメモリに保存され、新しいスケッチをアップロードすると消去されるためです(Dueには永続的な保存用のEEPROMがありません)。 SDカードがDueに接続されている場合、保存されたデータはSDカードに保存されます。その場合、新しいスケッチをアップロードするときにデータが失われることはありません。

ドキュメント

シミュレータはAltair8800とまったく同じように機能するため、元のAltairのドキュメント(Googleで簡単に見つかります)には、フロントパネルのスイッチを操作するために必要なすべての情報が記載されています。

ただし、シミュレータには、フロントパネルのAUX1 / AUX2スイッチを介してアクセスできるAltair用の多数の追加機能と組み込みソフトウェアが含まれています(これらは含まれていましたが、元のAltairでは使用されていませんでした)。その機能は、シミュレータ用のソフトウェアを開発しているときに私が書いた別のドキュメントで説明されています。ドキュメントは何ページにもわたっており、そこに含まれる情報はこのページを圧倒するため、ソースリポジトリのDocumentation.pdfファイルを参照してください。

ビルド手順

1つの目標は、サポート回路をできるだけ少なくすることでした。 Arduino MegaとDueの両方に、すべてのフロントパネル要素を直接配線するのに十分なI / Oピンがあります。必要な追加の回路は、36個のLEDを駆動するためのトランジスタと抵抗だけです(LEDがAruinoの出力ピンに直接接続されていて、同時にオンにした数が多すぎると、合計電流がArduinoの制限を超えてしまいます)。

このプロジェクトの完全な回路図を作成することは、面倒で反復的であり(36個の同一のLEDドライバー回路、32個のスイッチの配線)、あまり役に立ちません。そのため、回路図面には、代わりに、どの要素がどのArduinoピンに接続されるかに関する詳細な表と個々のサブ回路(LEDドライバーなど)の回路図が含まれています。また、ストリップボード上のLEDドライバーコンポーネントのレイアウトを示すためにFritzingファイルを追加しました。

フロントパネルを作成するために、Altairのフロントパネル(www.vintage-computer.comにあります)の高品質スキャンから始めて、コピーショップでカードストックに印刷しました。バッキング(実際にスイッチとLEDを所定の位置に保持するため)には、22ゲージの金属シートを使用し、通常の電動ドリルを使用してLEDとスイッチ用の穴を作成しました。 LEDドライバ回路はストリップボードにはんだ付けされており、LEDに直接はんだ付けされており、LEDは金属シートによって所定の位置に保持されています。

フロントパネルは、シンプルな木箱で固定され、直立しています。ボックスは元のAltairほど深くはありません(フロントパネルとArduinoを保持するだけでよいため)。

<図>

フロントパネルのオン/オフスイッチを配線するには、ボックスに電源ソケット(Arduino自体と同じ)を追加し、フロントパネルスイッチに配線し、そこからArduinoに接続する電源プラグに配線しました。

Arduino Dueを使用する場合、SDカードをDueのSPIポートに接続することにより、最大16台の88-DCDDディスクドライブのエミュレーションを有効にできます。 Schematicsドキュメントの最後のページには、必要な配線の詳細が示されています。

スケッチをArduinoDueにアップロードする前に、必ずArduinoコンパイラの最適化設定を「パフォーマンス」に切り替えてください。デフォルトでは「サイズ」に設定されています(Dueには512kのフラッシュメモリがあるため、理由はわかりません)。これを行うには、ファイルをロードします

c:\ Users \ [user] \ AppData \ Local \ Arduino15 \ packages \ arduino \ hardware \ sam \ 1.6.9 \ platform.txt

テキストエディタに変換し、「-Os」の出現箇所を「-O3」に変更します。この手順はスキップできますが、シミュレータの実行速度が大幅に低下します。

シミュレータソフトウェアは、フロントパネルのコントロールを接続しなくても、必要最低限​​のArduino(MegaまたはDue)で実行できます。これにより、含まれているプログラムのかなりの数を実行できます(フロントパネル要素ではなく、ほとんどがシリアル端末を使用するプログラム)。これを行うには、 config.h を編集します ソースファイルとセット #define STANDALONE 1 (0ではなく)。そのセットアップで仮想フロントパネル要素を操作する方法については、ドキュメントの「デバッグ機能」セクションを参照してください。ただし、これはシミュレータの使用目的ではないことに注意してください。フロントパネルのハードウェアを構築したくない場合は、PCベースのすべてのソフトウェアエミュレータを使用することをお勧めします。 config.h ソースファイルには、シミュレータ機能を含む/除外するスイッチが多数含まれています。デフォルト設定は適切に機能しますが、シミュレーターを微調整する場合は、ここから開始します。

謝辞

私はAltairを自分で所有していないので、インターネットから情報を入手することに頼らざるを得ませんでした。 altairclone.comのMikeDouglas(deramp5113)が制作したAltair 8800の教育用ビデオは非常に役立ち、見るのが非常に興味深いものでした。ビデオの制作に加えて、マイクはAltairに関連するハードウェアとソフトウェアのマニュアルを豊富に収集し、自分のサイトで利用できるようにしました。

(マイクのビデオは、シミュレーターを構築した後、シミュレーターをどうするかについてのアイデアを得るのに非常に役立ちます)

Martin EberhardのADEXERツールは、ハードドライブサポートの低レベルのデバッグに非常に役立ちました。彼はまた、シミュレーターで使用される2つのブートローダーを作成しました。ディスクとミニディスクを起動するためのコンボディスクブートローダー(CDBL)と、オリジナルよりも短く安定したハードディスクブートローダー(HDBL)です。

>

CPUエミュレーションを含むすべてのコードを自分で作成しましたが、ハーフキャリー計算とDAA命令を効率的に実装することに関しては、i8080コアモデルプロジェクトからインスピレーションを得ました。

シミュレーターには、Altair 8800用のオリジナルソフトウェアがいくつか含まれています。このソフトウェアを探し出し、収集して機能させるために数え切れないほどの時間を費やし、altairclone.comのWebサイトですべて利用できるようにしてくれたMikeDouglasに感謝します。

  • Altair 4K BASIC(MITS 1975)
  • Altair Extended ROM Basic(MITS 1975)
  • Altair Time Sharing Basic(MITS 1977)
  • Kill-the-Bitゲーム(Dean McDaniel、1975年)
  • フロントパネルを使用したポンゲーム(マイクダグラス)
  • 「デイジー、デイジー...」の音楽(Steve Dompier、1975)
  • 音楽システム(Processor Technology 1977)
  • MITSプログラミングシステムII(MITS 1976)
  • Altairターンキーモニター(MITS 1977)
  • i8080 CPU診断(Microcosm Associates、1980)
  • i8080 CPUエクササイズ(Frank D. Cringle 1994、Ian Bartholomew 2009)

ディスクとハードディスクのイメージ(ソースアーカイブの「disks」サブディレクトリに含まれています)も、deramp.com(Mike Douglasの個人Webサイト)と同様にaltairclone.comで取得されました。これらには、CP / M、さまざまなバージョンのディスクBASIC、Altair DOS(Fortranを含む)などが含まれます。繰り返しになりますが、マイクはそのすべてのソフトウェアを見つけて、Altairコミュニティで使用できる機能するディスクイメージを作成するという素晴らしい仕事をしました。私は選択したソフトウェアのみを使用したので、altairclone.comまたはderamp.comにアクセスして、さらにチェックしてみてください。

ディスカッションフォーラム

Altairduino.comのChrisDavisは、Altair-Duino関連の質問について話し合うためのGoogleグループを設立しました:

https://groups.google.com/forum/#!forum/altair-duino

気軽に訪問してディスカッションに参加してください!

コード

Arduino Altair8800シミュレータコード
https://github.com/dhansel/Altair8800

回路図

このドキュメントでは、完全な回路図(非常に反復的)を提供する代わりに、どのピンをどのフロントパネル要素に接続するかを説明し、サブ回路(LEDドライバ回路など)の回路図を提供します。LEDが接続されているストリップボードのレイアウトを示す試みに。少し混雑していますが、物事がどのようにつながっているかを見るには十分なはずです。重要なのは、各LEDのコンポーネントがストリップボード上で5スペースを超えないことです。そうすれば、LEDを十分に近づけて、フロントパネルを元のサイズにすることができます。 ledstrip_4OVCpRyKQS.fzz

製造プロセス

  1. フライトシミュレータ用のArduinoを備えたLCDパネル
  2. Arduino Spybot
  3. FlickMote
  4. 自家製テレビB-Gone
  5. マスタークロック
  6. Find Me
  7. Arduino Power
  8. Tech-TicTacToe
  9. Arduino Quadruped
  10. Arduinoジョイスティック
  11. CNCマシン