by Gary McDonald


Next Disk >>







Print Power For Your 1029 Printer


* 100% machine code

* Works with BASIC or Assembler/Editor

* Prints any 8-bit font stored in the computer, even your own designs

* Alter the spacing between characters

* Multiple fonts on the same line if required

* Ideal for program listings (but much more too) - inverse, graphics and control characters instantly available

* Includes Graphic 8 screen dump



(c) 1988 G.McDonald and Page 6 Software

10 PRINT is a machine code program which enables any character from the standard Atari character set, including control, graphic and inverse characters, to be printed on the Atari 1029 printer. In addition any redefined character set which can be used with your Atari computer may be printed on the 1029.

10 PRINT can handle program listings in several formats, print text from within BASIC or other programs and print out word processing or other text documents using several different fonts. 10 PRINT also includes a Graphics 8 screen dump utility that may be used with your own programs.



The Atari 1029 uses a print head matrix of 7 x 5 which means that characters are normally printed 7 dots high and 5 dots wide as opposed to most other printers which use a 9 x 8 or 8 x 8 matrix. The lack of that 8th or 9th "dot" is what makes the basic 1029 incapable of printing "descenders" and restricts its use with many programs. 10 PRINT will expand your 1029 by permitting many variations within the basic 7 x 5 matrix but will also, more importantly, allow the 1029 to print characters a full 8 dots high by 8 wide. It will also allow very narrow fonts of perhaps only 4 dots wide to be used thus increasing the versatility of the printer. Whilst 10 PRINT will not let you use commercial programs such as PRINT SHOP which require their own special routines it will allow you to use your 1029 printer in many more ways than you thought possible.

10 PRINT has several uses. You may print program listings, print to your 1029 from within a program you have written, format text that you have prepared with a word processor or use the screen dump. Each of these will be explained later but for your reference the programs that make up 10 PRINT are as follows. Certain files marked are not included in the cassette version.

AUTORUN.SYS - the 10 PRINT utility itself
HANDLER.OBJ* - the 10 PRINT utility in a form which may be customised as explained in the advanced section of the manual

TENPRINT.BAS - the 10 PRINT utilities package for printing documents or customising your version of 10 PRINT
G8DUMP.LST - a Graphics 8 screen dump to use in your own programs
DUMPTEST.BAS* - a sample program to test the Screen Dump

LETTER.ASC* - a sample text document to print out

and finally seven fonts to use with 10 PRINT:



* not on cassette version

The filenames will appear on the disk version of 10 PRINT. The cassette version does not contain filenames but the programs are recorded one after the other with 10 PRINT itself being followed by TENPRINT.BAS and the fonts and finally the Graphics Dump. Once located and ENTERed you may wish to save the TENPRINT.BAS and G8DUMP.LST programs on another tape for ease of use.




Make sure the computer is off, and that the disk drive and printer are on. If you use an 850 interface or similar make sure this is also switched on. Insert the 10 PRINT disk into drive 1 and switch on the computer. DO NOT hold down OPTION when loading. 10 PRINT will be resident in memory when the "READY" prompt appears. The Assembler/Editor cartridge may be present if required in which case the "EDIT" prompt will appear when loading is complete. The 10 PRINT disk is no longer needed unless you wish to use the TENPRINT utility package to print out text documents.


Make sure that the computer is switched off and the printer is switched on. If you use an 850 interface or similar make sure this is also switched on. Insert the tape in your cassette deck and depress the PLAY button on the recorder. HOLD down the START key on the computer and switch the computer on. When you here the buzz from the computer press RETURN and 10 PRINT will load. Loading is completed when the "READY" or "EDIT" prompts appear as explained in the Disk loading instructions. If you have any problems in loading 10 PRINT, try rewinding the tape and manually winding the tape past the clear leader before placing the tape once more in the tape deck. A back up is recorded on Side B if you still have problems.

The tape may now be removed from the cassette but if you wish to use the 10 PRINT utility package or screen dump DO NOT REWIND THE TAPE AT THIS POINT.



10 print has two major uses - printing program listings and producing formatted output of text files. It is also possible to use 10 PRINT to produce formatted print from within your own programs.


Your Atari computer has a built-in "device handler" to communicate with the printer. This is normally addressed as "P:" and to list a program to your printer you would normally type LIST "P:" to print the whole program or LIST "P:",100 or LIST "P:",10,200 to list a particular line or lines. From the Assembler/Editor you would use LIST #P:. If you are not sure how this works please consult your manual or a programming reference book.

