ほげめも(October 18 1998)

Access counter:

Sunday, October 18 1998

Sun Oct 18 15:55:48 JST 1998

おきたた。うーむ。

風がものすごく強い。びゅうびゅう鳴ってこわいぞ。

Sun Oct 18 21:03:04 JST 1998

うちかえり

Sun Oct 18 22:12:55 JST 1998

linux-users を読んでいたら、 Debian の Netscape で RealPlayer とかを起動するときに

sh: error in loading shared libraries
/usr/lib/netscape-ja/netscape/liblocale.so: undefined symbol: _Xsetlocale
とかいうエラーがでてうまくいかない問題に関する話題がでているのを見つけた。 とりあえず、/usr/X11R6/bin/jnetscape の中の
# Java なページに出会っても大丈夫。
# libc.so.5.4.38 の場合には liblocale.so だけで大丈夫です。
LD_PRELOAD="$NETSCAPEDIR/liblocale.so"
# Java なページに出会っても大丈夫。
# libc.so.5.4.38 の場合には liblocale.so だけで大丈夫です。
#LD_PRELOAD="$NETSCAPEDIR/liblocale.so"
LD_PRELOAD="/usr/lib/libc5-compat/libX11.so.6:$NETSCAPEDIR/liblocale.so"
としとけばいいらしい。これでうまくいくようになった。


Monday, October 19 1998

Mon Oct 19 05:29:22 JST 1998

ねたりん。 おきてから本をよみふける。

Mon Oct 19 07:29:33 JST 1998

やばい、時間がない。

Mon Oct 19 08:47:35 JST 1998

うへ。おはようさくせん完了。

先週の月曜日に注文して首をながーくしてまちうけていた品々が、 先週の火曜日には発送され、 少なくとも翌日には到着していたことを知り、 怒り心頭に達する。うがー。

Mon Oct 19 17:10:25 JST 1998

情報輪講終了。はらへったー。 昼間に残しといた弁当でもたべるかしら。

Mon Oct 19 17:48:01 JST 1998

さっきコムサテライトから届いた PC を組みたてるであるぞ。 がしかし、組みたてたいんだけど あたしにそんな暇はないから他人にまかせることにした。 あうーん。

Mon Oct 19 19:00:38 JST 1998

回路をつくるん。

Mon Oct 19 20:40:58 JST 1998

OB 会の仕度についてミーティングをやった。 まにあうのかしらん。

弟子の組み立てた PC はあっさりと一発で動いた模様。 もうだれが作ってもとらぶりませんなー。つまらん。 次は Windows 98 と Linux をインストールしてもらう予定。

Mon Oct 19 21:38:35 JST 1998

昼間に学内便で届いていた履修状況確認表を今になってしげしげと眺める。 卒業に必要な単位はぜんぶそろったみたい。 ほっ。 まだ成績がついてない講義もいくつかあるけどね。 結局 4 単位くらいを余分にとってしまったらしい。

Mon Oct 19 22:54:26 JST 1998

とりあえず Windows 98 のインストールは終了したらしい。 インストールが終了したころには、 EtherExpress Pro100+ も SoundBlaster AWE64 も 勝手にドライバがインストールされ、 Microsoft ネットワークでよそのマシンをブラウズできるまで 使えるようになっていた。 NetWare とか NetBEUI とかよけいなプロトコルでなくて、 TCP/IP のみがインストールされるようになっていたのは、 Microsoft も反省したということだろうか。

さすがに Millennium G200 までは勝手にドライバをインストールしてくれなかった ので、ついてきた CD-ROM から自分でいれた。 しかしそれにしてもこのiiyama の 1024x768 液晶は、 640x480 とかで表示してると勝手に拡大表示しやがって、 はっきりいって見にくい。 しかも拡大表示以外のことはできないらしい。 しまったな。


Tuesday, October 20 1998

Tue Oct 20 00:27:25 JST 1998

はうー はらがへったー

Tue Oct 20 08:51:56 JST 1998

おきたん。
おはようさくせん。

Tue Oct 20 09:28:47 JST 1998

ちうおうの食券販売機に 50 円券が追加されていて感動。でかした!! しかしそれよりなにより、もう冬なんだからなまたまご販売してくれー!!!

Tue Oct 20 10:04:04 JST 1998

Protel98 Service Pack 3 をインストールする。 いろいろな手抜きのバグとしか思えない点が、多数改善されているようである。 マニュアルに書いてあることすらできないってのは、 いくらなんでもひどすぎるよなー。

