1. Standard Euphoria Library Project

I just created a project on sourceforge for a standard library of
include files for Euphoria (in addition to the ones that come with the
interpreter). I think that by creating such a library, we could solve
many of the namespace problems, encourage code reuse, and create some
examples of good Euphoria code for newbies to learn from. So check it
out at http://sourceforge.net/projects/standardeu/

I haven't put up any files yet. If anyone wants to help, please do.
Here's the list of stuff that needs to be done:
* propose routines that should go in the library, and an API to go with
them
* write the routines
* write docs

And when that's done, people need to use it. Right now, many programs
(and worse, include files) redeclare functions that are used over and
over again. Not only is this a waste of time when one can just include a
pre-written set of functions, but it can cause namespace conflicts as
well. People have been complaining about namespaces in Euphoria, but I
think that most of the problems could be solved by not redeclaring
commonly used functions.

Jeff Fielding
JJProg at cyberbury.net

new topic     » topic index » view message » categorize

2. Re: Standard Euphoria Library Project

Jeff,

This sounds like a nice idea, a very useful project. If I can help
in any way what so ever, just let me know.

jiri

----- Original Message -----
From: "Jeffrey Fielding" <JJProg at CYBERBURY.NET>
To: <EUforum at topica.com>
Sent: Wednesday, February 07, 2001 3:59 PM
Subject: Standard Euphoria Library Project


> I just created a project on sourceforge for a standard library of
> include files for Euphoria (in addition to the ones that come with
the
> interpreter). I think that by creating such a library, we could
solve
> many of the namespace problems, encourage code reuse, and create
some
> examples of good Euphoria code for newbies to learn from. So check
it
> out at http://sourceforge.net/projects/standardeu/
>
> I haven't put up any files yet. If anyone wants to help, please do.
> Here's the list of stuff that needs to be done:
> * propose routines that should go in the library, and an API to go
with
> them
> * write the routines
> * write docs
>
> And when that's done, people need to use it. Right now, many
programs
> (and worse, include files) redeclare functions that are used over
and
> over again. Not only is this a waste of time when one can just
include a
> pre-written set of functions, but it can cause namespace conflicts
as
> well. People have been complaining about namespaces in Euphoria, but
I
> think that most of the problems could be solved by not redeclaring
> commonly used functions.
>
> Jeff Fielding
> JJProg at cyberbury.net
>
>

new topic     » goto parent     » topic index » view message » categorize

3. Re: Standard Euphoria Library Project

Here are some standard string functions I use, borrowing heavily from
QBasic. Most are pretty self-explanatory, except for eof/get_string. They
work much like QBasic's line input statement, and wrap gets() so you don't
have to worry about it returning a -1 instead of a sequence. For example:

   integer handle
   sequence data
   data = {}

   -- open a file
   handle = open( "file.txt", "r" )

   -- read until end of file
   while not eof( handle ) do
      -- get data from the file
      data &= { get_string( handle ) }
   end while

   -- close the file
   close( handle )


[The Routines]

eof( integer file )
   returns true if at end of file
   used with get_string()

get_string( integer file )
   returns string from file
   akin to qbasic's "line input" statement
   if end of file, returns empty sequence
   "safe" routine

left( sequence s, integer len )
   returns leftmost characters from string
   negative length removes those many chars from right side
   "safe" routine that does boundary checking

ltrim( sequence s )
   removes white space from left side of string

lower_case( sequence s )
   converts a string, or sequence of strings, to lower case

mid( sequence s, integer start, integer len )
   returns requested substring from string
   "safe" routine that does boundary checking

right( sequence s, integer len )
   returns rightmost characters from string
   negative length removes those many chars from left side
   "safe" routine that does boundary checking

rtrim( sequence s )
   removes white space from right side of string

split( sequence s )
   splits string into words

upper_case( sequence s )
   converts a string, or sequence of strings, to upper case

-- David Cuny

[The Code]

-- string.e
-- qbasic-style string support routines

constant WhiteSpace = " \t\n\r"
constant CaseDiff   = 'a' - 'A'

sequence lineRead
lineRead = repeat( 0, 16 )

