|
・製作34の内容で更新です、7バイト少くなります。(機能は同一)
<新更新部分:$3068($FC68)以降$3078($FC78)まで> TFR PC,D *3068: 1F 50 '.P' ANDB #$00 *306A: C4 00 '..' STD M3000,PCR *306C: ED 8C 91 '...' BSR Z3039 *306F: 8D C8 '..' RTS *3071: 39 '9' JSR Z3012,PCR *3072: AD 8C 9D '...' JSR Z0470 *3075: BD 04 70 '..p' RTS *3078: 39 '9' <旧更新部分:$3068($FC68)以降$307F($FC7F)まで> LDU #M0500 *3068: CE 05 00 '...' PSHU PC *306B: 36 80 '6.' PULU A *306D: 37 02 '7.' PULU B *306F: 37 04 '7.' ANDB #$00 *3071: C4 00 '..' STD M3000,PCR *3073: ED 8C 8A '...' BSR Z3039 *3076: 8D C1 '..' RTS *3078: 39 '9' JSR Z3012,PCR *3079: AD 8C 96 '...' JSR Z0470 *307C: BD 04 70 '..p' RTS *307F: 39 '9' 要は$3068($FC68)以降から次のリターンまでのコードは、このコードの塊の 先頭アドレスを取得してるだけです。そこに転送するデータの先頭アドレスと 末尾+1のアドレスが書かれいるので、このコードの塊(含むワークエリア)の 先頭から16バイト分をPC(windows、Linux等)に先ず送ってます。先頭の 2バイトに、このコードの塊の先頭アドレスを設定すれば$3039からの呼出で 構わないです。$3068($FC68)からのコールは2バイトを省くためのコードです。 ・製作34の内容で補足 転送するデータの先頭アドレスと(末尾+1)アドレスは差分は16の倍数に なるように設定して下さい。末尾+1はキリが良いように切り上げること。 例えば先頭アドレスを$6000とすれば(末尾+1)のアドレス$60X0、 Xの部分は0からFの16数値、下位のバイトの下位のニブルは0になります。 下の具体例では 6000 - 6070 になってます。 000060006070F7FDFDB6FDFE7FFDFD 理由はwindowsのドライバではキリが良くなるブロックでないと、データを 取得に行ったきり制御が戻って来ないからです。(これは慣れれば一理あり) 試してはいませんけど、1バイトづつ取得する訳にも行かず・・・ ・次回はwindowsのGUI用でマルチスレッド化した時の別スレッドの C言語ソースとヘッダーのみ公開します。因みに「MFC」で製作しました。 visial studio ではオプション設定しなければ「MFC」の開発環境は 構築できません。また基底クラスから派生する方法も派生したクラスを コールする方法も説明しませんのでインターネットサイトや参考書籍等で 調べて学習して下さい。(ユーザー インターフェイス スレッド です) ではまた。 |

>
- コンピュータとインターネット
>
- コンピュータ
>
- ソフトウェア





