| @@ -8,7 +8,7 @@ Patrick H. E. Foubet <nife@seriane.fr> | |||||
| * Stack to Stack protocol developer, and much more. | * Stack to Stack protocol developer, and much more. | ||||
| Christophe Ondrejec <ondrejec@seriane.fr> | Christophe Ondrejec <ondrejec@seriane.fr> | ||||
| * Administrator of the site k-nife.org. | |||||
| * Administrator of the site nifesys.org. | |||||
| * Internationalization support head. | * Internationalization support head. | ||||
| * Package tester. | * Package tester. | ||||
| @@ -1,42 +1,99 @@ | |||||
| History of Nife releases : | History of Nife releases : | ||||
| 2016-08-15 - Nife 0.59 is released. | |||||
| * Add implementation of data meta-stacks tools for context swapping : | |||||
| [ and ] for respectively increment and decrement the numerical stack, | |||||
| { and } to do theses operations with the character stack, | |||||
| ( and ) to do the same thing with the logical stack, | |||||
| and [* and ]* to operate on the three stacks. | |||||
| * Fixed a bug causing an error with network functions netDt> and NetKey. | |||||
| * The Nife official site is now : http://www.nifesys.org. | |||||
| 2015-08-10 - Nife 0.55 is released. | |||||
| * Changing the log file contents to be able to use it for debugging. | |||||
| The log file is in the subdirectory .nife. His name is the type | |||||
| .nife_PID.log, PID being its number of pid. | |||||
| We can display the content in real time with tail -f. | |||||
| The .nifeNS_pid.log and .nifeRPC_PID.log files are those of the | |||||
| server networks and its bodies. | |||||
| Log files are deleted at the end of the Nife session unless an error | |||||
| occured. | |||||
| * Added "savelog function to save the logs before going out. | |||||
| * Placing aid debugging functions. All these functions begin with the _ | |||||
| character and are listed with ?libp function. | |||||
| * Added shell script command, ex/NifeDebugTerms, to facilitate | |||||
| establishment and closing of the display terminals for the logs. | |||||
| * Added the possibility, in graphic mode, to open or close | |||||
| terminals with keys 'home' and 'end'. These functionalities are | |||||
| based on performance in the window manager of the above script. | |||||
| * Reorganization of system functions in the function stack. | |||||
| * Improved tasks and consoles. | |||||
| * Added the ability to execute external command interactively, with the | |||||
| character ! at the beginning of the line. | |||||
| 2014-08-31 - Nife 0.51 is released. | |||||
| * Finalising the version 1.0 of the functions dump and restore with the | |||||
| definition of the NBLF, Nife Binary Linkable Format. | |||||
| * Modify some labels to clarify the perception of internal mechanisms. | |||||
| * Some modifications to avoid unnecessary warnings at compilation. | |||||
| * Temporary suspension of some functions related to the dynamic aspect | |||||
| of the language because, used improperly, it could be dangerous. | |||||
| These functions will be include again, but with more explanations and | |||||
| examples. | |||||
| 2014-06-27 - Nife 0.49 is released. | |||||
| * Add DEC, HEX, OCT and BIN functions to define the print mode for the | |||||
| integers. The default is decimal. | |||||
| * Modify signals comportment to accept interrupt from terminal to stop | |||||
| execution in the main (interactive) task. | |||||
| * Fixed an error in the case of the end: label is before the onerr: one. | |||||
| * Fixed a bug when a signal "segmentation violation" is catched. | |||||
| * Add some help facilities suggested by Alain Empain, until his tools | |||||
| are efficient in Nife. | |||||
| * Beginning the functions dump and restore with definition of the NBLF, | |||||
| Nife Binary Linkable Format (just for a Request for Comments ;-). | |||||
| * The installation has been tested by Gaetan Angely on three ARM SBCs: | |||||
| Raspberry Pi, Beaglebone Black, ODROID-U3 with Arch Linux ARM. | |||||
| All information about Arch Linux ARM at http://archlinuxarm.org/. | |||||
| He have compared with two Intel processors and have published a | |||||
| benchmak on the two mailing lists. | |||||
| 2014-05-10 - Nife 0.47 is released. | 2014-05-10 - Nife 0.47 is released. | ||||
| * Beginning an I2C interface for Linux systems, inspired by the Linux | |||||
| package i2c-tools. | |||||
| * The I2C interface has been developped and tested by P. Foubet | |||||
| with his students of ESIGETEL Villejuif, Elodie Kerfourn and Aymeric | |||||
| Diankouika Ntinou. They connected a Raspberry Pi with an Arduino | |||||
| board through the I2C bus and wrote a Nife program to highlight the | |||||
| data exchange between the two elements. | |||||
| * The Nife official site is now : http://www.k-nife.org. | |||||
| * The installation has been tested by Bernard Bonno on a Raspberry Pi | |||||
| board Model A with Porteus ARM (based on a Slackware ARM 14.0). | |||||
| * Beginning an I2C interface for Linux systems, inspired by the Linux | |||||
| package i2c-tools. | |||||
| * The I2C interface has been developped and tested by P. Foubet | |||||
| with his students Elodie Kerfourn and Aymeric Diankouika. They | |||||
| connected a Raspberry Pi with an Arduino board through the I2C bus | |||||
| and wrote a Nife program to highlight the data exchange between the | |||||
| two elements. | |||||
| * The installation has been tested by Bernard Bonno on a Raspberry Pi | |||||
| board Model A with Porteus ARM (based on a Slackware ARM 14.0). | |||||
| 2013-09-25 - Nife 0.44 is released. | 2013-09-25 - Nife 0.44 is released. | ||||
| * Fixed a bug causing a "segmentation violation" during compilation | * Fixed a bug causing a "segmentation violation" during compilation | ||||
| of the Nife code on some systems as Raspberry Pi A and B and others. | |||||
| This bug was reported by Bernard Bonno during tests on a Raspberry Pi | |||||
| Model A with 256 Mo of memory. | |||||
| of the Nife code on some systems as Raspberry Pi A and B and others. | |||||
| This bug was reported by Bernard Bonno during tests on a Raspberry Pi | |||||
| Model A with 256 Mo of memory. | |||||
| * The installation has been tested by Bernard Bonno on a PC i484 | * The installation has been tested by Bernard Bonno on a PC i484 | ||||
| with a Linux Porteus 2.0. | |||||
| with a Linux Porteus 2.0. | |||||
| All information about Porteus at http://www.porteus.org/. | All information about Porteus at http://www.porteus.org/. | ||||
| 2013-09-09 - Nife 0.43 is released. | 2013-09-09 - Nife 0.43 is released. | ||||
| * Establishment of a sub-directory .nife to facilitate debugging and | * Establishment of a sub-directory .nife to facilitate debugging and | ||||
| store temporary files. | |||||
| store temporary files. | |||||
| * Update some functions dependant on working directory. | * Update some functions dependant on working directory. | ||||
| * Fixed some bugs in the gplot tools due to new versions of gnuplot. | * Fixed some bugs in the gplot tools due to new versions of gnuplot. | ||||
| * The installation has been tested by Patrick Foubet on a Raspberry Pi | * The installation has been tested by Patrick Foubet on a Raspberry Pi | ||||
| board Model B with standard Raspbian (Squeeze). | |||||
| board Model B with standard Raspbian (Squeeze). | |||||
| All information about the board at http://www.raspberrypi.org/faqs. | All information about the board at http://www.raspberrypi.org/faqs. | ||||
| 2012-10-23 - Nife 0.405 is released. | 2012-10-23 - Nife 0.405 is released. | ||||
| * Fixed a bug in the data transfer protocol STSP. | |||||
| * Adding Dt indicators in the list giving by ?n function. | |||||
| * Fixed a bug in the netDt> function. | |||||
| * Fixed a bug in the data transfer protocol STSP. | |||||
| * Adding Dt indicators in the list giving by ?n function. | |||||
| * Fixed a bug in the netDt> function. | |||||
| * The installation has been tested by Patrick Foubet on a Beaglebone | * The installation has been tested by Patrick Foubet on a Beaglebone | ||||
| board (Linux beaglebone 3.2.5+ #1 ... armv7l GNU/Linux) lended by the | |||||
| school ESME Sudria for preparing a course on Linux drivers. | |||||
| board (Linux beaglebone 3.2.5+ #1 ... armv7l GNU/Linux) lended by the | |||||
| school ESME Sudria for preparing a course on Linux drivers. | |||||
| All information about the board at http://beagleboard.org/bone. | All information about the board at http://beagleboard.org/bone. | ||||
| 2012-09-01 - Nife 0.401 is released. | 2012-09-01 - Nife 0.401 is released. | ||||
| @@ -77,12 +134,12 @@ History of Nife releases : | |||||
| 2012-06-06 - Nife 0.320 is released. | 2012-06-06 - Nife 0.320 is released. | ||||
| * Beginning of the gplot module for use of gnuplot (www.gnuplot.info). | * Beginning of the gplot module for use of gnuplot (www.gnuplot.info). | ||||
| * adding theses functions : | * adding theses functions : | ||||
| - gplot and gplotM (multiple) to create gplots, | |||||
| - gplotCmd to append text to the plot command, | |||||
| - ?gp to list the gplots, | |||||
| - del_gplot to delete a gplot, | |||||
| - gplotAdd and gplotRepl (with replacement) to add values to plots, | |||||
| - gplotClear to clear a display panel. | |||||
| - gplot and gplotM (multiple) to create gplots, | |||||
| - gplotCmd to append text to the plot command, | |||||
| - ?gp to list the gplots, | |||||
| - del_gplot to delete a gplot, | |||||
| - gplotAdd and gplotRepl (with replacement) to add values to plots, | |||||
| - gplotClear to clear a display panel. | |||||
| * The installation has been tested by Bruno Guilbert on a Fox board G20 | * The installation has been tested by Bruno Guilbert on a Fox board G20 | ||||
| (Debian debarm 2.6.38 with CPU Atmel AT91SAM9G20 based on ARM926EJ-S) | (Debian debarm 2.6.38 with CPU Atmel AT91SAM9G20 based on ARM926EJ-S) | ||||
| with the students TRSE2 of Ingesup-Paris : | with the students TRSE2 of Ingesup-Paris : | ||||
| @@ -1,5 +1,14 @@ | |||||
| History of Nife releases : | History of Nife releases : | ||||
| 2016-08-15 - Nife 0.59 is released. | |||||
| * Add implementation of data meta-stacks tools for context swapping : | |||||
| [ and ] for respectively increment and decrement the numerical stack, | |||||
| { and } to do theses operations with the character stack, | |||||
| ( and ) to do the same thing with the logical stack, | |||||
| and [* and ]* to operate on the three stacks. | |||||
| * Fixed a bug causing an error with network functions netDt> and NetKey. | |||||
| * The Nife official site is now : http://www.nifesys.org. | |||||
| 2015-08-10 - Nife 0.55 is released. | 2015-08-10 - Nife 0.55 is released. | ||||
| * Changing the log file contents to be able to use it for debugging. | * Changing the log file contents to be able to use it for debugging. | ||||
| The log file is in the subdirectory .nife. His name is the type | The log file is in the subdirectory .nife. His name is the type | ||||
| @@ -11,7 +20,7 @@ History of Nife releases : | |||||
| occured. | occured. | ||||
| * Added "savelog function to save the logs before going out. | * Added "savelog function to save the logs before going out. | ||||
| * Placing aid debugging functions. All these functions begin with the _ | * Placing aid debugging functions. All these functions begin with the _ | ||||
| character and are listed with ?libp function. | |||||
| character and are listed with ?libp function. | |||||
| * Added shell script command, ex/NifeDebugTerms, to facilitate | * Added shell script command, ex/NifeDebugTerms, to facilitate | ||||
| establishment and closing of the display terminals for the logs. | establishment and closing of the display terminals for the logs. | ||||
| * Added the possibility, in graphic mode, to open or close | * Added the possibility, in graphic mode, to open or close | ||||
| @@ -58,33 +67,33 @@ History of Nife releases : | |||||
| and wrote a Nife program to highlight the data exchange between the | and wrote a Nife program to highlight the data exchange between the | ||||
| two elements. | two elements. | ||||
| * The installation has been tested by Bernard Bonno on a Raspberry Pi | * The installation has been tested by Bernard Bonno on a Raspberry Pi | ||||
| board Model A with Porteus ARM (based on a Slackware ARM 14.0). | |||||
| board Model A with Porteus ARM (based on a Slackware ARM 14.0). | |||||
| 2013-09-25 - Nife 0.44 is released. | 2013-09-25 - Nife 0.44 is released. | ||||
| * Fixed a bug causing a "segmentation violation" during compilation | * Fixed a bug causing a "segmentation violation" during compilation | ||||
| of the Nife code on some systems as Raspberry Pi A and B and others. | |||||
| This bug was reported by Bernard Bonno during tests on a Raspberry Pi | |||||
| Model A with 256 Mo of memory. | |||||
| of the Nife code on some systems as Raspberry Pi A and B and others. | |||||
| This bug was reported by Bernard Bonno during tests on a Raspberry Pi | |||||
| Model A with 256 Mo of memory. | |||||
| * The installation has been tested by Bernard Bonno on a PC i484 | * The installation has been tested by Bernard Bonno on a PC i484 | ||||
| with a Linux Porteus 2.0. | |||||
| with a Linux Porteus 2.0. | |||||
| All information about Porteus at http://www.porteus.org/. | All information about Porteus at http://www.porteus.org/. | ||||
| 2013-09-09 - Nife 0.43 is released. | 2013-09-09 - Nife 0.43 is released. | ||||
| * Establishment of a sub-directory .nife to facilitate debugging and | * Establishment of a sub-directory .nife to facilitate debugging and | ||||
| store temporary files. | |||||
| store temporary files. | |||||
| * Update some functions dependant on working directory. | * Update some functions dependant on working directory. | ||||
| * Fixed some bugs in the gplot tools due to new versions of gnuplot. | * Fixed some bugs in the gplot tools due to new versions of gnuplot. | ||||
| * The installation has been tested by Patrick Foubet on a Raspberry Pi | * The installation has been tested by Patrick Foubet on a Raspberry Pi | ||||
| board Model B with standard Raspbian (Squeeze). | |||||
| board Model B with standard Raspbian (Squeeze). | |||||
| All information about the board at http://www.raspberrypi.org/faqs. | All information about the board at http://www.raspberrypi.org/faqs. | ||||
| 2012-10-23 - Nife 0.405 is released. | 2012-10-23 - Nife 0.405 is released. | ||||
| * Fixed a bug in the data transfer protocol STSP. | |||||
| * Adding Dt indicators in the list giving by ?n function. | |||||
| * Fixed a bug in the netDt> function. | |||||
| * Fixed a bug in the data transfer protocol STSP. | |||||
| * Adding Dt indicators in the list giving by ?n function. | |||||
| * Fixed a bug in the netDt> function. | |||||
| * The installation has been tested by Patrick Foubet on a Beaglebone | * The installation has been tested by Patrick Foubet on a Beaglebone | ||||
| board (Linux beaglebone 3.2.5+ #1 ... armv7l GNU/Linux) lended by the | |||||
| school ESME Sudria for preparing a course on Linux drivers. | |||||
| board (Linux beaglebone 3.2.5+ #1 ... armv7l GNU/Linux) lended by the | |||||
| school ESME Sudria for preparing a course on Linux drivers. | |||||
| All information about the board at http://beagleboard.org/bone. | All information about the board at http://beagleboard.org/bone. | ||||
| 2012-09-01 - Nife 0.401 is released. | 2012-09-01 - Nife 0.401 is released. | ||||
| @@ -125,12 +134,12 @@ History of Nife releases : | |||||
| 2012-06-06 - Nife 0.320 is released. | 2012-06-06 - Nife 0.320 is released. | ||||
| * Beginning of the gplot module for use of gnuplot (www.gnuplot.info). | * Beginning of the gplot module for use of gnuplot (www.gnuplot.info). | ||||
| * adding theses functions : | * adding theses functions : | ||||
| - gplot and gplotM (multiple) to create gplots, | |||||
| - gplotCmd to append text to the plot command, | |||||
| - ?gp to list the gplots, | |||||
| - del_gplot to delete a gplot, | |||||
| - gplotAdd and gplotRepl (with replacement) to add values to plots, | |||||
| - gplotClear to clear a display panel. | |||||
| - gplot and gplotM (multiple) to create gplots, | |||||
| - gplotCmd to append text to the plot command, | |||||
| - ?gp to list the gplots, | |||||
| - del_gplot to delete a gplot, | |||||
| - gplotAdd and gplotRepl (with replacement) to add values to plots, | |||||
| - gplotClear to clear a display panel. | |||||
| * The installation has been tested by Bruno Guilbert on a Fox board G20 | * The installation has been tested by Bruno Guilbert on a Fox board G20 | ||||
| (Debian debarm 2.6.38 with CPU Atmel AT91SAM9G20 based on ARM926EJ-S) | (Debian debarm 2.6.38 with CPU Atmel AT91SAM9G20 based on ARM926EJ-S) | ||||
| with the students TRSE2 of Ingesup-Paris : | with the students TRSE2 of Ingesup-Paris : | ||||
| @@ -79,25 +79,25 @@ How to compile and install nife | |||||
| Web Page | Web Page | ||||
| http://www.k-nife.org | |||||
| http://www.nifesys.org | |||||
| Mailing List and Bug Reports | Mailing List and Bug Reports | ||||
| k-nife.org hosts all the nife-related mailing-lists. | |||||
| nifesys.org hosts all the nife-related mailing-lists. | |||||
| + nife-mailing-list@googlegroups.com is the list used by the people | + nife-mailing-list@googlegroups.com is the list used by the people | ||||
| that make Nife and a general development discussion list, with | that make Nife and a general development discussion list, with | ||||
| moderate traffic. | moderate traffic. | ||||
| To subscribe, go directely to : | To subscribe, go directely to : | ||||
| http://k-nife.org/mailing_list.html | |||||
| http://nifesys.org/mailing_list.html | |||||
| + nife-project@mailman.k-nife.org is the list reserved for people | |||||
| + nife-project@mailman.nifesys.org is the list reserved for people | |||||
| who want to discuss Nife in French, with also a moderate traffic. | who want to discuss Nife in French, with also a moderate traffic. | ||||
| To subscribe, go directely to : | To subscribe, go directely to : | ||||
| http://mailman.k-nife.org/mailman/listinfo/nife-project | |||||
| http://mailman.nifesys.org/mailman/listinfo/nife-project | |||||
| For general bug reports, send a description of the problem to | For general bug reports, send a description of the problem to | ||||
| nife@seriane.fr or directly to the development list. | nife@seriane.fr or directly to the development list. | ||||
| @@ -79,34 +79,34 @@ How to compile and install nife | |||||
| Web Page | Web Page | ||||
| http://www.k-nife.org | |||||
| http://www.nifesys.org | |||||
| Mailing List and Bug Reports | Mailing List and Bug Reports | ||||
| k-nife.org hosts all the nife-related mailing-lists. | |||||
| nifesys.org hosts all the nife-related mailing-lists. | |||||
| + nife-mailing-list AT googlegroups.com is the list used by the people | |||||
| + nife-mailing-list@googlegroups.com is the list used by the people | |||||
| that make Nife and a general development discussion list, with | that make Nife and a general development discussion list, with | ||||
| moderate traffic. | moderate traffic. | ||||
| To subscribe, go directely to : | To subscribe, go directely to : | ||||
| http://k-nife.org/mailing_list.html | |||||
| http://nifesys.org/mailing_list.html | |||||
| + nife-project AT mailman.k-nife.org is the list reserved for people | |||||
| + nife-project@mailman.nifesys.org is the list reserved for people | |||||
| who want to discuss Nife in French, with also a moderate traffic. | who want to discuss Nife in French, with also a moderate traffic. | ||||
| To subscribe, go directely to : | To subscribe, go directely to : | ||||
| http://mailman.k-nife.org/mailman/listinfo/nife-project | |||||
| http://mailman.nifesys.org/mailman/listinfo/nife-project | |||||
| For general bug reports, send a description of the problem to | For general bug reports, send a description of the problem to | ||||
| nife AT seriane POINT fr or directly to the development list. | |||||
| nife@seriane.fr or directly to the development list. | |||||
| Current Status | Current Status | ||||
| nife is still in beta version. | nife is still in beta version. | ||||
| Patrick Foubet (nife AT seriane POINT fr) | |||||
| Patrick Foubet (nife@seriane.fr) | |||||
| @@ -1,6 +1,6 @@ | |||||
| #! /bin/sh | #! /bin/sh | ||||
| # Guess values for system-dependent variables and create Makefiles. | # Guess values for system-dependent variables and create Makefiles. | ||||
| # Generated by GNU Autoconf 2.69 for nife 0.51. | |||||
| # Generated by GNU Autoconf 2.69 for nife 0.59. | |||||
| # | # | ||||
| # Report bugs to <nife@seriane.fr>. | # Report bugs to <nife@seriane.fr>. | ||||
| # | # | ||||
| @@ -580,8 +580,8 @@ MAKEFLAGS= | |||||
| # Identity of this package. | # Identity of this package. | ||||
| PACKAGE_NAME='nife' | PACKAGE_NAME='nife' | ||||
| PACKAGE_TARNAME='nife' | PACKAGE_TARNAME='nife' | ||||
| PACKAGE_VERSION='0.51' | |||||
| PACKAGE_STRING='nife 0.51' | |||||
| PACKAGE_VERSION='0.59' | |||||
| PACKAGE_STRING='nife 0.59' | |||||
| PACKAGE_BUGREPORT='nife@seriane.fr' | PACKAGE_BUGREPORT='nife@seriane.fr' | ||||
| PACKAGE_URL='' | PACKAGE_URL='' | ||||
| @@ -1262,7 +1262,7 @@ if test "$ac_init_help" = "long"; then | |||||
| # Omit some internal or obsolete options to make the list less imposing. | # Omit some internal or obsolete options to make the list less imposing. | ||||
| # This message is too long to be a string in the A/UX 3.1 sh. | # This message is too long to be a string in the A/UX 3.1 sh. | ||||
| cat <<_ACEOF | cat <<_ACEOF | ||||
| \`configure' configures nife 0.51 to adapt to many kinds of systems. | |||||
| \`configure' configures nife 0.59 to adapt to many kinds of systems. | |||||
| Usage: $0 [OPTION]... [VAR=VALUE]... | Usage: $0 [OPTION]... [VAR=VALUE]... | ||||
| @@ -1328,7 +1328,7 @@ fi | |||||
| if test -n "$ac_init_help"; then | if test -n "$ac_init_help"; then | ||||
| case $ac_init_help in | case $ac_init_help in | ||||
| short | recursive ) echo "Configuration of nife 0.51:";; | |||||
| short | recursive ) echo "Configuration of nife 0.59:";; | |||||
| esac | esac | ||||
| cat <<\_ACEOF | cat <<\_ACEOF | ||||
| @@ -1415,7 +1415,7 @@ fi | |||||
| test -n "$ac_init_help" && exit $ac_status | test -n "$ac_init_help" && exit $ac_status | ||||
| if $ac_init_version; then | if $ac_init_version; then | ||||
| cat <<\_ACEOF | cat <<\_ACEOF | ||||
| nife configure 0.51 | |||||
| nife configure 0.59 | |||||
| generated by GNU Autoconf 2.69 | generated by GNU Autoconf 2.69 | ||||
| Copyright (C) 2012 Free Software Foundation, Inc. | Copyright (C) 2012 Free Software Foundation, Inc. | ||||
| @@ -1838,7 +1838,7 @@ cat >config.log <<_ACEOF | |||||
| This file contains any messages produced by compilers while | This file contains any messages produced by compilers while | ||||
| running configure, to aid debugging if configure makes a mistake. | running configure, to aid debugging if configure makes a mistake. | ||||
| It was created by nife $as_me 0.51, which was | |||||
| It was created by nife $as_me 0.59, which was | |||||
| generated by GNU Autoconf 2.69. Invocation command line was | generated by GNU Autoconf 2.69. Invocation command line was | ||||
| $ $0 $@ | $ $0 $@ | ||||
| @@ -2653,7 +2653,7 @@ fi | |||||
| # Define the identity of the package. | # Define the identity of the package. | ||||
| PACKAGE='nife' | PACKAGE='nife' | ||||
| VERSION='0.51' | |||||
| VERSION='0.59' | |||||
| cat >>confdefs.h <<_ACEOF | cat >>confdefs.h <<_ACEOF | ||||
| @@ -5480,7 +5480,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 | |||||
| # report actual input values of CONFIG_FILES etc. instead of their | # report actual input values of CONFIG_FILES etc. instead of their | ||||
| # values after options handling. | # values after options handling. | ||||
| ac_log=" | ac_log=" | ||||
| This file was extended by nife $as_me 0.51, which was | |||||
| This file was extended by nife $as_me 0.59, which was | |||||
| generated by GNU Autoconf 2.69. Invocation command line was | generated by GNU Autoconf 2.69. Invocation command line was | ||||
| CONFIG_FILES = $CONFIG_FILES | CONFIG_FILES = $CONFIG_FILES | ||||
| @@ -5546,7 +5546,7 @@ _ACEOF | |||||
| cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 | cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 | ||||
| ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" | ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" | ||||
| ac_cs_version="\\ | ac_cs_version="\\ | ||||
| nife config.status 0.51 | |||||
| nife config.status 0.59 | |||||
| configured by $0, generated by GNU Autoconf 2.69, | configured by $0, generated by GNU Autoconf 2.69, | ||||
| with options \\"\$ac_cs_config\\" | with options \\"\$ac_cs_config\\" | ||||
| @@ -2,7 +2,7 @@ | |||||
| # Process this file with autoconf to produce a configure script. | # Process this file with autoconf to produce a configure script. | ||||
| AC_PREREQ([2.67]) | AC_PREREQ([2.67]) | ||||
| AC_INIT([nife], [0.51], [nife@seriane.fr]) | |||||
| AC_INIT([nife], [0.59], [nife@seriane.fr]) | |||||
| AM_INIT_AUTOMAKE | AM_INIT_AUTOMAKE | ||||
| AC_CONFIG_SRCDIR([src/tasks.c]) | AC_CONFIG_SRCDIR([src/tasks.c]) | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -20,7 +20,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/> | |||||
| #ifdef HAVE_CONFIG_H | #ifdef HAVE_CONFIG_H | ||||
| #include "../config.h" | #include "../config.h" | ||||
| #else | #else | ||||
| #define VERSION "0.55" | |||||
| #define VERSION "0.59" | |||||
| #endif | #endif | ||||
| #ifdef HAVE_COMEDILIB_H | #ifdef HAVE_COMEDILIB_H | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -119,10 +119,11 @@ static char *TabErr[] = { | |||||
| "I2C read failed", | "I2C read failed", | ||||
| "binary dump error", | "binary dump error", | ||||
| "binary restore error", | "binary restore error", | ||||
| "-", /* 60 */ | |||||
| "meta-stack size limit reached", /* 60 */ | |||||
| "no previous stack", | |||||
| "-" | "-" | ||||
| }; | }; | ||||
| #define ERR_MAX 59 | |||||
| #define ERR_MAX 61 | |||||
| void stopErr(char *M, char *F) | void stopErr(char *M, char *F) | ||||
| { | { | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -274,6 +274,20 @@ void IF_show_libusr(void) | |||||
| Show_library(triList(F_USR)); | Show_library(triList(F_USR)); | ||||
| } | } | ||||
| void IF_new_stackAll(void) | |||||
| { | |||||
| IF_new_stackN(); | |||||
| IF_new_stackC(); | |||||
| IF_new_stackL(); | |||||
| } | |||||
| void IF_old_stackAll(void) | |||||
| { | |||||
| IF_old_stackN(); | |||||
| IF_old_stackC(); | |||||
| IF_old_stackL(); | |||||
| } | |||||
| void initLib(void) | void initLib(void) | ||||
| { | { | ||||
| addFonc(".",IF_point); | addFonc(".",IF_point); | ||||
| @@ -369,6 +383,15 @@ void initLib(void) | |||||
| addFonP("_?ls",IFD_show_stackL); | addFonP("_?ls",IFD_show_stackL); | ||||
| addFonc("?s",IF_show_stack); | addFonc("?s",IF_show_stack); | ||||
| addFonP("_?s",IFD_show_stack); | addFonP("_?s",IFD_show_stack); | ||||
| addFonc("?ms",IF_show_TStacks); | |||||
| addFonc("[",IF_new_stackN); | |||||
| addFonc("]",IF_old_stackN); | |||||
| addFonc("{",IF_new_stackC); | |||||
| addFonc("}",IF_old_stackC); | |||||
| addFonc("(",IF_new_stackL); | |||||
| addFonc(")",IF_old_stackL); | |||||
| addFonc("[*",IF_new_stackAll); | |||||
| addFonc("]*",IF_old_stackAll); | |||||
| /* addFonc("?libX",show_lib_addr); for internal debugging */ | /* addFonc("?libX",show_lib_addr); for internal debugging */ | ||||
| addFonc("?libs",IF_show_liball); | addFonc("?libs",IF_show_liball); | ||||
| addFonc("?lib",IF_show_libstd); | addFonc("?lib",IF_show_libstd); | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -182,6 +182,15 @@ void TH_init(void) | |||||
| #else /* NOT _MULTI_THREADING_ */ | #else /* NOT _MULTI_THREADING_ */ | ||||
| /* meta-stacks */ | |||||
| void * G_TStackN[LSTACKS]; | |||||
| char ** G_TStackC[LSTACKS]; | |||||
| int G_TiStackC[LSTACKS]; | |||||
| bool * G_TStackL[LSTACKS]; | |||||
| int G_TiStackL[LSTACKS]; | |||||
| int G_i_TStackN=0; | |||||
| int G_i_TStackC=0; | |||||
| int G_i_TStackL=0; | |||||
| void * G_StackN = VIDE; | void * G_StackN = VIDE; | ||||
| int G_Double=0; /* 0 si LONG, 1 si DOUBLE */ | int G_Double=0; /* 0 si LONG, 1 si DOUBLE */ | ||||
| @@ -193,9 +202,11 @@ short G_VARS=1, /* 0 VAR_OFF , 1 VAR_DOWN (default), 2 VAR_UP */ | |||||
| G_FCT_TYP=0; /* 0 None (default) , 1 Lib Fct , 2 User Fct */ | G_FCT_TYP=0; /* 0 None (default) , 1 Lib Fct , 2 User Fct */ | ||||
| void * G_F_INS=VIDE; /* fct lib ou usr a installer */ | void * G_F_INS=VIDE; /* fct lib ou usr a installer */ | ||||
| uint32_t G_NetKey=0; | uint32_t G_NetKey=0; | ||||
| bool G_stackL[LSTACKL]; | |||||
| bool G_stackL0[LSTACKL]; | |||||
| bool * G_stackL = G_stackL0; | |||||
| int G_i_stackL=0; | int G_i_stackL=0; | ||||
| char * G_stackC[LSTACKC]; | |||||
| char * G_stackC0[LSTACKC]; | |||||
| char ** G_stackC = G_stackC0;; | |||||
| int G_i_stackC=0; | int G_i_stackC=0; | ||||
| char G_bufC[MAXSTRING]; | char G_bufC[MAXSTRING]; | ||||
| short G_Run=1; | short G_Run=1; | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -27,6 +27,7 @@ extern void TH_init(void); | |||||
| #define LSTACKL 512 | #define LSTACKL 512 | ||||
| #define LSTACKC 512 | #define LSTACKC 512 | ||||
| #define LSTACKS 512 | |||||
| #define MAXSTRING 512 | #define MAXSTRING 512 | ||||
| #define NBTRSUITE 10 | #define NBTRSUITE 10 | ||||
| #define LBUF 512 | #define LBUF 512 | ||||
| @@ -110,6 +111,14 @@ extern pthread_key_t k_Base, k_StkN, k_FIns, k_NetK, k_NLig, k_NTab, k_Vars, | |||||
| #define ENV_INT (jmp_buf*)pthread_getspecific(k_EnvI) | #define ENV_INT (jmp_buf*)pthread_getspecific(k_EnvI) | ||||
| #else /* *************** NOT _MULTI_THREADING_ ******************** */ | #else /* *************** NOT _MULTI_THREADING_ ******************** */ | ||||
| extern void * G_TStackN[]; | |||||
| extern char ** G_TStackC[]; | |||||
| extern int G_TiStackC[]; | |||||
| extern bool * G_TStackL[]; | |||||
| extern int G_TiStackL[]; | |||||
| extern int G_i_TStackN; | |||||
| extern int G_i_TStackC; | |||||
| extern int G_i_TStackL; | |||||
| extern void * G_StackN; | extern void * G_StackN; | ||||
| extern int G_Double; | extern int G_Double; | ||||
| @@ -121,9 +130,9 @@ extern short G_VARS; | |||||
| extern short G_FCT_TYP; | extern short G_FCT_TYP; | ||||
| extern void * G_F_INS; | extern void * G_F_INS; | ||||
| extern uint32_t G_NetKey; | extern uint32_t G_NetKey; | ||||
| extern bool G_stackL[]; | |||||
| extern bool * G_stackL; | |||||
| extern int G_i_stackL; | extern int G_i_stackL; | ||||
| extern char * G_stackC[]; | |||||
| extern char ** G_stackC; | |||||
| extern int G_i_stackC; | extern int G_i_stackC; | ||||
| extern char G_bufC[]; | extern char G_bufC[]; | ||||
| extern short G_Run; | extern short G_Run; | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -257,14 +257,28 @@ char * b, *f; | |||||
| while (1) { | while (1) { | ||||
| if (read(s,(void*)b,1) <= 0) break; | if (read(s,(void*)b,1) <= 0) break; | ||||
| if (*b == NET_EOM) break; | if (*b == NET_EOM) break; | ||||
| if (b == f) break; | |||||
| b++; | b++; | ||||
| if (b>f) { b--; break; } | |||||
| } | } | ||||
| if (*b != NET_EOM) return -1; | if (*b != NET_EOM) return -1; | ||||
| b++; | b++; | ||||
| return(b-NET_BUF); | return(b-NET_BUF); | ||||
| } | } | ||||
| static int readMess2(int s, int n) | |||||
| { | |||||
| char * b, *f; | |||||
| b = NET_BUF; | |||||
| f = b + n; | |||||
| while (1) { | |||||
| if (read(s,(void*)b,1) <= 0) break; | |||||
| b++; | |||||
| if (b == f) break; | |||||
| } | |||||
| if (*b != NET_EOM) return -1; | |||||
| return(n); | |||||
| } | |||||
| static void readAff(int s, char C) | static void readAff(int s, char C) | ||||
| { | { | ||||
| char b[2]; | char b[2]; | ||||
| @@ -791,7 +805,7 @@ long long v; | |||||
| if (NET) { | if (NET) { | ||||
| if (connSock()) return; | if (connSock()) return; | ||||
| sendGetStd(Code); | sendGetStd(Code); | ||||
| if (readMess(Sock) != 2+sizeof(v)) { messErr(35); return; } | |||||
| if (readMess2(Sock,(2+sizeof(v))) != 2+sizeof(v)) { messErr(35); return; } | |||||
| close(Sock); | close(Sock); | ||||
| if (*NET_BUF != (Code+1)) { messErr(40); return; } | if (*NET_BUF != (Code+1)) { messErr(40); return; } | ||||
| bcopy((void*)(NET_BUF+1),(void*)&v,sizeof(v)); | bcopy((void*)(NET_BUF+1),(void*)&v,sizeof(v)); | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -3,12 +3,12 @@ | |||||
| begins a string wich is terminated by itself. The first blank is a separator. | begins a string wich is terminated by itself. The first blank is a separator. | ||||
| The character \ masks the character " as end of string. | The character \ masks the character " as end of string. | ||||
| ' : { string -- } | ' : { string -- } | ||||
| begins, into a function (beetween : and ;), a string which represents a name of | |||||
| begins, into a function (between : and ;), a string which represents a name of | |||||
| a user function, or a variable. This string will be interpreted and executed | a user function, or a variable. This string will be interpreted and executed | ||||
| during the function execution. | during the function execution. | ||||
| There is no verification : if the name does not exist, it does nothing. | There is no verification : if the name does not exist, it does nothing. | ||||
| ` : { string -- } | ` : { string -- } | ||||
| begins, into a function (beetween : and ;), a string which represents a name of | |||||
| begins, into a function (between : and ;), a string which represents a name of | |||||
| a user function, or a variable. This string will be interpreted and executed | a user function, or a variable. This string will be interpreted and executed | ||||
| during the function execution. At the first time the code is updated if the | during the function execution. At the first time the code is updated if the | ||||
| function or the variable is found. | function or the variable is found. | ||||
| @@ -16,7 +16,7 @@ | |||||
| "cat : { str1 str2 -- 'str1str2' } | "cat : { str1 str2 -- 'str1str2' } | ||||
| catenates the two elements on the top string stack entry. | catenates the two elements on the top string stack entry. | ||||
| "cats : { str1 str2 -- 'str1 str2' } | "cats : { str1 str2 -- 'str1 str2' } | ||||
| catenates the two elements on the top string stack entry with a space beetween. | |||||
| catenates the two elements on the top string stack entry with a space between. | |||||
| "date : { -- date_string } | "date : { -- date_string } | ||||
| puts the date string (JJ/MM/AAAA) on the top string stack entry. | puts the date string (JJ/MM/AAAA) on the top string stack entry. | ||||
| "drop : { str1 -- } | "drop : { str1 -- } | ||||
| @@ -193,9 +193,21 @@ | |||||
| ?t/f : ( bool -- ) | ?t/f : ( bool -- ) | ||||
| displays and removes the top logical stack entry. | displays and removes the top logical stack entry. | ||||
| ?vars : | ?vars : | ||||
| display the list of constants of the system environment. | |||||
| displays the list of constants of the system environment. | |||||
| DEBUG_I/O : | DEBUG_I/O : | ||||
| toggle to set debug mode on or off. | |||||
| toggle to set debug mode on or off. All debug functions begin whith '_'. | |||||
| See ?libP list to get all the functions. | |||||
| In an X11 environment, it is possible to display debug terminals in the same | |||||
| time than the main one. | |||||
| To activate or refresh displays of the log files press the "home" key. | |||||
| Pressing the "end" key will close all of them. | |||||
| You can also : | |||||
| 1°) open a shell with 'sh' command, | |||||
| 2°) execute 'ex/NifeDebugTerms -r' to start display terminals, | |||||
| 3°) type 'exit' to return to Nife ! | |||||
| After the end of Nife, type 'ex/NifeDebugTerms -s' to close the displays. | |||||
| The script NifeDebugTerms have been made for the Gnome window-manager. But | |||||
| it's easy to adapt for others environments. | |||||
| DEC : | DEC : | ||||
| sets the default print mode for integers to decimal. | sets the default print mode for integers to decimal. | ||||
| HEX : | HEX : | ||||
| @@ -277,7 +289,8 @@ help : | |||||
| ( -- ) for booleans. | ( -- ) for booleans. | ||||
| The "--" represents the execution. So before it, what it's necessary for the | The "--" represents the execution. So before it, what it's necessary for the | ||||
| function (used during execution), and after it what the function products. | function (used during execution), and after it what the function products. | ||||
| If a stack is not used there is nothing about it. Here, "help" use no stack. | |||||
| If a stack is not used there is nothing about it. Here, the "help" function | |||||
| don't use any stack. | |||||
| ls_clear : ( bool1 bool2 ... boolN -- ) | ls_clear : ( bool1 bool2 ... boolN -- ) | ||||
| clears the logical stack. | clears the logical stack. | ||||
| cs_clear : { str1 ... strn -- } | cs_clear : { str1 ... strn -- } | ||||
| @@ -368,13 +381,13 @@ vers : [ -- version ] | |||||
| ?console : [ n -- ] | ?console : [ n -- ] | ||||
| displays the background console of task number n. | displays the background console of task number n. | ||||
| ?f : | ?f : | ||||
| display the function stack. | |||||
| displays the function stack. | |||||
| ?t : | ?t : | ||||
| display the task stack. | |||||
| displays the task stack. | |||||
| ?task_run : [ n -- ] ( -- true/false ) | ?task_run : [ n -- ] ( -- true/false ) | ||||
| tests if the task number n is running and put a boolean on the logical stack. | tests if the task number n is running and put a boolean on the logical stack. | ||||
| ?v : | ?v : | ||||
| display the variable stack. | |||||
| displays the variable stack. | |||||
| Task : [ -- no_task ] | Task : [ -- no_task ] | ||||
| creates a task from a function. The name of the function must following it. | creates a task from a function. The name of the function must following it. | ||||
| The avaibles names are thoses giving by ?f. In success, the task number is on | The avaibles names are thoses giving by ?f. In success, the task number is on | ||||
| @@ -390,18 +403,18 @@ Var : | |||||
| again : | again : | ||||
| use in function programmation to create an infinite loop. For example : | use in function programmation to create an infinite loop. For example : | ||||
| : f1 ... begin ... again ... ; | : f1 ... begin ... again ... ; | ||||
| This must be done into a function (beetween : and ;). | |||||
| This must be done into a function (between : and ;). | |||||
| begin : | begin : | ||||
| use in function programmation to create a loop. For example : | use in function programmation to create a loop. For example : | ||||
| : f1 ... begin ... [condition] while ... repeat ... ; | : f1 ... begin ... [condition] while ... repeat ... ; | ||||
| : f2 ... begin ... [condition] until ... ; | : f2 ... begin ... [condition] until ... ; | ||||
| or infinite loop : | or infinite loop : | ||||
| : f3 ... begin ... again ... ; | : f3 ... begin ... again ... ; | ||||
| This must be done into a function (beetween : and ;). | |||||
| This must be done into a function (between : and ;). | |||||
| break : | break : | ||||
| use in function programmation to exit a loop. For example : | use in function programmation to exit a loop. For example : | ||||
| : f1 ... begin ... [condition] if ... break then ... again ... ; | : f1 ... begin ... [condition] if ... break then ... again ... ; | ||||
| This must be done into a function (beetween : and ;). | |||||
| This must be done into a function (between : and ;). | |||||
| del_func : | del_func : | ||||
| delete the more recent version of a function. | delete the more recent version of a function. | ||||
| The name of the function must follow this instruction. | The name of the function must follow this instruction. | ||||
| @@ -420,7 +433,7 @@ else : | |||||
| toto 1 > if 12 else -7 then | toto 1 > if 12 else -7 then | ||||
| At execution time, if toto is greater than 1 12 is put on the stack else -7 is | At execution time, if toto is greater than 1 12 is put on the stack else -7 is | ||||
| put. Then dup is executed. | put. Then dup is executed. | ||||
| This must be done into a function (beetween : and ;). | |||||
| This must be done into a function (between : and ;). | |||||
| fdrop : | fdrop : | ||||
| removes the top function stack entry. In fact, the last function created. | removes the top function stack entry. In fact, the last function created. | ||||
| fscan : | fscan : | ||||
| @@ -431,7 +444,7 @@ if : | |||||
| toto 1 > if 12 else -7 then | toto 1 > if 12 else -7 then | ||||
| At execution time, if toto is greater than 1 12 is put on the stack else -7 is | At execution time, if toto is greater than 1 12 is put on the stack else -7 is | ||||
| put. Then dup is executed. | put. Then dup is executed. | ||||
| This must be done into a function (beetween : and ;). | |||||
| This must be done into a function (between : and ;). | |||||
| in : | in : | ||||
| used to complete the install commands. | used to complete the install commands. | ||||
| Example : install f1 in var | Example : install f1 in var | ||||
| @@ -454,11 +467,11 @@ load : | |||||
| loads a source file taking the name of the file on the top of character stack. | loads a source file taking the name of the file on the top of character stack. | ||||
| myself : | myself : | ||||
| use in a function definition to call the function herself (recursive case). | use in a function definition to call the function herself (recursive case). | ||||
| This must be done into a function (beetween : and ;). | |||||
| This must be done into a function (between : and ;). | |||||
| repeat : | repeat : | ||||
| use in function programmation to create a loop. For example : | use in function programmation to create a loop. For example : | ||||
| : fonction ... begin ... [condition] while ... repeat ... ; | : fonction ... begin ... [condition] while ... repeat ... ; | ||||
| This must be done into a function (beetween : and ;). | |||||
| This must be done into a function (between : and ;). | |||||
| reset_var : | reset_var : | ||||
| resets a variable. The name of the variable must follow this instruction. | resets a variable. The name of the variable must follow this instruction. | ||||
| return : | return : | ||||
| @@ -470,11 +483,11 @@ then : | |||||
| toto 1 > if 12 else -7 then | toto 1 > if 12 else -7 then | ||||
| At execution time, if toto is greater than 1 12 is put on the stack else -7 is | At execution time, if toto is greater than 1 12 is put on the stack else -7 is | ||||
| put. Then dup is executed. | put. Then dup is executed. | ||||
| This must be done into a function (beetween : and ;). | |||||
| This must be done into a function (between : and ;). | |||||
| until : | until : | ||||
| use in function programmation to create a loop. For example : | use in function programmation to create a loop. For example : | ||||
| : f1 ... begin ... [condition] until ... ; | : f1 ... begin ... [condition] until ... ; | ||||
| This must be done into a function (beetween : and ;). | |||||
| This must be done into a function (between : and ;). | |||||
| var_down : | var_down : | ||||
| set DOWN execution of variables. | set DOWN execution of variables. | ||||
| To execute an instruction seach first in user functions, and then in system | To execute an instruction seach first in user functions, and then in system | ||||
| @@ -490,7 +503,7 @@ var_up : | |||||
| while : | while : | ||||
| use in function programmation to create a loop. For example : | use in function programmation to create a loop. For example : | ||||
| : fonction ... begin ... [condition] while ... repeat ... ; | : fonction ... begin ... [condition] while ... repeat ... ; | ||||
| This must be done into a function (beetween : and ;). | |||||
| This must be done into a function (between : and ;). | |||||
| vdrop : | vdrop : | ||||
| removes the top variable stack entry. In fact, the last variable created. | removes the top variable stack entry. In fact, the last variable created. | ||||
| >csv [ tab1 tab2 ... tabn n -- ] { "filename;libtabn; ... ;libtab1" -- } | >csv [ tab1 tab2 ... tabn n -- ] { "filename;libtabn; ... ;libtab1" -- } | ||||
| @@ -498,19 +511,19 @@ vdrop : | |||||
| >net : [ E1 E2 ... En n -- ] | >net : [ E1 E2 ... En n -- ] | ||||
| transfert the n elements from local stack to Net stack using NetKey. | transfert the n elements from local stack to Net stack using NetKey. | ||||
| ?n : | ?n : | ||||
| display the Net informations. | |||||
| displays the Net informations. | |||||
| ?ns : | ?ns : | ||||
| display the Net stack using NetKey. | |||||
| displays the Net stack using NetKey. | |||||
| ndepth : [ -- Net_Stack_Depth ] | ndepth : [ -- Net_Stack_Depth ] | ||||
| returns the number of entries on the Net stack using NetKey. | returns the number of entries on the Net stack using NetKey. | ||||
| NetKey : [ key -- ] | NetKey : [ key -- ] | ||||
| change the value of NetKey. It is a 32 bits INTEGER. | |||||
| changes the value of NetKey. It is a 32 bits INTEGER. | |||||
| NetErr : [ -- err_value ] | NetErr : [ -- err_value ] | ||||
| put the Net Error value on the top of the stack. It is the negative of NetKey! | |||||
| puts the Net Error value on the top of the stack. It is the negative of NetKey! | |||||
| NetServer : { "ServerName" -- } | NetServer : { "ServerName" -- } | ||||
| change the default NetServer (localhost). | |||||
| changes the default NetServer (localhost). | |||||
| ndrop : | ndrop : | ||||
| drop the elements on the Net stack using NetKey. | |||||
| drops the elements on the Net stack using NetKey. | |||||
| net> : [ -- E1 E2 ... En ] | net> : [ -- E1 E2 ... En ] | ||||
| transfert all elements from Net stack to local stack using NetKey. | transfert all elements from Net stack to local stack using NetKey. | ||||
| netDt> : [ -- dt ] | netDt> : [ -- dt ] | ||||
| @@ -564,7 +577,7 @@ do : [ limit val -- ] | |||||
| a loop with an index going from 5 to 1 decremented by 1 (i = 5,4,3,2,1). | a loop with an index going from 5 to 1 decremented by 1 (i = 5,4,3,2,1). | ||||
| : f2 15 1 do ... 3 +loop ... ; | : f2 15 1 do ... 3 +loop ... ; | ||||
| a loop with an index going from 1 to 15 incremented by 3 (i = 1,4,7,10,13). | a loop with an index going from 1 to 15 incremented by 3 (i = 1,4,7,10,13). | ||||
| This must be done into a function (beetween : and ;). | |||||
| This must be done into a function (between : and ;). | |||||
| loop : | loop : | ||||
| use in function programmation to create an auto-convergent loop with do using | use in function programmation to create an auto-convergent loop with do using | ||||
| the default 1 by 1 progression. For example : | the default 1 by 1 progression. For example : | ||||
| @@ -572,26 +585,26 @@ loop : | |||||
| a loop with an index going from 0 to 4 incremented by 1 (i = 0,1,2,3,4). | a loop with an index going from 0 to 4 incremented by 1 (i = 0,1,2,3,4). | ||||
| : f 0 5 do ... loop ... ; | : f 0 5 do ... loop ... ; | ||||
| a loop with an index going from 5 to 1 decremented by 1 (i = 5,4,3,2,1). | a loop with an index going from 5 to 1 decremented by 1 (i = 5,4,3,2,1). | ||||
| This must be done into a function (beetween : and ;). | |||||
| This must be done into a function (between : and ;). | |||||
| +loop : [ inc -- ] | +loop : [ inc -- ] | ||||
| use in function programmation to create a loop with do using the value inc for | use in function programmation to create a loop with do using the value inc for | ||||
| incrementation. For example : | incrementation. For example : | ||||
| : f 15 1 do ... 3 +loop ... ; | : f 15 1 do ... 3 +loop ... ; | ||||
| a loop with an index going from 1 to 15 incremented by 3 (i = 1,4,7,10,13). | a loop with an index going from 1 to 15 incremented by 3 (i = 1,4,7,10,13). | ||||
| This must be done into a function (beetween : and ;). | |||||
| This must be done into a function (between : and ;). | |||||
| ndo : [ n -- ] | ndo : [ n -- ] | ||||
| returns the number of do-loop in the running context. | returns the number of do-loop in the running context. | ||||
| It's usefull before using the indexes I J or K. | It's usefull before using the indexes I J or K. | ||||
| I : [ -- val ] | I : [ -- val ] | ||||
| returns the value of the index of the current do-loop. | returns the value of the index of the current do-loop. | ||||
| This must be done into a function (beetween : and ;). | |||||
| This must be done into a function (between : and ;). | |||||
| J : [ -- val ] | J : [ -- val ] | ||||
| returns the value of the index of the do-loop containing the current one. | returns the value of the index of the do-loop containing the current one. | ||||
| This must be done into a function (beetween : and ;). | |||||
| This must be done into a function (between : and ;). | |||||
| K : [ -- val ] | K : [ -- val ] | ||||
| returns the value of the index of the second level do-loop containing the | returns the value of the index of the second level do-loop containing the | ||||
| current one. | current one. | ||||
| This must be done into a function (beetween : and ;). | |||||
| This must be done into a function (between : and ;). | |||||
| do_next : [ -- ] | do_next : [ -- ] | ||||
| free-context instruction to bypass the end of a loop and go to the next step. | free-context instruction to bypass the end of a loop and go to the next step. | ||||
| do_leave : [ -- ] | do_leave : [ -- ] | ||||
| @@ -641,18 +654,18 @@ cos : [ v -- cos(v) ] | |||||
| sin : [ v -- sin(v) ] | sin : [ v -- sin(v) ] | ||||
| compute the sinus of the value on the top of the stack. | compute the sinus of the value on the top of the stack. | ||||
| onerr: : | onerr: : | ||||
| defines, into a function (beetween : and ;), a label for programming an errors | |||||
| defines, into a function (between : and ;), a label for programming an errors | |||||
| treatment in case of an error occurs. | treatment in case of an error occurs. | ||||
| end: : | end: : | ||||
| defines, into a function (beetween : and ;), a label for programming a end | |||||
| defines, into a function (between : and ;), a label for programming a end | |||||
| treatment. In case of an error occurs, theses instructions will be executed if | treatment. In case of an error occurs, theses instructions will be executed if | ||||
| this label is AFTER the onerr: label. | this label is AFTER the onerr: label. | ||||
| goto_end : | goto_end : | ||||
| instruction, into a function (beetween : and ;), to go to the end: label. | |||||
| instruction, into a function (between : and ;), to go to the end: label. | |||||
| ?err : ( -- T/F ) | ?err : ( -- T/F ) | ||||
| tests if an error have occured and put true or false, on the logical stack. | tests if an error have occured and put true or false, on the logical stack. | ||||
| ?lasterr : | ?lasterr : | ||||
| displays the last error elements. | |||||
| displays the elements of last error catched by an onerr: label. | |||||
| messerr : [ n -- ] { -- "error message" } | messerr : [ n -- ] { -- "error message" } | ||||
| puts on the character stack the error message number n. | puts on the character stack the error message number n. | ||||
| noerr : [ -- n ] | noerr : [ -- n ] | ||||
| @@ -670,11 +683,42 @@ i2c_read : [ Offset Address I2C-ID -- Value ] | |||||
| dump : | dump : | ||||
| dumps all things in Nife. The name of the file must follow this instruction. | dumps all things in Nife. The name of the file must follow this instruction. | ||||
| The contents is not in Nife code, but in Nife Binary Linkable Format (NBLF). | The contents is not in Nife code, but in Nife Binary Linkable Format (NBLF). | ||||
| So, the extension ".nblf" will be add automatically to the file name. | |||||
| This format depends on Scs key and the version of Nife. That's mean that a such | This format depends on Scs key and the version of Nife. That's mean that a such | ||||
| file can be used in an environment with same Scs and same Nife version. It does | file can be used in an environment with same Scs and same Nife version. It does | ||||
| not depend on architecture (Intel, ARM, ...) or processor size (32 or 64 bits). | not depend on architecture (Intel, ARM, ...) or processor size (32 or 64 bits). | ||||
| restore : | restore : | ||||
| restores a dumped file. The name of the file must follow this instruction. | restores a dumped file. The name of the file must follow this instruction. | ||||
| The extension ".nblf" will be add automatically to the file name. | |||||
| See dump for more details. | See dump for more details. | ||||
| "saveLog : { "filename" -- } | |||||
| saves the log and debug file as filename, in the current directory. | |||||
| [ : | |||||
| increment the numerical meta-stack. This operation leave the current stack in | |||||
| his state and create a new one, or reuse it if previously initialised. | |||||
| ] : | |||||
| decrement the numerical meta-stack. This operation leave the current stack in | |||||
| his state and use the previous. All data on the previous stack are retrieved. | |||||
| { : | |||||
| increment the character meta-stack. This operation leave the current stack in | |||||
| his state and create a new one, or reuse it if previously initialised. | |||||
| } : | |||||
| decrement the character meta-stack. This operation leave the current stack in | |||||
| his state and use the previous. All data on the previous stack are retrieved. | |||||
| ( : | |||||
| increment the logical meta-stack. This operation leave the current stack in | |||||
| his state and create a new one, or reuse it if previously initialised. | |||||
| ) : | |||||
| decrement the logical meta-stack. This operation leave the current stack in | |||||
| his state and use the previous. All data on the previous stack are retrieved. | |||||
| [* : | |||||
| increment the all data meta-stacks (numerical, character and logical). This | |||||
| operation leave the currents stacks in their state and create three new one, or | |||||
| reuse if previously initialised. | |||||
| ]* : | |||||
| increment the all data meta-stacks (numerical, character and logical). This | |||||
| operation leave the currents stacks in their state and use the previous. All | |||||
| data on the previous stacks are retrieved. | |||||
| ?ms : | |||||
| display the indices of meta-stacks. The first is 1. | |||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -288,3 +288,32 @@ uint32_t n=0, i, j; | |||||
| dump_rest_pr(1,n,"character"); | dump_rest_pr(1,n,"character"); | ||||
| } | } | ||||
| /* gestion des meta-stacks */ | |||||
| void IF_new_stackC(void) | |||||
| { | |||||
| if (G_i_TStackC == LSTACKS) { | |||||
| messErr(60); return; | |||||
| } | |||||
| G_TiStackC[G_i_TStackC] = i_StackC; | |||||
| G_TStackC[G_i_TStackC++] = stackC; | |||||
| stackC = G_TStackC[G_i_TStackC]; | |||||
| i_StackC = G_TiStackC[G_i_TStackC]; | |||||
| if (stackC == (char **)0) { | |||||
| if ((stackC = (char**)malloc(sizeof(char**)*LSTACKC)) == NULL) | |||||
| stopErr("IF_new_stackC","malloc"); | |||||
| i_StackC=0; | |||||
| } | |||||
| } | |||||
| void IF_old_stackC(void) | |||||
| { | |||||
| if (G_i_TStackC == 0) { | |||||
| messErr(61); return; | |||||
| } | |||||
| G_TiStackC[G_i_TStackC] = i_StackC; | |||||
| G_TStackC[G_i_TStackC--] = stackC; | |||||
| stackC = G_TStackC[G_i_TStackC]; | |||||
| i_StackC = G_TiStackC[G_i_TStackC]; | |||||
| } | |||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -41,4 +41,8 @@ extern char * restore_eltC(int fd); | |||||
| extern void dump_stackC(int fd); | extern void dump_stackC(int fd); | ||||
| extern void restore_stackC(int fd); | extern void restore_stackC(int fd); | ||||
| /* meta-stacks */ | |||||
| extern void IF_new_stackC(void); | |||||
| extern void IF_old_stackC(void); | |||||
| #endif | #endif | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -17,6 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/> | |||||
| #include "conf.h" | #include "conf.h" | ||||
| #include <stdio.h> | #include <stdio.h> | ||||
| #include <stdlib.h> | |||||
| #include "nife.h" | #include "nife.h" | ||||
| #include "mth.h" | #include "mth.h" | ||||
| @@ -206,3 +207,33 @@ uint32_t n=0; | |||||
| } | } | ||||
| dump_rest_pr(1,n,"logical"); | dump_rest_pr(1,n,"logical"); | ||||
| } | } | ||||
| /* gestion des meta-stacks */ | |||||
| void IF_new_stackL(void) | |||||
| { | |||||
| if (G_i_TStackL == LSTACKS) { | |||||
| messErr(60); return; | |||||
| } | |||||
| G_TiStackL[G_i_TStackL] = i_StackL; | |||||
| G_TStackL[G_i_TStackL++] = stackL; | |||||
| stackL = G_TStackL[G_i_TStackL]; | |||||
| i_StackL = G_TiStackL[G_i_TStackL]; | |||||
| if (stackL == (bool *)0) { | |||||
| if ((stackL = (bool*)malloc(sizeof(bool*)*LSTACKL)) == NULL) | |||||
| stopErr("IF_new_stackL","malloc"); | |||||
| i_StackL=0; | |||||
| } | |||||
| } | |||||
| void IF_old_stackL(void) | |||||
| { | |||||
| if (G_i_TStackL == 0) { | |||||
| messErr(61); return; | |||||
| } | |||||
| G_TiStackL[G_i_TStackL] = i_StackL; | |||||
| G_TStackL[G_i_TStackL--] = stackL; | |||||
| stackL = G_TStackL[G_i_TStackL]; | |||||
| i_StackL = G_TiStackL[G_i_TStackL]; | |||||
| } | |||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -41,5 +41,8 @@ extern void IFD_show_stackL(void); | |||||
| extern void dump_stackL(int fd); | extern void dump_stackL(int fd); | ||||
| extern void restore_stackL(int fd); | extern void restore_stackL(int fd); | ||||
| /* meta-stacks */ | |||||
| extern void IF_new_stackL(void); | |||||
| extern void IF_old_stackL(void); | |||||
| #endif | #endif | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -2079,3 +2079,30 @@ void * M; | |||||
| dump_rest_pr(1,n,"numerical"); | dump_rest_pr(1,n,"numerical"); | ||||
| } | } | ||||
| /* gestion des meta-stacks */ | |||||
| void IF_new_stackN(void) | |||||
| { | |||||
| if (G_i_TStackN == LSTACKS) { | |||||
| messErr(60); return; | |||||
| } | |||||
| G_TStackN[G_i_TStackN++] = StackN; | |||||
| StackN = G_TStackN[G_i_TStackN]; | |||||
| } | |||||
| void IF_old_stackN(void) | |||||
| { | |||||
| if (G_i_TStackN == 0) { | |||||
| messErr(61); return; | |||||
| } | |||||
| G_TStackN[G_i_TStackN--] = StackN; | |||||
| StackN = G_TStackN[G_i_TStackN]; | |||||
| } | |||||
| void IF_show_TStacks(void) | |||||
| { | |||||
| printf("Indices of meta-stacks :\n"); | |||||
| printf("Numerical stack = %d\n",G_i_TStackN+1); | |||||
| printf("Character stack = %d\n",G_i_TStackC+1); | |||||
| printf("Logical stack = %d\n",G_i_TStackL+1); | |||||
| } | |||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -134,4 +134,10 @@ extern int NetDepth(uint32_t k); | |||||
| extern void IF_show_netStack(uint32_t k); | extern void IF_show_netStack(uint32_t k); | ||||
| extern void IF_netDrop(uint32_t k); | extern void IF_netDrop(uint32_t k); | ||||
| /* meta-stacks */ | |||||
| extern void IF_new_stackN(void); | |||||
| extern void IF_old_stackN(void); | |||||
| extern void IF_show_TStacks(void); | |||||
| #endif | #endif | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||
| @@ -1,4 +1,4 @@ | |||||
| /* Copyright (C) 2011-2015 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| /* Copyright (C) 2011-2016 Patrick H. E. Foubet - S.E.R.I.A.N.E. | |||||
| This program is free software: you can redistribute it and/or modify | This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | ||||