Tue Oct 20 11:01:36 JST 1998

Solaris で、 /var/tmp がいっぱいのときに vi を使おうとすると、 device full とかなんとかいわれる。 それでもいちおう使えるんだが、dd とか押して バッファを使おうものなら、また device full になって なんと ex コマンドモードに入ってしまうことがわかった。 これは すごい。

Tue Oct 20 14:18:15 JST 1998

TOTOKU の巨大ディスプレイをゲット。わーいい。

Tue Oct 20 14:51:42 JST 1998

1600x1200 75Hz の画面を見て感動。はっきりって正視できない(嘘)。 とにかくひろい。 でもつかってるビデオカードが ViRGE/VX のやつでしょぼいのでくっきりしないけど。

よのなかってすでに、こういうのがふつーなんでしょうか。 ディスプレイとビデオカードにはやはり金かける価値があるもんだなあと思った。 ていうか、CAD とかやる場合はこういう画面でもないとやってられんっす。

Tue Oct 20 16:22:15 JST 1998

さて、回路ができたらテストをしなくてはな。 弟子に AKI-H8 の書き込みキットを組み立ててもらうことにする。 あたしはその間に Linux からダウンロード環境のチェックをしよう。

Tue Oct 20 19:07:37 JST 1998

めしくった。

AKI-H8 基板はできたみたい。ごくろうさま。 あたしのほうはというと、ld がうまく動かないのでそちらのほうを調べている。 ld script とかいうものを勉強しないといけないらしい。 けっこうてこづりそうな予感。

Tue Oct 20 23:35:02 JST 1998

再び Linux のインストールやらなんやらで頻繁に呼びだされる。 ld script についてはだいたいわかった。


Wednesday, October 21 1998

Wed Oct 21 01:32:40 JST 1998

さっきから H8 用のテストプログラムをコンパイルしようとがんばっているが、 newlib を使っていると 空の main() しかないプログラムをコンパイルしても、 バイナリの大きさは 8KB くらいになってしまうようだ。 これでは H8 の 4KB のメモリ空間には収まらないな。 いったいなにがわるいんだろう。

Wed Oct 21 08:39:39 JST 1998

ねたねた。おはようさくせん。

Wed Oct 21 08:59:21 JST 1998

いつのまにか Linux の acroread が Netscape の中で 動くようになっていた。かっこよすぎる。

Wed Oct 21 11:30:15 JST 1998

家に帰った。なんていうか、さむーい。

Wed Oct 21 13:25:06 JST 1998

はらへった。

AKI-H8 の動作チェック。 LED を光らせるとかいったテストプログラムを作らねばいかんが、 H8 のアセンブリ言語なんて知らないので 一から勉強しなくてはいけない。はう。

Wed Oct 21 13:32:03 JST 1998

わーい
できた
わーいい
一撃で動いた
わーいいい
やった
わーいいいい
すごい

Wed Oct 21 14:15:42 JST 1998

newlib までリンクしたやつもちゃんと動くことが確認できた。 もうぜんぜん問題なしっすね。 しかし出力が最低でも 8KB とかいうサイズになっちゃうのは、 いくらなんでもでかすぎだな。

Wed Oct 21 15:22:32 JST 1998

ごはんかってきた。
ていうか猛烈に寒い。

Wed Oct 21 16:03:16 JST 1998

はて、H8 にはメモリ空間のてっぺんに memory mapped I/O なアドレス空間があるんだが、 ここをプリプロセッサとかポインタとかにたよらず ちゃんと C のシンボルでアクセスするために 変数の配置アドレスを指定するには、 どういう方法を使うのがいいんだろうか。

ld script を見ると、 問題の箇所をさす eight とかいうメモリ空間と .eight とかいうセクションがあるから、 アセンブリ言語でここにシンボルをずらずら送出していけばいいだろうか。 しかしこれでバイナリのサイズが増えたらやだな。

Wed Oct 21 17:51:21 JST 1998

いろいろと ld script について理解を深める。 昔 Borland C をちまちまと使って DOS エクステンダみたいな OS もどきを作ろうとしていたときに、 いちばん面倒くさかったのが メモリへのコードやデータの再配置とかそういうのだったが、 GNU の binutils とかはこれらの問題をスクリプトに記述することによって 簡単に解決できるばかりでなく ROM 化などにも対応できる柔軟な 構成になっているのを知り、なかなか感動した。 さっさとこいつらの存在を知っていればなあ…。 って、3 年とか 4 年前にはあったのかしらん。

