Difference between revisions of "NC 100/150/200 IO Specification"
m |
(fixed keyboard matrix) |
||
Line 80: | Line 80: | ||
B5: | B5: | ||
− | bit 0: | + | bit 0: ?? |
− | bit 1: | + | bit 1: ?? |
− | bit 2: | + | bit 2: B |
− | bit 3: | + | bit 3: V |
− | bit 4: | + | bit 4: T |
− | bit 5: C | + | bit 5: Y |
+ | bit 6: G | ||
+ | bit 7: C | ||
B6: | B6: | ||
Line 125: | Line 127: | ||
bit 5: L | bit 5: L | ||
bit 6: O | bit 6: O | ||
− | bit 7: | + | bit 7: . |
Revision as of 10:01, 21 June 2023
This update to NCIOSPEC.TXT covers the differences between the NC100 hardware (documented in the original NCIOSPEC.TXT below) and the NC150/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.
- The NC100 on/off button generates an NMI.
- The NC200 on/off button generates a maskable interrupt.
Keyboard NC100:
B0: bit 0: Shift (Left) bit 1: Shift (Right) bit 2: unused bit 3: Cursor Left (Red) bit 4: Return bit 5: unused bit 6: unused bit 7: unused
B1: bit 0: Function (Yellow) bit 1: Control bit 2: Stop bit 3: Space bit 4: unused bit 5: unused bit 6: 5 bit 7: unused B2: bit 0: Caps Lock bit 1: Symbol bit 2: 1 bit 3: Tab bit 4: unused bit 5: unused bit 6: unused bit 7: unused
B3: bit 0: 3 bit 1: 2 bit 2: Q bit 3: W bit 4: E bit 5: unused bit 6: S bit 7: D
B4: bit 0: 4 bit 1: unused bit 2: Z bit 3: X bit 4: A bit 5: unused bit 6: R bit 7: F B5: bit 0: ?? bit 1: ?? bit 2: B bit 3: V bit 4: T bit 5: Y bit 6: G bit 7: C
B6: bit 0: 6 bit 1: Cursor Down (Blue) bit 2: Del bit 3: Cursor Right (Green) bit 4: \ bit 5: / bit 6: H bit 7: N
B7: bit 0: = bit 1: 7 bit 2: ~ bit 3: Up bit 4: Menu bit 5: U bit 6: M bit 7: K
B8: bit 0: 8 bit 1: - bit 2: ) bit 3: ( bit 4: " bit 5: I bit 6: J bit 7: ,
B9: bit 0: 0 bit 1: 9 bit 2: Del bit 3: P bit 4: : bit 5: L bit 6: O bit 7: .
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 0: NEC765 Terminal Count input (1=TC active, 0=TC inactive)
Address = 30 Write only Floppy motor control
bit 3: Floppy motor: 1=off, 0=on
Address = 70 on/off control
bit 2: Backlight: 1=off, 0=on bit 0: on/off control: 1 = on, 0 = off
Address = 80
centronics status
bit 0: busy state
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