     
     -B-  SUMMARY OF COMMANDS - optional info & parms in brackets
     
     
     I(NSERT):              Inserts text after the last ln of
                            text file
     I(NSERT) {ln#}:        Inserts text before line number "ln#"
     D(ELETE) ln#:          Deletes line number "ln#"
     D(ELETE) ln#{,ln#}:    Deletes line in range specified
     L(IST):                List the entire file
     L(IST) {ln#):          Lists a single line
     L(IST) {ln#,ln#}:      Lists lines in range specified
     LO(AD):                Loads text file from cassette
     LO(AD) {filename}:     Loads file from disk
     SA(VE):                Saves file to cassette
     SA(VE) {filename}:     Saves file to disk
     W(RITE) filemame:      Writes file to disk as a TEXT type
                            file
     AP(PEND):              Loads a file from tape and appends
                            it to text
                            file in memory
     AP(PEND) {filename}:   Loads a file from disk and appends
                            it to the file in memory
     Control-D:             Execute DOS command directly from
                            LISA's command level
     Control-P:             Jump to user defined routine
     LE(NGTH):              Prints the length (in hex) of the
                            current text file
     A(SM):                 Assembles current text file
     BRK:                   Breaks to Apple monitor
     F(IND):                Searches for the specified label
     
     
     -C-  EXPLANATION OF ERRORS
     
     Command Level:
     
     ILLEGAL COMMAND:    User typed in an unrecognizable command at
                         the command level--usually a typo.
     
     ILLEGAL LINE #:     A digit was expected but not found
     
     
     Edit Time:
     
     ILLEGAL SYMBOL IN LABEL: An illegal symbol was detected in the
                              label field. Possible a control character.
     
     LABEL TO LONG:           A label appeared in the label field which
                              contained more than 6 characters.
                              If 7th or longer in the operand field.
     
     ILLEGAL MNEMONIC:        Symbol in the mnemonic filed is not a valid
                              LISA mnemonic. Causes-- beginning the
                              mnemonic in column one, beginning the
                              label in other than column one, the
                              mnemonic is missing (perhaps you forgot
                              to delimit a label with a  ":"?), or a
                              simple typo.
     ILLEGAL ADDRESSING MODE: Attempted to use an addressing mode which
                              is not possible for the intended instruction.
     
     ILLEGAL OPERAND:         General catch-all for syntax errors in the
                              operand field.
     
     NOT ENOUGH DIGITS:       Occurs when a hex string is entered with an
                              odd number of digits. It take two hex digits
                              to equal one byte and leading zero's must be
                              typed into the HEX string.
     
     ILLEGAL HEX DIGIT:       A hex digit was expected, but not found
                              (remember, in hex strings you don't use "$").
     
     ILLEGAL BLANK IN OPERAND FIELD: The first non-blank character in the
                              operand filed after the first blank detected
                              was not ";" or return.
     
     ILLEGAL CHARACTER IN STRING: Occurs when user did not enclose the
                              entire string in quotes, or attempted to
                              use the " or ' characters without
                              doubling them up.
     
     STRING ERROR:            Usually occurs when the string does not
                              have closing quotes.
     
     
     Assembly Time Pass One:
     
     VALUE EXCEEDS $FF:       User attempted to define a zero page
                              location using EPZ, but the value of the
                              expression exceeded $FF.
     
     ILLEGAL EXPRESSION:      The address expression in the operand
                              field of the EPZ opcode is invalid.
     
     MISSING 'END':           The end of the text file was encountered
                              but no END opcode was present.
                              This error is an automatic abort.
     
     DUPLICATE LABEL:         Zero page variable was previously defined
     
     ILLEGAL OPERAND IN ADDRESS FIELD: An illegal quantity was present in
                              the address field ("*" is not allowed in
                              EPZ statements).
     
     SYMBOL WAS NOT PREVIOUSLY DEFINED IN AN EPZ STATEMENT: Occurs when a
                              symbolic reference is made in the address
                              expression, but the label was not
                              previously defined.
     
     
     PASS TWO:
     
     DUPLICATE LABEL:         User attempted to redefine a previously
                              defined label.
     
     UNDEFINED SYMBOL/ILLEGAL ADDRESS: Occurs when a symbol is found
                              which is not defined in the program.
     
     ILLEGAL FORWARD REFERENCE: Occurs when the user attempts to use a
                              symbolic reference in the address
                              expression of an EQU opcode which has
                              not been previously defined.
     
     EQU W/O LABEL:           an equate was encountered,
                              but no label was present.
     
     STY ABS,X NOT ALLOWED:   User attempted to use an illegal
                              addressing mode.
     
     ABS,Y NOT ALLOWED:       User attempted to use an illegal
                              addressing mode, variable must be zero page.
     
     ** DAMAGE ** ILLEGAL CHARACTER IN OPERAND: This usually occurs when
                              part of the text file has been destroyed
                              (watch OBJ's & ORG).
     
     
     PASS THREE:
     
     UNDEFINDED SYMBOL:       Label in expression field was not defined
                              anywhere else in the program.
     
     BRANCH OUT OF RANGE:     Relative addressing only allows a range of
                              -126 to +129:, this range was exceeded.
     
     UNDEFINED SYMBOL - MUST BE ZPAGE: An undefined symbol was encountered.
                              This particular symbol, due to its usage,
                              must be a zero page variable.
     
     ADDRESSING MODE REQUIRES ZPAGE VARIABLE: user attempted to use an
                              absolute location where a zero page location
                              is required.
     
     -USR PSEUDO OPCODE
     
     LISA  2.5 supports a special, user-definable,pseudo opcode.  This
     is  a  no  hold  barred,  always  syntactically   correct,   user
     assignable  pseudo opcode.  Whenever USR opcode is encountered, a
     JSR to location $E029 is performed.  Normally  there  is  an  RTS
     instruction  &  two NOP instructions at location $E029.  You can,
     replace these three bytes with  a  jump  to  your  pseudo  opcode
     handler.   In  order  to  perform some operations you may need to
     call some of the routines within the LISA package.   Three  files
     in the disk,
     
     LISA P1.L
     LISA P2.L
     LISA P6.TXT
     contain  sources  for  portions  of LISA ; you may take a look at
     these files and call any  routines  within  them.   Other  useful
     routines are: 
     
     ERRR-
     prints  an  error  message and gives the user the chance to abort
     assembly.  ERRR's location is $EBE6, the calling sequence is: 
     
     JSR ERRR ASC 'ERROR MESSAGE' HEX 00
     
     If user wishes to continue, control  will  be  returned  to  your
     program after the HEX 00 statement. 
     
     GETADR-
     PNTR  points at the beginning of the current line, the Y register
     contains an index into current line.  GETADR converts the address
     expression found at the spot in the line  pointed  at  by  the  Y
     register into a 16-bit value which is returned in location SADR &
     SADR+1.   Carry  is  returned clear if there was an error, set if
     there was no error.  Two locations are of interest after  a  call
     to GETADR: 
     EYET
     if  true,  specifies  an absolute address expression, if false, a
     zero page address expression. 
     
     BIT #6 of AFND: 
     is set if symbolic labels were pre-declared.  If  there  are  any
     forward  references (during pass 2, at pass 3 they are undeclared
     symbols) then AFND has a zero in bit six.  Calling address: $EBE9
     
     SYMLUP
     looks up the symbol pointed at by PNTR and the Y register.   EYET
     should  be  set  to  zero before calling SYMLUP.  On return, EYET
     will be set to one if the symbol is not zero page and  the  carry
     flag  will  be  set  if  the  symbol  was found in the symbol tab
     Calling address- $EBEC. 
     
     Useful variables: 
     
     PNTR: ($EA)   points at the beginning of the current line
     LNUM: ($F2)   hold line number of current line
     SADR: ($91)   value of symbol or address expression returned here
     EYET: ($97)   returned with 0 if zero page value, one otherwise
     LOCC: ($99)   location counter.Contains the current program
                   counter address
     CODE: ($9B)   code counter. Contains the address of where the next
                   byte of object code is to be stored.
     AFND: ($9F)   returned with $FF if all symbols in address expression
                   were defined
     PRTR: ($A1)   Set to true (1) if LST option is in effect,
                   false (0) if NLS option in effect
     CDSP: ($A2)   Contains the number of bytes of object code output
                   by this operation. Should be set to zero if no
                   code is output
     PASS: ($BC)   Contains 0 if this is pass two, contains 1 if this
                   is pass three (USR address at $E029 is not called
                   during pass one)
     FNAME: ($2C0) $2C0-$2DF contain the filename of the current
                   assembling file
     CODSAV:($2E0-$35F) output code buffer, each byte of output
                   object code is output to this buffer by successive
                   calls to OUTC
     
     Upon calling the  routine  at  $E029  several  conditions  exist.
     First,  if there was a symbol at the beginning of the line it was
     entered into the symbol table ( during pass two,  at  pass  three
     the symbol is ignored), PNTR points at the beginning of the line,
     and  the Y register points at the USR mnem.  token.To point the Y
     register at the operand field simply increment it by two.Now  you
     can  parse  the operand field and do whatever you please with it.
     The operand field is terminated with a carriage return ($D).  You
     must terminate your user routine with a  BIT  $C080  and  an  RTS
     instruction. 
     
     
     XREF/65
     A  general  purpose  cross  reference generator for LISA 1.5F and
     LISA 2.x.  To use you must have Applesoft ROM or  16K  RAM  CARD,
     also  a printer interface installed in slot one, & 48K or larger.
     Make sure program is without errors if not complete insert  dummy
     labels.  Before cross reference generate a TEXT type file of your
     LISA  program.   (L)oad then W)rite).  Boot XREF/65 disk and "RUN
     XREF/65". 
     
     SCTOLISA
     SC ASSEMBLER  II  3.2-  converts  these  files  to  LISA.   "BRUN
     SCTOLISA"-  enter  SC ASSEMBLER II filename, return, file will be
     converted to LISA format.  The file is written to disk as a  TEXT
     type  file.   SC-CONVERTED-  may  be  EXEC'd  into  LISA.   Other
     problems....SCTOLISA does not handle  certain  types  of  address
     expressions very well. 
     
     SORT 2.0
     A  symbol  table  sort  routine  provide  for  2.2  users.   BRUN
     immediately after an assembly in order to print a sorted (numeric
     & alphabetic) symbol table listing. 
     
     
     DISASM/65
     This produces a symbolic disassembly listing.  You  can  relocate
     programs,   see   how   other  programs  are  written,  patch  up
     programs.DISAM/65 allows the user to specify hexadecimal,  ASCII,
     address,   and   pushed   address  data  types.   To  run-  "BRUN
     DISASM/65".   Prompt   "ENTER   RANGE   OF   DISASSEMBLY"--answer
     beginning  &  ending  addresses  of  section  of  code  you  wish
     disassembled. 
     
     -HIRES ROUTINES
     These routines are intended  for  assembly  language  programmers
     only.   For  the  most  part  these cannot be called from INTEGER
     BASIC, APPLESOFT, OR TINY PASCAL.  Being easy to use the routines
     are very fast.  The subroutine package  includes  routines  which
     plot  a  point,  erase a point, perform base calculations, draw a
     line, create a shape matrix, detect if  any  dots  are  ON  in  a
     specified  range,  clear  the hires screen, turn on the graphics,
     draw a picture, "OR" a picture to the  screen,  erase  a  picture
     from the screen, "XOR" a picture to the screen, erase a line, and
     set  parameters.   A SYMBOL routine allows you to draw any of the
     96 printable ASCII characters onto the screen,  in  a  format  of
     46x30.   Most  of  the routines in HIRES work on the principle of
     NXM picture. 
     
     RADAR
     is used to determine whether or not any bits (i.e.  dots) are  ON
     within a specified range.  The calling sequence for RADAR is: 
     
     JSR RADAR HEX WIDTH HEX HEIGHT
     
     
     DRAWLN & ERSLN    Draw and erase lines on the hires screen.
     DXY               Allows the programmer to initialize
     SYMBOL            Allows the user to display ASCII characters
     PICTURE           Points to the ASCII representation of the picture
     PIX               Praws the picture verbatim onto the screen
     ORPIX             is similar to PIX except the picture is OR'd
                       onto the screen instead of drawn verbatim
     ANDDIX            Is used to erase a picture on the screen
     XORPIX            Exclusive-OR's the picture to the screen
                       allowing interesting effects






















