;--------------------------------------------------------------
; MXT-AP31.ASM
;
REV     equ     30
;
; MEXplus Terminal Overlay for Apple ][+ and //e
;                    (][+ assumes videoterm card)
;--------------------------------------------------------------
; Revision History:
;--------+--------+----------+---------------------------------
;revision|  Date  |  Author  |        Description
;--------+--------+----------+---------------------------------
;  3.1   | 7/6/87 | Jim Lill | Renamed using current MXT
;        |        |          | convention. Fixed attributes
;        |        |          | take space problem.
;  3.0   | 6/21/86| Jim Lill | Renamed properly with revision
;        |        |          | control. Extensive attribute
;        |        |          | changes. Added IF control for
;        |        |          | assembly of ][+ and //e versions.
;        |        |          | Added fkeys for PCPI-//e
;        |        |          | Tested thoroughly with PCPI
;        |        |          | 2nd hand report Softcard OK
;--------+--------+----------+---------------------------------
;APPLETER|  3/86  | jpl      | no revision number. Bug in Code
;        |        |          | DO NOT USE
;--------+--------+----------+---------------------------------
;APLPCPI |  2/86  | jpl      | original version derived from
;        |        |          | TVI950.ASM
;--------------------------------------------------------------
; This file must assemble in 384 bytes or less.
;
;
       org     01E80H
;
false   equ     0
true    equ     not false
esc     equ     1bh
;
;--------------------------------------------------------------
                               ;******************************
plus    equ     false           ;set true for ][+, false for //e
pcpi    equ     true            ;set true for Applicard
                               ;******************************
;--------------------------------------------------------------
;
;                               ;print title, must be 32 chars
;                               ;no more, no less
if plus
       db      'Apple ][+ '    ;ten characters
endif
;
if not plus
       db      'Apple //e '    ;ten characters
endif
;
if pcpi
       db      'and Applicard, v'      ;sixteen chars.
endif
;
if not pcpi
       db      'and Softcard,  v'      ;sixteen chars.
endif
;
       db      rev/10+'0','.'  ;add revision number, two chars.
       db      rev MOD 10+'0'  ;add rest of rev, one char
       db      '   '           ;make up the balance for 32 total
       db      24              ;# rows
       db      80              ;# cols
       db      'R'             ;Row, column first ("R" or "C")
       db      'B'             ;Variable, binary x,y ("V" or "B")
       db      31              ;Row offset \ Related to top col # and
       db      31              ;Col offset / top column #, 13 lines below
       db      0               ;XY delay     (all delays in milliseconds)
       db      0               ;CLS delay
       db      0               ;CLREOS delay
       db      0               ;CLRBOS delay
       db      0               ;CLREOL delay
       db      0               ;CLRBOL delay
       db      0               ;CLREOL delay
       db      'N'             ;Y/N Attributes take screen space
       db      'Y'             ;Y/N Attributes can accumulate
       db      'Y'             ;Lower case ok
       db      'Y'             ;Generates control characters (most do)
       db      'N'             ;ANSI compatible
       db      1               ;top row # \ Added to r/c offsets above, 'cause
       db      1               ;top col # / that's how Atlantis database works
       db      0,0,0           ;rsvd
;
; End of fixed area.  The remainder of the record consists
; of variable-length function strings, each terminated in
; a zero.  If your terminal doesn't have a particular
; function, its string should be a "DB 0".
;
       db      esc,30,0        ;home cursor
       db      esc,'*',0       ;clear scrn
       db      esc,'=',0       ;xy leadin
       db      0               ;xy separator
       db      0               ;xy end sequence
       db      esc,'Y',0       ;clear from cursor to end of screen
       db      0               ;clear from start of scrn to cursor
       db      esc,'T',0       ;clear from cursor to end of line
       db      0               ;clear from beginning of line to cursor
       db      13,esc,'T',0    ;erase line  (synthesized from <cr> & CEOL)
       db      esc,')',0       ;enter blink mode  \ uses reverse video
       db      esc,'(',0       ;exit blink mode   / instead
       db      esc,')',0       ;enter reverse video
       db      esc,'(',0       ;exit reverse video
       db      esc,')',0       ;enter underline mode \ uses reverse video
       db      esc,'(',0       ;exit underline mode  / instead
       db      0               ;enter bright-character mode\ don't try to use
       db      0               ;exit bright                / reverse here
       db      0               ;enter dim-character mode   \ seems to have
       db      0               ;exit dim                   / no effect
       db      esc,'(',0       ;all attributes off
;
;keyboard stuff.... Used the familiar Wordstar keys
;
       db      5,0             ;cur up key    ctrl-E
       db      18,0            ;cur dn key    ctrl-X
       db      4,0             ;cur rt key    ctrl-D
       db      13,0            ;cur lt key    ctrl-S
;
; more codes
;
       db      7,0             ;bell
;
if plus                         ;][+ doesn't support insert line
       db      0               ;insert line
endif
;
if not plus
       db      esc,'E',0       ;insert line on cursor's line
endif
;
       db      esc,'R',0       ;delete cursor's line
       db      esc,'Q',0       ;insert char at cursor position
       db      esc,'W',0       ;delete char at cursor position
       db      0               ;cursor on (enabled)
       db      0               ;cursor off (disabled)
;
; The following are sequences generated by the terminal's
; function keys.  If your terminal doesn't have function
; keys, these should all be "DB 0"
;
if plus

       db      0               ;fk 1
       db      0               ;fk 2
       db      0               ;fk 3
       db      0               ;fk 4
       db      0               ;fk 5
       db      0               ;fk 6
       db      0               ;fk 7
       db      0               ;fk 8
       db      0               ;fk 9
       db      0               ;fk 10
;
endif
;
if (not plus) and pcpi
;
; The //e and Applicard combination offers the nicety of the FUNCTION
; key assignments working with the open and closed Apple keys. If you
; want to be more like a TVI-950, make a file with the numeric keys
; assigned as follows and use one of the "Apple" keys to send the
; string.  You still can use the numerics with a MEX.KEY file for
; something else, accessed by ESC n
;
       db      1,'@',13,0              ;fk 1
       db      1,'A',13,0              ;fk 2
       db      1,'B',13,0              ;fk 3
       db      1,'C',13,0              ;fk 4
       db      1,'D',13,0              ;fk 5
       db      1,'E',13,0              ;fk 6
       db      1,'F',13,0              ;fk 7
       db      1,'G',13,0              ;fk 8
       db      1,'H',13,0              ;fk 9
       db      1,'I',13,0              ;fk 10

endif
;
; Graphics characters (line drawing).  If your terminal supports
; a graphic character mode, fill in the first two sequences; each
; time MEX prints a graphics character, it prints the enter-mode
; string, followed by the particular graphics character's string,
; followed by exit-graphics.  Some terminals do not have a graph-
; ics or line-drawing mode, but instead use a sequence to print a
; particular graphics character.  If that's the case with your
; terminal, define the enter and exit strings as "DB 0".
;
       db      0               ;enter graphics mode
       db      0               ;exit graphics mode
;
; These are the characters supported by MEX.  If your terminal
; doesn't support line-drawing characters, change each of these
; to a "DB 0".
;
       db      0               ;vertical bar
       db      0               ;horizontal bar
       db      0               ;upper left corner character
       db      0               ;upper right corner
       db      0               ;lower left corner
       db      0               ;lower right corner
       db      0               ;crossed lines
       db      0               ;vbar with right hand extension
       db      0               ;vbar with left extension
       db      0               ;hbar with upper extension
       db      0               ;hbar with lower extension
       db      0               ;small dot
       db      0               ;solid white block
       db      0               ;checkerboard
;
       db      0               ;terminal init string
       db      0               ;terminal de-init string
;
       end