10 PRINT installs its own special "device handler" which is addressed as "Q:" but, unlike the resident printer handler has four options. Each of these can be used in exactly the same way as the standard "P:" command. The four options are:

"Q1:" (or "Q:")

- this prints an entire line of up 60 characters with each character 7 dots high


- this prints a line in 38 characters to match the standard Graphics 0 screen with each character 7 dots high.


- is the same as "Q:" or "Q1:" but each character is a full 8 dots high


- as "Q2:" but with characters 8 dots high

"Q1:" and "Q2" may be considered "draft" mode with "Q3:" and "Q4:" the equivalent of "letter quality". These latter two modes will take longer to print as each line needs to be printed twice.

This feature of 10 PRINT couldn't be easier to use. Try it now by booting up 10 PRINT and loading in a short BASIC program (preferably with inverse or CONTROL characters in) and type each of the four commands in turn. That is type LIST "Q1:" and press RETURN, type LIST "Q2:" and press RETURN and so on.

You should now be familiar with the basic use of 10 PRINT and can use whichever "device" you feel is suitable for your program listings. You can still use the "P:" device as before if you want a "rough" draft of a listing but remember you will not get special characters to print using "P:". It is possible to print program listings in any character set and to close up or expand the spaces between characters but these aspects will be dealt with later in the advanced section of the manual.


Just as you can use the "P:" device within a program so can you use any of the four "Q:" devices. Where you would normally open a channel to the printer with a command such as OPEN #1,8,0,"P:" just substitute the appropriate Q: command as stated above and then PRINT or PUT to the channel in the normal way. You may if you wish have different channels open to both Q: and P: to print in two different styles on the same document, the first using whatever font is in shown on screen and the second in the standard 1029 font. This manual is not intended as a tutorial for programming and if you do not understand the principles of using a "channel" to communicate to your printer it is recommended that you refer to an appropriate programming book.

The "Q:" device works exactly like "P:" and will only output to the printer when either a full line or a RETURN character (ATASCII 155) has been sent. If you use PRINT #(channel) statements that end in a semi-colon, or if you use PUT #(channel) commands, you must finish with a RETURN character or a PRINT #(channel) without a semi-colon to ensure that all characters are printed.

There is only one restriction to be aware of. If you use Q3: or Q4: and then follow on with a Q1: or Q2: mode, there will not be any space between the last line of Q3: or Q4: print and the first line of Q1: or Q2: print. If this is not the effect required, issue a PRINT #(channel) command first to generate a blank line.


10 PRINT may also be used to print text documents in a variety of fonts provided you have a word processor that can PRINT a document to disk or cassette. Most word processors have this feature including Superscript, PaperClip, Speedscript, The First XLENT Word Processor and TextPro but some, such as the original Atariwriter cartridge do not. If you find that the word processor you normally use does not have this feature we recommend that you get hold of a copy of TextPro (disk only) which is an excellent public domain program as good as most commercial word processors. Please note that the "PRINT TO DISK (or cassette)" feature is NOT the same as SAVING a file and 10 PRINT will not work correctly on a file that has been SAVED to disk. If you have any doubts, consult the manual of your word processor.

10 PRINT has no word processing commands as such but the TENPRINT.BAS program supplied will enable simple commands inserted by you into your document with your word processor to be translated into different fonts. Your word processor does all of the formatting of your document and will print to disk or cassette a "carbon copy" of what would normally go to the printer. TENPRINT.BAS can pick up this file and print it to your 1029 translating any special codes you have inserted as it goes.


10 PRINT can print text in up to 11 different styles using the fonts supplied and you may specify any of these styles within your document. There are three special formatting codes used each of which is followed by the number of the font or style you wish to use. The formatting codes and default font styles are as follows.

Formatting codes

[ for all normal and left justified text
\ for centred text or centred headings

] for right justified text

Default Fonts or Styles


Code Font Action
0 0 Print in SIX.FNT
1 1 Print in BOLD6.FNT
2 2 Print in FOUR.FNT
3 3 Print in BLOCK.FNT
4 4 Print in SQUARE.FNT
5 5 Print in CURSIVE1.FNT
6 6 Print in ATARI.FNT
7 7 Print in 1029 standard
8 8 Print in 1029 standard, underlined
9 9 Print in 1029 double-width
: 10 Print in 1029 double-width, underlined

Use your word processor to prepare a document for printing using the standard margins and page layout that you would normally use but wherever you wish to use a different font insert the appropriate formatting code and font code immediately prior to the words you wish to print in a different font. An example would be best to illustrate the procedure.
Let's suppose your word processor uses the command :rj; to push text to the right of a page, :cy; to centre text and that it automatically justifies left (i.e. uses no code for text printed against the left margin). Your document as you type it in might look something like this.

