README for Serial video display
Preliminary Release 0.3, 30-Jan-2001
$Id: README,v 1.7 2001/01/31 07:25:31 eric Exp $
Copyright 2001 Eric Smith <eric at brouhaha.com>
SERVID is a program for the Ubicom (formerly Scenix) SX microcontroller to act as a serial video display terminal (output only).
Home page:
http://www.brouhaha.com/~eric/ubicom/servid/
Features:
This is a preliminary release. As such, it basically works, but there are some known bugs (and probably a lot of unknown ones):
Supported control codes:
$00 Null $07 Bell $08 Backspace $0A Line Feed $0C Form Feed - clear display and home cursor $0D Carriage Return $1B Escape - introduce escape sequence $7F Delete - ignored All unrecognized control characters are ignored.
Supported escape sequences:
ESC A - Cursor Up - wraparound rather than scroll ESC B - Cursor Down - wraparound rather than scroll ESC C - Cursor Left ESC D - Cursor Right ESC H - Cursor Home ESC I - Reverse Line Feed - may scroll ESC J - Erase to End of Screen ESC K - Erase to End of Line ESC Y <col> <row> - Direct cursor addressing, col and row offset by 32
Customization:
SERVID is designed such that user application code may be added to (or replace) the serial character processing. In this release of the code there are 919 words of program memory free for a user application, and 21 bytes of RAM free. The video generation is entirely interrupt driven, so the user application code can run at non-interrupt time without any critical timing constraints.
Software Requirements:
As written, SERVID will only assemble with the GPASM assembler, version 0.8.14 or newer. GPASM is Free Software:http://gpasm.sourceforge.net/
Hardware Requirements:
SERVID requires a processor clock of 42.954545 MHz (12 times the NTSC color burst frequency). Note that future versions of SERVID may change to a clock frequency of 57.272727 MHz (16 times the NTSC color burst frequency). Digikey offers suitable Epson oscillators which they program to customer spec; a suitable 8-pin DIP footprint (4 actual pin) part is part number SG-8002DC-PHB-ND.SERVID uses an 8-bit D/A converter on port B to generate the video output. A simple R-2R resistor ladder will suffice.
The serial input should be fed into port RA0. If a conventional EIA-232 receiver (MC1489, MAX232, or the like) is used, the variable ft_ser_noninv near the top of the servid.asm source file should be set to 0. For a non-inverting serial input (such as the crude resistor-only method, see the file SCHEMATIC), ft_ser_noninv should be set to 1.
References
_A Technical Introduction to Digital Video_ by Charles A. Poynton, published by John Wiley & Sons, 1996ANSI/SMPTE 170M-1994 "SMPTE Standard for Television - Composite Analog Video Signal - NTSC for Studio Applications"
ITU-R Reccomendation BT.470-6 "Conventional Television Systems"
Acknowledgements
Many thanks to Richard Ottosen for designing and building the hardware, helping debug the code, and providing numerous helpful suggestions. He also adapted my delay routines to the SX. Several years ago he wrote the original test pattern generator for the PIC16C5x, which inspired my PIC-PONG game, and now this program.http://www.rhoent.com/Thanks to Richard Ottosen and Loren Blaney for supplying a better character generator font than the one I started to throw together.
Thanks to James Newton for posting the challenge:
http://www.sxlist.com/Thanks to Ubicom for making fast yet inexpensive microcontrollers:
http://www.ubicom.com/Thanks to Loren Blaney for writing SXPROG, which allows the Parallax SX-Key programmer (Rev. C only, unfortunately) to be controlled from environments other than M$ Windows:
http://www.brouhaha.com/~eric/scenix/sxprog/
License
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation. Note that permission is not granted to redistribute this program under the terms of any other version of the General Public License.This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
NOTE: it is sometimes claimed that compliance with the GPL is awkward for commercial interests. Licenses for non-GPL use of this program may be negotiated with the author.
All parts but the microcontroller are available from Digikey. Digikey part numbers are given except for the microcontroller, for which a Mouser part number is given.
Vendor Distributor Q. Vendor Part Part Number Description -- ------ --------- ------------- ---------------------------------------- 1 Ubicom SX18AC/DP 619-SX18AC/DP microcontroller, 18-pin plastic DIP 1 Epson SG-8002DC-PHB preprogrammed oscillator, 42.9545454 MHz 1 CTS 761-3-R220 8 * 220 ohm DIP resistor network 2 CTS 770-103-R120 5 * 120 ohm SIP res. network, isolated 1 15 ohm 1/8 watt resistor 1 33K ohm 1/8 watt resistor 1 180K ohm 1/8 watt resistor 1 0.1 uF ceramic capacitor 1 BNC or RCA jack for video output 1 DB25 connector for serial input 1 5V regulated DC power supply
Schematic for SERVID $Id: SCHEMATIC,v 1.4 2001/01/04 23:52:55 eric Exp $ Copyright 2001 Richard Ottosen +5V | +---------------+ | | 0.1 uF | | | 1.25V p-p | ---------------- Video into V | | 75 ohms | Ubicom / | | SX18AC | 7 |--- 220 ohm ---+--------+--- 15 ohm ---> | | | | | +5V --| MCLR | | 120 ohm 120 ohm +---> | | | | | | ---------- | | 6 |--- 220 ohm ---+ | | |42.954545 | | | | | V V | MHz |------| OSC1 | | 120 ohm |Oscillator| | | | | ---------- NC--| OSC2 | 5 |--- 220 ohm ---+ | | | | | | | 120 ohm +------| RTCC | | | | | / 4 |--- 220 ohm ---+ V | | | | | Port B < | 120 ohm | | | | NC--| PA3 \ 3 |--- 220 ohm ---+ | | | | NC--| PA2 | | 120 ohm | | | | +------| PA1 | 2 |--- 220 ohm ---+ | | | | | -- | | | 120 ohm piezo [] ))) | | | | -- | | 1 |--- 220 ohm ---+ | | | | | | | | | 120 ohm V | | | | EIA-232 | | 0 |--- 220 ohm ---+ Input | \ | | <-----+--- 33K ---| PA0 | 120 ohm | | | | 180K ---------------- | | | 120 ohm <-----+ | | | | | V V V
For the GPASM assembler, version 0.8.14 or newer: http://gpasm.sourceforge.net/
TODO for Serial video display $Id: TODO,v 1.3 2001/01/04 23:05:01 eric Exp $ Copyright 2001 Eric Smith <eric at brouhaha.com> * oscillator 16x vs. 12x (conditional?) * make scroll up conditional * port B DAC vs. 3 port A bits (sync, blank, video) (conditional) * lazy scroll - when a printable character is written to the last column of the last row, defer scrolling until another printable character is written * interlace * use more efficient packing for control and escape character tables * improve 625/50 mode (make pixels 4 scan lines tall) * write more documentation - software theory of operation * SX48/52 version - more RAM allows for more than 4*20 characters
Peter Verkaik's port of the MASM SERVID code to the SXKey
Comments:
Interested: