diff --git a/cifgen.mi b/cifgen.mi index 7b93fa0..25cf192 100644 --- a/cifgen.mi +++ b/cifgen.mi @@ -1,3 +1,4 @@ +undefine({worddoc}) \input texinfo @setfilename thisfilename @afourpaper @@ -22,6 +23,7 @@ Permission is granted to copy with attribution. Program is protected by the GNU Public License. @end titlepage +@node Top, , , @chapter Overview forthvar({ci86.gnr}) is a system to generate ciforth in all its configuration's. @@ -453,11 +455,11 @@ Just say forthsamp({forthcode(_lbracket_+LOOP _rbracket_)}) to indicate that you formatting as for ``code'' words. Later you can decide to use forthbreak - forthsamp({{define}(_lbracket_forthcode _rbracket_,_lbracket__comat_code_lbracket_$}{1_rbracket__rbracket_)}) + forthsamp({define(_lbracket_forthcode _rbracket_,_lbracket__comat_code_lbracket_$}{1_rbracket__rbracket_)}) forthbreak for forthsamp({texinfo}) or forthbreak -forthsamp({{define}(_lbracket_forthcode _rbracket_,_lbracket_$1 _rbracket_)}) +forthsamp({define(_lbracket_forthcode _rbracket_,_lbracket_$1 _rbracket_)}) forthbreak for forthsamp({html}) . @@ -467,21 +469,21 @@ Some macro calls must be considered to define a structure, in particular Suppose we have a list of structures, meaning that the first person is a child of the second and third person: -parents({Alice},{Mary},{John}) +parents(_lbracket_Alice_rbracket_,_lbracket_Mary_rbracket_,_lbracket_John_rbracket_) -parents({Fred},{Mary},{Henry}) +parents(_lbracket_Fred_rbracket_,_lbracket_Mary_rbracket_,_lbracket_Henry_rbracket_) -parents({Aayilah},{Sjantil},{Bodaji}) +parents(_lbracket_Aayilah_rbracket_,_lbracket_Sjantil_rbracket_,_lbracket_Bodaji_rbracket_) ... With - forthsamp({{define}({parents},{$}{2})}) we get a list of (you guessed) the mothers. + forthsamp({define(_lbracket_parents_rbracket_,_lbracket_$2_rbracket_)}) we get a list of (you guessed) the mothers. The usage of forthmacro({divert()}) can best be explained with an example in this context. forthexample( -{{define}(_lbracket_parents_rbracket_, +{define(_lbracket_parents_rbracket_, _lbracket_{divert(3)dnl} $}{2 {divert(6)dnl} @@ -621,7 +623,7 @@ forthmacro({worddoc}) are such that a structure starts with forthsamp({worddoc( end with a forthsamp({_rbracket_)}) at the end of a line. This means that a worddoc can be simply skipped if it occurs in Forth code, -by defining a word forthcode({{worddoc(}}) that reads and ignores source up to the +by defining a word forthcode({worddoc(}) that reads and ignores source up to the end sentinel. The forthmacro({worddocchapter}) macro defines a wordset. @@ -722,9 +724,9 @@ It is unusual for a forth to be configurable as 16 or 32 bit. It turned out that the addition of forthcode({CELL+}) goes a long way toward allowing utilities like a decompiler to be 16/32 bit clean. In the documentation mostly reference to cells can be made. But the macro's -forthsamp({{_BITS_}}) -forthsamp({{_BIT16_}}) and -forthsamp({{_BIT32_}}) +forthsamp({_BITS_}) +forthsamp({_BIT16_}) and +forthsamp({_BIT32_}) can be used to signify the actual number of bits and parts to refer to 16 and 32 bits only respectively. @@ -835,16 +837,16 @@ of course not. All Linux versions have their blocks in a file. (Accessing a floppy in the classic way is perfectly possible -- and implementing it would be a perfectly pointless exercise.) -With respect to the hosting you can choose between forthmacro({{_HOSTED_}}) ( forthmacro({{_HOSTED_LINUX_}}) or - forthmacro({{_HOSTED_MSDOS_})}) and forthmacro({{_BOOTED_}}) . ( forthmacro({{_BOOTDF_}}) or forthmacro({{_BOOTHD_}}) ). +With respect to the hosting you can choose between forthmacro({_HOSTED_}) ( forthmacro({_HOSTED_LINUX_}) or + forthmacro({_HOSTED_MSDOS_})) and forthmacro({_BOOTED_}) . ( forthmacro({_BOOTDF_}) or forthmacro({_BOOTHD_}) ). A hosted version relies on MSDOS or Linux to get the program started. (It may or may not use MSDOS for I/O, once started.). -A forthmacro({{_BOOTED_}}) version contains a boot sector, such that +A forthmacro({_BOOTED_}) version contains a boot sector, such that you you can make a standalone version that boots from floppy or hard disk. -A forthmacro({{_BOOTED_}}) version may very well be startable from plain DOS and its files +A forthmacro({_BOOTED_}) version may very well be startable from plain DOS and its files visible from DOS. -Of course a forthmacro({{BOOTED_}}) version that tries to use MSDOS I/O (or Linux) crashes +Of course a forthmacro({BOOTED_}) version that tries to use MSDOS I/O (or Linux) crashes immediately, so not all versions are useful. You have a choice between 16 or 32 protected mode and real mode. @@ -856,15 +858,17 @@ If you manage to specify conflicting options the preprocessor (forthprog({m4})) off and you can find the exit code in forthfile({postlude.m4}) . Than you can reason back why this is a conflict. For example error 1000 indicates floppy and hard disk i/o at the same time. -From forthfile({postlude.m4}) you see that forthmacro({{_RWFD_}}) and forthmacro({{_RWHD_}}) are -on at the same time. forthmacro({{_RWHD_}}) is turned on because you wanted to boot from hard -disk or you specified it yourself in the first place. Etc. +From forthfile({postlude.m4}) you see that forthmacro({_RWFD_}) +and forthmacro({_RWHD_}) are on at the same time. +forthmacro({_RWHD_}) is turned on because you wanted to boot +from hard disk or you specified it yourself in the first place. +Etc. forthfile({postlude.m4}) does you another favor. It derives logical consequences, such -as once you decide for a forthmacro({{_REAL_}}) mode Forth, it must be forthmacro({{_BITS16_}}) +as once you decide for a forthmacro({_REAL_}) mode Forth, it must be forthmacro({_BITS16_}) and you need not specify that_VERBOSE_({ (And yes, we could add a real mode 32 bits Forth, any volunteers?)}). -In particular forthmacro({{_LINUX_N_}}) or forthmacro({{_LINUX_C_}}) define a whole configuration. +In particular forthmacro({_LINUX_N_}) or forthmacro({_LINUX_C_}) define a whole configuration. @subsection Level 2 customization. You are on your own here. @@ -986,7 +990,7 @@ If your NEXT is inline code, for the moment replace it by a jump. Mostly this can be done by inactivating the macro forthmacro({_NEXT32_}) through removing the line -forthsamp({_BITS32_(_lbracket_{define}(_lbracket__NEXT_rbracket_,_lbracket__NEXT32_rbracket_)_rbracket_)}) +forthsamp({_BITS32_(_lbracket_define(_lbracket__NEXT_rbracket_,_lbracket__NEXT32_rbracket_)_rbracket_)}) from forthfile({postlude.m4}). forthitem Enter the cold start at the origin. @@ -1143,7 +1147,7 @@ forthendenumerate @chapter Now: release it! To release the software use the command -forthsamp({make release VERSION=forthvar({NNN})}) +forthsamp({make release VERSION=NNN}) where forthvar({NNN}) is as appropriate: the RCS version number (for ciforth 3d###) for a beta version and the minor @@ -1268,7 +1272,7 @@ dnl@node Forth Word Index,,,Top @unnumbered Forth Word Index This index lists forth words. @printindex fn -@node Concept Index,,,Top +dnl@node Concept Index,,,Top @unnumbered Concept Index This index lists concepts. dnl The first reference is where the concept is explained.