Interessante é que no final não há nenhuma verificação seletiva para escolher a fonte (como no DV397H). A escolha é feita pelo caminho direto. Veja:
B4:E390 25 E0 add A, ACC ; Accumulator
B4:E392 24 08 add A, #8
....
Ele dobra o valor da escolha (add A, ACC = A+A) e depois soma 8. Isso é feito sempre, para todas as opções. No 397H, dobra-se e soma 10 para as 5 primeiras. Para as outras duas (inclusive a repetida) faz-se outra operação.
Bom, voltando ao 256K, parece que o problema é que a fonte 13 não é a última. Assim, você terá que colocar uma espécie de "if then" no meio do código para pular a fonte 13. Segundo a sua tabela, a seleção dela ocorre quando o acumulador atinge o valor 5 nos seguintes trechos:
B4:E368 E0 movx A, @DPTR
B4:E369 14 dec A
B4:E36A F0 movx @DPTR, A
B4:E36B 80 1F sjmp B4_E38C
...
B4:E37E E0 movx A, @DPTR
B4:E37F 04 inc A
B4:E380 F0 movx @DPTR, A
B4:E381 80 09 sjmp B4_E38C
...
Em cada um, faça um desvio para uma verificação (de comparação). No primeiro, no dec, verifique se A=5. Se for, decremente mais uma vez (para 4). No segundo, se A=5, incremente mais uma vez. Assim, você terá a seguinte tabela:
No player: No firmware:
CP1250 8
CP1251 9
CP1252 10
CP1253 11
CP1254 12
8859-2 14
8859-5 15
KOI8-R 16
A verificação no decremento pode ser feita com algo do tipo:
B4 05 01 cjne A, #5, YYYY
14 dec A
YYYY: 22 ret
E no incremento, de forma análoga.
EDIT: Se 5 não corresponder à fonte 13, outra será "removida". Então vai testando outros valores.