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

  1. ════════════════════════════════════════════════════════════════════════════════
  2.  Area:    QuickBasic
  3.   Msg:    #3852
  4.  Date:    04-09-93 22:54 (Public) 
  5.  From:    EARL MONTGOMERY          
  6.  To:      ALL                      
  7.  Subject: Companion Program to VGAC
  8. ────────────────────────────────────────────────────────────────────────────────
  9. 'Part 1 of 5 parts CLIPEDv6.BAS
  10. 'A companion program to VGACLIP.EXE
  11. 'Make sure you save the Document File that follows this post!
  12. ' $INCLUDE: 'qb.bi'
  13. DEFINT K, P
  14. ON ERROR GOTO errorroutine
  15. DIM B(500)
  16. DIM d(100)
  17. DIM PIX(1000)
  18. DIM inreg AS RegType
  19. DIM outreg AS RegType
  20. restart:
  21. SCREEN 0: CLS
  22. PRINT "CLIPEDv6.BAS": PRINT "Copyright (C) Earl Montgomery 1990"
  23. PRINT
  24. GOSUB keyboard
  25. begin:
  26. SCREEN 13: DEF SEG = &HA000
  27. DRAW "c142;bm100,100;r4;br2;bu2;u3;bd5;br2;r4;bl6;bd2;d3;"
  28. DRAW "bm2,2;r6;d6;l6;u6;"
  29. GET (2, 2)-(8, 8), d
  30. GET (98, 92)-(114, 108), B
  31. CLS
  32. OUT &H3C8, 0
  33. FOR k = 0 TO 767: OUT &H3C9, 0: NEXT
  34. DEF SEG = &HA000
  35. BLOAD n$ + ".cap", 0: DEF SEG = &HA000 + 4000
  36. OUT &H3C8, 0
  37. FOR k = 0 TO 767: P = PEEK(k): OUT &H3C9, P: NEXT
  38. REM Main Program
  39. x% = 160: y% = 100
  40. cursor:
  41. PUT (x%, y%), B
  42. inkey1:
  43. i$ = INKEY$: IF i$ = "" THEN GOTO inkey1
  44. IF i$ = " " THEN GOTO inkey1
  45. PUT (x%, y%), B
  46. AA% = ASC(i$) AND 223
  47. IF AA% = 0 THEN GOTO mainkeyboardscan
  48. IF AA% = 71 THEN COLOR 15: CLS : SCREEN 0: DEF SEG : END
  49. IF AA% = 83 THEN GOTO preparetoexit
  50. IF AA% = 72 THEN GOTO helpscrn
  51. IF AA% = 90 THEN GOTO zoom
  52. GOTO cursor
  53. mainkeyboardscan:
  54. IF ASC(MID$(i$, 2)) = 75 THEN x% = x% - 2
  55. IF ASC(MID$(i$, 2)) = 77 THEN x% = x% + 2
  56. IF ASC(MID$(i$, 2)) = 72 THEN y% = y% - 2
  57. IF ASC(MID$(i$, 2)) = 80 THEN y% = y% + 2
  58. IF ASC(MID$(i$, 2)) = 71 THEN x% = x% - 2: y% = y% - 2
  59. IF ASC(MID$(i$, 2)) = 79 THEN x% = x% - 2: y% = y% + 2
  60. IF ASC(MID$(i$, 2)) = 73 THEN x% = x% + 2: y% = y% - 2
  61. IF ASC(MID$(i$, 2)) = 81 THEN x% = x% + 2: y% = y% + 2
  62.  
  63. IF x% > 300 THEN x% = 300
  64. IF x% < 6 THEN x% = 6
  65. IF y% > 180 THEN y% = 180
  66. IF y% < 5 THEN y% = 5
  67. GOTO cursor
  68. helpscrn:
  69. DEF SEG = &HA000: BSAVE "temp.bin", 0, 64780!: CLS
  70. 'End of part 1 of 5
  71.  
  72. --- Maximus 2.01wb
  73.  * Origin: Verbose Ink * Dallas * 214-437-0914 * V32b/HST (1:124/5125)
  74.  
  75.  
  76.  
  77. ════════════════════════════════════════════════════════════════════════════════
  78.  Area:    QuickBasic
  79.   Msg:    #3853
  80.  Date:    04-09-93 22:56 (Public) 
  81.  From:    EARL MONTGOMERY          
  82.  To:      ALL                      
  83.  Subject: Part 2 of Clipedv6       
  84. ────────────────────────────────────────────────────────────────────────────────
  85. 'Part 2 of 5. Clipedv6.Bas
  86. DEF SEG = &HA000 + 4000
  87. OUT &H3C7, 0
  88. FOR k = 0 TO 767
  89. A = INP(&H3C9)
  90. POKE k, A
  91. NEXT
  92. SCREEN 9
  93. COLOR 12, 0
  94. PRINT "Command from main screen:"
  95. PRINT "<G>=Good Bye  <H>=This menu."
  96. PRINT "<S>=Press this key before saving the picture using VGACLIP!"
  97. PRINT "<Z>=Go to ZOOM Edit Mode."
  98. PRINT
  99. PRINT "Commands from ZOOM Edit Mode:"
  100. PRINT "<D>=Pen-Down Mode."
  101. PRINT "<C>=Increases color value."
  102. PRINT "<->=Decreases color value."
  103. PRINT "<F>=Changes color to the same color as one block to the right."
  104. PRINT "<L>=Return to the main screen without saving the editing."
  105. PRINT "<S>=Saves your editing and returns to the main screen."
  106. PRINT "<U>=Pen Up Mode."
  107. PRINT "Use the arrow keys on the keypad to move the cursor. Home moves"
  108. PRINT "the cursor up and to the left. PgUp moves it up and to the right."
  109. PRINT "End moves it down and to the left and PgDn moves it down and to"
  110. PRINT "the right. All keys are repeat keys. Just hold them down!"
  111. PRINT "Press any key to continue."
  112. inkey2:
  113. Z$ = INKEY$: IF Z$ = "" THEN GOTO inkey2
  114. SCREEN 13
  115. OUT &H3C8, 0: FOR k = 0 TO 767: OUT &H3C9, 0: NEXT
  116. DEF SEG = &HA000: BLOAD "temp.bin", 0
  117. DEF SEG = &HA000 + 4000
  118. OUT &H3C8, 0
  119. FOR k = 0 TO 767: P = PEEK(k): OUT &H3C9, P: NEXT
  120. GOTO cursor
  121. zoom:
  122. GET (x%, y%)-(x% + 19, y% + 19), PIX
  123. DEF SEG = &HA000 + 4000
  124. OUT &H3C7, 0
  125. FOR k = 0 TO 767: A = INP(&H3C9): POKE k, A: NEXT
  126. DEF SEG = &HA000: BSAVE "temp.bin", 0, 64780!
  127. CLS : PUT (50, 50), PIX, PSET
  128. FOR y = 4 TO 164 STEP 8
  129. LINE (100, y)-(260, y), 142
  130. NEXT
  131. FOR x = 100 TO 260 STEP 8
  132. LINE (x, 4)-(x, 164), 142
  133. NEXT
  134. x = 160: y = 100
  135. X1 = 59: Y1 = 60
  136. i% = 1
  137. OPEN "r", #1, "zoom", 1: FIELD 1, 1 AS O$
  138.  
  139. FOR y = 50 TO 69
  140. FOR x = 50 TO 69
  141. LSET O$ = CHR$(POINT(x, y)): PUT 1, i%
  142. i% = i% + 1
  143. NEXT x, y
  144. CLOSE #1
  145. i% = 1
  146. 'End of part 2 of 5
  147.  
  148. --- Maximus 2.01wb
  149.  * Origin: Verbose Ink * Dallas * 214-437-0914 * V32b/HST (1:124/5125)
  150.  
  151.  
  152.  
  153. ════════════════════════════════════════════════════════════════════════════════
  154.  Area:    QuickBasic
  155.   Msg:    #3854
  156.  Date:    04-09-93 22:58 (Public) 
  157.  From:    EARL MONTGOMERY          
  158.  To:      ALL                      
  159.  Subject: Part 3 of clipedv6.bas   
  160. ────────────────────────────────────────────────────────────────────────────────
  161. 'Part 3 of 5 clipedv6.bas
  162. OPEN "r", #1, "zoom", 1: FIELD 1, 1 AS O$
  163. FOR y = 6 TO 164 STEP 8
  164. FOR x = 102 TO 260 STEP 8
  165. GET #1, i%: i% = i% + 1
  166. IF ASC(O$) = 142 THEN PAINT (x, y), 143, 142: GOTO skipover
  167. PAINT (x, y), ASC(O$), 142
  168. skipover:
  169. NEXT x, y
  170. CLOSE #1
  171. x = 176: y = 88
  172. flag$ = "jump"
  173. LINE (170, 180)-(190, 198), 142, B
  174. c = POINT(x, y)
  175. IF c = 142 THEN c = 143
  176. PAINT (180, 185), c, 142: LOCATE 25, 30: PRINT c;
  177. inkey3:
  178. i$ = INKEY$: IF i$ = "" THEN GOSUB putcursor: GOTO inkey3
  179. AA = ASC(i$)
  180. IF AA = 0 THEN GOTO keyboardscanfromzoom
  181. IF i$ = "d" OR i$ = "D" THEN flag$ = ""
  182. IF i$ = "c" OR i$ = "C" THEN c = c + 1: IF c > 255 THEN c = 0
  183. IF i$ = "-" OR i$ = "_" THEN c = c - 1: IF c < 0 THEN c = 0
  184. IF c = 142 AND i$ = "-" OR i$ = "_" THEN c = 141
  185. IF c = 142 AND i$ = "c" OR i$ = "C" THEN c = 143
  186. IF i$ = "c" OR i$ = "C" THEN GOSUB printnewcolor
  187. IF i$ = "-" OR i$ = "_" THEN GOSUB printnewcolor
  188. IF i$ = "f" OR i$ = "F" THEN c = POINT(x + 8, y): IF c = 142 THEN c = 143
  189. IF i$ = "s" OR i$ = "S" THEN GOTO savefromkeyboard
  190. IF i$ = "l" OR i$ = "L" THEN GOSUB bloadscrn: GOTO cursor
  191. IF i$ = "u" OR i$ = "U" THEN flag$ = "jump"
  192. IF flag$ = "" THEN PAINT (x, y), c, 142: PSET (X1, Y1), c
  193. PUT (x - 3, y - 3), d: FOR d = 0 TO 50: NEXT: PUT (x - 3, y - 3), d
  194. i$ = "": GOTO inkey3
  195. keyboardscanfromzoom:
  196. IF ASC(MID$(i$, 2)) = 75 THEN x = x - 8: X1 = X1 - 1
  197. IF ASC(MID$(i$, 2)) = 77 THEN x = x + 8: X1 = X1 + 1
  198. IF ASC(MID$(i$, 2)) = 72 THEN y = y - 8: Y1 = Y1 - 1
  199. IF ASC(MID$(i$, 2)) = 80 THEN y = y + 8: Y1 = Y1 + 1
  200. IF ASC(MID$(i$, 2)) = 71 THEN x = x - 8: y = y - 8: X1 = X1 - 1: Y1 = Y1 - 1
  201. IF ASC(MID$(i$, 2)) = 79 THEN x = x - 8: y = y + 8: X1 = X1 - 1: Y1 = Y1 + 1
  202. IF ASC(MID$(i$, 2)) = 73 THEN x = x + 8: y = y - 8: X1 = X1 + 1: Y1 = Y1 - 1
  203. IF ASC(MID$(i$, 2)) = 81 THEN x = x + 8: y = y + 8: X1 = X1 + 1: Y1 = Y1 + 1
  204. IF x > 256 THEN x = 256
  205. IF x < 104 THEN x = 104
  206. IF y > 160 THEN y = 160
  207. IF y < 8 THEN y = 8
  208. IF X1 < 50 THEN X1 = 50
  209. IF X1 > 69 THEN X1 = 69
  210. IF Y1 > 69 THEN Y1 = 69
  211. IF Y1 < 50 THEN Y1 = 50
  212. IF flag$ = "jump" THEN GOSUB putcursor: GOTO inkey3
  213. PAINT (x, y), c, 142
  214.  
  215. PSET (X1, Y1), c
  216. GOTO inkey3
  217. savefromkeyboard:
  218. GET (50, 50)-(69, 69), PIX
  219. DEF SEG = &HA000: BLOAD "temp.bin", 0
  220. PUT (x%, y%), PIX, PSET
  221. GOTO cursor
  222.  
  223. --- Maximus 2.01wb
  224.  * Origin: Verbose Ink * Dallas * 214-437-0914 * V32b/HST (1:124/5125)
  225.  
  226.  
  227.  
  228. ════════════════════════════════════════════════════════════════════════════════
  229.  Area:    QuickBasic
  230.   Msg:    #3855
  231.  Date:    04-09-93 23:02 (Public) 
  232.  From:    EARL MONTGOMERY          
  233.  To:      ALL                      
  234.  Subject: Part 4 of Clipedv4       
  235. ────────────────────────────────────────────────────────────────────────────────
  236. 'Part 4 of 5. Clipedv6.bas
  237. preparetoexit:
  238. REM blanks cursor and saves-ends
  239. PUT (x%, y%), B: PUT (x%, y%), B
  240. inkey4:
  241. i$ = INKEY$: IF i$ = "" THEN GOTO inkey4
  242. IF i$ = "g" OR i$ = "G" THEN CLS : SCREEN 0: END
  243. GOTO inkey4
  244. errorroutine:
  245. SCREEN 0: WIDTH 80: CLS : RESUME restart
  246. keyboard:
  247. DIM inregs AS RegTypeX, outregs AS RegTypeX
  248. filespec$ = "*.cap" + CHR$(0)
  249. PRINT STRING$(75, 196)
  250. inregs.ax = &H2F00
  251. CALL INTERRUPTX(&H21, inregs, outregs)
  252. data.seg = outregs.es
  253. data.off = outregs.bx
  254. inregs.ax = &H4E00
  255. inregs.dx = SADD(filespec$)
  256. inregs.ds = -1
  257. CALL INTERRUPTX(&H21, inregs, outregs)
  258. cy = outregs.flags AND 1
  259. IF cy = 0 THEN
  260. WHILE cy = 0
  261. DEF SEG = data.seg
  262. f.name$ = ""
  263. i = data.off + 30
  264. WHILE PEEK(i) <> 0
  265. f.name$ = f.name$ + CHR$(PEEK(i))
  266. i = i + 1
  267. WEND
  268. DEF SEG
  269. PRINT f.name$ + " ";
  270. inregs.ax = &H4F00
  271. CALL INTERRUPTX(&H21, inregs, outregs)
  272. cy = outregs.flags AND 1
  273. WEND
  274. ELSE GOSUB PRINTNOCAPFILES
  275. END IF
  276. PRINT STRING$(75, 196)
  277. INPUT "Filename to load"; n$
  278. RETURN
  279. PRINTNOCAPFILES:
  280. PRINT "There are no .CAP files in this directory."
  281. PRINT STRING$(75, 196)
  282. INKEY5:
  283. i$ = INKEY$: IF i$ = "" THEN GOTO INKEY5
  284. DEF SEG : CLS : SCREEN 0: WIDTH 80: END
  285. putcursor:
  286. PUT (x - 3, y - 3), d
  287. FOR d = 0 TO 50: NEXT
  288. PUT (x - 3, y - 3), d
  289.  
  290. RETURN
  291. printnewcolor:
  292. PAINT (180, 185), c, 142
  293. LOCATE 25, 30
  294. PRINT "    ";
  295. LOCATE 25, 30
  296. PRINT c;
  297. RETURN
  298. 'end of part 4 of 5
  299.  
  300. --- Maximus 2.01wb
  301.  * Origin: Verbose Ink * Dallas * 214-437-0914 * V32b/HST (1:124/5125)
  302.  
  303.  
  304.  
  305. ════════════════════════════════════════════════════════════════════════════════
  306.  Area:    QuickBasic
  307.   Msg:    #3856
  308.  Date:    04-09-93 23:04 (Public) 
  309.  From:    EARL MONTGOMERY          
  310.  To:      ALL                      
  311.  Subject: Part 5 of 5 Clipedv6     
  312. ────────────────────────────────────────────────────────────────────────────────
  313. 'Part 5 of 5. Clipedv6.bas
  314. bloadscrn:
  315. CLS
  316. DEF SEG = &HA000
  317. BLOAD "temp.bin", 0
  318. RETURN
  319. 'end of part 5 of 5
  320.  
  321. --- Maximus 2.01wb
  322.  * Origin: Verbose Ink * Dallas * 214-437-0914 * V32b/HST (1:124/5125)
  323.  
  324.  
  325.  
  326. ════════════════════════════════════════════════════════════════════════════════
  327.  Area:    QuickBasic
  328.   Msg:    #5290
  329.  Date:    04-09-93 13:17 (Public) 
  330.  From:    JOHN GALLAS              
  331.  To:      JASON PETERSON           
  332.  Subject: 2400+baud, and moving cu 
  333. ────────────────────────────────────────────────────────────────────────────────
  334. JP>Is it true that QuickBASIC 4.5 will only support up to 2400 baud?
  335.  
  336. Nope, it'll go up to 19,200.
  337.  
  338. JP>And ifso, is there someway to get around that?
  339.  
  340. JP>Also, to teach mymelf a little bit more, I've been writing my
  341. JP>own communications routines (which is why the first and now
  342. JP>this question) and I think I've got everything figured out,
  343. JP>except I'm not sure how to move the cursor remotely (such
  344. JP>as with LOCATE).
  345.  
  346. JP>I assume you have to use ANSI escape sequences.. Does anyone
  347. JP>have some code they'd be willing to share?
  348.  
  349. Try this sub:
  350.  
  351. SUB ModemLocate (y, x)
  352.  
  353. a$ = CHR$(27) + "["
  354.  
  355. a$ = a$ + LTRIM$(STR$(y)) + ";" + LTRIM$(STR$(x))
  356.  
  357. a$ = a$ + "H"
  358.  
  359. 'And now send a$ out to the modem with whatever mode routines
  360. 'you use.
  361.  
  362. END SUB
  363.  
  364.  * OLX 2.1 TD * Two blondes in a Volkswagon: Farfromthinkin
  365.  
  366. --- Maximus 2.01wb
  367.  * Origin: Command Line BBS =Mpls. MN= V.32bis [612-788-6685] (1:282/2007)
  368.  
  369.  
  370.  
  371. ════════════════════════════════════════════════════════════════════════════════
  372.  Area:    QuickBasic
  373.   Msg:    #5802
  374.  Date:    04-10-93 08:22 (Public) 
  375.  From:    RICH GELDREICH           
  376.  To:      VICTOR YIU               
  377.  Subject: Prototype 1/3            
  378. ────────────────────────────────────────────────────────────────────────────────
  379. '________O_/________________________| SNIP 
  380. |______________________\_O_______
  381. '        O \                        | HERE |                      / O
  382. 'This file created by PostIt! v6.0.
  383. '>>> Start of page 1.
  384.  
  385. 'Prototype PostIt! script creator. Created April, 1993
  386. 'This  simple  program  creates  a  newer  type  of  PostIt!  self
  387. 'extracting script that decodes very quickly and can handle  files
  388. 'up  to 34,000 bytes.
  389. '
  390. 'This script eliminates the "middle  man"  by  outputting  to  the
  391. 'destination  file directly in the G sub.  This speeds up decoding
  392. 'and lowers memory usage  because  we  don't  have to first append
  393. 'each G line onto a string before  the  file  is  decoded.   Since
  394. 'we're  not using strings anymore, the only limit that remains now
  395. 'is QB's  internal limit on  how  large  a program may be(it might
  396. 'actually be a dgroup limitation, not positive yet).
  397. '
  398. 'I haven't extensively tested the scripts this program creates, so
  399. 'use with caution.
  400. '
  401. 'To decode a script created by  this  program  directly  from  the
  402. 'command line just type:
  403. '
  404. '       QB/run<script> or QBASIC /run<script>
  405. '
  406. 'Where  <script>  is  the name of the script to decode, of course.
  407. 'You still have to edit  out  any  garbage  in the file, I haven't
  408. 'worked out any way for the self extractor to do that, yet...
  409. '
  410. 'If the file gets decoded correctly, the script will  exit  right
  411. 'back   to   DOS   without   making  you  lift  a  single  finger.
  412. '(Unfortunatly PDS prompts  you  if  to  save  the  file after the
  413. 'script is decoded.  I don't know if there is  a  way  to  disable
  414. 'this, so use QB4.5 or QBASIC instead.)
  415. '
  416. 'If a  CRC  error  does  occur  the  script  stays  in  the QB/QBX
  417. 'environment so you can check it out for garbage.
  418. '
  419. 'If  you  don't  want  to  exit  back  to DOS after the script is
  420. 'decoded, then just don't use the /run option on the command line.
  421.  
  422. DEFINT A-Z
  423.  
  424. DECLARE SUB EncodeStart ()
  425. DECLARE SUB EncodeBlock ()
  426. DECLARE SUB EncodeEnd ()
  427.  
  428. DIM BytesLeft AS LONG
  429.  
  430. DIM SHARED I$
  431. DIM SHARED InputBuffer$, BytesRead
  432.  
  433. DIM SHARED GoodChars$
  434. DIM SHARED BitBuffer, BitsInBuffer
  435. DIM SHARED OutputLine$, OutputPos, LinesWritten
  436. DIM SHARED RunningCRC
  437. DIM SHARED Power2(0 TO 7)
  438.  
  439. IF POS(0) <> 1 THEN PRINT
  440. PRINT "PostIt! Prototype Script Encoder By RG"
  441. INPUT "Input file"; I$
  442. INPUT "Output file"; O$
  443.  
  444. OPEN I$ FOR BINARY AS #1
  445. BytesLeft = LOF(1)
  446. IF BytesLeft = 0 THEN
  447.     CLOSE
  448.     KILL I$
  449.     PRINT I$; " wasn't found."
  450.     END
  451. ELSEIF BytesLeft > 34000 THEN
  452.     PRINT I$; " is too big for one script."
  453.     END
  454. END IF
  455.  
  456. OPEN O$ FOR OUTPUT AS #2 LEN = 4096
  457.  
  458. EncodeStart
  459.  
  460. InputBuffer$ = SPACE$(4096)
  461. BytesRead = 4096
  462.  
  463. '>>> Continued on page 2
  464.  
  465. --- MsgToss 2.0b
  466.  * Origin: Computer Co-Op - Voorhees, NJ | Ted Hare (1:266/29)
  467.  
  468.  
  469.  
  470. ════════════════════════════════════════════════════════════════════════════════
  471.  Area:    QuickBasic
  472.   Msg:    #5803
  473.  Date:    04-10-93 08:23 (Public) 
  474.  From:    RICH GELDREICH           
  475.  To:      VICTOR YIU               
  476.  Subject: Prototype 2/3            
  477. ────────────────────────────────────────────────────────────────────────────────
  478. '>>> Start of page 2.
  479.  
  480. DO
  481.     IF BytesLeft < 4096 THEN
  482.         InputBuffer$ = SPACE$(BytesLeft)
  483.         BytesRead = BytesLeft
  484.     END IF
  485.  
  486.     GET #1, , InputBuffer$
  487.  
  488.     EncodeBlock
  489.  
  490.     BytesLeft = BytesLeft - BytesRead
  491. LOOP WHILE BytesLeft
  492.  
  493. EncodeEnd
  494.  
  495. CLOSE 1, 2
  496.  
  497. LOCATE , 1
  498. PRINT "Finished!"
  499. END
  500.  
  501. SUB EncodeBlock
  502.  
  503.     FOR a = 1 TO BytesRead
  504.  
  505.         k = ASC(MID$(InputBuffer$, a, 1))
  506.  
  507.         RunningCRC = (RunningCRC + k) AND 255
  508.  
  509.         BitBuffer = BitBuffer OR k * Power2(BitsInBuffer)
  510.         BitsInBuffer = BitsInBuffer + 8
  511.  
  512.         DO WHILE BitsInBuffer >= 6
  513.  
  514.             MID$(OutputLine$, OutputPos) = MID$(GoodChars$, 1 +_
  515.  (BitBuffer AND 63), 1)
  516.             OutputPos = OutputPos + 1
  517.             IF OutputPos = 66 THEN
  518.                 PRINT #2, OutputLine$
  519.                 OutputPos = 3
  520.                 LinesWritten = LinesWritten + 1
  521.  
  522.                 IF (LinesWritten AND 15) = 0 THEN
  523.                     LOCATE , 1: PRINT LinesWritten;
  524.                 END IF
  525.             END IF
  526.  
  527.             BitBuffer = BitBuffer \ 64
  528.             BitsInBuffer = BitsInBuffer - 6
  529.  
  530.         LOOP
  531.  
  532.  
  533.     NEXT
  534.  
  535. END SUB
  536.  
  537. SUB EncodeEnd
  538.  
  539.     IF BitsInBuffer <> 0 THEN
  540.         MID$(OutputLine$, OutputPos) = MID$(GoodChars$, 1 +_
  541.  (BitBuffer AND 63), 1)
  542.         OutputPos = OutputPos + 1
  543.     END IF
  544.  
  545.     IF OutputPos <> 3 THEN
  546.         PRINT #2, LEFT$(OutputLine$, OutputPos - 1)
  547.         LinesWritten = LinesWritten + 1
  548.     END IF
  549.  
  550.     Q$ = CHR$(34)
  551.  
  552. L1$ = "IF K<>" + MID$(STR$(RunningCRC), 2) + " THEN ?" + Q$ +_
  553.  "Bad CRC!" + Q$ + ":CLOSE:KILL F$ ELSE ?"
  554. L1$ = L1$ + Q$ + "Success!" + Q$ + ":SYSTEM"
  555.  
  556. L2$ = "SUB G(A$):FOR A=1 TO LEN(RTRIM$(A$)):R=R+T(I,ASC(MID$("+_
  557. "A$,A,1)))"
  558.  
  559. L3$ = "I=I+6:IF I>7 THEN ?#1,CHR$(R AND Q);:K=(K+R)AND"+_
  560. " Q:R=R\256:I=I-8"
  561.  
  562. '>>> Continued on page 3
  563.  
  564. --- MsgToss 2.0b
  565.  * Origin: Computer Co-Op - Voorhees, NJ | Ted Hare (1:266/29)
  566.  
  567.  
  568.  
  569. ════════════════════════════════════════════════════════════════════════════════
  570.  Area:    QuickBasic
  571.   Msg:    #5804
  572.  Date:    04-10-93 08:26 (Public) 
  573.  From:    RICH GELDREICH           
  574.  To:      VICTOR YIU               
  575.  Subject: Prototype 3/3            
  576. ────────────────────────────────────────────────────────────────────────────────
  577. '>>> Start of page 3.
  578.  
  579. L4$ = "NEXT:L&=L&+100:?L&\" + MID$(STR$(LinesWritten), 2) +_
  580.  ";CHR$(29)"
  581. L4$ = L4$ + Q$ + "%" + Q$ + ";:LOCATE,1:END SUB"
  582.  
  583.     PRINT #2, L1$
  584.     PRINT #2, L2$
  585.     PRINT #2, L3$
  586.     PRINT #2, L4$
  587.  
  588. END SUB
  589.  
  590. SUB EncodeStart
  591.  
  592.     k = 1
  593.     FOR a = 0 TO 7
  594.         Power2(a) = k
  595.         k = k * 2
  596.     NEXT
  597.  
  598.     GoodChars$ = "abcdefghijklmnopqrstuvwxyz"
  599.     GoodChars$ = GoodChars$ + UCASE$(GoodChars$) + "0123456789()"
  600.  
  601.     OutputLine$ = "G" + CHR$(34) + SPACE$(63)
  602.     OutputPos = 3
  603.  
  604.     FOR a = LEN(I$) TO 1 STEP -1
  605.         IF INSTR("\:", MID$(I$, a, 1)) THEN EXIT FOR
  606.     NEXT
  607.     P$ = UCASE$(MID$(I$, a + 1))
  608.  
  609.     Q$ = CHR$(34)
  610.  
  611. L0$ = "'This prototype PostIt! script was created on " + DATE$ +_
  612.  "."
  613.  
  614. L1$ = "DEFINT A-Z:T$=" + Q$ + "abcdefghijklmnopqrstuvwxyz" + Q$_
  615.  + ":F$=" + Q$ + P$ + Q$
  616.  
  617. L2$ = "OPEN" + Q$ + "O" + Q$ + ",1,F$,8192:DIM SHARED"+_
  618. " Q,T(7,122),R,I,L&,K"
  619. L2$ = L2$ + ":T$=T$+UCASE$(T$)"
  620.  
  621. L3$ = "T$=T$+" + Q$ + "0123456789()" + Q$ + ":FOR B=0 TO"+_
  622. " 7:M=2^B:Z=0"
  623. L3$ = L3$ + ":FOR A=1 TO 64"
  624.  
  625. L4$ = "T(B,ASC(MID$(T$,A,1)))=Z:Z=Z+M:NEXT A,B:Q=255:?"
  626. L4$ = L4$ + Q$ + "Extracting " + Q$ + "F$"
  627.  
  628.     PRINT #2, L0$
  629.     PRINT #2, L1$
  630.  
  631.     PRINT #2, L2$
  632.     PRINT #2, L3$
  633.     PRINT #2, L4$
  634.  
  635. END SUB
  636.  
  637.  
  638. '________O_/________________________| SNIP 
  639. |______________________\_O_______
  640. '        O \                        | HERE |                      / O
  641.  
  642. Could you decrease the size of this ^^^^^^^ in the next version? Looking 
  643. back at my posted message, I noticed that it gets badly cut off because 
  644. it's larger than 65 characters or so.
  645.  
  646.     I'm working on a way to meet Coridon's challenge and increase the 
  647. maximum script size to 64k or so... It might involve assembly.
  648.  
  649.     Rich
  650.  
  651. --- MsgToss 2.0b
  652.  * Origin: Computer Co-Op - Voorhees, NJ | Ted Hare (1:266/29)
  653.  
  654.  
  655.  
  656. ════════════════════════════════════════════════════════════════════════════════
  657.  Area:    QuickBasic
  658.   Msg:    #10043
  659.  Date:    04-12-93 20:57 (Public) 
  660.  From:    JOHN GALLAS              
  661.  To:      JASON PETERSON           
  662.  Subject: 2400+baud, and moving cu 
  663. ────────────────────────────────────────────────────────────────────────────────
  664. JP> JG>  JP>Is it true that QuickBASIC 4.5 will only support up to 2400 baud?
  665. JP> JG>  Nope, it'll go up to 19,200.
  666. JP>
  667. JP> Great!  How do you get it to open the modem at that high of a speed
  668. JP> then?  It seems to error on anything higher than 9600 baud!
  669.  
  670. I'm pretty sure that you can use OPEN COM on 19200, but I'm not sure about 
  671. numbers in between.  This sub will let you change it to whatever you want 
  672. after you've opened it.
  673.  
  674.  
  675. DEFINT A-Z
  676.  
  677. DECLARE SUB BaudRate (Func, Port, baud&, err.code)
  678.  
  679. 'example use:
  680.  
  681. OPEN "COM1:2400,N,8,1" FOR RANDOM AS #1
  682.  
  683. 'now bump it up to 115,200 bps
  684.  
  685. BaudRate 1, 1, 115200, err.code
  686.  
  687. IF err.code = 0 THEN PRINT "Success!"
  688.  
  689. END
  690.  
  691.  
  692. SUB BaudRate (Func, Port, baud&, err.code) STATIC
  693.  
  694. 'INPUT: FUNC=0  -  return the current baud rate in baud&
  695. '       FUNC=1  -  set the baud rate from baud&
  696. 'See the Serial/Parallel Adapter Tech.Ref. for details
  697.  
  698. err.code = 0
  699.  
  700. IF (Port <> 1 AND Port <> 2) THEN err.code = -1: GOTO finito
  701. IF Func = 1 AND baud& < 100 THEN err.code = -2: GOTO finito
  702.  
  703. ADDR = &H4F8 - (&H100 * Port)            ' base address of port reg's
  704. ADDR.LCR = ADDR + 3                      ' Line Control Register
  705. ADDR.DL.LSB = ADDR + 0: ADDR.DL.MSB = ADDR + 1' Divisor Latch LSB & MSB
  706. VAL.LCR = INP(ADDR.LCR)                  ' get old LCR value
  707. OUT ADDR.LCR, VAL.LCR AND &H7F           ' Disable DLAB to get to inters
  708. VAL.INT = INP(ADDR.DL.MSB)               ' Get the int enable statuses
  709. OUT ADDR.DL.MSB, 0                        ' Disable all modem intertupts
  710. OUT ADDR.LCR, VAL.LCR OR &H80            ' Enable DLAB to gain access
  711. IF Func = 0 THEN GOTO getbaud             ' if get then go
  712. DIVISOR = (1843200! / baud&) / 16'see page 17 of the SERIAL/PARALLEL ADAPTER (
  713.                                  'in the back of the PC-AT TECH.REF.)
  714. MSB = DIVISOR \ 2 ^ 8: LSB = DIVISOR MOD 2 ^ 8
  715. OUT ADDR.DL.MSB, MSB
  716. OUT ADDR.DL.LSB, LSB' put out the new baud rate
  717.  
  718. GOTO finito
  719.  
  720. getbaud:
  721. 'get the current baud rate
  722. MSB = INP(ADDR.DL.MSB)
  723. LSB = INP(ADDR.DL.LSB)'get old baud rate
  724. DIVISOR = MSB * 2 ^ 8 + LSB
  725. baud& = (1843200! / DIVISOR) / 16
  726.  
  727. finito:
  728. IF err.code = 0 THEN
  729.         OUT ADDR.LCR, VAL.LCR AND &H7F    ' Disable DLAB to get to inters
  730.         OUT ADDR.DL.MSB, VAL.INT          ' Replace orig. inter. values
  731.         OUT ADDR.LCR, VAL.LCR             ' Replace orig. LCR values
  732. END IF
  733.  
  734. END SUB
  735.  
  736. --- ProBoard v1.31b1 [Reg]
  737.  * Origin: Rivendell BBS - ProBoard Support USA - 612.323.9473 (1:282/90)
  738.  
  739.  
  740.  
  741. ════════════════════════════════════════════════════════════════════════════════
  742.  Area:    QuickBasic
  743.   Msg:    #11010
  744.  Date:    04-13-93 06:36 (Public) 
  745.  From:    JOE NEGRON               
  746.  To:      DOUG MILLER              
  747.  Subject: Stuff Keyboard.          
  748. ────────────────────────────────────────────────────────────────────────────────
  749. DM> Can anyone tell me how to stuff keys into the keyboard buffer?
  750.  
  751. Here ya go:
  752.  
  753. ============================== Begin code ==============================
  754. DEFINT A-Z
  755.  
  756. DECLARE SUB StuffBuf (Keys$)
  757.  
  758. '***********************************************************************
  759. '* SUB StuffBuf
  760. '*
  761. '* PURPOSE
  762. '*    Inserts Keys$ into the keyboard buffer just as if it had been
  763. '*    entered from the keyboard.  Note that only fifteen characters may
  764. '*    be inserted or the machine may lock up.
  765. '***********************************************************************
  766. SUB StuffBuf (Keys$) STATIC
  767.    Work$ = LEFT$(Keys$, 15)                  '15 characters maximum
  768.    Length% = LEN(Work$)
  769.  
  770.    DEF SEG = 0
  771.    POKE &H41A, &H1E                          'buffer head
  772.    POKE &H41C, &H1E + Length% * &H2          'buffer tail
  773.  
  774.    FOR X% = 1 TO Length%                     'POKE each char one by one
  775.       POKE &H41C + X% * &H2, ASC(MID$(Work$, X%))
  776.    NEXT X%
  777.  
  778.    DEF SEG
  779.  
  780.    Work$ = ""
  781. END SUB
  782. =============================== End code ===============================
  783.  
  784.           --Joe in Bay Ridge, Brooklyn, NY, Tue, 04-13-1993--
  785.  
  786. ... Put on your seatbelt.  I wanna try something...
  787. ___
  788.  X Blue Wave/QWK v2.12 X
  789.  
  790. --- Maximus 2.01wb
  791.  * Origin: * BlueDog BBS * (212) 594-4425 * NYC FileBone Hub (1:278/709)
  792.  
  793.  
  794.  
  795. ════════════════════════════════════════════════════════════════════════════════
  796.  Area:    QuickBasic
  797.   Msg:    #7264
  798.  Date:    04-11-93 20:41 (Public) 
  799.  From:    HARVEY PARISIEN          
  800.  To:      MIKE DORAN               
  801.  Subject: READREP.BAS  1/4         
  802. ────────────────────────────────────────────────────────────────────────────────
  803. On (10 Apr 93) Mike Doran wrote to HARVEY PARISIEN...
  804.  
  805.  MD> Many mail readers give it up at 100 lines let alone 237! 
  806.  MD> Any help muchly appreciated. 
  807.  
  808. ''====== This message has been split into several parts...
  809. ''
  810. ''====== PART 1
  811. ''
  812.  
  813. '--------------------------------------------------------------------------
  814. ' Author: Harvey Parisien
  815. ' Copyright (c) 1993 Harvey Parisien, all rights reserved.
  816. ' Overerx Inc., Box 323 Station A, Kingston, Ontario, Canada  K7M 6R2
  817. ' FidoNet: 1:249/114
  818. '--------------------------------------------------------------------------
  819. ' Program: READREP.EXE
  820. ' Purpose: Quick and dirty REP packet unarchiver reader
  821. '--------------------------------------------------------------------------
  822. ' This code can be used by anyone.  It has been stripped of it's normal
  823. ' video routines so it can be run in any environment QB or PDS etc.  It
  824. ' is intended for use as a simple REP packet check, or for informational
  825. ' purposes.  There are a few routines that could possibly help in further
  826. ' developing QWK readers.  Enjoy... HP
  827.  
  828. DEFINT A-Z
  829. DECLARE FUNCTION autounarc$ (arcname$)
  830. DECLARE SUB dism (message$, array$(), numlines%, Ret%, maxwid%)
  831. DECLARE SUB tlist (array$(), numlines%, maxwid%, Rows%, trow%, lcol%, Ret%)
  832. DECLARE FUNCTION scan% ()
  833. DECLARE FUNCTION Exist (filename$)
  834. DECLARE SUB display (filename$)
  835.  
  836. TYPE RegTypeX
  837.    AX    AS INTEGER
  838.    bx    AS INTEGER
  839.    CX    AS INTEGER
  840.    DX    AS INTEGER
  841.    bp    AS INTEGER
  842.    si    AS INTEGER
  843.    di    AS INTEGER
  844.    flags AS INTEGER
  845.    DS    AS INTEGER
  846.    es    AS INTEGER
  847. END TYPE
  848.  
  849. TYPE dat
  850.    flag AS STRING * 1
  851.    num AS STRING * 7
  852.    date AS STRING * 8
  853.    time AS STRING * 5
  854.    to AS STRING * 25
  855.    From AS STRING * 25
  856.  
  857.    subject AS STRING * 25
  858.    Pass AS STRING * 12
  859.    ref AS STRING * 8
  860.    blocks AS STRING * 6
  861.    status AS STRING * 1
  862.    area AS STRING * 1
  863.    dummy AS STRING * 4
  864. END TYPE
  865.  
  866. TYPE block
  867.    a AS STRING * 128
  868. END TYPE
  869.  
  870. DIM SHARED dat AS dat
  871. DIM SHARED block AS block
  872.  
  873. CLS
  874. filename$ = COMMAND$                'get filename
  875. IF LEN(filename$) = 0 THEN
  876.    PRINT "USE: READREP reparchivename.ext"
  877.    END
  878. END IF
  879. arccmd$ = autounarc$(filename$)     'get unarchive command
  880. PRINT arccmd$                       'print unarchive command
  881. SHELL arccmd$                       'shell out and unarchive
  882. F$ = filename$                      'create local packet name
  883. MID$(F$, LEN(F$) - 2) = "MSG"
  884. i = INSTR(F$, "\")
  885. DO WHILE i > 0
  886.    F$ = MID$(F$, i + 1)
  887.    i = INSTR(F$, "\")
  888. LOOP
  889. CALL display(F$)
  890. END
  891.  
  892. FUNCTION autounarc$ (arcname$)
  893.    autounarc$ = ""
  894.    IF NOT Exist(arcname$) THEN EXIT FUNCTION
  895.    'get archive id markers
  896.    ff = FREEFILE
  897.    OPEN arcname$ FOR BINARY AS ff
  898.    tem1$ = SPACE$(5)
  899.    tem2$ = SPACE$(1)
  900.    GET #ff, 1, tem1$
  901.    GET #ff, LOF(ff) - 1, tem2$
  902.    CLOSE ff
  903.    'test for archive type and unarchive
  904.  
  905. ''====== CONTINUED
  906.  
  907.  
  908. --- PPoint 1.56
  909.  * Origin: Harvey Parisien (1:249/114)
  910.  
  911.  
  912.  
  913.  
  914. ════════════════════════════════════════════════════════════════════════════════
  915.  Area:    QuickBasic
  916.   Msg:    #7265
  917.  Date:    04-11-93 20:42 (Public) 
  918.  From:    HARVEY PARISIEN          
  919.  To:      MIKE DORAN               
  920.  Subject: READREP.BAS 2/4          
  921. ────────────────────────────────────────────────────────────────────────────────
  922. ''====== PART 2
  923. ''
  924.  
  925.    IF LEFT$(tem1$, 4) = "PK" + CHR$(3) + CHR$(4) THEN
  926.       autounarc$ = "PKUNZIP -o " + arcname$
  927.    ELSEIF RIGHT$(tem1$, 3) = "-lh" THEN
  928.       autounarc$ = "LHA e " + arcname$
  929.    ELSEIF LEFT$(tem1$, 2) = "`" + CHR$(234) THEN
  930.       autounarc$ = "ARJ e " + arcname$
  931.    ELSEIF LEFT$(tem1$, 3) = "ZOO" THEN
  932.       autounarc$ = "ZOO e " + arcname$
  933.    ELSEIF tem2$ = CHR$(254) THEN
  934.       autounarc$ = "PAK e /wa " + arcname$
  935.    ELSEIF LEFT$(tem1$, 1) = CHR$(26) THEN
  936.       autounarc$ = "PKUNPAK /r " + arcname$
  937.    ELSE
  938.       PRINT "UNKNOWN ARCHIVE TYPE: " + arcname$
  939.    END IF
  940.  
  941. END FUNCTION
  942.  
  943. SUB dism (message$, array$(), numlines%, Ret%, maxwid%)
  944.    start = 1
  945.    numlines% = 0
  946.    GOSUB geti
  947.    DO WHILE i > 0
  948.       numlines% = numlines% + 1
  949.       IF i > start THEN
  950.          IF i - start > maxwid THEN
  951.             st = start + maxwid
  952.             EN = start
  953.             FOR iq = st TO EN STEP -1
  954.                IF MID$(message$, iq, 1) = " " THEN
  955.                   EXIT FOR
  956.                END IF
  957.             NEXT
  958.             IF iq < EN + 10 THEN
  959.                i = EN + maxwid
  960.             ELSE
  961.                i = iq
  962.             END IF
  963.          END IF
  964.          ttem$ = MID$(message$, start, (i - 1) - (start - 1))
  965.          array$(numlines%) = ttem$
  966.          start = i + 1
  967.          IF MID$(message$, start, 1) = CHR$(10) THEN start = start + 1
  968.          GOSUB geti
  969.       ELSEIF i = start THEN
  970.          array$(numlines%) = ""
  971.          start = i + 1
  972.          IF MID$(message$, start, 1) = CHR$(10) THEN start = start + 1
  973.          GOSUB geti
  974.       ELSE
  975.  
  976.          ttem$ = MID$(message$, start)
  977.          array$(numlines%) = ttem$
  978.          EXIT DO
  979.       END IF
  980.       IF numlines% = maxdim% THEN
  981.          array$(numlines%) = "-end-"
  982.          EXIT DO
  983.       END IF
  984.    LOOP
  985.    EXIT SUB
  986. geti:
  987.    ifx = INSTR(start, message$, CHR$(227))
  988.    IF ifx > 0 THEN MID$(message$, ifx) = CHR$(13)
  989.    if1 = INSTR(start, message$, CHR$(13))
  990.    if2 = INSTR(start, message$, CHR$(141))
  991.    if3 = INSTR(start, message$, CHR$(10))
  992.    IF if2 = 0 THEN
  993.       i = if1
  994.    ELSEIF if1 < if2 THEN
  995.       i = if1
  996.    ELSE
  997.       i = if2
  998.    END IF
  999.    IF if3 > 0 AND if3 < i THEN
  1000.       i = if3
  1001.    END IF
  1002.    RETURN
  1003.  
  1004. END SUB
  1005.  
  1006. SUB display (filename$)
  1007.    IF Exist(filename$) THEN
  1008.       CLS
  1009.       line$ = STRING$(80, "─")
  1010.       maxwid = 80
  1011.       maxdim = 200
  1012.       botlin = 25
  1013.       ff = FREEFILE
  1014.       OPEN filename$ FOR RANDOM AS ff LEN = LEN(dat)
  1015.       numblocks = LOF(ff) / LEN(dat)
  1016.  
  1017. ''====== CONTINUED
  1018.  
  1019.  
  1020. --- PPoint 1.56
  1021.  * Origin: Harvey Parisien (1:249/114)
  1022.  
  1023.  
  1024.  
  1025. ════════════════════════════════════════════════════════════════════════════════
  1026.  Area:    QuickBasic
  1027.   Msg:    #7266
  1028.  Date:    04-11-93 20:42 (Public) 
  1029.  From:    HARVEY PARISIEN          
  1030.  To:      MIKE DORAN               
  1031.  Subject: READREP.BAS 3/4          
  1032. ────────────────────────────────────────────────────────────────────────────────
  1033. ''====== PART 3
  1034. ''
  1035.  
  1036.       GET #ff, 1, dat
  1037.       cnt = 1
  1038.       DO WHILE cnt < numblocks
  1039.          rec = rec + 1
  1040.          GET #ff, , dat
  1041.          cnt = cnt + 1
  1042.          LOCATE 1, 2
  1043.          dis$ = "    "
  1044.          LSET dis$ = LTRIM$(STR$(rec))
  1045.          PRINT "Reply:   "; dis$
  1046.          IF dat.flag = "~" OR dat.flag = "*" THEN
  1047.             dis$ = "Private, Unread"
  1048.          ELSEIF dat.flag = "`" OR dat.flag = "+" THEN
  1049.             dis$ = "Private, Read  "
  1050.          ELSEIF dat.flag = " " OR dat.flag = "-" THEN
  1051.             dis$ = "Public         "
  1052.          END IF
  1053.          dis$ = " Date:    " + dat.date + " " + dat.time + "  " + dis$
  1054.          PRINT dis$;
  1055.          IF ASC(dat.status) = 226 THEN
  1056.             PRINT "KILLED/INACTIVE"
  1057.          ELSE
  1058.             PRINT "               "
  1059.          END IF
  1060.          LOCATE 3, 1
  1061.          PRINT " From:    " + dat.From
  1062.          PRINT " To:      " + dat.to
  1063.          PRINT " Subject: " + dat.subject
  1064.          PRINT line$;
  1065.          tem$ = ""
  1066.          start = rec + 1
  1067.          FOR a = start TO start + VAL(dat.blocks) - 2
  1068.             GET #ff, , block
  1069.             cnt = cnt + 1
  1070.             tem$ = tem$ + block.a
  1071.          NEXT
  1072.          REDIM body$(maxdim%)
  1073.  
  1074.          CALL dism(tem$, body$(), numlines%, Ret, maxwid)
  1075.          choice = 1
  1076.          trow = 7: lcol = 1
  1077.          Rows = (botlin - 1) - 6
  1078.          CALL tlist(body$(), numlines%, maxwid, Rows, trow, lcol, Ret)
  1079.          ERASE body$
  1080.          IF Ret = 27 THEN
  1081.             EXIT DO
  1082.          END IF
  1083.       LOOP
  1084.       CLOSE ff
  1085.    END IF
  1086.  
  1087.  
  1088. END SUB
  1089.  
  1090. FUNCTION Exist (File$)
  1091.    DIM InRegs AS RegTypeX
  1092.  
  1093.    DIM OutRegs AS RegTypeX
  1094.  
  1095.    DIM DTA AS STRING * 42
  1096.  
  1097.    DIM F AS STRING * 64
  1098.  
  1099.    InRegs.AX = &H1A00
  1100.    InRegs.DS = VARSEG(DTA)
  1101.    InRegs.DX = VARPTR(DTA)
  1102.    CALL InterruptX(&H21, InRegs, OutRegs)
  1103.    F = File$ + CHR$(0)
  1104.    InRegs.AX = &H4E00
  1105.    InRegs.CX = 0
  1106.    InRegs.DS = VARSEG(F)
  1107.    InRegs.DX = VARPTR(F)
  1108.    CALL InterruptX(&H21, InRegs, OutRegs)
  1109.    IF OutRegs.AX = 2 OR OutRegs.AX = 18 THEN
  1110.       Exist = 0
  1111.    ELSE
  1112.       Exist = -1
  1113.    END IF
  1114.  
  1115. END FUNCTION
  1116.  
  1117. FUNCTION scan
  1118.    scan = 0
  1119.    DO
  1120.       CHK$ = INKEY$
  1121.       IF LEN(CHK$) THEN
  1122.          EXIT DO
  1123.       END IF
  1124.    LOOP
  1125.    IF LEN(CHK$) = 1 THEN
  1126.       scan = ASC(CHK$)
  1127.  
  1128. ''====== CONTINUED
  1129.  
  1130.  
  1131. --- PPoint 1.56
  1132.  * Origin: Harvey Parisien (1:249/114)
  1133.  
  1134.  
  1135.  
  1136. ════════════════════════════════════════════════════════════════════════════════
  1137.  Area:    QuickBasic
  1138.   Msg:    #7267
  1139.  Date:    04-11-93 20:43 (Public) 
  1140.  From:    HARVEY PARISIEN          
  1141.  To:      MIKE DORAN               
  1142.  Subject: READREP.BAS 4/4          
  1143. ────────────────────────────────────────────────────────────────────────────────
  1144. ''====== PART 4
  1145. ''
  1146.  
  1147.    ELSE
  1148.       scan = -ASC(RIGHT$(CHK$, 1))
  1149.    END IF
  1150.  
  1151. END FUNCTION
  1152.  
  1153. SUB tlist (array$(), numlines%, maxwid%, Rows%, trow%, lcol%, Ret%)
  1154.    top = 1
  1155.    DO
  1156.       FOR a = 0 TO Rows - 1
  1157.          IF top < 1 THEN top = 1
  1158.          work$ = SPACE$(maxwid)
  1159.          IF top + a > numlines% THEN
  1160.             fl = 1
  1161.          ELSE
  1162.             fl = 0
  1163.             LSET work$ = array$(top + a)
  1164.          END IF
  1165.          LOCATE trow + (a), lcol
  1166.          PRINT work$;
  1167.       NEXT
  1168.       '=====================
  1169.       s = scan
  1170.       IF s = -72 THEN
  1171.          top = top - 1
  1172.          IF top < 1 THEN top = 1
  1173.       ELSEIF s = -80 THEN
  1174.          IF fl = 0 THEN top = top + 1
  1175.          IF top > numlines% - (Rows - 1) THEN top = numlines% - (Rows - 1)
  1176.       ELSEIF s = -73 THEN
  1177.          top = top - Rows
  1178.          IF top < 1 THEN top = 1
  1179.       ELSEIF s = -81 OR s = 13 THEN
  1180.          IF fl = 0 THEN top = top + Rows
  1181.          IF fl = 1 AND s = 13 THEN s = -77: EXIT DO
  1182.          IF top > numlines% THEN top = numlines%
  1183.       ELSE
  1184.          EXIT DO
  1185.       END IF
  1186.    LOOP
  1187.    IF s >= 97 AND s <= 122 THEN s = s - 32
  1188.    Ret = s
  1189.  
  1190. END SUB
  1191.  
  1192. ''===== END OF SPLIT MESSAGE
  1193.  
  1194.  
  1195. --- PPoint 1.56
  1196.  * Origin: Harvey Parisien (1:249/114)
  1197.  
  1198.  
  1199.  
  1200.  
  1201. ════════════════════════════════════════════════════════════════════════════════
  1202.  Area:    QuickBasic
  1203.   Msg:    #8636
  1204.  Date:    04-20-93 14:10 (Public) 
  1205.  From:    EARL MONTGOMERY          
  1206.  To:      ALL                      
  1207.  Subject: TSR to Capture 640*480*25
  1208. ────────────────────────────────────────────────────────────────────────────────
  1209. CLS:?STRING$(50,178):DEFINT A-Z 'Created by PostIt! 6.0
  1210. FOR A=0 TO 6:P(A)=2^A:NEXT:OPEN "B",1,"VGA400.EXE
  1211. T$="abcdefghijklmnopqrstuvwxyz":T$=T$+UCASE$(T$)+"0123456789#$
  1212. G"nPfwbG(bbaiaCec$$p3i(b78e(8baE*e(caG0aSd*r*Cb)ug*D*6b)qi*M*Xc)y
  1213. G"l)GW*hd)mn*2*Hd)Oo)W9*$d)yr)Grb)Jf)ey)WNb)$g)qC)qYb)oh)mD*3b)Hh
  1214. G")e(FaGga8baJaWh(daK(oaqcacbajaigaK(iaScaYbWka4haRaqjamdaubGn(ha
  1215. G"2(faujaMbqLa4gavcq4aydahhGnaGEa2aq9bydamlGnae5a2(faWjaD(NamdaCc
  1216. G"GxaWjaXbaNaubaJcqnamkaLaWPaibaPcWgaKkauaqSaWba8c///////////////
  1217. G"/////////////////.GySz1rbrdmWaci(Gmb)w//)c/+8$$acbUG(u4A(qPjdaq
  1218. G"ca4A(qPPXeydaJQ(HQ(JY(hBGda8cc4YeaqPPcaWja4A(qPPcaWjaHY(JaCDdKE
  1219. G"AaOP(mdaqPjcamkaqHlu(LMeaqLamcW1nq6$(Um(u4A(qPjfcydaJcbaHcbaJkb
  1220. G"aJaCDdKEeaGRv(LMk(NaOzva8baP7(46gaqPPcaWjaAwfaFaq6o(UacauAQ(CcG
  1221. G"MvbWhaGRP(LMk(NaGR0(LMk(NaGRd(fUg(uAAma2aq6zdGMiaGnaOlXdGR(4UUf
  1222. G"paUiaG74c9PqP5baqja6E8aZaS7PBbaqQBYdWomKVOhuaGJgquaMG4bHsb(nkfa
  1223. G"0Z$c4344caOqP5baqja668a4s(UR7ZdmdWUJlaba1madfUa0huAQ(RaGUopaUea
  1224. G"G76#8a4g(UJRcba1madfUa0huAQ(RaGUopaUeaG76#8a4k(UJlfba1madfUa0hu
  1225. G"AQ(RaGUopaUeaG76#8a4o(UJRhba1madfUOd4msdLMkaWkaOP(qjaAk(RaGMXaG
  1226. G"naO57byda4A(qPjzaydaAwfaF//a46laoInJgyua67i08cEH7tlmnhYOifaJaVl
  1227. G"hjSc20QuZHSR0a44WMSOhcaGJdBYIoicadgSclY#kHNOjlfGhhWOhefWV6fyUOa
  1228. G"WmaZ$8RovUWaquldQsbqltnhsvlYUvxTOFgKOp4fWI2HWImmop7QxG7mVCwm4Wm
  1229. G"TZ839GMoaGRa8VDiOPcaWkaR$YvbfKMcaqSaG1G5lGDHS6I2HWI0jqkoWwab4GA
  1230. G"bKus$BdEbOPcaWkaj#qI$jW8K#LxDPmb(qv4EGdndrxlx1ISpi7bD1Xgaw)WIgP
  1231. G"qJw9RMm(TaqlpYKCZHSl(iNtlI9VsfWIxFuOefWQlAecRUOrgSku5E(0cuZHKLC
  1232. G"V4HJEqualAfc0cuZH8HCGStWZvGXgawa9SW20raT#0Ci$BNcAQ(NcWxlwExkB(A
  1233. G"6(McW6IB1vE4ObgfGjk6aGait7#giaMOib8acDeWtc1nGrIlVbA6(PcWbJJGbmI
  1234. G"TJa$X8KU4WF8LxlpdW5yGCbuhiocSjHcjaMSOhscWOYfqIEqxa6BYXgajarbGjm
  1235. G"6GKaS$YZaCogixa0DHJaVi2hAGCbCOh0fG#MmkKaysIEija7VmuEGRVa4i2hBay
  1236. G"bCeaFGLma$mavTi7lANblsNa3tHUCKqOgfWkqFSbnfW$$tBmGQuanhY$$$$$$$$
  1237. G"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$d///aqvlYUvx5
  1238. G"YG#ika$thchBaybahaRlX$2zGMgtGnaCSbGfWBaSaW0zWxE1LYe(JoOCGl6fcl#
  1239. G"Hli6XWa4cI#qmalAebUmQTaSOrcuW(4YO0cGdFqlnnhsIEalamAGSa4WbWIWVec
  1240. G"GUEma6NgaSq8lJaO7MdGoNba7e$cja6g7aOhzaWsXVucGUhpa6ggaSw8lMaOB3d
  1241. G"G#Eba7f$Yja6IbbOdxaWgYVGcGUUqa6LfaSL8lPaORxeGUwbaRj$Ika66hbO$ua
  1242. G"WIYVScGUEsa6efaSj8lIaOlCdGEobyXhhBayb)Pl0$UySbbdW$7ZjutfLuvz1vE
  1243. G"yGlmAbUa4sIMOla46laoI9G#0u(qxm67i0lAYsbSFVGxiTr1Cij6rtbOPOfydaU
  1244. G"8Vl0cWGetGMgxGnaOVloAbUa4YIMOla7FWhF5vxAL1wy1PlgBqW(WWvTi7w5XIE
  1245. G"HWIFSW20jGJB7Ohkh4ma7iWZMGVicGUWna6YcGCbnlc#sia66XaOxkaYrZSq4lJ
  1246. G"aO7MdGoMai3jZoHVqcGUXoa6lcGCAmlf#sja6E8aO7haY1WSw4lMaOB3dGECam3
  1247. G"b4c(FSovqo7f#Yja6IbbO3faYX#SH4lOaORleGouai33ZwIVKcGUEra6dbGCspR
  1248. G"j#Ika66hbOBdaYv8SO4lRaORNeGEkaihUF8VDi8VDgOjdfyda9)0Dk#E1LYe(u0
  1249. G"wtZHKyhmwKayrBjnhYWdYZ$1ja#dlZ$rpE0JBYoxq3a5VE8mITj7CKa1v$IeSit
  1250. G"cOVjjEGjj#Ka7J7$$NibjsKaRd9#UaOpfd(0nKla6tWa8FDi4IXgum(S#mUaOpa
  1251. G"d(1TIht5sXEal(#daB9bDi4cG#ima$xheUySbfd(C6Y$EqiaOFK$p7I$ouma67Y
  1252. G"$Uqia7df5G5Iogmma11aTc0SfK8Gl6yaXaqNby5Y$UGiaAYyb2aGlgBqXaibwpZ
  1253. G"Pl#BaWa4Y$EWiaC6I$oamaDUVYc(NU4VbadGl$7bKaWPl#7aWa05#kl(C6I$gam
  1254. G"aU8VhucaNU4VdadqN7RS(WjG8daDeWde1TX#nJcu#tSl#BaWaWPl$7bMaWPl#7a
  1255. G"Wa0jw0vU#U4VbadGl$7bMaWPl#7aWa05#kl(C6I$gamaU8VhCcaNU4VdadqN7RS
  1256. G"(WjG8dqDoqltUySbcd(D6Y$Uak(Ypd39UlgBGWa8FN7ZPl$7bOa4IXgim(OS(WP
  1257. G"l#BaWa4Y$EqkaC6YJgWladsSaU4VdadGl$BdVa05YC6I$gamaU8VhOcaNU8Ob#c
  1258. G"WGelGl#7aWa4Y$24laDU8#UaOpfd(1zG#U8VlScGla6tWa8pDY7IXgum(WPl$7b
  1259. G"RaG#58$mavTi7wD1IEzWI3jWG#0u(uNa3tb6dcWIqZi2c5OW7iCDumdWlENad6t
  1260. G"tbaqDcCpfF5vxkl(lENal6$IpmVP1P9IcV#3au1IStBunhYul6fclEXcsxNamQT
  1261. G"JcBYIEyua0cvZHKl(Goma4iWMSJhbaqDjaKJatBsnhICtG#kamx6ok8IEzGjl#L
  1262.  
  1263. G"aMC$f3h9w0cvZHSyWDPmbamLb0kvZHyYIh5$Omh4bBnShHYCGoInG#)Av3a5$XW
  1264. G"dyW)KnJYCG4VU8KhMIGZaGMhMIeVoaMhM#WcI5GS$YamOp2f(1HdTV0Cij6HZbY
  1265. G"ObqhiTr1Cij6HDbSOhgfaTq1CilpOp2f(0rHhZS9HEyxa0cvZHuSfohiTA0CiFS
  1266. G"mJEqualx1ISVOrgmkrb0LYcaqvlYoUb(u$Bhc$BNbAQbavcqxkt(vTi7wDf$ECW
  1267. G"IgPWI2zWIuSiDcOeEWSOFiSydl2Nal#ns4LZa4VcY2ndRY7ADUSJYYPYcsthdwD
  1268. G"vulQ88MM1xEvh6RS$Ih$VDiOPcaCka$BNbAQ(NcWxE1LYgaWmaVU5vTi7lAKbqP
  1269. G"jqaWja4QvaqPjqaWjahBaAbe(DPS(u1ISVOrgaLMabaNa0LYcaWXgGwabaWYvTi
  1270. G"7hBayb)l6Lbl#WIxjWIEGwa0cuZHm3bA6(McW6jStWZvGXgawa98VDgOPcaCkaD
  1271. G"PS)qvlYUvxTODgSidA6(PcW4uSODgSiDcWkpHjNb8O3DcqYxQkU8lo8$2zGMkaW
  1272. G"Pa8LxDPS*G#aw(u3aJcwaldqvlYoutTREbMJxgihedomt54Lb3HW$2zGMk(RaSf
  1273. G"wDPS*uAs(8cW4IeuqAk(XcWG5lWCeSsYyT8IdVAkoWwab4GAbKusj#qI$jawlx1
  1274. G"ISBLXgaxa$VOxgS4blamDnKF0qV4DcKir#F8b(GxDPS(m1IeCybjsWICjWHDjqI
  1275. G"CjWcat3ajEN$d2da0zWIDjqI$5$wlZVhhCSbGf)SJdSfGDIOjbayla74aBby3fR
  1276. '>> Continued on pg. 2
  1277.  
  1278. --- Maximus 2.01wb
  1279.  * Origin: Verbose Ink * Dallas * 214-437-0914 * V32b/HST (1:124/5125)
  1280.  
  1281.  
  1282.  
  1283. ════════════════════════════════════════════════════════════════════════════════
  1284.  Area:    QuickBasic
  1285.   Msg:    #8637
  1286.  Date:    04-20-93 14:12 (Public) 
  1287.  From:    EARL MONTGOMERY          
  1288.  To:      ALL                      
  1289.  Subject: TSR to Capture 640*480*25
  1290. ────────────────────────────────────────────────────────────────────────────────
  1291. >> Start: pg. 2
  1292. G"4aBbSJdUfGDeKOdUfWIoWwagBayb4WV6fWa#OwaldquwDf$ECWI6Vi8lYWI0jW8
  1293. G"KIydF5vwldautfLuwDvv87Xba6dCb(Dg5REbSO1dyHAbSJ8ZLtROgqDgSi2dCZ6
  1294. G"X7Ktl6$mTVJ8ZrYICy$WbqNerV#qdnW8dSEaEWwaP4HAbS#4l#qqbnpPP8MaRJD
  1295. G"xF5LwzTfwldqu5sba7QxGd#da05WGdtG42VREboLMk(RaK1Y////,WjaqcawDuq
  1296. G"0admGyhmUKtoGapiOmukGeto5idiffMCSbstV5gDN9wBLjxEhd(qbG(qfaVu1ea
  1297. G"Ofatv3yJv2CMvhBSLhiYvwBVzxzKbGdaihadfMBU9gDGixzT9MDLfsiaqiabXMC
  1298. G"Lfgz5bsAUnhDHXgBLrwiG0ciVufi09gi15gBVfgzaGcaQcGvhfeiZnMCLvMBGmw
  1299. G"yWrxDYvgiVzgiZidm4rdmWGNm1ydiJ9gBVj3CPaG1ay1rbrdmWaYlvbcDVbICL1
  1300. G"2B2vglG8MCGeetu1IvGq3BGe2y0LMDHrxzfx(eeamUiuso5Dba4qaX4Iqj50$f(
  1301. G"gbiJlcLKtmu(IeWmUiusovk/a8$$b////+q$/i(Efqdk)2udtdTenb,G/*a"
  1302. N=3928:K=255:IF LEN(C$)<>5238 THEN ?"Bad script!"Ksum!":END
  1303. FOR A=1 TO N:LOCATE 1:?STRING$(50/N*A,177):IF L=0 THEN GOSUB G:L=6
  1304. 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
  1305. ?:IF C=110 THEN ?"Ok":END ELSE ?"Bad checksum!":END
  1306. G:I=I+1:T=INSTR(T$,MID$(C$,I,1))-1:C=(C+T)*2:C=C\256+(C AND 255):RETURN
  1307. SUB G(A$):SHARED C$:FOR Q=2 TO 9:DO:S=INSTR(A$,CHR$(Q+38))
  1308. IF S THEN A$=LEFT$(A$,S-1)+STRING$(Q,97)+MID$(A$,S+1)
  1309. LOOP WHILE S:NEXT:C$=C$+A$:END SUB
  1310.  
  1311. --- Maximus 2.01wb
  1312.  * Origin: Verbose Ink * Dallas * 214-437-0914 * V32b/HST (1:124/5125)
  1313.  
  1314.  
  1315.  
  1316. ════════════════════════════════════════════════════════════════════════════════
  1317.  Area:    QuickBasic
  1318.   Msg:    #8638
  1319.  Date:    04-20-93 14:14 (Public) 
  1320.  From:    EARL MONTGOMERY          
  1321.  To:      ALL                      
  1322.  Subject: Source code to load files
  1323. ────────────────────────────────────────────────────────────────────────────────
  1324. DEFINT A-Z
  1325. SCREEN 13: CLS
  1326. OUT &H3D4, 9
  1327. OUT &H3D5, &H40
  1328. OUT &H3D4, 20
  1329. OUT &H3D5, 0
  1330. OUT &H3D4, 23
  1331. OUT &H3D5, &HE3
  1332. OUT &H3C4, 4
  1333. OUT &H3C5, &H6
  1334. clrscrn:
  1335. OUT &H3C4, 2
  1336. OUT &H3C5, 15: CLS
  1337. REM Setting all palettes to zero
  1338. OUT &H3C8, 0
  1339. FOR x = 0 TO 767
  1340. OUT &H3C9, 0
  1341. NEXT
  1342. loadem:
  1343. DEF SEG = &HA000
  1344. OUT &H3C4, 2: OUT &H3C5, 1: BLOAD "0.bin", 0
  1345. OUT &H3C4, 2: OUT &H3C5, 2: BLOAD "1.bin", 0
  1346. OUT &H3C4, 2: OUT &H3C5, 4: BLOAD "2.bin", 0
  1347. OUT &H3C4, 2: OUT &H3C5, 8: BLOAD "3.bin", 0
  1348. OUT &H3CE, 4: OUT &H3CF, 3: REM Necessary to read saved palettes
  1349. REM Reading palette info from tail end of 3.bin
  1350. DEF SEG = &HA000 + 2000
  1351. OUT &H3C8, 0
  1352. FOR x = 0 TO 767
  1353. p = PEEK(x)
  1354. OUT &H3C9, p
  1355. NEXT
  1356. waitkey:
  1357. i$ = INKEY$: IF i$ = "" THEN GOTO waitkey
  1358. REM Resetting CRTC and Sequencer index registers
  1359. REM This may prove not to be necessary
  1360. OUT &H3C4, 2: OUT &H3C5, 15: CLS
  1361. OUT &H3D4, 9: OUT &H3D5, 41
  1362. OUT &H3D4, 20: OUT &H3D5, 40
  1363. OUT &H3D4, 23: OUT &H3D5, &HA3
  1364. OUT &H3D4, 4: OUT &H3D5, &HE
  1365. SCREEN 0: CLS : DEF SEG : END
  1366.  
  1367.  
  1368. --- Maximus 2.01wb
  1369.  * Origin: Verbose Ink * Dallas * 214-437-0914 * V32b/HST (1:124/5125)
  1370.  
  1371.  
  1372.  
  1373. ════════════════════════════════════════════════════════════════════════════════
  1374.  Area:    QuickBasic
  1375.   Msg:    #8639
  1376.  Date:    04-20-93 14:16 (Public) 
  1377.  From:    EARL MONTGOMERY          
  1378.  To:      ALL                      
  1379.  Subject: Doc File for VGA400      
  1380. ────────────────────────────────────────────────────────────────────────────────
  1381.                                 VGA400
  1382.  
  1383. Place VGA400.EXE in your root directory. Type VGA400 from the DOS prompt.
  1384. The TSR is now installed in memory. When you are ready to capture a
  1385. graphic screen press CTRL and A to activate the TSR. The resulting 4
  1386. BSAVED/BLOADable files along with the palettes will be written to the
  1387. current directory. The file names will always be 0.bin 1.bin 2.bin and
  1388. 3.bin. You should rename the files to whatever you wish and copy them
  1389. to the appropriate directory. Failure to do so will result in an over-
  1390. write.
  1391.  
  1392. This TSR will capture any 320X400X256 graphic screen along with the
  1393. original palettes. It will also capture any GIF file up to and in-
  1394. cluding 640*480*256 provided they are displayed using CSHOW.
  1395. Of course I am referring to using a Generic VGA Monitor 320X200X256.
  1396. Example: You download a GIF file that is marked 640X480X256. Your
  1397. Generic 320x200x256 monitor can't handle that resolution. But let
  1398. CSHOW (A GIF graphic viewer) display the file for you. It won't
  1399. fill the entire screen but the resolution is remarkable! Capture
  1400. the screen using VGA400.exe then use the BASIC loader to load
  1401. the captured image into your own QB programs. I've tried using VPIC
  1402. (another Graphic Viewer) but had less than satisfactory results.
  1403. I'm not knocking VPIC (after all it was written by my cousin!) JUST
  1404. KIDDING!! VPIC is an excellent Viewer but doesn't work well with
  1405. my TSR or BASIC loader.
  1406.  
  1407. Notes on the loader file: If you are running Desqview or a Disk Cache you
  1408. may find that if the same file is loaded twice during the same session
  1409. the second presentation will probably be distorted. The solution is not
  1410. to run DV or a cache if you find this to be a problem.
  1411.  
  1412.  
  1413. Enjoy
  1414.  
  1415. Earl Montgomery
  1416.  
  1417.  
  1418. --- Maximus 2.01wb
  1419.  * Origin: Verbose Ink * Dallas * 214-437-0914 * V32b/HST (1:124/5125)
  1420.  
  1421.  
  1422.  
  1423.