Este artigo destina-se a explicar as diferenças entre a ROM do ZX Spectrum 48K e de um Timex 2048.
No Timex 2048, uma pequena modificação foi feita à ROM, para reinicializar o chipset de controle para o modo default, caso o port de manipulação de paging/modos de video tenha sido manipulado.
No Timex 2048, uma pequena modificação foi feita à ROM, para reinicializar o chipset de controle para o modo default, caso o port de manipulação de paging/modos de video tenha sido manipulado.
Existe uma CALL na rotina 11B7: THE 'NEW' COMMAND ROUTINE que lida com a inicialização/comando NEW.
A CALL que existe para imprimir a mensagem "@ 1982 Sinclair Research Ltd" foi substituída por uma CALL para uma zona não usada na ROM do 48K, onde foi colocado um OUT para inicializar o "Timex Control register" na port 255, a 0, sendo que em seguida, chama a rotina PO_MSG
A rotina é colocada depois de um XOR A, pelo que na chamada da Timex, o registo A não é inicializado.
1295: XOR A
1296: LD DE,$1538
ORIGINAL 48K
1299: CD 0A 0C CALL $0c0a ; CALL PO_MSG
TC2048
1299: CD CD 38 CALL $38ce
Zona da rotina nova no TC 2048, bytes a 0xFF no ZX Spectrum 48K.
Inicializa o control register do Timex ao estado de arranque da máquina.
TC2048
386e: D3 FF OUT ($FF),a
3870: CD 0A 0C CALL $0c0a ; CALL PO_MSG
3873: c9 RET
Notas:
Porquê um CALL e não um JP ? Usar-se-ia menos um byte na parte não usada na ROM e menos dois bytes de stack.
A diferença entre a ROM stock do ZX Spectrum 48K e do TC 2048 são exactamente 8 bytes.
Porquê um CALL e não um JP ? Usar-se-ia menos um byte na parte não usada na ROM e menos dois bytes de stack.
A diferença entre a ROM stock do ZX Spectrum 48K e do TC 2048 são exactamente 8 bytes.
Ver:
Reparei que a rom do meu TC2048 está numa eprom D27128A.
ResponderEliminarIsso significa que posso apagar a original e programar outra que que deseje, mas irá o Timex depois funcionar correctamente?
Será que o TC2048 necessita mesmo da rom original para arrancar ou poderão usar-se outras?
Obrigado.
Em 90% dos casos, sim. Mas o Rui poderá depois detalhar melhor.
EliminarPode usar uma qualquer que funcione num 48k base.tenha em atenção que poderá ser necessário teclar um OUT 255,0, isto porque o hardware em si não garante que o 2048 inicie no display file primário (a não ser que consiga fazer um pequeno patch à nova ROM para lhe fazer o OUT sempre que reinicia a máquina.
ResponderEliminarObrigado João :)
EliminarOk, obrigado!
ResponderEliminarResolvi fazer a experiência e, uma vez que foi por aqui que tão gentilmente recebi aconselhamento, queria deixar algum feedback:
ResponderEliminarGuardei a rom original do 2048, arranjei uma 2ª eprom e consegui gravar a rom "ZX48 v2EN" do Rodolfo Guerra.
Funciona e não foi preciso fazer mais nada.
Até agora tem trabalhado bem, mas sobretudo o que mais me impressionou é que os jogos que tenho experimentado parece que ficaram mais "responsivos", arrisco até a dizer que em algumas partes até mais rápidos/fluidos, com um menor atraso na reacção ao input. Será que tem a ver com a rotina de leitura do teclado ser mais rápida nesta rom?
Já tinha notado essa diferença quando fiz a experiência num emulador mas parece resultar igualmente bem no hardware real.
Na minha humilde opinião esta rom pode conter uma mais valia para os nossos 2048 quando a máquina é usada para jogar.
Experimentem e vejam se notam alguma coisa.
A parte de funcionar bem não me surpreende, porque existem alguns 2048 que andam por aí com a ROM original do 48k.
EliminarO Encarnado tem a sua razão, a Timex forçava a porta 255 a zero para contornar alguns problemas de hardware, mas nem sempre é necessário.
Quanto à ROM do Guerra, ela não é 100% fiel ao Spectrum em várias rotinas. Foram feitas algumas escolhas deliberadas, também para influenciar a velocidade da edição de BASIC, que acabam por influenciar jogos de BASIC ou jogos mais antigos de assembly que usem a rotina de ROM do teclado.
ROM do Spectrum
5C09 REPDEL 23 Time that a key must be held down before it repeats
5C0A REPPER 05 Delay between successive repeats of a key held down
ROM do Guerra
5C09 REPDEL 14 Time that a key must be held down before it repeats
5C0A REPPER 03 Delay between successive repeats of a key held down
Só agora reparei. Tens a v3 do Guerra aqui https://sites.google.com/view/rodolfoguerra
EliminarPareceu-me que essa era mais indicada para os TK90X.
EliminarIncompatibilidades à parte - que devem existir - para já estou bastante satisfeito, é como se o 2048 tivesse ganhou um novo "fôlego".
Chega a ser um pouco desconcertante porque o efeito até parece ser mais evidente no 2048 do que no próprio 48k, mas claro que posso estar enganado.
Uma das incompatilibilidades do 2048 é que o clock é ligeiramente mais rápido que o do ZX Spectrum 48K. Muito pouco, mas suficiente para um humano se aperceber, mesmo em jogos.
Eliminar