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