home *** CD-ROM | disk | FTP | other *** search
- ;=============================================================================
-
- ; Some example code for the DTU API...
-
- ;=============================================================================
-
-
-
- Code Segment
-
- Assume Cs:Code,Ds:Code
-
- Org 100h
-
- .386
-
- Start:
-
- Mov Ah,9
-
- Mov Dx,Offset Welcome
-
- Int 21h ;Print the Welcome String...
-
- Sub Ax,Ax ;Start checking Multiplex Number 0
-
- CheckLoop:
-
- Push Ax ;Save current Mux Number
-
- Int 2Dh ;Installation check
-
- Or Al,Al ;Is there a program installed here ?
-
- Pop Ax ;Restore Mux Number
-
- Jnz ProgramInstalled ;Program installed -> Jump
-
- NextCheck:
-
- Inc Ah ;No program installed -> Try next Mux
-
- Jnz CheckLoop ;Loop max. 256 times...
-
- DTUNotInstalled:
-
- Mov Ah,9 ;DTU not found at one of 256 Mux's
-
- Mov Dx,Offset NoDTUStr
-
- Int 21h ;Print DTU not installed
-
- Int 20h ;End program...
-
- ProgramInstalled:
-
- Pusha ;Save all registers
-
- Mov Es,Dx ;Set ES:DI to program signature
-
- Mov Si,Offset DTUSignature ;Compare to DTU's signature
-
- Mov Cx,16
-
- Rep Cmpsb ;Compare strings
-
- Popa ;Restore all registers
-
- Jnz NextCheck ;Strings not equal -> Scan next program
-
- DTUFound:
-
- Mov [DTUNumber],Ah ;Save Multiplex Number
-
- Mov Ah,9
-
- Mov Dx,Offset DTUFoundStr
-
- Int 21h ;Print DTU found
-
- Mov Al,Ch ;Move Major Version Number into AL
-
- Call PrintBCD ;Print Major Version Number
-
- Mov Ah,2 ;Subfunction 2: Print character
-
- Mov Dl,'.' ;The character...
-
- Int 21h ;Print...
-
- Mov Al,Cl ;Move Minor Version Number into AL
-
- Call PrintBCD ;Print Minor Version Number
-
- Mov Ah,9
-
- Mov Dx,Offset ExtAPIStr
-
- Int 21h
-
- Mov Ah,[DTUNumber]
-
- Mov Al,10h
-
- Int 2Dh
-
- Mov Al,Bl
-
- Mov [ExtendedAPI],Al
-
- Call PrintYesNo
-
- Cmp [ExtendedAPI],1
-
- Jnz NoExtAPIInfo
-
- Mov Ah,9
-
- Mov Dx,Offset NumUnitsStr
-
- Int 21h
-
- Mov Ah,[DTUNumber]
-
- Mov Al,11h
-
- Sub Bl,Bl
-
- Int 2Dh ;Get # of units
-
- Mov Al,Bl
-
- Movzx Cx,Al ;Load number of units in CX
-
- Call PrintBCD
-
- Mov Ah,[DTUNumber]
-
- Mov Al,11h
-
- Mov Bl,1
-
- Mov Dx,Cs
-
- Mov Di,Offset UnitBuf
-
- Int 2Dh
-
- Mov Ah,9
-
- Mov Dx,Offset InstallStr
-
- Int 21h
-
- Mov Si,Offset UnitBuf
-
- PrintLoop:
-
- Lodsb
-
- Call PrintBCD
-
- Mov Ah,2
-
- Mov Dl,' '
-
- Int 21h
-
- Loop PrintLoop
-
- NoExtAPIInfo:
-
- Mov Ah,9
-
- Mov Dx,Offset Int3Str
-
- Int 21h
-
- Int 03h ;Call DTU through INT 03
-
- Cmp [ExtendedAPI],1
-
- Jnz NoExtAPIPopup
-
- Mov Ah,9
-
- Mov Dx,Offset Sub3Str
-
- Int 21h
-
- Mov Ah,[DTUNumber]
-
- Mov Al,3
-
- Int 2Dh ;Call DTU through INT 2D/03
-
- NoExtAPIPopup:
-
- Mov Ah,9
-
- Mov Dx,Offset EndStr
-
- Int 21h
-
- Int 20h
-
-
-
- PrintYesNo Proc Near
-
- Pusha
-
- Mov Dx,Offset YesNo
-
- Not Al
-
- And Al,1
-
- Shl Al,2
-
- Sub Ah,Ah
-
- Add Dx,Ax
-
- Mov Ah,9
-
- Int 21h
-
- Popa
-
- Ret
-
- Endp
-
-
-
- PrintBCD Proc Near
-
- Pusha ;Save all registers
-
- Push Ax ;Save AX
-
- Shr Al,4 ;Move upper BCD Number into low bits
-
- Add Al,'0' ;Add '0' to become number in ASCII
-
- Mov Ah,2 ;Print character with DOS Function 2
-
- Mov Dl,Al
-
- Int 21h ;Print...
-
- Pop Ax ;Restore AX
-
- And Al,0Fh ;Mask out lower BCD Number
-
- Add Al,'0' ;Add '0' to become number in ASCII
-
- Mov Ah,2 ;Print character with DOS Function 2
-
- Mov Dl,Al
-
- Int 21h ;Print...
-
- Popa ;Restore all registers
-
- Ret ;Return...
-
- Endp
-
-
-
- Welcome Db 13,10,'DTown Utilities API Example Program.',13,10,13,10,'$'
-
- NoDTUStr Db 'DTU is not installed...',13,10,'$'
-
- DTUFoundStr Db 'DTU installed: DTU Version : $'
-
- ExtAPIStr Db 13,10,' Extended API Installed : $'
-
- NumUnitsStr Db 13,10,' Total number of units : $'
-
- InstallStr Db 13,10,' Units installed : $'
-
- Int3Str Db 13,10,' Calling DTU with INT 03h...$'
-
- Sub3Str Db 13,10,' Calling DTU with INT 2Dh, Function 03h...$'
-
- EndStr Db 13,10,13,10,'DTU tested OK...',13,10,13,10,'$'
-
-
-
- ExtendedAPI Db 0 ;1=Extended API installed, 0=not...
-
- HandlerOfs Dw 0 ;Stored Pop-up Handler Offset
-
- HandlerSeg Dw 0 ;Stored Pop-up Handler Segment
-
- DTUNumber Db 0 ;Multiplex Number for DTU
-
- DTUSignature Db 'DTown SDDTU ' ;DTU's Signature
-
- UnitBuf Db 100 Dup(0)
-
- YesNo Db 'Yes$No$'
-
-
-
- Code Ends
-
- End Start
-