	page 64,132
	title bat-cd -- Batch file Directory Changer
.RADIX 10
;
;
;
;*****************************************************************
; Public domain program by H. Fischer - HFischer@eclb 12/83
; Questions/problems to HFischer@eclb (213/902-5139).
;
; This program allows a batch file to change directories
; (just like the CD command), but to read the new directory
; from the "standard input file" instead of the command line.
; The command:
;
;	bat-cd		reads new directory from keyboard
;	bat-cd < file	reads new directory from "file"
;	bat-cd <file >nul  no display of new dir name when changing
;
; You can use the directory changer to change back to the
; directory a batch file started out with, such as when
; doing a spelling correction or fancy font printing.
;   .
;   .	(your batch file to do fancy font from any directory)
;   .
;   echo off
;   cd > \bin\bat\starting.dir		saves initial directory
;   copy %1 \fancyfnt\temp/v		make file local to pfont dir
;   cd \fancyfnt			go to pfont dir
;   pfont +fi temp +fi romn12 (etc.)	do printing
;   del temp				get rid of local file copy
;   bat-cd <\bin\bat\starting.dir >nul	return to user's directory
;   echo on
;
; If you were going to, for example, a speller directory, which
; made changes to the file, then you would copy the local file back
; before changing directories back:
;
;   echo off
;   cd >\bin\bat\starting.dir		save initial directory
;   copy %1 \speller\temp.txt/v		make your file local
;   cd \speller
;   spellit temp.txt
;   bat-cd <\bin\bat\starting.dir >nul	change back to user's dir
;   copy \speller\temp.txt %1/v		copy spelling corrected file
;   del \speller\temp.txt		  back & delete other copy
;
; Note that the new input is read as a single line, without
; any prompt, followed by a carriage return.  If the input
; is not a valid directory, then the message "path not found"
; is placed on the standard output file (console, but redirectable
; if one wishes).
;
; To build this program:
;	1) asm bat-cd
;	2) link bat-cd
;	3) exe2bin bat-cd.exe \bin\bat-cd.com (name your path dir!)
;	4) del bat-cd.exe
;
;********************************************************************
code	segment para
	assume	cs:code
	org	100h
CD	proc	far
START:
	mov	ax,cs		; make this mess addressable via ds
	mov	ds,ax
	assume	ds:code
	mov	dx,offset buffer
	mov	ax,0c0ah
	int	21h		; read the new directory name
	mov	bh,0		; stuff a zero at the end
	mov	bl,buflen	;   of the name just read
	mov	entry[bx],bh
	mov	dx,offset entry
	mov	ah,3bh
	int	21h		; change the directory
	cmp	ax,3		; error code?
	jne	done
	mov	dx,offset error ; display error if bad path
	mov	ah,9
	int	21h
done:	int	20h
buffer	db	64		; longest path is 63 chars & c/r
buflen	db	0		; dos-read length
entry	db	64 dup(0)	; the new directory name
error	db	'path not found',10,13,'$'
saveit	db	0
CD endp
code ends
end start
            POP     AX              ;Recover old keyboard information
                OUT     KB_CONTROL,AL
   