for crafting (raw) files, with form@fix

This file is valuable for crafting (raw) files, with form@fix. First frame this.

//	\F "fixRaw.htm"     \\this file

The MSDOS .com files almost always suppose a two-byte int format. But if your form@fix processor is not the fixDX, the default int width may be something else. For fixWin, that is 4-bytes. Therefore, what we would like to have first, is the certainty of what we suppose. Set the format-width, as well as the remz-offset, manually.

\r rOffset0	\r fixRaw

For scratch work, not written to the file but useful toward that, we may allocate the piece of memory beyond a point. Set that at a point beyond the length of your final file, for the two portions not to overlap. I like to set that at 0x5000 (that is, 20480 bytes). Modify this (to less, or more), depending on the specific application.

\a 0x5000	\\toward  form@fix@RunTime_Max

fix.exe for MSDOS is limited to segment width (64K, in total). The 0x5000 is a good rule-of-thumb, within 64K. If your file/work needs a lot, then choose the fix.exe for Win32, for 0xAF0000 in total -- extendable, trivially.

format specifying

For byte data-or-remz,

\r =
\r =1	\\the platform =1
\r attr=	\\byte-width, although flexible for the future
\\r+ is 0    \a+1 4
\\width is 1 \a+1 1   1   \a+1 3

For padding from byte-width to int-width

\r fiz	\*= 1 0    \\fill with zeroes, if positive
\r -fiz	\*= 1 0xFF \\fill with 0xFF to sign-extend, if negative 

For word data-or-remz,

\r =2	\\the platform is =2
\\r+ is 0		\a+1 4
\\width is 2	\*= 2 0 0 0

For dword data-or-remz,

\r =4	\\the platform is =4
\\r+ is 0    \a+1 4
\\width is 4 \*= 4 0 0 0

as was

In case, we would refer to the int-width of the fix.exe that is processing this file,

//ARZ.Zero, the [platform.r+]-free offset.
//	Purely, the 0th byte of ARZ, that is.

\r RZ
\r =.	\\the default platform-format is this.
\\r+ is 0    \a+1 4
\\width is 0 \a+1 4

This default format is useful for a remz (or, remz-list) like for frag. Good, because otherwise frag would have to acept only a single width for all platforms. For coding in fixDX, that is a waste to accommodate the double-width of Win32. Not to mention that, for a future support of Win64, the thing would get totally problematic.

A few run-time only conveniences. Although referrable while fixing the .com, do not refer to such a run-time-only remz, from within your .com, because that would be what is known as dangling-pointer problem.

\r [?]	\'?'	\*= 0	\\frag for not returning a result
\r {/}	\*=4 0	\\empty set

f0 is only a fancier name, to fill with zeroes, at byte-width, e.g: with \a+f0 20 to fill with 20 zeroes. i.e: "1" is the fill-width, not the filler-value. Filler is zero, if not explicitly specified.

\r f0	\*=4 1

A few for conveniently referring to a macro type. Macro-flag is 0x80. The letter 'F' plus 0x80 is 0xC6.

\r mid80.macro
	\a 0xD0	\r Pm	\\Petri transition
	\a 0xD5	\r Um	\\UCLA control-node
	\a 0xC6	\r Fm	\\Nutt F-transition
	\a 0xCA	\r Jm	\\Nutt J-transition
	\a 0xD4	\r Tm	\\Nutt T-transition
	\a 0xD8	\r Xm	\\Nutt X-transition
	\a 0xD9	\r Ym	\\Nutt Y-transition
	.\a 0xCB	\r Km
	\a 0xC4	\r Dm	\\Danthine mod for  X-transition
	\a 0xE2	\r bm	\\binary loc
	\a 0xF0	\r pm \\Petri loc
\a mid80.macro
\r- mid80.macro

\r width(formal)
	\*RZ 0 0 0 0 0 0 0 0 0 0
\* width(formal)\-f
\a width(formal)
\a+ 1
\*= 0 0 0	\\pad width(formal) to four-bytes

For a frozen@mid80 style fragging, for form@fix, we may think a single-transition "net." This T-transition is running the frag (predicate) that is to follow immediately after the "\F@ @FragFun" statement.

\r @FragFun

\'\\r .fm'

	//allocating the formal-list width, for returning-to afterward
	\'\\a+ width(formal)'

	\'\\r b1\\\'b\'\\*= 1\\*attr= 0'
	\'\\r b2\\\'b\'\\*= 2\\*attr= 0'

	\'\\r .L'
		\'\\*RZ b1 b2 0'

	\'\\r .M0'
	 	\'\\*RZ b1\\*= 1'
		\'\\*RZ 0'

	\'\\r a1'
		\'\\\'T\'\\*= 1'	\\T1
		\'\\*RZ b1 b2'
		\'\\*RZ {/}'	\\ immediately finishing
		\'\\r .t\\*RZ 0'	\\ activity/transition procedure

	\'\\r .A'
		\'\\*RZ a1 0'

	\'\\r .z'
	\'\\a .fm'
	\'\\*RZ .A {/} {/} .M0 .L .L {/} {/}' \\formal net.
	\'\\a .t\\*RZ .z'
	\'\\a .z'

\'\\r/ .fm'
\'\\r- .fm'
\*= 0

\r form@fix@RunTime_Max  \\to keep in mind, the high-ARZ remz

\a 0

Forum: . . (Fair Menu . . . . . Fault Report? . . . . . Remedy for your case . . . . . Noticed Plagiarism?)

Referring#: 0.1
Last-Revised (text) on Aug. 18, 2008
Written by: Ahmed Ferzan/Ferzen R Midyat-Zila (or, Earth)
Copyright (c) 2003, 2005, 2008 Ferzan Midyat. All rights reserved.