BBS: Inland Empire Archive Date: 02-28-93 (21:27) Number: 67 From: VICTOR YIU Refer#: NONE To: ALL Recvd: NO Subj: SpaceOut 1.0 ---> 1/3 Conf: (2) Quik_Bas
'Hello, All!
'
' After looking at Quinn Tyler Jackson's QOMPRESS, I felt that a faster,
'and tighter compressor for text could be written... and guess what...
'here comes this program!
'
' Part one of SPACEOUT.BAS...
'________O_/________________________| SNIP |______________________\_O_______
' O \ | HERE | / O
' =============================================
' SpaceOut v1.0 þ by Victor Yiu þ Feb. 26, 1993
' =============================================
' þ QBS = YES!
'
' This is a much better compressor of plain text than
' Quinn Tyler Jackson's QOMPRESS, although it does strip
' up characters ASCII >128. Characters like that are
' almost illegal to post in echos anyway, so it really
' doesn't matter.
'
' What is different is that this compressor is FAST
' in just QB only code. It is optimized TO THE MAX!
' With direct string manipulation (no more MID$) and
' block transfers, it is the fastest text compression
' code I have seen. Even faster compiled!
'
' I have done some benchmarking... and here are the
' results:
'
' All tests run compiled on a 486/34. Input file:
' TELIX.DOC (documentation file for Telix 3.21) (215K)
' +--------------------------+--------------------------+
' | QOMPRESS | SPACEOUT |
' +--------------------------+--------------------------+
' | Saved 28956 bytes | Saved 42389 bytes |
' | Time required: 27.6 secs.| Time required: .38 secs. |
' +--------------------------+--------------------------+
'
' That's right, folks -- SPACEOUT is 75 times faster --
' and it compresses text 46% better. ;-) Sorry, Quinn...
' no bashing intended... would this be helpful to
' QBCIMR? It is a small, yet powerful and fast routine
' that can be applied easily... You can run vy.Encode
' for every message (I'm glad they are <16K). Average
' compression savings are around 20%.
'
' Well, granted, it isn't going to compress it as well
' as PKZIP or ARJ, but it's just a beginning. It's in
' 100% QB and it's fast.
'
' Warning: DO NOT BREAK OUT WHEN IT IS COMPRESSING. The
' data you are compressing will be corrupted.
DECLARE FUNCTION vy.Decode% (Text$)
DECLARE FUNCTION vy.Encode% (Text$)
DEFINT A-Z
CONST True = -1, False = 0
PRINT
PRINT "SpaceOut v1.0 þ by Victor Yiu þ Public Domain"
PRINT STRING$(45, "~")
PRINT
F$ = COMMAND$
IF LEN(F$) = 0 THEN INPUT "Filename"; F$
OPEN F$ FOR BINARY AS #1
InL& = LOF(1)
OutL& = 0
PRINT
PRINT "Sawing <G>...";
T! = TIMER
DO
SELECT CASE InL& - SEEK(1) + 1
CASE IS > 8192
Block$ = SPACE$(8192)
CASE IS <= 0
EXIT DO
CASE ELSE
Block$ = SPACE$(InL& - SEEK(1) + 1)
END SELECT
GET #1, , Block$
Ok = vy.Encode(Block$)
IF NOT Ok THEN EXIT DO
OutL& = OutL& + LEN(Block$)
LOOP
CLOSE
'Continued on next message...
--- Blue Wave/RA v2.10 [NR]
* Origin: Hard Disc Cafe / Houston Texas / (713) 589-2690
/ Node -*N (1:106/30.0)

Books at Amazon:
Back to BASIC: The History, Corruption, and Future of the Language
Hackers: Heroes of the Computer Revolution (including Tiny BASIC)
Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution
The Advent of the Algorithm: The Idea that Rules the World
Moths in the Machine: The Power and Perils of Programming
Mastering Visual Basic .NET