🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by john birchfield Wed, 01 Oct 1986 14:15
unshar { dos_a.a }
#8096
Author: john birchfield
Date: Wed, 01 Oct 1986 14:15
223 lines
5910 bytes
It appears I forgot something for the unshar program - here follows the
dos_a.a source in shar form - use unshar to extract it or /bin/sh on un*x
before you download ...  A thousand pardons for not getting IT (whatever it
is) together enough to get it all out on the 1st pass ...

*~*=*-*=*~*=*-*=*~*=*-*=*~*[cut-here]*~*=*-*=*~*=*-*=*~*=*-*=*~*=*-*=*~*
#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create:
#       dos_a.a
# This archive created: 10-01-86   7:03:42# By:  (Tandy1200 (home))
export PATH; PATH=/bin:/usr/bin:$PATH
echo shar: "extracting 'dos_a.a'" '(3828 characters)'
if test -f 'dos_a.a'
then
        echo shar: "will not over-write existing file 'dos_a.a'"
else
sed 's/^	X//' << \***_Shar_Eof_Upload_*** > 'dos_a.a'
	X;	DOS_A.A - low level stuff - access to DOS - mostly used by
	X;		routines in DOS_C.C - a small attempt to get more 
	X;		Un*x Library compatibility into the C-Ware compiler.
	X;
	X
	X;		This code is neither complete nor faithful but it is
	X;		somewhat of a start ...
	X
	X;				---  24 Sep '86   ---
	X;				-- John Birchfield --
	X
	X
	X
	X
	X;	SET_DTA_	-	used by opendir () and readdir () {see below}
	X;		to establish the current dta { Disk Transfer Address } for
	X;		subsequent i/o operations.  Not needed anywhere else
	X
	X;	Usage:	set_dta (dirp);
	X
	X	CSEG
	X	PUBLIC	set_dta_
	Xset_dta_:
	X	push	bp
	X	mov	bp, sp
	X	mov	si, [bp+4]
	X	mov	dx, si
	X	mov	ah, 1ah
	X	int	21h
	X	mov	sp, bp
	X	pop	bp
	X	ret
	X
	X
	X
	X
	X;	A_OPEN_DIR_	-	Used by opendir (&direct) in DOS_C.C
	X;		direct is a structure which is filled in by MsDos
	X;		on a successful call ...  see DOS.H - the direct 
	X;		parameter is set up in readdir () by a call to set_dta ()
	X
	X;	Usage:	if (a_open_dir (name))
	X;			call_was_good
	X
	X	PUBLIC	a_open_dir_
	Xa_open_dir_:
	X	push	bp
	X	mov	bp, sp
	X	sub	sp, 2
	X	mov	word [bp-2], 1
	X	mov	si, word [bp+4]
	X	mov	dx, si
	X	mov	cx, 37h
	X	mov	ah, 4eh
	X	int	21h
	X	jnc	a_od_good
	X	mov	word [bp-2], 0
	Xa_od_good:
	X	mov	ax, word [bp-2]
	X	mov	sp, bp
	X	pop	bp
	X	ret
	X
	X
	X
	X
	X;	A_READ_DIR_	-	Used by readdir (&direct) in DOS_C.C - Look
	X;		at the code in readdir (&direct).  All useful information
	X;		is returned to struct direct as readdir performs a set_dta
	X;		to it's address.
	X
	X;	Usage:	if (a_read_dir ())
	X;			call_was_good
	X
	X	PUBLIC	a_read_dir_
	Xa_read_dir_:
	X	push	bp
	X	mov	bp, sp
	X	sub	sp, 2
	X	mov	word [bp-2], 1
	X	mov	ah, 4fh
	X	int	21h
	X	jnc	a_rd_good
	X	mov	word [bp-2], 0
	Xa_rd_good:
	X	mov	ax, word [bp-2]
	X	mov	sp, bp
	X	pop	bp
	X	ret
	X
	X
	X
	X
	X;	CHDIR_	-	chdir (path) can be used by any user function if the
	X;		need arises.  It returns TRUE for FAIL and FALSE for success.
	X;		this value seems to be what Un*x returns - PATH is a NULL
	X;		terminated character specifying the desired base directory
	X;		to change to.
	X
	X;	Usage: if (chdir (path)==0)
	X;			SUCCESS;
	X	PUBLIC	chdir_
	Xchdir_:
	X	push	bp
	X	mov	bp, sp
	X	sub	sp, 2
	X	mov	word [bp-2], 0
	X	mov	dx, word [bp+4]
	X	mov	ah, 3bh
	X	int	21h
	X	jnc	good_cd
	X	mov	word [bp-2], -1
	Xgood_cd:
	X	mov	ax, [bp-2]
	X	mov	sp, bp
	X	pop	bp
	X	ret
	X
	X
	X
	X
	X;	MKDIR_	-	Mkdir takes a directory or path name and attempts to
	X;		create a corresponding directory  - If successful then 0 is
	X;		returned - if not -1 is returned
	X
	X;		Usage: if (mkdir (directoryname)==0)
	X;				SUCCESS;
	X	PUBLIC	mkdir_
	Xmkdir_:
	X	push	bp
	X	mov	bp, sp
	X	sub	sp, 2
	X	mov	word [bp-2], 0
	X	mov	dx, [bp+4]
	X	mov	ah, 39h
	X	int	21h
	X	jnc	good_md
	X	mov	word [bp-2], 1
	Xgood_md:
	X	mov	ax, [bp-2]
	X	mov	sp, bp
	X	pop	bp
	X	ret
	X
	X
	X
	X
	X;	IOCTL	-	ioctl (&ioctlbuf) is the generic ioctl hook from
	X;		C to MsDos.  It is not very close to Un*x in it's
	X;		implementation.  The confusion is generated by the requirement
	X;		to go here and there in MsDos to get the same information
	X;		about a device or file that Un*x provides from one system
	X;		call.  All information returned by this call is provided in
	X;		the structure ioctlbuf.  If IOCTL was successful, it returns
	X;		0 - otherwise get out your MsDos Manual.
	X;
	X;	        The structure is defined in IOCTL.H and looks like ...
	X
	X;	struct ioctlbuf {
	X;		unsigned cmd,            AX Register
	X;		         handle,         BX Register
	X;		         cnt,            CX Register
	X;		         devdata;        DX Register
	X;	};
	X
	X	CSEG
	X	PUBLIC ioctl_
	Xioctl_:
	X	push	bp
	X	mov	bp, sp
	X	mov si, [bp+4]
	X	mov al, [si]
	X	mov bx, [si+2]
	X	mov cx, [si+4]
	X	mov dx, [si+6]
	X	mov ah, 44h
	X	int 21h
	X	mov si, [bp+4]
	X	mov [si], ax
	X	mov [si+2], bx
	X	mov [si+4], cx
	X	mov [si+6], dx
	X	jnc good_ioctl_call
	X	or  ax, 1h
	X	jmp ioctl_call_exit
	Xgood_ioctl_call:
	X	mov	ax, 0
	Xioctl_call_exit:
	X	pop	bp
	X	ret
	X
	X	END
***_Shar_Eof_Upload_***
if test 3828 -ne "`wc -c < 'dos_a.a'`"
then
        echo shar: "error transmitting 'dos_a.a'" '(should have been 3828 characters)'
fi
fi
exit 0
#       End of shell archive
-- 
 John Birchfield				lll-crg.arpa!csustan!jb
 411 Crane Ave., Turlock, CA  95380		(209) 634-6243
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads