;
; The missing 'HELP' facility for ZCPRKPII
; 24 June 1983 
; Gary K. Berkheiser
; Ergo Software, Inc.
;
; This helps compensate for a lack of  on-line
; documentation that came with my copy of ZCPRKPII
; which was obtained via the Kaypro Users Group of N.J.
; My thanks guys, so here's a little bit in return.
;........................GKB
;
;
; My source of information for CP/M is:
;  "CP/M PROGRAMMER'S REFERENCE GUIDE"
;   revised edition, by Sol Libes,
;   Editor of 'MICROSYSTEMS'
;
; Information on ZCPR came from an article in the June 1983
; 'MICROSYSTEMS' pp 90-98
;		-and-
; 'DOCTOR DOBB'S JOURNAL' #81 July 1983, pp 86-90
;
;
;
;	equates
cr	equ	0dh		;carriage return
lf	equ	0ah		;linefeed
ctlz	equ	1ah		;control-z(clear screen)
ctrlc	equ	3		;control-c(exit)
;
;	bdos equates
;
bdos	equ	0005h		;address to call for access
conin	equ	1		;get a character from console
conout	equ	2		;display a character on the console
msgout	equ	9		;send string to console
const	equ	11		;console ready status
				;00=not rdy, ff=ready
;
;
	org	0100h		;start of it all
;
begin:	lxi	h,0		;save system sp
	dad	sp		;
	shld	oldsp		;saved
	lxi	sp,stack	;set our stack
	lxi	d,screen1	;bring up first screen
	mvi	c,msgout
	call	bdos
	call	getres		;wait for user done with this one
	lxi	d,screen2	;bring up the second screen
	mvi	c,msgout
	call	bdos
done:	lhld	oldsp		;restore cp/m stack
	sphl			;
	ret			;no reboot as no files used
; get user keystroke
; if its a control-c exit, otherwise return
;
getres:	mvi	c,const		;look for character ready
	call	bdos
	ora	a		;check result
	jz	getres		;loop on no character
	mvi	c,conin		;get input character
	call	bdos
	cpi	ctrlc		;is it abort character?
	jz	done		;exit if so
	ret			;return with character
;
;
; messages
;
screen1:	db	1ah	;screen clear
	db	'                             '
	db	'ZCPR BUILT-IN COMMANDS'
	db	'                   Page 1',cr,lf,cr,lf
	db	'DIR (d:)		Display files on selected '
	db	'drive.',cr,lf
	db	'DIR (d:)filename.typ	Search for named file '
	db	'on specified drive.',cr,lf
	db	'DIR (d:)*.typ		Display all files of '
	db	'"typ" on specified drive.',cr,lf
	db	'DIR (d:)filename.*	Display all types of '
	db	'"filename" on specified drive.',cr,lf,cr,lf
	db	'TYPE (d:)filename.typ	Display ascii file on '
	db	'console.',cr,lf
	db	'LIST (d:)filename.typ	Copy ascii file to '
	db	'listing device. No paging.',cr,lf,cr,lf
	db	'ERA (d:)filename.typ	Erase specified file.',cr,lf
	db	'ERA (d:)*.*		Erase all files on selected '
	db	'drive and current user.',cr,lf
	db	'ERA (d:)*.typ		Erase all files of "typ".'
	db	cr,lf
	db	'ERA (d:)filename.*	Erase all files of "filename".'
	db	cr,lf,cr,lf
	db	'REN (d:)newname.type=oldname.typ '
	db	'   Rename  a file.',cr,lf,cr,lf
	db	'SAVE n (d:)filename.typ'
	db	' Save "n" 256 byte pages of memory to disk.',cr,lf
	db	cr,lf
	db	'USER n			Change to a new user area. '
	db	'(n=0 to 15)',cr,lf
	db	'DFU n			Change default user.'
	db	' (n=0 to 15)',cr,lf,cr,lf
	db	'd:			Log in specified drive.',cr,lf
	db	'[more]$'
screen2:db	1ah,'                             '
	db	'ZCPR BUILT-IN COMMANDS                   '
	db	'Page 2',cr,lf,cr,lf
	db	'GO			Start program execution '
	db	'at 100H.',cr,lf,cr,lf
	db	'GET			Load a file anywhere in '
	db	'memory. Will not allow',cr,lf
	db	'                        overwrite of BDOS or BIOS.'
	db	cr,lf
	db	'JUMP xxxx		Start program execution '
	db	'at "xxxx" - address in HEX.',cr,lf,cr,lf
	db	'                              '
	db	'ADDITIONAL UTILITIES',cr,lf,cr,lf
	db	'FF			Send a formfeed to the '
	db	'listing device.',cr,lf
	db	'PRT96			Set OKI92 to print at '
	db	'12 cpi.',cr,lf
	db	'PRT144			Set OKI92 to print at '
	db	'17.5 cpi.',cr,lf
	db	'PRT80			Set OKI92 to print at '
	db	'10 cpi.',cr,lf,cr,lf
	db	'CLS			Clear KAYPRO II screen.'
	db	cr,lf,'$'
;
oldsp:	ds	2			;save stack
	ds	22			;our stack
stack:	ds	2
;
	end