Wed Oct 21 19:37:52 JST 1998

めしくつた。 あめいやん。

Wed Oct 21 19:52:57 JST 1998

H8 のメモリマップ I/O を、 アセンブラや C コンパイラからスマートに使うにはどうしたらいいか。 プリプロセッサに頼って

/* DMAC channel 0A */
#define MAR0AR	(*(volatile char *)0xfff20)
#define MAR0AE	(*(volatile char *)0xfff21)
#define MAR0AH	(*(volatile char *)0xfff22)
#define MAR0AL	(*(volatile char *)0xfff23)
とかいう記述をずらずら並べていく方法はだれでも思いつくが、 これでは C でしか使えないし、 コンパイラやアセンブラ、リンカなどが持つせっかくのエラーチェック機能とかも 使っていないことになるので、芸がない。 なんとかしてこれらのレジスタを変数シンボルとして認識させる方法を考える。

binutils が生成した ld script を見ると、 これらのメモリマップ I/O が存在している H8 の 16MB メモリ空間の最後の 256 バイトは、 .eightというセクションとして定義されていることがわかる。

MEMORY
{
        /* 0xc4 is a magic entry.  We should have the linker just
           skip over it one day... */
        vectors : o = 0x0000, l = 0xc4
        magicvectors : o = 0xc4, l = 0x3c
	/* We still only use 256k as the main ram size.  */
	ram    : o = 0x0100, l = 0x3fefc
	/* The stack starts at the top of main ram.  */
	topram : o = 0x3fffc, l = 0x4
	/* This holds variables in the "tiny" sections.  */
	tiny   : o = 0xff8000, l = 0x7f00
	/* At the very top of the address space is the 8-bit area.  */
	eight  : o = 0xffff00, l = 0x100
}
SECTIONS 				
{ 					
/* (中略) */
.eight : {
	*(.eight)
	}  > eight
/* (中略) */
}
そこで、スタートアップルーチン crt0.S の中で
	.section .eight
	.org 0x20
	.global _MAR0AR
_MAR0AR:	.byte 0
	.global _MAR0AE
_MAR0AE:	.byte 0
	.global _MAR0AH
_MAR0AH:	.byte 0
	.global _MAR0AL
_MAR0AL:	.byte 0
; (後略)
といったような記述をレジスタの数だけ並べていけば、 アセンブラからでも C からでも外部参照シンボルとしてスマートに参照できる。 リンクした a.out のシンボル状態を nm で見てみると、
% h8300-hms-nm -n a.out
(中略)
000ff5e0 B _end
000ffefc ? .stack
000ffefc ? _stack
000ffefc ? _stack
000fff00 ? .eight
000fff20 ? _MAR0AR
000fff21 ? _MAR0AE
000fff22 ? _MAR0AH
000fff23 ? _MAR0AL
といった具合にうまく配置されていることがわかる。 なお、これらの初期値つきバイト列が 最終生成物に含まれてはまずいので、 ld script の定義を次のように書きかえておく。 ここらへんの詳しくは ld の info を参照である。
.eight (NOLOAD): {
	*(.eight)
	}  > eight

むかし MS-DOS でこういうことをやろうとしていたときは、 segment 疑似命令に at とかいう修飾子をつけて シンボルを定義していたと思うが、 これに類する手軽な疑似命令は gas では使えないようである。 ld script を手で書くしかないらしい。

Wed Oct 21 20:55:12 JST 1998

つーわけですげー苦労してレジスタのテーブルを書いた。 あーつかれた。

Wed Oct 21 21:29:35 JST 1998

Emacs 20 のためのフォントセットの定義をまたいろいろいじくってみるが、 これさっぱりわけがわからん。

Emacs.Font: fontset-14

Emacs.Fontset-0: -*-fixed-medium-r-normal-*-12-*-*-*-*-*-fontset-12,\
	japanese-jisx0201:-misc-fixed-medium-r-normal--12-*-jisx0201.1976-*,\
	japanese-jisx0208:-misc-fixed-medium-r-normal--12-*-jisx0208.1983-*,\
	japanese-jisx0212:-misc-fixed-medium-r-normal--12-*-jisx0212.1990-*,\
	chinese-gb2312:-*-*-medium-r-*--12-*-*-*-*-*-gb2312.1980-*,\
	korean-ksc5601:-*-mincho-medium-r-*--12-*-*-*-*-*-ksc5601.1987-*

