Create readable text `.bas' for each tokenized BASIC `,ffb' file.
[ssr] / StraySrc / Libraries / Sapphire / bsh / options.bas
diff --git a/StraySrc/Libraries/Sapphire/bsh/options.bas b/StraySrc/Libraries/Sapphire/bsh/options.bas
new file mode 100644 (file)
index 0000000..889559e
--- /dev/null
@@ -0,0 +1,58 @@
+REM Sapphire options macro library -- © 1995 Straylight
+
+DEF FNoptions_test=0
+
+DEF FNoption(o%,t%,n$)
+IF FNalign
+opt__l=opt__l
+IF opt__l THEN !(opt__l+O%-P%+4)=P%-opt__l
+[ opt 4
+.opt__l
+  dcd 0
+  dcd 0
+  dcd o%
+  dcd t%
+  equs n$+CHR$(0)
+  FNalign
+]
+=0
+
+DEF FNopt__f(f%)
+!(opt__l+O%-P%)=!(opt__l+O%-P%) OR f%
+=0
+
+DEF FNoptions_end
+[ opt 4
+  FNopt__f(optFlag_last)
+  FNalign
+]
+!(opt__l+O%-P%+4)=P%-opt__l
+=0
+
+DEF FNoptions_string(o%,n$,s%)
+[ opt 4
+  FNoption(o%,optType_string,n$)
+  dcd s%
+]
+=0
+
+DEF FNoptions_integer(o%,n$,b%)
+IF FNoption(o%,optType_integer,n$)
+IF b% THEN [opt 4:dcd b%:]
+=0
+
+DEF FNoptions_literal
+IF FNoption(0,optType_literal,"")
+IF FNopt__f(optFlag_ignore)
+=0
+
+DEF FNoptions_enum(o%,n$)=FNoption(o%,optType_enum,n$)
+
+DEF FNoptions_bool(o%,n$,f%)
+[ opt 4
+  FNoption(o%,optType_bool,n$)
+  dcd f%
+]
+=0
+
+DEF FNoptions_version(o%,n$)=FNoption(o%,optType_version,n$)