<?xml version="1.0" encoding="UTF-8"?>

<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:admin="http://webns.net/mvcb/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns="http://purl.org/rss/1.0/"
>

<channel rdf:about="https://88va.seesaa.net/">
<title>VA-EG開発記録</title>
<link>https://88va.seesaa.net/</link>
<description>X68000やFM-TOWNSのはあるのになぜこれのはないんだというマシンのエミュレータの開発をおそるおそる試みている記録</description>
<dc:language>ja</dc:language>
<admin:generatorAgent rdf:resource="https://blog.seesaa.jp/" />
<items>
<rdf:Seq>
<rdf:li rdf:resource="https://88va.seesaa.net/article/243933627.html" />
<rdf:li rdf:resource="https://88va.seesaa.net/article/95543461.html" />
<rdf:li rdf:resource="https://88va.seesaa.net/article/93382983.html" />
<rdf:li rdf:resource="https://88va.seesaa.net/article/93229587.html" />
<rdf:li rdf:resource="https://88va.seesaa.net/article/92458189.html" />
<rdf:li rdf:resource="https://88va.seesaa.net/article/92457976.html" />
<rdf:li rdf:resource="https://88va.seesaa.net/article/92457326.html" />
<rdf:li rdf:resource="https://88va.seesaa.net/article/91118359.html" />
<rdf:li rdf:resource="https://88va.seesaa.net/article/78493293.html" />
<rdf:li rdf:resource="https://88va.seesaa.net/article/78450775.html" />
<rdf:li rdf:resource="https://88va.seesaa.net/article/78081894.html" />
<rdf:li rdf:resource="https://88va.seesaa.net/article/67281177.html" />
<rdf:li rdf:resource="https://88va.seesaa.net/article/56026414.html" />
<rdf:li rdf:resource="https://88va.seesaa.net/article/54801554.html" />
<rdf:li rdf:resource="https://88va.seesaa.net/article/54798429.html" />
</rdf:Seq>
</items>
</channel>

