0I[prints string; destructive] F[ 28p SDW[ D3RD3rM o D3rq D] PP ] 0I[gets last character of string; destructive] F[ 28pM ] 0I[drops last character of string; destructive] F[ 28pq ] 0I[takes string char; returns string+char] F[ S28pma ] 0I[reverses string in place] F[ 0S DW[ D 28p D 3r M 3r q 3r S 28p m a S D] P ] 0I[concatenates two strings] F[ 28p S DW[ S D 3r S D 3R M 4R 28pma 3r S D 3r q D] PP ] 0I[takes list of characters and a length, builds a string] F[ 0S DW[ D2aR 3R 28p m a S d D] P ] 0I[compares two strings; 0 = equal, >0, <0 = second string is greater, less than first; destructive] F[ 0 3r mW[ D28pM 3R D28pM S 4r S s DI[ 4rPPP00 0 0I[to counter the P after the if] ] P 28pqS28pqS m] PP ] 0I[takes string, returns integer (assumes correct input: only digits and at most one minus); replaces string on stack] F[ 0 S DW[ D 28pM D'-EI[P S 0Ss S 0] DI['0s 3R 9ima S 0] P 28pq D] P ] 0I[initialises variable store at beginning of stack (no args) (CALL ONLY ONCE)] F[ 0lr 0lr 0lr 0I[guard] ] 0I[hauls variable by name in argument to top of stack (result: name value); pushes 0 0 if non-existent] F[ 00 0I[guard] lRlR SD3rW[ 0I['s't'a'r't' 'w'h'i'l'e 9i 93a] SD3r 6R 0I[get target varname up] D5r EDI[P 0I['e'q'u'a'l'! 9i 7] D3r 4RD5rW[ 4r4rlrlr 4RD5r] 3RP3RP 0 0I[to stop while loop] 1 0I[to prevent taking of the else branch] ] nI[ 0I['u'n'e'q'u'a'l'! 9i 9] lRlR 0I[get next one] SD3r 0I[get name up; if zero, then while loop should stop: end of var list] ] ] 0I['d'o'n'e' 'w'i't'h' 'w'h'i'l'e 9i 79a] SD3rnI[ 0I['i's' 'z'e'r'o 9i 8] lrlr3RP SD3rW[ lrlr SD3r] ] 0I['d'o'n'e' 'w'i't'h' 'v'a'r'h'a'u'l'u'p 9i 99aii] ] 0I[pushes whether specified variable exists in store] F[ Pnn ] 0I[deletes variable given by argument from store] F[ 00 0I[guard] lRlR SD3rW[ 0I['s't'a'r't' 'w'h'i'l'e 9i 93a] SD3r 6R 0I[get target varname up] D5r EDI[P 0I['e'q'u'a'l'! 9i 7] PPP SD3rW[ lrlr SD3r] PP 1 0I[did find the thing] 0 0I[to stop while loop] 1 0I[to prevent taking of the else branch] ] nI[ 0I['u'n'e'q'u'a'l'! 9i 9] lRlR 0I[get next one] SD3r 0I[get name up; if zero, then while loop should stop: end of var list] ] ] 0I['d'o'n'e' 'w'i't'h' 'w'h'i'l'e 9i 79a] nI[ 0I['i's' 'z'e'r'o 9i 8] 0lrlr3RP SD3rW[ lrlr SD3r] PP ] 0I['d'o'n'e' 'w'i't'h' 'v'a'r'd'e'l 9i 89a] ] 0I[takes variable name (string) and value to store] F[ 0I['s't'o'r'i'n'g' 8 O ' 'i'n' 4 9io ] SD Slrlr ] 0I[takes variable name (string) and pushes its value] F[ SP ] 0I[takes socket and string; sends string to socket] F[ DW[D28pM3RSwS28pqD]P ] 0I[A B -> A B A B] F[ SD3RD3r ] 0I[number -> n'th stack item from top (top is 1); a b c d e 4 -> a b c d e b] F[iDRD3Rr] 0I[value, number -> replace n'th stack item AFTER value with value (top is 1); a b c d e X 2 -> a b c X e] F[DiiRPr] 0I[quits program] F[`]