きょうのかんぱぱ

デジモノが大好きなかんぱぱの日記です。

DragonBall-EZで遊んでみた(初めてのプログラム編)

  • 投稿日:
  • by
  • Category:

DragonBall-EZ(MC68EZ328)に64KByteのメモリ空間ができましたので何かプログラムを動かしてみます。

ちょうどMC68EZ328ADSTOOLS2_0.zipの中にメモリテストプログラムがありましたので、これを実行してみます。

今回アセンブラはEASy68Kを使いました。実は今回のDragonBall-EZで遊ぶきっかけはこのサイトのフォーラムで知った情報なのです。

ソースコードは少しの修正だけでEASy68Kでアセンブルすることができました。

メモリ空間が0x0000〜0x0FFFFまでですので、データは0x01000〜、プログラム本体は0x02000〜とし、0x04000〜0x0FFFFまでをメモリテストの対象としました。

アセンブルを行って生成したSフォーマットファイルをBBUG.EXEで読み込ませます。

bbug_memtest1.png

読み込んだあとにプログラムの先頭アドレスの0x2000から実行します。

bbug_memtest2.png

無事PASSと表示されました。実行後のメモリを見ると昇順に値が書き込まれていることがわかります。

これである程度のプログラムを動かすことができるようになりました。

BBUG.EXEは最低限の機能しかありませんので、この次はもう少し高機能なモニタプログラムを作って動かしてみたいと思います。

あとはフラッシュメモリとかDRAM(残念ながらMC68EZ328はSDRAMは使えません)とかを接続すればモニタを固定して広いメモリ空間を使うことができるはずです。

でも、その前におきまりのLチカをしないといけないですね。

DragonBall-EZで遊んでみた(SRAM接続編)

  • 投稿日:
  • by
  • Category:

DragonBall-EZ(MC68EZ328)のブートストラップモードとBBUG.EXEを使うことで、メモリダンプやプログラムを実行する機能は使えるようになりましたが、肝心なプログラムを置くためのメモリがありません。

プログラムを動かすためにはCPUに何らかの外部メモリ(SRAMやDRAMやフラッシュメモリ)を接続する必要があります。

3.3Vで動くメモリはないかなと探したところ、手元に秋月電子で販売されている3.3V電源で使える256Kbit(32K×8bit)のSRAMがありましたのでこれをDragonBallに接続してみました。

このSRAMを2個使うことで16bitバスとします。1個が下位8ビット、もう1個は上位8ビットとなります。メモリ空間は0x0000〜0xFFFFの64KByteとなります。

mc68ez328_sram1.jpg

DragonBall-EZで遊んでみた(BBUG.EXE編)

  • 投稿日:
  • by
  • Category:

ひょんなところからMC68EZ328(DragonBall-EZ)を手にいれました。昔Palm PDAで使用されていた68KのCPUです。

MC68EZ328CPU.jpg

このCPUはブートストラップモードがあり、CPUに水晶をつなぐだけで、シリアルポートにPCを接続して、BBUG.EXEというDOSプログラムを使ってメモリの表示、メモリの変更、プログラムのロード、および実行を行うことができます。外付けメモリが全く無くても動くのが面白いところです。まずはCPU単体を動かし、メモリを接続し、プログラムをロードして実行するまでがシリアルポートとBBUG.EXEだけで済んでしまうのです。大掛かりな開発ツールや専用の開発用機器は不要です。

BBUG.EXEはMC68EZ328ADSTOOLS2_0.zipというファイルに含まれています。www.nxp.comのサイトで検索すれば見つかります。

DragonBall-EZのユーザーズマニュアルやドキュメントもwww.nxp.comから入手することができます。

BBUG.EXEを動かすための回路図は以下の通りです。簡単です。

mc68ez328_bbug_curcuit.jpg

ZK-80 mini (PIC32MX1チップTK-80互換機)で書き初めをしてみた

  • 投稿日:
  • by
  • Category:

あけましておめでとうございます。新春初プログラミングは8080アセンブラでした。

私はZK-80 miniで動かしましたが、TK-80でも動くと思います。

プログラムリストは以下の通りです。8000番地から実行してください。

                                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                                ;; ZK-80 mini(TK-80 compatible)
                                ;; Happy New Year 2007 PROGRAM
                                ;; 2017/1/1 by @kanpapa
                                ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                                ORG    8000H
8000: 01 30 80                  START:	LXI	B,SDATA1
8003: 1E 17                     	MVI	E,17H
8005: 21 F8 83                  LOOP1:	LXI	H,83F8H
8008: 16 08                     	MVI	D,08H
800A: C5                        	PUSH	B
800B: 0A                        LOOP2:	LDAX	B
800C: 77                        	MOV	M,A
800D: 23                        	INX	H
800E: 03                        	INX	B
800F: 15                        	DCR	D
8010: C2 0B 80                  	JNZ	LOOP2
8013: CD 1F 80                  	CALL	WAIT
8016: C1                        	POP	B
8017: 03                        	INX	B
8018: 1D                        	DCR	E
8019: C2 05 80                  	JNZ	LOOP1
801C: C3 00 80                  	JMP	START
                                ;;
                                ;; WAIT ROUTINE
