<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://wikiti.brandonw.net/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wikiti.brandonw.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Aksnowman</id>
		<title>WikiTI - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wikiti.brandonw.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Aksnowman"/>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Special:Contributions/Aksnowman"/>
		<updated>2026-04-05T19:41:03Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.23.5</generator>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:OS:Dialog_context</id>
		<title>83Plus:OS:Dialog context</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:OS:Dialog_context"/>
				<updated>2008-07-31T03:38:33Z</updated>
		
		<summary type="html">&lt;p&gt;Aksnowman: /* Credits */ removed an un-needed &amp;quot;for&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:OS_Information|Dialog context]]&lt;br /&gt;
This Documentation is for use with the [[:Category:83Plus:BCALLs:By_Name:Dialog|Dialog BCALLS]].&lt;br /&gt;
&lt;br /&gt;
== General Info ==&lt;br /&gt;
To start this context, load a menu structure* to ramCode/[[83Plus:RAM:8000|appData]], BCALL [[83Plus:BCALLs:4C06|DialogInit]] and then BCALL [[83Plus:BCALLs:4C03|StartDialog]].&lt;br /&gt;
You choose whether the run indicator is displayed and whether contexts are allowed (appAllowContext,(iy+appFlags)).&lt;br /&gt;
It is imperative that (cxCurApp) be one of the allowed values (use 58h=kExtApps).&lt;br /&gt;
&lt;br /&gt;
If kSolveRoot (SOLVE EDITOR), kStatEd (list editor), or kInfStat (inferential statistic editor) are pressed, the entire screen is redrawn and then the parser callback is called with A=1.&lt;br /&gt;
&lt;br /&gt;
If [UP], [DOWN], or [ENTER] are pressed, any entered number is parsed*.&lt;br /&gt;
&lt;br /&gt;
If [2nd]+[QUIT] is pressed, whatever has been entered will be parsed* (no errors thrown nor anything displayed) to OP1, the previous context vectors are restored, SP is restored from (spSave), and the run indicator is turned off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Parsing the number ==&lt;br /&gt;
ParseInp is called on the data entered, and OP1 is checked to make sure it is REAL (error thrown if not (and this may return to the edit)).&lt;br /&gt;
A=0 is passed to the parser callback. B (8006h) is the index into a prompt structure (probably bID = 3). It is expected to return a value in A. Return zero to display the current line (string and number).&lt;br /&gt;
It also copies the number in OP1 to the spot bNumIndex points to. If 0,(iy+2Eh) is set, the rest of the line is not erased (then NewLine).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Menu structure ==&lt;br /&gt;
Load as many of these structures, one after the other (zero-terminated), to ramCode/[[83Plus:RAM:8000|appData]] in the order you want it displayed.&lt;br /&gt;
Store the length-indexed strings in RAM as well (right after this structure, in ramCode/[[83Plus:RAM:8000|appData]]).&lt;br /&gt;
&lt;br /&gt;
bID can be from 1-6:&lt;br /&gt;
bID = 1: display string (cannot select).&lt;br /&gt;
bID = 2: display highlightable choices (as in the MODE context). A byte table at 8009h has to do  with what is selected here.&lt;br /&gt;
bID = 3: display prompt string and number.&lt;br /&gt;
bID = 4: display highlightable string.&lt;br /&gt;
bID = 5: display menu number (ex. &amp;quot;1:&amp;quot;) and prompt string.&lt;br /&gt;
bID = 6: hidden, skip displaying this entry.&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 1 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumChoices     ;probably always 1&lt;br /&gt;
        DB bUnknown        ;&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 2 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumChoices     ;&lt;br /&gt;
        DB bUnknown        ;I think this is the number of rows to skip for next item, or something&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode                        /&lt;br /&gt;
        DB bColumn         ;column to display string (this is probably ignored) \ There are bNumChoices of these.&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 3 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumChoices     ;probably always 1&lt;br /&gt;
        DB bNumIndex       ;&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 4 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumChoices     ;probably always 1&lt;br /&gt;
        DB bUnknown        ;&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 5 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumEntries     ;probably always 1&lt;br /&gt;
        DB bMenuItemNum    ;1 for &amp;quot;1:&amp;quot;, 2 for &amp;quot;2:&amp;quot;, etc.&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 6 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumChoices     ;&lt;br /&gt;
        DB bUnknown        ;&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode &amp;lt; There are bNumChoices of these.&lt;br /&gt;
&lt;br /&gt;
8038h: bNumIndex above is an offset into a list of floating-point numbers:&lt;br /&gt;
        DB 00h,80h,00h,00h,00h,00h,00h,00h,00h&lt;br /&gt;
