Thread View: net.micro.pc
1 messages
1 total messages
Started by john birchfield
Wed, 01 Oct 1986 14:15
unshar { dos_a.a }
Author: john birchfield
Date: Wed, 01 Oct 1986 14:15
Date: Wed, 01 Oct 1986 14:15
223 lines
5910 bytes
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