home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C!T ROM 2
/
ctrom_ii_b.zip
/
ctrom_ii_b
/
PROGRAM
/
BASIC
/
QBS_0103
/
QBS103-2.DOC
< prev
next >
Wrap
Text File
|
1993-04-30
|
56KB
|
1,531 lines
════════════════════════════════════════════════════════════════════════════════
Area: QuickBasic
Msg: #11181
Date: 02-24-93 22:45 (Public)
From: EARL MONTGOMERY
To: ALL
Subject: Fancy Fonts
────────────────────────────────────────────────────────────────────────────────
'The following are the fancy fonts that can be used with FONTGEN.BAS
'which I posted a week or so ago. To use them just select L from the
'menu and when prompted for the file name enter DEFAULT
'Permission given by echo coordinator to use POSTIT to post this
'BSAVED Binary File. The file is in two parts.
'Part one of two
CLS:?STRING$(50,178):'This file created by PostIt! v4.0
DEFINT A-Z:FOR A=0 TO 6:P(A)=2^A:NEXT:OPEN "B",1,"default.dat"
T$="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789()"
G"9B)JaaaaoaaaaaaaaaaaaaaaaaaaaaGFbwAGb2BMb6haaaaaa43)B)))dF()(baaaaaaaW
G"M)(7V)8HdeaaaaaaaaqGdF(ZhoqaaaaaaaaGbp8C(5NJbg8aaaaaaayWJF))VFyGbpaaaa
G"aaaaaaag8WdgaaaaaaW))))))F(WdF())))))daaaaapMjKqMXdaaaaa)))))pCM92BMd)
G"))))paa4HdAidEmZmZ4baaaaaa8yMzMXdg(HbgaaaaaaWpZ8dmWadCWdoaaaaaa83y)n2y
G"JD25MdmaaaaayGX28CopBJbgaaaaaaaGado((Jp4adiaaaaaaiGbo4J)(4GbcaaaaaaayW
G"JFyGbg(XdgaaaaaaGzMzMzMzgaMzgaaaaaa832BV9EBSXgBaaaaaaFgdgoSzSXSHddgZha
G"aaaaaaaaaaG)(7paaaaaaGbp(Hbgy4hpy4haaaaayWJFyGbgyGbgaaaaaaagyGbgyGHF8G
G"baaaaaaaaayWG)mGbaaaaaaaaaaaamG5pyWaaaaaaaaaaaaaaWadS)aaaaaaaaaaaaOWM)
G"SHcaaaaaaaaaaabo4WhF(7paaaaaaaaa(7pF8HdoqaaaaaaaaaaaaaaaaaaaaaaaaaaayW
G"dp8GbgaGbgaaaaayMzMrcaaaaaaaaaaaaaaWgB(ZgBS5pBSbaaaGbg8zSWaZNbgAmFyGba
G"aaaaaiSXmGbmMzmaaaaaaGdBSHJDCZmZ2baaaaamWadyaaaaaaaaaaaaaaadyadmWadmyW
G"aaaaaaaadgmWadmWagWaaaaaaaaaGz88ppMbaaaaaaaaaaaGbg(Hbgaaaaaaaaaaaaaaaa
G"aGbgyadaaaaaaaaaa4paaaaaaaaaaaaaaaaaaaaayGbaaaaaaiGbmGbmGbmGaaaaaaaa8z
G"SXg7S32BUXgBmFaaag4GhgyGbgyGbgy4haaWNXgyGdCGdCGdSX(daa8zSbgyGp(yGbgymF
G"aaadCWdBm7V)mWadm4baa4pWadm)gyGbgySX8baa4agWaZV)gBSXg7pFaaG)gBadyadmWa
G"dmWadaaWNXgBS785UXgBSX8baa8zSXg7VFgyGboWd(aaaayGbaaaagyaaaaaaaaaagyaaa
G"aGbgWaaaaaaagWagWagmyWGbaaaaaaaaaaGFaaGFaaaaaaaaaagmyWGbmGbmGbaaaaaa8z
G"SXmGbgyGbgaGbgaaaFgBS3E7n3aZhaaaaaaaboSXgB8XgBSXM7gdaa8BMzMzgFMzMzMzg)
G"aaapMjmWadmWadSWMZhaaGpBMzMzMzMzMzMB8daa(BMyGbgA4HgyIzM)aaG)MjgyGHgEOb
G"gyGbpaaWJzcdmWoBSWclS5(baagBSXgBSX(BSXgBSXaaapyGbgyGbgyGbgyWdaa4bdmWad
G"mWaJmYi)8baaMBgBSHhE4XgBMzM5aaa8GbgyGbgyGjMyM5paayS7(7V1gBSXgBSXgdaagB
G"S527V3oBSXgBSXaaaoSzSXgBSXgBS7SHdaaWVzMzMzMXhyGbgyWdaa8zSXgBS1E7pFm4Gd
G"aaa)MzMz8XMzMzMzMzoaaWNXgdgomyGbgBS)8baa(5NwyGbgyGbgyGbpaaGXgBSXgBSXgB
G"SXgZhaaySXgBSXg7oBSHdoqaaagBSXgBT1(ZhBSXgBaaGXgZgk4Gdo4GcBgBmaayMzMzgp
G"yGbgyGbg8aaa(BmJyadyadmWclS)aaapWadmWadmWWdaaaaaaaiWGdhoC4Gbcaaaaaaa8W
G"admWadmWapaaaaqGdBgdaaaaaaaaaaaaaaaaaaaaaaaaaaaaW)aadmyaaaaaaaaaaaaaaa
G"aaaaaaaEmWhZmZmZm7haaaoyGHhBMzMzMzMz8baaaaaa8zmWadmWaBmFaaahmWad8XmZmZ
G"mZ8ZhaaaaaaWNXg7pWalSX(daa4WgzGbg8GbgyGbg8aaaaaaGDmZmZ8Xad8JhaaaoyGXMD
G"MzMzMzMzMdaayGba4GbgyGbgyGbpaaGbgaGdgyGbgyMz(XdaaiUzMzgB4XMzMzMzMdaa4G
G"bgyGbgyGbgyGbpaaaaaaa7(BT1wBSXgBmaaaaaaWTzMzMzMzMzMbaaaaaa8zSXgBSXgBmF
G"aaaaaaa3MzMz8bgyGbpaaaaaayhZmZmFmWGhEaaaaaaaCBNzGbgyGbg8aaaaaaaFgdpEC4
G"GbgZhaaabmWWpmWadmWaJnCaaaaaaamZmZmZmZmZSDaaaaaaGzMzMzMzgp8GbaaaaaaySX
G"wBT)SXgBSbaaaaaagZgk4GdoOWMXaaaaaaGXgBSX(zGd(Zpaaaaaa4pZyaJz(daaaaaaoG
G"bgyahgyGHdaaaaaaagyGbgaGbgyGbaaaaaaahgyGHdyGbgWbaaaaaa2Xnaaaaaaaaaaaaa
G"aaaaaaboSzSX(daaaaaaaWJzcdmWcBgpmyaFaaaamZmamZmZmZSDaaaaaWagWaaFg7pWgZ
G"haaaaaqGdBaGhd8XmZ2baaaaaamZma4XaFmZSDaaaaaagmyaaEmWhZmBhaaaaa4WgoaGhd
G"8XmZ2baaaaaaaaapMbMz8WGb8aaaaaboSbaFg7pWgZhaaaaaaWmZaWNX(dSX8baaaaayWG
G"ba8zS)aBmFaaaaaaGzMbaoyGbgyWdaaaaayWJzaGdgyGbg8aaaaaayWGba4GbgyGbpaaaa
G"aySXqGdBgBS)gBmaaaaoSHda4WMXg7VXgdaaaGbmGbG)MbgFGzM)aaaaaaaaaWSD24h2y7
G"gaaaaaa4dBmZS)mZmZodaaaaae4Wga8zSXgBmFaaaaaaGXgdaFgBSXgZhaaaaaGbdgaWNX
G"gBSX8baaaaam4XmamZmZmZSDaaaaaagmyaaZmZmZmBhaaaaaaySXaySXgBSFgWaEaaGXgJ
G"dBgBSXgZgoaaaaaySXaySXgBSXgZhaaaaayGbpMbgyMXdgyaaaaaaoSrgyWdgyGzo)aaaa
G"aaGzMXdg(HHFyGbaaaaa4ZmZ4tmZEZmZgdaaaaGdBGbgy4hgyGbgydhaaGbmGbaEmWhZmB
G"haaaaamGbmaGdgyGbg8aaaaaagWaga8zSXgBmFaaaaaGbmGbaZmZmZmBhaaaaaayh3aWTz
G"MzMzMbaaayh3ayS527V3oBSXaaaaaWdBS5da(baaaaaaaaaa4WgB4aaFaaaaaaaaaaaaWa
G"daWadygBmFaaaaaaaaaaaa(dmWadaaaaaaaaaaaaG)gyGbaaaaaaaWaBmZyddyCBidy4da
G"aamWgZm2WyMZE6JbgaaaaGbgaGbg8WdpyaaaaaaaaaGnSHnB2aaaaaaaaaaaaGnB2Wg2aa
G"aaaaqeefbrrqueefbrrqueevLQvPAvQwLQvPAvQwLQDFx3319DDFx3319DDFhgyGbgyGbg
G"yGbgyGbgyGbgyGbgyGb(yGbgyGbgyGbgyGb(yGpgyGbgyGHn2yJn2yJn2BJn2yJn2aaaaa
G"aaaaG)2yJn2yJnaaaaaaa(yGpgyGbgyGHn2yJn2yVb2BJn2yJn2yJn2yJn2yJn2yJn2yJn
G"aaaaaaG)gyVn2yJn2yJn2yJn2yVb(daaaaaaayJn2yJn2yJ)aaaaaaaayGbgyGb(yGpaaa
G"aaaaaaaaaaaaaa4JbgyGbgyGbgyGbgyGXhaaaaaaaayGbgyGbgy8paaaaaaaaaaaaaaaaa
G")JbgyGbgyGbgyGbgyGXhyGbgyGbgaaaaaaaaa8paaaaaaaagyGbgyGbg)JbgyGbgyGbgyG
G"bgFGXhyGbgyGbg2yJn2yJn2CJn2yJn2yJn2yJn2Cdm)aaaaaaaaaaaaaaa)aZn2yJn2yJn
G"2yJn2yZ9a8paaaaaaaaaaaaaa8pa3BJn2yJn2yJn2yJn3aZn2yJn2yJnaaaaaaW)a8paaa
G"aaaaGn2yJn2Cpa3BJn2yJn2GbgyGbg)dW)aaaaaaaa2yJn2yJn28paaaaaaaaaaaaaa8pa
G")JbgyGbgyaaaaaaaaaW)2yJn2yJn2yJn2yJn28daaaaaaaagyGbgy8bgFaaaaaaaaaaaaa
G"aaFGXhyGbgyGbgaaaaaaaaa8Jn2yJn2yJn2yJn2yJn)BJn2yJn2GbgyGbg)JX)yGbgyGbg
G"yGbgyGbgyGpaaaaaaaaaaaaaaaaaFGbgyGbgy8))))))))))))))))))aaaaaaaaa8))))
G"))))p8Wdp8Wdp8Wdp8Wdp8W)Wdp8Wdp8Wdp8Wdp8Wd)))))))))daaaaaaaaaaaaaaayh3
G"yJn32baaaaaaaaaFgZVXgZpWadeaaaG)gBmWadmWadmaaaaaaaaa(ZgBSXgBSbaaaaaa(B
G"myWGbmGzS)aaaaaaaaaaGFyJn2ydhaaaaaaaaaMzMzMXhyGbmaaaaaaaGDCJbgyGbgaaaa
G"aaGFyWJzMzgpy4haaaaaaGdBgBS)gBmB4aaaaaaa4WMXgBmBSXM7aaaaaaGhWGbd(yMzMX
'>>> Continued on Page 2
--- Maximus 2.01wb
* Origin: The MOCHINE BBS * Irving, TX * 214/399-8414 * HST DS *
(1:124/1301)
════════════════════════════════════════════════════════════════════════════════
Area: QuickBasic
Msg: #11182
Date: 02-24-93 22:52 (Public)
From: EARL MONTGOMERY
To: ALL
Subject: Fancy Fonts Part two
────────────────────────────────────────────────────────────────────────────────
' Part two of two. Fancy fonts for Fontgen.Bas. See header part one.
'>>> Start of Page 2.
G"daaaaaaaaaa432B7haaaaaaaaadyGFBV98(bgWaaaaaaahWagy8bgyWWbaaaaaaaaFgBSX
G"gBSXgdaaaaaaa4paa4paa4paaaaaaaaayGHFyGbaa8paaaaaaadgmyadyada(baaaaaamG
G"bmGbdgmaGFaaaaaaGdBSbgyGbgyGbgyGbgyGbgyGbgyGn2WbaaaaaaaGbga4hayGbaaaaa
G"aaaaayh3ayh3aaaaaaaa4WgB4aaaaaaaaaaaaaaaaaaaaGbgaaaaaaaaaaaaaaaaaGbaaa
G"aaaaaapWadmWadSZgpCaaaaaa2SXgBSXgaaaaaaaaaaah2WagY4daaaaaaaaaaaaaa8XhF
G"8XhFaaaaaaaaaaaaaaaaaaaaaaaa"
N=3591:K=255:IF LEN(C$)<>4788 THEN ?"Incomplete script file!":BEEP:END
FOR A=1 TO N:LOCATE 1:?STRING$(50*(A/N),177):IF L=0 THEN GOSUB G:L=6
W=T\P(6-L):GOSUB G:W=W OR T*P(L):L=L-2:B$=CHR$(W AND K):PUT 1,,B$:NEXT
?:IF C<>34 THEN ?"Bad checksum!":BEEP:END ELSE ?"Success!":END
G:I=I+1:T=INSTR(T$,MID$(C$,I,1))-1:C=(C+T)*2:C=C\256+(C AND 255):RETURN
SUB G(A$):SHARED C$:C$=C$+LEFT$(A$,70):END SUB
'end of part two of two
--- Maximus 2.01wb
* Origin: The MOCHINE BBS * Irving, TX * 214/399-8414 * HST DS *
(1:124/1301)
════════════════════════════════════════════════════════════════════════════════
Area: QuickBasic
Msg: #11855
Date: 02-24-93 16:26 (Public)
From: CHRIS TRACY
To: ALL
Subject: Scroll v1.0 - 1/1
────────────────────────────────────────────────────────────────────────────────
Well... This is a little routine i wrote to scroll an array on the screen...
It's quite fast, even though it uses PRINT and locate and all that fun
stuff... The original version used PrtScrn, an ASM routine from the Q4T
library, but i adapted it to use PRINT... Basically, you set the screen
location (you just define a box) and colors and the array and the ending key,
and it will scroll very nicely for just about any number of elements (up to
32766, which is BASIC's limitations anywaz, well... depening on a few
things...)... It is very handy for scrolling like an ASCII chart for
instance... Note, I wrote this TO scroll an ascii chart, and of course, print
messed up the control characters... So, if you use an optional PRINT
statement, it will print the REAL ASCII code (like PDQPrint, PrintQ, or
PrtScrn)... Oh well, here it is! Enjoy!
Part one of SCROLL.BAS...
________O_/________________________| SNIP |______________________\_O_______
O \ | HERE | / O
DECLARE SUB Scroll (Arry$(), Elements%, UpR%, Brw%, LfC%, Rgc%, Fore%,_
Back%, EndCode$)
SUB Scroll (Arry$(), Elements%, UpR%, Brw%, LfC%, Rgc%, Fore%, Back%,
EndCode$)
DEFINT A-Z
'
' Scroll v1.0 - By Chris Tracy
' QBS Publishing - SURE!!! Yes!!!
'
' Arry$() - This is the array (of type STRING) to be scrolled.
' NOTE: The first element MUST be 0.
' Elements% - The number of elements to use.
' Upr% - The upper row (1-25) to scroll on.
' Brw% - The bottom row (1-25) to scroll on.
' Lfc% - The left column (1-80) to scroll on.
' Rgc% - The right column (1-80) to scroll on.
' Fore% - The foreground color of the text to be scrolled.
' Back% - The background color of the text to be scrolled.
' EndCode$ - This is the ending code's code to use. Use it like this:
' Scroll Arry$(), 130, 1,25,1,79,7,0,CHR$(27)
' The CHR$(27) would make ESCape the ending code. To use
' another character, for instance, the F1 key is
' CHR$(0) + ";" so just use that instead of CHR$(27).
'
' This source code is released into the public domain. You can use it in
' any of your programs for free, I don't care...
'
LOCATE , , 0 ' Turn the cursor OFF!
GOSUB Update: ' This updates the list...
DO
WHILE LEN(I$) = 0: I$ = INKEY$: WEND ' Wait for a key
SELECT CASE I$ ' What was it?
CASE CHR$(0) + "G" ' Must be HOME ...
ElementToStart% = 0 ' Reset starting
Num = 0 ' points and update
GOSUB Update: ' the scroll
CASE CHR$(0) + "O" ' Or maybe END ...
ElementToStart% = Elements% - (Brw% - UpR%) ' set the start
Num = Elements% ' point to the
GOSUB Update: ' last ones & update
CASE CHR$(0) + "Q" ' PGDN ...
ElementToStart% = ElementToStart% + (Brw% - UpR%)
IF ElementToStart% + (Brw% - UpR%) > Elements% THEN
Num = Elements% - (Brw% - UpR%)
ElementToStart% = Elements% - (Brw% - UpR%)
END IF
GOSUB Update:
IF ElementToStart% <> 0 THEN
Num = Num + (Brw% - UpR%)
END IF
CASE CHR$(0) + "I" ' PGUP ...
ElementToStart% = ElementToStart% - (Brw% - UpR%)
IF ElementToStart% < 0 THEN
Num = 0
ElementToStart% = 0
END IF
GOSUB Update:
IF ElementToStart% <> 0 THEN
Num = Num - (Brw% - UpR%)
END IF
CASE CHR$(0) + "P" ' Down arrow key
ElementToStart% = ElementToStart% + 1
IF ElementToStart% + (Brw% - UpR%) > Elements% THEN
ElementToStart% = ElementToStart% - 1
GOTO Repeat:
END IF
GOSUB Update:
Continued on next message...
--- T.A.G. 2.6d Standard
* Origin: DangerBase ][ Programming Staff 412-438-4101 (1:2615/4@FIDONET.ORG)
════════════════════════════════════════════════════════════════════════════════
Area: QuickBasic
Msg: #11856
Date: 02-24-93 16:40 (Public)
From: CHRIS TRACY
To: ALL
Subject: Scroll v1.0 - 2/2
────────────────────────────────────────────────────────────────────────────────
' Heres the second part of Scroll v1.0 - note... On the first one, i put
' 1/1 as the subejct... Sorry! I thought it was less than 90 lines! ;)
Part 2 of SCROLL.BAS - continued from last message...
Num = Num + 1
CASE CHR$(0) + "H" ' Up arrow key
ElementToStart% = ElementToStart% - 1
IF ElementToStart% < 0 THEN
ElementToStart% = ElementToStart% + 1
GOTO Repeat:
END IF
GOSUB Update:
Num = Num - 1
CASE EndCode$ ' The ender key!
GOTO Ender:
END SELECT
Repeat:
I$ = "" ' This resets I$, which is what the WHILE..WEND uses.
LOOP
GOTO Ender: ' Something else must've happened...
Update:
' This is the updater for the scroller.
' It redisplays the current elements.
FOR Show = 0 TO Brw% - UpR%
LOCATE UpR% + Show, LfC%
COLOR Fore%, Back%
PRINT MID$(Arry$(ElementToStart% + Show), 1, Rgc% - LfC%)_
+ STRING$((Rgc% - LfC%) - LEN(MID$(Arry$(ElementToStart% + Show), 1, Rgc%_
- LfC%)), " ")
'Uncomment the following line an comment the above 3 if
'you want to use Q4t's PrtScrn (much faster).
'PrtScrn MID$(Arry$(ElementToStart% + Show), 1, Rgc% -_
LfC%) + STRING$((Rgc% - LfC%) - LEN(MID$(Arry$(ElementToStart% + Show),_
1, Rgc% - LfC%)), " "), UpR% + Show, LfC%, Fore% + 16 * Back%
' Combine the above 2 lines (yes, its a REM statement, but...)
NEXT Show
RETURN ' Give control to the other part of the SUB...
Ender:
END SUB
________O_/________________________| SNIP |______________________\_O_______
O \ | HERE | / O
Line wrapping and message splitted accomplished by MsgSplit 2.00,
a Victor Yiu and Scott Wunsch creation.
--- T.A.G. 2.6d Standard
* Origin: DangerBase ][ Programming Staff 412-438-4101 (1:2615/4@FIDONET.ORG)
════════════════════════════════════════════════════════════════════════════════
Area: QuickBasic
Msg: #12565
Date: 02-25-93 10:07 (Public)
From: CHARLES GRAHAM
To: ALL
Subject: A puzzle for you
────────────────────────────────────────────────────────────────────────────────
'PUZZLE.BAS - EGA or better required
'
'Assume the Earth's circumference at the Equator is 25,000
'miles. You run a piece of string around the Equator so the
'ends of the string meet exactly. The string is 25,000 miles
'long.
'
'You add 1 foot to the length of the string. If the now
'25,000-mile-plus-1-foot long string could be suspended evenly
'above the Equator, how far off the ground would the string
'be?
'
'No tricks. Just math and logic.
'
SCREEN 9
CIRCLE (320, 175), 200, 2, 0, 6.28
CIRCLE (320, 175), 225, 15, 0, 6.28
PAINT (320, 175), 2, 2
LOCATE 13, 31
COLOR 12
PRINT "Polar view of Earth";
LOCATE 1, 1
PRINT "String =========================>";
LOCATE 2, 1: PRINT "is"; : LOCATE 3, 1: PRINT "suspended";
LOCATE 4, 1: PRINT "evenly"; : LOCATE 5, 1: PRINT "above";
LOCATE 6, 1: PRINT "the"; : LOCATE 7, 1: PRINT "Equator.";
LOCATE 13, 13: PRINT "<->"; : LOCATE 11, 1: PRINT "How";
LOCATE 12, 1: PRINT "far"; : LOCATE 13, 1: PRINT "is";
LOCATE 14, 1: PRINT "this"; : LOCATE 15, 1: PRINT "distance";
LOCATE 16, 1: PRINT "if"; : LOCATE 17, 1: PRINT "string";
LOCATE 18, 1: PRINT "is"; : LOCATE 19, 1: PRINT "a";
LOCATE 20, 1: PRINT "foot"; : LOCATE 21, 1: PRINT "longer";
LOCATE 22, 1: PRINT "than"; : LOCATE 23, 1: PRINT "Earth's";
LOCATE 24, 1: PRINT "circumference?";
DO
a$ = INKEY$
LOOP UNTIL LEN(a$)
SCREEN 0
END
--- QM v1.30
* Origin: QwikCom * St Charles MO * 16.8K HST/V32b (1:100/602.0)
════════════════════════════════════════════════════════════════════════════════
Area: QuickBasic
Msg: #12658
Date: 02-25-93 22:30 (Public)
From: CASEY PEARSON
To: ALL
Subject: SUPERDIR.BAS
────────────────────────────────────────────────────────────────────────────────
Someone asked if there was a Directory program in BASIC, well here is
one that was developed a while back, but still works wonders!
WARNING: this is a program that was released by IBM for demonstration
purpose and is shown here for the same reason, to use it for
profit or other means, you BETTER contact IBM first!!!
100 'Super Directory for the IBM Personal Computer
110 'for monochrome or color adaptor,80 columns
120 SCREEN 0,0,0:WIDTH 80:COLOR 0,4,8:CLS:DEFINT A-Z:KEY OFF:FOR I=1 TO 10:KEY
130 CR$=CHR$(17)+CHR$(196)+CHR$(217)
140 PRINT "Welcome to ";:COLOR 15:PRINT "Super Directory":COLOR 0
150 'Remove the word REM from following line for automatic use with drive A
160 REM DRIVE$="A:":FSPEC$="A:*.*":GOTO 200
170 PRINT:PRINT "Select Drive: (";:COLOR 16,15:PRINT"A B";:COLOR 7,0:PRINT
CHR$
180 DRIVE$=INKEY$+":":A=ASC(DRIVE$):IF (A OR 32)<97 OR (A OR 32)>98 THEN 180
190 DRIVE$=CHR$(A AND 223)+":":FSPEC$=DRIVE$+"*.*"
200 GOSUB 5000:CLS:COLOR 16:PRINT"Reading description file"
210 DIM D$(ENTRIES):FOR I=0 TO ENTRIES:D$(I)=CHR$(9)+"--" :NEXT
220 ON ERROR GOTO 310
230 OPEN DRIVE$+"DESCR.DIR" FOR INPUT AS #1
240 LINE INPUT #1,DISKNAME$:LINE INPUT#1,A$:NUMREC=VAL(A$)
250 FOR ITEMS=0 TO NUMREC
260 LINE INPUT #1,F$:LINE INPUT#1,D$
270 FOR I=0 TO ENTRIES
280 IF F$=F$(I) THEN D$(I)=D$
290 NEXT:NEXT
300 GOTO 320
310 RESUME 320
320 CLOSE#1:ON ERROR GOTO 0
330 PAGES=INT(ENTRIES/10)
340 CURR=0
350 START=CURR*10:FINISH=START+9:IF FINISH>ENTRIES THEN FINISH=ENTRIES
360 CLS:COLOR 0,4,8:PRINT STRING$(80,32):LOCATE 1,2:PRINT"Super
Directory";TAB(
370 FOR I=START TO FINISH
380 COLOR 0,15:PRINT "F";LEFT$(MID$(STR$(1+I-START),2)+" ",2);:COLOR
15,4:PRINT
390 NEXT
400 LOCATE 25,1:COLOR 15,4:PRINT"Press ";:COLOR 0,15:PRINT"F1";:COLOR
15,4:PRIN
410 LOCATE 23,32:PRINT"Page #";CURR+1;"of ";PAGES+1
420 A$=INKEY$:IF A$="" THEN 420
430 IF A$<>CHR$(27) THEN 540
440 LOCATE 25,1:PRINT SPACE$(79);:LOCATE 25,1:PRINT" 1.Exit to BASIC 2. Exit
450 A$=INKEY$:IF A$<"1" OR A$>"5" THEN 450
460 ON VAL(A$) GOTO 470,480,490,500:GOTO 350
470 COLOR 0:CLS:END
480 SYSTEM
490 RUN
500 ON ERROR GOTO 510:GOSUB 1000:GOTO 350
510 BEEP:LOCATE 25,1:PRINT SPACE$(79);:LOCATE 25,1:COLOR 31:PRINT"Can't save
de
520 IF INKEY$<>CHR$(13) THEN 520
530 RESUME 350
540 IF A$=CHR$(0)+CHR$(81) THEN CURR=-(CURR+1)*(CURR<PAGES):GOTO 350
550 IF A$=CHR$(0)+CHR$(73) THEN CURR=CURR-1:CURR=CURR-(PAGES+1)*(CURR<0):GOTO
3
560 A=ASC(MID$(A$+"0",2))-59:IF A<0 OR A>FINISH-START THEN BEEP:GOTO 420
570 LOCATE 25,1:PRINT SPACE$(79);:LOCATE 25,1:PRINT"Press ";CR$;" to run
progra
580 LOCATE 3+A*2,5:COLOR 31:PRINT F$(START+A);:COLOR 15
590 A$=INKEY$:IF A$<>CHR$(13) AND A$<>CHR$(27) AND A$<>CHR$(32) THEN 590
600 IF A$=CHR$(27) THEN LOCATE 3+A*2,5:PRINT F$(START+A);:GOTO 400
610 IF A$<>CHR$(32) THEN 670
620 IF DISKNAME$="" THEN LOCATE 25,1:PRINT SPACE$(79);:LOCATE 25,1:LINE
INPUT;"
630 LOCATE 25,1:PRINT SPACE$(79);:LOCATE 25,1:Z=START+A:PRINT "Description
:";D
640 LOCATE 25,1:PRINT SPACE$(79);:BEEP:COLOR 31:LOCATE 25,1:PRINT"Cannot save
d
650 A$=INKEY$:IF A$<>"y" AND A$<>"Y" AND A$<>"n" AND A$<>"N" THEN 650
660 IF A$="y" OR A$="Y" THEN RESUME 680 ELSE RESUME 350
670 ON ERROR GOTO 640:GOSUB 1000
680 ON ERROR GOTO 690:COLOR 0:CLS:RUN DRIVE$+F$(START+A)
690 LOCATE 25,1:PRINT SPACE$(79):COLOR 16:BEEP:PRINT"Cannot run ";F$(A);".
";:
700 IF INKEY$<>CHR$(13) THEN 700
710 RESUME 350
720 END
1000 'Save descriptions to disk
1010 OPEN DRIVE$+"DESCR.DIR" FOR OUTPUT AS #1
1020 PRINT#1,DISKNAME$;CHR$(13);ENTRIES;CHR$(13);
1030 FOR I=0 TO ENTRIES:PRINT#1,F$(I);CHR$(13);D$(I);CHR$(13);:NEXT
1040 CLOSE #1:ON ERROR GOTO 0:RETURN
1050 '
5000 'This subroutine reads disk directory into a string array
5010 'Enter with FSPEC$, the file spec for the FILES command
5020 'Exits with array F$, and NUMFILES, the number of files
5030 'uses a temporary array,TT$, which is ERASEd after use
5040 '
5050 DEF SEG=0:WIDTH 80
5060 HEAD=1050:TAIL=1052:BUFFER=1054
5070 CLS:COLOR 16,4,4:PRINT"Reading disk directory"
5080 COLOR 4:ON ERROR GOTO 5100
5090 FILES FSPEC$:ON ERROR GOTO 0:GOTO 5110
5100 BEEP:COLOR 31:CLS:PRINT"Cannot read directory":COLOR 4:ON ERROR GOTO
0:END
5110 DIM TT$(24):LOCATE 3,1:COLOR 4:ROWS=0
5120 'Put code for End, Enter into keyboard buffer:
5130 POKE HEAD,30:POKE TAIL,34:POKE BUFFER,0:POKE BUFFER+1,79:POKE
BUFFER+2,13:
5140 LINE INPUT TT$(ROWS)
5150 IF TT$(ROWS)<>"" THEN ROWS=ROWS+1:GOTO 5130
5160 IF NOT DIMMED THEN DIM F$(ROWS*4-1):DIMMED=1
5170 ROWS=ROWS-1
5180 FOR I=0 TO ROWS
5190 FOR J=0 TO 3
5200 T$=MID$(TT$(I),J*18+1,12)
5210 IF T$<>"" THEN F$(ENTRIES)=T$:ENTRIES=ENTRIES+1
5220 NEXT J
5230 NEXT I
5240 ERASE TT$:ENTRIES=ENTRIES-1
5250 DEF SEG:RETURN
... ■ SLMR 2.1a ■ Nothing is so smiple that it can't get screwed up.
--- DCQwk/T.A.G. 1.5a
* Origin: The Abacus * HST/DS * Potterville MI (1:159/100)
════════════════════════════════════════════════════════════════════════════════
Area: QuickBasic
Msg: #3685
Date: 02-25-93 22:31 (Public)
From: ROB MCKEE
To: ZACK JONES
Subject: RE-BOOT
────────────────────────────────────────────────────────────────────────────────
--> Note:
Moved (from: NETMAIL) by Rob McKee using timEd.
Hello Zack!
You wrote to Rob Mckee:
RM> ' Warm Reboot
ZJ> Neat little routine. Here's an idea for a program I've
ZJ> thought about writing Using a routine like yours to reboot
ZJ> the machine - but also have it check to see how many times
ZJ> it's rebooted. I used to have Front Door exit with an
ZJ> errorlevel that called BOOT.COM if it couldn't initialize
ZJ> the modem - well that normally worked until one day when it
ZJ> got hung really bad - FD sat in a Boot...Can't initialize
ZJ> modem....Boot loop for about 2 hours - lots of unwanted wear
ZJ> and tear on the ole 'puter. Anyway - it'd be nice to have a
ZJ> program that can reboot the system a set number of times.
ZJ> Interested in working on one? Here's a very rough flow
ZJ> chart:
ZJ> 1 -Open a file and write the number of times the system has
ZJ> been booted (eg 1)
ZJ> 2 - reboot
ZJ> 3 - modem hung still - FD exits calling reboot
ZJ> 4 - check file to get number of times rebooted if greater
ZJ> than 3 don't reboot the machine - blank the screen so we
ZJ> don't burn anyhing in to the monitor.
ZJ> Whatta ya say - wanna write one?
|---------| Slash Here |-------------8<------------>8-----------------|
DECLARE SUB Boot (ColdBoot%)
DEFINT A-Z
BBSDir$ = ENVIRON$(UCASE$(RTRIM$(COMMAND$)))
' Uses any Enviroment Variable that points to a Directory
' I use my %BINK% variable
IF RIGHT$(BBSDir$, 1) <> "\" THEN BBSDir$ = BBSDir$ + "\"
CountFile$ = BBSDir$ + "Booted.cnt"
OPEN CountFile$ FOR BINARY AS 1
DO
LOOP UNTIL INKEY$ = ""
CurrentTime$ = TIME$ ' Get alittle fancy
La = LOF(1)
IF LOF(1) THEN
a$ = SPACE$(La)
Nu$ = ""
GET #1, , a$
FOR t = 1 TO La ' Keep it compatible with QB And PDS
pa = ASC(MID$(a$, t, 1))
SELECT CASE pa
CASE 48 TO 57
Nu$ = Nu$ + CHR$(pa)
END SELECT
NEXT
booted = VAL(Nu$)
ELSE
Booted = 0
END IF
IF booted > 3 THEN
CLS
CLOSE
KILL CountFile$ ' This Makes Booted = 0
RANDOMIZE TIMER ' Brain dead routine to have the Message Hop
DO
r! = RND(TIMER) * 25! + 1 ' around the screen
c% = FIX(RND(TIMER) * 50! + 1)
IF FIX(RND(8) * 25) = 20 THEN
LOCATE r2 + 1, c2 + 1, 0
PRINT SPACE$(29);
LOCATE FIX(r!), c%, 0
PRINT "Boot Failed At " + CurrentTime$;
r2 = FIX(r!) - 1
c2 = c% - 1
END IF
LOOP WHILE INKEY$ = ""
ELSE
a$ = "Booted " + STR$(Booted + 1) + " Times" + CHR$(13) + CHR$(10)
PUT #1, 1, a$
CLOSE
Boot 0
END IF
END
SUB Boot (ColdBoot)
DEF SEG = 0
IF NOT ColdBoot THEN
POKE &H473, &H12
POKE &H472, &H34
END IF
DEF SEG = &HFFFF
CALL Absolute(0)
END SUB
|---------| Slash Here |-------------8<------------>8-----------------|
Kludgy but it works... Didn't feel like writing the boot into a Function.
SysOp 1:125/411 PVT - Rob
--- timEd/B6
--- Squish v1.01
* Origin: Flyer_Proof_Computer_Svs,Richmond_CA,MO,V32B (1:125/411)
════════════════════════════════════════════════════════════════════════════════
Area: QuickBasic
Msg: #3687
Date: 02-25-93 23:55 (Public)
From: ROB MCKEE
To: OWEN GIBBINS
Subject: DIRECTORIES 1/3
────────────────────────────────────────────────────────────────────────────────
Hello Owen!
You wrote to All:
OG> In BASIC, how do you get a list all the files and
OG> subdirectories in the current directory. I know there's the
OG> FILES command, but how do you store every
OG> filename/subdirectory name in a variable. Also, I don't want
OG> to have to shell to DOS.
In QB45 or PDS:
' $DYNAMIC
TYPE RegTypeX
ax AS INTEGER
bx AS INTEGER
cx AS INTEGER
dx AS INTEGER
bp AS INTEGER
si AS INTEGER
di AS INTEGER
flag AS INTEGER
ds AS INTEGER
es AS INTEGER
END TYPE
TYPE DFileType
Fname AS STRING * 12
FDate AS STRING * 8
FTime AS STRING * 8
cattr AS STRING * 7
DSize AS STRING * 10
DSlack AS INTEGER
attribute AS INTEGER
END TYPE
TYPE FileType
Fname AS STRING * 12
year AS INTEGER
month AS INTEGER
day AS INTEGER
FDate AS STRING * 10
hour AS INTEGER
minute AS INTEGER
second AS INTEGER
FTime AS STRING * 8
attribute AS INTEGER
Size AS LONG
END TYPE
TYPE DiskSizeType
Drive AS INTEGER
TotCl AS LONG
AvaCl AS LONG
SecCl AS LONG
SecSz AS LONG
CluSz AS LONG
free AS LONG
Total AS LONG
Used AS LONG
END TYPE
DECLARE FUNCTION GoodFileName$ (FilName$)
DECLARE SUB GetDiskSize (DkSz AS DiskSizeType, UsPath$)
DECLARE SUB GetFileData (dta$, File AS FileType)
DECLARE SUB KillFile (FilName$, FilAttribute%, Result%)
DECLARE SUB findfirstfile (Path$, dta$, Result%)
DECLARE SUB FindNextFile (dta$, Result%)
DECLARE SUB SetFileAttribute (UsPath$, FilName$, FilAttribute%, Result%)
CONST false = 0, true = NOT false, Move = 1, Normal = 2,_
ReadOnly = 4,_
Hidden = 8, Archive = 16, EveryThing = 30, DelFileInt21h = &H4100,_
MoveFilePointerInt21h = &H4200,_
SetDTAInt21h = &H1A00,_
GetDTAInt21h = &H2F00, GetDiskFreeSpaceInt21h = &H3600
DIM RegX AS RegTypeX, File AS FileType, DkSz AS DiskSizeType, _
kf$(200), ka%(1 TO 200)
Get2Parm InFile$, OutFile$, UsPath$, Parm%
DIM att(5) AS STRING * 1
att(0) = "R": att(1) = "H": att(2) = "S": att(3) = "L": _
att(4) = "D": _
att(5) = "A"
findfirstfile FileSpec$, dta$, Result%
'>>> Continued Next Message
--- timEd/B6
* Origin: Flyer_Proof_Computer_Svs,Richmond_CA,MO,V32B (1:125/411)
════════════════════════════════════════════════════════════════════════════════
Area: QuickBasic
Msg: #3688
Date: 02-26-93 00:11 (Public)
From: ROB MCKEE
To: OWEN GIBBINS
Subject: DIRECTORIES 2/3
────────────────────────────────────────────────────────────────────────────────
Hello Owen!
You wrote to All:
'>>> Continued from Previous
SUB findfirstfile (Path$, dta$, Result%)
DIM reg AS RegTypeX
thePATH$ = Path$ + CHR$(0)
reg.ax = &H2F00
CALL INTERRUPTX(&H21, reg, reg)
segm% = reg.es
ofst% = reg.bx
dta$ = SPACE$(43)
reg.ax = SetDTAInt21h '&H1A00
reg.ds = VARSEG(dta$)
reg.dx = SADD(dta$)
CALL INTERRUPTX(&H21, reg, reg)
reg.ax = &H4E00
reg.cx = 255
reg.ds = VARSEG(thePATH$)
reg.dx = SADD(thePATH$)
CALL INTERRUPTX(&H21, reg, reg)
Result% = reg.flag AND 1
reg.ax = SetDTAInt21h '&H1A00
reg.ds = segm%
reg.dx = ofst%
CALL INTERRUPTX(&H21, reg, reg)
END SUB
SUB FindNextFile (dta$, Result%) STATIC
DIM reg AS RegTypeX
SHARED thePATH$
IF LEN(dta$) <> 43 THEN Result% = 2: EXIT SUB
reg.ax = &H2F00
CALL INTERRUPTX(&H21, reg, reg):
segm% = reg.es:
ofst% = reg.bx
reg.ax = SetDTAInt21h '&H1A00
reg.ds = VARSEG(dta$): reg.dx = SADD(dta$):
CALL INTERRUPTX(&H21, reg, reg)
reg.ax = &H4F00:
reg.cx = 251:
reg.ds = VARSEG(thePATH$):
reg.dx = SADD(thePATH$)
CALL INTERRUPTX(&H21, reg, reg)
Result% = reg.flag AND 1
reg.ax = SetDTAInt21h '&H1A00
reg.ds = segm%: reg.dx = ofst%
CALL INTERRUPTX(&H21, reg, reg)
END SUB
SUB GetDiskSize (DkSz AS DiskSizeType, UsPath$)
DIM reg AS RegTypeX
reg.ax = &H3600
i% = INSTR(UsPath$, ":")
IF i% > 0 THEN
D$ = MID$(UsPath$, i% - 1, 1)
IF D$ < "A" OR D$ > "Z" THEN
DkSz.Drive = false
ELSE
DkSz.Drive = ASC(D$) - 64
END IF
ELSE
DkSz.Drive = false
END IF
reg.dx = DkSz.Drive
CALL INTERRUPTX(&H21, reg, reg)
IF reg.ax < 0 THEN DkSz.SecCl = reg.ax + 65536 ELSE DkSz.SecCl = reg.ax
IF reg.bx < 0 THEN DkSz.AvaCl = reg.bx + 65536 ELSE DkSz.AvaCl = reg.bx
IF reg.cx < 0 THEN DkSz.SecSz = reg.cx + 65536 ELSE DkSz.SecSz = reg.cx
IF reg.dx < 0 THEN DkSz.TotCl = reg.dx + 65536 ELSE DkSz.TotCl = reg.dx
DkSz.CluSz = DkSz.SecCl * DkSz.SecSz
DkSz.free = DkSz.AvaCl * DkSz.CluSz
DkSz.Total = DkSz.TotCl * DkSz.CluSz
DkSz.Used = DkSz.Total - DkSz.free
END SUB
SUB GetFileData (dta$, File AS FileType) STATIC
File.attribute = ASC(MID$(dta$, 22, 1))
File.Size = CVL(MID$(dta$, 27, 4))
tim& = CVL(MID$(dta$, 23, 2) + STRING$(2, 0))
File.second = tim& AND &H1F
File.minute = (tim& \ 32) AND &H3F
File.hour = (tim& \ 2048) AND &H1F
File.FTime = RIGHT$(STR$(File.hour), 2) + ":" + RIGHT$("00" +_
LTRIM$(STR$(File.minute)), 2) + ":" +_
RIGHT$("00" + LTRIM$(STR$(File.second)),2)
tim& = CVL(MID$(dta$, 25, 2) + STRING$(2, 0))
File.day = tim& AND &H1F
File.month = (tim& \ 32) AND &HF
File.year = ((tim& \ 512) AND &H1F) + 1980
File.FDate = RIGHT$(STR$(File.month), 2) + "-" + RIGHT$("00" + _
LTRIM$(STR$(File.day)), 2) + "-" + RIGHT$("0000" +_
LTRIM$(STR$(File.year - 1900)), 2)
f$ = MID$(dta$, 31) + CHR$(0)
File.Fname = LEFT$(f$, INSTR(f$, CHR$(0)) - 1)
END SUB
'<<< Continued in Next Message
SysOp 1:125/411 PVT - Rob
--- timEd/B6
* Origin: Flyer_Proof_Computer_Svs,Richmond_CA,MO,V32B (1:125/411)
════════════════════════════════════════════════════════════════════════════════
Area: QuickBasic
Msg: #3689
Date: 02-26-93 00:13 (Public)
From: ROB MCKEE
To: OWEN GIBBINS
Subject: DIRECTORIES 3/3
────────────────────────────────────────────────────────────────────────────────
Hello Owen!
You wrote to All:
'<<< Continued from Previous Message
FUNCTION GoodFileName$ (FilName$)
FiName$ = LTRIM$(RTRIM$(FilName$))
j% = INSTR(FiName$, " "): g% = j%
DO WHILE INSTR(FiName$, " ")
MID$(FiName$, j%, 1) = "."
DO
i% = INSTR(g% + 1, FiName$, " ")
IF i% <> 0 THEN
IF i% - 1 > g% THEN EXIT DO ELSE g% = i%
ELSE
EXIT DO
END IF
LOOP
FiName$ = MID$(FiName$, 1, j%) + MID$(FiName$, g% + 1)
j% = INSTR(FiName$, " "): g% = j%
LOOP
GoodFileName$ = UCASE$(FiName$)
END FUNCTION
SUB KillFile (FilName$, FilAttribute%, Result%)
DIM reg AS RegTypeX
IF FilAttribute% AND 16 THEN Result% = 2: EXIT SUB
IF FilAttribute% AND 1 THEN Result% = 3: EXIT SUB
FiName$ = GoodFileName$(FilName$) + CHR$(0)
reg.ds = VARSEG(FiName$):
reg.ds = VARSEG(FiName$):
reg.dx = SADD(FiName$):
reg.ax = DelFileInt21h
CALL INTERRUPTX(&H21, reg, reg)
Result% = reg.flag AND 1
END SUB
SUB SetFileAttribute (UsPath$, FilName$, FilAttribute%, Result%) STATIC
DIM reg AS RegTypeX
IF FilAttribute% AND 16 THEN Result% = 2: EXIT SUB
reg.ax = &H4301:
reg.cx = FilAttribute%
FiName$ = GoodFileName$(UsPath$ + FilName$) + CHR$(0)
reg.ds = VARSEG(FiName$):
reg.ds = VARSEG(FiName$):
reg.dx = SADD(FiName$):
CALL INTERRUPTX(&H21, reg, reg)
Result% = reg.flag AND 1
END SUB
'||| That's All folks!!!
SysOp 1:125/411 PVT - Rob
--- timEd/B6
* Origin: Flyer_Proof_Computer_Svs,Richmond_CA,MO,V32B (1:125/411)
════════════════════════════════════════════════════════════════════════════════
Area: QuickBasic
Msg: #7616
Date: 03-15-93 16:27 (Public)
From: BOB PERKINS
To: EARL MONTGOMERY
Subject: Change Directory
────────────────────────────────────────────────────────────────────────────────
EM> I am writing a little program for my own use and I need to know
EM> how to change directories using interrupts. I tried INT 21
EM> function 3B but I guess I don't know enough about interrupts as
Here you go Earl:
'$INCLUDE: 'qb.bi'
'Set Current Directory Interrupt 21h, Function 3Bh
'
DIM regsx AS regtypex
'if you include a drive letter, the current directory is switched for that
'drive but the default drive remains unchanged.
newdir$ = "\squish" + CHR$(0) 'ASCIZ pathname
regsx.ax = &H3B00
regsx.ds = VARSEG(newdir$)
regsx.dx = SADD(newdir$)
interruptx &H21, regsx, regsx
IF regsx.flags AND 1 THEN PRINT "Error!"
--- Msg V4.5
* Origin: Reciprocity Failure (1:124/4115.236)
════════════════════════════════════════════════════════════════════════════════
Area: QuickBasic
Msg: #7797
Date: 03-13-93 22:59 (Public)
From: JOHN GALLAS
To: CALVIN FRENCH
Subject: Badly Needed! Bin2string
────────────────────────────────────────────────────────────────────────────────
CF>relatively FAST decimal 2 binary function, as well as a binary 2
CF>decimal function to go with it. The binary function needs to be
CF>put in a string ($), so that I can deal with it. I'm not just
CF>'too lazy' to write it, the fact is that I don't think I could
A while ago someone posted a program to do all kinds of convertions,
bin2int, bin2hex, int2bin, etc. Unfortunatly, I don't have the authors
name who wrote this little beauty -- (If you're reading this Mr Author,
can you please reply so I can put your name with the file?) -- I hope it
helps!
DEFINT A-Z
DECLARE FUNCTION Bin2Hex$ (Bin$)
DECLARE FUNCTION Bin2Int% (Bin$)
DECLARE FUNCTION Hex2Bin$ (Hcs$)
DECLARE FUNCTION Hex2Int% (Hcs$)
DECLARE FUNCTION Int2Bin$ (Dec%)
DECLARE FUNCTION Int2Hex$ (Dec%)
DEFSNG A-Z
FUNCTION Bin2Hex$ (Bin$)
Bin2Hex$ = Int2Hex$(Bin2Int%(Bin$))
END FUNCTION
FUNCTION Bin2Int% (Bin$)
FOR y = LEN(Bin$) TO 1 STEP -1
IF MID$(Bin$, y, 1) = "1" THEN ax% = ax% + (2 ^ z)
z = z + 1
NEXT
Bin2Int% = ax%
END FUNCTION
FUNCTION Hex2Bin$ (Hcs$)
Hcs$ = UCASE$(Hcs$)
lc = LEN(Hcs$)
FOR x = 1 TO lc
SELECT CASE MID$(Hcs$, x, 1)
CASE "0"
Out$ = Out$ + "0000"
CASE "1"
Out$ = Out$ + "0001"
CASE "2"
Out$ = Out$ + "0010"
CASE "3"
Out$ = Out$ + "0011"
CASE "4"
Out$ = Out$ + "0100"
CASE "5"
Out$ = Out$ + "0101"
CASE "6"
Out$ = Out$ + "0110"
CASE "7"
Out$ = Out$ + "0111"
CASE "8"
Out$ = Out$ + "1000"
CASE "9"
Out$ = Out$ + "1001"
CASE "A"
Out$ = Out$ + "1010"
CASE "B"
Out$ = Out$ + "1011"
CASE "C"
Out$ = Out$ + "1100"
CASE "D"
Out$ = Out$ + "1101"
CASE "E"
Out$ = Out$ + "1110"
CASE "F"
Out$ = Out$ + "1111"
END SELECT
NEXT
Hex2Bin$ = Out$
END FUNCTION
FUNCTION Hex2Int% (Hcs$)
Hcs$ = UCASE$(Hcs$)
Hex2Int% = Bin2Int%(Hex2Bin$(Hcs$))
END FUNCTION
FUNCTION Int2Bin$ (Dec%)
tdec% = Dec%
DO WHILE tdec% > 0
IF tdec% / 2 = tdec% \ 2 THEN
Bin$ = "0" + Bin$
ELSEIF tdec% / 2 <> tdec% \ 2 THEN
Bin$ = "1" + Bin$
END IF
tdec% = tdec% \ 2
LOOP
Int2Bin$ = Bin$
END FUNCTION
FUNCTION Int2Hex$ (Dec%)
Int2Hex$ = HEX$(Dec%)
END FUNCTION
* OLX 2.1 TD * *'M ST*P*D - I'd like to buy a vowel Pat, an 'O'
--- Maximus 2.01wb
* Origin: Command Line BBS =Mpls. MN= V.32bis [612-788-6685] (1:282/2007)
════════════════════════════════════════════════════════════════════════════════
Area: QuickBasic
Msg: #9490
Date: 03-16-93 21:35 (Public)
From: EARL MONTGOMERY
To: ALL
Subject: VGACLIP (TSR)
────────────────────────────────────────────────────────────────────────────────
Permission granted to post this. It contains a TSR to capture any 320
*200*256 graphics screen in BSAVE format along with the original
palettes. No seperate palette data files! The saved screens can then
be BLOADED back into your own QB programs. See the following two
messages: Basic loader and small doc file.
CLS:?STRING$(50,178):DEFINT A-Z 'Created by PostIt! v5.1
Y$="*+,-./":FOR A=0 TO 6:P(A)=2^A:NEXT:OPEN "B",1,"VGACLIP.EXE
T$="abcdefghijklmnopqrstuvwxyz":T$=T$+UCASE$(T$)+"0123456789()
G"nPfIbK*zbaiaGga))pib*bqdm*icaE,e*caq9aSd,r,Cb+ug
G",D,6b+qi,M,Xc+yl+GW,hd+mn,2,Hd+O
G"o+W8-e+Kq+qfb+Ke+0s+Gob+cf+8u+qvb+Ff+
G"Ww+WEb+bg+Sy,Mb+Ig+WA+qTb+Kh+yF+W(b,i*
G"auG+Gcc+ti+GH+q*icaAaGiamcaI*maCca4aWjaieaNaGyaCcaGaG
G"laihaUaGFa4caLaGn*ca5aqmaKdabcqoaKia5aGtaieaQbGqa4baGcaC*ka4b
G"aOambaOcWiaKkaBdGqaeCacbG4bieaVhGqaySacbWIdieaw*Ra8baScqnaWkaG
G"baRamhaScqlaml*bWSaqba3caCaClakaqWaubacdqnaimaL*ZaycaodGd*na
G"x*0aWbavd///////,
G"/////////
G"///////+GySz1rbnetj
G"bfi*GKb+M///d//8))acbUW*u4A*
G"qPjdaCca4A*qPjWeieaJQ*HQ*JY*hBGda8cc4YfaqPjdaWka4A*qPjdaWk
G"aHY*JaCDdKEAaOP*ydaqPjcaimaqHly*LMo*OamcW1nq6)*Um*u4A*qP
G"PdcieaJcbaHcbaJkbaJaCDdKEeaGRz*LMm*RaOzvaicaP7*46haqPjdaWkaA
G"wfaIaq6o*UqcauAY*ScGMvbGiaGRT*LMm*RaGR4*LMm*RaGlebaLMm*R
G"aGRpbafUu*uAY*N*Uu*uAQ*PcWOy*Uu*uAY*(cqOyaWiax3aP7*Aka
G"aU*UofauAY*ScaUo*u4A*qPjWaieaP3maAk*cbW)gOba)BJgaOjcaClaqP
G"PcamlaqHlh*LMmaWjaGlEbafUC*uAs*OcqUcaWkihfUW*uAc*bdauAI*5
G"*u4ccaqPjdaCca4ccaqHlh*LMiaqo*fUcgauAI*5*u4ccaqPjdaCca4c6R
G"qPzea8ja6E8aZaS7Pxba6M8aSdd5l6bja4ObQgGjiEqOK*qJsca98Va(noU*k
G"uAgbaFcaUG*uZamu4Yq)ZinuAQ*UaGMmaWNaOP*4caAUcacbGMPhGqaGRb*
G"LMEbGqaOzvaic/*4UnaoInJgWAa67i08cfc7tlmnhYOUgaJaVlybSc20
G"QuZHSB9a44WMSOhcaGJdBYIoicadgSclY(kHNOjXgGhhWOhQgWVSpqUOaWmaZ)8
G"RovUWaquldkSbqltnhsvlYUvxTOFgKOpypWI2HWImmop7Y(a7mVCwm4WmTZ839G
G"MgaW0a8VDiOjda4laR)YvbfKMkaq1aG1G5lGDHS6I2HWI0jqkoyAab4aPbKus)B
G"d2dOjda4laj(qI)jW8K(LxDPmb*qv4EGdndrxlx1ISpi7bD1XgGC+WIgPqJw
G"9RMeaq2aqlpYKCZHSl*iNtlI9V4gWIxFuOQgWQlAecRUOrgSku5E*0cuZHKLC
G"V4HJEOAalAfc0cuZH8HCGStWZvGXgGCa9SW20raT(0Ci)BNcAQ*mdWxlwExkBa
G"aA6*ldW6IB1vE4ObSgGjk6aGait7(giaMOib8acDeWtc1nGrIlVbAQ*qdWbJJ
G"GbmITJa)X8KU4WF8Lxlx1ISB1vlAhclsWI(zWIvymb)BCb)RPda4maiwbIeSiYd
G"O84nfuqAQ*vdWvlAhclsNal6Nbl2Naj6J2d81G5lGCVKyhP4GPbeGdKgqsjD0r
G"j(qI)jqu7eSDcSyWlI88KM1kiVt02jWIrVOYlAJ2dmpPlo8)2HGMk*Za8VDgOP
G"caWmaF5vxkt+mdW5yG0buhiocSjHcjaMSOhscWOshqIEqDa6BYXgajalbGjm6
G"GKaS)YZaCogiDa0DHJaVi2hAG0bCOhuhG(MmkKaysIEija7VmuEG72a4i2hBaYb
G"CeaFGLma)mavTi7lANblsNa3tHUGfqOSgWkqFSbZgW))tBmGcBanhY)))))))))
G")))))))))))))))))))))))))))))))))))))))))))))))))d/.
G"//aqvlYUvx5YG(Wja)thchBaYbahaRlX)2zGMatGqaCSbihWBaS
G"aW0zWxE1LYe*JoWdbl6fcl(Hli6rVa4cI(4lalAebUmkSaSOrcuW*4YOUcGdF
G"qlnnhsIEOkamAaRa4WbWIWV(bGUyma6NgaSq8RHaOBLdGoNba7e)Qia6U6aOhza
G"WsXVocGUbpa6ggaSw8RKaO71dG(Eba7f)Aja6kbbOdxaWgYVAcGUOqa6LfaSL8R
G"NaOlweGUwbaRj)kka6IhbO)uaWIYVMcGUysa6efaSj8RGaORAdGEobyXhhBaYba
G"*Pl0)UySb7cW)7ZjutfLuvz1vEyGlmAHSa4sIMqla4UnaoI9G(mB*qxm67i0l
G"AsSbSFVqHaTr1Cij6XSbOjNfieaU8VlUcWGetGMaxGqaOVloAHSa4YIMqla7FWh
G"F5vxAL1wy1PlgBWU*WWvTi7w5XIEHWIFSW20jGJB7Oh8qWma7iWZMGVccGUQna
G"6YcGCbnlc(6ha6IXaOxkaYrZSq4RHaOBLdGoMai3jZoHVkcGURoa6lcGCAmlf(6
G"ia6g8aO7haY1WSw4RKaO71dGECam3b4c*FSovqo7f(Aja6kbbO3faYX(SH4RMa
G"OlkeGouai33ZwIVEcGUyra6dbGCspRj(kka6IhbOBdaYv8SO4RPaOlMeGEkaihU
G"F8VDi8VDgOPbfiea9+0Dk(E1LYe*u0wtZHKyhmwKayrBjnhYWdYZ)1ja(dlZ
G")rpE0JBYoxq3a5VE8mITj7CKa1v)IeSitcOVjjEGjj(Ka7J7))NibjsKaRd9(Ua
G"Op)c*0nKla6ZUa8FDi4IXg8l*S(mUaOp6c*1TIht5sXEOk*(daB9bDi4cG(
G"Wla)xheUySb)c*C6Y)E4haOFK)p7I)o8la67Y)U4ha7df5G5Iog0la11aTc0Sf
G"K8Gl6yGVaqNby5Y)UiiaAAybcbGlgBWVaibwpZPl(BGUa4Y)EyiaC6I)oOlaDUV
G"Yc*NU4Vb6cGl)7HIaWPl(7GUa05(kl*C6I)gOlaU8VhocaNU4Vd6cqN7RS*W
G"jG8daDeWde1TX(nJcu(tSl(BGUaWPl)7HKaWPl(7GUa0jw0vU(U4Vb6cGl)7HKa
G"WPl(7GUa05(kl*C6I)gOlaU8VhwcaNU4Vd6cqN7RS*WjG8dqDoqltUySb8c*
G"D6Y)UOj*Ypd39UlgBaVa8FN7ZPl)7HMa4IXgWl*OS*WPl(BGUa4Y)E4jaC6Y
G"JgyladsSaU4Vd6cGl)BJTa05YC6I)gOlaU8VhIcaNU8Ob4cWGelGl(7GUa4Y)2G
'>> Continued on pg. 2
--- Maximus 2.01wb
* Origin: Rabbit and Snake's BBS - Richardson, Texas (1:124/6108)
════════════════════════════════════════════════════════════════════════════════
Area: QuickBasic
Msg: #9491
Date: 03-16-93 21:40 (Public)
From: EARL MONTGOMERY
To: ALL
Subject: Part two VGACLIP.EXE (TSR
────────────────────────────────────────────────────────────────────────────────
' See header part one:
'>> Start: pg. 2
G"laDU8(UaOp)c*1zG(U8VlMcGla6ZUa8pDY7IXg8l*WPl)7HPaG(58)mavTi7w
G"D1IEzWI3jWG(mB*uNa3tb6dcWIqZi2c5OW7iCDumdWlENad6ZSbaqDcCpfF5vx
G"kl*lENal6)IpmVP1P9IcV(3au1IStBunhYul6fclEXcsxNamQTJcBYIEWAa0cv
G"ZHKl*Goma4iWMSJhbaqDjaKJatBsnhICtG(kamx6ok8IEzGjl(LaMC)f3h9w0c
G"vZHSyWDPmbamLb0kvZHyYIh5)O(qWbBnShH6dboInG(+Av3a5)XWdyW+KnJ
G"6db4VU8KhMIGZaGMhMIeVoaMhM(WcI5GS)YamOpwh*1HdTV0Cij6bqeWObcraT
G"r1Cij6H1bSOhSgaTq1CilpOpwh*0rHhZS9HEyDa0cvZHuSfaraTA0CiFSmJEOA
G"alx1ISVOrgmQQb0LYcaqvlYoUb*u)Bhc)BNbAscaGcqxkt*vTi7wDf)ECWIgP
G"WI2zWIuSiDcOeEWSOFiSydl2Nal(ns4LZa4VcY2ndRY7ADUSJYYPYcsthdwDvul
G"Q88MM1xEvh6RS)Ih)VDiOPcaWma)BNbAQ*mdWxE1LYgaWmaVU5vTi7tTOxgS4b
G")BNbAQ*mdWwDPS*u1ISpi7Vnvus1OvrsRgnhYIgzqJw5RMeaq2amZ25Eca06u
G"ZHixalT4WAL1wlwExkl*vTi7lAKbqPPqaWka4cCaqPPqaWkahBa0be*DPS*u
G"1ISVOrgaLMcbaRa0LYcaWXgaDabaWYvTi7hBaYb+l6Lbl(WIxjWIEaDa0cuZH
G"m3bA6*ldW6jStWZvGXgGCa98VDgOPcaWmaDPS+qvlYUvxTODgSidJtr)lsNa
G"deVtSQaW0zalGqNaRlG4ZRPc*nalANblsNaZt6IdZ))2zGMk*Za8LxDPS*u1
G"ISVOrgKPuqPPgaClaDPS*u1ISB1vl6LblAecgBW6daWcaNhdZi99BVb0lkS)oS
G"(a(U(a5Q*Z8VthnJ03h)IOV4W3h)IyVyXakmmisXcax35lSDDJdOpRpW)1vGth
G"zmbTS4ZAQ*qdW8KU4WF5vxkt*vTi7wzSbghW)l6LblEWcatxd5hn0lENajsK)
G"hF+4vxkl*vTi7xTOtiOPc*nalAKbZR6Id)vxkt*vTi7wD1I2zWImOPc*n
G"aJtXI2zWI0jaR8eMCgWJE3jajFPQ4YV4W)BNbAQ*mdWxE1LYc+qnvusz1vvX
G"VhhaOpgh*0zKVyhWIwpGfKgWoYpxoTIAa1zWIypWnRhVtoTO)Z0(oYphjlYH9d
G"haDse96dn0aZpW6b4HPbKIhKgW6JV4dbf08KMYBcSo2D9LxAL1wyTm*6dYbaqD
G"dmkYbSmavTi7qn1USpqoEzGCqm4WmLJxgChc)BNbAY*(cWwy1LYc+rLlfaSl
G"7dm4paqNddombIB)USpWuAY*(cqwldLMoaGZamUibfKMkaq1amy(cmhbRKmwlV
G"4WRMIdMgqaoqAajLuIpK4FcG1YtTibhwqIeSixcCyxcKixcSaW0nqI35)G9*Dg
G"SyxcK4F(V1Y87XbhBaYb+74GPbyNiA6*fdWooyAa2DXkoyAa74aQbyhbj6aQ
G"bSOdMgGXgGCao8l2bmGpKgWYaeLvxXVhhSO(lc)ImSiDcmpPi2WxEL1Y/
G"/////////
G"akaqdawDuqdXusqbIDX4cmWac8GGYqPasm5KdmGuuyYXgin9MB0D2BTvMC5b*G
G"bG*qgaVu1eaOgatv3yJv2CMvhBSLhiYvwBVzxzKbGdaiiadfMBU9gDGixzT9MD
G"LfsiaqjabXMCLfgz5bsAUnhDHXgBLrwiG0ciVufi09gi15gBVfgzaGca6cGvhfe
G"iZnMCLvMBGmwyWrxDYvgiVzgiZidm4jdmWGNm1ydiJ9gBVj3CPaG5aq1usbcAH5
G"gzSvMCGKMBJ9MCW9MCHrxzKbIy5bstPngAHvgBGCvzSngAWOcaueGvhf0qmLeuG
G"8svGq3BGixzT9MDLXciVjhibXevTyfi09giHngDPzxy0v2caiuawDuqtnKuQ4Yq
G"bbf9MaGubCvyY5wAUDwiGy1rbn1qsPIldfeuGugEPnhDZbYBUbczPn3AHesig*
G"Fby1rbn1qsr*ggGldfeu/a))F///.G+
G"//-0p/*c*Xb0Gc-ytnmn0s0e/+"
N=4488:K=255:IF LEN(C$)<>5984 THEN ?"Incomplete script!":END
FOR A=1 TO N:LOCATE 1:?STRING$(50/N*A,177):IF L=0 THEN GOSUB G:L=6
W=T\P(6-L):GOSUB G:W=W OR T*P(L):L=L-2:B$=CHR$(W AND K):PUT 1,,B$:NEXT
?:IF C=95 THEN ?"Ok":END ELSE ?"Bad checksum!":END
G:I=I+1:T=INSTR(T$,MID$(C$,I,1))-1:C=(C+T)*2:C=C\256+(C AND 255):RETURN
SUB G(A$):SHARED C$,Y$:FOR Q=1 TO 6:DO:S=INSTR(A$,CHR$(Q+41))
IF S THEN A$=LEFT$(A$,S-1)+STRING$(Q+1,97)+MID$(A$,S+1)
LOOP WHILE S:NEXT:C$=C$+A$:END SUB
'That it folks!
--- Maximus 2.01wb
* Origin: Rabbit and Snake's BBS - Richardson, Texas (1:124/6108)
════════════════════════════════════════════════════════════════════════════════
Area: QuickBasic
Msg: #9492
Date: 03-16-93 22:05 (Public)
From: EARL MONTGOMERY
To: ALL
Subject: Loader program for the VG
────────────────────────────────────────────────────────────────────────────────
SCREEN 0: CLS
DEFINT A-Z
INPUT "File Name to load "; N$
SCREEN 13
OUT &H3C8, 0
FOR X = 0 TO 767
OUT &H3C9, 0
NEXT
DEF SEG = &HA000
BLOAD N$, 0
DEF SEG = &HA000 + 4000
OUT &H3C8, 0
FOR X = 0 TO 767
P = PEEK(X)
OUT &H3C9, P
NEXT
999 GOTO 999
--- Maximus 2.01wb
* Origin: Rabbit and Snake's BBS - Richardson, Texas (1:124/6108)
════════════════════════════════════════════════════════════════════════════════
Area: QuickBasic
Msg: #10531
Date: 03-17-93 16:38 (Public)
From: EARL MONTGOMERY
To: ALL
Subject: ELIMDUPE part 1 of 4 part
────────────────────────────────────────────────────────────────────────────────
'This program finds duplicates in the selected directories and
'gives you the oppurtunity to delete. It can also work on just
'one directory and allow you to delete files within that
'directory. I think it is pretty neat. Try it out.
'$INCLUDE: 'qb.bi'
DEFINT A-Z
DIM f1.nam$(500) 'Make as large as you need
DIM f2.nam$(500)
DIM f1.name$(500)
DIM f2.name$(500)
drive$ = "C:\"
ON ERROR GOTO fatalerror
KEY(10) ON
ON KEY(10) GOSUB exitroutine
DIM inregs AS regtypex, outregs AS regtypex
REM Saving the current directory
tempdir$ = STRING$(64, " ")
inregs.es = -1
inregs.ax = &H4700
inregs.dx = 0
inregs.ds = VARSEG(tempdir$)
inregs.si = SADD(tempdir$)
CALL interruptx(&H21, inregs, outregs)
tempdir$ = LEFT$(tempdir$, INSTR(tempdir$, CHR$(0)) - 1)
restart:
CLS
DEF SEG = &HB800
COLOR 14
POKE 0, 201
FOR x = 2 TO 158 STEP 2: POKE x, 205: NEXT
POKE 158, 187
FOR x = 160 TO 3880 STEP 160: POKE x, 186: NEXT
POKE 3840, 200
FOR x = 3842 TO 4000 STEP 2: POKE x, 205: NEXT
FOR x = 3998 TO 160 STEP -160: POKE x, 186: NEXT
POKE 3998, 188
DEF SEG
firstinput:
LOCATE 2, 30: PRINT "Eliminate Dupes"
LOCATE 3, 28: PRINT "By Earl Montgomery"
LOCATE 4, 20: PRINT "Written entirely in Quick Basic 4.5"
LOCATE 6, 15: PRINT "Press <ENTER> at any directory prompt for C:\"
LOCATE 10, 4: PRINT STRING$(40, " ")
LOCATE 11, 4: PRINT STRING$(40, " ")
LOCATE 10, 4: INPUT "Name of first directory"; n1$
n1$ = UCASE$(n1$)
path$ = drive$ + n1$ + CHR$(0)
REM changing directories
inregs.es = -1
inregs.ax = &H3B00
inregs.ds = VARSEG(path$)
inregs.dx = SADD(path$)
CALL interruptx(&H21, inregs, outregs)
IF outregs.ax = 3 THEN GOSUB invaliddirectory1: GOTO firstinput
GOSUB begin
secondinput:
LOCATE 10, 4: PRINT STRING$(40, " ")
LOCATE 11, 4: PRINT STRING$(40, " ")
LOCATE 10, 4: INPUT "Name of second directory"; n2$
n2$ = UCASE$(n2$)
' >>>>>>> Continued on next message >>>>>>>
--- Maximus 2.01wb
* Origin: Rabbit and Snake's BBS - Richardson, Texas (1:124/6108)
════════════════════════════════════════════════════════════════════════════════
Area: QuickBasic
Msg: #10532
Date: 03-17-93 16:41 (Public)
From: EARL MONTGOMERY
To: ALL
Subject: ELIMDUPE part 2 of 4 part
────────────────────────────────────────────────────────────────────────────────
Msg#: 2 >>>>>> Continued from last message: ELIMDUPE.BAS >>>>>>>
path$ = drive$ + n2$ + CHR$(0)
inregs.es = -1
inregs.ax = &H3B00
inregs.ds = VARSEG(path$)
inregs.dx = SADD(path$)
CALL interruptx(&H21, inregs, outregs)
IF outregs.ax = 3 THEN GOSUB invaliddirectory2: GOTO secondinput
GOSUB lookfordupes
begin:
de1 = 0
filespec$ = "*.*" + CHR$(0)
inregs.ax = &H2F00
CALL interruptx(&H21, inregs, outregs)
data.seg = outregs.es
data.off = outregs.bx
inregs.ax = &H4E00
inregs.dx = SADD(filespec$)
inregs.ds = -1
CALL interruptx(&H21, inregs, outregs)
cy = outregs.flags AND 1
IF cy = 0 THEN
END IF
WHILE cy = 0
DEF SEG = data.seg
f1.name$ = ""
i = data.off + 30
WHILE PEEK(i) <> 0
f1.name$ = f1.name$ + CHR$(PEEK(i))
i = i + 1
WEND
DEF SEG
de1 = de1 + 1
f1.nam$(de1) = f1.name$
inregs.ax = &H4F00
CALL interruptx(&H21, inregs, outregs)
cy = outregs.flags AND 1
WEND
IF i = 0 THEN
END IF
RETURN
lookfordupes:
de2 = 0
filespec$ = "*.*" + CHR$(0)
inregs.ax = &H2F00
CALL interruptx(&H21, inregs, outregs)
data.seg = outregs.es
data.off = outregs.bx
inregs.ax = &H4E00
inregs.dx = SADD(filespec$)
inregs.ds = -1
CALL interruptx(&H21, inregs, outregs)
cy = outregs.flags AND 1
IF cy = 0 THEN
END IF
WHILE cy = 0
DEF SEG = data.seg
f2.name$ = ""
i = data.off + 30
WHILE PEEK(i) <> 0
f2.name$ = f2.name$ + CHR$(PEEK(i))
i = i + 1
' >>>>>>> Continued on next message >>>>>>>
--- Maximus 2.01wb
* Origin: Rabbit and Snake's BBS - Richardson, Texas (1:124/6108)
════════════════════════════════════════════════════════════════════════════════
Area: QuickBasic
Msg: #10533
Date: 03-17-93 16:43 (Public)
From: EARL MONTGOMERY
To: ALL
Subject: ELIMDUPE part 3 of 4
────────────────────────────────────────────────────────────────────────────────
'Msg#: 3 >>>>>> Continued from last message: ELIMDUPE.BAS >>>>>>>
WEND
DEF SEG
de2 = de2 + 1
f2.nam$(de2) = f2.name$
inregs.ax = &H4F00
CALL interruptx(&H21, inregs, outregs)
cy = outregs.flags AND 1
WEND
IF i = 0 THEN
END IF
IF de1 > de2 THEN endofloop = de1: ELSE endofloop = de2
FOR x = 1 TO endofloop
FOR Y = 1 TO endofloop
IF f1.nam$(x) = f2.nam$(Y) THEN GOSUB duplicatefound
NEXT: NEXT
GOTO exitorcontinue
delete:
tryagain:
LOCATE 10, 4: PRINT STRING$(40, " ")
LOCATE 11, 4: PRINT STRING$(40, " ")
LOCATE 12, 4: PRINT STRING$(40, " ")
LOCATE 10, 4: PRINT "(1) "; n1$; : PRINT " (2) " + n2$
LOCATE 11, 4: PRINT "Duplicate File Name "; : PRINT f1.nam$(x)
LOCATE 12, 4: INPUT "From which directory (1 or 2)"; dn
IF dn = 1 THEN path$ = drive$ + n1$ + CHR$(0)
IF dn = 2 THEN path$ = drive$ + n2$ + CHR$(0)
IF dn <> 1 AND dn <> 2 THEN BEEP: GOTO tryagain
inregs.es = -1
inregs.ax = &H3B00
inregs.ds = VARSEG(path$)
inregs.dx = SADD(path$)
CALL interruptx(&H21, inregs, outregs)
KILL temp$
RETURN
fatalerror:
BEEP: CLS
PRINT "Error is code "; : PRINT ERR
PRINT "Fatal error returning to DOS"
SLEEP (2)
path$ = drive$ + tempdir$ + CHR$(0)
inregs.es = -1
inregs.ax = &H3B00
inregs.ds = VARSEG(path$)
inregs.dx = SADD(path$)
CALL interruptx(&H21, inregs, outregs)
CLS : SCREEN 0: SYSTEM
duplicatefound:
LOCATE 10, 4: PRINT STRING$(40, " ")
LOCATE 11, 4: PRINT STRING$(40, " ")
LOCATE 12, 4: PRINT STRING$(40, " ")
IF n1$ = "" THEN LOCATE 10, 4: PRINT "C:\" ELSE LOCATE 10, 4: PRINT n1$;
IF n2$ = "" THEN LOCATE 10, 20: PRINT "C:\" ELSE LOCATE 10, 20: PRINT n2$
LOCATE 11, 4: PRINT f1.nam$(x); : LOCATE 11, 20: PRINT f2.nam$(Y)
temp$ = f1.nam$(x)
LOCATE 12, 4: INPUT "Delete one of these files"; q$
q$ = UCASE$(q$): IF q$ = "Y" THEN GOTO delete: ELSE RETURN
exitorcontinue:
CLS
PRINT "No duplicates found or all duplicates have been processed."
INPUT "Do you wish to check other directories"; q$
q$ = UCASE$(q$)
' >>>>>>> Continued on next message >>>>>>>
--- Maximus 2.01wb
* Origin: Rabbit and Snake's BBS - Richardson, Texas (1:124/6108)
════════════════════════════════════════════════════════════════════════════════
Area: QuickBasic
Msg: #10534
Date: 03-17-93 16:45 (Public)
From: EARL MONTGOMERY
To: ALL
Subject: ELIMDUPE final part of 4
────────────────────────────────────────────────────────────────────────────────
' Part 4 of 4 parts: ELIMDUPE.BAS >>>>>>>
IF q$ = "Y" THEN CLS : GOTO prepareforrestart
IF q$ = "N" THEN GOTO exitroutine
GOTO exitorcontinue
exitroutine:
path$ = drive$ + tempdir$ + CHR$(0)
inregs.es = -1
inregs.ax = &H3B00
inregs.ds = VARSEG(path$)
inregs.dx = SADD(path$)
CALL interruptx(&H21, inregs, outregs)
CLS : SCREEN 0: SYSTEM
prepareforrestart:
FOR x = 0 TO 500
f1.nam$(x) = ""
f2.nam$(x) = ""
f1.name$(x) = ""
f2.name$(x) = ""
NEXT
n1$ = ""
m2$ = ""
de1 = 0: de2 = 0
path$ = ""
temp$ = ""
GOTO restart
invaliddirectory1:
LOCATE 11, 4
PRINT "Invalid Directory"
SLEEP (1)
RETURN
invaliddirectory2:
LOCATE 11, 4
PRINT "Invalid Directory"
SLEEP (1)
RETURN
' Msg polishing/splitting was done by MSGSPLIT 1.0, a Victor Yiu creation.
--- Maximus 2.01wb
* Origin: Rabbit and Snake's BBS - Richardson, Texas (1:124/6108)
════════════════════════════════════════════════════════════════════════════════
Area: QuickBasic
Msg: #10535
Date: 03-17-93 16:47 (Public)
From: EARL MONTGOMERY
To: ALL
Subject: Docs for ELIMDUPE.BAS
────────────────────────────────────────────────────────────────────────────────
If you program alot as I do, at the end of the day you have probably
created quite a few duplicate files. And after several days you
really have a mess on your hands. For example I have a seperate
QB source file directory (QBSOURCE). And I am constantly moving
files back and forth between QBSOURCE and QB45. Well this is where
ELIMDUPE comes in handy. It will delete these files in a hurry!
I prefer to use utility programs written in a language I understand,
provided I have the source code - which you do! I prefer this
because if I locate a bug I can fix it. And if I decide to add a
few new features I can do that too.
Comments: The program is so easy to use this DOC file really isn't
necessary. However there are a couple of things you need to know.
#1. You can select the root directory from your hard drive by
pressing <ENTER> at any directory prompt.
#2. When prompted to decide whether or not to delete a file
pressing <ENTER> is the same as "N" and takes you to the
next duplicate.
#3. You can also use this program to delete files in only one
directory. To do this just enter the same directory name
for both selections (directory #1 and directory #2).
If you find any bugs please let me know! Especially if you have
fixed them! <smile>.
Credits: Thanks to Tim Fitzgerald, Dick Dennison and Mike Herbert
for their help with the interrupts.
Special thanks to Tim Berneman as I hacked some of his
interrupt code from BDIR.BAS
Enjoy Earl
--- Maximus 2.01wb
* Origin: Rabbit and Snake's BBS - Richardson, Texas (1:124/6108)