Shop OBEX P1 Docs P2 Docs Learn Events
TV or VGA object capable of attributed characters? — Parallax Forums

TV or VGA object capable of attributed characters?

pullmollpullmoll Posts: 817
edited 2010-04-12 19:13 in Propeller 1
I searched through OBEX to see if I could find an object doing either TV (NTSC and PAL) or VGA output with a separate attribute per character. Just think CGA (or EGA, VGA) combined char/attribute values in a word - or perhaps also separated byte / word if the attributes are more than 8 bits. Is this too much for the propeller to handle (at reasonable character resolutions), or is it the memory footprint why it seems that no one has written such a thing yet?

The reason I ask is I have written / am writing a fully-fledged VT100 emulation in PASM LMM and need an output capable of displaying the attributes and / or the colors.

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Pullmoll's Propeller Projects

Comments

  • Mike GreenMike Green Posts: 23,101
    edited 2010-04-12 14:21
    The closest thing you'll find is the tile-based VGA drivers written by Chip. The tiles are each a word and contain a pointer to a 16 x 16 or 16 x 32 font table entry or pixel tile as well as an index into a color table.

    A generalized attribute mechanism is both too much for the Prop to handle at reasonable display resolutions and too memory intensive. The video generator is quite limited in terms of attribute generation and it's just not reasonable to burden a video driver with trying to map a richer environment onto the more limited Propeller environment.
  • pullmollpullmoll Posts: 817
    edited 2010-04-12 14:39
    Mike Green said...
    The closest thing you'll find is the tile-based VGA drivers written by Chip. The tiles are each a word and contain a pointer to a 16 x 16 or 16 x 32 font table entry or pixel tile as well as an index into a color table.

    A generalized attribute mechanism is both too much for the Prop to handle at reasonable display resolutions and too memory intensive. The video generator is quite limited in terms of attribute generation and it's just not reasonable to burden a video driver with trying to map a richer environment onto the more limited Propeller environment.

    Ok, I've seen that with a 6x9/10/12 font I didn't have enough time to do characters alone, not to talk about inverse video, and had to resort to combining 4 characters to 24 pixel frames. I think this won't change with 8 pixel wide characters and higher horz. resolution, as the time (prop cycles) per scanline remains the same.

    I looked into the VGA_Hires_Text object's source and must admit that I understood next to nothing, except that it generates the code to display an entire scanline (or even 2 of them?) in the lower part of the cog memory. That was the point when I gave up trying to understand what the code actually does. [noparse]:)[/noparse]

    I guess that Chip's other drivers are not much easier to grok then...

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Pullmoll's Propeller Projects
  • potatoheadpotatohead Posts: 10,261
    edited 2010-04-12 15:20
    He used the tile address method on his drivers. Truth is, using the ROM font and the graphics library, that tile address method can do a lot, and can do so on frugal amounts of RAM, if needed. The higher resolution ones use multiple COGs because of waitvid loop time constraints. Scan line buffers are required to keep up with the pixel clock.

    On TV, my potatotext driver will do 80 characters, they are 8x8, and can have colors. Any two colors per character cell. Link in my signature. One could drop a VGA font in there, and have everything, but the underline. It's got full interlace display for 80 columns on TV, and a pseudo-interlace that will generally do 64 on most devices. If you want, it operates mono as well. For 80 column multi-color, you need 96 Mhz or more; otherwise, it runs at 64.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Propeller Wiki: Share the coolness!
    8x8 color 80 Column NTSC Text Object
    Safety Tip: Life is as good as YOU think it is!

    Post Edited (potatohead) : 4/12/2010 3:29:03 PM GMT
  • pullmollpullmoll Posts: 817
    edited 2010-04-12 15:49
    potatohead said...
    On TV, my potatotext driver will do 80 characters, they are 8x8, and can have colors.

    I can't get that one to sync on my PAL monitor. Not sure if I have the VCFG wrong, because the DracBlade of course isn't autodetected...
      clkset( %01101111, 80_000_000 )                          ' DracBlade   80MHz (5MHz PLLx16)
      ivcfg := %0_11_1_0_1_000_00000000000_010_0_00000111      ' demoboard 4 color mode
      ifrqa := $16E8_BA2F                                      ' (7,159,090.9Hz/80MHz)<<32 NTSC demoboard & Hydra
      idira := $0007_0000                                      ' demoboard
    
    


    This is what I used after commenting out the auto detection.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Pullmoll's Propeller Projects
  • potatoheadpotatohead Posts: 10,261
    edited 2010-04-12 19:00
    It's NTSC only, though you could use the monochrome mode.

    What pins are you using for video? I can double check this in a bit.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Propeller Wiki: Share the coolness!
    8x8 color 80 Column NTSC Text Object
    Safety Tip: Life is as good as YOU think it is!
  • AntoineDoinelAntoineDoinel Posts: 312
    edited 2010-04-12 19:13
    Hi Juergen

    this one claims to do VGA ANSI:

    http://www.shaels.net/index.php/propterm/general/13-propterm-overview

    I have not tested ANSI capabilities at all, only tried briefly as terminal for RamBlade.

    - It requires 64KB EEPROM - or will do funny things with charset...
    - the VGA driver it's a mod of VGA Hires Text, but for the life of me I cannot get it to sync at 640x480... only 800x600 and 1024x768 (too much chars tongue.gif )
    - The complete thing·will eat most if not all COGs. Which is understandable considering that it's intended as a standalone terminal. Anyway, peeking at source it seems to me that while it's·a quite complete emulation, it uses·a bit too much PASM·(IMHO), even in higher levels where it could be simply done in spin.

    Regards
    Alessandro
Sign In or Register to comment.