<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.mcselec.com/bavr/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.mcselec.com/bavr/index.php?action=history&amp;feed=atom&amp;title=TVOUT</id>
		<title>TVOUT - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.mcselec.com/bavr/index.php?action=history&amp;feed=atom&amp;title=TVOUT"/>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/index.php?title=TVOUT&amp;action=history"/>
		<updated>2026-06-03T00:17:45Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.18.6</generator>

	<entry>
		<id>http://wiki.mcselec.com/bavr/index.php?title=TVOUT&amp;diff=4590&amp;oldid=prev</id>
		<title>Admin: Created page with &quot;The TVOUT add on is an add on that allows you to show text in color on a TV using the SCART connector.  &amp;nbsp;  The add on is free for personal use but for commercial use you ...&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/index.php?title=TVOUT&amp;diff=4590&amp;oldid=prev"/>
				<updated>2013-08-24T08:58:52Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;The TVOUT add on is an add on that allows you to show text in color on a TV using the SCART connector.     The add on is free for personal use but for commercial use you ...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;The TVOUT add on is an add on that allows you to show text in color on a TV using the SCART connector.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
The add on is free for personal use but for commercial use you need to buy a&amp;amp;nbsp;[http://www.mcselec.com/index.php?page=shop.product_details&amp;amp;flypage=shop.flypage&amp;amp;product_id=261&amp;amp;category_id=6&amp;amp;option=com_phpshop&amp;amp;Itemid=1 license]&amp;amp;nbsp;from the author (Graham Carnell).&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[File:Tvout sample.png|tvout_sample]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;This is a photo of the TV display function working on a flat panel LCD TV set&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;br/&amp;gt;The actual display is perfectly straight, some distortion is seen here caused by the camera optics.&amp;lt;br/&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
The TV code is free for personal use but that support is not included.&lt;br /&gt;
&lt;br /&gt;
For commercial application you do need a license.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;br/&amp;gt;Company licence (unlimited copies for company use) now available for commercial use. Includes built &amp;amp; tested board, pre-programmed sample IC, TV generation software module including all pixel data which can be edited, plus full support from the developer by phone and e-mail.&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Times New Roman';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Times New Roman';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;TV Code Features&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;lt;br/&amp;gt;* Generates a 55 column color TV character display from an AVR MPU without any extra ICs&amp;lt;br/&amp;gt;* Connects via a standard SCART socket giving a sharp RGB output signal (not composite video)&amp;lt;br/&amp;gt;* Flexible RAM use - display RAM can be as large or small as needed&amp;lt;br/&amp;gt;* Completely interrupt driven software - transparent to user&amp;lt;br/&amp;gt;* Character pixel data can be edited or replaced by the user to allow custom characters&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;lt;br/&amp;gt;The TV software can be customized to special user requirements (e.g. differing character sizes) but is time critical machine code.&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Times New Roman';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-family: 'Times New Roman';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;ICs supported&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;lt;br/&amp;gt;This code is for the ATMega 48/88/168/328 ICs. A PCB is available for testing and / or production. The code can be ported to other ATMega AVR ICs which have 512 bytes or more RAM, and a clock of 16-20 MHz.&amp;amp;nbsp;&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; font-weight: bold;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;BASCOM versions&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;lt;br/&amp;gt;When using the company licence (which allows as many copies as you need) you will also require a registered copy of BASCOM to allow sufficient Flash program memory for most projects, as the binary include file for the TV output code is 2.5K, leaving only 1.5K of available space for your program out of the 4K maximum space allowed in the demo version of BASCOM.&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;Orders&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The software and hardware is made by Eximia Projects.&amp;amp;nbsp;&amp;lt;br/&amp;gt;Your order will be shipped from the UK, directly from the manufacturer.&amp;lt;br/&amp;gt;You will receive a binary include file.&amp;amp;nbsp;&amp;lt;br/&amp;gt;You will also receive a free development board PCB. This board is used in production and does not has an ISP connector. But it has a tested processor and all other components. All you need is to connect 5V and a TV and it will show a demo.&amp;amp;nbsp;&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;lt;br/&amp;gt;Support is included in the cost of the development package. You can be assured that this support will smooth your way to producing a product with a TV output - you will not be left to struggle on your own.&amp;lt;br/&amp;gt;Before purchasing the package you might want to E-mail to check if the TV software will be compatible with your planned product, for example if there are many interrupts running or a heavy CPU load.&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;lt;br/&amp;gt;If you want to use a different Atmel AT Mega IC to the one the software is designed for (AT Mega 48 / 88 / 168 / 328) the first step to take is to contact Eximia Projects and let me know what your design requires. I can then&amp;amp;nbsp; let you know what extra steps you will need to take (if any) to get the TV software to work with any specific hardware. You can contact Graham Carnell at gmcarnell@gmail.com&lt;br /&gt;
&lt;br /&gt;
A PCB you can buy from Agricom&amp;amp;nbsp;:&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[http://agricom.gr/eshop/product_info.php?cPath=26_38&amp;amp;products_id=986&amp;amp;language=en http://agricom.gr/eshop/product_info.php?cPath=26_38&amp;amp;amp;products_id=986&amp;amp;amp;language=en]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''How to use BASCOM with the TV software module'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The TV display is very simple to use from a programming point of view.&lt;br /&gt;
&lt;br /&gt;
As it runs entirely within the ATMega chip, it uses internal RAM to&amp;amp;nbsp;hold the display data. This means that all you have to do to write to&amp;amp;nbsp;the display is write bytes to the RAM which is allocated to the TV&amp;amp;nbsp;screen area.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
To start with you need to include the following 7 lines of code in&lt;br /&gt;
&lt;br /&gt;
your BASCOM program:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
On Oc2a Tvinterrupt Nosave&lt;br /&gt;
&lt;br /&gt;
Goto Main&lt;br /&gt;
&lt;br /&gt;
!.org $100&lt;br /&gt;
&lt;br /&gt;
$inc Tvinterrupt , Nosize , &amp;quot;tvinc.bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Return&lt;br /&gt;
&lt;br /&gt;
Main:&lt;br /&gt;
&lt;br /&gt;
$include &amp;quot;tv.inc.bas&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
You don't need to worry about these statements, you can just cut &amp;amp;&amp;amp;nbsp;paste this into your program and it will work.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
After including these lines of code you can make the TV display work&amp;amp;nbsp;simply by moving bytes to the screen area in the internal RAM.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
The amount of RAM used by the display is very flexible. It can be any&amp;amp;nbsp;number of bytes up to the maximum possible which is 12 lines of around&amp;amp;nbsp;56 bytes per line, maximum 672 bytes.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
The minimum number of bytes which can be used is just one! This byte&amp;amp;nbsp;would be the &amp;quot;End of Screen&amp;quot; code which has to be the very last byte&amp;amp;nbsp;of any screen. In fact, if the interrupt is disabled, then no RAM is&amp;amp;nbsp;needed at all, and you will also have full CPU usage until you enable&amp;amp;nbsp;the interrupt again. To disable the TV software all you need to do is:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; DISABLE OC2A&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
this will halt the TV code and allow all RAM to be used by your&amp;amp;nbsp;application, then&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ENABLE OC2A&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
to start the TV code again. You will need to make sure the screen RAM&amp;amp;nbsp;area contains sensible display data before enabling the interrupts.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
You can use all of the on-chip RAM to do calculations and for&amp;amp;nbsp;temporary storage, you only need to free enough RAM as you need for&amp;amp;nbsp;the screen while it is actually displaying.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''More Info'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; color: rgb(0, 0, 255); text-decoration: underline;&amp;quot;&amp;gt;[http://sites.google.com/site/bascomtvhelp/ http://sites.google.com/site/bascomtvhelp/]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; font-style: italic; font-weight: bold;&amp;quot;&amp;gt;PDF with detailed information can be downloaded from&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; font-style: italic; font-weight: bold; color: rgb(0, 0, 255); text-decoration: underline;&amp;quot;&amp;gt;[http://www.mcselec.com/images/stories/shop/tvout/BascomTV.pdf here]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; font-weight: bold;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bascom TV FAQs'''&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;Q: How can I add TV output to my BASCOM application?&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;lt;br/&amp;gt;A: If you are using an ATMega48/88/168/328 everything is already set up for you to use. If you want to use another ATMega IC, you need to refer to the technical information and make sure that the IC you are using has enough hardware resources (CPU speed, SPI port, RAM etc). You can't just add TV output to any AVR chip - ATTiny ICs are not supported as the TV code uses the hardware multiply instruction, and only ATMega ICs have enough RAM.&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;lt;br/&amp;gt;Q: What about low power applications?&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;lt;br/&amp;gt;A: Whilst TV output is enabled, power consumption will be around the maximum given in the data sheet for the IC at the speed and voltage used. TV output should be disabled when not needed, then the IC can benefit from all the low power and sleep modes available. This would be relevant to any device which is normally in low power mode, but can have a TV attached to display data only when required.&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;lt;br/&amp;gt;Q: What about CPU intensive applications?&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;lt;br/&amp;gt;A: As explained in the previous Q/A about low power, the TV output can be switched off (by disabling the relevant interrupt) so the full CPU power is available, however most applications can easily run in the spare time (approx 20%) of the CPU when running at 16 or 20 MHz.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Sample hardware:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Tvout hw.png|tvout_hw]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; font-weight: bold;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; font-weight: bold;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; font-weight: bold;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; font-weight: bold;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; font-weight: bold;&amp;quot;&amp;gt;TECHNICAL INFORMATION&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; font-weight: bold;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; font-weight: bold;&amp;quot;&amp;gt;IMPORTANT&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;You do not have to read this information - BASCOM and the TV code will automatically set up the hardware as required. If you use the supplied PCB this ensures the TV output will work without any knowledge of the module.&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;These technical details are for reference.&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; color: rgb(255, 229, 153);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;The TV code has various fixed hardware requirements as follows.&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; color: rgb(255, 229, 153);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; font-weight: bold;&amp;quot;&amp;gt;Clock:&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; color: rgb(255, 229, 153);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;The clock MUST use an external crystal to produce a stable screen.&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;Normally 20 MHz but 16 MHz can be used (20% less columns).&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; font-weight: bold;&amp;quot;&amp;gt;SPI port:&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; color: rgb(255, 229, 153);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;The SPI hardware is used by the TV code and cannot be used for other purposes while the TV code is running.&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; font-weight: bold; color: rgb(255, 229, 153);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; font-weight: bold;&amp;quot;&amp;gt;RAM use:&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; color: rgb(255, 229, 153);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;* Amount of RAM used can be very small - EndScreen code marks end of RAM used&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;* Lines are variable length so only visible characters [excepting space] use RAM&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; font-weight: bold;&amp;quot;&amp;gt;RAM Addresses:&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;* The address of RAM used by the TV code is fixed at $100 (start of RAM in ATMega 48/88/168/328 ICs)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;* The first six bytes of RAM are used to store variables for the interrupt code&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;* The first byte of RAM used for the screen area is at address $106&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; font-weight: bold;&amp;quot;&amp;gt;Maximum RAM use:&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;* For a full screen of 55 characters by 12 lines, RAM used = 660 bytes&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;* In an ATMega48, used screen RAM will need to be kept below around 450 bytes for use with BASCOM&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; color: rgb(255, 229, 153);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; font-weight: bold;&amp;quot;&amp;gt;GPIO register:&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; color: rgb(255, 229, 153);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;In ATMega 48/88/168/328 ICs there is a &amp;quot;GPIO&amp;quot; register at $1E. Bit 0 of this is used by the code.&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;The other 7 bits are unused and can be changed by the user software.&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; color: rgb(255, 229, 153);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; font-weight: bold;&amp;quot;&amp;gt;Pixel data:&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; color: rgb(255, 229, 153);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;* The pixel data used for the characters shown on screen starts at a fixed Flash ROM word address&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;* All pixel data can be edited or replaced by the user to allow custom characters&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; color: rgb(255, 229, 153);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; font-weight: bold;&amp;quot;&amp;gt;Timers:&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; color: rgb(255, 229, 153);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;* Timer 2, an 8 bit timer, is reserved for use by this code&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;* Timer 2 causes a 64µS interrupt and can be used for a system &amp;quot;tick&amp;quot;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;* Timers 0 and 1 are unused&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; color: rgb(255, 229, 153);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; font-weight: bold;&amp;quot;&amp;gt;Reset and interrupt vectors:&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; color: rgb(255, 229, 153);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;* The interrupt vectors for Timer 2 compare match A and B are both used&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;* Timer/Counter2 Compare Match B vector points to the TV interrupt code&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; font-weight: bold; color: rgb(255, 229, 153);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; font-weight: bold;&amp;quot;&amp;gt;Control characters:&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; color: rgb(255, 229, 153);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;* End of line code = EndLineCode = $0D&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;* End of screen code = EndScreenCode = $0C&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;* Set colour to yellow chars on a red background = SetYellowCode = $10&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;* Set colour to green chars on a black background =&amp;amp;nbsp; SetGreenCode = $11&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;* Set colour to cyan chars on a blue background = SetBlueCode = $12&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;* Set colour to white chars on a magenta background = SetWhiteCode = $16&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; color: rgb(255, 229, 153);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; font-weight: bold;&amp;quot;&amp;gt;All of Port B is reserved:&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; color: rgb(255, 229, 153);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;* PB0 Sync&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;* PB1 Blue&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;* PB2 Red&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;* PB3 Green&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;* PB4 &amp;amp; PB5 [2] allocated SPI pins&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;* PB6 &amp;amp; PB7 [2] Used for XTAL&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; color: rgb(255, 229, 153);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;No pins on Ports C or D are used&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; font-weight: bold; color: rgb(255, 229, 153);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; font-weight: bold;&amp;quot;&amp;gt;Interrupt Code:&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; color: rgb(255, 229, 153);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;* Triggered by Timer 2 interrupt&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;* Runs every 64 uS&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;* Consumes up to 80% of CPU time [worst case]&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; color: rgb(255, 229, 153);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; font-weight: bold;&amp;quot;&amp;gt;Fuses:&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; color: rgb(255, 229, 153);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;Only the low fuse needs to be changed:&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; color: rgb(255, 229, 153);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;CKDIV8 must be high (unprogrammed) so clock will be at full freq&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; color: rgb(255, 229, 153);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;1 CKDIV8 Divide clock by 8 (default 0 = programmed)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;1 CKOUT Clock output (default 1 = unprogrammed) i.e. clock output off&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;1 SUT1 Select start-up time (default 1 = unprogrammed)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;1 SUT2 Select start-up time (default 0 = programmed)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; color: rgb(255, 229, 153);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;SUT1,2 = 11 selects Crystal Oscillator, slowly rising power (in case of PSU problems)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; color: rgb(255, 229, 153);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;0 CKSEL3 0&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;1 CKSEL2 0&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;1 CKSEL1 1&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;1 CKSEL0 0&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; color: rgb(255, 229, 153);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;0111 in CKSEL 3210 selects full swing oscillator, slowly rising power&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman'; color: rgb(255, 229, 153);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 12pt; font-family: 'Times New Roman';&amp;quot;&amp;gt;So lfuse = $F7&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 11pt; font-family: Calibri;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Example&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
' Serial input demo.&lt;br /&gt;
' NOTES:&lt;br /&gt;
' Uses an array of bytes for Screen RAM&lt;br /&gt;
' Uses Tilde char &amp;quot;~&amp;quot; = $7E for new screen&lt;br /&gt;
 &lt;br /&gt;
$crystal = 20000000&lt;br /&gt;
$BAUD = 19200&lt;br /&gt;
 &lt;br /&gt;
' Reserve screen variable area at start of RAM&lt;br /&gt;
' Assembler interrupt code has two byte variables IN BETWEEN two word variables&lt;br /&gt;
Dim ScreenAddr1 as word at $100&lt;br /&gt;
Dim RAMVar1 as byte at $102&lt;br /&gt;
Dim RAMVar2 as byte at $103&lt;br /&gt;
Dim ScreenAddr2 as word at $104&lt;br /&gt;
 &lt;br /&gt;
' Reserve Screen RAM - can reserve as much or as little as required&lt;br /&gt;
Dim ScreenRAM(600) as byte at $106&lt;br /&gt;
Dim Addr As Word&lt;br /&gt;
Dim CharIn as Byte&lt;br /&gt;
 &lt;br /&gt;
Const NewScreen = $7E&lt;br /&gt;
 &lt;br /&gt;
'Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0&lt;br /&gt;
'Config is not needed unless settings differ from default&lt;br /&gt;
 &lt;br /&gt;
On Oc2a Tvinterrupt Nosave&lt;br /&gt;
Goto Main&lt;br /&gt;
!.org $100&lt;br /&gt;
$inc Tvinterrupt , Nosize , &amp;quot;tvinc.bin&amp;quot;&lt;br /&gt;
Return&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Main:&lt;br /&gt;
 ' Set up clock division - only need to do this if DIV8 fuse not set, as default fuse setting is div. by 8&lt;br /&gt;
 Config Clockdiv = 1&lt;br /&gt;
 ' CLKPR=$80&lt;br /&gt;
 ' CLKPR=0&lt;br /&gt;
 ' Setup timer 2&lt;br /&gt;
 TCCR2B=$02&lt;br /&gt;
 OCR2A=158&lt;br /&gt;
 OCR2B=160&lt;br /&gt;
 TIMSK2=&amp;amp;b00000110&lt;br /&gt;
 ' Now set up sleep mode [SMCR = Sleep Mode Control Register] - must be enabled or TV code cannot work accurately&lt;br /&gt;
 SMCR=1&lt;br /&gt;
 ' Set PORTB to all outputs for video signal&lt;br /&gt;
 DDRB=$FF&lt;br /&gt;
 ' Enable &amp;amp; config SPI&lt;br /&gt;
 SPCR=$54&lt;br /&gt;
 SPSR=1&lt;br /&gt;
 ' Init RAM variables for interrupt code&lt;br /&gt;
 RAMVar1=0&lt;br /&gt;
 RAMVar2=0&lt;br /&gt;
 ScreenAddr1=$106&lt;br /&gt;
 ScreenAddr2=$106&lt;br /&gt;
 &lt;br /&gt;
 ENABLE OC2A&lt;br /&gt;
 ' ENABLE OC2B&lt;br /&gt;
 ENABLE INTERRUPTS&lt;br /&gt;
 ' Now continue with user code&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Addr=1 ' Set Addr to address of first screen location&lt;br /&gt;
 &lt;br /&gt;
 Do&lt;br /&gt;
 CharIn=INKEY()&lt;br /&gt;
 If CharIn&amp;gt;0 then&lt;br /&gt;
 ScreenRAM(Addr)=CharIn&lt;br /&gt;
 Incr Addr&lt;br /&gt;
 ScreenRAM(Addr)=13 ' Make sure there is always an end of screen character&lt;br /&gt;
 End If&lt;br /&gt;
 If CharIn=NewScreen then&lt;br /&gt;
 Addr=1&lt;br /&gt;
 ScreenRAM(Addr)=13&lt;br /&gt;
 End If&lt;br /&gt;
 If Addr&amp;gt;599 then Addr=599 ' Make sure cannot write past end of screen Ram&lt;br /&gt;
 Loop&lt;br /&gt;
 &lt;br /&gt;
 ' Decimal {012} = $0C = END OF LINE MARKER&lt;br /&gt;
 ' Decimal {013} = $0D = END OF SCREEN MARKER&lt;br /&gt;
 &lt;br /&gt;
 ' Decimal {017} = $11 = Green on black&lt;br /&gt;
 ' Decimal {019} = $13 = Cyan on blue&lt;br /&gt;
 ' Decimal {020} = $14 = Yellow on red&lt;br /&gt;
 ' Decimal {022} = $16 = White on magenta&lt;br /&gt;
 &lt;br /&gt;
End&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:ASM Libraries and Add-Ons]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>