投稿

電気たこ焼き器を購入

イメージ
ホームセンターへ買い物に行ったら、電気たこ焼き器が980円で売っていたので、買ってきました。アイリスオーヤマのプレートが外れないタイプで、少し古い機種のようです。 電気なので火力が弱いかな?と思っていたのですが十分な火力で、ひっくり返すのをもたもたしていると焼けすぎてしまうほどです。 焼きたてのたこ焼きは、外側カリッと中はトロッとたいへん美味しかったです。

ロードスターのドアスピーカーを交換

イメージ
車のドアスピーカーを交換しました。 初期型ロードスターのドア内は雨水の通り道になっていて、スピーカーが水に濡れます。今回右のスピーカーが水で腐って音が出なくなったので、左右とも MonotaROで 2個 3,000円くらいの安い 16cmスピーカーに交換しました。外して付けるだけの簡単な作業です。安いけれど十分いい音で鳴りました。 年式によってはスピーカーに水よけのカバーが付いているようなのですが、前回交換してから青空駐車で10年以上持ったので、カバー無しでもいいや。

電源が入らない電磁調理器を修理 EIH1470-B

イメージ
故障している電磁調理器「アイリスオーヤマ EIH1470-B IHクッキングヒーター」を購入しました。壊れているのに 2,550円もしました(笑)。 2013年製で現行商品のようです。 症状は、電源を入れても一瞬表示が全点灯してすぐに電源が切れるという状態です。外観は綺麗でしたが、分解してみると吹きこぼれが内部に入り込んでいました。 吹きこぼれ そう簡単には吹きこぼれが侵入しないような構造になっているので、よほどたくさん吹かしたのでしょう。 とりあえず、キャビネットを洗いました。 基板が腐食していて、一部放電したような跡があります。 弱電部分に放電の影響があったら修理は無理だなあと思いながら、作業を続けます。 洗浄してから、腐食しているところ、断線しているところを修正しました。 直ってしまいました。ラッキー (危険なので私のような素人が勝手に修理してはいけません。人が死にます。)

ONKYO GX-70AX ジャンク品 を購入

イメージ
ジャンク品の ONKYO GX-70AX を購入。1,000円でした。 壊れていたら修理しようと思っていたのですが、どこも壊れていなかったので掃除だけしました。 中古品・ジャンク品の清掃には、いつも食器用洗剤に台所用漂白剤を混ぜて使っています。汚れがよく落ちますし、漂白剤のにおいで清潔になった「気が」します(笑)。 漂白剤を素手で使うと手が荒れるので、気にする人は手袋をしたほうが良いです。 約 10cmのユニットで、箱も小さいので音質はあまり期待していなかったのですが、低音も良く出て印象の良い音です。低音と高音の調整ボリュームも付いていました。 裏側 音声入力が2つあります。 入力は単純な切り替えではなく、ミキサーで混ぜて聞くことができるので、かなり便利です。もちろんバランスの調整もできますし、片方だけの音を聞くこともできます。 中身 アンプは TDA2616 でした。 消費電力は、無音時 7W、結構大きな音を出して 9Wくらい。いつも使っているデジタルアンプと比べると、もう少し省エネだといいなといったところ。

SDカードを使ったFDDエミュレーターを試作

イメージ
フロッピーディスクドライブの信号 を見てみて、フロッピーディスクドライブの互換品を自分で作れそうな気がしたので、MMC / SDカードを使ったフロッピーディスクドライブのエミュレーターを作ってみました。 回路図  H8S FDD EMULATOR20141022.pdf ソースコード  2144_FD_EMULATOR20141020.zip マイコンは H8S/2144 で、開発環境はルネサスのHEW無償版です。回路図、ソースコードはどのような用途にでも自由にお使いください。 作成途中ですが、MFMエンコードや CRCの計算は正しく動いていて、X1 turbo の OS LSX-Dodgers 上で 2D と 2HD 形式のファイルの読み取りが正常に動作しました。シークが遅いせいか IPLからの起動はまだできません。書き込みもできません。 フロッピーディスクのCRC計算や、MFMエンコードの資料はなかなか見つからないので、そのサンプル程度には役に立つんじゃないでしょうか。 今のところ、古いパソコンのエミュレータでよく使われている、D88形式のイメージファイルを使っていて、STEP信号が来るたびに D88ファイルからトラックのデータを読んで、CRCを計算して、MFMでエンコードしてバッファに書き込むという動作をしているのでシークに時間がかかっています。 クロックビットの分イメージファイルのサイズが 2倍になってしまいますが、CRCの計算とMFMのエンコードをあらかじめ済ませておいた、独自形式のイメージファイルを使って速くしたらいいんじゃないかなと考え中です。 はじめ、READ DATA 信号の生成は、タイマーで 1ビット期間 (クロックビットを入れると 2HD では 1Mbps) づつ割り込みをかけて、IOポートをソフトウェアで操作して行ってみたのですが、H8Sではまったく間に合わなかったので、SCI のクロック同期モードを使うようにしました。 クロックビットを含めると 1トラック分のバッファに 25Kバイトも必要になるので、外付けRAMのあるジャンクのマイコン基板を使ったのですが、秋月で 1個 360円の PIC32MX が SRAM を 32Kバイト内蔵しているので、これを使えば外付け部品無しで作れるかも。 ま...