global function split( sequence s )
    -- chop line into white-space delimited substrings
    object char
    sequence string, strings

    -- pad the end
    s &= ' '

    -- clear accumulator
    strings = {}
    string = ""

    -- scan the string
    for i = 1 to length( s ) do
        char = s[i]

        -- not a char?
        if sequence( char ) then
            -- error, need to handle
        -- seperator?
        elsif find( char, WhiteSpace ) then
            -- word accumulated?
            if length( string ) then
                -- add to substrings list
                strings &= {string}
                string = ""
            end if
        else
            -- add to substring
            string &= char
        end if
    end for

    return strings

end function

global function ltrim( sequence s )
    -- remove white space from left hand of string

    -- not empty?
    if length( s ) then
        for i = 1 to length( s ) do
            -- not white space?
            if not find( s[i], WhiteSpace ) then
                -- return string
                return s[i..length(s)]
            end if
        end for
    end if
    -- all whitespace, or empty
    return ""
end function

global function rtrim( sequence s )
    -- remove white space from right hand of string

    -- not empty?
    if length( s ) then
        for i = length( s ) to 1 by -1 do
            -- not white space?
            if not find( s[i], WhiteSpace ) then
                -- return string
                return s[1..i]
            end if
        end for
    end if
    -- all whitespace, or empty
    return ""
end function

global function mid( sequence s, integer start, integer len )
    -- emulate qbasic's mid$ function
    if start < 1
    or len < 1
    or start > length(s) then
        return ""
    elsif start+len-1 > length(s) then
        return s[start..length(s)]
    else
        return s[start..start+len-1]
    end if
end function


global function right( sequence s, integer len )

    -- return the rightmost characters in the string.
    -- if len is negative, returns the string less leftmost
    -- len chars

    integer l

    -- get the length of the string
    l = length( s )

    if len = 0 then
        -- empty string
        return ""

    elsif len > 0 then
        -- normal right$
        if len > l then
            -- too large, return subset
            return s
        else
            -- return requested amount
            return s[l-len+1..l]
        end if

    else
        -- too large?
        if -len > l then
            -- return entire string
            return s
        else
            -- return substring
            return s[-len+1..l]
        end if
    end if

end function


global function left( sequence s, integer len )

    -- return the leftmost characters in the string.
    -- if len is negative, returns the string less rightmost
    -- len chars

    integer l

    -- get the length of the string
    l = length( s )

    if len = 0 then
        -- empty string
        return ""

    elsif len > 0 then
        -- normal right$
        if len > l then
            -- too large, return subset
            return s
        else
            -- return requested amount
            return s[1..len]
        end if

    else
        -- too large?
        if -len > l then
            -- return entire string
            return s
        else
            -- return substring
            return s[1..l+len]
        end if
    end if

end function


global function eof( integer file )

    -- no line in buffer?
    if equal( lineRead[file], 0 ) then
        -- read a line from the file
        lineRead[file] = gets( file )
    end if

    -- return true if eof
    return integer( lineRead[file] )

end function

global function get_string( integer file )

    object result

    -- buffer empty?
    if equal( lineRead[file], 0 ) then

        -- read a line from the file
        result = gets( file )

    else
        -- get stored value
        result = lineRead[file]

        -- store 0 in buffer
        lineRead[file] = 0

    end if

    -- end of file?
    if integer( result ) then

        -- return empty string
        return ""

    end if

    -- remove line feed?
    if equal( right(result,1), "\n" ) then
        result = left(result,-1)
    end if

    -- return line read
    return result

end function

global function upper_case( sequence s )
    integer char
    for i = 1 to length( s ) do
        if sequence( s[i] ) then
            s[i] = upper_case( s[i] )
        else
            char = s[i]
            if char >= 'a' and char <= 'z' then
                s[i] = char - CaseDiff
            end if
        end if
    end for
    return s
end function

global function lower_case( sequence s )
    integer char
    for i = 1 to length( s ) do
        if sequence( s[i] ) then
            s[i] = upper_case( s[i] )
        else
            char = s[i]
            if char >= 'A' and char <= 'Z' then
                s[i] = char + CaseDiff
            end if
        end if
    end for
    return s
end function

new topic     » goto parent     » topic index » view message » categorize

4. Re: Standard Euphoria Library Project

A couple more assorted routines that pop up in my code. I'd also suggest
ripping the C structure tools out of Win32Lib and putting them in a seperate
file. Apologies for the math routines not handling sequences.

