[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Sound-makes only one click?



Dave Althoff <dalloff@freenet.columbus.oh.us> wrote:

> ($C036..Is that right?  I thought I always used $C030...)

The ][/][+ and IIe don't fully decode the address, so anything from
$C030 to $C03F will toggle the speaker.  Similarly for cassette out
($C02x), strobe ($C04x) and paddle trigger ($C07x).

This is true to a lesser extent for the keyboard buffer ($C00x) and
strobe ($C01x).  They behave this way on the II+, but the IIe redefines
all the nonzero locations in each range for mode control and detection.

The IIe $C001-F locations are write-only, and reading them will still
access the keyboard buffer.  The $C011-F locations can be read to get
the mode flag in bit 7, and they still return the keyboard buffer value
in bits 0-6 (in effect, the "any key down" flag reported in bit 7 of
$C010 is just another mode flag).  I don't think accessing these
locations resets the keyboard strobe, however.

The IIgs uses nearly all the I/O locations, so you must stick to the
official location in each case.  The same applies to the IIc, to a
lesser extent.  Neither machine has cassette I/O ($C020 and $C060) or
strobe ($C040), and these locations are either unused or redefined, e.g.
$C060 is switch input 3 on the IIgs.

One particularly nasty location in the IIc is $C028, which toggles the
ROM bank for ROM version 0 or later (not the original 16KB ROM, version
255).  Hitting this location from BASIC or the monitor will hang the
machine.  It is safe to use inside a machine code routine that knows
what it is doing (e.g. the bank-switch code in the monitor).

This location is also defined as the same function on the IIgs, but I
don't think it does anything (the output doesn't go anywhere).

-- 
David Empson
dempson@actrix.gen.nz
Snail mail: P.O. Box 27-103, Wellington, New Zealand