Emacs.Fontset-1: -*-fixed-medium-r-normal-*-14-*-*-*-*-*-fontset-14,\
	japanese-jisx0201:-dt-gothic-medium-r-normal--14-120-75-75-m-60-jisx0201.1976-*,\
	japanese-jisx0208:-dt-gothic-medium-r-normal--14-120-75-75-m-120-jisx0208.1983-*,\
	japanese-jisx0212:-dt-gothic-medium-r-normal--14-140-72-72-m-140-jisx0212.1990-*,\
	chinese-gb2312:-*-*-medium-r-*--14-*-*-*-*-*-gb2312.1980-*,\
	korean-ksc5601:-*-mincho-medium-r-*--14-*-*-*-*-*-ksc5601.1987-*

Emacs.Fontset-2: -*-fixed-medium-r-normal-*-16-*-*-*-*-*-fontset-16,\
	japanese-jisx0201:-dt-gothic-medium-r-normal--16-*-*-*-*-*-jisx0201.1976-*,\
	japanese-jisx0208:-dt-gothic-medium-r-normal--16-*-*-*-*-*-jisx0208.1983-*,\
	japanese-jisx0212:-dt-gothic-medium-r-normal--16-*-*-*-*-*-jisx0212.1990-*,\
	chinese-gb2312:-*-*-medium-r-*--16-*-*-*-*-*-gb2312.1980-*,\
	korean-ksc5601:-*-mincho-medium-r-*--16-*-*-*-*-*-ksc5601.1987-*

Emacs.Fontset-3: -*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24,\
	japanese-jisx0201:-*-fixed-medium-r-*--24-*-jisx0201.1976-*,\
	japanese-jisx0208:-*-fixed-medium-r-*--24-*-jisx0208.1983-*,\
	japanese-jisx0212:-*-fixed-medium-r-*--24-*-jisx0212.1990-*,\
	chinese-gb2312:-*-*-medium-r-*--24-*-*-*-*-*-gb2312.1980-*,\
	korean-ksc5601:-*-mincho-medium-r-*--24-*-*-*-*-*-ksc5601.1987-*
こんなんでいいんだろうか?

Wed Oct 21 21:53:29 JST 1998

H8 のほうはちゃんと動いた。 苦労がむくわれたって感じ。

Wed Oct 21 22:33:21 JST 1998

こういう単純なプログラムを作った。 いちおう、意味はある。AKI-H8 基板上でなら。

#include "eight.h"

int main(void)
{
  P4DDR=0x00;
  P4PCR=0xff;
  P5DDR=0xff;

  while(1) P5DR=P4DR>>4;

  return 0;
}
gcc -mh -mrelax とかしてコンパイルし、a.outを作った。 こいつを gdb のシミュレータで動かしてみたら、
(gdb) disassemble main
Dump of assembler code for function main:
0x146 <main>:   01 00 6d f6       mov.l er6,@-er7
0x14a <main+4>: 0f f6             mov.l er7,er6
0x14c <main+6>: 18 aa             sub.b r2l,r2l
0x14e <main+8>: 6a aa 00 0f ff c5 mov.b r2l,@0xfffc5:32
0x154 <main+14>:        fa ff             mov.b #0xff,r2l
0x156 <main+16>:        6a aa 00 0f ff da mov.b r2l,@0xfffda:32
0x15c <main+22>:        6a aa 00 0f ff c8 mov.b r2l,@0xfffc8:32
0x162 <main+28>:        6a 2a 00 0f ff c7 mov.b @0xfffc7:32,r2l
0x168 <main+34>:        11 0a             shlr  r2l
0x16a <main+36>:        11 0a             shlr  r2l
0x16c <main+38>:        11 0a             shlr  r2l
0x16e <main+40>:        11 0a             shlr  r2l
0x170 <main+42>:        6a aa 00 0f ff ca mov.b r2l,@0xfffca:32
0x176 <main+48>:        40 ea             bra   .-22 (162)
End of assembler dump.
(gdb) 
というわけで、 レジスタアクセス専用の 8 bit アドレッシングモードが生成されていないことがわかった。 うーむ、ちといまいち。

Wed Oct 21 23:20:07 JST 1998

