1. Standard Euphoria Library Project
- Posted by Jeffrey Fielding <JJProg at CYBERBURY.NET> Feb 06, 2001
- 556 views
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
2. Re: Standard Euphoria Library Project
- Posted by jiri babor <jbabor at PARADISE.NET.NZ> Feb 06, 2001
- 528 views
- Last edited Feb 07, 2001
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 > >
3. Re: Standard Euphoria Library Project
- Posted by David Cuny <dcuny at LANSET.COM> Feb 07, 2001
- 536 views
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
4. Re: Standard Euphoria Library Project
- Posted by David Cuny <dcuny at LANSET.COM> Feb 07, 2001
- 527 views
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
5. Re: Standard Euphoria Library Project
- Posted by "Fam. Nieuwenhuijsen" <nieuwen at XS4ALL.NL> Feb 07, 2001
- 523 views
> 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
6. Re: Standard Euphoria Library Project
- Posted by Colin Taylor <ctaylor at racsa.co.cr> Feb 07, 2001
- 550 views
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 > > > > > >
7. Re: Standard Euphoria Library Project
- Posted by Igor Kachan <kinz at peterlink.ru> Feb 07, 2001
- 520 views
Dear Eu users: > > > rather > > > than crash. What about all *stamped* librares for this project ? Regards, Igor Kachan kinz at peterlink.ru
8. Re: Standard Euphoria Library Project
- Posted by Robert Craig <rds at RapidEuphoria.com> Feb 07, 2001
- 526 views
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
9. Re: Standard Euphoria Library Project
- Posted by Mike The Spike <mtsreborn at yahoo.com> Feb 07, 2001
- 524 views
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
10. Re: Standard Euphoria Library Project
- Posted by Igor Kachan <kinz at peterlink.ru> Feb 07, 2001
- 533 views
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
11. Re: Standard Euphoria Library Project
- Posted by =?iso-8859-1?B?VG9uZSBTa29kYQ==?= <tone.skoda at SIOL.NET> Feb 07, 2001
- 551 views
file.e and string.e would be the most useful.
12. Re: Standard Euphoria Library Project
- Posted by Euman <euman at bellsouth.net> Feb 07, 2001
- 537 views
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
13. Re: Standard Euphoria Library Project
- Posted by Jeffrey Fielding <JJProg at CYBERBURY.NET> Feb 07, 2001
- 520 views
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
14. Re: Standard Euphoria Library Project
- Posted by Mike The Spike <mtsreborn at yahoo.com> Feb 07, 2001
- 572 views
--- 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
15. Re: Standard Euphoria Library Project
- Posted by Jeffrey Fielding <JJProg at CYBERBURY.NET> Feb 07, 2001
- 526 views
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
16. Re: Standard Euphoria Library Project
- Posted by Colin Taylor <ctaylor at racsa.co.cr> Feb 08, 2001
- 520 views
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
17. Re: Standard Euphoria Library Project
- Posted by kinz at peterlink.ru Feb 09, 2001
- 541 views
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