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:
Sem comentários:
Enviar um comentário