Experimente digitar o seguinte programa no seu TK90X:
Pode ser que a listagem não fique clara na imagem, portanto estou repetindo abaixo:
10 FOR n=50000 TO 50009: READ a: POKE n,a: NEXT n
20 RAND USR 50000
30 DATA 237,91,83,92,42,75,92,195,229,25
Rode com RUN e veja o resultado. Surgirá uma mensagem de erro do BASIC e, na tentativa de ver a listagem do programa, parece que desapareceu misteriosamente!
Calma, obviamente não é uma mágica, o programa acima faz uso de uma das rotinas RECLAIM da ROM do TK90X. Esta rotina serve para apagar dados da memória e, no caso, apagou o programa BASIC por completo. Existem dois pontos de entrada (entry points) desta rotina. RECLAIM-1 (em 6629 ou #19E5) apaga dados a partir do endereço apontado pelo registrador HL até o endereço DE-1 (inclusive). RECLAIM-2 (em 6632 ou #19E8) apaga BC bytes a partir do endereço apontado por HL.
A listagem assembly explica o que fez o código de máquina:
ORG 50000 ; Início do programa, pode ser em qualquer endereço.
INCLUDE 'Header_Basic.asm' ; Inclui rótulos, vide link.
LD DE,(PROG) ; Aponta para início do programa BASIC.
LD HL,(VARS) ; Aponta para início das variáveis BASIC, uma posição
;depois do último byte do BASIC.
JP RECLAIM_1 ; Executa rotina RECLAIM-1.
Nenhum comentário:
Postar um comentário
Seu comentário é bem vindo, mas peço que use este espaço adequadamente.