home *** CD-ROM | disk | FTP | other *** search
- .286
- .MODEL TINY
- .CODE
- ORG 100H
-
- START: JMP REALSTART
-
- OLDINT13_OFF DW 0
- OLDINT13_SEG DW 0
- ACTIVE DB 0
-
- DRIVEOPTEXT DB 30 DUP(0)
- BACKGRND DW 30 DUP(0)
-
- INTFUNCTABLE DB 0
- DW FUNC00H
- DB 2
- DW FUNC02H
- DB 3
- DW FUNC03H
- DB 4
- DW FUNC04H
- DB 5
- DW FUNC05H
- DB 0AH
- DW FUNC0AH
- DB 0BH
- DW FUNC0BH
- DB 0CH
- DW FUNC0CH
- DB 0DH
- DW FUNC0DH
- DB 11H
- DW FUNC11H
- DB 16H
- DW FUNC16H
-
- TRACK DW 0
- HEAD DB 0
- SECTOR DB 0
- DRIVE DB 0
- TOSECT DB 0
-
- FUNC00HTEXT DB "RESET "
- FUNC02HTEXT DB " READ T:00000 H:00 S:00-00 "
- FUNC03HTEXT DB " WRITE T:00000 H:00 S:00-00 "
- FUNC04HTEXT DB " VERIFY T:00000 H:00 S:00-00 "
- FUNC05HTEXT DB " FORMAT T:00000 H:00 "
- FUNC0AHTEXT DB " LREAD T:00000 H:00 S:00-00 "
- FUNC0BHTEXT DB " LWRITE T:00000 H:00 S:00-00 "
- FUNC0CHTEXT DB " SEEK T:00000 H:00 "
- FUNC0DHTEXT DB " ALTERNATE DISK RESET "
- FUNC11HTEXT DB " CALIBRATE "
- FUNC16HTEXT DB "DISK CHANGE EXAMINATION "
-
- ;------------------------------------------------------------------------------
-
- NEWINT13H: PUSHA
- PUSHF
- PUSH ES
- PUSH DS
- PUSH CS
- POP DS
- MOV ACTIVE,0
- XOR SI,SI
- RETRYFUNCSEARCH:CMP INTFUNCTABLE[SI],255
- JZ NOACTIVE
- CMP INTFUNCTABLE[SI],AH
- JNZ NOTHISFUNC
- INC SI
- JMP WORD PTR INTFUNCTABLE[SI]
- NOTHISFUNC: ADD SI,3
- JMP RETRYFUNCSEARCH
- ACTIVATE: MOV ACTIVE,1
- XOR SI,SI
- LEA DI,BACKGRND
- CLD
- MOV CX,30
- MOV AX,CS
- MOV ES,AX
- MOV AX,0B800H
- MOV DS,AX
- REP MOVSW
- MOV AX,DS
- MOV ES,AX
- MOV AX,CS
- MOV DS,AX
- MOV CX,30
- MOV AH,01110000B
- XOR DI,DI
- LEA SI,DRIVEOPTEXT
- PUTTEXTCIK: LODSB
- STOSW
- LOOP PUTTEXTCIK
- NOACTIVE: POP DS
- POP ES
- POPF
- POPA
- PUSHF
- CALL DWORD PTR CS:[OLDINT13_OFF]
- PUSHF
- PUSH AX
- PUSH CX
- PUSH SI
- PUSH DI
- PUSH ES
- PUSH DS
- CMP CS:ACTIVE,1
- JNZ NOCLEARBCK
- MOV AX,CS
- MOV DS,AX
- MOV AX,0B800H
- MOV ES,AX
- XOR DI,DI
- LEA SI,BACKGRND
- MOV CX,30
- CLD
- REP MOVSW
- NOCLEARBCK: POP DS
- POP ES
- POP DI
- POP SI
- POP CX
- POP AX
- POPF
- INTLENGTH: RETF 2
-
- COPYTEXT: LEA DI,DRIVEOPTEXT
- MOV AX,CS
- MOV DS,AX
- MOV ES,AX
- MOV CX,15
- CLD
- REP MOVSW
- RET
-
- SETDRIVE: CMP DRIVE,80H
- JB NOFIXEDDISK
- SUB DRIVE,7EH
- NOFIXEDDISK: MOV AL,DRIVE
- ADD AL,41H
- MOV DRIVEOPTEXT[0],AL
- MOV DRIVEOPTEXT[1],":"
- RET
-
- DECIMALCONVERT: LEA BX,DRIVEOPTEXT
- ADD SI,BX
- MOV BX,10
- DECCONVCIK: XOR DX,DX
- DIV BX
- ADD DL,30H
- MOV DS:[SI],DL
- DEC SI
- LOOP DECCONVCIK
- RET
-
- SETVALUES: MOV DRIVE,DL
- MOV HEAD,DH
- MOV BYTE PTR TRACK[0],CH
- MOV BYTE PTR TRACK[1],CL
- SHR BYTE PTR TRACK[1],7
- AND CL,00111111B
- MOV SECTOR,CL
- MOV TOSECT,AL
- RET
-
- SETALLVALUES: CALL COPYTEXT
- CALL SETDRIVE
- MOV AX,TRACK
- MOV SI,15
- MOV CX,5
- CALL DECIMALCONVERT
- MOV AL,SECTOR
- XOR AH,AH
- MOV SI,25
- MOV CX,2
- CALL DECIMALCONVERT
- MOV AL,HEAD
- XOR AH,AH
- MOV SI,20
- MOV CX,2
- CALL DECIMALCONVERT
- MOV AL,TOSECT
- XOR AH,AH
- MOV CX,2
- MOV SI,28
- CALL DECIMALCONVERT
- RET
-
- FUNC00H: LEA SI,FUNC00HTEXT
- CALL COPYTEXT
- JMP ACTIVATE
-
- FUNC02H: CALL SETVALUES
- LEA SI,FUNC02HTEXT
- CALL SETALLVALUES
- JMP ACTIVATE
-
- FUNC03H: CALL SETVALUES
- LEA SI,FUNC03HTEXT
- CALL SETALLVALUES
- JMP ACTIVATE
-
- FUNC04H: CALL SETVALUES
- LEA SI,FUNC04HTEXT
- CALL SETALLVALUES
- JMP ACTIVATE
-
- FUNC05H: MOV DRIVE,DL
- MOV HEAD,DH
- SHR CL,7
- MOV BYTE PTR TRACK[0],CH
- MOV BYTE PTR TRACK[1],CL
- LEA SI,FUNC05HTEXT
- CALL COPYTEXT
- CALL SETDRIVE
- MOV AX,TRACK
- MOV SI,15
- MOV CX,5
- CALL DECIMALCONVERT
- MOV AL,HEAD
- XOR AH,AH
- MOV SI,20
- MOV CX,2
- CALL DECIMALCONVERT
- JMP ACTIVATE
-
- FUNC0AH: CALL SETVALUES
- LEA SI,FUNC0AHTEXT
- CALL SETALLVALUES
- JMP ACTIVATE
-
- FUNC0BH: CALL SETVALUES
- LEA SI,FUNC0BHTEXT
- CALL SETALLVALUES
- JMP ACTIVATE
-
- FUNC0CH: MOV HEAD,DH
- MOV BYTE PTR TRACK[0],CH
- SHR CL,7
- MOV BYTE PTR TRACK[1],CL
- MOV DRIVE,DL
- LEA SI,FUNC0CHTEXT
- CALL COPYTEXT
- CALL SETDRIVE
- MOV SI,15
- MOV AX,TRACK
- MOV CX,5
- CALL DECIMALCONVERT
- MOV SI,20
- MOV AL,HEAD
- XOR AH,AH
- MOV CX,2
- CALL DECIMALCONVERT
- JMP ACTIVATE
-
- FUNC0DH: MOV DRIVE,DL
- LEA SI,FUNC0DHTEXT
- CALL COPYTEXT
- CALL SETDRIVE
- JMP ACTIVATE
-
- FUNC11H: MOV DRIVE,DL
- LEA SI,FUNC11HTEXT
- CALL COPYTEXT
- CALL SETDRIVE
- JMP ACTIVATE
-
- FUNC16H: LEA SI,FUNC16HTEXT
- CALL COPYTEXT
- JMP ACTIVATE
-
- REALSTART: LEA DX,PRGTEXT
- MOV AH,9
- INT 21H
- MOV AH,35H
- MOV AL,013H
- INT 21H
- MOV OLDINT13_OFF,BX
- MOV DI,BX
- MOV BX,ES
- MOV OLDINT13_SEG,BX
- CLD
- LEA SI,NEWINT13H
- LEA CX,INTLENGTH
- SUB CX,SI
- INC CX
- MOV AX,CS
- MOV DS,AX
- REPZ CMPSB
- OR CX,CX
- JZ INSTERROR
- LEA DX,NEWINT13H
- MOV AH,25H
- MOV AL,13H
- INT 21H
- LEA DX,INSTALLED
- MOV AH,9
- INT 21H
- LEA DX,REALSTART
- INT 27H
- INSTERROR: MOV AH,9
- LEA DX,AINSTALLED
- INT 21H
- INT 20H
-
- PRGTEXT DB 13,10,"DISK TRACE V1.0 BY "
- DB "PSYCHO/TSI (C) '93",13,10,13,10,"$"
- INSTALLED DB "DISK TRACE NOW INSTALLED!",13,10,13,10,"$"
- AINSTALLED DB "DISK TRACE IS ALREADY INSTALLED!!",13,10,13,10,"$"
- END START
-