This code runs well on FreeDOS Using Euphoria language you can put the whole environmental variables table on a sequence (array)
-- +-+-+-+-+-+-+-+ Marco A. Achury www.geocities.com/marcoachury/eudos/ include machine.e -- Return memory segment of PSP segment for the current program. function PSP_Segment () sequence regs -- CPU registers regs = repeat(0,10) regs[REG_AX] = #5100 -- mov ah, 51h regs = dos_interrupt(#21, regs) -- int 21h return (regs[REG_BX]) -- mov SegmentPSP, bx end function -- Get program prefix of the current running program. function Get_PSP() integer Add sequence PSP Add = PSP_Segment() Add = Add * 16 PSP = peek({Add, 256}) return PSP end function --Get from a memory address a string of characters. --delimited by a zero function get_asciiz(atom add) sequence s integer i atom a s = {} i = 0 while 1 do a=peek(add+i) if a=0 then puts(1, s) return s end if s= append(s,a) i +=1 end while end function function environ() sequence PSP atom env_add sequence raw_env integer offset sequence z PSP = Get_PSP() env_add= (PSP[45] + (PSP[46]*256))*16 raw_env={} -- trace(1) offset=0 while 1 do z = get_asciiz(env_add+offset) if equal(z,{}) then return raw_env end if raw_env=append(raw_env, z) offset = offset + length(z) + 1 end while end function procedure main() sequence a a = environ() for i=1 to length (a) do puts (1, a[i] &"\n") end for end procedure main() if getc(0) then end if ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Freedos-user mailing list Freedos-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/freedos-user