Category : Network Files
Archive   : TCP_SRC.ZIP
Filename : PKTALL.ASM

 
Output of file : PKTALL.ASM contained in archive : TCP_SRC.ZIP
version equ 0

; Russell Nelson, Clarkson University. October 20, 1988
; Copyright, 1988, 1989, Russell Nelson

; This program is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation, version 1.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this program; if not, write to the Free Software
; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

include defs.asm

code segment word public
assume cs:code, ds:code

org 80h
phd_dioa label byte

org 100h
start:
jmp start_1

copyleft_msg label byte
db "Packet receiver version ",'0'+majver,".",'0'+version," copyright 1990, Russell Nelson.",CR,LF
db "This program is free software; see the file COPYING for details.",CR,LF
db "NO WARRANTY; see the file COPYING for details.",CR,LF
crlf_msg db CR,LF,'$'

int_pkt macro
pushf
cli
call their_isr
endm

their_isr dd ?
packet_int_no db ?,?,?,?
handle dw ?
packet_flag dw 0
first_count dw ?
second_count dw ?
signature db 'PKT DRVR',0
signature_len equ $-signature
no_signature_msg db "No packet driver at that address",'$'
usage_msg db "usage: pktall ",'$'
waiting_msg label byte
db "Now waiting for packets to be received. A dot will be printed when one is",CR,LF
db "received. Press any key to exit.",CR,LF,'$'
counts_bad_msg db "First and second counts didn't match",CR,LF,'$'
not_first_msg db "Driver maybe wrote too little",CR,LF,'$'
not_second_msg db "Driver wrote too much",CR,LF,'$'


usage_error:
mov dx,offset usage_msg
error:
mov ah,9
int 21h
int 20h

start_1:
mov dx,offset copyleft_msg
mov ah,9
int 21h

mov si,offset phd_dioa+1
cmp byte ptr [si],CR ;end of line?
je usage_error

mov di,offset packet_int_no
call get_number

mov ah,35h ;get their packet interrupt.
mov al,packet_int_no
int 21h
mov their_isr.offs,bx
mov their_isr.segm,es

lea di,3[bx]
mov si,offset signature
mov cx,signature_len
repe cmpsb
mov dx,offset no_signature_msg
jne error

push ds
mov ax,1ffh ;driver_info
int_pkt
pop ds
call fatal_error

mov ah,2 ;access all packets.
mov al,ch ;their class from driver_info().
mov bx,dx ;their type from driver_info().
mov dl,cl ;their number from driver_info().
mov cx,0 ;type length of zero.
push cs ;es:di -> our receiver.
pop es
mov di,offset our_recv
int_pkt
call fatal_error
mov handle,ax

mov dx,offset waiting_msg
mov ah,9
int 21h

wait_for_key:
cmp packet_flag,0
je no_packet

mov ax,first_count ;do the counts match?
cmp ax,second_count
je counts_ok

mov ax,first_count
call wordout

mov al,' '
call chrout

mov ax,second_count
call wordout

mov dx,offset counts_bad_msg
mov ah,9
int 21h
counts_ok:

mov bx,offset our_buffer ;find the end of the buffer.
add bx,first_count
cmp [bx-1],bl ;did we overwrite the first byte
jne wrote_first ; of the magic value?
mov dx,offset not_first_msg
mov ah,9
int 21h
wrote_first:

cmp [bx],bh ;did we preserve the second byte
je wrote_second ; of the magic value?
mov dx,offset not_second_msg
mov ah,9
int 21h
wrote_second:

mov al,'.'
call chrout

mov packet_flag,0
no_packet:
mov ah,1 ;check for any key.
int 16h
je wait_for_key ;no key -- keep waiting.

mov ah,0 ;fetch the key.
int 16h

mov ah,3
mov bx,handle
int_pkt
call fatal_error

int 20h


our_recv:
or ax,ax ;first or second call?
jne our_recv_1 ;second -- bump the packet flag.
cmp cs:packet_flag,0 ;Do we already have one?
jne our_recv_2 ;yes - return zero.
push cs
pop es
mov di,offset our_buffer
mov bx,di ;find the end of the buffer.
add bx,cx
mov cs:[bx-1],bx ;store a magic value there.
mov cs:first_count,cx ;remember the first count.
db 0cbh ;masm 4.0 doesn't grok "retf"
our_recv_2:
xor di,di
mov es,ax
db 0cbh ;masm 4.0 doesn't grok "retf"
our_recv_1:
mov cs:second_count,cx ;remember the second count.
inc cs:packet_flag
db 0cbh ;masm 4.0 doesn't grok "retf"


include pkterr.asm
include getnum.asm
include getdig.asm
include skipblk.asm
include digout.asm
include chrout.asm

our_buffer label byte

code ends

end start


  3 Responses to “Category : Network Files
Archive   : TCP_SRC.ZIP
Filename : PKTALL.ASM

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/