-- David Cuny

function iif( integer test, object true, object false )
-- return true or false value, depending on test result
-- both the true and false expressions will be evaluated!
   if test then
      return true
   else
      return false
   end if
end function

function remove_all( object o, sequence s )
-- remove all instances of o from s
    sequence new
    new = {}
    for i = 1 to length( s ) do
        if not equal( o, s[i] ) then
            new = append( new, s[i] )
        end if
    end for
    return new
end function

function remove( integer i, sequence s)
-- remove ith element from s
    return s[1..i-1] & s[i+1..length(s)]
end function

function fix( atom a )
-- convert an atom to an integer
    integer int

    -- get integer portion
    int = floor( a )

    -- round up or down?
    if a - int >= 0.5 then
        int = int + 1
    end if

    return int

end function

function abs( atom a )
-- return absolute value of a number

    if a > 0 then
        return a
    else
        return -a
    end if

end function

function min( integer i1, integer i2 )
-- return lesser of the two values
    if i1 < i2 then
        return i1
    else
        return i2
    end if
end function

function max( integer i1, integer i2 )
-- return larger of the two values
    if i1 > i2 then
        return i1
    else
        return i2
    end if
end function

new topic     » goto parent     » topic index » view message » categorize

5. Re: Standard Euphoria Library Project

> David Cuny wrote:
>
>   <SNIP>
> > function remove( integer i, sequence s)
> > -- remove ith element from s
> >     return s[1..i-1] & s[i+1..length(s)]
> > end function
>    <SNIP>
>
> What if the user tries to remove the first or last item?
> i would end up being 0 or greater than the length of >the sequence..

Yes, *but* Euphoria won't crash. When you slice from one above the length of
the sequence or when you slice to zero it will return an empty seq rather
than crash.

Come on people. This is trivial beginners stuff.

Ralf N.
nieuwen at xs4all.nl

new topic     » goto parent     » topic index » view message » categorize

6. Re: Standard Euphoria Library Project

I agree with Ralf (and David).  Euphoria is designed to elegantly handle
precisely this situation.  Why would you add totally unnecessary code to a
routine, when the routine already works correctly for all legal values of i
(1 <= i <= length(s))?  To answer Kat's point, s = {} will crash because
there is no legal value possible for i.

- Colin Taylor

----- Original Message -----
From: Chris Bensler <bensler at mailops.com>
To: <EUforum at topica.com>
Sent: Wednesday, February 07, 2001 9:04 AM
Subject: RE: Standard Euphoria Library Project


> You shouldn't be allowed to try and access an out of bounds subscript..
> It may not crash, but why would you want it to do that? IMHO, it should
> crash.. that's what error checking is for..
>
> Chris
>
> Fam. Nieuwenhuijsen wrote:
> > > David Cuny wrote:
> > >
> > >   <SNIP>
> > > > function remove( integer i, sequence s)
> > > > -- remove ith element from s
> > > >     return s[1..i-1] & s[i+1..length(s)]
> > > > end function
> > >    <SNIP>
> > >
> > > What if the user tries to remove the first or last item?
> > > i would end up being 0 or greater than the length of >the sequence..
> >
> > Yes, *but* Euphoria won't crash. When you slice from one above the
> > length of
> > the sequence or when you slice to zero it will return an empty seq
> > rather
> > than crash.
> >
> > Come on people. This is trivial beginners stuff.
> >
> > Ralf N.
> > nieuwen at xs4all.nl
> >
> >
>
>

new topic     » goto parent     » topic index » view message » categorize

7. Re: Standard Euphoria Library Project

Dear Eu users:

> > > rather
> > > than crash.

What about all *stamped* librares for this project ?

Regards,
Igor Kachan
kinz at peterlink.ru

new topic     » goto parent     » topic index » view message » categorize

8. Re: Standard Euphoria Library Project

Igor Kachan writes:
> What about all *stamped* librares for this project ?

Sure. No problem. I'm willing to stamp anything of 
general usefulness. The only thing I won't stamp 
is a highly specialized file useful to only one 
(non-registered) person.

Regards,
   Rob Craig
   Rapid Deployment Software
   http://www.RapidEuphoria.com

new topic     » goto parent     » topic index » view message » categorize

9. Re: Standard Euphoria Library Project

This is a great idea.