はてはて、さっきから ld の info の Machine dependent features とかいう項に書いてある 次の記述の効果を見ようといろいろ試しているのだが、 さっぱりうまくいかないぞ。

`ld' and the H8/300
===================

   For the H8/300, `ld' can perform these global optimizations when you
specify the `--relax' command-line option.

*relaxing address modes*
     `ld' finds all `jsr' and `jmp' instructions whose targets are
     within eight bits, and turns them into eight-bit program-counter
     relative `bsr' and `bra' instructions, respectively.

*synthesizing instructions*
     `ld' finds all `mov.b' instructions which use the sixteen-bit
     absolute address form, but refer to the top page of memory, and
     changes them to use the eight-bit address form.  (That is: the
     linker turns `mov.b `@'AA:16' into `mov.b `@'AA:8' whenever the
     address AA is in the top page of memory).
こういう単純なプログラムを用意してやってみてるんだけどね。 8bit アドレッシングモードになんてかえてくれない。 なんでだろー。
	.section .text
	.global	_start
_start:
	mov.b	r0h,@0xff:8		; 8bit addressing
	mov.b	r0h,@0xffff:16		; 16bit addressing(こいつかえてくれ)
	mov.b	r0h,@0xffffff:24	; 24bit addressing


Thursday, October 22 1998

Thu Oct 22 01:38:35 JST 1998

結局、あたしの勘違いだったことが判明。 あろうことか横で見ていたせんせに指摘されてしまった。 使っていた ld script がバグ入りだったの。なんてこった。

結局外部参照シンボルに対してのみ、 ld が 8 bit アドレシングモードにおきかえてくれるということがわかった。 さっきの単純なプログラムはアドレスをじかがきなので、 変更しない。正しいね。

Thu Oct 22 03:29:13 JST 1998

Sun 色の Sun がきた。わーいい。これで憧れの 日本語 CDE がついにわたしのものにー。 でも今使ってる PC の置き場がない。どうしよう。

AKI-H8 の割り込みを使わないシリアル通信プログラムはとりあえずできた。 次は割り込みを使ってバッファリングするやつを作ってみましょうか。

Thu Oct 22 08:59:12 JST 1998

ねた。おきた。さむくてねむい。

Thu Oct 22 11:01:40 JST 1998

Ultra30 にした。 わーいい。 しかしやっぱこのキーボード慣れてなくて使いにくい。

Thu Oct 22 12:35:46 JST 1998

リングバッファのコードをしこしこ書く。 こういうコードいままでいったい何回書いてきたかねー。 今回はアセンブリ言語が使えず C で書いているので(弱)、 条件分岐命令が入ってしまいちといまいち。

C のビットフィールドの定義のしかたを忘れちった。 MSB と LSB どっちから定義していくかは、処理系依存だとさ。

struct scr {
  unsigned int CKE:2;
  unsigned int TEIE:1;
  unsigned int MPIE:1;
  unsigned int RE:1;
  unsigned int TE:1;
  unsigned int RIE:1;
  unsigned int TIE:1;
};

extern volatile struct scr SCR0;
extern volatile struct scr SCR1;
こんなのばっか。

あまりにも頻繁に unsignedunsinged とうちまちがえるんで、 久々に abbrev-mode の設定をした。 そしたら定義を逆にしてしまったらしく、 unsignedunsinged に直されるようになってしまた。 あうー。 とりあえずそういうまちがったのは M-x list-abbrev すれば 消すことができるということを知った。

Thu Oct 22 12:56:46 JST 1998

上の SCR0 とかに対して、 bit field ぜんぶを 0 でクリアしようと思って