にんにくを植えて、キャベツを食べた

イメージ
にんにくを植えました。 9月頭に植えようと思っていたのですが、天気が悪かったり、面倒くさかったりで10月になってしまいました。 畑のキャベツが大きくなってきたので食べました。味は普通。 もったいないので、外側の硬くて濃い緑色の部分も炒めたり茹でたりして食べてみたのですが、青臭くて美味しくありませんでした(笑)。

ジャンク品の灯油ストーブを購入

イメージ
ジャンク品の灯油ストーブを購入しました。1,198円+送料1,944円。 今までポータブルストーブを一つしか持っていなくて、家の 1階と 2階にいちいち持って歩かなくちゃならないのが面倒だったので、前からもう一つ欲しかったのです。 ホームセンターで 7,000円くらいで買える商品ですが、中古で安く買えて良かったです。 中にゴキブリとかがいたら嫌なので、分解清掃しました。 2011年製で、天板の焼け具合からほとんど使用されていないもののようです。 たまたま、右のいままで使っていた2008年製ストーブと同じメーカーで、暖房能力も同じものでした。年式が新しくなってコンパクトになっています。

BDS C のサンプル - CP/M のバージョンと TPA のサイズを表示

イメージ
>BDS C の使い方 - 目次 /* BDS C のサンプル OSのバージョンと TPA のサイズを表示する 2014年9月29日作成 */ #include <stdio.h> main() { short *TPA; short TPASIZE; short VER; TPA=0x0006; TPASIZE=*TPA-0x00FF-1; VER=bdos(0x0C,0); printf("CP/M Version 0x%04x\n",VER); printf("TOP OF MEMORY 0x%04x\n",*TPA-1); printf("TPA SIZE 0x%04x (%u) byte / %u kbyte\n",TPASIZE,TPASIZE,TPASIZE>>10); } CP/M エミュレーターで実行 >cpm mem\mem CP/M Version 0x0122 TOP OF MEMORY 0xFDFF TPA SIZE 0xFD00 (64768) byte / 63 kbyte > X1 で実行 MSX で実行 >BDS C の使い方 - 目次

ThinkPad E420 HDD交換

イメージ
2年半くらい、ほぼ電源入れっぱなしで使っていた ThinkPad E420 のハードディスクが壊れたので、新品のハードディスクに交換しました。 容量は 500GBくらいあれば十分なのですが、500GB が 5,000円くらい、1TB が 6,000円くらいと値段があまり変わらないので、1TB の ハードディスクを購入しました。2TB も 7,000円くらいとなかなか安かったのですが、あまり容量が多くてもバックアップに困るので、今回は 1TB です。SSD は 512GB で2万円を超えるくらいと、高価なので買えません。 Windows7 から アップグレード版の Windows8 → Windows8.1 へとOSを入れ替えて使用していたので、また Windows7 から順番にインストールしていかなきゃならないかな? と思っていたのですが、Windows8.1 までをクリーンインストールした直後のバックアップ (コントロールパネル - ファイル履歴 - (左下)システムイメージバックアップ) が残っていたので、20分くらいで Windows8.1 が使える状態まで復旧出来ました。 その後 Windows Update が終了するまで何時間もかかりましたが。 データのバックアップは毎週取っていたので、データの紛失はありませんでした。バックアップ大事。 今回はバックアップを取るのに異常に時間が掛かるようになって、なんだかおかしいなと気づいたのですが、ディスクのプロパティからエラーチェックを行ってもエラーが検出されないので、そのまま一ヶ月くらい使っていました。 イベントログを見てもエラーではなく警告レベル。 回復モードで chkdsk を実行すると不良クラスターが多発していました。 今まで使っていたハードディスク。 2年と7ヶ月で 23,023時間使って、電源投入回数 191回。平均 5日づつの連続稼働でした。

BDS C で X1 turbo の DMA を使ってみる

