A little HELP!!


Closed Thread
Results 1 to 40 of 77

Thread: A little HELP!!

Hybrid View

  1. #1


    Did you find this post helpful? Yes | No

    Default Re: A little HELP!!

    I have looked at the BOB4 from decade.net and it looks like their version only does white text on incoming video.

    http://www.decadenet.com/bob4/bob4.html

    I believe the STV chip was really designed for Menu setups on televisions etc, prior to digital sets, and does not to put color text overlays in incoming video, other chip maker versions also no colour, 1990-2000ish did the same, Maxim, Sanyo.

    With digital sets it is now incorporated in a graphics chip onboard.


    This is where you can change the character color, it will affect all characters using this routine, text and overlay.

    DISPLAYCHAR:

    WDATA = %0001010000000000 + STVCHAR

    ' 11 10 9 8 7654 3210
    ' WDATA = %0001 0 1 1 1 0000 0000 + STVCHAR

    ' bit 11 = character background 0 = disabled 1 = enabled

    ' bit 10 = red
    ' bit 09 = green
    ' bit 08 = blue

    ' 000 = black
    ' 001 = blue
    ' 010 = green
    ' 011 = cyan
    ' 100 = red
    ' 101 = magenta
    ' 110 = yellow
    ' 111 = white

  2. #2
    Join Date
    Mar 2011
    Location
    Los Angeles, California
    Posts
    322


    Did you find this post helpful? Yes | No

    Default Re: A little HELP!!

    Again my biggest thanks. I will play with it as time permits. Yes I had looked at the BOB4 sometime ago and it was only white from what I remember.
    Eagle Tree ( http://www.eagletreesystems.com/inde...product_id=136) does color text over video, however they would not share any information to customize their product for other purposes such as a sub. This is why I went back to the STV5730. I spent many hours and days searching for a chip to use with no success. Logically speaking, if you can add color text to a fixed color background then you had to generate the background color as well as the color text and "mix" them to produce video. RGB is kind of a strange animal as it can be RGB video and a separate sync or RGB with sync for each color (R-G-B). Maybe I was searching using the wrong search words and missed finding other chips?

  3. #3
    Join Date
    Mar 2011
    Location
    Los Angeles, California
    Posts
    322


    Did you find this post helpful? Yes | No

    Default Re: A little HELP!!

    Hi Aerostar!
    Somehow I screwed up my working file and now I have rows 1-9 as white squares while rows 10 and 11 are X's! I have done something stupid just not sure what after several days of trying!

    Code:
     '****************************************************************
    '*  Name    : NTSC -RPM-V2                                            *
    '*  Author  : Ed Cannady                                        *
    '*  Notice  : Copyright (c) 2017                                *
    '*          : All Rights Reserved                               *
    '*  Date    : 06-30-17                                          *
    '*  Version : 1.0                                               *
    '*  Notes   : VIDEO IDENT                                       *
    '*          : WITH GREAT HELP FROM AEROSTAR                     *
    '****************************************************************
    
    ' WORKS USES SYNC FOR SWITCHING BETWEEN MIXED AND FULL TEXT MODE
    ' GOING FROM VID IN TO TEXT AND BACK TO VID IN
     
    #CONFIG
    
        __config _HS_OSC & _WDT_ON & _MCLRE_ON & _LVP_OFF & _CP_OFF
        
    #ENDCONFIG
    
    '@ device PIC16F628A,HS_OSC,BOD_ON,MCLR_ON,PWRT_ON  'AEROSTAR SET UP
               
    define  OSC 20
       
    '---------------------------------------------------------------
    '16f628a  ED definitions
     
        TVSDA        VAR PORTB.4    '0     OUTPUT to pin 11 of stv chip 
        CS0     	 VAR PORTB.6    '0     OUTPUT to pin 13 of stv chip 
        TVSCL     	 VAR PORTB.5    '0     OUTPUT to pin 12 of stv chip 
        SYNCH0       VAR PORTB.7    '1     INPUT  to pin 7  of stv chip 
    '--------------------------------------------------------------- 
    
        ZOOMREG      CON %0000000011001100       ' 12 ZOOM REGISTER
        COLREG       CON %0000000011001101       ' 13 COLOUR REGISTER
        CONREG       CON %0000000011001110       ' 14 CONTROL REGISTER
        POSREG       CON %0000000011001111       ' 15 POSITION REGISTER 
        MODEREG      CON %0000000011010000       ' 16 MODE REGISTER
    
        
    	ICOUNT  	 VAR BYTE
    	BITCOUNTER 	 VAR BYTE
    	WDATA   	 VAR WORD
    	CHARCOUNTER	 VAR BYTE   
    	LINECOUNTER	 VAR BYTE 
    
    
        STVCHAR      VAR BYTE
        ASCCHAR      VAR BYTE
        CHARS        VAR BYTE
        CHARS2       VAR BYTE
        TEMP         VAR BYTE 
        TEMP1        VAR BYTE
        COUNTER      VAR BYTE
        PULSES       VAR BYTE
        CURRENTMODE0 VAR BYTE
        PRPM         VAR WORD
     
    
    '----------------------------------------------------------------     
    '    TOPLEFT         CON 0
    '    TOPMIDDLE       CON 5
    '    TOPRIGHT        CON 10
    '    BOTLEFT         CON 2560    '10*256
    '    BOTMIDDLE       CON 2565 '(10*256)+ 5
    '    BOTRIGHT        CON 2570 '(10*256)+ 10
    '---------------------------------------------------------------- 
    
        DATA @0,"NTSC.",$FF,"NO SYNCHS RECEIVED",$FF   
     
        TRISB = %10001111
    
    '----------------------------------------------------------------     
    
        PAUSE 500
        
        
    
    	GOSUB Init
    	
    	
        PAUSE 500
    	GOSUB Init
        
        CURRENTMODE0=255         ' FORCES TRYSYNCHS TO SET MODE FIRST TIME
    
    	
    Demo:
    
    CHARCOUNTER = 0
    	LINECOUNTER = 0
    '   CURRENTMODE0 = 0     '0 = MIXED 1 = TEXT
        gosub CLS
        GOSUB TRYSYNCHS      '==================================
    
    
        TEMP = 0
     
         
    
    LOOPER:
        GOSUB HEADER    ' LINE 3 RIGHT HAND SIDE TEST.
        GOSUB FILLSCREEN
        STOPHERE:
        GOTO STOPHERE
    '    PRPM = 6789
    '   IF CURRENTMODE0=0 THEN   ' ONLY WHEN INCOMING VIDEO SIGNAL
    '   GOSUB HEADER    ' LINE 3 RIGHT HAND SIDE TEST.
    '   ENDIF
    '   IF CURRENTMODE0=1 THEN
    '   GOSUB NOVIDEO   ' DISPLAYS NO VIDEO IF NO INCOMING SYNCHS
    '    ENDIF
    
        
        GOSUB TRYSYNCHS       '===========================
        
    
    '    PAUSE 500            'I/2 SECOND DELAY
    '    TOGGLE HEARTBEAT     ' LED
        GOTO LOOPER           'DO IT FOREVER
      
    
    DISPLAYCHAR:   
    
    WDATA = %0001011100000000 + STVCHAR
    
    '               11 10 9 8  7654 3210
    ' WDATA = %0001 0  1  1 1  0000 0000 + STVCHAR
    
    ' bit 11 = character background 0 = disabled 1 = enabled       
    
    ' bit 10 = red
    ' bit 09 = green
    ' bit 08 = blue
    
    ' 000 = black
    ' 001 = blue
    ' 010 = green
    ' 011 = cyan
    ' 100 = red
    ' 101 = magenta
    ' 110 = yellow
    ' 111 = white
        
    ' bit 7 = blink 1=enable 0=disable    
        
        GOSUB SEND 
         RETURN
    SETLINE:    
    	WDATA = LINECOUNTER*256 + CHARCOUNTER
        GOSUB Send              'position cursor   
        RETURN
    
    
    
    WasteTime:        ' WORKS WITH LESS NOPS
    
        pauseus 20    ' was 20 nops
    	RETURN
    
    StartCommunication:
    	TVSCL = 1 'HIGH TVSCL 
        GOSUB WasteTime
    
        CS0 = 0 'LOW CS0
    
        GOSUB WasteTime
    	TVSCL = 0 'LOW TVSCL
        GOSUB WasteTime
    	RETURN
    
    StopCommunication:
    	TVSCL = 1 'HIGH TVSCL
        GOSUB WasteTime
        CS0 = 1 'HIGH CS0
    
        GOSUB WasteTime
    	RETURN
    
    SendOne:
    	TVSDA = 1 'HIGH TVSDA
        GOSUB WasteTime
    	TVSCL = 0 'LOW  TVSCL
        GOSUB WasteTime
    	TVSCL = 1 'HIGH TVSCL
        GOSUB WasteTime
    	RETURN
    
    SendZero:
    	TVSDA = 0 'LOW TVSDA
        GOSUB WasteTime
    	TVSCL = 0 ' LOW TVSCL
        GOSUB WasteTime
    	TVSCL = 1 'HIGH TVSCL
        GOSUB WasteTime
    	TVSDA = 1 'HIGH TVSDA
        GOSUB WasteTime
    	RETURN
    
    OutByte:
    	FOR BITCOUNTER = 1 TO 16
        IF WDATA.15 = 1 THEN
        GOSUB SendOne
        ELSE
        GOSUB SendZero
        ENDIF
        WDATA = WDATA << 1
    	NEXT BITCOUNTER
    	RETURN
    
    Send:
    	GOSUB StartCommunication
    	GOSUB OutByte
    	GOSUB StopCommunication
    	RETURN
    
    '------------------------------------------------------------- 
    
    
    Init:     '    PAUSE 50 added - seems to improve reliability of init
    
    	TVSCL = 1 'HIGH TVSCL
        TVSDA = 1 'HIGH TVSDA
        CS0 = 1 'HIGH CS0
     
    	WDATA = $3000  '%110000 00000000
        GOSUB Send ' Init STV5730
        PAUSE 50
    	WDATA = $3000
        GOSUB Send
        PAUSE 50
    	WDATA = $00DB  '%00000000 11011011
        GOSUB Send
        PAUSE 50
    	WDATA = $1000  '%00010000 00000000
        GOSUB Send
        PAUSE 50
    '-------------------------------------------------------------  
    	WDATA = %0000000011001100
        GOSUB Send ' Init registers (point to register 12)
        PAUSE 50
    '-------------------------------------------------------------      
    	WDATA = %0001000000000000   'NORMAL
    '  WDATA = %0001000011110000   '4 PIXELS HORIZ AND VERT
        GOSUB Send ' Zoom    ADDRESS 12
        PAUSE 50
    '-------------------------------------------------------------      
    	WDATA = %0001001000000000
    
    '    	WDATA = %0001001000000100
             GOSUB Send ' Color    ADDRESS 13
             PAUSE 50
    '--------------------------------------------------------
    
        WDATA=  %0001101011010100
                'CHANGE BIT 0 TO 1 FOR TEXT ONLY
        GOSUB Send ' Control    ADDRESS 14
    '-------------------------------------------------------------    
    	WDATA = %0001001100001111
    ' was  WDATA = %0001 0111 1100 1111
        GOSUB Send ' Position    ADDRESS 15
    '------------------------------------------------------------- 
    
       
    	WDATA = %0001000100101110 '$183E BIT 11 CHANGED TO 0  M4 = 0
       
        GOSUB Send ' Mode    ADDRESS 16  %0001100000111110
    
    '------------------------------------------------------------- 
     
    	WDATA = $00C0   '%00000000 11000000
        GOSUB Send ' Set row attributes
         
    	FOR ICOUNT = 0 TO 10
    	 WDATA = %0001000010000001 '%00010000 11000100 was $10C4
      	' WDATA =%0001000010000111
         GOSUB Send
    	NEXT ICOUNT
       	RETURN
     
    CLS: 
        'character=$0B       'SPACE
         TEMP1=0   ' LINECOUNTER
         TEMP =0    'CHARCOUNTER
    loop2:
        
    	WDATA = 0  ' LINECOUNTER*256 + CHARCOUNTER   ADDRESS
        GOSUB Send
        
    
    LOOP3:    '                :CHARACTERS        
    	WDATA = %0001011100001011  '     1011 0BH SPACECHARACTER
        GOSUB Send
    	TEMP = TEMP + 1
    	IF TEMP >= 28 THEN
        TEMP = 0
        TEMP1=TEMP1 + 1
    	ENDIF
    	IF TEMP1 >= 11 THEN SCREENBLANK
     	
        GOTO LOOP3
        
    SCREENBLANK:
    	RETURN
    
    GETSTVCHAR:                  'CONVERT ASCII TO STV
        STVCHAR =$7F   ' FORCES CLOCK PICTURE IF ERROR         
        LOOKDOWN ASCCHAR,["0123456789- ABCDEFGHIJKLMNOPQRSTUVWXYZ:./'abcdefghijklmnopqrstuvwxyz"],STVCHAR
        RETURN 
    
    HEADER:
        LINECOUNTER=0      'SET START POSITION
        CHARCOUNTER=1      'SET CURSOR POSITION
        GOSUB SETLINE
        FOR CHARS2=0 TO 4
        READ CHARS2, ASCCHAR
        gosub GETSTVCHAR    'CONVERT ASCII TO STV
        GOSUB DISPLAYCHAR
        NEXT
            
        LINECOUNTER=10       'SET START POSITION
        CHARCOUNTER=1       'SET CURSOR POSITION
        GOSUB SETLINE
    
        ASCCHAR = "P"
        gosub GETSTVCHAR    'CONVERT ASCII TO STV
        GOSUB DISPLAYCHAR    
        ASCCHAR = "R"
        gosub GETSTVCHAR    'CONVERT ASCII TO STV
        GOSUB DISPLAYCHAR    
        ASCCHAR = "P"
        gosub GETSTVCHAR    'CONVERT ASCII TO STV
        GOSUB DISPLAYCHAR    
        ASCCHAR = "M"
        gosub GETSTVCHAR    'CONVERT ASCII TO STV
        GOSUB DISPLAYCHAR
        ASCCHAR = " "
        gosub GETSTVCHAR    'CONVERT ASCII TO STV
        GOSUB DISPLAYCHAR 
              
        STVCHAR = PRPM DIG 3       '****** DIG VALUES ONLY
        GOSUB DISPLAYCHAR           'NEEDS TO BE STVCHAR !!
        STVCHAR = PRPM DIG 2
        GOSUB DISPLAYCHAR   
        STVCHAR = PRPM DIG 1
        GOSUB DISPLAYCHAR    
        STVCHAR = PRPM DIG 0
        GOSUB DISPLAYCHAR  
    
        RETURN
        
    NOVIDEO:
        LINECOUNTER=5       'SET START POSITION
        CHARCOUNTER=4       'SET CURSOR POSITION
        GOSUB SETLINE
        FOR CHARS2=6 TO 23      ' FROM EEPROM DATA
        READ CHARS2, ASCCHAR
        gosub GETSTVCHAR    'CONVERT ASCII TO STV
        GOSUB DISPLAYCHAR
        NEXT
        RETURN
        
    TRYSYNCHS:
        
        PULSES=0
    
        COUNT SYNCH0,4,PULSES   '3MS SHOULD COUNT TO 2 OR 3
        IF PULSES > 0 THEN MIXED0
    FULL0:
    
        IF CURRENTMODE0=1 THEN RETURN
    
        WDATA=  %0000000011001110       'CONTROL REGISTER
        GOSUB SEND
        WDATA=  %0001101011010101
                'CHANGE BIT 0 TO 1 FOR TEXT ONLY       OTIGINAL
                
     '     WDATA=  %0001101111010100
                'CHANGE BIT 0 TO 1 FOR TEXT ONLY        
        GOSUB SEND
    
    STAYHERE02:
      
        CURRENTMODE0=1
            GOSUB CLS
    GOBACK0:
        RETURN
    
    
    MIXED0:
        IF CURRENTMODE0=0 THEN RETURN
        WDATA=  %0000000011001110       'CONTROL REGISTER
        GOSUB SEND
        WDATA=  %0001101011010100
        GOSUB SEND
    
    STAYHERE01:
    
        CURRENTMODE0=0
        GOSUB CLS
        RETURN
        
        '----------------------debug fills screen with X------------------
    
    FILLSCREEN: 
        'character=$0B       'SPACE
         TEMP1=0   ' LINECOUNTER
         TEMP =0    'CHARCOUNTER
    loop2a:
        
    	WDATA = 0  ' LINECOUNTER*256 + CHARCOUNTER   ADDRESS
        GOSUB Send
                                                 
    
    LOOP3a:    '                :CHARACTERS 100011       
    	WDATA = %0001011101100011  '     X CHARACTER
    '   WDATA = %0001011101110111
    '    if temp1 =0 then WDATA = %0001011101110111
        if temp1 =1 then WDATA = %0001000001100011
        if temp1 =2 then WDATA = %0001000101100011
        if temp1 =3 then WDATA = %0001001001100011
        if temp1 =4 then WDATA = %0001001101100011
        if temp1 =5 then WDATA = %0001010001100011
        if temp1 =6 then WDATA = %0001010101100011
        if temp1 =7 then WDATA = %0001011001100011
        if temp1 =8 then WDATA = %0001011101100011
        if temp1 >=9 then WDATA = %0001011100100011
        GOSUB Send
    	TEMP = TEMP + 1
    	IF TEMP >= 28 THEN
        TEMP = 0
        TEMP1=TEMP1 + 1
    	ENDIF
    	IF TEMP1 >= 11 THEN SCREENBLANKA
     	
        GOTO LOOP3A
        
    SCREENBLANKA:
    	RETURN
    Thanks, Ed

  4. #4


    Did you find this post helpful? Yes | No

    Default Re: A little HELP!!

    rows 1-9 as white squares while rows 10 and 11 are X's


    if temp1 =8 then WDATA = %0001011101100011 = white square
    if temp1 >=9 then WDATA = %0001011100100011 = X


    Also remember rows are 0-10 not 1 - 11

  5. #5
    Join Date
    Mar 2011
    Location
    Los Angeles, California
    Posts
    322


    Did you find this post helpful? Yes | No

    Default Re: A little HELP!!

    Thanks Aerostar,
    Just another brain cramp on my part. As long as the background is blue then color squares appear. With video, only white squares. I keep searching the internet for a chip that will produce color with a video input and not a generated background. I cannot believe no one has or makes such a chip!

    Best, Ed

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts