パソコン・インターネット

2019年9月10日 (火)

ひさびさの1.2Mフォーマットのフロッピ

現用PCのハードディスクに保存してあるはずの昔のファイル。
ぜったいに作業フォルダーごと保存してあるはずなのに見つからない・・・
MS-Cでコンパイルしてたので、その関連ファイルが残っているはず。
でも、HDD内に無い・・・。 どこに?

・歴史
Windows普及(DOS/V機)の前はPC-9801が開発環境。
その前は自作のZ-80・CP/M。
仕事のプログラムだけでなく趣味のあれこれのファイル、喪失しないようハードディスクやMO、DVDにバックアップしてあります。
CP/MからPC-9801への移行期には、8インチのCP/MディスクをPC-9801で保存。
MS-DOS時代はHDDだけでなく、予備的にMOやCDへもコピー。
Windowsになっても基本は同じ。
昔のファイルもPC内のHDDと外付けHDD、そして適時DVDに保存。
  ※MOは使わなくなったけど置いてある。
   まだドライブは生きている。

だもんで、必要なフロッピはすべてバックアップしているはずだとの思い込みが・・・
ちょいと「Z80アセンブラ」の話が出たんで、フリーソフトのソースの在処を探したんです。
それが見つからない。

出来上がって動く実行ファイルや関連するドキュメント(アマチュア無線のパケット通信、VAP-NETのログ)の一部は残っているんですが肝心のソースファイルが無いのです。

「保存のし忘れの可能性大」ということで、3.5インチフロッピを保管してある引き出しを探してみました。
すると、その中から発見!
バックアップしなくて良いだろうと判断した、雑誌の付録フロッピなどのところから。
11_20190910084901

当時のフロッピ、バックアップしたらその行き先「MO」とか「HDD」と赤ペンでマークしてあります。
見つかったフロッピにはそのマークがありませんでした。
まったくもってバックアップのし忘れ。
  ※しかも、当時使ってたPC-9801のHDDからは消したみたい。
   その理由は思い出せない。
   ひょっとすると、自宅のPCでゴソゴソしてたのかも。

ファイルの日付は1991年7月
28年前のものでした。
昨日発掘できなかったら、失っていたかもしれません。
あぶなかった。

※元はCP/Mのフリーソフト。
 Cで書いてあるのでMS-DOSにも移植可能。
 扱えるラベルの数を増やすにはとか、カナを通るようにとか、
 「DEC (IX-nn), DEC (IY-nn)」命令展開のバグを見つけたりと。


さらに・・・ (思い込みで手間が増える)
現用のWindows PCにFDDは付いているんですが、「PC-9801の1.2Mフロッピは読めない」っと思い込んでいたのです。
だもんで、ひさしぶりにPC-9821を起動。
TABキーを押しながら電源オンすると「MS-DOS」と「Windows 95」を選べます。
Windows 95にするとLANにつながるので、現用PCからPC-9821をアクセスできます。
これで1.2Mのフロッピを読み取りました。
   ※作業はこれで完了。

現用PCのFDD、そういや長いこと使ってません。
ちゃんと動くかどうか1.4Mのフロッピを入れて確認。
きちんと読み書きできました。

そのあと「ほんとに3モードFDDじゃないのか?」の記憶が不確かだったので、試しに1.2Mのフロッピを入れてみると・・・
読み書き可能。
PC-9801の起動は不要だったという話でした。


| | コメント (0)

2019年4月 1日 (月)

メモ:早明浦ダム空撮

早明浦ダム放流時の空撮映像がアップされています。

http://www.water.go.jp/yoshino/ikeda/sameura/same_118.html

「★★★ 職員が撮影したものです。ぜひ、ご覧下さい ★★★」っと。

※過去記事

2010年06月18日:ちょっと四国へ#6

2010年06月30日:早明浦ダム放流中

2011年05月31日:早明浦ダム100%

 

| | コメント (0)

2019年3月 5日 (火)

方眼紙

ラフ図を描くのに「A4の方眼紙どっかにあったぞ」と探してきたのがCQ出版からお預かりしている手書き図用のトレーシングペーパー。
12

5mm升で50mmごとに太線が入ってます。
  ※A3、A2の方眼トレーシングペーパーはたくさん残って
   るんですが、もう使うこともないかなぁ。
