home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-06-01 | 35.2 KB | 1,277 lines |
- ┌┬─── ── ─ ─ ── ───────────────────────────────────────────────────┬─ ∙∙
- ││ Alternative Worlds Presents │
- └┼─────────────────────────────────────────────────────────────────────┐
- ││ Mod Name » FMD-02b.MOD │∙
- ││ Difficulty » ██████▒▒▒▒ (6/10) │:
- ││ WWIV Version » 4.24 ││
- ││ Date Affected » 06/01/95 ││
- :│ Files Affected » BBS.C / MODEM.C / NETSUP.C / BBSUTL1.C / SYSOPF.C ││
- │ VARDEC.H / VARS.H ││
- ∙│ Description » VGA Waiting For Caller Screen Status Screen ││
- └─────────────────────────────────────────────────────────────────────┼┐
- │ A French Mod Division Release - (C) 1995 FMD Software ││
- ∙∙ ─┴─────────────────────────────────────────────────── ── ─ ─ ── ───└┘
-
-
- ┌┬══════════════════┐
- ││ Long Description ││
- └══════════════════┴┘
-
- This modification will give you a nice status screen instead of a blank
- screen when your system is waiting for a caller. This status screen has a
- pulldown menu for each commands available from WFC, an instance status monitor
- to know what's happening on your other instances, a rotating network pending
- which will show the amount of k pending on each of your network connections and
- a lot of informations like last caller and inactive time.
-
- This modification has been rated as the best one in its own class, there is
- already some buildt in support in WWIV v4.24 for this modification. If you
- have to install a modification for YOU, and not for your users, try this one
- and you won't regret it.
-
- ┌┬══════════┐
- ││ Features ││
- └══════════┴┘
-
- - Activity status bar.
- - Clock displaying time.
- - Last User On-Line.
- - Inactive time clock.
- - Scrolling message bar showing messages.
- - Instance status monitor.
- - Network pending informations.
- - Pulldown Menu.
- - VGA (80x43) Display (Text Mode, Not Graphical).
- - VGA (320x200) Screen Saver (Starfield Simulation) or text as desired.
- - Easy INI type configuration.
- - Also, a very good support from the authors.
- - Multi-tasker aware.
- - Caller ID support.
- - Log in 43 or 50 lines VGA mode if desired.
-
- ┌┬══════════════┐
- ││ Requirements ││
- └══════════════┴┘
-
- - VGA graphic card or better.
- - VGA monitor or better.
- - WWIV v4.24 or higher
-
- ┌┬════════┐
- ││ Thanks ││
- └════════┴┘
-
- ■ Philippe Sainte-Marie for the assembly codes for the set_25 and set_43
- functions which are now totally redone using C.
- ■ Wayne Bell for help with the screen, stock support and help.
- ■ Christopher Gauthier for heavy beta testing.
- ■ Dawg, he did the SHOW_PERCENTAGE switch.
-
- ┌┬═══════┐
- ││ Tests ││
- └═══════┴┘
-
- This modification has been tested on a virgin WWIV v4.24 source using
- Borland C++ v4.5
-
- ──────────────────────────────────────────────────────────────────────────────
- Legend
- ╔═══╤══════════════════┐
- │ + │ Add This Line │
- │ - │ Delete This Line │
- │ * │ Modify This Line │
- │ = │ Existing Line │
- └═══╧══════════════════╝
- ───[Step 1]────────────────────────────────────────────────────────────────────
-
- Load VARDEC.H and put this at the end of the file after "inputpicrec":
-
- typedef struct {
- unsigned long
- flags,
- screen_saver_time;
- double
- cur_time,
- wfct,
- poll_time,
- scroll_time;
- float
- scrolling_time;
- int
- options,
- wfc_high_color,
- wfc_low_color,
- wfc_prt_color,
- wfc_net_color,
- wfc_bar_color,
- wfc_sbar_color,
- wfc_perc_color,
- net_pending,
- alt_instance,
- wfc_scr,
- screen;
- } wfc_operation_rec;
-
- ───[Step 2]───────────────────────────────────────────────────────────────────
-
- Load VARS.H and do the following modification:
-
- At the top:
-
- = #include <sys\stat.h>
- = #include <dos.h>
- = #include <alloc.h>
- = #include <time.h>
- + #include <conio.h>
- = #ifdef __OS2__
-
- Then lower:
-
- = __EXTRN__ system_operation_rec sysinfo;
- =
- + __EXTRN__ wfc_operation_rec wfcinfo;
- +
- + #define WFC_FLAGS_EXIT_SAVER 0x0001
- + #define WFC_FLAGS_SCREEN_SAVER 0x0002
- + #define WFC_FLAGS_MENU_CENTERED 0x0004
- + #define WFC_FLAGS_STARFIELD 0x0008
- + #define WFC_FLAGS_SHOW_PERCENTAGE 0x0010
- +
- =
- = #ifdef __OS2__
-
- ───[Step 3]───────────────────────────────────────────────────────────────────
-
- Load BBS.C and and replace function getcaller with the following:
-
- void getcaller(void)
- {
- char s[81],ch,lokb,*ss,textbar[2][512];
- int any,fast=0,i,i2,i3, pos=1;
- double d, delay_time, check_time;
- userrec tu;
- union REGS regs;
-
- if (sysinfo.flags & OP_FLAGS_WFC_SCREEN)
- {
- randomize();
- write_inst(INST_LOC_WFC,0,INST_FLAGS_NONE);
- wfcinfo.net_pending=0;
- wfcinfo.alt_instance=1;
- wfcinfo.cur_time=wfcinfo.scroll_time=delay_time=wfcinfo.wfct=timer();
- sprintf(textbar[1], wfc_string());
- i3=strlen(textbar[1]);
- wfc_screen();
- display(0, pos);
- }
- c_sub=c_dir=0;
-
- cid_num[0]=0;
- cid_name[0]=0;
- frequent_init();
- sl1(1,"");
- imodem(0);
- usernum=0;
- wfc=0;
- write_inst(INST_LOC_WFC,0,INST_FLAGS_NONE);
- read_user(1,&thisuser);
- read_qscn(1,qsc,0);
- usernum=1;
- reset_act_sl();
- fwaiting=thisuser.waiting;
- if (thisuser.inact & inact_deleted) {
- thisuser.screenchars=80;
- thisuser.screenlines=25;
- }
- screenlinest=defscreenbottom+1;
- d=(1.0+timer()) / 102.723;
- d-=floor(d);
- d*=10000.0;
- srand((unsigned int)d);
- do {
- if (sysinfo.flags & OP_FLAGS_WFC_SCREEN)
- {
- check_time=timer()-wfcinfo.wfct;
- _setcursortype(_NOCURSOR);
- if ((wfcinfo.wfc_scr==0) && (check_time<(sysinfo.screen_saver_time+0.1)))
- {
- wfc_screen();
- display(0, pos);
- }
- if (((check_time)<sysinfo.screen_saver_time))
- {
- if ((timer() - delay_time)>=wfcinfo.poll_time)
- {
- delay_time= timer();
- alternate_pending();
- alternate_instance();
- }
- wfc_prlocate(43, 8, wfcinfo.wfc_prt_color, times());
- wfc_prlocate(46, 20, wfcinfo.wfc_prt_color, "%s%-20s", sysop2()? "":get_string(112), get_string(315));
- wfc_prlocate(46, 24, wfcinfo.wfc_prt_color, ctim(timer() - wfcinfo.cur_time));
- if ((timer() - wfcinfo.scroll_time)>=wfcinfo.scrolling_time)
- {
- wfcinfo.scroll_time=timer();
- for (i2=1;i2<i3;i2++)
- textbar[0][i2-1]=textbar[1][i2];
- wfc_prlocate(3, 3, wfcinfo.wfc_sbar_color, "%75.75s",textbar[0]);
- textbar[0][i3-1]=0;
- strcat(textbar[0],textbar[1]);
- strcpy(textbar[1],textbar[0]);
- textbar[1][i3]=0;
- }
- } else {
- if (wfcinfo.flags & WFC_FLAGS_SCREEN_SAVER)
- {
- if (wfcinfo.flags & WFC_FLAGS_STARFIELD)
- {
- if (wfcinfo.wfc_scr!=2)
- {
- clrscr();
- check_time+=10;
- regs.h.al=0x13;
- regs.h.ah=0x00;
- int86(0x10, ®s, ®s);
- wfcinfo.wfc_scr=2;
- }
- display_stars();
- } else {
- if ((check_time>(sysinfo.screen_saver_time+10)) || (wfcinfo.wfc_scr))
- {
- curatr= random(14) + 1;
- clrscr();
- wfcinfo.wfc_scr= 0;
- wfc_prlocate(random(39)+1, random(42)+1, curatr,
- "WWIV Screen Saver - Press Any Key For WWIV");
- wfcinfo.wfct=(timer()-sysinfo.screen_saver_time-1);
- }
- }
- } else {
- wfcinfo.wfct=timer();
- }
- }
- }
- write_inst(INST_LOC_WFC,0,INST_FLAGS_NONE);
- set_net_num(0);
- any=0;
- wfc=1;
- if (date_changed())
- if (date_changed()) {
- reset_screen(0);
- printf("\n\nClock Corrupted.\n\n");
- printf("Should put BBS in a batch file like:\n\n");
- printf("copy con: wwiv.bat\n");
- printf(":top\n");
- printf("setclock\n");
- printf("bbs\n");
- printf("if errorlevel 1 goto top\n");
- printf("^Z\n");
- end_bbs(noklevel);
- }
- if ((strcmp(date(), status.date1)!=0)) {
- if (instance==1) {
- holdphone(1);
- reset_screen(0);
- beginday();
- holdphone(0);
- clrscrb();
- if (sysinfo.flags & OP_FLAGS_WFC_SCREEN)
- {
- if (check_time<sysinfo.screen_saver_time) {
- wfc_screen();
- display(0, pos);
- }
- }
- }
- }
- check_event();
- if (do_event) {
- reset_screen(0);
- run_event();
- any=1;
- if (sysinfo.flags & OP_FLAGS_WFC_SCREEN)
- {
- if (check_time<sysinfo.screen_saver_time) {
- wfc_screen();
- display(0, pos);
- }
- }
- }
- lokb=0;
- strcpy(curspeed,get_string(1042));
- if ((!any) && ((rand() % 8000)==0) && (net_sysnum) &&
- (ok_modem_stuff) && (sysinfo.flags & OP_FLAGS_NET_CALLOUT) &&
- ((instance==1) || (status.net_version>=34))) {
- attempt_callout();
- any=1;
- }
- if (sysinfo.flags & OP_FLAGS_WFC_SCREEN)
- ch=-1;
- if (kbhitb()) {
- if (sysinfo.flags & OP_FLAGS_WFC_SCREEN)
- wfcinfo.wfct=timer();
- wfc=0;
- read_user(1,&thisuser);
- read_qscn(1,qsc,0);
- fwaiting=thisuser.waiting;
- wfc=1;
- if (sysinfo.flags & OP_FLAGS_WFC_SCREEN)
- if (wfcinfo.wfc_scr==1) {
- ch=upcase(getch());
- } else {
- wfcinfo.wfc_scr=0;
- if (wfcinfo.flags & WFC_FLAGS_EXIT_SAVER)
- {
- regs.h.ah=0;
- int86(0x16,®s,®s);
- }
- regs.h.al=0x03;
- regs.h.ah=0x00;
- int86(0x10, ®s, ®s);
- }
- }
- okskey=0;
- if (!(sysinfo.flags & OP_FLAGS_WFC_SCREEN))
- ch=upcase(inkey());
- if (sysinfo.flags & OP_FLAGS_WFC_SCREEN) {
- if (ch==0) {
- ch=getch();
- switch (ch) {
- case 80:
- display(1, pos);
- pos++;
- if (pos>31) {
- pos=1;
- }
- display(0, pos);
- ch=-1;
- break;
- case 72:
- display(1, pos);
- pos--;
- if (pos<1) {
- pos=31;
- }
- display(0, pos);
- ch=-1;
- break;
- case 71:
- display(1, pos);
- pos=1;
- display(0, pos);
- ch=-1;
- break;
- case 79:
- display(1, pos);
- pos=31;
- display(0, pos);
- ch=-1;
- break;
- case 59:
- if (wfcinfo.flags & WFC_FLAGS_SCREEN_SAVER)
- (wfcinfo.wfct)=(timer()-(sysinfo.screen_saver_time+5));
- ch=-1;
- break;
- case 60:
- delay_time=timer()-wfcinfo.poll_time;
- ch=-1;
- break;
- default:
- ch=-1;
- break;
- }
- }
- if (ch==13) {
- switch (pos) {
- case 1: ch=' '; break;
- case 2: ch='`'; break;
- case 3: ch='//'; break;
- case 4: ch='P'; break;
- case 5: ch='.'; break;
- case 6: ch=','; break;
- case 7: ch='N'; break;
- case 8: ch='Z'; break;
- case 9: ch='Y'; break;
- case 10: ch='L'; break;
- case 11: ch='M'; break;
- case 12: ch='R'; break;
- case 13: ch='E'; break;
- case 14: ch='B'; break;
- case 15: ch='D'; break;
- case 16: ch='J'; break;
- case 17: ch=9; break;
- case 18: ch='G'; break;
- case 19: ch='C'; break;
- case 20: ch='I'; break;
- case 21: ch='U'; break;
- case 22: ch='='; break;
- case 23: ch='A'; break;
- case 24: ch='F'; break;
- case 25: ch='T'; break;
- case 26: ch='K'; break;
- case 27: ch='S'; break;
- case 28: ch='W'; break;
- case 29: ch='X'; break;
- case 30: ch='?'; break;
- case 31: ch='Q'; break;
- }
- }
- }
- if (ch>=0) {
- if (sysinfo.flags & OP_FLAGS_WFC_SCREEN) {
- wfcinfo.wfct=timer();
- curatr=0x07;
- if (!((ch==' ') || (ch=='Q') || (ch==27) || (ch=='A'))) {
- reset_screen(1);
- } else {
- if (wfcinfo.wfc_scr==0) {
- wfc_screen();
- display(0, pos);
- }
- }
- _setcursortype(_NORMALCURSOR);
- }
- wfc=2;
- any=1;
- switch(ch) {
- case '=':
- if (ok_local()) {
- holdphone(1);
- reset_files();
- holdphone(0);
- }
- break;
- case '?':
- if (ok_local()) {
- i=7;
- do {
- clrscrb();
- nl();
- printmenu(i);
- ch=upcase(getkey());
- if ((ch!=' ') && (ch!=27))
- if (i==7)
- i=19;
- else
- i=7;
- } while ((ch!=' ') && (ch!=27));
- }
- break;
- case ' ':
- wfcprt(get_string(41));
- d=timer();
- while ((!kbhitb()) && (fabs(timer()-d)<60.0));
- if (kbhitb()) {
- ch=upcase(getchd1());
- if (ch==str_yes[0]) {
- outs(str_yes);
- outstr("\r\n");
- reset_screen(1);
- lokb=1;
- if ((syscfg.sysconfig & sysconfig_off_hook)==0)
- dtr(0);
- } else {
- if (!ok_local())
- break;
- ss=get_string(42);
- if (ch==upcase(*ss)) {
- reset_screen(1);
- unx=1;
- fast=1;
- } else {
- switch (ch) {
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- fast=1;
- unx=ch-48;
- break;
- }
- }
- read_status();
- if ((!fast) || (unx>status.users))
- break;
- read_user(unx,&tu);
- if ((tu.sl!=255) || (tu.inact & inact_deleted))
- break;
- usernum=unx;
- i=wfc; wfc=0;
- read_user(usernum,&thisuser);
- read_qscn(usernum,qsc,0);
- wfc=i;
- outchr(ch);
- reset_screen(1);
- outs("\r\n\r\n\r\n\r\n\r\n\r\n");
- lokb=2;
- if ((syscfg.sysconfig & sysconfig_off_hook)==0)
- dtr(0);
- reset_act_sl();
- changedsl();
- if (set_language(thisuser.language)) {
- thisuser.language=0;
- set_language(thisuser.language);
- }
- break;
- }
- if (ch==0)
- getchd1();
- }
- if (!lokb)
- out1ch(12);
- break;
- case 'A':
- if (!ok_modem_stuff)
- break;
- answer_phone();
- break;
- case 'B':
- okskey=1;
- if (ok_local()) {
- write_inst(INST_LOC_BOARDEDIT,0,INST_FLAGS_NONE);
- holdphone(1);
- boardedit();
- cleanup_net();
- holdphone(0);
- }
- okskey=0;
- break;
- case 'C':
- okskey=1;
- if (ok_local()) {
- write_inst(INST_LOC_CHAINEDIT,0,INST_FLAGS_NONE);
- holdphone(1);
- chainedit();
- holdphone(0);
- }
- okskey=0;
- break;
- case 'D':
- okskey=1;
- if (ok_local()) {
- write_inst(INST_LOC_DIREDIT,0,INST_FLAGS_NONE);
- holdphone(1);
- dlboardedit();
- holdphone(0);
- }
- okskey=0;
- break;
- case 'W':
- okskey=1;
- if (ok_local()) {
- write_inst(INST_LOC_TEDIT,0,INST_FLAGS_NONE);
- holdphone(1);
- text_edit();
- holdphone(0);
- }
- okskey=0;
- break;
- case 'F':
- if (ok_local()) {
- write_inst(INST_LOC_DOS,0,INST_FLAGS_NONE);
- holdphone(1);
- nl();
- pl(get_string(43));
- nl();
- extern_prog(getenv("COMSPEC"), EFLAG_SHRINK);
- out1ch(12);
- cleanup_net();
- holdphone(0);
- }
- break;
- case 'G':
- okskey=1;
- if (ok_local()) {
- write_inst(INST_LOC_GFILEEDIT,0,INST_FLAGS_NONE);
- holdphone(1);
- gfileedit();
- holdphone(0);
- }
- okskey=0;
- break;
- case 'I':
- okskey=1;
- if (ok_local()) {
- write_inst(INST_LOC_VOTEEDIT,0,INST_FLAGS_NONE);
- holdphone(1);
- ivotes();
- holdphone(0);
- }
- okskey=0;
- break;
- case 'J':
- okskey=1;
- if (ok_local()) {
- holdphone(1);
- edit_confs();
- holdphone(0);
- }
- okskey=0;
- break;
- case 'K':
- if (ok_local()) {
- usernum=1;
- holdphone(1);
- okskey=1;
- prt(7,get_string(7));
- input(s,50);
- load_workspace(s,0);
- send_email();
- okskey=0;
- write_user(1,&thisuser);
- cleanup_net();
- holdphone(0);
- }
- break;
- case 'L':
- if (ok_local()) {
- read_status();
- slname(date(), s);
- print_local_file(s,status.log1);
- }
- break;
- case 'M':
- okskey=1;
- if (ok_local()) {
- write_inst(INST_LOC_MAILR,0,INST_FLAGS_NONE);
- holdphone(1);
- mailr();
- holdphone(0);
- }
- okskey=0;
- break;
- case 'N':
- if (ok_local())
- print_local_file("NET.LOG","NETDAT*.LOG");
- break;
- case 'P':
- if (ok_local())
- print_pending_list();
- break;
- case 'Q':
- reset_screen(0);
- end_bbs(QUIT_LEVEL);
- break;
- case 27:
- wfcprt(get_string(1043));
- if (yn()) {
- if (sysinfo.flags & OP_FLAGS_WFC_SCREEN) {
- wfcprt("Would you like to go off-hook?");
- if (yn())
- pr1(modem_i->pick);
- reset_screen(0);
- }
- end_bbs(QUIT_LEVEL);
- }
- if (!(sysinfo.flags & OP_FLAGS_WFC_SCREEN))
- clrscrb();
- break;
- case 'R':
- if (ok_local()) {
- usernum=1;
- holdphone(1);
- okskey=1;
- readmail();
- okskey=0;
- write_user(1,&thisuser);
- cleanup_net();
- holdphone(0);
- }
- break;
- case 'S':
- if (ok_local()) {
- prstatus();
- getkey();
- }
- break;
- case 'T':
- if ((ok_local()) && (syscfg.terminal[0])) {
- write_inst(INST_LOC_TERM,0,INST_FLAGS_NONE);
- if (syscfg.sysconfig & sysconfig_shrink_term)
- extern_prog(syscfg.terminal, EFLAG_SHRINK);
- else
- extern_prog(syscfg.terminal, 0);
- imodem(1);
- imodem(0);
- }
- break;
- case 'U':
- okskey=1;
- if (ok_local()) {
- write_inst(INST_LOC_UEDIT,0,INST_FLAGS_NONE);
- holdphone(1);
- uedit(1,0);
- holdphone(0);
- }
- okskey=0;
- break;
- case 'E':
- if (ok_local()) {
- usernum=1;
- holdphone(1);
- okskey=1;
- send_email();
- okskey=0;
- write_user(1,&thisuser);
- cleanup_net();
- holdphone(0);
- }
- break;
- case 'X':
- for(i=0;i<50;i++) {
- if(xenviron[i]!=NULL)
- npr("\r\nxenv %d=%s",i,xenviron[i]);
- }
- #ifndef __OS2__
- npr("\r\nreal=%x, new=%x",INT_REAL_DOS,save_dos);
- #endif
- nl();
- pausescr();
- break;
- case 'Y':
- if (ok_local()) {
- read_status();
- slname(date(), s);
- print_local_file(status.log1,s);
- }
- break;
- case 'Z':
- if (ok_local()) {
- zlog();
- nl();
- getkey();
- }
- break;
- case '/':
- if ((net_sysnum) && (ok_local()))
- force_callout(0);
- break;
- case '.':
- if ((net_sysnum) && (ok_local()))
- force_callout(1);
- break;
- case ',':
- if ((net_sysnum>0) || (net_num_max>1) && ok_local()) {
- nl();
- prt(7,get_string(23));
- ch=onek("Q012");
- switch (ch) {
- case '0':
- print_local_file(get_string(1027),"");
- break;
- case '1':
- print_local_file(get_string(1028),"");
- break;
- case '2':
- print_local_file(get_string(1029),"");
- break;
- }
- }
- break;
- case '`':
- if ((net_sysnum) && (ok_local())) {
- holdphone(1);
- print_net_listing(1);
- holdphone(0);
- }
- break;
- case 9:
- if (ok_local()) {
- holdphone(1);
- instance_edit();
- holdphone(0);
- }
- break;
- }
- if (!incom && !lokb) {
- frequent_init();
- read_user(1,&thisuser);
- read_qscn(1,qsc,0);
- fwaiting=thisuser.waiting;
- reset_act_sl();
- usernum=1;
- }
- okskey=0;
- catsl();
- write_inst(INST_LOC_WFC, 0, INST_FLAGS_NONE);
- }
- if ((comhit()) && (ok_modem_stuff) && (!lokb)) {
- any=1;
- if (peek1c()==10)
- get1c();
- else {
- wfcprt("* ");
- if (mode_switch(1.0,0)==mode_ring)
- answer_phone();
- else if (modem_mode == mode_con) {
- incom=outcom=1;
- if (!(modem_flag & flag_ec))
- wait1(45);
- else
- wait1(2);
- }
- }
- }
- if (!any) {
- if (c_sub<num_subs) {
- if (!sub_dates[c_sub]) {
- any=1;
- iscan1(c_sub, 1);
- }
- c_sub++;
- } else if (c_dir<num_dirs) {
- if (!dir_dates[c_dir]) {
- any=1;
- dliscan_hash(c_dir);
- }
- c_dir++;
- } else {
- if (labs(timer1()-mult_time) > 1000L) {
- cleanup_net();
- mult_time=timer1();;
- giveup_timeslice();
- } else {
- giveup_timeslice();
- }
- }
- }
- } while ((!incom) && (!lokb) && (!endday));
- if (lokb) {
- if (ok_modem_stuff)
- modem_speed = modem_i->defl.modem_speed;
- else
- modem_speed = 14400;
- }
- using_modem=incom;
- if (lokb==2)
- using_modem=-1;
- okskey=1;
- if (!endday) {
- clrscrb();
- if (modem_mode==mode_fax)
- outs(get_string(45));
- else
- outs(get_string(46));
- outs(curspeed);
- outs("...\r\n");
- }
- wfc=0;
- }
-
- ───[Step 4]───────────────────────────────────────────────────────────────────
-
- Load UTILITY.C and modify the following line in function frequent_init:
-
- = checkit=0;
- = topline=0;
- = screenlinest=defscreenbottom+1;
- * if (!restoring_shrink && !sysinfo.flags & OP_FLAGS_WFC_SCREEN)
- = clrscrb();
- = endofline[0]=0;
- = hangup=0;
- = hungup=0;
-
- ───[Step 5]───────────────────────────────────────────────────────────────────
-
- Load NETSUP.C and modify this code in function cleanup_net:
-
- = if (!net_sysnum)
- = continue;
- =
- = set_protect(0);
- + if ((wfcinfo.wfc_scr==0) || (!sysinfo.flags & OP_FLAGS_WFC_SCREEN))
- = clrscrb();
- =
- = ok2=1;
- = abort=0;
-
- Lower in the code...
-
- = if (ok) {
- + reset_screen(0);
- = holdphone(1);
- = hangup=0;
-
- A bit down...
-
- = if (ok2) {
- + reset_screen(0);
- = clrscrb();
- = zap_contacts();
- = }
-
- Still in NETSUP.C and look for the following lines in void attempt_callout:
-
-
- = }
- = if (i1!=-1) {
- = free_vars(weight, try);
- = weight=NULL;
- = try=NULL;
- + reset_screen(0);
- = do_callout(net_networks[net_num].con[i1].sysnum);
- + if (sysinfo.flags & OP_FLAGS_WFC_SCREEN)
- + {
- + if ((timer() - wfcinfo.wfct)<sysinfo.screen_saver_time)
- + wfc_screen();
- + else
- + (wfcinfo.wfct)=(timer()-(sysinfo.screen_saver_time+11));
- + }
- = time(&l);
- = last_time_c=l;
- = break;
- = }
- = }
- = }
- =
- = free_vars(weight, try);
- =
- = set_net_num(0);
- =}
-
- ───[Step 6]───────────────────────────────────────────────────────────────────
-
- Load MODEM.C, do the following modifications in void holdphone:
-
- = dtr(1);
- = if (fabs(xtime-timer())<modem_time)
- + {
- + if (wfcinfo.wfc_scr==0)
- + nln(2);
- * wfcprt("Waiting for modem...");
- + }
- = while (fabs(xtime-timer())<modem_time)
- = ;
-
-
- Now replace the next 2 voids
-
- void imodem(int x)
- {
- int i,done;
- char *is;
- char s[81];
-
- if (!ok_modem_stuff) {
- if ((sysinfo.flags & OP_FLAGS_WFC_SCREEN) && (wfcinfo.wfc_scr==0))
- outs("\x0c");
- return;
- }
-
- if (x)
- is=modem_i->setu;
- else
- is=modem_i->init;
-
- if (!(*is))
- return;
-
- if (sysinfo.flags & OP_FLAGS_WFC_SCREEN) {
- if (wfcinfo.wfc_scr==0)
- clrscr();
- } else {
- outs("\x0c");
- }
- wfcprt("Waiting...");
- /* begin_crit(); */
- rts(1);
- dtr(1);
- do_result(&(modem_i->defl));
- i=0;
- done=0;
- wait1(9);
- while (!done) {
- initport(syscfgovr.primaryport);
- pr1(is);
- dump();
- if (mode_switch(5.0,0)==mode_norm) {
- done=1;
- } else {
- ++i;
- if ((sysinfo.flags & OP_FLAGS_WFC_SCREEN) && (wfcinfo.wfc_scr))
- curatr=0x1c;
- sprintf(s,"(%d)...",modem_mode);
- outs(s);
- }
- if (i>5)
- done=1;
- }
- /* end_crit(); */
- if (!(sysinfo.flags & OP_FLAGS_WFC_SCREEN) || (wfcinfo.wfc_scr==0))
- outs("\x0c");
- }
-
-
- void answer_phone(void)
- {
- double d;
- union REGS regs;
-
- if (!ok_modem_stuff)
- return;
- cid_num[0]=0;
- cid_name[0]=0;
-
- if (sysinfo.flags & OP_FLAGS_WFC_SCREEN) {
- if (wfcinfo.wfc_scr==2)
- {
- regs.h.al=0x03;
- regs.h.ah=0x00;
- int86(0x10, ®s, ®s);
- wfc_screen();
- wfcinfo.wfc_scr=1;
- }
- }
- wfcprt("Answering phone, 'H' to abort.");
- _setcursortype(_NORMALCURSOR);
- do_result(&(modem_i->defl));
- pr1(modem_i->ansr);
- d=timer();
- rts(1);
- if ((mode_switch(45.0,1)!=mode_con) && (modem_mode!=mode_fax)) {
- if (modem_mode == 0) {
- outcomch(' ');
- outcomch('\r');
- wait1(18);
- if (fabs(timer()-d)<modem_time) {
- wfcprt("Waiting for modem...");
- while (fabs(timer()-d)<modem_time)
- ;
- }
- imodem(0);
- imodem(0);
- } else {
- outs(curspeed);
- imodem(0);
- imodem(0);
- }
- if (sysinfo.flags & OP_FLAGS_WFC_SCREEN) {
- if ((timer() - wfcinfo.wfct)<sysinfo.screen_saver_time)
- wfc_screen();
- if (cid_name[0])
- wfcprt("CID Name: %s, Number: %s", cid_name, cid_num);
- }
- } else {
- incom=outcom=1;
- if (!(modem_flag & flag_ec))
- wait1(72);
- else
- wait1(36);
- reset_screen(1);
- }
- }
-
- ───[Step 7]───────────────────────────────────────────────────────────────────
-
- In this archive, you should have the following files:
-
- FMD-02.MOD : Main Modification File
- WFC.C : New File to Add at WWIV
- INITWFC.EXE : Utility To Init WFC
- WFC.DAT : WFC Screen Data File
- WFC.ANS : WFC Ansi Screen
- FILE_ID.DIZ : Description File
- PRODUCTS.FMD: French Mod Division Products List
-
-
- Copy WFC.C in your source directory, copy INITWFC.EXE in your main WWIV
- directory and copy WFC.DAT in your WWIV data directory.
-
- ───[Step 8]───────────────────────────────────────────────────────────────────
-
- Load the file MAKEFILE.MAK and modify this part of the file:
-
- >>> BORLAND C++ USERS
-
- Do the change here (Line 125)
-
- = uedit.obj voteedit.obj xferovl.obj xferovl2.obj \
- = xfertmp.obj xinit.obj qwk.obj qwk1.obj \
- * ripovl.obj wfc.obj
-
- And here (Line 140)
-
- = $(OBJ)\xferovl.obj $(OBJ)\xferovl2.obj $(OBJ)\xfertmp.obj \
- = $(OBJ)\xinit.obj $(OBJ)\qwk.obj $(OBJ)\qwk1.obj \
- * $(OBJ)\ripovl.obj $(OBJ)\wfc.obj
-
- And here (Line 317)
-
- = ripovl.obj : ripovl.c
- = $(TCC_OVL)
- + wfc.obj : wfc.c
- + $(TCC_OVL)
- =
- = fix.obj : fix.c
-
- >>> TURBO C / TURBO C++ USERS:
-
- Load MAKEFILE.MAK and do the following changes:
-
- = $(OBJ)bbsovl1.obj $(OBJ)shrink.obj $(OBJ)bbsovl2.obj\
- * $(OBJ)sr.obj $(OBJ)wfc.obj
-
- a bit down...
-
- * $(OBJ)bbs.obj : bbs.c vars.h vardec.h net.h wfc.h
- = $(TCC_NRM)
- * $(OBJ)modem.obj : modem.c vars.h vardec.h net.h wfc.h
-
- Lower:
-
- * $(OBJ)netsup.obj : netsup.c vars.h vardec.h net.h wfc.h
-
- Lower:
-
- = $(OBJ)bbsovl2.obj : bbsovl2.c vars.h vardec.h net.h
- = $(TCC_OVL)
- + $(OBJ)wfc.obj : wfc.c vars.h vardec.h net.h wfc.h
- + $(TCC_OVL)
-
- ───[Step 9]───────────────────────────────────────────────────────────────────
-
- Load WWIV.INI, which should be in your WWIV directory and add this to the end
- of the file:
-
- [WFC]
- ; Time between each movement in the scroll bar
- SCROLL_TIME = 0.25
- ; Time before polling (rotation of informations)
- POLLING_TIME = 20
- ; Execute command or not while in the screen saver
- EXIT_SAVER = YES
- ; Screen Saver
- SCREEN_SAVER = YES
- ; Use the starfield simulation screen saver
- STARFIELD = NO
- ; Center the text in the side menu
- MENU_CENTERED = NO
- ; Show percentage in activity bar
- SHOW_PERCENTAGE = NO
- ; Amount of options in the side menu
- OPTIONS = 31
- ; Highlighted Color of the side menu
- WFC_HIGH_COLOR = 59
- ; Normal Color of the side menu
- WFC_LOW_COLOR = 113
- ; Text color of the WFC Screen
- WFC_PRT_COLOR = 126
- ; Network Pending Color
- WFC_NET_COLOR = 15
- ; Activity Bar Color
- WFC_BAR_COLOR = 12
- ; Status Bar Color
- WFC_SBAR_COLOR = 127
- ; Textmode when quitting WFC Screen
- ; C80 = 80x25
- ; C4350 = 80x50
- SCREEN = C80
-
- Then in the [WWIV] sub section, you should define the following items:
-
- ; WFC Screen
- WFC_SCREEN = YES
- ; Seconds before starting screen saver
- SCREEN_SAVER_TIME = 180
-
- Defined all those variable to your own needs. The color chart is available
- in the stock WWIV.INI, all times are in seconds.
-
- ───[Step 10]──────────────────────────────────────────────────────────────────
-
- Recompile your FCNS.H file with a MAKE FCNS or insert yourself the functions
- prototype in FCNS.H:
-
- /* File: wfc.c */
-
- void set_43(void);
- void set_25(void);
- unsigned char *wfc_string(void);
- void wfc_prlocate(int x, int y, int c, char *fmt, ...);
- void display(int type, int pos);
- void init_wfc(void);
- void wfc_screen(void);
- void alternate_pending(void);
- void alternate_instance(void);
- void wfcprt(char *fmt, ...);
- void reset_screen(int mode);
- long memavail(void);
- void pixel(int x, int y, int attr);
- void display_stars(void);
-
- Then recompile your BBS, you need to recompile the whole system since you
- have modified VARDEC.H and VARS.H, but since technology is growing so fast,
- it shouldn't take too much time. Then copy BBS.EXE in your WWIV directory.
-
- ───[Step 11]──────────────────────────────────────────────────────────────────
-
- If you are running WWIV v4.24 since a few days or more, you have a variable
- increasing daily which is the amount of days since your system is opened.
- Since WWIV has that feature only since WWIV v4.24, this number is not accurate
- if you were running previous versions of WWIV.
-
- INITWFC.EXE will help you setting this number to the right number, type
- "INITWFC.EXE -?" to know how to use it. You can also use WWIVsys to set the
- amount of days. You will have to find yourself the amount of days since you're
- opened.
-
- If you are running WWIV v4.24 for the first time, you NEED to set this value
- before running WWIV for the first time with this modification, otherwise you
- will get a floating point error because your value will be to 0 by default.
-
-
- ┌┬═══════════════┐
- ││ Multi-Taskers ││
- └═══════════════┴┘
-
- This modification has been tested under Windows v3.1, Windows For Workgroups
- v3.11 and Windows 95, there is no problems with it. The only "problem" you may
- find is that you see double in the starfield, we are currently trying to fix
- that problem.
-
- This modification has been tested also under OS/2 and WARP, it is working
- fine, but some people are experiencing problems running it in a windowed
- session.
-
- Of course, running a graphical multi-tasker and having the starfield screen
- saver disabled will force you to run in a full-screen session.
-
- Under DESQview, you will have more troubles than anyone else, but it will
- work too. Sorry about the cursor, in any other multi-tasker, you won't see
- the cursor, but DESQview doesn't get that. You have to change your MAXIMUM
- HEIGHT to 43, it will automatically switch to 80x25 when you will log on
- locally and for remote logs.
-
- Good Luck! And don't hesitate to send your own settings.
-
- ┌┬════════════════════════════┐
- ││ Frequently Asked Questions ││
- └════════════════════════════┴┘
-
- Q. When I load WWIV, it gives me a "floating point error", what's up?
-
- A. You didn't run INITWFC to initialize your amount of days.
-
- ────────────────────────────────────────────────────────────────────────────
-
- For comments, bug report and suggestion, e-mail at the following address:
-
- Nicolas LeBlanc 2@20302.WWIVnet (aka Spotnick)
- -> spotnick@gamemaster.qc.ca
- Martin Bourdages 242@20306 / 3@20302.WWIVnet (aka Dark Shadow)
- -> martin.bourdages@radio.magicnet.com
-
- => French Mod Division Support Sub <=
- SubType: FMD
- Host: @20302 (WWIVnet)
- Scan sublist for other networks
-
- Read PRODUCTS.FMD for the full list of our support systems.
-
- ───[EOF]──────────────────────────────────────────────────────────────────────
-