Detecção de RAM 48/128
Eletrônica

Detecção de RAM 48/128


Conforme tinha prometido na postagem sobre incompatibilidade do Bubble Bobble, eu vou mostrar a rotina de detecção de tamanho de RAM 48/128K que elaborei na ocasião. 


A ideia era fazer uma rotina que não altere o conteúdo da RAM a ser testada; sem este requisito, o código de máquina poderia ser bem menor. São usados os bancos de RAM 0 e 1, sendo que, no final, é chaveado o banco 0.

; Detecção de tamanho da RAM.
  LD BC,32765     ; Porta para chaveamento de bancos de memória.
  LD D,16         ; Valor para selecionar banco de RAM 0. 
  LD HL,49152     ; Endereço para testar (49152-65535).
  OUT (C),D       ; Seleciona banco de RAM 0. 
  LD A,(HL)       ; Pega um valor da RAM, inverter todos os bits 
  CPL             ;
e guarda em A'.
  EX AF,AF'
  INC D
  OUT (C),D       ; Seleciona banco de RAM 1. 
  LD A,(HL)       ; Pega um valor da RAM e guarda em A', mas em
  EX AF,AF'       ;A fica o complemento do valor tirado da RAM 0.
  LD (HL),A       ; Armazena valor que é complemento do valor da
  DEC D           ;
RAM 0 supostamente na RAM 1.
  OUT (C),D       ; Seleciona banco de RAM 0. 
  CPL             ; Desinverte os bits e compara. O resultado será 
  CP (HL)         ;guardado em F'. 
  LD (HL),A       ; Restaura valor na RAM 0. 
  EX AF,AF'       ; Em F': Z=1 se 128K; Z=0 se 48K. 
  INC D
  OUT (C),D       ; Seleciona banco de RAM 1. 
  LD (HL),A       ; Restaura valor na RAM 1. 
  DEC D
  OUT (C),D       ; Seleciona banco de RAM 0.

Em BASIC, ficaria mais ou menos assim (só funciona no modo USR0 ou na TKMEM-128 com ROM 128 desativada):

  10 OUT 32765,16: LET A0=255-PEEK 49152
  20 OUT 32765,17: LET A1=PEEK 49152: POKE 49152,A0
  30 OUT 32765,16: LET A0=255-A0: LET RAM=48: IF A0=PEEK 49152 THEN LET RAM=128
  40 POKE 49152,A0
  50 OUT 32765,17: POKE 49152,A1
  60 OUT 32765,16

Atualização: outra rotina de detecção.



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

- 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








.