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).