home *** CD-ROM | disk | FTP | other *** search
/ C!T ROM 2 / ctrom_ii_b.zip / ctrom_ii_b / PROGRAM / BASIC / QBS_0103 / QBS103-C.DOC < prev    next >
Text File  |  1993-04-30  |  55KB  |  1,548 lines

  1. ════════════════════════════════════════════════════════════════════════════════
  2.  Area:    QuickBasic
  3.   Msg:    #12290
  4.  Date:    04-01-93 22:21 (Public)
  5.  From:    QUINN TYLER JACKSON
  6.  To:      ALL
  7.  Subject: Source massager
  8. ────────────────────────────────────────────────────────────────────────────────
  9.    ' This file massaged by STRUCT v1.0
  10.    ' STRUCT v1.0 BASIC FILE MASSAGER
  11.    ' Written by Quinn Tyler Jackson
  12.    '
  13.    ' This program massages BASIC files for visual ease of reading.
  14.    '
  15.    ' I wrote it so that files in this echo could be written this way:
  16.    '
  17.    ' FOR i = 1 TO 10
  18.    ' PRINT 10
  19.    ' SELECT CASE i
  20.    ' CASE 1
  21.    ' PRINT "One"
  22.    ' CASE 2
  23.    ' PRINT "Two"
  24.    ' DO
  25.    ' PTR = PTR + 1
  26.    ' PRINT ":)"
  27.    ' LOOP UNTIL Ptr = 10
  28.    ' CASE ELSE
  29.    ' PRINT "Else"
  30.    ' END SELECT
  31.    ' NEXT i
  32.    '
  33.    '
  34.    ' Files like this have less chance of wrap occuring, but they are hard
  35.    ' to read.  This program turns the above type of thing into this, so it
  36.    ' is easier to read:
  37.    '
  38.    ' FOR i = 1 TO 10
  39.    '   PRINT 10
  40.    '   SELECT CASE i
  41.    '   CASE 1
  42.    '       PRINT "One"
  43.    '   CASE 2
  44.    '       PRINT "Two"
  45.    '       DO
  46.    '           Ptr = Ptr + 1
  47.    '           PRINT ":)"
  48.    '       LOOP UNTIL Ptr = 10
  49.    '   CASE ELSE
  50.    '       PRINT "Else"
  51.    '   END SELECT
  52.    ' NEXT i
  53.    '
  54.  
  55.    DECLARE SUB BuildBox (Title$)
  56.  
  57.    DEFINT A-Z
  58.  
  59.    CONST LMARGIN = 3
  60.    CONST TABSIZE = 5
  61.    CONST TBLSIZE = 9
  62.  
  63.  
  64.  
  65.    DIM TabOver$(TBLSIZE)
  66.    DIM TabBack$(TBLSIZE)
  67.    DIM SHARED InFile, OutFile
  68.  
  69.    Ptr = 0
  70.  
  71.    INPUT InFile$, OutFile$
  72.    InFile = FREEFILE
  73.    OPEN InFile$ FOR INPUT AS InFile LEN = 1024
  74.    OutFile = FREEFILE
  75.    OPEN OutFile$ FOR OUTPUT AS OutFile LEN = 1024
  76.  
  77.    FOR i = 1 TO TBLSIZE
  78.         READ TabOver$(i), TabBack$(i)
  79.    NEXT i
  80.  
  81.    PRINT #OutFile, SPACE$(LMARGIN); "' This file massaged by STRUCT v1.0"
  82.  
  83.    DO UNTIL EOF(InFile)
  84.  
  85.         LINE INPUT #InFile, Buffer$
  86.         Buffer$ = RTRIM$(LTRIM$(Buffer$)) + " "
  87.  
  88.         IF LEFT$(Buffer$, 3) = "REM" THEN
  89.              MID$(Buffer$, 1, 3) = "'  "
  90.         END IF
  91.  
  92.         FOR i = 1 TO TBLSIZE
  93.              Temp$ = TabOver$(i)
  94.              IF LEFT$(Buffer$, LEN(Temp$) + 1) = Temp$ + " " THEN
  95.                   Flag = -1
  96.                   GOTO Jump
  97.              END IF
  98.         NEXT i
  99.  
  100.         FOR i = 1 TO TBLSIZE
  101.              Temp$ = TabBack$(i)
  102.              IF LEFT$(Buffer$, LEN(Temp$) + 1) = Temp$ + " " THEN
  103.                   Ptr = Ptr - 1
  104.                   IF Ptr < 0 THEN
  105.                        Ptr = 0
  106.                   END IF
  107.                   EXIT FOR
  108.              END IF
  109.         NEXT i
  110.  
  111.         SELECT CASE LEFT$(Buffer$, 4)
  112.         CASE "ELSE", "CASE"
  113.              Ptr = Ptr - 1
  114.              PRINT #OutFile, SPACE$(Ptr * TABSIZE + LMARGIN) + Buffer$
  115.              Ptr = Ptr + 1
  116.  
  117.              GOTO PastPrint
  118.         END SELECT
  119.  
  120.         Jump:
  121.         PRINT #OutFile, SPACE$(Ptr * TABSIZE + LMARGIN) + Buffer$
  122.  
  123.         PastPrint:
  124.         IF Flag THEN
  125.              Flag = 0
  126.              Ptr = Ptr + 1
  127.         END IF
  128.  
  129.    LOOP
  130.  
  131.    END
  132.  
  133.    DATA SELECT,END SELECT
  134.    DATA IF,END IF
  135.    DATA DO,LOOP
  136.    DATA WHILE,WEND
  137.    DATA FOR,NEXT
  138.    DATA SUB,END SUB
  139.    DATA FUNCTION,END FUNCTION
  140.    DATA STATIC SUB,END SUB
  141.    DATA STATIC FUNCTION,END FUNCTION
  142.  
  143.  
  144.  
  145. --- Maximus 2.01wb
  146.  * Origin: VKUG/VPCC QuickBasic Echo - Richmond, BC (1:153/151)
  147.  
  148.  
  149.  
  150. ════════════════════════════════════════════════════════════════════════════════
  151.  Area:    QuickBasic
  152.   Msg:    #12618
  153.  Date:    04-22-93 18:53 (Public) 
  154.  From:    MARTY DUPLISSEY          
  155.  To:      MIKE CLEMENS             
  156.  Subject: FILE TIME/DATES          
  157. ────────────────────────────────────────────────────────────────────────────────
  158. Blabbering as if I knew what I was talking about!
  159.  
  160. In a msg of <19 Apr 93>, Mike Clemens mumbled incoherently to All:
  161.  
  162.  MC>         does anyone have a routine to get the time and date of a file?
  163.  MC> if so, could you post it?  thanks.
  164.  
  165. Heres some code I captured off the echo a while back to do this.
  166. -----------------------------------cut-----------------------------
  167.  
  168. DECLARE SUB FileInfo (FSp$, Nm$, FSz&, Yr%, Mon%, Dy%, Hr%, Min%, Sec%, attr$)
  169.  
  170. '$INCLUDE: 'Qb.bi'
  171.  
  172. TYPE DTAdatatype
  173.    Unused AS STRING * 21
  174.    attr AS STRING * 1
  175.    Time AS INTEGER
  176.    Date AS INTEGER
  177.    FileSize AS LONG
  178.    FileName AS STRING * 13
  179. END TYPE
  180.  
  181.  
  182. REM Sample Usage of FileInfo Subprogram
  183.  
  184. DECLARE SUB FileInfo (FSp$, Nm$, FSz&, Yr%, Mon%, Dy%, Hr%, Min%, Sec%, attr$)
  185. CONST false = 0, true = NOT false, Move = 1, Normal = 2, ReadOnly = 4, Hidden 
  186. = 8, Archive = 16, EveryThing = 30, DelFileInt21h = &H4100, 
  187. MoveFilePointerInt21h = &H4200, SetDTAInt21h = &H1A00, GetDTAInt21h = &H2F00, 
  188. GetDiskFreeSpaceInt21h = &H3600
  189.  DO
  190.    PRINT "Enter FileSpec  (or [Enter] to end)"
  191.    INPUT FSp$
  192.    IF LEN(FSp$) = 0 THEN END
  193.    loopcount = 1
  194.    FSz& = 1
  195.    DO UNTIL FSz& = -1
  196.       CALL FileInfo(FSp$, Nm$, FSz&, Yr%, Mon%, Dy%, Hr%, Min%, Sec%, attr$)
  197.       PRINT Nm$, FSz&, LTRIM$(STR$(Mon%)); "-"; LTRIM$(STR$(Dy%)); "-";
  198.       PRINT LTRIM$(STR$(Yr%)), LTRIM$(STR$(Hr%)); ":"; LTRIM$(STR$(Min%)); 
  199. ":";
  200.       PRINT LTRIM$(STR$(Sec%)), attr$
  201.       loopcount = loopcount + 1
  202.       IF loopcount MOD 24 = 0 THEN DO WHILE INKEY$ = "": LOOP
  203.    LOOP
  204. LOOP
  205.  
  206. SUB FileInfo (FSp$, Nm$, FSz&, Yr%, Mon%, Dy%, Hr%, Min%, Sec%, attr$) STATIC
  207.  
  208.  IF times% = 0 THEN
  209.    DIM Regs AS RegTypeX
  210.    DIM DTA AS DTAdatatype
  211.  
  212.  
  213.    Regs.ds = VARSEG(DTA)
  214.    Regs.dx = VARPTR(DTA)
  215.    Regs.ax = &H1A00
  216.    CALL INTERRUPTX(&H21, Regs, Regs)
  217.    FSCopy$ = FSp$ + CHR$(0)
  218.    Regs.ds = VARSEG(FSCopy$)
  219.    Regs.dx = SADD(FSCopy$)
  220.    Regs.cx = &H16
  221.    Regs.ax = &H4E00
  222.    times% = 1
  223.  ELSE
  224.    Regs.ax = &H4F00
  225.  END IF
  226.    CALL INTERRUPTX(&H21, Regs, Regs)
  227.    IF (Regs.ax AND &HFF) <> 0 THEN
  228.       FSz& = -1
  229.       times% = 0
  230.       EXIT SUB
  231.    END IF
  232.    FSz& = DTA.FileSize
  233.    Yr% = (DTA.Date AND &H7FFF) \ 512 + 80
  234.    IF DTA.Date < 0 THEN Yr% = Yr% + 64
  235.    IF Yr% > 99 THEN Yr% = Yr% - 100
  236.    Mon% = ((DTA.Date AND &H7FFF) \ 32) AND &HF
  237.    Dy% = DTA.Date AND &H1F
  238.    Hr% = (DTA.Time AND &H7FFF) \ 2048
  239.    IF DTA.Time < 0 THEN Hr% = Hr% + 16
  240.    Min% = ((DTA.Time AND &H7FFF) \ 32) AND &H3F
  241.    Sec% = (DTA.Time AND &H1F) * 2
  242.    Nm$ = DTA.FileName
  243.    J% = INSTR(Nm$, CHR$(0))
  244.    Nm$ = LEFT$(Nm$, J% - 1)
  245.    attr$ = STRING$(6, 32)
  246.    IF (ASC(DTA.attr) AND &H20) <> 0 THEN MID$(attr$, 1, 1) = "A"
  247.    IF (ASC(DTA.attr) AND &H10) <> 0 THEN MID$(attr$, 2, 1) = "D"
  248.    IF (ASC(DTA.attr) AND &H2) <> 0 THEN MID$(attr$, 3, 1) = "H"
  249.    IF (ASC(DTA.attr) AND &H1) <> 0 THEN MID$(attr$, 4, 1) = "R"
  250.    IF (ASC(DTA.attr) AND &H4) <> 0 THEN MID$(attr$, 5, 1) = "S"
  251.    IF (ASC(DTA.attr) AND &H8) <> 0 THEN MID$(attr$, 6, 1) = "V"
  252. END SUB
  253. -----------------------------------------cut-------------------------------
  254. MARTY
  255.  
  256. --- GoldED 2.40
  257.  * Origin: World Link, Longview,TX.USA OS/2 (903-643-7607) (1:398/1)
  258.  
  259.  
  260.  
  261. ════════════════════════════════════════════════════════════════════════════════
  262.  Area:    QuickBasic
  263.   Msg:    #12619
  264.  Date:    04-22-93 19:17 (Public) 
  265.  From:    MARTY DUPLISSEY          
  266.  To:      ALL                      
  267.  Subject: Nushell.bas 1/5          
  268. ────────────────────────────────────────────────────────────────────────────────
  269. Blabbering as if I knew what I was talking about!
  270. Apparently everyone did not get my post of Nushell in binary format.
  271. Here is a Text version. It will return an errorlevel from a child process.
  272.  
  273. '________O_/________________________| SNIP |______________________\_O_______
  274. '        O \                        | HERE |                      / O
  275. 'This file created by PostIt! v5.1.
  276. '>>> Start of page 1.
  277.  
  278. '**********************************************************************
  279. '*                                  NS.BAS
  280. '**********************************************************************
  281. '*  This code is hereby donated to the public domain by Logan Ashby on
  282. '*  3/1/1992. Use, abuse, and enjoy freely.
  283. '**********************************************************************
  284. '$INCLUDE: 'QBX.BI' 'PDS 7.1  *Comment out the one you don't need *
  285. '$INCLUDE: 'QB.BI'  'QB 4.?
  286. DEFINT A-Z
  287.  
  288. TYPE ParmBlockType                  '| The parameter block structure for
  289.     EnvPtr      AS INTEGER          '|   the DOS EXEC interrupt
  290.     CmdLinePtr  AS LONG
  291.     FCB1Ptr     AS LONG
  292.     FCB2Ptr     AS LONG
  293. END TYPE
  294.  
  295. TYPE FCBType
  296.     FCBBlock AS STRING * 12
  297. END TYPE
  298.  
  299. TYPE DOSFindType                    '| The DTA structure for the DOS
  300.     Reserved    AS STRING * 21      '|  FindFirst/FindNext functions
  301.     DFileAttr   AS STRING * 1
  302.     DosTime     AS INTEGER
  303.     DosDate     AS INTEGER
  304.     FileSize    AS LONG
  305.     FileName    AS STRING * 13
  306. END TYPE
  307. CONST FALSE = 0
  308. CONST TRUE = NOT FALSE
  309.  
  310. DECLARE FUNCTION FixChildName$(CmdLine$)
  311. DECLARE FUNCTION NuShell% (CommandLine$)
  312. DECLARE SUB SearchCurDir(SFileName$, Found%)
  313. DECLARE SUB SearchPath(SFileName$, Found%)
  314.  
  315. '═══════════════════════════════ Main Module ══════════════════
  316. DIM SHARED Null$
  317. DIM SHARED CR$
  318.  
  319. Null$ = CHR$(0)
  320. CR$ = CHR$(13)
  321.  
  322.  
  323. CLine$ = COMMAND$
  324.  
  325. '╔═════════════════════════════════════════════════════════════════════╗
  326. '║  The following function call will run a child process and return the║
  327. '║  errorlevel it exited with.  If the errorlevel is negative, this
  328. '║ indicates that there was an error in the function, not the called
  329. 'program.
  330. '╚═════════════════════════════════════════════════════════════════════╝
  331.  
  332. ErrLevel% = NuShell%(Cline$)
  333.  
  334. SELECT CASE ErrLevel%
  335. CASE -1 :
  336.     PRINT "Invalid Interrupt Call Function Number"
  337.  
  338. CASE -2 :
  339.     PRINT "File Not Found"
  340.  
  341. CASE -5 :
  342.     PRINT "Access Denied"
  343.  
  344. CASE -6 :
  345.     PRINT "Insufficient Memory Available"
  346.  
  347. CASE -10    :
  348.     PRINT "Invalid Environment"
  349.  
  350. CASE -11    :
  351.     PRINT "Invalid Format"
  352.  
  353. CASE ELSE   :
  354.     PRINT "The ErrorLevel returned was"; ErrLevel%
  355.  
  356. '>>> Continued on page 2.
  357.  
  358.  
  359. --- GoldED 2.40
  360.  * Origin: World Link, Longview,TX.USA OS/2 (903-643-7607) (1:398/1)
  361.  
  362.  
  363.  
  364. ════════════════════════════════════════════════════════════════════════════════
  365.  Area:    QuickBasic
  366.   Msg:    #12620
  367.  Date:    04-22-93 19:16 (Public) 
  368.  From:    MARTY DUPLISSEY          
  369.  To:      ALL                      
  370.  Subject: Nushell.bas 2/5          
  371. ────────────────────────────────────────────────────────────────────────────────
  372. '>>> Start of page 2.
  373.  
  374. END SELECT
  375.  
  376.  
  377. END
  378.  
  379. '══════════════════════════════ FixChildName═════════════════════════
  380. FUNCTION FixChildName$(CmdLine$)
  381.  
  382. CmdLine$ = LTRIM$(RTRIM$(CmdLine$))     '| Get rid of any extra spaces
  383.  
  384. IF (LEN(CmdLine$) = 0) THEN             '| If passed a null command
  385. ' line,
  386.                                         '|   execute the command
  387. ' processor
  388.                                         '|   (go to a DOS prompt)
  389.     FixChildName$ = ENVIRON$("COMSPEC") + Null$
  390.     CmdLine$ = Null$ + CR$
  391.     EXIT FUNCTION
  392. END IF
  393.  
  394. SpacePos% = INSTR(CmdLine$, " ")        '| Find where Child program
  395. ' args start
  396. IF (SpacePos%) THEN                     '| Strip Child program name from
  397.                                         '|   its command line
  398.     ChildName$ = LEFT$(CmdLine$, SpacePos% - 1)
  399.     CmdLine$ = LTRIM$(MID$(CmdLine$, SpacePos%))
  400. ELSE
  401.     ChildName$ = CmdLine$
  402.     CmdLine$ = ""
  403. END IF
  404.  
  405. CALL SearchCurDir(ChildName$, Found%)   '| Is it in the current
  406. ' directory?
  407. IF (NOT Found%) THEN                    '| No, how 'bout on the path?
  408.     CALL SearchPath(ChildName$, Found%)
  409. END IF
  410.  
  411. IF (Found%) THEN                        '| We found it one place or the
  412. ' other.
  413.     IF (UCASE$(RIGHT$(ChildName$, 3)) = "BAT") THEN
  414.                                         '| Its a batch file we load
  415. ' COMMAND.COM
  416.                                         '|   to run it for us.
  417.         CmdLine$ = "/C " + ChildName$ + " " + CmdLine$
  418.         FixChildName$ = ENVIRON$("COMSPEC") + Null$
  419.     ELSE
  420.                                         '| Its a 'com' or 'exe' file.
  421.         FixChildName$ = ChildName$ + Null$
  422.     END IF
  423. ELSE
  424.     FixChildName$ = Null$               '| Couldn't find it.
  425.  
  426.     EXIT FUNCTION
  427. END IF
  428.  
  429. CmdLine$ = LTRIM$(RTRIM$(CmdLine$))     '| Strip off extra spaces
  430.                                         '| Fix the command line.
  431.                                         '| The first byte must be
  432. ' length of
  433.                                         '|   the command string, the
  434. ' last
  435.                                         '|   byte is a carriage return.
  436. CmdLine$ = CHR$(LEN(CmdLine$)) + CmdLine$ + CR$
  437.  
  438. END FUNCTION
  439.  
  440.  
  441. '═════════════════════════════════ NuShell════════════════════════
  442. FUNCTION NuShell% (CommandLine$)
  443.  
  444. DIM FCB1 AS FCBType
  445. DIM FCB2 AS FCBType
  446.  
  447. DIM ParmBlock AS ParmBlockType
  448. DIM ChildName AS STRING * 64
  449. DIM ChildCmdLine AS STRING * 64
  450. DIM RegXs AS RegTypeX
  451.  
  452. ParmBlock.EnvPtr = 0                    '| Initialize the parameter
  453. ' block
  454. FCB1.FCBBlock = Null$ + STRING$(11, " ")
  455. FCB2.FCBBlock = Null$ + STRING$(11, " ")
  456. ParmBlock.FCB1Ptr = (VARSEG(FCB1) * &H10000) + VARPTR(FCB1)
  457. ParmBlock.FCB2Ptr = (VARSEG(FCB2) * &H10000) + VARPTR(FCB2)
  458.  
  459. ChildName = FixChildName$(CommandLine$) '| Set up program to call
  460. IF (LEFT$(ChildName, 1) = Null$) THEN   '| Oops, we couldn't find the
  461. ' file
  462.     NuShell% = -2                       '|   to run.
  463.     EXIT FUNCTION
  464.  
  465. '>>> Continued on page 3.
  466.  
  467.  
  468. --- GoldED 2.40
  469.  * Origin: World Link, Longview,TX.USA OS/2 (903-643-7607) (1:398/1)
  470.  
  471.  
  472.  
  473. ════════════════════════════════════════════════════════════════════════════════
  474.  Area:    QuickBasic
  475.   Msg:    #12621
  476.  Date:    04-22-93 19:17 (Public) 
  477.  From:    MARTY DUPLISSEY          
  478.  To:      ALL                      
  479.  Subject: nushell.bas 3/5          
  480. ────────────────────────────────────────────────────────────────────────────────
  481. '>>> Start of page 3.
  482.  
  483. END IF
  484.                                         '| This is command line
  485. ' parameter set
  486. ChildCmdLine = CommandLine$             '|   for the child process
  487.  
  488.                                         '| See how much memory we have
  489. FMemLeft1& = SETMEM(0)                  '|   available on far heap.
  490.                                         '| De-allocate what memory we
  491. ' can
  492. FMemLeft2& = SETMEM(-(FMemLeft1& - &H100))
  493.  
  494. ParmBlock.CmdLinePtr = (VARSEG(ChildCmdLine) * &H10000) +_
  495.  VARPTR(ChildCmdLine)
  496.  
  497. RegXs.ax = &H4B00                       '| Set up for CALL InterruptX
  498. RegXs.bx = VARPTR(ParmBlock)
  499. RegXs.dx = VARPTR(ChildName)
  500. RegXs.ds = VARSEG(ChildName)
  501. RegXs.es = VARSEG(ParmBlock)
  502. CALL InterruptX(&H21, RegXs, RegXs)     '| Call DOS EXEC function
  503.  
  504. IF (RegXs.Flags AND 1) THEN             '| We errored out, get error
  505. ' code,
  506.     NuShell% = -(RegXs.ax)              '|   make it negative to avoid
  507. ' confusing
  508. END IF                                  '|   it with an errorlevel
  509. ' return
  510.  
  511. FMemLeft3& = SETMEM(FMemLeft1& - &H100)
  512.  
  513. RegXs.ax = &H4D00                       '| Call DOS Get Return Code
  514. ' function
  515. CALL InterruptX(&H21, RegXs, RegXs)
  516. NuShell% = RegXs.ax AND &HFF
  517.  
  518. END FUNCTION
  519.  
  520. '═══════════════════════════════ SearchCurDir══════════════════════
  521. SUB SearchCurDir(SFileName$, Found%)
  522.  
  523. DIM SRegXs AS RegTypeX
  524. DIM DOSFindBuff AS DOSFindType          '| DOS Findfirst buffer
  525. DIM FindFileBuff AS STRING * 64         '| Buffer to hold file path
  526. DIM TestExts$(3)
  527.  
  528. TestExts$(1) = ".COM"
  529. TestExts$(2) = ".EXE"
  530. TestExts$(3) = ".BAT"
  531. Found% = FALSE
  532. GotExt% = INSTR(SFileName$, ".")
  533.  
  534.  
  535. SRegXs.ax = &H2F00                      '| Get the old DTA address
  536. CALL INTERRUPTX(&H21, SRegXs, SRegXs)
  537.  
  538. OldDTASeg% = SRegXs.es                  '| Save it to restore later
  539. OldDTAOff% = SRegXs.bx
  540.  
  541. SRegXs.ax = &H1A00                      '| Set our filefind buffer as
  542. SRegXs.ds = VARSEG(DOSFindBuff)         '|   the new DTA
  543. SRegXs.dx = VARPTR(DOSFindBuff)
  544. CALL INTERRUPTX(&H21, SRegXs, SRegXs)
  545.  
  546. IF (GotExt%) THEN
  547.                                         '| Load our current filename
  548.     FindFileBuff = SFileName$ + Null$
  549.     SRegXs.ax = &H4E00                  '|   into the FileName buffer
  550.     SRegXs.cx = 0                       '| Attribute for 'normal' files
  551.     SRegXs.ds = VARSEG(FindFileBuff)
  552.     SRegXs.dx = VARPTR(FindFileBuff)
  553.                                         '| Call the DOS findfirst func.
  554.     CALL INTERRUPTX(&H21, SRegXs, SRegXs)
  555.     IF ((SRegXs.flags AND 1) <> 1) THEN
  556.                                         '| Found it, exit the loop
  557.         SFileName$ = SFileName$
  558.         Found% = TRUE
  559.     END IF
  560. ELSE
  561.     FOR i% = 1 TO 3
  562.                                             '| Load our current filename
  563.         FindFileBuff = SFileName$ + TestExts$(i%) + Null$
  564.         SRegXs.ax = &H4E00                  '|   into the FileName
  565. ' buffer
  566.         SRegXs.cx = 0                       '| Attribute for 'normal'
  567. ' files
  568.         SRegXs.ds = VARSEG(FindFileBuff)
  569.         SRegXs.dx = VARPTR(FindFileBuff)
  570.                                             '| Call the DOS findfirst
  571. ' func.
  572.         CALL INTERRUPTX(&H21, SRegXs, SRegXs)
  573.         IF ((SRegXs.flags AND 1) <> 1) THEN
  574.  
  575. '>>> Continued on page 4.
  576.  
  577. --- GoldED 2.40
  578.  * Origin: World Link, Longview,TX.USA OS/2 (903-643-7607) (1:398/1)
  579.  
  580.  
  581.  
  582. ════════════════════════════════════════════════════════════════════════════════
  583.  Area:    QuickBasic
  584.   Msg:    #12622
  585.  Date:    04-22-93 19:17 (Public) 
  586.  From:    MARTY DUPLISSEY          
  587.  To:      ALL                      
  588.  Subject: Nushell.bas 4/5          
  589. ────────────────────────────────────────────────────────────────────────────────
  590. '>>> Start of page 4.
  591.  
  592.                                             '| Found it, exit the loop
  593.             SFileName$ = SFileName$ + TestExts$(i%)
  594.             Found% = TRUE
  595.             EXIT FOR
  596.         END IF
  597.     NEXT i%
  598. END IF
  599.  
  600. SRegXs.ax = &H1A00                      '| Restore the original DTA
  601. SRegXs.ds = OldDTASeg%
  602. SRegXs.dx = OldDTAOff%
  603. CALL INTERRUPTX(&H21, SRegXs, SRegXs)
  604.  
  605. END SUB
  606.  
  607. '═══════════════════════════════ SearchPath════════════════════════════
  608. SUB SearchPath(SFileName$, Found%)
  609.  
  610. DIM SRegXs AS RegTypeX
  611. DIM DOSFindBuff AS DOSFindType          '| DOS Findfirst buffer
  612. DIM FindFileBuff AS STRING * 64         '| Buffer to hold file path
  613. DIM TestExts$(3)
  614.  
  615. TestExts$(1) = ".COM"
  616. TestExts$(2) = ".EXE"
  617. TestExts$(3) = ".BAT"
  618.  
  619. SRegXs.ax = &H2F00                      '| Get the old DTA address
  620. CALL INTERRUPTX(&H21, SRegXs, SRegXs)
  621.  
  622. OldDTASeg% = SRegXs.es                  '| Save it to restore later
  623. OldDTAOff% = SRegXs.bx
  624.  
  625. SRegXs.ax = &H1A00                      '| Set our filefind buffer as
  626. SRegXs.ds = VARSEG(DOSFindBuff)         '|   the new DTA
  627. SRegXs.dx = VARPTR(DOSFindBuff)
  628. CALL INTERRUPTX(&H21, SRegXs, SRegXs)
  629.  
  630. Path$ = ENVIRON$("PATH")
  631. PathIndex% = INSTR(Path$, "=") + 1
  632. Path$ = MID$(Path$, PathIndex%)
  633.  
  634. Found% = FALSE
  635. Done% = FALSE
  636.  
  637. GotExt% = INSTR(SFileName$, ".")
  638.  
  639. DO WHILE NOT Done%
  640.     PathIndex% = INSTR(Path$, ";")
  641.     IF (PathIndex%) THEN
  642.                                         '| Set search directory to next
  643.  
  644. ' dir. in
  645.                                         '|   path
  646.         SrchPath$ = LEFT$(Path$, PathIndex% - 1)
  647.                                         '| If we're not past the end,
  648. ' cut this
  649.                                         '|   directory off path for
  650. ' next pass
  651.         IF (LEN(Path$) >= PathIndex%) THEN
  652.             Path$ = MID$(Path$, PathIndex% + 1)
  653.         ELSE
  654.             Path$ = ""                  '| All done, no more dirs to
  655. ' search
  656.             Done% = TRUE
  657.         END IF
  658.         IF (RIGHT$(SrchPath$, 1) <> "\") THEN
  659.                                         '| Add a trailing '\' if needed
  660.             SrchPath$ = SrchPath$ + "\"
  661.         END IF
  662.         IF (GotExt%) THEN
  663.             FindFileBuff = SrchPath$ + SFileName$ + Null$
  664.             SRegXs.ax = &H4E00
  665.             SRegXs.cx = 0               '| Attribute for 'normal' files
  666.             SRegXs.ds = VARSEG(FindFileBuff)
  667.             SRegXs.dx = VARPTR(FindFileBuff)
  668.                                         '| Call the DOS findfirst func.
  669.             CALL INTERRUPTX(&H21, SRegXs, SRegXs)
  670.             IF ((SRegXs.flags AND 1) <> 1) THEN
  671.                                         '| Found it, exit DO LOOP
  672.                 SFileName$ = SrchPath$ + SFileName$
  673.                 Found% = TRUE
  674.                 Done% = TRUE
  675.             END IF
  676.         ELSE
  677.             FOR i% = 1 TO 3
  678.                                             '| Load our current filename
  679.                                             '|   into the FileName
  680. ' buffer
  681.                 FindFileBuff = SrchPath$ + SFileName$ + TestExts$(i%) +_
  682.  Null$
  683.  
  684. '>>> Continued on page 5.
  685.  
  686. --- GoldED 2.40
  687.  * Origin: World Link, Longview,TX.USA OS/2 (903-643-7607) (1:398/1)
  688.  
  689.  
  690.  
  691. ════════════════════════════════════════════════════════════════════════════════
  692.  Area:    QuickBasic
  693.   Msg:    #12623
  694.  Date:    04-22-93 19:09 (Public) 
  695.  From:    MARTY DUPLISSEY          
  696.  To:      ALL                      
  697.  Subject: Nushell.bas 5/5          
  698. ────────────────────────────────────────────────────────────────────────────────
  699. '>>> Start of page 5.
  700.  
  701.                 SRegXs.ax = &H4E00
  702.                 SRegXs.cx = 0               '| Attribute for 'normal'
  703. ' files
  704.                 SRegXs.ds = VARSEG(FindFileBuff)
  705.                 SRegXs.dx = VARPTR(FindFileBuff)
  706.                                             '| Call the DOS findfirst
  707. ' func.
  708.                 CALL INTERRUPTX(&H21, SRegXs, SRegXs)
  709.                 IF ((SRegXs.flags AND 1) <> 1) THEN
  710.                                             '| Found it, exit both loops
  711.                     SFileName$ = SrchPath$ + SFileName$ + TestExts$(i%)
  712.                     Found% = TRUE
  713.                     Done% = TRUE
  714.                     EXIT FOR
  715.                 END IF
  716.             NEXT i%
  717.         END IF
  718.     ELSE                                '| Check the last directory, if
  719. ' there
  720.         IF (LEN(Path$)) THEN
  721.                                         '| Set search directory to last
  722. ' dir. in
  723.             SrchPath$ = Path$           '|   path
  724.             Done% = TRUE
  725.             IF (RIGHT$(SrchPath$, 1) <> "\") THEN
  726.                                         '| Add a trailing '\' if needed
  727.                 SrchPath$ = SrchPath$ + "\"
  728.             END IF
  729.             IF (GotExt%) THEN
  730.                 FindFileBuff = SrchPath$ + SFileName$ + Null$
  731.                 SRegXs.ax = &H4E00
  732.                 SRegXs.cx = 0               '| Attribute for 'normal'
  733. ' files
  734.                 SRegXs.ds = VARSEG(FindFileBuff)
  735.                 SRegXs.dx = VARPTR(FindFileBuff)
  736.                                             '| Call the DOS findfirst
  737. ' func.
  738.                 CALL INTERRUPTX(&H21, SRegXs, SRegXs)
  739.                 IF ((SRegXs.flags AND 1) <> 1) THEN
  740.                                             '| Found it, exit DO LOOP
  741.                     SFileName$ = SrchPath$ + SFileName$
  742.                     Found% = TRUE
  743.                     Done% = TRUE
  744.                 END IF
  745.             ELSE
  746.                 FOR i% = 1 TO 3
  747.                                             '| Load our current filename
  748.                                             '|   into the FileName
  749. ' buffer
  750.                     FindFileBuff = SrchPath$ + SFileName$ +_
  751.  TestExts$(i%) + Null$
  752.  
  753.                     SRegXs.ax = &H4E00
  754.                     SRegXs.cx = 0               '| Attribute for
  755. ' 'normal' files
  756.                     SRegXs.ds = VARSEG(FindFileBuff)
  757.                     SRegXs.dx = VARPTR(FindFileBuff)
  758.                                             '| Call the DOS findfirst
  759. ' func.
  760.                     CALL INTERRUPTX(&H21, SRegXs, SRegXs)
  761.                     IF ((SRegXs.flags AND 1) <> 1) THEN
  762.                                             '| Found it, exit both loops
  763.                         SFileName$ = SrchPath$ + SFileName$ +_
  764.  TestExts$(i%)
  765.                         Found% = TRUE
  766.                         EXIT FOR
  767.                     END IF
  768.                 NEXT i%
  769.             END IF
  770.         ELSE
  771.             Done% = TRUE
  772.         END IF
  773.     END IF
  774. LOOP
  775.  
  776. SRegXs.ax = &H1A00                      '| Restore the original DTA
  777. SRegXs.ds = OldDTASeg%
  778. SRegXs.dx = OldDTAOff%
  779. CALL INTERRUPTX(&H21, SRegXs, SRegXs)
  780.  
  781. END SUB
  782.  
  783.  
  784. '________O_/________________________| SNIP |______________________\_O_______
  785. '        O \                        | HERE |                      / O
  786.  
  787. --- GoldED 2.40
  788.  * Origin: World Link, Longview,TX.USA OS/2 (903-643-7607) (1:398/1)
  789.  
  790.  
  791.  
  792. ════════════════════════════════════════════════════════════════════════════════
  793.  Area:    QuickBasic
  794.   Msg:    #8263
  795.  Date:    04-26-93 12:07 (Public) 
  796.  From:    QUINN TYLER JACKSON      
  797.  To:      ALL                      
  798.  Subject: fun & games              
  799. ────────────────────────────────────────────────────────────────────────────────
  800. ' LITESHOW.BAS by Quinn Tyler Jackson
  801.  
  802. ' Here's a silly program for everyone that plays three songs in the 
  803. ' background while building pretty boxes and fireworks on the screen for
  804. ' everyone to enjoy!  It's fast even in QBASIC at 7Mhz.  I've added a timing
  805. ' checker to speed up or slow down bursts according to CPU speed.
  806.  
  807. DEFINT A-Z
  808.  
  809. PRINT "Wait while I gauge speed of your system...."
  810. Start! = TIMER
  811. FOR a = 1 TO 5000
  812. nul = SQR(3)
  813. NEXT a
  814. Modifier! = (TIMER - Start!) / 2.5
  815.  
  816. ON PLAY(2) GOSUB music
  817. PLAY ON
  818.  
  819. NextSong = 1
  820. PLAY "MBO3N0N0N0"
  821.  
  822. CLS
  823.  
  824. SCREEN 13
  825.  
  826. DO
  827.     IF RND > .95 THEN
  828.  
  829.         CentrePointX = RND * 320
  830.         CentrePointY = RND * 200
  831.        
  832.         FOR a = 1 TO 250 / Modifier!
  833. LINE (CentrePointX, CentrePointY)-(RND * 320, RND * 200), RND * 255
  834.         NEXT a
  835.  
  836.     ELSE
  837.         LINE -(RND * 320, RND * 200), RND * 255, BF
  838.     END IF
  839.    
  840. LOOP UNTIL INKEY$ <> ""
  841.  
  842. END
  843.  
  844. music:
  845. READ Bar$
  846. IF Bar$ <> "END_OF_SONG" THEN
  847.         PLAY Bar$
  848. ELSE
  849.         SELECT CASE NextSong
  850.                 CASE 1
  851.                         RESTORE ItalianData
  852.                         NextSong = 2
  853.  
  854.                 CASE 2
  855.                         RESTORE HavaNagilahData
  856.                         NextSong = 3
  857.                 CASE 3
  858.                         RESTORE HelloMyBabyData
  859.                         NextSong = 1
  860.         END SELECT
  861.         PLAY "MBO3N0N0N0"
  862. END IF
  863.  
  864. RETURN
  865.  
  866. HelloMyBabyData:
  867. DATA "MLT200<C8MNDP32.MLC8DC<A8MNB-P32."
  868. DATA "MLA8B-AP32G8MNAP32.MLG8AGD<BAG>P32A8G"
  869. DATA "P32F#8AG>C<<B-AG>P32F8AP32>C8EDC<<GAB->>"
  870. DATA "C8MNDP32.MLC8DC<A8MNB-P32."
  871. DATA "MLA8B-AP32G8MNAP32.MLG8AGDP32.DEFA8A8"
  872. DATA "G2P32F#AG>T190MNCP64"
  873. DATA "ML<AF2<C8DC8DF2P32E32E-32D32D-32C32<B32B-32A32A-32G32G-32FP4>>" DATA 
  874. "END_OF_SONG"
  875.  
  876. ItalianData:
  877. DATA "<<T225MSG8>MNC<E8EE8EMS>C8<BB8GG8AA8MNEP8MLE2
  878. DATA "MNP8E8DC8C<G8GG8GP16>E8DC8C<G8GG8GG8"
  879. DATA "G>MSG8>MNC<E8EE8E>C8<BB8MSGMNG8MSAMNA8EP8MLE2
  880. DATA "MNP32E8DC8C<G8GG8G8>P8E8DC8C<G8GG8G"
  881. DATA "G8G>MSE8E<MNB8BB8B>MSE8F#F#8MNEMSE8MNF#F#8E.
  882. DATA "MLE2.MNP8<B8BB8MLB1MNP8B8BB8BG8GG8GG8GP16MS>G8
  883. DATA "MNGD8DD8DMSG8AMNA8GG8AA8GD8GD8D"
  884. DATA "MSD8MNDD8D<B8BB8BP16>D8DD8D<B8BB8BP16"
  885. DATA "B8BB8>MLB.A8P4B.A8P4>MSCMN<B8A>C8<B<<D8<MLBA8>>B.A8MNP4B.A8P4> DATA 
  886. "MSCMN<B8MSA>C8<MSGE8EE8MNEE8EE8EE8EE8E"
  887. DATA "E8EE8>C1DC8<A>C8<MSGE8MNEF8MSGMNF8ED8MLC1P4"
  888. DATA "END_OF_SONG"
  889.  
  890. HavaNagilahData:
  891. DATA "T150<<MLDP64D.G-8E-8MND8MLG-P64G-.A8G8"
  892. DATA "MNG-8MLGP64G.B-8A8G8P64G-E-8P64E-8D.P16G-8P64G-E-8D8P64" DATA 
  893. "D8P64D8P8E-8P64E-D8C8P64C8P64C8P8CE-"
  894. DATA "D16C8P64C8GP64G-E-8P64E-8DP4MNG2G2"
  895. DATA "MLG16P64G16P64MNG8P32MSB-8P16A16MNG8B-8A8G8P64"
  896. DATA "MLG16P64G16P64MNG8P32MSB-8P16A16MNG8B-8A8G8P64"
  897. DATA "MLA16P64A16P64MNA8P32MS>C8P16<MNB-16A8>C8<B-8A8P64"
  898. DATA "MLA16P64A16P64MNA8P32MS>C8P16<MNB-16A8>C8<B-8A8P64"
  899. DATA "A16A16MSA8MN>D2<A16A16MSA8MN>D2<A16A16MNA8MN>D2.D-32MLC64<" DATA 
  900. "B64B-64A64A-64G64G-64F64E64E-64"
  901. DATA "T170>><<MLDP64D.G-8E-8MND8MLG-P64G-.A8G8"
  902. DATA "MNG-8MLGP64G.B-8A8G8P64G-E-8P64E-8D.P16G-8P64G-E-8D8P64" DATA 
  903. "D8P64D8P8E-8P64E-D8C8P64C8P64C8P8CE-"
  904. DATA "D16C8P64C8GP64G-E-8P64E-8DP4MNG2G2"
  905. DATA "MLG16P64G16P64MNG8P32MSB-8P16A16MNG8B-8A8G8P64"
  906. DATA "MLG16P64G16P64MNG8P32MSB-8P16A16MNG8B-8A8G8P64"
  907.  
  908. DATA "MLA16P64A16P64MNA8P32MS>C8P16<MNB-16A8>C8<B-8A8P64"
  909. DATA "MLA16P64A16P64MNA8P32MS>C8P16<MNB-16A8>C8<B-8A8P64"
  910. DATA "A16A16MSA8MN>D2<A16A16MSA8MN>D2<A16A16MNA8MN>D2.D-32MLC64<" DATA 
  911. "B64B-64A64A-64G64G-64F64E64E-64"
  912. DATA "T190>><<MLDP64D.G-8E-8MND8MLG-P64G-.A8G8MNG-8"
  913. DATA "MLGP64G.B-8A8G8P64G-E-8P64E-8D.P16G-8P64G-E-8D8P64"
  914. DATA "D8P64D8P8E-8P64E-D8C8P64C8P64C8P8CE-"
  915. DATA "D16C8P64C8GP64G-E-8P64E-8DP4MNG2G2"
  916. DATA "MLG16P64G16P64MNG8P32MSB-8P16A16MNG8B-8A8G8P64"
  917. DATA "MLG16P64G16P64MNG8P32MSB-8P16A16MNG8B-8A8G8P64"
  918. DATA "MLA16P64A16P64MNA8P32MS>C8P16<MNB-16A8>C8<B-8A8P64"
  919. DATA "MLA16P64A16P64MNA8P32MS>C8P16<MNB-16A8>C8<B-8A8P64"
  920. DATA "A16A16MSA8MN>D2<A16A16MSA8MN>D2<A16A16MNA8MN>D2.D-32MLC64<" DATA 
  921. "B64B-64A64A-64G64G-64F64E64E-64"
  922. DATA "D64D-64C64<B64B-64A64A-32G8P4"
  923. DATA "END_OF_SONG"
  924.  
  925. --- Maximus/2 2.01wb
  926.  * Origin: The Nibble's Roost, New Westminster BC 604-526-7686 (1:153/918)
  927.  
  928.  
  929.  
  930. ════════════════════════════════════════════════════════════════════════════════
  931.  Area:    QuickBasic
  932.   Msg:    #8629
  933.  Date:    04-26-93 16:39 (Public) 
  934.  From:    CALVIN FRENCH            
  935.  To:      ALL                      
  936.  Subject: LCOUNT.BAS useful utilit 
  937. ────────────────────────────────────────────────────────────────────────────────
  938. Hello All! Here's a SIMPLE little program that I wrote it's  
  939. certainly nothing any of you guys couldn't have written but I  
  940. thought i'd spare you the time and post it anyways. Well, it  
  941. just counts up all the lines, commented lines, etc in the  
  942. program and outputs the information to a file (if you like) so  
  943. you can keep track. It's really simple I just thought someone  
  944. would like to have a look and use it like i do. It's really  
  945. pretty useful. 
  946. ___------------------- Cut Here ----------------------------- 
  947. INPUT "File to read? ", f$ 
  948.  
  949. CLS 
  950. DEFINT A-Z 
  951.  
  952. OPEN f$ FOR INPUT AS #1 
  953. DO WHILE NOT EOF(1) 
  954.      LOCATE 1, 1 
  955.      lin& = lin& + 1 
  956.      PRINT "Reading Line:           "; lin& 
  957.      LINE INPUT #1, a$ 
  958.      IF LEFT$(a$, 1) <> "'" AND LEFT$(a$, 1) <> "REM" THEN code& = code& + 1 
  959.      IF INSTR(a$, "'") > 0 OR INSTR(a$, "REM") > 0 THEN clin& = clin& + 1 
  960.      char& = char& + LEN(a$) 
  961. LOOP 
  962.  
  963. PRINT "------------------------------------" 
  964. PRINT "lines:                  "; lin& 
  965. PRINT "pages:                  "; lin& / 24 
  966. PRINT "printer pages (by 80s): "; lin& / 80 
  967. PRINT "chars:                  "; char& 
  968. PRINT "bytes:                  "; LOF(1) 
  969. PRINT "lines with code:        "; code& 
  970. PRINT "commented lines:        "; clin& 
  971. PRINT "------------------------------------" 
  972. PRINT "-RAW- Source code       "; lin& - clin& 
  973.  
  974. PRINT "Output to file?"; 
  975. a$ = INPUT$(1) 
  976. IF UCASE$(a$) = "Y" THEN 
  977.      PRINT " Yes!" 
  978.      OPEN "BASDAT.TXT" FOR APPEND AS #2 
  979.      PRINT #2, "File Data for "; f$; " as of "; DATE$ 
  980.      PRINT #2, "------------------------------------" 
  981.      PRINT #2, "lines:                  "; lin& 
  982.      PRINT #2, "pages:                  "; lin& / 24 
  983.      PRINT #2, "printer pages (by 80s): "; lin& / 80 
  984.      PRINT #2, "chars:                  "; char& 
  985.      PRINT #2, "bytes:                  "; LOF(1) 
  986.      PRINT #2, "lines with code:        "; code& 
  987.      PRINT #2, "commented lines:        "; clin& 
  988.      PRINT #2, "------------------------------------" 
  989.      PRINT #2, "-RAW- Source code       "; lin& - clin& 
  990.      PRINT #2, "" 
  991.  
  992.      CLOSE 
  993.      END 
  994. END IF 
  995.  
  996. PRINT " No!" 
  997. END 
  998. ------------------------------------------------[here]---------------
  999. BTW Here's the LCOUNT specs for C-TD20 so far to give you an idea of how it 
  1000. works:
  1001.  
  1002. File Data for c-td45t.bas as of 04-25-1993
  1003. ------------------------------------
  1004. lines:                   2983 
  1005. pages:                   124.2916666666667 
  1006. printer pages (by 80s):  37.2875 
  1007. chars:                   64547 
  1008. bytes:                   70513 
  1009. lines with code:         2575 
  1010. commented lines:         510 
  1011. ------------------------------------
  1012. -RAW- Source Code:       2473 
  1013.  
  1014.  
  1015. ... OFFLINE 1.52  "REAL programmers cross-develop on a GE toaster." 
  1016.  
  1017. --- Maximus 2.01wb
  1018.  * Origin: RJ's Byteline =[HST/DS]= Calgary (403)247-3180 CANADA (1:134/75)
  1019.  
  1020.  
  1021.  
  1022. ════════════════════════════════════════════════════════════════════════════════
  1023.  Area:    QuickBasic
  1024.   Msg:    #12291
  1025.  Date:    04-01-93 23:42 (Public)
  1026.  From:    EARL MONTGOMERY
  1027.  To:      MIKHAIL FERDMAN
  1028.  Subject: 256 Colors
  1029. ────────────────────────────────────────────────────────────────────────────────
  1030. ' Mikhail, I think this will help you.
  1031. ' Study the source code.
  1032. ' Special note for Victor Yiu: I wrote this program about 2
  1033. ' years ago. I didn't feel up to changing the WAIT1: etc <smile>
  1034.      SCREEN 9: CLS : COLOR 14: RANDOMIZE TIMER: DEFINT R
  1035.      PRINT "In the VGA (320*200*256) mode the palette command can";
  1036.      PRINT "use values between 0 and 63. Did you realize that";
  1037.      PRINT "regardless of the color you select that the color";
  1038.      PRINT "changes from black to bright orange? Not much of a";
  1039.      PRINT " selection!"
  1040.      PRINT "Want to see what I mean?"
  1041.      PRINT
  1042.      PRINT "                      Press any key to continue."
  1043. wait1:
  1044.      i$ = INKEY$
  1045.      IF i$ = "" THEN
  1046.          GOTO wait1
  1047.      END IF
  1048.      SCREEN 13
  1049.      COLOR 8
  1050.      LINE (0, 0)-(319, 199), , B
  1051.      FOR y = 0 TO 169 STEP 10
  1052.      LINE (0, y)-(319, y)
  1053.      NEXT
  1054.      FOR X = 0 TO 319 STEP 20
  1055.      LINE (X, 0)-(X, 160)
  1056.      NEXT
  1057.      y = 4
  1058. loop1:
  1059.      FOR X = 12 TO 319 STEP 20
  1060.      PAINT (X, y), c, 8
  1061.      c = c + 1
  1062.      NEXT
  1063.      y = y + 10
  1064.      IF y > 156 THEN
  1065.          GOTO loop2
  1066.      ELSE
  1067.           GOTO loop1
  1068.      END IF
  1069. loop2:
  1070.      r = RND * 255: IF r = 8 THEN GOTO loop2
  1071.      IF r = 0 THEN GOTO loop2
  1072.      FOR X = 0 TO 63
  1073.      t = TIMER
  1074.      WHILE TIMER < t + .1
  1075.      WEND
  1076.      COLOR 14
  1077.      LOCATE 22, 2
  1078.      PRINT "Color "; r;
  1079.      LOCATE 22, 26
  1080.      PRINT "Palette "; X
  1081.      PALETTE r, X
  1082.      NEXT
  1083.  
  1084.      ct = ct + 1
  1085.      IF ct = 4 THEN
  1086.          ct = 0
  1087.          GOTO Text2
  1088. ' End of part one of four parts.
  1089.  
  1090. --- Maximus 2.01wb
  1091.  * Origin: Verbose Ink * Dallas * 214-437-0914 * V32b/HST (1:124/5125)
  1092.  
  1093.  
  1094.  
  1095. ════════════════════════════════════════════════════════════════════════════════
  1096.  Area:    QuickBasic
  1097.   Msg:    #12292
  1098.  Date:    04-01-93 23:44 (Public) 
  1099.  From:    EARL MONTGOMERY          
  1100.  To:      MIKHAIL FERDMAN          
  1101.  Subject: 256 Colors               
  1102. ────────────────────────────────────────────────────────────────────────────────
  1103. 'part 2 of 4 parts.
  1104.      END IF
  1105.      GOTO loop2
  1106. Text2:
  1107.      t = TIMER
  1108.      WHILE TIMER < t + 3
  1109.      WEND
  1110.      SCREEN 9
  1111.      CLS
  1112.      COLOR 14
  1113.      PRINT "Well that should be enough to prove the point. So how";
  1114.      PRINT "do we access all those beautiful shades of color";
  1115.      PRINT "available in VGA? Well we can accomplish this by going";
  1116.      PRINT "directly to the VGA palette Registers. Remember that";
  1117.      PRINT "each color consist of Red Green & Blue components. We";
  1118.      PRINT "can set any color to any shade by adjusting the amount":
  1119.      PRINT "of R G B within the color. How do we accomplish this?"
  1120.      PRINT
  1121.      PRINT "Example:"
  1122.      PRINT "SCREEN 13:CLS"
  1123.      PRINT "OUT &H3C8,22"
  1124.      PRINT "OUT&H3C9,55:OUT&H3C9,45:OUT&H3C9,25"
  1125.      PRINT "End of example"
  1126.      PRINT "Send the color you wish to work with to register &H3C8.";
  1127.      PRINT : PRINT "In this case color 22."
  1128.      PRINT "Send the RGB values (0-63) to &H3C9. In this case Red";
  1129.      PRINT "is 55, Green is 45 and Blue is 25. This particular"'
  1130.      PRINT "combination gives a predominant yellow shade."
  1131.      PRINT "Let's see it in action. First we will draw and color";
  1132.      PRINT "the circle with color 22 then we will change the RGB";
  1133.      PRINT "to change it to a shade of yellow."
  1134.      PRINT
  1135.      PRINT "                    Press any key to continue."
  1136. wait2:
  1137.      i$ = INKEY$
  1138.      IF i$ = "" THEN
  1139.          GOTO wait2
  1140.      END IF
  1141.      SCREEN 13
  1142.      CLS
  1143.      COLOR 22
  1144.      CIRCLE (160, 100), 90
  1145.      PAINT (160, 100), 22, 22
  1146.      t = TIMER
  1147.      WHILE TIMER < t + 3
  1148.      WEND
  1149.      OUT &H3C8, 22
  1150.      OUT &H3C9, 55
  1151.      OUT &H3C9, 45
  1152.      OUT &H3C9, 25
  1153.      t = TIMER
  1154.      WHILE TIMER < t + 3
  1155.      WEND
  1156.  
  1157.      SCREEN 9
  1158.      CLS
  1159.      COLOR 14
  1160.      PRINT "Now let's draw a line and move it down the screen but";
  1161.      PRINT "each time we move it down we will increase the GREEN";
  1162.      PRINT "value by .1 to show various shades that are possible."
  1163.      t = TIMER
  1164.      WHILE TIMER < t + 9
  1165.      WEND
  1166.   'End of part 2 of 4 parts.
  1167.  
  1168. --- Maximus 2.01wb
  1169.  * Origin: Verbose Ink * Dallas * 214-437-0914 * V32b/HST (1:124/5125)
  1170.  
  1171.  
  1172.  
  1173. ════════════════════════════════════════════════════════════════════════════════
  1174.  Area:    QuickBasic
  1175.   Msg:    #12293
  1176.  Date:    04-01-93 23:48 (Public) 
  1177.  From:    EARL MONTGOMERY          
  1178.  To:      MIKHAIL FERDMAN          
  1179.  Subject: 256 Colors               
  1180. ────────────────────────────────────────────────────────────────────────────────
  1181. 'Part 3 of 4 parts.
  1182.      SCREEN 13
  1183.      CLS
  1184.      ct = 1
  1185.      cc = 7
  1186.      y = 0
  1187. lnrtn:
  1188.      OUT &H3C8, cc
  1189.      LINE (1, y)-(319, y), cc
  1190.      OUT &H3C9, 10
  1191.      OUT &H3C9, 22 * ct
  1192.      OUT &H3C9, 10
  1193.      ct = ct + .1
  1194.      y = y + 1
  1195.      cc = cc + 1
  1196.      t = TIMER
  1197.      WHILE TIMER < t + .1
  1198.      WEND
  1199.      IF y > 200 THEN
  1200.          GOTO pause1
  1201.      ELSE
  1202.           GOTO lnrtn
  1203.      END IF
  1204. pause1:
  1205.      t = TIMER
  1206.      WHILE TIMER < t + 4
  1207.      WEND
  1208.      SCREEN 9
  1209.      CLS
  1210.      COLOR 14
  1211.      PRINT "Instructive but not very impressive. Maybe we can end";
  1212.      PRINT "this with a jazzed up demo. Look at the source to see";
  1213.      PRINT : PRINT "how it is accomplished."
  1214.      t = TIMER
  1215.      WHILE TIMER < t + 8
  1216.      WEND
  1217.      SCREEN 13
  1218.      CLS
  1219.      REM KEY OFF
  1220.      X = 1: y = 1: fx = 11: fy = 11: t = 0
  1221. jazz:
  1222.      CIRCLE (X, y), 10, 15
  1223.      c = c + 1
  1224.      IF c = 15 THEN
  1225.          c = 16
  1226.      END IF
  1227.      IF c > 255 THEN
  1228.          c = 1
  1229.      END IF
  1230.      OUT &H3C8, c
  1231.      OUT &H3C9, RND * 63
  1232.      OUT &H3C9, RND * 63
  1233.      OUT &H3C9, RND * 63
  1234.  
  1235.      PAINT (X, y), c, 15
  1236.      CIRCLE (X, y), 10, c
  1237. borders:
  1238.      X = X + fx
  1239.      y = y + fy
  1240.      IF X < 1 THEN
  1241.          fx = RND(1) * 11 + 1
  1242.          GOTO borders
  1243.      END IF
  1244. ' End of part 3 of 4 parts.
  1245.  
  1246. --- Maximus 2.01wb
  1247.  * Origin: Verbose Ink * Dallas * 214-437-0914 * V32b/HST (1:124/5125)
  1248.  
  1249.  
  1250.  
  1251. ════════════════════════════════════════════════════════════════════════════════
  1252.  Area:    QuickBasic
  1253.   Msg:    #12294
  1254.  Date:    04-01-93 23:50 (Public) 
  1255.  From:    EARL MONTGOMERY          
  1256.  To:      MIKHAIL FERDMAN          
  1257.  Subject: 256 Colors               
  1258. ────────────────────────────────────────────────────────────────────────────────
  1259. ' Part 4 of 4 parts.
  1260.      IF X > 320 THEN
  1261.          fx = 0 - (RND(1) * 11 + 1)
  1262.          GOTO borders
  1263.      END IF
  1264.      IF y < 1 THEN
  1265.          fy = RND(1) * 11 + 1
  1266.          GOTO borders
  1267.      END IF
  1268.      IF y > 200 THEN
  1269.          fy = 0 - (RND(1) * 11 + 1)
  1270.          GOTO borders
  1271.      END IF
  1272.      ct = ct + 1
  1273.      IF ct >= 1500 THEN
  1274.          GOTO bye
  1275.      END IF
  1276.      GOTO jazz
  1277. bye:
  1278.      t = TIMER
  1279.      WHILE TIMER < t + 3
  1280.      WEND
  1281.      SCREEN 0
  1282.      CLS
  1283.      END
  1284. 'End of part 4 of 4 parts.
  1285.  
  1286. --- Maximus 2.01wb
  1287.  * Origin: Verbose Ink * Dallas * 214-437-0914 * V32b/HST (1:124/5125)
  1288.  
  1289.  
  1290.  
  1291. ════════════════════════════════════════════════════════════════════════════════
  1292.  Area:    QuickBasic
  1293.   Msg:    #7632
  1294.  Date:    04-03-93 16:45 (Public)
  1295.  From:    JOHN GALLAS
  1296.  To:      ALL
  1297.  Subject: eliza.bas     1/3
  1298. ────────────────────────────────────────────────────────────────────────────────
  1299. Heres a PostIt! script for an eliza artificial intelligence program.  I
  1300. would've addressed it to the person who was asking for one, but I can't
  1301. remember his name!  So anyways, here it is..
  1302.  
  1303. 'Save this script to a file, edit out all of the non-QB related text and
  1304. 'execute it in a QB environment to retrieve ELIZA2.LZH.
  1305. DEFINT A-Z:DIM SHARED A(685)AS STRING*63,I,T$:FOR A=0 TO 6:P(A)=2^A
  1306. NEXT:T$="abcdefghijklmnopqrstuvwxyz":T$=T$+UCASE$(T$)+"0123456789()"
  1307. G"qIuylSHwnTK7caaGKzaaaekwZsasajuetjPvqUq0tdPlrnbaaiSmDAATruh32KPA
  1308. G"fL(3tSyifehK006ILqqQni5M4TnjlolXZw4kzWU7oBC3mADf)X)Vx2AkP4COuLSu
  1309. G"5cHV)GDYAJ2ycdynd)Z(ld4(ZCTTxNA1to9Ilmp(kN)p98Noh6)ftyEZl13vR2Au
  1310. G"YxBwRvR26wzdlkONA7APWng1AdUYP5MTxTtfNkNT6O5gEflKfB4DxjUnLbSTn2QH
  1311. G"wfBZdtXAzRoyRix6zcABRQt92FvadSX(BlIslBq)CzBwX3f7VRUI07QkuDhxyr)j
  1312. G"OUUPs9(93JIx61bDUDAJDqvE5NCVEyQTUgoxvA1Yk1QIr(T3MHaU7vnWpVyaR61r
  1313. G"WZUR9FMT05(gKydmw1ZLPQHR3qxkme2watJJlfmN7SUcJ26vDZG30wD06tzTHD22
  1314. G"zJIEvv6Gy9JkgQqZw2k7(vKzyD)XE0AG3uhBSuGt1QyTpgB1mQJL3RRDgwlrzI4u
  1315. G"pXfM7yFC8dFeADwDwlbYYspd3Q7v4k()n0SMjRBPnATrQJsvXgcCYImmP2MVhOot
  1316. G"x6cq9vLXORbI4Gl2Tvf1q6CjxziIseMsz(IlmMLQv37fslATcspTGpBsp6DBiCrl
  1317. G"31Wl1uNwRDYH7e5d(wNA3CGYD7iYmgvzBocyVLa)EZYRo(nuwpDbn0V9GcMDb9j0
  1318. G"0b(1RlQKWnUDuV8qCmL7tp)gia9nfd52MBdZRdARTzDV7OincRSg9p2F9Ilz54qW
  1319. G"kd(RzLxwRd)wTGCt2P0ZvjSdLFY3AdMwvUTnJs)bfxcJM43kTVIesAbz5LPDASPE
  1320. G"ROvZcE2riXNWedftANrnNiJtzKGvcGIV8bPYr93vfPIeWnuIeho(UGIlPEBn1qtz
  1321. G"lCKunJIFmnR)OFedKe451MqcysO1Y0g2u416(cuePWihPP2AqsPZRbTgkOxb7IpS
  1322. G"gq6sDiHvO715hdKJN1cmy95iinp6TVCN(CKNuAoHsiNtThFe5k25wYw9a9lVffCu
  1323. G"WEgwqUuTFDPG9L3(ZnltUUD9StQCh2fG)1tUvA5qKFN)IugHn7LAkO5inmrTDPtd
  1324. G"Qig2vtkKQGDDoe7YkSxNvTNXJ2vYFVQelR58x1CaTCmsRNIcETY57csqyvyGaawk
  1325. G"Tr(F56i)MNPfRP7WvF(e)jfM9oLepQOv7BnSuRRmmSDXKLgVt2zfCqv5e1Vt56gZ
  1326. G"1kLsk8ib9hNM8t1gKOkUUK5zw)pbAssxG9RbkWExRroKpCD4rYv0AoORXtJKwRKP
  1327. G"6vP6zT31KRi13WEeJMsBMY)e50fxb2HyxEUhH)xbKdPuoG3JpwNfs)fdQjbfeZWC
  1328. G"uCn3rtBhLuLvwoyuT4zlnwxF)2u3TsCV(R6fR1MGV9n3bD3Y1F9dX(NvOQleek4y
  1329. G"4cKEGhHSD24F4j)dl)t62wgMsPMBaffaPK3F70IP)FWW(pdkIFIaOhseVgOvIPfC
  1330. G"zAd0MyqDyVF6gAIR5SVlUIhxUX2iD7YlAH5TUNKpTyXHIWd05JTgRSMPzP9gf5hq
  1331. G"CnVsFjsMruXiMURX8ITS2fBeU8cucDqayomA6t944rEuDGpaw0O1X8H2VI1EJG4H
  1332. G"FUkM9bKTs61Dc3oFJp1cTnR1GL4(KEzzF(uJwT5VTe(2Wp9T4y2wA(CDJbV99BzI
  1333. G"erBOWKjfFI5TxkcL9fHOQsV7r9qJ9LViAjno)rtTaHRr(aNAXgFQ3fdvkJk4Usqn
  1334. G"ItJirinrDzCXBQDqqJvxWwIEynpz162vakB7Sm6wXu8gnGJq4JTpIvOEP611kh7e
  1335. G"BWRj4nx8izbslJ2qBIHEai6eEK0a65g4m7C2wod9La8WPqdQ6gcXhEfITqHnnZF6
  1336. G"fdqpiehZL8Pw3QC6vyK)beuxewldMXp(e78RaLYUh52oA41QzXAL6yo3kQwKmqRT
  1337. G"sw83fOzoGRie9B77LaJIpm4ldsGxtD0rmbItSrsmo1j(4v6qLEQ6aaxakfqsemur
  1338. G"zaVpIH(7ckaLKIm7CLHo)(st7ZRqNfbMqOMOiSpRMu460RVFPEb48GbSvwHws4Mw
  1339. G"NyMYT5g0SlIDfmcDhKEViF8gVJYrlRt2neNIAsqjmpa8YfdJjplkzKAzDLfnndPd
  1340. G"ClRk17nKCSGbmq4VSySK20RJOY6lI39Q08Q(LpqcbBFaBUtjsLNOvU72Zhpy3qjy
  1341. G"OhdiWI)sayhXofnKhhas913z90vPCJStdmg21zj8Dkl8v4IBCU06DLuevJJuq5vO
  1342. G"Na6nqSOj7i7ukNu9)p0t7)I2b)bXBf8et703KmVoYOOvevlLU1jrVQ04jIsrqq9e
  1343. G"8lPLlNUS5YJmIiAZDh)WcgBevDgsIe3t8prCBInCKw4vSLQ7IvVk2QVsE)6BxD8h
  1344. G"6dblnXrzokrYwfLXoZAEWUiAWJx)YtOTbgvt275RxxgJm)E2v7NQE1Xg2YGo1zZA
  1345. G"HZxhoC5ShUSVfw3()VK5QpLiD0D)(ZtcPii8W9nlPE9kxzMMKGig1W4Fx93S8)ri
  1346. G"RL)97j)9ECi7AaXMBGw42sw)sUv2jODkHyEy2HTLGh66jzL1gVH74ECA7b(KmOuo
  1347. G"RDgPnqsBCHT5PRo6nl3D1XN(5BwydocMFutDmY2EIy2woFvbPFZKeXqPIMSw(yq4
  1348. G"iRm7fYnldc(eFXffulOGh)AnWF4n05NfYvNLZGrxsu31oPnmIkgkQcqa6td)tqcG
  1349. G"LkFdr1llgIpjvuqXQpYImouQaJRtlbyMwKl3f4u8x8kErUactbBs5JSzl3k2ArLh
  1350. G"vcbcPwuXoNuYJXWX7nDssXZ6WewGJGa7XivNDLiA6gjyHs2e5Cwa1vPDLE1(Cpw3
  1351. G"c5P59kXOPVJ4llJBJGrf49URx8fqawBBPzkCHaCZGSy(XUi5cU5Obv7N)uKfgNeO
  1352.  
  1353. G"QG7yVeKkayb(Vk0jn01KKV3jXQBbrwAtiqgovmFirb8jtWsupczmltpYIdbcR8sC
  1354. G"(7uGinoDs2rxYkws7IvbH5kmzz2J1uWvaofTqI9pdEtS4DGssfUTvkydeo2cAkIG
  1355. G"eyMsSzC2yl8wjXU(AYM470eOyer4sjsuw18TdAGjDk9WNmV3DtwDPcNasQitbuHU
  1356. G"1tKgQE9iu93Gp5uwt9BYqmDC7MR594waGnY1vS30h6NG6sNiBauxCgXXBJp9MZ(5
  1357. G"wVZ(JDKjgL8IBdGLmcknVHMcEyVI6wWra0A0ZKtIpo4xmHoz0T6GiSOymh45BYdu
  1358. G"fdiAE8nFnQq0MHQVG0iEXN)DRW6MRXz1)U(7)(h1AEDSu3APItko)q41QC8sycxk
  1359. G"28IVZSCGeyGDSCb1HyXSDWR7Ikv0xGMyVjYBgAazIKMlhdmnyqnsxSycehNWOgE6
  1360. G"XTjwJsFWfzZ4esPupnTvgevS83Qy5bTajIZp6N1Nv(RTr0uQ3RokWchaicPNbOjF
  1361. G"BfxoH6s7aFKeZVBxOkrb(B6zq0dhWd8HVdhkGV9wiigqS5Jd89lYWqKzieuKqjeJ
  1362. G"OlBSbhJD0YeNKlx7kwzJoZyRItyFSYQYUzTR)TWgKX4O1IoGqIk)T6lpXdEEHWP2
  1363. G"oR62bUQckgUiXAxed4KHihWY1ZmwVDDU9WPNpRsduDmW0YsYwp(hU)topagwtemo
  1364. G"4sePgXVYCzSqYt5ZlhdpH61fRhjLsEIEMjeTdy7T(4NBiX1ut6ZKtkbfG(O1HxKw
  1365. G"C8RyH8xwakBmJywk8kGmzKYx3cNy)VhymkmHfODbk)gLUe4wgAGrpnfQP0NyPONb
  1366. G"1SEc4OHUezFBVqIg2g9F0y(Xf2k2mzWLYjfOznKnkuvtZTDitBYuD4kKOP8r0jQX
  1367. G"eW5ojoZjsqpnPnFuswloJ41QPwbkyjzFFV6isrZhjawwCLNkowLy35VnRAcvGDrR
  1368. G"klslTc(JwZfjhd5mNkFmWY)WS0NLd3YXJlzC)PfSSZ(9IvYhV)b3X5nAWyPR4GHN
  1369. G"A5iA04DUZMZU6QIYMC7aLCijfjLKBW0(n88CN5cFfMHIW5lJmx(xRS4tMK2WunK)
  1370. G"TuRcTYebYk6yIceii5my))39arbh7JBEZB)5s5IAja5fG0NQUwsdN89iz2X99HsW
  1371. G"pyqX1FU8Z4CgDATtZCymDl(vf4Efin6E0toIjahy3RaoxcYjc2BUhOYtqNltXVk9
  1372. G"4D8XFpoA14R3pV8SfqicQTWgA10I2jaaaaWbaay)IDAfibKqrmLKwb5crbrfz71e
  1373. G"xaaCqc7zx14A(D87vami9tjHgeSfm(uifvgsW2pPb2A)uZNKBU4f5(UxVjEZJKnn
  1374. G"9csEzWltq5L7oC3S2iTLRDwTFfAPDE52pV8jNR3mp6uEYxwuZEwr)mzDEq1vxRjU
  1375. G"X8qBmXxj7nx5NtU6VEg64PsVSwRLEPDPlK12q2)ymm)HALAQnkeRzLnDmP1mJXVF
  1376. G"FE6NvOLFE5V0QpuU0p(PLP8QPTK70T)uRUv5LmYQdVXc3)XeJtfpFWOM(JYZAzfY
  1377. G"rTI0lBruG90jMQ8BVBUwz9knpIgk5VF(5LtrF6KsAp2Ql1ltxZwIEYg0aNXyUDmj
  1378. G"8h0GnYuZSM)YZWTSSng2Q9QTF16mPZm3SuSKHjyE7iKPn6oqiD4WzwiTspH(wTyN
  1379. G"JRnQ0bQ)AEd7mEgPhGDnCbtc7gJFU2y1(rhJQ6yt8PQ)5(3xFZFvwGDxrASCQcp3
  1380. G"7SBiMQKwwCRYS9SrHmLi1Ig9TI1boET1ZwLIjHXopU1yxdrQrICS9VelUf9RIGcc
  1381. G"inar8L9rS5cT0gDtsrKDZSQklSqxvtYEFyTbFH(6BVzPblUeSSQMvSppN(gCBDop
  1382. G"FltKqt4OVpHh6tXLy)AYrLoHKkg)nRbX(VIJUNbtB9E9ZCXyBhPq8HU(lo6jdYQ5
  1383. G"0O)lsxtS2FOSRVPWIjYMeMDDH0QLrAtoqBcBaNt1JTr4cZa63dpgfyOCGnNKmzEZ
  1384. G"kkErsVQYO977ToSgU1vn3G)(yPe4OX0)gVR4)1V()VKvULc1xy)Go0Bl0clRzi8A
  1385. G"A9)w7eQpVmdhkLJLkzRJWophJQ)0jpHqaZl9nDV)gwohr(Fs7b6Xwms)xbGCJ95F
  1386. G"BDulw8SnF2V)kNfoZkiZCpaILprCqDWPyb0CD3f66GVdNr3gjkudbhSf)w4)hqlj
  1387. G"MNjYdo9mFdXe(F5HEn6Hi2Yb9e75dFfXlimbgISgruxbH8rtZOKXdcThDh6fSeUx
  1388. IF I<>80 THEN ?:?"Page 1 is too short or long!":J=1
  1389.  
  1390.  * OLX 2.1 TD * Repeat after me: "I will give John Gallas all my money.."
  1391.  
  1392. --- Maximus 2.01wb
  1393.  * Origin: Command Line BBS =Mpls. MN= V.32bis [612-788-6685] (1:282/2007)
  1394.  
  1395.  
  1396.  
  1397. ════════════════════════════════════════════════════════════════════════════════
  1398.  Area:    QuickBasic
  1399.   Msg:    #7633
  1400.  Date:    04-03-93 16:45 (Public)
  1401.  From:    JOHN GALLAS
  1402.  To:      ALL
  1403.  Subject: eliza.bas     2/3
  1404. ────────────────────────────────────────────────────────────────────────────────
  1405. I=80'Page 2 of ELIZA2.LZH begins here.
  1406. G"cnuCgXmsNYUpk2hZbhbcAqSSbqxkfHzcPtrMq729LSuX2BMfJ)hej5zvSl40)O4C
  1407. G"Ldr4JPqMja3RdDS53O90xQAqlrdVCbQYWhSOjZ1dA931O2Tl6z07CTR5jmf5(SIr
  1408. G"WE2lAf3Cin0rYhlxnnI8WzNs306ZSAG5ZGm7XyYJx)6EcU7OCprrEJRRMJxA660W
  1409. G"jJx0r4(hOH0CPkOGSlhKxLkSFk1ncy7nMD9I9uj1nPVUMk2MtfL7hYnYo7syRgGN
  1410. G")t4)l7vs0g2cf40WpRoQEJhW9QYc5j)b25Ddqq9Xc(ca9G33dewq5PeqT2Qt246k
  1411. G"Qm8PYuuNsTg85l3zkiFXWo6n1BFUPDwp1lJdBDxvdU)f7XuGVxygqpXC)fJB(2FT
  1412. G"Z2)W0otxD6cXkVttLz23KePY5Tj3h1njkp6rXe9ItRJccPglQOhUlkOFUrFFKp29
  1413. G"qf(SDC5Gqcl(D3DaCPTpBlTa4u28jRU15Vgm67RQmTRNdGXtyTiKyEa5vQyGowX8
  1414. G"gs1HTQeYvLmm3RRiOYC(cPxFyDh8lKHespf0rasfvFFVn)D2JzIViD5DvKoGqFta
  1415. G"Swc6ImuqncWTBfInTIGntcHm(8BXMztsPPK8xhD)WtDjPT1U)nTwwTfKk8pBryXV
  1416. G"zYIhuFTGrpie)Q)LbaE93abLhCiWPKa3MTz3zCeTERCYJ1IyLm9yRNPs)huwqsTF
  1417. G"0yi2)eHd2rHRvUYNCYSMOV1(y3r3uOiFGXgqwSUrUFCuMqbABGT4WtXLZNVyP9Ug
  1418. G"AggyIYK8o0ZI36S5kw90ZDJJaGKoAazChyzr4AEomLdVCJanGaY44hDyGXvQn8EY
  1419. G"5xXKRLkHnv)IE9ORzAsgL2u1Sq0rEV4yOH(lT2fK8d21gMunchvOb6mOLGTZ09ry
  1420. G"mHiiZoARWlobhbglOLbmk668KUPeJbKWznc(rX2Yg(zwl634yPmMrlNhczkuHWqT
  1421. G"NhYI4hAbBuetgtqxO8D5Etge)HpPL7wojteauinsmgoODyWYAkYYQS)qwdCmfhc1
  1422. G"gx6bTC6YQdLAa3nXytetktVUCwhyc45W0AQbn0LSkvifQdwpXyikxtdn1x5C7lxZ
  1423. G"UgSqVBlj5pyoY5c5QjoRu138yIuswF1I4e2(V9a2tJ5qjePiTEio1hECkG1zHhNF
  1424. G"XsocDo)NkoD2fArtZLJ1(xj9ZLu0fBNSMLZZLYqHfHN7rmgpnOIEN)FVEMVZVfrK
  1425. G"tUEuHNmipsseIOXHbZJ8GSUlVqg(m9SWZOttzjcCFZ0UQbtH5CmtN9kRzJf4cp45
  1426. G"iDLSMrx2yNbFwixe20k9UFaCQxOfXnN4YdZJViYUoHFt4I7kaoB)abYL5wDMjihL
  1427. G"REXxQyJ1fEanOiFAqwvwiQ5mv(GM)qiq3D6VcL(3MtFqsMhylWkWswrUtpOaiPkm
  1428. G"D6Uzl7umvTzEPXcbLQpU0)thcp8KJP03fCLB5aviIjYXBY9XMJB9A7DI1V0wOheV
  1429. G"dcJsJt8PBs0Ouax8HDqNvCkoWGJFvtTd6OX2O2KQfzXTrOarGYgAzCMp0LehiRr1
  1430. G"jX75ksV6AdLPvsMz49m2IZtFFt(abvtxZ8Qva4WUwnpB(IkjYDqkHuXo)TdKmExp
  1431. G"Lw1Xh6Qd8u(zRBoxCEsZfNVneJYFSdNeObmzSLU2MmAYnBYzIeHahWS2S)Q0LAfc
  1432. G"UdM)uUqRBRXC0m9BPwr1HT7TByLS6))QurvGyloKACmRrRm0LgPAHkQzcWUUvd4a
  1433. G"sJC6IEqBpx8UJLeCGRKtj92Q3DVKGPnXSHciXB6RIiCY(wlGG88Bt6vdonhJtICs
  1434. G"U0Gn2DlUP(sVFg9wi40VvL3YyYATXm3Twfzgp9IUznJ7j1ab5mImG(RVaGIjIz2E
  1435. G"s8Py0GKtphsoTO0H9TlKl)Fk73bIklpm7NMrxitCNKeaEqB)QdMc9hIzZwhQZsSd
  1436. G"bNdrcfiduKr)ddRbXWd1aF(EqaUNr8jLk5jb2QS84lnMDydDFsd47CAJMeooQmt1
  1437. G"z1a(QIi1hKBV)8XfTZnHIutMKEvAZ70NnmRBnibOLgXeuyRc60oB5pC09UgiSCRI
  1438. G"yLJAxI5AqizmVD051ABCscCSADbDFVZJdpCfp1q6Q4ppCm2cC3w7b9RMTvq0Rgfe
  1439. G"AKeJWalPs6ha2smKZDO76(isUsBvvLpGxn1kXyhNJM(zQrEDY8)gqybd1Qt1YrbS
  1440. G"7Jxw(uA5S1b5LQn59lDpHuPpLsPQ78ieuyOaineFRSGokkJvBlOW9B2KoLo94LVK
  1441. G"YcleYFkRF0Ra7)nJhhprEn2qVgXZ9MnkEmHa6hrPh8)LoouMqhDd0f4VZLFWVikM
  1442. G"R)AM94UlzjxmGJT3MXa6YOyVS0BZsd4qMmE8NpFXji)hoMseD(I)Oi4uthlW3sGA
  1443. G"QdTQhAhtLJjWmtNTl8uI0)rYG2oerFozZvLIy8BVisGbuBMbhm9LczuoCcz1bbyL
  1444. G"PtV42O1MpIFOBBFL4ANM9)2()paIarlSHwnTS2caaGxFaaaAlwZsasajuetjPvqU
  1445. G"HiuqtH2rnbaaiihDA6ER2u(nyL5KNrlVopZMGedIyaq7YfUbiwnygGqKxttUWmVy
  1446. G"KOtdJjvr2(HJ)))V3YdusNS1E1Uh4pIMDwTFV339QTz74vf1WPtVvFKzZQ)x97nP
  1447. G"bOCi)qxCA0CXlwI)xV47b1hABsMIrUrI)WAux6hP1x9p1bRTnp94JJsHqZLIF05B
  1448. G"skkFBOdK9vI6mXe57pk2tLrx87tuOE1n9bJv1JplsWgVdLqAKQv15MrRk3wXQZCq
  1449. G"J(ZiGx9ENycfXfM9Dv3YuhLe1vc6sBaBUNbRgWM818LKDNSHY51rxC7RShdAwVYy
  1450. G"7ZR())69NfnCk1CL69kIhKVHrafFRba9HGljfjvkkxp7TtLF0I(XbFc4iTKIV1Uv
  1451. G"v(gPTRIcQC93W3ZzbzDno(o1zZcJyihzhQEfj(7eTRqOOKlbljKu4bXaT5uu2BMC
  1452. G"VWg2Dyf6vlAqAAZOLa66xOp9axWAmgiRRIdQVo6Hw8w4bL(Jk(NxYymObZMkLGVM
  1453. G"8F1Ckvb38hfYkOt98fz3mWeeeTbp7mfeMHYJNXwEI)hxeoKTI6Xc7IKwEsPGe(Kq
  1454. G"CLW)76)b5iEffcDSF73kZeD4U6sdYoIEOWVViPTNpwosfkGu1L00FUiBTLvHdBH3
  1455. G"a1ziWdKdrMgZZ5R0zAhTO(1wqSItiXOP3ruMjfQC3pPIYBd85c1QJlM)sE5hw1Q(
  1456. G"HHe9fIsWRNtGXuo71j1FFMx80lcOHhBVdV4CcVmX29OhVu4aMX58kJmQy89cAgGW
  1457. G"lbeTK5qct)5GdLV3rgtOWGwkgeggcSfmm16Ut6XjBnKrMrPIT5AqOWjGdRXDb19A
  1458.  
  1459. G"EFgdNfL0yXtv)oUtu6PELk6VuX2LuXYvo8K3geNO7pzA15i)TPoFLBOtIxNelDix
  1460. G"tmxCJBvOv4dh(U5BG6osxvDMZu2Gk(E78kh2tHmxKmerb1P)nVDUY70m11vTZ6gU
  1461. G"y(1sBoanhN5dH37Xxdr5nuu)WUxShca1H2dvdqJk9qZ3tLk1Z6EdG5MdHPS7n7Fw
  1462. G"WfztxGUg0aftjNmcpdaePjMdFbaGB)JG6ndDgU3YULAI)YTJcuiUmqx1JrJ1yrmR
  1463. G"NL(NcefmW)QiE)rZO(MremKWregZshaIC6ESmLPYFpN6pUlvYOIrH8uWgGFiXicK
  1464. G"Wv5OaoePR)LjMZE91SGCwXhA5TBENSwEILwqKopMcoIUe4)lLjpGKVeT01Yk0Mxu
  1465. G"nQj2pSSnKqyxTv2u3n7SgA7hVPgduOhRSu8hyTgFXVCfFJQdcJ5im6CQBUkTWmwL
  1466. G"YpfMpxQi4FaugQu(pOMF54a(ZNJ9frWVIu2mYm4fHycqCz7yyseMTRpaoyB9IITw
  1467. G"ISCvMOb7X78NhsT2KaDRhNZeG28kosm2IqLR2uWqKbl5T70V2en5o7COtpZohAv3
  1468. G"(oPJwVJYgD4Sj)ZkHw8WuDBC2w7vJiHPfqDHcKinH(U15QxysywneGR)geQKvdEz
  1469. G"rpdUzRpkjBDA(FZ9WU8OIQD(Kos65tjVWbcdv6aJqaEHEKGJ1O70Bjatu)IFzscN
  1470. G"RyPnws1nRLme2kkOHDkpf8yfw90xlfigZDOcUtshJMhUDz0A4QZHtFJzgfD)93zJ
  1471. G"LWtzegY3inFmuR7MUMZtvNiOuSw3AkFSvvo2QhX37QzooPdb)kakeM5ouSSklOyY
  1472. G"sZrMVvsuRBwT06FE)iB22cbcF4VRTYqQHliHhBcsOtDGWLcbXrG87XG9ytVGCENq
  1473. G"tCM2ueajlKdzqGddbkuw3rN6RMfVbsHdX5ugpjLP4YNziG6YNkWRaiRArSjqkhNf
  1474. G"V87jb0MtcWTRcCIZAQN9b5zthU4DGyjUEgimSZ4uTJUNpdYZsPPhrCm43tSo9R30
  1475. G"awuhAN2MtA(9KMABVQmKPb78U2V7irBWuIeV6RuVsocaON)gu6u2c0KJqEQqBrn2
  1476. G"tXOmgLUeAAOv26eE95ET3wYBrtjTcWaZz53eFfT4QkiE3kBIFbFJ1FV8urrxYGRF
  1477. G"O)JVQoUiWDDiuI7CsloUU7EkwVc8832MwRw8OSR4KuGbrLr5gwH1XfpjFHlVGWvo
  1478. G"E5nk4f1KFeviwEhi1EhO3AJJqqTjSWAmkB(LT42g7Y7BHZFdNpffSKqI9tnqISfo
  1479. G"V8cC38RSw4Q9OkvL3tsvEycRKhaDnYpj6D72enhWmx(OtI4QNGhHSXukgjKbWEds
  1480. G"8wIwQzBJXTsnfRKUjxqnjQ(nq21VNhvpp26RQ9)OQCxjn9OjTNi98pbBszDk0os1
  1481. G"rcoFgmcOxOm7ZRxBGIfDNWIadxgg2qgLavW4hHmcRSL8j9UlTYwDLsEYx2BEB(pZ
  1482. G"prlfqFLtSJ5g6sZpOF8Ihgdy8Jn1Jo7h7UsRG)BW98ecwXyINuMrqKVZIQEIFwA5
  1483. G"WIHDVWtfGwMVuu3PamZqJLcAjNj)SqQdJrm7nuQfLcW4W5b57JL7MctKslBsEE1V
  1484. G"DP5ALv7a(3AW5stcxYV3wOJkPiUMfrbSQDw9YAn7GTYcBBh54p(WnB4O92pHM00l
  1485. G"UKWVNu9G)HAHcVMVcX2eNE87S5lrCJ(Q181QQOdHItihkEVyozU21ZSn(MmE1DkV
  1486. G"ypY71lQQDU(q5njrB0)hTOrrcs2ZKs8qRA1ofqVdbN1r15ezy7otmmeLGFOFwTAm
  1487. G"5VcvO)6dIkDo8KGMa0)riTe4XvCw4AJ3dxScEUv4X153BXvlsOIxTYRiRnmr3IoF
  1488. G"MreZnoK3WGZGJ1R2I7wp)E1A59v1R3ILRWhHH6uF7UfEWT46AjJeTI5vP2Zn8b4N
  1489. G"GT3u1JFdj(Y9SVTgneHS46dWokSGefGuw97Ix9F)BSL6AOf(pOGBydpTEj1CxH3e
  1490. G"CUJqEAfudMcColllcjztGU1maBMejI3WROA2U)E1f7AvdBsqkNgcHNN4Pw0dRoyD
  1491. G"zA67la2UOFBN8M8ycGzsMvGIQvAsGtscxO)aspArbrurvVKcoKrxbnP0otouD0K0
  1492. G"EfiVDStJSBqJgeBgNs8tyOQko7SqPqeKabdxYxQ8bjCjSs9lDqZk4cRB1MnEraEH
  1493. G"Pn2GLZXey8eoEeAQCJ8)(nPqLz)gW4fbK51POgzx3MMkOm19CklQlXRxv3d2sB2J
  1494. G"TRsL0ao01VQL7dfYQDZ(G3ieSl1RlBpAJNNC0ZN5rY0MXHNmrEROv3T)kou0PKD9
  1495. IF I<>168 THEN ?:?"Page 2 is too short or long!":J=1
  1496.  
  1497.  * OLX 2.1 TD * This mime was so bad he used real glass.
  1498.  
  1499. --- Maximus 2.01wb
  1500.  * Origin: Command Line BBS =Mpls. MN= V.32bis [612-788-6685] (1:282/2007)
  1501.  
  1502.  
  1503.  
  1504. ════════════════════════════════════════════════════════════════════════════════
  1505.  Area:    QuickBasic
  1506.   Msg:    #7634
  1507.  Date:    04-03-93 16:45 (Public)
  1508.  From:    JOHN GALLAS
  1509.  To:      ALL
  1510.  Subject: eliza.bas     3/3
  1511. ────────────────────────────────────────────────────────────────────────────────
  1512. I=168'Page 3 of ELIZA2.LZH begins here.
  1513. G"(zWASyHtkwvhml3uxopxL3fHlb4cf0HiICe1Xo1BAoZf5fAzacri948J)ulRvpW2
  1514. G"ilwGtPZdhwwnroCzp99pH(H3tfMevflHS3WrOM)VIY304eaFM2i6T4XcBI4xeZi2
  1515. G"O3Dde75WTZc42XIBuRGxzaLu3L(zH59R7tCftTRh3PsS7sPL5BUWhWKXSjH39wbL
  1516. G"FzYCC9H1mQB1lZL0G7a3f88VQ7CbSE4ZQtscyfMs4W6l(i2op5BV8(Hj67VzAI6k
  1517. G"8ErK9ZwsRF)jbC8Uzp3WANtgJU23VzkytV4rZOE1leZ7zn)sGflk4YXcckfyrkhW
  1518. G"1Uh21Q2yx8GPPvaDmXrkZC52Yz7QgEeT2s(MZEl6(TNqw7(PsgS44sDMzs0dTEZ8
  1519. G"3q9nKOrdlyTYCmmSjxTRVeYoo9wLwZtaR2Cp)d15k0vl2zLu9JEKsRVuT0rTwlXU
  1520. G"OOqjKP7R5H3QUwOcllJ0ANd8Q8h62sBUn4tbP19h1s(y)3feCtmkUcO0VoAgHaxa
  1521. G"at39yLiNFsVfvyu4LbWGgiqh3TkIBaoN4ATyeycFs(ezftjemaXXLJxzoHN8HPkU
  1522. G"XDfMNmOZSpKkUi2Vkiamg09sJs6Qm42NgFq0AEWpen(IGDlkii0LrxvWZUus7kma
  1523. G"5GV4LwhbTqG55j7NuTHVANvx)(SV8BRZ(Xp)111x9ET3476YEjITaMfLdqlKGfaI
  1524. G"t3)TLypUUs7e2dyL7TCGMeg3S(tyS)vUP2h27zYtiLcyvy6l7B(xaDqVOLpC(WCy
  1525. G"XGuZiYVV5N5Ey5JjMdmJqc7n8vSV5O515)9NFwxi)pOm0Q90P(ek(U(sVWeZ4LNP
  1526. G"q)a(HvTWgA10IebaaaQkaaa8WhhJbibyavtnKtfrvrD2eaaaG6APPWMwkp4FZF3t
  1527. G"0rgXKwG1gx7Sdj84SgYC5DZNNKlYVNYzGFuGouCbRlmFvaFkdCWeeeA5EthsPi5j
  1528. G"Y9DVRNE(Eo29U5En7t9H870cQmXnQeyeKe7Ny5CEfUc8SiF10gIq6DS3tbfgalFu
  1529. G"FLAIKivBA3MkGwzq8vgWOdG5p6q3iE)hG9WnfBQYaS)(Yq6AeG13SfFaKkxwrcu(
  1530. G"mR7N9II5bRNnbwAP(zl0dgXRDqqLbgJP9sqrUSs9xOYJdlQFRRt5kJwuit5vX8d5
  1531. G"z(q0pVSvJmFkgf5r3baAZ7aOMu((O6NY)XDBCRS0(ZCoAlhn3fV8rQZBBFiztmW0
  1532. G"nPFtIMOJGIyrxRagJ6LOqVp(q02g4hQ9FZla"
  1533. K=255:IF I<>188 THEN ?:?"Page 3 is invalid!":END ELSE IF J THEN END
  1534. OPEN"B",1,"ELIZA2.LZH":N&=8862:FOR Q&=1 TO N&:IF L=0 THEN GOSUB G:L=6
  1535. ?(100&*Q&)\N&;"%";:W=T\P(6-L):GOSUB G:W=W OR T*P(L):B$=CHR$(W AND K)
  1536. L=L-2:PUT 1,,B$:LOCATE,1:NEXT:?"File Extracted: ELIZA2.LZH":END
  1537. G:T=INSTR(T$,MID$(A(L&\63),L& MOD 63+1,1))-1:L&=L&+1:RETURN
  1538. SUB G(B$):A(I)=MID$(B$,2):FOR Z=2 TO LEN(RTRIM$(B$)):C$=MID$(B$,Z,1)
  1539. Q=Q+ASC(C$):NEXT:I=I+1:V=(Q AND 63)<>(INSTR(T$,LEFT$(B$,1))-1):?I;
  1540. LOCATE,1:IF V THEN ?"Physical Line";I;"is bad!":EXIT SUB ELSE END SUB
  1541.  
  1542.  * OLX 2.1 TD * -THE- 4.77MHz 8088 simulator: Microsoft Windows
  1543.  
  1544. --- Maximus 2.01wb
  1545.  * Origin: Command Line BBS =Mpls. MN= V.32bis [612-788-6685] (1:282/2007)
  1546.  
  1547.  
  1548.