Continuando o artigo de Onde carregar programas de código máquina (IV), de carregar BASIC com variáveis, dado carregarmos as variáveis de BASIC, podemos explorar comportamentos do BASIC para "esconder" melhor o que pretendemos fazer.
Podemos alterar o loader depois de gravado, para a variável de sistema ERR_SP ($5C3D), apontar para a rotina a ser executada, por exemplo, para a zona de variáveis. (pode-se fazer POKEs antes do SAVE "" CODE )
Desta forma, ou o BASIC não tem o RANDOMIZE USR, ou até nem temos as linhas BASIC, e simplesmente fazemos o SAVE "xxx" CODE. Simplesmente, em vez de o computador apresentar "0 OK" no "fim" do SAVE "xxx" CODE (i.e. a seguir de fazermos o LOAD "" CODE ), salta para a rotina código máquina.
Por exemplo, colocando o código em linha REM:
ORG $5CD0
DW ROUTINE ; Pointer used by ERR_SP when loading
ROUTINE:
XXXXX
e para gravar:
Explicação: POKE ERR_SP,$D0 : POKE ERR_SP+1,$5C
POKE 23613,208 : POKE 23614,92 : SAVE "prog" CODE 16384,49000
(ou gravar a partir de 23552 para gravar sem imagem).
No fim do LOAD "" CODE, em vez de mostrar OK, salta para o endereço código máquina $5CD0.
No fim do LOAD "" CODE, em vez de mostrar OK, salta para o endereço código máquina $5CD0.
Sem comentários:
Enviar um comentário