55 lines
1003 B
Plaintext
55 lines
1003 B
Plaintext
sep IS ','
|
|
EOS IS 0
|
|
NL IS 10
|
|
|
|
// main registers
|
|
p IS $255
|
|
tp GREG
|
|
c GREG
|
|
t GREG
|
|
|
|
LOC Data_Segment
|
|
GREG @
|
|
Text BYTE "Hello,How,Are,You,Today",EOS
|
|
token BYTE 0
|
|
eot IS @+255
|
|
|
|
LOC #100 % main () {
|
|
Main LDA p,Text %
|
|
LDA tp,token % initialize pointers
|
|
2H LDBU c,p % DO get char
|
|
BZ c,5F % break if char == EOS
|
|
CMP t,c,sep % if char != sep then
|
|
PBNZ t,3F % store char
|
|
SET t,NL % terminate token with NL,EOS
|
|
STBU t,tp
|
|
SET t,EOS
|
|
INCL tp,1
|
|
STBU t,tp
|
|
JMP 4F % continue
|
|
|
|
3H STBU c,tp % store char
|
|
4H INCL tp,1 % update pointers
|
|
INCL p,1
|
|
JMP 2B % LOOP
|
|
|
|
5H SET t,NL % terminate last token and buffer
|
|
STBU t,tp
|
|
SET t,EOS
|
|
INCL tp,1
|
|
STBU t,tp
|
|
% next part is not really necessary
|
|
% program runs only once
|
|
% INCL tp,1 % terminate buffer
|
|
% STBU t,tp
|
|
|
|
LDA tp,token % reset token pointer
|
|
% REPEAT
|
|
2H ADD p,tp,0 % start of token
|
|
TRAP 0,Fputs,StdOut % output token
|
|
ADD tp,tp,p
|
|
INCL tp,1 % step to next token
|
|
LDBU t,tp
|
|
PBNZ t,2B % UNTIL EOB(uffer)
|
|
TRAP 0,Halt,0
|