I am building some kind of CPU (like many people here) and it was almost complete, but output was made into RAM, and it was very unhandy. So I've decided to build a text console to output characters. This project itself has become very complex! And I've decided to share it step by step. Here I'm showing how the counters are cascaded to output each character line by line. This will be a 80x25 characters console. I even have 2 fonts of different sizes. But here is only one size 8x8 pixel ansi dos font. Another font is 6x8 pixels and the counter is much more complex. I think, that square font will be even more handy to draw asci/ansi art games.
I think, this project will be very usefull, for computer builders. And sharing it at the early stage will help to design an interface.
Building a full featured text terminal/console
Building a full featured text terminal/console
- Attachments
-
- terminal_incomplete.zip
- (52.38 KiB) Downloaded 1387 times
-
- 8x8_vertical_font.png (2.26 KiB) Viewed 23522 times
Re: Building a full featured text terminal/console
And here is 6x8 pixel version. The counter is made using ROMs since it was complex. The display is rotated and we need to scan vertically from bottom to top.
- Attachments
-
- font_line_6x8.png (2.11 KiB) Viewed 23516 times
-
- terminal_incomplete_6x8_char.zip
- (102.23 KiB) Downloaded 1395 times
Re: Building a full featured text terminal/console
The next thing I've done is a posibility to type a single character and not to fill entire screen.
- Attachments
-
- terminal_typing.zip
- (108.1 KiB) Downloaded 1400 times
Re: Building a full featured text terminal/console
Added a very complex keyboard circuit.
Internal counter is changed to make it more simple to understand it's functionality.
The latch was needed to remember the pressed button until the drawing is complete.
Next, we need a special behaviour for Enter, Backspace and Tab buttons, but still be able to print those symbols associated with them if drawing ansi picture.
Then, decide whether we need to have a random access to every position or serial access is enough?
Also, what to do when screen is full? Scroll, clear..
Do we need a caret?
Internal counter is changed to make it more simple to understand it's functionality.
The latch was needed to remember the pressed button until the drawing is complete.
Next, we need a special behaviour for Enter, Backspace and Tab buttons, but still be able to print those symbols associated with them if drawing ansi picture.
Then, decide whether we need to have a random access to every position or serial access is enough?
Also, what to do when screen is full? Scroll, clear..
Do we need a caret?
- Attachments
-
- terminal_keyboard.zip
- (107.92 KiB) Downloaded 1409 times
Re: Building a full featured text terminal/console
I've added support for Backspace, Enter and Tab buttons. Now they behave as expected. The Backspace erases one char back(by reverting the counter), Enter goes to new line (it is done by skipping until the new line) and Tab is skipping until mod 4.
In text viewer you can load any text file and it'll be printed on display. But the text should fit the display or it will be overwritten.
In scroller you can see the possible way of scrolling the screen. The difference between text and screen height gives an effect of scrolling.
In text viewer you can load any text file and it'll be printed on display. But the text should fit the display or it will be overwritten.
In scroller you can see the possible way of scrolling the screen. The difference between text and screen height gives an effect of scrolling.
- Attachments
-
- type_view_scroll.zip
- (339.39 KiB) Downloaded 1327 times
Re: Building a full featured text terminal/console
The most complex thing was to make entire screen scroll up, when you reach the end of the screen. It took me almost 2 month to make it finally work! As I told before, I've build it for my CPU project and I wanted it to be as fast as possible so almost all logic is "packed" into LUTs (ROMs). It was discussed here already. Of course, more improvements may be done there. If you want more explanation about how to use it, please ask me.
UPD: since there was only 1 download, I've replaced it with newer and better version.
UPD: since there was only 1 download, I've replaced it with newer and better version.
- Attachments
-
- terminal_final.zip
- (151.61 KiB) Downloaded 1397 times