
       ICTARI USER GROUP             ISSUE 50                 October 1997

              ___   ______     ___       _________   _________   ___
              \__\  \   __\    \  \__    \______  \  \   _____\  \__\
                ___  \  \       \  __\     _____\  \  \  \         ___
                \  \  \  \       \  \      \  ____  \  \  \        \  \
                 \  \  \  \_____  \  \____  \  \__\  \  \  \        \  \
                  \  \  \       \  \      \  \        \  \  \        \  \
                   \__\  \_______\  \______\  \________\  \__\        \__\

                     *   m   a   g   a   z   i   n   e   *

     =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
                       I C T A R I   U S E R   G R O U P
       G Greenway, 8 Denmark Road, Reading, Berks, RG1 5PA. 0118 756668
                 http://www.elis.demon.co.uk/ictari/ictari.htm
     =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

                              INDEX FOR ISSUE 50                                                        
                              ==================

                ASSEMBLY        Chapter on the MFP and PSG
        
                C               Rich Text Format to HTML converter
        
                HISOFT BASIC    Calculator desk accessory
        
                GFA             CRC checksum routines
        
                MISC            TOS documentation project
                                Atari hardware guide      
                                                                                                                                                                                                  
    -------------------------------------------------------------------
 
                                   EDITORIAL
                                   =========
                                   
    Sigh, another late issue, again, it's the pressure of work, and I've
been slightly ill. Well, issue fifty's not *quite* the landmark I  hoped
it would be, but it has its moments.  I was only able to make it to  the
London Goodman's Atari show quite late, I only caught the last hour, but
it looked as if  things had been quite  busy. -Some exhibitors had  sold
vast quantities of stock, and were almost demanding more shows for  next
year. -Luckily it  looks as  if they'll all  get their  wish. The  Atari
scene looks far from dead, but there is now a real DIY spirit. -Most  of
the new software coming out is being released as shareware by individual
programmers, and  this will  have to  be nurtured.  Here's where  ICTARI
comes in, even if  later issues start to  become rather thin this  group
has produced a  wealth of  information of interest  to programmers,  all
that needs to be done is to distribute it. It looks as if the battle  is
slowly being won, the first twenty issues of ICTARI are now available at
two FTP sites:

    ftp://nic.funet.fi/pub/atari/mags/ictari
    
    ftp://src.doc.ic.ac.uk/pub/atari/umich/Magazines/Diskmags/Ictari
    
and there are links to  these from the ICTARI  pages. The site has  been
featured in ST-Applications  again, but  the postal  address for  ICTARI
wasn't listed. (I'll have to write a few letters.) The good news is that
the last two issues are now  on an ST-Club disk, the wider  distribution
ICTARI gets the better. Tell your friends ! Soon the issues uploaded  to
the FTP sites  will overlap  with those on  my Demon  pages. -All  fifty
issues will  be available.  If I  can create  a complete  HTML table  of
contents with a proper searchable index with links to compressed  copies
of *all* the issues  then the ST  programming world will  end up with  a
resource really worth having. Don't hold your breath, but the  excellent
UDO program  should  be  up  to  the  task.  Thanks  again  to  all  the
contributors, the late submissions  were really worth  the wait. I  just
hope you all think this issue was worth waiting for ! Anyway, hi to  our
new member !

                        Have Fun,
                            Giles.
                                                                                                                      
    ------------------------------------------------------------------- 
                                                          
                                CORRESPONDENCE
                                ==============
To:     Contributors
From:   Giles Greenway
Re:     e-mail

    Thanks  again  to  Theo  Ross  and  Mathew  Bacon  for  their  BASIC
contributions. There will be more of these next month, there were plenty
of them !  I hate to  gripe, put  please make sure  that there's  decent
segmentation on UUENCODED and MIME e-mails, poor old Oasis2/ICE can  get
a bit stuck. It's not too much of a problem, and besides, if wasn't  for
the odd stuck mailbox I wouldn't  have found out how good Gary  Priest's
POPWatch program is. Every cloud has  a silver lining... Thanks also  to
Jeremy Smith for his  RTF convertor. I pointed  him in the direction  of
the RTF FAQs  in previous  issues, so  we can  expect suitably  improved
versions in future. It's good to see ICTARI being used to create new and
useful software.

    ------------------------------------------------------------------- 
                            
To:     All
From:   Giles Greenway
Re:     The TOS Book

    Things  would  be  much  easier  if  more  Atari  documentation  was
available. (You can still  try to get the  Atari Compendium on CD  ROM.)
Thomas Much and Gotz Hoffart have started work on a freeware  altenative
(in English) called  the TOS Book.  A copy  is on this  month's disk  in
ST-Guide format. As you will see, it's far from complete. This is  where
*you* come in.  If you  make regular  use of  some obscure  part of  the
operating system then you can share your knowledge with the rest of  the
Atari community.  A  HTML  version  (yep, they're  using  good  old  UDO
again...) is available at:

    http://www.uni-karlsruhe.de/~Thomas.Much/
    
I know I  keep putting  URLs in  ICTARI, but  the 'net  has proved  very
useful and  fun. It's  certainly given  ICTARI a  new lease  of life.  I
recommend you all get connected. Anyway,  the TOS Book; -what are  *you*
doing to participate ?!
                                                                
    -------------------------------------------------------------------
   
To:     HiSoft BASIC users
From:   Giles Greenway
Re:     HiSoft BASIC mailing list

    I've had a  few queries  about why  ICTARI doesn't  seem to  support
HiSoft BASIC. ICTARI will  support *any* language on  the ST if it  gets
the contributions, just look at this  issue for proof. There'll be  more
HiSoft stuff next issue as well. In the meantime, Paul Jones, author  of
the HiSoft BASIC column  in Atari Computing has  set up a mailing  list.
ICTARI readers with e-mail can send mail to:

            majordomo@spodden.zetnet.co.uk
    
with the message "subscribe hisoft-basic". Enjoy !       
    
    -------------------------------------------------------------------                                      
                                
To:	All
From:	Stephen Bruce
Re:	Atari SC1435 monitor input (again)

Since last issue I've sourced a  second hand cable for my monitor  which
was originally designated as a Phillips cable, but it does the job so  I
must assume  they  are the  same.  I've reverse  engineered  this  (very
quickly as  I'm  late in  sending  this) and  I  think I've  sussed  the
connections. I believe they are as follows:

        1     2     3     4     5         1 - Blue
     -------------------------------      2 - Green
     \  o     o     o     o     o  /      3 - Red
      \                           /       4 - Ground
       \   o     o     o     o   /        5 - Ground
        -------------------------         8 - Horiz & Vert Sync.
           6     7     8     9

This puzzles  me  a  little,  as  I  expected  separate  lines  for  the
horizontal and vertical sync,  but they appear to  be combined. Is  this
technically possible or have I made a mistake (I only spent five minutes
on this).  I'm  interested  in knowing  as  I  reckon I  could  link  my
Playstation/C64/Amiga to  the same  monitor  for gamesplaying  while  my
partner watches telly.

Thanks to Giles Greenway and Charlie Ayres for their help so far, and in
advance to those who are about to offer info on the sync thing.

----------------------------------------------------------------------

To:	Jason J Railton
From:	Stephen Bruce
Re:	Slingshot Demo

I tried the slingshot demo and thought  it was cool. My partner came  in
while I was mucking about with it and the conversation went like this:

Partner:"What are you playing?"
Me:	"An early demo of a game."
P:	"Where did you get that?"
Me:	"Off the disk that came in this morning."
P:	"That was on your disk? The one you get every month? I thought
	it was something you'd bought, it looks better than anything else
	I've seen from there!"

