ZXNet эхоконференция «code.zx»
тема: PC <-> ZX link sourse (PC)
от: Aleksandr Majorov
кому: Dmitriy Dobretsov
дата: 07 Jan 1999
Пpиветствую тебя, о дpажайший(ая/ое) Dmitriy!
Once in morning 07-01-98 04:18:53 somebody Dmitriy Dobretsov has
written to Aleksandr Majorov about 'Гальваническая развязка'.
[ ]
AM>> если интересно могу сорцы кинуть в .code, покажешь
AM>> где можно оптимизнуть..
DD> кинь,если не влом...
Софтовая поддержка для ПЦ
=================================================
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
char ver[]="-= PC-ZX NULL-modem link v1.00 =-";
static unsigned char buff[65535]; // буфер файла
unsigned char data[262], out[262], d; // входной и выходной буфера
char *fbuff;
int *inhob = (int*) &data[18];
int *outhob = (int*) &buff[15];
int *outlen = (int*) &buff[11];
int *outcrc = (int*) &out[260];
unsigned int leno, len, flag=0;
int hobeta=1, erase=0;
// ---------------------------------------------------------------
void out_info();
void out_ver();
int rec_data();
int trans_1(int );
int trans_data();
int scan_in();
int scan_in_();
int zx_out(int );
int zx_in();
int wait_0();
int wait_1();
int out_comm(int , int );
int out_block();
int long_wait(int );
void sbreak(char *);
void print(char *);
int out_X_MODEM_block(int );
int crc_data(char *);
int chr_corr(int );
unsigned short CRC_hobeta(char *);
void in_file();
int wait_block(int blk);
int transm_file(char *);
int tr_wait0();
int load_file(char *);
void make_hobeta(char *, unsigned int);
void out_file(char *);
void out_cat();
void print_command(char *);
void use_comm(char *);
void help();
int sys_wait();
void wait_no_data();
//************************************************************
//* ОСHОВHОЙ МОДУЛЬ ПРОГРАММЫ *
//************************************************************
void main(int argc, char *argv[]){
int i;
outp(890,12); // init LPT //
delay(50);
outp(890,8);
clrscr();
printf("
╔═══════════════════════════════════╗");
printf("
║ ║");
printf("
║ %s ║", ver);
printf("
║ ║");
printf("
╚═══════════════════════════════════╝
");
print_command("start");
for(i=1; i1 && argv[i][1]=='_') use_comm(argv[i]);
}
while(1){
if ( rec_data()){
if( len==1 && data[0]==0x0F) out_ver();
if( len==5 && data[0]==0x1B && data[1] == 'd' ) in_file();
if( len>2){
if( data[0]==21 && data[2] == ' ' ) use_comm(&data[1]);
}
}
if (kbhit()) if (getch() == 32) break;
}
print_command("End programm
");
exit(0);
}
//**********************************
// ожидание данных. Возвращается 1 если ничего не принято
int rec_data(){
int i;
if ( scan_in() ) return 0;
if ( zx_in() || (d != 0xAA) ) return 0;
if ( zx_in() || (d != 0x55) ) return 0;
if ( zx_in() ) return 0;
len = d;
if ( zx_in() ) return 0;
len = d * 256 + len;
for (i=0; i | |