[net.micro.cbm] Z80A chip

ugbowen@sunybcs.UUCP (Devon Bowen) (07/07/86)

First : 

To the person who posted about the Vt100 emulator. Please send me the address
of the supplier. I'm in desparate need of one. I tried replying by Email, but
we had some trouble with the net recently and my reply won't go through.
Thanks a million!!!!


Second :

To all you people at Commodore (and any others that can help). I learned ML on
a Z80 and was thrilled to hear of one in the 128, now I'm wondering if there is
any way you can switch in a bank of RAM and I/O and then turn on the Z80 so
that all ML can be Z80 code. I see no reason why this couldn't be but I haven't
seen any meantion of it in the reference guide. I know the Z80 can be activated
with a bit in the MMU, but I haven't tried it because once I activate the Z80
I have no idea where to put my Z80 code so that it can find it!! I much prefer
the Z80 to the 8502 and I'd love to use it extensively (with the VIC, SID, and
MMU of course). By the way, why did you guys do the CP/M BIOS in 8502? I'm
still struggling with that one, too. Thanks for any help...

                                        Devon E Bowen
                                        University of Buffalo

daveh@cbmvax.cbm.UUCP (Dave Haynie) (07/07/86)

> 
> First : 
> 
> To the person who posted about the Vt100 emulator. Please send me the address
> of the supplier. I'm in desparate need of one. I tried replying by Email, but
> we had some trouble with the net recently and my reply won't go through.
> Thanks a million!!!!
> 
> 
> Second :
> 
> To all you people at Commodore (and any others that can help). I learned ML on
> a Z80 and was thrilled to hear of one in the 128, now I'm wondering if there is
> any way you can switch in a bank of RAM and I/O and then turn on the Z80 so
> that all ML can be Z80 code. I see no reason why this couldn't be but I haven't
> seen any meantion of it in the reference guide. I know the Z80 can be activated
> with a bit in the MMU, but I haven't tried it because once I activate the Z80
> I have no idea where to put my Z80 code so that it can find it!! I much prefer
> the Z80 to the 8502 and I'd love to use it extensively (with the VIC, SID, and
> MMU of course). By the way, why did you guys do the CP/M BIOS in 8502? I'm
> still struggling with that one, too. Thanks for any help...
> 
>                                         Devon E Bowen
>                                         University of Buffalo

I don't know the exact details (my PRG is at home), but I can tell you a bit
about the Z-80 interface on the C128.  When you power up, the Z-80 takes 
control immediately, checks for a few C64 mode things (C= key or a cartridge
in place), then initializes anything else important to the Z-80 in C128
mode, and then writes to the MMU.  The Z-80 is left frozen at the next
instruction.  The 8502 and the Z-80 communicate via a sort of RAM based
mailbox.  When you set the MMU next, the Z-80 should check this area for
a command (which includes, I believe, jumping to a machine language
program).  Once you get to this program, you could certainly stay on the
Z-80 side forever if you desire.  

There were several reasons for doing some of the CP/M BIOS with the 8502.
First of all, only part of the CP/M BIOS is done by 8502; mainly the serial
bus driving for disk and printer, etc.  There's alot of software involved
in this, and it already exists for the 8502 side.  The Z-80 does its own
screen display, keyboard I/O and user port I/O.  The 8502 at 1.02MHz 
(SLOW for you BASIC fans) is almost twice as fast as the Z-80, which runs
at an effective speed of 2.04MHz.  The 8502 in FAST mode (not used during
CP/M) is nearly four times as fast.  So in addition to saving lots of code
on the Z-80 side, doing disk I/O with the 8502 is also faster.

For talking to I/O devices from the Z-80 side, don't set the MMU's I/O bit,
this could really confuse the C128.  Instead, turn off MMU I/O and use the
Z-80's 16 bit I/O instructions.  What, you say, you didn't know that the 
Z-80 HAD 16 bit I/O instructions?  Yup, IN (C) and OUT (C) instructions both
actually generate an address from the BC pair.  And all of your favorite
I/O devices will be at $D000 (or 0D000H if you prefer) on up, just like
in C128 mode (except that you don't bank stuff around so much).  I believe
the CP/M section in the PRG should cover the Z-80/8502 interface in more
detail.


-- 
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
Dave Haynie    {caip,ihnp4,allegra,seismo}!cbmvax!daveh

   A quote usually goes here, but its currently being rennovated.

	These opinions are my own, though for a small fee they be yours too.
\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/

porter@cbmvax.UUCP (07/12/86)

> To the person who posted about the Vt100 emulator. Please send me the address
> of the supplier. I'm in desparate need of one. I tried replying by Email, but
> we had some trouble with the net recently and my reply won't go through.
> Thanks a million!!!!
> 
There is a VT100 emulator for the 128 in 80 columns included with
every Commodore modem (300 and 1200).  It has a few problems with
EDT on VMS, but I use it all the time for vi on UNIX.

Jeff Porter
Commodore Engineering