Difference between revisions of "NC 100/150/200 IO Specification"

From CPCWiki - THE Amstrad CPC encyclopedia!
Jump to: navigation, search
Line 14: Line 14:
 
of I/O read/writes.
 
of I/O read/writes.
  
- The NC200 does not have a TC8521 Real Time Clock, instead it
+
* The NC200 does not have a TC8521 Real Time Clock, instead it
 
has a MC146818 Real Time Clock. The MC146818 is no longer produced now,
 
has a MC146818 Real Time Clock. The MC146818 is no longer produced now,
 
but is part of many PC designs.
 
but is part of many PC designs.
  
- The NC200 has a NEC765 compatible floppy disc controller. The disc
+
* The NC200 has a NEC765 compatible floppy disc controller. The disc
 
interface was designed by Ranger Computers.
 
interface was designed by Ranger Computers.
  
Line 49: Line 49:
  
  
        bit 7          A15
+
bit 7          A15
        bit 6          A14
+
bit 6          A14
        bit 5          A13
+
bit 5          A13
        bits 4-0        Not Used
+
bits 4-0        Not Used
  
 
Address = 20                                    Write only
 
Address = 20                                    Write only
 
Memory card wait state control
 
Memory card wait state control
 
 
        bit 7: memory card wait state control:  1 for wait states, 0 for no wait
+
bit 7: memory card wait state control:  1 for wait states, 0 for no wait
bit 2: ??
+
bit 2: ??
bit 1: ??
+
bit 1: ??
bit 0: NEC765 Terminal Count input (1=TC active, 0=TC inactive)
+
bit 0: NEC765 Terminal Count input (1=TC active, 0=TC inactive)
  
 
Address = 70
 
Address = 70
Line 66: Line 66:
  
  
bit 2: Backlight: 1=off, 0=on
+
bit 2: Backlight: 1=off, 0=on
bit 1: ??
+
bit 1: ??
bit 0: on/off control: 1 = on, 0 = off
+
bit 0: on/off control: 1 = on, 0 = off
  
 
Address = A0
 
Address = A0
Line 74: Line 74:
  
  
bit 7: memory card present 0 = yes, 1 = no
+
bit 7: memory card present 0 = yes, 1 = no
bit 6: memory card write protected 1 = yes, 0 = no
+
bit 6: memory card write protected 1 = yes, 0 = no
bit 5: lithium battery 0 if >= 2.7 volts
+
bit 5: lithium battery 0 if >= 2.7 volts
bit 4: input voltage = 1, if >= to 4 volts
+
bit 4: input voltage = 1, if >= to 4 volts
bit 3: ** unknown use **
+
bit 3: ** unknown use **
bit 2: alkaline batteries. 0 if >=3.2 volts
+
bit 2: alkaline batteries. 0 if >=3.2 volts
bit 1: ** unknown use **
+
bit 1: ** unknown use **
bit 0: battery power: if 1: batteries are too low for disk usage, if 0: batteries ok for disc usage
+
bit 0: battery power: if 1: batteries are too low for disk usage, if 0: batteries ok for disc usage
  
 
Address = B0 - B9                                Read only
 
Address = B0 - B9                                Read only
Line 87: Line 87:
  
  
        B0..B9          each key of the 64 on the keyboard
+
B0..B9          each key of the 64 on the keyboard
 
                         will set a bit in one of these bytes
 
                         will set a bit in one of these bytes
 
                         while pressed.
 
                         while pressed.
Line 98: Line 98:
  
  
        bit 7: ** unknown use **
+
bit 7: ** unknown use **
bit 6: ** unknown use ** (Real Time Clock Alarm?)
+
bit 6: ** unknown use ** (Real Time Clock Alarm?)
bit 5: NEC765 FDC
+
bit 5: NEC765 FDC
        bit 4: Power off interrupt
+
bit 4: Power off interrupt
bit 3          Key scan
+
bit 3          Key scan
        bit 2          TC8251 Serial Interrupt (Tx Ready OR Rx Ready)
+
bit 2          TC8251 Serial Interrupt (Tx Ready OR Rx Ready)
        bit 1          ** unknown use ** (not checked by OS - not used?)
+
bit 1          ** unknown use ** (not checked by OS - not used?)
        bit 0          ACK from parallel interface
+
bit 0          ACK from parallel interface
  
 
Address = 80
 
Address = 80
 
Printer status
 
Printer status
  
bit 7..1: * unknown use *
+
bit 7..1: * unknown use *
bit 0: printer busy status
+
bit 0: printer busy status
 
1 = busy
 
1 = busy
  
Line 118: Line 118:
  
  
        bit 7: ** unknown use **
+
bit 7: ** unknown use **
bit 6: ** unknown use ** (Real Time Clock Alarm?)
+
bit 6: ** unknown use ** (Real Time Clock Alarm?)
bit 5: NEC765 FDC
+
bit 5: NEC765 FDC
        bit 4: Power off interrupt
