Eletrônica
GoToBasic48.asm
Existem certos programas que não são compatíveis com o modo 128 BASIC do ZX Spectrum 128, ou TK90X e a TKMEM-128 com a ROM 128 ativada. Um exemplo é o Lerm Code Compressor 1 que utilizo muito nas minhas adaptações para a interface de drive Beta.
|
Menu do ZX Spectrum 128 |
Para sair do modo 128 BASIC, pode-se empregar a opção '48 BASIC' do menu ou usar comando SPECTRUM
. O ponto negativo desta abordagem é que o chaveamento da RAM é desabilitado, impedindo o acesso aos 128KB de bancos de RAM.
Digitando o comando USR0
no editor BASIC, é possível ir para o 48 BASIC sem perder o chaveamento, porém todo o conteúdo da RAM é apagado. Eu desejava uma abordagem em que o conteúdo da RAM fosse preservado, por isso criei o programa assembly GoToBasic48:
ORG 23872
;
INCLUDE "Header_Basic.asm"
;
DI ; Disable interrupts before touching system
;variables.
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 space of one byte.
LD SP,HL ; Define new value of stack pointer.
LD HL,MAIN_4 ; Put error treatment routine address onto stack
PUSH HL
LD (ERR_SP),SP ;and redefine value of ERR_SP.
EI ; Enable interrupts before returning to BASIC.
JP STMT_RET ; Jump to interpret the next BASIC statement.
END
Basicamente o programa seleciona RAM 0 e ROM do 48 BASIC, define a variável de sistema FLAGS para modo 48K, reconstrói as pilhas de máquina e de GOSUB e passa o controle para a ROM, para que esta passe a interpretar o próximo comando BASIC.
Para montar o programa acima (assembling), é necessário o arquivo Header_BASIC.asm, mas não é necessário fazer esta operação, pois o binário já está pronto e pode ser baixado neste link. O código fonte está disponível neste link.
O programa em código de máquina pode ser armazenado em qualquer parte da RAM sem a necessidade de fazer uma nova montagem. Um local interessante é dentro da uma linha BASIC.
loading...
-
Dica Tv Electronia 20nt Chassis 11ak30
Defeito--Não liga. Led vermelho aceso. Ao tentar ligar, o led passa a verde mas, no mesmo instante, o led volta para vermelho e a fonte da tv não arma.Valores ...
-
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...
-
Gotobasic48.asm
Existem certos programas que não são compatíveis com o modo 128 BASIC do ZX Spectrum 128, ou TK90X e a TKMEM-128 com a ROM 128 ativada. Um exemplo é o Lerm Code Compressor 1 que utilizo muito nas minhas adaptações para a interface de drive Beta....
Eletrônica