[comp.sys.apple2] Replies to LISA questions

rhyde@spahn.ucr.edu (randy hyde) (05/20/91)

There have been several questions posted about LISA.  Here they are and the
answers to those questions:

(1) How are directives such as .table, .endt, .assume, .reference, .deref, etc.
used?  Most of these are ignored by the assembler.  Except for .assume,
they were
stuck in to support a data flow analyzer I wrote for Fenwal Automated Systems
many years ago.  .ASSUME was never finished.  It was supposed to let you
specify
the location of the DBR and DP registers so the assembler could automatically
switch to direct page or ABS addressing modes.

(2) How do I quit the insert mode in LISA/02?  Press control-@ (shift-ctrl-2).

(3) How do you select the auxtype with the ".tf" directive?
	.tf "file",type,auxtype
    where type and auxtype are address expressions.

(4) The "eject" button in the file dialog boxes doesn't seem to work.  Hmmm....

(5) The file dialog boxes could use a "close" button.  Just click on the
directory name above the file list.  It will open a menu of enclosing
subdirs.  Take your pick (all the way to the root).

(6) When assemblying IIGS load files, is there a way to set the Segname
of the load file segments?  No.  This is my major complaint with LISA. 
I keep telling Brian he needs to get segmentation working properly.  If
everyone starts bitching,
maybe he'll get around to it.

(7) Manuals are available for LISA and LISA/816.  Send me email if you
want the address.  LISA/816 is available from anonymous FTP at
ucrmath.ucr.edu in the PC subdirectory.  One of these days I will figure
out how to clean everything up to make people happy.  Right now LISA/816
and ANIX 3.0 are available as ".SHK" files requiring GSHK.  The other
LISA and ANIX files (for Apple IIe systems) are in
binary II format.  The sources are not packed with a strange compaction
utility.  LISA stores source files in a tokenized (compacted) form. 
Those files should look like Integer BASIC files when you download them.
LISA loads these things directly.

(8) LISA is an assembler for the Apple II;  LISA/816 is an assembler for
the Apple II gs.  They are very fast (a couple of orders of magnitude
faster than ORCA, for example).  ANIX is a shell for ProDOS and GSOS. 
The ANIX 2.x version actually works.  The 3.0 version (for GSOS)
actually worked at one time, but I screwed around with it till it didn't
work any more.  It is still useful because it contains a lot of source
code for some very useful library routines (e.g., printf, floating
point, etc.) which any assembly language programmer can use.
*** Randy Hyde

rhyde@hubbell.ucr.edu (randy hyde) (05/21/91)

Another question:  How to access sixteen-bit constants?

LISA uses a syntax based on the SC-Assembler (tells you how old the original
product was).  LISA uses different symbols to select the immediate mode
as follows:

	lda	#expr		;Loads L.O. byte of expr into acc
	lda	/expr		;Loads H.O. byte of expr into acc
	lda	\expr		;Loads bank byte of expr into acc
	lda	|expr		;Loads the 16-bit value of expr into acc

The LISA manual claims "long" and "short" work just like ORCA, but I
never got them to work for me.  Presumably the ".assume" directive was
to handle this, but
I *know* it's not working.
*** Randy Hyde

Note: To those having problems unpacking the stuff on UCRMATH, I will
attempt to
repost *uncompressed* files before too long.  I've had a dozen different
suggestions on which compression technique to use.  I've come to the
conclusion that *no* scheme at all is the best.

ART100@psuvm.psu.edu (Andy Tefft) (05/21/91)

About the lisa source disk:

The file lisa.source on ucrmath was (when I got it) a disk packed
with a program called propacker. I know very little about propacker,
except that i was lucky enough to have it on a disk of utilities
I got with my unidisk. I re-packed the files as a shrinkit archive
and uploaded them, putting them in the uploads directory on tybalt.

Yes, the files are tokenized. Randy said somewhere (in one of the
files on ucrmath) that lisa 3.2 wouldn't be able to read in the
sources because of a different tokenization scheme, but it DOES
read them in. You can then use the 'write' command to output
the files as plain text.  I have been able to assemble Lisa (the
source is not for v3.2 though), but not put it together into a runnable
version (it is missing a file called lisa.loader or something like that).
The source is educational, though.

I probably won't post the source to comp.binaries, but have sent
the archive to jac@paul.rutgers.edu and I think he intends to put
it on comp.sources (presuming he can detokenize the files).

ART100@psuvm.psu.edu (Andy Tefft) (05/21/91)

Oh, by the way, I have a question on saving object files.
I have been doing it with the anix 'save' command, but this
seems to be a pain, as you have to know the obj address and
length. Other assemblers save the object for you... does Lisa 3.2
have a way to do this?

rhyde@feller.ucr.edu (randy hyde) (05/23/91)

I seem to recall that there is a "SAV" assembler directive.  May not
actually be there though.  The ".tf" directive was added to LISA/816
specifically for this purpose (keep in mind, LISA 3.2 is *very* old).

ART100@psuvm.psu.edu (Andy Tefft) (05/23/91)

There is a SAV pseudo-opcode, and its syntax seems to be

 SAV "name",start,length

Which, of course, doesn't save me anything since I still have
to figure out the length. I am just perplexed at why the authors
of an assembler would purposely leave out the ability to save
the object code with the assembler automatically supplying the
start and length.

rhyde@koufax.ucr.edu (randy hyde) (05/25/91)

>> I am perplexed why the authors of an assembler...would leave out...

Mainly because the original code was written in 1978 and people had different`
requirements back then.  LISA/816 certainly supports this feature with the
".tf" directive.
*** Randy Hyde

(Note: In 1978, people were assembling absolute object code to spots all over
memory, the SAV command was useful because you could save a sequence of
non-contiguous blocks to disk.  Indeed, in the memory-limited environment of
the Apple II-, I remember only having 6K available for object code storage.
For really long assemblies I could reuse that 6K over and over again by simply
using the OBJ directive in conjuction with the SAV directive.  As memory
became more plentiful, this problem went away.  That's when the ".tf" directive
got added.  Keep in mind that LISA 3.x was written in 1982-1984.  Don't expect
it to perform like an assembler written in 1991.  Use LISA/816 if you want
(somewhat) modern features).