Difference between revisions of "83:Ports:04"

From WikiTI
Jump to: navigation, search
(memory mapping)
Line 11: Line 11:
  
 
=== Write Values ===
 
=== Write Values ===
* Bit 0 reset to select memory map mode 0. In mode 0 the RAM and ROM is mapped to CPU memory as follows:
+
* Bit 0 controls the [[83:OS:Memory Mapping|memory mapping mode]]. The default value for this bit is 0.
** Address 0000h ~ 3FFFh: ROM Page 0
+
* Bits 1 and 2 control the hardware timer frequency. Setting both 0 sets the timer to the fastest speed, and both 1 is the slowest speed. The default is with both bits 1.
** Address 4000h ~ 7FFFh: Swappable (Page selected in [[83:Ports:00]]/[[83:Ports:02]])
+
** Address 8000h ~ BFFFh: RAM Page 1
+
** Address C000h ~ FFFFh: RAM Page 0
+
* Bit 0 set to select memory map mode 1. In mode 1 the RAM and ROM is mapped to CPU memory as follows:
+
** Address 0000h ~ 3FFFh: ROM Page 0
+
** Address 4000h ~ 7FFFh: RAM Page 0
+
** Address 8000h ~ BFFFh: Swappable (Page selected in [[83:Ports:00]]/[[83:Ports:02]])
+
** Address C000h ~ FFFFh: RAM Page 1
+
* Bits 1 and 2 control the hardware timer frequency. Setting both 0 sets the timer to the fastest speed, and both 1 is the slowest speed. The normal speed is with both bits 1.
+
 
* Bit 3: Unused? Always 0.
 
* Bit 3: Unused? Always 0.
 
* Bit 4: Timer frequency multiplier; when this bit is set, all the times are multiplied by 90% (i. e. it's 11.1% faster) compared to when it's reset.
 
* Bit 4: Timer frequency multiplier; when this bit is set, all the times are multiplied by 90% (i. e. it's 11.1% faster) compared to when it's reset.
Line 27: Line 18:
  
 
== Comments ==
 
== Comments ==
The calculator uses mode 0 for normal operation. If you change the memory map mode be sure to change it back before returning control.
 
 
 
To calculate the resulting timer frequency you can use the following formula:
 
To calculate the resulting timer frequency you can use the following formula:
  
 
freq = 1800 * ((out_value & 0x10) ? 1.0 : 0.9) / (3 + ((out_value & 0x06) << 1))
 
freq = 1800 * ((out_value & 0x10) ? 1.0 : 0.9) / (3 + ((out_value & 0x06) << 1))

Revision as of 13:36, 28 April 2005

Synopsis

Port Number: 04h

Function: Timer Interrupt Frequency and Memory Map Control

This port controls the frequency of the hardware timer and the memory map mode.

Read Values

This is a mirror of the link port.

Write Values

  • Bit 0 controls the memory mapping mode. The default value for this bit is 0.
  • Bits 1 and 2 control the hardware timer frequency. Setting both 0 sets the timer to the fastest speed, and both 1 is the slowest speed. The default is with both bits 1.
  • Bit 3: Unused? Always 0.
  • Bit 4: Timer frequency multiplier; when this bit is set, all the times are multiplied by 90% (i. e. it's 11.1% faster) compared to when it's reset.
  • Bit 5-7: Unknown, but definitely used.

Comments

To calculate the resulting timer frequency you can use the following formula:

freq = 1800 * ((out_value & 0x10) ? 1.0 : 0.9) / (3 + ((out_value & 0x06) << 1))