10 REM > BLib.Tokenise 1.03 20-Nov-2010
   20 REM v1.01 08-Feb-2009 JGH: Tweeked for ARM BASIC 1.3x
   30 REM v1.02 28-Feb-2009 JGH: Added DOS, PDP, 32000
   40 REM v1.03 20-Nov-2010 JGH: Tweeked for 6502 BASIC IV
   50 :
   60 REM Tokenise BASIC lines
   70 REM ====================
   80 REM Generalised cross-platform library
   90 :
  100 REM Authors:
  110 REM  Richard Russell for BBFW code
  120 REM  J.G.Harston for ARM, DOS, PDP, 6502, Z80 code
  130 :
  140 REM FNTokenise_()
  150 REM -------------
  160 REM Tokenise a line of text
  170 REM Returns: tokenised string
  180 REM -------------------------
  190 :
  200 DEFFNTokenise_(A$):=FNTokenise_65(A$)
  210 DEFFNTokenise_(A$):=FNTokenise_Z80(A$)
  220 DEFFNTokenise_(A$):=FNTokenise_32(A$)
  230 DEFFNTokenise_(A$):=FNTokenise_PDP(A$)
  240 DEFFNTokenise_(A$):=FNTokenise_ARM(A$)
  250 DEFFNTokenise_(A$):=FNTokenise_DOS(A$)
  260 DEFFNTokenise_(A$):=FNTokenise_Win(A$)
  270 REM Should select appropriate subfunction
  280 :
  290 :
  300 DEFFNTokenise_65(A$):LOCAL A%,B%
  310 A%=(!4AND&FFFF)-LENA$-1:B%=EVAL("0:"+A$):=$A%
  320 :
  330 DEFFNTokenise_Z80(A$):LOCAL A%,P%:Tokenise_Z80%=Tokenise_Z80%
  340 IF Tokenise_Z80%=0:DIM A% 4:!A%=&D9E1E5DD:A%?4=&C9:Tokenise_Z80%=USRA%
  350 A%=EVAL("0:"+A$):=$(Tokenise_Z80%-254)
  360 :
  370 DEFFNTokenise_32(A$):LOCAL A%
  380 A%=EVAL("0:"+A$):=$(!&1B2+2)
  390 :
  400 DEFFNTokenise_PDP(A$):LOCAL A%
  410 A%=EVAL("0:"+A$):=$(^@%-510)
  420 :
  430 DEFFNTokenise_ARM(A$):LOCAL A%,B%
  440 SYS "XOS_GenerateError",0,STRING$(255,"*"TO ,A%
  450 A%!-36=0:B%=EVAL("0:"+A$):=$(A%-14+4*(A%!-36<>0))
  460 :
  470 DEFFNTokenise_DOS(A$):LOCAL A%
  480 A%=EVAL("0:"+A$):=$&102
  490 :
  500 DEFFNTokenise_Win(A$):LOCAL A%,B%
  510 WHILELEFT$(A$,1)=" ":A$=MID$(A$,2):ENDWHILE
  520 B%=EVAL("0:"+A$):=$(!332+2)
  530 :