ô >listtokens ô *ô Lists the tokens recognised by BASIC ( 2Þ code% 396 < Fã pass = 8 ¸ 10 ˆ 2 P P% = code% Z L% = code% + 396 d [ OPT pass n x .begin ‚ STMFD R13!, {R14} Œ: MOV R5, R14 ; for token print routine –   ADR R0, starttitle ª SWI "OS_Write0" ´ ¾ BL firstset È SWI "OS_NewLine" Ò BL secondset Ü æ ADR R0, endtitle ð SWI "OS_Write0" ú  LDMFD R13!, {PC}   .token "= \ This prints a token using BASIC's internal routine. ,/ \ Call with R0 set to the token number. 6 @ STMFD R13!, {R14} J CMP R0, #255 T ADRHI R12, tokenbuffer ^ SUBHI R0, R0, #256 h STRHI R0, tokenbuffer r MOVHI R0, #200 | ADR R14, back † ADD PC, R5, #&4C  .back š .tokenloop ¤ LDRB R0, [R1], #1 ® CMP R0, #&7F ¸ SWICC "OS_WriteC"  BCC tokenloop Ì LDMFD R13!, {PC} Ö à .tokenbuffer ê EQUD 0 ô þ .firstset > \ These are the first tokens, 127 to 255 (but not 200)   STMFD R13!, {R14} & MOV R10, #127 0 .firstloop : SWI "OS_WriteS" D EQUS "Token "+½0 N ALIGN X MOV R0, R10 b BL print_number l SWI "OS_WriteS" v EQUS " is "+½0 € Š MOV R0, R10 ” CMP R0, #200 ž BLEQ special ¨ BLNE token ² SWI "OS_NewLine" ¼ Æ ADD R10, R10, #1 Ð CMP R10, #256 Ú BLT firstloop ä LDMFD R13!, {PC} î ø .special  SWI "OS_WriteS"  # EQUS "extension token"+½0  MOV PC, R14   * .secondset 40 \ These are the first tokens, 127 to 183 > H STMFD R13!, {R14} R MOV R10, #127 \ .secondloop f SWI "OS_WriteS" p EQUS "Token 200+"+½0 z ALIGN „ MOV R0, R10 Ž BL print_number ˜ SWI "OS_WriteS" ¢ EQUS " is "+½0 ¬ ¶ MOV R0, R10 À ADD R0, R0, #256 Ê BL token Ô SWI "OS_NewLine" Þ è ADD R10, R10, #1 ò CMP R10, #184 ü BLT secondloop  LDMFD R13!, {PC}   .print_number $ ADR R1, number_buffer . MOV R2, #8 8# SWI "OS_BinaryToDecimal" B ADR R0, number_buffer L SWI "OS_Write0" V MOV PC, R14 ` j .number_buffer t EQUD 0 ~ EQUD 0 ˆ ’ .starttitle œ9 EQUS "BASIC: tokens and their keywords"+½13+½10 ¦D EQUS "--------------------------------"+½13+½10+½13+½10+½0 ° ALIGN º Ä .endtitle Î5 EQUS ½13+½10+"Finished."+½13+½10+½13+½10+½0 Ø ALIGN â ] ìí ö  Ö begin   à ÿ