RCA CDP1802 COSMACを動かしてみた(8) 電子オルガンを作ってみる

前回の記事ではスピーカーから音を出すところまで行いました。これを応用して電子オルガンを作ってみます。書籍の記事ではプリント基板を製作してもう少し広い音域をカバーしているのですが、ここではブレッドボードを使用して製作するため、音域も回路も簡素化しています。

cosmac_organ_schematic.jpg

ブレッドボードで製作した電子オルガンは写真のようになりました。

cosmac_organ1.jpg

オルガンの鍵盤がわりにの8つの端子をブレッドボード上に作りました。この端子に5Vのリード線をあてることで音をだします。左からCDEFGABCです。

RCA CDP1802 COSMACを動かしてみた(7) 音を出してみる編

前回の記事でCPUボードが完成してプログラムローダーから入力したプログラムを実行できるところまで確認しました。

このあと書籍では入門用アプリケーションとして電子オルガンが紹介されていますので、これも試してみます。

今回製作したCPUボードにはQという出力端子がありますが、その出力にはエミッタフォロア回路が入っていてスピーカーを直接駆動することができます。ここからプログラムで音をだしてみようという試みです。まずは50Ω程度の抵抗を介してスピーカーを取り付けました。

cosmac_speaker1.jpg

サンプルプログラムとしてQをセット、リセットしてパルスを作り、パルスを発生するタイミングをトグルスイッチで制御することで音程を作ります。

RCA CDP1802 COSMACを動かしてみた(6) 基板動作編

前回の記事で基板を発注してから3週間がたちました。まずはCPU基板が到着しました。

注文通り5枚入っていました。見た目はガーバーデータと同じにできているようです。

cosmac_cpu_pcb1.jpg

でも、よく見るとシルク印刷が重なっているところがいくつかありました。

cosmac_cpu_pcb2.jpg

クソマゾLEDマトリックス バッヂで2019年の書き初めをしてみた

あけましておめでとうございます。昨年はmicro:bitとmbedで書き初めをしましたが、今年の新春初プログラミングはMPLAB XC8とWSLのubuntuでのgccでした。

今年はGhz2000さんのクソマゾLEDマトリックス バッヂで新年のメッセージを表示させました。

ApacheからNginxに移行してパフォーマンスが良くなったお話

この記事はConoHa Advent Calendar 2018の19日目の記事になります。

はじめに

2013年のConoHaのサービス開始直後から、これまでずーとApache+MovableTypeを使用してきました。

大きなトラブルもなく、旧ConoHaから新ConoHaになってどんどん機能が拡充して頑張ってるなぁと思っています。

今回は最近起こったちょっとしたトラブルシューティングの事例をまとめてみました。

RCA CDP1802 COSMACを動かしてみた(5) 基板発注編

今回ブレッドボードで作成した回路をユニバーサル基板に移してもよいのですが、何枚か作ってみたいのでプリント基板を作ってみます。

参考にしている「トラ技別冊 つくるシリーズ7 手作りコンピュータ入門」でも、感光基板のマスクが付いていて、なるべく簡単に試せるように工夫されています。

私も昔は感光基板を露光し、エッチングをしてミニドリルで穴をあけて片面基板を作っていましたが、今は廃液処理などを考えると基板を発注したほうがよさそうです。

ちょうどKosaka.Lab.出版さんの「KiCad 5.0入門実習テキスト『KiCad Basics for 5.0』」も購入したばかりですので、このテキストを見ながら早速KiCadでガーバーデータを作成してみました。今回の基板はCPUボードとプログラムローダーボードに分けています。

ちなみに基板を発注するのは今回が2回目です。無駄なところやおかしなところがあるかもしれませんが、その点は大目にみてください。

COSMAC CPUボードはこんな感じです。秋月電子のB基板とサイズは合わせています。S-RAMのバッテリーバックアップもつけてみました。

cosmac_cpu_board_view1.png

RCA CDP1802 COSMACを動かしてみた(4) プログラミング編

ひとつ前の記事でアセンブラ開発環境が整いましたので、引き続きサンプルプログラムを実行してみます。

その前に簡単にCOSMACのレジスタの説明です。アキュームレータはDレジスタで8ビットです。何をやるにしてもこのDレジスタを経由して行うことが多いです。R0~RFは16個の16ビットレジスタです。例としてR3レジスタの下位8ビットはR(3).0、上位8ビットはR(3).1と表します。Xは8ビットのインデックスレジスタです。

まずはカウンタプログラムを動かします。R4レジスタをカウントアップしてその値をLEDに表示することを繰り返すものです。

アセンブルリストは以下のようになります。

0000-        1 *
0000- 2 * Counter program 1 for COSMAC
0000- 3 * SB-Assembler
0000- 4 *
0000- 5 .CR 1802
0000- 6 .OR $0000
0000- 7 *
0000-F8 31 8 ( 2) START LDI #$31 #$31をDレジスタに入れる
0002-A3 9 ( 2) PLO 3 Dレジスタの内容をR3レジスタの下位8ビットに入れる
0003-E3 10 ( 2) SEX 3 3をインデックスレジスタXに入れる
0004-84 11 ( 2) LOOP1 GLO 4 R4レジスタの下位8ビットをDレジスタに入れる
0005-53 12 ( 2) STR 3 Dレジスタの内容をR3レジスタが示すメモリに代入する。
0006-61 13 ( 2) OUT 1 R(X)(ここではR3)レジスタが示すメモリの内容をBUSに出力する。
0007-23 14 ( 2) DEC 3 OUT命令でR3レジスタが1加算されるので、R3レジスタを1減算しておく
0008-14 15 ( 2) INC 4 R4を1加算する(カウントアップ)
0009-30 04 16 ( 2) BR LOOP1 LOOP1にジャンプする。
000B- 17
000B- 18 .EN

実行した結果をYouTubeにアップしておきました。

RCA CDP1802 COSMACを動かしてみた(3) アセンブラ編

ブレッドボードに組み上げたCOSMACマイコンの動作確認ができましたので、参考にしている書籍「トラ技別冊 つくるシリーズ7 手作りコンピュータ入門」にあるサンプルプログラムを動かしていこうと思います。

前回の記事で動作確認に使用したパルス信号を作るプログラムも書籍に掲載されているものです。ただし掲載されているプログラムリストには命令コードと命令が行う処理の概要は書かれていますが、二ーモニックコードが書かれていません。どうせならアセンブラを使っていきたいので、データシートからニーモニックコードを調べてアセンブラのソースコードを作成しました。

START SEQ
      REQ
      BR START

SEQ は SET Q、REQ は RESET Q、BRはBRANCHと想像がつきますね。

RCA CDP1802 COSMACを動かしてみた(2) 動作確認編

前回、ブレッドボードに組み上げたCOSMACの回路を動かしてみます。

メモリへのプログラムの書き込みは

  • データ入力用の8回路DIPスイッチ
  • CPUモード選択用の2つのスライドスイッチ
  • 書き込み用のプッシュスイッチ

を使って行います。

CPUモード選択がややこしいのでブレッドボードの横に紙を張り付けました。

cosmac_switch1.jpg