;	This file loads METAL.COM and use the MENTER.OVR to init name..
;
;	09/02/84  MENTR.COM
;
; It is expected that this be called MENTR.COM, and is the file loaded
; by BYE as a caller comes in.  This is required because something MUST
; be in the command line (default dma 80h buffer) to indicate that the
; name/id enter program be run, OTHERWISE the message system will read
; the lastcalr file and use the last users ID.
;
user	equ	0	; user area to get metal.com from....

	org	100h
	lxi	h,005ch		; default fcb
fcbloop1:
	mvi	m,0 
	inx	h
	mov	a,l
	cpi	80h
	jnz	fcbloop1
	lxi	h,005dh		; where to put name of file
	lxi	d,fname
fcbloop2:
	ldax	d
	ora	a
	jz	done
	mov	m,a
	inx	h
	inx	d
	jmp	fcbloop2
;
fname:	db	'METAL   COM',0
;
done:
	mvi	c,20h		; set user func
	mvi	e,user
	call	0005		; bdos
	mvi	c,0fh		; open code..
	lxi	d,005ch		; fcb
	call	0005		; bdos
	cpi	0ffh		; error?
	jz	0		; yes boot...
	lxi	d,loader
	lxi	h,0080h		; dma..
	lxi	b,07fh
movloop:
	ldax	d
	mov	m,a
	inx	d
	inx	h
	dcr	c
	jnz	movloop
	lxi	sp,0ffh		; stack goes to a safe place
	lxi	b,005ch		; fcb
	jmp	080h+loadrun-loader	; jump to loader...
;
loader:
	db	15
	db	'run menter'	; command line..REQUIRED! and <=14 chars!!!!!!
	db	0

loadrun:
	lxi	d,100h		; tpa
load1:
	push	d
	push	b
	mvi	c,1ah		; set dma..
	call	0005		; bdos
	pop	d
	push	d
	mvi	c,14h		; read seq.
	call	0005		; bdos
	pop	b
	pop	d
	ora	a		; error?
	jz	80h+(bumpdma-loader)	; jrz bumpdma
a1:	mvi	c,1ah		; set dma
	lxi	d,0080h		; reset default dma address..
	call	0005		; bdos
	mvi	c,10h		;close
	lxi	d,05ch
	call	0005
	db	0,0,0,0,0
	jmp	100h		; tpa.. (program just loaded)
;
bumpdma:
	lxi	h,0080h
	dad	d
	xchg
	jz	80h+(load1-loader)	; jr loader
;
lend:	db	0
	END
