It reads some strings at the beginning of BIOS memory area and searches for "DOSBOX"
Code: Select all
#include once "dos/sys/movedata.bi"
function IsRunningInDOSBOX() as boolean
const BIOS_STRING_LENGTH = 128
dim s as zstring * (BIOS_STRING_LENGTH + 1)
dim b as ubyte ptr = @s
dosmemget( &hf000u * 16 + &he000u, BIOS_STRING_LENGTH, @s )
for i as integer = 0 to BIOS_STRING_LENGTH-1
if( b[i] < 32 ) then
b[i] = asc(".")
end if
next
return cbool(instr( s, "DOSBox" ) > 0)
end function
print "Running in dosbox = "; IsRunningInDOSBOX()