<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title> words/accept.asm </title><meta name="keywords" content="amforth programming language Forth ATmega ATMEL"><meta name="description" content="amforth - laguage Forth for ATMEL ATmega"><!-- AUTOINCLUDE START "Page/Head.en.ihtml" DO NOT REMOVE --><link rel="StyleSheet" href="../../../../Web/CSS/MLAB.css" type="text/css" title="MLAB Basic Style"><link rel="StyleSheet" href="../../../../Web/CSS/MLAB_Print.css" type="text/css" media="print"><link rel="shortcut icon" type="image/x-icon" href="../../../../Web/PIC/MLAB.ico"><script type="text/javascript" src="../../../../Web/JS/MLAB_Menu.js"></script><!-- AUTOINCLUDE END --></head><body lang="en"><!-- AUTOINCLUDE START "Page/Header.en.ihtml" DO NOT REMOVE --><!-- ============== HEADER ============== --><div class="Header"><script type="text/javascript"><!--SetRelativePath("../../../../");DrawHeader();// --></script><noscript><p><b> JavaScript is required for including of the header </b></p></noscript></div><!-- AUTOINCLUDE END --><!-- AUTOINCLUDE START "Page/Menu.en.ihtml" DO NOT REMOVE --><!-- ============== MENU ============== --><div class="Menu"><script type="text/javascript"><!--SetRelativePath("../../../../");DrawMenu();// --></script><noscript><p><b> JavaScript is required for including of the menu </b><p></noscript></div><!-- AUTOINCLUDE END --><!-- ============== TEXT ============== --><div class="Text"><h1> words/accept.asm </h1><p><input type=button onClick="history.back()" value="Back"><input type=button onClick="history.forward()" value="Forward"><a href="../WordList.en.html">Jump to Vocabulary</a></p><pre>; ( addr n1 -- n2 ) System; R( -- ); reads a line with with KEY into addr until n2 characters are reveived or cr/lf detected.VE_ACCEPT:.db $06, "accept",0.dw VE_HEAD.set VE_HEAD = VE_ACCEPTXT_ACCEPT:.dw DO_COLONPFA_ACCEPT:.dw XT_DUP ; ( -- addr n1 n1).dw XT_TO_R.dw XT_TO_RPFA_ACCEPT1: ; ( -- addr ).dw XT_KEY ; ( -- addr k ).dw XT_DUP ; ( -- addr k k ).dw XT_DOLITERAL.dw 10.dw XT_NOTEQUAL.dw XT_DOCONDBRANCH.dw PFA_ACCEPT2.dw XT_DUP.dw XT_DOLITERAL.dw 13.dw XT_NOTEQUAL.dw XT_DOCONDBRANCH.dw PFA_ACCEPT2; check backspace.dw XT_DUP.dw XT_DOLITERAL.dw 8.dw XT_EQUAL.dw XT_DOCONDBRANCH.dw PFA_ACCEPT3; delete previous character; check beginning of line.dw XT_R_FROM ; ( -- addr k n1 ).dw XT_R_FETCH ; ( -- addr k n1 n2).dw XT_OVER ; ( -- addr k n1 n2 n1).dw XT_TO_R.dw XT_EQUAL ; ( -- addr k f ).dw XT_DOCONDBRANCH.dw PFA_ACCEPT5; we are at the beginning of the line, ignore this character.dw XT_DROP ; ( -- addr ).dw XT_DOBRANCH.dw PFA_ACCEPT1PFA_ACCEPT5:.dw XT_DUP ; ( -- addr k k ).dw XT_EMIT ; ( -- addr k ).dw XT_SPACE ; ( -- addr k ).dw XT_EMIT ; ( -- addr ).dw XT_1MINUS ; ( -- addr--).dw XT_R_FROM.dw XT_1PLUS.dw XT_DOBRANCH.dw PFA_ACCEPT4PFA_ACCEPT3:; check for remaining control characters, replace them with blank.dw XT_DUP ; ( -- addr k k ).dw XT_BL.dw XT_LESS.dw XT_DOCONDBRANCH.dw PFA_ACCEPT6.dw XT_DROP.dw XT_BLPFA_ACCEPT6:; emit the key.dw XT_DUP ; ( -- addr k k).dw XT_EMIT ; ( -- addr k); now store the key.dw XT_OVER ; ( -- addr k addr.dw XT_CSTORE ; ( -- addr).dw XT_1PLUS ; ( -- addr++).dw XT_R_FROM ; ( -- addr n1).dw XT_1MINUS ; ( -- addr n1--)PFA_ACCEPT4:.dw XT_DUP.dw XT_TO_R.dw XT_EQUALZERO.dw XT_DOCONDBRANCH.dw PFA_ACCEPT1.dw XT_DUPPFA_ACCEPT2:.dw XT_SLASHKEY.dw XT_DROP.dw XT_DROP.dw XT_R_FROM.dw XT_R_FROM.dw XT_SWAP.dw XT_MINUS.dw XT_CR.dw XT_EXIT</pre><p><input type=button onClick="history.back()" value="Back"><input type=button onClick="history.forward()" value="Forward"><a href="../WordList.en.html">Jump to Vocabulary</a></p></div><!-- AUTOINCLUDE START "Page/Footer.en.ihtml" DO NOT REMOVE --><!-- ============== FOOTER ============== --><div class="Footer"><script type="text/javascript"><!--SetRelativePath("../../../../");DrawFooter();// --></script><noscript><p><b> JavaScript is required for including of the footer </b></p></noscript></div><!-- AUTOINCLUDE END --></body></html>