$CPU 8086 ' make compatible with XT systems $LIB ALL OFF ' turn off all PowerBASIC libraries $ERROR ALL OFF ' turn off all PowerBASIC error checking $OPTIMIZE SIZE ' optimize for smaller code $COMPILE UNIT ' compile to a UNIT (.PBU) '$COMPILE EXE ' compile to a UNIT (.PBU) DEFINT A-Z ' Required for all numeric functions, forces PB to not ' include floating point in UNIT (makes it smaller) '/*------------------------------------------------------------------*/ $CODE SEG "MLIB5" '/*------------------------------------------------------------------*/ ' ISCDROM() ' Is CD ROM drive present. ' Returns 1 if CDROM is found. ' Returns 0 if not. ' EXAMPLE: T = ISCDROM '/*------------------------------------------------------------------*/ FUNCTION ISCDROM() PUBLIC AS INTEGER ASM PUSH AX ASM PUSH CX ASM PUSH DX ASM PUSH ES ASM PUSH DI REG 1, &H1500 CALL INTERRUPT &H2F 'CALL TO MSCDEX TO CHECK FOR CD-ROM DRIVES AL = REG(1) AND 255 'IF AL = 255, MSCDEX IS LOADED BL = REG(2) AND 255 'BL IS NUMBER OF CD-ROM DRIVES ON MACHINE CL = REG(3) AND 255 'CL IS NUMBER OF FIRST CD-ROM DRIVE (ZERO BASED) ASM POP DI ASM POP ES ASM POP DX ASM POP CX ASM POP AX IF AL = 255 AND BL > 0 THEN FUNCTION = 1 '/* T$ = "CD-ROM(S): "+ STR$(BL) +" DRIVE" '/* IF BL > 1 THEN T$ = T$ +"S BEGINNING AT" '/* T$ = T$ + " "+CHR$(CL + 65)+":" ELSE FUNCTION = 0 '/* PRINT "MSCDEX NOT LOADED. NO CD-ROM DRIVES FOUND." END IF '/* FUNCTION = T$ END FUNCTION '/*------------------------------------------------------------------*/ ' $INCLUDE "C:\CODE\MLIB\MLIB.INC" ' PRINT ISCDROM ' Y$ = GETKEY