This is a multi-part message in MIME format. ------=_NextPart_000_000E_01C46674.86110B80 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Hi Bob and all, The original project was and still is a commercial one but the file attached is the meat of it, It would be hard to release more in the public domain without jeopardising some ongoing projects but feel free to contact me personally if you need more. The basic idea is: Pick a byte of data for a character ( I think from memory the font is Arial for the test) and place it in the serial port to be clocked out, leaves you time to get the next line of the next character, like I said it used some tricks and I was well chuffed with myself at the time, I wrote this back in early 1999 when I was first getting into PIC's. From memory (1999 is a loooong time ago for me) the results on a hi def video monitor where very good, you can change the number of characters across a line by changing the serial clock divider. Interested in feedback good or bad. regards Lee McLaren -----Original Message----- From: pic microcontroller discussion list [mailto:PICLIST@MITVMA.MIT.EDU]On Behalf Of Bob Axtell Sent: Saturday, 10 July 2004 11:22 AM To: PICLIST@MITVMA.MIT.EDU Subject: Re: [EE:] Video overlay question Lee, I'd like to see that and many others would as well. 18Fs have lots of RAM so that is no longer an issue. Dig it out and post it. Schematic too if possible. --Bob Lee McLaren wrote: > Hi Bob, > > If you only need single colour charaters you can get 64 in one line across > using from memory a 16c73 running in spec. They are a bit hard to read with > the res of the tv monitor but the quality of the output is spot on. > Lots of tricks involved but worked very well, long time ago I wrote a time > stamp to overlay on video, not sure if I got overlay sync to work but it was > creating its own sync etc. > > Let me know if intrested and I will try to dig it up. > > regards > > > Lee McLaren. > -- http://www.piclist.com hint: To leave the PICList mailto:piclist-unsubscribe-request@mitvma.mit.edu ------=_NextPart_000_000E_01C46674.86110B80 Content-Type: application/octet-stream; name="char.asm" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="char.asm" ;************************************************************************ ;* Charaters * ;************************************************************************ Charater addwf V_VidRow,W ;Offset for row addwf PCL,F Char_S retlw b'00000000' ;Space retlw b'00000000' retlw b'00000000' retlw b'00000000' retlw b'00000000' retlw b'00000000' retlw b'00000000' retlw b'00000000' retlw b'00000000' retlw b'00000000' retlw b'00000000' retlw b'00000000' Char_0 retlw b'00111000' ;number 0 retlw b'01000100' retlw b'10000010' retlw b'10000010' retlw b'10000010' retlw b'10000010' retlw b'10000010' retlw b'10000010' retlw b'10000010' retlw b'10000010' retlw b'01000100' retlw b'00111000' Char_1 retlw b'00010000' ;number 1 retlw b'01110000' retlw b'11110000' retlw b'00010000' retlw b'00010000' retlw b'00010000' retlw b'00010000' retlw b'00010000' retlw b'00010000' retlw b'00010000' retlw b'00010000' retlw b'11111110' Char_2 retlw b'00111000' ;number 2 retlw b'01000100' retlw b'10000010' retlw b'00000010' retlw b'00000100' retlw b'00001000' retlw b'00010000' retlw b'00100000' retlw b'01000000' retlw b'10000010' retlw b'10000010' retlw b'11111110' Char_3 retlw b'01111000' ;number 3 retlw b'10000100' retlw b'00000010' retlw b'00000010' retlw b'00000100' retlw b'00011000' retlw b'00000100' retlw b'00000010' retlw b'00000010' retlw b'00000010' retlw b'10000100' retlw b'01111000' Char_4 retlw b'00000100' ;number 4 retlw b'00001100' retlw b'00001100' retlw b'00010100' retlw b'00100100' retlw b'00100100' retlw b'01000100' retlw b'10000100' retlw b'11111110' retlw b'00000100' retlw b'00000100' retlw b'00011110' Char_5 retlw b'11111100' ;number 5 retlw b'10000000' retlw b'10000000' retlw b'10000000' retlw b'11111000' retlw b'10000100' retlw b'00000010' retlw b'00000010' retlw b'00000010' retlw b'00000010' retlw b'10000100' retlw b'01111000' Char_6 retlw b'00001110' ;number 6 retlw b'00110000' retlw b'01000000' retlw b'01000000' retlw b'10000000' retlw b'10111000' retlw b'11000100' retlw b'10000010' retlw b'10000010' retlw b'10000010' retlw b'01000100' retlw b'00111000' Char_7 retlw b'11111110' ;number 7 retlw b'10000010' retlw b'10000010' retlw b'00000100' retlw b'00000100' retlw b'00001000' retlw b'00001000' retlw b'00010000' retlw b'00010000' retlw b'00100000' retlw b'00100000' retlw b'00100000' Char_8 retlw b'00111000' ;number 8 retlw b'01000100' retlw b'10000010' retlw b'10000010' retlw b'01000100' retlw b'00111000' retlw b'01000100' retlw b'10000010' retlw b'10000010' retlw b'10000010' retlw b'01000100' retlw b'00111000' Char_9 retlw b'00111000' ;number 9 retlw b'01000100' retlw b'10000010' retlw b'10000010' retlw b'10000010' retlw b'01000110' retlw b'00111010' retlw b'00000010' retlw b'00000100' retlw b'00000100' retlw b'00011000' retlw b'11100000' Char_V retlw b'00000000' ;UnderLine retlw b'00000000' retlw b'11111110' retlw b'11111110' retlw b'00000000' retlw b'00000000' retlw b'11111110' retlw b'11111110' retlw b'00000000' retlw b'00000000' retlw b'11111110' retlw b'11111110' ;************************************************************************ ;* Outputs the offsets as bit patterns * ;* * ;************************************************************************ VidDisplay bcf STATUS,RP0 ;Page 0 to start movlw .3 movwf PCLATH btfss F_VidDisplay ;Even though its time goto VidDisplayEnd ;Dont show anything nop nop nop movlw V_VOffsets movwf V_VidStart clrf V_VidRow ;Start on the first row each time called call VidSendit btfss F_VidLine ;Only display underline if set goto VidDisplayEnd movlw V_LOffsets ;Start of the underline offsets movwf V_VidStart movlw .8 movwf V_VidRow nop ;Padding to stop shake nop nop nop nop nop nop nop nop nop call VidSendit VidDisplayEnd bcf STATUS,RP0 ;Make sure that were in page 0 return VidSendit VidDisplayL btfss INTCON,T0IF ;Wait here until the exact moment goto VidDisplayL ; to display the piccies VidDisplayR movf V_VidStart,W ;Ready to read offsets movwf FSR ;Start of charater line movf V_HorzOffset,W movwf VW_HorzOffset VidDisplayRL btfsc SyncH goto VidDisplayRL ; bsf PhaseRef ;Output for phase lockup ; nop VidDisplayRH btfss SyncH ;Now wait for it to go high again goto VidDisplayRH ; bcf PhaseRef VidDisplayOS decfsz VW_HorzOffset,F ;Count down the working register goto VidDisplayOS ; and move it over a little movf INDF,W call Charater movwf SSPBUF incf FSR,F movf INDF,W call Charater movwf SSPBUF dnop ;Space between pairs dnop ;Space between pairs incf FSR,F movf INDF,W call Charater movwf SSPBUF incf FSR,F movf INDF,W call Charater movwf SSPBUF dnop ;Space between pairs dnop ;Space between pairs incf FSR,F movf INDF,W call Charater movwf SSPBUF incf FSR,F movf INDF,W call Charater movwf SSPBUF dnop ;Space between pairs dnop dnop dnop ;Space between pairs incf FSR,F movf INDF,W call Charater movwf SSPBUF incf FSR,F movf INDF,W call Charater movwf SSPBUF dnop ;Space between pairs dnop ;Space between pairs incf FSR,F movf INDF,W call Charater movwf SSPBUF incf FSR,F movf INDF,W call Charater movwf SSPBUF dnop ;Space between pairs dnop ;Space between pairs incf FSR,F movf INDF,W call Charater movwf SSPBUF incf FSR,F movf INDF,W call Charater movwf SSPBUF VidDisplayFin incf V_VidRow,F ;Next row movlw .12 xorwf V_VidRow,W btfss STATUS,Z ;See if we have done the last row goto VidDisplayR ;Next row return ------=_NextPart_000_000E_01C46674.86110B80--