(unsigned char)SCR0=0;
とかしたらコンパイラに怒られた。(ぉ
*(unsigned char *)&SCR0=0;
とするしかないのか?

Thu Oct 22 13:00:30 JST 1998

gcc のアセンブル出力を検証中。

  1. volatile な変数には気をつけよう。

    volatile int sci1_rxs;
    volatile int sci1_txs;
    
    とか定義されてるのに対して、初期化コードで無造作に
    sci1_rxs=sci1_txs=0;
    
    とかやると、こういうコードを生成されてしまうぞ。
    sub.w   r3,r3
    mov.w   r3,@_sci1_txs
    mov.w   @_sci1_txs,r2
    mov.w   r2,@_sci1_rxs
    
    なんでいっぺん書いた sci1_txs の値を また読みだしてるんだよーとか思ったが、 volatile の意味考えたらこうなるのが当然であるな。 ちゃんと分けて書きましょう。
    sci1_rxs=0; sci1_txs=0;
    

  2. そのつぎにくるコードが

    volatile char sci1_rxbuf[SCI1BUFSIZE];
    volatile char *sci1_rxr, *sci1_rxw;
    ...
    sci1_rxr=sci1_rxw=sci1_rxbuf;
    
    とかいうふうになってんだが、 これの出力はさっきの sci1_rxssci1_txs とかのようにはなってくれないことに気づいた。
    mov.l   #_sci1_rxbuf,er2
    mov.l   er2,@_sci1_rxw
    mov.l   er2,@_sci1_rxr
    
    これはつまり volatile 修飾子をポインタ変数に対して 用いるときは、const 修飾子と同様の注意 が必要だということでしょう。 つまりポインタ変数自体を修飾するのか、 ポインタ変数がさしているものを修飾するのかという使いわけですな。

    const のほうは、C++ を習うときにくどいほど 注意されるのにね。 ていうかこのリングバッファのコードの場合は、 もろバグのもとになりかねないから気をつけないといけない。 結局こう書くのが正しいということになる。

    volatile char sci1_rxbuf[SCI1BUFSIZE];
    volatile char * volatile sci1_rxr;
    volatile char * volatile sci1_rxw;
    ...
    sci1_rxr=sci1_rxbuf;
    sci1_rxw=sci1_rxbuf;
    

  3. h8300-hms-gcc の bit field は、 MSB から定義するらしいことがわかったー。 いやーん信じていたのにー。(わかめ

    関係ないけど、 どうも big endian って気味わるいっすー。 プログラマの側からすれば、 little endigan に比べてかえって面倒なことが多いと思うんだけどなあ。

  4. gcc の bit field の操作コードは 期待していたより相当しょぼいっす。 4 つの bit を立てるだけなのに 1 bit ずつ読んで計算して書くを繰りかえされたらたまらん。 さっきの unsigned char なキャストつかって まとめて値を代入したほうがよいな。

  5. しょぼいのは対象が volatile だからだった。 volatile とってみたら、 読みと書きは 1 回だけですんでいた。 融通がきかないのねえ。まあしょうがないが。

  6. こればっかりは納得いかん。 なんで volatile にしただけで、 レジスタ間接のアドレシングモードを使うようになるんだ? 説明しろ。

Thu Oct 22 15:04:40 JST 1998

いろいろ苦労したが、とりあえず割り込みを使った シリアル送受信プログラムができた。 しかし、単にこっちが入力した文字をエコーするだけのプログラムを 走らせてるんだが、 1 文字いれると 3 文字でてくるということになっている。 なんだこれ。 でもまあここまでできてしまえばあと少しだということは はっきりしているので、気は楽だ。

割り込みはちゃんとスタートアップルーチンで 許可状態にしておこう。

;; enable interrupt
andc	#0x7f,ccr
こういうマクロを書いて使っているが、 もうちょっと考えなおしたほうがいいかもしれない。
inline void cli(void) { __asm__("orc #0x80,ccr"); }
inline void sti(void) { __asm__("andc #0x7f,ccr"); }

Thu Oct 22 16:37:41 JST 1998

できた。結局うまくいかなかったのは、 割り込みハンドラでレジスタを全部退避していなかったことが原因だった。 この状態でずーっとずーっと動かんと悩んでいたらしい。かなりばか。 ていうか、こんなあほなことしてても中途半端に動いちまうのが悪い。 (おいこら

Thu Oct 22 20:25:33 JST 1998

16x2 液晶に文字がだせるよーになった。 4bit モードでつながっているんで苦労したけど。 しかしこんだけできればポケコンがすぐにできそーだな。 すばらしい。

この液晶は LED バックライトつけるとかっこいいっす。PHS みたい。 しかしながら、 100Ωの抵抗つけてマイコンと同じ 5V につなげちゃってるんだが これだと3端子レギュレータがたまらなく熱くなるんで ちと問題あり。

Thu Oct 22 21:37:33 JST 1998

はあはあ。たまらん。 めしをかってきたが、まだくってない。 ぐー。

Thu Oct 22 21:47:02 JST 1998

VDEC の CAD の利用登録マシンに orion を加えた。


Friday, October 23 1998

Fri Oct 23 02:29:46 JST 1998

CDE(dtwm) を使っているとときたま、 ていうか頻繁に、特定の X の client が起動できなくなることがある。 LED がちかちか光るがなんもでてこない。 エラーかなにかを出して死んでしまったわけでもなく、 ただ sleep 状態のままうんともすんともいわなくなるのだ。 たとえば、あるていど新しいバージョンの emacs や mule がそうである (19.28 は該当しない)。

それとツールボックスから開く端末エミュレータは dtterm -sdtserver なんてのを exec しようとするんだが、 こいつも起動してこない。 そのうえ、すでに開いている端末エミュレータが同時に凍ってしまうという 怪現象がおきる。 しかたなく xkill で消すと、他の端末エミュレータ全部を道連れにしておちていき、 意味不明なダイアログボックスをだす。

しかし同じ dtterm のくせに -sdtserver がつかないやつ (root window で右クリックしてだせるコンソールとか)は、 ぜんぜん平気な顔して動いているのである。 なんか特殊な daemon でも死んじゃってるんだろうか。 dtterm のマニュアルを見ても -sdtsever なんて オプションはどこにも書かれていない。 どうにかしてくれ。

Fri Oct 23 02:49:33 JST 1998

PROMGEN の使い方。詳しくは dynatext のオンラインドキュメントを見よ。

% promgen -s 256 -u 0 hoge.bit
これをやると hoge.mcs という名前の Intel HEX ファイルができる。 こいつを AT17C256 に書きこんで動かすためには、 最後の 4 bytes だかになんか書いて リセットとかの極性をあわせないといけなかったような気がする。 どうやるんだったかなー。

Fri Oct 23 03:03:18 JST 1998

ちゃんと動いていた ROM の内容を Chiplab で吸ってみたら、 0x8000-0x8003 の 4 バイトに 全部 0 を書きこんでおけばいいらしいことがわかった。 ふむふむ。

Fri Oct 23 05:39:42 JST 1998

うーむなかなかはかどらず

Fri Oct 23 10:25:48 JST 1998

うはーむにゃむにゃ。 4 時間くらい寝ただろうか。 ねむいー。

Fri Oct 23 11:54:17 JST 1998

FPGA Express のクロックバッファが 2 つになるバグにはいつもむかつくぜー。 今回ももろに誤動作の原因になっていたらしく、自分でネットリストを修正した。 新しいバージョンではこのバグは直ってるらしいんだが。 だれかなんとかしてくれー。

Fri Oct 23 13:30:11 JST 1998

パルスエンコーダな XIILNX の回路チェック完了、基板も完成。 AKI-H8 から制御できるようになった。 次はモータドライバの PWM 回路だ。


Saturday, October 24 1998

Sat Oct 24 00:49:58 JST 1998

うっへー
やっべー
時間がねー

首がサーボするようになったけど がたがでかくてこわいっす。 分解しちゃうかも。

Sat Oct 24 21:10:52 JST 1998

終了。ぐー

Sat Oct 24 21:59:31 JST 1998

気がついたら Linux 2.1.125 でジョイスティックのデバイスドライバが 大増強されていた。 Microsoft の Sidewinder や Glavis のパッドなど、 種類がかなり充実している。 Force Feedback Pro もリストの中にはあったけど、 モータが動かせるかどうかは謎。

いちばん衝撃だったのはパラレルポートに繋がるタイプのドライバで、 NES(ふぁみこん) や SNES(すーぱーふぁみこん)は基本として、 アタリ仕様(懐)、メガドライブ、セガサターン、PlayStation といった パッドがすべてサポートされている。 テキストファイルに結線図いりのドキュメントっがついてきていた。

これで自分で ioperm(2) 使ってパラレルポートをぺちぺち叩く必要が なくなったというわけか。うーむすばらしい。 PlayStation Dualshock の解析情報を contribute してやれ。>某

Sat Oct 24 22:06:32 JST 1998

Linux Joystick の WWW ページは ここだ!!

Nintendo 64 パッドをサポートしたいとぬかしておる。 やれるもんならやってみろー!!(ぉ

Sat Oct 24 22:48:58 JST 1998

さっそくそこにあった Microsoft Sidewinder Force Feedback Pro をつなげて insmod してみたら、なぜか Precision Pro として認識された。 なぜだろう。 6 軸 9 ボタンがすべてよめる。よめるぞ。はあはあ。

Sat Oct 24 22:56:47 JST 1998

ついでに linux-joystick mailing list に参加。


Last modified: Sat Oct 24 22:57:02 1998