User Tools

Site Tools


intrinsic_statements

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Last revision Both sides next revision
intrinsic_statements [2020/02/15 23:14]
adminz
intrinsic_statements [2020/03/03 21:32]
jtwine
Line 26: Line 26:
  
 <code c> <code c>
-__Fill From Reg1 To Reg2 With 0xAA+__Fill From Reg1 To Reg2 With 0xAA;
 </​code>​ </​code>​
  
Line 36: Line 36:
  
 <code c> <code c>
-__FillRamp From Reg1 To Reg2 With 0x42+__FillRamp From Reg1 To Reg2 With 0x42;
 </​code>​ </​code>​
  
  
 ==== Implementation ==== ==== Implementation ====
-The intrinsic statements are implemented via a custom program (Program #99, ''​%%__%%IP%%__%%P99''​) that is created and added to the compiled ​file near the end of the compilation phase. ​ Its implementation is as follows:+The intrinsic statements are implemented via a custom program (Program #99, ''​%%__%%IP%%__%%P99''​) that is added internally and compiled near the end of the compilation phase. ​ Its implementation is as follows:
  
 <code c> <code c>
 Program __IP__P99; Program __IP__P99;
-    Alias Command=RegF;                     // First Parameter - Intrinsic Command +    Alias Command=Reg8;                     // First Parameter ​ - Intrinsic Command 
-    Alias FromOrDelay=RegE;                 // Second Parameter - Start Of Fill Range or Delay Counter/​Value +    Alias FromOrDelay=Reg9;                 // Second Parameter - Start Of Fill Range or Delay Counter/​Value 
-    Alias To=RegD;                          // Third Parameter - End Of Fill Range +    Alias To=RegA;                          // Third Parameter ​ - End Of Fill Range 
-    Alias FillChar=RegC;                    // Fourth Parameter - Character to use for Fill/​FillRamp ​     ​+    Alias FillChar=RegB;                    // Fourth Parameter - Character to use for Fill/​FillRamp ​     ​
  
-    If Command == 1 Goto Delay; ​            // ​RegF == 1 - Delay +    If Command == 1 Goto Delay; ​            // ​Reg8 == 1 - Delay 
-    If Command >= 2 Goto Fill;              // RegF == 2 - Fill, RegF == 3 - FillRamp+    If Command >= 2 Goto Fill;              // Reg8 == 2 - Fill, Reg8 == 3 - FillRamp
     Goto End;     Goto End;
  
Line 77: Line 77:
         Goto FillReturn; ​                   // Go Back To Fill Routine         Goto FillReturn; ​                   // Go Back To Fill Routine
  
-:End                                        // End Of Program 99+    ​:End                                        ​ 
 +EndProgram; ​                                // End Of Program 99
 </​code>​ </​code>​
  
-When a intrinsic statement is encountered,​ the statement is replaced with code to populate the necessary registers with the necessary parameters and a call to Program 99 is made.+When a intrinsic statement is encountered,​ the statement is replaced with code to populate the necessary registers with the necessary parameters and a call to Program 99 is made.  For example, the following call to the ''​%%__%%Delay''​ intrinsic:​ 
 + 
 +<code c> 
 +__Delay 50; 
 +</​code>​ 
 + 
 +-Is replaced with the equivalent of the following code: 
 + 
 +<code c> 
 +RegF = 1; 
 +RegE = 50; 
 +Execute 99; 
 +</​code>​
intrinsic_statements.txt · Last modified: 2020/03/03 21:35 by jtwine