<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>fprintks</title> <link rel="stylesheet" type="text/css" href="csound.css" /> <meta name="generator" content="DocBook XSL Stylesheets V1.76.1" /> <link rel="home" href="index.html" title="The Canonical Csound Reference Manual" /> <link rel="up" href="OpcodesTop.html" title="Orchestra Opcodes and Operators" /> <link rel="prev" href="foutk.html" title="foutk" /> <link rel="next" href="fprints.html" title="fprints" /> </head> <body> <div class="navheader"> <table width="100%" summary="Navigation header"> <tr> <th colspan="3" align="center">fprintks</th> </tr> <tr> <td width="20%" align="left"><a accesskey="p" href="foutk.html">Prev</a> </td> <th width="60%" align="center">Orchestra Opcodes and Operators</th> <td width="20%" align="right"> <a accesskey="n" href="fprints.html">Next</a></td> </tr> </table> <hr /> </div> <div class="refentry" title="fprintks"> <a id="fprintks"></a> <div class="titlepage"></div> <a id="IndexFprintks" class="indexterm"></a> <div class="refnamediv"> <h2> <span class="refentrytitle">fprintks</span> </h2> <p>fprintks — Similar to printks but prints to a file. </p> </div> <div class="refsect1" title="Description"> <a id="idp24341872"></a> <h2>Description</h2> <p> Similar to <a class="link" href="printks.html" title="printks"><em class="citetitle">printks</em></a> but prints to a file. </p> </div> <div class="refsect1" title="Syntax"> <a id="idp24343032"></a> <h2>Syntax</h2> <pre class="synopsis"><span class="command"><strong>fprintks</strong></span> "filename", "string", [, kval1] [, kval2] [...]</pre> </div> <div class="refsect1" title="Initialization"> <a id="idp24393672"></a> <h2>Initialization</h2> <p> <span class="emphasis"><em>"filename"</em></span> -- name of the output file. </p> <p> <span class="emphasis"><em>"string"</em></span> -- the text string to be printed. Can be up to 8192 characters and must be in double quotes. </p> </div> <div class="refsect1" title="Performance"> <a id="idp24395208"></a> <h2>Performance</h2> <p> <span class="emphasis"><em>kval1, kval2, ...</em></span> (optional) -- The k-rate values to be printed. These are specified in <span class="emphasis"><em><span class="quote">“<span class="quote">string</span>”</span></em></span> with the standard C value specifier (%f, %d, etc.) in the order given. </p> <p> <span class="emphasis"><em>fprintks</em></span> is similar to the <span class="emphasis"><em>printks</em></span> opcode except it outputs to a file and doesn't have a <span class="emphasis"><em>itime</em></span> parameter. For more information about output formatting, please look at <a class="link" href="printks.html" title="printks"><em class="citetitle">printks's documentation</em></a>. </p> </div> <div class="refsect1" title="Examples"> <a id="idp24398016"></a> <h2>Examples</h2> <p> Here is an example of the fprintks opcode. It uses the file <a class="ulink" href="examples/fprintks.csd" target="_top"><em class="citetitle">fprintks.csd</em></a>. </p> <div class="example"> <a id="idp24399008"></a> <p class="title"> <strong>Example 294. Example of the fprintks opcode.</strong> </p> <div class="example-contents"> <p>See the sections <a class="link" href="UsingRealTime.html" title="Real-Time Audio"><em class="citetitle">Real-time Audio</em></a> and <a class="link" href="CommandFlags.html" title="Csound command line"><em class="citetitle">Command Line Flags</em></a> for more information on using command line flags.</p> <pre class="programlisting"> <span class="csdtag"><CsoundSynthesizer></span> <span class="csdtag"><CsOptions></span> <span class="comment">; Select audio/midi flags here according to platform</span> <span class="comment">; Audio out Audio in</span> -odac -iadc <span class="comment">;;;RT audio I/O</span> <span class="comment">; For Non-realtime ouput leave only the line below:</span> <span class="comment">; -o fprintks.wav -W ;;; for file output any platform</span> <span class="csdtag"></CsOptions></span> <span class="csdtag"><CsInstruments></span> <span class="op">/</span><span class="op">*</span> Written by Matt Ingalls, edited by Kevin Conder. <span class="op">*</span><span class="op">/</span> <span class="comment">; Initialize the global variables.</span> <span class="ohdr">sr</span> <span class="op">=</span> 44100 <span class="ohdr">kr</span> <span class="op">=</span> 4410 <span class="ohdr">ksmps</span> <span class="op">=</span> 10 <span class="ohdr">nchnls</span> <span class="op">=</span> 1 <span class="comment">; Instrument #1 - a score generator example.</span> <span class="oblock">instr</span> 1 <span class="comment">; K-rate stuff.</span> kstart <span class="opc">init</span> 0 kdur <span class="opc">linrand</span> 10 kpitch <span class="opc">linrand</span> 8 <span class="comment">; Printing to to a file called "my.sco".</span> <span class="opc">fprintks</span> "my.sco", "i1\\t<span class="op">%</span>2.2f\\t<span class="op">%</span>2.2f\\t<span class="op">%</span>2.2f\\n", kstart, kdur, 4<span class="op">+</span>kpitch knext <span class="opc">linrand</span> 1 kstart <span class="op">=</span> kstart <span class="op">+</span> knext <span class="oblock">endin</span> <span class="csdtag"></CsInstruments></span> <span class="csdtag"><CsScore></span> /* Written by Matt Ingalls, edited by Kevin Conder. */ <span class="comment">; Play Instrument #1.</span> <span class="stamnt">i</span> 1 0 0.001 <span class="csdtag"></CsScore></span> <span class="csdtag"></CsoundSynthesizer></span> </pre> </div> </div> <p><br class="example-break" /> This example will generate a file called <span class="quote">“<span class="quote">my.sco</span>”</span>. It should contain lines like this: </p> <pre class="screen"> i1 0.00 3.94 10.26 i1 0.20 3.35 6.22 i1 0.67 3.65 11.33 i1 1.31 1.42 4.13 </pre> <p> </p> <p> Here is an example of the fprintks opcode, which converts a standard MIDI file to a csound score. It uses the file <a class="ulink" href="examples/fprintks-2.csd" target="_top"><em class="citetitle">fprintks-2.csd</em></a>. </p> <div class="example"> <a id="idp24402888"></a> <p class="title"> <strong>Example 295. Example of the fprintks opcode to convert a MIDI file to a csound score.</strong> </p> <div class="example-contents"> <pre class="programlisting"> <span class="csdtag"><CsoundSynthesizer></span> <span class="csdtag"><CsOptions></span> <span class="comment">; Select audio/midi flags here according to platform</span> <span class="comment">; Audio out Audio in No messages</span> <span class="comment">; -odac -iadc -d ;;;RT audio I/O</span> <span class="comment">; For Non-realtime ouput leave only the line below:</span> -n -Fmidichn_advanced.mid <span class="comment">;Don't write audio ouput to disk and use the file midichn_advanced.mid as MIDI input</span> <span class="csdtag"></CsOptions></span> <span class="csdtag"><CsInstruments></span> <span class="ohdr">sr</span> <span class="op">=</span> 48000 <span class="ohdr">ksmps</span> <span class="op">=</span> 16 <span class="ohdr">nchnls</span> <span class="op">=</span> 2 <span class="comment">;Example by Jonathan Murphy 2007</span> <span class="comment">; assign all midi events to instr 1000</span> <span class="ohdr">massign</span> 0, 1000 <span class="ohdr">pgmassign</span> 0, 1000 <span class="oblock">instr</span> 1000 ktim <span class="opc">timeinsts</span> kst, kch, kd1, kd2 <span class="opc">midiin</span> <span class="octrl">if</span> (kst <span class="op">!=</span> 0) then <span class="comment">; p4 = MIDI event type p5 = channel p6= data1 p7= data2</span> <span class="opc">fprintks</span> "MIDI2cs.sco", "i1\\t<span class="op">%</span>f\\t<span class="op">%</span>f\\t<span class="op">%</span>d\\t<span class="op">%</span>d\\t<span class="op">%</span>d\\t<span class="op">%</span>d\\n", ktim, 1<span class="op">/</span>kr, kst, kch, kd1, kd2 <span class="octrl">endif</span> <span class="oblock">endin</span> <span class="csdtag"></CsInstruments></span> <span class="csdtag"><CsScore></span> <span class="stamnt">i</span>1000 0 10000 <span class="stamnt">e</span> <span class="csdtag"></CsScore></span> <span class="csdtag"></CsoundSynthesizer></span> </pre> </div> </div> <p><br class="example-break" /> This example will generate a file called <span class="quote">“<span class="quote">MIDI2cs.sco</span>”</span> containing i-events according to the MIDI file </p> <p> Here is an advanced example of the fprintks opcode, which generates scores for Csound. It uses the file <a class="ulink" href="examples/scogen.csd" target="_top"><em class="citetitle">scogen-2.csd</em></a>. </p> <div class="example"> <a id="idp24404944"></a> <p class="title"> <strong>Example 296. Example of the fprintks opcode to create a Csound score file generator using Csound.</strong> </p> <div class="example-contents"> <pre class="programlisting"> <span class="csdtag"><CsoundSynthesizer></span> <span class="csdtag"><CsOptions></span> <span class="comment">; Select audio/midi flags here according to platform</span> <span class="comment">; Audio out Audio in No messages</span> <span class="comment">; -odac -iadc -d ;;;RT audio I/O</span> <span class="comment">; For Non-realtime ouput leave only the line below:</span> -n <span class="comment">;Don't write audio ouput to disk</span> <span class="csdtag"></CsOptions></span> <span class="csdtag"><CsInstruments></span> <span class="comment">;===========================================================</span> <span class="comment">; scogen.csd by: Matt Ingalls</span> <span class="comment">;</span> <span class="comment">; a "port" of sorts</span> <span class="comment">; of the old "mills" score generator (scogen)</span> <span class="comment">;</span> <span class="comment">; this instrument creates a schottstaedt.sco file</span> <span class="comment">; to be used with the schottstaedt.orc file</span> <span class="comment">;</span> <span class="comment">; as long as you dont save schottstaedt.orc as a .csd</span> <span class="comment">; file, you should be able to keep it open in MacCsound</span> <span class="comment">; and render each newly generated .sco file.</span> <span class="comment">;</span> <span class="comment">;===========================================================</span> gScoName <span class="op">=</span> "<span class="op">/</span>Users<span class="op">/</span>matt<span class="op">/</span>Desktop<span class="op">/</span>schottstaedt.sco" <span class="comment">; the name of the file to be generated</span> <span class="ohdr">sr</span> <span class="op">=</span> 100 <span class="comment">; this defines our temporal resolution,</span> <span class="comment">; an sr of 100 means we will generate p2 and p3 values</span> <span class="comment">; to the nearest 1/100th of a second</span> <span class="ohdr">ksmps</span> <span class="op">=</span> 1 <span class="comment">; set kr=sr so we can do everything at k-rate</span> <span class="comment">; some print opcodes</span> <span class="oblock">opcode</span> PrintInteger, 0, <span class="opc">k</span> kval <span class="opc">xin</span> <span class="opc">fprintks</span> gScoName, "<span class="op">%</span>d", kval <span class="oblock">endop</span> <span class="oblock">opcode</span> PrintFloat, 0, <span class="opc">k</span> kval <span class="opc">xin</span> <span class="opc">fprintks</span> gScoName, "<span class="op">%</span>f", kval <span class="oblock">endop</span> <span class="oblock">opcode</span> PrintTab, 0, 0 <span class="opc">fprintks</span> gScoName, "<span class="op">%</span>n" <span class="oblock">endop</span> <span class="oblock">opcode</span> PrintReturn, 0, 0 <span class="opc">fprintks</span> gScoName, "<span class="op">%</span>r" <span class="oblock">endop</span> <span class="comment">; recursively calling opcode to handle all the optional parameters</span> <span class="oblock">opcode</span> ProcessAdditionalPfields, 0, ikio iPtable, kndx, iNumPfields, iPfield <span class="opc">xin</span> <span class="comment">; additional pfields start at 5, we use a default 0 to identify the first call</span> iPfield <span class="op">=</span> (iPfield <span class="op">==</span> 0 <span class="op">?</span> 5 <span class="op">:</span> iPfield) <span class="octrl">if</span> (iPfield <span class="op">></span> iNumPfields) <span class="octrl">goto</span> endloop <span class="comment">; find our tables</span> iMinTable <span class="opc">table</span> 2<span class="op">*</span>iPfield<span class="op">-</span>1, iPtable iMaxTable <span class="opc">table</span> 2<span class="op">*</span>iPfield, iPtable <span class="comment">; get values from our tables</span> kMin <span class="opc">tablei</span> kndx, iMinTable kMax <span class="opc">tablei</span> kndx, iMaxTable <span class="comment">; find a random value in the range and write it to the score</span> <span class="opc">fprintks</span> gScoName, "<span class="op">%</span>t<span class="op">%</span>f", kMin <span class="op">+</span> <span class="opc">rnd</span>(kMax<span class="op">-</span>kMin) <span class="comment">; recursively call for any additional pfields.</span> ProcessAdditionalPfields iPtable, kndx, iNumPfields, iPfield <span class="op">+</span> 1 endloop<span class="op">:</span> <span class="oblock">endop</span> <span class="op">/</span><span class="op">*</span> <span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">=</span> Generate <span class="opc">a</span> gesture of <span class="opc">i</span><span class="op">-</span>statements p2 <span class="op">=</span> start of the gesture p3 <span class="op">=</span> duration of the gesture p4 <span class="op">=</span> number of <span class="opc">a</span> function that contains <span class="opc">a</span> list of all function <span class="opc">table</span> numbers used to define the pfield <span class="opc">random</span> distribution p5 <span class="op">=</span> <span class="opc">scale</span> generated p4 values according to density (0<span class="op">=</span>off, 1<span class="op">=</span>on) [todo] p6 <span class="op">=</span> let durations overlap gesture duration (0<span class="op">=</span>off, 1<span class="op">=</span>on) [todo] p7 <span class="op">=</span> <span class="ohdr">seed</span> for <span class="opc">random</span> number generator <span class="ohdr">seed</span> [todo] <span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">==</span><span class="op">=</span> <span class="op">*</span><span class="op">/</span> <span class="oblock">instr</span> Gesture <span class="comment">; initialize</span> iResolution <span class="op">=</span> 1<span class="op">/</span><span class="ohdr">sr</span> kNextStart <span class="opc">init</span> p2 kCurrentTime <span class="opc">init</span> p2 iNumPfields <span class="opc">table</span> 0, p4 iInstrMinTable <span class="opc">table</span> 1, p4 iInstrMaxTable <span class="opc">table</span> 2, p4 iDensityMinTable <span class="opc">table</span> 3, p4 iDensityMaxTable <span class="opc">table</span> 4, p4 iDurMinTable <span class="opc">table</span> 5, p4 iDurMaxTable <span class="opc">table</span> 6, p4 iAmpMinTable <span class="opc">table</span> 7, p4 iAmpMaxTable <span class="opc">table</span> 8, p4 <span class="comment">; check to make sure there is enough data</span> <span class="opc">print</span> iNumPfields <span class="octrl">if</span> iNumPfields <span class="op"><</span> 4 then <span class="opc">prints</span> "<span class="op">%</span>dError<span class="op">:</span> At least 4 <span class="opc">p</span><span class="op">-</span>fields (8 functions) need to be specified.<span class="op">%</span>n", iNumPfields <span class="opc">turnoff</span> <span class="octrl">endif</span> <span class="comment">; initial comment</span> <span class="opc">fprints</span> gScoName, "<span class="op">%</span>!Generated Gesture from <span class="op">%</span>f to <span class="op">%</span>f seconds<span class="op">%</span>n <span class="op">%</span>!<span class="op">%</span>t<span class="op">%</span>twith <span class="opc">a</span> <span class="opc">p</span><span class="op">-</span><span class="opc">max</span> of <span class="op">%</span>d<span class="op">%</span>n<span class="op">%</span>n", p2, p3, iNumPfields <span class="comment">; k-rate stuff</span> <span class="octrl">if</span> (kCurrentTime <span class="op">>=</span> kNextStart) then <span class="comment">; write a new note!</span> kndx <span class="op">=</span> (kCurrentTime<span class="op">-</span>p2)<span class="op">/</span>p3 <span class="comment">; get the required pfield ranges</span> kInstMin <span class="opc">tablei</span> kndx, iInstrMinTable kInstMax <span class="opc">tablei</span> kndx, iInstrMaxTable kDensMin <span class="opc">tablei</span> kndx, iDensityMinTable kDensMax <span class="opc">tablei</span> kndx, iDensityMaxTable kDurMin <span class="opc">tablei</span> kndx, iDurMinTable kDurMax <span class="opc">tablei</span> kndx, iDurMaxTable kAmpMin <span class="opc">tablei</span> kndx, iAmpMinTable kAmpMax <span class="opc">tablei</span> kndx, iAmpMaxTable <span class="comment">; find random values for all our required parametrs and print the i-statement</span> <span class="opc">fprintks</span> gScoName, "i<span class="op">%</span>d<span class="op">%</span>t<span class="op">%</span>f<span class="op">%</span>t<span class="op">%</span>f<span class="op">%</span>t<span class="op">%</span>f", kInstMin <span class="op">+</span> <span class="opc">rnd</span>(kInstMax<span class="op">-</span>kInstMin), kNextStart, kDurMin <span class="op">+</span> <span class="opc">rnd</span>(kDurMax<span class="op">-</span>kDurMin), kAmpMin <span class="op">+</span> <span class="opc">rnd</span>(kAmpMax<span class="op">-</span>kAmpMin) <span class="comment">; now any additional pfields</span> ProcessAdditionalPfields p4, kndx, iNumPfields PrintReturn <span class="comment">; calculate next starttime</span> kDensity <span class="op">=</span> kDensMin <span class="op">+</span> <span class="opc">rnd</span>(kDensMax<span class="op">-</span>kDensMin) <span class="octrl">if</span> (kDensity <span class="op"><</span> iResolution) then kDensity <span class="op">=</span> iResolution <span class="octrl">endif</span> kNextStart <span class="op">=</span> kNextStart <span class="op">+</span> kDensity <span class="octrl">endif</span> kCurrentTime <span class="op">=</span> kCurrentTime <span class="op">+</span> iResolution <span class="oblock">endin</span> <span class="csdtag"></CsInstruments></span> <span class="csdtag"><CsScore></span> /* =========================================================== <span class="stamnt">s</span>cogen.<span class="stamnt">s</span>co <span class="stamnt">t</span>his csound module genera<span class="stamnt">t</span>es a score file you specify a gesture of notes by giving <span class="stamnt">t</span>he "ges<span class="stamnt">t</span>ure" ins<span class="stamnt">t</span>rumen<span class="stamnt">t</span> a number <span class="stamnt">t</span>o a (negative) gen2 table. <span class="stamnt">t</span>his <span class="stamnt">t</span>able s<span class="stamnt">t</span>ores numbers <span class="stamnt">t</span>o pairs of func<span class="stamnt">t</span>ions. <span class="stamnt">e</span>ach function-pair r<span class="stamnt">e</span>pr<span class="stamnt">e</span>s<span class="stamnt">e</span>nts a rang<span class="stamnt">e</span> (min-max) of randomness for every pfield for the notes to <span class="stamnt">b</span>e generated. =========================================================== */ <span class="comment">; common tables for pfield ranges</span> <span class="stamnt">f</span>100 0 2 -7 0 2 0 <span class="comment">; static 0</span> <span class="stamnt">f</span>101 0 2 -7 1 2 1 <span class="comment">; static 1</span> <span class="stamnt">f</span>102 0 2 -7 0 2 1 <span class="comment">; ramp 0->1</span> <span class="stamnt">f</span>103 0 2 -7 1 2 0 <span class="comment">; ramp 1->0</span> <span class="stamnt">f</span>105 0 2 -7 10 2 10 <span class="comment">; static 10</span> <span class="stamnt">f</span>106 0 2 -7 .1 2 .1 <span class="comment">; static .1</span> <span class="comment">; specific pfield ranges</span> <span class="stamnt">f</span>10 0 2 -7 .8 2 .01 <span class="comment">; density</span> <span class="stamnt">f</span>11 0 2 -7 8 2 4 <span class="comment">; pitchmin</span> <span class="stamnt">f</span>12 0 2 -7 8 2 12 <span class="comment">; pitchmax</span> <span class="comment">;=== table containing the function numbers used for all the p-field distributions</span> <span class="comment">;</span> <span class="comment">; p1 - table number</span> <span class="comment">; p2 - time table is instantiated</span> <span class="comment">; p3 - size of table (must be >= p5!)</span> <span class="comment">; p4 - gen# (should be = -2)</span> <span class="comment">; p5 - number of pfields of each note to be generated</span> <span class="comment">; p6 - table number of the function representing the minimum possible note number (p1) of a generated note</span> <span class="comment">; p7 - table number of the function representing the maximum possible note number (p1) of a generated note</span> <span class="comment">; p8 - table number of the function representing the minimum possible noteon-to-noteon time (p2 density) of a generated note</span> <span class="comment">; p9 - table number of the function representing the maximum possible noteon-to-noteon time (p2 density) of a generated note</span> <span class="comment">; p10 - table number of the function representing the minimum possible duration (p3) of a generated note</span> <span class="comment">; p11 - table number of the function representing the maximum possible duration (p3) of a generated note</span> <span class="comment">; p12 - table number of the function representing the maximum possible amplitude (p4) of a generated note</span> <span class="comment">; p13 - table number of the function representing the maximum possible amplitude (p5) of a generated note</span> <span class="comment">; p14,p16.. - table number of the function representing the minimum possible value for additional pfields (p5,p6..) of a generated note</span> <span class="comment">; p15,p17.. - table number of the function representing the maximum possible value for additional pfields (p5,p6..) of a generated note</span> <span class="comment">; siz 2 #pds p1min p1max p2min p2max p3min p3max p4min p4max p5min p5max p6min p6max</span> <span class="stamnt">f</span>1 0 32 -2 6 101 101 10 10 101 105 100 106 11 12 100 101 <span class="comment">;gesture definitions</span> <span class="comment">; start dur pTble scale overlap seed</span> <span class="stamnt">i</span>"Gesture" 0 60 1 <span class="comment">;todo-->0 0 123</span> <span class="csdtag"></CsScore></span> <span class="csdtag"></CsoundSynthesizer></span> </pre> </div> </div> <p><br class="example-break" /> This example will generate a file called <span class="quote">“<span class="quote">schottstaedt.sco</span>”</span> which can be used as a score together with <a class="ulink" href="examples/schottstaedt.orc" target="_top"><em class="citetitle">schottstaedt.orc</em></a> </p> </div> <div class="refsect1" title="See Also"> <a id="idp24406736"></a> <h2>See Also</h2> <p> <a class="link" href="printks.html" title="printks"><em class="citetitle">printks</em></a> </p> </div> <div class="refsect1" title="Credits"> <a id="idp24407808"></a> <h2>Credits</h2> <p> </p> <table border="0" summary="Simple list" class="simplelist"> <tr> <td>Author: Matt Ingalls</td> </tr> <tr> <td>January 2003</td> </tr> </table> <p> </p> </div> </div> <div class="navfooter"> <hr /> <table width="100%" summary="Navigation footer"> <tr> <td width="40%" align="left"><a accesskey="p" href="foutk.html">Prev</a> </td> <td width="20%" align="center"> <a accesskey="u" href="OpcodesTop.html">Up</a> </td> <td width="40%" align="right"> <a accesskey="n" href="fprints.html">Next</a></td> </tr> <tr> <td width="40%" align="left" valign="top">foutk </td> <td width="20%" align="center"> <a accesskey="h" href="index.html">Home</a> </td> <td width="40%" align="right" valign="top"> fprints</td> </tr> </table> </div> </body> </html>