domingo, 9 de setembro de 2012

Thundercats v. 2 para BASIC 128

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.