<item rdf:about="https://88va.seesaa.net/article/243933627.html">
<link>https://88va.seesaa.net/article/243933627.html</link>
<title>Visual C++ 2010 Expressへの移行</title>
<description>Visual C++ 6.0 から Visual C++ 2010 Expressへ移行。直接 VC++ 2010で.dswを開こうとすると、.dspの変換で失敗する。このため、一旦VC++ 2008 で.dswを開いてプロジェクト形式を変換して.slnファイルを生成させ、その後にVC++ 2010で.slnを開く。ビルドで生成されるexeのファイル名がプロジェクト名(np2)になっているため変更する。プロジェクトの以下の設定を変更する。構成プロパティ&amp;gt;全般&amp;gt;ター..</description>
<dc:subject>EMU</dc:subject>
<dc:creator>Shinra</dc:creator>
<dc:date>2012-01-02T23:24:00+09:00</dc:date>
<content:encoded><![CDATA[
Visual C++ 6.0 から Visual C++ 2010 Expressへ移行。<br /><br />直接 VC++ 2010で.dswを開こうとすると、.dspの変換で失敗する。このため、一旦VC++ 2008 で.dswを開いてプロジェクト形式を変換して.slnファイルを生成させ、その後にVC++ 2010で.slnを開く。<br /><br />ビルドで生成されるexeのファイル名がプロジェクト名(np2)になっているため変更する。プロジェクトの以下の設定を変更する。<br /><blockquote>構成プロパティ>全般>ターゲット名</blockquote><br />以下のとおり変更<br /><blockquote><br />vaeg  (構成 Releaseの場合)<br />vaegd (構成 Debugの場合)<br /></blockquote><br />DirectX SDK については、最新のJune 2010 についてはddraw.libが廃止されており、VAEGのビルドには利用できない。ひとつ前のFebruary 2010を使う。プロジェクトの以下の設定でDirectX SDKの所在を指定する。<br /><blockquote><br />構成プロパティ>VC++ディレクトリ>ライブラリディレクトリ<br />構成プロパティ>VC++ディレクトリ>インクルードディレクトリ<br /></blockquote><br /><br />nasmについては、最新の場合、nasmw.exeが無く、変わりにnasm.exeがある。プロジェクトの設定を変更してnasmw.exeを参照している部分をnasm.exeに変更すれば動くかもしれない。今回は、以前から使っている古いnasm(nasmw.exe)をそのまま利用。<br /><br />win9x\np2.rc はビルドでエラーとなる。次のとおり変更。<br />次をコメントアウト<br /><br /><blockquote>//#include "afxres.h"<br /></blockquote><br /><br />その直後に追加<br /><blockquote>#include <windows.h><br />#define IDC_STATIC -1<br /></blockquote><br /><br />根拠については未確認。以下を参考にした。<br /><a href="http://ttssh2.sourceforge.jp/manual/ja/reference/develop.txt" target="_blank">http://ttssh2.sourceforge.jp/manual/ja/reference/develop.txt</a><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="https://88va.seesaa.net/article/95543461.html">
<link>https://88va.seesaa.net/article/95543461.html</link>
<title>SCSI 4</title>
<description>test unit readyinquiryread capacitymode sense (page=4) read extendedread extended ←ここまで動いたrequest sense</description>
<dc:subject>EMU</dc:subject>
<dc:creator>Shinra</dc:creator>
<dc:date>2008-05-03T23:25:32+09:00</dc:date>
<content:encoded><![CDATA[
test unit ready<br />inquiry<br />read capacity<br />mode sense (page=4) <br />read extended<br />read extended ←ここまで動いた<br />request sense<br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="https://88va.seesaa.net/article/93382983.html">
<link>https://88va.seesaa.net/article/93382983.html</link>
<title>SCSI 3</title>
<description>resetselect without atntransfer (command: test unit ready)transfer (status)transfer (message)negateselect without atntransfer (command: inquiry)transfer (data)transfer (status)transfer (message)negateselect without atntransfer (command: rea..</description>
<dc:subject>EMU</dc:subject>
<dc:creator>Shinra</dc:creator>
<dc:date>2008-04-14T22:38:35+09:00</dc:date>
<content:encoded><![CDATA[
reset<br />select without atn<br />transfer (command: test unit ready)<br />transfer (status)<br />transfer (message)<br />negate<br />select without atn<br />transfer (command: inquiry)<br />transfer (data)<br />transfer (status)<br />transfer (message)<br />negate<br />select without atn<br />transfer (command: read capacity) <br />transfer (data)<br />transfer (status)<br />transfer (message)<br />negate<br />select without atn ←ここまで動いた<br />transfer (command: mode sense) <br /><br /><br />> フェーズの遷移先もどう決まるのかわからない。<br /><br />イニシエータ(PC)とターゲット(HDD)との接続が確立した後は、<br />ターゲットがフェーズも切断も決めるらしい。<br /><br />selectコマンドは、接続が確立したらCPUに割り込み。<br />その後、ターゲットからコマンド転送要求があって、割り込み。<br /><br />transfer infoコマンドは、送信が終わって、ターゲットがフェーズを<br />次に移して最初にターゲットからREQが来たときにCPUに割り込み。<br />ただし、message-in フェーズでのtransfer infoコマンドは、<br />送信が終わったらCPUに割り込み。<br /><br />イニシエータとターゲット間の通信は、ターゲットがREQを、イニシエータがACKを制御して、REQ上げる->ACK上げる->REQ下げる->ACK下げるで1バイト転送する。よって、データ転送は、転送方向がどちらであれ、ターゲットが開始する。<br /><br />フェーズは、その他4本の制御線(I/O, C/D, MSG, SEL)で決定され、SEL(接続要求)を除いた3本はターゲットが制御する。フェーズの遷移は、これら3本の値をターゲットが決めた上でREQを上げることによって、イニシエータに通知される(のだろう)。<br /><br />なんとなくすっきり。<br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="https://88va.seesaa.net/article/93229587.html">
<link>https://88va.seesaa.net/article/93229587.html</link>
<title>SCSI 2</title>
<description>&amp;gt; そこまで甘くはないらしい。 PCPLUS.SYSが割り込みを2回期待しているところで、1回しか発生していない。1回目はSCSIコントローラがコマンド実行を終了したことによる割り込み。np2のソースにret = scsicmd_select(id);if (ret &amp; 0x80) {	scsiintr(0x11);	// で retはどーやって割り込みさせるの？というコメントがあって、割り込みが必要なのにまだ実装できていないということを理解。2回目はHDDからコマンド..</description>
<dc:subject>EMU</dc:subject>
<dc:creator>Shinra</dc:creator>
<dc:date>2008-04-13T17:53:08+09:00</dc:date>
<content:encoded><![CDATA[
> そこまで甘くはないらしい。 <br /><br />PCPLUS.SYSが割り込みを2回期待しているところで、1回しか<br />発生していない。1回目はSCSIコントローラがコマンド実行を<br />終了したことによる割り込み。<br /><br />np2のソースに<br /><pre><br />ret = scsicmd_select(id);<br />if (ret & 0x80) {<br />	scsiintr(0x11);<br />	// で retはどーやって割り込みさせるの？<br /></pre><br />というコメントがあって、割り込みが必要なのにまだ実装できて<br />いないということを理解。<br /><br />2回目はHDDからコマンド要求を受信することを契機に発生する割り<br />込み、らしい。SCSIはHDD側が処理を駆動する仕組みになっている？<br /><br /><br />np2としては、通常はBIOSレベルでエミュレートしていて、<br />ハード(SCSIコントローラ)のエミュレーションの処理もあるけれど、<br />普段は使われていないようだ。<br /><br />ということで、いろいろ足りなさそうに見える。<br /><br />CQ出版の書籍と、WD33C93のデータシートと、undocumented 9801とを<br />眺めてはみたものの、CPU-SCSIコントローラ 間のやりとり、<br />SCSIコントローラ-HDD間のやりとりのどちらもピンとこない。<br />返すべきステータスコードと割り込みの発生回数がわからない。<br />フェーズの遷移先もどう決まるのかわからない。<br /><br />とりあえずPCPLUS.SYS+SCHD.SYSが動けばいいので、それらの<br />コードもみながら考えてみることに。<br /><br />reset<br />select without atn<br />transfer (command: test unit ready)<br />transfer (status)<br />transfer (message)<br />negate<br />select without atn<br />transfer (command: inquiry)<br />transfer (data)<br />transfer (status)<br />transfer (message)<br />negate<br />select without atn   ← ここまで動いた<br />transfer (command: read capacity)<br /><br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="https://88va.seesaa.net/article/92458189.html">
<link>https://88va.seesaa.net/article/92458189.html</link>
<title>r080406公開</title>
<description>r080406を公開しました。主な変更点・SASI 20Mを利用可能に・全角キーとして漢字キーを使用WindowsのALT(右)はこれまでVAの全角キーにマッピングされていましたが、GRPHキーに変更しています。</description>
<dc:subject>EMU</dc:subject>
<dc:creator>Shinra</dc:creator>
<dc:date>2008-04-06T19:30:42+09:00</dc:date>
<content:encoded><![CDATA[
r080406を公開しました。<br /><br />主な変更点<br />・SASI 20Mを利用可能に<br />・全角キーとして漢字キーを使用<br /><br />WindowsのALT(右)はこれまでVAの全角キーにマッピングされて<br />いましたが、GRPHキーに変更しています。<br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="https://88va.seesaa.net/article/92457976.html">
<link>https://88va.seesaa.net/article/92457976.html</link>
<title>SCSI 1</title>
<description>とりあえずSCSIインタフェースをVAのIOポートに接続。割り込み番号がIRQ 9でSASIと衝突しているため、IRQ 6に変更。DMAのチャンネルは・・・DMA転送は実装されていないっぽい。PCPLUS.SYSは・・・DMAを使う場合はSETDMA.COMで明示的に設定するので、ということは、DMAなしでも大丈夫そう。これで動作する・・・？SCHD.SYSの組み込み中に無限ループ。そこまで甘くはないらしい。</description>
<dc:subject>EMU</dc:subject>
<dc:creator>Shinra</dc:creator>
<dc:date>2008-04-06T19:27:25+09:00</dc:date>
<content:encoded><![CDATA[
とりあえずSCSIインタフェースをVAのIOポートに接続。<br />割り込み番号がIRQ 9でSASIと衝突しているため、IRQ 6に変更。<br />DMAのチャンネルは・・・DMA転送は実装されていないっぽい。<br /><br />PCPLUS.SYSは・・・DMAを使う場合はSETDMA.COMで明示的に<br />設定するので、ということは、DMAなしでも大丈夫そう。<br /><br />これで動作する・・・？<br />SCHD.SYSの組み込み中に無限ループ。<br /><br />そこまで甘くはないらしい。<br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="https://88va.seesaa.net/article/92457326.html">
<link>https://88va.seesaa.net/article/92457326.html</link>
<title>SASI 4</title>
<description>&amp;gt; 同時に、DSKPRMADR(0077:000B/000C, Disk parameter tableへのポインタ)も&amp;gt; 設定している。そのテーブルの値から判断すると、&amp;gt;&amp;gt;&amp;gt;タイプ  DSKTYPE  テクマニの説明 シリンダ ヘッド セクタ&amp;gt;-------+---------+-------------+--------+------+-------&amp;gt;0       0          5MB          153     ..</description>
<dc:subject>EMU</dc:subject>
<dc:creator>Shinra</dc:creator>
<dc:date>2008-04-06T19:19:46+09:00</dc:date>
<content:encoded><![CDATA[
<pre><br />> 同時に、DSKPRMADR(0077:000B/000C, Disk parameter tableへのポインタ)も<br />> 設定している。そのテーブルの値から判断すると、<br />><br />><br />>タイプ  DSKTYPE  テクマニの説明 シリンダ ヘッド セクタ<br />>-------+---------+-------------+--------+------+-------<br />>0       0          5MB          153      4      33<br />>1       1          10MB         310      4      33<br />>4       2          20MB         308      8      33<br />>6       3          40MB         615      8      33<br /></pre><br />よくよくテクマニを読んでみると、パラメータも2セットあって、<br />HDCに送っているのと、BIOSへの入力値チェックや論理セクタ番号<br />を求めるのに使っているのとで違うようだ。<br />上記は後者であって、タイプ4の場合にHDCに送っているシリンダ数、ヘッド数はそれぞれ615と4。<br /><br />緑電子のSASIインタフェース内のROMも確認してみたが同様のテーブルを持っており、タイプ4の場合にシリンダ数、ヘッド数はそれぞれ615と4のように見える。(テーブルの存在まで確認し、どう使われるかまでは未確認。)<br /><br />>615/4/33→タイプ3<br />>310/8/33→タイプ4<br />この修正は取り消し。<br /><br />new diskで20MBのHDIを作成した場合のシリンダ数、ヘッド数を変更。<br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="https://88va.seesaa.net/article/91118359.html">
<link>https://88va.seesaa.net/article/91118359.html</link>
<title>SASI 3</title>
<description>kazさんからご報告をいただいた、20MのSASIドライブが利用できない件。ポート82Hから、SASI インタフェースボードのディップスイッチの値が読み出せる。bit7-6: VAのHDD BIOSでは参照していないbit5-3: 2台目のタイプbit2-0: 1台目のタイプタイプとしてHDD BIOSが認識するのは、0,1,4,6。これを読み取って、BIOSのワークエリア DSKTYPE (0077:0009/000A)に値を設定しているタイプ  DSKTYPE  テクマニ..</description>
<dc:subject>EMU</dc:subject>
<dc:creator>Shinra</dc:creator>
<dc:date>2008-03-27T00:50:24+09:00</dc:date>
<content:encoded><![CDATA[
kazさんからご報告をいただいた、20MのSASIドライブが利用できない件。<br /><br />ポート82Hから、SASI インタフェースボードのディップスイッチの値が読み出せる。<br /><br />bit7-6: VAのHDD BIOSでは参照していない<br />bit5-3: 2台目のタイプ<br />bit2-0: 1台目のタイプ<br /><br />タイプとしてHDD BIOSが認識するのは、0,1,4,6。<br />これを読み取って、BIOSのワークエリア DSKTYPE (0077:0009/000A)に<br />値を設定している<br /><br /><pre><br />タイプ  DSKTYPE  テクマニの説明<br />-------+---------+----------<br />0       0          5MB<br />1       1          10MB<br />4       2          20MB<br />6       3          40MB<br /></pre><br /><br />同時に、DSKPRMADR(0077:000B/000C, Disk parameter tableへのポインタ)も<br />設定している。そのテーブルの値から判断すると、<br /><br /><pre><br />タイプ  DSKTYPE  テクマニの説明 シリンダ ヘッド セクタ<br />-------+---------+-------------+--------+------+-------<br />0       0          5MB          153      4      33<br />1       1          10MB         310      4      33<br />4       2          20MB         308      8      33<br />6       3          40MB         615      8      33<br /></pre><br /># テクマニp173 40MBのヘッドの値は間違っている<br /><br />np2のnew diskで20MBのHDIを作成した場合、310/8/33の設定で作成する。この設定はファイルに記録されており、np2はこの設定から<br />タイプを求めているが、310/8/33の場合にタイプ3と判断する。<br />HDD BIOSはこれを認識できないので、PC-Engineから20M SASIを参照できなかった。<br /><br />615/4/33→タイプ3<br />310/8/33→タイプ4<br /><br />に修正。<br />HDFORMでフォーマットできることは確認。<br /><br /><br /><a href="http://88va.up.seesaa.net/image/sasi20m.PNG" target="_blank"><img src="http://88va.up.seesaa.net/image/sasi20m-thumbnail2.PNG" width="150" height="103" border="0" align="" alt="sasi20m.PNG" onclick="location.href = 'https://88va.seesaa.net/upload/detail/image/sasi20m-thumbnail2.PNG.html'; return false;" style="cursor:pointer;" /></a><br /><br /># 98側からでもちゃんと認識できるんだろうか・・・<br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="https://88va.seesaa.net/article/78493293.html">
<link>https://88va.seesaa.net/article/78493293.html</link>
<title>うぴょりっくソフト製同人ソフトの提供のお願い</title>
<description>うぴょりっくソフトさん製作の以下の88VA用同人ソフトをお持ちの方がいらっしゃいましたら、ディスクイメージ(D88)の形式でご提供いただけないでしょうか。・さあくるの大冒険・SMS (スーパーマイルドシャンプー)うぴょりっくソフトさんからWebで公開する許可は頂いたのですが、残念なことに私は持っていません。ご提供いただける場合には以下のあて先にメールしていただけないでしょうか。shinra*keb*biglobe*ne*jp(最初の*は@に、それ以外は . に置き換えてくださ..</description>
<dc:subject>日記</dc:subject>
<dc:creator>Shinra</dc:creator>
<dc:date>2008-01-14T21:20:27+09:00</dc:date>
<content:encoded><![CDATA[
うぴょりっくソフトさん製作の以下の88VA用同人ソフトをお<br />持ちの方がいらっしゃいましたら、ディスクイメージ(D88)の<br />形式でご提供いただけないでしょうか。<br /><br />・さあくるの大冒険<br />・SMS (スーパーマイルドシャンプー)<br /><br />うぴょりっくソフトさんからWebで公開する許可は頂いたの<br />ですが、残念なことに私は持っていません。<br /><br />ご提供いただける場合には以下のあて先にメールしていただけ<br />ないでしょうか。<br /><br />shinra*keb*biglobe*ne*jp<br /><br />(最初の*は@に、それ以外は . に置き換えてください。)<br /><br />ご協力をよろしくお願いいたします。<br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="https://88va.seesaa.net/article/78450775.html">
<link>https://88va.seesaa.net/article/78450775.html</link>
<title>ROM読み込み状態の確認</title>
<description>動作確認用に頻繁にROMを入れ替えていると、今どれを使っているかわからなくなったりしたので、About画面に、ROMがVA1かVA2/3かを表示。合わせて、各.ROMファイルが読み込み済みかどうかも表示。</description>
<dc:subject>EMU</dc:subject>
<dc:creator>Shinra</dc:creator>
<dc:date>2008-01-14T16:13:19+09:00</dc:date>
<content:encoded><![CDATA[
動作確認用に頻繁にROMを入れ替えていると、<br />今どれを使っているかわからなくなったりしたので、<br />About画面に、ROMがVA1かVA2/3かを表示。<br /><br />合わせて、各.ROMファイルが読み込み済みかどうかも<br />表示。<br /><a href="http://88va.up.seesaa.net/image/about.png" target="_blank"><img src="http://88va.up.seesaa.net/image/about-thumbnail2.png" width="135" height="150" border="0" align="" alt="about.png" onclick="location.href = 'https://88va.seesaa.net/upload/detail/image/about-thumbnail2.png.html'; return false;" style="cursor:pointer;" /></a><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="https://88va.seesaa.net/article/78081894.html">
<link>https://88va.seesaa.net/article/78081894.html</link>
<title>「最終平気UPO」ディスクイメージ公開</title>
<description>制作者のうぴょりっくソフトさんのご厚意により、1992年に頒布された同人ソフト「最終平気UPO プレリリース」(うぴょりっくソフト)のディスクイメージを公開しました。縦スクロールシューティングゲームです。  http://www.pc88.gr.jp/forum/viewtopic.php?t=312</description>
<dc:subject>日記</dc:subject>
<dc:creator>Shinra</dc:creator>
<dc:date>2008-01-12T22:08:16+09:00</dc:date>
<content:encoded><![CDATA[
制作者のうぴょりっくソフトさんのご厚意により、1992年に頒布された同人ソフト「最終平気UPO プレリリース」(うぴょりっくソフト)のディスクイメージを公開しました。縦スクロールシューティングゲームです。<br /><br />  <a href="http://www.pc88.gr.jp/forum/viewtopic.php?t=312" target="_blank">http://www.pc88.gr.jp/forum/viewtopic.php?t=312</a><br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="https://88va.seesaa.net/article/67281177.html">
<link>https://88va.seesaa.net/article/67281177.html</link>
<title>開発支援機能</title>
<description>ALT(右)キーを押している間高速実行する(No Waitかつ1/16 frame)機能を追加。VA-EG上でプログラムをコンパイルしているときにALT(右)を押していれば待ち時間が短縮できる。Console Windowのちらつきを防止。EditなどのコントロールをWindows APIで操作する方法について、MSDNのどこにまとまって書いてあるのかが、ようやくわかった。  http://msdn2.microsoft.com/en-us/library/bb773173...</description>
<dc:subject>EMU</dc:subject>
<dc:creator>Shinra</dc:creator>
<dc:date>2007-11-18T11:10:37+09:00</dc:date>
<content:encoded><![CDATA[
ALT(右)キーを押している間高速実行する(No Waitかつ1/16 frame)機能を追加。VA-EG上でプログラムをコンパイルしているときにALT(右)を押していれば待ち時間が短縮できる。<br /><br />Console Windowのちらつきを防止。<br /><br /><br />EditなどのコントロールをWindows APIで操作する方法について、MSDNのどこにまとまって書いてあるのかが、ようやくわかった。<br />  <a href="http://msdn2.microsoft.com/en-us/library/bb773173.aspx" target="_blank">http://msdn2.microsoft.com/en-us/library/bb773173.aspx</a><br />ブックマークしたからいいけれど、トップレベルからだとどうしてもたどり着けない・・・<br />描画の制御やメッセージ伝達の仕組みなどのまとまった説明もあって、<br />ようやく入口にたどり着けた感じ。<br />今まで日本語のMSDNを探していたのがだめだったようで。観念して英語読むしかなさそう。<br /><br />コントロールにどのスタイルを適用するとどうなるかとか、どのメッセージを送るとどうなるかとかを確認するのに、Control Spyというツールがあるらしい。これは便利。<br />  <a href="http://msdn2.microsoft.com/en-us/library/bb773165.aspx" target="_blank">http://msdn2.microsoft.com/en-us/library/bb773165.aspx</a><br /><br /><br />大量のログ出力をEditコントロールで高速表示させたかったのだが、いろいろ試行錯誤した結果、無理という結論に。<br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="https://88va.seesaa.net/article/56026414.html">
<link>https://88va.seesaa.net/article/56026414.html</link>
<title>ソフトウェアライブラリ</title>
<description>長らく故障したまま放置していた88VAユーザーズクラブ ソフトウェアライブラリhttp://www.pc88.gr.jp/softlib/を修繕しました。</description>
<dc:subject>日記</dc:subject>
<dc:creator>Shinra</dc:creator>
<dc:date>2007-09-19T01:00:35+09:00</dc:date>
<content:encoded><![CDATA[
長らく故障したまま放置していた<br />88VAユーザーズクラブ ソフトウェアライブラリ<br /><a href="http://www.pc88.gr.jp/softlib/" target="_blank">http://www.pc88.gr.jp/softlib/</a><br />を修繕しました。<br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="https://88va.seesaa.net/article/54801554.html">
<link>https://88va.seesaa.net/article/54801554.html</link>
<title>CAPS/カナ</title>
<description>CAPS/カナキーのロック状態は以下の場合に保持されなかった。1) VA-EGを終了した場合2) リセットした場合1)を解決したくて、まあ終了前にキーの状態を読み取ってiniに保存すればOKだろうと思っていたら、そんなに単純ではなかった。というか、キーボード実装周りのバグや未実装部分が露見した。2)は、気づいていなかったが(汗)、原因はnp2のエミュレートするキーボードが、CAPS/カナをソフトウェア制御するタイプで、VAとは違うからだろうと思ったが、そうではなかった。バグの..</description>
<dc:subject>EMU</dc:subject>
<dc:creator>Shinra</dc:creator>
<dc:date>2007-09-11T00:39:57+09:00</dc:date>
<content:encoded><![CDATA[
CAPS/カナキーのロック状態は以下の場合に保持されなかった。<br />1) VA-EGを終了した場合<br />2) リセットした場合<br /><br />1)を解決したくて、まあ終了前にキーの状態を読み取ってiniに保存すればOKだろうと思っていたら、そんなに単純ではなかった。というか、キーボード実装周りのバグや未実装部分が露見した。<br />2)は、気づいていなかったが(汗)、原因はnp2のエミュレートするキーボードが、CAPS/カナをソフトウェア制御するタイプで、VAとは違うからだろうと思ったが、そうではなかった。<br /><br />バグの内容<br />a) ポート197h (キーボード制御)の実装ミス<br /> - モードコマンドとオペレーションコマンドを切り替えるbitの意味を逆に解釈していた。<br /> - そもそも、モードコマンドとオペレーションコマンドの切り替えに使うbitの値が、テクマニと、VAのROM内プログラムが出力するのとで、違う。<br /> ⇒ RESETコマンドを発行しようとしても無視されていた<br />b) ポート190h 未実装<br />   BIOSは、ここのbit0の値で、電源投入かリセットかを区別し、電源投入時に限ってキーボードにRESETコマンドを発行する。ここが未実装なために、キーボードにRESETコマンドを発行しようとしていなかった。<br />c) VAリセット時にキーマップをクリアしていた。<br /> ⇒ リセット前の状態が保存されない。<br /><br />正しい動作は、おそらく、<br />・CAPS on/offの度にキーボードからVAにデータを送信、VA内でキーマップに反映<br />・電源投入時は、RESETコマンドを送信することにより、CAPSの状態に応じてonまたはoffのデータがキーボードからVAに送信され、VA内でキーマップに反映<br />・リセット時は、RESETコマンドは送信されないし、キーマップも前の状態を保つ。<br /><br />CAPSのon/offをiniに保存して、VA-EG起動時に反映しただけでは実際のキー入力には反映されなかった。a),b)の問題で、CAPSの状態がキーマップに反映されなかったから。<br /><br />これらを修正。iniへの保存も実装。<br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="https://88va.seesaa.net/article/54798429.html">
<link>https://88va.seesaa.net/article/54798429.html</link>
<title>全角キー3</title>
<description>[全角/半角]キーをVAの全角キーとして使えるように修正。WM_KEYDOWN: wParam = f4 lParam &amp; 0x01000000 = 00またはWM_KEYDOWN: wParam = f3 lParam &amp; 0x01000000 = 00を受け取ったらキーon、それから一定時間ったらキーoff。[全角/半角]キーを押しっぱなしだとどうなるかというと、Windows側でキーリピートして、WM_KEYDOWNが連続して発生するので(*1)、VA側のキーマップ(ポ..</description>
<dc:subject>EMU</dc:subject>
<dc:creator>Shinra</dc:creator>
<dc:date>2007-09-11T00:15:34+09:00</dc:date>
<content:encoded><![CDATA[
[全角/半角]キーをVAの全角キーとして使えるように修正。<br /><br />WM_KEYDOWN: wParam = f4 lParam & 0x01000000 = 00<br />または<br />WM_KEYDOWN: wParam = f3 lParam & 0x01000000 = 00<br />を受け取ったらキーon、それから一定時間ったらキーoff。<br /><br />[全角/半角]キーを押しっぱなしだとどうなるかというと、<br />Windows側でキーリピートして、WM_KEYDOWNが連続して<br />発生するので(*1)、VA側のキーマップ(ポート00h-0Eh)から見ても<br />押しっぱなしに見える。ただ、キーを押してからキーリピートが<br />始まるまでの間に、キーがoffになった状態が発生する。<br />・・・実害ないだろう。<br /><br />(*1) wParamはf4,f3が交互に出るのかと思ったら必ずしも<br />     そうではないようで、規則性が見つからない。謎。<br /><br /><br />デフォルトのキー割り当てを変更。<br />・[全角/半角]→全角<br />・[右Alt]→GRPH<br />[右Alt]は、GRPH,全角,テンキーカンマ、テンキー=のいずれかの<br />キーを割り当てられるようにした。<br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
</item>
</rdf:RDF>

