> 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 も一緒にしてしまいました。
でもまたもや常駐解除が出来ない。(>_<)
プログラムの仕組みがわかってないからでしょうね。(;_;)