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

Re: Monitoring Program



Michael Black <blackm00@CAM.ORG> wrote:

> On Wed, 3 Feb 1999, Dennis McCormick-Kovacich wrote:
> [stuff deleted]
> > 
> > That's all I can remember right now. Some models have a built-in
> > assembler called Sweet-16 that was written by Steve Wozniak, but I'm not
> > sure which models have it. I think the command to enter it was simply an
> > exclamation mark (!). I think its prompt was also the "!". If you have
> > it, this will allow you to enter programs using 6502 assembly mneumonics
> > instead of having to know the hex values. When you're done with the
> > monitor and want to return to AppleSoft, there are three ways to do it:
> > 
> I thought the mini-assembler disappeared when the II+ came out.

Yes, but it came back again later (IIgs, IIc UniDisk ROM version,
enhanced IIe).  The one in later machines works a little differently,
though.

You can get the original mini-assembler on any Apple II if you boot DOS
3.3, go into Integer BASIC, then get into the monitor and type F666G.  I
forget how you get out again - possibly $FF69G.  The $ sign is a prefix
for issuing monitor commands while in the mini-assembler.

For the IIe, IIc and IIgs mini-assembler, you just type ! to get into
it, and press return to get out again.  It doesn't support embedded
monitor commands.  The IIgs version has one feature that the IIe and IIc
ones are missing: you can enter the first instruction from the monitor
command line, e.g.

*!300:LDA #C8
00/0300  A9 C8        LDA #C8
!

Another point where all versions differ is the instruction set
supported.  The original Integer BASIC and enhanced IIe mini-assemblers
only support 6502 instructions.  The IIc one supports 65C02 and the IIgs
one supports 65816.

> The mini-assembler used some of the routines in the disassembler.

The lookup table for the mnemonics, and possibly the instruction size
tables and/or the "how big is this instruction" call.  I can't quite see
how, though.

> However, Sweet-16 was not the name of the mini-assembler.  It was an
> interpreter for a 16-bit pseudo-machine language.  It was meant to be
> invoked when 16-bit operations were needed, and then you'd switch back to
> 6502 machine language.

Yep.  Sweet-16 was a virtual machine, with eight 16-bit registers, using
zero page locations $00 through $1F to hold the register data.  Quite a
nice little machine.

> WOZ mentioned it in connection with integer BASIC, but I can't remember
> whether he said in the interview that integer BASIC used Sweet-16, or that
> he didn't have it ready in time for use with the BASIC.

Integer BASIC doesn't use Sweet-16, but some of the "Programmer's Aid
#1" utilities (accessed via CALLs) do.

Sweet-16 was also used by the Big Mac/Merlin assembler, up to and
including Merlin-Pro and Merlin-8.  Merlin-16 and Merlin-16+ are written
in native 65816 assembly language.

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