PC-98ノートをあるルートで手に入れた。がしかし、PC-98でやりたかったFDが壊れている。 繰り返すが、やりたいことは1980年代にほぼ日本独自規格になってしまったIBM規格のFDをN5200当時のPTOSというDOS前のNEC製のOSファイルとして読み込むこと。windowsのPC-98エミュでは直接FD操作ができないのでPC-98の実機がどうしても必須なのだ。 PC-98の実機と3モードFDDがあればPC-PTOSの解析ツールが使える。 そこで、手に入れたPC-98に搭載されていたFDDと同型互換のある中古FDDを大量に入手し、片っ端からドライブ内で切れているベルトを交換。2台まではシークモーター不具合でFDを読めなかったが、3台目以降はベルト交換でFDDが復活した。 やっと、本番のPTOSのFD解析ができるようになった。この3週間ぐらいずっとPC-98と格闘していて使い方を完全に思い出したのは大きな収穫だった。HDDを使用する前はFDiskするとか、そういえばFDっていうアプリが便利だったとか…… 修理完了後、FDからDOSを起動しひと段落。 PC-98の電源はないため、電線のみ基盤にはんだ付けし外部電源で代用。
PC-9821ノート(PC-9821Nw150)からFDDを取り出す。
古いベルト式のFDDはたいていこのベルトが伸びきって切れている。 ベルトを直してもシークモーター(ヘッド移動)が不良の場合がある。手に入れたPC-98のFDDはベルト交換だけでは完治しなかった。
そこで、大量に中古のFDD(FD1238T他)を購入。この中からベルト交換で無事シークするFDDを探す。 ちなみにすべての中古FDDのベルトは取り去られていた。
修理用のベルトストックは各種豊富にある。確かAmazonで各種80個入りを800円ぐらいで購入しておいた。 折計7cm、直径4.5cmぐらいがちょうどよい。
このようにベルトを修復し、筐体を元に戻す。
早速、PTOSのファイル解析をPC-98ノートで行う。 使用するソフトはPTOSCONV他。 データを無事にすべて抜き取ったら、壊れているN5200を修理するかPC-98にPTOSをインストールして遊ぶ予定。 ちなみに「その1」はこちら、https://www.fujigoko.tv/board/brbbs.cgi?pt=1714200061&pv=2 #電子機器 #修理
もしもの場合に保管してあったPC98。PC-98Note以外は必要ないんで過去に大量処分した。 で、たまたまPC-98でN5200のFDDを読むため長らく未使用だったPC-98Noteの電源入れたら動作しない? コンデンサの劣化だろうと思い分解修理することに。案の定、コンデンサ数個が液漏れしていたので全て新品に交換したが電源は入らず。 これで動作するPC-98は私のもとから完全に無くなってしまった。
1990年代初頭に長年愛用してきたPC-98Note。分解して全面に迷彩塗装してあるので実機と違う。セナに会うためにF-1を見に行った時に張ったシールが懐かしい。
コンデンサのチェック。やはり壊れている。
中央のテープのある基盤は外部CRTに出力できるよう自作したもの。その周辺が電源回路。
ちなみに自作した基盤はグラフィック用ICの裏に直付け。こんなことをしていたんだと数十年ぶりに見た。
問題の電源回路部分。見えているコンデンサは全て交換したが動作せず。この基盤はマザーに直付けされているんで取り外すのに苦労した。
ちなみにこんな機器で拡大してはんだ付けする。
#電子機器 #修理
富士五湖地域の活性化にむけ、21世紀アカデメミアが運営する学生たちから、富士五湖の特徴を学び、この地域の経済活性、国際交流などを学生の視点で捉える、富士五湖サミットが4月23日火曜日に河口湖で開催されました、発表会は富士五湖自然首都圏構想の一環でもあり学生さんたちはの考えを学ぶよい機会でした。
道志村の皆さんが、3月知事に面会、都留市との新道坂トンネル、等々お願いに、県庁に来てなごやか雰囲気で大変有意義な一時を過ごしました
2024年3月30日(土)〜4月14日(日)まで 勝山観光協会主催 【勝山さくら祭りスタンプラリー】 さくら名所3か所(道の駅かつやま、富士ビューホテル、冨士御室浅間神社)のスタンプを押して道の駅かつやま又は冨士御室浅間神社にご提示ください。 期間中毎日先着50名様にプレゼントを差し上げます。 プレゼントは、おひとり様1枚につき以下のどちらかをおひとつ! ●冨士御室浅間神社の厄割の玉(厄難を打ち砕く御守り) ●道の駅かつやまのソフトクリーム ※プレゼント配布時間 10:00〜15:00
TV番組で良く見る金庫開け。 そういえばダイヤル式金庫ってどんな仕組みだったっけ?右に何回、左に何回でどうして開くのか? 金庫の仕組みを知りたいので3Dプリンターで作ってみた動画をYoutuber風に作ったみた。
#3Dプリンター #模型
VIDEO
源アダプタからきっかり3V抽出して動作するようにした。 ついでに3Dプリンターで台も作ってみた。
備でもていたDC降圧で6V→3Vに。残り5個。
3Vにしなければ動作しないのでこのように結線
ついでに3Dプリンターで作成した台。下部はTPUのゴム製。
googleの生成AIのBardがGeminiになった。その実力を見るために何かプログラムを作って確かめてみた。 気象庁では定期的にXMLフォーマット形式の電文を配信している。 このXMLファイルを定期的に自動で読み込めばHP上に天気予報を表示できるので実際にGoogleGeminiを使用してプログラムしてみた。 以下に表示に至るまでの方法をステップごとに備忘録として記録する。 ===========
ステップ1. 気象庁のXMLフォーマット形式の電文を定期的に取り込む。 サーバーのcrontabで定期的にXMLファイルを取り込むよう設定。 気象庁のファイルは「https://www.data.jma.go.jp/developer/xml/feed/regular_l.xml 」にある。 読み込む方法はfreeBSDならfetchコマンドで取り込む。 fetch -mp -o /自分のサーバーのパス/weatherJapan.rdf https://www.data.jma.go.jp/developer/xml/feed/regular_l.xml 以上で、自身のサーバー内にweatherJapan.rdfファイルとして取り込み完了。 ---------------
ステップ2. 取り込んだデータから「山梨県の最新データ」を取り込む。 「ステップ1」で取り込んだ気象庁のデータは全国の気象データのindexのようなものなので、そこから山梨県の最新気象データを抽出する。 具体的には、indexに並んでいるデータ群(過去データもある)から目的のデータを見つける。 山梨県の気象予報なら、甲府気象台の「https://www.data.jma.go.jp/developer/xml/data/ データの日付_0_VPFD51_190000.xml」となる。 データは過去のアーカイブを含むので最新のデータ、つまりリストの先頭のindexを引く。 indexの引き方はunixのshellScriptで自動化する。 生成AIで、「VPFD51_190000を含むリストの先頭の文字を取り出すshellScriptを書け」と命令。 weatherF=$(grep -Eo 'https:\/\/www\.data\.jma\.go\.jp\/developer\/xml\/data\/(.*)VPFD51_190000\.xml' /自分のサーバーのパス/weatherJapan.rdf | awk -F/ '{print $NF}' | head -1) 上記の回答を得る。 次は変数weatherFを使用して山梨県のXMLデータをfetchで読み込む。 fetch -mp -o /自分のサーバーのパス/weatherYamanashi.rdf https://www.data.jma.go.jp/developer/xml/data/" ${weatherF}" 以上で、自身のサーバー内にweatherYamanashi.rdfファイルとして取り込み完了。 <Gemini最初の指令>https://www.data.jma.go.jp/developer/xml/feed/regular_l.xml にあるXMLファイルからhttps://www.data.jma.go.jp/developer/xml/data/ *****_VPFD51_190000.xml の部分を抽出し、抽出した先頭のみを表示するシェルを書け。 ただし、「*****」は任意の文字列。 解答→正規表現とgrepのパターンを提示してきた。正規表現はエラーになったのでgrepを使用し改良して使用。 ---------------
ステップ3. 「ステップ1」と「ステップ2」をcrontabで定期的に実行するようサーバーに記述する。 <weatherYamanashi.rdfファイルの中身例> 前段あり〜 <DateTime>2024-02-13T17:00:00+09:00</DateTime> <Duration>PT7H</Duration> <Name>今夜</Name> </TimeDefine> <TimeDefine timeId="2"> <DateTime>2024-02-14T00:00:00+09:00</DateTime> <Duration>P1D</Duration> <Name>明日</Name> </TimeDefine> <TimeDefine timeId="3"> <DateTime>2024-02-15T00:00:00+09:00</DateTime> <Duration>P1D</Duration> <Name>明後日</Name> </TimeDefine> </TimeDefines> <Item> <Kind> <Property> <Type>天気</Type> <DetailForecast> <WeatherForecastPart refID="1"> <Sentence>晴れ</Sentence> <Base> <jmx_eb:Weather type="天気">晴れ</jmx_eb:Weather> </Base> </WeatherForecastPart> <WeatherForecastPart refID="2"> <Sentence>晴れ 昼過ぎ から くもり</Sentence> <Base> <jmx_eb:Weather type="天気">晴れ</jmx_eb:Weather> </Base> <Becoming> <TimeModifier>昼過ぎ から</TimeModifier> <jmx_eb:Weather type="天気">くもり</jmx_eb:Weather> </Becoming> </WeatherForecastPart> <WeatherForecastPart refID="3"> <Sentence>くもり 後 一時 雨</Sentence> <Base> <jmx_eb:Weather type="天気">くもり</jmx_eb:Weather> </Base> <Temporary> <TimeModifier>後 一時</TimeModifier> <jmx_eb:Weather type="天気">雨</jmx_eb:Weather> </Temporary> </WeatherForecastPart> </DetailForecast> <WeatherPart> <jmx_eb:Weather refID="1" type="天気">晴れ</jmx_eb:Weather> <jmx_eb:Weather refID="2" type="天気">晴れ後くもり</jmx_eb:Weather> <jmx_eb:Weather refID="3" type="天気">くもり後一時雨</jmx_eb:Weather> </WeatherPart> <WeatherCodePart> <jmx_eb:WeatherCode refID="1" type="天気予報用テロップ番号">100</jmx_eb:WeatherCode> <jmx_eb:WeatherCode refID="2" type="天気予報用テロップ番号">111</jmx_eb:WeatherCode> <jmx_eb:WeatherCode refID="3" type="天気予報用テロップ番号">212</jmx_eb:WeatherCode> </WeatherCodePart> </Property> </Kind> <Kind> <Property> <Type>風</Type> 〜以下続く ---------------
ステップ4. 定期的に取り込んだ山梨県の天気予報データ(weatherYamanashi.rdf)を解析する。 解析にはperlプログラムを使用する。 必要な部分のみperlの正規表現を使用してプログラムしようとしたが、今回は「XML::Simple;」を使用することにした。 use File::Slurp; use XML::Simple; use Data::Dumper; my $xml = read_file("weatherYamanashi.rdf"); #ファイルの読み my $parser = XML::Simple->new(); #XML::Simple使用準備 my $parser_data = $parser->XMLin( $xml); #取り込み print Dumper($parser_data); #結果表示 〜取り込まれたデータ例 $VAR1 = { 'xmlns' => 'http://xml.kishou.go.jp/jmaxml1/ ', 'xmlns:jmx' => 'http://xml.kishou.go.jp/jmaxml1/ ', 'Control' => { 'DateTime' => '2024-02-11T01:34:15Z', 'Status' => "\x{901a}\x{5e38}", 'PublishingOffice' => "\x{7532}\x{5e9c}\x{5730}\x{65b9}\x{6c17}\x{8c61}\x{53f0}", 'EditorialOffice' => "\x{7532}\x{5e9c}\x{5730}\x{65b9}\x{6c17}\x{8c61}\x{53f0}", 'Title' => "\x{5e9c}\x{770c}\x{5929}\x{6c17}\x{4e88}\x{5831}\x{ff08}\x{ff32}\x{ff11}\x{ff09}" }, 'Head' => { 'xmlns' => 'http://xml.kishou.go.jp/jmaxml1/informationBasis1/ ', 'TargetDateTime' => '2024-02-11T11:00:00+09:00', 'Headline' => { 'Text' => {} }, 'InfoKind' => "\x{5e9c}\x{770c}\x{5929}\x{6c17}\x{4e88}\x{5831}", 'TargetDuration' => 'P2DT13H', 'EventID' => {}, 'Serial' => {}, 'Title' => "\x{5c71}\x{68a8}\x{770c}\x{5e9c}\x{770c}\x{5929}\x{6c17}\x{4e88}\x{5831}", 'InfoType' => "\x{767a}\x{8868}", 'InfoKindVersion' => '1.0_1', 'ReportDateTime' => '2024-02-11T11:00:00+09:00' }, 'xmlns:jmx_add' => 'http://xml.kishou.go.jp/jmaxml1/addition1/ ', 'Body' => { 'xmlns' => 'http://xml.kishou.go.jp/jmaxml1/body/meteorology1/ ', 'xmlns:jmx_eb' => 'http://xml.kishou.go.jp/jmaxml1/elementBasis1/ ', 'MeteorologicalInfos' => [ { 'TimeSeriesInfo' => [ { 'Item' => [ { 'Area' => { 'Code' => '190010', 'Name' => "\x{4e2d}\x{30fb}\x{897f}\x{90e8}" ---------------
ステップ5. 必要な部分のみ取り出す 例えば、天気予報の部分を取り出す sub getJMAWeatherTenki{ my $data = shift; #取り込んだハッシュ my $place_id = shift; #地域コード:富士五湖=1 my $time_id = shift; #今日=1,明日=2、明後日=3 my $content; foreach my $weather_define ( @{$data->{Body}{MeteorologicalInfos}[0]{TimeSeriesInfo}[0]{Item}[$place_id]{Kind}[0]{Property}{WeatherPart}{'jmx_eb:Weather'}} ){ if( $weather_define->{refID}==$time_id ){ $content = $weather_define->{content}; } } return $content; } 戻り値例:「くもり後晴れ」 <Gemini最初の指令> weatherYamanashi.rdfを解析し、天気データ「{jmx_eb:Weather}」の「{refID}」が一致する文字列「{content}」を得よ。 解答→得た答えを修正して上記を仕上げた。 ---------------
ステップ6. 天気予報の文字から画像を作成する まず以下の画像データを意味付けしたファイル名で作成する。 文字列から画像ファイル名を構成する。 sub getJMAWeatherImg{ my $weather_str = shift; #天気文字列 my $time_id = shift; # my %exDayId = ( '今日' => 1, '明日' => 2, '明後日' => 3 ); use constant WEATHER_CODES => { '晴れ' => 1, 'くもり' => 2, '雨' => 3, '雪' => 4, }; use constant TIME_CODES => { '時々' => 1, '後' => 2, }; my @parts = split(/(後|時々)/, $weather_str); my $a = WEATHER_CODES->{ $parts[0] } || 0; my $b = TIME_CODES->{ $parts[1] } || 0; my $c = WEATHER_CODES->{ $parts[2] } || 0; my $p = 0; my $name; #以下は「今夜」の場合を考慮する foreach my $time_define ( @{$exParserData->{Body}{MeteorologicalInfos}[0]{TimeSeriesInfo}[0]{TimeDefines}{TimeDefine}} ){ if( $time_define->{timeId}==$time_id ){ $name = $time_define->{Name}; } } Jcode::convert( \$name, 'utf-8'); #ファイル内はUTF-8だが、そのままでは使用できない my $fDayw = Jcode::convert( '今夜', 'utf-8'); #そのため比べる両者をUTF-8で再矯正する if( $name eq $fDayw ){ $p = 1; } my $fileImg = sprintf("tnk%04d.png", $p . $a . $b . $c); return $fileImg; } 何故か文字化けが発生し苦労したが上記の方法で回避 <Gemini最初の指令> 「晴れ」、「晴れ後くもり」、「雨時々雪」と言った文字列があります。 「後」と「時々」をキーに文字列を前後に分けて上の例なら、 「晴れ」、「晴れ」「後」「くもり」、「雨」「時々」「雪」と文字列を分解するperlプログラムを書け。 〜 得た文字列を、「晴れ」=1、「くもり」=2、…のように3桁の数字に置き換えよ。 解答→得た答えを修正して上記を仕上げた。 ---------------
ステップ7. 以上のプログラムを半分以上生成AIに手伝ってもらい完成させた。 あとは自分の環境に合わせて関数化し汎用ライブラリーとして保管。 --------------- 以上、動作例は「https://live.fujigoko.tv/?n=30 」等を参照。 今回は自身と気象庁のサーバー負荷を考え以上のようにしたが、「ステップ1」と「ステップ2」を省いて全てperlで記述すればその都度全国の気象データを得ることができる。 具体的には、https://www.data.jma.go.jp/developer/xml/feed/regular_l.xml から全国の気象データを抽出すれば良いようにプログラムをさらに汎用化し公開もできる。 が、自身のサーバーでそのサービスを提供するメリットがあるかどうかと考えてしまった。 #コンピュータ #AI #人工知能 #プログラム