Carregamento do Daley Thompson's Supertest 128
Eletrônica

Carregamento do Daley Thompson's Supertest 128


Encontrei uma coisa interessante no carregamento do Daley Thompson's Supertest 128 no TK90X.

Fonte: WOS

A listagem do carregador BASIC tem uma coisa estranha:


Na linha 6 há a instrução SPECTRUM que faria com que o BASIC 48 tomasse conta do computador, inviabilizando acesso aos banco de RAM de 128K. Entretanto se rodar o programa, os blocos de RAM são normalmente carregados.


Misteriosamente, parece que o comando GOTO 10 é digitado e executado sozinho.


Parece até que uma entidade sobrenatural está digitando o comando acima, para continuar a execução do carregamento da fita.

Entretanto não é nada sobrenatural, se consideramos que na linha 6 do BASIC há o carregamento do código de máquina que é executado por USR 40000. Neste código, há um engenhoso aproveitamento da rotina de interrupção do TK90X. A Interrupção normalmente é empregada para ler o teclado. Mas neste caso, foi modificado de forma a simular a digitação de 11 espaços seguido do comando GOTO 10 e depois por Enter. Com isto, o monitor BASIC "pensa" que este comando foi digitado pelo operador e passa a executá-lo.

Eu achei realmente engenhosa essa rotina. A listagem completa é:

40000   DI
        LD A,(40036)
        LD HL,(40037)
        LD (23296),A
        LD (23297),HL
        LD HL,0
        LD (23299),HL
40019   CALL 39960

; Prepare interrupt routine. 
39960   LD HL,32768     ; Make a IM 2 table with address #8282

                        ;(33410). 
        LD DE,32769
        LD BC,258
        LD (HL),130
        LDIR
        DI
        IM 2
        LD A,128
        LD I,A
        LD A,195
        LD HL,40064       ; Put instruction 'JP 40064' at 33410. 
        LD (33410),A
        LD (33411),HL
        EI
39991   RET

40064   PUSH HL
        PUSH DE
        PUSH AF
        PUSH BC
        LD A,(40126)
        DEC A
        LD (40126),A
        JR NZ,40113
        LD A,4
        LD (40126),A
        LD HL,(40127)
        INC HL
        LD (40127),HL
        LD A,(HL)
        CP 255
        JR Z,40120
        LD (23560),A
        LD (23556),A
        LD (23559),A
        LD A,5
        LD (23557),A
        LD HL,23611
        SET 5,(HL)
40113   EI
        POP BC
        POP AF
        POP DE
        POP HL
40118   RETI
40120   CALL 40055
40123   JR 40113
40125   NOP
40126   DEFB 25
40127   DEFW 40128
40128   DEFM "           "      ; 11 spaces. 
40139   DEFB 236                ; 'GO TO'. 
40140   DEFM "10"
40142   DEFB 13                 ; Enter. 
40143   DEFB 255                ; End marker. 

40022   NOP
...     ...
40035   RET



loading...

- Dica Tvs Panasonic Tx-32pk25f Chassis Euro-4h
Defeito--Imagem a preto e branco ou com as cores alteradas com manchas como se o              TRC estivesse magnetizado. Foi regravada a eeprom mas não resultou. Em           ...

- Dica Tvs Panasonic Tx-25xd3e Chassis Euro 2m
Defeito--Este  tv estava em protecção, trazia o transístor de saída de linhas (2SD1577-               LB) em curto. Depois de o substituir, o tv arrancou apresentando o seguinte       ...

- Número Aleatório Por Xor-shift
Apresento a sub-rotina de geração de número pseudoaleatório que foi usada na minha parte do demo Mission Highly Improbable.  Anteriormente mostrei a sub-rotina de Phantom Club para a mesma finalidade, porém a qualidade da sequência gerada...

- Outra Rotina De Detecção De Ram 48/128k
Eu publiquei nesta postagem, uma rotina que faz a detecção no TK90X da configuração com ou sem a TKMEM-128 (128 ou 48K de RAM). Modifiquei-a e consegui fazer com que ficasse menor ainda (25 bytes).  Esta rotina testa se ocorre chaveamento entre...

- 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...



Eletrônica








.