Despite explanations of how  complex some of the  other stuff I'd  shown
her was (e.g.  the 3D maze  demos) compared to  parallax scrolling,  she
held her ground and maintained this  was one of the best looking  things
she had seen on the Atari and  was far in advance of Buzzsaw (which  had
me hooked for a few days). So there you go, you've impressed my woman !

    -------------------------------------------------------------------    
    
From:   Levien van Zon (via e-mail: lvzon@bio.vu.nl) 
To:     Ritche Andrews
Re:     Scrolling in windows

Theoretically one could  do scrolling in  a GEM window  pretty fast  and
smooth, although it would require some hacks...

Fast scrolling of an entire window contents is easy: You'll just have to
bypass the GEM rectangle list  and make sure that  the window is on  top
when scrolling. The window contents to  be scrolled should be stored  in
an offscreen bitmap (either an EdDI  offscreen bitmap or a normal  block
of memory). You can  than use the VDI  vro_cpyfm() function or your  own
blitting routine  to  copy  the  bitmap's  contents  into  the  window's
workarea. Also  make  sure  your  workarea is  on  a  word  boundary  (x
coordinate dividable by  sixteen) and has  an even word  width, as  this
will speed up blitting quite a bit.

This procedure may become somewhat more complicated if you also want  to
use the  scrollbars, because  these are  pretty slow.  You can  minimize
scrollbar delay by  creating your  own scrollbars,  either using  direct
mouse checking (nasty, window must be on top) or GEM events (better, but
also slightly slower).                                                   

On slow blitting systems the above aproach might not be very smooth.  In
this case  you  could also  try  using  double buffering  by  using  two
instances of the GEM screen and  swapping the logical screen base  after
the blit is  finished, although this  a nasty trick  and might not  work
when other applications also  want to write to  the screen. You may  try
locking the screen to prevent this. I have never tried double buffering,
nor have I seen it being done.

If you  want a  nice  clean GEM  app I  would  recommend just  using  an
offscreen bitmap and maybe fast blitting routines (The VDI routines  are
pretty fast but  do a plane-by-plane  copy, which is  hideous and  slows
things down. Compare with NVDI software blitting, which does all  planes
at once.) and  your own scrollbars  (if needed). And  always ajust  your
window position and width. This way you can still use the rectangle list
and retain some speed.

Hope this helps,


	-=Levien (lvzon@bio.vu.nl)

    -------------------------------------------------------------------    

To:     Jason J. Railton
From:   Giles Greenway
Re:     The PSG

    Well, no-one  has  responded to  your  query about  the  ST's  sound
generator in ICTARI  48, and I  can see  why ! There  really isn't  much
information around, I've tried several  books and CD-ROMS, and I  wasn't
able to come up with any examples.  I've included chapter 9 from a  book
by Robert C. Arp  on ST assembler programming,  which contains a  rather
pedestrian section on the use  of the PSG in  a printer-buffer ! (I  can
serialise the whole thing if anyone's interested, and there's a link  to
it from the ICTARI WEB-pages, go  to the section on the UMICH  archive.)
There's a description of the PSG's actual registers in a file written by
a Dan Hollis, which  is also in this  issue. I've repeated the  relevant
section below.  There are  two  XBIOS calls  you  can use,  Dosound  and
Giaccess. The  former uses  interrupts,  which you  said you'd  like  to
avoid. Giaccess takes  the new data  for a register  and the  register's
number as arguments. If  bit seven of the  latter argument is clear  the
current state of the  register will be returned.  You might like to  get
hold of the Atari  Compendium book or  CD-ROM, which can  be a bit  more
helpfull. Perhaps  when  you're an  expert  on  the PSG  you  can  write
bindings for the TOS-BOOK ! Good luck, and have fun !

              YM2149 Sound Chip                                   