Basically, it's stupid to have hundreds of coders 
each coming up with their Euphoria library with demos,
etc. while they could all join hands and create one,
multiplatform, include file set for all generic
routines.

I'd propose this standard Euphoria library to have the
following, price-winning MTS Structure;

- database.e   (SQL, EDS, DBASE database routines)
- multimedia.e (Video, 3D, Sound and graphics
routines)
- network.e    (TCP/IP, Winsock, etc. routines)
- sequence.e   (Sequence routines)
- parse.e      (parsing routines)
- script.e     (scripting engine routines)
- windows.e    (Multiplatform GUI library)

I'd be willing to completely write the following
libraries myself;
- parse.e
- script.e
- sequence.e

script.e being a high-performance library designed to
run custom programs in any language at extremely high
speeds.


Mike The Spike

new topic     » goto parent     » topic index » view message » categorize

10. Re: Standard Euphoria Library Project

Robert writes:

> Sure. No problem. I'm willing to stamp anything of 
> general usefulness. The only thing I won't stamp 
> is a highly specialized file useful to only one 
> (non-registered) person.

But this is my bad English.
I think, there are some *stamped* files in Archives.
To combine these files into one set of The Standard Lib ?

Regards,
Igor Kachan
kinz at peterlink.ru

new topic     » goto parent     » topic index » view message » categorize

11. Re: Standard Euphoria Library Project

file.e and string.e would be the most useful.

new topic     » goto parent     » topic index » view message » categorize

12. Re: Standard Euphoria Library Project

Maybe an obfuscated include

-- screen location <> given coordinates (in this case, off screen.)
if or_bits((or_bits((Num[1] < 1), (Num[1] > VC_XPIXELS ))),
(or_bits((vNum[2] < 1), (vNum[2] > VC_YPIXELS )))) then

-- test of two strings
if or_bits(compare(Str[1], "")=0, compare(Str[2], "")=0) then

just a joke.....



I'd like to vote for print.e and bget.e by Gabriel Boehme [invaluable]


>From my archive: (more to follow)

-- DOS STUFF
-- Insure every Graphics Mode Coordinates
-- e.g draw your screen in 640x480, use this and 1024x768 will show
-- the drawn image based on "if integer mode 261" the exact same pos on
screen.

global integer cx, cy, sx, sy
if    mode = 261 then cx = 192 cy = 144 sx = 384 sy = 288
elsif mode = 260 then cx = 192 cy = 144 sx = 384 sy = 288
elsif mode = 259 then cx = 80  cy = 60  sx = 160 sy = 120
elsif mode = 258 then cx = 80  cy = 60  sx = 160 sy = 120
elsif mode = 256 then cx = 0   cy = -80 sx = 0   sy = 0
else  cx = 0  cy = 0  sx = 0 sy = 0
end if

-- mode 257 needs no value (all are set to 0)

procedure box(integer x1,integer y1,integer x2,integer y2, sequence c)
-- sequence c is a length 3 sequence
    x1 += cx
    x2 += cx
    y1 += cy
    y2 += cy
    machine_proc(11,{c[3],1,{{x1,y1},{x2,y1},{x2,y2},{x1,y2}}})
    machine_proc(2,{c[1],0,{{x1,y2},{x1,y1},{x2,y1}}})
    machine_proc(2,{c[2],0,{{x1,y2},{x2,y2},{x2,y1}}})
end procedure


BTW, I'm back when someones *NOT* around.

Euman

new topic     » goto parent     » topic index » view message » categorize

13. Re: Standard Euphoria Library Project

Thanks for your responses. I'll start setting up documentation etc. on
sourceforge as soon as I can, but I have a lot of schoolwork to do right now,
so I'm not sure when I'll be able to do that. I'll add the routines that have
already been contributed then, though hopefully there will be some coding
standards for the library which I'll post too (and I might change some of the
routines to fit those standards). I'm really not very good at organizing code
or writing documentation, so if anyone wants to propose some organizational
standards, please do, as well as routines, but good documentation and
organization should come first, I think.

MTS - I fished your reply out of the trash. Your organizational scheme sounds
like an okay start, though I'd add some files for more specific routines, and
some of your proposed files might be outside the scope of this project. If you
want to contribute to this project, please contribute logical and useful stuff
like this, not profanity-riddled nonsense.

