2020-02-27 03:43:11 +02:00
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
< html >
< head >
2020-04-14 19:56:54 +03:00
< title > Fundamental Constants< / title >
2020-05-03 03:20:55 +03:00
< link href = "../docs-assets/Breadcrumbs.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
2020-03-19 02:11:25 +02:00
< meta name = "viewport" content = "width=device-width initial-scale=1" >
2020-02-27 03:43:11 +02:00
< meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" >
< meta http-equiv = "Content-Language" content = "en-gb" >
2020-05-03 03:01:21 +03:00
2020-05-03 03:20:55 +03:00
< link href = "../docs-assets/Contents.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
< link href = "../docs-assets/Progress.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
< link href = "../docs-assets/Navigation.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
< link href = "../docs-assets/Fonts.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
< link href = "../docs-assets/Base.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
2020-05-03 03:01:21 +03:00
< script >
MathJax = {
tex: {
inlineMath: '$', '$'], ['\\(', '\\)'
},
svg: {
fontCache: 'global'
}
};
< / script >
< script type = "text/javascript" id = "MathJax-script" async
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js">
< / script >
< script >
function togglePopup(material_id) {
var popup = document.getElementById(material_id);
popup.classList.toggle("show");
}
< / script >
2020-05-03 03:20:55 +03:00
< link href = "../docs-assets/Popups.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
< link href = "../docs-assets/Colours.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
2020-04-14 19:56:54 +03:00
2020-02-27 03:43:11 +02:00
< / head >
2020-05-03 03:01:21 +03:00
< body class = "commentary-font" >
2020-03-19 02:11:25 +02:00
< nav role = "navigation" >
2020-04-14 19:56:54 +03:00
< h1 > < a href = "../index.html" >
2020-05-03 18:34:53 +03:00
< img src = "../docs-assets/Inform.png" height = 72" >
2020-04-14 19:56:54 +03:00
< / a > < / h1 >
< ul > < li > < a href = "../compiler.html" > compiler tools< / a > < / li >
2020-03-19 02:11:25 +02:00
< li > < a href = "../other.html" > other tools< / a > < / li >
< li > < a href = "../extensions.html" > extensions and kits< / a > < / li >
< li > < a href = "../units.html" > unit test tools< / a > < / li >
2020-04-14 19:56:54 +03:00
< / ul > < h2 > Compiler Webs< / h2 > < ul >
2020-03-19 02:11:25 +02:00
< li > < a href = "../inbuild/index.html" > inbuild< / a > < / li >
< li > < a href = "../inform7/index.html" > inform7< / a > < / li >
< li > < a href = "../inter/index.html" > inter< / a > < / li >
2020-04-14 19:56:54 +03:00
< / ul > < h2 > Inbuild Modules< / h2 > < ul >
< li > < a href = "../supervisor-module/index.html" > supervisor< / a > < / li >
< / ul > < h2 > Inform7 Modules< / h2 > < ul >
2020-08-26 12:52:50 +03:00
< li > < a href = "../core-module/index.html" > core< / a > < / li >
< li > < a href = "../assertions-module/index.html" > assertions< / a > < / li >
< li > < a href = "../values-module/index.html" > values< / a > < / li >
< li > < a href = "../knowledge-module/index.html" > knowledge< / a > < / li >
< li > < a href = "../imperative-module/index.html" > imperative< / a > < / li >
< li > < a href = "index.html" > < span class = "selectedlink" > runtime< / span > < / a > < / li >
2020-03-19 02:11:25 +02:00
< li > < a href = "../if-module/index.html" > if< / a > < / li >
< li > < a href = "../multimedia-module/index.html" > multimedia< / a > < / li >
< li > < a href = "../index-module/index.html" > index< / a > < / li >
2020-04-14 19:56:54 +03:00
< / ul > < h2 > Inter Modules< / h2 > < ul >
< li > < a href = "../bytecode-module/index.html" > bytecode< / a > < / li >
2020-03-19 02:11:25 +02:00
< li > < a href = "../building-module/index.html" > building< / a > < / li >
< li > < a href = "../codegen-module/index.html" > codegen< / a > < / li >
2020-05-20 02:02:28 +03:00
< / ul > < h2 > Services< / h2 > < ul >
2020-04-14 19:56:54 +03:00
< li > < a href = "../arch-module/index.html" > arch< / a > < / li >
2020-08-20 01:36:18 +03:00
< li > < a href = "../calculus-module/index.html" > calculus< / a > < / li >
2020-04-14 19:56:54 +03:00
< li > < a href = "../html-module/index.html" > html< / a > < / li >
2020-05-20 02:02:28 +03:00
< li > < a href = "../inflections-module/index.html" > inflections< / a > < / li >
2020-08-20 01:36:18 +03:00
< li > < a href = "../kinds-module/index.html" > kinds< / a > < / li >
2020-05-20 02:02:28 +03:00
< li > < a href = "../linguistics-module/index.html" > linguistics< / a > < / li >
< li > < a href = "../problems-module/index.html" > problems< / a > < / li >
2020-08-20 01:36:18 +03:00
< li > < a href = "../syntax-module/index.html" > syntax< / a > < / li >
< li > < a href = "../words-module/index.html" > words< / a > < / li >
2020-03-19 02:11:25 +02:00
< li > < a href = "../../../inweb/docs/foundation-module/index.html" > foundation< / a > < / li >
2020-04-14 19:56:54 +03:00
< / ul >
2020-03-19 02:11:25 +02:00
< / nav >
< main role = "main" >
2020-05-03 03:01:21 +03:00
<!-- Weave of 'Fundamental Constants' generated by Inweb -->
< div class = "breadcrumbs" >
2020-08-26 12:52:50 +03:00
< ul class = "crumbs" > < li > < a href = "../index.html" > Home< / a > < / li > < li > < a href = "../compiler.html" > Inform7 Modules< / a > < / li > < li > < a href = "index.html" > runtime< / a > < / li > < li > < a href = "index.html#4" > Chapter 4: Compilation Utilities< / a > < / li > < li > < b > Fundamental Constants< / b > < / li > < / ul > < / div >
2020-05-03 03:01:21 +03:00
< p class = "purpose" > Inter constants for, say, extremal number values, which depend on the target we are compiling to, and are generally low-level in nature.< / p >
2020-02-27 03:43:11 +02:00
2020-08-18 00:57:45 +03:00
< p class = "commentary firstcommentary" > < a id = "SP1" class = "paragraph-anchor" > < / a > < b > § 1. < / b > Fundamental constants are emitted about our choice of virtual machine.
2020-02-27 03:43:11 +02:00
< / p >
2020-05-03 03:01:21 +03:00
< p class = "commentary" > The old I6 library used to confuse Z-vs-G with 16-vs-32-bit, but we try
2020-02-27 03:43:11 +02:00
to separate these distinctions here, even though at present the Z-machine
2020-05-03 03:01:21 +03:00
is our only 16-bit target and Glulx our only 32-bit one. The < span class = "extract" > < span class = "extract-syntax" > WORDSIZE< / span > < / span >
constant is the word size in bytes, so is the multiplier between < span class = "extract" > < span class = "extract-syntax" > -> < / span > < / span > and
< span class = "extract" > < span class = "extract-syntax" > --> < / span > < / span > offsets in I6 pointer syntax.
2020-02-27 03:43:11 +02:00
< / p >
2020-05-03 03:01:21 +03:00
< ul class = "items" > < li > (1) < span class = "extract" > < span class = "extract-syntax" > NULL< / span > < / span > is used, as in C, to represent a null value or pointer. In C,
2020-02-27 03:43:11 +02:00
this is conventionally 0, but here it is the maximum unsigned value which
can be stored, pointing to the topmost byte in the directly addressable
2020-04-14 19:56:54 +03:00
memory map; this means it is also \(-1\) when regarded as a signed
2020-02-27 03:43:11 +02:00
twos-complement integer, but we write it as an unsigned hexadecimal
address for clarity's sake.
2020-05-03 03:01:21 +03:00
< / li > < li > (2) < span class = "extract" > < span class = "extract-syntax" > WORD_HIGHBIT< / span > < / span > is the most significant bit in the VM's data word.
< / li > < li > (3) < span class = "extract" > < span class = "extract-syntax" > IMPROBABLE_VALUE< / span > < / span > is one which is unlikely but still possible
2020-02-27 03:43:11 +02:00
to be a genuine I7 value. The efficiency of some algorithms depends on
how well chosen this is: they would ran badly if we chose 1, for instance.
2020-05-03 03:01:21 +03:00
< / li > < li > (4) < span class = "extract" > < span class = "extract-syntax" > MAX_POSITIVE_NUMBER< / span > < / span > is the largest representable positive (signed)
2020-02-27 03:43:11 +02:00
integer, in twos-complement form.
2020-05-03 03:01:21 +03:00
< / li > < li > (5) < span class = "extract" > < span class = "extract-syntax" > REPARSE_CODE< / span > < / span > is a magic value used in the I6 library's parser to
2020-02-27 03:43:11 +02:00
signal that some code which ought to have been parsing a command has in
fact rewritten it, so that the whole command must be re-parsed afresh.
(Returning this value is like throwing an exception in a language like
Java, though we don't implement it that way.) A comment in the 6/11 library
2020-05-03 03:01:21 +03:00
reads: "The parser rather gunkily adds addresses to < span class = "extract" > < span class = "extract-syntax" > REPARSE_CODE< / span > < / span > for
some purposes. And expects the result to be greater than < span class = "extract" > < span class = "extract-syntax" > REPARSE_CODE< / span > < / span >
2020-02-27 03:43:11 +02:00
(signed comparison). So Glulx Inform is limited to a single gigabyte of
storage, for the moment." Guilty as charged, but the gigabyte story file
is a remote prospect for now. Anyway, it's this comparison issue which
means we need a different value for each possible word size.
< / li > < / ul >
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-07-01 02:58:55 +03:00
< span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "function-syntax" > FundamentalConstants::emit_one< / span > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > id< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > inter_ti< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > val< / span > < span class = "plain-syntax" > ) {< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > = < / span > < a href = "2-hrr.html#SP4" class = "function-link" > < span class = "function-syntax" > Hierarchy::find< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > id< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "2-hrr.html#SP4" class = "function-link" > < span class = "function-syntax" > Hierarchy::make_available< / span > < / a > < span class = "plain-syntax" > (< / span > < a href = "2-emt.html#SP2" class = "function-link" > < span class = "function-syntax" > Emit::tree< / span > < / a > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "2-emt.html#SP3" class = "function-link" > < span class = "function-syntax" > Emit::named_numeric_constant< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > val< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "function-syntax" > FundamentalConstants::emit_signed< / span > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > id< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > val< / span > < span class = "plain-syntax" > ) {< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > = < / span > < a href = "2-hrr.html#SP4" class = "function-link" > < span class = "function-syntax" > Hierarchy::find< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > id< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "2-hrr.html#SP4" class = "function-link" > < span class = "function-syntax" > Hierarchy::make_available< / span > < / a > < span class = "plain-syntax" > (< / span > < a href = "2-emt.html#SP2" class = "function-link" > < span class = "function-syntax" > Emit::tree< / span > < / a > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "2-emt.html#SP3" class = "function-link" > < span class = "function-syntax" > Emit::named_numeric_constant_signed< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > val< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2020-07-01 02:58:55 +03:00
< span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "function-syntax" > FundamentalConstants::emit_hex< / span > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > id< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > inter_ti< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > val< / span > < span class = "plain-syntax" > ) {< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > = < / span > < a href = "2-hrr.html#SP4" class = "function-link" > < span class = "function-syntax" > Hierarchy::find< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > id< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "2-hrr.html#SP4" class = "function-link" > < span class = "function-syntax" > Hierarchy::make_available< / span > < / a > < span class = "plain-syntax" > (< / span > < a href = "2-emt.html#SP2" class = "function-link" > < span class = "function-syntax" > Emit::tree< / span > < / a > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "2-emt.html#SP3" class = "function-link" > < span class = "function-syntax" > Emit::named_numeric_constant_hex< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > val< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2020-07-01 02:58:55 +03:00
< span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "function-syntax" > FundamentalConstants::emit_unchecked_hex< / span > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > id< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > inter_ti< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > val< / span > < span class = "plain-syntax" > ) {< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > = < / span > < a href = "2-hrr.html#SP4" class = "function-link" > < span class = "function-syntax" > Hierarchy::find< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > id< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "2-hrr.html#SP4" class = "function-link" > < span class = "function-syntax" > Hierarchy::make_available< / span > < / a > < span class = "plain-syntax" > (< / span > < a href = "2-emt.html#SP2" class = "function-link" > < span class = "function-syntax" > Emit::tree< / span > < / a > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "2-emt.html#SP3" class = "function-link" > < span class = "function-syntax" > Emit::named_unchecked_constant_hex< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > val< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2020-08-26 12:52:50 +03:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > FundamentalConstants::emit< / span > < button class = "popup" onclick = "togglePopup('usagePopup1')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup1" > Usage of < span class = "code-font" > < span class = "function-syntax" > FundamentalConstants::emit< / span > < / span > :< br / > Emitting Inter - < a href = "2-emt.html#SP2" > § 2< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > target_vm< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > VM< / span > < span class = "plain-syntax" > ) {< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > VM< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > internal_error< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > "target VM not set yet"< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > TargetVMs::debug_enabled< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > VM< / span > < span class = "plain-syntax" > ))< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < a href = "4-fc.html#SP1" class = "function-link" > < span class = "function-syntax" > FundamentalConstants::emit_one< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > DEBUG_HL< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > 1< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Str::eq< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > VM< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > family_name< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > I< / span > < span class = "string-syntax" > "Z-Machine"< / span > < span class = "plain-syntax" > )) {< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < a href = "4-fc.html#SP1" class = "function-link" > < span class = "function-syntax" > FundamentalConstants::emit_one< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > TARGET_ZCODE_HL< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > 1< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "4-fc.html#SP1" class = "function-link" > < span class = "function-syntax" > FundamentalConstants::emit_one< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > DICT_WORD_SIZE_HL< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > 6< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > } < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Str::eq< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > VM< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > family_name< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > I< / span > < span class = "string-syntax" > "Glulx"< / span > < span class = "plain-syntax" > )) {< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < a href = "4-fc.html#SP1" class = "function-link" > < span class = "function-syntax" > FundamentalConstants::emit_one< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > TARGET_GLULX_HL< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > 1< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "4-fc.html#SP1" class = "function-link" > < span class = "function-syntax" > FundamentalConstants::emit_one< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > DICT_WORD_SIZE_HL< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > 9< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "4-fc.html#SP1" class = "function-link" > < span class = "function-syntax" > FundamentalConstants::emit_one< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > INDIV_PROP_START_HL< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > TargetVMs::is_16_bit< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > VM< / span > < span class = "plain-syntax" > )) {< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < a href = "4-fc.html#SP1" class = "function-link" > < span class = "function-syntax" > FundamentalConstants::emit_one< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > WORDSIZE_HL< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > 2< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "4-fc.html#SP1" class = "function-link" > < span class = "function-syntax" > FundamentalConstants::emit_unchecked_hex< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > NULL_HL< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > 0xffff< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "4-fc.html#SP1" class = "function-link" > < span class = "function-syntax" > FundamentalConstants::emit_hex< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > WORD_HIGHBIT_HL< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > 0x8000< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "4-fc.html#SP1" class = "function-link" > < span class = "function-syntax" > FundamentalConstants::emit_hex< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > WORD_NEXTTOHIGHBIT_HL< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > 0x4000< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "4-fc.html#SP1" class = "function-link" > < span class = "function-syntax" > FundamentalConstants::emit_hex< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > IMPROBABLE_VALUE_HL< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > 0x7fe3< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "4-fc.html#SP1" class = "function-link" > < span class = "function-syntax" > FundamentalConstants::emit_hex< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > REPARSE_CODE_HL< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > 10000< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "4-fc.html#SP1" class = "function-link" > < span class = "function-syntax" > FundamentalConstants::emit_one< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > MAX_POSITIVE_NUMBER_HL< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > 32767< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "4-fc.html#SP1" class = "function-link" > < span class = "function-syntax" > FundamentalConstants::emit_signed< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > MIN_NEGATIVE_NUMBER_HL< / span > < span class = "plain-syntax" > , -32768);< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > } < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > {< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < a href = "4-fc.html#SP1" class = "function-link" > < span class = "function-syntax" > FundamentalConstants::emit_one< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > WORDSIZE_HL< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > 4< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "4-fc.html#SP1" class = "function-link" > < span class = "function-syntax" > FundamentalConstants::emit_unchecked_hex< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > NULL_HL< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > 0xffffffff< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "4-fc.html#SP1" class = "function-link" > < span class = "function-syntax" > FundamentalConstants::emit_hex< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > WORD_HIGHBIT_HL< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > 0x80000000< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "4-fc.html#SP1" class = "function-link" > < span class = "function-syntax" > FundamentalConstants::emit_hex< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > WORD_NEXTTOHIGHBIT_HL< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > 0x40000000< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "4-fc.html#SP1" class = "function-link" > < span class = "function-syntax" > FundamentalConstants::emit_hex< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > IMPROBABLE_VALUE_HL< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > 0xdeadce11< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "4-fc.html#SP1" class = "function-link" > < span class = "function-syntax" > FundamentalConstants::emit_hex< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > REPARSE_CODE_HL< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > 0x40000000< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "4-fc.html#SP1" class = "function-link" > < span class = "function-syntax" > FundamentalConstants::emit_one< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > MAX_POSITIVE_NUMBER_HL< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > 2147483647< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "4-fc.html#SP1" class = "function-link" > < span class = "function-syntax" > FundamentalConstants::emit_signed< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > MIN_NEGATIVE_NUMBER_HL< / span > < span class = "plain-syntax" > , -2147483648);< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > }< / span >
2020-02-27 03:43:11 +02:00
< / pre >
2020-08-18 00:57:45 +03:00
< p class = "commentary firstcommentary" > < a id = "SP2" class = "paragraph-anchor" > < / a > < b > § 2. < / b > This version-numbering constant is not really to do with the VM (it is
2020-02-27 03:43:11 +02:00
Inform's own version number), but it belongs nowhere else either, so:
< / p >
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2020-08-26 12:52:50 +03:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > FundamentalConstants::emit_build_number< / span > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > ) {< / span >
2020-06-28 01:18:54 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > TEMPORARY_TEXT< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > build< / span > < span class = "plain-syntax" > )< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > WRITE_TO< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > build< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "%B"< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > );< / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > = < / span > < a href = "2-hrr.html#SP4" class = "function-link" > < span class = "function-syntax" > Hierarchy::find< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > NI_BUILD_COUNT_HL< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "2-emt.html#SP3" class = "function-link" > < span class = "function-syntax" > Emit::named_string_constant< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > build< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < a href = "2-hrr.html#SP4" class = "function-link" > < span class = "function-syntax" > Hierarchy::make_available< / span > < / a > < span class = "plain-syntax" > (< / span > < a href = "2-emt.html#SP2" class = "function-link" > < span class = "function-syntax" > Emit::tree< / span > < / a > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > );< / span >
2020-06-28 01:18:54 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > DISCARD_TEXT< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > build< / span > < span class = "plain-syntax" > )< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > }< / span >
2020-02-27 03:43:11 +02:00
< / pre >
2020-08-18 00:57:45 +03:00
< p class = "commentary firstcommentary" > < a id = "SP3" class = "paragraph-anchor" > < / a > < b > § 3. < / b > This also doesn't really belong here, but...
2020-02-27 03:43:11 +02:00
< / p >
2020-05-03 03:01:21 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > FundamentalConstants::veto_number< / span > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > X< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (((< / span > < span class = "identifier-syntax" > X< / span > < span class = "plain-syntax" > > < / span > < span class = "constant-syntax" > 32767< / span > < span class = "plain-syntax" > ) || (< / span > < span class = "identifier-syntax" > X< / span > < span class = "plain-syntax" > < -32768)) & & < / span >
2020-08-26 12:52:50 +03:00
< span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > TargetVMs::is_16_bit< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::vm< / span > < span class = "plain-syntax" > ()))) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::sentence_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_LiteralOverflow< / span > < span class = "plain-syntax" > ),< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "you use a number which is too large"< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "at least with the Settings for this project as they currently "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "are. (Change to Glulx to be allowed to use much larger numbers.)"< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2020-02-27 03:43:11 +02:00
< / pre >
2020-05-03 03:01:21 +03:00
< nav role = "progress" > < div class = "progresscontainer" >
2020-08-27 01:12:58 +03:00
< ul class = "progressbar" > < li class = "progressprev" > < a href = "3-abc.html" > ❮ < / a > < / li > < li class = "progresschapter" > < a href = "P-wtmd.html" > P< / a > < / li > < li class = "progresschapter" > < a href = "1-rm.html" > 1< / a > < / li > < li class = "progresschapter" > < a href = "2-hrr.html" > 2< / a > < / li > < li class = "progresschapter" > < a href = "3-ad.html" > 3< / a > < / li > < li class = "progresscurrentchapter" > 4< / li > < li class = "progresscurrent" > fc< / li > < li class = "progresssection" > < a href = "4-i6i.html" > i6i< / a > < / li > < li class = "progresssection" > < a href = "4-lt.html" > lt< / a > < / li > < li class = "progresssection" > < a href = "4-jl.html" > jl< / a > < / li > < li class = "progresssection" > < a href = "4-ct.html" > ct< / a > < / li > < li class = "progresssection" > < a href = "4-rtn.html" > rtn< / a > < / li > < li class = "progresssection" > < a href = "4-iti.html" > iti< / a > < / li > < li class = "progresssection" > < a href = "4-plg.html" > plg< / a > < / li > < li class = "progresssection" > < a href = "4-pc.html" > pc< / a > < / li > < li class = "progresssection" > < a href = "4-ts.html" > ts< / a > < / li > < li class = "progresssection" > < a href = "4-itc.html" > itc< / a > < / li > < li class = "progresssection" > < a href = "4-uoart.html" > uoart< / a > < / li > < li class = "progresssection" > < a href = "4-rsfk.html" > rsfk< / a > < / li > < li class = "progresssection" > < a href = "4-efart.html" > efart< / a > < / li > < li class = "progresssection" > < a href = "4-vart.html" > vart< / a > < / li > < li class = "progresssection" > < a href = "4-rart.html" > rart< / a > < / li > < li class = "progresssection" > < a href = "4-rsft.html" > rsft< / a > < / li > < li class = "progressnext" > < a href = "4-i6i.html" > ❯ < / a > < / li > < / ul > < / div >
2020-05-03 03:01:21 +03:00
< / nav > <!-- End of weave -->
2020-02-27 03:43:11 +02:00
2020-03-19 02:11:25 +02:00
< / main >
2020-02-27 03:43:11 +02:00
< / body >
< / html >