Connecting a 3.2in Display to the RCA CDP1802 CMOS 8-bit CPU

Purpose: This was just a little project or test I've been wanting to do for some time to see if using a TFT display and an Arduino MEGA2560 would be fast enough to emulate the RCA CDP1861 Video Display Controller.




Output instructions 61 and 69 are still used to control the display (OFF/ON respectively).
The only thing to modify is the interrupt routine.
You basically send a pulse (I used 6A) to the Arduino to signal that it can start DMAOUT. Then you wait (I used the same EF1) until the Arduino has displayed the 256 bytes.
Send another pulse (6A) to signal exiting interrupt routine.
The following is the program list which will compile with my Special 1802 Assembler:


Display showing the "Kaleidoscope" CHIP-8 program.





;The video display showing the classic test program as was demonstrated in the Popular Electronics, July 1977 article.
;"Build The COSMAC 'ELF' - part IV: Build the PIXIE Graphics Display".

ORG 0200 ;Compile to run at M0200
90 B1 B2 B3 B4
F8 @D3START& A3
F8 3F A2
F8 @DISPINT& A1
D3
RETURN:72 70
DISPINT:7B 22 78
22 52
F8 @DISPINT/ B0
F8 00 A0
6A ;Signal Arduino to start DMA
3C @* ;Wait until Arduino is done loading 256 bytes
6A ;Signal Arduino exiting interrupt routine
7A 30 @RETURN
D3START:E2 69
3F @*
6C A4
WAIT2:37 @WAIT2
90 ;Shift D to see movement in display
ShiftD:76 22 52 12 3F @ShiftD
6C 54 14
30 @WAIT2
00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
7B DE DB DE 00 00 00 00 4A 50 DA 52 00 00 00 00
42 5E AB D0 00 00 00 00 4A 42 8A 52 00 00 00 00
7B DE 8A 5E 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 07 E0 00 00 00 00 FF FF FF FF
00 06 00 01 00 00 00 01 00 7F E0 01 00 00 00 02
7F C0 3F E0 FC FF FF FE 40 0F 00 10 04 80 00 00
7F C0 3F E0 04 80 00 00 00 3F D0 40 04 80 00 00
00 0F 08 20 04 80 7A 1E 00 00 07 90 04 80 42 10
00 00 18 7F FC F0 72 1C 00 00 30 00 00 10 42 10
00 00 73 FC 00 10 7B D0 00 00 30 00 3F F0 00 00
00 00 18 0F C0 00 00 00 00 00 07 F0 00 00 00 00

Make sure to modify the interrupt routine in CHIP-8 operating system as explained to the left in the classic video test program.






































1861EMU.pdf

- PDF file of the schematic

Arduino_CDP1861EMU.pdf

- PDF file of the Arduino program

Arduino_CDP1861EMUv2.pdf

- PDF of another version/algorithm to see if it would be faster

Conclusion: The refreshing of the display is quite slow. It's still pretty good if you only need to display information that doesn't change too often, like in a game (e.g. Chess, Checkers, Tic-Tac-Toe) where you don't need to rapidly move the graphic objects.
If the display would have been fast, I would have programmed it to have higher resolution modes and probably would have added color to it.

Even though the outcome was not what I was hoping for, it still was a fun project.