-------+-----+-----------------------------------------------------+----------
$FF8800|byte |Read data/Register select                            |R/W
       |     |0 Channel A Freq Low              BIT 7 6 5 4 3 2 1 0|
       |     |1 Channel A Freq High                     BIT 3 2 1 0|
       |     |2 Channel B Freq Low              BIT 7 6 5 4 3 2 1 0|
       |     |3 Channel B Freq High                     BIT 3 2 1 0|
       |     |4 Channel C Freq Low              BIT 7 6 5 4 3 2 1 0|
       |     |5 Channel C Freq High                     BIT 3 2 1 0|
       |     |6 Noise Freq                          BIT 5 4 3 2 1 0|
       |     |7 Mixer Control                   BIT 7 6 5 4 3 2 1 0|
       |     |  Port B IN/OUT (1=Output) -----------' | | | | | | ||
       |     |  Port A IN/OUT ------------------------' | | | | | ||
       |     |  Channel C Noise (1=Off) ----------------' | | | | ||
       |     |  Channel B Noise --------------------------' | | | ||
       |     |  Channel A Noise ----------------------------' | | ||
       |     |  Channel C Tone (0=On) ------------------------' | ||
       |     |  Channel B Tone ---------------------------------' ||
       |     |  Channel A Tone -----------------------------------'|
       |     |8 Channel A Amplitude Control           BIT 4 3 2 1 0|
       |     |  Fixed/Variable Level (0=Fixed) -----------' | | | ||
       |     |  Amplitude level control --------------------+-+-+-'|
       |     |9 Channel B Amplitude Control           BIT 4 3 2 1 0|
       |     |  Fixed/Variable Level ---------------------' | | | ||
       |     |  Amplitude level control --------------------+-+-+-'|
       |     |10 Channel C Amplitude Control          BIT 4 3 2 1 0|
       |     |  Fixed/Variable Level ---------------------' | | | ||
       |     |  Amplitude level control --------------------+-+-+-'|
       |     |11 Envelope Period High           BIT 7 6 5 4 3 2 1 0|
       |     |12 Envelope Period Low            BIT 7 6 5 4 3 2 1 0|
       |     |13 Envelope Shape                         BIT 3 2 1 0|
       |     |  Continue -----------------------------------' | | ||
       |     |  Attack ---------------------------------------' | ||
       |     |  Alternate --------------------------------------' ||
       |     |  Hold ---------------------------------------------'|
       |     |   00xx - \____________________________________      |
       |     |   01xx - /|___________________________________      |
       |     |   1000 - \|\|\|\|\|\|\|\|\|\|\|\|\|\|\|\|\|\|\      |
       |     |   1001 - \____________________________________      |
       |     |   1010 - \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\      |
       |     |   1011 - \|-----------------------------------      |
       |     |   1100 - /|/|/|/|/|/|/|/|/|/|/|/|/|/|/|/|/|/|/      |
       |     |   1101 - /------------------------------------      |
       |     |   1110 - /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/      |
       |     |   1111 - /|___________________________________      |
       |     |14 Port A                         BIT 7 6 5 4 3 2 1 0|
       |     |  IDE Drive On/OFF -------------------+ | | | | | | || (F030)
       |     |  SCC A (0=LAN, 1=Serial2) -----------' | | | | | | || (TT)
       |     |  Monitor jack GPO pin -----------------+ | | | | | ||
       |     |  Internal Speaker On/Off --------------' | | | | | || (F030)
       |     |  Centronics strobe ----------------------' | | | | ||
       |     |  RS-232 DTR output ------------------------' | | | ||
       |     |  RS-232 RTS output --------------------------' | | ||
       |     |  Drive select 1 -------------------------------' | ||
       |     |  Drive select 0 ---------------------------------' ||
       |     |  Drive side select --------------------------------'|
       |     |15 Port B (Parallel port)                            |
$FF8802|byte |Write data                                           |W
       |     +-----------------------------------------------------+
       |     |Note: PSG Registers are now fixed at these addresses.|
       |     |All other addresses are masked out on the Falcon. Any|
       |     |writes to the shadow registers $8804-$88FF will cause|
       |     |bus errors. Game/Demo coders beware!                 |
-------+-----+-----------------------------------------------------+----------
   
    



    
    
