A procedure declaration declares a name for an argument list and a sequence of statements. The mechanism for passing arguments is described under the procedure call.
procedure zero( byte out x ) is begin x = 0 end procedure
A function declaration declares a name for an argument list, a sequence of statements and a return type.
When the execution of a function reaches the end of the statements the returned value is undefined.
function reverse( byte in x ) return byte is byte y for 8 loop asm rrf x, f asm rlf y, f end loop return y end function
A pseudo-variable can be used like any other variable, but is implemented by a get and/or put routine. One of the two routines can be omitted, which makes the variable read-only or write-only. Alternatively a variable and a put or get routine can be declared, in which case the plain variable will be used for the missing routine.
A put procedure must have one byte in parameter, a get function must have no parameters.
procedure hd44780'put( byte in x ) is ... hd44780 = "H" hd44780 = "e" hd44780 = "l" hd44780 = "l" hd44780 = "o" procedure async'put( byte in x ) is ... function async'get return byte is .. forever loop byte c = async if ( c >= "a" ) & ( c <= "z" ) then c = c + "A" - "a" end if async = c end loop