このCQ出版からの紙も残り少ないんで、とりあえず作っておこうと線を引いてみたのがこれ。
5mmピッチで25mmごとに太線を入れてます。
線色は薄い黒で。

その後、わざわざ作らなくてもネットにきっと転がってるでっと探してみたらありました。
自分で好きなのを作れるようになっていてなかなか優れもの。
対数の方眼紙もラインアップ。

| | コメント (0) | トラックバック (0)

2019年2月20日 (水)

「gawk」の正規表現・・・続き:文字の順番を入れ替える

もう一つ、gawkの処理で「簡単に!」を実現したののが
「負論理記号」。

例えば「74138」。
X1
部品ライブラリの「ピン名称」、Bsch3Vだと「¥G¥2」のよう
¥が先に来て負論理のupper barが次文字の上に出ます。

+PIN,N:A,DF:FFFFFFFF,L:L1,T:,M:1,-PIN
+PIN,N:B,DF:FFFFFFFF,L:L2,T:,M:2,-PIN
+PIN,N:C,DF:FFFFFFFF,L:L3,T:,M:3,-PIN
+PIN,N:\G\2\A,DF:FFFFFFFF,L:L5,T:N,M:4,-PIN
+PIN,N:\G\2\B,DF:FFFFFFFF,L:L6,T:N,M:5,-PIN
+PIN,N:G1,DF:FFFFFFFF,L:L7,T:,M:6,-PIN
+PIN,N:\Y\0,DF:FFFFFFFF,L:R1,T:N,M:15,-PIN
+PIN,N:\Y\1,DF:FFFFFFFF,L:R2,T:N,M:14,-PIN
+PIN,N:\Y\2,DF:FFFFFFFF,L:R3,T:N,M:13,-PIN
+PIN,N:\Y\3,DF:FFFFFFFF,L:R4,T:N,M:12,-PIN
+PIN,N:\Y\4,DF:FFFFFFFF,L:R5,T:N,M:11,-PIN
+PIN,N:\Y\5,DF:FFFFFFFF,L:R6,T:N,M:10,-PIN
+PIN,N:\Y\6,DF:FFFFFFFF,L:R7,T:N,M:9,-PIN
+PIN,N:\Y\7,DF:FFFFFFFF,L:R8,T:N,M:7,-PIN

ところが、OrCADだと「G¥2¥」となって、

文字の後ろに¥があると、その文字の上に
バーが付くのです。

'74LS138'
{X Size =}   7      {Y Size =}   9      {Parts per Package =}   1
L1      1         IN  'A'
L2      2         IN  'B'
L3      3         IN  'C'
L6      6         IN  'G1'
L7      4 DOT     IN  'G\2\A\'
L8      5 DOT     IN  'G\2\B\'
R1     15 DOT     OUT 'Y\0\'
R2     14 DOT     OUT 'Y\1\'
R3     13 DOT     OUT 'Y\2\'
R4     12 DOT     OUT 'Y\3\'
R5     11 DOT     OUT 'Y\4\'
R6     10 DOT     OUT 'Y\5\'
R7      9 DOT     OUT 'Y\6\'
R8      7 DOT     OUT 'Y\7\'
T0     16         PWR 'VCC'
B0      8         PWR 'GND'

単純な文字の入れ替えなんですが、うまい表現が思いつきません。

と同じように、¥の検出で、その直前の文字列の最後尾を1文字
抜き出し、¥を挿入後に抜いた文字を加えるという処理をして
います。
これ、どうにかスマートにする手法って無いでしょかね。

| | コメント (1) | トラックバック (0)

2019年2月11日 (月)

gawkの関数:「length」でつまづく!

