?_Dÿÿÿÿ:i4+lpM `ˆ Ø‚Ž‚ ‡ 1G‚ ‚ÿ‚ŽC ̃1Gƒ1G(G1ƒ‚ä„€€„€€€ˆ€€€€€À„ÿÿ„ÿÿÿˆÿÿÿÿÿoÿÿ†ðÿƒÿÿƒÿ„ððÿ†ðððÿƒðÿùÿ‚ÿ÷ÿ‚ûÿ÷ÿƒû¿ÿóÿƒñ»ÿò ÿƒ¿!ÿƒñ»ÿü ÿƒ¿ÿõ ÿƒñ»ÿü ÿƒ»ÿü ÿ„ñ»¿!ÿƒ»ÿý ÿ„¿ÿû ÿ„ñ»ÿ÷ ÿ„¿ÿûÿƒ»ÿòÿ„ñ» ÿ…ñ»¿ ÿ„ñ»ÿƒõÿÿ »ƒ±»ƒÿþÿñ…ÿþÿÿÿÿ…ÿýÿÿ…ÿ÷ÿÿ…ÿ÷ÿÿ‹ò/ÿ"ò""/""/"ˆò""ò/ÿÿ"ÿ…ÿûÿÿ‹ò/ÿ"ò""/""/"ˆò""ò/ÿÿ"ÿ…ÿúÿÿ“ò/ÿ"ò/ÿÿ"ÿÿ"ÿÿò/ÿò/ÿÿÿ–ò/ÿ"ò/ÿÿ"ÿÿ"ÿÿò/ÿò""ÿ"ÿ…ÿýÿÿò"’ò""ÿ"ÿÿ"ÿÿò/ÿò""/"ÿ…ÿõÿÿò"’ò""ÿ"ÿÿ"ÿÿò/ÿò/ò/"ÿ…ÿþÿÿ–ò/ÿ"ò/ÿÿ"ÿÿ"ÿÿò/ÿò/ò/"ÿ…ÿöÿÿ–ò/ÿ"ò""/"ÿÿ"ÿÿò/ÿò""/"ÿÿÿ–ò/ÿ"ò""/"ÿÿ"ÿÿò/ÿò""ÿ"ÿ…ÿýÿÿ…ÿûÿÿ…ÿ÷ÿÿ„ÿûÿ ƒÿòGÿ‚þ/&;)z4ÿÿ ‚ ÿÿÿÿ|CONTEXT a|CTXOMAPF-|FONTÚ#|KWBTREE­0|KWDATAQ-|KWMAP–0|SYSTEMs|TOPICâ|TTLBTREEÜH|bm0ofl!æ1X;ANS94 Chapter 3ã(Unregistered evaluation copy of HELLLP!(Unregistered evaluation copy of HELLLP!#CB("About_btn","&About","About()")DB(`btn_print')Zmain  ;ÌÌÌÌÌÌÌÌîÌ¡¢ºîøïÿÿÿÿ 1ÿÿÿÿ=1ÿÿÿÿÿÿÿÿÿÿÿÿ=)ì· )5 8€o€€‚€‚€‚‚€€‚‚ÿHelp file produced byHELLLP!www.guysoftware.com/helllp.html(If this topic is presented in file testing theauthor should use the HELLLP! Ibutton to define a contents topic)1=Z1ÿÿÿÿÿÿÿÿZÿÿÿÿªP,)ª$ €X€˜˜€ÿnononoANS94 Chapter 331Chap3yesyes20/07/01BZì1ÿÿÿÿÿÿÿÿì)•Table of Contents=ª)( €*€˜˜€€‚ÿTable of ContentsGìp* $€:€€‚ã›S牂ÿ3. Usage requirements@)°+ &€*€‘€ãy2ß〉‚ÿ3.1 Data typesp>p 2 4€|€!ãz2ß〉‚ãȫ㉂ÿ3.1.1 Data-type relationships3.1.2 Character types‰K°©> L€–€±ã?Œç«€€€‰‚ãÜŸù«€€‰‚ÿTable 3.1 – Data types Table 3.2 – Standard graphic characters ˆO 19 B€ž€!ãÙ怉‚ã|-Šã‰‚ãزí扂ÿ3.1.3 Single-cell types3.1.4 Cell-pair types3.1.5 System typesT)©…+ &€R€‘€ã8…瀉‚ÿ3.2 The implementation environment[)1à2 4€R€!ã.öÌ倉‚ã1Ë&㉂ÿ3.2.1 Numbers3.2.2 Arithmetic•W…u> L€®€±ãeù髀€€‰‚ãÝŸù«€€‰‚ÿTable 3.3 – Floored Division Example Table 3.4 – Symmetric Division ExampleŠfà@ P€Ì€!ã£ËÑ怉‚ã扂ã|³å‰‚ãq¹䉂ÿ3.2.3 Stacks3.2.4 Operator terminal3.2.5 Mass storage3.2.6 Environmental queries`/u{1 2€^€±ãÒÂ諀€€‰‚ÿTable 3.5 – Environmental Query Strings JÅ+ &€>€‘€ãá瀉‚ÿ3.3 The Forth dictionaryzA{?9 B€‚€!ãЊç倉‚ã5ѩ㉂ãæûÝ㉂ÿ3.3.1 Name space3.3.2 Code space3.3.3 Data spaceP%ŏ+ &€J€‘€ã€á瀉‚ÿ3.4 The Forth text interpreterޖ?mH ^€-€!ãK5怉‚ã«4䉂ã€ËÑ扂ãÜ%:扂㓠ã‰‚ÿ3.4.1 Parsing3.4.2 Finding definition names3.4.3 Semantics3.4.4 Possible actions on an ambiguous condition3.4.5 Compilation(•$ €€€‚‚ÿ1mÆ1ÉÿÿÿÿÿÿÿÿÿÿÿÿÆ^ V+• + $€W€€€ €‚‚ÿHelp file produced by HELLLP! v3.1b , a product of Guy Software, on 20/07/01 for Unregistered User.The above table of contents will be automatically completed and will also provide an excellent cross-reference for context strings and topic titles. You may leave it as your main table of contents for your help file, or you may create your own and cause it to be displayed instead by using the I button on the toolbar. This page will not be displayed as a topic. It is given a context string of _._ , but this is not presented for jump selection.òÆ6 ( €å€€‚€‚ÿHINT: If you do not wish some of your topics to appear in the table of contents as displayed to your users (you may want them ONLY as PopUps), move the lines with their titles and contexts to below this point. If you do this remember to move the whole line, not part. As an alternative, you may wish to set up your own table of contents, see Help under The Structure of a Help File. Do not delete any codes in the area above the Table of Contents title, they are used internally by HELLLP!( ^ $ €€€‚‚ÿH6 Š 1ÿÿÿÿÿÿÿÿŠ å ]B3. Usage requirements?^ å % €4€˜˜€‚ÿ3. Usage requirementsHŠ -* $€<€°€ € € ‚ÿ3. Usage requirements h3å ¡@5 8€g€˜R‘€€ € € ‚‚ÿA system shall provide all of the words defined in 6.1 Core Words. It may also provide any words defined in the optional word sets and extensions word sets. No standard word provided by a system shall alter the system state in a way that changes the effect of execution of any other standard word except as provided in this Standard. A system may contain non-standard extensions, provided that they are c-¡@^ onsistent with the requirements of this Standard.The implementation of a system may use words and techniques outside the scope of this Standard.Œ-]B, &€!€˜R‘€€ ‚‚ÿA system need not provide all words in executable form. The implementation may provide definitions, including definitions of words in the Core word set, in source form only. If so, the mechanism for adding the definitions to the dictionary is implementation defined.A program that requires a system to provide words or techniques not defined in this Standard has an environmental dependency.A¡@žB1†ÿÿÿÿÿÿÿÿžBCmE3.1 Data types8]BÖB% €&€˜˜€‚ÿ3.1 Data typesBžBC+ &€.€°˜€€€‚ÿ3.1 Data types U ÖBmE5 8€A€˜R‘€€ ‚‚ã?Œç«‰‚ÿA data type identifies the set of permissible values for a data object. It is not a property of a particular storage location or position on a stack. Moving a data object shall not affect its type.No data-type checking is required of a system. An ambiguous condition exists if an incorrectly typed data object is encountered.Table 3.1 summarizes the data types used throughout this Standard. Multiple instances of the same type in the description of a definition are suffixed with a sequence digit subscript to distinguish them.PCœE1ÿÿÿÿÿÿÿÿœEFcJ3.1.1 Data-type relationshipsG"mEF% €D€˜˜€‚ÿ3.1.1 Data-type relationshipsP&œETF* $€L€Ȁ€€‚ÿ3.1.1 Data-type relationships …FdH‹ ä€ €˜R‘€€ €€ €€ €€ €€ €€€ €€€ €€€ €€€ €€ €€ €€ €€ €€ €€ ‚ÿSome of the data types are subtypes of other data types. A data type i is a subtype of type j if and only if the members of i are a subset of the members of j. The following list represents the subtype relationships using the phrase «i => j» to denote «i is a subtype of j». The subtype relationship is transitive; if i => j and j => k then i => k:V§TFºI¯ ,O€PQ"€€€€€€‚€€€€€€‚€€€€‚€€€€€€€€‚€€€€‚€€€€‚€€€€€€‚€€€€€€‚ÿ+n => u => x;+n => n => x;char => +n;a-addr => c-addr => addr => u;flag => x;xt => x;+d => d => xd;+d => ud => xd.©udHcJ4 8€ê€˜R‘€€ €€ €€ ‚ÿAny Forth definition that accepts an argument of type i shall also accept an argument that is a subtype of i.HºI«J1Vÿÿÿÿÿÿÿÿ«JêJ'Â3.1.2 Character types?cJêJ% €4€˜˜€‚ÿ3.1.2 Character typesH«J2K* $€<€Ȁ€€‚ÿ3.1.2 Character types BêJtL1 0€#€˜R‘€€ ‚ãÜŸù«‰‚ÿCharacters shall be at least one address unit wide, contain at least eight bits, and have a size less than or equal to cell size.The characters provided by a system shall include the graphic characters {32..126}, which represent graphic forms as shown in table 3.2.M#2KÁL* $€F€Ȁ€€‚ÿ3.1.2.1 Graphic characters V"tLO4 6€E€˜R‘€€ ãÜŸù«‰‚‚ÿA graphic character is one that is normally displayed (e.g., A, #, &, 6). These values and graphics, shown in table 3.2, are taken directly from ANS X3.4-1974 (ASCII) and ISO 646-1983, International Reference Version (IRV). The graphic forms of characters outside the hex range {20..7E} are implementation-defined. Programs that use the graphic hex 24 (the currency sign) have an environmental dependency.The graphic representation of characters is not restricted to particular type fonts or styles. The graphics here are examples.M#ÁLdO* $€F€Ȁ€€‚ÿ3.1.2.2 Control characters €xO, &€ñ€˜R‘€€ ‚‚ÿAll non-graphic characters included in the implementation-defined character set are defined in this Standard adOcJs control characters. In particular, the characters {0..31}, which could be included in the implementation-defined character set, are control characters.Programs that require the ability to send or receive control characters have an environmental dependency.*dO>' €€:°RÈȀ‚ÿG…+ &€8€˜˜€€€‚ÿTable 3.1 – Data types V >Û6 <€@€:°RÈȀ€€€€€‚ÿTable 3.1 – Data types V!…1‚5 :€B€xRA‚%ã~ „A1†€ƒƒ‚ÿSymbolData typeSize on stack@‰ہq„· <€xRA‚%ã~H„A1†€€ ƒƒ‚€€ ƒƒ‚€€ ƒƒ‚€€ ƒƒ‚€€ ƒƒ‚€€ ƒƒ‚€€ ƒƒ‚€€ €€€ ƒƒ‚€€ ƒƒ‚€€ ƒƒ‚€€ ƒƒ‚€€ ƒƒ‚€€ ƒƒ‚€€ ƒƒ‚ÿflagflag1 celltruetrue flag1 cellfalsefalse flag1 cellcharcharacter1 cellnsigned number1 cell+nnon-negative number1 celluunsigned number1 celln|u 1number1 cellxunspecified cell1 cellxtexecution token1 celladdraddress1 cella-addraligned address1 cellc-addrcharacter-aligned address1 cellddouble-cell signed number2 cells~1‚ˆ†™ ý€xRA‚%ã~H„A1†€€ ƒƒ‚€€ ƒƒ‚€€ €€€ ƒƒ‚€€ ƒƒ‚€€ ƒƒ‚€€ ƒƒ‚€€ ƒã9²Ý󀉀 ƒ‚€€ ƒã~À]€‰€ ƒ‚ÿ+ddouble-cell non-negative number2 cellsuddouble-cell unsigned number2 cellsd|ud 2double-cell number2 cellsxdunspecified cell pair2 cellscolon-sysdefinition compilationimplementation dependentdo-sysdo-loop structuresimplementation dependentcase-sysCASE structuresimplementation dependentof-sysOF structuresimplementation dependent‚q„ ˆl Š€-€xRA‚%ã~H„A1†€€ ƒƒ‚€€ ƒƒ‚€€ ƒƒ‚€€ ƒƒ‚€€ €€ €€€ ƒƒ‚ÿorigcontrol-flow originsimplementation dependentdestcontrol-flow destinationsimplementation dependentloop-sysloop-control parametersimplementation dependentnest-sysdefinition callsimplementation dependenti*x, j*x, k*x 3any data type0 or more cellsˆ;ˆ†’‰M h€w€vŒŒi%:‚H€ƒ‚ƒ‚ƒ€€ €€ãòŠn€ ‰€€‚ÿ1May be either a signed number or an unsigned number depending on context.2May be either a double-cell signed number or a double-cell unsigned number depending on context.3May be an undetermined number of stack entries of unspecified type. For examples of use, see 6.1.1370 EXECUTE, 6.1.2050 QUIT.+ ˆœ‰( €€8RÈȂH€!‚ÿZ-’‰Š- *€Z€ ˜˜‚H€€€‚ÿTable 3.2 – Standard graphic characters e0œ‰|Š5 :€`€: °RÈȂH€€€€€‚ÿTable 3.2 – Standard graphic characters lrŠôÁú#‡åwZ{{z{z€€„„Zÿ<€€„„Z†7€€ǀ€"ƒƒƒ‚ÿL€$€(ZŽ†7€€ـ€#ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ÿ4€d€(bŽ†7€€ـƒƒƒ‚ÿ~€v€(ZŽ†7€€ـƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ÿ&€((ZŽ†7€€ـÿ<€*„„Z†7€€ǀ€"ƒƒƒ‚ÿ¬€L(ZŽ†7€€ـ€#ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ÿ&€P‚(ZŽ†7€€ـÿ<€R‚„„Z†7€€ǀ€"ƒƒƒ‚ÿ¬€t‚(ZŽ†7€€ـ€#ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ÿ&€xƒ(ZŽ†7€€ـÿ<€zƒ„„Z†7€€ǀ€"ƒƒƒ‚ÿ€€œƒ(ZŽ†7€€ـ€#ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ÿ0€„,ŒZŽ†7€€ـƒƒƒ‚ÿ(€¢„,ŒZŽ†7€€ـÿ<€€„„„Z†7€€ǀ€"ƒƒƒ‚ÿ¬€Æ„(ZŽ†7€€ـ€#ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ÿ&€Ê…(ZŽ†7€€ـÿ<€Ì…„„Z†7€€ǀ€"ƒƒƒ‚ÿŠ€î…(ZŽ†7€€ـ€#ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚ƒƒƒ‚‚ÿÿÿHexIRVASCII2021!!22""23##24€$25%%26&&27''28((29))2A**2B++2C,,2D--2E..2F//HexIRVASCII30003111322233333444355536663777388839993A::3B;;3C<<3D==3E>>3F??HexIRVASCII40@@41AA42BB43CC44DD45EE46FF47GG48HH49II|ŠôÁcJ4AJJ4BKK4CLL4DMM4ENN4FOOHexIRVASCII50PP51QQ52RR53SS54TT55UU56VV57WW58XX59YY5AZZ5B[[5C\\5D]]5E^^5F__HexIRVASCII60``61aa62bb63cc64dd65ee66ff67gg68hh69ii6Ajj6Bkk6Cll6Dmm6Enn6FooHexIRVASCII70pp71qq72rr73ss74tt75uu76vv77ww78xx79yy7Azz7B{{7C||7D}}7E~~3|Š'Â0 0€€8RÈȆ7€€ـ€!‚ÿJôÁqÂ1ê ÿÿÿÿÿÿÿÿq²ÂkÎ3.1.3 Single-cell typesA'²Â% €8€˜˜€‚ÿ3.1.3 Single-cell typesJ qÂüÂ* $€@€Ȁ€€‚ÿ3.1.3 Single-cell types Þ¬²ÂÚÄ2 2€Y€˜R‘€€ € € ‚‚ÿThe implementation-defined fixed size of a cell is specified in address units and the corresponding number of bits. See E.2 Hardware peculiarities.Cells shall be at least one address unit wide and contain at least sixteen bits. The size of a cell shall be an integral multiple of the size of a character. Data-stack elements, return-stack elements, addresses, execution tokens, flags, and integers are one cell wide.BüÂÅ, (€,€ŒŒÈ€€€‚ÿ3.1.3.1 Flags ~GÚĚÆ7 <€€˜R‘€€ €€ €€ ‚‚ÿFlags may have one of two logical states, true or false. Programs that use flags as arithmetic operands have an environmental dependency.A true flag returned by a standard word shall be a single-cell value with all bits set. A false flag returned by a standard word shall be a single-cell value with all bits clear.EÅßÆ, (€2€ŒŒÈ€€€‚ÿ3.1.3.2 Integers $úšÆÈ* "€õ€˜R‘€€ ‚‚‚ÿThe implementation-defined range of signed integers shall include {-32767..+32767}.The implementation-defined range of non-negative integers shall include {0..32767}.The implementation-defined range of unsigned integers shall include {0..65535}.FßÆIÈ, (€4€ŒŒÈ€€€‚ÿ3.1.3.3 Addresses ŽTÈ×Ê: B€©€˜R‘€€ ãæûÝ〠‰€ ‚‚ÿAn address identifies a location in data space with a size of one address unit, which a program may fetch from or store into except for the restrictions established in this Standard. The size of an address unit is specified in bits. Each distinct address value identifies exactly one such storage element. See 3.3.3 Data space.The set of character-aligned addresses, addresses at which a character can be accessed, is an implementation-defined subset of all addresses. Adding the size of a character to a character-aligned address shall produce another character-aligned address.åŒIÈŒË) €y€˜R‘€€ ‚ÿThe set of aligned addresses is an implementation-defined subset of character-aligned addresses. Adding the size of a cell to an aligned address shall produce another aligned address.L ×ÊÌ, (€@€ŒŒÈ€€€‚ÿ3.1.3.4 Counted strings ’aŒËšÍ1 0€Ã€˜R‘€€ €€ ‚‚ÿA counted string in memory is identified by the address (c-addr) of its length character.The length character of a counted string shall contain a binary representation of the number of data characters, between zero and the implementation-defined maximum length for a counted string. The maximum length of a counted string shall be at least 255.M!ÌçÍ, (€B€ŒŒÈ€€€‚ÿ3.1.3.5 Execution tokens „]šÍkÎ' €º€˜R‘€€ ‚ÿDifferent definitions may have the same execution token if the definitions are equivalent.HçͳÎ13ÿÿÿÿÿÿÿÿ ³ÎòΩ3.1.4 Cell-pair types?kÎòÎ% €4€˜˜€‚ÿ3.1.4 Cell-pair typesJ³Î<Ï, (€<€ŒŒÈ€€€‚ÿ3.1.4 Cell-pair types K!òΓ* "€C€˜R‘€€ ‚ÿA cell pair in memory consists of a sequence of two contiguous cells. The cell at the lower address is the first cell, and its address is used to ident<ϓkÎify the cell pair. Unless otherwise specified, a cell pair on a stack consists of the first cell immediately above the second cell.Q%<Ïä, (€J€ŒŒÈ€€€‚ÿ3.1.4.1 Double-cell integers Г“Ž= H€'€˜R‘€€ ‚‚‚ã.öÌå€ ‰€ ‚ÿOn the stack, the cell containing the most significant part of a double-cell integer shall be above the cell containing the least significant part.The implementation-defined range of double-cell signed integers shall include {-2147483647..+2147483647}.The implementation-defined range of double-cell non-negative integers shall include {0..2147483647}.The implementation-defined range of double-cell unsigned integers shall include {0..4294967295}. Placing the single-cell integer zero on the stack above a single-cell unsigned integer produces a double-cell unsigned integer with the same value. See 3.2.1.1 Internal number representation.N"ä, (€D€ŒŒÈ€€€‚ÿ3.1.4.2 Character strings §sŽ©4 8€æ€˜R‘€€ €€ €€ ‚ÿA string is specified by a cell pair (c-addr u) representing its starting address and length in characters.Eî1j ÿÿÿÿÿÿÿÿ î*c3.1.5 System types<©*% €.€˜˜€‚ÿ3.1.5 System typesCîm) "€4€ŒŒÈ€€‚ÿ3.1.5 System types …^*ò' €Œ€˜R‘€€ ‚ÿThe system data types specify permitted word combinations during compilation and execution.O(mA' €P€Ȁ€‚ÿ3.1.5.1 System-compilation types Ûˆò S t€€˜R‘€€ € € ‚€€ ‚ãvß ü€‰ãN=ºB‰€ €€ ‚ÿThese data types denote zero or more items on the control-flow stack (see 3.2.3.2). The possible presence of such items on the data stack means that any items already there shall be unavailable to a program until the control-flow-stack items are consumed.The implementation-dependent data generated upon beginning to compile a definition and consumed at its close is represented by the symbol colon-sys throughout this Standard.The implementation-dependent data generated upon beginning to compile a do-loop structure such as DO ... LOOP and consumed at its close is represented by the symbol do-sys throughout this Standard.­BAÉ k €€…€˜R‘€€ ã9²Ýó€‰ã3 d‰€ €€ ‚ã~À]€‰ã4 d‰€ €€ ‚€€ €€ ‚ÿThe implementation-dependent data generated upon beginning to compile a CASE ... ENDCASE structure and consumed at its close is represented by the symbol case-sys throughout this Standard.The implementation-dependent data generated upon beginning to compile an OF ... ENDOF structure and consumed at its close is represented by the symbol of-sys throughout this Standard.The implementation-dependent data generated and consumed by executing the other standard control-flow words is represented by the symbols orig and dest throughout this Standard.S'  , (€N€ŒŒÈ€€€‚ÿ3.1.5.2 System-execution types GÛÉ cl Š€·€˜R‘€€ ‚€€ ‚€€ ãºp(€‰€ ãÕå31€‰€ ãL=ºB€‰€ ãáƖ‘€‰€ ‚ÿThese data types denote zero or more items on the return stack. Their possible presence means that any items already on the return stack shall be unavailable to a program until the system-execution items are consumed.The implementation-dependent data generated upon beginning to execute a definition and consumed upon exiting it is represented by the symbol nest-sys throughout this Standard.The implementation-dependent loop-control parameters used to control the execution of do-loops are represented by the symbol loop-sys throughout this Standard. Loop-control parameters shall be available inside the do-loop for words that use or change these parameters, words such as I, J, LEAVE and UNLOOP.U$ ž1!ÿÿÿÿÿÿÿÿ žÿÿÿÿf@3.2 The implementation environmentL'c@% €N€˜˜€‚ÿ3.2 The implementation environmež@cntV+žf@+ &€V€°˜€€€‚ÿ3.2 The implementation environment @@Š@1ƒÿÿÿÿÿÿÿÿ Š@Ý@/I3.2.1 Numbers7f@Ý@% €$€˜˜€‚ÿ3.2.1 NumberstCŠ@QA1 2€†€Ȁ€‚€€€‚ÿ3.2.1 Numbers 3.2.1.1 Internal number representation c,Ý@ŽB7 <€Y€˜R‘€€ €€ €€ ‚‚ÿThis Standard allows one’s complement, two’s complement, or sign-magnitude number representations and arithmetic. Arithmetic zero is represented as the value of a single cell with all bits clear.The representation of a number as a compiled literal or in memory is implementation dependent.G QAûB' €@€Ȁ€‚ÿ3.2.1.2 Digit conversion Ð^ŽBËFr ²€œ€˜R‘€€ ‚‚ãþ‡ë€‰€ €€ €€ €€ €€ €€ €€ €€ €€ €€ ‚ÿNumbers shall be represented externally by using characters from the standard character set.Conversion between the internal and external forms of a digit shall behave as follows:The value in BASE is the radix for number conversion. A digit has a value ranging from zero to one less than the contents of BASE. The digit with the value zero corresponds to the character «0». This representation of digits proceeds through the character set to the decimal value nine corresponding to the character «9». For digits beginning with the decimal value ten the graphic characters beginning with the character «A» are used. This correspondence continues up to and including the digit with the decimal value thirty-five which is represented by the character «Z». The conversion of digits outside this range is implementation defined.T*ûBG* $€T€Ȁ€€‚ÿ3.2.1.3 Free-field number display ×ËF/I9 @€¯€˜R‘€€ ‚ãæûÝ〠‰€ ‚ÿFree-field number display uses the characters described in digit conversion, without leading zeros, in a field the exact size of the converted string plus a trailing space. If a number is zero, the least significant digit is not considered a leading zero. If the number is negative, a leading minus sign is displayed.Number display may use the pictured numeric output string buffer to hold partially converted strings (see 3.3.3.6 Other transient regions).CGrI1• ÿÿÿÿÿÿÿÿ rI¬I …3.2.2 Arithmetic:/I¬I% €*€˜˜€‚ÿ3.2.2 Arithmetici8rIJ1 2€p€Ȁ€‚€€€‚ÿ3.2.2 Arithmetic 3.2.2.1 Integer division *•¬I?M• ø€+€˜R‘€€ €€ €€ €€ €€ €€ €€ €€ €€ €€ €€ €€ €€ ‚€€ ‚€€ €€ €€ €€ ‚ÿDivision produces a quotient q and a remainder r by dividing operand a by operand b. Division operations return q, r, or both. The identity b*q + r = a shall hold for all a and b.When unsigned integers are divided and the remainder is not zero, q is the largest integer less than the true quotient.When signed integers are divided, the remainder is not zero, and a and b have the same sign, q is the largest integer less than the true quotient. If only one operand is negative, whether q is rounded toward negative infinity (floored division) or rounded towards zero (symmetric division) is implementation defined.ŒJM€F Z€y€˜R‘€€ €€ €€ €€ €€ ‚‚ÿFloored division is integer division in which the remainder carries the sign of the divisor or is zero, and the quotient is rounded to its arithmetic floor. Symmetric division is integer division in which the remainder carries the sign of the dividend or is zero and the quotient is the mathematical quotient «rounded towards zero» or «truncated». Examples of each are shown in tables 3.3 and 3.4.In cases where the operands differ in sign and the rounding direction matters, a program shall either include code generating the desired form of division, not relying on the implementation-defined default result, or have?MM€/I an environmental dependency on the desired rounding direction.U*?M¢€+ &€T€˜˜€€€‚ÿTable 3.3 – Floored Division Example `-M€3 6€Z€:°RÈȀ€€€€‚ÿTable 3.3 – Floored Division Example a'¢€c: D€N€8RÈÈ ˆ£€iA‚ƒ€ƒƒƒƒ‚ÿDividendDivisorRemainderQuotientv2فD X€d€8RÈÈHˆŽiA€!ƒƒƒƒ‚ƒƒƒƒ‚ƒƒƒƒ‚ƒƒƒƒ‚ÿ10731-1074-210-7-4-2-10-7-311c ‚. ,€€8RÈȈŽiA€!‚ÿ^+فh‚3 6€V€ ˜˜ˆŽiA€€€‚ÿTable 3.4 – Symmetric Division Example`+ ‚Ȃ5 :€V€: °RÈȈŽiA€€€‚ÿTable 3.4 – Symmetric Division Examplea'h‚)ƒ: D€N€8RÈÈ ˆ£€iA‚ƒ€ƒƒƒƒ‚ÿDividendDivisorRemainderQuotientv2ȂŸƒD X€d€8RÈÈHˆŽiA€!ƒƒƒƒ‚ƒƒƒƒ‚ƒƒƒƒ‚ƒƒƒƒ‚ÿ10731-107-3-110-73-1-10-7-311)ƒЃ. ,€€8RÈȈŽiA€!‚ÿ[)Ÿƒ+„2 4€R€ȈŽiA€€€‚ÿ3.2.2.2 Other integer operations à¯Ðƒ …1 0€_€˜R‘€ˆŽiA€ ‚ÿIn all integer arithmetic operations, both overflow and underflow shall be ignored. The value returned when either overflow or underflow occurs is implementation defined.?+„J…1Á ÿÿÿÿÿÿÿÿJ…€…3.2.3 Stacks6 …€…% €"€˜˜€‚ÿ3.2.3 Stacksc/J…ã…4 8€^€Ȁ€€‚€€€‚ÿ3.2.3 Stacks 3.2.3.1 Data stack [4€…>†' €h€˜R‘€€ ‚ÿObjects on the data stack shall be one cell wide.M#ã…‹†* $€F€Ȁ€€‚ÿ3.2.3.2 Control-flow stack 9 >†ĉ0 .€€˜R‘€€ ‚‚‚ÿThe control-flow stack is a last-in, first out list whose elements define the permissible matchings of control-flow words and the restrictions imposed on data-stack usage during the compilation of control structures.The elements of the control-flow stack are system-compilation data types.The control-flow stack may, but need not, physically exist in an implementation. If it does exist, it may be, but need not be, implemented using the data stack. The format of the control-flow stack is implementation defined. Since the control-flow stack may be implemented using the data stack, items placed on the data stack are unavailable to a program after items are placed on the control-flow stack and remain unavailable until the control-flow stack items are removed.G‹† Š* $€:€Ȁ€€‚ÿ3.2.3.3 Return stack Žˆĉ¿‹, &€€˜R‘€€ ‚‚ÿItems on the return stack shall consist of one or more cells. A system may use the return stack in an implementation-dependent manner during the compilation of definitions, during the execution of do-loops, and for storing run-time nesting information.A program may use the return stack for temporary storage during the execution of a definition subject to the following restrictions:€® Š?ŽÒ r]€\ˆRـ:‚H€€ ƒã¯CMw€‰€ ã®CMw€‰€ ãU¬J¿€‰€ ãT¬J¿€‰€ ã­CMw€‰€ ãÛ-’À‰€ ‚€€ ƒ‚€€ ƒãºp(€‰€ ãÕå31€‰€ ãN=ºB€‰€ ãK=ºB€‰€ ãáƖ‘€‰€ ãL=ºB€‰€ ‚ÿ–A program shall not access values on the return stack (using R@, R>, 2R@ or 2R>) that it did not place there using >R or 2>R;–A program shall not access from within a do-loop values placed on the return stack before the loop was entered;–All values placed on the return stack within a do-loop shall be removed before I, J, LOOP, +LOOP, UNLOOP, or LEAVE is executed;ѕ¿‹< F€+€\˜Rـ:‚H€€ ƒã2 d€‰€ ‚ÿ–All values placed on the return stack within a definition shall be removed before the definition is terminated or before EXIT is executed.J?ŽZ1‹ÿÿÿÿÿÿÿÿZ›Â3.2.4 Operator terminalA›% €8€˜˜€‚ÿ3.2.4 Operator terminalFZá' €>€Ȁ€‚ÿ3.2.4 Operator terminal G›4À- *€4€˜á4ÀR‘€€ € € ‚ÿSee 1.2.2 Exclusions.H!á|À' €B€Ȁ€‚ÿ3.2.4.1 User input device É 4ÀEÁ) €A€˜R‘€€ ‚‚ÿThe method of selecting the user input device is implementation defined.The method of indicating the end of an input line of text is implementation defined.I"|ÀŽÁ' €D€Ȁ€‚ÿ3.2.4.2 User output device sLEÁÂ' €˜€˜R‘€€ ‚ÿThe method of selecting the user output device is implementation defined.EŽÁFÂ1[ÿÿÿÿÿÿÿÿF‚¬Ã3.2.5 Mass storage<‚Â% €.€˜˜€‚ÿ3.2.5 Mass storageEFÂÇÂ* $€6€Ȁ€€‚ÿ3.2.5 Mass storage 匂¬Ã) €y€˜R‘€€ ‚ÿA system need not provide any standard words for accessing mass storage. If a system provides any standard word for accessing mass storage, it shall also implement the Block word set.NÇÂúÃ1ä ÿÿÿÿÿÿÿÿúÃ?ÄòÎ3.2.6 Environmental queriesE ¬Ã?Ä% €@€˜˜€‚ÿ3.2.6 Environmental queriesJ#úÉÄ' €F€Ȁ€‚ÿ3.2.6 Environmental queries —N?Ä ÆI `€€˜R‘€€ ã0 d€‰€ €€ €€ €€ ‚ÿThe name spaces for ENVIRONMENT? and definitions are disjoint. Names of definitions that are the same as ENVIRONMENT? strings shall not impair the operation of ENVIRONMENT?. Table 3.5 contains the valid input strings and corresponding returned value for inquiring about the programming environment with ENVIRONMENT?.X-‰ÄxÆ+ &€Z€˜˜€€€‚ÿTable 3.5 – Environmental Query Strings c0 ÆÛÆ3 6€`€:°RÈȀ€€€€‚ÿTable 3.5 – Environmental Query Strings e+xÆ@Ç: D€V€zŒR©ƒÝ€3}B†Ñ‚=ƒ©€ƒƒƒ‚ÿStringValue data typeConstant?Meaning‹ÛÆYÉŽ ꀀxR©ƒÝ€3}J†Ñ‚=ƒ©€€ ƒ€€ ƒƒ‚€ƒ€€ ƒƒ‚€ƒ€€ ƒƒã8ìÆe€‰€ ‚€ƒ€€ ƒƒ‚€ƒ€€ ƒƒ€ € ‚ÿ/COUNTED-STRINGnyesmaximum size of a counted string, in characters/HOLDnyessize of the pictured numeric output string buffer, in characters/PADnyessize of the scratch area pointed to by PAD, in charactersADDRESS-UNIT-BITSnyessize of one address unit, in bitsCOREflagnotrue if complete core word set present (i.e., not a subset as defined in 5.1.1)7£@ǐ˔ ö€G€xR©ƒÝ€3}J†Ñ‚=ƒ©€ƒ€€ ƒƒ‚€ƒ€€ ƒƒ‚€ƒ€€ ƒƒ‚€ƒ€€ ƒƒ‚€ƒ€€ ƒƒ‚€ƒ€€ ƒƒ‚€ƒ€€ ƒƒ‚ÿCORE-EXTflagnotrue if core extensions word set presentFLOOREDflagyestrue if floored division is the defaultMAX-CHARuyesmaximum value of any character in the implementation-defined character setMAX-Ddyeslargest usable signed double numberMAX-Nnyeslargest usable signed integerMAX-Uuyeslargest usable unsigned integerMAX-UDudyeslargest usable unsigned double numberߊYÉoÌU x€€xR©ƒÝ€3}J†Ñ‚=ƒ©€€ ƒ€€ ƒƒ‚€€#ƒ€€ ƒƒ‚ÿRETURN-STACK-CELLSnyesmaximum size of the return stack, in cellsSTACK-CELLSnyesmaximum size of the data stack, in cells2Ë¡Ì/ .€€8RÈȆт=ƒ©€!‚ÿQìoÌòÎe ˜€Ù€˜R‘€†Ñ‚=ƒ©€ ã0 d€‰€ €€ €€ €€ €€ €€ €€ ‚ÿIf an environmental query (using ENVIRONMENT?) returns false (i.e., unknown) in response to a string, subsequent queries using the same string may return true. If a query returns true (i.e., known) in response to a string, subsequent queries with the same string shall also return true. If a query designated as constant in the above table returns true and a value in response to a string, subsequent queries with the same string shall return true and the same value.K¡Ì=Ï1ìÿÿÿÿÿÿÿÿ=ÏËÏç3.3 The Forth dictionaryBòÎÏ% €:€˜˜€‚ÿ3.3 The Forth dictionaryL!=ÏËÏ+ &€B€°˜€€€‚ÿ3.3 The Forth dictionary ãÏç- (€Ç€˜R‘€€ ‚‚ÿForth wËÏçòÎords are organized into a structure called the dictionary. While the form of this structure is not specified by the Standard, it can be described as consisting of three logical parts: a name space, a code space, and a data space. The logical separation of these parts does not require their physical separation.A program shall not fetch from or store into locations outside data space. An ambiguous condition exists if a program addresses name space or code space.CËÏ*1ÿÿÿÿÿÿÿÿ*dA3.3.1 Name space:çd% €*€˜˜€‚ÿ3.3.1 Name space?*£' €0€Ȁ€‚ÿ3.3.1 Name space yRd' €€€˜R‘€€ ‚ÿThe relationship between name space and data space is implementation dependent.E£a* $€6€Ȁ€€‚ÿ3.3.1.1 Word lists ä»E) €w€˜R‘€€ ‚ÿThe structure of a word list is implementation dependent. When duplicate names exist in a word list, the latest-defined duplicate shall be the one found during a search for the name.K!a* $€B€Ȁ€€‚ÿ3.3.1.2 Definition names ±…EA, &€ €˜R‘€€ ‚‚‚ÿDefinition names shall contain {1..31} characters. A system may allow or prohibit the creation of definition names containing non-standard characters.Programs that use lower case for standard definition names or depend on the case-sensitivity properties of a system have an environmental dependency. A program shall not create definition names containing non-graphic characters. C„1íÿÿÿÿÿÿÿÿ„Ÿz3.3.2 Code space:AŸ% €*€˜˜€‚ÿ3.3.2 Code spaceC„* $€2€Ȁ€€‚ÿ3.3.2 Code space yRŸz' €€€˜R‘€€ ‚ÿThe relationship between code space and data space is implementation dependent.Cœ1D$ÿÿÿÿÿÿÿÿœ÷$‹3.3.3 Data space:z÷% €*€˜˜€‚ÿ3.3.3 Data spaceCœ:* $€2€Ȁ€€‚ÿ3.3.3 Data space Žˆ÷î , &€€˜R‘€€ ‚ÿData space is the only logical area of the dictionary for which standard words are provided to allocate and access regions of memory. These regions are: contiguous regions, variables, text-literal regions, input buffers, and other transient regions, each of which is described in the following sections. A program may read from or write into these regions unless otherwise specified.L":: * $€D€Ȁ€€‚ÿ3.3.3.1 Address alignment mî Cœ Û€˜R‘€€ €€ €€ ãG\W € 㟳Ý󀉀 €€ €€ €€ €€ €€ €€ €€ €€ €€ €€ €€ €€ ‚ÿMost addresses used in ANS Forth are aligned addresses (indicated by a-addr) or character-aligned (indicated by c-addr). ALIGNED, CHAR+, and arithmetic operations can alter the alignment state of an address on the stack. CHAR+ applied to an aligned address returns a character-aligned address that can only be used to access characters. Applying CHAR+ to a character-aligned address produces the succeeding character-aligned address. Adding or subtracting an arbitrary number to an address can produce an unaligned address that shall not be used to fetch or store anything. The only way to find the next aligned address is with ALIGNED. An ambiguous condition exists when @, !, , (comma), +!, 2@, or 2! is used with an address that is not aligned, or when C@, C!, or C, is used with an address that is not character-aligned.`: £[ „€ €˜R‘€€ € € ã6²Ý󀉀 € € ã™òYš€‰€ ‚ãF\W € ‚ÿThe definitions of 6.1.1000 CREATE and 6.1.2410 VARIABLE require that the definitions created by them return aligned addresses.After definitions are compiled or the word ALIGN is executed the data-space pointer is guaranteed to be aligned.M#C @* $€F€Ȁ€€‚ÿ3.3.3.2 Contiguous regions £ @z`é£lCw Œ€Ó€˜R‘€€ ãH\W € ãÔ«J¿€‰€ ã¹³Ý󀉀 ãF\W € ã_Ž­€‰€ ãH\W € ‚ÿA system guarantees that a region of data space allocated using ALLOT, , (comma), C, (c-comma), and ALIGN shall be contiguous with the last region allocated with one of the above words, unless the restrictions in the following paragraphs apply. The data-space pointer HERE always identifies the beginning of the next data-space region to be allocated. As successive allocations are made, the data-space pointer increases. A program may perform address arithmetic within contiguously allocated regions. The last region of data space allocated using the above operators may be released by allocating a corresponding negatively-sized region using ALLOT, subject to the restrictions of the following paragraphs.2ö @žE< F€í€˜R‘€ã6²Ý󀉀 €€ ‚‚ÿCREATE establishes the beginning of a contiguous region of data space, whose starting address is returned by the CREATEd definition. This region is terminated by compiling the next definition.Since an implementation is free to allocate data space for use by code, the above operators need not produce contiguous regions of data space if definitions are added to or removed from the dictionary between allocations. An ambiguous condition exists if deallocated memory contains definitions.DlCâE* $€4€Ȁ€€‚ÿ3.3.3.3 Variables ՔžE·FA P€)€˜R‘€€ ãÜ«J¿€‰€ ãH\W € ‚ÿThe region allocated for a variable may be non-contiguous with regions subsequently allocated with , (comma) or ALLOT. For example, in:CâEúF' €8€ŒRـ€‚ÿVARIABLE X 1 CELLS ALLOTܛ·FÖGA P€7€˜R‘€€ €€ €€ ‚ãno€€‰€ ‚ÿthe region X and the region ALLOTted could be non-contiguous.Some system-provided variables, such as STATE, are restricted to read-only access.O%úF%H* $€J€Ȁ€€‚ÿ3.3.3.4 Text-literal regions §XÖGÌIO l€±€˜R‘€€ ãio€€‰€ ã8²Ý󀉀 ‚€€ €€ ‚ÿThe text-literal regions, specified by strings compiled with S" and C", may be read-only. A program shall not store into the text-literal regions created by S" and C" nor into any read-only system variable or read-only transient regions. An ambiguous condition exists when a program attempts to store into read-only regions.D%HJ' €:€Ȁ€‚ÿ3.3.3.5 Input buffers )ÙÌI9LP n€³€˜R‘€€ ãòŠn€‰€ ã1 d€‰€ ãko€€‰€ ‚ÿThe address, length, and content of the input buffer may be transient. A program shall not write into the input buffer. In the absence of any optional word sets providing alternative input sources, the input buffer is either the terminal-input buffer, used by QUIT to hold one line from the user input device, or a buffer specified by EVALUATE. In all cases, SOURCE returns the beginning address and length in characters of the current input buffer. `J™OZ ‚€ €˜R‘€€ ‚€€ ã9ìÆe€‰€ ‚€€ €€ € € € € ‚ÿThe minimum size of the terminal-input buffer shall be 80 characters.The address and length returned by SOURCE, the string returned by PARSE, and directly computed input-buffer addresses are valid only until the text interpreter does I/O to refill the input buffer or the input source is changed. A program may modify the size of the parse area by changing the contents of >IN within the limits imposed by this Standard. For example, if the contents of >IN are saved before a parsing operation and restored afterwards, the text that was parsed will be available again for subsequent parsing operations. The extent of permissible repositioning using this method depends on the input source (see 7.3.3 Block buffer regions and 11.3.4 Input source).~G9L#7 <€€˜R‘€€ €€ €€ ‚ÿA program may directly examine the input buffer™O#z using its address and length as returned by SOURCE; the beginning of the parse area within the input buffer is indexed by the number in >IN. The values are valid for a limited time. An ambiguous condition exists if a program modifies the contents of the input buffer.R(™Ou* $€P€Ȁ€€‚ÿ3.3.3.6 Other transient regions Œ#~‚M h€y€˜R‘€€ ã8ìÆe€‰€ ãU£€‰€ ãX­J¿€‰€ ‚ÿThe data space regions identified by PAD, WORD, and #> (the pictured numeric output string buffer) may be transient. Their addresses and contents may become invalid after:žju6ƒN l€Ô€\ˆRـ:‚H€€ ƒ‚€€ ƒã¬J¿€‰€ ãÔ@T€‰€ ‚ÿ–a definition is created via a defining word;–definitions are compiled with : or :NONAME;»]~‚ñƒ^ Œ€º€\˜Rـ:‚H€€ ƒãH\W € ãÜ«J¿€‰€ ã¹³Ý󀉀 ãF\W € ‚ÿ–data space is allocated using ALLOT, , (comma), C, (c-comma), or ALIGN./{6ƒ ‡Ž 6÷€˜R‘€‚H€ €€ €€ €€ €€ ã2¬J¿€‰€ ãW­J¿€‰€ ãho€€‰€ ã`Ž­€‰€ ãÔ«J¿€‰€ ã0¬J¿€‰€ €€ €€ €€ €€ €€ €€ ‚ÿThe previous contents of the regions identified by WORD and #> may be invalid after each use of these words. Further, the regions returned by WORD and #> may overlap in memory. Consequently, use of one of these words can corrupt a region returned earlier by a different word. The other words that construct pictured numeric output strings (<#, #, #S, and HOLD) may also modify the contents of these regions. Words that display numbers may be implemented using pictured numeric output words. Consequently, . (dot), .R, .S, ?, D., D.R, U., and U.R could also corrupt the regions.Køñƒk‰S t€ñ€˜R‘€‚H€ ã8ìÆe€‰€ €€ € € €€ €€ ‚ÿThe size of the scratch area whose address is returned by PAD shall be at least 84 characters. The contents of the region addressed by PAD are intended to be under the complete control of the user: no words defined in this Standard place anything in the region, although changing data-space allocations as described in 3.3.3.2 Contiguous regions may change the address returned by PAD. Non-standard words provided by an implementation may use PAD, but such use shall be documented.†Q ‡ñ‰5 :€¢€˜R‘€‚H€ ãU£€‰€ ‚ÿThe size of the region identified by WORD shall be at least 33 characters.3ûk‰$‹8 >€÷€˜R‘€‚H€ €€ €€ ‚ÿThe size of the pictured numeric output string buffer shall be at least (2*n) + 2 characters, where n is the number of bits in a cell. Programs that consider it a fixed area with unchanging access parameters have an environmental dependency.Q ñ‰u‹1»ÿÿÿÿÿÿÿÿu‹ŒÃ3.4 The Forth text interpreterH#$‹œ‹% €F€˜˜€‚ÿ3.4 The Forth text interpreterR'u‹Œ+ &€N€°˜€€€‚ÿ3.4 The Forth text interpreter œDœ‹̎y À€‰€˜R‘€€ € € ãòŠn€‰€ ‚€€ €€ €€ €€ ‚€ € ã1 d€‰€ € ãòŠn€‰€ ‚ÿUpon start-up, a system shall be able to interpret, as described by 6.1.2050 QUIT, Forth source code received interactively from a user input device.Such interactive systems usually furnish a «prompt» indicating that they have accepted a user request and acted on it. The implementation-defined Forth prompt should contain the word «OK» in some combination of upper or lower case.Text interpretation (see 6.1.1360 EVALUATE and 6.1.2050 QUIT) shall repeat the following steps until either the parse area is empty or an ambiguous condition exists:䣌°A P€G€\ˆRـ:‚H€ ƒ€€ € € ‚ƒ€ € ‚ÿa)Skip leading spaces and parse a name (see 3.4.1);b)Search the dictionary name space (see 3.4.2). If a definition name matching the string is found:Þ̎ÖÀ< F€œ€\ˆR!:‚H€ ƒ€ € ‚ƒ€ € ‚ÿ1)if interpreting,°ÖÀ$‹ perform the interpretation semantics of the definition (see 3.4.3.2), and continue at a);2)if compiling, perform the compilation semantics of the definition (see 3.4.3.3), and continue at a).»ˆ°‘Á3 4€€\ˆRـ:‚H€ ƒ€ € ‚ÿc)If a definition name matching the string is not found, attempt to convert the string to a number (see 3.4.1.3). If successful:ÕÖÀ§ÂA P€«€\ˆR!:‚H€ ƒ‚ƒ€ € ãM=ºB€‰€ ‚ÿ1)if interpreting, place the number on the data stack, and continue at a);2)if compiling, compile code that when executed will place the number on the stack (see 6.1.1780 LITERAL), and continue at a);tC‘ÁÃ1 2€†€\˜Rـ:‚H€ ƒ€ € ‚ÿd)If unsuccessful, an ambiguous condition exists (see 3.4.4).@§Â[Ã1a ÿÿÿÿÿÿÿÿ[ÒÍ3.4.1 Parsing7Ã’Ã% €$€˜˜€‚ÿ3.4.1 Parsing<[ÃÎÃ' €*€Ȁ€‚ÿ3.4.1 Parsing w7’ÃEÆ@ N€o€˜R‘€€ ‚€€ €€ €€ ‚ÿUnless otherwise noted, the number of characters parsed may be from zero to the implementation-defined maximum length of a counted string.If the parse area is empty, i.e., when the number in >IN is equal to the length of the input buffer, or contains no characters other than delimiters, the selected string is empty. Otherwise, the selected string begins with the next character in the parse area, which is the character indexed by the contents of >IN. An ambiguous condition exists if the number in >IN is greater than the size of the input buffer.VÎÛÈ9 @€;€˜R‘€€ €€ €€ ‚ÿIf delimiter characters are present in the parse area after the beginning of the selected string, the string continues up to and including the character just before the first such delimiter, and the number in >IN is changed to index immediately past that delimiter, thus removing the parsed characters and the delimiter from the parse area. Otherwise, the string continues up to and including the last character in the parse area, and the number in >IN is changed to the length of the input buffer, thus emptying the parse area.WEÆòÉ< F€7€˜R‘€€ €€ €€ €€ ‚ÿParsing may change the contents of >IN, but shall not affect the contents of the input buffer. Specifically, if the value in >IN is saved before starting the parse, resetting >IN to that value immediately after the parse shall restore the parse area without loss of data.A›È3Ê' €4€Ȁ€‚ÿ3.4.1.1 Delimiters žZòÉÑËD V€µ€˜R‘€€ ãˆë€‰€ €€ €€ ‚‚ÿIf the delimiter is the space character, hex 20 (BL), control characters may be treated as delimiters. The set of conditions, if any, under which a «space» delimiter matches control characters is implementation defined.To skip leading delimiters is to pass by zero or more contiguous delimiters in the parse area before parsing. =3ÊÌ' €,€Ȁ€‚ÿ3.4.1.2 Syntax TÑËbÎL f€€˜R‘€€ €€ €€ €€ €€ € € ‚‚ÿForth has a simple, operator-ordered syntax. The phrase A B C returns values as if A were executed first, then B and finally C. Words that cause deviations from this linear flow of control are called control-flow words. Combinations of control-flow words whose stack effects are compatible form control-flow structures. Examples of typical use are given for each control-flow word in Annex A.Forth syntax is extensible; for example, new control-flow words can be defined in terms of existing ones.oHÌÑÎ' €€˜R‘€€ ‚ÿThis Standard does not require a syntax or program-construct checker._8bÎ0Ï' €p€Ȁ€‚ÿ3.4.1.3 Text interpreter input number conversion QÑ΍B R€€˜R‘€€ €€ €€ ãþ‡ë€‰€ ‚ÿWhen converting input numbers, the text interpreter shall recognize both positive and negative numbers, with a negative number represented b0ύÃy a single minus sign, the character «-», preceding the digits. The value in BASE is the radix for number conversion.Q 0ÏÞ1äÿÿÿÿÿÿÿÿÞ&Ù3.4.2 Finding definition namesH#&% €F€˜˜€‚ÿ3.4.2 Finding definition namesM&Þs' €L€Ȁ€‚ÿ3.4.2 Finding definition names ß&~, &€¿€˜R‘€€ ‚ÿA string matches a definition name if each character in the string matches the corresponding character in the string used as the definition name when the definition was created. The case sensitivity (whether or not the upper-case letters match the lower-case letters) is implementation defined. A system may be either case sensitive, treating upper- and lower-case letters as different and not matching, or case insensitive, ignoring differences in case while searching.[0sÙ+ $€a€˜R‘€€ ‚‚ÿThe matching of upper- and lower-case letters with alphabetic characters in character set extensions such as accented international characters is implementation defined.A system shall be capable of finding the definition names defined by this Standard when they are spelled with upper-case letters.B~1œ ÿÿÿÿÿÿÿÿT¿3.4.3 Semantics9ÙT% €(€˜˜€‚ÿ3.4.3 SemanticsB–* $€0€Ȁ€€‚ÿ3.4.3 Semantics °dTFL f€É€˜R‘€€ €€ ‚€€ €€ €€ €€ ‚ÿThe semantics of a Forth definition are implemented by machine code or a sequence of execution tokens or other representations. They are largely specified by the stack notation in the glossary entries, which shows what values shall be consumed and produced. The prose in each glossary entry further specifies the definition’s behavior.Each Forth definition may have several behaviors, described in the following sections. The terms «initiation semantics» and «run-time semantics» refer to definition fragments, and have meaning only within the individual glossary entries where they appear.N$–”* $€H€Ȁ€€‚ÿ3.4.3.1 Execution semantics ?FÓ ? L€€˜R‘€€ €€!€€ ‚€€ ‚ÿThe execution semantics of each Forth definition are specified in an «Execution:» section of its glossary entry. When a definition has only one specified behavior, the label is omitted.Execution may occur implicitly, when the definition into which it has been compiled is executed, or explicitly, when its execution token is passed to EXECUTE. The execution semantics of a syntactically correct definition under conditions other than those specified in this Standard are implementation dependent.»ƒ”Ž 8 >€€˜R‘€€ €€€!€€ ‚ÿGlossary entries for defining words include the execution semantics for the new definition in a «name Execution:» section.S)Ó á * $€R€Ȁ€€‚ÿ3.4.3.2 Interpretation semantics q1Ž R@ N€c€˜R‘€€ €€!€€ ‚‚€ € ‚ÿUnless otherwise specified in an «Interpretation:» section of the glossary entry, the interpretation semantics of a Forth definition are its execution semantics.A system shall be capable of executing, in interpretation state, all of the definitions from the Core word set and any definitions included from the optional word sets or word set extensions whose interpretation semantics are defined by this Standard.A system shall be capable of executing, in interpretation state, any new definitions created in accordance with 3. Usage requirements.P&á ¢* $€L€Ȁ€€‚ÿ3.4.3.3 Compilation semantics çR¿6 :€Ï€˜R‘€€ €€!€€ ‚ÿUnless otherwise specified in a «Compilation:» section of the glossary entry, the compilation semantics of a Forth definition shall be to append its execution semantics to the execution semantics of the current definition.c2¢.@1 ÿÿÿÿÿÿÿÿ.@ˆ@`C3.4.4 Possible¿.@¿ actions on an ambiguous conditionZ5¿ˆ@% €j€˜˜€‚ÿ3.4.4 Possible actions on an ambiguous conditionc9.@ë@* $€r€Ȁ€€‚ÿ3.4.4 Possible actions on an ambiguous condition …^ˆ@pA' €Œ€˜R‘€€ ‚ÿWhen an ambiguous condition exists, a system may take one or more of the following actions: »ë@zBO l€w€\ˆRـ:‚H€€ ƒ‚€€ ƒ‚€€ ƒ‚€€ ƒ‚€€ ƒ‚ÿ–ignore and continue;–display a message;–execute a particular word;–set interpretation state and begin text interpretation;–take other implementation-defined actions;Z,pAÔB. ,€X€\˜Rـ:‚H€€ ƒ‚ÿ–take implementation-dependent actions.ŒczB`C) "€Æ€˜R‘€‚H€ ‚ÿThe response to a particular ambiguous condition need not be the same under all circumstances. DÔB€C1ÿÿÿÿÿÿÿÿ€CßCÀF3.4.5 Compilation;`CßC% €,€˜˜€‚ÿ3.4.5 Compilation@€CD' €2€Ȁ€‚ÿ3.4.5 Compilation {ßCšF] ˆ€=€˜R‘€€ ‚ãÔ@T€‰€ ã,¬J¿€‰€ ã.¬J¿€‰€ ãÔ@T€‰€ ‚ÿA program shall not attempt to nest compilation of definitions.During the compilation of the current definition, a program shall not execute any defining word, :NONAME, or any definition that allocates dictionary data space. The compilation of the current definition may be suspended using [ (left-bracket) and resumed using ] (right-bracket). While the compilation of the current definition is suspended, a program shall not execute any defining word, :NONAME, or any definition that allocates dictionary data space.&DÀF# €€€‚ÿ1šFñF1ŒÿÿÿÿÿÿÿÿñFÿÿÿÿLG[7ÀFLG$ €n€˜˜€ÿyesyesyesyesANS94 chapter 6 CORE31Chap6yesyes20/07/01BñFŽG1ÈÿÿÿÿÿÿÿÿŽGËGZÂTable of Contents=LGËG( €*€˜˜€€‚ÿTable of Contents&ŽGñG# €€€‚ÿ®ËGŸH’#ô€8 Š § Š Š "€€ãV­J¿€$‰‚ÿ€ €ãW­J¿‰‚ÿ€€ãX­J¿‰‚ÿ€"€ãho€‰‚ÿ€.€ãY­J¿‰‚ÿÿÿ!##>#S'±ñGPI’#ô€> Š § Š Š "€€ãZ­J¿€$‰‚ÿ€ €ã[­J¿‰‚ÿ€€ã\­J¿‰‚ÿ€"€ãi}K‰‚ÿ€4€ã]­J¿‰‚ÿÿÿ(**/*/MOD+±ŸHJ’#ô€> Š § Š Š "€€ã^­J¿€$‰‚ÿ€€ãK=ºB‰‚ÿ€ €ãÜ«J¿‰‚ÿ€*€ãÓ«J¿‰‚ÿ€4€ãÔ«J¿‰‚ÿÿÿ+!+LOOP,-.² PI³J’#ô€@ Š § Š Š "€€ãÕ«J¿€$‰‚ÿ€€ãÖ«J¿‰‚ÿ€€ãi}K‰‚ÿ€(€ã׫J¿‰‚ÿ€4€ãØ«J¿‰‚ÿÿÿ."//MOD0<0=±JdK’#ô€> Š § Š Š "€€ãÙ«J¿€$‰‚ÿ€€ãÚ«J¿‰‚ÿ€€ãÛ«J¿‰‚ÿ€&€ã¬J¿‰‚ÿ€2€ãþ«J¿‰‚ÿÿÿ1+1-2!2*2/Œ*³J L’#ô€T Š § Š Š "€€ãÿ«J¿€$‰‚ÿ€€ã¬J¿‰‚ÿ€ €ã¬J¿‰‚ÿ€0€ã¬J¿‰‚ÿ€B€ã¬J¿‰‚ÿÿÿ2@2DROP2DUP2OVER2SWAP­dKÍL’#ô€6 Š § Š Š "€€ã¬J¿€$‰‚ÿ€ €ã¬J¿‰‚ÿ€€ã¬J¿‰‚ÿ€ €ã2¬J¿‰‚ÿ€,€ã)¬J¿‰‚ÿÿÿ:;<<#=¹' L†M’#ô€N Š § Š Š "€€ã*¬J¿€$‰‚ÿ€ €ãý‡뉂ÿ€€ãºp(‰‚ÿ€,€ãÁ”@T‰‚ÿ€B€ã­CMw‰‚ÿÿÿ>>BODY>IN>NUMBER>Rº(ÍL@N’#ô€P Š § Š Š "€€ãsß ü€$‰‚ÿ€€ã+¬J¿‰‚ÿ€€ãB\W≂ÿ€.€ãC\W≂ÿ€B€ãD\W≂ÿÿÿ?DUP@ABORTABORT"ABSÁ/†MO’#ô€^ Š § Š Š "€€ãE\Wâ€$‰‚ÿ€€ãF\W≂ÿ€(€ãG\W≂ÿ€>€ãH\W≂ÿ€P€ãI\W≂ÿÿÿACCEPTALIGNALIGNEDALLOTAND¶$@N·O’#ô€H Š § Š Š "€€ãþ‡ë€$‰‚ÿ€€ãÿ‡뉂ÿ€$€ãˆ뉂ÿ€0€ãž³Ýó‰‚ÿ€<€ã¹³Ýó‰‚ÿÿÿBASEBEGINBLC!C,Œ*O€’#ô€T Š § Š Š "€€ãº³Ýó€$‰‚ÿ€·O€LG€ã»³Ýó‰‚ÿ€ €ãŒ³Ýó‰‚ÿ€2€ãœ³Ýó‰‚ÿ€B€ãŸ³Ýó‰‚ÿÿÿC@CELL+CELLSCHARCHAR+Á/·O@’#ô€^ Š § Š Š "€€ã¿³Ýó€$‰‚ÿ€€ãÀ³Ýó‰‚ÿ€,€ã>²Ýó‰‚ÿ€>€ã5²Ýó‰‚ÿ€J€ã6²Ýó‰‚ÿÿÿCHARSCONSTANTCOUNTCRCREATEŸ,€þ’#ô€X Š § Š Š "€€ãtß ü€$‰‚ÿ€€ãuß ü‰‚ÿ€*€ãvß ü‰‚ÿ€6€ãwß ü‰‚ÿ€H€ãxß ü‰‚ÿÿÿDECIMALDEPTHDODOES>DROPÆ4@Ă’#ô€h Š § Š Š "€€ãyß ü€$‰‚ÿ€€ã. d‰‚ÿ€ €ã/ d‰‚ÿ€0€ã0 d‰‚ÿ€P€ã1 d‰‚ÿÿÿDUPELSEEMITENVIRONMENT?EVALUATEœ+þƒ’#ô€V Š § Š Š "€€ã2 d€$‰‚ÿ€€ãé6'‰‚ÿ€"€ãê6'‰‚ÿ€2€ãùái‰‚ÿ€F€ã_Ž­‰‚ÿÿÿEXITFILLFINDFM/MODHEREœ+Ă>„’#ô€V Š § Š Š "€€ã`Ž­€$‰‚ÿ€€ãºp(‰‚ÿ€€ãºp(‰‚ÿ€(€ãºp(‰‚ÿ€B€ãºp(‰‚ÿÿÿHOLDIIFIMMEDIATEINVERT»)ƒù„’#ô€R Š § Š Š "€€ãÕå31€$‰‚ÿ€ €ã÷9‰‚ÿ€€ãL=ºB‰‚ÿ€,€ãM=ºB‰‚ÿ€B€ãN=ºB‰‚ÿÿÿJKEYLEAVELITERALLOOPž&>„±…’#ô€L Š § Š Š "€€ãO=ºB€$‰‚ÿ€€ãi}K‰‚ÿ€"€ã i}K‰‚ÿ€0€ã i}K‰‚ÿ€>€ã i}K‰‚ÿÿÿLSHIFTM*MAXMINMOD¿-ù„p†’#ô€Z Š § Š Š "€€ã i}K€$‰‚ÿ€€ã”@T‰‚ÿ€&€ã|À]‰‚ÿ€2€ã}À]‰‚ÿ€B€ã7ìÆe‰‚ÿÿÿMOVENEGATEOROVERPOSTPONEŒ*±…,‡’#ô€T Š § Š Š "€€ãòŠn€$‰‚ÿ€€ã®CMw‰‚ÿ€€ã¯CMw‰‚ÿ€*€ã°CMw‰‚ÿ€@€ã±CMw‰‚ÿÿÿQUITR>R@RECURSEREPEAT¹'p†å‡’#ô€N Š § Š Š "€€ã²CMw€$‰‚ÿ€€ã³CMw‰‚ÿ€$€ãio€‰‚ÿ€0€ã?š}‰‚ÿ€>€ãjo€‰‚ÿÿÿROTRSHIFTS"S>DSIGNÃ1,‡šˆ’#ô€b Š § Š Š "€€ãíïW„€$‰‚ÿ€€ãko€‰‚ÿ€*€ãlo€‰‚ÿ€<€ãmo€‰‚ÿ€P€ãno€‰‚ÿÿÿSM/REMSOURCESPACESPACESSTATE·%å‡_‰’#ô€J Š § Š Š "€€ãoo€€$‰‚ÿ€€ã#›Óˆ‰‚ÿ€"€ã$›Óˆ‰‚ÿ€2€ãÞƖ‘‰‚ÿ€>€ãßƖ‘‰‚ÿÿÿSWAPTHENTYPEU.U<Ã1šˆ"Š’#ô€b Š § Š Š "€€ãàƖ‘€$‰‚ÿ€€ãîqٔ‰‚ÿ€$€ãáƖ‘‰‚ÿ€8€ãâƖ‘‰‚ÿ€J€ã™òYš‰‚ÿÿÿUM*UM/MODUNLOOPUNTILVARIABLE·%_‰ي’#ô€J Š § Š Š "€€ãT£€$‰‚ÿ€€ãU£‰‚ÿ€$€ãJૉ‚ÿ€2€ã,¬J¿‰‚ÿ€<€ã-¬J¿‰‚ÿÿÿWHILEWORDXOR[[']¶$"Š‹’#ô€H Š § Š Š "€€ã7²Ýó€$‰‚ÿ€€ã.¬J¿‰‚ÿ€ €ã%›Óˆ‰‚ÿ€0€ã/¬J¿‰‚ÿ€<€ã0¬J¿‰‚ÿÿÿ[CHAR]]#TIB.(.Rµ#يDŒ’#ô€F Š § Š Š "€€ã1¬J¿€$‰‚ÿ€€ã]¬J¿‰‚ÿ€€ãÛ-’É‚ÿ€*€ãT¬J¿‰‚ÿ€8€ãU¬J¿‰‚ÿÿÿ0<>0>2>R2R>2R@º(‹þŒ’#ô€P Š § Š Š "€€ãÔ@T€$‰‚ÿ€€ãV¬J¿‰‚ÿ€$€ãzß ü‰‚ÿ€2€ãJ\W≂ÿ€D€ã8²Ýó‰‚ÿÿÿ:NONAME<>?DOAGAINC"Æ4DŒč’#ô€h Š § Š Š "€€ã9²Ýó€$‰‚ÿ€€ã:²Ýó‰‚ÿ€*€ã;²Ýó‰‚ÿ€@€ã3 d‰‚ÿ€V€ã4 d‰‚ÿÿÿCASECOMPILE,CONVERTENDCASEENDOFÀ.þŒ„Ž’#ô€\ Š § Š Š "€€ã5 d€$‰‚ÿ€€ã6 d‰‚ÿ€(€ãë6'‰‚ÿ€:€ãaŽ­‰‚ÿ€H€ã i}K‰‚ÿÿÿERASEEXPECTFALSEHEXMARKERž&č<’#ô€L Š § Š Š "€€ãĔ@T€$‰‚ÿ€€ã~À]‰‚ÿ€€ã8ìÆe‰‚ÿ€*€ã9ìÆe‰‚ÿ€<€ã:ìÆe‰‚ÿÿÿNIPOFPADPARSEPICKÍ;„ŽÀ’#ô€v Š § Š Š "€€ãóŠn€$‰‚ÿ€€ãŽCMw‰‚ÿ€(€ãùC¿y‰‚ÿ€J€ãµCMw‰‚ÿ€Z€ãŽo‚‚‰‚ÿÿÿQUERYREFILLRESTORE-INPUTROLLSAVE<ÀLG-INPUTœ+<ÒÀ’#ô€V Š § Š Š "€€ãµo‚‚€$‰‚ÿ€€ãpo€‰‚ÿ€,€ã&›Óˆ‰‚ÿ€:€ã'›Óˆ‰‚ÿ€F€ã(›Óˆ‰‚ÿÿÿSOURCE-IDSPANTIBTOTRUE»)ÀÁ’#ô€R Š § Š Š "€€ã)›Óˆ€$‰‚ÿ€€ããƖ‘‰‚ÿ€ €ãäƖ‘‰‚ÿ€,€ãåƖ‘‰‚ÿ€@€ãšòYš‰‚ÿÿÿTUCKU.RU>UNUSEDVALUE§!ÒÀ4†#܀B Š § Š Š "€€ãV£€$‰‚ÿ€€ã<²Ýó‰‚ÿ€0€ãW¬J¿‰‚ÿ€:€‚ÿ€>€‚ÿÿÿWITHIN[COMPILE]\&ÁZÂ# €€€‚ÿ14‹Â1Wÿÿÿÿÿÿÿÿÿÿÿÿ‹Â±Â&Z±Â# €€€‚ÿ1‹ÂâÂ1lÿÿÿÿÿÿÿÿÿÿÿÿâÂÈV+±Â8Å+ $€W€€€ €‚‚ÿHelp file produced by HELLLP! v3.1b , a product of Guy Software, on 20/07/01 for Unregistered User.The above table of contents will be automatically completed and will also provide an excellent cross-reference for context strings and topic titles. You may leave it as your main table of contents for your help file, or you may create your own and cause it to be displayed instead by using the I button on the toolbar. This page will not be displayed as a topic. It is given a context string of _._ , but this is not presented for jump selection.òâÂRÇ( €å€€‚€‚ÿHINT: If you do not wish some of your topics to appear in the table of contents as displayed to your users (you may want them ONLY as PopUps), move the lines with their titles and contexts to below this point. If you do this remember to move the whole line, not part. As an alternative, you may wish to set up your own table of contents, see Help under The Structure of a Help File. Do not delete any codes in the area above the Table of Contents title, they are used internally by HELLLP!(8ÅzÇ$ €€€‚‚ÿ>RÇžÇ* $€(€°€ € € ‚ÿ6. Glossary >zÇöÇ( €,€°˜€€‚ÿ6.1 Core words 'žÇÈ$ €€R€ ‚ÿ2öÇOÈ1æÿÿÿÿÿÿÿÿ OÈxÈ-Ê!)ÈxÈ% €€˜˜€‚ÿ!c%OÈÛÈ> L€J€‘€‚H€€%€€ƒ€&€€&€ƒ‚ÿ6.1.0010 ! «store»CORETxÈ/É< H€0€Œ˜RQ‚H€ €€ €€ €€ ‚ÿ( x a-addr -- )OÛÈ~É6 <€2€Œ˜RQ‚H€ €€ €€ ‚ÿStore x at a-addr.„9/ÉÊK f€r€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € € € ã+¬J¿€ ‰€ ‚ÿSee:3.3.3.1 Address alignment, 6.1.0650 @+~É-Ê( €€R‚9€ ‚ÿ2Ê_Ê1ÿÿÿÿÿÿÿÿ!_ʈÊØÍ#)-ʈÊ% €€˜˜€‚ÿ#e*_ÊíÊ; F€T€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0030 # «number-sign»CORESˆÊ@Ë< H€.€Œ˜RQ‚H€ €€'€ €€'€ ‚ÿ( ud1 -- ud2 )ÒeíÊÍm š€Ë€Œ˜RQ‚H€ €€'€ €€ €€'€ €€ €€ €€'€ €€ €€ €€ ‚ÿDivide ud1 by the number in BASE giving the quotient ud2 and the remainder n. (n is the least-significant digit of ud1.) Convert n to external form and add the resulting character to the beginning of the pictured numeric output string. An ambiguous condition exists if # executes outside of a <# #> delimited number conversion.›>@Ë­Í] Š€|€^Œ˜RQ³~‚9€!ƒƒ€ ãX­J¿€‰€ € ãho€€‰€ € ã2¬J¿€‰€ ‚ÿSee:6.1.0040 #>, 6.1.0050 #S, 6.1.0490 <#.+ÍØÍ( €€R‚9€ ‚ÿ3­Í Î1ðÿÿÿÿÿÿÿÿ" Î5ÎÒ#>*ØÍ5Î% € €˜˜€‚ÿ#>n3 ΣÎ; F€f€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0040 #> «number-sign-greater»COREW5ÎúÎ< H€6€Œ˜RQ‚H€ €€ €€ €€ ‚ÿ( xd -- c-addr u )ȣΠ? L€‘€Œ˜RQ‚H€ €€ €€ €€ ‚ÿDrop xd. Make the pictured numeric output string available as a character string. c-addr and u specify the resulting character string. A program may replace characters within the string.úÎ ØÍš=úΧ] Š€z€^Œ˜RQ³~‚9€!ƒƒ€ ãW­J¿€‰€ € ãho€€‰€ € ã2¬J¿€‰€ ‚ÿSee:6.1.0030 #, 6.1.0050 #S, 6.1.0490 <#.+ Ò( €€R‚9€ ‚ÿ3§1åÿÿÿÿÿÿÿÿ#/ã#S*Ò/% € €˜˜€‚ÿ#Sh-—; F€Z€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0050 #S «number-sign-s»CORES/ê< H€.€Œ˜RQ‚H€ €€'€ €€'€ ‚ÿ( ud1 -- ud2 )4ã—Q p€Ç€Œ˜RQ‚H€ €€'€ €€ €€'€ €€ €€ ‚ÿConvert one digit of ud1 according to the rule for #. Continue conversion until the quotient is zero. ud2 is zero. An ambiguous condition exists if #S executes outside of a <# #> delimited number conversion.š=êž] Š€z€^Œ˜RQ³~‚9€!ƒƒ€ ãW­J¿€‰€ € ãX­J¿€‰€ € ã2¬J¿€‰€ ‚ÿSee:6.1.0030 #, 6.1.0040 #>, 6.1.0490 <#.+ã( €€R‚9€ ‚ÿ2ž1ÿÿÿÿÿÿÿÿ$>Œ')ã>% €€˜˜€‚ÿ'^#œ; F€F€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0070 ' «tick»CORE]!>ù< H€B€Œ˜RQ‚H€ €€€€ €€ ‚ÿ( «name» -- xt )ŒœK d€y€Œ˜RQ‚H€ €€ €€ €€ €€ €€ ‚ÿSkip leading space delimiters. Parse name delimited by a space. Find name and return xt, the execution token for name. An ambiguous condition exists if name is not found.s=ùs6 <€z€Œ˜RQ‚H€ €€ €€ ‚ÿWhen interpreting, ' xyz EXECUTE is equivalent to xyz.îam š€€^Œ˜RQ³~‚9€ ƒ€!€ ƒ€ € € € € €!ã7ìÆe€‰€ € ã-¬J¿€‰€ € € € ‚ÿSee:3.4 The Forth text interpreter, 3.4.1 Parsing, A.6.1.2033 POSTPONE, A.6.1.2510 ['], D.6.7 Immediacy.+sŒ( €€R‚9€ ‚ÿ2aŸ1ÿÿÿÿÿÿÿÿ%ŸçÔ ()Œç% €€˜˜€‚ÿ(_$ŸF; F€H€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0080 ( «paren»CORE¬dçòH `€È€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€€€ ‚ÿCompilation:Perform the execution semantics given below.Execution:( «ccc» -- )OF > L€ž€Œ˜RQ‚9€ €€ €€ €€ ‚ÿParse ccc delimited by ) (right parenthesis). ( is an immediate word.‘_ò 2 4€Ÿ€Œ˜RQ‚9€ €€ ‚ÿThe number of characters in ccc may be zero to the number of characters in the parse area.n, ~ B T€X€^Œ˜RQ³~‚9€!ƒƒ€ € € €€ €!‚ÿSee:3.4.1 Parsing, 11.6.1.0080 (.+ © ( €€R‚9€ ‚ÿ+~ Ô ( €€R‚9€ ‚ÿ2©  1ÿÿÿÿÿÿÿÿ& /  *)Ô / % €€˜˜€‚ÿ*^#  ; F€F€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0090 * «star»CORE-/  ` €Z€Œ˜RQ‚H€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ ‚ÿ( n1|u1 n2|u2 -- n3|u3 )ŠF À ` €Œ€Œ˜RQ‚H€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ ‚ÿMultiply n1|u1 by n2|u2 giving the product n3|u3.) é & €€R‚H€ ‚ÿ)À  & €€R‚H€ ‚ÿ3é E 1ÿÿÿÿÿÿÿÿ'E o eA*/* o % € €˜˜€‚ÿ*/e*E Ô ; F€T€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0100 */ «star-slash»COREw#o KT x€F€Œ˜RQ‚H€ €€'€ €€'€ €€'€ €€ €€'€ ‚ÿ( n1 n2 n3 -- n4 )ZÍÔ ±@ 耛€Œ˜RQ‚H€ €€'€ €€'€ €€ €€ €€'€ €€'€ €€'€ €€'€ €€ €€'€ €€ €€ ‚ÿMultiply n1 by n2 producing the intermediate double-cell result d. Divide d by n3 giving the single-cell quotient n4. An ambiguous condition exists if n3 is zero or if the quotient n4 lies outside the range of a signed number. If d and n3 differ in sign, the impK±@ lementation-defined result returned will be the same as that returned by either the phrase >R M* R> FM/MOD SWAP DROP or the phrase >R M* R> SM/REM SWAP DROP.^%KA9 B€J€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € ‚ÿSee:3.2.2.1 Integer division.+±@:A( €€R‚9€ ‚ÿ+AeA( €€R‚9€ ‚ÿ6:A›A1Tÿÿÿÿÿÿÿÿ(›AÈAëE*/MOD-eAÈA% €€˜˜€‚ÿ*/MODl1›A4B; F€b€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0110 */MOD «star-slash-mod»CORE~'ÈA²BW ~€N€Œ˜RQ‚H€ €€'€ €€'€ €€'€ €€'€ €€'€ ‚ÿ( n1 n2 n3 -- n4 n5 )…ï4B7E– ú€ß€Œ˜RQ‚H€ €€'€ €€'€ €€ €€ €€'€ €€'€ €€'€ €€'€ €€'€ €€ €€'€ €€ €€ ‚ÿMultiply n1 by n2 producing the intermediate double-cell result d. Divide d by n3 producing the single-cell remainder n4 and the single-cell quotient n5. An ambiguous condition exists if n3 is zero, or if the quotient n5 lies outside the range of a single-cell signed integer. If d and n3 differ in sign, the implementation-defined result returned will be the same as that returned by either the phrase >R M* R> FM/MOD or the phrase >R M* R> SM/REM. ^%²B•E9 B€J€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € ‚ÿSee:3.2.2.1 Integer division.+7EÀE( €€R‚9€ ‚ÿ+•EëE( €€R‚9€ ‚ÿ2ÀEF1Eÿÿÿÿÿÿÿÿ)FFFZH+)ëEFF% €€˜˜€‚ÿ+^#F€F; F€F€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0120 + «plus»COREŽ.FF2G` €\€Œ˜RQ‚H€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ ‚ÿ ( n1|u1 n2|u2 -- n3|u3 )ž>€FÐG` €|€Œ˜RQ‚H€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ ‚ÿAdd n2|u2 to n1|u1, giving the sum n3|u3._&2G/H9 B€L€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € ‚ÿSee:3.3.3.1 Address alignment.+ÐGZH( €€R‚9€ ‚ÿ3/HH1çÿÿÿÿÿÿÿÿ*H·HmJ+!*ZH·H% € €˜˜€‚ÿ+!e*HI; F€T€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0130 +! «plus-store»COREV·HrI< H€4€Œ˜RQ‚H€ €€ €€ €€ ‚ÿ( n|u a-addr -- )q5IãI< H€j€Œ˜RQ‚H€ €€ €€ €€ ‚ÿAdd n|u to the single-cell number at a-addr._&rIBJ9 B€L€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € ‚ÿSee:3.3.3.1 Address alignment.+ãImJ( €€R‚9€ ‚ÿ6BJ£J1Áÿÿÿÿÿÿÿÿ+£JÐJk€+LOOP-mJÐJ% €€˜˜€‚ÿ+LOOPg,£J7K; F€X€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0140 +LOOP «plus-loop»CORE¯mÐJæKB T€Ú€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Compilation:( C: do-sys -- )P7K6MB R€€Œ˜RQ‚9€ €€ €€ €€ ‚ÿAppend the run-time semantics given below to the current definition. Resolve the destination of all unresolved occurrences of LEAVE between the location given by do-sys and the next location for a transfer of control, to execute the words following +LOOP. Š?æKÀMK f€~€^Œ˜RQ³~‚9€!ƒ€ ƒ€€ €€'€ €€'€ ‚ÿRun-time:( n -- ) ( R: loop-sys1 -- | loop-sys2 )¬u6MlO7 <€ë€Œ˜RQ‚9€ €€ ‚ÿAn ambiguous condition exists if the loop control parameters are unavailable. Add n to the loop index. If the loop index did not cross the boundary between the loop limit minus one and the loop limit, continue execution at the beginning of the loop. Otherwise, discard the current loop control parameters and continue execution immediately following the loop. @ÀM€] Š€€€^Œ˜RQ³~‚9€!ƒ€ ƒãvß ü€‰€ € ãºp(€‰€ € ãL=ºB€‰€ ‚ÿSee:6.1.1240 DO, 6.1.1680 I, 6.1.1760 LlO€mJEAVE.+lO@€( €€R‚9€ ‚ÿ+€k€( €€R‚9€ ‚ÿ2@€€1 ÿÿÿÿÿÿÿÿ,€ƀµƒ,)k€ƀ% €€˜˜€‚ÿ,_$€%; F€H€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0150 , «comma»CORE= ƀb0 0€€Œ˜RQ‚H€ €€ ‚ÿ( x -- )]%¿‚F Z€/€Œ˜RQ‚H€ €€ €€ €€ €€ ‚ÿReserve one cell of data space and store x in the cell. If the data-space pointer is aligned when , begins execution, it will remain aligned when , finishes execution. An ambiguous condition exists if the data-space pointer is not aligned prior to execution of ,. Ob_ƒQ r€ž€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € € € € € ãH\W†‰€(‚ÿSee:3.3.3 Data space, 3.3.3.1 Address alignment. 6.1.0710 ALLOT+¿‚Šƒ( €€R‚9€ ‚ÿ+_ƒµƒ( €€R‚9€ ‚ÿ2Šƒçƒ1ÿÿÿÿÿÿÿÿ-烄^†-)µƒ„% €€˜˜€‚ÿ-_$çƒo„; F€H€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0160 - «minus»COREŽ.„ý„` €\€Œ˜RQ‚H€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ ‚ÿ ( n1|u1 n2|u2 -- n3|u3 )¬Lo„©…` €˜€Œ˜RQ‚H€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ ‚ÿSubtract n2|u2 from n1|u1, giving the difference n3|u3._&ý„†9 B€L€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € ‚ÿSee:3.3.3.1 Address alignment.+©…3†( €€R‚9€ ‚ÿ+†^†( €€R‚9€ ‚ÿ23††1Óÿÿÿÿÿÿÿÿ.†¹†[ˆ.)^†¹†% €€˜˜€‚ÿ.]"†‡; F€D€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0180 . «dot»CORE= ¹†S‡0 0€€Œ˜RQ‚H€ €€ ‚ÿ( n -- )T$‡§‡0 0€H€Œ˜RQ‚H€ €€ ‚ÿDisplay n in free field format.‰JS‡0ˆ? N€”€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € € € ‚ÿSee:3.2.1.2 Digit conversion, 3.2.1.3 Free-field number display.+§‡[ˆ( €€R‚9€ ‚ÿ30ˆŽˆ1(ÿÿÿÿÿÿÿÿ/Žˆžˆ¯‹."*[ˆžˆ% € €˜˜€‚ÿ."d)Žˆ‰; F€R€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0190 ." «dot-quote»COREºržˆ։H `€ä€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€€€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Compilation:( «ccc» -- )¯v‰…Š9 B€ì€Œ˜RQ‚9€ €€ €€ ‚ÿParse ccc delimited by " (double-quote). Append the run-time semantics given below to the current definition.H։͊3 6€*€^Œ˜RQ³~‚9€!ƒ€ ƒ‚ÿRun-time:( -- )C…Š‹2 4€"€Œ˜RQ‚9€ €€ ‚ÿDisplay ccc.t,͊„‹H `€X€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € € ã/¬J¿€‰€ ‚ÿSee:3.4.1 Parsing, 6.2.0200 .(.+‹¯‹( €€R‚9€ ‚ÿ2„‹á‹1,ÿÿÿÿÿÿÿÿ0á‹ Œ/)¯‹ Œ% €€˜˜€‚ÿ/_$á‹iŒ; F€H€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0230 / «slash»CORE` ŒɌE Z€6€Œ˜RQ‚H€ €€'€ €€'€ €€'€ ‚ÿ( n1 n2 -- n3 )³CiŒ|Žp ®€‡€Œ˜RQ‚H€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€ €€ ‚ÿDivide n1 by n2, giving the single-cell quotient n3. An ambiguous condition exists if n2 is zero. If n1 and n2 differ in sign, the implementation-defined result returned will be the same as that returned by either the phrase >R S>D R> FM/MOD SWAP DROP or the phrase >R S>D R> SM/REM SWAP DROP.^%Ɍڎ9 B€J€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € ‚ÿSee:3.2.2.1 Integer division.+|Ž( €€R‚9€ ‚ÿ5ڎ:1eÿÿÿÿÿÿÿÿ1:f›Â/MOD,f% €€˜˜€‚ÿ/MODf+:̏; F€V€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0240 /MOD «slash-mod»COREo!fGÀN l€B€Œ˜RQ‚H€ €€'€ €̏GÀ€'€ €€'€ €€'€ ‚ÿ( n1 n2 -- n3 n4 )ËȐÂy À€¥€Œ˜RQ‚H€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€ €€ ‚ÿDivide n1 by n2, giving the single-cell remainder n3 and the single-cell quotient n4. An ambiguous condition exists if n2 is zero. If n1 and n2 differ in sign, the implementation-defined result returned will be the same as that returned by either the phrase >R S>D R> FM/MOD or the phrase >R S>D R> SM/REM.^%GÀpÂ9 B€J€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € ‚ÿSee:3.2.2.1 Integer division.+›Â( €€R‚9€ ‚ÿ3pÂÎÂ1Ñÿÿÿÿÿÿÿÿ2ÎÂø˜Ä0<*›ÂøÂ% € €˜˜€‚ÿ0<d)ÎÂ\Ã; F€R€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0250 0< «zero-less»COREJøŠÃ6 <€(€Œ˜RQ‚H€ €€ €€ ‚ÿ( n -- flag )i6\ÃÄ3 6€l€Œ˜RQ‚H€€ €€ ‚ÿflag is true if and only if n is less than zero.^ŠÃmÄB T€8€^Œ˜RQ³~‚9€!ƒ€ ƒ€ ãØ«J¿€‰€(‚ÿSee:6.1.0270 0=+ĘÄ( €€R‚9€ ‚ÿ3mÄËÄ1Óÿÿÿÿÿÿÿÿ3ËÄõÄ—Æ0=*˜ÄõÄ% € €˜˜€‚ÿ0=f+ËÄ[Å; F€V€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0270 0= «zero-equals»COREJõÄ¥Å6 <€(€Œ˜RQ‚H€ €€ €€ ‚ÿ( x -- flag )h5[Å Æ3 6€j€Œ˜RQ‚H€€ €€ ‚ÿflag is true if and only if x is equal to zero._¥ÅlÆB T€:€^Œ˜RQ³~‚9€!ƒ€ ƒ€ ã1¬J¿€‰€ ‚ÿSee:6.1.0250 0<.+ Æ—Æ( €€R‚9€ ‚ÿ3lÆÊÆ1áÿÿÿÿÿÿÿÿ4ÊÆôÆ€È1+*—ÆôÆ% € €˜˜€‚ÿ1+c(ÊÆWÇ; F€P€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0290 1+ «one-plus»COREp"ôÆÇÇN l€D€Œ˜RQ‚H€ €€'€ €€'€ €€'€ €€'€ ‚ÿ ( n1|u1 -- n2|u2 )‡9WÇNÈN l€r€Œ˜RQ‚H€ €€'€ €€'€ €€'€ €€'€ ‚ÿAdd one (1) to n1|u1 giving the sum n2|u2.VÇÇ€È: D€8€R‚H€!ƒ€ ƒ€ ãÚ«J¿€‰€(‚ÿSee:6.1.0300 1-3NÈ×È1ðÿÿÿÿÿÿÿÿ5×ÈÉÀÊ1-*€ÈÉ% € €˜˜€‚ÿ1-d)×ÈeÉ; F€R€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0300 1- «one-minus»COREp"ÉÕÉN l€D€Œ˜RQ‚H€ €€'€ €€'€ €€'€ €€'€ ‚ÿ ( n1|u1 -- n2|u2 )•GeÉjÊN l€Ž€Œ˜RQ‚H€ €€'€ €€'€ €€'€ €€'€ ‚ÿSubtract one (1) from n1|u1 giving the difference n2|u2.VÕÉÀÊ: D€8€R‚H€!ƒ€ ƒ€ ãÙ«J¿€‰€ ‚ÿSee:6.1.0290 1+3jÊóÊ1«ÿÿÿÿÿÿÿÿ6óÊË—Í2!*ÀÊË% € €˜˜€‚ÿ2!d)óʁË; F€R€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0310 2! «two-store»CORE`ËáËB T€<€Œ˜RQ‚H€ €€'€ €€'€ €€ ‚ÿ( x1 x2 a-addr -- ) šËëÌb ’€Q€Œ˜RQ‚H€ €€'€ €€'€ €€ €€'€ €€ €€'€ €€ ‚ÿStore the cell pair x1 x2 at a-addr, with x2 at a-addr and x1 at the next consecutive cell. It is equivalent to the sequence SWAP OVER ! CELL+ !.9áËlÍH `€r€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € € ãÿ«J¿€‰€(‚ÿSee:3.3.3.1 Address alignment, 6.1.0350 2@+ëÌ—Í( €€R‚9€ ‚ÿ3lÍÊÍ1üÿÿÿÿÿÿÿÿ7ÊÍôÍ¿Ï2**—ÍôÍ% € €˜˜€‚ÿ2*c(ÊÍWÎ; F€P€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0320 2* «two-star»COREQôÍšÎ< H€*€Œ˜RQ‚H€ €€'€ €€'€ ‚ÿ( x1 -- x2 )Á†WÎiÏ; D€ €Œ˜RQ‚H€€'€ €€'€ ‚ÿx2 is the result of shifting x1 one bit toward the most-significant bit, filling the vacated least-significant bit with zero.VšÎ¿Ï: D€8€R‚H€!ƒ€ ƒ€ ãþ«J¿€‰€(‚ÿSee:6.1.0330 2/3iÏ 1øÿÿÿÿÿÿÿÿ8 6ù2/¿Ï ¿Ï*¿Ï6% € €˜˜€‚ÿ2/d) š; F€R€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0330 2/ «two-slash»COREQ6ë< H€*€Œ˜RQ‚H€ €€'€ €€'€ ‚ÿ( x1 -- x2 )ž~š£: D€ü€Œ˜RQ‚H€€'€ €€'€ ‚ÿx2 is the result of shifting x1 one bit toward the least-significant bit, leaving the most-significant bit unchanged.Vëù: D€8€R‚H€!ƒ€ ƒ€ ã¬J¿€‰€(‚ÿSee:6.1.0320 2*3£,1¶ÿÿÿÿÿÿÿÿ9,VÛ2@*ùV% € €˜˜€‚ÿ2@d),º; F€R€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0350 2@ «two-fetch»CORE`VB T€<€Œ˜RQ‚H€ €€ €€'€ €€'€ ‚ÿ( a-addr -- x1 x2 )Žº0b ’€i€Œ˜RQ‚H€ €€'€ €€'€ €€ €€'€ €€ €€'€ €€ ‚ÿFetch the cell pair x1 x2 stored at a-addr. x2 is stored at a-addr and x1 at the next consecutive cell. It is equivalent to the sequence DUP CELL+ @ SWAP @.€8°H `€p€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € € ãÛ«J¿€‰€ ‚ÿSee:3.3.3.1 Address alignment, 6.1.0310 2!.+0Û( €€R‚9€ ‚ÿ6°1zÿÿÿÿÿÿÿÿ:>‡2DROP-Û>% €€˜˜€‚ÿ2DROPf+€; F€V€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0370 2DROP «two-drop»COREQ>õ< H€*€Œ˜RQ‚H€ €€'€ €€'€ ‚ÿ( x1 x2 -- )i-€^< H€Z€Œ˜RQ‚H€ €€'€ €€'€ ‚ÿDrop cell pair x1 x2 from the stack.)õ‡& €€R‚H€ ‚ÿ5^Œ1«ÿÿÿÿÿÿÿÿ;Œèb2DUP,‡è% €€˜˜€‚ÿ2DUPe*ŒM; F€T€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0380 2DUP «two-dupe»CORE-èÚ` €Z€Œ˜RQ‚H€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ ‚ÿ( x1 x2 -- x1 x2 x1 x2 )_#M9< H€F€Œ˜RQ‚H€ €€'€ €€'€ ‚ÿDuplicate cell pair x1 x2.)Úb& €€R‚H€ ‚ÿ69˜1ûÿÿÿÿÿÿÿÿ<˜Å 2OVER-bÅ% €€˜˜€‚ÿ2OVERf+˜+ ; F€V€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0400 2OVER «two-over»COREÉEÅô „ ؀Š€Œ˜RQ‚H€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ ‚ÿ( x1 x2 x3 x4 -- x1 x2 x3 x4 x1 x2 )r6+ f < H€l€Œ˜RQ‚H€ €€'€ €€'€ ‚ÿCopy cell pair x1 x2 to the top of the stack.)ô  & €€R‚H€ ‚ÿ6f Å 1áÿÿÿÿÿÿÿÿ=Å ò ¢ 2SWAP- ò % €€˜˜€‚ÿ2SWAPf+Å X ; F€V€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0430 2SWAP «two-swap»CORE«9ò  r Ž€r€Œ˜RQ‚H€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ ‚ÿ( x1 x2 x3 x4 -- x3 x4 x1 x2 )M#X P * $€F€Œ˜RQ‚H€ ‚ÿExchange the top two cell pairs.) y & €€R‚H€ ‚ÿ)P ¢ & €€R‚H€ ‚ÿ2y Ô 1²ÿÿÿÿÿÿÿÿ>Ô ý eD:)¢ ý % €€˜˜€‚ÿ:_$Ô \ ; F€H€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0450 : «colon»COREg+ý à < H€V€Œ˜RQ‚H€ €€€€ €€ ‚ÿ( C: «name» -- colon-sys )p$\ 3L f€I€Œ˜RQ‚H€ €€ €€ €€ €€ €€ ‚ÿSkip leading space delimiters. Parse name delimited by a space. Create a definition for name, called a «colon definition». Enter compilation state and start the current definition, producing colon-sys. Append the initiation semantics given below to the current definition.0÷à o@9 @€ï€Œ˜RQ‚H€ €€ €€ ‚ÿThe execution semantics of name will be determined by the words compiled into the body of the definition. The current definition shall not be f3o@¢ indable in the dictionary until it is ended (or until the execution of DOES> in some systems).ƒ;3ò@H `€v€^Œ˜RQ³~‚9€ ƒ€!€ ƒ€€ €€ €€ ‚ÿInitiation:( i*x -- i*x ) ( R: -- nest-sys )Ύo@ÀA@ N€€Œ˜RQ‚9€ €€ €€ €€ ‚ÿSave implementation-dependent information nest-sys about the calling definition. The stack effects i*x represent arguments to name.n)ò@.BE Z€R€^Œ˜RQ³~‚9€ ƒ€€!€ ƒ€€ €€ ‚ÿname Execution:( i*x -- j*x )ɃÀA÷BF Z€€Œ˜RQ‚9€ €€ €€ €€ €€ ‚ÿExecute the definition name. The stack effects i*x and j*x represent arguments to and results from name, respectively.ž.BDz €=€^Œ˜RQ³~‚9€!ƒƒ€ € € € € € € ãwß ü€‰€ € ã,¬J¿€‰€ € ã.¬J¿€‰€ € €€ ‚ÿSee:3.4 The Forth text interpreter, 3.4.1 Parsing, 3.4.5 Compilation, 6.1.1250 DOES>, 6.1.2500 [, 6.1.2540 ], 15.6.2.0470 ;CODE.+÷B:D( €€R‚9€ ‚ÿ+DeD( €€R‚9€ ‚ÿ2:D—D1)ÿÿÿÿÿÿÿÿ?—DÀDžH;)eDÀD% €€˜˜€‚ÿ;c(—D#E; F€P€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0460 ; «semicolon»CORE²pÀDÕEB T€à€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Compilation:( C: colon-sys -- )G#EG6 :€#€Œ˜RQ‚9€ €€ ‚ÿAppend the run-time semantics below to the current definition. End the current definition, allow it to be found in the dictionary and enter interpretation state, consuming colon-sys. If the data-space pointer is not aligned, reserve enough data space to align it.e,ÕEG9 B€X€^Œ˜RQ³~‚9€!ƒ€ ƒ€€ ‚ÿRun-time:( -- ) ( R: nest-sys -- )n<GïG2 4€x€Œ˜RQ‚9€ €€ ‚ÿReturn to the calling definition specified by nest-sys.žPGHN l€ €^Œ˜RQ³~‚9€!ƒ€ ƒ€ € € € € ã¬J¿€‰€(‚ÿSee:3.4 The Forth text interpreter, 3.4.5 Compilation, 6.1.0450 :+ïGžH( €€R‚9€ ‚ÿ2HêH1îÿÿÿÿÿÿÿÿ@êHIÐJ<)žHI% €€˜˜€‚ÿ<c(êHvI; F€P€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0480 < «less-than»CORE^IÔIB T€8€Œ˜RQ‚H€ €€'€ €€'€ €€ ‚ÿ( n1 n2 -- flag )x9vILJ? N€r€Œ˜RQ‚H€€ €€'€ €€'€ ‚ÿflag is true if and only if n1 is less than n2.YÔI¥J? N€4€^Œ˜RQ³~‚9€!ƒƒ€ ãßƖ‘€‰€ ‚ÿSee:6.1.2340 U<.+LJÐJ( €€R‚9€ ‚ÿ3¥JK1&ÿÿÿÿÿÿÿÿAK-K"M<#*ÐJ-K% € €˜˜€‚ÿ<#k0K˜K; F€`€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0490 <# «less-number-sign»CORE3 -KËK* $€€Œ˜RQ‚H€ ‚ÿ( -- )g=˜K2L* $€z€Œ˜RQ‚H€ ‚ÿInitialize the pictured numeric output conversion process.š=ËKÌL] Š€z€^Œ˜RQ³~‚9€!ƒƒ€ ãW­J¿€‰€ € ãX­J¿€‰€ € ãho€€‰€ ‚ÿSee:6.1.0030 #, 6.1.0040 #>, 6.1.0050 #S.+2L÷L( €€R‚9€ ‚ÿ+ÌL"M( €€R‚9€ ‚ÿ2÷LTM1ÇÿÿÿÿÿÿÿÿBTM}MO=)"M}M% €€˜˜€‚ÿ=`%TMÝM; F€J€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0530 = «equals»CORE^}M;NB T€8€Œ˜RQ‚H€ €€'€ €€'€ €€ ‚ÿ( x1 x2 -- flag )†GÝMÁN? N€Ž€Œ˜RQ‚H€€ €€'€ €€'€ ‚ÿflag is true if and only if x1 is bit-for-bit the same as x2.);NêN& €€R‚H€ ‚ÿ)ÁNO& €€R‚H€ ‚ÿ2êNEO1ÿÿÿÿÿÿÿÿCEOnOh>)OnO% €€˜˜€‚ÿ>f+EOÔO; F€V€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0540 > «greater-than»CORE^nO>€B T€8€Œ˜RQ‚H€ €€ÔO>€O'€ €€'€ €€ ‚ÿ( n1 n2 -- flag ){<ÔO¹€? N€x€Œ˜RQ‚H€€ €€'€ €€'€ ‚ÿflag is true if and only if n1 is greater than n2.Y>€? N€4€^Œ˜RQ³~‚9€!ƒƒ€ ãäƖ‘€‰€ ‚ÿSee:6.2.2350 U>.+¹€=( €€R‚9€ ‚ÿ+h( €€R‚9€ ‚ÿ6=ž1]ÿÿÿÿÿÿÿÿDžˁ÷ƒ>BODY-hˁ% €€˜˜€‚ÿ>BODYe*ž0‚; F€T€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0550 >BODY «to-body»COREMˁ}‚6 <€.€Œ˜RQ‚H€ €€ €€ ‚ÿ( xt -- a-addr )΍0‚KƒA P€€Œ˜RQ‚H€€ €€ €€ €€ ‚ÿa-addr is the data-field address corresponding to xt. An ambiguous condition exists if xt is not for a word defined via CREATE. V}‚¡ƒ9 B€:€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € ‚ÿSee:3.3.3 Data space.+Kƒ̃( €€R‚9€ ‚ÿ+¡ƒ÷ƒ( €€R‚9€ ‚ÿ4̃+„1·ÿÿÿÿÿÿÿÿE+„V„܅>IN+÷ƒV„% € €˜˜€‚ÿ>INa&+„·„; F€L€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0560 >IN «to-in»COREBV„ù„0 0€$€Œ˜RQ‚H€ €€ ‚ÿ( -- a-addr )º‹·„³…/ ,€€Œ˜RQ‚H€€ ‚ÿa-addr is the address of a cell containing the offset in characters from the start of the input buffer to the start of the parse area.)ù„܅& €€R‚H€ ‚ÿ8³…†1ÿÿÿÿÿÿÿÿF†C†‹>NUMBER/ ܅C†% €€˜˜€‚ÿ>NUMBERj/†­†; F€^€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0570 >NUMBER «to-number» CORE™9C†F‡` €r€Œ˜RQ‚H€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ ‚ÿ( ud1 c-addr1 u1 -- ud2 c-addr2 u2 )K°­†‘Š› a€Œ˜RQ‚H€€'€ €€'€ €€'€ €€ €€'€ €€'€ €€ €€ €€ €€ €€ €€'€ €€'€ €€'€ ‚ÿud2 is the unsigned result of converting the characters within the string specified by c-addr1 u1 into digits, using the number in BASE, and adding each into ud1 after multiplying ud1 by the number in BASE. Conversion continues left-to-right until a character that is not convertible, including any «+» or «-», is encountered or the string is entirely converted. c-addr2 is the location of the first unconverted character or the first character past the end of the string if the string was entirely converted. u2 is the number of unconverted characters in the string. An ambiguous condition exists if ud2 overflows during the conversion. ^%F‡ïŠ9 B€J€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € ‚ÿSee:3.2.1.2 Digit conversion.+‘Š‹( €€R‚9€ ‚ÿ3ïŠM‹1÷ÿÿÿÿÿÿÿÿGM‹w‹=Ž>R*‹w‹% € €˜˜€‚ÿ>R_$M‹֋; F€H€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0580 >R «to-r»CORE»sw‹‘ŒH `€æ€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€ €€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Execution:( x -- ) ( R: -- x )R ֋ãŒ2 4€@€Œ˜RQ‚9€ €€ ‚ÿMove x to the return stack.‘Œç… ڀþ€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € € ã®CMw€‰€ € ã¯CMw€‰€ € ãÛ-’À‰€ € ãT¬J¿€‰€ € ãU¬J¿€‰€ ‚ÿSee:3.2.3.3 Return stack, 6.1.2060 R>, 6.1.2070 R@, 6.2.0340 2>R, 6.2.0410 2R>, 6.2.0415 2R@.+㌎( €€R‚9€ ‚ÿ+ç=Ž( €€R‚9€ ‚ÿ5ŽrŽ1lÿÿÿÿÿÿÿÿHrŽžŽ À?DUP,=ŽžŽ% €€˜˜€‚ÿ?DUPj/rŽ; F€^€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0630 ?DUP «question-dupe»COREUžŽ]< H€2€Œ˜RQ‚H€ €€ €€ €€ ‚ÿ( x -- 0 | x x )S#°0 0€F€Œ˜RQ‚H€ €€ ‚ÿDuplicate x if it is non-zero.)] À& €€R‚H€ ‚ÿ° À=Ž2°>À1ÚÿÿÿÿÿÿÿÿI>ÀgÀÂ@) ÀgÀ% €€˜˜€‚ÿ@_$>ÀÆÀ; F€H€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0650 @ «fetch»CORELgÀÁ6 <€,€Œ˜RQ‚H€ €€ €€ ‚ÿ( a-addr -- x )Y&ÆÀkÁ3 6€L€Œ˜RQ‚H€€ €€ ‚ÿx is the value stored at a-addr.z5ÁåÁE Z€j€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € € ãV­J¿‰€ ‚ÿSee:3.3.3.1 Address alignment. 6.1.0010 !+kÁÂ( €€R‚9€ ‚ÿ6åÁFÂ1jÿÿÿÿÿÿÿÿJFÂs¬ÄABORT-ÂsÂ% €€˜˜€‚ÿABORTLF¿Â/ .€:€‘€‚H€€%€ƒƒ‚ÿ6.1.0670 ABORT COREUsÂÃ6 <€>€Œ˜RQ‚H€ €€ €€ ‚ÿ( i*x -- ) ( R: j*x -- )Ÿ†¿ÂÒÃ8 >€ €Œ˜RQ‚H€ ãòŠn€‰€ ‚ÿEmpty the data stack and perform the function of QUIT, which includes emptying the return stack, without displaying a message.„6ÃVÄN l€l€^Œ˜RQ³~‚9€ ƒ€!€ ƒ€ €€ € ãC\W € ‚ÿSee:9.6.2.0670 ABORT, 6.1.0680 ABORT"+ÒÁÄ( €€R‚9€ ‚ÿ+VĬÄ( €€R‚9€ ‚ÿ7ÄãÄ1fÿÿÿÿÿÿÿÿKãÄÅFÉABORT". ¬ÄÅ% €€˜˜€‚ÿABORT"j/ãÄ{Å; F€^€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0680 ABORT" «abort-quote»COREºrÅ5ÆH `€ä€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€€€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Compilation:( «ccc» -- )³z{ÅèÆ9 B€ô€Œ˜RQ‚9€ €€ €€ ‚ÿParse ccc delimited by a " (double-quote). Append the run-time semantics given below to the current definition. —C5ÆÇT x€†€^Œ˜RQ³~‚9€!ƒ€ ƒ€€ €€'€ €€ €€ €€ ‚ÿRun-time:( i*x x1 -- | i*x ) ( R: j*x -- | j*x )®èÆÈR r€]€Œ˜RQ‚9€ €€'€ €€'€ €€ ãB\W € ‚ÿRemove x1 from the stack. If any bit of x1 is not zero, display ccc and perform an implementation-defined abort sequence that includes the function of ABORT.œHÇÉT x€€^Œ˜RQ³~‚9€ ƒ€!€ ƒ€ € € €€ € ãB\W € ‚ÿSee:3.4.1 Parsing, 9.6.2.0680 ABORT", 6.1.0670 ABORT +ÈFÉ( €€R‚9€ ‚ÿ4ÉzÉ1VÿÿÿÿÿÿÿÿLzÉ¥ÉÊÊABS+FÉ¥É% € €˜˜€‚ÿABS_$zÉÊ; F€H€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0690 ABS «abs»COREG¥ÉKÊ6 <€"€Œ˜RQ‚H€ €€ €€ ‚ÿ( n -- u )V#Ê¡Ê3 6€F€Œ˜RQ‚H€€ €€ ‚ÿu is the absolute value of n.)KÊÊÊ& €€R‚H€ ‚ÿ7¡ÊË1|ÿÿÿÿÿÿÿÿMË/ËzÏACCEPT. ÊÊ/Ë% €€˜˜€‚ÿACCEPTMË|Ë/ .€<€‘€‚H€€%€ƒƒ‚ÿ6.1.0695 ACCEPT COREb /ËÞËB T€@€Œ˜RQ‚H€ €€ €€'€ €€'€ ‚ÿ( c-addr +n1 -- +n2 )ã¢|ËÁÍA P€E€Œ˜RQ‚H€ €€'€ €€'€ ‚ÿReceive a string of at most +n1 characters. An ambiguous condition exists if +n1 is zero or greater than 32,767. Display graphic characters as they are received. A program that depends on the presence or absence of non-graphic characters in the string has an environmental dependency. The editing functions, if any, that the system performs in order to construct the string are implementation-defined.ùÌÞ˺Î- (€™€Œ˜RQ‚H€ ‚ÿInput terminates when an implementation-defined line terminator is received. When input terminates, nothing is appended to the string, and the display is maintained in an implementation-defined way.n8ÁÍ(Ï6 <€p€Œ˜RQ‚H€€'€ €€ ‚ÿ+n2 is the length of the string stored at c-addr.)ºÎQÏ& €€R‚H€ ‚ÿ)(ÏzÏ& €€R‚H€ ‚ÿ6QÏ°Ï1ÿÿÿÿÿÿÿÿN°ÏÝÏÏALIGN-zÏÝÏ% €€˜˜€‚ÿALIGNL°Ï5/ .€:€‘€‚H€ÝÏ5zÏ€%€ƒƒ‚ÿ6.1.0705 ALIGN CORE3 ÝÏh* $€€Œ˜RQ‚H€ ‚ÿ( -- )xN5à* $€œ€Œ˜RQ‚H€ ‚ÿIf the data-space pointer is not aligned, reserve enough space to align it.™QhyH `€¢€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € € ãG\W € ‚ÿSee:3.3.3 Data space, 3.3.3.1 Address alignment, 6.1.0706 ALIGNED.+à€( €€R‚9€ ‚ÿ+yÏ( €€R‚9€ ‚ÿ8€1ÿÿÿÿÿÿÿÿO6!ALIGNED/ Ï6% €€˜˜€‚ÿALIGNEDN„/ .€>€‘€‚H€€%€ƒƒ‚ÿ6.1.0706 ALIGNED COREO6Ó6 <€2€Œ˜RQ‚H€ €€ €€ ‚ÿ( addr -- a-addr ){H„N3 6€€Œ˜RQ‚H€€ €€ ‚ÿa-addr is the first aligned address greater than or equal to addr.};ÓËB T€v€^Œ˜RQ³~‚9€!ƒ€ ƒ€ ãF\W € ‚ÿSee:3.3.3.1 Address alignment, 6.1.0705 ALIGN.+Nö( €€R‚9€ ‚ÿ+Ë!( €€R‚9€ ‚ÿ6öW1FÿÿÿÿÿÿÿÿPW„™ALLOT-!„% €€˜˜€‚ÿALLOTLWÐ/ .€:€‘€‚H€€%€ƒƒ‚ÿ6.1.0710 ALLOT CORE= „ 0 0€€Œ˜RQ‚H€ €€ ‚ÿ( n -- )ÉÐ!K d€“€Œ˜RQ‚H€ €€ €€ €€ €€ €€ ‚ÿIf n is greater than zero, reserve n address units of data space. If n is less than zero, release |n| address units of data space. If n is zero, leave the data-space pointer unchanged.é«  > J€W€Œ˜RQ‚H€ €€ €€ €€ ‚ÿIf the data-space pointer is aligned and n is a multiple of the size of a cell when ALLOT begins execution, it will remain aligned when ALLOT finishes execution.Å!? L€‹€Œ˜RQ‚H€ €€ €€ €€ ‚ÿIf the data-space pointer is character aligned and n is a multiple of the size of a character when ALLOT begins execution, it will remain character aligned when ALLOT finishes execution.`! n? N€B€^Œ˜RQ³~‚9€!ƒ€ ƒ€ ãÜ«J¿‰€(‚ÿSee:3.3.3 Data space, ,+™( €€R‚9€ ‚ÿ4nÍ1’ÿÿÿÿÿÿÿÿQÍøY AND+™ø% € €˜˜€‚ÿANDJÍB / .€6€‘€‚H€€%€ƒƒ‚ÿ6.1.0720 AND CORE`ø¢ E Z€6€Œ˜RQ‚H€ €€'€ €€'€ €€'€ ‚ÿ( x1 x2 -- x3 )Ž@B 0 N l€€€Œ˜RQ‚H€€'€ €€ €€ €€'€ €€'€ ‚ÿx3 is the bit-by-bit logical «and» of x1 with x2.)¢ Y & €€R‚H€ ‚ÿ50 Ž 1tÿÿÿÿÿÿÿÿRŽ º ý BASE,Y º % €€˜˜€‚ÿBASEKŽ  / .€8€‘€‚H€€%€ƒƒ‚ÿ6.1.0750 BASE COREBº G 0 0€$€Œ˜RQ‚H€ €€ ‚ÿ( -- a-addr )_ Ô . ,€Ÿ€Œ˜RQ‚H€€ ‚ÿa-addr is the address of a cell containing the current number-conversion radix {{2...36}}.)G ý & €€R‚H€ ‚ÿ6Ô 3 1ÿÿÿÿÿÿÿÿS3 ` ®BEGIN-ý ` % €€˜˜€‚ÿBEGINL3 ¬ / .€:€‘€‚H€€%€ƒƒ‚ÿ6.1.0760 BEGIN CORE­k` Y B T€Ö€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Compilation:( C: -- dest )ӟ¬ ,4 6€?€Œ˜RQ‚9€ €€ ‚ÿPut the next location for a transfer of control, dest, onto the control flow stack. Append the run-time semantics given below to the current definition.HY t3 6€*€^Œ˜RQ³~‚9€!ƒ€ ƒ‚ÿRun-time:( -- )B,¶, (€,€Œ˜RQ‚9€ ‚ÿContinue execution.Ígtƒf œ€Î€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € € ã±CMw€‰€ € ãâƖ‘€‰€ € ãT£€‰€ ‚ÿSee:3.2.3.2 Control-flow stack, 6.1.2140 REPEAT, 6.1.2390 UNTIL, 6.1.2430 WHILE.+¶®( €€R‚9€ ‚ÿ3ƒá1cÿÿÿÿÿÿÿÿTá@7ABL*®@% € €˜á@®˜€‚ÿBL^#áu@; F€F€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0770 BL «b-l»CORE@@µ@0 0€ €Œ˜RQ‚H€ €€ ‚ÿ( -- char )Y,u@A- *€X€Œ˜RQ‚H€€ ‚ÿchar is the character value for a space.)µ@7A& €€R‚H€ ‚ÿ3AjA1CÿÿÿÿÿÿÿÿUjA”AŠCC!*7A”A% € €˜˜€‚ÿC!b'jAöA; F€N€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0850 C! «c-store»COREO”AEB6 <€2€Œ˜RQ‚H€ €€ €€ ‚ÿ( char c-addr -- )Ø öAC8 >€A€Œ˜RQ‚H€ €€ €€ ‚ÿStore char at c-addr. When character size is smaller than cell size, only the number of low-order bits corresponding to character size are transferred.^%EB{C9 B€J€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € ‚ÿSee:3.3.3.1 Address alignment+CŠC( €€R‚9€ ‚ÿ3{CÙC1 ÿÿÿÿÿÿÿÿVÙCDÞFC,*ŠCD% € €˜˜€‚ÿC,b'ÙCeD; F€N€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0860 C, «c-comma»CORE@D¥D0 0€ €Œ˜RQ‚H€ €€ ‚ÿ( char -- )•OeD:FF Z€Ÿ€Œ˜RQ‚H€ €€ €€ €€ €€ ‚ÿReserve space for one character in the data space and store char in the space. If the data-space pointer is character aligned when C, begins execution, it will remain character aligned when C, finishes execution. An ambiguous condition exists if the data-space pointer is not character-aligned prior to execution of C,.y:¥D³F? N€t€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € € € ‚ÿSee:3.3.3 Data space, 3.3.3.1 Address alignment.+:FÞF( €€R‚9€ ‚ÿ3³FG1(ÿÿÿÿÿÿÿÿWG;G2IC@*ÞF;G% € €˜˜€‚ÿC@b'GG; F€N€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0870 C@ «c-fetch»COREO;GìG6 <€2€Œ˜RQ‚H€ €€ €€ ‚ÿ( c-addr -- char )ŒŠGšH2 2€€Œ˜RQ‚H€ €€ ‚ÿFetch the character stored at c-addr. When the cell size is greater than character size, the unused high-order bits are all zeroes._&ìGI9 B€L€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € ‚ÿSee:3.3.3.1 Address alignment.+šH2I( €€R‚9€ ‚ÿ6IhI10ÿÿÿÿÿÿÿÿXhI•I”KCELL+-2I•I% €€˜˜€‚ÿCELL+g,hIüI; F€X€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0880 CELL+ «cell-plus»CORE[•IWJ< H€>€Œ˜RQ‚H€ €€'€ €€'€ ‚ÿ( a-addr1 -- a-addr2 )ˆLüIßJ< H€˜€Œ˜RQ‚H€ €€'€ €€'€ ‚ÿAdd the size in address units of a cell to a-addr1, giving a-addr2._&WJ>K9 B€L€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € ‚ÿSee:3.3.3.1 Address alignment.+ßJiK( €€R‚9€ ‚ÿ+>K”K( €€R‚9€ ‚ÿ6iKÊK1ÿÿÿÿÿÿÿÿYÊK÷KSMCELLS-”K÷K% €€˜˜€‚ÿCELLSLÊKCL/ .€:€‘€‚H€€%€ƒƒ‚ÿ6.1.0890 CELLS COREQ÷K”L< H€*€Œ˜RQ‚H€ €€'€ €€'€ ‚ÿ( n1 -- n2 )m4CLM9 B€h€Œ˜RQ‚H€€'€ €€'€ ‚ÿn2 is the size in address units of n1 cells.)”L*M& €€R‚H€ ‚ÿ)MSM& €€R‚H€ ‚ÿ5*MˆM1tÿÿÿÿÿÿÿÿZˆMŽM €CHAR,SMŽM% €€˜˜€‚ÿCHARa&ˆMN; F€L€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0895 CHAR «char»CORE_#ŽMtN< H€F€Œ˜RQ‚H€ €€€€ €€ ‚ÿ( «name» -- char )­|N!O1 2€ø€Œ˜RQ‚H€ €€ ‚ÿSkip leading space delimiters. Parse name delimited by a space. Put the value of its first character onto the stack.€2tN¡ON l€d€^Œ˜RQ³~‚9€ ƒ€!€ ƒ€ € € ã7²Ý󀉀 € ‚ÿSee:3.4.1 Parsing, 6.1.2520 [CHAR].+!OÌO( €€R‚9€ ‚ÿ+¡O €( €€R‚9€ ‚ÿÌO €SM6ÌOB€15ÿÿÿÿÿÿÿÿ[B€o€s‚CHAR+- €o€% €€˜˜€‚ÿCHAR+g,B€ր; F€X€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0897 CHAR+ «char-plus»CORE[o€1< H€>€Œ˜RQ‚H€ €€'€ €€'€ ‚ÿ( c-addr1 -- c-addr2 )QրŸ< H€¢€Œ˜RQ‚H€ €€'€ €€'€ ‚ÿAdd the size in address units of a character to c-addr1, giving c-addr2._&1‚9 B€L€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € ‚ÿSee:3.3.3.1 Address alignment.+ŸH‚( €€R‚9€ ‚ÿ+‚s‚( €€R‚9€ ‚ÿ6H‚©‚1©ÿÿÿÿÿÿÿÿ\©‚ւN„CHARS-s‚ւ% €€˜˜€‚ÿCHARSc(©‚9ƒ; F€P€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0898 CHARS «chars»COREQւŠƒ< H€*€Œ˜RQ‚H€ €€'€ €€'€ ‚ÿ( n1 -- n2 )r99ƒüƒ9 B€r€Œ˜RQ‚H€€'€ €€'€ ‚ÿn2 is the size in address units of n1 characters.)Šƒ%„& €€R‚H€ ‚ÿ)üƒN„& €€R‚H€ ‚ÿ9%„‡„19ÿÿÿÿÿÿÿÿ]‡„·„¿‡CONSTANT0 N„·„% €€˜˜€‚ÿCONSTANTO ‡„…/ .€@€‘€‚H€€%€ƒƒ‚ÿ6.1.0950 CONSTANT CORE\ ·„b…< H€@€Œ˜RQ‚H€ €€ €€€€ ‚ÿ( x «name» -- )ʒ…,†8 >€%€Œ˜RQ‚H€ €€ €€ ‚ÿSkip leading space delimiters. Parse name delimited by a space. Create a definition for name with the execution semantics defined below.e,b…‘†9 B€X€Œ˜RQ‚H€€ €€ €€ ‚ÿname is referred to as a «constant».`!,†ñ†? N€B€^Œ˜RQ³~‚9€!ƒ€€!€ ƒ€€ ‚ÿname Execution:( -- x )L‘†=‡2 4€4€Œ˜RQ‚9€ €€ ‚ÿPlace x on the stack.Wñ†”‡< H€6€^Œ˜RQ³~‚9€ ƒ€!€ ƒ€ € ‚ÿSee:3.4.1 Parsing.+=‡¿‡( €€R‚9€ ‚ÿ6”‡õ‡1|ÿÿÿÿÿÿÿÿ^õ‡"ˆmŠCOUNT-¿‡"ˆ% €€˜˜€‚ÿCOUNTLõ‡nˆ/ .€:€‘€‚H€€%€ƒƒ‚ÿ6.1.0980 COUNT COREd#"ˆ҈A R€F€˜RS‚H€ €€'€ €€'€ €€ ‚ÿ( c-addr1 -- c-addr2 u )rnˆDŠ_ Œ€'€˜RS‚H€ €€'€ €€'€ €€'€ €€ €€'€ €€'€ ‚ÿReturn the character string specification for the counted string stored at c-addr1. c-addr2 is the address of the first character after c-addr1. u is the contents of the character at c-addr1, which is the length in characters of the string at c-addr2.)҈mŠ& €€R‚H€ ‚ÿ3DŠ Š1Zÿÿÿÿÿÿÿÿ_ Šʊó‹CR*mŠʊ% € €˜˜€‚ÿCR^# Š(‹; F€F€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.0990 CR «c-r»CORE2 ʊZ‹) "€€˜RS‚H€ ‚ÿ( -- )pG(‹ʋ) "€Ž€˜RS‚H€ ‚ÿCause subsequent output to appear at the beginning of the next line.)Z‹ó‹& €€R‚H€ ‚ÿ7ʋ*Œ1Oÿÿÿÿÿÿÿÿ`*ŒXŒyÀCREATE. ó‹XŒ% €€˜˜€‚ÿCREATEM*Œ¥Œ/ .€<€‘€‚H€€%€ƒƒ‚ÿ6.1.1000 CREATE COREQXŒöŒ5 :€8€˜RS‚H€ €€€€ ‚ÿ( «name» -- )±`¥Œ§ŽQ p€Á€˜RS‚H€ €€ €€ €€€ €€ €€€ ‚ÿSkip leading space delimiters. Parse name delimited by a space. Create a definition for name with the execution semantics defined below. If the data-space pointer is not aligned, reserve enough data space to align it. The new data-space pointer defines name’s data field. CREATE does not allocate data space in name’s data field.e&öŒ ? N€L€^Œ˜RQ³~‚9€!ƒ€€!€ ƒ€€ ‚ÿname Execution:( -- a-addr )Œx§ŽȏD X€ð€˜RS‚9€€ €€€ €€ €€ ‚ÿa-addr is the address of name’s data field. The execution semantics of name may be extended by using DOES>.z2 NÀH `€d€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € €ÈNÀó‹ ãwß ü€‰€ ‚ÿSee:3.3.3 Data space, 6.1.1250 DOES>.+ȏyÀ( €€R‚9€ ‚ÿ8NÀ±À18ÿÿÿÿÿÿÿÿa±ÀàÀçÁDECIMAL/ yÀàÀ% €€˜˜€‚ÿDECIMALN±À.Á/ .€>€‘€‚H€€%€ƒƒ‚ÿ6.1.1170 DECIMAL CORE2 àÀ`Á) "€€˜RS‚H€ ‚ÿ( -- )^5.ÁŸÁ) "€j€˜RS‚H€ ‚ÿSet the numeric conversion radix to ten (decimal).)`ÁçÁ& €€R‚H€ ‚ÿ6ŸÁÂ1‚ÿÿÿÿÿÿÿÿbÂJ›ÃDEPTH-çÁJÂ% €€˜˜€‚ÿDEPTHL–Â/ .€:€‘€‚H€€%€ƒƒ‚ÿ6.1.1200 DEPTH CORE=JÂÓÂ/ .€€˜RS‚H€ €€ ‚ÿ( -- +n )Ÿl–ÂrÃ3 6€Ø€˜RS‚H€€ €€ ‚ÿ+n is the number of single-cell values contained in the data stack before +n was placed on the stack.)Ó›Ã& €€R‚H€ ‚ÿ3rÃÎÃ1[ÿÿÿÿÿÿÿÿcÎÃøÃ"ÉDO*›ÃøÃ% € €˜˜€‚ÿDOIÎÃAÄ/ .€4€‘€‚H€€%€ƒƒ‚ÿ6.1.1240 DO CORE|JøÃœÄ2 4€”€\˜RS±~‚9€!ƒ€ ƒ‚ÿInterpretation:Interpretation semantics for this word are undefined.]$AÄÅ9 B€H€^Œ˜RQ³~‚9€!ƒ€ ƒ€€ ‚ÿCompilation:( C: -- do-sys ) ÍœÄ'Æ@ N€›€˜RS‚9€ €€ €€ €€ ‚ÿPlace do-sys onto the control-flow stack. Append the run-time semantics given below to the current definition. The semantics are incomplete until resolved by a consumer of do-sys such as LOOP.ŸBÅÆÆ] Š€„€^Œ˜RQ³~‚9€!ƒ€ ƒ€€'€ €€'€ €€'€ €€'€ €€ ‚ÿRun-time:( n1|u1 n2|u2 -- ) ( R: -- loop-sys )‹'ÆQÈv º€+€˜RS‚9€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ ‚ÿSet up loop control parameters with index n2|u2 and limit n1|u1. An ambiguous condition exists if n1|u1 and n2|u2 are not both the same type. Anything already on the return stack becomes unavailable until the loop-control parameters are discarded.ŠPÆÆ÷ÈV |€ €\ŒRS±~‚9€!ƒ€ ƒ€ € € ãK=ºB€‰€ € ãN=ºB€‰€ ‚ÿSee:3.2.3.2 Control-flow stack, 6.1.0140 +LOOP, 6.1.1800 LOOP.+QÈ"É( €€R‚9€ ‚ÿ6÷ÈXÉ1çÿÿÿÿÿÿÿÿdXÉ…É6DOES>-"É…É% €€˜˜€‚ÿDOES>b'XÉçÉ; F€N€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.1250 DOES> «does»COREπ…ɶÊO l€€^Œ˜RQ³~‚9€!ƒ€ ƒ‚ƒ€!€ ƒ€€'€ €€'€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Compilation:( C: colon-sys1 -- colon-sys2 )FçÉFÌJ b€€˜RS‚9€ €€ €€'€ €€'€€ ‚ÿAppend the run-time semantics below to the current definition. Whether or not the current definition is rendered findable in the dictionary by the compilation of DOES> is implementation defined. Consume colon-sys1 and produce colon-sys2. Append the initiation semantics given below to the current definition.h,¶Ê®Ì< H€X€^Œ˜RQ³~‚9€!ƒ€ ƒ€€'€ ‚ÿRun-time:( -- ) ( R: nest-sys1 -- )šDFÌHÎV z€‰€˜RS‚9€ €€ €€ €€'€ €€ €€ €€ ‚ÿReplace the execution semantics of the most recent definition, referred to as name, with the name execution semantics given below. Return control to the calling definition specified by nest-sys1. An ambiguous condition exists if name was not defined with CREATE or a user-defined word that calls CREATE.—F®ÌßÎQ r€Œ€^Œ˜RQ³~‚9€ ƒ€!€ ƒ€€ €€ €€ €€'€ ‚ÿInitiation:( i*x -- i*x a-addr ) ( R: -- nest-sys2 )ÃHÎ L f€‡€˜RS‚9€ €€'€ €€€ €€ €€ ‚ÿSave implementation-dependent information nest-sys2 about the calling definition. Place name’s data field address on the stack. The stack effects i*x represent arguments to name.ßÎ "Én)ßÎzE Z€R€^Œ˜RQ³~‚9€ ƒ€€!€ ƒ€€ €€ ‚ÿname Execution:( i*x -- j*x )0ä ªL f€É€˜RS‚9€ €€ €€ €€ €€ €€ ‚ÿExecute the portion of the definition that begins with the initiation semantics appended by the DOES> which modified name. The stack effects i*x and j*x represent arguments to and results from name, respectively.az B T€>€^Œ˜RQ³~‚9€!ƒ€ ƒ€ ã6²Ý󀉀 ‚ÿSee:6.1.1000 CREATE.+ª6( €€R‚9€ ‚ÿ5 k1-ÿÿÿÿÿÿÿÿek—“DROP,6—% €€˜˜€‚ÿDROPKkâ/ .€8€‘€‚H€€%€ƒƒ‚ÿ6.1.1260 DROP CORE< —/ .€€˜RS‚H€ €€ ‚ÿ( x -- )Lâj/ .€:€˜RS‚H€ €€ ‚ÿRemove x from the stack.)“& €€R‚H€ ‚ÿ4jÇ1JÿÿÿÿÿÿÿÿfÇò DUP+“ò% € €˜˜€‚ÿDUP`%ÇR; F€J€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.1290 DUP «dupe»COREPò¢; F€*€˜RS‚H€ €€ €€ €€ ‚ÿ( x -- x x )@Râ/ .€"€˜RS‚H€ €€ ‚ÿDuplicate x.)¢ & €€R‚H€ ‚ÿ5â@1^ÿÿÿÿÿÿÿÿg@l™ ELSE, l% €€˜˜€‚ÿELSEK@·/ .€8€‘€‚H€€%€ƒƒ‚ÿ6.1.1310 ELSE COREÄvl{N l€ì€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€'€ €€'€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Compilation:( C: orig1 -- orig2 )±`·,Q p€Á€˜RS‚9€ €€'€ €€'€ €€ €€'€ ‚ÿPut the location of a new unresolved forward reference orig2 onto the control flow stack. Append the run-time semantics given below to the current definition. The semantics will be incomplete until orig2 is resolved (e.g., by THEN). Resolve the forward reference orig1 using the location following the appended run-time semantics.H{t3 6€*€^Œ˜RQ³~‚9€!ƒ€ ƒ‚ÿRun-time:( -- )~J,ò4 8€”€˜RS‚9€ €€'€ ‚ÿContinue execution at the location given by the resolution of orig2.|.tn N l€\€^Œ˜RQ³~‚9€!ƒ€ ƒãºp(€‰€ € ã#›Óˆ€‰€ ‚ÿSee:6.1.1700 IF, 6.1.2270 THEN.+ò™ ( €€R‚9€ ‚ÿ5n Î 1ÿÿÿÿÿÿÿÿhÎ ú â EMIT,™ ú % €€˜˜€‚ÿEMITKÎ E / .€8€‘€‚H€€%€ƒƒ‚ÿ6.1.1320 EMIT CORE= ú ‚ 0 0€€Œ˜RQ‚H€ €€ ‚ÿ( x -- )ìšE n D V€Q€Œ˜RQ‚H€ €€ €€ €€ €€ ‚ÿIf x is a graphic character in the implementation-defined character set, display x. The effect of EMIT for all other values of x is implementation-defined.æ«‚ T ; D€W€Œ˜RQ‚H€ € € €€ ‚ÿWhen passed a character whose character-defining bits have a value between hex 20 and 7E inclusive, the corresponding standard character, specified by 3.1.2.1 Graphic characters, is displayed. Because different output devices can respond differently to control characters, programs that use control characters to perform specific functions have an environmental dependency. Each EMIT deals with only one character.cn · E Z€<€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € ã$›Óˆ€‰€ ‚ÿSee:6.1.2310 TYPE.+T â ( €€R‚9€ ‚ÿ= · 1šÿÿÿÿÿÿÿÿiS$BENVIRONMENT?4â S% €€˜˜€‚ÿENVIRONMENT?v;É; F€v€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.1345 ENVIRONMENT? «environment-query»COREu-S>H `€Z€Œ˜RQ‚H€ €€ €€ €€ €€ €€ ‚ÿ( c-addr u -- false | i*x true )±SÉûA^ Š€§€Œ˜RQ‚H€€ €€ €€ €€ € € €€ €€ €€ ‚ÿc-addr is the address of a character string and u is the string’s character count. u may h>ûAâ ave a value in the range from zero to an implementation-defined maximum which shall not be less than 31. The character string should contain a keyword from 3.2.6 Environmental queries or the optional word sets to be checked for correspondence with an attribute of the present environment. If the system treats the attribute as unknown, the returned flag is false; otherwise, the flag is true and the i*x returned is of the type specified in the table for the attribute queried.)>$B& €€R‚H€ ‚ÿ9ûA]B1Âÿÿÿÿÿÿÿÿj]BBGEVALUATE0 $BB% €€˜˜€‚ÿEVALUATEO ]BÜB/ .€@€‘€‚H€€%€ƒƒ‚ÿ6.1.1360 EVALUATE COREd"B@CB T€D€Œ˜RQ‚H€ €€ €€ €€ €€ ‚ÿ( i*x c-addr u -- j*x )²fÜBòDL f€Í€Œ˜RQ‚H€ €€ €€ €€ €€ €€ ‚ÿSave the current input source specification. Store minus-one (-1) in SOURCE-ID if it is present. Make the string described by c-addr and u both the input source and input buffer, set >IN to zero, and interpret. When the parse area is empty, restore the prior input source specification. Other stack effects are due to the words EVALUATEd.)@CE& €€R‚H€ ‚ÿNòDiE/ .€>€‘€‚H€€%€ƒƒ‚ÿ6.1.1370 EXECUTE COREVE¿E< H€4€Œ˜RQ‚H€ €€ €€ €€ ‚ÿ( i*x xt -- j*x )¶iEuF7 >€þ€Œ˜RQ‚H€ €€ €€ ‚ÿRemove xt from the stack and perform the semantics identified by it. Other stack effects are due to the word EXECUTEd.~-¿EóFQ r€Z€^Œ˜RQ³~‚9€!ƒ€ ƒ€ ãY­J¿€‰€ € ã-¬J¿€‰€ ‚ÿSee:6.1.0070 ', 6.1.2510 ['].+uFG( €€R‚9€ ‚ÿ5óFSG1ÝÿÿÿÿÿÿÿÿkSGG+JEXIT,GG% €€˜˜€‚ÿEXITKSGÊG/ .€8€‘€‚H€€%€ƒƒ‚ÿ6.1.1380 EXIT CORE¶tG€HB T€è€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Execution:( -- ) ( R: nest-sys -- )ýŒÊG}IA P€y€Œ˜RQ‚9€ €€ €€ €€ ‚ÿReturn control to the calling definition specified by nest-sys. Before executing EXIT within a do-loop, a program shall discard the loop-control parameters by executing UNLOOP.ƒ8€HJK f€p€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € € € ãáƖ‘€‰€ ‚ÿSee:3.2.3.3 Return stack, 6.1.2380 UNLOOP.+}I+J( €€R‚9€ ‚ÿ5J`J1¶ÿÿÿÿÿÿÿÿl`JŒJLFILL,+JŒJ% €€˜˜€‚ÿFILLK`J×J/ .€8€‘€‚H€€%€ƒƒ‚ÿ6.1.1540 FILL COREYŒJ0K< H€:€Œ˜RQ‚H€ €€ €€ €€ ‚ÿ( c-addr u char -- )·t×JçKC V€è€Œ˜RQ‚H€ €€ €€ €€ €€ ‚ÿIf u is greater than zero, store char in each of u consecutive characters of memory beginning at c-addr.*0KL' €€ ˜R‚H€ ‚ÿ5çKFL1æÿÿÿÿÿÿÿÿmFLrL8€FIND,LrL% €€˜˜€‚ÿFINDKFLœL/ .€8€‘€‚H€€%€ƒƒ‚ÿ6.1.1550 FIND COREw5rL4MB T€j€Œ˜RQ‚H€ €€ €€ €€ €€ ‚ÿ( c-addr -- c-addr 0 | xt 1 | xt -1 ) ֏œL OG \€€Œ˜RQ‚H€ €€ €€ €€ €€ ‚ÿFind the definition named in the counted string at c-addr. If the definition is not found, return c-addr and zero. If the definition is found, return its execution token xt. If the definition is immediate, also return one (1), otherwise also return minus-one (-1). For a given string, the values returned by FIND while compiling may differ from those returned while not compiling.ñ‚4M €o ¬€€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € € ãY­J¿€‰€ € ã-¬J¿€‰€ € ã7ìÆe€‰€ € € ‚ÿSee:3.4.2 Finding definition names, A.6.1.0070 ', A.6.1.2510 ['], A.6.1.2033 POSTPONE, D.6.7 Immediacy. O €L, O8€) "€€ ˜R‚9€ ‚ÿ7 €o€1Bÿÿÿÿÿÿÿÿno€€®ƒFM/MOD. 8€€% €€˜˜€‚ÿFM/MODl1o€ ; F€b€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.1561 FM/MOD «f-m-slash-mod»COREo!€xN l€B€Œ˜RQ‚H€ €€'€ €€'€ €€'€ €€'€ ‚ÿ( d1 n1 -- n2 n3 )^ ւ] ˆ€€Œ˜RQ‚H€ €€'€ €€'€€ €€'€ €€'€ €€'€ ‚ÿDivide d1 by n1, giving the floored quotient n3 and the remainder n2. Input and output stack arguments are signed. An ambiguous condition exists if n1 is zero or if the quotient lies outside the range of a single-cell signed integer. ¬Rx‚ƒZ „€€€^Œ˜RQ³~‚9€ ƒ€!€ ƒ€ € € ãíïW„€‰€ € ãîqٔ€‰€ ‚ÿSee:3.2.2.1 Integer division, 6.1.2214 SM/REM, 6.1.2370 UM/MOD.,ւ®ƒ) "€€ ˜R‚9€ ‚ÿ5‚ƒãƒ1œÿÿÿÿÿÿÿÿoツz…HERE,®ƒ„% €€˜˜€‚ÿHEREKãƒZ„/ .€8€‘€‚H€€%€ƒƒ‚ÿ6.1.1650 HERE CORE@„š„0 0€ €Œ˜RQ‚H€ €€ ‚ÿ( -- addr )P#Z„ê„- *€F€Œ˜RQ‚H€€ ‚ÿaddr is the data-space pointer.d(š„N…< H€P€^Œ˜RQ³~‚9€ ƒ€!€ ƒ€ € ‚ÿSee:3.3.3.2 Contiguous regions.,ê„z…) "€€ ˜R‚9€ ‚ÿ5N…¯…1Þÿÿÿÿÿÿÿÿp¯…ۅˆ‡HOLD,z…ۅ% €€˜˜€‚ÿHOLDK¯…&†/ .€8€‘€‚H€€%€ƒƒ‚ÿ6.1.1670 HOLD CORE@ۅf†0 0€ €Œ˜RQ‚H€ €€ ‚ÿ( char -- )ø®&†^‡J b€]€Œ˜RQ‚H€ €€ €€ ã2¬J¿€‰ãX­J¿‰€ ‚ÿAdd char to the beginning of the pictured numeric output string. An ambiguous condition exists if HOLD executes outside of a <# #> delimited number conversion.*f†ˆ‡' €€ ˜R‚H€ ‚ÿ2^‡º‡1Cÿÿÿÿÿÿÿÿqº‡ã‡õ‰I)ˆ‡ã‡% €€˜˜€‚ÿIHº‡+ˆ/ .€2€‘€‚H€€%€ƒƒ‚ÿ6.1.1680 I COREމ㇠‰U x€€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€ €€ €€ €€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Execution:( -- n|u ) ( R: loop-sys -- loop-sys )ÁŠ+ˆʉ7 <€€Œ˜RQ‚9€€ €€ ‚ÿn|u is a copy of the current (innermost) loop index. An ambiguous condition exists if the loop control parameters are unavailable.+ ‰õ‰( €€R‚9€ ‚ÿ3ʉ(Š1)ÿÿÿÿÿÿÿÿr(ŠRŠJŽIF*õ‰RŠ% € €˜˜€‚ÿIFI(Š›Š/ .€4€‘€‚H€€%€ƒƒ‚ÿ6.1.1700 IF CORE­kRŠH‹B T€Ö€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Compilation:( C: -- orig )=÷›Š…ŒF Z€ï€˜RS‚9€ €€ €€ €€ €€ ‚ÿPut the location of a new unresolved forward reference orig onto the control flow stack. Append the run-time semantics given below to the current definition. The semantics are incomplete until orig is resolved, e.g., by THEN or ELSE.RH‹׌9 B€2€^Œ˜RQ³~‚9€!ƒ€ ƒ€€ ‚ÿRun-time:( x -- )¢j…Œy8 @€Ô€˜RS‚9€ €€ €€ ‚ÿIf all bits of x are zero, continue execution at the location specified by the resolution of orig.ŠO׌ŽW ~€ž€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € € ã. d€‰€ € ã#›Óˆ€‰€ ‚ÿSee:3.2.3.2 Control flow stack, 6.1.1310 ELSE, 6.1.2270 THEN.+yJŽ( €€R‚9€ ‚ÿ: Ž„Ž1èÿÿÿÿÿÿÿÿs„ŽµŽŒÀIMMEDIATE1 JŽµŽ% €€˜˜€‚ÿIMMEDIATEP!„Ž/ .€B€‘€‚H€€%€ƒƒ‚ÿ6.1.1710 IMMEDIATE CORE3 µŽ8* $€€Œ˜RQ‚H€ ‚ÿ( -- )Ž‰ À+ $€€˜RS‚H€ ‚ÿMake the most recent definition an immediate word. An ambiguous condition exists if the most recent definition does not have a name.8 ÀJŽU8aÀ9 B€8€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € ‚ÿSee:D.6.7 Immediacy.+ ÀŒÀ( €€R‚9€ ‚ÿ7aÀÃÀ1íÿÿÿÿÿÿÿÿtÃÀñÀ­ÂINVERT. ŒÀñÀ% €€˜˜€‚ÿINVERTMÃÀ>Á/ .€<€‘€‚H€€%€ƒƒ‚ÿ6.1.1720 INVERT COREQñÀÁ< H€*€Œ˜RQ‚H€ €€'€ €€'€ ‚ÿ( x1 -- x2 )y>>ÁÂ; F€|€˜RS‚H€ €€'€ €€'€ ‚ÿInvert all bits of x1, giving its logical inverse x2.z/Á‚ÂK f€^€^Œ˜RQ³~‚9€!ƒ€ ƒ€ €€ € ãØ«J¿€‰€ ‚ÿSee:6.1.1910 NEGATE, 6.1.0270 0=.+­Â( €€R‚9€ ‚ÿ2‚ÂßÂ1œÿÿÿÿÿÿÿÿußÂÃsÅJ)­ÂÃ% €€˜˜€‚ÿJHßÂPÃ/ .€2€‘€‚H€€%€ƒƒ‚ÿ6.1.1730 J CORE¥ÃbÄm š€K€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€ €€ €€'€ €€'€ €€'€ €€'€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Execution:( -- n|u ) ( R: loop-sys1 loop-sys2 -- loop-sys1 loop-sys2 )æ§PÃHÅ? L€O€˜RS‚9€€ €€ €€'€ ‚ÿn|u is a copy of the next-outer loop index. An ambiguous condition exists if the loop control parameters of the next-outer loop, loop-sys1, are unavailable.+bÄsÅ( €€R‚9€ ‚ÿ4HŧÅ1ÿÿÿÿÿÿÿÿv§ÅÒÅ¿ÉKEY+sÅÒÅ% € €˜˜€‚ÿKEYJ§ÅÆ/ .€6€‘€‚H€€%€ƒƒ‚ÿ6.1.1750 KEY CORE@ÒÅ\Æ0 0€ €Œ˜RQ‚H€ €€ ‚ÿ( -- char )(õÆ„Ç3 4€ë€Œ˜RQ‚H€ €€ ‚ÿReceive one character char, a member of the implementation-defined character set. Keyboard events that do not correspond to such characters are discarded until a valid character is received, and those events are subsequently unavailable.Ž]\ÆÈ1 2€º€Œ˜RQ‚H€ €€ ‚ÿAll standard characters can be received. Characters received by KEY are not displayed. фÇÉ9 @€£€Œ˜RQ‚H€ €€ € € ‚ÿAny standard character returned by KEY has the numeric value specified in 3.1.2.1 Graphic characters. Programs that require the ability to receive control characters have an environmental dependency.x3È”ÉE Z€f€^Œ˜RQ³~‚9€!ƒ€ ƒ€ €€ € €€ ‚ÿSee:10.6.2.1307 EKEY, 10.6.1.1755 KEY?.+É¿É( €€R‚9€ ‚ÿ6”ÉõÉ14ÿÿÿÿÿÿÿÿwõÉ"Ê%ÍLEAVE-¿É"Ê% €€˜˜€‚ÿLEAVELõÉnÊ/ .€:€‘€‚H€€%€ƒƒ‚ÿ6.1.1760 LEAVE CORE¶t"Ê$ËB T€è€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Execution:( -- ) ( R: loop-sys -- )5ânÊYÌS t€Å€Œ˜RQ‚9€ ãvß ü€‰ãN=ºB‰€ ãvß ü€‰ãK=ºB‰€ ‚ÿDiscard the current loop control parameters. An ambiguous condition exists if they are unavailable. Continue execution immediately following the innermost syntactically enclosing DO ... LOOP or DO ... +LOOP.¡J$ËúÌW ~€”€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € € ãK=ºB€‰€ € ãN=ºB€‰€ ‚ÿSee:3.2.3.3 Return stack, 6.1.0140 +LOOP, 6.1.1800 LOOP.+YÌ%Í( €€R‚9€ ‚ÿ8úÌ]Í1bÿÿÿÿÿÿÿÿx]͌͜ÏLITERAL/ %ÍŒÍ% €€˜˜€‚ÿLITERALN]ÍÚÍ/ .€>€‘€‚H€€%€ƒƒ‚ÿ6.1.1780 LITERAL CORE§eŒÍÎB T€Ê€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Compilation:( x -- )sGÚÍôÎ, (€Ž€Œ˜RQ‚9€ ‚ÿAppend the run-time semantics given below to the current definition.RÎFÏ9 B€2€^Œ˜RQ³~‚9€!ƒ€ ƒ€€ ‚ÿRun-time:( -- x )LôÎ’Ï2 4€4€Œ˜RQ‚9€ €€ ‚ÿPlace x on the stack.+FÏœÏ( €€R‚9€ ‚ÿ5’Ï 1@ÿÿÿÿÿÿÿÿy 8CLOOPœÏ œÏ,œÏ8% €€˜˜€‚ÿLOOPK ƒ/ .€8€‘€‚H€€%€ƒƒ‚ÿ6.1.1800 LOOP CORE¯m82B T€Ú€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Compilation:( C: do-sys -- )aƒ“N j€'€Œ˜RQ‚9€ ãL=ºB€‰€ €€ ãN=ºB€‰€ ‚ÿAppend the run-time semantics given below to the current definition. Resolve the destination of all unresolved occurrences of LEAVE between the location given by do-sys and the next location for a transfer of control, to execute the words following the LOOP.‚=2E Z€z€^Œ˜RQ³~‚9€!ƒ€ ƒ€€'€ €€'€ ‚ÿRun-time:( -- ) ( R: loop-sys1 -- | loop-sys2 )b2“w0 .€e€Œ˜RQ‚9€ ‚ÿAn ambiguous condition exists if the loop control parameters are unavailable. Add one to the loop index. If the loop index is then equal to the loop limit, discard the loop parameters and continue execution immediately following the loop. Otherwise continue execution at the beginning of the loop.¡A` €‚€^Œ˜RQ³~‚9€!ƒ€ ƒ€ ãvß ü€‰€ € ãºp(€‰€ € ãL=ºB€‰€ ‚ÿSee:6.1.1240 DO, 6.1.1680 I, 6.1.1760 LEAVE.+wC( €€R‚9€ ‚ÿ7z1³ÿÿÿÿÿÿÿÿzzš*LSHIFT. Cš% €€˜˜€‚ÿLSHIFTf+z; F€V€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.1805 LSHIFT «l-shift»CORE[šiB T€2€Œ˜RQ‚H€ €€'€ €€ €€'€ ‚ÿ( x1 u -- x2 )8í¡K d€Û€Œ˜RQ‚H€ €€ €€'€ €€'€ €€ ‚ÿPerform a logical left shift of u bit-places on x1, giving x2. Put zeroes into the least significant bits vacated by the shift. An ambiguous condition exists if u is greater than or equal to the number of bits in a cell.^iÿ? N€>€^Œ˜RQ³~‚9€!ƒ€ ƒ€ ã³CMw‰€(‚ÿSee:6.1.2162 RSHIFT+¡*( €€R‚9€ ‚ÿ3ÿ]1†ÿÿÿÿÿÿÿÿ{]‡Ü M***‡% € €˜˜€‚ÿM*a&]è; F€L€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.1810 M* «m-star»CORE[‡C B T€2€Œ˜RQ‚H€ €€'€ €€'€ €€ ‚ÿ( n1 n2 -- d )p1è³ ? N€b€Œ˜RQ‚H€€ €€'€ €€'€ ‚ÿd is the signed product of n1 times n2.)C Ü & €€R‚H€ ‚ÿ4³  1qÿÿÿÿÿÿÿÿ| ; { MAX+Ü ; % € €˜˜€‚ÿMAXJ … / .€6€‘€‚H€€%€ƒƒ‚ÿ6.1.1870 MAX CORE`; å E Z€6€Œ˜RQ‚H€ €€'€ €€'€ €€'€ ‚ÿ( n1 n2 -- n3 )l*… Q B T€T€Œ˜RQ‚H€€'€ €€'€ €€'€ ‚ÿn3 is the greater of n1 and n2.*å { ' €€ ŒR‚H€ ‚ÿ4Q ¯ 1pÿÿÿÿÿÿÿÿ}¯ Ú  MIN+{ Ú % € €˜˜€‚ÿMINJ¯ $ / .€6€‘€‚H€€%€ƒƒ‚ÿ6.1.1880 MIN CORE`Ú „ E Z€6€Œ˜RQ‚H€ €€'€ €€'€ €€'€ ‚ÿ( n1 n2 -- n3 )k)$ ï B T€R€Œ˜RQ‚H€€'€ €€'€ €€'€ ‚ÿn3 is the lesser of n1 and n2.*„  ' €€ ŒR‚H€ ‚ÿ4ï M 1ÿÿÿÿÿÿÿÿ~M x b@MOD+ x % € €˜˜€‚ÿMODJM  / .€6€‘€‚H€€%€ƒƒ‚ÿ6.1.1890 MOD CORE`x "E Z€6€Œ˜RQ‚H€ €€'€ €€'€ €€'€ ‚ÿ( n1 n2 -- n3 )ª: Ìp ®€u€Œ˜RQ‚H€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€ €€ ‚ÿDivide n1 by n2, giving the single-cell remainder n3. An ambiguous condition exists if n2 is zero. If n1 and n2 differ in sign, the implementation-defined result returned will be the same as that returned by either the phrase >R S>D R> FM/MOD DROP or the phrase >R S>D R> SM/REM DROP.^%"6@9 B€J€^Œ˜RQ³~‚9€!ƒ€ ƒ€ Ì6@ € ‚ÿSee:3.2.2.1 Integer division.,Ìb@) "€€ ŒR‚9€ ‚ÿ56@—@12ÿÿÿÿÿÿÿÿ—@Ã@ÄCMOVE,b@Ã@% €€˜˜€‚ÿMOVEK—@A/ .€8€‘€‚H€€%€ƒƒ‚ÿ6.1.1900 MOVE COREaÃ@oAB T€>€Œ˜RQ‚H€ €€'€ €€'€ €€ ‚ÿ( addr1 addr2 u -- )®8ACv º€q€Œ˜RQ‚H€ €€ €€ €€'€ €€ €€'€ €€ €€ €€'€ €€ €€'€ ‚ÿIf u is greater than zero, copy the contents of u consecutive address units at addr1 to the u consecutive address units at addr2. After MOVE completes, the u consecutive address units at addr2 contain exactly what the u consecutive address units at addr1 contained before the move.{6oA˜CE Z€l€^Œ˜RQ³~‚9€!ƒ€ ƒ€ €€ € €€ ‚ÿSee:17.6.1.0910 CMOVE, 17.6.1.0920 CMOVE>.,CÄC) "€€ ŒR‚9€ ‚ÿ7˜CûC1ðÿÿÿÿÿÿÿÿ€ûC)DèENEGATE. ÄC)D% €€˜˜€‚ÿNEGATEMûCvD/ .€<€‘€‚H€€%€ƒƒ‚ÿ6.1.1910 NEGATE COREQ)DÇD< H€*€Œ˜RQ‚H€ €€'€ €€'€ ‚ÿ( n1 -- n2 )s7vD:E< H€n€Œ˜RQ‚H€ €€'€ €€'€ ‚ÿNegate n1, giving its arithmetic inverse n2. ‚1ÇDŒEQ r€b€^Œ˜RQ³~‚9€!ƒ€ ƒ€ ãºp(€‰€ € ãØ«J¿€‰€ ‚ÿSee:6.1.1720 INVERT, 6.1.0270 0=.,:EèE) "€€ ŒR‚9€ ‚ÿ3ŒEF1ÿÿÿÿÿÿÿÿFEF•GOR*èEEF% € €˜˜€‚ÿORIFŽF/ .€4€‘€‚H€€%€ƒƒ‚ÿ6.1.1980 OR CORE`EFîFE Z€6€Œ˜RQ‚H€ €€'€ €€'€ €€'€ ‚ÿ( x1 x2 -- x3 )};ŽFkGB T€v€Œ˜RQ‚H€€'€ €€'€ €€'€ ‚ÿx3 is the bit-by-bit inclusive-or of x1 with x2.*îF•G' €€ ŒR‚H€ ‚ÿ5kGÊG1ƒÿÿÿÿÿÿÿÿ‚ÊGöGHIOVER,•GöG% €€˜˜€‚ÿOVERKÊGAH/ .€8€‘€‚H€€%€ƒƒ‚ÿ6.1.1990 OVER CORE~'öG¿HW ~€N€Œ˜RQ‚H€ €€'€ €€'€ €€'€ €€'€ €€'€ ‚ÿ( x1 x2 -- x1 x2 x1 )`-AHI3 6€Z€Œ˜RQ‚H€ €€'€ ‚ÿPlace a copy of x1 on top of the stack.)¿HHI& €€R‚H€ ‚ÿ9II1ÜÿÿÿÿÿÿÿÿƒI±I\LPOSTPONE0 HI±I% €€˜˜€‚ÿPOSTPONEO IJ/ .€@€‘€‚H€€%€ƒƒ‚ÿ6.1.2033 POSTPONE COREŒt±IŒJH `€è€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€€€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Compilation:( «name» -- )ÓJÖKG \€§€Œ˜RQ‚9€ €€ €€ €€ €€ ‚ÿSkip leading space delimiters. Parse name delimited by a space. Find name. Append the compilation semantics of name to the current definition. An ambiguous condition exists if name is not found.[ŒJ1L? N€8€^Œ˜RQ³~‚9€ ƒ€!€ ƒ€ € € ‚ÿSee:3.4.1 Parsing.+ÖK\L( €€R‚9€ ‚ÿ51L‘L1µÿÿÿÿÿÿÿÿ„‘LœLM€QUIT,\LœL% €€˜˜€‚ÿQUITK‘LM/ .€8€‘€‚H€€%€ƒƒ‚ÿ6.1.2050 QUIT COREKœLSM0 0€6€Œ˜RQ‚H€ €€ ‚ÿ( -- ) ( R: i*x -- )úÇMMN3 4€€Œ˜RQ‚H€ €€ ‚ÿEmpty the return stack, store zero in SOURCE-ID if it is present, make the user input device the input source, and enter interpretation state. Do not display a message. Repeat the following:—dSMäN3 6€È€Œ°Ÿ‚H€€ €€ ‚ÿ–  Accept a line from the input source into the input buffer, set >IN to zero, and interpret.ʜMN®O. *€9€Œ°Ÿ‚H€€ ‚ÿ–  Display the implementation-defined system prompt if in interpretation state, all processing has been completed, and no ambiguous condition exists. h,äN"€< H€X€^Œ˜RQ³~‚9€ ƒ€!€ ƒ€ € ‚ÿSee:3.4 The Fort®O"€\Lh text interpreter.+®OM€( €€R‚9€ ‚ÿ3"€€€1âÿÿÿÿÿÿÿÿ…€€ª€[ƒR>*M€ª€% € €˜˜€‚ÿR>a&€€ ; F€L€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.2060 R> «r-from»CORE»sª€ƁH `€æ€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€ €€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Execution:( -- x ) ( R: x -- )f4 ,‚2 4€h€Œ˜RQ‚9€ €€ ‚ÿMove x from the return stack to the data stack.Ɓ0ƒ… ڀþ€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € € ã®CMw€‰€ € ã¯CMw€‰€ € ãÛ-’À‰€ € ãT¬J¿€‰€ € ãU¬J¿€‰€ ‚ÿSee:3.2.3.3 Return stack, 6.1.0580 >R, 6.1.2070 R@, 6.2.0340 2>R, 6.2.0410 2R>, 6.2.0415 2R@.+,‚[ƒ( €€R‚9€ ‚ÿ30ƒŽƒ1íÿÿÿÿÿÿÿÿ†Žƒžƒt†R@*[ƒžƒ% € €˜˜€‚ÿR@b'Žƒ„; F€N€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.2070 R@ «r-fetch»COREÅwžƒ߄N l€î€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€ €€ €€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Execution:( -- x ) ( R: x -- x )f4„E…2 4€h€Œ˜RQ‚9€ €€ ‚ÿCopy x from the return stack to the data stack.߄I†… ڀþ€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € € ã®CMw€‰€ € ã®CMw€‰€ € ãÛ-’À‰€ € ãT¬J¿€‰€ € ãU¬J¿€‰€ ‚ÿSee:3.2.3.3 Return stack, 6.1.0580 >R, 6.1.2060 R>, 6.2.0340 2>R, 6.2.0410 2R>, 6.2.0415 2R@.+E…t†( €€R‚9€ ‚ÿ8I†¬†1±ÿÿÿÿÿÿÿÿ‡¬†ۆ[‰RECURSE/ t†ۆ% €€˜˜€‚ÿRECURSEN¬†)‡/ .€>€‘€‚H€€%€ƒƒ‚ÿ6.1.2120 RECURSE COREaۆƇ< H€Â€^Œ˜RQ³~‚9€!ƒ€ ƒ‚ƒ€!€ ƒ‚ÿInterpretation:Interpretation semantics for this word are undefined.Compilation:( -- )äª)‡ªˆ: B€U€Œ˜RQ‚9€ €€ €€ ‚ÿAppend the execution semantics of the current definition to the current definition. An ambiguous condition exists if RECURSE appears in a definition after DOES>.†5Ƈ0‰Q r€j€^Œ˜RQ³~‚9€!ƒƒ€ ãwß ü€‰€ € ã°CMw€‰€ €!‚ÿSee:6.1.1250 DOES>, 6.1.2120 RECURSE.+ªˆ[‰( €€R‚9€ ‚ÿ70‰’‰1Óÿÿÿÿÿÿÿÿˆ’‰À‰bREPEAT. [‰À‰% €€˜˜€‚ÿREPEATM’‰ Š/ .€<€‘€‚H€€%€ƒƒ‚ÿ6.1.2140 REPEAT COREºrÀ‰NJH `€ä€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€ €€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Compilation:( C: orig dest -- )Ö Š؋; D€­€Œ˜RQ‚9€ €€ €€ ‚ÿAppend the run-time semantics given below to the current definition, resolving the backward reference dest. Resolve the forward reference orig using the location following the appended run-time semantics.HNJ Œ3 6€*€^Œ˜RQ³~‚9€!ƒ€ ƒ‚ÿRun-time:( -- )h6؋ˆŒ2 4€l€Œ˜RQ‚9€ €€ ‚ÿContinue execution at the location given by dest.„3 Œ Q r€f€^Œ˜RQ³~‚9€!ƒ€ ƒ€ ãÿ‡ë€‰€ € ãT£€‰€ ‚ÿSee:6.1.0760 BEGIN, 6.1.2430 WHILE.+ˆŒ7( €€R‚9€ ‚ÿ+ b( €€R‚9€ ‚ÿ47–1Àÿÿÿÿÿÿÿÿ‰–ÁPROT+bÁ% € €˜˜€‚ÿROT`%–!Ž; F€J€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.2160 ROT «rote»CORE-Á®Ž` €Z€Œ˜RQ‚H€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ ‚ÿ( x1 x2 x3 -- x2 x3 x1 )P&!ŽþŽ* $€L€Œ˜RQ‚H€ ‚ÿRotate the top three stack entries.)®Ž'& €€R‚H€ ‚ÿ)þŽP& €€R‚H€ ‚ÿ7'‡1”ÿÿÿÿÿÿÿÿŠ‡µ"ÂRSHIFT. Pµ% €€˜˜€‚ÿRSHIFTf+‡'À; F€V€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.2162 RSHµ'ÀPIFT «r-shift»CORE[µ‚ÀB T€2€Œ˜RQ‚H€ €€'€ €€ €€'€ ‚ÿ( x1 u -- x2 )8í'ÀºÁK d€Û€Œ˜RQ‚H€ €€ €€'€ €€'€ €€ ‚ÿPerform a logical right shift of u bit-places on x1, giving x2. Put zeroes into the most significant bits vacated by the shift. An ambiguous condition exists if u is greater than or equal to the number of bits in a cell.h&‚À"ÂB T€L€R‚H€ ‚€!ƒ€ ƒ€ ãO=ºB€‰€ € ‚‚ÿSee:6.1.1805 LSHIFT 3ºÁUÂ1ÿÿÿÿÿÿÿÿ‹UÂÂdÆS"*"ÂÂ% € €˜˜€‚ÿS"b'UÂáÂ; F€N€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.2165 S" «s-quote»COREºr›ÃH `€ä€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€€€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Compilation:( «ccc» -- )¯váÂJÄ9 B€ì€Œ˜RQ‚9€ €€ €€ ‚ÿParse ccc delimited by " (double-quote). Append the run-time semantics given below to the current definition.a"›Ã«Ä? N€D€^Œ˜RQ³~‚9€!ƒ€ ƒ€€ €€ ‚ÿRun-time:( -- c-addr u )ÃJÄnÅ@ N€€Œ˜RQ‚9€ €€ €€ €€ ‚ÿReturn c-addr and u describing a string consisting of the characters ccc. A program shall not alter the returned string. C«ÄÆ] Š€†€^Œ˜RQ³~‚9€ ƒ€!€ ƒ€ € € ã8²Ý󀉀 € ãio€€‰€ € ‚ÿSee:3.4.1 Parsing, 6.2.0855 C", 11.6.1.2165 S".+nÅ9Æ( €€R‚9€ ‚ÿ+ÆdÆ( €€R‚9€ ‚ÿ49ƘÆ1‘ÿÿÿÿÿÿÿÿŒ˜ÆÃÆ#ÈS>D+dÆÃÆ% € €˜˜€‚ÿS>Db'˜Æ%Ç; F€N€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.2170 S>D «s-to-d»COREGÃÆlÇ6 <€"€Œ˜RQ‚H€ €€ €€ ‚ÿ( n -- d )ŽX%ÇúÇ6 <€°€Œ˜RQ‚H€ €€ €€ ‚ÿConvert the number n to the double-cell number d with the same numerical value. )lÇ#È& €€R‚H€ ‚ÿ5úÇXÈ1æÿÿÿÿÿÿÿÿXÈ„È9ÊSIGN,#È„È% €€˜˜€‚ÿSIGNKXÈÏÈ/ .€8€‘€‚H€€%€ƒƒ‚ÿ6.1.2210 SIGN CORE= „È É0 0€€Œ˜RQ‚H€ €€ ‚ÿ( n -- )ÅÏÈÊ? L€‹€Œ˜RQ‚H€ €€ €€ €€ ‚ÿIf n is negative, add a minus sign to the beginning of the pictured numeric output string. An ambiguous condition exists if SIGN executes outside of a <# #> delimited number conversion.) É9Ê& €€R‚H€ ‚ÿ7ÊpÊ1GÿÿÿÿÿÿÿÿŽpʞʎÍSM/REM. 9ÊžÊ% €€˜˜€‚ÿSM/REMl1pÊ Ë; F€b€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.2214 SM/REM «s-m-slash-rem»COREo!žÊyËN l€B€Œ˜RQ‚H€ €€'€ €€'€ €€'€ €€'€ ‚ÿ( d1 n1 -- n2 n3 )\ ËÕÌZ ‚€€Œ˜RQ‚H€ €€'€ €€'€ €€'€ €€'€ €€'€ ‚ÿDivide d1 by n1, giving the symmetric quotient n3 and the remainder n2. Input and output stack arguments are signed. An ambiguous condition exists if n1 is zero or if the quotient lies outside the range of a single-cell signed integer. ŽTyˉÍ` €š€^Œ˜RQ³~‚9€ ƒ€!€ ƒ€ € € € ãùái€‰€ € € ãîqٔ€‰€ ‚ÿSee:3.2.2.1 Integer division, 6.1.1561 FM/MOD, 6.1.2370 UM/MOD.+ÕÌŽÍ( €€R‚9€ ‚ÿ7‰ÍëÍ1}ÿÿÿÿÿÿÿÿëÍÎeÏSOURCE. ŽÍÎ% €€˜˜€‚ÿSOURCEMëÍfÎ/ .€<€‘€‚H€€%€ƒƒ‚ÿ6.1.2216 SOURCE CORELβÎ6 <€,€Œ˜RQ‚H€ €€ €€ ‚ÿ( -- c-addr u )ŠWfÎ<Ï3 6€®€Œ˜RQ‚H€€ €€ ‚ÿc-addr is the address of, and u is the number of characters in, the input buffer.)²ÎeÏ& €€R‚H€ ‚ÿ6<Ï›Ï1!ÿÿÿÿÿÿÿÿ›ÏÈÏ» SPACE-eÏÈÏ% €€˜˜€‚ÿSPACEL›Ï / .€:€‘€‚H€€%€ƒƒ‚ÿ6.1.2220ÈÏ eÏ SPACE CORE3 ÈÏS * $€€Œ˜RQ‚H€ ‚ÿ( -- )? ’ * $€*€Œ˜RQ‚H€ ‚ÿDisplay one space.)S » & €€R‚H€ ‚ÿ7’ ò 1Mÿÿÿÿÿÿÿÿ‘ò  < SPACES. »  % €€˜˜€‚ÿSPACESMò m / .€<€‘€‚H€€%€ƒƒ‚ÿ6.1.2230 SPACES CORE=  ª 0 0€€Œ˜RQ‚H€ €€ ‚ÿ( n -- )i3m  6 <€f€Œ˜RQ‚H€ €€ €€ ‚ÿIf n is greater than zero, display n spaces.)ª < & €€R‚H€ ‚ÿ6 r 1Âÿÿÿÿÿÿÿÿ’r Ÿ 0 STATE-< Ÿ % €€˜˜€‚ÿSTATELr ë / .€:€‘€‚H€€%€ƒƒ‚ÿ6.1.2250 STATE COREBŸ - 0 0€$€Œ˜RQ‚H€ €€ ‚ÿ( -- a-addr ) ‰ë 6 € ΀€Œ˜RQ‚H€€ €€ €€ €€ €€ €€ €€ €€ €€ €€ €€ €€ €€ €€ ‚ÿa-addr is the address of a cell containing the compilation-state flag. STATE is true when in compilation state, false otherwise. The true value in STATE is non-zero, but is otherwise implementation-defined. Only the following standard words alter the value in STATE: : (colon), ; (semicolon), ABORT, QUIT, :NONAME, [ (left-bracket), and ] (right-bracket).Ï -   R€^Œ˜RQ³~‚9€ ƒ€!€ ƒ€€ ‚€!ƒ€ ƒ€ € € ã¬J¿€‰€ € € ã¬J¿€‰€ € ãB\W € € ãòŠn€‰€ € ã,¬J¿€‰€ € ã.¬J¿€‰€ € ãÔ@T€‰€ € €€ ‚ÿNote:A program shall not directly alter the contents of STATE.See:3.4 The Forth text interpreter, 6.1.0450 :, 6.1.0460 ;, 6.1.0670 ABORT, 6.1.2050 QUIT, 6.1.2500 [, 6.1.2540 ], 6.2.0455 :NONAME, 15.6.2.2250 STATE.+6 0 ( €€R‚9€ ‚ÿ5 e 1bÿÿÿÿÿÿÿÿ“e ‘  SWAP,0 ‘ % €€˜˜€‚ÿSWAPKe Ü / .€8€‘€‚H€€%€ƒƒ‚ÿ6.1.2260 SWAP COREo!‘ K N l€B€Œ˜RQ‚H€ €€'€ €€'€ €€'€ €€'€ ‚ÿ( x1 x2 -- x2 x1 )N$Ü ™ * $€H€Œ˜RQ‚H€ ‚ÿExchange the top two stack items.)K  & €€R‚H€ ‚ÿ5™ ÷ 15ÿÿÿÿÿÿÿÿ”÷ # ' THEN, # % €€˜˜€‚ÿTHENK÷ n / .€8€‘€‚H€€%€ƒƒ‚ÿ6.1.2270 THEN CORE­k#  B T€Ö€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Compilation:( C: orig -- )Ø¥n ó 3 4€K€˜RS‚9€ €€ ‚ÿAppend the run-time semantics given below to the current definition. Resolve the forward reference orig using the location of the appended run-time semantics.H ; 3 6€*€^Œ˜RQ³~‚9€!ƒ€ ƒ‚ÿRun-time:( -- )Aó | + &€,€˜RS‚9€ ‚ÿContinue execution.€/; ü Q r€^€^Œ˜RQ³~‚9€!ƒ€ ƒ€ ã. d€‰€ € ãºp(€‰€ ‚ÿSee:6.1.1310 ELSE, 6.1.1700 IF.+| ' ( €€R‚9€ ‚ÿ5ü \ 1Žÿÿÿÿÿÿÿÿ•\ ˆ @ TYPE,' ˆ % €€˜˜€‚ÿTYPEK\ Ó / .€8€‘€‚H€€%€ƒƒ‚ÿ6.1.2310 TYPE COREKˆ  5 :€,€˜RS‚H€ €€ €€ ‚ÿ( c-addr u -- )–[Ó Ž ; F€¶€˜RS‚H€ €€ €€ €€ ‚ÿIf u is greater than zero, display the character string specified by c-addr and u.É• } 4 6€+€˜RS‚H€ € € ‚ÿWhen passed a character in a character string whose character-defining bits have a value between hex 20 and 7E inclusive, the corresponding standard character, specified by 3.1.2.1 graphic characters, is displayed. Because different output devices can respond differently to control characters, programs that use control characters to perform specific functions have an environmental dependency.cŽ à E Z€<€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € ã/ d€‰€ ‚ÿSee:6.1.1320 EMIT.+} @ ( €€R‚à @ ' 9€ ‚ÿ3à J@ 1Iÿÿÿÿÿÿÿÿ–J@ t@ ŒA U.*@ t@ % € €˜˜€‚ÿU.`%J@ Ô@ ; F€J€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.2320 U. «u-dot»CORE< t@ A / .€€˜RS‚H€ €€ ‚ÿ( u -- )S$Ô@ cA / .€H€˜RS‚H€ €€ ‚ÿDisplay u in free field format.)A ŒA & €€R‚H€ ‚ÿ3cA ¿A 1îÿÿÿÿÿÿÿÿ—¿A éA ŠC U<*ŒA éA % € €˜˜€‚ÿU<f+¿A OB ; F€V€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.2340 U< «u-less-than»CORE]éA ¬B A R€8€˜RS‚H€ €€'€ €€'€ €€ ‚ÿ( u1 u2 -- flag )w9OB #C > L€r€˜RS‚H€€ €€'€ €€'€ ‚ÿflag is true if and only if u1 is less than u2.X¬B {C ? N€2€^Œ˜RQ³~‚9€!ƒƒ€ ã¬J¿€‰€ ‚ÿSee:6.1.0480 <.+#C ŠC ( €€R‚9€ ‚ÿ4{C ÚC 1Îÿÿÿÿÿÿÿÿ˜ÚC D ¢E UM*+ŠC D % € €˜˜€‚ÿUM*d)ÚC iD ; F€R€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.2360 UM* «u-m-star»CORE[D ÄD A R€4€˜RS‚H€ €€'€ €€'€ €€ ‚ÿ( u1 u2 -- ud )µsiD yE B T€æ€˜RS‚H€ €€'€ €€'€ €€ ‚ÿMultiply u1 by u2, giving the unsigned double-cell product ud. All values and arithmetic are unsigned.)ÄD ¢E & €€R‚H€ ‚ÿ7yE ÙE 1(ÿÿÿÿÿÿÿÿ™ÙE F þH UM/MOD. ¢E F % €€˜˜€‚ÿUM/MODl1ÙE sF ; F€b€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.2370 UM/MOD «u-m-slash-mod»COREk F ÞF K f€@€Œ˜RQ‚H€ €€ €€'€ €€'€ €€'€ ‚ÿ( ud u1 -- u2 u3 )IósF 'H V z€ç€˜RS‚H€ €€ €€'€ €€'€ €€'€ €€'€ ‚ÿDivide ud by u1, giving the quotient u3 and the remainder u2. All values and arithmetic are unsigned. An ambiguous condition exists if u1 is zero or if the quotient lies outside the range of a single-cell unsigned integer.¬RÞF ÓH Z „€€€^Œ˜RQ³~‚9€ ƒ€!€ ƒ€ € € ãùái€‰€ € ãíïW„€‰€ ‚ÿSee:3.2.2.1 Integer division, 6.1.1561 FM/MOD, 6.1.2214 SM/REM.+'H þH ( €€R‚9€ ‚ÿ7ÓH 5I 1âÿÿÿÿÿÿÿÿš5I cI L UNLOOP. þH cI % €€˜˜€‚ÿUNLOOPN5I ±I / .€>€‘€‚H€€%€ƒƒ‚ÿ6.1.2380 UNLOOP CORE¶tcI gJ B T€è€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Execution:( -- ) ( R: loop-sys -- )(í±I K ; D€Û€Œ˜RQ‚9€ €€ €€ ‚ÿDiscard the loop-control parameters for the current nesting level. An UNLOOP is required for each nesting level before the definition may be EXITed. An ambiguous condition exists if the loop-control parameters are unavailable.Z!gJ éK 9 B€B€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € ‚ÿSee:3.2.3.3 Return stack.+K L ( €€R‚9€ ‚ÿ6éK JL 1:ÿÿÿÿÿÿÿÿ›JL wL €O UNTIL-L wL % €€˜˜€‚ÿUNTILLJL ÃL / .€:€‘€‚H€€%€ƒƒ‚ÿ6.1.2390 UNTIL CORE­kwL pM B T€Ö€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Compilation:( C: dest -- )€qÃL N 3 6€â€Œ˜RQ‚9€ €€ ‚ÿAppend the run-time semantics given below to the current definition, resolving the backward reference dest.RpM fN 9 B€2€^Œ˜RQ³~‚9€!ƒ€ ƒ€€ ‚ÿRun-time:( x -- )WN õN 8 @€®€Œ˜RQ‚9€ €€ €€ ‚ÿIf all bits of x are zero, continue execution at the location specified by dest.`fN UO B T€<€^Œ˜RQ³~‚9€!ƒ€ ƒ€ ãÿ‡ë€‰€ ‚ÿSee:6.1.0760 BEGIN.+õN €O ( €€R‚9€ ‚ÿ9UO ¹O 1×ÿÿÿÿÿÿÿÿœ¹O € ªƒ VARIABLE0 €O € % €€˜˜€‚ÿVARIABLE¹O € €O O ¹O [€ / .€@€‘€‚H€€%€ƒƒ‚ÿ6.1.2410 VARIABLE CORER € ­€ 6 <€8€Œ˜RQ‚H€ €€€€ ‚ÿ( «name» -- )Ê[€ ° 9 @€•€Œ˜RQ‚H€ €€ €€ ‚ÿSkip leading space delimiters. Parse name delimited by a space. Create a definition for name with the execution semantics defined below. Reserve one cell of data space at an aligned address.e,­€ ‚ 9 B€X€Œ˜RQ‚H€€ €€ €€ ‚ÿname is referred to as a «variable».e&° z‚ ? N€L€^Œ˜RQ³~‚9€!ƒ€€!€ ƒ€€ ‚ÿname Execution:( -- a-addr )®~‚ (ƒ 0 0€ü€Œ˜RQ‚9€€ ‚ÿa-addr is the address of the reserved cell. A program is responsible for initializing the contents of the reserved cell.Wz‚ ƒ < H€6€^Œ˜RQ³~‚9€ ƒ€!€ ƒ€ € ‚ÿSee:3.4.1 Parsing.+(ƒ ªƒ ( €€R‚9€ ‚ÿ6ƒ àƒ 1Ëÿÿÿÿÿÿÿÿàƒ „ §‡ WHILE-ªƒ „ % €€˜˜€‚ÿWHILELàƒ Y„ / .€:€‘€‚H€€%€ƒƒ‚ÿ6.1.2430 WHILE COREÇy „ … N l€ò€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€ €€ €€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Compilation:( C: dest -- orig dest )gY„ ‡† N j€3€Œ˜RQ‚9€ €€ €€ €€ €€ €€ ‚ÿPut the location of a new unresolved forward reference orig onto the control flow stack, under the existing dest. Append the run-time semantics given below to the current definition. The semantics are incomplete until orig and dest are resolved (e.g., by REPEAT).R … ن 9 B€2€^Œ˜RQ³~‚9€!ƒ€ ƒ€€ ‚ÿRun-time:( x -- )£j‡† |‡ 9 B€Ô€Œ˜RQ‚9€ €€ €€ ‚ÿIf all bits of x are zero, continue execution at the location specified by the resolution of orig.+ن §‡ ( €€R‚9€ ‚ÿ5|‡ ܇ 1ÿÿÿÿÿÿÿÿžÜ‡ ˆ ی WORD,§‡ ˆ % €€˜˜€‚ÿWORDK܇ Sˆ / .€8€‘€‚H€€%€ƒƒ‚ÿ6.1.2450 WORD COREr0ˆ ň B T€`€Œ˜RQ‚H€ €€ €€€€ €€ ‚ÿ( char «ccc» -- c-addr ) ÓSˆ щ 9 @€§€Œ˜RQ‚H€ €€ €€ ‚ÿSkip leading delimiters. Parse characters ccc delimited by char. An ambiguous condition exists if the length of the parsed string is greater than the implementation-defined length of a counted string.|Kň M‹ 1 0€—€Œ˜RQ‚H€€ ‚ÿc-addr is the address of a transient region containing the parsed word as a counted string. If the parse area was empty or contained no characters other than the delimiter, the resulting string has a zero length. A space, not included in the length, follows the string. A program may replace characters within the string.bщ ¯Œ T v€€^Œ˜RQ³~‚9€ ƒ€!€ ƒ€€ ‚€!ƒ€ ƒ€ € € € ‚ÿNote:The requirement to follow the string with a space is obsolescent and is included as a concession to existing programs that use CONVERT. A program shall not depend on the existence of the space.See:3.3.3.6 Other transient regions, 3.4.1 Parsing.,M‹ ی ) "€€ ˜R‚9€ ‚ÿ4¯Œ  1˜ÿÿÿÿÿÿÿÿŸ : ¡Ž XOR+ی : % € €˜˜€‚ÿXOR`% š ; F€J€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.2490 XOR «x-or»CORE`: ú E Z€6€Œ˜RQ‚H€ €€'€ €€'€ €€'€ ‚ÿ( x1 x2 -- x3 )};š wŽ B T€v€Œ˜RQ‚H€€'€ €€'€ €€'€ ‚ÿx3 is the bit-by-bit exclusive-or of x1 with x2.*ú ¡Ž ' €€ ˜R‚H€ ‚ÿ2wŽ ӎ 1¯ÿÿÿÿÿÿÿÿ ÓŽ üŽ †Á [)¡Ž üŽ % €€˜˜€‚ÿ[f+ӎ b ; F€V€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.2500 [ «left-bracket»COREâœüŽ PÀ F Z€9€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ‚€!ƒ€ ƒ‚ÿInterpretation:Interpretation semantics for this word are undefined.Compilation:b PÀ ¡Ž Perform the execution semantics given below.Execution:( -- )k9b »À 2 4€r€Œ˜RQ‚9€ €€ ‚ÿEnter interpretation state. [ is an immediate word.ŸQPÀ ZÁ N l€¢€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € € € € ã.¬J¿€‰€ ‚ÿSee:3.4 The Forth text interpreter, 3.4.5 Compilation, 6.1.2540 ].,»À †Á ) "€€ ˜R‚9€ ‚ÿ4ZÁ ºÁ 1Öÿÿÿÿÿÿÿÿ¡ºÁ åÁ ŠÆ [']+†Á åÁ % € €˜˜€‚ÿ[']h-ºÁ M ; F€Z€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.2510 ['] «bracket-tick»COREŒtåÁ à H `€è€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€€€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Compilation:( «name» -- )ԚM Ýà : B€5€Œ˜RQ‚9€ €€ €€ ‚ÿSkip leading space delimiters. Parse name delimited by a space. Find name. Append the run-time semantics given below to the current definition.j8 à GÄ 2 4€p€Œ˜RQ‚9€ €€ ‚ÿAn ambiguous condition exists if name is not found.SÝà šÄ 9 B€4€^Œ˜RQ³~‚9€!ƒ€ ƒ€€ ‚ÿRun-time:( -- xt )ÂGÄ žÅ \ †€…€Œ˜RQ‚9€ €€€ €€ €€€ €€ €€€ €€ ‚ÿPlace name’s execution token xt on the stack. The execution token returned by the compiled phrase «['] X » is the same value returned by «' X » outside of compilation state.§VšÄ _Æ Q r€¬€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € € €€ € €€ € € ‚ÿSee:3.4.1 Parsing, A.6.1.0070 ', A.6.1.2033 POSTPONE, D.6.7 Immediacy.+žÅ ŠÆ ( €€R‚9€ ‚ÿ7_Æ ÁÆ 1˜ÿÿÿÿÿÿÿÿ¢ÁÆ ïÆ VÊ [CHAR]. ŠÆ ïÆ % €€˜˜€‚ÿ[CHAR]k0ÁÆ ZÇ ; F€`€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.2520 [CHAR] «bracket-char»COREŒtïÆ È H `€è€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€€€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Compilation:( «name» -- )ÀŒZÇ ÖÈ 4 6€€Œ˜RQ‚9€ €€ ‚ÿSkip leading space delimiters. Parse name delimited by a space. Append the run-time semantics given below to the current definition.UÈ +É 9 B€8€^Œ˜RQ³~‚9€!ƒ€ ƒ€€ ‚ÿRun-time:( -- char )‚JÖÈ ­É 8 @€”€Œ˜RQ‚9€ €€ €€ ‚ÿPlace char, the value of the first character of name, on the stack.~0+É +Ê N l€`€^Œ˜RQ³~‚9€ ƒ€!€ ƒ€ € € 㜳Ý󀉀 € ‚ÿSee:3.4.1 Parsing, 6.1.0895 CHAR.+­É VÊ ( €€R‚9€ ‚ÿ2+Ê ˆÊ 1³ÿÿÿÿÿÿÿÿ£ˆÊ ±Ê 3Ì ])VÊ ±Ê % €€˜˜€‚ÿ]g,ˆÊ Ë ; F€X€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.1.2540 ] «right-bracket»CORE3 ±Ê KË * $€€Œ˜RQ‚H€ ‚ÿ( -- )EË Ë * $€6€Œ˜RQ‚H€ ‚ÿEnter compilation state.£RKË 3Ì Q r€€€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € € € € € ã,¬J¿€‰€ ‚ÿSee:3.4 The Forth text interpreter, 3.4.5 Compilation, 6.1.2500 [.1Ë dÌ 1Çÿÿÿÿÿÿÿÿ€ÿÿÿÿdÌ úÌ '3Ì ‹Ì $ €€R€ ‚ÿH dÌ ÓÌ ( €@€°˜€€‚ÿ6.2 Core extension words '‹Ì úÌ $ €€R€ ‚ÿ5ÓÌ /Í 15ÿÿÿÿÿÿÿÿ¥/Í [Í _Ï #TIB,úÌ [Í % €€˜˜€‚ÿ#TIBm2/Í ÈÍ ; F€d€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.2.0060 #TIB «number-t-i-b»CORE EXTB[Í Î 0 0€$€Œ˜RQ‚H€ €€ ‚ÿ( -- a-addr )“fÈÍ Î - *€Ì€˜RS‚H€€ ‚ÿa-addr is the address of a cell containing the number of characters in the terminal input buffer.—a Î 4Ï 6 <€Â€^Œ˜RQ³~‚9€!ƒƒ€ €!‚ÿNote:This word is obsolescent and is included as a concession to existing implementations.+Î _Ï ( €€R‚9€ ‚ÿ34Ï ’Ï 1‹ÿÿÿÿÿÿÿÿŠ’Ï ŒÏ  .(*_Ï ŒÏ % € €˜˜€‚ÿ.(h-’Ï 0 ; F€Z€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.2.0200ŒÏ 0 _Ï .( «dot-paren»CORE EXT¬dŒÏ Ü H `€È€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€€€ ‚ÿCompilation:Perform the execution semantics given below.Execution:( «ccc» -- )™\0 u = J€ž€˜RS‚9€ €€ €€ €€ ‚ÿParse and display ccc delimited by ) (right parenthesis). .( is an immediate word.|.Ü ñ N l€\€^Œ˜RQ³~‚9€ ƒ€!€ ƒ€ € € ãÕ«J¿€‰€ € ‚ÿSee:3.4.1 Parsing, 6.1.0190 .".+u  ( €€R‚9€ ‚ÿ3ñ O 1@ÿÿÿÿÿÿÿÿ§O y ˆ .R* y % € €˜˜€‚ÿ.Rd)O Ý ; F€R€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.2.0210 .R «dot-r»CORE EXTQy . < H€*€Œ˜RQ‚H€ €€'€ €€'€ ‚ÿ( n1 n2 -- )1áÝ _ P n€Ã€˜RS‚H€ €€'€ €€'€ €€'€ €€'€ ‚ÿDisplay n1 right aligned in a field n2 characters wide. If the number of characters required to display n1 is greater than n2, all digits are displayed with no leading spaces in a field as wide as necessary.). ˆ & €€R‚H€ ‚ÿ4_ Œ 1~ÿÿÿÿÿÿÿÿšŒ ç 4 0<>+ˆ ç % € €˜˜€‚ÿ0<>o4Œ V ; F€h€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.2.0260 0<> «zero-not-equals»CORE EXTJç   6 <€(€Œ˜RQ‚H€ €€ €€ ‚ÿ( x -- flag )k9V  2 4€r€˜RS‚H€€ €€ ‚ÿflag is true if and only if x is not equal to zero.)  4 & €€R‚H€ ‚ÿ3  g 1yÿÿÿÿÿÿÿÿ©g ‘ Ù 0>*4 ‘ % € €˜˜€‚ÿ0>k0g ü ; F€`€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.2.0280 0> «zero-greater»CORE EXTI‘ E 5 :€(€˜RS‚H€ €€ €€ ‚ÿ( n -- flag )k9ü ° 2 4€r€˜RS‚H€€ €€ ‚ÿflag is true if and only if n is greater than zero.)E Ù & €€R‚H€ ‚ÿ4°  1Mÿÿÿÿÿÿÿÿª  8 T 2>R+Ù 8 % € €˜˜€‚ÿ2>Rh-    ; F€Z€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.2.0340 2>R «two-to-r»CORE EXTã‚8 ƒ a €€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€'€ €€'€ €€'€ €€'€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Execution:( x1 x2 -- ) ( R: -- x1 x2 )£`  & C V€À€˜RS‚9€ €€'€ €€'€ €€ ‚ÿTransfer cell pair x1 x2 to the return stack. Semantically equivalent to SWAP >R >R.~ƒ ) … ڀü€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € € ã­CMw€‰€ € ã®CMw€‰€ € ã¯CMw€‰€ € ãT¬J¿€‰€ € ãU¬J¿€‰€ ‚ÿSee:3.2.3.3 Return stack, 6.1.0580 >R, 6.1.2060 R>, 6.1.2070 R@, 6.2.0410 2R>, 6.2.0415 2R@.+& T ( €€R‚9€ ‚ÿ4) ˆ 1Tÿÿÿÿÿÿÿÿ«ˆ ³ Ö 2R>+T ³ % € €˜˜€‚ÿ2R>j/ˆ  ; F€^€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.2.0410 2R> «two-r-from»CORE EXT䃳  a €€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€'€ €€'€ €€'€ €€'€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Execution:( -- x1 x2 ) ( R: x1 x2 -- )§c š D X€Æ€˜RS‚9€ €€'€ €€'€ €€ ‚ÿTransfer cell pair x1 x2 from the return stack. Semantically equivalent to R> R> SWAP.~ « … ڀü€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € € ã­CMw€‰€ € ã®CMw€‰€ € ã¯CMw€‰€ € ãÛ-’À‰€ € ãU¬J¿€‰€ ‚ÿSee:3.2.3.3 Return stack, 6.1.0580 >R, 6.1.2060 R>, 6.1.2070 R@, 6.2.0340 2>R, 6.2.0415 2R@.+š Ö ( €€R‚9€ ‚ÿ4«  1Õÿÿÿÿÿÿÿÿ¬  5 ŠB 2R@+Ö 5 % € €˜˜€‚ÿ2R@k0    ; F€`€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.2.0415 2R@ «two-r-fetch»CORE EXT5 ®@ s Ž€€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€'€ €€'€ €€'€ €€'€ €  ®@ Ö €'€ €€'€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Execution:( -- x1 x2 ) ( R: x1 x2 -- x1 x2 )®j  \A D X€Ô€˜RS‚9€ €€'€ €€'€ €€ ‚ÿCopy cell pair x1 x2 from the return stack. Semantically equivalent to R> R> 2DUP >R >R SWAP.~®@ _B … ڀü€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € € ã­CMw€‰€ € ã®CMw€‰€ € ã¯CMw€‰€ € ãÛ-’À‰€ € ãT¬J¿€‰€ ‚ÿSee:3.2.3.3 Return stack, 6.1.0580 >R, 6.1.2060 R>, 6.1.2070 R@, 6.2.0340 2>R, 6.2.0410 2R>.+\A ŠB ( €€R‚9€ ‚ÿ8_B ÂB 1lÿÿÿÿÿÿÿÿ­ÂB ñB ,I :NONAME/ ŠB ñB % €€˜˜€‚ÿ:NONAMEq6ÂB bC ; F€l€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.2.0455 :NONAME «colon-no-name»CORE EXT`*ñB ÂC 6 <€T€Œ˜RQ‚H€ €€ €€ ‚ÿ( C: -- colon-sys ) ( S: -- xt )õœbC ·D 8 >€{€˜RS‚H€ €€ €€ ‚ÿCreate an execution token xt, enter compilation state and start the current definition, producing colon-sys. Append the initiation semantics given below to the current definition.ê­ÂC ¡E = H€[€˜RS‚H€ €€ €€ €€ ‚ÿThe execution semantics of xt will be determined by the words compiled into the body of the definition. This definition can be executed later by using xt EXECUTE.՞·D vF 7 <€=€˜RS‚H€ €€ € € ‚ÿIf the control-flow stack is implemented using the data stack, colon-sys shall be the topmost item on the data stack. See 3.2.3.2 Control-flow stack.ƒ;¡E ùF H `€v€^Œ˜RQ³~‚9€ ƒ€!€ ƒ€€ €€ €€ ‚ÿInitiation:( i*x -- i*x ) ( R: -- nest-sys )ˌvF ÄG ? L€€˜RS‚9€ €€ €€ €€ ‚ÿSave implementation-dependent information nest-sys about the calling definition. The stack effects i*x represent arguments to xt.l'ùF 0H E Z€N€^Œ˜RQ³~‚9€!ƒ€€!€ ƒ€€ €€ ‚ÿxt Execution:( i*x -- j*x )ьÄG I E X€€˜RS‚9€ €€ €€ €€ €€ ‚ÿExecute the definition specified by xt. The stack effects i*x and j*x represent arguments to and results from xt, respectively.+0H ,I ( €€R‚9€ ‚ÿ3I _I 1ýÿÿÿÿÿÿÿÿ®_I ‰I UK <>*,I ‰I % € €˜˜€‚ÿ<>i._I òI ; F€\€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.2.0500 <> «not-equals»CORE EXT^‰I PJ B T€8€Œ˜RQ‚H€ €€'€ €€'€ €€ ‚ÿ( x1 x2 -- flag )ŠKòI ÚJ ? N€–€Œ˜RQ‚H€€ €€'€ €€'€ ‚ÿflag is true if and only if x1 is not bit-for-bit the same as x2.)PJ K & €€R‚H€ ‚ÿ)ÚJ ,K & €€R‚H€ ‚ÿ)K UK & €€R‚H€ ‚ÿ4,K ‰K 1Úÿÿÿÿÿÿÿÿ¯‰K ŽK ­‚ ?DO+UK ŽK % € €˜˜€‚ÿ?DOk0‰K L ; F€`€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.2.0620 ?DO «question-do»CORE EXT¯mŽK ÎL B T€Ú€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Compilation:( C: -- do-sys ) ËL ÚM A P€—€Œ˜RQ‚9€ €€ €€ €€ ‚ÿPut do-sys onto the control-flow stack. Append the run-time semantics given below to the current definition. The semantics are incomplete until resolved by a consumer of do-sys such as LOOP.¢EÎL |N ] Š€Š€^Œ˜RQ³~‚9€!ƒ€ ƒ€€'€ €€'€ €€'€ €€'€ €€ ‚ÿRun-time:( n1|u1 n2|u2 -- ) ( R: -- | loop-sys )pÇÚM ø€ © €Œ˜RQ‚9€ €€'€ €€'€ €€'€ €€'€ €€ €€'€ €€'€ €€'€ €€'€ €€ €€'€ €€'€ €€'€ €€'€ ‚ÿIf n1|u1 is equal to n2|u2, continue execution at the location given by the consumer of do-sys. Otherwise set up loop control parameters with index n2|u2 and limit n1|u1 and continue execut|N ø€ UK ing immediately following ?DO. Anything already on the return stack becomes unavailable until the loop control parameters are discarded. An ambiguous condition exists if n1|u1 and n2|u2 are not both of the same type.4Ÿ|N ,‚ • ø€?€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € € ãK=ºB€‰€ € ãvß ü€‰€ € ãºp(€‰€ € ãL=ºB€‰€ € ãN=ºB€‰€ € ãáƖ‘€‰€ ‚ÿSee:3.2.3.2 Control-flow stack, 6.1.0140 +LOOP, 6.1.1240 DO, 6.1.1680 I, 6.1.1760 LEAVE, 6.1.1800 LOOP, 6.1.2380 UNLOOP.+ø€ W‚ ( €€R‚9€ ‚ÿ+,‚ ‚‚ ( €€R‚9€ ‚ÿ+W‚ ­‚ ( €€R‚9€ ‚ÿ6‚‚ ゠1~ÿÿÿÿÿÿÿÿ°ã‚ ƒ ]† AGAIN-­‚ ƒ % €€˜˜€‚ÿAGAINQ"゠aƒ / .€D€‘€‚H€€%€ƒƒ‚ÿ6.2.0700 AGAIN CORE EXT­kƒ „ B T€Ö€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Compilation:( C: dest -- )€qaƒ ²„ 3 6€â€Œ˜RQ‚9€ €€ ‚ÿAppend the run-time semantics given below to the current definition, resolving the backward reference dest.H„ ú„ 3 6€*€^Œ˜RQ³~‚9€!ƒ€ ƒ‚ÿRun-time:( -- )Ԛ²„ ΅ : B€5€Œ˜RQ‚9€ €€ €€ ‚ÿContinue execution at the location specified by dest. If no other control flow words are used, any program code after AGAIN will not be executed.dú„ 2† E Z€>€^Œ˜RQ³~‚9€!ƒ€ ƒ€ € ãÿ‡ë€‰€ ‚ÿSee:6.1.0760 BEGIN.+΅ ]† ( €€R‚9€ ‚ÿ32† † 1Éÿÿÿÿÿÿÿÿ±† º† RŠ C"*]† º† % € €˜˜€‚ÿC"f+† ‡ ; F€V€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.2.0855 C" «c-quote»CORE EXTºrº† ڇ H `€ä€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€€€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Compilation:( «ccc» -- )°x ‡ Šˆ 8 @€ð€˜RS‚9€ €€ €€ ‚ÿParse ccc delimited by " (double-quote) and append the run-time semantics given below to the current definition.Wڇ ሠ9 B€<€^Œ˜RQ³~‚9€!ƒ€ ƒ€€ ‚ÿRun-time:( -- c-addr )±yŠˆ ’‰ 8 @€ò€˜RS‚9€ €€ €€ ‚ÿReturn c-addr, a counted string consisting of the characters ccc. A program shall not alter the returned string.•Aሠ'Š T x€‚€^Œ˜RQ³~‚9€ ƒ€!€ ƒ€ € € ãio€€‰€ € €€ ‚ÿSee:3.4.1 Parsing, 6.1.2165 S", 11.6.1.2165 S". +’‰ RŠ ( €€R‚9€ ‚ÿ5'Š ‡Š 1Qÿÿÿÿÿÿÿÿ²‡Š ³Š Ӎ CASE,RŠ ³Š % €€˜˜€‚ÿCASEO ‡Š ‹ / .€@€‘€‚H€€%€ƒƒ‚ÿ6.2.0873 CASE CORE EXT±o³Š ³‹ B T€Þ€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Compilation:( C: -- case-sys )Ï‹ vŒ 4 6€€Œ˜RQ‚9€ €€ ‚ÿMark the start of the CASE ... OF ... ENDOF ... ENDCASE structure. Append the run-time semantics given below to the current definition.H³‹ ŸŒ 3 6€*€^Œ˜RQ³~‚9€!ƒ€ ƒ‚ÿRun-time:( -- )BvŒ  , (€,€Œ˜RQ‚9€ ‚ÿContinue execution.§GŸŒ § ` €Ž€^Œ˜RQ³~‚9€!ƒ€ ƒ€ ã3 d€‰€ € ã4 d€‰€ € ã~À]€‰€ ‚ÿSee:6.2.1342 ENDCASE, 6.2.1343 ENDOF, 6.2.1950 OF., Ӎ ) "€€ ˜R‚9€ ‚ÿ9§ Ž 1*ÿÿÿÿÿÿÿÿ³ Ž <Ž @À COMPILE,0 Ӎ <Ž % €€˜˜€‚ÿCOMPILE,r7 Ž ®Ž ; F€n€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.2.0945 COMPILE, «compile-comma»CORE EXTŠd<Ž T B T€È€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒƒ€ €€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Execution:( xt -- )Ž€®Ž À 4 6€€Œ˜RQ‚9€ €€ ‚ÿAppend the execution semantics of the definition represented by xt to the execution semantics of the current definitT À Ӎ ion. ,T @À ) "€€ ˜R‚9€ ‚ÿ8À xÀ 1bÿÿÿÿÿÿÿÿŽxÀ §À ØÄ CONVERT/ @À §À % €€˜˜€‚ÿCONVERTR#xÀ ùÀ / .€F€‘€‚H€€%€ƒƒ‚ÿ6.2.0970 CONVERT CORE EXT{-§À tÁ N l€Z€Œ˜RQ‚H€ €€'€ €€'€ €€'€ €€'€ ‚ÿ( ud1 c-addr1 -- ud2 c-addr2 )&žùÀ šÃ n ª€q€Œ˜RQ‚H€€'€ €€'€ €€ €€'€ €€'€ €€ €€'€ €€'€ ‚ÿud2 is the result of converting the characters within the text beginning at the first character after c-addr1 into digits, using the number in BASE, and adding each digit to ud1 after multiplying ud1 by the number in BASE. Conversion continues until a character that is not convertible is encountered. c-addr2 is the location of the first unconverted character. An ambiguous condition exists if ud2 overflows.ŒtÁ ¬Ä V z€y€^Œ˜RQ³~‚9€ ƒ€!€ ƒ€ ãÁ”@T€‰€ ‚€!ƒ€ ƒ€ € ‚ÿNote:This word is obsolescent and is included as a concession to existing implementations. Its function is superseded by 6.1.0570 >NUMBER.See:3.2.1.2 Digit conversion.,šÃ ØÄ ) "€€ ˜R‚9€ ‚ÿ8¬Ä Å 1ÓÿÿÿÿÿÿÿÿµÅ ?Å áÈ ENDCASE/ ØÄ ?Å % €€˜˜€‚ÿENDCASEl1Å «Å ; F€b€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.2.1342 ENDCASE «end-case»CORE EXT±o?Å \Æ B T€Þ€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Compilation:( C: case-sys -- )ú¿«Å VÇ ; D€€Œ˜RQ‚9€ €€ €€ ‚ÿMark the end of the CASE ... OF ... ENDOF ... ENDCASE structure. Use case-sys to resolve the entire structure. Append the run-time semantics given below to the current definition.R\Æ šÇ 9 B€2€^Œ˜RQ³~‚9€!ƒ€ ƒ€€ ‚ÿRun-time:( x -- )j8VÇ È 2 4€p€Œ˜RQ‚9€ €€ ‚ÿDiscard the case selector x and continue execution.€DšÇ ¶È ` €ˆ€^Œ˜RQ³~‚9€!ƒ€ ƒ€ ã9²Ý󀉀 € ã4 d€‰€ € ã~À]€‰€ ‚ÿSee:6.2.0873 CASE, 6.2.1343 ENDOF, 6.2.1950 OF.+È áÈ ( €€R‚9€ ‚ÿ6¶È É 1°ÿÿÿÿÿÿÿÿ¶É DÉ ÃÍ ENDOF-áÈ DÉ % €€˜˜€‚ÿENDOFh-É ¬É ; F€Z€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.2.1343 ENDOF «end-of»CORE EXT܇DÉ ˆÊ U x€€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€'€ €€ €€'€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Compilation:( C: case-sys1 of-sys -- case-sys2 )C¬É %Ì Z ‚€‡€Œ˜RQ‚9€ €€ €€ €€ €€'€ €€'€ €€ ‚ÿMark the end of the OF ... ENDOF part of the CASE structure. The next location for a transfer of control resolves the reference given by of-sys. Append the run-time semantics given below to the current definition. Replace case-sys1 with case-sys2 on the control-flow stack, to be resolved by ENDCASE.HˆÊ mÌ 3 6€*€^Œ˜RQ³~‚9€!ƒ€ ƒ‚ÿRun-time:( -- )…P%Ì òÌ 5 :€ €Œ˜RQ‚9€ €€'€ ‚ÿContinue execution at the location specified by the consumer of case-sys2.ŠFmÌ ˜Í ` €Œ€^Œ˜RQ³~‚9€!ƒ€ ƒ€ ã9²Ý󀉀 € ã3 d€‰€ € ã~À]€‰€ ‚ÿSee:6.2.0873 CASE, 6.2.1342 ENDCASE, 6.2.1950 OF.+òÌ ÃÍ ( €€R‚9€ ‚ÿ6˜Í ùÍ 1©ÿÿÿÿÿÿÿÿ·ùÍ &Î žÏ ERASE-ÃÍ &Î % €€˜˜€‚ÿERASEP!ùÍ vÎ / .€B€‘€‚H€€%€ƒƒ‚ÿ6.2.1350 ERASE CORE EXTJ&Î ÀÎ 6 <€(€Œ˜RQ‚H€ €€ €€ ‚ÿ( addr u -- )µxvÎ uÏ = J€ð€Œ˜RQ‚H€ €€ €€ €€ ‚ÿIf u is greater than zero, clear all bits in each of u consecutive address units of memory beginning at addr .)ÀÎ žÏ & €€R‚H€ ‚ÿ7uÏ ÕÏ 1 ÿÿÿÿÿÿÿÿžÕÏ  è EXPECT. žÏ  % €€˜˜€‚ÿEXPECÕÏ  žÏ TQ"ÕÏ ` / .€D€‘€‚H€€%€ƒƒ‚ÿ6.2.1390 EXPECT CORE EXTL ¬ 5 :€.€˜RS‚H€ €€ €€ ‚ÿ( c-addr +n -- )™e` E 4 6€Ë€˜RS‚H€ €€ ‚ÿReceive a string of at most +n characters. Display graphic characters as they are received. A program that depends on the presence or absence of non-graphic characters in the string has an environmental dependency. The editing functions, if any, that the system performs in order to construct the string of characters are implementation-defined.(ö¬ m 2 2€í€˜RS‚H€ €€ ‚ÿInput terminates when an implementation-defined line terminator is received or when the string is +n characters long. When input terminates, nothing is appended to the string and the display is maintained in an implementation-defined way.v;E ã ; F€v€˜RS‚H€ €€ ãpo€€‰€ ‚ÿStore the string at c-addr and its length in SPAN.ږm œ D V€-€^Œ˜RQ³~‚9€!ƒ€ ƒ€ ãE\W € ‚ÿNote:This word is obsolescent and is included as a concession to existing implementations. Its function is superseded by 6.1.0695 ACCEPT.+ã è ( €€R‚9€ ‚ÿ6œ  1Œÿÿÿÿÿÿÿÿ¹ K Š FALSE-è K % €€˜˜€‚ÿFALSEP! › / .€B€‘€‚H€€%€ƒƒ‚ÿ6.2.1485 FALSE CORE EXTAK Ü 0 0€"€Œ˜RQ‚H€ €€ ‚ÿ( -- false )I› % 0 0€2€Œ˜RQ‚H€ €€ ‚ÿReturn a false flag.VÜ { < H€4€^Œ˜RQ³~‚9€ ƒ€!€ ƒ€ € ‚ÿSee:3.1.3.1 Flags+% Š ( €€R‚9€ ‚ÿ4{ Ú 1YÿÿÿÿÿÿÿÿºÚ  - HEX+Š  % € €˜˜€‚ÿHEXNÚ S / .€>€‘€‚H€€%€ƒƒ‚ÿ6.2.1660 HEX CORE EXT3  † * $€€Œ˜RQ‚H€ ‚ÿ( -- )U%S Û 0 0€J€Œ˜RQ‚H€ €€ ‚ÿSet contents of BASE to sixteen.)†  & €€R‚H€ ‚ÿ)Û - & €€R‚H€ ‚ÿ7 d 1ÿÿÿÿÿÿÿÿ»d ’ ñ MARKER. - ’ % €€˜˜€‚ÿMARKERU#d ç 2 4€F€‘€‚H€€%€ƒƒ€‚ÿ6.2.1850 MARKER CORE EXTQ’ 8 5 :€8€˜RS‚H€ €€€€ ‚ÿ( «name» -- )ɒç  7 <€%€˜RS‚H€ €€ €€ ‚ÿSkip leading space delimiters. Parse name delimited by a space. Create a definition for name with the execution semantics defined below.V8 W 9 B€:€^Œ˜RQ³~‚9€!ƒ€€!€ ƒ‚ÿname Execution:( -- )Í‘ $ < F€#€˜RS‚9€ €€ €€ ‚ÿRestore all dictionary allocation and search order pointers to the state they had just prior to the definition of name. Remove the definition of name and all subsequent definitions. Restoration of any structures still existing that could refer to deleted definitions or deallocated data space is not necessarily provided. No other contextual information such as numeric base is affected.w2W › E Z€d€^Œ˜RQ³~‚9€ ƒ€!€ ƒ€ € € €)€ ‚ÿSee:3.4.1 Parsing, 15.6.2.1580 FORGET.+$ Æ ( €€R‚9€ ‚ÿ+› ñ ( €€R‚9€ ‚ÿ4Æ % 1‡ÿÿÿÿÿÿÿÿŒ% P Š NIP+ñ P % € €˜˜€‚ÿNIPN% ž / .€>€‘€‚H€€%€ƒƒ‚ÿ6.2.1930 NIP CORE EXT_P ý D X€6€˜RS‚H€ €€'€ €€'€ €€'€ ‚ÿ( x1 x2 -- x2 )W.ž T ) "€\€˜RS‚H€ ‚ÿDrop the first item below the top of stack.)ý } & €€R‚H€ ‚ÿ)T Š & €€R‚H€ ‚ÿ3} Ù 1ÕÿÿÿÿÿÿÿÿœÙ  ŸC OF*Š  % € €˜˜€‚ÿOFMÙ P / .€<€‘€‚H€€%€ƒƒ‚ÿ6.2.1950 OF CORE EXT¯m @ B T€Ú€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Compilation:( C: -- of-sys )P @ Š ÎP A F Z€€˜RS‚9€ €€ €€ ã4 d€‰€ ‚ÿPut of-sys onto the control flow stack. Append the run-time semantics given below to the current definition. The semantics are incomplete until resolved by a consumer of of-sys such as ENDOF.y+ @ ™A N l€V€^Œ˜RQ³~‚9€!ƒ€ ƒ€€'€ €€'€ €€'€ ‚ÿRun-time:( x1 x2 -- | x1 )2ø A ËB : B€ñ€˜RS‚9€ €€ €€ ‚ÿIf the two values on the stack are not equal, discard the top value and continue execution at the location specified by the consumer of of-sys, e.g., following the next ENDOF. Otherwise, discard both values and continue execution in line.©I™A tC ` €’€^Œ˜RQ³~‚9€!ƒ€ ƒ€ ã9²Ý󀉀 € ã3 d€‰€ € ã4 d€‰€ ‚ÿSee:6.2.0873 CASE, 6.2.1342 ENDCASE, 6.2.1343 ENDOF.+ËB ŸC ( €€R‚9€ ‚ÿ4tC ÓC 1ÿÿÿÿÿÿÿÿŸÓC þC ßE PAD+ŸC þC % € €˜˜€‚ÿPADNÓC LD / .€>€‘€‚H€€%€ƒƒ‚ÿ6.2.2000 PAD CORE EXTAþC D / .€$€˜RS‚H€ €€ ‚ÿ( -- c-addr )˜kLD %E - *€Ö€˜RS‚H€€ ‚ÿc-addr is the address of a transient region that can be used to hold data for intermediate processing.d,D ‰E 8 @€X€\˜RS±~‚9€!ƒ€ ƒ€ € ‚ÿSee:3.3.3.6 Other transient regions.+%E ŽE ( €€R‚9€ ‚ÿ+‰E ßE ( €€R‚9€ ‚ÿ6ŽE F 1áÿÿÿÿÿÿÿÿ¿F BF òH PARSE-ßE BF % €€˜˜€‚ÿPARSEP!F ’F / .€B€‘€‚H€€%€ƒƒ‚ÿ6.2.2008 PARSE CORE EXTt-BF G G ^€Z€˜RS‚H€ €€ €€€€ €€ €€ ‚ÿ( char «ccc» -- c-addr u )f1’F lG 5 :€b€˜RS‚H€ €€ €€ ‚ÿParse ccc delimited by the delimiter char.ÚŠG FH 4 6€M€˜RS‚H€€ €€ ‚ÿc-addr is the address (within the input buffer) and u is the length of the parsed string. If the parse area was empty, the resulting string has a zero length.VlG œH ; F€6€\˜RS±~‚9€ ƒ€!€ ƒ€ € ‚ÿSee:3.4.1 Parsing.+FH ÇH ( €€R‚9€ ‚ÿ+œH òH ( €€R‚9€ ‚ÿ5ÇH 'I 1hÿÿÿÿÿÿÿÿÀ'I SI ŠK PICK,òH SI % €€˜˜€‚ÿPICKO 'I ¢I / .€@€‘€‚H€€%€ƒƒ‚ÿ6.2.2030 PICK CORE EXT®?SI PJ o ®€~€Œ˜RQ‚H€ €€'€ €€'€ €€'€ €€ €€'€ €€'€ €€'€ €€'€ ‚ÿ( xu ... x1 x0 u -- xu ... x1 x0 xu )袢I 8K F Z€E€˜RS‚H€ €€ €€'€ €€ €€ ‚ÿRemove u. Copy the xu to the top of the stack. An ambiguous condition exists if there are less than u+2 items on the stack before PICK is executed.)PJ aK & €€R‚H€ ‚ÿ)8K ŠK & €€R‚H€ ‚ÿ6aK ÀK 1ÆÿÿÿÿÿÿÿÿÁÀK íK ‚N QUERY-ŠK íK % €€˜˜€‚ÿQUERYP!ÀK =L / .€B€‘€‚H€€%€ƒƒ‚ÿ6.2.2040 QUERY CORE EXT3 íK pL * $€€Œ˜RQ‚H€ ‚ÿ( -- )%á=L •M D V€Ã€˜RS‚H€ ã&›Óˆ€‰€ ãºp(€‰€ ‚ÿMake the user input device the input source. Receive input into the terminal input buffer, replacing any previous contents. Make the result, whose address is returned by TIB, the input buffer. Set >IN to zero.—apL ,N 6 <€Â€^Œ˜RQ³~‚9€!ƒƒ€ €!‚ÿNote:This word is obsolescent and is included as a concession to existing implementations.+•M WN ( €€R‚9€ ‚ÿ+,N ‚N ( €€R‚9€ ‚ÿ7WN ¹N 1Lÿÿÿÿÿÿÿÿ¹N çN ÷‚ REFILL. ‚N çN % €€˜˜€‚ÿREFILLQ"¹N 8O / .€D€‘€‚H€€%€ƒƒ‚ÿ6.2.2125 REFILL CORE EXT@çN xO 0 0€ €Œ˜RQ‚H€ €€ ‚ÿ( -- flag )‹`8O € + &€À€Œ˜RQ‚H€ ‚ÿAttempt to fill the input buffer from the input source, returning a true flag if successfulxO € ‚N .¢]xO ± E X€»€˜RS‚H€ ãºp(€‰€ €€ €€ ‚ÿWhen the input source is the user input device, attempt to receive input into the terminal input buffer. If successful, make the result the input buffer, set >IN to zero, and return true. Receipt of a line containing no characters is considered successful. If there is no input available from the current input source, return false. d€ Q‚ < H€È€˜RS‚H€ ã1 d€‰€ €€ ‚ÿWhen the input source is a string from EVALUATE, return false and perform no other action.{6± ̂ E Z€l€^Œ˜RQ³~‚9€!ƒ€ ƒ€ €€ € €€ ‚ÿSee:7.6.2.2125 REFILL, 11.6.2.2125 REFILL.+Q‚ ÷‚ ( €€R‚9€ ‚ÿ> ̂ 5ƒ 1ÿÿÿÿÿÿÿÿÃ5ƒ jƒ U† RESTORE-INPUT5÷‚ jƒ % € €˜˜€‚ÿRESTORE-INPUTX)5ƒ ƒ / .€R€‘€‚H€€%€ƒƒ‚ÿ6.2.2148 RESTORE-INPUT CORE EXTl$jƒ .„ H `€H€Œ˜RQ‚H€ €€'€ €€'€ €€ €€ ‚ÿ( xn ... x1 n -- flag )ð­Âƒ … C T€[€˜RS‚H€ €€'€ €€'€ €€ ‚ÿAttempt to restore the input source specification to the state described by x1 through xn. flag is true if the input source specification cannot be so restored.©.„ Dž * $€þ€˜RS‚H€ ‚ÿAn ambiguous condition exists if the input source represented by the arguments is not the same as the current input source.c$… *† ? N€H€^Œ˜RQ³~‚9€ ƒ€!€ ƒ€ €€ ‚ÿSee:A.6.2.2182 SAVE-INPUT.+Dž U† ( €€R‚9€ ‚ÿ5*† Š† 16ÿÿÿÿÿÿÿÿĊ† ¶† »ˆ ROLL,U† ¶† % €€˜˜€‚ÿROLLO Š† ‡ / .€@€‘€‚H€€%€ƒƒ‚ÿ6.2.2150 ROLL CORE EXT£=¶† š‡ f œ€z€Œ˜RQ‚H€ €€'€ €€'€ €€'€ €€ €€'€ €€'€ €€'€ ‚ÿ( xu xu-1 ... x0 u -- xu-1 ... x0 xu )ꊇ ’ˆ D V€M€Œ˜RQ‚H€ €€ €€ €€ €€ ‚ÿRemove u. Rotate u+1 items on the top of the stack. An ambiguous condition exists if there are less than u+2 items on the stack before ROLL is executed.)š‡ »ˆ & €€R‚H€ ‚ÿ; ’ˆ öˆ 1ËÿÿÿÿÿÿÿÿÅöˆ (‰ Š SAVE-INPUT2 »ˆ (‰ % €€˜˜€‚ÿSAVE-INPUTU&öˆ }‰ / .€L€‘€‚H€€%€ƒƒ‚ÿ6.2.2182 SAVE-INPUT CORE EXT_(‰ ܉ B T€:€Œ˜RQ‚H€ €€'€ €€'€ €€ ‚ÿ( -- xn ... x1 n )œw}‰ ™Š F \€î€Œ˜RQ‚H€€'€ €€'€ ãùC¿y€‰€ ‚ÿx1 through xn describe the current state of the input source specification for later use by RESTORE-INPUT.)܉ Š & €€R‚H€ ‚ÿ: ™Š üŠ 1ªÿÿÿÿÿÿÿÿÆüŠ -‹ Š SOURCE-ID1 Š -‹ % €€˜˜€‚ÿSOURCE-IDp5üŠ ‹ ; F€j€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.2.2218 SOURCE-ID «source-i-d»CORE EXT:-‹ ׋ * $€ €Œ˜RQ‚H€ ‚ÿ( -- 0 | -1 )T*‹ +Œ * $€T€Œ˜RQ‚H€ ‚ÿIdentifies the input source as follows:M׋ xŒ 3 6€4€xRƒýã~B‚H€€ƒ‚ÿSOURCE-IDInput sourcew5+Œ ïŒ B T€j€x°ƒýã~J‚e‚€ ƒƒã1 d€‰€ ‚ƒƒ‚ÿ-1String (via EVALUATE)0User input device-xŒ  * $€€8RÈȂe‚€!‚ÿ_#ïŒ { < H€F€^Œ˜RQ³~‚9€!ƒ€ ƒ€ €€ ‚ÿSee:11.6.1.2218 SOURCE-ID.+ Š ( €€R‚9€ ‚ÿ5{ ۍ 1+ÿÿÿÿÿÿÿÿÇۍ Ž À SPAN,Š Ž % €€˜˜€‚ÿSPANO ۍ VŽ / .€@€‘€‚H€€%€ƒƒ‚ÿ6.2.2240 SPAN CORE EXTAŽ —Ž / .€$€˜RS‚H€ €€ ‚ÿ( -- a-addr )¬sVŽ C 9 B€æ€˜RS‚H€€ ã6 d€‰€ ‚ÿa-addr is the address of a cell containing the count of characters stored by the last execution of EXPECT.“`—Ž ֏ 3 6€À€^Œ˜RQ³~‚9€!ƒ€ ƒ‚ÿNote:This word is obsolescent and is included as a concession to existing implementations.+C À ( €€R‚9€ ‚ÿ֏ À Š 4֏ AÀ 1øÿÿÿÿÿÿÿÿÈAÀ lÀ 3 TIB+ À lÀ % € €˜˜€‚ÿTIBe*AÀ ÑÀ ; F€T€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.2.2290 TIB «t-i-b»CORE EXTAlÀ Á / .€$€˜RS‚H€ €€ ‚ÿ( -- c-addr )c7ÑÀ uÁ , (€n€˜RS‚H€€ ‚ÿc-addr is the address of the terminal input buffer.“`Á  3 6€À€^Œ˜RQ³~‚9€!ƒƒ€ ‚ÿNote:This word is obsolescent and is included as a concession to existing implementations.+uÁ 3 ( €€R‚9€ ‚ÿ3 f 17ÿÿÿÿÿÿÿÿÉf Â –Ç TO*3 Â % € €˜˜€‚ÿTOMf Ý / .€<€‘€‚H€€%€ƒƒ‚ÿ6.2.2295 TO CORE EXTw2Â Tà E Z€d€^Œ˜RQ³~‚9€!ƒ€ ƒ€€ €€€€ ‚ÿInterpretation:( x «name» -- )ì›Ý @Ä Q p€7€˜RS‚9€ €€ €€ €€ €€ ãšòYš€‰€ ‚ÿSkip leading spaces and parse name delimited by a space. Store x in name. An ambiguous condition exists if name was not defined by VALUE.j+Tà ªÄ ? N€V€^Œ˜RQ³~‚9€!ƒ€ ƒ€€€€ ‚ÿCompilation:( «name» -- )Ì@Ä ŒÅ F Z€™€˜RS‚9€ €€ €€ ãšòYš€‰€ ‚ÿSkip leading spaces and parse name delimited by a space. Append the run-time semantics given below to the current definition. An ambiguous condition exists if name was not defined by VALUE.RªÄ Æ 9 B€2€^Œ˜RQ³~‚9€!ƒ€ ƒ€€ ‚ÿRun-time:( x -- )NŒÅ \Æ 7 >€.€˜RS‚9€ €€ €€ ‚ÿStore x in name.–Æ kÇ y À€-€^Œ˜RQ³~‚9€!ƒ€ ƒã7ìÆe€‰€ ã<²Ý󀉀 €€ ‚€!ƒ€ ƒ€ ãšòYš€‰€ € ã'›Óˆ€‰€ ‚ÿNote:An ambiguous condition exists if either POSTPONE or [COMPILE] is applied to TO.See:6.2.2405 VALUE, 13.6.1.2295 TO.+\Æ –Ç ( €€R‚9€ ‚ÿ5kÇ ËÇ 1°ÿÿÿÿÿÿÿÿÊËÇ ÷Ç vÉ TRUE,–Ç ÷Ç % €€˜˜€‚ÿTRUEO ËÇ FÈ / .€@€‘€‚H€€%€ƒƒ‚ÿ6.2.2298 TRUE CORE EXT@÷Ç †È 0 0€ €Œ˜RQ‚H€ €€ ‚ÿ( -- true )n?FÈ ôÈ / .€~€˜RS‚H€ €€ ‚ÿReturn a true flag, a single-cell value with all bits set.W†È KÉ < H€6€^Œ˜RQ³~‚9€ ƒ€!€ ƒ€ € ‚ÿSee:3.1.3.1 Flags.+ôÈ vÉ ( €€R‚9€ ‚ÿ5KÉ «É 1ÿÿÿÿÿÿÿÿË«É ×É 6Ë TUCK,vÉ ×É % €€˜˜€‚ÿTUCKO «É &Ê / .€@€‘€‚H€€%€ƒƒ‚ÿ6.2.2300 TUCK CORE EXT~'×É €Ê W ~€N€Œ˜RQ‚H€ €€'€ €€'€ €€'€ €€'€ €€'€ ‚ÿ( x1 x2 -- x2 x1 x2 )i?&Ê Ë * $€~€Œ˜RQ‚H€ ‚ÿCopy the first (top) stack item below the second stack item.)€Ê 6Ë & €€R‚H€ ‚ÿ4 Ë jË 1&ÿÿÿÿÿÿÿÿÌjË •Ë ŠÍ U.R+6Ë •Ë % € €˜˜€‚ÿU.Rg,jË üË ; F€X€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.2.2330 U.R «u-dot-r»CORE EXTG•Ë CÌ 6 <€"€Œ˜RQ‚H€ €€ €€ ‚ÿ( u n -- )ÙüË aÍ E X€³€Œ˜RQ‚H€ €€ €€ €€ €€ ‚ÿDisplay u right aligned in a field n characters wide. If the number of characters required to display u is greater than n, all digits are displayed with no leading spaces in a field as wide as necessary.)CÌ ŠÍ & €€R‚H€ ‚ÿ3aÍ œÍ 1úÿÿÿÿÿÿÿÿÍœÍ çÍ °Ï U>*ŠÍ çÍ % € €˜˜€‚ÿU>m2œÍ TÎ ; F€d€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.2.2350 U> «u-greater-than»CORE EXT^çÍ ²Î B T€8€Œ˜RQ‚H€ €€'€ €€'€ €€ ‚ÿ( u1 u2 -- flag ){<TÎ -Ï ? N€x€Œ˜RQ‚H€€ €€'€ €€'€ ‚ÿflag is true if and only if u1 is greater than u2.X²Î …Ï ? N€2€^Œ˜RQ³~‚9€!ƒƒ€ ã*¬J¿€‰€ ‚ÿSee:6.1.0540 >.+-Ï °Ï ( €€R‚9€ ‚ÿ7…Ï 1…ÿÿÿÿÿÿÿÿÎ : ˆ UNUSED°Ï °Ï . °Ï : % €€˜˜€‚ÿUNUSEDQ" ‹ / .€D€‘€‚H€€%€ƒƒ‚ÿ6.2.2395 UNUSED CORE EXT= : È 0 0€€Œ˜RQ‚H€ €€ ‚ÿ( -- u )—^‹ _ 9 B€Œ€Œ˜RQ‚H€€ ã_Ž­€‰€ ‚ÿu is the amount of space remaining in the region addressed by HERE , in address units.)È ˆ & €€R‚H€ ‚ÿ6_ Ÿ 1(ÿÿÿÿÿÿÿÿÏŸ ë â VALUE-ˆ ë % €€˜˜€‚ÿVALUEP!Ÿ ; / .€B€‘€‚H€€%€ƒƒ‚ÿ6.2.2405 VALUE CORE EXT\ ë — < H€@€Œ˜RQ‚H€ €€ €€€€ ‚ÿ( x «name» -- )ô¶; ‹ > J€m€Œ˜RQ‚H€ €€ €€ €€ ‚ÿSkip leading space delimiters. Parse name delimited by a space. Create a definition for name with the execution semantics defined below, with an initial value equal to x.b)— í 9 B€R€Œ˜RQ‚H€€ €€ €€ ‚ÿname is referred to as a «value».`!‹ M ? N€B€^Œ˜RQ³~‚9€!ƒ€€!€ ƒ€€ ‚ÿname Execution:( -- x )ºí ` Y €€u€Œ˜RQ‚9€ €€ €€ €€ €ã'›Óˆ‰€ €€ €€ ‚ÿPlace x on the stack. The value of x is that given when name was created, until the phrase x TO name is executed, causing a new value of x to be associated with name.WM · < H€6€^Œ˜RQ³~‚9€ ƒ€!€ ƒ€ € ‚ÿSee:3.4.1 Parsing.+` â ( €€R‚9€ ‚ÿ7·  1˜ÿÿÿÿÿÿÿÿÐ G ® WITHIN. â G % €€˜˜€‚ÿWITHINQ" ˜ / .€D€‘€‚H€€%€ƒƒ‚ÿ6.2.2440 WITHIN CORE EXTš4G 2 f œ€h€Œ˜RQ‚H€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€ ‚ÿ( n1|u1 n2|u2 n3|u3 -- flag )SÕ˜ … ~ ʂ«€Œ˜RQ‚H€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ €€ €€'€ €€'€ €€'€ €€'€ €€'€ €€'€ ‚ÿPerform a comparison of a test value n1|u1 with a lower limit n2|u2 and an upper limit n3|u3, returning true if either (n2|u2 < n3|u3 and (n2|u2 <= n1|u1 and n1|u1 < n3|u3)) or (n2|u2 > n3|u3 and (n2|u2 <= n1|u1 or n1|u1 < n3|u3)) is true, returning false otherwise. An ambiguous condition exists if n1|u1, n2|u2, and n3|u3 are not all the same type.)2 ® & €€R‚H€ ‚ÿ: … è 1SÿÿÿÿÿÿÿÿÑè  ; [COMPILE]1 ®  % €€˜˜€‚ÿ[COMPILE]u:è Ž ; F€t€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.2.2530 [COMPILE] «bracket-compile»CORE EXTŒt J H `€è€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€€€ ‚ÿInterpretation:Interpretation semantics for this word are undefined.Compilation:( «name» -- )o!Ž ¹ N j€C€Œ˜RQ‚9€ €€ €€ €€ €€ €€ ‚ÿSkip leading space delimiters. Parse name delimited by a space. Find name. If name has other than default compilation semantics, append them to the current definition; otherwise append the execution semantics of name. An ambiguous condition exists if name is not found.WJ  < H€6€^Œ˜RQ³~‚9€ ƒ€!€ ƒ€ € ‚ÿSee:3.4.1 Parsing.+¹ ; ( €€R‚9€ ‚ÿ2 m 1zÿÿÿÿÿÿÿÿÒm – ã@ \); – % €€˜˜€‚ÿ\g,m ý ; F€X€‘€‚H€€%€ƒ€&€€&€ƒ‚ÿ6.2.2535 \ «backslash»CORE EXT©a– Š H `€Â€^Œ˜RQ³~‚9€!ƒ€ ƒ‚€!ƒ€ ƒ€€€€ ‚ÿCompilation:Perform the execution semantics given below.Execution:( «ccc»-- )‚Pý 4@ 2 4€ €Œ˜RQ‚9€ €€ ‚ÿParse and discard the remainder of the Š 4@ ; parse area. \ is an immediate word.ZŠ Ž@ ? N€6€^Œ˜RQ³~‚9€ ƒ€!€ ƒ€ €€ ‚ÿSee:7.6.2.2535 \.+4@ ¹@ ( €€R‚9€ ‚ÿ*Ž@ ã@ ' €€‚9€‚ÿ1¹@ A 1–ÿÿÿÿÿÿÿÿÓÿÿÿÿA yB e@ã@ yB % €€˜˜€*ÿIf this screen is the first to display you are probably not using the latest version of the Microsoft HCW help file compiler. You need at least version 4.03 which may be downloaded via a link on http://www.guysoftware.com/helllp.html in order to handle files produced by Microsoft Word version 8 (Office 97) or later.EA ŸB 14ÿÿÿÿÿÿÿÿÔÿÿÿÿŸB ­F Unregistered Message(yB æB % €€˜˜€+‚ÿpŸB VC S#v€<o» .€€€,†"€€-‚ÿ€ €€.€-‚ÿÿÿUnregistered Message1áæB ‡F P n€Ã€€-‚€,€/€,‚‚€/€,€/€,€/€,‚‚€/€,âGö£(‰‚ÿThis Help file was produced by an unregistered demonstration copy of the HELLLP! file authoring system.HELLLP! is a user-friendly system to aid in the production of Windows help files. It requires Microsoft Word for Windows version 2.0 or higher. Users of Word versions up to Word 7/Office 95 need version 2.7 of HELLLP! users of Word version 8/Office 97 or later need version 3 of HELLLP! HELLLP! is available as shareware from many sources and is always available from http://www.guysoftware.com/helllp.html at which site the author and distributor may also be contacted. Registration and payment, which will remove this screen from files produced by the system may also be accomplished by links from this site.&VC ­F # €€€/‚ÿ1‡F ÞF 1ÿÿÿÿÿÿÿÿÕÿÿÿÿÞF ŸJ <­F G ' €*€°€0€‚ÿ About Shareware:øÞF 9I ' €ñ€€‚‚‚‚ÿShareware is copyrighted software that is distributed by authors through bulletin boards, on-line services and disk vendors.Shareware allows you to try the software for a reasonable limited period. If you decide not to continue using it, you throw it away and forget about it. You only pay for it if you continue to use it. Shareware is a distribution method, not a type of software. You benefit because you get to use the software to determine whether it meets your needs, before you pay for it. …_G ŸJ & €¿€€‚‚‚ÿThe shareware system and the continued availability of quality shareware products depend on your willingness to register and pay for the shareware you use. It's the registration fees you pay which allow authors to support and continue to develop our products. Please show your support for shareware by registering those programs you actually use.19I ÿÿÿÿ1ÿÿÿÿÿÿÿÿÖÿÿÿÿÿÿÿÿÿÿÿÿl c :1HTimes New RomanArialCourier NewSymbolTimesHelveticaCourierGenevaTms RmnHelvMS SerifMS Sans SerifNew YorkSystemWingdingsTimes GlasTahomaMT ExtraMS LineDrawAlgerianArial Rounded MT BoldBookman Old StyleBraggadocioBritannic BoldBrush Script MTCentury GothicColonna MTDesdemonaFootlight MT LightImpactKino MTWide LatinMatura MT Script CapitalsPlaybillAlbertus Extra BoldAlbertus MediumAntique OliveCG TimesCoronetLetter GothicUniversUnivers CondensedGaramondMarigoldClarendon CondensedCG OmegaLinePrinterModernScriptRomanMS DialogArial NarrowSmall FontsTimes New Roman CETimes New Roman CyrTimes New Roman GreekTimes New Roman TurTimes New Roman Baltic€8€€€€€9€€€((939€€39339€ÿÿÿÿÿÿ E<¬§ Ʉ_…J‡@مqÝ}+€ u  î†ñ„ 2 Z ë€}…¬ € 7€;ƒñê …¥‚aƒ„„ … ڄ݅ o† \ U ! k z ‚ ¢Nƒ ª‚ „ 1… Ý '   YœÅ €ÚƒÃ†€„‰MÐ +€+‡=Å /‚݉û{j X€‚œ€ ¢ „ c„ šV‡ ® y  ‡  â b€ o 7ƒ t/„ ú„ n… Ð T €¶   € m€  „ /Ó\ԂՄ‚‡€¡‚:ˆh/„æ„ŽØ5L¢€ˀ7‚Á„‰†V²1*“û€¶ñe]‚Ղ=‚ƒ_„Oƒm…à„W°ç†úª“,.ƒ·ǃ¿„s† ‡!t‹[»³®ƒÆ€܀Œƒ „V€°„^€υÿ€Ÿ`ƒa …™Ÿ†ôº1³’/&;)F24ÿÿÏ’ÿÿ'-!# #>#s#tib(* */$*/mod(,,.0."4.(8.r</@/modD:H:nonameL?doP?dupT@X[\[']`[char]d[compile]h\l]p+t+!x+loop|<€<#„<>ˆ=Œ>>body”>in˜>numberœ>r 0<€0<>š0=¬0>°1-Ž1+ž2!Œ2*À2/Ä2@È2>rÌ2dropÐ2dupÔ2overØ2r@Ü2r>à2swapä3. Usage Requirementsè3.1 Data Typesì3.1.1 Data-type Relationshipsð3.1.2 Character Typesô3.1.3 Single-cell Typesø3.1.4 Cell-pair Typesü3.1.5 System Types3.2 The Implementation Environment3.2.1 Numbers3.2.2 Arithmetic 3.2.3 Stacks3.2.4 Operator Terminal3.2.5 Mass Storage3.2.6 Environmental Queries3.3 The Forth Dictionary 3.3.1 Name Space$3.3.2 Code Space(3.3.3 Data Space,3.4 The Forth Text Interpreter03.4.1 Parsing43.4.2 Finding Definition Names83.4.3 Semantics<3.4.4 Possible Actions On An Ambiguous Condition@3.4.5 CompilationDAbortHAbort"LAbsPAcceptTAgainXAlign\Aligned`AllotdAndhBaselBeginpBltC!xC"|C,€C@„CaseˆCell+ŒCellsChar”Char+˜CharsœCompile, Constant€ConvertšCount¬Cr°CreateŽDecimalžDepthŒDoÀDoes>ÄDropÈDupÌElseÐEmitÔEndcaseØEndofÜEnvironment?àEraseäEvaluateèExitìExpectðFalseôFilløFindüFm/modHereHexHold IIfImmediateInvertJ Key$Leave(Literal,Loop0Lshift4M*8Marker<Max@MinD–=ÿÿModHMoveLNegatePNipTOfXOr\Over`PaddParsehPicklPostponepQuerytQuitxR@|R>€Recurse„RefillˆRepeatŒRestore-inputRoll”Rot˜RshiftœS" S>d€Save-inputšSign¬Sm/rem°SourceŽSource-idžSpaceŒSpacesÀSpanÄStateÈSwapÌTable 3.1 - Data TypesÐTable 3.2 - Standard Graphic CharactersÔTable 3.3 - Floored Division ExampleØTable 3.4 - Symmetric Division ExampleÜTable 3.5 - Environmental Query StringsàThenäTibèToìTrueðTuckôTypeøU.üU.rU<U>Um* Um/modUnloopUNREGISTEREDUntilUnused Value$Variable(While,Within0Word4Xor8Stacks3.2.4 Operator Terminal3.2.5 Mass Storage3.2.6 Environmental Queries3.3 The Forth Dictionary 3.3.1 Name Space$3.3.2 Code Space(3.3.3 Data Space,3.4 The Forth Text Interpreter03.4.1 Parsing43.4.2 Finding Definition Names83.4.3 Semantics<3.4.4 Possible Actions On An Ambiguous Condition@3.4.5 CompilationDAbortHAbort"LAbsPAcceptTAgainXAlign\Aligned`AllotdAndhBaselBeginpBltC!xC"|C,€C@„CaseˆCell+ŒCellsChar”Char+˜CharsœCompile, Constant€ConvertšCount¬Cr°CreateŽDecimalžDepthŒDoÀDoes>ÄDropÈDupÌElseÐEmitÔEndcaseØEndofÜEnvironment?àEraseäEvaluateèExitìExpectðFalseôFilløFindüFm/modHereHexHold IIfImmediateInvertJ Key$Leave(Literal,Loop0Lshift4M*8Marker<Max@MinDôMod/&;)Lzÿÿ× ³ÿÿ·ãTable of Contents_€3. Usage requirements3.1 Data typesڃ3.1.1 Data-type relationshipsÆ3.1.2 Character types€3.1.3 Single-cell types„‰3.1.4 Cell-pair typesM3.1.5 System typesÐ 3.2 The implementation environment+€3.2.1 Numbers+‡3.2.2 Arithmetic=3.2.3 StacksÅ 3.2.4 Operator terminal/3.2.5 Mass storage‚3.2.6 Environmental queries݉3.3 The Forth dictionary3.3.1 Name spaceû3.3.2 Code space{3.3.3 Data spacej3.4 The Forth text interpreter 3.4.1 Parsing3.4.2 Finding definition namesX3.4.3 Semanticsö 3.4.4 Possible actions on an ambiguous condition‚3.4.5 Compilationf„„Table of Contentsx€{€Ʉ!_…#J‡#>@#S¬'q(Ý*}*/+€*/MOD¥‚+aƒ+!„+LOOP ,§ -u . ."„ /2 /MODz 0<‚ 0=ª‚ 1+Nƒ 1-„ 2!1… 2*† 2/Ý 2@ 2DROP 2DUP 2OVERÅ 2SWAPZ :‚ ;„ <… <#݅ =o† >\ >BODYU >IN! >NUMBERk >R¬ ?DUP€ @œ€ ABORT¢ ABORT"„ ABSc„ ACCEPTV‡ ALIGN® ALIGNEDy ALLOT AND‡ BASE BEGINâ BLb€ C!o C,7ƒ C@/„ CELL+ú„ CELLSn… CHAR CHAR+Ð CHARST CONSTANT¶ COUNT CR CREATE€ DECIMALm€ DEPTH DO„ DOES>/DROPDUPÓELSE\EMITENVIRONMENT?€EVALUATE¡‚EXIT/„FILLæ„FINDFM/MODŽHERE5HOLDILIF¢IMMEDIATE€INVERTˀJ7‚KEYÁ„LEAVE‰†LITERAL”‡LOOPVLSHIFT²M**MAX“MINûMOD€MOVE¶NEGATE]‚ORՂOVEROƒPOSTPONEà„QUITR>WR@°RECURSEREPEATROT“RSHIFT,S".ƒS>DǃSIGN¿„SM/REMs†SOURCE ‡SPACE!SPACES‹STATE[SWAPÆTHENVTYPE€U.^€U<ÿ€UM*ŸUM/MOD`ƒUNLOOP …UNTILŸ†VARIABLEôWHILE1WORD³XOR7[€['];ƒ[CHAR] …]³…م#TIBî†.(ñ.R0<>¢0>'2>Rœ2R>Y2R@ë€:NONAMEڄ<>}…?DOšAGAINC"tCASE‹$ÿÿCOMPILE,€CONVERTԂENDCASEՄENDOF‚‡ERASE:ˆEXPECThFALSEØHEX1MARKERñNIPeOF=‚PADƒPARSE_„PICKm…QUERYç†REFILLúRESTORE-INPUTªROLL·SAVE-INPUTSOURCE-IDtSPAN€TIB܀TOŒƒTRUE „TUCK°„U.RυU>z†UNUSED™VALUEºWITHINñ[COMPILE]ê\!€aUnregistered Messagef„҇/3.2.5 Mass storage‚3.2.6 Environmental queries݉3.3 The Forth dictionary3.3.1 Name spaceû3.3.2 Code space{3.3.3 Data spacej3.4 The Forth text interpreter 3.4.1 Parsing3.4.2 Finding definition namesX3.4.3 Semanticsö 3.4.4 Possible actions on an ambiguous condition‚3.4.5 Compilationf„„Table of Contentsx€{€Ʉ!_…#J‡#>@#S¬'q(Ý*}*/+€*/MOD¥‚+aƒ+!„+LOOP ,§ -u . ."„ /2 /MODz 0<‚ 0=ª‚ 1+Nƒ 1-„ 2!1… 2*† 2/Ý 2@ 2DROP 2DUP 2OVERÅ 2SWAPZ :‚ ;„ <… <#݅ =o† >\ >BODYU >IN! >NUMBERk >R¬ ?DUP€ @œ€ ABORT¢ ABORT"„ ABSc„ ACCEPTV‡ ALIGN® ALIGNEDy ALLOT AND‡ BASE BEGINâ BLb€ C!o C,7ƒ C@/„ CELL+ú„ CELLSn… CHAR CHAR+Ð CHARST CONSTANT¶ COUNT CR CREATE€ DECIMALm€ DEPTH DO„ DOES>/DROPDUPÓELSE\EMITENVIRONMENT?€EVALUATE¡‚EXIT/„FILLæ„FINDFM/MODŽHERE5HOLDILIF¢IMMEDIATE€INVERTˀJ7‚KEYÁ„LEAVE‰†LITERAL”‡LOOPVLSHIFT²M**MAX“MINûMOD€MOVE¶NEGATE]‚ORՂOVEROƒPOSTPONEà„QUITR>WR@°RECURSEREPEATROT“RSHIFT,S".ƒS>DǃSIGN¿„SM/REMs†SOURCE ‡SPACE!SPACES‹STATE[SWAPÆTHENVTYPE€U.^€U<ÿ€UM*ŸUM/MOD`ƒUNLOOP …UNTILŸ†VARIABLEôWHILE1WORD³XOR7[€['];ƒ[CHAR] …]³…م#TIBî†.(ñ.R0<>¢0>'2>Rœ2R>Y2R@ë€:NONAMEڄ<>}…?DOšAGAINC"tCASEô/&;)L4ÿÿÕPÕÿÿÿÿho€@io€,jo€Çƒko€s†lo€ ‡mo€!no€‹oo€[po€t?š}.ƒŽo‚‚·µo‚‚íïW„¿„#›ÓˆÆ$›ÓˆV%›ÓˆÙ…&›Óˆ€'›ÓˆÜ€(›ÓˆŒƒ)›Óˆ „ㅌ„ÞƖ‘€ßƖ‘^€àƖ‘ÿ€áƖ‘`ƒâƖ‘ …ãƖ‘°„äƖ‘Ï…åƖ‘îqٔŸ™òYšŸ†šòYš™T£ôU£1V£ºJ૳?Œç«ÒÂè«®ƒeùé«ÜŸù«»ÝŸù«³'V‘¯ãÓ«J¿§ Ô«J¿u Õ«J¿ Ö«J¿„ ׫J¿z Ø«J¿‚ Ù«J¿ª‚ Ú«J¿Nƒ Û«J¿„ Ü«J¿ þ«J¿ ÿ«J¿Ý ¬J¿ ¬J¿ ¬J¿ ¬J¿Å ¬J¿Z ¬J¿‚ ¬J¿„ ¬J¿1… )¬J¿Ý… *¬J¿o† +¬J¿€ ,¬J¿7-¬J¿€.¬J¿ …/¬J¿î†0¬J¿ñ1¬J¿2¬J¿… T¬J¿œU¬J¿YV¬J¿Ú„W¬J¿ê]¬J¿¢V­J¿É„W­J¿_…X­J¿J‡Y­J¿¬Z­J¿q[­J¿Ý\­J¿}]­J¿¥‚^­J¿aƒÛ-’Ã'B\W✀ C\W⢁ D\Wâ„ E\Wâc„ F\WâV‡ G\Wâ® H\Wây I\Wâ J\Wâš1Ë&ã+‡“ ã‚|-Šã„‰5Ñ©ãûÈ«ãÆæûÝã{y2ß㐁z2ßãڃq¹ä‚«4ä|³å/.öÌå+€ЊçåæÅ K5栁Ü%:怣ËÑæ=€ËÑæXÙæ€زíæMáç݉€áçj8…çÐ ›Sç€ý‡ë\ þ‡ë‡ ÿ‡ë ˆëâ 5²Ýó 6²Ýó 7²Ýó;ƒ8²Ýó9²Ýót:²Ýó;²Ýó€<²Ýóñ>²Ýó¶ ž³Ýób€ ¹³Ýóo º³Ýó7ƒ »³Ýó/„ Œ³Ýóú„ œ³Ýón… Ÿ³Ýó ¿³ÝóÐ À³ÝóT sß ü¬ tß ü€ uß üm€ vß ü wß ü„ xß ü/yß üzß ü}…. dÓ/ d\0 d1 d€2 d¡‚3 dԂ4 dՄ5 d‚‡6 d:ˆé6'/„ê6'æ„ë6'hùáiÁœwÔ=“€_Ž­Ž`Ž­5aŽ­Øºp(U ºp(ºp(Lºp(¢ºp(€Gö£(h„Õå31ˀ÷97‚K=ºB„L=ºBÁ„M=ºB‰†N=ºBO=ºBVi}K+€i}K2 i}K² i}K* i}K“ i}Kû i}K€ i}K1Á”@T! ”@T¶Ô@Të€Ĕ@Tñ|À]]‚}À]Ղ~À]e7ìÆeOƒ8ìÆe=‚9ìÆeƒ:ìÆe_„òŠnà„óŠnm…¯Ÿta­CMwk ®CMw¯CMwW°CMw°±CMw²CMw³CMw“ŽCMw熵CMwªùC¿yú