XEP80 Part 2

From: Michael Current (aa700@cleveland.Freenet.Edu)
Date: 04/04/99-04:23:48 PM Z


From: aa700@cleveland.Freenet.Edu (Michael Current)
Subject: XEP80 Part 2
Date: Sun Apr  4 16:23:48 1999


Date: Mon Mar 22 10:03:21 1999
From: nisse-ma@reze-1.rz.rwth-aachen.de (Mathy van Nisselroy)
Subject: More XEP80 stuff       (quite interesting)
To: xx004@cleveland.freenet.edu


Content-type: text/plain; charset=US-ASCII
Content-transfer-encoding: 7BIT
Content-description: Mail message body

Howdy folks

The file mentioned is attached to this message.   Rename Module1.off
to module1.btm


This is the second article about the XEP 80.  It was originally
written by Erhard Puetz a.k.a. Atreju and published in ABBUC magazine
number 39, which was sent out to ABBUC members just before Chri
mas 1994.

Erhard gave me (Mathy Van Nisselroy) permission to translate the
Message #3 (3 is last):
Date: Mon Mar 22 10:03:21 1999
From: nisse-ma@reze-1.rz.rwth-aachen.de (Mathy van Nisselroy)
Subject: More XEP80 stuff       (quite interesting)
To: xx004@cleveland.freenet.edu


Content-type: text/plain; charset=US-ASCII
Content-transfer-encoding: 7BIT
Content-description: Mail message body

Howdy folks

The file mentioned is attached to this message.   Rename Module1.off
to module1.btm


This is the second article about the XEP 80.  It was originally
written by Erhard Puetz a.k.a. Atreju and published in ABBUC magazine
number 39, which was sent out to ABBUC members just before Chri
mas 1994.

Erhard gave me (Mathy Van Nisselroy) permission to translate the
articles about the XEP 80.  Please remember that neither English nor
German is my mother languag

BTW the coils I (make that; Erhard) talked about in the previous
article are called deflection coils in English.

On with the article....

_____________________________________________________________________
____

               The XEP 80  part two

When I said in my previous article that I would be please about an
echo, I meant, I would be pleased with ANY echo, not ONE echo.  But I
shouldn't complain, better ONE echo than NO echo at al
The echo said to me: Erhard, after I read you article about the XEP
80 in the ABBUC magazine (Mathy: number 38), I pulled my XEP 80 out
of the drawer.  I've always wanted to use it with BobTerm, bu
since the XEP driver for BobTerm doesn't switch the XEP to the German
(Mathy: ahem, I thought it was called the European or PAL) standard,
I've always had a flickering, too small image.  Can't we d
something about that?
Sure, I say, one takes the XIO command that sets the XEP 80 to the 50
Hz standard, turns that into a small machine language program and
loads it as AUTORUN.SYS before BobTerm - Just a moment, this
nt gonna work this way.  There is no XEP driver initialised yet,
making the XIO command disappear into thin air.  OK, first the XEP
driver, then the XIO command, then BobTerm... Hmmm, won't work

er.  The XEP driver for BobTerm isn't hooked to the normal editor.
And, BobTerm loads and initializes the driver. - Think, Think, Think
-  The driver contains the subroutine for sending data to th
XEP.  That's the part we talked about in the previous article (Mathy:
ABBUC magazine 38).  Here is the address data for the driver: memory
from $4000 to $422E and RUN $4001.  Ah yes, this should wo
.  At the end of the files, before the RUN address, I append a small
routine and redirect the RUN address to it.

This is what that looks like:

$422F   SEC           ; A command is send
$4230   LDA #$D7      ; the number $D7 sets the XEP to 50 Hz in
textmode
$4232   JSR $4145     ; That's the point where the Send-routine
starts
$4235   JMP $4001     ; driver installed
       .ORG $02E0     ; RUN vector
       .WORD $422F    ; RUN address

Try it, it works.  During all these try outs, I've searched through
the XEP driver several times, and that's when I saw that the
Send-outine starts a bit earlier than I told you last month.  It

ts like this:

$4139  X_DAT CLC          ; Data will be send
$413A        .BYTE
$413B  X_DAT SEC          ; A command is send
$413C        PHP          ; Get Carry status
$413D  WAIT_3 LDX VCOUNT  ; Number of just created image divided by
two
$4140  CPX #$6B           ; Equal or greater than 107
$4142  BCS WAIT_3         ; Yes, then wait
$4144  PLP                ; return Carry Status
$4145  ROR                ; shift byte to the right until
$4146  ROR                ; bit 0 is send first.
$4147  ROR
$4148  ROR
$4149  ROR

... And this is where the part from the article inmagzine 8
continues.
What do my square eyes see there?  An other wahat's
that suppose to do?  Well, boldly said, it's not allowed to send data
during the Vertical Blank.  But it's not clear to me why.  Th
VBI is disabled anyhow.  Might the WSYNC register in the
"austastluecke" (Mathy: some kind of interval.  Maybe I'll know what
this word means when I translate the next article about the XEP,
shou
rhard write more of them.  :-) ) not deliver the apropriate timing?
Let's try that.  Starting with $413D I'll just write the NOP command
7 times.  We're still losing time, but at least we're not w
ting 50 times a second.  So, loaded BobTerm with the changed driver
and - Look at that.  All of a sudden BobTerm works with the XEP 80 at
9600 baud, not just 4800.  I've tried it out a bit more, bu
could not find any negative side effects.  So I called the ABBUC BBS
and looky here, works like a charm.  With my chest raised in pride I
called the ABBUCcian that had laid this task upon me.  I've
oen it, I've done it, I said, not just the 50 Hz, but even 9600 baud.