MS-DOS時代の「jgawk」なら大丈夫なのに、Vectorでダウンロードした「gawk(3.1.5)」でアウト。
「正規表現」 は関係ありません。
おかしな挙動をしたのが「length」。
文字のバイト数を返す関数。
gawkで使うと、おかしなことが起こったんです。
検証のため、こんなテストプログラムを実行。
{
    n = length($0);           # 入力文字列のバイト数
    printf("n:%d\n", n)     # いったん確認
    r1 = "";                    # バッファをクリア
    for(i = 1; i <= n; i++){    # 入力文字数でloop
        c1 = substr($0, i, 1);     # 1文字取り出し
        r1 = r1 c1;                 # バッファに文字として結合
        printf("%s:%d\n",r1,length(r1));   # バッファの文字列とバイト数を表示
    }
}
これがgawkだと、
12345  ←入力文字
n:5    合ってる
1:1    ところが、増えていくはずが・・・
12:1
123:1
1234:1
12345:1   5文字ループしたのに「1」
abcdefg   7文字入力
n:7    合ってる
a:1    ところが・・・
ab:1
abc:1
abcd:1
abcde:1
abcdef:1
abcdefg:1  やはり1のままで違ってる
正しい値は・・・
行末の数字が1234・・・と+1ずつ増加しなくちゃなりません。


で、正しい答えを出す方法。
gawkのままで
 1:     r1 = r1 c1 "";           # 空文字を結合
 2:     printf("%s:%d\n",r1,length(r1 ""));   同じく
 3:     起動オプションに -W ctype=ASCIIを加える
             ctype=SJISだとダメ。
jgawkだとそのままでok
むちゃ悩んだぞ~~~っと。
どうしたものか。
※結果・・・
gawkのバージョンを上げるということで対応。(4.1.4に)
ここからダウンロード。
 
Free download of the version 4.1.4 (Aug 2016)
(Version 4.1.4)

Win32 executable

Version in English Version in English



※ところが・・・
4.1.4では日本語がアウト。
起動オプションも見当たらず。

| | コメント (4) | トラックバック (0)

2019年2月10日 (日)

「gawk」の正規表現・・・続き

