Hi. In 4e4th the PROMPT is a forth word, executed right after INTERPRET . That way it is easy to modify. I use character ACK ( $06 EMIT ) as signal for the 4e4th-IDE shell. You may serve other information with the prompt string, like the current number base, or what ever you need.
mk ; C PROMPT -- prompt user HEADLESS PROMPT,DOCOLON IF PREFIXPROMPT!=1 DW STATE,FETCH,ZEROEQUAL,qbran DEST PROMPT1 DW lit,06H,EMIT ; send ACK DW BASE,FETCH,DUP,HEX,lit,'$',EMIT,lit, 02,ZEROUDOTR,BASE,STORE DW XISQUOTE DB 3,'ok ' ; for traditional Forth style DW ITYPE ENDIF PROMPT1:DW EXIT Am 02.08.2014 um 16:46 schrieb Paolo Garro: > Hi Erich, > You are pretty right... > Wait the " ok" and then the "\n> " prompt is not a valid solution. > In the middle of a ":" definition, the response is a sole " ok" > without a prompt so it is ambiguous in general. > I've also tried to wait for an error message r"\?\? -\d+ \d+ \n> $" > to stop the loop while any other response was intended ok. > But I still have the timeout calibrating problem. > An unambiguous EOT char will state that mcu is ready. > > Paolo > > > Inviato da Samsung Mobile > > -------- Original message -------- > Subject: [Amforth] Adding WANT_X and a forth constant in asm (was: > HW flow > control) > From: Erich Waelde <ew.fo...@nassur.net> > To: amforth-devel@lists.sourceforge.net > CC: > > Hi Paolo, > > Thank you for your response. > > On 08/02/2014 01:39 PM, Paolo Garro wrote: >> Hi Erich >> There is nothing wrong. >> Me too I'm reading the echo char while transmitting. >> The timeout problem is while receiving form the mcu. >> After transmitting a line you stay earing for a response. >> How can I know when the response is complete? > When you received the prompt "\n> ". >> Wait a lot of seconds is not so logic. >> How can I know if the mcu is ready to receive another line? > When you received the "\n> " prompt, too, I think. > >> An XON ending char would be fine... > > I have the timeout question in my stuff as well, but it is > not easy. There are several (more than 1) controllers on > the same rs485 bus. I do not want them to just send anything > unless I asked them. So I removed any output from startup > including the prompt. When I address one controller I send > its address (with the highest bit set) and it shall "wake up" > and present it's prompt. I also added the controller address > to the prompt itself, a station with address $4f will answer > as > "\n~4F> " > and the programm controlling everything needs to wait for this > string to be received. This particular setup cannot work with > xon/xoff. The bus has only one pair of cables. Therefore I want > to see each and every character echoed, so I know the remote > station is still avalailable (connected and alive). But that > is just my setup and I'm not saying, you are wrong. I just > doubt that it will help you as much as you think. > > > So lets assume for the moment, you want XOFF/XON hw flow control. > Fine. So you select two output pins of the controller to drive > the signals. Still fine. Next question: where in amForth do you > assert the xon and xoff signals? I might be wrong, but the > prompt function looks like the correct place to me to assert XON. > You are at the same place, where the prompt is sent. So does > XON help you? > > Again, I might be wrong alltogether. And if you really want xon/xoff, > it can definitely be added to your system. And if it works, great! > > You can add > .set WANT_XON_XOFF = 1 > in your "template.asm" or equivalent file and use it in any other > assembly file like so > > .if WANT_XON_XOFF == 1 > .set XON_XOFF_PORT = PORTD ; io location, not mem mapped > .set XON_XOFF_PIN = 7 > .endif > > or similar. If you want to have a FORTH constant at the same time > to know for example the pin number, then you create the equivalent > asm code in a file (words/xon_xoff.asm for example): > > ; asm(XON_XOFF_PIN) constant xon_xoff_pin > VE_XON_XOFF_PIN: > .dw $FF0C > .db "xon_xoff_pin" > .dw VE_HEAD > .set VE_HEAD = VE_XON_XOFF_PIN > XT_XON_XOFF_PIN: > .dw PFA_DOVARIABLE > PFA_XON_XOFF_PIN: > .dw XON_XOFF_PIN > > this creates the "xon_xoff_pin" as a forth constant. Please note > that this code is adapted from my experiments with amForth-4.6, so > it might need to change for a current version. The file needs to > be included into your build via dict_appl.inc > > .if WANT_XON_XOFF == 1 > .include "words/xon_xoff.asm" > .endif > > Rebuild amForth, test, repeat. Look into core/words/ for inspiration. > > Hope this helps and good luck! > > Cheers, > Erich > > > ---------------------------------------------------------------------- > -------- > Want fast and easy access to all the code in your enterprise? Index > and > search up to 200,000 lines of code with a free copy of Black Duck > Code Sight - the same software that powers the world's largest code > search on Ohloh, the Black Duck Open Hub! Try it now. > http://p.sf.net/sfu/bds > _______________________________________________ > Amforth-devel mailing list for http://amforth.sf.net/ > Amforth-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/amforth-devel > ---------------------------------------------------------------------- > -------- > Want fast and easy access to all the code in your enterprise? Index > and > search up to 200,000 lines of code with a free copy of Black Duck > Code Sight - the same software that powers the world's largest code > search on Ohloh, the Black Duck Open Hub! Try it now. > http://p.sf.net/sfu/bds > _______________________________________________ > Amforth-devel mailing list for http://amforth.sf.net/ > Amforth-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/amforth-devel ------------------------------------------------------------------------------ Want fast and easy access to all the code in your enterprise? Index and search up to 200,000 lines of code with a free copy of Black Duck Code Sight - the same software that powers the world's largest code search on Ohloh, the Black Duck Open Hub! Try it now. http://p.sf.net/sfu/bds _______________________________________________ Amforth-devel mailing list for http://amforth.sf.net/ Amforth-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/amforth-devel