domingo, 2 de dezembro de 2012

Programa '48KBmode'

Alguns programas para 48KB são incompatíveis com o modo 128KB e não rodarão na TKMEM-128, a não ser que o chaveamento da RAM seja desativado. Os jogos da Ultimate como Knight Lore, Alien 8 e Pentagram têm este problema.

Para solucionar isto, os projetistas do Spectrum 128 previram o modo 48KB que é acessível  através da opção 48K BASIC no menu, ou ainda através do comando SPECTRUM digitado no editor BASIC.


Entretanto se não tivermos acesso ao 128 BASIC, por exemplo com TKMEM sem a ROM do Spectrum 128, como é possível desativar o chaveamento da RAM? A resposta é a manipulação da porta 32765 que, quando recebe um nível alto no bit 5, desativa por completo o modo 128 que só pode ser reativado desligando o computador ou com reset. Uma forma prática é digitar no BASIC:
OUT 32765,48

Uma outra abordagem é utilizar o programa GoToBasic48 para depois dar um OUT na porta 32765. A vantagem deste programa é que funciona da mesma forma, independente de haver ou não a ROM 128. A listagem seria:

   1 REM NEXT ? CLEAR ©>
  10 RANDOMIZE USR (PEEK 23635+256*PEEK 23634+5): OUT 32765,BIN 00110000
  20 PRINT AT 11,5; FLASH 1;" Switched to 48KB mode ": BEEP .05,30: BEEP .05,45: BEEP .05,40
  30 PAUSE 120
  40 LET d=15363: IF PEEK d<>195 THEN LET d=15619
  50 RANDOMIZE USR d: REM : RUN

Na primeira linha deve haver o comando REM que contém o código de máquina do GoToBasic48. Para isto, deve-se criar a primeira linha com comando REM seguido de 31 caracteres e inserir o código de máquina, com o comando File > Load binary data... do emulador Fuse, a partir do endereço dado por PEEK 23635+256*PEEK 23636+5.


Não é necessário digitar o programa acima, pois está disponível neste link em formato Hobeta.

Nenhum comentário:

Postar um comentário

Seu comentário é bem vindo, mas peço que use este espaço adequadamente.