The day before yesterday was the day that I decided to show off my
newly gained knowledge in ABBUC magazine.  So I called Wolfgang
(Mathy: Wolfgang Burger is the president of ABBUC and previous Sys
 of the ABBUC BBS) to ask him, if he would in interested in a sequel
to the XEP 80 article.  Sure, he said, opening up the way to help the
ever information hungry ABBUCcians.  And here's a little e
ra, just to make sure you don't starve.  For $40E0 on, we have 13
bytes, with which the XEP is initialized:

$D9     Cursor always on
$D4     Use ATASCII characterset
$DE     Bright characters on dark background
$D3     Burst mode, no cursor data is send back
$60     Left Margin 0 low nibble
$70     Left Margin 0 Hi nibble
$AF     Right Margin low nibble 15 + 4*16 Hi nibble = 79
$B4     Right Margin hi nibble
$00     Horizontal cursor position = 0
$80     vertical cursor position = 0
$D0     Erase List flag
$C5     Fill RAM with SPACE-characters
$DC     Set Scroll window to X-cursor position

Since all this trail and error stuff started to annoy me, I "just for
a minute" reassembled the driver, so I now  a fairly readable
file to work with.  This means I'm gonna write more articles
out the XEP 80. Since I was able to delve up more information about
the XEP 80, I can already tell you:  the 19200 baud are in reachable
distance and I seem to be on a hot trail with my suspiciouns
bout the 6551 SIO chip from the first article (I think).

          DEEPER DUNGEONS

The videocontroller inside the XEP 80 is a 48 pin chip.  It's data
bus is 16 bits wide on the video side.  This way, two RAMs could be
read simultaniously, one containing the text that should be di
layed and another containing the text attributes.  There are eight
possible attributes:

Inverse       : A character plus it's surrounding area is display
"Inverse"

Halve Bright  : The character in displayed with a lower brightness.
Other options are a higher brightness and even color.
Flickering    : On, Off, On, Off
Double Height : Text in double height, internally some conditions
have to be met though.
Double Width  : Text in double wide.  The next line can't be
displayed though, so we have to leave a blank line between two lines
of character
Underlined    : An apparently freely defined character is mixed in.
This can be the "underline" character or an "overline" or "strait
through the middle" character or whatever you wan
Hidden        : The text is not displayed at all.  This attribute
should also be set when using a double height character, so the
controller knows that this is the bottom halve of the double height
haracter.
Graphics      : Since this is an attribute, text and blockgraphics
can be mixed at will.  Except double height, all other attributes can
be used at the same tim

And then there is the Graphics mode of the XEP 80.  Just like the
subject of block graphics, it's a very broad subject and will not be
discussed her

          THE LIGHT PEN

The controller offers the option of connecting a lightpen to it.  Via
interrupts, the horizontal and vertical positions are stored into two
registers.  HPEN is 7 bit wide (128 positions) and VPEN i
5 bit wide (32 positions).  Since this does not provide us with a
very high resolution, we can forget about drawing with a light pen.

          THE SERIAL INTERFACE

Here we find a UART (Universal Asynchronus Receiver Transmitter),
that, in it's addresses and functions, equals the good old 6551 so
much, that I'm assuming it is.  With a 4 bit pre-devider, the sy
em clock (12MHz in the XEP 80) is devided into one of 16 steps.
These steps are 3.4, 4, 4.5, ... ,11.  The actual baudrate devider is
11 bits wide and is further devided by 16 at the output.  In t
 XEP 80 the baudrate is set to 15625.  The mathematics could however
also look like this:

12 MHz     : 6.5 = approximately 1.8432 MHz
12 MHz     : 6.5 = approximately 1.8432 MHz

1.8432 MHz : 6   = 307200 Hz
1.8432 MHz : 3   = 614400 Hz

307200 Hz  : 16  = 19.200 kHz
614400 Hz  : 16  = 38.400 kHz

Those 19.200 kHz lie within manufacturers specifications.  If 38.400
kHz works, is something someone should try out.  But since the
deviders aren't used up yet (we can even go much faster), why
w
n't it work.

                                              That's it for this
time.
                                              Greetings, your
FloppyDoc

_____________________________________________________________________
__

That's it for this time.  Hope you enjoyed it.  You can reach Atreju
(and yours trully) via USF-Nand IAN.

CU          Mathy Van Nisselroy

PS either IAN or USF-net (both are BBS Express Pro! running BBS
networks which should exchange mail on a regular basis) is now called
IM
R.ouldhests e.e. ct.s.sp aabxtOp dt aild Ee starrke eithaio t
l.e.st

Content-type: text/plain; charset=US-ASCII
Content-description: Information about this message.

This message contains a file prepared for transmission using the
MIME BASE64 transfer encoding scheme. If you are using Pegasus
Mail or another MIME-compliant system, you should be able to extract
it from within your mailer. If you cannot, please ask your system
administrator for help.

   ---- File information -----------
     File:  module1.off
     Date:  8 Mar 1993, 11:59
     Size:  601 bytes.
     Type:  Unknown

Content-type: Application/Octet-stream; name=module1.off; type=Unknown
Content-disposition: attachment; filename="module1.off"

Attachment converted: Michael's HD:module1.off (????/----) (000159D6)
 
-- 
Michael Current, mailto:mcurrent@carleton.edu
8-bit Atari FAQ and Vendor Lists, http://www.faqs.org/faqs/atari-8-bit/
Cleveland Free-Net Atari SIG, telnet://freenet-in-c.cwru.edu (go atari)
St. Paul Atari Computer Enthusiasts, http://www.library.carleton.edu/space/


-----------------------------------------
Return to message index