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