801F: C5                        WAIT:	PUSH	B
8020: D5                        	PUSH	D
8021: 16 FF                     	MVI	D,0FFH
8023: 06 00                     WAIT2:	MVI	B,0
8025: 05                        WAIT3:	DCR	B
8026: C2 25 80                  	JNZ	WAIT3
8029: 15                        	DCR	D
802A: C2 23 80                  	JNZ	WAIT2
802D: D1                        	POP	D
802E: C1                        	POP	B
802F: C9                        	RET
                                ;; SEGMENT DATA
8030: 00 00 76 77 73 73 6E 00   SDATA1:	DB	0,0,76H,77H,73H,73H,6EH,0	;; HAPPY
8038: 54 79 7E 00 6E 79 77 50   	DB	54H,79H,7EH,0,6EH,79H,77H,50H	;; NEW YEAR
8040: 00 5B 5C 06 27 00 00 00   	DB	0,5BH,5CH,06H,27H,0,0,0,0	;; 2007
8049: 76 77 73 73 6E 00         	DB	76H,77H,73H,73H,6EH,0		;; HAPPY
                                	END

ZK-80 mini (PIC32MX1チップTK-80互換機)を作ってみた

  • 投稿日:
  • by
  • Category:

NECの8ビットワンボードマイコンTK-80について調べていたところ、ZK-80 miniというPIC32MX 1チップで実装したTK-80互換機の製作記事をみつけました。PIC32であればTK-80ぐらいの仕組みは作れるとは思っていましたが、実際に動作しているのには感心しました。しかも回路図も非常にシンプルでさすがです。

電子ブロック工房 ZK-80 mini (PIC32MXを使った1チップTK-80互換機)

この記事をみて、TK-80のキーボードをそのまま保管していたことを思い出しました。実は工場ハックというイベントで偶然TK-80のキーボードを手にいれていたのです。
これが使えるとよりTK-80に近い感覚で使えるので、ますます楽しくなるのではと思ったのです。

まずは、ZK-80 miniをブレッドボードで組み立てました。配線は多いように見えますが大したことはありません。

zk80_tk80kbd_1.jpg

SECCON CTF 2016 online 予選のWrite-upをまとめました

  • 投稿日:
  • by
  • Category:

SECCON CTF 2016 オンライン予選に参加しました。
前回同様一人チームでのんびり取り組みましたが、今回は前回までとは違って難易度がかなり高くなったと感じました。誰でも解ける練習用問題もありませんでしたし・・・。
結局解いた問題は2つだけです。合計で200点獲得できました。

  • Vigenere (Crypto) 100点 777人が回答済
  • VoIP (Forensics) 100点 733人が回答済

忘れないうちにWrite-upを書いておきました。

Vigenere (Crypto) 100点

Vigenereとはヴィジュネル暗号のことで、暗号表と鍵を組み合わせて使う暗号のようです。
このような古典的な暗号の場合は、解読ツールがいろいろあるので探してみましたが、今回のSECCON問題ではフラグに含まれる{}が暗号表に含まれているのでそのままでは使えませんでした。

ただ問題の中に鍵の長さは12文字であること、途中まで平文と暗号文が対応していたので、その部分と暗号表を照らし合わせて鍵の頭の文字はVIGENERであることがわかりました。あと5文字の鍵を見つけなければなりません。この場合はプログラムを書いて総当たりでキーを作って試していくしかありません。フラグのMD5ハッシュ値がありますので、作成した平文をこのハッシュ値と付き合わせればいいでしょう。

結局慣れているCでプログラムを書きました。急いで作ったので汚いプログラムですが、ソースファイルはgithubに入れておきました。コンパイルはcc v.c -lcryptoで行なってください。

このプログラムを動かして、無事フラグを取ることができました。

seccon_ctf_vigener.png

VoIP (Forensics) 100点

これはpcapが添付されていましたので、WireSharkで読み込みました。VoIPなのでツールバーの「VoIP通話」を選ぶと、ストリームを再生することができました。

ctf_voip.png

聞き取りにくい声ですが、フラグを教えてくれているようです。SECCON{9001???}と聞き取れたのですが、数字の後の3文字がなかなか聞き取れません。これかなと思ったアルファベットを組み合わせて入力しても回答が一致しません。この手の問題であればランダムな英字3文字をフラグにするというのは無いように思います。意味のある英字3文字・・・あ、そういえばこの音声って自動音声応答装置だよなぁ・・「IVR」だ! ということで無事フラグが取れました。こういう発想もSECCONには必要なんですよね。