>BDS C の使い方 - 目次 BDS C の使い方 - SHARP X1 で使ってみる で作った IO16.CRL の out16 関数を使っています。 test.c /* BDS C で SHARP X1 の DMA を使うテスト 2014年9月20日作成 X1 G-RAM はI/O空間 0x2000 - 0x27FF テキストアトリビュート 0x3000 - 0x37FF テキスト 0x4000 - 0x7FFF B 0x8000 - 0xBFFF R 0xC000 - 0xFFFF G */ void main() { /* グラフィックパレット初期化 */ out16(0x1000,0xAA); /* 1010 1010 */ out16(0x1100,0xCC); /* 1100 1100 */ out16(0x1200,0xF0); /* 1111 0000 */ /* GRAMクリア */ dma_rset(); dma_vfil(0x4000, 0xC000, 0xAA); dma_enbl(); puts("hit key\n"); pause(); dma_vfil(0x4000, 0xC000, 0xFF); dma_enbl(); puts("hit key\n"); pause(); dma_vfil(0x4000, 0xC000, 0x55); dma_enbl(); puts("hit key\n"); pause(); dma_vfil(0x4000, 0xC000, 0x00); dma_enbl(); puts("hit key\n"); pause(); /* GRAM Bプレーン適当書き込み*/ dma_m2v(0x0000, 0x4000, 0x4000); dma_enbl(); dma_rset(); puts("hit key\n"); paus...

BDS C でコマンドライン引数を取得

>BDS C の使い方 - 目次 /* BDS C でコマンドライン引数を取得 普通のC言語と同じですね */ #include <stdio.h> main(argc, argv) int argc; char *argv[]; { short count; for(count=1; count!=argc; count++) { printf("%s ",argv[count]); } /* argv[0] (このプログラムの名前)は得られないようでした */ } > cpm cc test\argv BD Software C Compiler v1.60 (part I) 43K elbowroom BD Software C Compiler v1.60 (part II) 40K to spare > cpm clink test\argv BD Software C Linker v1.60 Last code address: 0E82 Externals start at 0E83, occupy 0006 bytes, last byte at 0E88 Top of memory: FDFF Stack space: EF77 Writing output... 51K link space remaining > cpm test\argv > cpm test\argv aaa bbb ccc aaa bbb ccc > cpm test\argv aaa bbb ccc 11 22 33 aaa bbb ccc 11 22 33 > >BDS C の使い方 - 目次

BDS C の制限

>BDS C の使い方 - 目次 コメントは /* ~ */ 型式のみ 変数の型は、 char, short, int, unsigned のみ unsigned short とか unsigned int と書かず、 unsigned とだけ書く char は符号無しのみで signed char に相当するものは無い long や float は使えませんが、代わりに long の演算ライブラリが付属している。float は無し。 関数名は8文字までで、大文字小文字の区別はされない C で書いた関数なら、8文字以上使うとエラーが出ますが、アセンブラで書いた関数の場合エラーが出ませんので 「 func_aaa2 を呼び出そうとして func_aaa1 を呼び出してしまう」ということが起こるので注意 変数名も8文字までですが、大文字小文字の区別はする 配列は二次元まで sizeof 演算子で配列の大きさを得られない sizeof(int) のように、sizeof 演算子に型指定子を直接与えることが出来ない(変数名を与えなければいけない) typedef が無い 関数宣言時に引数の型を括弧内に書けない 関数のプロトタイプ宣言ができない このくらいの制限に気をつければ、プログラムを書くのに困らないんじゃないでしょうか。現代の C言語と比べると制限が多いですが、アセンブラで書くのと比べれば天国ですよね。 サンプル /* BDS C の制限 */ #include <stdio.h> main () { /* char a=10; のように宣言時に初期化出来ない */ char c; short s; int i; unsigned u; char array[20]; c=0xFF; s=0xFFFF; i=0xFFFF; u=0xFFFF; printf("char SIZE:%d 0x%04x = %%d:%5d %%u:%5u\n",sizeof c,c,c,c); printf("int SIZ...

BDS C の使い方 - 目次

CP/M 上で動く、パブリックドメインの Z80用Cコンパイラ BDS C の使い方。 BDS C の使い方 - とりあえず使ってみる BDS C の使い方 - MSXで使ってみる BDS C の使い方 - マシン語とのリンク(インテルニーモニック) BDS C の使い方 - マシン語とのリンク(M80.COM を使う) BDS C の使い方 - マシン語とのリンク(ZASM.EXE を使う) BDS C の使い方 - SHARP X1 で使ってみる BDS C の制限 BDS C でコマンドライン引数を取得 BDS C で X1 turbo の DMA を使ってみる BDS C のサンプル - CP/M のバージョンと TPA のサイズを表示

BDS C の使い方 - SHARP X1 で使ってみる

イメージ
>BDS C の使い方 - 目次 BDS C で マシン語とのリンクのやり方がわかったので、SHARP X1 で I/Oポートを操作してみます。 X1 は I/O空間が16ビットなので、アドレスを16ビットで指定する入出力関数を作りました。 ; FILENAME : IO16.CZM ; BDS C 用 16ビットI/O空間入出力 ; INCLUDE "BDSZASM.LIB" ; アセンブラから c.ccc (ccc.asm) ; にアクセスするのに必要なヘッダファイル FUNCTION in16 ; int in16(address) CALL ma1toh ; 1つ目の引数を HLとAレジスタに入れる PUSH BC ; BCレジスタは保存しなければいけない LD B,H LD C,L ; BC=HL IN A,(C) LD L,A LD H,0 POP BC RET ; HL が返り値になる ENDFUNC FUNCTION out16 ; void out16(address, data) CALL ma1toh ; 1つ目の引数を HLとAレジスタに入れる LD (arg1),HL ; arg1 はBDSZASM.LIBで定義されているワーク CALL ma2toh ; 2つ目の引数を HLとAレジスタに入れる ; 同じように 7番目の引数まで取り込める PUSH BC L...