📄 tftp.h
字号:
/*
** This product contains:
** "Restricted Materials of IBM"
** (c) Copyright IBM Corp. 1987
** All Rights Reserved
** Licensed Materials-Property of IBM
**
** See Copyright Instructions, G120-2083
**
*/
/* Copyright 1984 by the Massachusetts Institute of Technology */
/* See permission and disclaimer notice in file "notice.h" */
#include <notice.h>
/* (c) 1986 Copyright IBM Corp.; See file <ibm-note.h> for permissions */
/* TFTP header file contains structures of TFTP packet headers and such. */
/* read or write request packet */
struct tfreq {
unsigned tf_op; /* would be 1 (read) or 2 (write) */
char tf_name[20]; };
/* data packet */
struct tfdata {
unsigned tf_op; /* would be 3 */
unsigned tf_block;
char tf_data[512]; };
/* structure of an ack packet */
struct tfack {
unsigned tf_op; /* would be 4 */
unsigned tf_block; };
/* error packet */
struct tferr {
unsigned tf_op; /* would be 5 */
unsigned tf_code;
char tf_err[1]; };
/* TFTP opcodes */
#define RRQ 1 /* read request */
#define WRQ 2 /* write request */
#define DATA 3 /* data packet */
#define ACK 4 /* acknowledgement packet */
#define ERROR 5 /* error packet */
/* TFTP error codes */
#define ERRTXT 0 /* see the enclosed text */
#define FNOTFOUND 1 /* file not found */
#define ACCESS 2 /* access violation */
#define DISKFULL 3 /* don't even ask. */
#define ILLTFTP 4 /* illegal TFTP operation */
#define BADTID 5 /* unkown transfer ID */
#define FEXISTS 6 /* file already exists */
#define NOUSER 7 /* no such user */
/* TFTP states */
#define DATAWAIT 1
#define ACKWAIT 2
#define DEAD 3
#define TIMEOUT 4
#define RCVERR 5
#define RCVACK 6
#define RCVDATA 7
#define RCVLASTDATA 8
#define TERMINATED 9
#define TFTPSOCK 69 /* TFTP's well known port */
#define TFTPTRIES 20 /* # of retries on packet transmission */
#define REQTRIES 4 /* # of retries on initial request */
#define REQLEN 512 /* .. */
#define NORMLEN 512 /* normal length of received packet */
#define tftp_head(p) udp_data(udp_head(in_head((p))))
#define tfkill(cn) {tm_clear(cn->tf_tm); (cn)->tf_state=DEAD; tk_wake((cn)->tf_task);}
#define tftp_data(p) ((struct tfdata *)tftp_head((p)))->tf_data
/* The TFTP connection structure. Contains connection info, and data for
timeout calculations. */
struct tfconn {
UDPCONN tf_udp; /* udp connection for this transfer */
FILE *tf_fd; /* file descriptor for xfer */
PACKET tf_outp; /* last sent packet */
char *tf_fbufp; /* file buffer pointer */
unsigned tf_buff_bytes; /* number of bytes for disk buffer */
unsigned tf_bytes_used; /* disk buffer usage */
unsigned tf_lastlen; /* length of last sent pkt */
unsigned tf_expected; /* most recently processed block */
unsigned tf_fport; /* foreign port */
task *tf_task; /* main task for tftp connection */
timer *tf_tm; /* our timer */
unsigned tf_state; /* state of connection */
unsigned tf_tries; /* # of retries already done */
unsigned tf_mode; /* mode = OCTET, [net]ASCII, ... */
unsigned tf_looks_bad; /* flag if ascii data looks fishy */
unsigned tf_dir; /* direction of the transfer */
long tf_size; /* # of bytes transferred */
unsigned tf_rcv; /* # of packets received */
unsigned tf_snt; /* # of packets sent */
unsigned tf_ous; /* # of out of sequence packets */
unsigned tf_tmo; /* # of timeouts */
unsigned tf_rsnd; /* # of resends */
long tf_trt; /* round trip time */
long tf_rt; /* current timeout */
int tf_NR; /* number rexmissions of this pkt */
int tf_NR_last; /* " " " of prev pkt */
int tf_K; /* tuning constant */
long tf_sent; /* time that pkt was sent */
int tf_ctrlz; /* append a eof mark (^Z) after writing file */
};
/* Constants for round trip time estimation and retry timeout.
All calculation is done in clock ticks (at a rate of 18/second) but
only the initial estimate and the upper limit are specimn) is called to set cursor position
;
;*****************************************************************************
PUBLIC _setcur
_TEXT SEGMENT
_setcur:
push bp
mov bp,sp
mov dh,4[bp] ;dh= row, dl= column
mov dl,6[bp] ;dh= row, dl= column
mov bh,0 ;ensure page 0
mov ah,2 ;code for set cursor
int 10H ;BIOS video i/o code
pop bp ;restore bp
ret
;*****************************************************************************
;
; wrbuf(->buffer,start_position,num_chars,
; attribute-position, ->attr_b
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -