I/O Map
The following table lists the main I/O definitions of the VP4801. This is likely not 100% correct and missing information.
| EF1 | USER 1 KEY (If both USER 1 and USER 2 are pressed on startup the VP4801 will clear RAM) |
| EF2 | USER 2 KEY (If both USER 1 and USER 2 are pressed on startup the VP4801 will clear RAM) |
| Address | |
| 0xC400 | Write Maybe TMS99532 modem output? |
| 0xCC02 |
Write Modem type bit 2 - Audio off (0) / on (1) bit 3 - Carrier on (0) / off (1) bit 5 - Answer carrier on (0) / originate carrier on (1) bit 7 - Phone line disconnect (0) / connect (1) |
| 0xCC04 | Write Video type bit 5 - 0: TV Channel 3, 1: TV Channel 4 bit 6 - 0: 80 characters per line, 1: 40 characters per line |
| 0xCE02 | Read bit 0: printer ready? bit 1&2: if one of these is 0 the VP4801 will go into some kind of online mode. Maybe if modem data is detected via DCD? bit 3: if 0, the VP4801 FW will lock until it becomes 1. Maybe modem status or TMS99532 oscilator? bit 5: if 0, COUPLER text is stored in RAM at 0x8120 (Accoustic Coupler in the TMS99532?). if 1 and 0x8100 bit 7 is 1 then PHONE text is stored in RAM at 0x8120. If 0x8100 bit 7 is 0, then spaces are stores in RAM at 0x8120. |
| Address | Printer |
| 0xC600 | Write (reversed) printer output |
| Address | SCN2672 Programmable Video Timing Controller |
| 0xC000 | Read Interrupt Register Write Initialization Register |
| 0xC001 | Read Status Register Write command code |
| 0xC002 | Read & write Screen Start Register (LSB) |
| 0xC003 | Read & write Screen Start Register (MSB - bit 0 to 5) |
| 0xC004 | Read & write Cursor Address Register (LSB) |
| 0xC005 | Read & write Cursor Address Register (MSB - bit 0 to 5) |
| 0xC006 | Write Pointer Address Register (LSB) |
| 0xC007 | Write Pointer Address Register (MSB - bit 0 to 5) |
| 0xC008 | Read Light Pen Address Register (LSB) |
| 0xC009 | Read Light Pen Address Register (MSB - bit 0 to 5) |
| 0xC800 | Read & write Bus Interface Latch |
| Address | CRT8002-018 Video-Controller Video Generator VDAC |
| 0xCC01 | Write attribute value (1 = active): bit 0: reverse bit 1: blink bit 2: MS0 (reversed) graphics mode bit 3: MS1 (reversed) graphics mode bit ?: underline? bit ?: strike-thru? |
| 0xCE01 | Read main (screen 1) attribute value. This can be used in the SCN2672 split screen mode as follows: The attribute value on 0xCC01 is automatically copied to 0xCE01 when split sceen mode starts. This allows SW to set a different attribute during the split screen interrupt (e.g. for the status line) and afterwards restore the screen 1 attribute by restoring the value from 0xCE01 to 0xCC01. |
| Address | SCN2671 Programmable Keyboard and Communication Controller |
| 0xC200 | Read Interrupt Status Register, note that bit 4 (XINT) is conected to the SCN2672 interrupt (used for SPLIT SCREEN) Write Reset Command |
| 0xC201 | Read & write Communications Mode Register |
| 0xC202 | Read Receiver Holding Register Write Transmit Holding Register |
| 0xC203 | Read Communications Status Register Write Baud Rate Mode Register |
| 0xC204 | Read & write Interrupt Mask Register |
| 0xC205 | Read & write Keyboard Mode Register |
| 0xC206 | Read Keyboard Holding Register |
| 0xC207 | Read Keyboard Status Register Write Miscellaneous Command |