--------------- FIDO MESSAGE AREA==> TOPIC: 214 POWER BASIC Ref: C3U00002 Date: 03/20/95 From: EDUARD FRANKES Time: 08:44am \/To: CHRIS ADAMS (Read 6 times) Subj: Echo Project! Hi Chris, CA->You seem to have picked the winning one. Right now, it looks CA->like we are CA->going to do some serious COMM stuff, plus protocals, and CA->toss in a CA->mailer for the fun of it! Maybe even a BBS! YES! Could this mean also an Mailtosser/Gate program ? I gate the mail for the nets in europe, with Blackhole, but its sometimes chrashes at the most impossable times with mailpackets bigger then 2500 tes. would be verry conveniant to have an Mail Gate/Tosser also.. ;-) Btw. the Blackhole I have is an Beta, it doesn't seem to have any other releases. Maybe i'll write one myself, with some help from you guys ;-) CA->No problemo. I've still procrastinated, and besides, I was CA->trapped in CA->Ventura (100mi south) on the 10th because rain closed the CA->freeway... No biggie. No wet feet i hope ;-) greatings from holland,-[ed]- Fido USA MailGate to -> United Bbs Systems Europe (2:283/529) ... The mistery of the world, life, the universe and the modem initstring... --- UBS Intl. Fmail 1.0g+ # Origin: United Bbs Systems PowerBASIC HeadQuarters Europe (119:3100/0) * Origin: United Bbs Systems Europe MailGate to -> Fido USA (2:283/529.0) --------------- FIDO MESSAGE AREA==> TOPIC: 214 POWER BASIC Ref: C3U00003 Date: 03/20/95 From: EDUARD FRANKES Time: 11:06pm \/To: CAROL PLOWMAN (Read 6 times) Subj: Turbo vs Power Basic Hi Carol, CP->I've been using Turbo Basic for years, but the disks got CP->lost in my CP->cross country move, and my hard drive got gunked up as well. CP->Is it still possible to find TB anywhere? Yes, I've still got it, version 1.1 thst is... CP->How similar is PB to TB? Ever compaired an Stone age neaderthal man with an modern man ? That's about the diverance between Turbo- and PowerBASIC! PowerBASIC is the continuing development of (former) TurboBASIC. PowerBASIC has more funktions and procedures you could ever dream of. From version 3 you can make TSR's (terminate and stay resident)! Even in 5 lines of scource you can do it. try that with TurboBASIC.... Nah. doesn't work... CP->Also, I haven't seen PB in the CP->stores...has *IT* been discontinued as well? NO WAY! Januari 1995 the newest release (3.1) was available in Holland, so... It's outthere someware... Maybe you can call the PowerBASIC support in the US: Voice: (408) 659-8000 FAX: (408) 659-8008 Or write to them: PowerBASIC Inc. 316 Mid Vally Center Carmel CA 93923 Have Fun! Greetings from Holland, -[ed]- --- UBS Intl. Fmail 1.0g+ # Origin: United Bbs Systems PowerBASIC HeadQuarters Europe (119:3100/0) * Origin: United Bbs Systems Europe MailGate to -> Fido USA (2:283/529.0) --------------- FIDO MESSAGE AREA==> TOPIC: 214 POWER BASIC Ref: C3U00004 Date: 03/22/95 From: THOMAS GOHEL Time: 04:43pm \/To: TROY JONES (Read 6 times) Subj: Re: Power basic Hi Troy !! > PB sounds like what I need, now where do I get it, and how much? -= Sound Blaster(tm) Unit for PowerBASIC 3.0 =- from PC-Speaker, SB1.5 to SB16, SB32AWE incl. WaveBlaster or Roland Sound Canvas SCD10/15. Version 1.20 is shareware for 40,-DM or $40.00 (all Notes are in german) Please request 'PBSOUND' from Germany: -= 2:2410/308 =- ,Minonet, Berlin > Troy Jones Bye ---------------- / / h o m a s PB & Sound: Let the dream come true ... --- CrossPoint v3.02 R * Origin: German Sound Blaster(tm) Unit for PowerBASIC 3.x (2:2410/308.12) --------------- FIDO MESSAGE AREA==> TOPIC: 214 POWER BASIC Ref: C3W00000 Date: 03/25/95 From: DARRYL KIMMEL Time: 07:28pm \/To: ALL (Read 6 times) Subj: CRC32 routine Ran accross this on the QUIK_BAS echo and it compiles and runs no problems under QuickBasic, tried several modifications and can't seem to get it to run under PB3.0. This is the original less a few comments. Any help appreciated. BTW I am new to this echo. DECLARE SUB CRC32Init () DECLARE FUNCTION FileCRC& (FileName$) DECLARE FUNCTION QBCRC& (Segment%, Offset%, Length%, CRC&) DEFINT A-Z CONST LoadBuffer = 8192 'size of disk buffer in FileCRC DIM SHARED CRCTable&(255) CLS CALL CRC32Init INPUT "File "; FileSpec$ CRC& = FileCRC&(FileSpec$) PRINT STRING$(6, 29); HEX$(CRC&) '(This table is CCITT-32 compatible.) DATA &H000000000,&H077073096,&H0EE0E612C,&H0990951BA,&H0076DC419 DATA &H0706AF48F,&H0E963A535,&H09E6495A3,&H00EDB8832,&H079DCB8A4 DATA &H0E0D5E91E,&H097D2D988,&H009B64C2B,&H07EB17CBD,&H0E7B82D07 DATA &H090BF1D91,&H01DB71064,&H06AB020F2,&H0F3B97148,&H084BE41DE DATA &H01ADAD47D,&H06DDDE4EB,&H0F4D4B551,&H083D385C7,&H0136C9856 DATA &H0646BA8C0,&H0FD62F97A,&H08A65C9EC,&H014015C4F,&H063066CD9 DATA &H0FA0F3D63,&H08D080DF5,&H03B6E20C8,&H04C69105E,&H0D56041E4 DATA &H0A2677172,&H03C03E4D1,&H04B04D447,&H0D20D85FD,&H0A50AB56B DATA &H035B5A8FA,&H042B2986C,&H0DBBBC9D6,&H0ACBCF940,&H032D86CE3 DATA &H045DF5C75,&H0DCD60DCF,&H0ABD13D59,&H026D930AC,&H051DE003A DATA &H0C8D75180,&H0BFD06116,&H021B4F4B5,&H056B3C423,&H0CFBA9599 DATA &H0B8BDA50F,&H02802B89E,&H05F058808,&H0C60CD9B2,&H0B10BE924 DATA &H02F6F7C87,&H058684C11,&H0C1611DAB,&H0B6662D3D,&H076DC4190 DATA &H001DB7106,&H098D220BC,&H0EFD5102A,&H071B18589,&H006B6B51F DATA &H09FBFE4A5,&H0E8B8D433,&H07807C9A2,&H00F00F934,&H09609A88E DATA &H0E10E9818,&H07F6A0DBB,&H0086D3D2D,&H091646C97,&H0E6635C01 DATA &H06B6B51F4,&H01C6C6162,&H0856530D8,&H0F262004E,&H06C0695ED DATA &H01B01A57B,&H08208F4C1,&H0F50FC457,&H065B0D9C6,&H012B7E950 DATA &H08BBEB8EA,&H0FCB9887C,&H062DD1DDF,&H015DA2D49,&H08CD37CF3 DATA &H0FBD44C65,&H04DB26158,&H03AB551CE,&H0A3BC0074,&H0D4BB30E2 DATA &H04ADFA541,&H03DD895D7,&H0A4D1C46D,&H0D3D6F4FB,&H04369E96A DATA &H0346ED9FC,&H0AD678846,&H0DA60B8D0,&H044042D73,&H033031DE5 DATA &H0AA0A4C5F,&H0DD0D7CC9,&H05005713C,&H0270241AA,&H0BE0B1010 DATA &H0C90C2086,&H05768B525,&H0206F85B3,&H0B966D409,&H0CE61E49F DATA &H05EDEF90E,&H029D9C998,&H0B0D09822,&H0C7D7A8B4,&H059B33D17 DATA &H02EB40D81,&H0B7BD5C3B,&H0C0BA6CAD,&H0EDB88320,&H09ABFB3B6 DATA &H003B6E20C,&H074B1D29A,&H0EAD54739,&H09DD277AF,&H004DB2615 DATA &H073DC1683,&H0E3630B12,&H094643B84,&H00D6D6A3E,&H07A6A5AA8 DATA &H0E40ECF0B,&H09309FF9D,&H00A00AE27,&H07D079EB1,&H0F00F9344 DATA &H08708A3D2,&H01E01F268,&H06906C2FE,&H0F762575D,&H0806567CB DATA &H0196C3671,&H06E6B06E7,&H0FED41B76,&H089D32BE0,&H010DA7A5A DATA &H067DD4ACC,&H0F9B9DF6F,&H08EBEEFF9,&H017B7BE43,&H060B08ED5 DATA &H0D6D6A3E8,&H0A1D1937E,&H038D8C2C4,&H04FDFF252,&H0D1BB67F1 DATA &H0A6BC5767,&H03FB506DD,&H048B2364B,&H0D80D2BDA,&H0AF0A1B4C DATA &H036034AF6,&H041047A60,&H0DF60EFC3,&H0A867DF55,&H0316E8EEF DATA &H04669BE79,&H0CB61B38C,&H0BC66831A,&H0256FD2A0,&H05268E236 DATA &H0CC0C7795,&H0BB0B4703,&H0220216B9,&H05505262F,&H0C5BA3BBE DATA &H0B2BD0B28,&H02BB45A92,&H05CB36A04,&H0C2D7FFA7,&H0B5D0CF31 DATA &H02CD99E8B,&H05BDEAE1D,&H09B64C2B0,&H0EC63F226,&H0756AA39C DATA &H0026D930A,&H09C0906A9,&H0EB0E363F,&H072076785,&H005005713 DATA &H095BF4A82,&H0E2B87A14,&H07BB12BAE,&H00CB61B38,&H092D28E9B DATA &H0E5D5BE0D,&H07CDCEFB7,&H00BDBDF21,&H086D3D2D4,&H0F1D4E242 DATA &H068DDB3F8,&H01FDA836E,&H081BE16CD,&H0F6B9265B,&H06FB077E1 DATA &H018B74777,&H088085AE6,&H0FF0F6A70,&H066063BCA,&H011010B5C DATA &H08F659EFF,&H0F862AE69,&H0616BFFD3,&H0166CCF45,&H0A00AE278 DATA &H0D70DD2EE,&H04E048354,&H03903B3C2,&H0A7672661,&H0D06016F7 DATA &H04969474D,&H03E6E77DB,&H0AED16A4A,&H0D9D65ADC,&H040DF0B66 DATA &H037D83BF0,&H0A9BCAE53,&H0DEBB9EC5,&H047B2CF7F,&H030B5FFE9 DATA &H0BDBDF21C,&H0CABAC28A,&H053B39330,&H024B4A3A6,&H0BAD03605 DATA &H0CDD70693,&H054DE5729,&H023D967BF,&H0B3667A2E,&H0C4614AB8 DATA &H05D681B02,&H02A6F2B94,&H0B40BBE37,&H0C30C8EA1,&H05A05DF1B DATA &H02D02EF8D SUB CRC32Init FOR A = 0 TO 255 READ CRCTable&(A) NEXT END SUB 'Finds a PKZIP compatible CRC of any size file. 'There isn't any error checking in this example program- that's up to you. FUNCTION FileCRC& (FileName$) handle = FREEFILE 'get free file handle OPEN FileName$ FOR INPUT AS handle: CLOSE 'check to see if it's there OPEN FileName$ FOR BINARY AS handle 'open file in binary mode B$ = SPACE$(LoadBuffer) 'allocate space for buffer CRC& = &HFFFFFFFF 'init CRC FOR A = 1 TO LOF(handle) \ LoadBuffer 'do the blocks GET handle, , B$ 'get block CRC& = QBCRC(VARSEG(B$), SADD(B$), LoadBuffer, CRC&) NEXT whatsleft = LOF(handle) MOD LoadBuffer 'do the oddballs now B$ = SPACE$(whatsleft) 'whatever's left over GET handle, , B$ 'get it CRC& = QBCRC(VARSEG(B$), SADD(B$), whatsleft, CRC&) CLOSE handle 'close file FileCRC& = NOT CRC& 'return CRC to caller END FUNCTION 'Uses in-line coding to find a CRC-32 of a block of memory 'Although the "Length" variable is a signed integer, memory blocks >32k 'may be processed by this routine. (To process a block of memory 65535 'bytes long, -1, or &HFFFF, would be passed to this procedure, for 'instance.) ' FUNCTION QBCRC& (Segment, Offset, Length, CRC&) 'switch to input segment DEF SEG = Segment 'Since we're going to calculate the CRC 4 bytes at a time, this FOR/NEXT 'takes care of all the oddballs left over... FOR A = 1 TO Length AND 3 'Using CINT(CRC&) AND 255 instead of CRC& AND 255 improves speed 'but it will only work when compiled without range checking CRC& = CRCTable&((CLNG(CRC&) AND 255) XOR PEEK(Offset)) XOR (((CRC& AND &HFFFFFF00) \ 256) AND &HFFFFFF) Offset = Offset + 1 NEXT 'Adjust length- divide it by 4 using unsigned division Length = ((Length AND &HFFFC) \ 4) AND &H3FFF 'Drop into loop GOTO B 'Updates the CRC on the next 4 bytes, doing this 4 bytes at a time 'results in a small improvement in speed, since the compiled code 'will jump less often... A: CRC& = CRCTable&((CLNG(CRC&) AND 255) XOR PEEK(Offset)) XOR (((CRC& AND &HFFFFFF00) \ 256) AND &HFFFFFF) CRC& = CRCTable&((CLNG(CRC&) AND 255) XOR PEEK(Offset + 1)) XOR (((CRC& AND &HFFFFFF00) \ 256) AND &HFFFFFF) CRC& = CRCTable&((CLNG(CRC&) AND 255) XOR PEEK(Offset + 2)) XOR (((CRC& AND &HFFFFFF00) \ 256) AND &HFFFFFF) CRC& = CRCTable&((CLNG(CRC&) AND 255) XOR PEEK(Offset + 3)) XOR (((CRC& AND &HFFFFFF00) \ 256) AND &HFFFFFF) Offset = Offset + 4 '4 bytes over now Length = Length - 1 '1 less byte B: IF Length <> 0 THEN GOTO A 'if more bytes then go 'All done QBCRC& = CRC& END FUNCTION --- VFIDO 7.00.05 * Origin: Synthetic Development Systems (1:207/209) --------------- FIDO MESSAGE AREA==> TOPIC: 214 POWER BASIC Ref: C3W00001 Date: 03/22/95 From: DAVID ROPER Time: 07:15pm \/To: TROY JONES (Read 6 times) Subj: POWER BASIC Troy, watch this space and you will see Dave Navarro (who works at PowerBasic) answer this question. P-s-s-t! Dave! He wants to know the cost of upgrading. Meanwhile while Dave answers your question direct from the factory, I can tell you that 1-408-659-8000 will get you in touch with these fine folks and they will tell you instantly if you can't wait. Welcome to the best damned basic compiler out there.... oops, got excited... excuse me David --- FLAME v1.1 * Origin: FULL INTERNET 22 GIGs (919) 779-6674 mms.raleigh.nc.us (1:151/102) --------------- FIDO MESSAGE AREA==> TOPIC: 214 POWER BASIC Ref: C3X00000 Date: 03/25/95 From: CHRIS ADAMS Time: 01:19pm \/To: EDUARD FRANKES (Read 6 times) Subj: Echo Project! On (20 Mar 95) Eduard Frankes wrote to Chris Adams... CA->You seem to have picked the winning one. Right now, it looks CA->like we are CA->going to do some serious COMM stuff, plus protocals, and CA->toss in a CA->mailer for the fun of it! Maybe even a BBS! EF> YES! EF> Could this mean also an Mailtosser/Gate program ? Yeah! It'll end up, eventually, as a BBS with an INTEGRATED mailer... EF> I gate the mail for the nets in europe, with Blackhole, but its ometimes EF> chrashes at the most impossable times with mailpackets bigger then 2500 EF> bytes. EF> would be verry conveniant to have an Mail Gate/Tosser also.. ;-) We'll see what happens! EF> Maybe i'll write one myself, with some help from you guys ;-) That's what I'm doing! CA->No problemo. I've still procrastinated, and besides, I was CA->trapped in CA->Ventura (100mi south) on the 10th because rain closed the CA->freeway... No biggie. EF> No wet feet i hope ;-) Actually, yes. My dress shoes will never be the same... ... Old age is always 15 years older than I am. L. Long --- PPoint 1.88 * Origin: The Point of Obfuscation! (1:212/2001.5) --------------- FIDO MESSAGE AREA==> TOPIC: 214 POWER BASIC Ref: C3X00001 Date: 03/26/95 From: CHRIS ADAMS Time: 10:39pm \/To: RAY PENAS (Read 6 times) Subj: Echo Project! On (24 Mar 95) Ray Penas wrote to Chris Adams... RP> Subs/Functions are VERY bad. They are slower and take up more code RP> space. What's wrong with gosubs? I'm looking for readability and non-spaghetti code. Also, I doubt that they seriously cause problems in a WELL designed program, not to mention they allow easy return values and passed parameters. Sure, you can assign these before and check afterward, but that takes time itself, Consider what happens: CALL SUB(Arg1, Arg2, etc) This is treated, afair, something like this: push segment arg1 push offset arg1 [etc] call far [address of subroutine] gosub just pushes the current CS & IP, calls it and returns. So all we have is a few extra pushes. Note, too, that functions just have one extra step, popping the return value. This really isn't too much overhead if you have a well designed program. Also, we get things like local variables, etc, much easier. ... The sight of death frightens them [Earthers]. --- PPoint 1.88 * Origin: The Point of Obfuscation! (1:212/2001.5) --------------- FIDO MESSAGE AREA==> TOPIC: 214 POWER BASIC Ref: C3Y00000 Date: 03/27/95 From: BRIAN MCLAUGHLIN Time: 08:43am \/To: RAY PENAS (Read 6 times) Subj: Echo Project! RP>Subs/Functions are VERY bad. They are slower and take up more code RP>space. What's wrong with gosubs? Hmmm. I just had to jump in here and spill my two cents worth. You say that Subs/Functions are VERY bad. This is a strong statement! Your reasons are that: 1) they are slower and 2) they take up more code space. This is marginally true, but you don't say how much slower or how much more code space they consume. I believe you'll find that even on an XT a SUB vs. a GOSUB will net you a performance penalty of far less than one millisecond. IMHO, it is not worth a hoot to code around that kind of performance penalty, unless the SUB is an identified bottleneck, being called thousands of times. As for code space, that's easy to test. A SUB with two integer parameters is about average. It compiles 35 bytes bigger than a comparable GOSUB. If a program is very small and only has four or five subroutines in it, this is a measly hit. Then again, if the program is very large and has several hundred subroutines, using GOSUB will save several Kbytes, but at the cost of a maintainence nightmare. As for "what's wrong with GOSUBS?"... 1) they can only act on global data 2) they must be in the main module 3) they are harder to reuse For my style of programming, a SUB/FUNCTION is a slam dunk. No doubt you disagree and code accordingly. That's fine. But I hate to see such strong statements bandied about without any data behind them. * SLMR 2.1a * MAXLIB For PB v1.1 - Access arrays and files in EMS/XMS! --- WILDMAIL!/WC v4.12 * Origin: Com-Dat BBS - Hillsboro, OR. HST DS (1:105/314.0) --------------- FIDO MESSAGE AREA==> TOPIC: 214 POWER BASIC Ref: C3Y00001 Date: 03/26/95 From: LESTER DODDS Time: 10:39am \/To: ALL (Read 6 times) Subj: Pb31lib.Inc '-- PB31LIB.INC '-- INCLUDE file for PB31.PBL '-- included in PowerBASIC 3.1 example files. '-- INCLUDE for COMMUNIT.BAS DECLARE FUNCTION DtrStatus(BYVAL port AS INTEGER) DECLARE FUNCTION CtsStatus(BYVAL port AS INTEGER) DECLARE FUNCTION DsrStatus(BYVAL port AS INTEGER) DECLARE FUNCTION Carrier(BYVAL port AS INTEGER) DECLARE FUNCTION GetComAddress(BYVAL port AS INTEGER) DECLARE SUB SetComAddress(BYVAL port AS INTEGER, BYVAL address AS INTEGER) '-- INCLUDE for DIRUNIT.BAS DECLARE FUNCTION DtaAttrib DECLARE FUNCTION DtaDate$ DECLARE FUNCTION DtaTime$ DECLARE FUNCTION DtaSize& DECLARE FUNCTION DOS2Date$(BYVAL Fd AS INTEGER) DECLARE FUNCTION DOS2Time$(BYVAL Ft AS INTEGER) DECLARE SUB GetDTA(DtaSeg AS INTEGER, DtaOfs AS INTEGER) '-- INCLUDE for DOSUNIT.BAS DECLARE FUNCTION AddFileHandles(BYVAL NumHandles AS INTEGER) DECLARE FUNCTION ExeName$() DECLARE FUNCTION Exist(BYVAL Filename$) DECLARE FUNCTION DiskFree(Drive$) AS DWORD DECLARE SUB StdOut( BYVAL Text AS STRING ) DECLARE SUB StdOutLn( BYVAL Text AS STRING ) DECLARE SUB StdErr( BYVAL Text AS STRING ) DECLARE SUB StdErrLn( BYVAL Text AS STRING ) DECLARE SUB SplitPath(BYVAL Source$, Fldrive$, Flpath$, Flname$) '-- INCLUDE for MATHUNIT.BAS DECLARE FUNCTION Factorial(BYVAL Value AS INTEGER) DECLARE FUNCTION FahrToCelsius(BYVAL DegF AS SINGLE) DECLARE FUNCTION CelciusToFahr(BYVAL DegC AS SINGLE) DECLARE FUNCTION KilogramsToPounds(BYVAL Kg AS SINGLE) DECLARE FUNCTION PoundsToKilograms(BYVAL Lbs AS SINGLE) DECLARE FUNCTION CentToInch(BYVAL Cent AS SINGLE) DECLARE FUNCTION InchToCent(BYVAL Inches AS SINGLE) DECLARE FUNCTION DegreesToRadians(BYVAL Degrees AS SINGLE) DECLARE FUNCTION RadiansToDegrees(BYVAL Radians AS SINGLE) DECLARE FUNCTION GallonsToLiters(BYVAL Gallons AS SINGLE) DECLARE FUNCTION LitersToGallons(BYVAL Liters AS SINGLE) DECLARE FUNCTION ArcCos(BYVAL Value AS SINGLE) DECLARE FUNCTION ArcSin(BYVAL Value AS SINGLE) '-- INCLUDE for MOUSUNIT.BAS DECLARE FUNCTION MsThere DECLARE FUNCTION MsButtons DECLARE SUB MsCursorOn DECLARE SUB MsCursorOff DECLARE SUB MsStatus(Button AS INTEGER, Row AS INTEGER, Column AS INTEGER) DECLARE SUB MsLocate(BYVAL Row AS INTEGER, BYVAL Column AS INTEGER) DECLARE SUB MsSetWindow(BYVAL Row AS INTEGER, BYVAL Col AS INTEGER, _ BYVAL Rows AS INTEGER, BYVAL Cols AS INTEGER) '-- INCLUDE for SCRNUNIT.BAS DECLARE SUB QSAVE(BYVAL Row AS INTEGER, BYVAL Col AS INTEGER, _ BYVAL Rows AS INTEGER, BYVAL Cols AS INTEGER, Where AS INTEGER) DECLARE SUB QREST(BYVAL Row AS INTEGER, BYVAL Col AS INTEGER, _ BYVAL Rows AS INTEGER, BYVAL Cols AS INTEGER, Where AS INTEGER) DECLARE SUB QBOX(BYVAL Row AS INTEGER, BYVAL Col AS INTEGER, _ BYVAL Rows AS INTEGER, BYVAL Cols AS INTEGER, BYVAL Attr AS BYTE) DECLARE SUB QFILL(BYVAL Row AS INTEGER, BYVAL Col AS INTEGER, _ BYVAL Rows AS INTEGER, BYVAL Cols AS INTEGER, BYVAL Char AS INTEGER, _ BYVAL Attr AS INTEGER) DECLARE SUB QPRINT(BYVAL Row AS INTEGER, BYVAL Col AS INTEGER, _ BYVAL Text AS STRING, BYVAL Attr AS INTEGER) DECLARE SUB QPRINTC(BYVAL Row AS INTEGER, BYVAL ColL AS INTEGER, _ BYVAL ColR AS INTEGER, BYVAL Text$, BYVAL Attr AS INTEGER) DECLARE SUB PGCOPY(BYVAL SourcePage AS INTEGER, BYVAL TargetPage AS INTEGER) DECLARE SUB ScrollUp(BYVAL Row AS INTEGER, BYVAL Col AS INTEGER, _ BYVAL Rows AS INTEGER, BYVAL Cols AS INTEGER, BYVAL Attr AS INTEGER, _ BYVAL HowMany AS INTEGER) DECLARE SUB ScrollDown(BYVAL Row AS INTEGER, BYVAL Col AS INTEGER, _ BYVAL Rows AS INTEGER, BYVAL Cols AS INTEGER, BYVAL Attr AS INTEGER, _ BYVAL HowMany AS INTEGER) DECLARE SUB LineEdit(BYVAL Row AS INTEGER, BYVAL Col AS INTEGER, Text$, _ BYVAL Attr AS INTEGER, BYVAL EdLen AS INTEGER, _ BYVAL MaxLen AS INTEGER) > CUT HERE Hope you can use these. Lester ... Wherever you go....there you are. ___ Blue Wave/QWK v2.12 --- Maximus 2.02 * Origin: Hacker's Heaven (1:383/10)