タイトル | : エラーが出るなら元を絶ってしまえばいいじゃない |
投稿日 | : 2024/05/22(水) 00:14 |
投稿者 | : konno | 番 号 | : 11253 11251 番 konno さんへのコメント |
> 2024-04-16 10:01:41 STIME(09BA) 1876:4778 'サポート外 VIDEO BIOS(Int10h) 機能: AX=8500'> 2024-04-16 10:01:42 STIME(09BA) 1876:47F1 'サポート外 VIDEO BIOS(Int10h) 機能: AX=8582'> 2024-05-08 07:47:20 STIMEJ(2797) 433A:5982 'サポート外 KEYBOARD BIOS(int16h) 機能 F6'> 2024-04-16 10:02:00 STIME(09BA) 1876:4D68 'サポート外 Int6F'>> このようなエラーログが延々と出続けていたのです。これを何とかしないと J31BASICコンパイラは使い物にならないですね。 それで考えたのは、常駐プログラムでこれらの割り込みを横取りして無効化すること。 私がいつもお世話になっている、アセンブラ入門のサイトから トップ-> アセンブラ 第2章-> 第2章.メモリー管理-> 2-7. 常駐プログラム(TSR) https://programmer.main.jp/assembler2/assembler10.html このページの、「HOOK21」完成版(?) のソースを元に、INT10h でやってみたら出来ました。 ところが常駐解除が出来ないのです。 色々やってみてわかったのは、ソースの解放チェックルーチンで STAY_CHEK: mov ax,3521h int 21h ;割り込みベクター取得 mov ax,es ;解放できるかのチェック dec ax mov es,ax mov di,8 cld mov si,offset PRCNAME ; mov cl,7 ;★ cl ではうまくいかない、 mov cx,7 ;★ cx ならうまくいく repz cmpsb ;名前が一緒かのチェック or cx,cx jz _STAY stc ;解放できない ret _STAY: ;解放できる clc ret ★印のところの cl を cx に変えたら常駐解除できました。 # 汚れていたのは ch だったのです。 これで調子に乗って、INT16h INT6Fh も一緒にしてしまいました。 でもまたもや常駐解除が出来ない。(>_<) プログラムの仕組みがわかってないからでしょうね。(;_;)
- No.11253 一括表示へ - コメント元:11251 一括表示へ - [ 返信 ] [引用無し] pre