Address Map (PC-8801): Difference between revisions

From Data Crystal
Jump to navigation Jump to search
(Port 0x31 - PC-8001 Emulator)
 
No edit summary
 
(11 intermediate revisions by 2 users not shown)
Line 1: Line 1:
=== Port Writes ===
{{subpage|game=PC-8801}}
== Memory Map ==


{| class="wikitable"
{| class="wikitable"
|-
|-
|Port
!Range
|Name
!Name
|Function
!Function
|-
|0x8000-0x800F
|Interrupt Jump Pointer Table
|
0x8000-0x8001: / INT7 (RS-232C Ch1 in RS-232C BASIC)
 
0x8002-0x8003: INT6 (vertical blank)
 
0x8004-0x8005: INT5 (system clock)
 
0x8006-0x8007: INT4 / INT3 (user defined)
 
0x8008-0x8009: INT3 / INT4 (user defined)
 
0x800A-0x800B: INT2 / INT5 general-purpose I / O port
 
0x800C-0x800D: INT1 / INT1 (for floppy)
 
0x800E-0x800F: INT0 / INT2 (for floppy)
|-
|0xFF39-0xFF3A
|Memory Integrity Test Result
|PC-8000 series machines have a program called "Monitor" which can test memory integrity. If the test fails, the results are reported here.
 
0x0FF39-0x0FF3A: Address of the failure (Big Endian)
 
0x0FF3B: data written at the moment of failure
 
0x0FF3C: data read at the moment of failure
|}
 
== Port Writes ==
 
{| class="wikitable"
|-
!Port
!Name
!Function
|-
|0x10
|Tab key status
|bit 1 set if tab key down; else clear
|-
|0xA
|Printer data
|
|-
|-
|0x30
|0x30
Line 65: Line 112:
**GREEN ON if bit 3 set (mask 0x4)
**GREEN ON if bit 3 set (mask 0x4)
|-
|-
|0x55-0x5b
|0x55-0x5B
|Palette Write
|Palette Write
|Writes to the palette. The index written to is the difference between the port number and 0x54.
|Writes to the palette. The index written to is the difference between the port number and 0x54.
Line 79: Line 126:
**GREEN ON if bit 3 set (mask 0x4)
**GREEN ON if bit 3 set (mask 0x4)
|-
|-
|0x5c-0x5f
|0x5C-0x5F
|
|
|
|-
|0x5F
|Bank Select
|Map 0x8000-0xBFFF to a page in ROM
|-
|0xE8-0xE9
|Japanese Kanji ROM Address
|0xE8 (low)
0xE9 (high)
|-
|0xEA-0xEB
|Chinese Kanji ROM Address
|0xE8 (low)
0xF4 (high)
|-
|0xF4-0xFB
|Floppy Disk DMA (Direct Memory Access system)
|
|
8 inch disk
*0xF4: control
*0xF5: margin control
*0xF6: controller status
*0xF7: data
5 inch disk
*0xF8: control
*0xF9: margin control
*0xFA: controller status
*0xFB: data
|}
|}

Latest revision as of 19:09, 28 January 2024

This is an incorrectly used {{subpage}} template.

Memory Map

Range Name Function
0x8000-0x800F Interrupt Jump Pointer Table

0x8000-0x8001: / INT7 (RS-232C Ch1 in RS-232C BASIC)

0x8002-0x8003: INT6 (vertical blank)

0x8004-0x8005: INT5 (system clock)

0x8006-0x8007: INT4 / INT3 (user defined)

0x8008-0x8009: INT3 / INT4 (user defined)

0x800A-0x800B: INT2 / INT5 general-purpose I / O port

0x800C-0x800D: INT1 / INT1 (for floppy)

0x800E-0x800F: INT0 / INT2 (for floppy)

0xFF39-0xFF3A Memory Integrity Test Result PC-8000 series machines have a program called "Monitor" which can test memory integrity. If the test fails, the results are reported here.

0x0FF39-0x0FF3A: Address of the failure (Big Endian)

0x0FF3B: data written at the moment of failure

0x0FF3C: data read at the moment of failure

Port Writes

Port Name Function
0x10 Tab key status bit 1 set if tab key down; else clear
0xA Printer data
0x30
0x31 PC-8001 Emulator

Bit8 - background color

Bit7 - background color

Bit6 - background color

Bit5 - Resolution: 320 × 200 if set, else 640 × 200

Bit4 - Screen drawing: draw if set, else do not draw

Bit3 - Color: monochrome if set, else indexed color

Bit2 - Memory mapping: map 0x7FFF to RAM if set, else ROM

Bit1 - Expansion ROM select: map 0x6000-07FFF ROM to N80/N-BASIC if set, else to extended ROM. Set by default.

0x34
0x35
0x52 Background Color Sets the background color of the screen. The color is an RGB composite.
  • BLUE ON if bit 3 (mask 0x8) set
  • GREEN ON if bit 4 (mask 0x10) set
  • RED ON if bit 5 (mask 0x20) set
0x53
0x54 Toggle Background/Foreground color components Toggles background and foreground color components on and off
  • if 8-color mode
    • if bit 8 (mask 0x80) set, target is background color, else foreground
    • if bit 7 (mask 0x40) toggle green component
      • GREEN ON if bits 1,2,3 (0x7) set, else OFF
    • else toggle red and/or blue
      • BLUE ON if bit 1,2,3 set, else OFF
      • RED ON if value written / 8 sets bits 1,2,3, else OFF
  • else if monochrome mode, set foreground color
    • BLUE ON if bit 1 set (mask 0x1)
    • RED ON if bit 2 set (mask 0x2)
    • GREEN ON if bit 3 set (mask 0x4)
0x55-0x5B Palette Write Writes to the palette. The index written to is the difference between the port number and 0x54.
  • if port 0x31 bit 6 (0x20) set
    • if bit 7 (mask 0x40) toggle green component
      • GREEN ON if bits 1,2,3 (0x7) set, else OFF
    • else toggle red and/or blue
      • BLUE ON if bit 1,2,3 set, else OFF
      • RED ON if value written / 8 sets bits 1,2,3, else OFF
  • else
    • BLUE ON if bit 1 set (mask 0x1)
    • RED ON if bit 2 set (mask 0x2)
    • GREEN ON if bit 3 set (mask 0x4)
0x5C-0x5F
0x5F Bank Select Map 0x8000-0xBFFF to a page in ROM
0xE8-0xE9 Japanese Kanji ROM Address 0xE8 (low)

0xE9 (high)

0xEA-0xEB Chinese Kanji ROM Address 0xE8 (low)

0xF4 (high)

0xF4-0xFB Floppy Disk DMA (Direct Memory Access system)

8 inch disk

  • 0xF4: control
  • 0xF5: margin control
  • 0xF6: controller status
  • 0xF7: data

5 inch disk

  • 0xF8: control
  • 0xF9: margin control
  • 0xFA: controller status
  • 0xFB: data