の続きで、gawkの正規表現で悩んでいます。
・やりたいこと
OrCADの部品ライブライーソースファイルの中に出てくる
こんな文字列(「'xxxx'」というふうに「'」で区切られている)内の
「スペース」を「_」(下線記号)に変えたい。
・例 文字列
  'VOLTAGE REGULATOR'
  L1  3  SHORT   IN  'PLUS INPUT'
    R1  'C2' CLK  OUT 'CLK OUT'
・なぜか
gawkの「スペースで文字列を文字単位に」分割するという
機能、「'」で区切られた文字列内にスペースがあると、
そこで切られてしまいす。
「'  '」内のスペース、これを「_」(下線記号)に変えて、
分割されないようにしたいわけで。
・条件
1行に複数個の「'  '」が出現することもある。
・試したのはこんな処理
    while(1){                                 # 「'  '」がいくつもあるかもしれないので
        match($0, /'[^']*'/);
        if(RSTART == 0)     break;     # 「'  '」がなければおわり
        s1 = substr($0, 1, RSTART-1);             # 「'  '」の左側
        s2 = substr($0, RSTART, RLENGTH);   # 「'  '」の部分
        s3 = substr($0, RSTART+RLENGTH);   # 「'  '」の右側
        gsub("'", "@", s2)      # 「'  '」部分の「']をいったん@に
        gsub(" ", "_", s2)       # 「'  '」部分スペースを「_」に
        $0 = s1 s2 s3            # あらたな$0
    }   
    gsub("@", "'", $0)         # @を「'」に変えて元に戻す
「'  '」が複数個出るかもということで、「']をいったん@に変えて、
1行の先頭から処理するようにしました。
gawkらしく、もっとスマートな方法は?
   ※Cだとチカラ技で処理を進めるですが、gawkの書式はパズルです。
     1文字ずつ読み出して「'」が来たらスペースを「_」にというほうが
     良いかな。
そういや、こういった記述にも対応しないと。
R1    24   OUT 'QA''' ← QA'が信号名で 二つの「''」で
文字としての「'」を示すわけでして・・・。

| | コメント (3) | トラックバック (0)

2019年2月 9日 (土)

「gawk」の正規表現で

の記事に対するCPU.BACHさんのコメントに関して・・・

「LIBSX」という「OrCAD」の部品ライブラリソースファイルを、
水魚堂さんの回路図エディタ「CE」の部品ライブラリに変換
するツールがあります。
これ、MS-DOS時代のツールでして「MS-C」で作ったんです
が、これを手直しして「BSch3V」用の部品ライブラリ「LB3」
変換ツールに出来ないものかと、ちょいと試行錯誤してみ
ました。
で、ツールですがCでコンパイルするんじゃなく、「gawk」を
使ってみました。

  ※MS-DOS時代からjgawkはあれこれと使っています。

そこで、OrCAD部品ソースに出てくる文字列処理での
「正規表現」につまずいちゃいました。

部品ソース内にこんな行が出てきます。

'7400'  ←部品名
{X Size =}  4 {Y Size =} 4 {Parts per Package =}  4 ★
L1      1   4   9  12         IN  'I0'  ←ピン指定
L3      2   5  10  13         IN  'I1'
R2      3   6   8  11 DOT     OUT 'O'
T0     14  14  14  14         PWR 'VCC'
B0      7   7   7   7         PWR 'GND'

★部分で部品の大きさとパッケージ内の個数を
示しています。
前処理としてコメント文字列である「 {xxx} 」を消して、
数字「4 4 4」だけを残したいのですが、この↓正規表現
ではうまくいきません。

   gsub(/{.*}/, "", $0)

{ }に囲まれた文字列という正規表現なのですが、
   {xxx} yyy {xxx} zz が
   1   2      3    4

残したいyyyまで消えて、最後尾のzzしか残らない
のです。
「/{.*}/」だと、{ }のくくりを、2と3を飛ばして「1~4」にし
ちゃっています。
ほんとは、1~2で処理。続いて3~4で処理と{ }を含
めて{ }内の文字列を消して欲しいのです。

しかたなく、↓のようなスクリプトでもって{ }を消して
います。
1文字ごと読み出して { 出現でコピーをオフ、} 検出以降
にコピー再開。

  ※こりゃawkのスクリプトじゃないぞ(笑)

#####   コメントを取り除く      #####
#   読み出したデータの中から「コメントフィールド」を取り除く
#   OrCADのライブラリソースのコメントは「{...}」となっている
#   直接バッファを操作して「{}」とコメントを取ってしまう
#   gsub(/{.*}/, "", $0)だと
#   「{xxx} yyy {xxx} zz」が yyyまで消えてzzしか残らない
function rmvcmnt(s,  c,f)
{
    r_bff = "";
    f = 0;              # 1で文字コピー禁止
    for(i = 1; i <= length(s); i++){
        c = substr(s, i, 1);                # 1文字取り出し
        if(c == "{")        f = 1;          # 「{」以降はコピーしない
        else if(c == "}")   f = 0;          # コピー再開
        else if(f == 0){                    # 文字連結
            r_bff = r_bff c;                # {xxx}以外の文字はコピー
        }
    }
    return r_bff;       # コメント削除した1行
}

正規表現を使っての何か良い手順はありませんかね?

※参考
ファイルから読み出した1行は「$0」に入る。
function rmvcmnt(s,  c,f)の s は関数への引数。
その次にスペースをあけてのc,fは関数内部だけの局所変数。

ほかにも、「 { } 」で囲まれたこんなコメントがあります。

      {000000000011111111112}
      {.....................}
      {012345678901234567890}
{  0.0}##...................
{  0.1}#.##.................
{  0.2}#...##...............
{  0.3}#.....##.............
{  0.4}#.......##...........
{  0.5}#.........##.........
{  0.6}#...........##.......
{  0.7}#.............##.....
{  0.8}#...............##...
{  0.9}#.................##.
{  1.0}#...................#
{  1.1}#.................##.
{  1.2}#...............##...
{  1.3}#.............##.....
{  1.4}#...........##.......
{  1.5}#.........##.........
{  1.6}#.......##...........
{  1.7}#.....##.............
{  1.8}#...##...............
{  1.9}#.##.................
{  2.0}##...................

これも行の中から消してしまいたいわけでして。

{X Size =}  、 {Y Size =}、{Parts per Package =}は
固定文字列なんで3つを個別にgsubで先に処理。
その後、「{  2.0}」などを正規表現で削除かな。

こんな具合に。

#    コメント文 {xxx} を消す
   gsub("{X Size =}", "", $0);                # コメント削除               
    gsub("{Y Size =}", "", $0);
    gsub("{Parts per Package =}", "", $0);
    gsub(/{.*}/, "", $0);                    # 残りの{...}を全部
   :

| | コメント (4) | トラックバック (0)

2018年9月20日 (木)

バッファロー WiFiルーター 「WHR-G301N」故障

文鎮製造元 の佐藤テック君がガレージに持ってきた
  「客先で使ってたんやけど故障」
      → 新しいのに交換
  「電源入れたらランプが点滅しっぱなしでだんまり」
  「ネットを探したら 似た症状がいっぱい出てくる」
  「ACアダプタが原因らしいんやけど、見てみる?」
っということで、酒の肴に故障原因追及です。
外観はこんな様子。
11
DC12V/1A出力のACアダプタが電源です。
さっそく本体のほうを解体。
プラスネジじゃなく、よくある「いじり防止用の星形ビス」。
11a
普通のプラスネジでエエやんっと、思うのですが・・・
ビスの中央にチョッポリが無いんでマイナスドライバーで回ります。

こんな基板が現れます。
12

基板の左右に「アンテナ」とおぼしきパターンがあります。
その下、▲マークのところには小さな同軸コネクタ。
   拡大↓
13
アンテナを増設できるんでしょうか?
よく分かりません。

電源部の様子。
13a
DC12Vを入力して、DC-DCコンバータICで内部電源の
3.3Vを作っています。
まず、トラブル発生時の電源波形を観察。
13b
12VのACアダプタ出力が安定しないので(内部回路が
動作しはじめて電流が流れると電圧ドロップ)、回路が
起動しません。
原因はACアダプタ。
ケースを割って内部を拝見。
  ※この時点では、コンデンサの劣化だろうと推測
15
「むむ。 液漏れや膨張はしていない」
基板の裏側↓
16
ハンダ割れも無し。
液漏れしていたら、基板をケースから出したときに
「イヤな臭い」がするんですが、特になし。
17
左は一次側コンデンサ。 
  (外装の剥けは基板に接着されていたから)
右の二つが二次側。 並列になっています。
容量を計っても、正常。

スイッチしてるパワーMOS FETが悪いのかと調べてみても正常。
18
フィードバック系のフォトカプラも大丈夫。
ということは、スイッチング電源の制御ICそのもの
(あるいはその周辺)がアウトになっているようです。
※ICがアウトのせいでしょう、一次側コンデンサに整流
出力(140V)が残ったままになっちゃっていました。
100Vを切った状態でしばらく放置してたのに、基板裏を
指先で触って「ビリッ」。
ちょいびっくり。

このACアダプタじゃなく、別の12V電源から電源を供給すると、
ちゃんと動き(動作表示LEDの光り方で)ます。
0.3Aくらいの消費電流でしたんで、1A定格のアダプタにとっては
そんなにきつい負荷じゃありません。

| | コメント (2) | トラックバック (0)

2018年7月24日 (火)

フォネティックコードを!

プログラミング教育」の前に、「フォネティックコード」を子供達に教えておいて欲しい。

欧文通話表(Alfa Bravo Charlie・・・)と和文通話表(アサヒのア、イロハのイ・・・)。
言葉で文字を間違いなく伝える手段として、先人のこんな知恵があるぞっと。

   ※モールスを教えておけとまでは言わないけど。

   ※メールアドレスとか装置の型番(英数字)を口頭で
    伝えるとき、これを知ってると知ってないで、話の
    進行がだいぶと違う。

| | コメント (2) | トラックバック (0)

2017年10月13日 (金)

自宅PC宛メールアドレスが変わります

自宅のネット接続、J:COMからeo光に変更しました。

状況:
  ・J:COMの同軸、遅い っと、息子どもが工事を依頼
  ・J:COM回線の撤去費用はeo光が負担すると
  ・ZAQのブログ、HPサービス中止 でアタマ(私の)に来てたから
     (すでに、ここniftyに移行済み)
  ・息子女房、J:COMメールが無くなっても影響は無い
     メールアドレス、変わって困るのは私だけ

ということで、自宅PC宛のメールアドレス、ZAQのが使えなくなります。
  旧 : noris@oct.zaq.ne.jp    ←これがアウトに
  新 : jh3dbo@hera.eonet.ne.jp ←これに変更

仕事場宛のメールは変わりません。
   geb02643@nifty.ne.jp
   jh3dbo@jarl.com      ←無線向け

| | コメント (1) | トラックバック (0)

より以前の記事一覧