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

Re: The enhanced Apple//e's Assembler/Disassembler.



Klil N. (spamfree@poboxes.com) wrote:
: Hello,
: I stumbled into some kind of Asm/Dasm utility with a '*'
: prompt.
: I found that 'I' creates inverted text while 'N' turns it
: back to normal. Could anyone please tell me of it's
: commands?
: Thank you kindly in advance,
: Klil N.

Actually, that part is on ALL Apple ]['s, though there are subtle variations.

I:  Set text mode to INVERSE
N:  Set text mode to NORMAL
n^P:  Jump to $Cn00, where 0<=n<=7, effectively booting the device in that
      slot
^B:  Enter the current BASIC (Applesoft or Integer) (current program lost)
^C:  Enter the current BASIC (Applesoft or Integer) (current program retained)
^Y:  Jump to the Monitor's user vector (I forget the address...)

addrL:  Disassemble a page of assembly beginning at addr
addr1.addr2:  Display (hex dump) the contents of all memory locations from 
              addr1 to addr2.
addr:  Display the contents of memory location addr
addrG:  Jump to addr and start executing the code there
addr:value:  Put hex value into memory location addr.  If more than one
             byte is given, subsequent bytes will be written into
             successive memory locations.  So 
             *300:4C D0 03 
             is the equivalent of
             *300:4C
             *301:D0
             *302:03

There are more, for instance, commands for displaying the contents of the
registers.  You are looking at the Monitor, and you can get there from
BASIC without crashing with a 
]CALL -151

And you can return to BASIC with a 
*3D0G

If you entered the Monitor from Integer BASIC, i.e....
>CALL -151

then you have a couple of other features available, most notably...

*F666G
which will take you to the Mini Assembler!
In the Mini Assembler, you can enter a line of 6502 mnemonic code and it
will automagically be converted to object code.  Sorry, no labels.  Use
the address for the first line, a leading space for subsequent lines.  So
you type...

!300:LDA #$87
! JSR $FDED
! RTS

and what will appear on the screen is...
0300- A9 87    LDA #$87
0302- 20 ED FD JSR $FDED
0305- 60       RTS
!
You can issue Monitor commands to the Mini Assembler by prefixing the
command with a "$".  Return to the Monitor by jumping to its entry point...

!$FF69G
*

Note that the Mini-Assembler does not exist in the Applesoft BASIC version
of the Monitor...you MUST enter the Monitor from Integer BASIC to use the
Mini Assembler.

EXCEPTION--Integer BASIC not required--
The Mini-Assembler is back in the *enhanced* //e and in the IIgs (not sure
about the //c).  From the Monitor prompt, just type the Mini-Assembler
prompt--

*!
!

Pressing RETURN on a blank line will take you back to the Monitor.

In the Apple ][ (NOT the ][+ or later), in addition to the "G" command,
you could also use the "S"tep and "T"race commands for
instruction-by-instruction debugging...the Monitor would show you the
registers after each instruction.  As I have //e's and a IIgs, I've never
used STEP and TRACE.

There you have it...an introduction to the Monitor and Mini-Assembler.

--Dave Althoff, ][.
-- 
    /^\        _       _              ***  Closed for the season  ***
   /XXX\      /X\     /X\_      _     /X\__      _     _        _____  
  /XXXXX\    /XXX\  _/XXXX\_   /X\   /XXXXX\    /X\   /X\      /XXXXX
_/XXXXXXX\__/XXXXX\/XXXXXXXX\_/XXX\_/XXXXXXX\__/XXX\_/XXX\_/\_/XXXXXX