july 2000 (Some comment from menno) I have tryed to get the arithmetic consistend . (arith_slice_assign works now also on char_seq.) Type check works on the definition and in simple assign and proc/func calls. In readme are declaired with functions works . I compiled it with DCJPP . The DIR function works different from Euphoria . If you ask for DIR(c:peu) you get ONLY the directory PEU instead of all the files of PEU . You have to say DIR(c:peu\*.*) . FDATE() give a char_string of date and time as UNIX do . 12 aug 2000 error somewhere in parser see include\graphics.e : procedure scroll concat : concat ({},"abcd") -> "abcd" (char sequence) eu_call_back (code.c) I have no idea or this is working correctly sound is implented in machine(system.c) I have put a SCREEN_GET=64 and SCREEN_PUT=65 to machine(system.c) may be this works only on DCJPP . This is done to become compatible with Euphoria so ed.ex wil run . 15 aug 2000 I have done the impl of dos_interrupt (under DCJPP). I have done a impl. on alloc and alloc_low (under DCJPP) . adres=allocate(100) , should be atom or object . They are infact floatingpointnumbers. adres_dos=allocate_low(100) should be a integer . In integer_to_byte() converts the arg from float to int. also (the adres_args of) peek() poke() call() mem_copy() mem_set() . Written some code to prefend from overloading (peu.h,parser.c,names.c) (to remember : lock -> go32 ; get_vector -> dmpi ) 18 aug 2000 I make a reference at autoseq because the sub lists have got a ref_count of zero . I change only_seq in the way that as the slice has a scrslice it should de_ref the mother_slice . 20 aug 2000 i add to the autosequence routine the DESTROY , its not clever i must re_use the refs=0 i hoop to do this latter . i found a error in peek MALLOC(l) must be MALLOC(l+1) DJGPP def add to system.c and memory.c to prefend error's by other compilers 25 aug 2000 peek4u for a single element was wrong , has been corrected Still to do vega svega (peu has a vega.h I have know idee what it is or should do) in_byte , out_byte . Clobber has a not understund destroy . Still i doubt the correctnis of the refcount . 11 sept 2000 Bind seem to work on most files . It cam also have problems with name's how are protected by C ( char e.d.) It has the problem of not knowing what local global variables are . This has to do whith the way Pete inplemented the include file's . routine_id my not have a variable as parameter (only a string) . 18 sept 2000 In sequence.c repair the type referencing . In sequence.c (append,prepend,concat) the last of a char_seq is put to 0 because it has been seen that the end char (\0) not always is set be malloc. It has been seen that the ref_count in call_proc / call_func wass't correct . (REFCOUNT(*argv++) dinn't work should be REFCOUNT(*argv);argv++;) In conversion byte_array -> seq_array add a strip (& 255) to transport. Converting to LCC seems to be a problem there DCJPP uses a old convention of naming in his *.h (see io.h there may be more) In BINDING the call_func and/or call_proc consum to much memory . (something wrong with the refcount i think ) 3 okt 2000 The %% has been done in sprintf . Concat error in autosequence has been korrected . I have put EE of David as exe onto the bin dir . 16 nov 2000 In parser.c , cerrected the eof detection . In parser.c , routine bind_sub_vars , get_index should be get_name_index . A more correct error_line number (in error.c) 18 dec 2000 slicesrc must heave a make_sequence , otherwise it will not be free_ed . 28 dec 2000 a more correct way to give trace information . 30 dec 2000 Try to compile it with MINGW32 , corrected lot of function (memory.c system.c) It runs most of the examples of David's WINLIB . May be theres sombody how does understand windows to make it correct . Also not all the DOS routines work (as LOW_MEMORY) also the scrolling does not work yet 04 jan 2001 the dir() in windows should use f.write instead of f.create , windows uses unkown for f.create as -1 . in parser automatic change of proctect keywords of C (char,default) in error.c the crash_routine works now also with -bind . I have removed them from builtins.c . the parser had a bind error , a divide should alway set integer_flag to 0 . Other problem with bind is that it sometimes says "not assign a value" it orgin lays in the eval routine but i have not found a solution for it yet ! Also in peuw the binder has no idee what to do with the call_back . 22 sept 2001 Didn't work on peu for a long time , but I speed it up a little bit . namely by autosequence , and the find , equal routine's Somewhere in time I builtin the upper() lower() into builtins.c INSTANCE has been implemented , so we found that there was missing a function F53 . For that reason SCREEN_GET SCREEN_PUT becomes 65 , 66 (change in include\graphics.e) 13 0kt 2001 Change return function result , if it is a slice it didn't destroy it . So it uses a lot of memory . Change the IF statement so it can use the shorthanded form . 14 Nov 2002 Has done a build_sequence for char and words . Safes memory but I have no idea what it does with program speed . I discouverd that it gives a problem by call_proc() call_func() when the parameter sequence becomes a byte sequence it should be convert to a object sequence . So I have comment it out . 17 Nov 2002 Put into it : Martin continue in error.c and changed some of the casting . Put into it : Martin FLUSS (machine_id=60) . 18 jan 2003 Remove the build_sequence for byte's because it gives problems with win32 Declarations in proc/func are the same as in main. Corrected the byte_to_float32/byte_to_float64 and reverse . I rewrote the parser . Remove a lot of not used routine's . It gives a warning when overloading func/proc . Buildins are always allowed but the binder doesnot allowe this for others , because of C threads thim as multiple declaration's . Activeted the namespace , because the binder needs this . Add JBrown's idea about indexing slice from the end by a neg.number . Add a open slice end as length() . Add ~ func() , nothing func() of JBrown , has no idea what it does to the refcount . Add a logical relation to it so the relations in if/while are BOOLEAN and not arithmetic . Add a block comment as -+ ...... -+ be carefull (integer)float is a floor operator and not a roundof . get dir() works for Linux it use DIRENT (GCC know's this) . (there is a difference in how DJCPP and WINGW32 notifys there dir code's DJCPP MINGW32/LINUX 0x4000 0x1000 IFIFO 0x2000 0x2000 IFCHR 0x1000 0x3000 IFBLK 0x3000 0x4000 IFDIR 0x0000 0x0000 IFREG 0x0011 0x0100 Directory in the dir atributes drwerwerwe / dir,user,group,other 0x0000 0x1000 File ) Things to do to get Linux running a: change makefile so it links libm by -lm b: change the SLASH in peu.h , sequence.c , parser.c linux doesn't like ..\.. c: remove LINUX definition from peu.h d: add to PLATFORM definition a UNIX in peu.h e: change position of declaration in files.c (top of file) f: remove machine code 6 have to find out how to do . -- is solved in file.c h: use env peudir=/mnt/hda?/peu bin/peu program.ex should be done better . use export PEUDIR=/mnt/hda?/peu this set the envirement i: donn't peek from a not allocated() adres , this crashes j: inkey() give ESC code , must convert into ascii how ? k: mouse handling , i have no idee how to do (maybe GPM or NCURSES ?) 11-03-2003 A error in the bind routine found , parse_variable_assingment . Moved all the console routine into a conhdl.c . This gives me a lot of trouble because I forgot how the refcount works . I have to studie this again , there is a strangs fenomena in DESTROY(x) and destroy(x) . There is a difference in inkey() MINGW32 does only answer by event or with a 0 . the DJCPP give a -1 if nothing to do . (DJCPP can give also a 0 , but you have to change some programs because this is not compateble with Eu ) add to: wildcard_match , wildchar_file (system.c) add to: insert , exchange as defined by BACH . The not standard operator should be wrap in bound mode otherwise -bind overload give error in linking . Infact only wrap_?? are allowed tobe overloaded the other should stop binding . june 2003 error found in folding , incorrect way of determenating user/buildin functions. error found in copy code_stack as used in parse_var_assignment . (stil errors in winlib ex 3,7,21) july 2003 the linux version has now his get_key() , get_position() . all systems has got a socket lib , open parameters s=server a=accept c=client. abort()/exit() should have a call to close_files() . sept 2003 to do a correct abort/exit the exit is changed to Pexit(in peu.c) . get.e value the hex char should be also be upper() Linux dir() incorrect because to early DISTROY(o1) ignore f(a) , the run() should be removed . Mingw32 crashes as you close a file how is already closed (check file[i]=0 .) okt 2003 buildin the routine value() and get_bytes() , both from get.e files[] has exstanded with then sockets MAXFILE max open files MAXFILE+1 upto MAXFILE+MAXSOCKET are the socket entry's . The binder has default without warning , all declarations wilbe objects . If you put the binder with warning , then default you get with type_check. Wich generate's a check_code if the LHS type not equal the RHS type . If you see without warning no check code is generated . version is now 0.25 dec 2003 refcount error in value(). format error in sprintf , because of side effect in convert_string() . changed convert_string() so a NULL sequence becomes a sequence with one space this todo a correct format output . correct wrap_messagebox -> messagebox and aad a WRAP to it . jan 2004 remove(sequence,element) has been implemented every bytesequence is threaded as a c_string , thruely I donn't know way . If we change this it not clear to me or it wil spead up . To this I have changed peek({}) so it makes a real c_string . Changed convert_string there was a unused variable in it . Changed dir() so all strings go via convert_string() safe's code . Put in dyndll.c a peeks(pSTRING) this copy a C_string into EU/PEU sequence . Put a INCLUDE with absolute and relatieve file adressing . (9-1-4) strang effect in DJGPP with the malloc function seen in parser it chraches but I donn't know why . Therefore I change a malloc into fix def for local_path_name . Also changed in sequence.c the l<0 into l<=0 this because the old version conveerd it into non byte_sequence wiche take a lot of time and core . febr 2004 Add PEUINC to the parser . Changed wildcard_file because gives a strang error when used to often . Changed call_func/proc because you may not remove element and then think to use them afterwords . (older version of DJGPP allowed that .) maar 2004 Corrected the ~,ingnore for the -bind option . open() gives a problem with "a" option because this is used by netwerk_open . this solved . apr 2004 Change WIN32 into MSWIN(mis..e) because the mingwing give problem's arround WIN32 this is used as a 'define' . By doing this its posseble to -bind within PEUW. This gives a new dir into PEU namely mobj . nov 2004 For code (builtins.c) change , little faster . DECODE (peu.h) change . BOOL_relation (builtins.c) seperated code for integers. cddir add to system.c , old one change_dir is still there . recusive_compare (sequence.c) deleted ++i2 does not do anything . peek (memory.c) had a error peek({x,1}) didn't give a sequence as result . In the parser.c BOOL-rel has put thrue and() or() function to try to get short_eval in the binder (not tested yet) dosnot work because it compiled into and(f(1),f(2)) , the function are evaluated before the and() . nov 2004 In slice_assign is_double (was is_atom) incr the refcount . In return function is_object should incr refcount otherwise the ref to double is incorrect (code.c/sequence.c). april 2005 Error in get_bytes in files.c , fileno incorrect . key -m give the message as loading include files and warning as overloading . juni 2005 (only Linux) change MAKE add -lgpm to it . Moved echo(on/off) to conhdl.c . New Init_conhdl() sets echo off and detect Gpm mouse . New Close_conhdl() put echo on and closes Gpm mouse . Mouse in rvxt has no move only click . Mouse in console have also a move . 1 jul 2005 getc() changed so it's not waiting for a cr . getc() is now a bussy form of waiting . Only ASCII (1 to 255) . This means a change in file.c and conhdl.c . 1 jul 2005 Has removed the LINUX console mouse because GMP loads also ncurses . 7 jul 2005 (only linux) If running in CGI the echomode is switch off . the gets() alway end with a '\n' because it is seen that the lastline can end with a EOF without a \r nor \n . Its maybe save to change readf.e in that way that is always checks on '\n' . 14 jul 2005 Removed from format the check on refcount 0 in the formatparameter . I cann't remember why this is done . Switch Xmouse of during getc() as part of echomode() Do not enable Xmouse in CGI mode . 01 aug 2005 get_byte() give -1 if nothing more there . DOS version must run correctly is used as a CGI program . 07 aug 2005 error ? . it's not allowed to have a NULL string in strncmp() when using CGI ! 28 nov 2005 union of object is inconsisted . remove the integer refcount thats wrong . 29 nov 2005 error in floor wrongway of destroy() . 01 nov 2005 error in concat forgotten to reference a double when concat to a sequence . moved print_sequence() to files.c 02 nov 2005 in builtins change the locicals , put the ref into one place . 21 nov 2005 replaced inet_adres() by gethostbyname() . Its has sayed before C-function names not allowed as variable name specily when there are globol . (mingwing seems to do this correct ?) 25 dec 2005 Made peu by mingwin as peuw.dll in peu/bin , so link it by /peu/obj/libpeuw.a Change the PEUDIR so the main program first look in 'current_dir' then PEUDIR . Include file's looked first in 'current_dir' then PEUINC then PEUDIR/include . 26 dec 2005 add removef(sequence filename) and renamef(sequence filename) to file.c 27 mrt 2006 Linux has also a libpeu.so . 10 apr 2006 This error happens to the fact that insert() was not incr by 1 . And the in run() code_stack[code_head] can be undefined , not allocated ! 10 apr 2006 Changed the floor() so it works foor integer as well for float's . I have puta check on existing a file before read/write into file.c . I thing it slows down the system very much . (REMOVED) The same for checking on integer overflow (builtin.c) for add/sub/mult (REMOVED) 11 may 2006 Put a lockf() and unlock() into file.c todo locking a file in Linux/Windows/Dos . This work differend from that one Euphoria uses ! You have to lock BEFORE open() . 13 jul 2006 sprintf if only 1 sub-string given , output is corrected . 03 dec 2006 a concat bytesequence with empty sequence -> bytesequence . 03 dec 2006 wrap_value rewriten because of error by '..' . 21 apr 2008 ONLY linux : add ^C conversion into get_key() by signal() process . also activated allow_break() and checkbreak() . it not usefull to use checkbreak because get_key() converds ^C -> 3 . the cntrl break is disabled (in termios) . default for the stdin is echo(off) crlf(off) if break is on , it restore all systemvarible's and with exit(1) . 21 dec 2008 peek with adres dubble should convert into interger . 21 dec 2008 peeks corrected didn't give a sequence when string was 1 byte long . 25 dec 2008 DBL2INT routine give a double to 32 integer . 0x80000000L is undefined . 17 jan 2009 find_from , match_from inplemented . 20 jan 2009 the mouse/key on eventcount for win32 (conhdl.c) 01 feb 2009 remove had a count error , system dir() linux removed the DJGPP slash , cuurent-dir() omly DJGPP changes / -> \ . 15 feb 2009 ifdef verbeterd en commando regel gewijzigd zie peu -h . 06 may 2009 dir() works now for hidden files and archive files and dirs . 29 may 2009 PEUINC made dynamic (error in parser.c changed parser.c , sequence.c) 10 jun 2009 system() in WIN32 reset's the mouse bit's . 07 jun 2009 sprintf() had a memory overflow , I changed this . 12 jun 2009 bind error in FORIN , cursor for win32 restored . 21 jun 2009 value skip tralling space AND controll char's . 29 jun 2010 fout in declaratie files[] . wrap-puts() netwerkkant netwerk_puts vervangen door netwerk_write dat geeft de mogelijkheid bineare bestanden te versturen . netlib.c vervangen door de f77 versie . Deze heeft een accept met een non-blocking . Om niet alle servers te hoeven herschrijven is open met "a" de blocking en "aw" non-bolcking . Gewijzigd in files.c . De datum van de files voor mingwin is fout gewijzigd in system.c was +1980 moet zijn +1900 . Waar dit vandaan komt weet ik niet . 18 jul 2010 voor Linux call systeem moet ook muis weer aanzetten . voor Linux get_position moet muis afvangen . jan 2011 buildsequence bouw mogelijk een bytesequence . dit geeft volgende wijzigingen : beeld_text_dump moet ook geschikt worden voor bytesequence c_func en c_proc kunnen niet tegen een parameter met (integer)cp[0] het moet echt een integer zijn dus converteer byte -> int object . Overigens kan een c_func c_proc nooit een 8bit woord hebben altijd 32 bits sep 2011 time.h aangepast in mingwin oude versie . versie 3.4 insert() kompetibel met euphoria 4.x remove() idem exchange() verwijderd . %u werkt ook voor een byte-sequence . okt 2011 Remove bevatte een tel fout . in bind remove(x,y) -> removeindex(x,y) Hopelijk gaat dat goed want het systeem kent ook een remove(x) wat een delete file (x) moet doen . de additionele parameter (-D , -m) verwijderd uit commandline() . boundaire fout in value() overschrijd boven grens , zit nog niet lekker voor ondergrens . nov 2011 where_ (linux) geeft foutmeldingen , deze nu afgevangen en verstuurd naar regel 25 pos 1 . hit_key(linux) heeft een time-out gekregen . feb 2012 in printf moet (bytesequence) de p+=1 worden (char*)+=1 , (char*)p++ werkt niet . dec 2013 het geheel overgezet naar GNU level 4.x (werkt ook nog in level 3.x) attrib is __GNUC_ is 4 . feb 2014 peu 0.37 : system_get() system_put() toegvoegd feitelijk een exec via een pipe . jul 2014 tijdens runs op ARM7 fout gezien in system.c opendir() / closedir() stond verkeerd . dec 2014 *linux level 4* De peuL4 heeft twee conhdl's met een verschillend "where" . De reden is onduidelijk . De ene heeft een buffer van 18 en de andere 9 char's . De muis blijkt niet onder alle versie van LintMint te werken dit komt door RXVT niet juist is gegeven . Als je de versie uit Puppy haalt werkt het weer goed . Of uit linuxrxvt . jan 2015 (0.38) filediscriptor(n) wat gegeven voor TSL in mail . distroy in lock routine verzet . feb 2015 (0.39) fout in get_bytes() vanaf het netwerk . mrt 2015 (0.39) in lock de close() verplaatst en een chmod t.b.v. ms-windows mrt 2015 (0.40) toegevoegd . Het Octal gebeuren ingevoerd parser,builtins,readf.e . chmodf(file,mode) toegevoegd . mrt 2015 (0.40) error in format solved for GCC 4.x (long = l , format must be given) jun 2015 (0.391)+(0.40) Int+Seq differs frm Seq+Int (solved builtins.c) jun 2015 (0.392)+(0.40) index fout in sprintf (files.c) jul 2015 (0.40) Has index as MAP ex. try["label"]["work"] = data (sequenc.c) something=remove(try["label"],"work") index=map_key_is(sequence,key) as binear list . (mogelijk overbodig) todo assign_arith some extra funtion as has_keys etc . (See cam.e) jul 2015 (0.41) Hex and Octal number limit to range 32 bits (parser.c) Heb de FF000000 gewijzigd in F0000000 . Mocht vroeger niet i.v.m. DLL/SO waarom weet ik niet meer . jul 2015 (0.41) foutje in peeks() (dll.c) lengte 1 werkte niet . nov 2015 (0.42) atio() change to strtol() better overflow test . jan 2016 (0.43) refcount in autosequence (builtins) als byte -> long/double geschakelt wordt mrt 2016 (0.44) recursive_equal verbeterd was niet recursief voor seq. mrt 2016 (0.45) CAM interne verbeterd sequence.c aug 2016 (0.46) peu program file extentie exp/exu hoofdletter gevoelig gemaakt jan 2017 (0.47) seek()/puts() gaat fout in mswin daar het een geheel buffer mee schrijf . daarom setvbuf(filepointer,NULL,_IONBF,0) om de buffering uit tezetten . In Linux lijkt dat niet nodig te zijn . sep 2017 (0.47a) Undefined *++code -> *code , find_bin find_key toegevoegd (sequence.c) okt 2017 (0.48) undefined(=b00000xx) toegevoerd als test op een varibele . onduidelijk of dit goed gaat in dll/mem routines . jan 2018 (0.47b,0.49) fout in format x,o,c wordt een byte gezien als woord . jan 2018 (0.50) fout in peu.c reload programma . mrt 2018 (0.51) parser gewijzigt check op #! alleen main file . betekend wel dat dit niet mag voorkomen in de include bestanden . Error the declaration in func/proc who are recusief are not working in the intepreter binder works . Error In declaration's who are not done in the beginning of a procedure/function . This because you have to shift the declaration to the beginning of a procedure/ function but the IF/WHILE and FOR are not relatieve adressed but absolute . The binder has no probleem's with this . Error not all ex. of winlib32 will run , Martin things it has to with double's (a double is 64 bit floating number , float (in C) is a 32 bit floating number) Error if for_stm has a floating number as index it gives a error , the binder crashes . Error a { something , global_function() } error global_function not found . ToDo optimize the binder for build_string() the should be handled as constants. speedup BOOL_relation routines . ToDo the bits_to_int() and int_to_bits does not work for bitnumber greater 32 . This because + does not check on overflow . ToDo name space's