6502.org Forum  Projects  Code  Documents  Tools  Forum
It is currently Thu Nov 21, 2024 4:42 pm

All times are UTC




Post new topic Reply to topic  [ 6 posts ] 
Author Message
PostPosted: Wed Oct 27, 2021 2:11 am 
Offline

Joined: Fri Dec 21, 2018 1:05 am
Posts: 1117
Location: Albuquerque NM USA
This is a standalone 6502 computer consists of CRC65 and VGA6448 on a 5-slot RC2014 backplane. CRC65 is a SBC with RC6502 expansion bus running at 14.7MHz. VGA6448 has a monochrome 64 columns X 48 rows (512 x 480) text output and a PS2 keyboard interface. While this 6502 computer can operate standalone, it can also receive serial input from the laptop or PS2 keyboard and display the text output serially on the laptop as well as the VGA monitor. This is the mechanism to load software from laptop to the 6502 computer. Displayed on the screen is mandelbrot benchmark in EhBasic. Forum member okwatts wrote much of the vterm emulation for VGA6448 as well as modified the EhBasic to work with VGA6448.

The work is not done; the display has strange artifacts on the top line as well as bottom line which may be monitor-specific because they were not present on a different monitor. I need to improve the scan code for PS2 keyboard; I like to add a quad serial board to this computer and I want to port DOS/65 to it.
Bill


Attachments:
DSC_66441026.jpg
DSC_66441026.jpg [ 1.55 MiB | Viewed 636 times ]
Top
 Profile  
Reply with quote  
PostPosted: Wed Oct 27, 2021 5:26 am 
Offline
User avatar

Joined: Thu May 28, 2009 9:46 pm
Posts: 8504
Location: Midwestern USA
plasmo wrote:
The work is not done; the display has strange artifacts on the top line as well as bottom line which may be monitor-specific because they were not present on a different monitor.

Looks like some timing artifacts. Some monitors are fussier about VGA timing than others. I have a MicroVGA board here that displays fine on a 24" Viewsonic monitor but has junk like what you are seeing when I connect it to a 17" Sony monitor.

Quote:
I like to add a quad serial board to this computer and I want to port DOS/65 to it.

I've got just what you need, which is a virtual QUART (vQUART). :wink: :D Of course, you'll have to build the hardware, but that's no big deal.

The interrupt-driven driver is written for the 65C816 but can be back-ported to the 65C02 with some simple changes. As I have it configured in POC V1.3, my vQUART will easily sustain 230.4Kbps simultaneously on three of the channels, which I tested via loopback plugs while observing the results on the console, which is hooked up to one of the ports port. Performance, of course, is influenced by Ø2 rate—I did my testing with a 16 MHz clock.

You select the channel from which you want to read or to which you want to write by loading the zero-based channel number in .X. The incoming or outgoing datum is passed in .A, and .Y is unencumbered. The driver makes full use of the 28L92s' FIFOs to reduce the number of IRQs that occur during sustained I/O, especially when all channels are simultaneously busy. As a bonus, the software can be rigged up to generate a jiffy IRQ for timekeeping purposes if you are so inclined.

BTW, the basic design can be extended in multiples of four channels until there is no more room for hardware and the circular queues needed by the driver (two per channel). If you want the outputs running at TIA-232 levels you can use MAX-248s, one required per four channels if you don't need CD and RI. Or you can use 1488/1489 line drivers if the requisite +12/-12 volts is available.

_________________
x86?  We ain't got no x86.  We don't NEED no stinking x86!


Top
 Profile  
Reply with quote  
PostPosted: Wed Oct 27, 2021 2:45 pm 
Offline
User avatar

Joined: Mon May 25, 2015 2:25 pm
Posts: 690
Location: Gillies, Ontario, Canada
Nice work!

What you are seeing on the monitor is the pixel clock attempting to stretch certain pixels in order to best fit the screen. Since you are pushing 512 pixels across either the 640 or 800 standard, the circuitry in the monitor will try to compensate.

You can completely get rid of this by either dividing the horizontal perfectly such as 800/2 for 400 pixels using a 20mHz clock or attempting to push 640 pixels (not easy) using the 25MHz or 25.175 MHz clock.

Another way to remove the banding is to tweak the pixel clock on your monitor settings. This is either called phase or clock on the menu. You first shove the visible image to the center as best you can by adjusting the h position, and then tweak the clock until the banding is gone. It takes some patience, and some monitors may readjust each time they power up, so the matching horizontal rate may be better.

Brad


Top
 Profile  
Reply with quote  
PostPosted: Wed Oct 27, 2021 2:54 pm 
Offline

Joined: Fri Dec 21, 2018 1:05 am
Posts: 1117
Location: Albuquerque NM USA
BDD,
I have an existing quad serial board based on OX16C954. The part I used is 80-pin QFP but I recently found out OX16C954 is available in 68 pin PLCC and cheaper, too. So I've designed a board for the PLCC (the board on top) but still waiting for the part to show up.

The standalone 6502 computer does not use interrupt so far, but quad serial port will need to be interrupt driven and possibly a jiffy timer as well.
Bill


Attachments:
DSC_66461027.jpg
DSC_66461027.jpg [ 1.3 MiB | Viewed 576 times ]
Top
 Profile  
Reply with quote  
PostPosted: Wed Oct 27, 2021 3:06 pm 
Offline

Joined: Fri Dec 21, 2018 1:05 am
Posts: 1117
Location: Albuquerque NM USA
Brad,
Thanks for the insight to monitor adjustments. Indeed, I can adjust another monitor to completely eliminate the banding, but I have more problem with the particular monitor of the original post. I'll go back and try again with your suggestion.

I am pushing out pixels at 25.175MHz, but cut off output after 512 pixels for every horizontal trace. The fact I need to adjust monitor to accommodate the VGA output suggests my VGA output is not conforming to the expected standard. Perhaps I need to adjust front porch or back porch timings?
Bill


Top
 Profile  
Reply with quote  
PostPosted: Wed Oct 27, 2021 3:23 pm 
Offline
User avatar

Joined: Mon May 25, 2015 2:25 pm
Posts: 690
Location: Gillies, Ontario, Canada
Ah, ok, that makes sense.

If you can put out a border during your active horizontal line, that would also stop the banding.
In your case, 64 pixels left and 64 pixels right of any color above black will automatically center your screen and remove all phasing.

Here is a copy of my VGA timing calc program. Compiled in Visual studio. This allows you to tweak timing based on an pixel clock.
Hope it helps for a project one day.

Attachment:
calc.png
calc.png [ 39.92 KiB | Viewed 569 times ]


Cheers,
Brad

plasmo wrote:
Brad,
Thanks for the insight to monitor adjustments. Indeed, I can adjust another monitor to completely eliminate the banding, but I have more problem with the particular monitor of the original post. I'll go back and try again with your suggestion.

I am pushing out pixels at 25.175MHz, but cut off output after 512 pixels for every horizontal trace. The fact I need to adjust monitor to accommodate the VGA output suggests my VGA output is not conforming to the expected standard. Perhaps I need to adjust front porch or back porch timings?
Bill


Attachments:
TimingCalc.zip [23.66 KiB]
Downloaded 35 times
Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 6 posts ] 

All times are UTC


Who is online

Users browsing this forum: No registered users and 32 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to: