1* 2* String substitution symbols 3* 4 ; if no quotes, interpret as subsymbol 5 ; if quotes, interpret as string, and do forced substitution 6 .sslist 7 .asg value,SYMBOL 8 .asg SYMBOL,SYMBOL1 9 10 .global label, x 11 .word x 12 13* Substitution symbol functions 14label: .word $symlen(SYMBOL) ; 5, substitutes string for symbol 15 .word $symlen(":SYMBOL:") ; 5, forced substitution 16 .word $symlen("SYMBOL") ; 6, uses string directly 17 18 .word $symcmp(SYMBOL,"value") ; 0 19 20 ; requires 2nd arg to be a character; zero if not found 21 .word $firstch(":SYMBOL:",'a') ; 2 22 .word $lastch(SYMBOL,'a') ; 2 23 24 .word $isdefed(SYMBOL) ; 0 (value not in symtab) 25 .word $isdefed("label") ; 1 (string contents in symtab) 26 .word $isdefed("unknown") ; 0 27 28 .asg "1,2,3", list 29 ; both args must be identifiers 30 .word $ismember(SYMBOL,list) ; 1 31 .word SYMBOL ; now 1 32 .word list ; now 2,3 33 34 .word $iscons("010b") ; 1 35 .word $iscons("11111111B") ; 1 36 .word $iscons("011") ; 2 (5 -- TI bug) 37 .word $iscons("0x10") ; 3 (0 -- TI bug) 38 .word $iscons("'a'") ; 4 39 .word $iscons(SYMBOL) ; 5 ("1") 40 .word $iscons("SYMBOL") ; 0 41 42 .word $isname(SYMBOL) ; 0 43 44 .word $isreg(SYMBOL) ; 0 45 .word $isreg("AR0") ; 46; .word $isreg("AG") ; should be 0, but we always 47 ; use mmregs 48 .mmregs 49x .word $isreg("AG") ; 1 if .mmregs, 0 otherwise 50tag .struct 10 51 .word 1 52 .endstruct 53 .word $structsz(tag) 54 .word $structacc(tag) ; this op is unspecified 55 .end 56