;--------------------------------------------------------------
; 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
