Mal acabei de lançar uma adaptação do Thundercats para Beta e TKMEM-128 e estou com a versão 2. A versão anterior tinha um problema: não consegue carregar a partir do BASIC 128, portanto tinha que dar um 'USR 0' antes. Na versão 2 não é mais necessário fazer isto.
Eu tive que quebrar a cabeça, mas consegui fazer uma rotina em assembly que troca do BASIC 128 para 48, sem precisar reinicializar o computador. Em resumo, basta zerar o bit 4 da variável de sistema FLAGS e reconstruir a pilha do Z80 para BASIC 48. A listagem é a que se segue:
ORG 23760
;
INCLUDE "Header_Basic.asm"
;
DI ; Disable interrupts.
LD BC,32765 ; Select ROM 1 and RAM 0.
LD A,16
OUT (C),A
RES 4,(IY+1) ; Change FLAGS to 48K mode.
LD HL,(RAMTOP) ; Stack will be cleared.
LD (HL),62 ; Put end marker of GOSUB stack.
DEC HL ; Leave one byte.
LD SP,HL ; Define new value of stack pointer.
LD HL,MAIN_4 ; Put error treatment routine address
PUSH HL
;
onto stack
and
LD (ERR_SP),SP ;redefine value of ERR_SP.
EI ; Enable interrups.
JP STMT_RET ; Jump to interpret the next
;BASIC statement.
END
Note que esta rotina requer o arquivo 'Header_BASIC.asm' atualizado para a versão 0.4, disponível neste link.
Para baixar a versão 2 do Thundercats adaptado, acesse Google Drive ou 4 Shared.
Nenhum comentário:
Postar um comentário
Seu comentário é bem vindo, mas peço que use este espaço adequadamente.