;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;功能:加快軟盤的操作速度
;來源:《軟件報》1995年合訂本 60 頁
;作者:成都 盧軍(Purple Endurer修正了一個引起程序無法匯編的地方)
;原理:
;我們都知道軟驅讀寫結束後並不可以立刻取出磁盤, 因為軟驅燈未熄滅之前就取出磁盤
;將刮傷磁盤。在大量讀寫軟盤的時侯等待驅動器燈滅是非常令人著急的。用過hd-copy的
;讀者都可以體會到,hd-copy使用時當軟驅一讀寫完畢驅動器燈叉立刻熄滅了,馬上就可以
;取出磁盤,非常的方便。從這裡我們也可以看到用軟件的方法可能縮短驅動器燈熄滅的時
;間。
;在biOS數據區的40:40地址處保存著一個表明驅動器馬達接通時間的計數,每個時鐘(1/18.2
;秒)節拍,計數減1。當計數為0時,馬達停轉,驅動器燈熄滅,計數又恢復為256,計數在0
;和256之間反復循環。因此我們可以縮短這個計數減速減為0的時間,從而使驅動器燈提早熄
;滅。pc及其兼容機的硬中斷08H完成兩個功能,它首先把這個計數減一,然後通知定時器的
;應用程序發出INT 1CH中斷。因此在下面的這個程序中我們修改了 08H 中斷,使每次 08H
;中斷使計數減2。這樣我們等待驅動器燈熄滅的時間可以縮短一半,加快了磁盤物速度。
;
;采用COM文件編寫,並且采用INT 27H駐留。
;因此必須用EXE2BIN轉化為COM文件後才可運行。
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
PCOM SEGMENT BYTE PUBLIC
ASSUME CS: PCOM, DS: PCOM
ORG 100h
FASTOFF PROC FAR
START:
JMP SHORT INSTALL
OLD_INT_08H_ENTRY DD 00000000H ;保存原08H中斷程序
FASTOFF ENDP
INT_08H_ENTRY PROC FAR
PUSH DS
PUSH AX ;保存現場
MOV AX, 40H
MOV DS, AX
CMP BYTE PTR DS:40H, 2 ;計數小於2則不再
JB EXIT ;使計數減一
DEC BYTE PTR DS: 40H
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;若將以上的3句改為 mov byte ptr ds:40h,-1
;這樣這個數永遠減不完,軟驅燈豈不是永遠不滅?
;這樣誰還敢用軟盤;-)
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
EXIT:
POP AX
POP DS
JMP CS: OLD_INT_08H_ENTRY ;調用原08H中斷子程序
INSTALL:
LEA DX, COPYRIGHT ;打印程序信息
MOV AH, 09H
INT 21H
MOV AH, 35H
MOV AL, 08H
INT 21H ;取原08H中斷向量
MOV Word PTR OLD_INT_08H_ENTRY, BX
MOV Word PTR OLD_INT_08H_ENTRY+2, ES
MOV DX, OFFSET INT_08H_ENTRY
MOV AH, 25H
MOV AL, 08H ;設置新的08H中斷向量
INT 21H
LEA DX, FASTOFF+100 ;原文為:LEA DX, FINISH+100
INT 27H ;駐留退出
COPYRIGHT DB 'FASTOFF INSTALL. LUJUN.1995', 13, 10, '$'
INT_08H_ENTRY ENDP
PCOM ENDS
END START