+
bit 4: Power off interrupt
bit 3          Key scan
+
bit 3          Key scan
        bit 2          TC8251 Serial Interrupt (Tx Ready OR Rx Ready)
+
bit 2          TC8251 Serial Interrupt (Tx Ready OR Rx Ready)
        bit 1          ** unknown use ** (not checked by OS - not used?)
+
bit 1          ** unknown use ** (not checked by OS - not used?)
        bit 0          ACK from parallel interface
+
bit 0          ACK from parallel interface
 
   
 
   
  
Line 141: Line 141:
 
Read:
 
Read:
  
E0 = Status, E1 = data
+
E0 = Status,  
 +
E1 = data
  
 
Write:
 
Write:
  
E0 = not used, E1 = data
+
E0 = not used,  
 +
E1 = data
  
  
 
[[NC100 IO Specification]]
 
[[NC100 IO Specification]]

Revision as of 16:51, 15 September 2010

This update to NCIOSPEC.TXT covers the differences between the NC100 hardware (documented in the original NCIOSPEC.TXT below) and the NC200 hardware.

This information was discovered mainly by Russell Marks during development of his NC emulator and ZCN software, with the remaining information found by myself during development of my NC200 emulation for M.E.S.S.

This update does not cover the NC150. I do not have details of any differences between this and the NC100 at this time.

When I have information on this system, it will be documented here.

These have been worked out by dissassembling the rom, and looking at patterns of I/O read/writes.

  • The NC200 does not have a TC8521 Real Time Clock, instead it

has a MC146818 Real Time Clock. The MC146818 is no longer produced now, but is part of many PC designs.

  • The NC200 has a NEC765 compatible floppy disc controller. The disc

interface was designed by Ranger Computers.

The ports listed in this section are different or have additional information to the NC100 port definitions. The other ports have the same function as the NC100.


The NC100 clock speed is 4.606Mhz, at this time it is unknown if the NC200 has a different clock speed.

Address                 Comment                 	R/W 
=======                 =======                 	===
00			Display Memory start		W
20			Memory card wait state		W
A0			Card Battery status		R
60			Interrupt Request Mask		W
70			on/off control			W		
80			Printer Status			R					
90			IRQ Status			R
B0-B9			Key data in			R
D0-D1			MC146818 Real Time Clock	R/W
E0	                NEC765 Status          		R
E1			NEC765 Data			R/W


Address = 00 Write only start address of display memory


bit 7           A15
bit 6           A14
bit 5           A13
bits 4-0        Not Used

Address = 20 Write only Memory card wait state control

bit 7: memory card wait state control:  1 for wait states, 0 for no wait
bit 2: ??
bit 1: ??
bit 0: NEC765 Terminal Count input (1=TC active, 0=TC inactive)

Address = 70 on/off control


bit 2: Backlight: 1=off, 0=on
bit 1: ??
bit 0: on/off control: 1 = on, 0 = off

Address = A0 Card battery status


bit 7: memory card present 0 = yes, 1 = no
bit 6: memory card write protected 1 = yes, 0 = no
bit 5: lithium battery 0 if >= 2.7 volts
bit 4: input voltage = 1, if >= to 4 volts
bit 3: ** unknown use **
bit 2: alkaline batteries. 0 if >=3.2 volts
bit 1: ** unknown use **
bit 0: battery power: if 1: batteries are too low for disk usage, if 0: batteries ok for disc usage

Address = B0 - B9 Read only Keyboard data


B0..B9          each key of the 64 on the keyboard
                       will set a bit in one of these bytes
                       while pressed.

Russell Marks confirms that reading B9 does not clear the key scan interrupt like it does on the NC100. The interrupt must be explicitly cleared!

Address = 60 Write only Interrupt request mask


bit 7:		** unknown use **
bit 6: 		** unknown use ** (Real Time Clock Alarm?)
bit 5:		NEC765 FDC
bit 4:		Power off interrupt
bit 3           Key scan
bit 2           TC8251 Serial Interrupt (Tx Ready OR Rx Ready)
bit 1           ** unknown use ** (not checked by OS - not used?)
bit 0           ACK from parallel interface

Address = 80 Printer status

bit 7..1:	* unknown use *
bit 0:		printer busy status

1 = busy

Address = 90 Read/Write IRQ status


bit 7:		** unknown use **
bit 6: 		** unknown use ** (Real Time Clock Alarm?)
bit 5:		NEC765 FDC
bit 4:		Power off interrupt
bit 3           Key scan
bit 2           TC8251 Serial Interrupt (Tx Ready OR Rx Ready)
bit 1           ** unknown use ** (not checked by OS - not used?)
bit 0           ACK from parallel interface

Address = D0/D1 MC146818 Real Time Clock

Consult MC146818 datasheet.


Address = E0/E1 NEC765 floppy disc controller

Consult NEC765 datasheet.

Read:

E0 = Status, 
E1 = data

Write:

E0 = not used, 
E1 = data


NC100 IO Specification