== Examples ==&lt;br /&gt;
=== Example Code ===&lt;br /&gt;
 hookBackup              equ     appBackUpScreen&lt;br /&gt;
 .db 0BBh,6Dh&lt;br /&gt;
        ld hl,rawKeyHookPtr&lt;br /&gt;
        ld de,hookBackup&lt;br /&gt;
        ld bc,4&lt;br /&gt;
        ldir&lt;br /&gt;
        ld a,(flags+34h)&lt;br /&gt;
        ld (de),a&lt;br /&gt;
        ld a,(cxCurApp)&lt;br /&gt;
        push af&lt;br /&gt;
        ld a,58h&lt;br /&gt;
        ld (cxCurApp),a&lt;br /&gt;
        ld hl,structStart&lt;br /&gt;
        ld de,ramCode&lt;br /&gt;
        ld bc,structEnd-structStart&lt;br /&gt;
        ldir&lt;br /&gt;
        ld hl,dialogCallback&lt;br /&gt;
        in a,(6)&lt;br /&gt;
        bcall(_DialogInit)&lt;br /&gt;
        bcall(_runIndicOff)&lt;br /&gt;
        bcall(_StartDialog)&lt;br /&gt;
        bcall(_cursorOff)&lt;br /&gt;
        bcall(_clrLCDFull)&lt;br /&gt;
        res appCurWord,(iy+appFlags)&lt;br /&gt;
        bcall(_ClrTxtShd)&lt;br /&gt;
        ld hl,cmdShadow&lt;br /&gt;
        ld de,cmdShadow+1&lt;br /&gt;
        ld (hl),' '&lt;br /&gt;
        ld bc,127&lt;br /&gt;
        ldir&lt;br /&gt;
        pop af&lt;br /&gt;
        ld (cxCurApp),a&lt;br /&gt;
        ld hl,hookBackup&lt;br /&gt;
        ld de,rawKeyHookPtr&lt;br /&gt;
        ld bc,4&lt;br /&gt;
        ldir&lt;br /&gt;
        ld a,(hl)&lt;br /&gt;
        ld (flags+34h),a&lt;br /&gt;
        xor a&lt;br /&gt;
        bcall(_GetDialogNumOP1)&lt;br /&gt;
        ld hl,0&lt;br /&gt;
        ld (penCol),hl&lt;br /&gt;
        ld a,9&lt;br /&gt;
        bcall(_DispOP1a)&lt;br /&gt;
 dialogCallback:&lt;br /&gt;
        xor a&lt;br /&gt;
        ret&lt;br /&gt;
 structStart:&lt;br /&gt;
        ;put your dialog data here&lt;br /&gt;
 structEnd:&lt;br /&gt;
=== Example Table ===&lt;br /&gt;
 structStart:&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 1&lt;br /&gt;
        .dw sOptions-structStart&lt;br /&gt;
        .db 5&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 1&lt;br /&gt;
        .dw sItem1-structStart&lt;br /&gt;
        .db 5&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 2&lt;br /&gt;
        .dw sItem2-structStart&lt;br /&gt;
        .db 2&lt;br /&gt;
        .db 3&lt;br /&gt;
        .db 1&lt;br /&gt;
        .dw sSelect-structStart&lt;br /&gt;
        .dw sOpt1-structStart&lt;br /&gt;
        .dw sOpt2-structStart&lt;br /&gt;
        .db 3&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 0&lt;br /&gt;
        .dw sNum-structStart&lt;br /&gt;
        .db 4&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 1&lt;br /&gt;
        .dw sDone-structStart&lt;br /&gt;
        .db 0&lt;br /&gt;
 sOptions:&lt;br /&gt;
        .db 7,&amp;quot;OPTIONS&amp;quot;&lt;br /&gt;
 sItem1: .db 5,&amp;quot;Item1&amp;quot;&lt;br /&gt;
 sItem2: .db 5,&amp;quot;Item2&amp;quot;&lt;br /&gt;
 sSelect:&lt;br /&gt;
        .db 6,&amp;quot;Opts: &amp;quot;&lt;br /&gt;
 sOpt1:  .db 4,&amp;quot;Opt1&amp;quot;&lt;br /&gt;
 sOpt2:  .db 4,&amp;quot;Opt2&amp;quot;&lt;br /&gt;
 sNum:   .db 4,&amp;quot;Num=&amp;quot;&lt;br /&gt;
 sDone:  .db 4,&amp;quot;Done&amp;quot;&lt;br /&gt;
 structEnd:&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
* Thanks to BrandonW for finding out all this info on the dialog BCALLs and for the example code, though apparently Detached Solutions knew it all along.&lt;/div&gt;</summary>
		<author><name>Aksnowman</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:RAM:8269</id>
		<title>83Plus:RAM:8269</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:RAM:8269"/>
				<updated>2008-07-25T04:02:33Z</updated>
		
		<summary type="html">&lt;p&gt;Aksnowman: /* Comments */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:RAM:By_Name|MD5Length]] [[Category:83Plus:RAM:By_Address|8269 - MD5Length]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' MD5Length&lt;br /&gt;
&lt;br /&gt;
'''Memory Address:''' 8269h&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 8 bytes.&lt;br /&gt;
&lt;br /&gt;
This area stores the length ''in bits'' of the current MD5 data block.  It is used internally by [[83Plus:BCALLs:808D|MD5Init]], [[83Plus:BCALLs:8090|MD5Update]] and [[83Plus:BCALLs:8018|MD5Final]].&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
Do not modify this area during MD5 calculations.&lt;/div&gt;</summary>
		<author><name>Aksnowman</name></author>	</entry>

	</feed>