:rj;]5From: Brian Smith

:rj;]210th September 1988



[0It has come to my attention that printers are being used for

[1PRIVATE [0 purposes. This is not allowed.


:rj;]1Brian Smith

:rj;]0Head of Department

All you need to remember is to use [ followed immediately by the font number for all normal text, \ followed by the font number whenever you centre any text and ] followed by the font number for any right justified text such as addresses and dates. A more detailed explanation of how these codes work will be given at the end of this section.

Once you have composed your document PRINT it to disk or cassette (don't forget to SAVE a copy also in the normal way) and get ready to run TENPRINT.BAS to print it to your 1029.

There is a sample file called LETTER.ASC on the disk version of 10 PRINT which contains a letter with various codes in position. You may print this out for study by typing DOS and then using option C (Copy) and specifying LETTER.ASC,P: in response to the prompt. Providing your 1029 switched on you will get a print out of the document for study exactly as it appears. Note that this is not how the final document will appear when printed with 10 PRINT.


Your document is printed out using TENPRINT.BAS which is on the disk version of 10 PRINT under this filename and is on the cassette version immediately following 10 PRINT at the point where the boot program stopped loading. RUN the program from disk or CLOAD and RUN from cassette. The cassette version will buzz once when the program is RUN and you should then press RETURN so that the fonts may be loaded.

TENPRINT.BAS will load each of the seven available fonts into memory and then present you with a menu. Choose Item 2 - PRINT A FILE. You will be asked to enter a default print style, the number of leading blank lines and finally the filename to be printed. For the time being enter 0 for each of the first two options and type in the filename of the document you wish to print. If you have 10 PRINT on disk you might like to print out the LETTER.ASC file to see how the formatting codes in that file have worked. Provided your 1029 is switched on and 10 PRINT is installed you will have a nicely formatted letter printed in different styles. If you wish to print a document from cassette just enter C: as the filename and make sure the tape is at the point where you PRINTED your document to tape.


Default Font Style: Your word processor will print a number of spaces at the left of each line representing the width of the left margin. If you mix fonts which have different character widths within your document these spaces will be different sizes and the left margin will be ragged. TENPRINT strips these spaces and replaces them with spacing of whatever default style you choose. Some fonts will produce a narrower margin than others so you will need to experiment with the Default Font Style to find one that suits. The default styles are the same as fonts mentioned earlier but print only blank spaces of the appropriate width. Note however that if you use style 8 or 10 the spaces will be underlined.

Once you have selected a Default Font the file will be printed in this style until such time as a change of font is indicated by a code you have embedded in the document.

Blank lines: This option is provided specifically for the 1st XLENT Word Processor which prints the first page of a document "short". TENPRINT.BAS is set up for default page size of 66 lines but the 1st XLENT Word Processor assumes only 60 lines on the first page. If you are using this word processor this option should be set to 6 otherwise it should normally be set to 0. Other word processors may have this feature and the option is therefore provided for up to 20 blank lines.


The previous instructions explain fully how to use 10 PRINT but it may help you in formatting documents if you understand how the TENPRINT utility interprets the codes you enter into your document.

TENPRINT reads in a file line by line and initially strips any leading spaces on the line (which are normally the left margin your word processor has calculated) and replaces these with spaces in the default mode you have chosen. The left margin will therefore always remain the same width even if you change from narrow to expanded fonts throughout your document. The string is then scanned for the codes you have entered to change fonts. If it finds a code it checks the next character, which must be one of the code symbols for a new font, and changes the character set to that font. It will continue printing in that new font until a change is indicated by another symbol. When the end of the line is reached the string will be sent to the printer and the next line will be read from the file. The entire process will then be repeated until the end of the file is reached.

The [,\ and ] symbols are treated in different ways. When the [ symbol is found both the symbol and the following character are ignored (after the font is changed) and the remaining text closed up by two spaces. With the ] symbol the spaces are not closed up and two blank spaces are printed. This is so that text which is right-justified, such as an address, remains in its proper position against the right margin. Finally, the \ symbol closes up one position only and is used to keep centred text properly positioned.


If you intend to use one of the narrower or wider modes (2-6 or 9) as the default, remember to set appropriate margins in your word processor before printing to disk. The usual right margin in 80-column text is about 70, which would be too wide for modes 3-6 and 9-10 since these characters would be too big for the page. On the other hand, mode 2 text would finish just over halfway across the page and should have a wider margin setting. You will need to experiment with each font to find the right and left margins which give you the width of text you require.

Your word processor will format the text assuming that all characters are the same width, so don't expect the output to look exactly correct if you have used non-default character widths in centred or right-justified text. Again you may need to experiment with changing margins to get the spacing right. Also, if your text has a non-zero left margin don't specify modes 8 or 10 as default otherwise the blanks in the margin will be underlined.

You can if you wish mix the normal "P:" mode with the "Q:" modes in the same text, but if you do you should either set a zero left margin or set the default mode to 0,1 or 7, since these are the only modes which have a common character width in both devices. Any other default mode will generally produce a ragged left margin. Note that you cannot mix "P:" and "Q:" modes on the same line.

If you do not change widths, or only do so on separate, partial lines (e.g. headings and titles), which will be the majority of the time, you should find TENPRINT simple to use and will not encounter any problems. If you want more complex output, the program has the flexibility to produce it if the above guidelines are followed.



The 10 PRINT disk includes a BASIC subroutine to be used with your own BASIC programs to produce printouts of your GRAPHICS 8 or 24 screens. It is assumed that you have some programming knowledge if you wish to use this utility. On the disk version of 10 PRINT the program has the filename G8DUMP.LST and on the cassette version it immediately follows the TENPRINT.BAS file. We recommend that you locate the cassette version and transfer it to another tape by typing NEW after loading TENPRINT.BAS and then typing ENTER "C:" and saving the program to another tape once loaded by using LIST "C:".

To use the Screen Dump, load your own program in memory (it is not necessary to have 10 PRINT booted) and type ENTER "G8DUMP.LST" or ENTER "C:" to merge the two. G8DUMP.LST uses lines 32000 upwards so if this clashes with your program renumber your program or load the subroutine separately and renumber it. Your program should create the appropriate GRAPHICS 8 or 24 screen and wherever you wish to print the screen to your 1029 should include a GOSUB 32000. The subroutine will dump the current screen image to the printer.

The picture will be 320 dots wide, and will allow a margin of up to 160 dots width. You may set the variable MARGIN before calling the subroutine, if MARGIN = 0 the picture will print at the left side of the paper, MARGIN = 160 will print at the right hand side and MARGIN = 80 in the centre. Also, you should set GMODE before calling the subroutine as GMODE=8 or GMODE=24 for GRAPHICS 8 and 24 respectively. The image colours may be reversed on the printout by setting INV =1 in line 32100.

The disk version of 10 PRINT contains a file called DUMPTEST.BAS which you may LOAD and RUN for a sample print. The Screen Dump routine is already included in this file.



It is possible to customise 10 PRINT in a number of ways but before you attempt to do so we recommend that you make a back up copy of your 10 PRINT disk and work only with the copy.


10 PRINT works by using the character set pointed to by location 756 (CHBAS) as the font to send to the printer. Normally this will be the Atari standard character set at ROM location 224 but if you load your own character set and change the pointer in location 756 then 10 PRINT will print the new font to your 1029. It is beyond the scope of this manual to explain how to redefine and load character sets but several articles have been published in articles and books and there are a number of public domain character set generators available.

You may wish to study the TENPRINT.BAS listing, which loads in several character sets to discover how to load your own character sets.


10 PRINT sets aside two memory locations which we have called CHRWID and NUMCHS to control, respectively, the spacing of each letter and, in devices Q1: and Q3:, the number of characters per line (devices Q2: and Q4 are always set to 38 characters per line). These locations are defined as follows:

CHRWID = 256* PEEK(13) + 641

NUMCHS = 256*PEEK(13) + 642

On power-up they contain 8 and 60 respectively.

If CHRWID is POKED with a 6, for example, then only the 6 left hand columns of the character's dot grid will be printed before the next character is started. A standard character printed in this way will look strange, but if a special font is designed which completely fits into these 6 columns, the result will be a narrower character and more of these will fit on one line. To determine the number of characters that will fit on a line divide the number POKEd into CHRWID (6 in this case) into 480 (which gives 80) and POKE the answer into NUMCHS to change from the normal 60 per line. A font which fits into 4 columns will allow 120 characters per line. Make sure that you do not try to put too many characters in one line and exceed the 480 dots width limit, especially when mixing spacing, otherwise you will get strange results.

You can also widen the normal spacing, for example a spacing of 10 used with the standard computer font will insert 2 blank dot columns which will make inverse graphics characters easier to recognise. If you use 10 PRINT with your own programs the spacing and font style can be changed at any time, even within a line of print, simply by POKEing the new values into CHRWID and 756 before issuing the PRINT # command for that section of print.

The 10 PRINT disk-includes examples of fonts with 6 and 4 dot widths. SIX.FNT is similar to the normal printer font, BOLD6.FNT is heavier font and FOUR.FNT is a very narrow font useful where more than 80 columns are essential or when squeezing text into a small area such as labels. These fonts have the filenames shown on the disk version of 10 PRINT and are recorded sequentially, as shown earlier in the manual, on the cassette version.


The TENPRINT.BAS program has deliberately been left as a listable BASIC file so that you may change it if you wish.
The default symbols which control the formatting of printed text are [,\ and ] but if you find that you use these in your documents, you can change them to any other character by changing all occurrences of these characters in program lines 210 to 230, line 2520 and lines 2590 to 2610. Be sure to select new characters which will not appear in your text otherwise you will encounter errors when trying to print the text.

On the disk version the fonts used by TENPRINT and shown in the DATA statements in lines 5000 - 5060. You may use any other fonts by changing the filenames and adding the width of the characters in the font. Normally fonts obtained from the public domain or other programs will be the standard 8 dots wide but other fonts can be defined as stated previously. Make sure that all the fonts you wish to use are on the disk and save the amended version of TENPRINT.BAS to the same disk. Note that you must have seven fonts at all times, so if you wish to add just one or two, simply leave the existing fonts on the disk and add your own changing only one or two filenames.

With the cassette version it is more difficult to change the fonts although with some programming knowledge it could be done. All seven fonts are contained in one file and must be saved accordingly. You will need to study the TENPRINT listing thoroughly to understand how the fonts are loaded. Unless you are a competent programmer it is best not to try and use alternative fonts with the cassette version.


On the disk version, 10 PRINT is loaded from the file named AUTORUN.SYS. The program occupies memory starting at page 52 which leaves plenty of room for multiple disk drives and file buffers and also allows DOS to be used. If you have a single drive system and wish to reclaim some of the unused memory, or instead wish to load in at a higher location, you may customise AUTORUN.SYS by using Option 1 of the TENPRINT.BAS program.

Run TENPRINT.BAS and select Option 1. Enter the desired starting page (in decimal) at the prompt and a new AUTORUN.SYS file will be created, overwriting the existing one. Note that HANDLER.OBJ must be on the same disk using this option of TENPRINT.BAS so never delete, rename or otherwise tamper with this file. Switch off the computer, then follow the 10 PRINT loading instructions at the start of this manual to load your new version.

To determine a suitable starting page for a single drive system, switch off the computer and power-up again with BASIC with your normal DOS 2.0 or DOS 2.5 disk (i.e. without 10 PRINT). Type PRINT PEEK(744) - usually 28 - and add 1 (one) to the result to determine a suitable starting page number. You may also use a location lower in memory to gain more program space but you may then lose the facility to call DUP.SYS.

You may customise as many times as you wish with different starting addresses - AUTORUN.SYS will reconfigure itself each time to the last value entered.

The cassette version loads into low memory and it is unlikely that you will need to relocate it, however the facility exists if required and the procedure is similar. Note that if you write back to your master tape you will lose your original 10 PRINT so this should be used with great care, if at all!



The Atari computer communicates with its peripheral devices through a set of handlers. The standard devices are:

"C:" - cassette

"D:" - disk

"E:" - editor

"S:" - screen

"K:" - keyboard

"P:" - printer

10 PRINT installs a new handler for a device named "Q:". "Q:" will remain available, even after SYSTEM RESET, until the computer is turned off.

"Q:" operates in very much the same way as "P:" except that it prints in whatever character set the computer is using rather than the printer's internal character set. Computer characters (letters, numbers, graphics symbols, etc) are made up of small dots arranged in an 8 by 8 square grid but the 1029 normally prints in a grid 7 dots high by 6 wide. Each pass of the printer head across the paper normally prints 7 rows of up to 480 dots Therefore up to 80 printer characters are printed on each line.

The 1029 normally omits one row of the character which is why descenders are not normally available. 10 PRINT overcomes this in modes Q3: and Q4: by printing in two passes to print all 8 rows of a character with each character the full 8 dots wide if required thus giving up to 60 characters within the limit of 480 dots across the page. If you define a font leaving out the top row of each computer character (most of those in the standard Atari set do not use this, or are quite recognisable without it) then you may print in modes Q1: or Q2: and only one pass is necessary.