int WaitForFkeys(void) { struct dostime_t start; struct dostime_t now; int secs = 3; int ch; _dos_gettime(&start); printf("%d", secs); while (secs) { _dos_gettime(&now); if (now.second != start.second) { _dos_gettime(&start); secs--; printf("\b%d", secs); } if (keypressed()) { if ((ch = getch()) == 0) ch = getch() + 256; printf("\b "); return ch; } } printf("\b "); return 0; }
VOID FIDOSDM::SetHWM (ULONG ulMsg) { int fd; CHAR Temp[128]; struct dosdate_t d_date; struct dostime_t d_time; FIDOMSG Hdr; sprintf (Temp, "%s1.msg", BasePath); if ((fd = sopen (Temp, O_WRONLY|O_BINARY|O_CREAT|O_TRUNC, SH_DENYNO, S_IREAD|S_IWRITE)) != -1) { memset (&Hdr, 0, sizeof (FIDOMSG)); strcpy (Hdr.From, "MsgBase"); strcpy (Hdr.To, "Nobody in particular"); strcpy (Hdr.Subject, "Re: Whatsa high water mark?"); _dos_getdate (&d_date); _dos_gettime (&d_time); sprintf (Hdr.Date, "%2d %3.3s %02d %02d:%02d:%02d", d_date.day, fidoMonths[d_date.month - 1], d_date.year % 100, d_time.hour, d_time.minute, d_time.second); Hdr.Up = (USHORT)ulMsg; Hdr.Attrib = MSGPRIVATE|MSGSENT|MSGREAD; write (fd, &Hdr, sizeof (FIDOMSG)); strcpy (Temp, "\r\nThis message is used to store the high water mark\r\n"); write (fd, Temp, strlen (Temp) + 1); close (fd); } }
void main() { struct dosdate_t date; struct dostime_t time; /* Get and display the current date and time */ _dos_getdate( &date ); _dos_gettime( &time ); printf( "The date (MM-DD-YYYY) is: %d-%d-%d\n", date.month, date.day, date.year ); printf( "The time (HH:MM:SS) is: %.2d:%.2d:%.2d\n", time.hour, time.minute, time.second ); /* Change it to the turn of the century */ date.year = 1999; date.month = 12; date.day = 31; time.hour = 23; time.minute = 59; _dos_setdate( &date ); _dos_settime( &time ); printf( "New date (MM-DD-YYYY) is: %d-%d-%d\n", date.month, date.day, date.year ); printf( "New time (HH:MM:SS) is: %.2d:%.2d:%.2d\n", time.hour, time.minute, time.second ); }
bool QTime::currentTime( QTime *ct ) { if ( !ct ) { #if defined(CHECK_NULL) qWarning( "QTime::currentTime(QTime *): Null pointer not allowed" ); #endif return FALSE; } #if defined(_OS_WIN32_) SYSTEMTIME t; GetLocalTime( &t ); ct->ds = MSECS_PER_HOUR*t.wHour + MSECS_PER_MIN*t.wMinute + 1000*t.wSecond + t.wMilliseconds; return (t.wHour == 0 && t.wMinute == 0); #elif defined(_OS_OS2_) DATETIME t; DosGetDateTime( &t ); ct->ds = MSECS_PER_HOUR*t.hours + MSECS_PER_MIN*t.minutes + 1000*t.seconds + 10*t.hundredths; return (t.hours == 0 && t.minutes == 0); #elif defined(_OS_MSDOS_) _dostime_t t; _dos_gettime( &t ); ct->ds = MSECS_PER_HOUR*t.hour + MSECS_PER_MIN*t.minute + t.second*1000 + t.hsecond*10; return (t.hour== 0 && t.minute == 0); #elif defined(_OS_UNIX_) struct timeval tv; gettimeofday( &tv, 0 ); time_t ltime = tv.tv_sec; tm *t = localtime( <ime ); ct->ds = (uint)( MSECS_PER_HOUR*t->tm_hour + MSECS_PER_MIN*t->tm_min + 1000*t->tm_sec + tv.tv_usec/1000 ); return (t->tm_hour== 0 && t->tm_min == 0); #else time_t ltime; // no millisecond resolution!! ::time( <ime ); tm *t = localtime( <ime ); ct->ds = MSECS_PER_HOUR*t->tm_hour + MSECS_PER_MIN*t->tm_min + 1000*t->tm_sec; return (t->tm_hour== 0 && t->tm_min == 0); #endif }
char *curTime(void) { char *time; struct dostime_t t; _dos_gettime(&t); time = nls_maketime(0, t.hour, t.minute, t.second, t.hsecond); if(!time) error_out_of_memory(); return time; }
int cmd_time(char *rest) { struct dostime_t t; char s[40]; int ec; noPrompt = 0; if((ec = leadOptions(&rest, opt_date, NULL)) != E_None) return ec; if (!*rest) { char *time; _dos_gettime(&t); time = nls_maketime(0, t.hour, t.minute, t.second, t.hsecond); if(!time) { error_out_of_memory(); return 1; } displayString(TEXT_MSG_CURRENT_TIME, time); free(time); rest = NULL; } while (1) { if (rest) { if (parsetime(rest)) return 0; } else { if(noPrompt) return 0; if ((rest = getMessage(TEXT_MSG_ENTER_TIME)) == NULL) return 1; fputs(rest, stdout); free(rest); fgets(s, sizeof(s), stdin); if (cbreak) return 1; if (parsetime(s)) return 0; } displayString(TEXT_ERROR_INVALID_TIME); // force input the next time around. rest = NULL; } }
void main(void) { //clrscr(); struct dostime_t t; struct dosdate_t d; do{ clrscr(); _dos_gettime(&t); _dos_getdate(&d); printf("the current date is %02d-%02d-%02d\n",d.day,d.month,d.year); printf("the current time is %02d:%02d:%02d:%02d\n",t.hour,t.minute,t.second,t.hsecond); delay(1); }while(!kbhit()); }
long SystemTime(void) /* Gets system time and converts it to hundreds of a sec */ { long hr; long min; long sec; long s100; struct _dostime_t time; _dos_gettime(&time); /* get current time */ hr = (long) time.hour; /* convert string to number */ min = (long) time.minute; sec = (long) time.second; s100 = (long) time.hsecond; return (long) (hr*360000 + min*6000 + sec*100 + s100); /* system time */ }
int cgetchar_timed(int secs) { struct dostime_t start; struct dostime_t now; start.second = 60; /* force decrement secs first time in loop */ ++secs; while(!keypressed()) { _dos_gettime(&now); if(now.second != start.second) { if(!--secs) return 0; memcpy(&start, &now, sizeof(now)); outnum(secs); } delay(100); } /* Because "keypressed()" returned true, getchar() does not block */ return cgetchar(); }
long _stdc timerset(unsigned int duration) { #ifdef __MSC__ struct dostime_t dt; _dos_gettime(&dt); return ( ((dt.minute % 60)*6000L) + ((dt.second % 60)*100L) + dt.hsecond + (long)duration ); #else /* assume generic MSDOS compiler */ union REGS regs; regs.h.ah = 0x2c; intdos(®s, ®s); return ( ((regs.h.cl % 60)*6000L) + ((regs.h.dh % 60)*100L) + regs.h.dl + (long)duration ); #endif }
// // The following function looks up the system time and returns it in the timer_t type. Note // that timer_t is intended to be an integer but might be a structure type on some systems. // static void get_time_as_integer( timer_time_t *result ) { #if eOPSYS == eDOS _dos_gettime( result ); #endif #if eOPSYS == eWIN32 SYSTEMTIME raw; FILETIME cooked; GetSystemTime( &raw ); SystemTimeToFileTime( &raw, &cooked ); result->u.LowPart = cooked.dwLowDateTime; result->u.HighPart = cooked.dwHighDateTime; #endif #if eOPSYS == ePOSIX struct timeval time_info; gettimeofday( &time_info, NULL ); result->seconds = time_info.tv_sec; result->milliseconds = time_info.tv_usec / 1000; #endif }
USHORT FIDOSDM::ReadHeader (ULONG ulMsg) { int dd, yy, hr, mn, sc; USHORT RetVal = FALSE, i; CHAR mm[4]; MSGINDEX *msgIndex; struct dosdate_t date; struct dostime_t time; New (); if ((msgIndex = (MSGINDEX *)Index.First ()) != NULL) do { if (msgIndex->Number == ulMsg) { sprintf (LastFile, "%s%s", BasePath, msgIndex->FileName); if ((fp = _fsopen (LastFile, "rb", SH_DENYNO)) != NULL) { RetVal = TRUE; Current = ulMsg; memset (&msgHdr, 0, sizeof (msgHdr)); fread (&msgHdr, sizeof (msgHdr), 1, fp); fclose (fp); sprintf (FromAddress, "%d/%d", msgHdr.OrigNet, msgHdr.OrigNode); sprintf (ToAddress, "%d/%d", msgHdr.DestNet, msgHdr.DestNode); for (i = 0; i < 7; i++) { if (!strncmp (fidoDays[i], msgHdr.Date, 3)) break; } if (i < 7) { sscanf (&msgHdr.Date[4], "%2d %3s %2d %2d:%2d", &dd, mm, &yy, &hr, &mn); sc = 0; } else sscanf (msgHdr.Date, "%2d %3s %2d %2d:%2d:%02d", &dd, mm, &yy, &hr, &mn, &sc); Written.Day = (UCHAR)dd; for (i = 0; i < 12; i++) { if (!stricmp (fidoMonths[i], mm)) { Written.Month = (UCHAR)(i + 1); break; } } if (Written.Month < 1 || Written.Month > 12) Written.Month = 1; if ((Written.Year = (USHORT)(yy + 1900)) < 1990) Written.Year += 100; Written.Hour = (UCHAR)hr; Written.Minute = (UCHAR)mn; Written.Second = (UCHAR)sc; _dos_getdate (&date); _dos_gettime (&time); Arrived.Day = date.day; Arrived.Month = date.month; Arrived.Year = (USHORT)date.year; Arrived.Hour = time.hour; Arrived.Minute = time.minute; Arrived.Second = time.second; strcpy (From, msgHdr.From); strcpy (To, msgHdr.To); strcpy (Subject, msgHdr.Subject); Crash = (UCHAR)((msgHdr.Attrib & MSGCRASH) ? TRUE : FALSE); FileAttach = (UCHAR)((msgHdr.Attrib & MSGFILE) ? TRUE : FALSE); FileRequest = (UCHAR)((msgHdr.Attrib & MSGFRQ) ? TRUE : FALSE); Hold = (UCHAR)((msgHdr.Attrib & MSGHOLD) ? TRUE : FALSE); KillSent = (UCHAR)((msgHdr.Attrib & MSGKILL) ? TRUE : FALSE); Local = (UCHAR)((msgHdr.Attrib & MSGLOCAL) ? TRUE : FALSE); Private = (UCHAR)((msgHdr.Attrib & MSGPRIVATE) ? TRUE : FALSE); ReceiptRequest = (UCHAR)((msgHdr.Attrib & MSGRRQ) ? TRUE : FALSE); Received = (UCHAR)((msgHdr.Attrib & MSGREAD) ? TRUE : FALSE); Sent = (UCHAR)((msgHdr.Attrib & MSGSENT) ? TRUE : FALSE); Original = msgHdr.Reply; Reply = msgHdr.Up; break; } } } while ((msgIndex = (MSGINDEX *)Index.Next ()) != NULL); return (RetVal); }
void funccall::entertainment() { int v; struct dostime_t t; struct dosdate_t d; do { textbackground(BLUE); textcolor(MAGENTA); _setcursortype(_NORMALCURSOR); clrscr(); textcolor(GREEN); box(4,4,4,4); box(4,4,6,6); textcolor(GREEN+BLINK); gotoxy(11,7); cputs("CREEPER"); delay(502); _dos_gettime(&t); _dos_getdate(&d); box(21,6,52,4,222); gotoxy(54,6); printf("DATE:%2d/%02d/%02d\n",d.day,d.month,d.year); gotoxy(54,7); printf("Time:%2d:%02d:%02d.%02d\n",t.hour,t.minute,t.second,t.hsecond); gotoxy(25,9); textcolor(WHITE); cputs(">>> CREEPERTAINMENT >>>"); textcolor(WHITE); gotoxy(2,2); cputs(">>>> LETS TAKE ENTERTAINMENT TO NEXT LEVEL >>>>"); box(35,10,20,11); textcolor(WHITE); gotoxy(22,12); cputs("1. MUSIC"); gotoxy(22,14); cputs("2. GAMES"); gotoxy(22,16); cputs("0. MAIN MENU"); gotoxy(25,18); cputs("ENTER THE CHOICE NUMBER : "); v=int(getche()-48); delay(100); if(v) { switch(v) { case 1: music(); break; case 2: game(); break; default: gotoxy(27,20); cputs("INVALID ENTRY"); delay(1000); break; }} }while(v!=0); }
void funccall::ss() { int v; struct dostime_t t; struct dosdate_t d; do { textbackground(BLUE); textcolor(MAGENTA); _setcursortype(_NORMALCURSOR); clrscr(); textcolor(GREEN); box(4,4,4,4); box(4,4,6,6); textcolor(GREEN+BLINK); gotoxy(11,7); cputs("CREEPER"); delay(502); _dos_gettime(&t); _dos_getdate(&d); box(21,6,52,4,222); gotoxy(54,6); printf("DATE:%2d/%02d/%02d\n",d.day,d.month,d.year); gotoxy(54,7); printf("Time:%2d:%02d:%02d.%02d\n",t.hour,t.minute,t.second,t.hsecond); gotoxy(25,9); textcolor(WHITE+BLINK); cputs(">>>> SCREEN SAVERS >>>>"); box(35,10,20,11); textcolor(WHITE); gotoxy(22,12); cputs("1. COLOUR BOX"); gotoxy(22,13); cputs("2. WELCOME NOTE"); gotoxy(22,14); cputs("3. CREEPER BOOTING"); gotoxy(22,15); cputs("4. CREEPER ALL THE WAY"); gotoxy(22,16); cputs("0. MAIN MENU"); gotoxy(25,18); cputs("ENTER THE CHOICE NUMBER : "); v=int(getche()-48); delay(100); if(v) { switch(v) { case 1: colbox(); break; case 2: wel(); break; case 3: intro(); break; case 4: crepalltheway(); break; default: gotoxy(27,20); cputs("INVALID ENTRY"); delay(1000); break; }} }while(v!=0); }
void funccall::contpan() { int v; struct dostime_t t; struct dosdate_t d; do { textbackground(BLUE); textcolor(MAGENTA); _setcursortype(_NORMALCURSOR); clrscr(); textcolor(GREEN); box(4,4,4,4); box(4,4,6,6); textcolor(GREEN+BLINK); gotoxy(11,7); cputs("CREEPER"); delay(502); _dos_gettime(&t); _dos_getdate(&d); box(21,6,52,4,222); gotoxy(54,6); printf("DATE:%2d/%02d/%02d\n",d.day,d.month,d.year); gotoxy(54,7); printf("Time:%2d:%02d:%02d.%02d\n",t.hour,t.minute,t.second,t.hsecond); gotoxy(25,9); textcolor(WHITE+BLINK); cputs(">>>> CONTROL PANEL >>>>"); box(35,10,20,11); textcolor(WHITE); gotoxy(22,12); cputs("1. CHANGE PASSWORD"); gotoxy(22,14); cputs("2. CHANGE WELCOME NOTE"); gotoxy(22,16); cputs("0. MAIN MENU"); gotoxy(25,18); cputs("ENTER THE CHOICE NUMBER : "); v=int(getche()-48); delay(100); if(v) { switch(v) { case 1: chngpass(); break; case 2: chngwel(); break; default: gotoxy(27,20); cputs("INVALID ENTRY"); delay(1000); break; }} }while(v!=0); }
void funccall::mmenu() { int v; struct dostime_t t; struct dosdate_t d; do { textbackground(BLUE); textcolor(MAGENTA); _setcursortype(_NORMALCURSOR); clrscr(); textcolor(GREEN); box(4,4,4,4); box(4,4,6,6); textcolor(GREEN+BLINK); gotoxy(11,7); cputs("CREEPER"); delay(502); _dos_gettime(&t); _dos_getdate(&d); box(21,6,52,4,222); gotoxy(54,6); printf("DATE:%2d/%02d/%02d\n",d.day,d.month,d.year); gotoxy(54,7); printf("Time:%2d:%02d:%02d.%02d\n",t.hour,t.minute,t.second,t.hsecond); gotoxy(29,9); textcolor(WHITE+BLINK); cputs(">>>> MENU >>>>"); for(int i=0;i<13;++i) { box(1+(6*i),1+i,3,11); delay(70); box(1+6*i,1+i,3,11,int(' ')); } box(76,14,3,11); textcolor(WHITE); gotoxy(5,12); cputs("1. CONTROL PANEL"); gotoxy(5,14); cputs("2. SCREEN SAVERS"); gotoxy(5,16); cputs("3. ENTERTAINMENT"); gotoxy(5,18); cputs("4. OFFICE"); gotoxy(28,20); cputs("0. EXIT"); gotoxy(25,22); cputs("ENTER THE CHOICE NUMBER : "); v=int(getche()-48); delay(100); if(v) { switch(v) { case 1: contpan(); break; case 2: ss(); break; case 3: entertainment(); break; case 4: of_beg(); break; default: gotoxy(55,22); cputs("INVALID ENTRY"); delay(1000); break; }} }while(v!=0); }
//$$$$$$$$$$$$$$$$$$$$$$$$ void active_status_bar(int i,int j) //defaultvalue i== { //int row=13; struct dostime_t t; _dos_gettime(&t); struct dosdate_t d; _dos_getdate(&d); window(1,2,80,23); textbackground(1); clrscr(); window(1,24,80,25); textbackground(7); clrscr(); switch(j){ case 1: gotoxy(1,1); textcolor(4); cprintf(Status[i]); gotoxy(14,1); textcolor(0); cprintf( Status_Expressoin[i]); break; case 2: gotoxy(1,1); textcolor(4); cprintf(file_list1[i]); cprintf(file_list2[i]); gotoxy(14,1); textcolor(0); cprintf( File_Status_Expressoin[i]); break; case 3: gotoxy(1,1); textcolor(4); cprintf(PROGRAMMER_list1[i]); gotoxy(17,1); textcolor(0); cprintf( PROGRAMMER_Status_Expressoin[i]); break; case 4: gotoxy(1,1); textcolor(4); cprintf(""); gotoxy(17,1); textcolor(0); cprintf( PROGRAMMER_Status_Expressoin[i]); break; case 5: gotoxy(1,1); textcolor(4); cprintf(project_list1[i]); cprintf(project_list2[i]); gotoxy(17,1); textcolor(0); cprintf(Project_Status_Expressoin[i]); break; case 6: gotoxy(1,1); textcolor(4); cprintf(project_list1[i]); cprintf(project_list2[i]); gotoxy(17,1); textcolor(0); cprintf(Project_Status_Expressoin[i]); break; case 7: gotoxy(1,1); textcolor(4); cprintf(project_list1[i]); cprintf(project_list2[i]); gotoxy(17,1); textcolor(0); cprintf(Project_Status_Expressoin[i]); break; } textcolor(6); gotoxy(57,1); cprintf("%d - %d - %d ", d.month,d.day,d.year); cprintf(" %2d : %02d", t.hour, t.minute); window(1,25,80,25); textbackground(1); clrscr(); }
USHORT PACKET::Add (class TCollection &MsgText) { int f1, f2, f3, f4, t1, t2, t3, t4; USHORT RetVal = TRUE, AddedIntl = FALSE, IsEchomail = FALSE; CHAR Temp[64], *pszText, *pszAddress, *p; PKTINDEX pktIndex; struct dosdate_t d_date; struct dostime_t d_time; memset (&pktIndex, 0, sizeof (PKTINDEX)); fflush (fp); fseek (fp, filelength (fileno (fp)) - 2L, SEEK_SET); pktIndex.Number = TotalMsgs + 1; pktIndex.Position = ftell (fp); memset (&msgHdr, 0, sizeof (msgHdr)); msgHdr.Version = 2; f1 = f2 = f3 = f4 = 0; pszAddress = FromAddress; if (strchr (pszAddress, ':') != NULL) { f1 = atoi (pszAddress); pszAddress = strchr (pszAddress, ':') + 1; } if (strchr (pszAddress, '/') != NULL) { f2 = (USHORT)atoi (pszAddress); pszAddress = strchr (pszAddress, '/') + 1; } f3 = (USHORT)atoi (pszAddress); if ((p = strchr (pszAddress, '@')) != NULL) *p++ = '\0'; if (strchr (pszAddress, '.') != NULL) { pszAddress = strchr (pszAddress, '.') + 1; f4 = (USHORT)atoi (pszAddress); } msgHdr.OrigNet = (USHORT)f2; msgHdr.OrigNode = (USHORT)f3; t1 = t2 = t3 = t4 = 0; pszAddress = ToAddress; if (strchr (pszAddress, ':') != NULL) { t1 = atoi (pszAddress); pszAddress = strchr (pszAddress, ':') + 1; } if (strchr (pszAddress, '/') != NULL) { t2 = (USHORT)atoi (pszAddress); pszAddress = strchr (pszAddress, '/') + 1; } t3 = (USHORT)atoi (pszAddress); if ((p = strchr (pszAddress, '@')) != NULL) *p++ = '\0'; if (strchr (pszAddress, '.') != NULL) { pszAddress = strchr (pszAddress, '.') + 1; t4 = (USHORT)atoi (pszAddress); } msgHdr.DestNet = (USHORT)t2; msgHdr.DestNode = (USHORT)t3; if (Crash == TRUE) msgHdr.Attrib |= MSGCRASH; if (FileAttach == TRUE) msgHdr.Attrib |= MSGFILE; if (FileRequest == TRUE) msgHdr.Attrib |= MSGFRQ; if (Hold == TRUE) msgHdr.Attrib |= MSGHOLD; if (KillSent == TRUE) msgHdr.Attrib |= MSGKILL; if (Local == TRUE) msgHdr.Attrib |= MSGLOCAL; if (Private == TRUE) msgHdr.Attrib |= MSGPRIVATE; if (ReceiptRequest == TRUE) msgHdr.Attrib |= MSGRRQ; if (Received == TRUE) msgHdr.Attrib |= MSGREAD; if (Sent == TRUE) msgHdr.Attrib |= MSGSENT; fwrite (&msgHdr, sizeof (MSGHDR), 1, fp); _dos_getdate (&d_date); _dos_gettime (&d_time); if (Written.Day == 0) Written.Day = d_date.day; if (Written.Month == 0) Written.Month = d_date.month; if (Written.Year == 0) Written.Year = (USHORT)d_date.year; if (Written.Hour == 0) Written.Hour = d_time.hour; if (Written.Minute == 0) Written.Minute = d_time.minute; if (Written.Second == 0) Written.Second = d_time.second; sprintf (Line, "%2d %3.3s %02d %02d:%02d:%02d", Written.Day, pktMonths[Written.Month - 1], Written.Year % 100, Written.Hour, Written.Minute, 0); fwrite (Line, strlen (Line) + 1, 1, fp); fwrite (To, strlen (To) + 1, 1, fp); fwrite (From, strlen (From) + 1, 1, fp); fwrite (Subject, strlen (Subject) + 1, 1, fp); if ((pszText = (PSZ)MsgText.First ()) != NULL) { if (!strncmp (pszText, "AREA:", 5)) IsEchomail = TRUE; } if (IsEchomail == FALSE) { if (f1 != t1) { sprintf (Temp, "\001INTL %d:%d/%d %d:%d/%d\r", t1, t2, t3, f1, f2, f3); fwrite (Temp, strlen (Temp), 1, fp); AddedIntl = TRUE; } if (f4 != 0) { sprintf (Temp, "\001FMPT %u\r", f4); fwrite (Temp, strlen (Temp), 1, fp); } if (t4 != 0) { sprintf (Temp, "\001TOPT %u\r", t4); fwrite (Temp, strlen (Temp), 1, fp); } } if ((pszText = (PSZ)MsgText.First ()) != NULL) do { if (IsEchomail == FALSE) { if (!strncmp (pszText, "\001FMPT ", 6)) continue; else if (!strncmp (pszText, "\001TOPT ", 6)) continue; else if (!strncmp (pszText, "\001INTL ", 6) && AddedIntl == TRUE) continue; } fwrite (pszText, strlen (pszText), 1, fp); fwrite ("\r", 1, 1, fp); } while ((pszText = (PSZ)MsgText.Next ()) != NULL); fwrite ("\000\000\000", 3, 1, fp); Index.Add (&pktIndex, sizeof (PKTINDEX)); return (RetVal); }
int main(int argc, char **argv) { int setup( int, char **, Promptfile, long *, long *, boolean *, boolean *, boolean *, boolean *, boolean *, boolean *, boolean *, boolean *, boolean *, int *, Sellstar_system * ); int help( void ); int check( char *, boolean, long *, char * ); int print_check_report(int, char *, long, char); int list( char *, Promptfile, long, long, boolean, boolean, boolean ); int convert ( char *, Promptfile, Sellstar_system ); int make_screen_prints ( char *, Promptfile, Sellstar_system, boolean ); int linenumber( char *, long ); int un_setup_printer( void ); int bbdd( Promptfile prompt, int starting_at ); Promptfile prompt; int rc, checkresult; boolean nocheck; boolean convert_file; boolean report_only; boolean list_only; boolean extended_report; boolean file_only; boolean laser_option; boolean screen_print_option; boolean convert_data_dictionary; int starting_where; Sellstar_system main_m; long startlistline, endlistline, errline; char errchar; char outtext_string[MAX_LINE_LENGTH]; int text_color; int rand_color_1, rand_color_2; struct dostime_t randomtime; /* ** Print an informative message on the screen, in color. */ sprintf(outtext_string, "\n"); _outtext(outtext_string); text_color = _gettextcolor(); _dos_gettime(&randomtime); rand_color_1 = ( randomtime.second % 6 ) + 9; _settextcolor(rand_color_1); sprintf(outtext_string, "%s", BANNER); _outtext(outtext_string); _dos_gettime(&randomtime); rand_color_2 = ( ( randomtime.second + 2 ) % 6 ) + 9; _settextcolor(rand_color_2); sprintf(outtext_string, "%s", COPYRIGHT); _outtext(outtext_string); _settextcolor(text_color); sprintf(outtext_string, "\n"); _outtext(outtext_string); /* ** Give the user Help if desired. */ if ( argc == 1 ) { fprintf(stdout, USAGE); exit(-1); } if ( argc == 2 ) { help(); /* give the user Help here. */ exit(-1); } /* ** allocate an array of struct pfile to hold the prompt file. */ if ( (prompt = (Promptfile)malloc((long)(MAX_NUM_PROMPTS + 1) * sizeof(struct pfile))) == NULL ) { fprintf(stdout, "Insufficient memory to run LIST.\n"); exit(-1); } /* ** Get the filename to process. */ strcpy(filename, argv[argc-1]); /* ** Look for it on disk. */ _splitpath(filename, drive, subdir, file, ext); if (strlen(subdir) == 0) if (strcmp(strupr(ext), ".SCN") == 0) strcpy(subdir, SCREENS); else if (strcmp(strupr(ext), ".FRM") == 0) strcpy(subdir, FORMS); sprintf(pathname, "%s%s", drive, subdir); sprintf(longfilename, "%s%s%s%s", drive, subdir, file, ext); /* ** Before taking the time to read in the prompt file, check to make sure ** we can find the indicated input file. */ if ((done = _dos_findfirst(longfilename, 47, &dta)) != 0) { perror("LIST"); exit(-1); } /* ** Otherwise, call SETUP() and begin. */ rc = setup( argc, argv, prompt, &startlistline, &endlistline, &nocheck, &report_only, &list_only, &extended_report, &file_only, &convert_file, &laser_option, &screen_print_option, &convert_data_dictionary, &starting_where, &main_m ); if ( convert_data_dictionary ) { bbdd(prompt, starting_where); fcloseall(); goto all_done; } /* ** Get the filename [ again ] to hand off to List(). */ strcpy(filename, argv[argc-1]); _splitpath(filename, drive, subdir, file, ext); if (strlen(subdir) == 0) if (strcmp(strupr(ext), ".SCN") == 0) strcpy(subdir, SCREENS); else if (strcmp(strupr(ext), ".FRM") == 0) strcpy(subdir, FORMS); sprintf(pathname, "%s%s", drive, subdir); sprintf(longfilename, "%s%s%s%s", drive, subdir, file, ext); if ((done = _dos_findfirst(longfilename, 47, &dta)) != 0) { perror("LIST"); exit(-1); } if ( convert_file ) { if (strcmp(strupr(ext), ".SCN") == 0) fprintf(stdout, "Converting screen file to BRANCHBANKER format . . .\n"); else { fprintf(stdout, "BRANCHBANKER conversion does not apply to forms.\n"); exit(-1); } } else fprintf(stdout, "Running . . .\n"); /* ** (There may be more than one file.) */ while ( !done ) { strcpy(name, pathname); strcat(name, dta.name); strupr(name); /* ** First CHECK the file. Only if it passes do we actually LIST it. */ if ((checkresult=check(name, nocheck, &errline, &errchar))==0) { if ( convert_file ) { convert ( name, prompt, main_m ); } else { if ( ( screen_print_option ) && (strcmp(strupr(ext), ".SCN") == 0) ) { make_screen_prints( name, prompt, main_m, laser_option ); } else { list( name, prompt, startlistline, endlistline, report_only, list_only, extended_report ); } } } else if (checkresult != (-1)) print_check_report(checkresult, name, errline, errchar); /* ** If sending this file to a file, print a formfeed here (since it ** is presumably NOT going directly to DOS Print). */ if ( ( file_only ) && ( !convert_file ) ) fprintf(fp_output, "\f"); /* ** Check to see if the user wants to escape out and exit. */ if ( kbhit() ) { if ( getch() == 27 ) { fprintf(stdout, "\nAre you sure you want to exit? (Y/N) "); console_input = getch(); if ( ( console_input == 13 ) || ( console_input == 27 ) || ( console_input == 'Y') || ( console_input == 'y' ) ) { fclose(fp_input); fclose(fp_output); fclose(fp_prompt); fclose(fp_check); fprintf(stdout, "\nOkay.\n"); exit(-2); } } else fprintf(stdout, "\nContinuing . . .\n"); } /* end of user exit loop */ /* ** Otherwise, look for the next file. */ done = _dos_findnext(&dta); } /* end of MAIN while loop */ if ( !convert_file ) un_setup_printer(); /* turn off automatic perforation skip */ if ( laser_option ) { fputc(27, fp_output); /* RESET IBM LASER PRINTER TO HP MODE! */ fputc(91, fp_output); fputc(75, fp_output); fputc( 3, fp_output); fputc( 0, fp_output); fputc( 1, fp_output); fputc(49, fp_output); fputc( 2, fp_output); } /* ** Clean up, free memory, and exit. */ fclose(fp_output); fclose(fp_input); fclose(fp_prompt); fclose(fp_check); fclose(fp_main); /* ** Send the whole mess to the printer, cancelling any previous job ** left in the print queue BY THIS PROGRAM ONLY, to avoid locking up ** the machine on a file-access conflict. */ if ( file_only ) { fprintf(stdout, "Output has been sent to the file C:\\LISTFILE.RJL\n"); if ( laser_option ) { fprintf(stdout, "\n"); fprintf(stdout, "To print to the IBM Laser Printer, you must first be logged on to the LAN.\n"); fprintf(stdout, "Restart the computer with the LAN diskette, log on and exit to DOS.\n"); fprintf(stdout, "Then use NPRINT C:\\LISTFILE.RJL /nb /noff /S=WA001HME01 /Q=BKS_01 to print.\n"); } } else if ( !convert_file ) { system(CANCEL_PRINTING); system(SEND_TO_PRINTER); } /* ** And we're outa here. */ all_done: return(0); }
USHORT PACKET::Open (PSZ pszName, USHORT doScan) { int c; USHORT RetVal = FALSE, i; PSZ pszAddress; ULONG Position; PKTINDEX pktIndex; struct dosdate_t date; struct dostime_t time; TotalMsgs = 0L; Index.Clear (); if (fp != NULL) fclose (fp); if ((fp = fopen (pszName, "r+b")) == NULL) fp = fopen (pszName, "w+b"); strcpy (FileName, pszName); if (fp != NULL) { setvbuf (fp, NULL, _IOFBF, 4096L); if (filelength (fileno (fp)) == 0L) { memset (&pkt2Hdr, 0, sizeof (PKT2HDR)); _dos_getdate (&date); _dos_gettime (&time); pkt2Hdr.Version = 2; pkt2Hdr.CWValidation = 0x100; pkt2Hdr.Capability = 0x0001; pkt2Hdr.ProductL = 0x4E; pkt2Hdr.Day = date.day; pkt2Hdr.Month = (UCHAR)(date.month - 1); pkt2Hdr.Year = (USHORT)date.year; pkt2Hdr.Hour = time.hour; pkt2Hdr.Minute = time.minute; pkt2Hdr.Second = time.second; pszAddress = ToAddress; if (strchr (pszAddress, ':') != NULL) { pkt2Hdr.DestZone2 = pkt2Hdr.DestZone = (USHORT)atoi (pszAddress); pszAddress = strchr (pszAddress, ':') + 1; } if (strchr (pszAddress, '/') != NULL) { pkt2Hdr.DestNet = (USHORT)atoi (pszAddress); pszAddress = strchr (pszAddress, '/') + 1; } pkt2Hdr.DestNode = (USHORT)atoi (pszAddress); if (strchr (pszAddress, '.') != NULL) { pszAddress = strchr (pszAddress, '.') + 1; pkt2Hdr.DestPoint = (USHORT)atoi (pszAddress); } pszAddress = FromAddress; if (strchr (pszAddress, ':') != NULL) { pkt2Hdr.OrigZone2 = pkt2Hdr.OrigZone = (USHORT)atoi (pszAddress); pszAddress = strchr (pszAddress, ':') + 1; } if (strchr (pszAddress, '/') != NULL) { pkt2Hdr.OrigNet = (USHORT)atoi (pszAddress); pszAddress = strchr (pszAddress, '/') + 1; } pkt2Hdr.OrigNode = (USHORT)atoi (pszAddress); if (strchr (pszAddress, '.') != NULL) { pszAddress = strchr (pszAddress, '.') + 1; pkt2Hdr.OrigPoint = (USHORT)atoi (pszAddress); } memcpy (pkt2Hdr.Password, Password, 8); fwrite (&pkt2Hdr, sizeof (PKT2HDR), 1, fp); memset (&msgHdr, 0, sizeof (MSGHDR)); fwrite (&msgHdr, 2, 1, fp); sprintf (FromAddress, "%d:%d/%d.%d", pkt2Hdr.OrigZone, pkt2Hdr.OrigNet, pkt2Hdr.OrigNode, pkt2Hdr.OrigPoint); sprintf (ToAddress, "%d:%d/%d.%d", pkt2Hdr.DestZone, pkt2Hdr.DestNet, pkt2Hdr.DestNode, pkt2Hdr.DestPoint); fflush (fp); fseek (fp, filelength (fileno (fp)) - sizeof (MSGHDR), SEEK_SET); RetVal = TRUE; } else { fread (&pkt2Hdr, sizeof (PKT2HDR), 1, fp); if (pkt2Hdr.Version == 2) { if (pkt2Hdr.Rate == 2) { memcpy (&pkt22Hdr, &pkt2Hdr, sizeof (PKT22HDR)); sprintf (FromAddress, "%d:%d/%d.%d", pkt22Hdr.OrigZone, pkt22Hdr.OrigNet, pkt22Hdr.OrigNode, pkt22Hdr.OrigPoint); if (pkt22Hdr.OrigDomain[0] != '\0') { strcat (FromAddress, "@"); strcat (FromAddress, pkt22Hdr.OrigDomain); } sprintf (ToAddress, "%d:%d/%d.%d", pkt22Hdr.DestZone, pkt22Hdr.DestNet, pkt22Hdr.DestNode, pkt22Hdr.DestPoint); if (pkt22Hdr.DestDomain[0] != '\0') { strcat (ToAddress, "@"); strcat (ToAddress, pkt22Hdr.DestDomain); } RetVal = TRUE; } else { //kj swab ((char *)&pkt2Hdr.CWValidation, (char *)&i, 2); pkt2Hdr.CWValidation = i; if (pkt2Hdr.Capability != pkt2Hdr.CWValidation || !(pkt2Hdr.Capability & 0x0001)) { sprintf (FromAddress, "%d:%d/%d.%d", pkt2Hdr.OrigZone, pkt2Hdr.OrigNet, pkt2Hdr.OrigNode, 0); sprintf (ToAddress, "%d:%d/%d.%d", pkt2Hdr.DestZone, pkt2Hdr.DestNet, pkt2Hdr.DestNode, 0); } else { sprintf (FromAddress, "%d:%d/%d.%d", pkt2Hdr.OrigZone, pkt2Hdr.OrigNet, pkt2Hdr.OrigNode, pkt2Hdr.OrigPoint); sprintf (ToAddress, "%d:%d/%d.%d", pkt2Hdr.DestZone, pkt2Hdr.DestNet, pkt2Hdr.DestNode, pkt2Hdr.DestPoint); } memcpy (Password, pkt2Hdr.Password, sizeof (pkt2Hdr.Password)); Password[sizeof (pkt2Hdr.Password)] = '\0'; RetVal = TRUE; } } } } if (RetVal == TRUE) { Date.Day = (UCHAR)pkt2Hdr.Day; Date.Month = (UCHAR)(pkt2Hdr.Month + 1); Date.Year = (USHORT)pkt2Hdr.Year; Date.Hour = (UCHAR)pkt2Hdr.Hour; Date.Minute = (UCHAR)pkt2Hdr.Minute; Date.Second = (UCHAR)pkt2Hdr.Second; } if (RetVal == TRUE && fp != NULL && doScan == TRUE) { do { memset (&pktIndex, 0, sizeof (PKTINDEX)); pktIndex.Position = ftell (fp); memset (&msgHdr, 0, sizeof (MSGHDR)); fread (&msgHdr, sizeof (MSGHDR), 1, fp); if (msgHdr.Version == 2) { // Date and time while ((c = fgetc (fp)) != '\0' && c != EOF) ; // To while ((c = fgetc (fp)) != '\0' && c != EOF) ; // From while ((c = fgetc (fp)) != '\0' && c != EOF) ; // Subject while ((c = fgetc (fp)) != '\0' && c != EOF) ; // Text body while ((c = fgetc (fp)) != '\0' && c != EOF) ; TotalMsgs++; pktIndex.Number = TotalMsgs; Index.Add (&pktIndex, sizeof (PKTINDEX)); } else if (msgHdr.Version != 0) { while ((c = fgetc (fp)) != EOF && c != 0) ; if (c == 0) { Position = ftell (fp); memset (&msgHdr, 0, sizeof (MSGHDR)); fread (&msgHdr, sizeof (MSGHDR), 1, fp); fseek (fp, Position, SEEK_SET); } else msgHdr.Version = 0; } } while (msgHdr.Version != 0); } return (RetVal); }
USHORT FIDOSDM::Read (ULONG ulMsg, class TCollection &MsgText, SHORT nWidth) { int fz, fn, fo, tz, tn, to, dd, yy, hr, mn, sc; USHORT RetVal = FALSE, SkipNext; USHORT ToPoint, ToZone, FromPoint, FromZone; CHAR mm[4]; SHORT i, nReaded, nCol; MSGINDEX *msgIndex; struct dosdate_t date; struct dostime_t time; New (); MsgText.Clear (); ToPoint = ToZone = FromPoint = FromZone = 0; fp = NULL; if ((msgIndex = (MSGINDEX *)Index.First ()) != NULL) do { if (msgIndex->Number == ulMsg) { sprintf (LastFile, "%s%s", BasePath, msgIndex->FileName); if ((fp = _fsopen (LastFile, "rb", SH_DENYNO)) != NULL) { RetVal = TRUE; Current = ulMsg; break; } } } while ((msgIndex = (MSGINDEX *)Index.Next ()) != NULL); if (RetVal == TRUE && fp != NULL) { memset (&msgHdr, 0, sizeof (msgHdr)); fread (&msgHdr, sizeof (msgHdr), 1, fp); for (i = 0; i < 7; i++) { if (!strncmp (fidoDays[i], msgHdr.Date, 3)) break; } if (i < 7) { sscanf (&msgHdr.Date[4], "%2d %3s %2d %2d:%2d", &dd, mm, &yy, &hr, &mn); sc = 0; } else sscanf (msgHdr.Date, "%2d %3s %2d %2d:%2d:%02d", &dd, mm, &yy, &hr, &mn, &sc); Written.Day = (UCHAR)dd; for (i = 0; i < 12; i++) { if (!stricmp (fidoMonths[i], mm)) { Written.Month = (UCHAR)(i + 1); break; } } if (Written.Month < 1 || Written.Month > 12) Written.Month = 1; if ((Written.Year = (USHORT)(yy + 1900)) < 1990) Written.Year += 100; Written.Hour = (UCHAR)hr; Written.Minute = (UCHAR)mn; Written.Second = (UCHAR)sc; _dos_getdate (&date); _dos_gettime (&time); Arrived.Day = date.day; Arrived.Month = date.month; Arrived.Year = (USHORT)date.year; Arrived.Hour = time.hour; Arrived.Minute = time.minute; Arrived.Second = time.second; strcpy (From, msgHdr.From); strcpy (To, msgHdr.To); strcpy (Subject, msgHdr.Subject); Crash = (UCHAR)((msgHdr.Attrib & MSGCRASH) ? TRUE : FALSE); FileAttach = (UCHAR)((msgHdr.Attrib & MSGFILE) ? TRUE : FALSE); FileRequest = (UCHAR)((msgHdr.Attrib & MSGFRQ) ? TRUE : FALSE); Hold = (UCHAR)((msgHdr.Attrib & MSGHOLD) ? TRUE : FALSE); KillSent = (UCHAR)((msgHdr.Attrib & MSGKILL) ? TRUE : FALSE); Local = (UCHAR)((msgHdr.Attrib & MSGLOCAL) ? TRUE : FALSE); Private = (UCHAR)((msgHdr.Attrib & MSGPRIVATE) ? TRUE : FALSE); ReceiptRequest = (UCHAR)((msgHdr.Attrib & MSGRRQ) ? TRUE : FALSE); Received = (UCHAR)((msgHdr.Attrib & MSGREAD) ? TRUE : FALSE); Sent = (UCHAR)((msgHdr.Attrib & MSGSENT) ? TRUE : FALSE); Original = msgHdr.Reply; Reply = msgHdr.Up; pLine = szLine; nCol = 0; Current = ulMsg; SkipNext = FALSE; do { nReaded = (SHORT)fread (szBuff, 1, sizeof (szBuff), fp); for (i = 0, pBuff = szBuff; i < nReaded && *pBuff != '\0'; i++, pBuff++) { if (*pBuff == '\r') { *pLine = '\0'; if (!strncmp (szLine, "\001FMPT ", 6)) FromPoint = (USHORT)atoi (&szLine[6]); else if (!strncmp (szLine, "\001TOPT ", 6)) ToPoint = (USHORT)atoi (&szLine[6]); else if (!strncmp (szLine, "\001INTL ", 6)) { sscanf (&szLine[6], "%d:%d/%d %d:%d/%d", &tz, &tn, &to, &fz, &fn, &fo); if (tn == msgHdr.DestNet && to == msgHdr.DestNode) ToZone = (USHORT)tz; if (fn == msgHdr.OrigNet && fo == msgHdr.OrigNode) FromZone = (USHORT)fz; } else if (!strncmp (szLine, "\001FLAGS ", 7)) { if (strstr (szLine, "DIR")) Direct = TRUE; } if (pLine > szLine && SkipNext == TRUE) { pLine--; while (pLine > szLine && *pLine == ' ') *pLine-- = '\0'; if (pLine > szLine) MsgText.Add (szLine); } else if (SkipNext == FALSE) MsgText.Add (szLine); SkipNext = FALSE; pLine = szLine; nCol = 0; } else if (*pBuff != '\n') { *pLine++ = *pBuff; nCol++; if (nCol >= nWidth) { *pLine = '\0'; if (strchr (szLine, ' ') != NULL) { while (nCol > 1 && *pLine != ' ') { nCol--; pLine--; } if (nCol > 0) { while (*pLine == ' ') pLine++; strcpy (szWrp, pLine); } *pLine = '\0'; } else szWrp[0] = '\0'; MsgText.Add (szLine); strcpy (szLine, szWrp); pLine = strchr (szLine, '\0'); nCol = (SHORT)strlen (szLine); SkipNext = TRUE; } } } } while (nReaded != 0 && i >= nReaded); sprintf (FromAddress, "%u:%u/%u.%u", FromZone, msgHdr.OrigNet, msgHdr.OrigNode, FromPoint); sprintf (ToAddress, "%u:%u/%u.%u", ToZone, msgHdr.DestNet, msgHdr.DestNode, ToPoint); fclose (fp); } return (RetVal); }
char Execute_G(char *ok,char *esc) { char endprg=0, zw_buf1,buf[20]; int g_wert, xi_wert, zk_wert, flkt_wert, h_wert, taste; short P1x,P1z,P2x,P2z, steigung, step,Xpos,Zpos,za; struct dostime_t time; Status("Simulation"); Meldung("Bearbeite G-Befehl."); /* eventuell test ob nicht G00 -> dann darf g_wert nicht 0 sein -> Err */ /* Werte feststellen */ g_wert=atoi(cncprg[ip].GM); strcpy(buf,cncprg[ip].XI); ElimSpaces(buf); ElimSpaces(buf); if (isdigit((int)buf[0]) || buf[0]=='-') xi_wert=atoi(buf); else xi_wert=atoi(buf+1); strcpy(buf,cncprg[ip].ZK); ElimSpaces(buf); ElimSpaces(buf); if (isdigit((int)buf[0]) || buf[0]=='-') zk_wert=atoi(buf); else zk_wert=atoi(buf+1); strcpy(buf,cncprg[ip].FLKT); ElimSpaces(buf); ElimSpaces(buf); if (isdigit((int)buf[0]) || buf[0]=='-') flkt_wert=atoi(buf); else flkt_wert=atoi(buf+1); h_wert=atoi(cncprg[ip].H); /* G-Befehle verzweigen */ switch(g_wert) { /**************** G00 *******************/ case 00:if (cncprg[ip].XI[0]!='I' && cncprg[ip].ZK[0]!='K') { if (inkrementell) { /* G00 INCR */ endprg=Ziehe_Gerade(xrad,zpos,xrad+xi_wert,zpos+zk_wert, prgconfig.wait_g00,schritt_g00,checkTasten); if (endprg) { *ok=1; *esc=1; } xrad=xrad+xi_wert; zpos=zpos+zk_wert; } else { /* G00 ABS */ endprg=Ziehe_Gerade(xrad,zpos,(short)(xi_wert/2)+xcorr,zk_wert+zcorr, prgconfig.wait_g00,schritt_g00,checkTasten); if (endprg) { *ok=1; *esc=1; } xrad=(short)(xi_wert/2)+xcorr; zpos=zk_wert+zcorr; } } else { *ok=0; endprg=1; } break; /**************** G01 *******************/ case 01:if (cncprg[ip].XI[0]!='I' && cncprg[ip].ZK[0]!='K') { if (inkrementell) { /* G01 INCR */ endprg=Ziehe_Gerade(xrad,zpos,xrad+xi_wert,zpos+zk_wert, prgconfig.wait_g01,schritt_g01,checkTasten); if (endprg) { *ok=1; *esc=1; } xrad=xrad+xi_wert; zpos=zpos+zk_wert; } else { /* G01 ABS */ endprg=Ziehe_Gerade(xrad,zpos,(short)(xi_wert/2)+xcorr,zk_wert+zcorr, prgconfig.wait_g01,schritt_g01,checkTasten); if (endprg) { *ok=1; *esc=1; } xrad=(short)(xi_wert/2)+xcorr; zpos=zk_wert+zcorr; } } else { *ok=0; endprg=1; } break; /**************** G02 *******************/ case 02:if (cncprg[ip].XI[0]!='I' && cncprg[ip].ZK[0]!='K') { /* test ob == | != 90 */ if (!strcmp(cncprg[ip+1].GM,"M99 ")) { /* Mittelpunkt bestimmen */ Xpos=atoi(cncprg[ip+1].XI+1); Zpos=atoi(cncprg[ip+1].ZK+1); if (cncprg[ip+1].ZK[0]!='K' || cncprg[ip+1].XI[0]!='I') { Meldung("Error in M99-Anweisung!"); Status("Fehler"); getch(); endprg=1; *ok=0; } else { /* Kreisbogen(X1,Z1,X2,Z2,XM,ZM,1=G03 0=G02 */ if (inkrementell) { endprg=Ziehe_KreisNO90(xrad,zpos,xrad+xi_wert,zpos+zk_wert,xrad+Xpos,zpos+Zpos,0); /*xrad=xrad+xi_wert; zpos=zk_wert;*/ } else { endprg=Ziehe_KreisNO90(xrad,zpos,(short)(xi_wert/2),zk_wert,xrad+Xpos,zpos+Zpos,0); /*xrad=(short)(xi_wert/2); zpos=zk_wert;*/ } ip++; } } else { /* kreisbogen a=90� */ if (inkrementell) { /* G02 INC */ endprg=Ziehe_Kreis02(xrad,zpos,xrad+xi_wert,zpos+zk_wert, prgconfig.wait_g01); if (endprg) { *ok=1; *esc=1; } xrad=xrad+xi_wert; zpos=zpos+zk_wert; } else { /* G02 ABS */ endprg=Ziehe_Kreis02(xrad,zpos,(short)(xi_wert/2)+xcorr,zk_wert+zcorr,prgconfig.wait_g01); if (endprg) { *ok=1; *esc=1; } xrad=(short)(xi_wert/2)+xcorr; zpos=zk_wert+zcorr; } } /* von if ==/!=90 */ } else { *ok=0; endprg=1; } /*von if !I & !K */ break; /**************** G03 *******************/ case 03:if (cncprg[ip].XI[0]!='I' && cncprg[ip].ZK[0]!='K') { /* test ob == | != 90 */ if (!strcmp(cncprg[ip+1].GM,"M99 ")) { /* Mittelpunkt bestimmen */ Xpos=atoi(cncprg[ip+1].XI+1); Zpos=atoi(cncprg[ip+1].ZK+1); if (cncprg[ip+1].ZK[0]!='K' || cncprg[ip+1].XI[0]!='I') { Meldung("Error in M99-Anweisung!"); Status("Fehler"); getch(); endprg=1; *ok=0; } else { /* Kreisbogen(X1,Z1,X2,Z2,XM,ZM,1=G03 0=G02 */ if (inkrementell) endprg=Ziehe_KreisNO90(xrad,zpos,xrad+xi_wert,zpos+zk_wert,xrad+Xpos,zpos+Zpos,1); else endprg=Ziehe_KreisNO90(xrad,zpos,(short)(xi_wert/2),zk_wert,xrad+Xpos,zpos+Zpos,1); ip++; } } else { /* kreisbogen a=90� */ if (inkrementell) { /* G03 INC */ endprg=Ziehe_Kreis03(xrad,zpos,xrad+xi_wert,zpos+zk_wert, prgconfig.wait_g01); if (endprg) { *ok=1; *esc=1; } xrad=xrad+xi_wert; zpos=zpos+zk_wert; } else { /* G03 ABS */ endprg=Ziehe_Kreis03(xrad,zpos,(short)(xi_wert/2)+xcorr,zk_wert+zcorr,prgconfig.wait_g01); if (endprg) { *ok=1; *esc=1; } xrad=(short)(xi_wert/2)+xcorr; zpos=zk_wert+zcorr; } /* von inkr | abs */ } /* von if a==90 */ } else { *ok=0; endprg=1; } /*von if !I & !K */ break; /**************** G04 *******************/ case 4 :/* Verweilzeit */ if (cncprg[ip].XI[0]!='I') { za=0; step=0; do { _dos_gettime(&time); if (kbhit()) taste=getch(); if ((short)time.second!=za) { za=(short)time.second; step++; } } while (step<(short)(xi_wert/100) && taste!=27); } break; /**************** G21 *******************/ case 21:break; /* rem */ /**************** G25 *******************/ case 25: /* Unterprgr */ if (cncprg[ip].FLKT[0]=='L' && flkt_wert<max_line && sp<4) { stack[sp++]=ip; ip=--flkt_wert; } else { Status("Error!"); Meldung("Fehler im GOSUB-G27-Befehl!"); *ok=0; endprg=1; }break; /**************** G26 *******************/ case 26: /* werkzeugwechsel */ if (cncprg[ip].FLKT[0]=='T' && flkt_wert>0 && flkt_wert<=max_tools) { _settextposition(3,37); _outtext(cncprg[ip].FLKT); _outtext(" "); Setzte_Stahl(xrad,zpos,(char)flkt_wert); endprg=Ziehe_Gerade(xrad,zpos,xrad+xi_wert,zpos+zk_wert, prgconfig.wait_g00,schritt_g00,checkTasten); xrad=xrad+xi_wert; zpos=zpos+zk_wert; xcorr=xi_wert; /* Korrekturwerte des Stahles muessen */ zcorr=zk_wert; /* in Abs. mit einberechnet werden */ } else { *ok=0; endprg=1; } break; /**************** G27 *******************/ case 27: /* goto */ if (cncprg[ip].FLKT[0]=='L' && flkt_wert<max_line) ip=--flkt_wert; else { *ok=0; endprg=1; } break; /**************** G33 *******************/ case 33: /* gewinde schneiden */ if (cncprg[ip].FLKT[0]=='K' && flkt_wert>=2 && flkt_wert<500) { steigung=flkt_wert; if (inkrementell) { /* INCR */ endprg=Gewinde(xrad,zpos,zpos+zk_wert,steigung,prgconfig.wait_g01+10000); if (endprg) { *ok=1; *esc=1; } zpos=zpos+zk_wert; } else { /* ABS */ endprg=Gewinde(xrad,zpos,zcorr+zk_wert,steigung,prgconfig.wait_g01+10000); if (endprg) { *ok=1; *esc=1; } zpos=zk_wert+zcorr; } } else { *ok=0; endprg=1; } break; /**************** G78 *******************/ case 78: /* Gewindezyklus */ if (cncprg[ip].FLKT[0]=='K' && flkt_wert>=2 && flkt_wert<500) { /* Start & Zielkoord */ P1x=xrad; P1z=zpos; if (inkrementell) { P2x=xrad+xi_wert; P2z=zpos+zk_wert; } else { P2x=(short)(xi_wert/2)+xcorr; P2z=zk_wert+zcorr; } /* Schritt & Steigung */ step=h_wert; steigung=flkt_wert; /* Anfahren */ if (step!=0) if (P1x>P2x) for (Xpos=P1x;Xpos-step>P2x && !endprg;Xpos-=step) { endprg=Ziehe_Gerade(P1x,P1z,Xpos-step,P1z, prgconfig.wait_g01,schritt_g01,checkTasten); if (!endprg) endprg=Gewinde(Xpos-step,P1z,P2z,steigung,prgconfig.wait_g01+10000); if (!endprg) endprg=Ziehe_Gerade(xrad,zpos,P1x,P2z, prgconfig.wait_g00,schritt_g00,checkTasten); if (!endprg) endprg=Ziehe_Gerade(P1x,P2z,P1x,P1z, prgconfig.wait_g00,schritt_g00,checkTasten); } else for (Xpos=P1x;Xpos+step<P2x && !endprg;Xpos+=step) { endprg=Ziehe_Gerade(P1x,P1z,Xpos+step,P1z, prgconfig.wait_g01,schritt_g01,checkTasten); if (!endprg) endprg=Gewinde(Xpos+step,P1z,P2z,steigung,prgconfig.wait_g01+10000); if (!endprg) endprg=Ziehe_Gerade(xrad,zpos,P1x,P2z, prgconfig.wait_g00,schritt_g00,checkTasten); if (!endprg) endprg=Ziehe_Gerade(P1x,P2z,P1x,P1z, prgconfig.wait_g00,schritt_g00,checkTasten); } /* letzter Schritt oder Schritt ohne Aufteilung*/ if (!endprg) endprg=Ziehe_Gerade(P1x,P1z,P2x,P1z, prgconfig.wait_g01,schritt_g01,checkTasten); if (!endprg) endprg=Gewinde(P2x,P1z,P2z,steigung,prgconfig.wait_g01+20000); if (!endprg) endprg=Ziehe_Gerade(xrad,zpos,P1x,P2z, prgconfig.wait_g01+4000,schritt_g00,checkTasten); if (!endprg) endprg=Ziehe_Gerade(P1x,P2z,P1x,P1z, prgconfig.wait_g00,schritt_g00,checkTasten); if (endprg) { *ok=1; *esc=1; } xrad=P1x; zpos=P1z; } break; /**************** G84 *******************/ case 84: /* laengsdrehzyklus */ if (cncprg[ip].XI[0]!='I' && cncprg[ip].ZK[0]!='K') { /* Start & Zielkoord */ P1x=xrad; P1z=zpos; if (inkrementell) { P2x=xrad+xi_wert; P2z=zpos+zk_wert; } else { P2x=(short)(xi_wert/2)+xcorr; P2z=zk_wert+zcorr; } /* Schritt */ step=h_wert; /* Anfahren */ if (step!=0) if (P1x>P2x) for (Xpos=P1x;Xpos-step>P2x && !endprg;Xpos-=step) { endprg=Ziehe_Gerade(Xpos,P1z,Xpos-step,P1z, prgconfig.wait_g01,schritt_g01,checkTasten); if (!endprg) endprg=Ziehe_Gerade(Xpos-step,P1z,Xpos-step,P2z, prgconfig.wait_g01,schritt_g01,checkTasten); if (!endprg) endprg=Ziehe_Gerade(Xpos-step,P2z,Xpos-step,P1z, prgconfig.wait_g00,schritt_g00,checkTasten); } else for (Xpos=P1x;Xpos+step<P2x && !endprg;Xpos+=step) { endprg=Ziehe_Gerade(Xpos,P1z,Xpos+step,P1z, prgconfig.wait_g01,schritt_g01,checkTasten); if (!endprg) endprg=Ziehe_Gerade(Xpos+step,P1z,Xpos+step,P2z, prgconfig.wait_g01,schritt_g01,checkTasten); if (!endprg) endprg=Ziehe_Gerade(Xpos+step,P2z,Xpos+step,P1z, prgconfig.wait_g00,schritt_g00,checkTasten); } else Xpos=P1x; /* von if step!=0 */ /* letzter Schritt */ if (!endprg) endprg=Ziehe_Gerade(Xpos,P1z,P2x,P1z, prgconfig.wait_g01,schritt_g01,checkTasten); if (!endprg) endprg=Ziehe_Gerade(P2x,P1z,P2x,P2z, prgconfig.wait_g01,schritt_g01,checkTasten); if (!endprg) endprg=Ziehe_Gerade(P2x,P2z,P1x,P2z, prgconfig.wait_g01,schritt_g01,checkTasten); if (!endprg) endprg=Ziehe_Gerade(P1x,P2z,P1x,P1z, prgconfig.wait_g00,schritt_g00,checkTasten); if (endprg) { *ok=1; *esc=1; } xrad=P1x; zpos=P1z; } break; /**************** G86 *******************/ case 86: /* Austechzyklus */ if (cncprg[ip].XI[0]!='I' && cncprg[ip].ZK[0]!='K') { /* Start & Zielkoord */ P1x=xrad; P1z=zpos; if (inkrementell) { P2x=xrad+xi_wert; P2z=zpos+zk_wert; } else { P2x=(short)(xi_wert/2)+xcorr; P2z=zk_wert+zcorr; } /* Schritt */ step=h_wert; za=abs(P1z-P2z); if (za<step || step<10 || step>999) *ok=0; else { /* Anfahren */ if (P1z>P2z) for (Zpos=P1z;Zpos>P2z && !endprg;Zpos-=step) { endprg=Ziehe_Gerade(P1x,Zpos,P2x,Zpos, prgconfig.wait_g01,schritt_g01,checkTasten); if (!endprg) endprg=Ziehe_Gerade(P2x,Zpos,P1x,Zpos, prgconfig.wait_g00,schritt_g00,checkTasten); if (!endprg) endprg=Ziehe_Gerade(P1x,Zpos,P1x,Zpos-step, prgconfig.wait_g00,schritt_g00,checkTasten); } else for (Zpos=P1z;Zpos<P2z && !endprg;Zpos+=step) { endprg=Ziehe_Gerade(P1x,Zpos,P2x,Zpos, prgconfig.wait_g01,schritt_g01,checkTasten); if (!endprg) endprg=Ziehe_Gerade(P2x,Zpos,P1x,Zpos, prgconfig.wait_g00,schritt_g00,checkTasten); if (!endprg) endprg=Ziehe_Gerade(P1x,Zpos,P1x,Zpos+step, prgconfig.wait_g00,schritt_g00,checkTasten); } /* letzter Schritt */ if (!endprg) endprg=Ziehe_Gerade(P1x,Zpos,P1x,P2z, prgconfig.wait_g01,schritt_g01,checkTasten); if (!endprg) endprg=Ziehe_Gerade(P1x,P2z,P2x,P2z, prgconfig.wait_g01,schritt_g01,checkTasten); if (!endprg) endprg=Ziehe_Gerade(P2x,P2z,P1x,P2z, prgconfig.wait_g01,schritt_g01,checkTasten); if (!endprg) endprg=Ziehe_Gerade(P1x,P2z,P1x,P1z, prgconfig.wait_g00,schritt_g00,checkTasten); if (endprg) { *ok=1; *esc=1; } } xrad=P1x; zpos=P1z; }break; /**************** G88 *******************/ case 88: /* plandrehzyklus */ if (cncprg[ip].XI[0]!='I' && cncprg[ip].ZK[0]!='K') { /* Start & Zielkoord */ P1x=xrad; P1z=zpos; if (inkrementell) { P2x=xrad+xi_wert; P2z=zpos+zk_wert; } else { P2x=(short)(xi_wert/2)+xcorr; P2z=zk_wert+zcorr; } /* Schritt */ step=h_wert; /* Anfahren */ if (step!=0) if (P1z>P2z) for (Zpos=P1z;Zpos-step>P2z && !endprg;Zpos-=step) { endprg=Ziehe_Gerade(P1x,Zpos,P1x,Zpos-step, prgconfig.wait_g01,schritt_g01,checkTasten); if (!endprg) endprg=Ziehe_Gerade(P1x,Zpos-step,P2x,Zpos-step, prgconfig.wait_g01,schritt_g01,checkTasten); if (!endprg) endprg=Ziehe_Gerade(P2x,Zpos-step,P1x,Zpos-step, prgconfig.wait_g00,schritt_g00,checkTasten); } else for (Zpos=P1z;Zpos+step<P2z && !endprg;Zpos+=step) { endprg=Ziehe_Gerade(P1x,Zpos,P1x,Zpos+step, prgconfig.wait_g01,schritt_g01,checkTasten); if (!endprg) endprg=Ziehe_Gerade(P1x,Zpos+step,P2x,Zpos+step, prgconfig.wait_g01,schritt_g01,checkTasten); if (!endprg) endprg=Ziehe_Gerade(P2x,Zpos+step,P1x,Zpos+step, prgconfig.wait_g00,schritt_g00,checkTasten); } else Zpos=P1z; /* von if step!=0 */ /* letzter Schritt */ if (!endprg) endprg=Ziehe_Gerade(P1x,Zpos,P1x,P2z, prgconfig.wait_g01,schritt_g01,checkTasten); if (!endprg) endprg=Ziehe_Gerade(P1x,P2z,P2x,P2z, prgconfig.wait_g01,schritt_g01,checkTasten); if (!endprg) endprg=Ziehe_Gerade(P2x,P2z,P2x,P1z, prgconfig.wait_g01,schritt_g01,checkTasten); if (!endprg) endprg=Ziehe_Gerade(P2x,P1z,P1x,P1z, prgconfig.wait_g00,schritt_g00,checkTasten); if (endprg) { *ok=1; *esc=1; } xrad=P1x; zpos=P1z; } break; /**************** G90 *******************/ case 90:{ /* Absoltut ein : NP = Pos des Drehmeissels */ inkrementell=0; _settextposition(3,66); _outtext("ABS"); /* Neuer NP setzten & akt. Koord. anpassen */ NeuerGrNP(xrad,zpos); xrad=0; zpos=0; } break; /**************** G91 *******************/ case 91:/* Inkrementell ein */ inkrementell=1; break; /**************** G92 *******************/ case 92:if (cncprg[ip].XI[0]!='I' && cncprg[ip].ZK[0]!='K') { /* Absolut ein : NP = Parameter */ inkrementell=0; _settextposition(3,66); _outtext("ABS"); /* Neuer NP setzten & akt. Koord. anpassen */ zw_buf1=tool; /* Werkzeug zwischenspeichern & loeschen */ Setzte_Stahl(0,0,0); NeuerGrNP(xrad-(short)(xi_wert/2),zpos-zk_wert); xrad=(short)(xi_wert/2); zpos=zk_wert; tool=zw_buf1; Setzte_Stahl(xrad,zpos,tool); } else { *ok=0; endprg=1; } /*von if !I & !K */ break; /**************** G94 *******************/ case 94: break; /* zZ no Action */ /**************** G95 *******************/ case 95: break; /* zZ no Action */ /**************** Error *******************/ default:/* Unbekannter G-Befehl */ { *ok=0; /* Fehlerflag */ endprg=1; /* Prg-Ende-Flag */ } }/* von switch m_wert */ /* Returnwert */ if (!*ok && endprg) { Status("E-Unterbrechung"); Meldung("G-Befehl in der aktuellen Zeile ist unbekannt oder unkorrekt!"); } return endprg; }
USHORT PACKET::ReadHeader (ULONG ulMsg) { int dd, yy, hr, mn, sc; USHORT RetVal = FALSE, i; CHAR mm[4]; PKTINDEX *pktIndex; struct dosdate_t date; struct dostime_t time; New (); if ((pktIndex = (PKTINDEX *)Index.First ()) != NULL) { do { if (pktIndex->Number == ulMsg) { fseek (fp, pktIndex->Position, SEEK_SET); break; } } while ((pktIndex = (PKTINDEX *)Index.Next ()) != NULL); } memset (&msgHdr, 0, sizeof (MSGHDR)); fread (&msgHdr, sizeof (MSGHDR), 1, fp); if (msgHdr.Version == 2) { RetVal = TRUE; if (pkt2Hdr.Capability != pkt2Hdr.CWValidation || !(pkt2Hdr.Capability & 0x0001)) { sprintf (FromAddress, "%d:%d/%d.%d", pkt2Hdr.OrigZone, msgHdr.OrigNet, msgHdr.OrigNode, 0); sprintf (ToAddress, "%d:%d/%d.%d", pkt2Hdr.DestZone, msgHdr.DestNet, msgHdr.DestNode, 0); } else { sprintf (FromAddress, "%d:%d/%d.%d", pkt2Hdr.OrigZone, msgHdr.OrigNet, msgHdr.OrigNode, pkt2Hdr.OrigPoint); sprintf (ToAddress, "%d:%d/%d.%d", pkt2Hdr.DestZone, msgHdr.DestNet, msgHdr.DestNode, pkt2Hdr.DestPoint); } GetLine (); sscanf (Line, "%2d %3s %2d %2d:%2d:%02d", &dd, mm, &yy, &hr, &mn, &sc); Written.Day = (UCHAR)dd; for (i = 0; i < 12; i++) { if (!stricmp (pktMonths[i], mm)) { Written.Month = (UCHAR)(i + 1); break; } } if (Written.Month < 1 || Written.Month > 12) Written.Month = 1; if ((Written.Year = (USHORT)(yy + 1900)) < 1990) Written.Year += 100; Written.Hour = (UCHAR)hr; Written.Minute = (UCHAR)mn; Written.Second = (UCHAR)sc; _dos_getdate (&date); _dos_gettime (&time); Arrived.Day = date.day; Arrived.Month = date.month; Arrived.Year = (USHORT)date.year; Arrived.Hour = time.hour; Arrived.Minute = time.minute; Arrived.Second = time.second; GetLine (); strcpy (To, Line); GetLine (); strcpy (From, Line); GetLine (); strcpy (Subject, Line); } return (RetVal); }
int qse_gettime (qse_ntime_t* t) { #if defined(_WIN32) SYSTEMTIME st; FILETIME ft; ULARGE_INTEGER li; /* * MSDN: The FILETIME structure is a 64-bit value representing the * number of 100-nanosecond intervals since January 1, 1601 (UTC). */ GetSystemTime (&st); if (SystemTimeToFileTime (&st, &ft) == FALSE) return -1; li.LowPart = ft.dwLowDateTime; li.HighPart = ft.dwHighDateTime; /* li.QuadPart is in the 100-nanosecond intervals */ t->sec = (li.QuadPart / (QSE_NSECS_PER_SEC / 100)) - EPOCH_DIFF_SECS; t->nsec = (li.QuadPart % (QSE_NSECS_PER_SEC / 100)) * 100; return 0; #elif defined(__OS2__) APIRET rc; DATETIME dt; qse_btime_t bt; /* Can I use DosQuerySysInfo(QSV_TIME_LOW) and * DosQuerySysInfo(QSV_TIME_HIGH) for this instead? * Maybe, resolution too low as it returns values * in seconds. */ rc = DosGetDateTime (&dt); if (rc != NO_ERROR) return -1; bt.year = dt.year - QSE_BTIME_YEAR_BASE; bt.mon = dt.month - 1; bt.mday = dt.day; bt.hour = dt.hours; bt.min = dt.minutes; bt.sec = dt.seconds; /*bt.msec = dt.hundredths * 10;*/ bt.isdst = -1; /* determine dst for me */ if (qse_timelocal (&bt, t) <= -1) return -1; t->nsec = QSE_MSEC_TO_NSEC(dt.hundredths * 10); return 0; #elif defined(__DOS__) struct dostime_t dt; struct dosdate_t dd; qse_btime_t bt; _dos_gettime (&dt); _dos_getdate (&dd); bt.year = dd.year - QSE_BTIME_YEAR_BASE; bt.mon = dd.month - 1; bt.mday = dd.day; bt.hour = dt.hour; bt.min = dt.minute; bt.sec = dt.second; /*bt.msec = dt.hsecond * 10; */ bt.isdst = -1; /* determine dst for me */ if (qse_timelocal (&bt, t) <= -1) return -1; t->nsec = QSE_MSEC_TO_NSEC(dt.hsecond * 10); return 0; #elif defined(macintosh) unsigned long tv; GetDateTime (&tv); t->sec = tv; tv->nsec = 0; return 0; #elif defined(HAVE_GETTIMEOFDAY) struct timeval tv; int n; /* TODO: consider using clock_gettime() if it's avaialble.. -lrt may be needed */ n = QSE_GETTIMEOFDAY (&tv, QSE_NULL); if (n == -1) return -1; t->sec = tv.tv_sec; t->nsec = QSE_USEC_TO_NSEC(tv.tv_usec); return 0; #else t->sec = QSE_TIME (QSE_NULL); t->nsec = 0; return 0; #endif }