Thanks,
Jeff Fielding

new topic     » goto parent     » topic index » view message » categorize

14. Re: Standard Euphoria Library Project

--- Jeffrey Fielding <JJProg at CYBERBURY.NET> wrote:
> MTS - I fished your reply out of the trash. Your
> organizational scheme sounds
> like an okay start, though I'd add some files for
> more specific routines, and
> some of your proposed files might be outside the
> scope of this project. If you
> want to contribute to this project, please
> contribute logical and useful stuff
> like this, not profanity-riddled nonsense.
> 
> Thanks,
> Jeff Fielding

Wha?
You like that scheme?
Well, it's better than SeqLib.e, GFX.e and StrTok.e or
some shit like that.

I think if we wanna do something usefull with this
project, we shouldn't all provide a sequence routine
library or some lame shit like that.
We could take advantage of this oppurtunity to
actually code all those libraries we wanted for such a
long time, but weren't able to code on our own.

A multiplatform GUI would finally give our Euphoria
programs a uniform look on all platforms.
Maybe a LLama/Win32lib hybrid?

And Mic and Jiri could spew out some fast 3D graphics
rotuines so Euphoria games don't look like mode 13h
Space Invaders clones.
The games I saw in Euphoria were mostly clones from
old arcade games.
But that's not fair, since those arcade games were a
few K in size and coded in ASM back in the 70s.
Like this latest RPG is saw, what was it, you know,
that RPG with the .bat file that points to something
wrong, well, that's a 320*200*256 game written in a
32-Bit high performance programming language, with
optimising compiler support.
If it was a 160*144*256 game, it could be running on
the damned Gameboy (in HighColor mode).
When are we gonna see some Quake clones in Eu?
The reason why we aren't seeing any right now, is
because of a lack of multimedia libraries in Euphoria.
C, for example, has access to OpenGL, Direct X,
Allegro, etc. automagically. Just include a few files
and you're set.


Mike The Spike

new topic     » goto parent     » topic index » view message » categorize

15. Re: Standard Euphoria Library Project

Mike The Spike wrote:
> Wha?
> You like that scheme?
> Well, it's better than SeqLib.e, GFX.e and StrTok.e or
> some shit like that.
> 
> I think if we wanna do something usefull with this
> project, we shouldn't all provide a sequence routine
> library or some lame shit like that.
> We could take advantage of this oppurtunity to
> actually code all those libraries we wanted for such a
> long time, but weren't able to code on our own.
> 
> A multiplatform GUI would finally give our Euphoria
> programs a uniform look on all platforms.
> Maybe a LLama/Win32lib hybrid?
> 
> And Mic and Jiri could spew out some fast 3D graphics
> rotuines so Euphoria games don't look like mode 13h
> Space Invaders clones.
> The games I saw in Euphoria were mostly clones from
> old arcade games.
> But that's not fair, since those arcade games were a
> few K in size and coded in ASM back in the 70s.
> Like this latest RPG is saw, what was it, you know,
> that RPG with the .bat file that points to something
> wrong, well, that's a 320*200*256 game written in a
> 32-Bit high performance programming language, with
> optimising compiler support.
> If it was a 160*144*256 game, it could be running on
> the damned Gameboy (in HighColor mode).
> When are we gonna see some Quake clones in Eu?
> The reason why we aren't seeing any right now, is
> because of a lack of multimedia libraries in Euphoria.
> C, for example, has access to OpenGL, Direct X,
> Allegro, etc. automagically. Just include a few files
> and you're set.
> 
> Mike The Spike

A cross-platform GUI library would be quite nice, as would a
cross-platform sockets library etc. Perhaps we could build that into ESL
(Euphoria Standard Library) at some time. However, I think that the
"lame" sequence routines are a must, since they are one of the major
reasons behind this library. Since these simple routines are used so
frequently, they are the primary cause for namespace conflicts and
re-writing code. Few people would re-write win32lib every time they
wrote a Windows program, but people frequently rewrite these simple
routines. This is especially a problem in include files, many of which
define the same routines as globals, which can cause namespace
conflicts. While these more complex libraries you speak of would be very
useful, I'm not sure they are in the scope of ESL, as they are such big
projects. Perhaps such libraries should be included in ESL, but we
should at least establish some basic coding guidelines and frequently
used routines first.

Jeff Fielding

new topic     » goto parent     » topic index » view message » categorize

16. Re: Standard Euphoria Library Project

Al Getz wrote:
>
> Mainly, when using any function like this, some sort of
> range checking is always desirable in order to reduce
> errors that cause the program to hault.
>

Yes, range checking is required for a) debugging, and b) handling user
input.  When it is used for debugging it should give the programmer an
informative error message so that the program errors can be found and
corrected.  This is best done through the use of type().  Although there are
exceptions, I think it is unwise to write routines that simply ignore
errors, as this just interferes with the debugging process.

I think the SELP is a good idea.  Any includes developed with this project
should be group/team efforts.  To avoid total anarchy, there needs to be an
agreed process covering:

1.  Decision on what include files are to be produced,
2.  Decision on what routines are to be put into each include.
3.  Review, debugging, documentation process.
4.  Approval by the group.
5.  Submission to Rob for stamping

Less important, but still worth mentioning, is the matter of programming
style and documentation style, so that the product has a reasonably uniform
and easy-to-understand appearance.  I would suggest we follow RDS's example
as seen in graphics.e (programming style) and library.doc (documentation
style), unless someone can offer a better idea.

- Colin Taylor

new topic     » goto parent     » topic index » view message » categorize

17. Re: Standard Euphoria Library Project

Dear Eu users:

There is a list with the *stamped* stuff 
of The RDS Archive at 09.02.2001 below.

I think, this list may be useful to choice
the best routines for new ESL stuff.

GEN
objecteu.zip
Object Euphoria
66K
-- Mike Nelson
updated Nov 15/00
happy > 3.00
stamp
A full-featured system for object-oriented programming
in Euphoria. It's based on Java.
Nov 15: bug fixes in the Standard Class Library

LNX
lingraph.zip
graphics.e for Linux
6K
-- Mike Sabal
updated Sep 9/00
stamp
A pixel graphics library for Linux
that's compatible with graphics.e for DOS32.
Sep 9: support for floodfill, ellipse, and polygon.
You can use this library in Linux and DOS32, and it should provide
100% compatibility.

WIN
win32lib.zip
Win32Lib: WIN32 Library with Demos
260K
-- David Cuny
updated Feb 19/99
happy > 47.40
stamp
An excellent library for creating WIN32
GUI programs. With a small amount of simple Euphoria code, you can
add a variety of Windows user-interface elements to your program.
Documentation plus lots of small demo programs are included.
Many people have based their WIN32 Euphoria programs on this library.
Note: this is the latest stamped version. Be sure to check out
the contrib.htm#newwin32lib
New Win32Lib
being developed by a team of people.
Update: Feb 19: v0.45r - getFontDialog,
FIX program updated to Euphoria 2.2 keywords,
setWarning to suppress warning messages,
Hotkeys in captions now work,
Pressing Return activates DefPushButton,
Trackbar added, Tab controls added,
Extended attributes - 3D look, getMousePos()

WIN
api_wrap.zip
WIN32 API Wrappers
33K
-- Jacques Deschenes
June 16/98
happy > 2.00
stamp
a large set of Euphoria 'wrapper'
routines for WIN32 API calls. There's also a screen saver that
you can easily modify.

DOS
font.zip
Font Package
379K
-- Jiri Babor
Dec 5/98
happy > 8.50
stamp
a sophisticated,
comprehensive, and faster new version of his font.e library
for displaying fancy fonts in pixel-graphics modes. The .ZIP file
also includes over 150 different fonts, all compatible with his
routines. See also "The Jiri Babor Collection" (below).


DOS
rfont.zip
Rom Font
13K
-- Jiri Babor
updated Jan 8/00
happy > 1.20
stamp
A stripped-down font package that loads the
system font from the ROM. It's for people who want something
more sophisticated than putsxy.e, but who aren't ready to
employ Jiri's full-blown Font Package (above).
A nice demo is included. Jan 8: minor bug fixes, faster,
selectable font magnification, simplified prompt cursor,
speed test, revamped demo

DOS
dos32lib.zip
DOS32Lib: DOS32 Library with Demos
104K
-- David Cuny
updated Jun 1/99
happy > 2.95
stamp
The DOS32 version of his popular
Win32Lib GUI Library. Most of the demos in his original Win32Lib
package will run under DOS, if you simply include dos32lib.e instead
of win32lib.ew. Dos32Lib is now lagging somewhat behind his
current Win32Lib.
Update: June 1: added createDIB

