Re: C1P video mod -- double characters per line.
Posted: Tue Apr 07, 2015 3:33 am
Here is the long story of my Video Upgrade for the C1P challenger board.
OSI C1P Simple Video Upgrade.
This "fix" requires cutting 4 traces and adding one 74LS00 chip. It can double the characters per line
by "stealing" the ram from the previous line. Thus giving half the lines per screen
but double characters per line. No additional RAM needed
Therefore a normal C1P output of 24 characters with about 24 lines becomes
48 characters on 12 lines. The number of lines depends on your monitor
The normal character box is 8 bits wide by 8 bits high. The alpha characters
occupy only 5 x 7 part of this box. The result is that the characters are very dotty,
too far apart horizontally and too close together vertically.
You all know how difficult it is to actualy work with this screen.
First we need a little history of how the Video works on the normal C1P super board.
There is a free running video count down chain that is driven from the system clock at about 4 Mhz.
really 3.7127 Mhz. This is used as the dot clock and input to a 16 bit counter composed of
four 4 bit counter chips U30, U59, U60 and U61. The outputs are labeled C0 thru C15. This system
is always running as long as there is power and is a good check that this part of the board is working.
At power up, the random power up values of the video rams on the screen should remains the same.
Other parts of the system need to work to clear the screen and put the D/C/W/M/ message out.
The dot clock drives the shift register U42 which sequentially puts characters out to the video stream.
The shift register is loaded by the 4-bit AND gate U19 when input C0,C1,C2 andT3 are high.
These three bits(C0,C1,C2) are effectively counting the 8 horizontal dots of a character box.
The next 5 bits C3, C4, C5, C6, C7 count through the video RAM memory for the 32 characters in the line.
The next 3 bits C8,C9,C10 are inputs to the Character Generator chip to control which dot pattern
is displayed for the character box and counts the 8 horizontal lines making up the video for the same
character boxes counted by C3-C7.
The next 5 bits C11, C12, C13, C14, C15 count through the video RAM memory for the next 32 video lines.
And the process repeats continuously.
There is a one shot U65 which drives horizontal sync with input from C7, which drops at end of line.
There is also a one shot U65 which drives vertical sync with input from C15.
This is the reason you really don't get 32 character by 32 lines.
This counting system is continuosly running but parts are "blanked out" by the sync times.
Thus you lose characers at the front of the line and the top of the screen plus some overrun by the monitors.
Here are photos of the exact same Video RAM output with and without the fix. Here is the same data with the upgrade turned on. note the 2nd & 3rd line 246 135 which are now displayed on one line.
Same with Alpha lines below which shows how the two lines are interleaved...
Now the fantistic simple fix.
1) By taking C2 out of the input to the AND gate at U19 which generates the load to the shifter
and keeping pin 12 of U19 high, the shift register U42 will load twice as often.
2) We next replace C11 going into video RAM selector U54 pin 6 with the C2 signal we took away from U19.
We now have twice as many characters per line using the memory for the previous line in between each
normal character.
3) Next we need to blank the screen when we would normally display the data for the lines we stole.
We need to break the line T3 going to U56 which creates the blanking space between the dots normally.
We feed C11 into U56 in place of T3 which now blanks the screen for the even rows, thus showing only one line
but with double the characers. Also the characters are solid, not a bunch of dots.
4) We now need to feed in a dot clock which puts out 6 dots in the space of 4 normal dots.
This is generated with a gated astable vibrator composed of a single 74LS00 chip, wired up
with some resistors and a diode. This is retriggered by the load signal. The schematic will be shown later.
And the result is a 5x7 character in a 6 by 8 box with 48 characters per line and about 14 lines.
The results are beautiful, easy to read and nice to the eye, good space between lines vertically
and the characers horizontally.
In review there are four signals to change (cut 4 traces) and one IC chip to add. Thats it!!!!
1) change the load to the sifter by removing C2 (CUT trace)
2) Select video RAM correctly by changeing C11 to C2 for input to U54 (Cut Trace add wire)
3) Blank the stolen lines by using C11 as input to U56 instead of T3 (Cut trace add wire)
4) Make new dot clock from a 74LS00 and resistors and diodes and feed into shifter (Cut trace add wire)
Of course we now need software to alternate the output characers to the correct video Ram locations.
If one wants to be able to switch back and forth between normal and enhances mode then this is simple also.
Just add a single 74LS157 dual 4-bit selector and feed the outputs to the cut traces and on side A
to the other of the cut trace and B to the new desired inputs. Now you can switch back and forth with a simple
0 or 1 to the select input.
If one wants to control this from within a program, this is also very easy.
Just add a single D flip flop which gets its input from a video ram data bit (usually off screen)
and clocked by Vertical Sync or even Horizontal sync. the program can then switch modes by placing the
correct data into a Video Ram location. If we use the horizontal sync then you can even have parts of the
screen in the new mode and parts in the old mode.. All with just three standard TTL chips, and the same 4 cuts
as above while just tapping into a few other circuits.(Sync & Data)
This can all be done in the 3 prototype area of the C1P board U26,U27,U28
...WOW really cool.
I haven't got my output driver loaded which takes care of placing output in alternating video RAM so everything looks normal.
the examples shown were placed on the screen using the monitor. The driver takes care of backspace and can also include a blinking cursor.
That info to follow.
OSI C1P Simple Video Upgrade.
This "fix" requires cutting 4 traces and adding one 74LS00 chip. It can double the characters per line
by "stealing" the ram from the previous line. Thus giving half the lines per screen
but double characters per line. No additional RAM needed
Therefore a normal C1P output of 24 characters with about 24 lines becomes
48 characters on 12 lines. The number of lines depends on your monitor
The normal character box is 8 bits wide by 8 bits high. The alpha characters
occupy only 5 x 7 part of this box. The result is that the characters are very dotty,
too far apart horizontally and too close together vertically.
You all know how difficult it is to actualy work with this screen.
First we need a little history of how the Video works on the normal C1P super board.
There is a free running video count down chain that is driven from the system clock at about 4 Mhz.
really 3.7127 Mhz. This is used as the dot clock and input to a 16 bit counter composed of
four 4 bit counter chips U30, U59, U60 and U61. The outputs are labeled C0 thru C15. This system
is always running as long as there is power and is a good check that this part of the board is working.
At power up, the random power up values of the video rams on the screen should remains the same.
Other parts of the system need to work to clear the screen and put the D/C/W/M/ message out.
The dot clock drives the shift register U42 which sequentially puts characters out to the video stream.
The shift register is loaded by the 4-bit AND gate U19 when input C0,C1,C2 andT3 are high.
These three bits(C0,C1,C2) are effectively counting the 8 horizontal dots of a character box.
The next 5 bits C3, C4, C5, C6, C7 count through the video RAM memory for the 32 characters in the line.
The next 3 bits C8,C9,C10 are inputs to the Character Generator chip to control which dot pattern
is displayed for the character box and counts the 8 horizontal lines making up the video for the same
character boxes counted by C3-C7.
The next 5 bits C11, C12, C13, C14, C15 count through the video RAM memory for the next 32 video lines.
And the process repeats continuously.
There is a one shot U65 which drives horizontal sync with input from C7, which drops at end of line.
There is also a one shot U65 which drives vertical sync with input from C15.
This is the reason you really don't get 32 character by 32 lines.
This counting system is continuosly running but parts are "blanked out" by the sync times.
Thus you lose characers at the front of the line and the top of the screen plus some overrun by the monitors.
Here are photos of the exact same Video RAM output with and without the fix. Here is the same data with the upgrade turned on. note the 2nd & 3rd line 246 135 which are now displayed on one line.
Same with Alpha lines below which shows how the two lines are interleaved...
Now the fantistic simple fix.
1) By taking C2 out of the input to the AND gate at U19 which generates the load to the shifter
and keeping pin 12 of U19 high, the shift register U42 will load twice as often.
2) We next replace C11 going into video RAM selector U54 pin 6 with the C2 signal we took away from U19.
We now have twice as many characters per line using the memory for the previous line in between each
normal character.
3) Next we need to blank the screen when we would normally display the data for the lines we stole.
We need to break the line T3 going to U56 which creates the blanking space between the dots normally.
We feed C11 into U56 in place of T3 which now blanks the screen for the even rows, thus showing only one line
but with double the characers. Also the characters are solid, not a bunch of dots.
4) We now need to feed in a dot clock which puts out 6 dots in the space of 4 normal dots.
This is generated with a gated astable vibrator composed of a single 74LS00 chip, wired up
with some resistors and a diode. This is retriggered by the load signal. The schematic will be shown later.
And the result is a 5x7 character in a 6 by 8 box with 48 characters per line and about 14 lines.
The results are beautiful, easy to read and nice to the eye, good space between lines vertically
and the characers horizontally.
In review there are four signals to change (cut 4 traces) and one IC chip to add. Thats it!!!!
1) change the load to the sifter by removing C2 (CUT trace)
2) Select video RAM correctly by changeing C11 to C2 for input to U54 (Cut Trace add wire)
3) Blank the stolen lines by using C11 as input to U56 instead of T3 (Cut trace add wire)
4) Make new dot clock from a 74LS00 and resistors and diodes and feed into shifter (Cut trace add wire)
Of course we now need software to alternate the output characers to the correct video Ram locations.
If one wants to be able to switch back and forth between normal and enhances mode then this is simple also.
Just add a single 74LS157 dual 4-bit selector and feed the outputs to the cut traces and on side A
to the other of the cut trace and B to the new desired inputs. Now you can switch back and forth with a simple
0 or 1 to the select input.
If one wants to control this from within a program, this is also very easy.
Just add a single D flip flop which gets its input from a video ram data bit (usually off screen)
and clocked by Vertical Sync or even Horizontal sync. the program can then switch modes by placing the
correct data into a Video Ram location. If we use the horizontal sync then you can even have parts of the
screen in the new mode and parts in the old mode.. All with just three standard TTL chips, and the same 4 cuts
as above while just tapping into a few other circuits.(Sync & Data)
This can all be done in the 3 prototype area of the C1P board U26,U27,U28
...WOW really cool.
I haven't got my output driver loaded which takes care of placing output in alternating video RAM so everything looks normal.
the examples shown were placed on the screen using the monitor. The driver takes care of backspace and can also include a blinking cursor.
That info to follow.