Here are some of the 'little' mods I made on mine...
1) Change the "Post/Call Ratio is nnn. You need a ratio of xxx to Download" to "Your Message Posts Per Call Ratio is nnn. You must have a ratio of xxx to
Download."
2) Add the Name of the Current Sub above the Read prompt:
Current Area: « General Mail »
Read (1-1,^1):
Some More coming Later on...
Daniel Duerr
[47/99]: DEFRAG.C v1.10 Explanation <Program>
[Name ]: East Bay Ray #1 @9964
[Date ]: Wed Jan 01 18:17:49 1992
[From ]: East Carolina Connection (North Carolina)
The following is the source code to my own version of BASEPACK. I still have
A LOT of speed improvements to do, as well as a lot of features to add, but I
thought that everyone who is having trouble with BASEPACK should try this. I
have only tested it on my system, so I don't give any guarantees for anyone
else's system.
It uses only slightly modded WWIV message base routines.
Features available now (over BASEPACK):
- No messy cursor-all-over-the-place screen interface.
- Doesn't trash messages. I used straight WB v4.20 message
reading code.
- Doesn't leave those messy TEMP*.$$$ message files whenever
a base doesn't exist.
- Compresses the *.SUB files too.
- Compact DATA\EMAIL.DAT and MSGS\EMAIL.DAT. BASEPACK never touches
either of these.
- Removes messages with no text.
- Generates on-screen report when done. Message base stats,
damaged files, etc.
Features coming soon:
- Keep files open until done. Drastically increases speed.
- Will fix damaged type-2s on the fly, just like FIX.EXE by 1@1.
- Optionally generate a disk log of all activities.
[From ]: East Carolina Connection (North Carolina)
Do not use v1.10 of DEFRAG! Random 1@1 pointed out a couple bugs which should
not have happened, but because of my special testing situation here at the ECC, did. I apologize to all who use v1.10, and thank you for using my programs.
-----
Roses are red,violets are blue,you think this will rhyme but it ain't gonna.
[55/99]: Correction to EDO006.420/EDO006.ZIP
[Name ]: Ed O'Brien #1 @7350
[Date ]: Thu Jan 02 10:54:40 1992
[From ]:^Data Xfer BBS [AVS] (Houston, Texas)
I made a typo in the instructions for the above mod. They should read:
Load NEWUSER.C, ^QF void newuser and block read the following right before it.
Next search for "case 'K'" and replace it with this one.
case 'K':
ox = wherex();
oy = wherey();
r.x.cx = 80 - ox;
r.h.ah = 0x09;
r.h.bh = 0x00;
r.h.al = 32;
r.h.bl = curatr;
int86(0x10,&r,&r);
movecsr(ox, oy);
break;
Save COM.C and load up CONIO.C.
Search for "#define TWO_WAY" and after this do these modification.
- #define SCROLL_UP(t,b,l) \
- _CH=t;\
- _DH=b;\
- _BH=curatr;\
- _AL=l;\
- _CL=0;\
- _DL=79;\
- _AH=6;\
- my_video_int();
/* Add the following function after the #define TWO_WAY */
void SCROLL_UP(int t, int b, int l)
{
union REGS r;
r.h.ch=t;
r.h.dh=b;
r.h.bh=curatr;
r.h.al=l;
r.h.cl=0;
r.h.dl=79;
r.h.ah=6;
int86(0x10,&r,&r);
}
A little farther down:
search for "void my_video_int" and remove it or comment it out.
search for "void movecsr(int x,int y)".
= void movecsr(int x,int y)
= /* This, obviously, moves the cursor to the location specified, offset from
= * the protected dispaly at the top of the screen
= */
= {
+ union REGS r;
A little farther down.
= if (y>screenbottom)
= y=screenbottom;
+ r.h.bh=0x00;
+ r.h.dh=y;
+ r.h.dl=x;
+ r.h.ah=0x02;
+ int86(0x10,&r,&r);
= }
Next replace the following functions with these ones.
int wherex()
/* This function returns the current X cursor position, as the number of
* characters from the left hand side of the screen. An X position of zero
* means the cursor is at the left-most position
*/
{
/****** Replace whole void ******/
union REGS r;
r.h.bh=0x00;
r.h.ah=0x03;
int86(0x10,&r,&r);
tempio=r.h.dl;
return(tempio);
}
int wherey()
/* This function returns the Y cursor position, as the line number from
* the top of the logical window. The offset due to the protected top
* of the screen display is taken into account. A wherey() of zero means
* the cursor is at the top-most position it can be at.
*/
/******** Replace whole void ********/
{
union REGS r;
r.h.bh=0x00;
r.h.ah=0x03;
int86(0x10,&r,&r);
tempio=r.h.dh;
return(tempio-topline);
}
void lf()
/* This function performs a linefeed to the screen (but not remotely) by
* either moving the cursor down one line, or scrolling the logical screen
* up one line.
*/
/***** Replace whole void *****/
{
union REGS r;
r.h.bh=0x00;
r.h.ah=0x03;
int86(0x10,&r,&r);
tempio=r.h.dl;
if (r.h.dh==screenbottom) {
SCROLL_UP(topline,screenbottom,1);
r.h.dl=tempio;
r.h.dh=screenbottom;
r.h.bh=0;
r.h.ah=0x02;
int86(0x10,&r,&r);
} else {
tempio=r.h.dh+1;
r.h.dh=tempio;
r.h.ah=0x02;
int86(0x10,&r,&r);
}
}
void cr()
/* This short function returns the local cursor to the left-most position
* on the screen.
*/
/***** Replace whole void ******/
{
union REGS r;
r.h.bh=0x00;
r.h.ah=0x03;
int86(0x10,&r,&r);
r.h.dl=0x00;
r.h.ah=2;
int86(0x10,&r,&r);
}
Next, page-down about one time and replace some more functions.
void bs()
/* This function moves the cursor one position to the left, or if the cursor
* is currently at its left-most position, the cursor is moved to the end of
* the previous line, except if it is on the top line, in which case nothing
* happens.
*/
{
/******* Replace whole void */
union REGS r;
r.h.bh=0;
r.h.ah=3;
int86(0x10,&r,&r);
if (r.h.dl==0) {
if (r.h.dh != topline) {
r.h.dl=79;
tempio=r.h.dh-1;
r.h.dh=tempio;
r.h.ah=2;
int86(0x10,&r,&r);
}
} else {
r.h.dl--;
r.h.ah=2;
int86(0x10,&r,&r);
}
}
void out1chx(unsigned char ch)
/* This function outputs one character to the screen, then updates the
* cursor position accordingly, scolling the screen if necessary. Not that
* this function performs no commands such as a C/R or L/F. If a value of
* 8, 7, 13, 10, 12 (backspace, beep, C/R, L/F, TOF), or any other command-
* type characters are passed, the appropriate corresponding "graphics"
* symbol will be output to the screen as a normal character.
*/
/******** Replace whoooooole void */
{
union REGS r;
r.h.bl=curatr;
r.h.bh=0x00;
r.x.cx=0x01;
r.h.al=ch;
r.h.ah=0x09;
int86(0x10,&r,&r);
r.h.bh=0x00;
r.h.ah=0x03;
int86(0x10,&r,&r);
++(r.h.dl);
if (r.h.dl==80) {
r.h.dl=0;
if (r.h.dh==screenbottom) {
SCROLL_UP(topline,screenbottom,1);
r.h.dh=screenbottom;
r.h.dl=0;
r.h.bh=0;
r.h.ah=0x02;
int86(0x10,&r,&r);
} else {
tempio=r.h.dh+1;
r.h.dh=tempio;
r.h.ah=0x02;
int86(0x10,&r,&r);
}
} else {
r.h.ah=0x02;
int86(0x10,&r,&r);
}
}
Now, search for "void set_protect(int l)" and replace it or modify it to
match mine.
void set_protect(int l)
/* set_protect sets the number of lines protected at the top of the screen. */
{
union REGS r; /** Add */
if (l!=topline) {
if (l>topline) {
if ((wherey()+topline-l) < 0) {
r.h.ch=topline; /** Add */
r.h.dh=screenbottom+1;
r.h.al=l-topline;
r.h.cl=0;
r.h.dl=79;
r.h.bh=0x07;
r.h.ah=7;
int86(0x10,&r,&r); /* To here */
movecsr(wherex(),wherey()+l-topline);
} else {
oldy += (topline-l);
}
} else {
SCROLL_UP(l,topline-1,0);
oldy += (topline-l);
}
}
topline=l;
if (using_modem)
screenlinest=thisuser.screenlines;
else
screenlinest=defscreenbottom+1-topline;
}
Save CONIO.C and load up EXTRN.C and search for "SCROLL_UP".
Remove it or comment it out. Save EXTRN.C.
You're almost done. Last thing to do is, in your TC or BC editor, hit
alt-o, c, c, and set it to compile in HUGE. Next hit alt-o, s, <enter>.
Last hit alt-c, b.
You now get to have loads of fun. For those of you on 286 machines or
slower, I'm sorry, go take a nice LONG summer vacation while your whole board
re-compiles. If you have 386, go get some lunch. For those of you with a
486, you're done.
I just want to say that without One Eyed Willy, we would still be stuck
with those damn External String Managers. Those who have made those ESM mods,
we all thank you for what you've done for us. But now we have a much easier
way. There will still be a DGROUP at 1 meg, but I doubt anyone will have that
much text in their code. If you do, have fun with the ESM's. :)
Disclaimer: If your compiler spits at you, spit back and set it for HUGE.
If your cat scratches your log and you through-up on the floor,
and then slip in it and land on a grenade and blow up the world,
it's not this mods fault. Have a nice day. :)
The Just Killin Time BBS (205)456-2445) 300-38.4k 700 Megs Online
WWIV Net Node @2541 Link @12541 FidoNet 1:3607/30.1 VNet @2052
[60/99]: MULTNODE.C - The Beginnings of a Multi-Node WWIV
[Name ]: East Bay Ray #1 @9964
[Date ]: Fri Jan 03 19:06:19 1992
[From ]: East Carolina Connection (North Carolina)
The following is the beginning of my project to make WWIV multi-line. If there is enough interest among the programming community, then I will form a sub or
mailing list specifically for that purpose. E-mail me if interested.
Disclaimer: The author of this mod is not responsible for anything this mod
does to affect your bbs. It has been tested and works fine with
my WWIV4.20e. If you have trouble, email me and ill see what I
can do to fix the bugs.
[75/99]: BBBOB01.MOD Addendum
[Name ]: Bitbytebob #11 @6750
[Date ]: Fri Jan 10 11:29:55 1992
[From ]: Interface (Massachusetts)
Note the color codes that show up in the mod are needed for the strlen function to work correctly. Mod the sprintf() and the strcat() calls for your own color preferences...
-Bob [1@6755]
Interface BBS - (617) 734-2053 - USR DS - IBM and Mac Support
SNARFable - Over 1000 WWIV mods online! - SysOp: Philip Trauring
"When you sit with a nice girl for two hours, you think it's only a minute.
But when you sit on a hot stove for a minute, you think it's two hours.
Okay, I did not want to give time compensation for emails. If you
wish to do that, just delete the two lines that say /* NOTE 1 */. That
will then give compensation for emails and feedbacks.
Well a couple of things here:
1) BACK UP YOUR SOURCE!
2) I am NOT RESPONSIBLE if (insert your favorite disaster here)!
3) Make sure you change the ^C to the heart character.
(In the Turbo C editor it is CTRL-P, the CTRL-C, but editors vary!)
4) I will provide any help I can if you need it. Feel free to email me
at either of the above addresses.
Well that's all for now!
DAW
[88/99]: Addition to the Side-By-Side Sub List
[Name ]: Wafwot #2 @2632
[Date ]: Sat Jan 11 13:46:04 1992
[From ]: The Evening Post (Washington)
RE: BBBOB01.MOD - Side-by-Side Subs/Dirs Listing
BY: Bitbytebob #11 @6750
If you installed the side-by-side sub list mod, you might want to change
the size of title you can enter into BOARDEDIT so that you don't chop
the names off in the sublist. It's quite simple...and after I changed
it, I went and changed the titles of the subs... and ALL of the subs fit.
Step 1. Always back up the source. I am rewriting a few voids 'cause I
didn't.
Step 2. In SUBEDIT.C look for this block of code... and change the one
line indicated.
prt(2,"Which (A-M,Q) ? ");
ch=onek("QABCDEFGHIJKLMN");
switch(ch) {
case 'Q':done=1; break;
case 'A':
nl();
prt(2,"New name? ");
inputl(s,29); /* CHANGE from 40 to 29 */
if (s[0])
strcpy(r.name,s);
break;
case 'B':
Step 3. Recompile. Simple. No more chopped of titles in a side-by-side
listing.
Wafwot #2 @2632
The Evening Post BBS.
[89/99]: Fix for the userlist at logon mod...
[Name ]: Philip Trauring #1 @6750
[Date ]: Sun Jan 12 20:08:33 1992
[From ]: Interface (Massachusetts)
I noticed that if a user is in a sub that doesn't allow access to all the user
on the BBS, and then logs off...then when it is run it will list the user that
are allowed only in that sub which the person was in...so I have a quick fix...
(I think it's a fix...it makes sense to me) The fix is only the addition of one line...noted with the /* Add - Fix */...I hard coded in sub 1 because I assumed most people allow all their users into sub 1...but if you don't then change the 1 to something else...(Actually, since the boardedit starts at 0 might the
cursub number start at 0? I don't know...I'm just a dumb hacker...cya)
==============
Ok...well I was looking through the Mod Net sub a few minutes ago and I
saw a request for a mod to allow users to logon to the BBS using their real
name...the reason given was that users sometimes forget their usernames and
this would make it easier...Although I didn't write that mod, I did write up
a two-second hack that will help out users who have forgotten their passwords.
All this mod does is show the user list if the user types ? at the NN: prompt.
It's not elegant, I didn't go far into the code to make it not give the
'Unknown User' message or anything like that...but it works okay and it takes
about a tenth of the time it took you to read this long intro...oh well...
1) Goto UTILITY.C and search for 'findu'
2) Add the 3 lines commented with the /* Add */ to your code
unsigned int finduser(char *s)
{
int un;
smalrec *sr;
userrec u;
char *ss;
if (strcmp(s,"?")==0) { /* Add */
cursub=1; /* Add - Fix */
list_users(); /* Add */
return(0); } /* Add */
if (strcmp(s,"NEW")==0)
return(-1);
3) Say 'that was the shortest mod I've ever added' 3 times...
4) If you want you might want to change the following line from LILO.C:
pl("This time is reserved for net-mail ONLY.");
pl("Please try calling back again later.");
} else
pl("Enter number or name or 'NEW'"); /*This Line*/
outstr("NN: "); /* DON'T change the NN: prompt. */
input(s,30);
to something like:
pl("Enter number, name, 'NEW', or ? to list usernames");
or
pl("Enter your username, your number, 'NEW' to create a new");
pl("account, or '?' to list all current usernames and numbers.");
5) That's all folk's....what a grand production...now just run your makefile
and re-compile quickly since it's only one file, or for fun add a space or
something to one of the *.H files and then recompile so you have to wait for
two hours! It's so much more fun...
Well, I think I'm done(I'm pretty sure anyways) so whether you like it...or if
you hate it(I'm not picky)...give my BBS a call...I have 1000's of mod online
just waiting to be leeched...bye!(finally...)
Phil
1@6750
Interface BBS - (617) 734-2053 - USR DS - IBM and Mac Support
SNARFable - Over 1000 WWIV mods online! - SysOp: Philip Trauring
"Sometime they'll give a war and nobody will come." - Carl Sandburg
[90/99]: CHATCMDS.MOD - for use with CHATWISH.MOD
[Name ]: Viper #88 @5071
[Date ]: Sun Jan 12 16:40:30 1992
[From ]: Special F/X (Unknown Area)
Mod Name: CHATCMDS.MOD
Mod Author: Viper
Mod Date: 1/12/92
Version: 4.2a-e
Author can be reached at: in the WWIVNet: 71 @ 5061 or
28 @ 5067
in the WWIVLink: 65 @15054
Mod Description: This is my second actual mod being posted on the net.
This is a mod for you who have added Admiral Connor's
CHATWISH mod, what this will do, is if you request a chat
with a user and he ignores it for a while but you forgot
to turn off the scrol lock key, it will allow him to
hangup on himself. It also has another command added in
where it prints a help file for the user to see the
commands that he can use. This mod can have many other
commands added to it, you just got to figure it out.
Mod Idea: Mine, I thought of it. Well as in the description, if you happen
to forget to turn off the scrol lock key, the user can hangup on
himself and then he can log himself off.
Files Effected: CONIO.C
Disclaimer: You installed it, its your fault!
On with the mod!
-=-= Step 0 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Backup your source, you never know when you might type
in something wrong!
-=-= Step 1 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Load up CONIO.C and add the following to case's.
in void two_way_chat(blah, blah...)
}
}
}
break;
case 15: /* Ctrl-O */ /* CHATCMDS.MOD *//* Add from here */
outstr("\x1b[2J");
printfile("CHATHELP");
break;
case 17: /* Ctrl-P */
outstr("\x1b[2J");
prt(4,"Sorry, I forgot to turn off the scroll lock.\r\n");
prt(4,"Call back and you can resume whatever you were doing");
nl();
pausescr();
hangup=1;
break; /* CHATCMDS.MOD *//* To here */
}
} while ((done==0) && (hangup==0));
if (ch!=13)
-=-= Step 2 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Compile CONIO.C only, no need to do them all.
Ohh, one more thing, this will not work in the regular chat screen, if
you want to add this to the regular chat, you have to go into the void
inli(blah, blah...); and insert the Ctrl-Q case in there somewhere. But
other than that, it will work perfectely in 2 way chat
[91/99]: BBBOB02.MOD - Allows DGBG to work with WWIV