sexta-feira, 24 de janeiro de 2020

ROM de ZX Spectrum 48K vs ROM de TC 2048

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.

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.

Ver:

Sem comentários:

Publicar um comentário