Page 58 of 62
SBasic User's Manual SBasic Version 2.7 Page 58
Printed: December 5, 1999
ASMFUNC, _INKEY, and _OUTCH
Generally, you should not use ASMFUNC to define labels used internally
by SBasic run-time routines. Doing so will cause the assembler that
processes the resulting output file to report an error. This happens
because SBasic will create two identical labels in its output assembly
language file, one label that you defined in your ASM section and a
matching label in an SBasic library file.
The exceptions to this rule involve the labels _INKEY and _OUTCH.
SBasic reserves these labels for internal routines that handle
character I/O. By default, the _OUTCH routine sends the character in
the A-register to the 68hc11's SCI port, and the _INKEY routine
returns a character from the SCI in the D-register. SBasic
automatically appends a library file containing the assembly language
source for these routines whenever it processes a statement that
requires them.
In this one case, SBasic permits your source file to override the
normal inclusion of a library file. For example, if SBasic detects an
ASMFUNC statement defining the label _OUTCH:
asmfunc _outch
SBasic does not append the _OUTCH library file. Instead, SBasic
relies on whatever _OUTCH assembly language routine you define in your
SBasic source file to handle all character output.
This feature allows you to redirect the output from all SBasic PRINT
and OUTCH statements to an alternate device. Similarly, you can
redirect the input for the SBasic INKEY function from an alternate
device. This makes it easy to add SBasic support for formatted output
to devices such as LCDs, or character input from custom keyboards.
For example:
asmfunc _outch
asm
_outch
staa $1004 send char in A to port b
rts
endasm
main:
print "2 + 2 ="; 2+3
end
This sample program sends a mathematical statement to port B that
should convince anyone your computer is loony.