diff --git a/Doc/ROM Applications.pdf b/Doc/ROM Applications.pdf index 02d0ef45..535be8e5 100644 Binary files a/Doc/ROM Applications.pdf and b/Doc/ROM Applications.pdf differ diff --git a/Doc/RomWBW Applications.pdf b/Doc/RomWBW Applications.pdf index 09083955..70f662ba 100644 Binary files a/Doc/RomWBW Applications.pdf and b/Doc/RomWBW Applications.pdf differ diff --git a/Doc/RomWBW Architecture.pdf b/Doc/RomWBW Architecture.pdf index 52d49b6d..c6dfb30d 100644 Binary files a/Doc/RomWBW Architecture.pdf and b/Doc/RomWBW Architecture.pdf differ diff --git a/Doc/RomWBW Disk Catalog.pdf b/Doc/RomWBW Disk Catalog.pdf index 874f9cb7..c3148592 100644 Binary files a/Doc/RomWBW Disk Catalog.pdf and b/Doc/RomWBW Disk Catalog.pdf differ diff --git a/Doc/RomWBW Getting Started.pdf b/Doc/RomWBW Getting Started.pdf index 83bb6e27..d677850e 100644 Binary files a/Doc/RomWBW Getting Started.pdf and b/Doc/RomWBW Getting Started.pdf differ diff --git a/ReadMe.md b/ReadMe.md index ab45c1e9..43cff360 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -3,7 +3,7 @@ ## Z80/Z180 System Software Version 3.1 Pre-release -Thursday 23 September 2021 +Thu 10/21/2021 Wayne Warthen diff --git a/ReadMe.txt b/ReadMe.txt index a729aa82..f655c249 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -3,7 +3,7 @@ RomWBW Z80/Z180 System Software Version 3.1 Pre-release -Thursday 23 September 2021 +Thu 10/21/2021 Wayne Warthen wwarthen@gmail.com diff --git a/Source/BuildDoc.cmd b/Source/BuildDoc.cmd new file mode 100644 index 00000000..6710a7f5 --- /dev/null +++ b/Source/BuildDoc.cmd @@ -0,0 +1,4 @@ +@echo off +setlocal + +pushd Doc && call Build || exit /b & popd diff --git a/Source/Clean.cmd b/Source/Clean.cmd index 6f2cf842..3507fcb2 100644 --- a/Source/Clean.cmd +++ b/Source/Clean.cmd @@ -17,3 +17,5 @@ pushd HBIOS && call Clean.cmd & popd pushd Images && call Clean & popd pushd Prop && call Clean & popd pushd RomDsk && call Clean & popd +pushd Doc && call Clean & popd + diff --git a/Source/Doc/Applications.md b/Source/Doc/Applications.md index aa4c8de6..0795aff1 100644 --- a/Source/Doc/Applications.md +++ b/Source/Doc/Applications.md @@ -1,10 +1,13 @@ -!include(Common.inc) -!def(document)(Applications) +include(`Common.m4') +define({{doc_title}},{{Applications}}) --- -title: !product !document -author: !author (mailto:!authmail) -date: !date -institution: !orgname +title: | + | doc_product doc_title + | + | Version doc_ver +author: doc_author (mailto:doc_authmail) +date: doc_date +institution: doc_orgname documentclass: article toc: true toc-depth: 1 diff --git a/Source/Doc/Architecture.md b/Source/Doc/Architecture.md index fa44729f..3c41b0e4 100644 --- a/Source/Doc/Architecture.md +++ b/Source/Doc/Architecture.md @@ -1,13 +1,13 @@ -!include(Common.inc) -!def(document)(Architecture) +include(`Common.m4') +define({{doc_title}},{{Architecture}}) --- title: | - | !product + | doc_product doc_title | - | !document -author: !author (mailto:!authmail) -date: !date -institution: !orgname + | Version doc_ver +author: doc_author (mailto:doc_authmail) +date: doc_date +institution: doc_orgname documentclass: book classoption: - oneside @@ -44,14 +44,14 @@ header-includes: \includegraphics[width=\paperwidth]{Graphics/Logo.pdf} \par \vfill \raggedleft - {\scshape \bfseries \fontsize{48pt}{56pt} \selectfont !product \par} - {\bfseries \fontsize{32pt}{36pt} \selectfont !document \par} + {\scshape \bfseries \fontsize{48pt}{56pt} \selectfont doc_product \par} + {\bfseries \fontsize{32pt}{36pt} \selectfont doc_title \par} \vspace{24pt} - {\huge Version !ver \\ !date \par} + {\huge Version doc_ver \\ doc_date \par} \vspace{24pt} - {\large \itshape !orgname \\ \href{http://!orgurl}{!orgurl} \par} + {\large \itshape doc_orgname \\ \href{http://doc_orgurl}{doc_orgurl} \par} \vspace{12pt} - {\large \itshape !author \\ \href{mailto:authmail}{!authmail} \par} + {\large \itshape doc_author \\ \href{mailto:doc_authmail}{doc_authmail} \par} \end{titlepage} } \pagestyle{empty} @@ -70,7 +70,7 @@ include-before: ```{=latex} \clearpage \pagenumbering{arabic} -\lhead{\fancyplain{}{\nouppercase{\footnotesize \bfseries \leftmark \hfill !product !document}}} +\lhead{\fancyplain{}{\nouppercase{\footnotesize \bfseries \leftmark \hfill doc_product doc_title}}} ``` Overview diff --git a/Source/Doc/Build.cmd b/Source/Doc/Build.cmd new file mode 100644 index 00000000..73c57769 --- /dev/null +++ b/Source/Doc/Build.cmd @@ -0,0 +1,48 @@ +@echo off +setlocal + +:: +:: NOTE: Pandoc and Latex (MiKTeX or TexLive) must be installed +:: and available on commandline for this build to work!!! +:: + +set TOOLS=..\..\Tools +set PATH=%TOOLS%\m4;%PATH% + +if not "%1"=="" (call :GenDoc %1 & goto :eof) + +call :GenDoc GettingStarted +:: call :GenDoc UserGuide +call :GenDoc Applications +:: call :GenDoc Errata +:: call :GenDoc ZSystem +call :GenDoc Architecture +call :GenDoc Catalog +call :GenDoc ROM_Applications + +if exist GettingStarted.pdf copy GettingStarted.pdf "..\..\Doc\RomWBW Getting Started.pdf" || exit /b +if exist GettingStarted.gfm copy GettingStarted.gfm ..\..\ReadMe.md || exit /b +if exist GettingStarted.txt copy GettingStarted.txt ..\..\ReadMe.txt || exit /b +if exist Applications.pdf copy Applications.pdf "..\..\Doc\RomWBW Applications.pdf" || exit /b +if exist Architecture.pdf copy Architecture.pdf "..\..\Doc\RomWBW Architecture.pdf" || exit /b +if exist Catalog.pdf copy Catalog.pdf "..\..\Doc\RomWBW Disk Catalog.pdf" || exit /b +if exist ROM_Applications.pdf copy ROM_Applications.pdf "..\..\Doc\ROM Applications.pdf" || exit /b + +echo. +goto :eof + +:GenDoc + +echo. + +echo Processing document %1.md... + +m4 -D doc_date="%date%" %1.md >%1.tmp + +pandoc %1.tmp -f markdown -t latex -s -o %1.pdf --default-image-extension=pdf || exit /b +pandoc %1.tmp -f markdown -t html -o %1.html --default-image-extension=png || exit /b +pandoc %1.tmp -f markdown -t dokuwiki -o %1.dw --default-image-extension=png || exit /b +pandoc %1.tmp -f markdown -t gfm -o %1.gfm --default-image-extension=png || exit /b +pandoc %1.tmp -f markdown -t plain -o %1.txt --default-image-extension=png || exit /b + +goto :eof \ No newline at end of file diff --git a/Source/Doc/Catalog.md b/Source/Doc/Catalog.md index 23b645e0..28a78b8f 100644 --- a/Source/Doc/Catalog.md +++ b/Source/Doc/Catalog.md @@ -1,15 +1,14 @@ -!include(Common.inc) -!def(document)(Disk Catalog) -!def(author)(Mykl Orders) +include(`Common.m4') +define({{doc_title}},{{Disk Catalog}}) +define({{doc_author}},{{Mykl Orders}}) --- title: | - | !product - | Version !ver + | doc_product doc_title | - | !document -author: !author (mailto:!authmail) -date: !date -institution: !orgname + | Version doc_ver +author: doc_author +date: doc_date +institution: doc_orgname documentclass: article classoption: - oneside @@ -40,7 +39,7 @@ header-includes: \pagestyle{fancyplain} \fancyhf{} \pagenumbering{arabic} -\lhead{\fancyplain{}{\nouppercase{\footnotesize \bfseries \leftmark \hfill !product !document}}} +\lhead{\fancyplain{}{\nouppercase{\footnotesize \bfseries \leftmark \hfill doc_product doc_title}}} \lfoot{\small RetroBrew Computing Group ~~ {\xrfill[3pt]{1pt}[cyan]} ~~ \thepage} ``` diff --git a/Source/Doc/Clean.cmd b/Source/Doc/Clean.cmd new file mode 100644 index 00000000..de33af90 --- /dev/null +++ b/Source/Doc/Clean.cmd @@ -0,0 +1,10 @@ +@echo off +setlocal + +if exist *.gfm del *.gfm +if exist *.txt del *.txt +if exist *.dw del *.dw +if exist *.html del *.html +if exist *.tex del *.tex +if exist *.pdf del *.pdf +if exist *.tmp del *.tmp diff --git a/Source/Doc/Common.inc b/Source/Doc/Common.inc deleted file mode 100644 index 542c53ff..00000000 --- a/Source/Doc/Common.inc +++ /dev/null @@ -1,7 +0,0 @@ -!def(ver)(3.1 Pre-release) -!def(date)(!mdate) -!def(product)(RomWBW) -!def(author)(Wayne Warthen) -!def(authmail)(wwarthen@gmail.com) -!def(orgname)(RetroBrew Computers Group) -!def(orgurl)(www.retrobrewcomputers.org) \ No newline at end of file diff --git a/Source/Doc/Common.m4 b/Source/Doc/Common.m4 new file mode 100644 index 00000000..04a49fa7 --- /dev/null +++ b/Source/Doc/Common.m4 @@ -0,0 +1,9 @@ +changequote(`{{', `}}') + +define({{doc_ver}},{{3.1 Pre-release}}) +define({{doc_product}},{{RomWBW}}) +define({{doc_title}},{{Document Title}}) +define({{doc_author}},{{Wayne Warthen}}) +define({{doc_authmail}},{{wwarthen@gmail.com}}) +define({{doc_orgname}},{{RetroBrew Computers Group}}) +define({{doc_orgurl}},{{www.retrobrewcomputers.org}}) \ No newline at end of file diff --git a/Source/Doc/GettingStarted.md b/Source/Doc/GettingStarted.md index 587d750f..0050a18f 100644 --- a/Source/Doc/GettingStarted.md +++ b/Source/Doc/GettingStarted.md @@ -1,13 +1,13 @@ -!include(Common.inc) -!def(document)(Getting Started) +include(`Common.m4') +define({{doc_title}},{{Getting Started}}) --- title: | - | !product + | doc_product doc_title | - | !document -author: !author (mailto:!authmail) -date: !date -institution: !orgname + | Version doc_ver +author: doc_author (mailto:doc_authmail) +date: doc_date +institution: doc_orgname documentclass: article classoption: - oneside @@ -37,10 +37,10 @@ header-includes: ## Z80/Z180 System Software -| Version !ver -| !date +| Version doc_ver +| doc_date -!author() [!authmail](mailto:!authmail) +doc_author [doc_authmail](mailto:doc_authmail) ### Download @@ -1383,4 +1383,4 @@ RetroBrew Computers projects is via the community forums: Submission of issues and bugs are welcome at the [RomWBW GitHub Repository](https://github.com/wwarthen/RomWBW). -Also feel free to email !author at [!authmail](mailto:!authmail). +Also feel free to email doc_author at [doc_authmail](mailto:doc_authmail). diff --git a/Source/Doc/Makefile b/Source/Doc/Makefile new file mode 100644 index 00000000..40f06f0a --- /dev/null +++ b/Source/Doc/Makefile @@ -0,0 +1,40 @@ +# +# NOTE: Pandoc, Latex (MiKTeX or TexLive), and M4 must be installed +# and available on commandline for this build to work!!! +# Typically "sudo apt install pandoc, texlive-latex-extra, M4" +# +OBJECTS = GettingStarted.pdf GettingStarted.gfm GettingStarted.txt Applications.pdf Architecture.pdf Catalog.pdf ROM_Applications.pdf +# DEST = ../../Doc +TOOLS = ../../Tools +OTHERS = *.tmp + +include $(TOOLS)/Makefile.inc + +all :: deploy + +%.tmp : %.md + m4 -D doc_date="`date +"%d %b %Y"`" $< >$@ + +%.pdf : %.tmp + pandoc $< -f markdown -t latex -s -o $@ --default-image-extension=pdf + +%.html : %.tmp + pandoc $< -f markdown -t html -s -o $@ --default-image-extension=pdf + +%.dw : %.tmp + pandoc $< -f markdown -t dokuwiki -s -o $@ --default-image-extension=pdf + +%.gfm : %.tmp + pandoc $< -f markdown -t gfm -s -o $@ --default-image-extension=pdf + +%.txt : %.tmp + pandoc $< -f markdown -t plain -s -o $@ --default-image-extension=pdf + +deploy : + cp GettingStarted.pdf "../../Doc/RomWBW Getting Started.pdf" + cp GettingStarted.gfm "../../ReadMe.md" + cp GettingStarted.txt "../../ReadMe.txt" + cp Applications.pdf "../../Doc/RomWBW Applications.pdf" + cp Architecture.pdf "../../Doc/RomWBW Architecture.pdf" + cp Catalog.pdf "../../Doc/RomWBW Disk Catalog.pdf" + cp ROM_Applications.pdf "../../Doc/ROM Applications.pdf" diff --git a/Source/Doc/ROM_Applications.md b/Source/Doc/ROM_Applications.md index 338ea271..f53695f4 100644 --- a/Source/Doc/ROM_Applications.md +++ b/Source/Doc/ROM_Applications.md @@ -1,12 +1,14 @@ - -!include(Common.inc) -!def(document)(ROM Applications) -!def(author)(Phillip Summers) +include(`Common.m4') +define({{doc_title}},{{ROM Applications}}) +define({{doc_author}},{{Phillip Summers}}) --- -title: !product !document -author: !author (mailto:!authmail) -date: !date -institution: !orgname +title: | + | doc_product doc_title + | + | Version doc_ver +author: doc_author +date: doc_date +institution: doc_orgname documentclass: article toc: true toc-depth: 1 diff --git a/Source/Makefile b/Source/Makefile index 3887f8ae..056fbcb8 100644 --- a/Source/Makefile +++ b/Source/Makefile @@ -14,5 +14,6 @@ SUBDIRS += HBIOS SUBDIRS += Images SUBDIRS += ZRC SUBDIRS += ZZR +#SUBDIRS += Doc TOOLS = ../Tools include $(TOOLS)/Makefile.inc diff --git a/Tools/m4/m4.exe b/Tools/m4/m4.exe new file mode 100644 index 00000000..d9d33add Binary files /dev/null and b/Tools/m4/m4.exe differ diff --git a/Tools/m4/man/cat1/m4.1.txt b/Tools/m4/man/cat1/m4.1.txt new file mode 100644 index 00000000..dedca549 --- /dev/null +++ b/Tools/m4/man/cat1/m4.1.txt @@ -0,0 +1,147 @@ +M4(1) User Commands M4(1) + + + +NAME + m4 - macro processor + +SYNOPSIS + m4 [OPTION]... [FILE]... + +DESCRIPTION + Process macros in FILEs. If no FILE or if FILE is `-', + standard input is read. + + Mandatory or optional arguments to long options are + mandatory or optional for short options too. + + Operation modes: + --help display this help and exit + + --version + output version information and exit + + -E, --fatal-warnings + once: warnings become errors, twice: stop execu- + tion at first error + + -i, --interactive + unbuffer output, ignore interrupts + + -P, --prefix-builtins + force a `m4_' prefix to all builtins + + -Q, --quiet, --silent + suppress some warnings for builtins + + --warn-macro-sequence[=REGEXP] + warn if macro definition matches REGEXP, + + default \$\({[^}]*}\|[0-9][0-9]+\) + + Preprocessor features: + -D, --define=NAME[=VALUE] + define NAME as having VALUE, or empty + + -I, --include=DIRECTORY + append DIRECTORY to include path + + -s, --synclines + generate `#line NUM "FILE"' lines + + -U, --undefine=NAME + undefine NAME + + Limits control: + -g, --gnu + override -G to re-enable GNU extensions + + -G, --traditional + suppress all GNU extensions + + -H, --hashsize=PRIME + set symbol lookup hash table size [509] + + -L, --nesting-limit=NUMBER + change nesting limit, 0 for unlimited [0] + + Frozen state files: + -F, --freeze-state=FILE + produce a frozen state on FILE at end + + -R, --reload-state=FILE + reload a frozen state from FILE at start + + Debugging: + -d, --debug[=FLAGS] + set debug level (no FLAGS implies `aeq') + + --debugfile[=FILE] + redirect debug and trace output to FILE (default + stderr, discard if empty string) + + -l, --arglength=NUM + restrict macro tracing size + + -t, --trace=NAME + trace NAME when it is defined + + FLAGS is any of: + a show actual arguments + + c show before collect, after collect and after call + + e show expansion + + f say current input file name + + i show changes in input files + + l say current input line number + + p show results of path searches + + q quote values as necessary, with a or e flag + + t trace for all macro calls, not only traceon'ed + + x add a unique macro call id, useful with c flag + + V shorthand for all of the above flags + + If defined, the environment variable `M4PATH' is a + colon-separated list of directories included after any + specified by `-I'. + + Exit status is 0 for success, 1 for failure, 63 for + frozen file version mismatch, or whatever value was + passed to the m4exit macro. + +AUTHOR + Written by Rene' Seindal. + +REPORTING BUGS + Report bugs to: bug-m4@gnu.org GNU M4 home page: + General help using GNU + software: + +COPYRIGHT + Copyright © 2010 Free Software Foundation, Inc. License + GPLv3+: GNU GPL version 3 or later + . + This is free software: you are free to change and redis- + tribute it. There is NO WARRANTY, to the extent permit- + ted by law. + +SEE ALSO + The full documentation for m4 is maintained as a Texinfo + manual. If the info and m4 programs are properly + installed at your site, the command + + info m4 + + should give you access to the complete manual. + + + +GNU M4 1.4.14 February 2010 M4(1) diff --git a/Tools/m4/man/cat1p/m4.1p.txt b/Tools/m4/man/cat1p/m4.1p.txt new file mode 100644 index 00000000..b7fd6840 --- /dev/null +++ b/Tools/m4/man/cat1p/m4.1p.txt @@ -0,0 +1,530 @@ +M4(P) POSIX Programmer's Manual M4(P) + + + +NAME + m4 - macro processor (DEVELOPMENT) + +SYNOPSIS + m4 [-s][-D name[=val]]...[-U name]... file... + +DESCRIPTION + The m4 utility is a macro processor that shall read one + or more text files, process them according to their + included macro statements, and write the results to + standard output. + +OPTIONS + The m4 utility shall conform to the Base Definitions + volume of IEEE Std 1003.1-2001, Section 12.2, Utility + Syntax Guidelines, except that the order of the -D and + -U options shall be significant. + + The following options shall be supported: + + -s Enable line synchronization output for the c99 + preprocessor phase (that is, #line directives). + + -D name[=val] + + Define name to val or to null if = val is omit- + ted. + + -U name + Undefine name. + + +OPERANDS + The following operand shall be supported: + + file A pathname of a text file to be processed. If no + file is given, or if it is '-' , the standard + input shall be read. + + +STDIN + The standard input shall be a text file that is used if + no file operand is given, or if it is '-' . + +INPUT FILES + The input file named by the file operand shall be a text + file. + +ENVIRONMENT VARIABLES + The following environment variables shall affect the + execution of m4: + + LANG Provide a default value for the internationaliza- + tion variables that are unset or null. (See the + Base Definitions volume of IEEE Std 1003.1-2001, + Section 8.2, Internationalization Variables for + the precedence of internationalization variables + used to determine the values of locale cate- + gories.) + + LC_ALL If set to a non-empty string value, override the + values of all the other internationalization + variables. + + LC_CTYPE + Determine the locale for the interpretation of + sequences of bytes of text data as characters + (for example, single-byte as opposed to multi- + byte characters in arguments and input files). + + LC_MESSAGES + Determine the locale that should be used to + affect the format and contents of diagnostic mes- + sages written to standard error. + + NLSPATH + Determine the location of message catalogs for + the processing of LC_MESSAGES . + + +ASYNCHRONOUS EVENTS + Default. + +STDOUT + The standard output shall be the same as the input + files, after being processed for macro expansion. + +STDERR + The standard error shall be used to display strings with + the errprint macro, macro tracing enabled by the traceon + macro, the defined text for macros written by the + dumpdef macro, or for diagnostic messages. + +OUTPUT FILES + None. + +EXTENDED DESCRIPTION + The m4 utility shall compare each token from the input + against the set of built-in and user-defined macros. If + the token matches the name of a macro, then the token + shall be replaced by the macro's defining text, if any, + and rescanned for matching macro names. Once no portion + of the token matches the name of a macro, it shall be + written to standard output. Macros may have arguments, + in which case the arguments shall be substituted into + the defining text before it is rescanned. + + Macro calls have the form: + + + name(arg1, arg2, ..., argn) + + Macro names shall consist of letters, digits, and under- + scores, where the first character is not a digit. Tokens + not of this form shall not be treated as macros. + + The application shall ensure that the left parenthesis + immediately follows the name of the macro. If a token + matching the name of a macro is not followed by a left + parenthesis, it is handled as a use of that macro with- + out arguments. + + If a macro name is followed by a left parenthesis, its + arguments are the comma-separated tokens between the + left parenthesis and the matching right parenthesis. + Unquoted s and s preceding each argument + shall be ignored. All other characters, including trail- + ing s and s, are retained. Commas + enclosed between left and right parenthesis characters + do not delimit arguments. + + Arguments are positionally defined and referenced. The + string "$1" in the defining text shall be replaced by + the first argument. Systems shall support at least nine + arguments; only the first nine can be referenced, using + the strings "$1" to "$9" , inclusive. The string "$0" is + replaced with the name of the macro. The string "$#" is + replaced by the number of arguments as a string. The + string "$*" is replaced by a list of all of the argu- + ments, separated by commas. The string "$@" is replaced + by a list of all of the arguments separated by commas, + and each argument is quoted using the current left and + right quoting strings. + + If fewer arguments are supplied than are in the macro + definition, the omitted arguments are taken to be null. + It is not an error if more arguments are supplied than + are in the macro definition. + + No special meaning is given to any characters enclosed + between matching left and right quoting strings, but the + quoting strings are themselves discarded. By default, + the left quoting string consists of a grave accent ( '`' + ) and the right quoting string consists of an acute + accent ( '" ); see also the changequote macro. + + Comments are written but not scanned for matching macro + names; by default, the begin-comment string consists of + the number sign character and the end-comment string + consists of a . See also the changecom and dnl + macros. + + The m4 utility shall make available the following built- + in macros. They can be redefined, but once this is done + the original meaning is lost. Their values shall be null + unless otherwise stated. In the descriptions below, the + term defining text refers to the value of the macro: the + second argument to the define macro, among other things. + Except for the first argument to the eval macro, all + numeric arguments to built-in macros shall be inter- + preted as decimal values. The string values produced as + the defining text of the decr, divnum, incr, index, len, + and sysval built-in macros shall be in the form of a + decimal-constant as defined in the C language. + + changecom + The changecom macro shall set the begin-comment + and end-comment strings. With no arguments, the + comment mechanism shall be disabled. With a sin- + gle argument, that argument shall become the + begin-comment string and the shall + become the end-comment string. With two argu- + ments, the first argument shall become the begin- + comment string and the second argument shall + become the end-comment string. Systems shall sup- + port comment strings of at least five characters. + + changequote + The changequote macro shall set the begin-quote + and end-quote strings. With no arguments, the + quote strings shall be set to the default values + (that is, `'). With a single argument, that argu- + ment shall become the begin-quote string and the + shall become the end-quote string. With + two arguments, the first argument shall become + the begin-quote string and the second argument + shall become the end-quote string. Systems shall + support quote strings of at least five charac- + ters. + + decr The defining text of the decr macro shall be its + first argument decremented by 1. It shall be an + error to specify an argument containing any non- + numeric characters. + + define The second argument shall become the defining + text of the macro whose name is the first argu- + ment. + + defn The defining text of the defn macro shall be the + quoted definition (using the current quoting + strings) of its arguments. + + divert The m4 utility maintains nine temporary buffers, + numbered 1 to 9, inclusive. When the last of the + input has been processed, any output that has + been placed in these buffers shall be written to + standard output in buffer-numerical order. The + divert macro shall divert future output to the + buffer specified by its argument. Specifying no + argument or an argument of 0 shall resume the + normal output process. Output diverted to a + stream other than 0 to 9 shall be discarded. It + shall be an error to specify an argument contain- + ing any non-numeric characters. + + divnum The defining text of the divnum macro shall be + the number of the current output stream as a + string. + + dnl The dnl macro shall cause m4 to discard all input + characters up to and including the next . + + dumpdef + The dumpdef macro shall write the defined text to + standard error for each of the macros specified + as arguments, or, if no arguments are specified, + for all macros. + + errprint + The errprint macro shall write its arguments to + standard error. + + eval The eval macro shall evaluate its first argument + as an arithmetic expression, using 32-bit signed + integer arithmetic. All of the C-language opera- + tors shall be supported, except for: + + + [] + -> + ++ + -- + (type) + unary * + sizeof, + . + ?: + unary & + + and all assignment operators. It shall be an error to + specify any of these operators. Precedence and associa- + tivity shall be as in the ISO C standard. Systems shall + support octal and hexadecimal numbers as in the ISO C + standard. The second argument, if specified, shall set + the radix for the result; the default is 10. The third + argument, if specified, sets the minimum number of dig- + its in the result. It shall be an error to specify the + second or third argument containing any non-numeric + characters. + + ifdef If the first argument to the ifdef macro is + defined, the defining text shall be the second + argument. Otherwise, the defining text shall be + the third argument, if specified, or the null + string, if not. + + ifelse The ifelse macro takes three or more arguments. + If the first two arguments compare as equal + strings (after macro expansion of both argu- + ments), the defining text shall be the third + argument. If the first two arguments do not com- + pare as equal strings and there are three argu- + ments, the defining text shall be null. If the + first two arguments do not compare as equal + strings and there are four or five arguments, the + defining text shall be the fourth argument. If + the first two arguments do not compare as equal + strings and there are six or more arguments, the + first three arguments shall be discarded and pro- + cessing shall restart with the remaining argu- + ments. + + include + The defining text for the include macro shall be + the contents of the file named by the first argu- + ment. It shall be an error if the file cannot be + read. + + incr The defining text of the incr macro shall be its + first argument incremented by 1. It shall be an + error to specify an argument containing any non- + numeric characters. + + index The defining text of the index macro shall be the + first character position (as a string) in the + first argument where a string matching the second + argument begins (zero origin), or -1 if the sec- + ond argument does not occur. + + len The defining text of the len macro shall be the + length (as a string) of the first argument. + + m4exit Exit from the m4 utility. If the first argument + is specified, it is the exit code. The default is + zero. It shall be an error to specify an argument + containing any non-numeric characters. + + m4wrap The first argument shall be processed when EOF is + reached. If the m4wrap macro is used multiple + times, the arguments specified shall be processed + in the order in which the m4wrap macros were pro- + cessed. + + maketemp + The defining text shall be the first argument, + with any trailing 'X' characters replaced with + the current process ID as a string. + + popdef The popdef macro shall delete the current defini- + tion of its arguments, replacing that definition + with the previous one. If there is no previous + definition, the macro is undefined. + + pushdef + The pushdef macro shall be equivalent to the + define macro with the exception that it shall + preserve any current definition for future + retrieval using the popdef macro. + + shift The defining text for the shift macro shall be + all of its arguments except for the first one. + + sinclude + The sinclude macro shall be equivalent to the + include macro, except that it shall not be an + error if the file is inaccessible. + + substr The defining text for the substr macro shall be + the substring of the first argument beginning at + the zero-offset character position specified by + the second argument. The third argument, if spec- + ified, shall be the number of characters to + select; if not specified, the characters from the + starting point to the end of the first argument + shall become the defining text. It shall not be + an error to specify a starting point beyond the + end of the first argument and the defining text + shall be null. It shall be an error to specify an + argument containing any non-numeric characters. + + syscmd The syscmd macro shall interpret its first argu- + ment as a shell command line. The defining text + shall be the string result of that command. No + output redirection shall be performed by the m4 + utility. The exit status value from the command + can be retrieved using the sysval macro. + + sysval The defining text of the sysval macro shall be + the exit value of the utility last invoked by the + syscmd macro (as a string). + + traceon + The traceon macro shall enable tracing for the + macros specified as arguments, or, if no argu- + ments are specified, for all macros. The trace + output shall be written to standard error in an + unspecified format. + + traceoff + The traceoff macro shall disable tracing for the + macros specified as arguments, or, if no argu- + ments are specified, for all macros. + + translit + The defining text of the translit macro shall be + the first argument with every character that + occurs in the second argument replaced with the + corresponding character from the third argument. + + undefine + The undefine macro shall delete all definitions + (including those preserved using the pushdef + macro) of the macros named by its arguments. + + undivert + The undivert macro shall cause immediate output + of any text in temporary buffers named as argu- + ments, or all temporary buffers if no arguments + are specified. Buffers can be undiverted into + other temporary buffers. Undiverting shall dis- + card the contents of the temporary buffer. It + shall be an error to specify an argument contain- + ing any non-numeric characters. + + +EXIT STATUS + The following exit values shall be returned: + + 0 Successful completion. + + >0 An error occurred + + + If the m4exit macro is used, the exit value can be spec- + ified by the input file. + +CONSEQUENCES OF ERRORS + Default. + + The following sections are informative. + +APPLICATION USAGE + The defn macro is useful for renaming macros, especially + built-ins. + +EXAMPLES + If the file m4src contains the lines: + + + The value of `VER' is "VER". + ifdef(`VER', "VER" is defined to be VER., VER is not defined.) + ifelse(VER, 1, "VER" is `VER'.) + ifelse(VER, 2, "VER" is `VER'., "VER" is not 2.) + end + + then the command + + + m4 m4src + + or the command: + + + m4 -U VER m4src + + produces the output: + + + The value of VER is "VER". + VER is not defined. + + + VER is not 2. + end + + The command: + + + m4 -D VER m4src + + produces the output: + + + The value of VER is "". + VER is defined to be . + + + VER is not 2. + end + + The command: + + + m4 -D VER=1 m4src + + produces the output: + + + The value of VER is "1". + VER is defined to be 1. + VER is 1. + VER is not 2. + end + + The command: + + + m4 -D VER=2 m4src + + + produces the output: + The value of VER is "2". + VER is defined to be 2. + + + VER is 2. + end + +RATIONALE + None. + +FUTURE DIRECTIONS + None. + +SEE ALSO + c99 + +COPYRIGHT + Portions of this text are reprinted and reproduced in + electronic form from IEEE Std 1003.1, 2003 Edition, + Standard for Information Technology -- Portable Operat- + ing System Interface (POSIX), The Open Group Base Speci- + fications Issue 6, Copyright (C) 2001-2003 by the Insti- + tute of Electrical and Electronics Engineers, Inc and + The Open Group. In the event of any discrepancy between + this version and the original IEEE and The Open Group + Standard, the original IEEE and The Open Group Standard + is the referee document. The original Standard can be + obtained online at http://www.open- + group.org/unix/online.html . + + + +IEEE/The Open Group 2003 M4(P) diff --git a/Tools/m4/regex2.dll b/Tools/m4/regex2.dll new file mode 100644 index 00000000..f84a847a Binary files /dev/null and b/Tools/m4/regex2.dll differ