Dando sequência ao artigo sobre o bug recém descoberto da Multiface 1, aqui explicarei o motivo desse comportamento.
Quando se tenta salvar a memória do TK90X com a M1, se houver uma sequência de bytes (em hexadecimal) #37, #ED e #CB, acaba ocasionando um crash. Em outras palavras, não é possível salvar um conteúdo de RAM contendo a referida sequência.
Para entender o motivo, é necessário saber que a M1 comprime a RAM nos endereços 16384-23295 (#4000-#5AFF em hex) e 25264-65535 (#62B0-#FFFF em hex) antes de salvar na fita (ou outra mídia suportada). Após salvar a RAM ou quando o programa salvo é carregado, esses blocos são descomprimidos. O esquema de compressão é rudimentar, se uma sequência do mesmo valor de byte é encontrada 8 ou mais vezes, é substituída por uma sequência de 6 bytes. Os 3 primeiros fazem parte do identificador de bloco comprimido #CB, #ED e #37. O 4º é o byte que se repete e o 5º e o 6º é o contador de 16 bits do número de vezes da repetição.
Entretanto na tela acima, a sequência aparece como sendo invertida: #FF, #FF, #FF, #37, #ED e #CB. Na verdade a descompressão ocorre na ordem inversa, isto é, do endereço final em direção ao endereço inicial, portanto o programa vê primeiro #CB, depois #ED e assim por diante. Explicando o que aconteceu no vídeo, após encontrar os bytes identificadores, a rotina de descompressão entende que deve repetir 255 (#FF) por 65535 (#FFFF) vezes que, na prática, é preencher toda a memória com 255. A RAM acaba sendo corrompida e o sistema entra em crash.
Portanto qualquer programa contendo a sequência #37, #ED e #CB acaba corrompendo a RAM, que pode resultar em resultados catastróficos. Tal fato só não se verifica nos endereços 23296-25253 (#5B00-#62AF) porque esta região não é comprimida pela M1.
Daí, emerge uma questão. Será que os programas não contém essa famigerada sequência? Ou, se contém, a RAM não é corrompida o suficiente para não funcionar? Outra questão: será que existe algum programa não copiável com a M1? Pretendo especular um pouco mais no próximo artigo.
Bom demais ver seu BLOG ativo!!!!!
ResponderExcluirIs anyone making a multiface with 8kb of video ram?
ResponderExcluir