;This program has been adapted from John C. Smith's VDO-KPSL.ASM
;by the simple expedient of stripping out his message of VDO
;functions and allowing you to substitute your own message.
;
;The program will write the 25th line with any message you
;insert.  Very handy for cues to specific function keys for
;certain programs--you can have a differently-named version for
;various programs, i.e, Wordstar, Perfect Writer, VDO,
;spreadsheets, etc.   

;To clear the 25th line (it stays there once installed) you must
;use CLS.COM.  An effective CLS.COM can be prepared with GTXT.COM
;or TXT.COM.  Simply put the following line between the '@' and
;the '?':
 
;	^Z^[bd^[B7

;and then write it to a file you name CLS.COM. 

;     (NOTE: The characters beginning with '^' above should be
;     REAL control characters (the above are not). Use the
;     "CTL-Q" facility in Perfect Writer.  I'm not sure what the
;     equivalent protocol is in Wordstar or other word
;     processors.)            
         				

;Thus, with a SUBMIT or EX file, you can bring up the
;appropriate 25th line, run the program, and automatically clear
;the screen and line when you're through.
;
;						- Irv Block
;						7/11/85

;----------------------------------------------------------------

; equates

bdos	equ	5		;CP/M's BDOS entry point
esc	equ	1bh		;ESCape for Kaypro video sequences

	org	100h		;CP/M's program area

start:	lxi	h,0		;save CP/M's stack by adding it
	dad	sp		;to the stack pointer and
	shld	cpmstk		;storing it in a safe place
	lxi	sp,stack+20	;to generate a new stack for use
				;by this program

	lxi	d,msg		;point at message
	mvi	c,9		;print string function
	call	bdos		;do it

	lhld	cpmstk		;get the old stack back
	sphl			;switch into stack pointer
	ret			;and return to CP/M

; The command line message:

msg:	db	esc,'B6'	;save cursor position
	db	esc,'B7'	;enable 25th line
	db	esc,'=8 '	;position cursor to 25,0

; the following are the actual labels to be written to the
; 25th line - edit them to suit your VDO.KEY def format

	db	esc,'B0'		;inverse video on
	db	esc,'B1'		;dim video on
	db	'THIS IS THE 25TH LINE - PUT YOUR MESSAGE HERE'


	db	esc,'C0'	;inverse video off
	db	esc,'C1'	;dim video off
	db	esc,'C6'	;recall cursor position
	db	'$'		;end of msg

cpmstk	dw	0		;old stack saved here

	ds	20		;stack grows down
stack	equ	$		; ds must be BEFORE label stack

	end			;that's all folks
ave CP/M's stack by adding it
	dad	sp		;to the stack pointer and
	shld	