DOS
dialogs.zip
Simple Text User Interface
5K
-- Irv Mullins
Nov 11/98
happy > 1.00
stamp
a simple starter-kit of basic
user interface controls for text mode. It includes
checkboxes, radiobuttons, scrolling list boxes, etc. and it has
a very simple calling syntax.

DOS
http://members.aol.com/jcmiura/eu/ememcopy.zip
Enhanced mem_copy() for action games
4K
-- Michael Bolin
Jun 2/98
happy > 4.00
stamp
high-performance routines for blasting images onto the screen.

DOS
m19b202.zip
Mode 19 Graphics Engine
59K
-- Hollow Horse Software
Feb 19/97
happy > 2.58
stamp
a fast engine for making games and graphics in mode 19.
Their engine has been tested extensively by Mark Honnor.

GEN
bget.zip
Binary Print/Get
17K
-- Gabriel Boehme
Mar 30/99
happy > 2.25
stamp
a more efficient system for saving/restoring
Euphoria data objects to/from a file. His method saves or restores any
Euphoria atom or sequence, with greater speed, and using less
disk space. He also avoids possible floating-point inaccuracies.
Benchmarks versus Euphoria's print()/get(), and
Ralf Nieuwenhuijsen's EDOM are included.

DOS
dos.zip
File Commands
2K
-- Daniel Berstein
updated Mar 10/99
happy > 0.50
stamp
The DOS interrupts needed to perform a variety
of operations on files without having to call system(). His .e file
includes: copy, cd, del, deltree, mkdir, move, rename etc.
Update: fixed bug in plain DOS 7, fixed copy()

DOS
text.zip
Text Mode Direct Screen Write
4K
-- Jiri Babor
Nov 30/98
happy > 0.40
stamp
a library of routines for
fast display of text. He uses direct pokes to screen
memory to avoid the overhead of the DOS BIOS routines. His routines
are faster than the normal Euphoria routines such as puts().

DOS
putsxy.zip
Text Display in Graphics Modes
3K
-- Jiri Babor / David Gay
updated Jan 13/00
stamp
putsxy.e lets you print text in graphics modes
at any pixel location, and with any combination of foreground and
background colors. You can also redefine the shape of any character.
Jan 13: Jiri added an option for printing with a
transparent background.

GEN
record.zip
Type Checking for Structures
3K
-- Adam Weeden
updated Mar 24/00
stamp
A method of creating and type-checking data structures
(records) in Euphoria.

GEN
eds.zip
Euphoria Database System
24K
-- RDS
updated Apr 7/00
stamp
A system for storing and retrieving Euphoria data.
The data is organized into tables of records. There are no size
or shape constraints on the data that you store, and it's stored
in a compact way on disk. Quickly access records by key value,
or by record number.
Apr 7: EDS 0.5 - expanded documentation in HTML and plain text form,
file locking, stamped, some corrections

DOS
http://members.aol.com/jcmiura/eu/keyread.zip
Keyboard Interrupt Handler
2K
-- Michael Bolin
Feb 5/98
happy > 1.78
stamp
a keyboard interrupt handler that can detect the status of
all keys on the keyboard.

DOS
http://members.aol.com/robertc538/sb.zip
Sound Effects version 2.0
121K
-- Jacques Deschenes
updated Mar 20/99
happy > 1.58
stamp
Sound Blaster routines. You can:
play .WAV files of any size in the background
mix up to 4 sound files in real time
play sound in an endless loop
play 16-bit files
auto-detect the sound card
Jacques made good use of some routines contributed by Greg Harris.
Update: ports.e and doswrap.e have recently been fixed.

DOS
http://members.aol.com/robertc538/jd.zip
The Jacques Deschenes Collection
24K
-- Jacques Deschenes
updated Mar 20/99
happy > 1.35
stamp
His famous collection. This bundle of code includes:
I/O Ports, file selection, reading the joystick, a menu system, INT 21 DOS
functions, DMA controller and CMOS Info.
Update: ports.e and doswrap.e have recently been fixed.


Regards,
Igor Kachan
kinz at peterlink.ru

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu