A dictionary word is stored as four or six bytes of data, which is the truncated string representation of the word. The dictionary is sorted on these four- or six-byte values, not the string they represent when expanded.
Changing the alphabet table changes how some words are represented. E.g you could put ‘z’ in the first position of row 0, and ‘a’ in the last position. This would put the word ‘z//’ very early in the dictionary, while ‘a//’ would be placed near the end.
And, indeed, it’s essential that they are in order of the values of these four or six bytes, or most interpreters will fail to look up some of the words in the dictionary.
I wanted to create my own dictionary, but I didn’t want to reintroduce the word that was already in the real dictionary, just use it as an index in the table. It works, but it’s a bit tricky!
This…
Array my_dict static -->
0 FLAG_NOUN !'*'
0 FLAG_PREP | FLAG_GLUE !'à'
cmd_ecouter FLAG_VERB
cmd_ecrire FLAG_VERB | FLAG_TRAN
cmd_eteindre FLAG_VERB | FLAG_TRAN
and so on
Instead of that :
Array my_dict static -->
'*' 0 FLAG_NOUN
'à//' 0 FLAG_PREP | FLAG_GLUE
'écouter' cmd_ecouter FLAG_VERB
'écrire' cmd_ecrire FLAG_VERB | FLAG_TRAN
'éteindre' cmd_eteindre FLAG_VERB | FLAG_TRAN
and so on