' +-------------------------------------------------------------------+ ' | | ' | - C C . B a s - | ' | | ' | | ' | Public Domain - FreeWare | ' +-------------------------------------------------------------------+ ' +-------------------------------------------------------------------+ ' | CC.Bas and CC.Exe were written by Don Smith on 02/01/2006. The | ' | CC Program is pronounced "See-See", which implies that the usar | ' | is to employ the CC Program as a Text file browser or viewer. | ' | CC.Bas and CC.Exe are Public Domain and FreeWare. | ' +-------------------------------------------------------------------+ ' +-------------------------------------------------------------------+ ' | - ABOUT THE AUTHOR - | ' +-------------------------------------------------------------------+ ' | | ' |Hello. My name is Don Smith and I am a retired thiry-year teacher | ' |of Math/History/Spanish residing in Orange County, California. I am| ' |also a former 6-year Sergeant of Marines.Who-Rah! On certain forums| ' |I am known as MarineDon. My email is: smithdonb@earthlink.net | ' | | ' +-------------------------------------------------------------------+ ' +-------------------------------------------------------------------+ ' | - COPYING AND DISTIBUTING - | ' +-------------------------------------------------------------------+ ' | Since this code is public domain and freeware, anyone may freely | ' | copy and distribute it. If you use the QuickBasic code in one of | ' | your own programs, you do not have to cite my name as the author, | ' | and you may even change its name. | ' +-------------------------------------------------------------------+ ' +-------------------------------------------------------------------+ ' | Compiling: | ' | --------- | ' | BC : CC | ' | LINK : CC | ' | LIB : Pro Pdq Important Note: Requires Pro.Lib and Pdq.Lib | ' | -------------- | ' +-------------------------------------------------------------------+ ' | | ' | +--------------------+ | ' | | ACKNOWLEDGEMENTS | | ' | +--------------------+ | ' | A great assist in writing and compiling CC.BAS are two toolboxes | ' | originally from Crescent Software. They are: Pro.Lib and PDQ.Lib. | ' | Crescent Software was sold to Progress Software. The original | ' | owner and programmer of Crescent Software, Ethen Winer, took | ' | back the MS-DOS toolboxes so that they still would be available | ' | to MS-DOS programmers. He now operates Full Moon Software. These | ' | two toolboxes have hundreds of routines. Using their included | ' | libraries instead of BRUN45.Lib or BCOM45.Lib and utilizing | ' | their assembly written routines, makes for an extremely tight, | ' | executable program very close to the tiny size and speed of an | ' | assembly language program. Another toolbox, the QuickScreen | ' | program, Qscr.Exe, which makes short work of converting a "BSaved"| ' | (.BSV) file into a linkable .OBJ file. | ' | | ' | Ethan Winer's internet site: | ' | --------------------------- | ' | http://www.ehtanwiner.com | ' | | ' | Ethan Winer's Mailing Address: | ' | ----------------------------- | ' | FULL MOON SOFTWARE | ' | 34 Cedar Vale Drive | ' | New Milford, CT 06776 | ' | | ' | (Voice) 860-350-8188 | ' | (Fax) 860-350-6130 | ' | (Email) ethan@ethanwiner.com | ' +-------------------------------------------------------------------+ DEFINT A-Z '---------------------------------- DECLARE SUB FileView (FileName$, Ky, Action, FVI AS ANY, SEG Array) DECLARE SUB AMenu (BYVAL Address, Start, Count, ScanCode, FileColr, HiLiteColr, Rows, Columns, Spacing, Row, Column) '---------------------------------- DECLARE FUNCTION DOSError% () DECLARE FUNCTION Exist% (FileName$) DECLARE FUNCTION FCount% (FileSpec$) DECLARE FUNCTION FileSize& (FileName$) DECLARE FUNCTION LineCount% (FileName$, Buffer$) DECLARE FUNCTION DOSError% () '---------------------------------- ascii.files: All$ = COMMAND$ FOR xyz% = 1 TO LEN(All$) check$ = MID$(All$, xyz%, 1) IF check$ = "*" THEN NotJustOne% = 1 EXIT FOR END IF NEXT IF NotJustOne% = 0 THEN There% = Exist%(All$) IF There% = 0 THEN GOTO dos.error FileName$ = All$ GOSUB showoff COLOR 7, 0: CLS : LOCATE 1, 1, 1, 6, 7: END END IF IF All$ = "" THEN GOTO dos.error CountAll% = FCount%(All$) IF CountAll% = 1 THEN FileName$ = All$ GOSUB showoff COLOR 7, 0: CLS : LOCATE 1, 1, 1, 6, 7: END END IF REDIM ReadArray$(CountAll%) ReadArray$(0) = All$ FOR ReadItAll = 1 TO CountAll% ReadArray$(ReadItAll) = SPACE$(12) NEXT CALL ReadFile(BYVAL VARPTR(ReadArray$(0))) dos.error: IF DOSError% = -1 THEN COLOR 15, 0: CLS LOCATE 3, 10, 0: CALL MQPrint(" <<< Error >>>", 12) LOCATE 4, 10, 0: CALL MQPrint("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿", 15) LOCATE 5, 10, 0: CALL MQPrint("³ Either the file could not be found, a filename was not ³", 15) LOCATE 6, 10, 0: CALL MQPrint("³ given, or an incorrect parameter was entered. Please ³", 15) LOCATE 7, 10, 0: CALL MQPrint("³ read the examples below: ³", 15) LOCATE 8, 10, 0: CALL MQPrint("ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´", 15) LOCATE 9, 10, 0: CALL MQPrint("³ An example of a single file Ä CC FileName.TXT ³", 15) LOCATE 10, 10, 0: CALL MQPrint("³ An example of a group of files Ä CC *.TXT ³", 15) LOCATE 11, 10, 0: CALL MQPrint("ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´", 15) LOCATE 12, 10, 0: CALL MQPrint("³ Public Domain FreeWare progam by Don Smith, a retired ³", 15) LOCATE 13, 10, 0: CALL MQPrint("³ math/history teacher from Orange County, CA., U.S.A. ³", 15) LOCATE 14, 10, 0: CALL MQPrint("³ ³", 15) LOCATE 15, 10, 0: CALL MQPrint("³ Today's Date : 03/28/2002 ³", 15) LOCATE 16, 10, 0: CALL MQPrint("³ EMail : smithdonb@earthlink.net ³", 15) LOCATE 17, 10, 0: CALL MQPrint("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ", 15) LOCATE 18, 27, 0: CALL MQPrint("Press Any Key To Continue", 14) DO: LOOP WHILE INKEY$ = "" COLOR 7, 0: CLS : LOCATE 1, 1, 1, 6, 7: END END IF CALL SortStr(BYVAL VARPTR(ReadArray$(1)), CountAll%, 0) COLOR 15, 1: LOCATE , , 0: CLS CALL PaintBox0(7, 12, 20, 71, 8) CALL ClearScr0(6, 10, 19, 69, 112) CALL Box0(6, 11, 19, 68, 1, 112) InfoMessage$ = "Press To View A File:" Line$ = CHR$(195) + STRING$(56, 196) + CHR$(180) LOCATE 7, 25, 0: CALL MQPrint(InfoMessage$, 112) LOCATE 8, 11, 0: CALL MQPrint(Line$, 112) LOCATE 17, 11, 0: CALL MQPrint(Line$, 112) LOCATE 18, 30, 0: CALL MQPrint("Press To Exit.", 112) DO CALL CursorOff CALL AMenu(VARPTR(ReadArray$(1)), 1, CountAll, ScanCode, 112, 15, 8, 4, 2, 9, 13) CALL CursorOff SELECT CASE ScanCode CASE 27 COLOR 7, 0: CLS : LOCATE 1, 1, 1, 6, 7: END CASE 13 GOSUB showoff ScanCode = 3 GOTO ascii.files CASE ELSE ScanCode = 3 END SELECT LOOP showoff: IF NotJustOne% <> 0 THEN FileName$ = ReadArray$(CountAll%) END IF TYPE FVInfo Colr AS INTEGER ULRow AS INTEGER ULCol AS INTEGER LRRow AS INTEGER LRCol AS INTEGER HorizOffset AS INTEGER LoPtr AS INTEGER FileHandle AS INTEGER EndOfFile AS INTEGER LineNumber AS LONG TabStop AS INTEGER FileSeek AS LONG FileOffset AS LONG END TYPE Top$ = STRING$(80, 255) 'Top1$ = " [Viewing File] " ' 4 1 3 4 5 7 ' 9 7 7 9 2 Top1$ = "[ ]" Top2$ = "Viewing File" Top3$ = "[ ]" Top4$ = "Top Line" Top5$ = "[ ]" Top6$ = "Top Line" Bot$ = STRING$(80, 255) Bot1$ = " [Quit] Esc [Move] " + CHR$(27) + " " + CHR$(24) + " " + CHR$(25) + " " + CHR$(26) + " PgUp PgDn Home End Tab Shift+Tab" ' 1 2 2 ' 4 1 9 Bot2$ = "[ ]" Bot3$ = "Quit" Bot4$ = "Esc" Bot5$ = "[ ]" Bot6$ = "Move" LOCATE 1, 1, 0: CALL MQPrint(Top$, 112) LOCATE 1, 4, 0: CALL MQPrint(Top1$, 112) LOCATE 1, 5, 0: CALL MQPrint(Top2$, 112) LOCATE 1, 19, 0: CALL MQPrint(FileName$, 112) LOCATE 1, 54, 0: CALL MQPrint(Top3$, 112) LOCATE 1, 55, 0: CALL MQPrint(Top4$, 112) 'LOCATE 1, 59, 0: CALL MQPrint(Top5$, 112) 'LOCATE 1, 60, 0: CALL MQPrint(Top6$, 112) 'LOCATE 1, 72, 0: CALL MQPrint(LnCount$, 112) CALL ClearScr0(2, 1, 24, 80, 0) LOCATE 25, 1, 0: CALL MQPrint(Bot$, 112) LOCATE 25, 1, 0: CALL MQPrint(Bot1$, 112) LOCATE 25, 5, 0: CALL MQPrint(Bot2$, 112) LOCATE 25, 6, 0: CALL MQPrint(Bot3$, 112) LOCATE 25, 13, 0: CALL MQPrint(Bot4$, 112) LOCATE 25, 20, 0: CALL MQPrint(Bot5$, 112) LOCATE 25, 21, 0: CALL MQPrint(Bot6$, 112) '----------------------------------------------------------------------- REDIM Array(1 TO 16384) 'set up the MANDATORY 32K buffer REDIM FVI(1) AS FVInfo '----------------------------------------------------------------------- FVI(1).Colr = 31 FVI(1).ULRow = 2 'window 1 FVI(1).ULCol = 1 FVI(1).LRRow = 24 FVI(1).LRCol = 80 FVI(1).TabStop = 8 Action = 1 File = 1 DO CALL CursorOff FileView FileName$, Ky, Action, FVI(1), SEG Array(1) CALL CursorOff TopLineNum$ = STR$(FVI(1).LineNumber) + " " Neg$ = LEFT$(TopLineNum$, 1) IF Neg$ = "-" THEN LenTopLineNum = LEN(TopLineNum$) - 1 TopLineNum$ = RIGHT$(TopLineNum$, LenTopLineNum) EndMessage$ = STRING$(34, "-") + "End Of File" + STRING$(35, "-") IF Ky = -80 OR Ky = -81 THEN REDIM BottArray%(100) CALL ScrnSave0(25, 1, 25, 80, SEG BottArray%(1)) CALL QPSound(150, 2) LOCATE 25, 1, 0 CALL MQPrint(EndMessage$, 79) CALL Pause(5) CALL ScrnRest0(25, 1, 25, 80, SEG BottArray%(1)) ERASE BottArray% END IF ELSE LOCATE 1, 65, 0, 0, 0: CALL MQPrint(TopLineNum$, 112) END IF IF Ky = 9 THEN 'tab IF Both THEN FVI(1).HorizOffset = FVI(1).HorizOffset + 8 FVI(2).HorizOffset = FVI(2).HorizOffset + 8 ELSE FVI(File).HorizOffset = FVI(File).HorizOffset + 8 END IF Action = 2 END IF IF Ky = -15 THEN 'shift-tab IF Both THEN FVI(1).HorizOffset = FVI(1).HorizOffset - 8 IF FVI(1).HorizOffset < 0 THEN FVI(1).HorizOffset = 0 FVI(2).HorizOffset = FVI(2).HorizOffset - 8 IF FVI(2).HorizOffset < 0 THEN FVI(2).HorizOffset = 0 ELSE FVI(File).HorizOffset = FVI(File).HorizOffset - 8 IF FVI(File).HorizOffset < 0 THEN FVI(File).HorizOffset = 0 END IF Action = 2 END IF IF Ky = 27 THEN Ky = 0: Action = 5 FileView FileName$, Ky, Action, FVI(1), SEG Array(1) ERASE Array RETURN END IF LOOP