総評

今回が4回目のSECCON CTFですが、合計200点ということで残念な結果となりました。
他の問題も手をつけてみたもののなかなか先にすすめず、やはりチームでないと厳しいですね。
まあ、SECCONは国際大会なのでレベルが高くなるのはやむを得ませんが・・。
他の参加者の皆様のWrite-Upを参考にして次回に備えたいと思います。
運営の皆様もお疲れさまでした。

NHK みんなの科学 たのしい実験室のカウンタユニット基板を作ってみた

  • 投稿日:
  • by
  • Category:

私は小学生ぐらいの時にNHK みんなの科学 「たのしい実験室」を毎週見ていました。確か毎週木曜日の夕方だったでしょうか。

この番組では電子工作もよく取り上げられ、特にTTL-ICと7セグメントLEDを使って、電子サイコロ、ストップウォッチ、デジタル時計といったものを作るシリーズがありました。このシリーズは大変興味がありNHKに返信用封筒を送って回路図をいただいたりとか、秋葉原のお店に見積もりを取って通信販売で部品を入手して組み立てていました。そのおかげでデジタルICや電子工作のノウハウを身につけることができました。

今でもこれらの記事は大切に保管しているのですが、つい先日CQ出版社のトランジスタ技術でKiCadをつかった基板製作の特集があり、付録DVDに作業の様子が動画で収録されていました。これを見たおかげでKiCadでのいろいろなテクニックを知ることができました。

kikad_toragi.jpg

実はまだ一度も基板を起こしたことがなく、良い機会なので一度簡単な回路で基板を作ってみようと、「たのしい実験室」で作ったことがあるTTL-ICをつかったカウンタユニットの基板を起こすことにしました。基板を発注すると10枚ぐらい作ることになるので、複数枚組み立てれば桁数を増やすこともできます。回路は非常にシンプルでTTL-ICの74LS47と74LS90、7セグメントLEDのTLR-306だけです。パスコンすら入っていません。

TTL_counter_schematic.png

秋月電子の球体液晶ユニットでミクさんを動かしてみた

  • 投稿日:
  • by
  • Category:

秋月電子の球体液晶ユニットの実験の続きです。前回はRGBデータを固定で与えることでカラーストライプまで表示できることを確認しました。

やはり何らかの画像を表示してみたいと思い、いろいろ調べたところFPGAで液晶に画像を表示しているこちらの記事を参考にさせていただきました。

MAX10にもSRAMがありますので、MAX10のSRAM上にROMの領域を作成し、画像データをそちらに格納して表示させることにします。画像データはROMの初期化ファイル(.mifファイル)として作成しますが、これはUbuntuにopencvをインストールして作成しました。

液晶モジュールは196×196ピクセルで各色6ビットの深度です。このままのデータだとSRAMに収まらないのでやむなく各色3ビットに落としてデータを作成し、LCDに色データを与えるルーチンを書き換えてミクさんの画像が表示できました。

globe_lcd_miku1.jpg

画像は確認できましたが、各色3ビットなので512色しか表示できないので色がイマイチです。

秋月電子の球体液晶表示ユニットを動かしてみた

  • 投稿日:
  • by
  • Category:

秋月電子の新製品で興味あるデバイスが販売されていました。ドーム型スクリーン用カラー液晶プロジェクタ(球体液晶・光学表示ユニット)です。詳細な仕様書もあり、信号さえ作れば表示できそうな雰囲気です。

globe_lcd_1.jpg

このLCDは色信号をパラレルで入力してVSYNCやHSYNCといった信号を常に流し続ける必要があります。これをFPGAで動かしてみようと思いつきました。ちょうどCQ出版社のFPGA電子工作スーパーキットの付録のMAX10がありますのでこれが手頃です。

PDP-11をARTY FPGAボードで動かしてみた(4) UNIX V5を動かす

  • 投稿日:
  • by
  • Category:

これまでの作業でARTY FPGAボードはPDP-11になったと思われるのですが、やはりアプリケーションを動かさないとよくわかりません。

PDP-11のソースツリーでは各種UNIXを動かすキットが含まれています。ARTY FPGAボードではUNIX V5が動くようですので、これを動かすことで、PDP-11になっていることを確認してみます。

unix-v5のディスクセットを用意する

PDP-11用のUNIX V5のイメージデータが用意されていますので、これをソースツリーに持ってきます。

$ cd $RETROBASE/tools/oskit/unix-v5_rk
$ wget http://www.retro11.de/data/oc_w11/oskits/unix_v5_rkset.tgz
$ tar -xzf unix_v5_rkset.tgz

ターミナルを立ち上げる

UNIX V5のコンソールとなるターミナルウィンドウを立ち上げておきます。

$ cd $RETROBASE/tools/oskit/unix-v5_rk
$ console_starter -d DL0 &