home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / zip / program / gfabas09.lzh / GFA_BAS9.TXT
Text File  |  1991-10-07  |  172KB  |  4,384 lines

  1. ================================================================================
  2. (C) 1991 by Atari Corporation, GEnie, and the Atari Roundtables.  May
  3. be reprinted only with this notice intact.  The Atari Roundtables on GEnie
  4. are *official* information services of Atari Corporation.
  5.  
  6. To sign up for GEnie service, call (with modem) 800-638-8369.  Upon
  7. connection type HHH (RETURN after that).  Wait for the U#= prompt.  
  8. Type XJM11877,GEnie and hit RETURN.  The system will prompt you for your
  9. information.
  10. ================================================================================
  11.  
  12.  ************
  13. Topic 3         Mon Feb 06, 1989
  14. DARLAH [RT~SYSOP]            (Forwarded) 
  15. Sub: GFA Basic 3.n                          
  16.  
  17. Questions and answers for GFA Basic.
  18.                                                                               
  19. 249 message(s) total.
  20.  ************
  21.  ------------
  22. Category 22,  Topic 3
  23. Message 1         Tue Jul 02, 1991
  24. A.FRIESEN                    at 00:21 EDT
  25.  
  26. I got a mail message from someone a few days ago who is having trouble getting
  27. my checkbook program (version 2.0 the latest one) to work. (BTW it's file #
  28. 19783).  Apparently it boots up.  Displays the file selector box.  Attempts to
  29. create a new file when it doesn't find any others, and then bombs.  The person
  30. is still using TOS 1.0 and the  autoprgs/accs he uses are DeskCart, Notepad,
  31. and QuickST.  Does a compiled 3.5 program have trouble with these accessories
  32. or TOS 1.0?  Any help is greatly appreciated as I cannot duplicate the
  33. problem.  And if I  can't duplicate it, I cannot correct it.  Thanks...
  34.  
  35.   Aric Friesen
  36.  ------------
  37. Category 22,  Topic 3
  38. Message 2         Tue Jul 02, 1991
  39. D.A.BRUMLEVE [kidprgs]       at 00:32 EDT
  40.  
  41.  Aric, ask your user to try it without Quick ST.
  42.  ------------
  43. Category 22,  Topic 3
  44. Message 3         Tue Jul 02, 1991
  45. MINDOVERMIDI                 at 04:23 EDT
  46.  
  47. Always suggest that your customer try your program without _any_ desk
  48. accessories installed, after turning the computer off for a minute or ten, and
  49. see if the problem persists. And you should really compile with BOMBS+ and
  50. ERRORS TEXT, so that you will have more information as to the nature of the
  51. problem. At least find out how many bombs occurred.
  52.  
  53. It sounds like the problem might be in your filepath parsing routine though,
  54. as different fileselectors (in different versions of TOS or from third
  55. parties) allow different kinds of crap to be returned in the filepath (such as
  56. a:\\folder\file.img).
  57.  ------------
  58. Category 22,  Topic 3
  59. Message 4         Tue Jul 02, 1991
  60. D.HOLMES14 [David]           at 22:42 EDT
  61.  
  62. I just received the 3.5E upgrade and am having one problem with it.
  63.  
  64. Since it supports STE color, I had to go through the entire program and double
  65. all of the numbers in the VSETCOLOR commands.  While this worked fine in the
  66. interpreter, when compiled, all of the colors came out wrong.  If I set the
  67. numbers to normal, they are too dim when interpreted, but work fine when
  68. compiled.
  69.  
  70. Does any know of a reason for this?  How about a fix?
  71.  
  72. Thanks,
  73.  David
  74.  ------------
  75. Category 22,  Topic 3
  76. Message 5         Wed Jul 03, 1991
  77. C.MULLER3                    (Forwarded) 
  78.  
  79. This is a GFA Basic question but the GFA topic seems to be closed for some
  80. reason.
  81.  
  82. I am trying to read a file in GFA Basic which has a record length  greater
  83. than 254 bytes.  Is there anyway to do this using INPUT #n? If not then what
  84. are other alternatives besides using the INP(#n) which only reads a byte at a
  85. time?
  86.  
  87. Thanks,
  88.   Chris
  89.    (C.MULLER3)
  90.  ------------
  91. Category 22,  Topic 3
  92. Message 6         Wed Jul 03, 1991
  93. J.H.CARROLL [Jon]            (Forwarded) 
  94.  
  95.  
  96.  
  97. C.MULLER3 --
  98.  
  99. You might try using GFA's INPUT$ command.  This will let you read a string of
  100. up to 32000 characters in length.  If you're reading in number data, you could
  101. convert it back numbers from the string by using somethibng like the VAL
  102. function.
  103.  
  104. Jon
  105.  
  106.  ------------
  107. Category 22,  Topic 3
  108. Message 7         Wed Jul 03, 1991
  109. D.A.BRUMLEVE [kidprgs]       at 14:01 EDT
  110.  
  111.  A ways back, someone asked about books for absolute beginners...My book,
  112.  GFA Basic Training by MichTron, is one way to start.  Although it's out
  113.  of print, Bare Bones Software of West Virginia is advertising a sellout
  114.  price of only $9.95 on the copies they have in stock.  The ad appears in
  115.  this month's ST Informer, and the number given is 800 638 1123.
  116.  ------------
  117. Category 22,  Topic 3
  118. Message 8         Sat Jul 06, 1991
  119. B.ROBINSON5 [BRIANMATE]      at 09:27 EDT
  120.  
  121. Under COMPARISON OPERATORS on page 82 of the GFA 3.0 User Manual, there are 2
  122. examples that result in different answers than the manual states. I agree with
  123. the computer, but am wondering if I am missing a point somewhere.
  124.  
  125. The first is using <= PRINT "AAA">="aaa"     ! Manual answer -1, Computer
  126. answer 0
  127.  
  128. My interpretation:     "A" = asc65, "a" = asc97. So "aaa" is larger
  129.                        so the answer is FALSE.
  130.  
  131. The second is using <> PRINT -1<>4-5          ! Manual answer 1, Computer
  132. answer 0
  133.  
  134. My interpretation:     -1 is not unequal to -1 so the answer is FALSE.
  135.  
  136. Thank you for your replies to my last letter. My problem is that I live in
  137. Durham, CA and my nearest dealer is in Sacremento approx. 100 miles south. It
  138. seems everyone here is into IBM and Apple and the book stores don't have
  139. anything on Atari. They tell me to "go to the toy store. (Geeez!!) I am still
  140. looking for a good beginner's book on Atari GFA Basic, so if anyone out there
  141. has one for sale, please leave me a message. I thought Calamus, Outline and
  142. Dungeon Master were tough to get into but learning GFA from the user manual
  143. makes them look easy.
  144.  
  145.               Thanks                          Phone (916) 891 4040
  146.                        Brian Robinson         Fax   (916) 891 5453
  147.  ------------
  148. Category 22,  Topic 3
  149. Message 9         Sat Jul 06, 1991
  150. E.DAWLEY1                    at 19:54 EDT
  151.  
  152. This particular example is on page 112 of my  Antic manual.
  153.  
  154. The first is PRINT "AAA">"aaa"....answer 0 The second   PRINT -1<=4-
  155. 5........answer -1
  156.  
  157. There are alot of examples of typos in the manual when it comes to ones and
  158. zeros (sometimes they leave the minus off the one).
  159.  
  160. Both of your interpretations are correct, they seem to have fixed them in my
  161. manual since the above examples give the correct result.
  162.  
  163. Eric
  164.  ------------
  165. Category 22,  Topic 3
  166. Message 10        Sun Jul 07, 1991
  167. NIRANDRA                     at 03:58 EDT
  168.  
  169. Hello. I am currently working on a terminal program specifically for the GEnie
  170. LiveWire Chat Lines. It is not yet finished. A few things still need to be
  171. added. But I was wondering if anyone would like to help beta test this
  172. terminal for me. Like I said, it is mostly for use in  the GEnie LiveWire Chat
  173. lines (page 400) taking advantage of all of the GEnie prompts and messages
  174. found in the Chat Lines. But you can use it anwhere on GEnie.
  175.  ------------
  176. Category 22,  Topic 3
  177. Message 11        Sun Jul 07, 1991
  178. NIRANDRA                     at 03:59 EDT
  179.  
  180. Oh, one other thing... for anyone who wishes to help beta test this terminal,
  181. the first beta test version will be only for color monitors. Since I only have
  182. a color monitor. After all the bugs are worked out of this version, I will add
  183. monochrome support.
  184.  ------------
  185. Category 22,  Topic 3
  186. Message 12        Sun Jul 07, 1991
  187. J.SIEBEN [J.SIEBEN]          at 14:23 EDT
  188.  
  189. C.MULLER3
  190.  
  191. I was doing some fooling around with file input and output just the other day.
  192. Maybe this code may help you out.  What it does is reads and saves the file in
  193. 1K blocks.  I realize the EOF shouldn't handle the case of a file that is not
  194. even 1K file size.  I just happened to have this handy.
  195.  
  196.  
  197. block$=SPACE$(1024) block_ptr%=VARPTR(block$) OPEN "I",#0,"H:\TESTFILE" OPEN
  198. "O",#1,"A:\TESTFILE" ctr&=0 REPEAT
  199.   INC ctr%
  200.   PRINT AT(1,1);"counter = ";ctr%
  201.   BGET #0,block_ptr%,1024
  202.   BPUT #1,block_ptr%,1024 UNTIL EOF(#0) CLOSE #0 CLOSE #1
  203.  
  204.  
  205.  ------------
  206. Category 22,  Topic 3
  207. Message 13        Thu Jul 11, 1991
  208. JWC-OEO [Jon]                at 03:43 EDT
  209.  
  210.   Perhaps this is already well known, but in case it's not...
  211.  
  212. You can fix the "stuck window" problem that shows up after exiting GFA's
  213. compiler shell MENU.PRG by changing the first line of PROCEDURE check(x%) from
  214. MENU KILL to MENU OFF.  BUTTNFIX also eliminates this problem but this is a
  215. more general solution. As far as I can tell, eliminating MENU KILL does not
  216. introduce any new problems but if you want to keep the KILL command, just put
  217. the OFF one BEFORE it.
  218.  
  219. Don't know what the "stuck window" problem is?  Perhaps it doesn't show up on
  220. all machines or under all versions of TOS.  On my MEGA 2 with TOS 1.4/1.04
  221. what happens is that after exiting MENU.PRG via a mouse click on the QUIT item
  222. in the FILE menu, the active desktop window can't be moved or resized without
  223. an extra mouse click.  It also takes an extra mouse click to change the active
  224. window.  The problem does not appear if you exit by using ^C.
  225.  
  226. The compiler "manual" includes a caution that needs to be followed when
  227. editing MENU.GFA.  It's on page 7 of the one I got form ANTIC.
  228.  
  229. Jon
  230.  
  231.  
  232.  ------------
  233. Category 22,  Topic 3
  234. Message 14        Sun Jul 14, 1991
  235. F.VUOTTO                     at 08:30 EDT
  236.  
  237. I have been implementing sliders with code that resembles this:
  238.      sliderpos=GRAF_SLIDEBOX(adr,parent,slider,1)
  239.      result=(1000-sliderpos)*maxvalue/1000
  240.      redraw slider..show result..etc... This works but the result is not
  241. available until the mouse button is released. Can anyone help with a slider
  242. where the result is changed AS the slider is moved ? Frank Vuotto [F10]
  243.  ------------
  244. Category 22,  Topic 3
  245. Message 15        Mon Jul 15, 1991
  246. PRINCETON-U                  at 18:28 EDT
  247.  
  248. I have a problem I'm hoping someone can help me with. I've written a terminal
  249. program that increases the size of both the input and output buffers for the
  250. serial port. The only problem is, if I run this terminal after having ran
  251. FLASH! or any other terminal program that changes the size of the serial port
  252. buffers, it sometimes locks up. This happens on both my 1040ST and 1040STe.
  253. Any clues why?
  254.  ------------
  255. Category 22,  Topic 3
  256. Message  16       Mon Jul 15, 1991
  257. M.GIGUERE1                   (Forwarded) 
  258.  
  259.  Upgrade- The up grade paths have been mentioned above.  For 3.6, 
  260.  
  261. add $10 dollars to the price(If you have 3.5 the upgrade is 
  262.  
  263. $10 + 2.95 for S&H).  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.                                              John Barger
  270.  
  271.                                              Director of Support
  272.  
  273.                                              GFA-Software
  274.  
  275.  
  276.  
  277.  
  278.  ------------
  279. Category 22,  Topic 3
  280. Message  17       Mon Jul 15, 1991
  281. M.GIGUERE1                   (Forwarded) 
  282.  
  283.  VSETCOLOR-  I haven't heard of that problem.  I will check it out.
  284.  
  285. Have you tested it with the SETCOLOR command?
  286.  
  287.  
  288.  
  289. BOOKS FOR GFA-BASIC- I suggest the "Advanced programming for 
  290.  
  291. GFA-BASIC" and disk for 39.95.  It used to be called "The
  292.  
  293. GFA-BASIC Book" and is what I used to learn the "Ins and Outs" 
  294.  
  295. of the language.  We also have "Software Development with 
  296.  
  297. GFA-BASIC" and "The GFA-BASIC and ASSEMBLER book" which are very
  298.  
  299. good Intermediate - Advanced books.
  300.  
  301.  
  302.  
  303.                                              John Barger
  304.  
  305.                                              Director of Support
  306.  
  307.                                              GFA-Software
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  ------------
  314. Category 22,  Topic 3
  315. Message 18        Mon Jul 15, 1991
  316. DOUG.W                       at 23:15 EDT
  317.  
  318. Frank,
  319.    To get "live" sliders, you need to make the objects into 'TOUCH-EXIT'
  320. objects.  This will cause form_do to exit as soon as the mouse button is
  321. pressed down over the object.  You can then adjust the slider as long as the
  322. button is depressed.
  323.  
  324.  /\ Doug Wheeler
  325.  \/ Member of the IAAD -- Serving the Atari Community
  326.  ------------
  327. Category 22,  Topic 3
  328. Message 19        Tue Jul 16, 1991
  329. H.JANOYAN3 [JANOYAN]         at 01:19 EDT
  330.  
  331. PRINCETON-U,
  332.  
  333.    I increase the buffer size in my terminal program, and my program doesn't
  334. lock up after running another terminal program.  If you can, list the code
  335. you're using so we can take a look at it.
  336.  
  337.  
  338. -Hagop Janoyan (UCLA <grin>)
  339.  
  340.  ------------
  341. Category 22,  Topic 3
  342. Message 20        Tue Jul 16, 1991
  343. PRINCETON-U                  at 03:52 EDT
  344.  
  345. Ok, I'll upload the code tomorrow, as it is NOW time for bed :) BUT! one more
  346. question! :) Could someone tell me the memory address of the bell sound? I
  347. know the memory address for the keyboard click, and so I can turn that off.
  348. But I have NO idea where to peek/poke for the bell. Any ideas?
  349.  ------------
  350. Category 22,  Topic 3
  351. Message 21        Tue Jul 16, 1991
  352. PRINCETON-U                  at 18:06 EDT
  353.  
  354.  Ok, here is the code that I use to resize the i/o buffers for the
  355.  serial port...
  356.  
  357.  DIM mbuffin|(2048)            !input buffer for serial port
  358.  DIM mbuffout|(2048)           !output buffer for serial port
  359.  '
  360.  mbuffin%=V:mbuffin|(0)        !address of mbuffin|()
  361.  mbuffout%=V:mbuffout|(0)      !address of mbuffout|()
  362.  mbuff%=XBIOS(14,0)            !address of serial port
  363.  '
  364.  LPOKE mbuff%,mbuffin%         !pointer to the new input buffer
  365.  DPOKE mbuff%+4,2048           !size of new input buffer
  366.  DPOKE mbuff%+6,0              !header set at 0
  367.  DPOKE mbuff%+8,0              !tail set at 0
  368.  DPOKE mbuff%+10,128           !low water mark for input buffer
  369.  DPOKE mbuff%+12,1920          !high water mark for input buffer
  370.  '
  371.  LPOKE mbuff%+14,mbuffout%     !pointer to new output buffer
  372.  DPOKE mbuff%+18,2048          !size of new output buffer
  373.  DPOKE mbuff%+20,0             !header set at 0
  374.  DPOKE mbuff%+22,0             !tail set at 0
  375.  DPOKE mbuff%+24,128           !low water mark for output buffer
  376.  DPOKE mbuff%+26,1920          !high water mark for output buffer
  377.  
  378.  Any idea why any of that would cause my terminal to lock up after
  379.  running FLASH! or any other program that resizes the i/o buffers
  380.  for the serial port? I don't know, maybe this isn't what's
  381.  causing it to lock up. But it didn't start locking up until after
  382.  I started resizing the i/o buffers. Any help would be appreciated.
  383.  ------------
  384. Category 22,  Topic 3
  385. Message 22        Tue Jul 16, 1991
  386. H.JANOYAN3 [JANOYAN]         at 19:38 EDT
  387.  
  388. PRINCETON-U,
  389.  
  390.    To turn OFF the Bell, use the command SPOKE &H484,PEEK(&H484) AND NOT 4. 
  391. To turn ON the bell, use SPOKE &H484,PEEK(&H484) OR 4.
  392.  
  393.  
  394. -Hagop Janoyan (info from the GFA Basic Book)
  395.  ------------
  396. Category 22,  Topic 3
  397. Message 23        Tue Jul 16, 1991
  398. PRINCETON-U                  at 20:41 EDT
  399.  
  400. Thanks, Hagop. I guess I should buy some GFA Basic books. Since the manual
  401. doesn't cover very much. 
  402.  ------------
  403. Category 22,  Topic 3
  404. Message 24        Tue Jul 16, 1991
  405. R.WATSON15 [Wayne Watson]    at 22:28 EDT
  406.  
  407. PRINCETON-U
  408.   Try using a string in the place of the variables and see what happens.  I
  409. too have experienced the lockup on certain systems. I have a program that will
  410. display the users data via modem and it will lock up on the BBS's computer but
  411. not on mine. There has to be something that is causing this. Maybe someone
  412. that knows more about the input/output buffers can help us here. Flash alters
  413. the input buffer but does not alter the output buffer but, it does not suffer
  414. these symptoms. Maybe it is something in GFA that causes it. Atari, GFA, can
  415. you help us in this. I can leave the buffers at default when I run the program
  416. and it will not lock up. I have banged my head on this and if I find out
  417. anything I will post it here.
  418.  
  419.  ------------
  420. Category 22,  Topic 3
  421. Message 25        Wed Jul 17, 1991
  422. MINDOVERMIDI                 at 00:07 EDT
  423.  
  424. I've found that string and numeric variables move around in memory quite a
  425. bit.  That is, Varptr will return a different address for that variable as
  426. other variables are changed, added and deleted. I'm not sure that this is true
  427. for arrays, but if so, this would certainly be the cause of many problems. I
  428. always use Gemdos 48 for storage buffers when I don't want the location to
  429. change.
  430.  ------------
  431. Category 22,  Topic 3
  432. Message 26        Wed Jul 17, 1991
  433. PRINCETON-U                  at 01:45 EDT
  434.  
  435. MINDOVERMIND: 
  436.  
  437. GEMDOS 48? The GFA manual says that returns the GEMDOS-Version number.
  438.  
  439. I'll try using bufferin$=SPACE4(2048) and bufferout$=space$(2048)
  440.  ------------
  441. Category 22,  Topic 3
  442. Message 27        Wed Jul 17, 1991
  443. CBARRON                      at 02:47 EDT
  444.  
  445. GEMDOS(hex48) is Malloc call.  I forget the gfa syntax for hex nos.
  446.   48 HEX IS 72 DECIMAL. So address=GEMDOS(72) returns the address of allocated
  447. memory. 0 if not available.
  448.  
  449.  ------------
  450. Category 22,  Topic 3
  451. Message 28        Wed Jul 17, 1991
  452. NIRANDRA                     at 08:57 EDT
  453.  
  454. I have a question about that. That always returns 16384 for me. And then after
  455. that, it returns 0. What do I have to do to allocate a larger block of memory?
  456.  ------------
  457. Category 22,  Topic 3
  458. Message 29        Wed Jul 17, 1991
  459. R.WATSON15 [Wayne Watson]    at 18:25 EDT
  460.  
  461. PRINCETON-U
  462.   I was playing around with my program today that locks up on me when I re-
  463. size the input/output buffers. I think I may have a fix. It did not lock up on
  464. me at all. What I did was replace the string that holds the buffer with a
  465. MALLOCd section of memory. It goes like this:
  466.  
  467.   RESERVE 40*1024  ! This reserves enough memory for the program and
  468.                    ! malloc sections. Mileage may vary.
  469.   '
  470.   in_buffer%=MALLOC(512)  ! I only use 256 but I put extra in there
  471.                           ! to make sure it does not flow past the
  472.                           ! end of the buffer.
  473.   '
  474.   in_size%=256     ! The actual size of the buffer.
  475.   '
  476.   out_buffer%=MALLOC(256) ! I only use 8 bytes but again have a safety
  477.                           ! margin. What's a few bytes?
  478.   out_size%=8      ! The actual size of the buffer
  479.   '
  480.   Just use the in_buffer% and out_buffer% where you LPOKE the address of the
  481. buffer. When used with MALLOC like I did above, the program will return the
  482. location of the buffer. If something has gone wrong, in_buffer% and
  483. out_buffer% will return 0 or a negative number. When setting the high water
  484. and low water marks, I use SIZE * .25 for low water and SIZE * .75. Even
  485. though I do not use XON/XOFF, flow control may be turned on when using at high
  486. speeds. Make sure you reset the buffers to their original size and location
  487. when your program exits. You will also need to return the MALLOCd memory and
  488. RESERVEd memory back to the system when your program exits. Below is how you
  489. return the memory back. Hope this helps. Let me know what happens.
  490.  
  491.   ~MFREE(in_buffer%)      ! Returns the in_buffer, out_buffer and
  492.   ~MFREE(out_buffer%)     ! RESERVEd section of memory back to the
  493.   RESERVE                 ! memory pool.
  494.  
  495.   Also, make sure you use even numbers for the size of the buffer.
  496.  
  497.  ------------
  498. Category 22,  Topic 3
  499. Message 30        Wed Jul 17, 1991
  500. R.WATSON15 [Wayne Watson]    at 19:21 EDT
  501.  
  502. The equavalent command in GFA is MALLOC(). If you place a negative 1 (-1) when
  503. you execute the command, then it will return the largest unallocated
  504. contiguous free area. Any positive number will cause MALLOC to return the
  505. address of the allocated block of memory or an error message.
  506.  
  507.   address=MALLOC(-1)  ! Returns largest contiguous free area
  508.  
  509.   address=MALLOC(2048) ! Returns the address of the MALLOCd area.
  510.  
  511.   If address returns as a 0 or negative number, then the amount of memory
  512. could not be allocated. MALLLOCd memory must always be returned to the memory
  513. pool before you end a program. MALLOCd memory does not move around.
  514.  
  515.   Aladdin time warp. Don't ya just love it.
  516.  
  517.  ------------
  518. Category 22,  Topic 3
  519. Message 31        Wed Jul 17, 1991
  520. PRINCETON-U                  at 20:27 EDT
  521.  
  522. Where can one find a detailed explanation of the RESERVE command? The GFA
  523. manual doesn't explain this command very well. Are you reserving memory for
  524. your program, for GFA or what? And what's the different between reserving a
  525. negative amount?
  526.  ------------
  527. Category 22,  Topic 3
  528. Message 32        Wed Jul 17, 1991
  529. J.EIDSVOOG1 [CodeHead]       at 21:15 EDT
  530.  
  531. All the information given here about malloc has been correct with one
  532. exception.  It is not mandatory to mfree allocated blocks upon exiting a
  533. program.  All memory blocks "belonging" to a program (assignment is based on
  534. basepage address) are automatically freed by Pterm.  Of course, a
  535. consciencious programmer may want to mfree his blocks as a matter of
  536. principle.  You'll also want to free up your blocks while running in the
  537. interpretter or you'll gradually eat up all of your memory.
  538.  
  539.  /\  John Eidsvoog
  540.  \/  Member of the IAAD -- Serving the Atari Community
  541.  ------------
  542. Category 22,  Topic 3
  543. Message 33        Thu Jul 18, 1991
  544. PRINCETON-U                  at 01:35 EDT
  545.  
  546. But how do you determine how much memory you need to RESERVE before using
  547. MALLOC()?
  548.  ------------
  549. Category 22,  Topic 3
  550. Message 34        Thu Jul 18, 1991
  551. MINDOVERMIDI                 at 04:44 EDT
  552.  
  553. Check Fre(0) before running your program. Then, run your program so that most
  554. of the routines with large variable assignments get run, break your program,
  555. then check Fre(0) again. The difference between the second Fre(0) and the
  556. first should be approximately how much memory your program is using for
  557. variables. Alternately, you could physically add up the sizes of all your
  558. strings, floating point and integer variables, and arrays with a calculator.
  559. Add 10 or 20 kbytes just to be safe. Then type;
  560.  
  561. Reserve n
  562.  
  563. at the beginning of your program, where n is the amount of memory GFA needs
  564. for the strings, arrays and variables you are using.
  565.  
  566. This MSHRINKS the amount of memory that the GFA code has MALLOC'd. Now, your
  567. MALLOC(-1) call will return the amount of memory you have available for your
  568. own MALLOC calls. Note that you should always leave the 16384 bytes free, as
  569. GEM needs free memory in the system. So if you want to MALLOC all the
  570. remaining memory, type;
  571.  
  572.  N=Var_requirements
  573.  Reserve N
  574.  Let buf_size=Malloc(-1)-16384
  575.  if buf_size<=0
  576.    End                  ; with some error message
  577.  endif
  578.  Our_buffer=Malloc(buf_size)
  579.  
  580. in your exit routine, type;
  581.  
  582. MFREE(our_buffer)
  583.  
  584. This is not GFA's recommended usage of the RESERVE call, but works more
  585. efficiently for aquiring Malloc space.
  586.  
  587.  /\  Darren Stevens
  588.  \/  Member of the IAAD -- Serving the Atari Community
  589.  ------------
  590. Category 22,  Topic 3
  591. Message 35        Thu Jul 18, 1991
  592. R.WATSON15 [Wayne Watson]    at 05:26 EDT
  593.  
  594. RESERVE is defined on page 89 of the Michtron manual. If the number is
  595. positive, then that amount is reserved for the interpreter and the remainder
  596. of memory is released. If the number is negative, then all of memory - that
  597. amount is reserved. The memory area reserved should be in 256 byte blocks. The
  598. RESERVE command by itself will release all memory RESERVED. You should place
  599. the reserve command at the beginning of the program. You should also leave at
  600. least 16k of memory available if you are going to take all of free memory so
  601. that the system has enough memory for fileselectors, etc. Normally, the
  602. program will use all of available memory for itself but sometimes this is not
  603. desired.
  604.  
  605.   As far as determining how much memory to reserve, follow what MINDOVERMIDI
  606. said.
  607.  
  608.   It is true that you do not need to release the memory back when exiting a
  609. compiled program but, I always do. You have to in the interpreter so I just
  610. leave it in there when I compile the program. I just like to clean up my mess
  611. when I am done and not depend on the system to do it for me.
  612.  
  613.  ------------
  614. Category 22,  Topic 3
  615. Message 36        Thu Jul 18, 1991
  616. MIKE-FULTON [Mike @ Atari]   at 15:32 EDT
  617.  
  618. GEMDOS $48 (72 decimal) is Malloc()
  619.  
  620. GEMDOS $30 (48 decimal) is Sversion()
  621.  
  622.  
  623.  
  624. Mike
  625.  
  626.  ------------
  627. Category 22,  Topic 3
  628. Message 37        Thu Jul 18, 1991
  629. TOWNS [John@Atari]           at 18:28 EDT
  630.  
  631. I would rather have programmers think that they HAVE to free their memory
  632. after they are done with it.
  633.  
  634. Doing things the right way is important, I think.
  635.  
  636. -- John Townsend
  637.    Atari Corp.
  638.  
  639.  ------------
  640. Category 22,  Topic 3
  641. Message 38        Thu Jul 18, 1991
  642. PRINCETON-U                  at 19:01 EDT
  643.  
  644. Geeze, this is a wonderful place. If I had to rely on the GFA manual from
  645. antic for my programming needs, I'd end up giving up in frustration. Thanks,
  646. everyone. 
  647.  ------------
  648. Category 22,  Topic 3
  649. Message 39        Thu Jul 18, 1991
  650. E.DAWLEY1                    at 20:32 EDT
  651.  
  652. Arrays may sometimes be moved by GFA. Thus it is important to put all static
  653. data in an area that GFA wont touch. Most everything that you want to stay put
  654. should be put in a MALLOC'ed area. GFA initially claims all free memory except
  655. 16K for your programs. The 16k is for GEM (resource files, windows etc).
  656. Normally however you will want to leave about 32k for GEM if your program uses
  657. windows. Note that the manual says that the FILESECT needs 32k of free memory
  658. also, but this doesnt necessarily have to be allocated. If your RSC files are
  659. over 16k, you will have to reduce the amount of memory GFA claims with the
  660. RESERVE command in order for them to load.
  661.  
  662. It is absolutly imperative that you free all MALLOC's at the end of your
  663. program and un-reserve all memory when in the intrepreter. Otherwise the
  664. program will run once, and the next time hang up.
  665.  
  666. Also, you should not make to many MALLOC calls, the COMPUTE Reference TOS
  667. version suggests that you add up all that you need and just do one MALLOC
  668. call.
  669.  
  670. Window titles and alternate screens are other examples of static data.
  671.  
  672. Eric
  673.  ------------
  674. Category 22,  Topic 3
  675. Message 40        Fri Jul 19, 1991
  676. CBARRON                      at 02:45 EDT
  677.  
  678. Easier if the areas needed are fixed in size is INLINE. No reserves no
  679. mallocs, no frees.  Or is this broken??
  680.  
  681.  ------------
  682. Category 22,  Topic 3
  683. Message 41        Fri Jul 19, 1991
  684. PRINCETON-U                  at 06:28 EDT
  685.  
  686. Yeah, I had thought about using INLINE's. That would make things a heck of a
  687. lot easier. What's the word on INLINE?
  688.  ------------
  689. Category 22,  Topic 3
  690. Message 42        Fri Jul 19, 1991
  691. PRINCETON-U                  at 07:24 EDT
  692.  
  693.  There's only ONE problem with using INLINE. It works fine 'cept if you
  694.  use ...
  695.  INLINE buffer%,4096
  696.  you just added 4096 bytes to the size of your program. INLINE reserves
  697.  room in your program for loading files from disk into a memory location.
  698.  So it actually increasing the size of your code by the amount of bytes
  699.  you're reserving. Oh well, I'll stick to RESERVE and MALLOC() :)
  700.  ------------
  701. Category 22,  Topic 3
  702. Message 43        Fri Jul 19, 1991
  703. E.DAWLEY1                    at 20:27 EDT
  704.  
  705. I wouldnt call that a 'problem' with INLINE. If you dont use INLINE but use
  706. MALLOC, the amount of memory used by your program and its data area are still
  707. the same. INLINE is an excellent feature, although its limit is 32k.
  708.  
  709. Eric
  710.  ------------
  711. Category 22,  Topic 3
  712. Message 44        Fri Jul 19, 1991
  713. PRINCETON-U                  at 20:48 EDT
  714.  
  715. No, INLINE actually increases the size of your program on disk. A one line
  716. program that consists of nothing but ... INLINE A%,32000 saved on disk is over
  717. 32K bytes. But I was fooling around with RESERVE and MALLOC() last night and
  718. pretty much figured it out, so that's the path I'll go. Thanks for all your
  719. help, everyone.
  720.  ------------
  721. Category 22,  Topic 3
  722. Message 45        Wed Jul 24, 1991
  723. P.STONE [Xorcist]            at 06:35 EDT
  724.  
  725. Hello there GFA'ers...
  726.  
  727. I have had a need to write some MIDI applications which are a bit out of the
  728. norm (not a sequencer mind you), but never the less, I am writing it in this
  729. ancient form of GFA basic I got used. It's got NO version number. NO compiler
  730. and I think it's version 1.0 or something like that...
  731.  
  732. My question is that before I run out and buy the new 3.5, I would like to know
  733. if upon compilation, the following is true... you see, I am not new to
  734. compilers, and want to make sure that the compiling process will speed up
  735. functions which are already subroutines through the interpreter...
  736.  
  737. Does anyone know the speed increase for the commands:
  738.  
  739. SPUT
  740.  SETCOLOR
  741.  OUT
  742.  
  743. I am running a loop, and checking a port for activity, upon which I am re-
  744. drawing the screen each time this happens... If this happens slowly, there is
  745. no lag... but a flurry of activity, and my screens take time to catch up.
  746. We're not talking tons of activity... just a screen re-draw for every byte and
  747. when more then 10 bytes come in at a time, there is a queue of screen SPUTS.
  748.  
  749. Would this SPUT'ing be greatly, a little, or not at all sped up if one
  750. compiled with 3.5?
  751.  
  752. Anyways... thanks again...
  753.  
  754. Peter
  755.  
  756.  ------------
  757. Category 22,  Topic 3
  758. Message 46        Wed Jul 24, 1991
  759. D.A.BRUMLEVE [kidprgs]       at 09:42 EDT
  760.  
  761.  Peter, it's been a long time since I've done timing loops.  I remember
  762.  comparing SPUT to PUT once though (in 2.X), and the difference was
  763.  phenomenal.  The latest version is fast in the interpreter and generally
  764.  faster in the compiler.  If it gets to be _too_ fast for my purposes,
  765.  I sprinkle my code with PAUSEs.  This happens more often than you would
  766.  guess.
  767.  ------------
  768. Category 22,  Topic 3
  769. Message 47        Thu Jul 25, 1991
  770. RHFACTOR                     at 04:00 EDT
  771.  
  772. If you upload the screen redraw loop you want timed with 3.5 compiler, I'm
  773. sure we can do that for you.
  774.    Also remember, the 3.5 version can handle assembly language 'implants' when
  775. needed.
  776.                    RHFactor
  777.  ------------
  778. Category 22,  Topic 3
  779. Message 48        Thu Jul 25, 1991
  780. P.STONE [Xorcist]            at 22:41 EDT
  781.  
  782. Well ok.. I broke down and picked up the NEW 3.6 GFA for the ST...
  783.  It's definately faster then my older version. I am not disappointed...
  784. initially...
  785.  
  786. I have found a few bugs though and have posted them on the Tech Support
  787. board....
  788.  
  789. <X>
  790.  
  791.  ------------
  792. Category 22,  Topic 3
  793. Message 49        Fri Jul 26, 1991
  794. P.STONE [Xorcist]            at 02:29 EDT
  795.  
  796. Ok...
  797.  
  798. I've uploaded what I RAN out to by GFA 3.6 for here... It's a MIDI application
  799. called MapIt!. (File #20289).
  800.  
  801. It was interesting converting from GFA 0.0 to 3.6
  802.  
  803. <X>orcist
  804.  
  805.  ------------
  806. Category 22,  Topic 3
  807. Message 50        Mon Jul 29, 1991
  808. PRINCETON-U                  at 01:49 EDT
  809.  
  810. Hi.. I have a small problem. I'm an avid user of the LiveWire Chat lines. And
  811. since there's no terminal programs with a decent chat mode, I decided to write
  812. my own, not to mention a few chat lines games such as Trivia and Trivia II. My
  813. problem is that sometimes, because I live at home with my parents and my
  814. sister, someone will pick up another extension in the house and the line noise
  815. will disconnect me. Sometime when this happens, I'm no longer able to send
  816. anything out to the modem. I'm usually still able to RECEIVE data.. just can't
  817. send. This has never happened while using Flash. Only when using my own
  818. terminal. Any idea why line noise sometimes locks up my serial port?
  819.  ------------
  820. Category 22,  Topic 3
  821. Message 51        Mon Jul 29, 1991
  822. TOWNS [John@Atari]           at 17:12 EDT
  823.  
  824. Hmmm.. not sure about the Serial Ports.. but, you really should look at
  825. STalker and STeno. It's a great program and has a really neat type-ahead.
  826.  
  827. Also, in the future, you will be able to program in a C-like script language
  828. where you could write your own games!
  829.  
  830. -- John
  831.  
  832.  ------------
  833. Category 22,  Topic 3
  834. Message 52        Mon Jul 29, 1991
  835. J.NESS [Jim]                 at 19:47 EDT
  836.  
  837. PRINCETON-U
  838.  
  839. Your ST has flow control set to XON/XOFF, and your burst of random garbage
  840. just happens to include an XOFF character.  The ST will patiently sit and wait
  841. for an XON, before it will transmit any more chars.
  842.  
  843. There is at least one utility available that clears the clogged port, when it
  844. happens.  Enlightened terminal software will do it automatically, or on
  845. command, or not use the built-in flow control at all.
  846.  
  847.                                  -JN
  848.  
  849.  ------------
  850. Category 22,  Topic 3
  851. Message 53        Mon Jul 29, 1991
  852. D.HOLMES14 [David]           at 23:01 EDT
  853.  
  854. I just encountered a problem with GFA BASIC 3.5E.  (Luckily, one of the
  855. first.)
  856.  
  857. I was using the new _DATA command and wrote some code that relies on it.  When
  858. I tried to compile it, the linker didn't recognize it.  It simply printed,
  859. "GETDATA?  SETDATA?" etc.  Does anyone know what's wrong, and if this has been
  860. corrected?  This code is pretty important for my new program, and I'd like to
  861. get it to work.
  862.  
  863. Thanks in advance.
  864.  
  865. David
  866.  ------------
  867. Category 22,  Topic 3
  868. Message 54        Tue Jul 30, 1991
  869. D.A.BRUMLEVE [kidprgs]       at 01:04 EDT
  870.  
  871.  David, not sure if this is what's happening in your situation, but
  872.  chances are good.  When I was beta-testing the first 3.x compiler, I
  873.  found that commands that the compiler didn't recognize were handled
  874.  in exactly this way, with question mark and all.  If this is the case
  875.  with _DATA (I haven't tried it with 3.5E), then you'll have to use
  876.  an alternative command/subroutine.
  877.  ------------
  878. Category 22,  Topic 3
  879. Message 55        Tue Jul 30, 1991
  880. D.HOLMES14 [David]           at 23:21 EDT
  881.  
  882. Well, I'd hate to not get to use _DATA, since I've found so many uses for it. 
  883. Hopefully this will be fixed.  (Any official word?)
  884.  
  885. David
  886.  ------------
  887. Category 22,  Topic 3
  888. Message 56        Wed Jul 31, 1991
  889. R.WATSON15 [Wayne Watson]    at 01:31 EDT
  890.  
  891. David,
  892.   I tried the new _DATA command and it Compiled and Linked just fine. Did you
  893. copy the new version of the compiler and linker over to another drive. If so,
  894. recopy the files over. You may have missed one or got a bad copy.
  895.  
  896.  ------------
  897. Category 22,  Topic 3
  898. Message 57        Wed Jul 31, 1991
  899. D.HOLMES14 [David]           at 22:35 EDT
  900.  
  901. I doubt it was a bad copy, since that is the only problem I've had with it,
  902. but it's worth a try.
  903.  
  904. BTW, is it illegal to run another program from a desk accessory? I've written
  905. a DA that works, but I'm just wondering if I'm allowed to do that.  The
  906. external program simply runs and terminates; output is placed in a window. 
  907. Should I be doing this?
  908.  
  909. David
  910.  ------------
  911. Category 22,  Topic 3
  912. Message 58        Thu Aug 01, 1991
  913. MINDOVERMIDI                 at 06:09 EDT
  914.  
  915. D.HOLMES: You cannot exec a program from a desk accessory, without doing
  916. serious system hacking, else the system will eventually (or immediatly) crash.
  917. Even with complete O/S documentation from Atari, the word is that it's not
  918. impossible, but very tricky. Sorry I can't enlighten you more, I haven't spent
  919. much time trying.
  920.  ------------
  921. Category 22,  Topic 3
  922. Message 59        Fri Aug 02, 1991
  923. R.RIMKEVICUS                 at 00:18 EDT
  924.  
  925. Just got GFA basic 3.5 today, it took only one week after I sent the order in.
  926. Now, that's fast. Wish Atari was that fast. Oh, well, anyways now I need a
  927. manual so I know what the commands are. Are the 2 books w/ disk, listed on the
  928. price sheet that came with my order the manuals I'll need? That is the GFA s/w
  929. dev and Adv prog books and disks.
  930.  ------------
  931. Category 22,  Topic 3
  932. Message 60        Sun Aug 04, 1991
  933. PRINCETON-U                  at 01:25 EDT
  934.  
  935.  HELP!!!! The routines I've used to increase the size of my serial port are
  936.  causing my terminal to lock up. Can someone tell me if I'm doing something
  937.  wrong???
  938.  
  939.  mres%=MALLOC(-1)
  940.  IF mres%<73216
  941.    mres%=73216-mres%
  942.    mres%=mres%+255 AND &HFFFF00
  943.    RESERVE -mres%
  944.  ENDIF
  945.  mblock%=MALLOC(73216)
  946.  '
  947.  mbuff%=XBIOS(14,0)
  948.  mbuffin%=mblock%+255 AND &HFFFF00
  949.  mbuffout%=(mblock%+4352)+255 AND &HFFFF00
  950.  screen1%=(mblock%+8704)+255 AND &HFFFF00
  951.  screen2%=(mblock%+40960)+255 AND &HFFFF00
  952.  '
  953.  LPOKE mbuff%,mbuffin%
  954.  DPOKE mbuff%+4,4096
  955.  DPOKE mbuff%+6,0
  956.  DPOKE mbuff%+8,0
  957.  DPOKE mbuff%+10,256
  958.  DPOKE mbuff%+12,3840
  959.    '
  960.  LPOKE mbuff%+14,mbuffout%
  961.  DPOKE mbuff%+18,4096
  962.  DPOKE mbuff%+20,0
  963.  DPOKE mbuff%+22,0
  964.  DPOKE mbuff%+24,256
  965.  DPOKE mbuff%+26,3840
  966.  '
  967.  OPEN "",#1,"AUX:"
  968.  VOID XBIOS(15,4,-1,-1,-1,-1,-1)
  969.  '
  970.  It doesn't lock up immediately... usually it takes about an hour. But it
  971.  does NOT lock up if I don't resize the serial port. I used to just resize
  972.  the serial port using arrays, and it locked up then, too. Someone told me
  973.  to use MALLOC() and RESERVE. But it's STILL locking up. Am I doing
  974.  something wrong here???
  975.  ------------
  976. Category 22,  Topic 3
  977. Message 61        Sun Aug 04, 1991
  978. J.SIEBEN [J.SIEBEN]          at 13:27 EDT
  979.  
  980. R.Rimkevicus
  981.  
  982. Funny I recieved my upgrade on the 2nd of Aug too.  I had (still do) the
  983. Michtron Manual for GFA 3.0.  I ordered the new manual as well when I
  984. upgraded.  I am not really disapointed with it but it pretty much is the
  985. Michtron manual with most (?) of the typos removed.  When I looked at the
  986. manual change file I noticed those changes where included in the new manual
  987. (reprinted May, 1991).  It does come with a nice binder.  At least now I have
  988. the interpreter and compiler docs in one book.
  989.  
  990.  
  991. For the benifit of GFA Software Technologies,
  992.  
  993. You stamped the invoice saying it was shipped on the 26th of July. Now you
  994. know how long UPS takes to get it to Calif.
  995.  
  996. Thanks for your service.
  997.  ------------
  998. Category 22,  Topic 3
  999. Message 62        Sun Aug 04, 1991
  1000. R.RIMKEVICUS                 at 17:51 EDT
  1001.  
  1002. Well how much is the latest GFA basic manual?? I need to get one.
  1003.  ------------
  1004. Category 22,  Topic 3
  1005. Message 63        Sun Aug 04, 1991
  1006. J.NESS [Jim]                 at 18:23 EDT
  1007.  
  1008. I was charged $25 for a new manual, when I purchased the v3.5e upgrade.
  1009.  
  1010. Seemed expensive, but I went ahead anyway.
  1011.  
  1012.                                     -JN
  1013.  ------------
  1014. Category 22,  Topic 3
  1015. Message 64        Sun Aug 04, 1991
  1016. E.DAWLEY1                    at 20:20 EDT
  1017.  
  1018. PRINCTON-U........
  1019.  
  1020. Im not sure if this is the reason for the lokc-up, but there is one peculiar
  1021. note about the code you provided. It has to do with the procedure for RESERVE
  1022. and MALLOC. Normally GFA claims all of free memory except 16k at startup for
  1023. your program. Therefore an immediate MALLOC(-1) will always result in the
  1024. value of 16k. You must use the RESERVE command before you MALLOC more than
  1025. this amount. From the looks of your code, and following this procedure, you
  1026. are reserving (73k-16k) ..(or 57k) and then MALLOC(73k). Now this leaves no
  1027. room for GEM, which is what the 16k is left free for.
  1028.  
  1029. Another good procedure to follow when you are using MALLOC is to test the
  1030. return code before you continue on. I.E. check the value of mblock% to make
  1031. sure its the value you wanted. IF its a zero or some negative number then the
  1032. command failed.
  1033.  
  1034. At the end of your program, you should MFREE before RESERVE. As mentioned
  1035. before, this is mainly while in the intrepreter.
  1036.  
  1037.  ------------
  1038. Category 22,  Topic 3
  1039. Message 65        Sun Aug 04, 1991
  1040. PRINCETON-U                  at 23:10 EDT
  1041.  
  1042. Yes, I do use MFREE and RESERVE to return the memory I reserved and allocated.
  1043. I wasn't aware though that the 16K made available to me through the initial
  1044. MALLOC(-1) was something I wasn't supppose to use for myself. I'll try it with
  1045. leavin ghe initial 16K alone and see what happens.
  1046.  ------------
  1047. Category 22,  Topic 3
  1048. Message 66        Mon Aug 05, 1991
  1049. B.BILLJONES2 [Bill Jones]    at 04:32 EDT
  1050.  
  1051. Hi,
  1052.  
  1053.         I desperately need help with this,  Hope someone can help!  I need to
  1054. know how to get at the value of a number stored in Microsoft Basic MKS$
  1055. format.  It's a 4 byte string, but GFA's CVL function gives back incorrect
  1056. data.  (I want to convert this value to a byte location pointing to a file.) 
  1057. Incidentally, using the GFA CVS funtion gives me back "0" consistantly.  CVL
  1058. at least give me some kind of numerical figure.
  1059.  
  1060.         Is there some kind of bit conversion I have to do here before or after
  1061. I use the GFA CV? function?  Since PC GFA is now out, perhaps someone has run
  1062. into this.  The file in question, is an .NDX (Index) pointer file generated by
  1063. the Markmail offline reader system.
  1064.  
  1065.         Many thanks for ANY help!
  1066.  
  1067. Bill Jones
  1068.  
  1069.  
  1070.  
  1071.  ------------
  1072. Category 22,  Topic 3
  1073. Message 67        Mon Aug 05, 1991
  1074. J.NESS [Jim]                 at 19:58 EDT
  1075.  
  1076. Using v3.5e, I wrote a program today which ran fine in the interpreter and
  1077. using GFABASRO, but which errored out in the compiler, with error #0008.
  1078.  
  1079. The error occured whether running from within MENU.PRG or from the desktop. 
  1080. The error listing I find in the new manual says #0008 is an out of memory
  1081. error.  That can't be possible, since I have the program set up to use all
  1082. available memory.  I also tried setting the compiler Mxxxx value, to limit the
  1083. amount of memory.
  1084.  
  1085. Anybody got any clues?
  1086.  
  1087.                                 -JN
  1088.  
  1089.  ------------
  1090. Category 22,  Topic 3
  1091. Message 68        Mon Aug 05, 1991
  1092. R.WATSON15 [Wayne Watson]    at 23:10 EDT
  1093.  
  1094. PRINCETON-U
  1095.    You are using a lot of things in your calculations you do not need and may
  1096. be screwing things up. By writing your code the way you have, you make it
  1097. harder to follow. It also makes it harder for you and others to decode. Why do
  1098. you need the AND &HFFFF00?
  1099.  
  1100.    As mentioned in prior message, MALLOC(-1) returns the largest amount of
  1101. contiguous free memory and not FREE memory. Contiguous free memory is memory
  1102. that is in memory blocks that continue un-interupted. There is a big
  1103. difference between the MALLOC(-1) and free memory. You end up reserving (on my
  1104. system) all but 27932 bytes of memory and then Malloc 73216. 27392 bytes is
  1105. enough for the system but it is not enough for the MALLOC and the system.
  1106.  
  1107.    When I ran the program (which printed out the results of the calculations
  1108. and such), MALLOC(73216) returned a 0 which meant that the malloc command did
  1109. not take. Now, since mblock% was 0, the program ended up using zero as the
  1110. base address in which to store the buffer and such. A BIG NO NO.
  1111.  
  1112.    Here is a reprint of your code and what my system returned for results.
  1113.  
  1114.   mres%=MALLOC(-1)    ! Returned the value of 45828
  1115.   IF mres%<73216      ! mres% will always be <73216 on my system
  1116.     mres%=73216-mres% ! got the value of 27388
  1117.     mres%=mres%+255 AND &HFFFFF00  ! Got the value of 27932 which is
  1118.                                    ! only 4 bytes larger than mres%.
  1119.     RESERVE -mres%    ! Reserved all but 27392 bytes of memory for
  1120.                       ! your program
  1121.   ENDIF
  1122.   mblock%=MALLOC(73216)  ! Resulted in a return value of 0 (zero)
  1123.    because you only left 27392 bytes of system meory available.
  1124.  
  1125.   mbuff%=XBIOS(14,0)  ! Got 3184
  1126.   mbuffin%=mblock%+255 AND &HFFFF00  ! Equals to '0+255 AND &HFFFF00'
  1127.    Which equaled 0. This meant that the INPUT buffer would be
  1128.    redirected to address 0.
  1129.  
  1130.   mbuffout%=(mblock%+4352)+255 AND &HFFFF00
  1131.   Same as mbuffin% except it started at address 0+4352
  1132.  
  1133.   screen1%=(mblock%+8704)+255 AND &HFFFF00  ! Resulted in address of
  1134.   0+8704.
  1135.  
  1136.   scrren2%=(mblock%+40960)+255 AND &HFFFF00  ! Resulted in address of
  1137.   0+40960.
  1138.  
  1139.   In other words, you end up invading other territory that is being used by
  1140. other stuff including your own buffers. It is a wonder that anything worked as
  1141. long as it did.
  1142.  
  1143.   I am going to upload a text file to the library tonight that will show how
  1144. to resize the RS232 ports without getting lockups. I think I put it in a
  1145. message here earlier but, I am not sure if it is still here. Your program
  1146. would work if, you did not end up with a return value of 0 when you do the
  1147. MALLOC. There are some things that are not needed in your program though. 255
  1148. AND &HFFFF00 ends up canceling each other out so why put it there. If you want
  1149. to skip 255 bytes then start the next buffer, drop the 'AND &HFFFF00'. Even if
  1150. this is what you wanted to do, you end up outside of your 73216 range.
  1151.  
  1152.   Base Address+255+4096+255+4096+32256+255+32256+255 = 73724 bytes of buffer
  1153. starting at base address.
  1154.  
  1155.   Remember, if you are going to use MALLOC, then you need to leave that amount
  1156. of memory available to the system. RESERVE -16384 will reserve all available
  1157. memory minus 16384. RESERVE 16384 will reserve 16384 and leave the rest for
  1158. the system. MALLOC uses system memory, NOT program memory.
  1159.  
  1160.   I will also add a section of code to the file that will show how to use one
  1161. large buffer for everything.
  1162.  
  1163.   Hope this helps figure out what is going wrong.
  1164.  
  1165.   Wayne Watson
  1166.  
  1167.  
  1168.  ------------
  1169. Category 22,  Topic 3
  1170. Message 69        Mon Aug 05, 1991
  1171. R.WATSON15 [Wayne Watson]    at 23:26 EDT
  1172.  
  1173. Jim,
  1174.   There must be something in your code that either uses something outside the
  1175. memory set aside for the program or you have DIMmed something too big, etc.
  1176. There are many possible causes for this and without the code in question, it
  1177. is hard to say. I am not sure if commands inside the program override the
  1178. Mxxxx command. I think that is mostly for use when writing .ACC programs.
  1179. Leave me E-mail if you do not want to post the code or give some more info
  1180. here and I will try to help.
  1181.  
  1182.  ------------
  1183. Category 22,  Topic 3
  1184. Message 70        Tue Aug 06, 1991
  1185. PRINCETON-U                  at 01:39 EDT
  1186.  
  1187. Wayne, I'm NOT reserving all but 27392. When using a negative number with
  1188. reserve, you are reserving THAT amount of memory. And while you may have
  1189. gotten 45828 returned with MALLOC(-1), I got 16384. I was wanting to reserve
  1190. 73216. Thus, I was RESERVE'ing 73216-MALLOC(-1). And the reason I was using
  1191. +255 AND &HFFF00, that makes sure the address is on a 256 byte boarder. That's
  1192. all that does. 4095 + 255 AND &HFFFF00 = 4096. Frankly, I don't believe my
  1193. RESERVE's and MALLOC()'s are the cause of the problem. I think it's the way
  1194. I'm resizing the serial port. Because I used to use arrays for this, but it
  1195. locked up then, too.
  1196.  ------------
  1197. Category 22,  Topic 3
  1198. Message 71        Tue Aug 06, 1991
  1199. J.NESS [Jim]                 at 20:07 EDT
  1200.  
  1201. Wayne -
  1202.  
  1203. I do DIM an array of 512 strings.  Being used to Pascal, I was figuring 80
  1204. bytes per string, but I suppose in Basic it's 255 bytes each.
  1205.  
  1206. Still, that's only about 130k.  I have 2 megs in my machine.  And, again, it
  1207. works fine in the interpreter, but not when compiled.
  1208.  
  1209. The program is long enough to be a pain to have in the message base here, but
  1210. what I'll do is edit it to only the first 10 lines or so, and see if it still
  1211. errors out.  If so, I'll paste it into Alladin and stick it here.
  1212.  
  1213. Thanks for response.
  1214.  
  1215.                                        -JN
  1216.  ------------
  1217. Category 22,  Topic 3
  1218. Message 72        Tue Aug 06, 1991
  1219. R.WATSON15 [Wayne Watson]    at 20:32 EDT
  1220.  
  1221. Princeton,
  1222.   According to the manual and from my own experience, when you use a negative
  1223. number with RESERVE, you are RESERVING ALL of FREE memory MINUS the number you
  1224. specify. Page 89 of my manual. As I said, those were my figures. You MALLOC'd
  1225. 73216 and was using in your buffers, more than that according to the numbers
  1226. you provided. Because the MALLOC failed and returned a 0, you were trying to
  1227. place data in the wrong places.  I understand about the 255 AND &HFFFF00 now.
  1228. The main problem with your program is that when you RESERVED -mres%, you only
  1229. left 16K for the system and then tried to MALLOC 73216. MALLOC failed and
  1230. returned a 0, the program then used 0 as a base address. I tried the section
  1231. of code out the way you gave it and I got 0 as a return. I then fixed it so
  1232. that it would leave 100K free in the system memory and I got back a valid
  1233. address. Using a MALLOC'd section of memory does work for resizing the
  1234. buffers. It fixed my problem and should fix most others.
  1235.  
  1236.  
  1237.  ------------
  1238. Category 22,  Topic 3
  1239. Message 74        Tue Aug 06, 1991
  1240. PRINCETON-U                  at 20:51 EDT
  1241.  
  1242.  Wayne, here's what I get...
  1243.  
  1244.  PRINT FRE(0)                    ' I got 584764
  1245.  RESERVE -73216                  ' reserving 73216 bytes
  1246.  PRINT FRE(0)                    ' I now get 512548
  1247.  RESERVE                         ' free the memory I reserved
  1248.  PRINT FRE(0)                    ' I now get 585764
  1249.  
  1250.  GFA reserves ALL of memory for itself. So, in a way, yes RESERVE -73216
  1251.  is saying let GFA Basic reserve all BUT 73216. Thus, I'll have that
  1252.  73216 bytes to MALLOC(). Before using RESERVE -73216, GFA is reserving
  1253.  ALL of memory, 'cept for about 16384. With RESERVE -73216, it's freeing
  1254.  up an additional 73216 bytes. And I ran what I sent, and I'm not getting
  1255.  a 0 when using MALLOC().
  1256.  ------------
  1257. Category 22,  Topic 3
  1258. Message 75        Tue Aug 06, 1991
  1259. DOUG.W                       at 23:25 EDT
  1260.  
  1261. Let's take this the other way...  You should be doing something like this
  1262. instead:
  1263.  
  1264.   RESERVE 20000
  1265.  
  1266. The idea here is that you should only be stealing as much memory as you
  1267. actually NEED.  When someone tries to run your program under MultiGEM, MIDI-
  1268. Tasking, Juggler, etc., they'll be mighty unhappy that your program is hogging
  1269. all available memory and not leaving any for other applications.
  1270.  
  1271. The rule of thumb is only to keep what you need for storage during the entire
  1272. life of the program, and use Malloc to get buffers that aren't needed all the
  1273. time.
  1274.  
  1275. --Doug
  1276.  ------------
  1277. Category 22,  Topic 3
  1278. Message 76        Wed Aug 07, 1991
  1279. PRINCETON-U                  at 00:20 EDT
  1280.  
  1281. But what about programs that don't use RESERVE or MALLOC() at all? All of the
  1282. memory is still being taken up by GFA. So you're telling us that we should
  1283. always immediately RESERVE just what the program needs?
  1284.  ------------
  1285. Category 22,  Topic 3
  1286. Message 77        Wed Aug 07, 1991
  1287. R.WATSON15 [Wayne Watson]    at 00:41 EDT
  1288.  
  1289. Princeton,
  1290.   You are right. That will teach me to trust manuals. I was going to leave
  1291. this message before I read yours. I got to playing around and found that the
  1292. manual was wrong and so was I. RESERVE with a negative number will reserve
  1293. that amount for program use. RESERVE with a positive number will leave that
  1294. much for the system. So, it seems that you may want to check you calculations
  1295. now. That is the only thing I can see that may be wrong. Your code did return
  1296. a 0 on my system. Who knows. Anyway, let me know what you find out. I also
  1297. found out that if you do a RESERVE before the MALLOC, you will get a Error
  1298. While RESERVE error.
  1299.  
  1300.   Doug,
  1301.     The reason for me using all of available memory is because I have written
  1302. a transfer program and I use all available memory as a buffer so that it will
  1303. not write the block to the disk everytime. Sort of like several Zmodem
  1304. programs do. The program is for a BBS and I am sorry if someone using MultiGem
  1305. doesn't like it. I guess they would have to load it as a last program or
  1306. whatever they do. I guess XYZ and other transfer programs will have to re-
  1307. written also.
  1308.  
  1309.  ------------
  1310. Category 22,  Topic 3
  1311. Message 78        Wed Aug 07, 1991
  1312. PRINCETON-U                  at 02:49 EDT
  1313.  
  1314. Hmmm, I RESERVE my memory, then use MALLOC() to allocate it... then I have to
  1315. MFREE what I MALLOC()'ed before I use RESERVE to release the  memory. Oh
  1316. well.. I wish the manual would go into further detail on this :/
  1317.  ------------
  1318. Category 22,  Topic 3
  1319. Message 79        Wed Aug 07, 1991
  1320. MINDOVERMIDI                 at 04:04 EDT
  1321.  
  1322. Wayne - in your program default section, it is nice to have a "maximum memory"
  1323. parameter. Your program runs, loads it's user default file, and reserves no
  1324. more memory (but maybe less) than the user wants.
  1325.  
  1326. Jim - GFABASIC strings can be up to 32767 bytes.
  1327.  ------------
  1328. Category 22,  Topic 3
  1329. Message 80        Wed Aug 07, 1991
  1330. J.EIDSVOOG1 [CodeHead]       at 10:59 EDT
  1331.  
  1332. Princeton,
  1333.  
  1334. Yes, as Doug said it is wise for _all_ GFA programs to use only that memory
  1335. which they need (although I think his example should have been RESERVE -
  1336. 20000), whether they previously used RESERVE and MALLOC or not.  It is common
  1337. practice in other programming languages to do an Mshrink (RESERVE) at the
  1338. beginning of the program.  There's no reason that GFA programmers shouldn't
  1339. follow the same rules (although I'm as guilty as the next guy in some of my
  1340. GFA programs <grin>).  If a program needs to ensure a 100K buffer for
  1341. transfers, there's no reason for it to use 3.5 meg (or more).
  1342.  
  1343.      John Eidsvoog  /|\  Member of the IAAD
  1344.  CodeHead Software  \|/  Serving the Atari Community
  1345.  ------------
  1346. Category 22,  Topic 3
  1347. Message 81        Wed Aug 07, 1991
  1348. PRINCETON-U                  at 20:23 EDT
  1349.  
  1350. Ok, that sounds cool.. I'll definitely start doing that. 'Cept I WILL want to
  1351. use all available memory in my terminal so that the capture buffer can be as
  1352. large as memory permits. 
  1353.  ------------
  1354. Category 22,  Topic 3
  1355. Message 82        Wed Aug 07, 1991
  1356. J.NESS [Jim]                 at 20:38 EDT
  1357.  
  1358. Better yet (I get smarter, the more I read the manual), use the Mxxxxx command
  1359. within the compiler.  This is the equivelant of RESERVE, but it assigns data
  1360. space to the program from within the startup code - the method John described.
  1361.  
  1362. Using M20000 for GEM programs, and a smaller number for non-GEM should be
  1363. sufficient for most programs.  If you know that your data will take more
  1364. space, then assign more.  If you don't NEED the space, don't hog it.  You
  1365. don't know what other programs will be doing 2 years from now.
  1366.  
  1367.                                   -JN
  1368.  
  1369.  
  1370.  ------------
  1371. Category 22,  Topic 3
  1372. Message 83        Wed Aug 07, 1991
  1373. E.DAWLEY1                    at 21:21 EDT
  1374.  
  1375. At start up you cannont MALLOC more than 16k, to do so, you must use the
  1376. RESERVE command. The format of RESERVE is..... RESERVE -x% (reduces the amount
  1377. of memory calaimed by GFA by x%. A postive amount returns x% back to GFA.
  1378.  
  1379. If PRINCTON-U's program does not use GEM, then his memory initialization code
  1380. should be ok.
  1381.  
  1382. If the program crashes only after one hour of use, then its probably something
  1383. else. Without seeing the rest of the code its hard to speculate. Are you using
  1384. error strings instead of bombs when compiled? This may lead you to they type
  1385. of error that causes the crash. One possibility is that you are not reading
  1386. the serial buffer properly so that the tail catches up with the head and gives
  1387. it a bite.
  1388.  
  1389. Computes TOS recommends that applications return any memory not needed by the
  1390. application back to the system. Of course this is a purely personal decision.
  1391. If your program does not allow another program to be be executed, then theres
  1392. no need to return unused memory. Since the ST's and TT's are not multi-tasking
  1393. computers, its really a mute point.
  1394.  
  1395. Eric
  1396.  ------------
  1397. Category 22,  Topic 3
  1398. Message 84        Wed Aug 07, 1991
  1399. PRINCETON-U                  at 23:01 EDT
  1400.  
  1401. It's not CRASHING or BOMBING.... it's locking up. So, there is no error code
  1402. or bombs returned. And this ONLY happens when I resize the serial port
  1403. buffers. But it doesn't ALWAYS happen. 
  1404.  ------------
  1405. Category 22,  Topic 3
  1406. Message 85        Thu Aug 08, 1991
  1407. TOWNS [John@Atari]           at 18:33 EDT
  1408.  
  1409. At some point in the very near future, there will be a TOS based machine that
  1410. will have multitasking. If you free the memory you don't need, this will help
  1411. multitasking quite a bit.
  1412.  
  1413. -- John
  1414.  
  1415.  ------------
  1416. Category 22,  Topic 3
  1417. Message 86        Thu Aug 08, 1991
  1418. J.NESS [Jim]                 at 19:52 EDT
  1419.  
  1420. Anyone volunteer to compile the following?
  1421.  
  1422.  
  1423. DIM A$(2)                 <--  actually, any value within the ()
  1424.  
  1425.  
  1426. Nothing else, just that.  Compile it and try to run it.  Compile ANYTHING,
  1427. with that at the top, and try to run it.
  1428.  
  1429. If you can get it to run, tell me how.  Runs fine in the interpreter, but
  1430. error #0008 when compiled.  This was the problem I mentioned in previous
  1431. messages, and it has been narrowed to the DIM statement, using a string array.
  1432.  
  1433. In my program, if I remove the DIM, the program runs - until it errors out
  1434. because of the undeclared array.
  1435.  
  1436. I am probably missing something obvious.
  1437.  
  1438.                                    -JN
  1439.  ------------
  1440. Category 22,  Topic 3
  1441. Message 87        Thu Aug 08, 1991
  1442. D.A.BRUMLEVE [kidprgs]       at 20:59 EDT
  1443.  
  1444.  Jim, this is majorly wierd.  I have _lots_ of string arrays and my 
  1445.  programs have all been compiling just fine.  I will take on this
  1446.  challenge...Maybe between us, we can zero in on the problem.  It makes
  1447.  it really tough when you can narrow it down like that and it's a 
  1448.  perfectly legal operation.
  1449.  ------------
  1450. Category 22,  Topic 3
  1451. Message 88        Thu Aug 08, 1991
  1452. D.A.BRUMLEVE [kidprgs]       at 21:09 EDT
  1453.  
  1454.  Well, Jim, I don't have an explanation, but I do have a solution:
  1455.  rename the string.  For example DIM abc$(2) compiles just fine!
  1456.  Wieeeeerd, eh?
  1457.  
  1458.  Rather clearly, it's not a coding puzzle.
  1459.  ------------
  1460. Category 22,  Topic 3
  1461. Message 89        Thu Aug 08, 1991
  1462. E.DAWLEY1                    at 21:15 EDT
  1463.  
  1464. I believe that the mininum size of an array must be 256 bytes. Try it with DIM
  1465. a$(256) and I'll bet it works.
  1466.  
  1467. PRINCTON-U, I have never resized the serial port, but the kind of lock-up you
  1468. described happens when you try to read a byte from the port when there was
  1469. nothing there. If you change all the buffer vectors, dont you need to keep
  1470. track of the hihg and low water marks manually? And why go to the bother of re-
  1471. sizing the buffer? If you read the buffer in a tight loop, I cant imagine why
  1472. the default buffer wouldnt be sufficient.
  1473.  
  1474. Eric
  1475.  ------------
  1476. Category 22,  Topic 3
  1477. Message 91        Thu Aug 08, 1991
  1478. T.SAVINO [2-BIT SOFT]        at 23:30 EDT
  1479.  
  1480. J.NESS, I tried this interpreted & compiled - no problem dim a$(2)
  1481. a$(1)="hello" a$(2)="goodbye" for x%=1 to 2
  1482.    PRINT A$(X%) NEXT x%
  1483.  
  1484. ...TS
  1485.  ------------
  1486. Category 22,  Topic 3
  1487. Message 92        Thu Aug 08, 1991
  1488. D.A.BRUMLEVE [kidprgs]       at 23:36 EDT
  1489.  
  1490.  TS: it seems to make a difference which version you are using.  I couldn't
  1491.  get it to compile in 3.5E or whatever it's called.
  1492.  
  1493.  Eric, the figure in parentheses following the string variable name is
  1494.  used to indicate the number of _elements_ in the array, not the byte
  1495.  size of the string.  a$(256) doesn't compile in my 3.5E either.
  1496.  ------------
  1497. Category 22,  Topic 3
  1498. Message 93        Fri Aug 09, 1991
  1499. D.A.BRUMLEVE [kidprgs]       at 00:02 EDT
  1500.  
  1501.  OK, Jim, been playing quite a bit, and it's curiouser and 
  1502.  curiouser...
  1503.  
  1504.  Recently I compiled a program that returned the same out of 
  1505.  memory accusation in 3.5E.  I went back and saved it a second 
  1506.  time and recompiled and voila! it ran!  I had forgotten that 
  1507.  experience until tonight, when the same thing happened with this 
  1508.  code:
  1509.  
  1510.  DIM a$(2)
  1511.  a$(1)="good"
  1512.  PRINT a$(1)
  1513.  END
  1514.  
  1515.  As reported earlier, I'd tried this code in 3.5E and it wouldn't 
  1516.  compile correctly.  I had loaded MENU.PRG and selected 
  1517.  Interpreter and typed it and saved it in that way.  Clicked on 
  1518.  Quit and back in the MENU.PRG screen I Compiled it and failed.  
  1519.  In a later experiment, I ran GFABASIC.PRG from the _desktop_ and 
  1520.  typed the same code anew and Quit.  Then I ran MENU.PRG (3.5E) 
  1521.  and Compiled and it worked!  Tried this same scenario twice and 
  1522.  it went the same way each time.  But then the next time it worked 
  1523.  both ways...And the next time.  Go figure.  Three times does not 
  1524.  a rule make, but I would say that there is a _chance_ you'd do 
  1525.  better if you resave the program from GFABASIC.PRG run from the 
  1526.  desktop...or, at least, resave the program over and over until it 
  1527.  works.
  1528.  
  1529.  By the way, the program created from within the 3.5E MENU.PRG and 
  1530.  the program created from GFABASIC.PRG 3.5E run from the desktop 
  1531.  _both_ were willing to function when compiled with my copy of 
  1532.  3.02.
  1533.  
  1534.  So, here's an alternative suggestion: resave your program over 
  1535.  and over again until the compiler accepts it...or go back to 
  1536.  3.02, whichever works for you.  ;-)  Very strange problem.  
  1537.  Anybody have a guess as to what's going on?
  1538.  
  1539.  ------------
  1540. Category 22,  Topic 3
  1541. Message 94        Fri Aug 09, 1991
  1542. A.WESTON [Alan]              at 00:26 EDT
  1543.  
  1544. Does GFA support the fsel_exinput call in Tos 1.4 and above?  I can't find any
  1545. mention of it in my manual.  Maybe it's in a later version.
  1546.  
  1547. And how would I go about checking the TOS version number from GFA?
  1548.  
  1549. -Alan
  1550.  
  1551.  ------------
  1552. Category 22,  Topic 3
  1553. Message 95        Fri Aug 09, 1991
  1554. D.A.BRUMLEVE [kidprgs]       at 01:30 EDT
  1555.  
  1556.  Alan, don't know about fsel_exinput, but you can check the TOS version
  1557.  number this way:
  1558.  
  1559.  PRINT STR$(PEEK(PEEK(&H4F2)+2))+"."+STR$(PEEK(PEEK(&H4F2)+3))
  1560.  
  1561.  --D.A. Brumleve, IAAD
  1562.  ------------
  1563. Category 22,  Topic 3
  1564. Message 96        Fri Aug 09, 1991
  1565. J.EIDSVOOG1 [CodeHead]       at 02:04 EDT
  1566.  
  1567. Eric (and Princeton-U and everyone else),
  1568.  
  1569. But in a sense, the ST has _always_ been multi-tasking.  If you use GEM, the
  1570. user has access to accessories.  An accessory may wish to use more than 16K. 
  1571. (MaxiFile must use a limited viewing mode if there's not enough memory
  1572. available).
  1573.  
  1574. Once again there's no reason, no matter _what_ your program does, to steal
  1575. _all_ of the available memory.  Do not burden the user with the inability to
  1576. configure your program.  Using Flash, I only exceed 200K in my capture buffer
  1577. about 1% of the time.  It's very selfish of a program to grab megabytes of
  1578. memory when the maximum ever needed is a couple of hundred kilobytes.  Let the
  1579. user decide...PLEASE!!
  1580.  
  1581. Even Flash, although it grabs all of memory, lets the user reserve some memory
  1582. via the FREE command.  This is not at nice as being able to set the amount of
  1583. memory _used_, but it still allows me to execute other programs from within
  1584. Flash.
  1585.  
  1586. For anyone writing programs which need memory, do yourself and your users a
  1587. favor.  Coding a user-configurable memory size will be one of the least
  1588. difficult routines in your program.  Do it!  As I write this message in
  1589. Aladdin I have 2.7 meg of memory available.  Thank you, Tim.  (Now close those
  1590. files <grin>).
  1591.  
  1592.      John Eidsvoog  /|\  Member of the IAAD
  1593.  CodeHead Software  \|/  Serving the Atari Community
  1594.  
  1595. P.S.  In previous programs, I am as guilty as the next guy of not following
  1596. this advice (look at GenPatch or CodeCopy).  But this is my advice for today
  1597. and the future.  Don't be selfish.
  1598.  ------------
  1599. Category 22,  Topic 3
  1600. Message 97        Fri Aug 09, 1991
  1601. J.EIDSVOOG1 [CodeHead]       at 03:05 EDT
  1602.  
  1603. Well, I wasn't able to cause any errors whatsoever compiling just the single
  1604. line:
  1605.  
  1606.  DIM a$(2)
  1607.  
  1608. It compiled fine (with 3.5E) and ran fine.  Perhaps this is because I always
  1609. compile and link with HotWire as my shell, and as Dorothy pointed out, there
  1610. seems to be some problem when running the interpreter from MENU.PRG.  I never
  1611. could stand using that program.
  1612.  
  1613. With HotWire I simply select a work file for the project I want to work on. 
  1614. Then when I click on the interpreter, the source code is automatically loaded
  1615. (without executing).  Compiling is as simple as a single mouse click (or just
  1616. pressing "C").  And I never have to bother with renaming TEST.PRG to the
  1617. program name I want.  Call me spoiled.  If any HotWire users are interested,
  1618. I'll expound.
  1619.  
  1620. John
  1621.  ------------
  1622. Category 22,  Topic 3
  1623. Message 98        Fri Aug 09, 1991
  1624. D.A.BRUMLEVE [kidprgs]       at 04:14 EDT
  1625.  
  1626.  Expound, please.  Found the manual, you know.  ;-)
  1627.  ------------
  1628. Category 22,  Topic 3
  1629. Message 99        Fri Aug 09, 1991
  1630. PRINCETON-U                  at 19:28 EDT
  1631.  
  1632. I'm using INPAUX$ to read the serial port. So, that would NOT be the  cause of
  1633. the lockup. And when it locks up, EVERYTHING locksup. No keyclick, no mouse
  1634. movement. Zilch. And believe me, for my purposes, I HAVE to resize the serial
  1635. port.
  1636.  ------------
  1637. Category 22,  Topic 3
  1638. Message 100       Fri Aug 09, 1991
  1639. E.DAWLEY1                    at 19:47 EDT
  1640.  
  1641. At initialization GFA reserves 6 bytes for each element in a string array.
  1642. Therefore DIM a$(2) would require 18 bytes (including the 6 byte header).
  1643. However, using MENU.PRG and the 3.5E compiler, I had no problem whatsoever  in
  1644. compiling a$(2) -- (at the top of the code).
  1645.  
  1646. I cant recall what triggers the GFA error 'Array to small < 256'. I believe
  1647. this may only be for integer arrays.
  1648.  
  1649. CodeHead -- The ST is not a multi-tasking computer. Just becouse Accessories
  1650. can be loaded into memory doesnt make it one. Accessories should naturally
  1651. only claim the memory that they need. Applications however need not follow
  1652. this rule. If a user tells FLASH to reduce the amount of memory it uses, what
  1653. can that free memory accomplish? Since FLASH cannot EXEC another program, the
  1654. memory would just be dormant.
  1655.  
  1656. However, I do agree that there is no reason for a program to hog memory that
  1657. it doesnt use, becouse as you said, you never know whats going to be happening
  1658. a few years down the road.
  1659.  
  1660. Eric
  1661.  ------------
  1662. Category 22,  Topic 3
  1663. Message 101       Fri Aug 09, 1991
  1664. PRINCETON-U                  at 20:38 EDT
  1665.  
  1666. Eric, FLASH! CAN execute another program. In the command line, just type EXEC
  1667. program_name. You can also pass parameters through FLASH! by typing EXEC
  1668. program_name parameter list.
  1669.  ------------
  1670. Category 22,  Topic 3
  1671. Message 102       Fri Aug 09, 1991
  1672. T.SAVINO [2-BIT SOFT]        at 21:12 EDT
  1673.  
  1674. D.A.: I was using 3.5E to compile A$(2),etc.  _But_, I always run MENU.PRG
  1675. from the desktop.  I just don't like switching between the  two. (because I
  1676. renamed GFABASIC.PRG to GFABAS35.PRG to distinguish it from other versions &
  1677. was too lazy to fix the MENU.PRG source & re-compile it.  I do stuff like
  1678. that...             ...TS
  1679.  ------------
  1680. Category 22,  Topic 3
  1681. Message 103       Fri Aug 09, 1991
  1682. T.SAVINO [2-BIT SOFT]        at 21:16 EDT
  1683.  
  1684. )   ... and sometimes forget to close parenthesis.   8-]
  1685.  ------------
  1686. Category 22,  Topic 3
  1687. Message 104       Fri Aug 09, 1991
  1688. J.NESS [Jim]                 at 23:02 EDT
  1689.  
  1690. Dorothy -
  1691.  
  1692. Thanks for taking the time to test things out.
  1693.  
  1694. Since some folks find no problem, you find intermittent problems, and I find
  1695. it NEVER compiles, I guess I am going to try to do it with nothing in AUTO or
  1696. ACCs.
  1697.  
  1698. I had already been running the interpreter and compiler seperately. I did go
  1699. back and run both from MENU.PRG, with the same results.
  1700.  
  1701. Guess I'll give GFA a call on Monday, and let Barger figure it out.
  1702.  
  1703.                                    -JN
  1704.  
  1705.  ------------
  1706. Category 22,  Topic 3
  1707. Message 105       Sat Aug 10, 1991
  1708. R.WILSON36                   at 10:18 EDT
  1709.  
  1710. Jim, I tried the DIM a$(2). No problem using 3.6. Who knows  it might be a
  1711. sometimes bug which is hopefully fixed in 3.6
  1712.  ------------
  1713. Category 22,  Topic 3
  1714. Message 106       Sat Aug 10, 1991
  1715. MINDOVERMIDI                 at 16:06 EDT
  1716.  
  1717. E. Dawley: We have two brand new applications for the Atari ST which will be
  1718. released within the next 2-3 months, both are fully multitasking. Both can run
  1719. as applications or accessories, just by renaming the file. Both load MIDI
  1720. files and play them in a background proccess. Both can continue playing,
  1721. running, or proccessing when you close the desk accessory or quit the program
  1722. (gotta go grab a phone number from my data base while I'm putting this
  1723. sequence to tape). Both benefit greatly from variable buffer size - sometimes
  1724. I'm working on a 1k handwritten sysex file (and have Cubase and my sample
  1725. editor both in memory, plus a Ram disk) in it, other times I may want to
  1726. transmit a 2 meg sample in the background while I'm working in my word
  1727. processor. In spite of it's design, the Atari is *becoming* a multi-tasking
  1728. computer.
  1729.  ------------
  1730. Category 22,  Topic 3
  1731. Message 107       Sat Aug 10, 1991
  1732. R.WATSON15 [Wayne Watson]    at 17:11 EDT
  1733.  
  1734. E.DAWLEY,
  1735.   Nope. TOS or whatever takes care of all the high and low water marks, etc.
  1736. All you are really doing is telling the system to look for the buffer
  1737. somewhere else and what size it is. It takes care of the rest.
  1738.  
  1739. Alan,
  1740.   Try FILESELECT #"Title","Path","Default",file$. It was in the MANUAL.DOC
  1741. file that came on my disk.
  1742.  
  1743. Jim,
  1744.   I tried the DIM A$(2) and it ran fine. I ran the interpreter from MENU.PRG
  1745. and compiled the program from there also. You might want to check your auto
  1746. and ACC programs. Version 3.5E used.
  1747.  
  1748.  ------------
  1749. Category 22,  Topic 3
  1750. Message 108       Sat Aug 10, 1991
  1751. E.DAWLEY1                    at 19:51 EDT
  1752.  
  1753. I stand corrected, I didnt know that FLASH could EXEC another program.
  1754.  
  1755. MINDOVERMIDI --> multi-tasking You must be up to some serious hacking again!
  1756.  
  1757. Do you have to run some kind of a shell program that replaces the Desktop in
  1758. order to keep your MIDI stuff alive? Sounds like a great programming
  1759. accomplishment.
  1760.  
  1761. HIGH water LOW water --> well that eliminates that possiblity as a cause for
  1762. the crash. Myabe it has to do with the INPUAX$ command, have you tried it with
  1763. the slower reading method?
  1764.  
  1765. Eric
  1766.  ------------
  1767. Category 22,  Topic 3
  1768. Message 109       Sat Aug 10, 1991
  1769. J.EIDSVOOG1 [CodeHead]       at 20:31 EDT
  1770.  
  1771. Eric,
  1772.  
  1773. Shhh....please don't tell my copy of Flash that it can't exec programs.  It
  1774. happily runs programs for me all the time and I'd be lost without this
  1775. feature.  <grin>
  1776.  
  1777. I said, "in a sense, the ST has _always_ been multi-tasking".  There are a lot
  1778. of so-called multi-tasking systems and in my opinion, GEM's screen manager
  1779. fits the description most generally applied.  To me, true multi-tasking
  1780. requires parallel processors.  In that sense, none of the popular "multi-
  1781. tasking" systems (Windows, Mac, Amiga) are multi-tasking, they are merely task
  1782. switchers, sharing the same processor at a (debatably) usable speed.  Just
  1783. because GEM doesn't multi-task applications does not mean that it can't handle
  1784. multiple tasks, given software by considerate authors.
  1785.  
  1786. You say "accessories should naturally only claim the memory that they need". 
  1787. This would imply that you think that they should allocate the maximum required
  1788. memory at init time even if some of that memory would only be used
  1789. occasionally.  This may fit in with your programming scheme but we try to
  1790. treat our users to more flexibility than that.
  1791.  
  1792. You are free to write your software in whatever manner you please, but I would
  1793. hope that some of the other readers will heed my advice so they don't make
  1794. some of the same mistakes I've made.
  1795.  
  1796. John
  1797.  
  1798. P.S. Dorothy, I'll be "expounding" about HotWire GFA shells shortly. <grin>
  1799.  ------------
  1800. Category 22,  Topic 3
  1801. Message 110       Sat Aug 10, 1991
  1802. J.NESS [Jim]                 at 21:14 EDT
  1803.  
  1804. Well, I renamed all my AUTO and ACC files, and rebooted.  Went to GFA, loaded
  1805. MENU.PRG, Selected my .GFA file and hit F10.
  1806.  
  1807. Same problem.  Any DIM of a string array of any size triggers error #8 as soon
  1808. as the program gets to the DIM instruction.  If I move the DIM around, I can
  1809. change where the error occurs, but it ALWAYS occurs.
  1810.  
  1811. I have recompiled a hundred different ways.
  1812.  
  1813. Good thing I don't really NEED this program.  I was just playing around, when
  1814. I discovered the bug.
  1815.  
  1816.                                    -JN
  1817.  
  1818.  ------------
  1819. Category 22,  Topic 3
  1820. Message 111       Sat Aug 10, 1991
  1821. J.EIDSVOOG1 [CodeHead]       at 21:51 EDT
  1822.  
  1823. For all GFA / HotWire users.
  1824.  
  1825. HotWire makes an excellent shell for development under GFA.  Version 3.0 (of
  1826. HotWire) has a new feature in the environment variables that solves some GFA-
  1827. specific problems.  To create a HotWire GFA shell, you'll need to set up some
  1828. work files.  You can create a work file for each of your projects.  The work
  1829. file is simple...just click on "~1" and locate the .GFA file, then click on
  1830. "~2" and enter the .PRG name to which you'd like to compile.  Then save the
  1831. WRK file (the best place to keep them is in your HOTSTUFF folder along with
  1832. your HOT files.
  1833.  
  1834. A sample work file for our HotEditor program looks like this:
  1835.  
  1836.   ~1: HOTEDIT3.GFA     ~5:
  1837.   ~2: HOT_EDIT.PRG     ~6:
  1838.   ~3:                  ~7:
  1839.   ~4:                  ~8:
  1840.  
  1841. NOTE:  Internally, HotWire keeps the full paths for each of the work list
  1842. entries.
  1843.  
  1844. The HOT file itself is also quite simple.  One entry calls the GFA
  1845. Interpreter, loading the source code but not executing it.  Install
  1846. GFABASIC.PRG as a GEM program with a Command Line and a hot key of "I".  The
  1847. command line should be simply "- ~1" (without the quotes). If you like, you
  1848. can chain the interpreter to the compiler so compiling will be automatic when
  1849. exiting.  I prefer not to do this and simply hit "C" to compile.  You may also
  1850. want to install another entry for the interpreter without a command line for
  1851. those times when you don't want any source code loaded.
  1852.  
  1853. The compiler (GFA_BCOM.PRG) is installed as a TTP with a Command Line and a
  1854. hot key of "C".  My command line is "~1 $S% S< F<", but you may want different
  1855. compiler options.  The important part is the "~1" at the beginning.  HotWire
  1856. will replace this with your source code's filename.
  1857.  
  1858. The compiler is chained to the linker.  See your manual if you don't know how
  1859. to chain.  The linker (GL.PRG) is installed as a TTP with no command line.
  1860.  
  1861. The real magic doesn't begin until you install the proper environment
  1862. variables.  To implement this fully, you'll need HotWire 3.0.  There are three
  1863. environment variables.  With HotWire 3.0, you can enter them all on the same
  1864. line:
  1865.  
  1866. G3OBJ=TEST.O|G3LIB=GFA3BLIB|G3PRG=~2
  1867.  
  1868. The "~2" on the end is the real key.  HotWire replaces that with your output
  1869. filename so that you end up with a PRG named what you want. Don't forget to
  1870. save your HotWire Configuration after changing the environment variables.
  1871.  
  1872. Once you get this set up correctly, you can forget all about the command lines
  1873. unless you want to change the options.  You can install your various .WRK
  1874. files directly in the other slots of your HotWire menu (live it up...devote an
  1875. entire HOT file to GFA).  When you want to work on a program, just click on
  1876. its work file entry and hit "I".
  1877.  
  1878. When you get the program the way you want it, exit the interpreter and hit
  1879. "C".  Your compiled program will be created and spit out into whatever
  1880. directory you desire (defined by your work file). Ahhhh...life is easy on the
  1881. HotWire ranch.
  1882.  
  1883.      John Eidsvoog  /|\  Member of the IAAD
  1884.  CodeHead Software  \|/  Serving the Atari Community
  1885.  
  1886. P.S.  I fully realize that some people resent it whenever we describe features
  1887. of our programs and expound on their more powerful features. To those of you
  1888. who don't like it, I'm sorry, but I feel that there will be some people who
  1889. will benefit from this description.  I don't feel this message is out-of-line
  1890. nor off-topic and I will only mention HotWire further if there are specific
  1891. questions about its use in this regard.
  1892.  ------------
  1893. Category 22,  Topic 3
  1894. Message 112       Sat Aug 10, 1991
  1895. D.HOLMES14 [David]           at 22:36 EDT
  1896.  
  1897. If you don't use HotWire, there's always my shell. <g> (file #17102)
  1898.  
  1899. BTW, would any of you here be interested in an updated GFA Shell?  I was
  1900. planning to re-do it with my new EDM interface, which should make it fast and
  1901. easy-to-use.
  1902.  
  1903. I finally finished my TX2 Text Processor (be sure to buy that <g>), and so I'm
  1904. free to go onto another project.
  1905.  
  1906. Any comments on EDM?  It was written entirely in GFA BASIC, using resolution
  1907. independant code.  Would anyone be interested in using it? Either reply here,
  1908. or in my EDM topic, Cat 2, Top 6.
  1909.  
  1910. David
  1911.  ------------
  1912. Category 22,  Topic 3
  1913. Message 113       Sat Aug 10, 1991
  1914. D.A.BRUMLEVE [kidprgs]       at 22:44 EDT
  1915.  
  1916.  Thanks, John.
  1917.  ------------
  1918. Category 22,  Topic 3
  1919. Message 114       Sat Aug 10, 1991
  1920. H.WOOTAN [Harry]             at 23:13 EDT
  1921.  
  1922. John,
  1923.  
  1924. Thanks for providing the GFA/HotWire setup info.  (Besides, you were asked to
  1925. do so.)
  1926.  
  1927.  -- Harry
  1928.  ------------
  1929. Category 22,  Topic 3
  1930. Message 115       Sun Aug 11, 1991
  1931. RHFACTOR                     at 04:55 EDT
  1932.  
  1933. The problem with the DIM a$(2) in the compiler.  Works fine on my system.
  1934.  
  1935.   If you hadn't already,  maybe somethings gone bad with your backup copies.
  1936. Try making a new copy from the master and see if that could be the solution.
  1937.            RHFactor
  1938.  ------------
  1939. Category 22,  Topic 3
  1940. Message 116       Sun Aug 11, 1991
  1941. J.SIEBEN [J.SIEBEN]          at 14:35 EDT
  1942.  
  1943. J.Eidsvoog,
  1944.  
  1945. You got the hammer out lets use it to hit the nail on the head, Multitasking
  1946. is nothing more than time sharing, unless you have two processors and even
  1947. then it depends on how they are used.  A good example of this is GEnie.  It's
  1948. got people all over the country (world) tied in at the same time.  When it
  1949. starts to slow down these users are competing for one processor that can't
  1950. keep up.
  1951.  
  1952. Thanks for the HotWire! info.
  1953.  
  1954.  
  1955.  ------------
  1956. Category 22,  Topic 3
  1957. Message 117       Sun Aug 11, 1991
  1958. G.STOLLMAN [Gary]            at 16:08 EDT
  1959.  
  1960. I just bought the Software Development Book with disk for GFA 3.0...I have
  1961. already gone through the GFA Training Reboot book, and realized only AFTER I
  1962. had bought the 3.0 book that it is useless without going through the 2.0 book
  1963. and disk first...What I would like to know is there anyone out there who is
  1964. writing REAL programs for the ST or IBM in GFA???  And if so, how long did it
  1965. take you to learn to program "well"...???  I have heard it said that GFA is as
  1966. "good" as C, but what has/is being written in it??
  1967.  
  1968.      Thnx,
  1969.      Gary
  1970.  
  1971.  ------------
  1972. Category 22,  Topic 3
  1973. Message 118       Sun Aug 11, 1991
  1974. T.SAVINO [2-BIT SOFT]        at 16:10 EDT
  1975.  
  1976. This is sort of a general question but... I've got a database I've been using
  1977. for over a year (written in basic) and now I need to add a couple of new
  1978. fields to it.  How can I do this and still keep the data I've been storing for
  1979. the past year.  If I just add the new  fields and increase the size of each
  1980. record, then when I use the .DAT file with all my old info it gets all screwed
  1981. up.  I understand why this is so, but how can I alter the old file to
  1982. accomidate  the newer fields (and the larger record size)?  Is there perhaps
  1983. some sample code somewhere that shows how to do this?  I'm sure this is not a
  1984. new problem.   ...TS
  1985.  ------------
  1986. Category 22,  Topic 3
  1987. Message 119       Sun Aug 11, 1991
  1988. D.A.BRUMLEVE [kidprgs]       at 16:54 EDT
  1989.  
  1990.  TS: Simplify the conversion by writing a little conversion program to
  1991.  put your old files in the new format.  Read in the old file, and then
  1992.  print it to disk with the addition of the new fields.  Voila!  Instant
  1993.  database file!  You could cause your program to recognize the old data
  1994.  fields and react according to whether a record is of the old type or new,
  1995.  but that's the _hard_ way.
  1996.  
  1997.  --D.A. Brumleve, IAAD
  1998.  
  1999.  And, Gary, yes, real programmers are writing real programs for the ST
  2000.  and IBM in GFA Basic.
  2001.  ------------
  2002. Category 22,  Topic 3
  2003. Message 120       Sun Aug 11, 1991
  2004. MINDOVERMIDI                 at 20:40 EDT
  2005.  
  2006. Eric, our programs multitask with whatever else you are running on your
  2007. computer. They won't make Sound Designer multitask with Calamus, for instance.
  2008. They consist of a program that goes in your auto folder (or run from the
  2009. desktop), and an application which will run as an accessory or a program,
  2010. depending on how it is started. When run as a desk accessory, they can be
  2011. installed and removed by programs such as Chameleon, or whatever Codehead
  2012. program installs and removes desk accessories (apologetic grin to Charles and
  2013. John - hey, if you promo'd me a copy I'd know what it was called :). I didn't
  2014. have to rewrite the GEM desktop, just the system's interrupt infrastructure,
  2015. the BIOS, XBIOS, GEMDOS, AES/VDI handlers, and occasionally have an interrupt
  2016. dissassemble and modify an uncooperative application's running code. :) I'll
  2017. be uploading a (PD? Shareware? Demo?) version of our MIDI file editor, which
  2018. (for the free version) simply displays all of the information in a MIDI file,
  2019. and plays it in the background. Watch for info in the MIDI cat of this RT.
  2020.  ------------
  2021. Category 22,  Topic 3
  2022. Message 121       Sun Aug 11, 1991
  2023. R.HARRINGTO1                 at 21:06 EDT
  2024.  
  2025.  '
  2026.  '
  2027.  '  This post for a special friend, but may help others - who are re-sizing
  2028.  '  their RS-232 buffers - to avoid some of the pitfalls.  The buffer in
  2029.  '  discussion has been increased to 4096 bytes.
  2030.  '
  2031.  '
  2032.  '
  2033.  '
  2034.  '
  2035.  '  You are setting your 'high-water' too high.  Never go higher than
  2036.  '  3/4 ths. of your buffer.  When your computer sends an X/OFF command
  2037.  '  to the main frame, it may take a while before the request is acknowledged.
  2038.  '  With a 4096 buffer and a 3840 'high-water' you only have room for 256
  2039.  '  more bytes before your buffer will bite itself in the tail.  At 2400 baud
  2040.  '  you are receiving 300 characters per second.  Thus you have less than
  2041.  '  one second to process some of the buffered characters before your buffer
  2042.  '  ring wraps itself.
  2043.  '
  2044.  '  The premise of the 'low/high' marks are that your program will continue
  2045.  '  processing the data so that you will not reach the end of your buffer
  2046.  '  before the X/OFF command is acknowledged.  If you set your 'high-water'
  2047.  '  at 3072 or so, then pole the buffer with a 3 second timer you will
  2048.  '  prevent a wrap.
  2049.  '  Why a 3 second timer?
  2050.  '         4096 minus a high-water of 3072 leaves room for 1024 characters.
  2051.  '         At 300 characters per second, this gives you 3.odd seconds to
  2052.  '         begin clearing the buffer.
  2053.  '
  2054.  '  You may not need to poll.  The X/OFF really should manage to get through
  2055.  '  to the main frame and halt tranmission before all 1024 bytes are filled.
  2056.  '
  2057.  '
  2058.  '  As an alternative to processing with a 3 second poll, you might do your
  2059. own
  2060.  '  high-water by polling directly into the buffer memory at
  2061.  '          - say buffer-start plus 2000 - and on a 6 second timer.
  2062.  '  If the polled memory contains active data branch to a sub-routine to
  2063.  '  process a thousand of so characters through the buffer.
  2064.  '
  2065.  '
  2066.  '  Also, you may wish to try an alternative method to RESERVE & MALLOC.
  2067.  '  The INLINE command may be used to prevent memory shifting.  Try something
  2068.  '  like INLINE buffer%,4096.  The address of the reserved memory will
  2069.  '  be written into the address of buffer% and the same reserved memory
  2070.  '  location will be loaded each time you execute your program.  Nor do you
  2071.  '  have to worry about an even byte boundry -- INLINE will automatically
  2072.  '  handle that.  Note, however, that I haven't tried this with a
  2073.  '  communications program so there may be some problems to work around.
  2074.  '
  2075.  '        Example:
  2076.  '             INLINE buffer%,4096
  2077.  '             address%=varptr(buffer%)
  2078.  '             myreserved_address%=lpeek(address%)
  2079.  '
  2080.  '  This is not to imply that RESERVE & MALLOC will not do the trick, but the
  2081.  '  INLINE method is cleaner and takes less concern.
  2082.  '
  2083.  '
  2084.  '                                        Mike Harrington
  2085.  '                                        Genie Address: R.HARRINGTO1
  2086.  '
  2087.  '
  2088.  '
  2089.  '  Full example of resizing RS-232 buffer using INLINE
  2090.  '  ---------------------------------------------------
  2091.  '
  2092.  '  set INLINE for length of two 4096 byte buffers with a few spare bytes.
  2093.  INLINE buffer%,8212
  2094.  address%=VARPTR(buffer%)
  2095.  myreserved_address%=LPEEK(address%)
  2096.  mbuff%=XBIOS(14,0)
  2097.  ' set incoming buffer to start of INLINE memory
  2098.  mbuffin%=myreserved_address%
  2099.  ' set out going buffer to start of INLINE memory + 4098
  2100.  mbuffout%=(myreserved_address%+4098)
  2101.  GOSUB opencomport
  2102.  ' do your thing.
  2103.  GOSUB closecomport
  2104.  END
  2105.  '
  2106.  PROCEDURE opencomport
  2107.    '
  2108.    ' get the orginal values.
  2109.    '
  2110.    oinpointer%=LPEEK(mbuff%)
  2111.    oinsize%=DPEEK(mbuff%+4)
  2112.    oinlow%=DPEEK(mbuff%+10)
  2113.    oinhi%=DPEEK(mbuff%+12)
  2114.    '
  2115.    ooutpointer%=LPEEK(mbuff%+14)
  2116.    ooutsize%=DPEEK(mbuff%+18)
  2117.    ooutlow%=DPEEK(mbuff%+24)
  2118.    oouthi%=DPEEK(mbuff%+26)
  2119.    '
  2120.    '
  2121.    ' poke the new pointers.
  2122.    '
  2123.    LPOKE mbuff%,mbuffin%
  2124.    DPOKE mbuff%+4,4096
  2125.    DPOKE mbuff%+6,0
  2126.    DPOKE mbuff%+8,0
  2127.    DPOKE mbuff%+10,256
  2128.    DPOKE mbuff%+12,3072
  2129.    '
  2130.    LPOKE mbuff%+14,mbuffout%
  2131.    DPOKE mbuff%+18,4096
  2132.    DPOKE mbuff%+20,0
  2133.    DPOKE mbuff%+22,0
  2134.    DPOKE mbuff%+24,256
  2135.    DPOKE mbuff%+26,3072
  2136.    '
  2137.    OPEN "",#1,"AUX:"
  2138.    VOID XBIOS(15,4,-1,-1,-1,-1,-1)
  2139.  RETURN
  2140.  '
  2141.  PROCEDURE closecomport
  2142.    '
  2143.    CLOSE #1
  2144.    '
  2145.    ' reset the pointers to orginal values.
  2146.    '
  2147.    LPOKE mbuff%,oinpointer%
  2148.    DPOKE mbuff%+4,oinsize%
  2149.    DPOKE mbuff%+6,0
  2150.    DPOKE mbuff%+8,0
  2151.    DPOKE mbuff%+10,oinlow%
  2152.    DPOKE mbuff%+12,oinhi%
  2153.    '
  2154.    LPOKE mbuff%+14,ooutpointer%
  2155.    DPOKE mbuff%+18,ooutsize%
  2156.    DPOKE mbuff%+20,0
  2157.    DPOKE mbuff%+22,0
  2158.    DPOKE mbuff%+24,ooutlow%
  2159.    DPOKE mbuff%+26,oouthi%
  2160.    '
  2161.  RETURN
  2162.  ?
  2163.  ------------
  2164. Category 22,  Topic 3
  2165. Message 122       Sun Aug 11, 1991
  2166. T.SAVINO [2-BIT SOFT]        at 22:26 EDT
  2167.  
  2168. D.A.: I think I understand what you are saying re: the database conversion. 
  2169. Basically, I should read each record into an array (say a$(1) through a$(8)),
  2170. then add a$(9) and a$(10) to each record, and write the _new_ file to disk. 
  2171. Is that what you're saying?  
  2172.  ------------
  2173. Category 22,  Topic 3
  2174. Message 123       Sun Aug 11, 1991
  2175. D.A.BRUMLEVE [kidprgs]       at 23:46 EDT
  2176.  
  2177.  TS: Exactly...Start with dummy info for fields 9 & 10, write them to
  2178.  disk, and edit them later in your newly-expanded database so they'll
  2179.  be truly complete...But they'll look "complete" to the computer as
  2180.  soon as you do the conversion -- and of course convert your program
  2181.  so it expects these new fields!  You caught on for sure.
  2182.  ------------
  2183. Category 22,  Topic 3
  2184. Message 124       Mon Aug 12, 1991
  2185. PRINCETON-U                  at 02:17 EDT
  2186.  
  2187. ::smile:: Thanx Mike... that's what I needed :) And I had thought about using
  2188. INLINE, but the only drawback to using it is that it actually  increases the
  2189. size of your program by the amount you specify. If I used INLINE buffer%,8192
  2190. the program itself would increase by 8192 bytes. Granted, this is not a LOT,
  2191. but I'm using RESERVE and MALLOC() for my alternate screens, also.. and the
  2192. total amount I'm reserving is 72960. And that DOES make a big difference :)
  2193. Would boost my program size from 68K to 140K :) 
  2194.  ------------
  2195. Category 22,  Topic 3
  2196. Message 125       Mon Aug 12, 1991
  2197. R.WATSON15 [Wayne Watson]    at 04:05 EDT
  2198.  
  2199. Jim,
  2200.   Try another copy of your GFA files. I have often solved wierd problems this
  2201. way. Ya never know.
  2202.  
  2203. In a previous message I mentioned that MALLOC uses system memory and not
  2204. RESERVEd memory. Well, again it is sometimes not a good idea to totally rely
  2205. on information given by someone else. I must have been really tired the night
  2206. I tried it out. Anyway, MALLOC DOES use RESERVEd memory. I am going to re-
  2207. upload the file RS232BUF.LZH to the libraries tonight. It contains new and
  2208. revised information that has come about due to the discussions here. I
  2209. apologize to those that have already downloaded the provious file.
  2210.  
  2211.  ------------
  2212. Category 22,  Topic 3
  2213. Message 126       Mon Aug 12, 1991
  2214. H.SARBER [RANGERST]          at 22:44 EDT
  2215.  
  2216.     Wayne,
  2217.         *%&#^$@ (not printable, grin) Aladdin downloaded the previous version
  2218. 'JUST BEFORE' it got this message.  Oh, well, it wasn't that big anyway.  I'm
  2219. going to pick it up after I finish typing this message.  Not a problem.
  2220.  
  2221.     To all,
  2222.      A couple of questions.  Since the current thread seems to be about memory
  2223. allocation, what is the 'most correct way' to allocate memory prior to EXECing
  2224. and returning from a program?  I'm working on a Menu type program and it
  2225. 'appears' to be functioning normally, but I'd like to be sure it's not going
  2226. to bomb from memory problems.
  2227.      Secondly, how do you turn off all colors in mono.  I have a screen saver
  2228. in my program that works fine in color by:
  2229.      for i%=0 to 15
  2230.        setcolor i%,0
  2231.      next i%
  2232.      This works fine in color, but not in mono.  Hmmmmmmm....
  2233.  
  2234.  ------------
  2235. Category 22,  Topic 3
  2236. Message 127       Mon Aug 12, 1991
  2237. T.SAVINO [2-BIT SOFT]        at 23:24 EDT
  2238.  
  2239. Thanks D.A., I did the conversion and it worked perfectly.  I was  stuck
  2240. before because I was thinking in terms of modifying the existing file (yuck). 
  2241. ...TS
  2242.  ------------
  2243. Category 22,  Topic 3
  2244. Message 128       Mon Aug 12, 1991
  2245. D.A.BRUMLEVE [kidprgs]       at 23:28 EDT
  2246.  
  2247.  Congratulations, TS!
  2248.  ------------
  2249. Category 22,  Topic 3
  2250. Message 129       Tue Aug 13, 1991
  2251. R.WATSON15 [Wayne Watson]    at 00:21 EDT
  2252.  
  2253. RangerST,
  2254.   All I do before I EXECute a program is RESERVE enough memory for the program
  2255. to run with some extra for whatever it does. You may or maynot want to RESERVE
  2256. all of available memory so it will have enough to run and all. Then EXECute
  2257. the program. When you exit the program and return to the GFA program, release
  2258. that memory you RESERVEd. If you are writing this for yourself, then RESERVE
  2259. whatever you like but, as John mentioned, if you are writing it for other
  2260. people to use, you may want to give them the option of setting the amount of
  2261. memory to allocate for EXECution of other programs.
  2262.  
  2263.  ------------
  2264. Category 22,  Topic 3
  2265. Message 130       Tue Aug 13, 1991
  2266. A.FRIESEN                    at 21:23 EDT
  2267.  
  2268. If I remember right, RangerST, the mono mode onthe ST is more of an XOR mode. 
  2269. You cannot turn the colors off.  The only way to blank out the screen is to
  2270. draw a filled black box over the whole thing.  But to restore the previous
  2271. screen, you will have to use something like GET to get the screen before you
  2272. draw over it.  This will take up 32K of RAM (quite a lot for a little screen
  2273. saver utility) to hold the original screen image.  Then when you want the
  2274. screen to turn back on paste it back with PUT.  Of course, I could be
  2275. completely wrong too.
  2276.  
  2277.    Aric Friesen
  2278.  ------------
  2279. Category 22,  Topic 3
  2280. Message 131       Tue Aug 13, 1991
  2281. R.WATSON15 [Wayne Watson]    at 23:22 EDT
  2282.  
  2283. Well, I finally got the last version of RS232BUF.LZH (#20495) uploaded. The
  2284. change fixes the comments on the RESERVE statement that someone screwed up in
  2285. the manual and some comments on the MALLOC command. I had it uploaded the
  2286. other night but had to pull it because of a typo that Larry pointed out.
  2287. Anyway, this method of resizing the buffers has totally fixed my problems with
  2288. the lockup I was experiencing. Hope it helps. It should be up as soon as the
  2289. Sysop(s) release it.
  2290.  
  2291.  ------------
  2292. Category 22,  Topic 3
  2293. Message 132       Wed Aug 14, 1991
  2294. J.NESS [Jim]                 at 21:46 EDT
  2295.  
  2296. The best way to "screen save" with a mono screen is to reverse the colors of
  2297. the bits.  White=Black, Black=White.  Do it every couple of minutes, to
  2298. prevent the White pixels from burning in.
  2299.  
  2300.                                       -JN
  2301.  ------------
  2302. Category 22,  Topic 3
  2303. Message 133       Thu Aug 15, 1991
  2304. D.HOLMES14 [David]           at 22:49 EDT
  2305.  
  2306. Is it possible to write a TOS program in GFA BASIC?  I tried changing the
  2307. extention of one of my programs, but it didn't use any less memory.  I though
  2308. it was running faster, but it's difficult to tell. Can GFA BASIC make pure TOS
  2309. programs?
  2310.  
  2311. David
  2312.  ------------
  2313. Category 22,  Topic 3
  2314. Message 134       Fri Aug 16, 1991
  2315. J.EIDSVOOG1 [CodeHead]       at 14:43 EDT
  2316.  
  2317. David,
  2318.  
  2319. There really is no strict definition of a "TOS" program.  I'm not sure what
  2320. you're looking for but it seems you want to eliminate the GEM routines from
  2321. your memory to make it smaller.  When the desktop (or HotWire) runs a TOS
  2322. program, the only differences in execution are that the screen is cleared, the
  2323. mouse is turned off, and the text cursor is turned on.  Your program could
  2324. also do these things so that it would "act" like a TOS program, even if run as
  2325. a GEM program.
  2326.  
  2327. As far as GFA compiling with the GEM library, I'm not sure how intelligent it
  2328. is regarding the inclusion of unneeded routines.  I believe that it always
  2329. opens a VDI workstation whether you ask it to or not, but I might be mistaken
  2330. about this.
  2331.  
  2332. John
  2333.  ------------
  2334. Category 22,  Topic 3
  2335. Message 135       Fri Aug 16, 1991
  2336. D.HOLMES14 [David]           at 23:00 EDT
  2337.  
  2338. John,
  2339.  
  2340. Thanks.  Yes, all I want to do is free up memory by not accessing GEM, but
  2341. that doesn't seem to be working.  Oh, well, I guess I'll just have to get more
  2342. memory, since my own programs are getting so large.
  2343.  
  2344. David
  2345.  ------------
  2346. Category 22,  Topic 3
  2347. Message 136       Sat Aug 17, 1991
  2348. R.WATSON15 [Wayne Watson]    at 10:17 EDT
  2349.  
  2350. David,
  2351.   I have seen a difference in memory usage by changing the extension to TOS.
  2352. The BBS program that I use gives me more free memory when I rename it to a TOS
  2353. program. If you have ANYthing in the program that calls for GEM usage, you may
  2354. not see a difference.
  2355.  
  2356.  ------------
  2357. Category 22,  Topic 3
  2358. Message 137       Sun Aug 18, 1991
  2359. B.BRESNIK                    at 20:37 EDT
  2360.  
  2361. Hope I'm not beating a dead horse, but... when trying to compile a VERY short
  2362. and simple program (finding Armstrong numbers) that ran perfectly interpreted,
  2363. I kept getting 008 (out of memory errors) though the compiler/linker gave ZERO
  2364. error reports on compile! The error always cropped up in the .PRG compiled
  2365. version after dimensioning a small array. When I added a line to RESERVE 2000,
  2366. not needed in the interpreted version, it compiled and ran perfectly.
  2367.  Moral: Use RESERVE in the compiler to leave space for arrays, etc.
  2368.  ------------
  2369. Category 22,  Topic 3
  2370. Message 138       Mon Aug 19, 1991
  2371. J.NESS [Jim]                 at 11:22 EDT
  2372.  
  2373. B.BRESNIK -
  2374.  
  2375. Thank you, thank you , thank you.
  2376.  
  2377. I had relegated GFA Basic 3.5e to the "It does wierd things, forget it" bin,
  2378. until your message suggesting adding RESERVE xxxx ahead of the DIM statement.
  2379.  
  2380. I added the RESERVE statement, and my test program runs like a champ.
  2381.  
  2382. GFA has now been moved to the "It does wierd things, but I can still use it"
  2383. bin.
  2384.  
  2385. Besides this particular "bug," (at least *I* consider it a bug), the menu
  2386. program also returns my desktop colors to their default values, rather than
  2387. the DESKTOP.INF values.  Aggravating.
  2388.  
  2389. Here's hoping for v3.5f, or better.
  2390.  
  2391. What ever happened to John Barger showing up here (and on CIS, for that
  2392. matter)?
  2393.  
  2394.                                     -JN
  2395.  
  2396.  ------------
  2397. Category 22,  Topic 3
  2398. Message 139       Mon Aug 19, 1991
  2399. D.A.BRUMLEVE [kidprgs]       at 14:58 EDT
  2400.  
  2401.  Jim, I'm annoyed by the color palette reset by the compiler, also.  Odd
  2402.  that they would not restore the user's palette selections.  And the
  2403.  RESERVE thing would indeed seem to be the key to your a$(2) oddity.
  2404.  ------------
  2405. Category 22,  Topic 3
  2406. Message 140       Tue Aug 20, 1991
  2407. A.FRIESEN                    at 01:12 EDT
  2408.  
  2409. Stranger even...I have written a program (my checkbook program somewhere here
  2410. on GEnie) that uses multiple HUGE (well, 1,000+elements) and don't have any
  2411. problems with the compiled versions and I never used the  reserve command. 
  2412. Why the inconsitancy.  I am going to try that A$(2) on my computer and see
  2413. what happens.  Oh BTW, my arrays vary from binary, real, and string arrays.
  2414.  
  2415.    Aric Friesen
  2416.  ------------
  2417. Category 22,  Topic 3
  2418. Message 141       Tue Aug 20, 1991
  2419. R.WATSON15 [Wayne Watson]    at 05:48 EDT
  2420.  
  2421. That is interesting since my compiled programs run fine without the RESERVE
  2422. command with small DIMed variables. Hmmmm.... I also wish John would show up
  2423. here. He popped in once or twice and now seems to have forgotten us.
  2424.  
  2425.  ------------
  2426. Category 22,  Topic 3
  2427. Message 142       Tue Aug 20, 1991
  2428. OUTRIDER [Terry @ T2]        at 09:47 EDT
  2429.  
  2430.      Add me to the list of people who've had no problems DIMing variables
  2431. without using the RESERVE command...
  2432.  
  2433.                                   - Terry -
  2434.  
  2435.  ------------
  2436. Category 22,  Topic 3
  2437. Message 143       Thu Aug 22, 1991
  2438. NIRANDRA                     at 22:17 EDT
  2439.  
  2440. I have a terminal written in GFA Basic. But I'm having a problem. Sometimes it
  2441. will crash. I get 2 bombs. What else causes 2 bombs besides "peek or poke
  2442. possibly wrong"? I have no peeks or pokes in my terminal.
  2443.  ------------
  2444. Category 22,  Topic 3
  2445. Message 144       Fri Aug 23, 1991
  2446. L.HARTWELL [Larry H.]        at 01:11 EDT
  2447.  
  2448. Well, add me to the list of people who've had massive problems with programs
  2449. compiled without the RESERVE command.  After repeatedly getting the out of
  2450. memory error I got out the book.  It didn't make sense but I tried the RESERVE
  2451. command and everything worked fine.  I finally decided to check here to see if
  2452. I was the only one with the problem... well at least I'm not alone...
  2453.  
  2454.  ------------
  2455. Category 22,  Topic 3
  2456. Message 145       Fri Aug 23, 1991
  2457. B.BRESNIK                    at 18:34 EDT
  2458.  
  2459. In addition to reserve, the command $m n   will reserve n bytes of memory
  2460. during compiling, but is ignored by the interpreter.  For example, $m 4000
  2461. reserves enough memory for an array of 500 floating- point numbers as in 'DIM
  2462. x(499)'.  Without RESERVing memory, my compiled programs invariably crash with
  2463. error 008.
  2464.  ------------
  2465. Category 22,  Topic 3
  2466. Message 146       Fri Aug 23, 1991
  2467. J.NESS [Jim]                 at 19:57 EDT
  2468.  
  2469. Well, I did try the $mxxxx command without success, but not internal to the
  2470. source code.  I used it in the compiler command line.  I never did try it in
  2471. the source.
  2472.  
  2473.                                      -JN
  2474.  ------------
  2475. Category 22,  Topic 3
  2476. Message 147       Fri Aug 23, 1991
  2477. J.SIEBEN [J.SIEBEN]          at 22:08 EDT
  2478.  
  2479. NIRANDRA,
  2480.  
  2481. Maybe you are referencing an address with a word size variable 'var&' instead
  2482. of double word 'var%'.  Or using 'W:' where your should have 'L:'
  2483.  
  2484. All
  2485.  
  2486. I have uploaded a small clock setting utility (as if we don't have enough) to
  2487. show how to use Resource Construction Set Dialogs.  The source is fully
  2488. commented to explain what is going on.  I have had this laying around for some
  2489. time and thought it may be of some use to someone trying to figure out how to
  2490. do it.  If I only had this kind of example way back when I first wrote
  2491. it...file number 20603.
  2492.  
  2493.  ------------
  2494. Category 22,  Topic 3
  2495. Message 148       Sat Aug 24, 1991
  2496. R.HARRINGTO1                 at 21:25 EDT
  2497.  
  2498.  NIRANDRA:
  2499.  '
  2500.  '   Looked over the listings.  Can't see anything that is obviously
  2501.  '   incorrect.  Since 2 bombs represent a BUS error, I assumed that a
  2502.  '   LPOKE, DPOKE, or SPOKE was busting the memory, but I searched out
  2503.  '   each occurance and can't spot any errors.
  2504.  '
  2505.  '   An off the wall idea.
  2506.  '   Check out your XBIOS 7 call.  Notice that you are passing the
  2507.  '   whiteout variable as a word.  GFA manual requires a 4 byte interger
  2508.  '   that GFA then converts into a 2 byte word.
  2509.  '   Now, assume that the whiteout variable is moved into memory that contains
  2510.  '   odd data in the trailing two bytes.  Since GFA is looking for a four
  2511.  '   byte parimeter, what will it find in the whiteout variable.
  2512.  '
  2513.  '   Glance at the following code.  Note that I am poking an odd value into
  2514.  '   the address of whiteout&+2.  Run the code and watch what happens to the
  2515.  '   value of whiteout&.  A glance at the assembly lang. output of the code
  2516.  '   reveals that whiteout& is indeed handled as a long.
  2517.  '
  2518.  '   How this could create a BUS error, I don't know.  If it creates a BUS
  2519.  '   error, I can not reproduce it.  Perhaps it is causing data to overwrite
  2520.  '   memory that you are using later for a DPOKE or LPOKE.  Maybe it doesn't
  2521.  '   cause any kind of problem.
  2522.  '
  2523.  '   Still, it is curious that the first loop listed below will terminate
  2524.  '   itself after a few moments of some very interesting screen popping.
  2525.  '   Yet you must press a key to end the second loop.
  2526.  '
  2527.  '   Hey, even if this doesn't solve your problem, its interesting to note
  2528.  '   such wierd programming examples.
  2529.  '
  2530.  '                                 Mike Harrington
  2531.  '                                 R.HARRINGTO1
  2532.  '
  2533.  '
  2534.  ' p/s:  I didn't take time to worry about resetting colors; you will
  2535.  '       have to reboot if you execute the routines as is.
  2536.  '
  2537.  '
  2538.  '
  2539.  '
  2540.  '
  2541.  FOR whiteout&=0 TO 20
  2542.    a%=VARPTR(whiteout&)
  2543.    POKE a%+2,32
  2544.    FOR t%=0 TO 3
  2545.      ~XBIOS(7,t%,whiteout&)
  2546.    NEXT t%
  2547.  NEXT whiteout&
  2548.  '
  2549.  '
  2550.  ~XBIOS(7,3,3)
  2551.  FOR whiteout&=0 TO 20
  2552.    a%=VARPTR(whiteout&)
  2553.    POKE a%+2,32
  2554.    PRINT whiteout&
  2555.    IF INKEY$<>"" THEN
  2556.      END
  2557.    ENDIF
  2558.  NEXT whiteout&
  2559.  '
  2560.  END
  2561.  ------------
  2562. Category 22,  Topic 3
  2563. Message 149       Sun Aug 25, 1991
  2564. PRINCETON-U                  at 01:48 EDT
  2565.  
  2566. WHY WON'T IT WORK? WHY WON'T IT WORK? WHY WON'T IT WORK???  (screaming,
  2567. pulling out hair, throw a general-all-purpose-GFA Basic-tantrum)
  2568.  ------------
  2569. Category 22,  Topic 3
  2570. Message 150       Sun Aug 25, 1991
  2571. J.SIEBEN [J.SIEBEN]          at 12:45 EDT
  2572.  
  2573. Correction to filename SETTIME.ARC.
  2574.  
  2575. Well I made a boo boo in my source SETTIME.GFA.  The 2 lines that start with
  2576. ~OBJC_DRAW are incorrect.  The first one should read
  2577.  
  2578. ~OBJC_DRAW(input%,0,1,x%,y%,w%,h%)
  2579.  
  2580. The reference to "tree1&" is incorrect, should be 0.  This tells the system to
  2581. start drawing the tree starting with the first object in the tree.
  2582.  
  2583. The second one should read
  2584.  
  2585. ~OBJC_DRAW(output%,0,1,x%,y%,w%,h%)
  2586.  
  2587. The reference to "tree2&" is incorrect, should be 1.  This tells the system to
  2588. draw the tree to the first set of children only.
  2589.  
  2590. The funny thing is the program works because the values of the tree variables
  2591. were correct for OBJC_DRAW.
  2592.  
  2593. Sorry if this confused anyone,
  2594.  
  2595. J.Sieben
  2596.  
  2597.  
  2598.  
  2599.  ------------
  2600. Category 22,  Topic 3
  2601. Message 151       Sun Aug 25, 1991
  2602. E.SLICK [Eric]               at 18:09 EDT
  2603.  
  2604. Nirandra,
  2605.  
  2606.  Are you using alternate screens, particularly as strings? It seems that I
  2607. remember this was part of a problem I also had some time ago.
  2608.  
  2609. Eric S.
  2610.  ------------
  2611. Category 22,  Topic 3
  2612. Message 152       Sun Aug 25, 1991
  2613. E.DAWLEY1                    at 20:00 EDT
  2614.  
  2615. Princton U--->
  2616.  
  2617. Why dont you upload the porblem code here and we can take a look and see if we
  2618. can spot the problem...
  2619.  
  2620. Eric
  2621.  ------------
  2622. Category 22,  Topic 3
  2623. Message 153       Mon Aug 26, 1991
  2624. PRINCETON-U                  at 20:10 EDT
  2625.  
  2626. I do have alternate screens, but I simply redraw them. I store the  terminal
  2627. screen's text in an array. It is not an actually picture of the screen. I just
  2628. redraw the screen and re-print the text. And I have NO idea where in the
  2629. program the problem exists. And the program is over 4000 lines long. I DO know
  2630. that one string variable in particular is becoming corrupted, but it's just
  2631. the string variable I use to store what is being typed.
  2632.  ------------
  2633. Category 22,  Topic 3
  2634. Message 154       Mon Aug 26, 1991
  2635. P.STONE [Xorcist]            at 22:24 EDT
  2636.  
  2637. Hello all..
  2638.  
  2639. I finished my MapIt program (which is in this library and the MIDI library),
  2640. and I also have a version that when it get's a MIDI note, it displays a
  2641. picture assigned to that note. (Degas/Uncompressed).
  2642.  
  2643. Basically, I've got this array, ( notepic$(127) ), and for whatever note, I
  2644. assign the picture... <display picture...sget notepic$(note)
  2645.  and then save the according pallette>...
  2646.  
  2647. Now this all works fine, but I have begun to have a problem. After I load say,
  2648. 12 pictures or so, and the program remaps the incoming MIDI data and displays
  2649. the according picture when that note comes in, after about 2000 displays (less
  2650. on a machine with less memory), the entire program crashes and exits to the
  2651. desktop...
  2652.  
  2653. Now I'm only SPUTing really... Does anyone have any initial ideas about this?
  2654.  
  2655. There used to be a stupid bug in the Apple // line of computers in which you
  2656. would need to put a dummy X=FRE(0) in the loop of things as doing that would
  2657. free memory up, reset dummy pointers, etc...
  2658.  
  2659. Could this be the problem here? Is displaying all those pictures over and over
  2660. incrementing some internal pointer that is hitting the top and crashing?
  2661.  
  2662. Anyways... haven't tried it with the normal MAPIT version here, (the version
  2663. here does not have the picture function...), but I assume it would might do
  2664. the same thing ... still have to test it... but just thought that someone
  2665. might of recognized this situation...
  2666.  
  2667. <X>orcist
  2668.  
  2669.  ------------
  2670. Category 22,  Topic 3
  2671. Message 155       Tue Aug 27, 1991
  2672. J.SIEBEN [J.SIEBEN]          at 22:05 EDT
  2673.  
  2674. Try this:
  2675.  
  2676. a$="" CHAR{{V:a$}}="test"
  2677.  
  2678. On my 3.5e returns peek poke possibly wrong.
  2679.  
  2680. when a$=" " it's OK.
  2681.  
  2682.  ------------
  2683. Category 22,  Topic 3
  2684. Message 156       Wed Aug 28, 1991
  2685. PRINCETON-U                  at 01:06 EDT
  2686.  
  2687. That's because when a string variable equals "" it has no memory location.
  2688.  ------------
  2689. Category 22,  Topic 3
  2690. Message 157       Wed Aug 28, 1991
  2691. PRINCETON-U                  at 18:30 EDT
  2692.  
  2693.  I think I've figured out the reason for my 2 bombs... has anyone out there
  2694.  had a problem using RC_COPY? I'm using this to scroll  my screen...
  2695.  
  2696.  RC_COPY lsbase%,0,8,640,168 TO lsbase%,0,0,3
  2697.  
  2698.  where lsbase% = XBIOS(3) of course. For some reason, this is corrupting
  2699.  other places in memory. But I don't understand WHY. I've now switched
  2700.  to using GET and PUT, which is slower, but doesn't give me 2 bombs.
  2701.  Is there any problem using RC_COPY when the source and destination
  2702.  are the same place in memory? I also get the same problem using...
  2703.  
  2704.  BMOVE lsbase%+1280,lsbase%,26880
  2705.  
  2706.  Anyone know WHY this happens?
  2707.  ------------
  2708. Category 22,  Topic 3
  2709. Message 158       Wed Aug 28, 1991
  2710. E.DAWLEY1                    at 20:33 EDT
  2711.  
  2712. CHAR{{V:a$}}="test" bombs becouse you are using two sets of parentheses. GFA
  2713. does not attach an address to a null string. Therefore you are trying to write
  2714. your string to address 0. CHAR{V:a$}="test" should give you no problems. The
  2715. double parentheses means the address of the address.
  2716.  
  2717. I have not had any problems with the RC_COPY command. However, how was your
  2718. alternate screen memory reserved, with an array or with the RESERVE command? I
  2719. have found that unless you use RESERVE for the alternate screen memory, GFA
  2720. may move it around and then your lsbase% variable is no longer any good. You
  2721. could re-establish the position of lsbase before each RC_COPY by using
  2722. lasbase%=V:array|(0) etc. Oh! your x width should be 639, and not 640 also.
  2723.  
  2724. Eric (glad you finnally found the culprit!)
  2725.  ------------
  2726. Category 22,  Topic 3
  2727. Message 159       Thu Aug 29, 1991
  2728. PRINCETON-U                  at 01:02 EDT
  2729.  
  2730. I'm not using alternate screens... lsbase% = XBIOS(3). That doesn't  change
  2731. unless you use XBIOS(5), which I'm not. And yes, I had 640, not 639 in my
  2732. program. It's just when I changed to another method, other than RC_COPY, it
  2733. required 639, the actual pixel location, not 640, the number of pixels. So, it
  2734. was just a typo.
  2735.  ------------
  2736. Category 22,  Topic 3
  2737. Message 160       Thu Aug 29, 1991
  2738. E.DAWLEY1                    at 20:13 EDT
  2739.  
  2740. Try to clip the area before you RC_COPY to make sure that memory outside the
  2741. screen area is not affected. As I said, Ive never had problems with it though.
  2742. BMOVE should definately not be effected if the memory area overlaps, Im not
  2743. sure about RC_COPY however.
  2744.  
  2745. Eric
  2746.  ------------
  2747. Category 22,  Topic 3
  2748. Message 161       Thu Aug 29, 1991
  2749. PRINCETON-U                  at 20:39 EDT
  2750.  
  2751. But I'm NOT going outside of the screen area when I'm using RC_COPY OR BMOVE.
  2752. And there HAS to be something wrong, because now that I've removed every
  2753. RC_COPY and BMOVE and simply replaced them with GET and PUT's, everything is
  2754. working fine. Granted, GET and PUT is slower, but if they won't make my
  2755. program crash, fine.. I'll use them.
  2756.  ------------
  2757. Category 22,  Topic 3
  2758. Message 162       Thu Aug 29, 1991
  2759. B.BRESNIK                    at 23:31 EDT
  2760.  
  2761. According to John Barger, a very few GFA BASIC 3.5e upgrades have been shipped
  2762. with corrupted compiler (or COMPLIER, as it's spelled) files which produce the
  2763. #008 "out of memory" bug when compiling DIM and other statements... Check with
  2764. GFA about disk replacement, though using the $m kluge seems to work for me. 
  2765. John has been VERY responsive to the Atari community!
  2766.  ------------
  2767. Category 22,  Topic 3
  2768. Message 163       Fri Aug 30, 1991
  2769. RHFACTOR                     at 01:13 EDT
  2770.  
  2771. Hi Gang!!
  2772.   I have a programming situation that I need some advice on. please.
  2773.    I am using both mouse and keyboard for inputing info into the program. The
  2774. program must be HI/MED rez compatiable.
  2775.    I have implemented the SELECT CASE command to keep track of mouse/BOX
  2776. locations  then on to the subroutine etc etc.
  2777.    Here's the problem.  Using Select/Case,  I wanted to take all the 'Y'
  2778. coordinates and MUL them by the REZ.
  2779.    This would allow me to use only ONE moduale and basically one set of 'X',
  2780. 'Y' coordinates to handle.   
  2781.    The problem is that CASE will not 'seem' to allow any type of 'math' to
  2782. take place within it's command line.  I'm having to assemble two, nearly
  2783. duplicate routines to make this work. And Select/Case  DOES seem to be the
  2784. natural command of choice.
  2785.  
  2786.    So guys,   any ideas or suggestions?   If so,  how 'bout a short example
  2787. piece of code on this.   OR is there a totally better way to handle MOUSE AND
  2788. Keyboard inputs???   I am NOT using resource (RCS).
  2789.  
  2790.     Thanks for any help.                 RHFactor
  2791.  ------------
  2792. Category 22,  Topic 3
  2793. Message 164       Fri Aug 30, 1991
  2794. E.DAWLEY1                    at 19:19 EDT
  2795.  
  2796. RHF ---> med/high rez...
  2797.  
  2798. This might seem overly simplified, but you might try reading the mouse co-
  2799. ordiantes and then multiplying the y variable by a factor that would adjust it
  2800. to one set resolution, then do your CASE stuff.
  2801.  
  2802. Have you tried SELECT my%*rez% ?
  2803.  
  2804. Eric
  2805.  ------------
  2806. Category 22,  Topic 3
  2807. Message 165       Fri Aug 30, 1991
  2808. B.BRESNIK                    at 19:19 EDT
  2809.  
  2810. CASE expects an integer (byte) answer: have you tried:
  2811.    res%=XBIOS(4)
  2812.    SELECT res%
  2813.    CASE 0
  2814.      hor=319
  2815.      ver=199
  2816.    CASE 1
  2817.      hor=639
  2818.      ver=199
  2819.    CASE 2
  2820.      hor=639
  2821.      ver=399
  2822.    DEFAULT
  2823.      ! you have TT resolutions
  2824.    ENDSELECT
  2825.  ------------
  2826. Category 22,  Topic 3
  2827. Message 166       Fri Aug 30, 1991
  2828. G.T.GRAY [Gary Gray]         at 19:19 EDT
  2829.  
  2830. I just want to comment that GFA 3.6 crashes on the TT/Matrix video card combo.
  2831.  
  2832. Thanks Gary Gray Megabyte Plus
  2833.  
  2834.  ------------
  2835. Category 22,  Topic 3
  2836. Message 167       Sat Aug 31, 1991
  2837. RHFACTOR                     at 01:26 EDT
  2838.  
  2839. Thanks guys for the SELECT CASE for REZ examples.    It's funny, ONLY in the
  2840. aftermath,  when one realizes that sometimes taking a brief pause, when trying
  2841. to find a solution, upon ones' return.... the OBVIOUS shows itself.
  2842.  
  2843.    So after going out and 'beating up' a tennis ball, I decided to see if the
  2844. SELECT portion would mind if I put conditions on it.... sure nuff that be spot
  2845. to put it.   
  2846.     Still,  thanks for the postings !!!          RHFactor
  2847.  ------------
  2848. Category 22,  Topic 3
  2849. Message 169       Sat Aug 31, 1991
  2850. PRINCETON-U                  at 18:33 EDT
  2851.  
  2852.  Hmm, about that RC_COPY bug I had. I was using....
  2853.  
  2854.  RC_COPY lsbase%,0,8,640,152 TO lsbase%,0,0,3
  2855.  
  2856.  and lsbase%=XBIOS(3). Well, I couldn't get that to work, so I switched to
  2857.  
  2858.  GET 0,0,639,159,screen$
  2859.  PUT 0,8,screen$,3
  2860.  
  2861.  Then just for the heck of it, I went BACK to RC_COPY, but I plugged in
  2862.  XBIOS(3) directly instead of using lsbase%. It immediately locked up
  2863.  again. So, just for the heck of it, I tried XBIOS(2) and it works perfectly.
  2864.  Now, both XBIOS(3) and XBIOS(2) are returning the same value since I am
  2865.  NOT using XBIOS(5) to move the logical and/or physical screen bases around.
  2866.  Anyone know why the heck XBIOS(2) would work when XBIOS(3) wouldn't?
  2867.  ------------
  2868. Category 22,  Topic 3
  2869. Message 170       Sun Sep 01, 1991
  2870. N.WEINRESS [IAAD Member]     at 01:20 EDT
  2871.  
  2872. RHF, I have used a multiplying factor to adjust for the difference betwwen
  2873. high and medium res. and very successfully. If you do that, the CASE case is
  2874. superfluous.
  2875.  
  2876. Norm
  2877.  ------------
  2878. Category 22,  Topic 3
  2879. Message 171       Sun Sep 01, 1991
  2880. RHFACTOR                     at 05:13 EDT
  2881.  
  2882. Thanks NORM,   I have been adding the 'factor' for rez into all my  programs.
  2883.    The BIG thing I'm trying to solve has to do with TEXT and BOXES (again!)
  2884.   But this time, I've borrowed the color ST from the studio and now have both
  2885. computers running GFA so that I can test code.
  2886.    One of the FIRST big discoveries came when doing font size switching, that
  2887. the overall length of the text line did NOT cover the X plane at  quite the
  2888. same distance as the reference font size did.    So NOW I'm going in and using
  2889. the 3rd parameter in the TEXT command that adjust the 'spread' of the text$ 
  2890. (based on the LEN(txt$)).  That seems to work very well EXCEPT when I try to
  2891. place the text into a 'white' box,  then I can see all the black spaces
  2892. inbetween the letters........  so... we're not done with that part yet.
  2893.                                          RHFactor
  2894.  ------------
  2895. Category 22,  Topic 3
  2896. Message 172       Sun Sep 01, 1991
  2897. R.WATSON15 [Wayne Watson]    at 05:22 EDT
  2898.  
  2899. J.SIEBEN,
  2900.   I ran into the same problem about a yaer ago when I was working on a
  2901. checkbook program. I was wanting to use the same Dialog Box for several
  2902. functions and just needed to change the text of the buttons. I tried the
  2903. CHAR{{V:a$}}="test" method and was having problems. I read somewhere or
  2904. someone told me that when you change the data like that, the string needs to
  2905. be the same length or larger.
  2906.  
  2907. EXAMPLE:
  2908.  
  2909. a$="This is a test" CHAR{{V:a$}}="test"  ! This will work
  2910.  
  2911. a$="T" CHAR{{V:a$}}="test"  ! This will not work
  2912.  
  2913. Also, what the others said. An empty string will give you problems in this
  2914. instance. If you are going to change a$ in this fashion, you need to set the
  2915. initial string length to the maximum size that will modify it to later.
  2916.  
  2917. I hope I got this right. If it is wrong, someone please say so. This is on
  2918. information that I have. From the experiences with my checkbook program, this
  2919. method seems to hold true.
  2920.  
  2921. Also, I have noticed another problem with GFA 3.5E. If someone else could try
  2922. this and see what happens I would appreciated it.
  2923.  
  2924.   a$="Q"
  2925.   If a$<>"Q" OR a$<>"N"
  2926.     b$="Test"
  2927.   ENDIF
  2928.   PRINT B$
  2929.  
  2930. What happens is that when there is an OR placed in the check with a '<>' on a
  2931. string, it always returns false and thus b$ will equal "Test".
  2932.  ------------
  2933. Category 22,  Topic 3
  2934. Message 173       Sun Sep 01, 1991
  2935. PRINCETON-U                  at 11:24 EDT
  2936.  
  2937. Wayne, it's working right... a$ DOES equal "Q". You're then saying IF a$ does
  2938. NOT equal "Q" *OR* a$ does NOT equal "N" then b$ equals "Test". In that case,
  2939. b$ will ALWAYS equal "Test". You're testing if a$ doesn't equal ONE or the
  2940. OTHER. Not BOTH. And, since a$ doesn't equal "N", it's returning TRUE
  2941. therefore, b$ equals "Test". Did I explain that well? :) If you use IF a$<>"Q"
  2942. AND a$<>"N" THEN it will return false and b$ will not equal "Test". 
  2943.  ------------
  2944. Category 22,  Topic 3
  2945. Message 174       Sun Sep 01, 1991
  2946. E.DAWLEY1                    at 12:27 EDT
  2947.  
  2948. Princeton-U, yes you explained that well. I often find myself confusing OR &
  2949. AND as in the above example. Its usefull to sit back and think carefully about
  2950. what your code is doing and then you can see the error. Remember that (True OR
  2951. False)=True.
  2952.  
  2953. RE changing strings with CHAR{}... If you are changing TENDINFO's that are
  2954. part of a RCS tree, you are correct that you cannot change the string to a
  2955. length that is longer than the original string. The reason is that RSC_GADDR
  2956. packs all the data very tightly into memory and does no allow any extra room
  2957. for longer strings. Therefore create your strings to the maximum length that
  2958. will be needed when you create your RCS files.
  2959.  
  2960. This problem will not arise with GFA strings since GFA will move the strings
  2961. around in memory to accomidate the new lengths. I probably did not explain the
  2962. problem with the example CHAR{{v:a$}}='"test" well. Lets break it down...
  2963. a$="".....GFA stores a value of 0 at the address V:a$
  2964. CHAR{{V:a$}}="test"...GFA now tries to write this string at address 0!
  2965. (becouse of the double parentheses).
  2966.  
  2967. a$=" "....GFA stores a value of 32 at the address V:a$
  2968. CHAR{{V:a$}}="test"...GFA writes to address 32, you just over wrote supervisor
  2969. memory!
  2970.  
  2971. Eric
  2972.  ------------
  2973. Category 22,  Topic 3
  2974. Message 175       Sun Sep 01, 1991
  2975. PRINCETON-U                  at 13:54 EDT
  2976.  
  2977. Actually, V:a$ returns 0 when a$="" because a$ doesn't exist. Therefore it has
  2978. no memory address.
  2979.  ------------
  2980. Category 22,  Topic 3
  2981. Message 176       Sun Sep 01, 1991
  2982. P.STONE [Xorcist]            at 14:50 EDT
  2983.  
  2984. Maybe my post never made it here...
  2985.  
  2986. Question:
  2987.  
  2988. Is there a need to constantly call a line like x=fre(0) to reset
  2989.  internal pointer stacks, etc., (like the Apple //s require).?
  2990.  
  2991. I am loading pictures (degas) and constantly displaying them, but after a
  2992. while of displaying or loading, I get 2 bombs and the program exits... it's
  2993. completely frustrating. It works fine for an hour and then dies...
  2994.  
  2995. It's symptomatic of the x=fre(0) syndrome of that on the Apples...
  2996.  Does this sound familure?
  2997.  
  2998. <X>
  2999.  
  3000.  ------------
  3001. Category 22,  Topic 3
  3002. Message 178       Sun Sep 01, 1991
  3003. PRINCETON-U                  at 19:38 EDT
  3004.  
  3005. Xorcist, are you loading the degas pictures in by loading before screen ram so
  3006. that the picture begins at the beginning of screen ram and the color values
  3007. are off the screen? This could cause some problems. If you're doing that, you
  3008. might want to try BGET instead of BLOAD to load just the PICTURE part of the
  3009. file into screen memory.
  3010.  ------------
  3011. Category 22,  Topic 3
  3012. Message 179       Mon Sep 02, 1991
  3013. NIRANDRA                     at 12:45 EDT
  3014.  
  3015. How can you tell when an ACC has been selected? I'm having problems with a few
  3016. ACC's that don't redraw the part fo the screen they land on after they are
  3017. finished.
  3018.  ------------
  3019. Category 22,  Topic 3
  3020. Message 180       Mon Sep 02, 1991
  3021. J.NESS [Jim]                 at 22:54 EDT
  3022.  
  3023. Niranda -
  3024.  
  3025. Your problem with screen redraws is symptomatic of another discussion going on
  3026. earlier in the message base.
  3027.  
  3028. There is no documented way to know when a Desk ACC has been exitted. What you
  3029. need to do is to coordinate YOUR background with the GEM background.  Then,
  3030. when an ACC exits, the backgrounds will match.
  3031.  
  3032. There are GEM calls that will let you change the GEM background, if you must
  3033. have it different from the default.  Then, when your program ends, you can
  3034. return it to its previous state (not necessary, but it's the smooth thing to
  3035. do.  I believe GEM does the change-back itself anyway).
  3036.  
  3037. There are also calls that will force GEM to redraw its background, so that you
  3038. can use that background in your program.  Either the default, or some special
  3039. that you assign.
  3040.  
  3041.                                     -JN
  3042.  
  3043.  ------------
  3044. Category 22,  Topic 3
  3045. Message 181       Tue Sep 03, 1991
  3046. N.WEINRESS [IAAD Member]     at 00:19 EDT
  3047.  
  3048. RHF, I solved the Text problems by doing DEFTEXT with a factor, t%, in the
  3049. parameters. I set t% at initialization at the same time I set the  resolution
  3050. factor. I would have to look it up, but I think it was set at 6 or 8 for
  3051. medium res. and 13 for mono. I know it solves the problem n nicely.
  3052.  
  3053. Norm
  3054.  ------------
  3055. Category 22,  Topic 3
  3056. Message 182       Tue Sep 03, 1991
  3057. RHFACTOR                     at 02:58 EDT
  3058.  
  3059. Thanks NORM,   I had the opportunity of working with 2 ST systems, one mono , 
  3060. the other color.  Had a productive first round.
  3061.    The point of the problem that I was finding, had to do with putting some
  3062. boxes around text.  Doesn't sound that difficult.  Still,  thanks to everyone
  3063. suggestions,  especially in the use of ~extend  call.
  3064.    Still problems where visible,  in that the 'placement' of the text in the
  3065. box was DIFFERENT between the REZ modes.  The color text tend to 'fill' the
  3066. entire box,  instead of being placed neatly inside the mono bo x, wioth nice
  3067. head and bottom coverage.  ALSO, it seems that using some of the various font
  3068. sizes showed similar 'placement' problems.
  3069.    One of the BIG challenges was in trying to work a font size for size
  3070. conversion between the two rez.   13 to 6,  and 6 to 4  (sounds like a 
  3071. Chicago tune),  was fine,  however, we MONO guys can use size 4.... what to do
  3072. for the color rez  (trust me, size 3 on the color was some specs and globs).
  3073.     The next major problem had to do with the horizontal length of a box
  3074. between the two rez modes.  And here is where having both systems running
  3075. together helped focus in on the interaction of the 3rd optional parameter of
  3076. the TEXT command.  (You see, some of the problems I was asking about where not
  3077. just of the vertical placement, but rather, the interaction of every cell.
  3078.     Anyways,  I have a bunch of quickly thrown together moduals that I can now
  3079. review, so that I can prepare for I hope another go of it.
  3080.  
  3081.      As usual,  thanks for sharing your ideas....  we be listenin'
  3082.  
  3083.                                  RHFactor
  3084.  ------------
  3085. Category 22,  Topic 3
  3086. Message 183       Tue Sep 03, 1991
  3087. E.DAWLEY1                    at 21:53 EDT
  3088.  
  3089. I bought my system with a mono-monitor, and added a color monitor about a year
  3090. ago. I usually write my code for the mono screen first and then add in the
  3091. factors for the color version afterwards.
  3092.  
  3093. It never seems to fail that the conversion is not a simple multiplication (or
  3094. division) by a single factor. If you have started with mono co-ordinates and
  3095. divided them by 2 for the medium rez screen, you cannot always access the
  3096. right spot since sometimes there is a remiander of 1/2. I usually have to
  3097. establish up to 4 more variables that equal 1,2,3 and 4 for the color systems
  3098. and all equal 0 for the mono system, then I add these factors in where fine
  3099. tunning is required.
  3100.  
  3101. And your right RHF, anything less than text size 4 on the medium rez screen is
  3102. garbage, so I try to avoid using 4's on the mono all together.
  3103.  
  3104. Eric
  3105.  ------------
  3106. Category 22,  Topic 3
  3107. Message 184       Wed Sep 04, 1991
  3108. RHFACTOR                     at 00:52 EDT
  3109.  
  3110.   Thanks E.DAWLEY,  for confirming some of my frustrations regarding multi-
  3111. ple rez writting.   And it's not as simple rto write two separate programs.
  3112. Especially if one does not have access to both systems to verify screen
  3113. layouts, NOR color. (which coming from the land of MONO drove me crazy!! I
  3114. believe I had better screen color commands and CONTROL with a C-64 than I
  3115. found I could do with a vastly better ST)  of course I only had time to
  3116. quickly experiment with color stuff, hope to check it out again later.
  3117.  
  3118.    I do use one of the color EMULATORS,  but even the latest version I can
  3119. find is still tempermental, ususally giving me the temper!
  3120.  
  3121. SOMEBODY SOMEWHERE please develope some time of coordinator between the MONO
  3122. and MED REZ mode.
  3123.  
  3124.   I remember that BILL over at ATARI mentioned that he was going to upload
  3125. some commented code for his all rez screen scrolling routines.... WHERE ARE
  3126. YOU BILL.....  WE NEED YOU !!!
  3127.                                               RHFactor
  3128.  ------------
  3129. Category 22,  Topic 3
  3130. Message 185       Wed Sep 04, 1991
  3131. NIRANDRA                     at 01:46 EDT
  3132.  
  3133. IS there an emulator for users with monochrome monitors to allow them to run
  3134. color programs? I mean one besides the one that requires a 200K screen cache.
  3135.  ------------
  3136. Category 22,  Topic 3
  3137. Message 186       Wed Sep 04, 1991
  3138. J.SIEBEN [J.SIEBEN]          at 21:09 EDT
  3139.  
  3140. Hi all,
  3141.  
  3142. I got a problem using OBJC_EDIT and/or FORM_KEYBD.  From the explainations in
  3143. the manual I am to understand these routines allow for editing individual
  3144. objects.  I would like to be able to do this. Is my understanding correct? 
  3145. What I am trying to do is edit an item out of 30 and validate the input before
  3146. going to the next object. FORM_DO is not what I want to do.  What's the best
  3147. way to go about this?  If OBJC_EDIT and/or FORM_KEYBD is the way to go I would
  3148. like an example as I am having no luck with it now.
  3149.  
  3150. Thanks
  3151.  
  3152.  ------------
  3153. Category 22,  Topic 3
  3154. Message 187       Wed Sep 04, 1991
  3155. H.SARBER [RANGERST]          at 23:29 EDT
  3156.  
  3157.      I bought my system with a color monitor.  I use a Mono emulator to test
  3158. my programs in mono.  It's a little fuzzy, but it works.  If you start your
  3159. program in color then all you have to do is multiply by 2 for the resolution
  3160. factor for mono.  That way you don't have to worry about the remainder problem
  3161. when you do it the other way around.
  3162.      As a matter of fact I usually imbed my resource files into my programs. 
  3163. I use a filter program I wrote to convert the listed resource file to run in
  3164. both color and mono.  I actually have two filter programs.  One converts the
  3165. resource file to med/hi rez and one converts the resource file to low/med/hi
  3166. rez.  The first I just add a 'yf%=xbios(2)' to adjust the 'y' coordinates. 
  3167. The other I have to do a little more for, but it's easier than making 2 or 3
  3168. separate resource files.  One for each resolution.
  3169.  
  3170. Harry
  3171.  
  3172.  ------------
  3173. Category 22,  Topic 3
  3174. Message 188       Thu Sep 05, 1991
  3175. ELROD                        at 20:43 EDT
  3176.  
  3177.  A friend of mine is haveing some trouble. He needs a fast way to do some
  3178. graphic calls. The following is a message from him telling his problems. Any
  3179. help will be welcome.
  3180.  
  3181.                   Thanks
  3182.  
  3183. Quick Graphics!                 9-5-91 ===============
  3184.      Programmers!  I need your help!
  3185.      This is what I need... Quick Graphics!  I am writing a game that 
  3186.      needs a fast graphics update each time the player moves.
  3187.      My method works, but is noticeably slow.  It is, after all, written 
  3188.      in GFA Basic.  Do not get me wrong... GFA is a fast basic, but not 
  3189.      fast enough for me in this application!  I need your help to write 
  3190.      this routine in Assembler or C. My Routine... =============
  3191.      Right now I am using a loop to draw the graphics.  The graphics 
  3192.      screen is a 11 by 7 map, for a total of 77 graphic "icons".  I have 
  3193.      an array called ICON$() that stores icon images.  These images were 
  3194.      BSAVEd to disk, and are loaded back into my GFA and stored with the 
  3195.      INLINE command.  This way the graphics are saved within my code.
  3196.      Now, the 1st line is read in.  There are a total of 11 characters.  
  3197.      After that, the 1st character in that line is read.  I take the 
  3198.      ASCii value of that character, and that value is the icon I put on 
  3199.      the screen (ie: Put x,y,ICON$(value) ).  Then the next character in 
  3200.      line 1 is read, and so on.  By the time we are done, we have placed 
  3201.      77 "icons" on the screen to form a map.
  3202.      Here is my loop code:
  3203.      ###################################################################
  3204.           Icon$(1)=land$           !This is a graphic of some land
  3205.           Icon$(2)=water$          !This is a graphic of some water
  3206.             .
  3207.             .
  3208.           Icon$(255)=whatever$     !Each graphic is 17 wide by 19 high
  3209.                                    !(Notice the offsets below in the PUT
  3210.                                    ! statement)
  3211.           Height%=7
  3212.           Width%=11
  3213.           For Lines|=1 To Height%
  3214.             Map_line$=Mid$(Map$(By|),X%,Width%)
  3215.             For Col|=1 To Width%
  3216.               Value%=Asc(Mid$(Map_line$,Col|,1))
  3217.               Put 8+((Col|-1)*17),8+((Lines|-1)*19),Icon$(Value%)
  3218.             Next Col|
  3219.             Inc By|
  3220.           Next Lines|
  3221.      ###################################################################
  3222.      Now, this works ok, but I would love for it to be faster.  I am 
  3223.      seeking a routine written is Assembler or C.  I know either would 
  3224.      be much faster.
  3225.      The variables to be passed would be the Height%, Width%, X%, 
  3226.      the location of the map data in Map$(), and the icon data in 
  3227.      Icon$().
  3228.      This is basically the deal (no pun intended).  I do not know 
  3229.      how easy or how hard this task will be, but I do challenge you if 
  3230.      you program in Assembly or C (or GFA Basic for that matter- if you 
  3231.      have a better way!). Let Me Know... ==============
  3232.      If you can help, please write -or- call me.  I would be most 
  3233.      gracious!
  3234.                                 Dave Stelljes
  3235.                               1404 Bragg Avenue
  3236.                             High Point, NC 27265
  3237.                                 (919)885-6629
  3238.  
  3239.  ------------
  3240. Category 22,  Topic 3
  3241. Message 189       Thu Sep 05, 1991
  3242. ELROD                        at 20:47 EDT
  3243.  
  3244.   It's me again, sorry about the formating of the message, but that was the he
  3245. sent it to me and I forgot to set the correct format. ;)
  3246.  
  3247.  ------------
  3248. Category 22,  Topic 3
  3249. Message 190       Fri Sep 06, 1991
  3250. RHFACTOR                     at 02:10 EDT
  3251.  
  3252. I don't know if 'C' can do faster graphics than GFA,  but assembler can remove
  3253. all doubts.
  3254.    I picked up the new book on assembly language programming for GFA,  but I
  3255. do not have the new GFA ASSEMBLER with it's book (although that looks very
  3256. tempting)  ESPECIALLY since the word on A-LINE graphic !!!  would be nice if
  3257. we could get a set of ML routines to tie into GFA to replace all the A-line
  3258. calls.   How 'bout it !!!???
  3259.                                                    RHFactor
  3260.  ------------
  3261. Category 22,  Topic 3
  3262. Message 191       Fri Sep 06, 1991
  3263. CBARRON                      at 02:37 EDT
  3264.  
  3265. ELROD - You say each character is 17 wide. Why 17?? If you mean pixels then I
  3266. suggests 16 wide characters as this will probably reduce the time for your
  3267. basic code to work by a large amount. 16 is a magic # since 16 bits can be
  3268. transferred with one instruction and no bit twidling. 17 bits guarantees that
  3269. only the first 16 bits can be stored without masking operations.  Try a sample
  3270. with 16 pixel wide characters and see if it makes a big difference.
  3271.  
  3272.  ------------
  3273. Category 22,  Topic 3
  3274. Message 192       Fri Sep 06, 1991
  3275. E.DAWLEY1                    at 20:10 EDT
  3276.  
  3277. Making the Icons 16 pixels wide instead of 17 would definately speed up the
  3278. drawing. To make full use of the new 16 pixels wide sizes, you should also
  3279. draw them on a word boundary (IE at an x co-ordiante evenly divisible by 16).
  3280. If you make both of these changes you could see your drawing time cut in half
  3281. or eevn more.
  3282.  
  3283. If thats not enough, you may want to consider not redrawing the whole map
  3284. unless its absolutely necessary. Im guessing, but say a player moves north by
  3285. one square, then you could shift the lower 6 lines down with one BMOVE or
  3286. RC_COPY and then just redraw the top line. (If thats what your program does)
  3287.  
  3288. Re FORM_KEYBD and OBJC_EDIT, I never could get these to work, and the manual
  3289. doesnt give any clues. (Other than FORM_KEYBD is a sub-routine of FORM_DO). If
  3290. no one can help you figure this out I have one other solution for you. Put
  3291. your FORM_DO loop inside of another DO..LOOP UNTIL error!=FALSE. Then when an
  3292. exit button is selected check the fields one by one for allowable input and
  3293. set error!=TRUE if one is found that isnt correct (and pop up an alert box
  3294. indicating the error). If all strings are acceptable, set error!=FALSE.
  3295.  
  3296. If you try to create some code that will duplicate FORM_DO, your bound to be
  3297. hitting that reset button alot. The above theory is how I handle dialogs where
  3298. I will not let the user exit until the input is acceptable.
  3299.  
  3300. Eric
  3301.  ------------
  3302. Category 22,  Topic 3
  3303. Message 193       Sat Sep 07, 1991
  3304. J.EIDSVOOG1 [CodeHead]       at 09:37 EDT
  3305.  
  3306. Folks,
  3307.  
  3308. If you want your GFA programs to work in any resolution, please do not use
  3309. Getrez to determine your factors for multiplying, etc.  There are already some
  3310. large screen monitors that use rez 0 or 1 with completely different screen
  3311. sizes.  You can get all the information you need from the line-A variables.
  3312.  
  3313.  character_height=CARD{L~A-46}
  3314.  vertical_res=CARD{L~A-4}
  3315.  nlines=CARD{L~A-4}/character_height   ! number of lines of text
  3316.  horizontal_res=CARD{L~A-12}
  3317.  bytes_per_scan_line=CARD{L~A+2}
  3318.  
  3319. Or you can get the character width and height from graf_handle:
  3320.  
  3321.  ~GRAF_HANDLE(wchar,ychar,wbox,hbox)
  3322.  
  3323. These values will be correct in any resolution, on any ST/TT.  And there's a
  3324. lot more variables that you can if you look in the table of line-A variables. 
  3325. Relying on Getrez will only hinder the usefulness of your program for users of
  3326. different resolutions.
  3327.  
  3328. (Yes, I know that Atari told us not to use line-A but they have yet to
  3329. complete the discussion as to exactly which line-A "things" will not work.  I
  3330. believe that the important variables will always remain intact, and you will
  3331. be much closer to complete resolution independence than by using Getrez.)
  3332.  
  3333. RHFactor,
  3334.  
  3335. Regarding a set of assembly routines to replace the line-A calls, it wouldn't
  3336. make much sense.  The line-A calls are already assembly routines which are
  3337. quite effecient.  While it might be possible to get 5-10% speed improvement
  3338. over them, I doubt that much more could be obtained.
  3339.  
  3340.      John Eidsvoog  /|\  Member of the IAAD
  3341.  CodeHead Software  \|/  Serving the Atari Community
  3342.  ------------
  3343. Category 22,  Topic 3
  3344. Message 194       Sat Sep 07, 1991
  3345. E.SLICK [Eric]               at 10:38 EDT
  3346.  
  3347.   Also, using BITBLT would speed things up noticeably. Between 16 pixels wide
  3348. and this command he should get at least a doubling of speed.
  3349.  
  3350. Eric S.
  3351.  ------------
  3352. Category 22,  Topic 3
  3353. Message 195       Sat Sep 07, 1991
  3354. CBARRON                      at 21:49 EDT
  3355.  
  3356.  Does not the follow 'pseudo' gfa code do the trick without using line A. 
  3357. Seem so to me. I could be wrong but I don't see much of a speed loss of
  3358. calling this procedure ONCE and using the results later as needed.  I'd advise
  3359. staying away from line A.
  3360.  procedure
  3361.  get_screen_stuff(char_ht,vert_res,nlines,hor_res,bytes_scan)
  3362.  local handle,wc,hc,wb,hb,x,y,w,h,ext&(57)
  3363.         rem since this only enquires the vdi workstation using aes's
  3364.         rem handle should be ok
  3365.         rem if we were going to do anything with it a virtual
  3366.         rem workstation probably is needed.
  3367.         handle=graf_handle( wc,hc,wb,hb): rem aes vdi handle
  3368.         char_ht=hb                      : rem char ht = box ht
  3369.         ~vq_extnd(handle,9,ext&())      : rem get size of screen
  3370.         vert_res=ext&(0)
  3371.         hor_res=ext&(1)
  3372.         nlines=hor_res/char_ht          : rem nlines is total/lines of one
  3373.         ~vq_extnd(handle,1,ext&())      : rem  enquire for # of planes
  3374.         nplanes=ext&(4)
  3375.         bytes_per_scan=hor_res*nplanes/8: rem calc bytes per scan line
  3376.  end procedure
  3377.  
  3378.  
  3379.  
  3380.  ------------
  3381. Category 22,  Topic 3
  3382. Message 196       Sun Sep 08, 1991
  3383. RHFACTOR                     at 01:56 EDT
  3384.  
  3385. Hi John Eidsvoog,
  3386.     Thanks for generating some response on the REZ and other handy stuff.
  3387.   I know I hate to bring up the LINE-A stuff.  I was figuring that 'certain'
  3388. graphics calls like LINES and BOXES might get the ML treatment.
  3389.    Not being a 'DEVELOPER' member has put us in the 'we told you not to use
  3390. them, so there'  catagory,  with really no idea as to what alternative to
  3391. follow.   When I read thru some of the scarce lit,  I thought I have seen
  3392. commands or system calls that in some way access Line-A functions , even
  3393. though they are not specifically mentioned in the L-A chapter. (please don't
  3394. hold me to an example).
  3395.    Can you tell us for today,  what machine out there WILL NOT handle a LINE-A
  3396. call.
  3397.     I have even seen an address location that checks to see where the LA's are
  3398. located....  what's the deal there,  I thought we were told that there are no
  3399. look-up tables.
  3400.     Please, I'm not trying to pretend like I know alot about this area.
  3401. basically I'm working with GFA,  trying to write fast, efficient code.
  3402.  
  3403.    Speaking of which,  has anyone heard of a 'code analyzer'  program for GFA,
  3404. that would give a graphic output of the code structure (flow-chart)??
  3405.  
  3406.                   Thanks,       RHFactor
  3407.  ------------
  3408. Category 22,  Topic 3
  3409. Message 197       Sun Sep 08, 1991
  3410. E.DAWLEY1                    at 12:03 EDT
  3411.  
  3412. Havent heard of any RHF, though would be nice. This would seem to be a good
  3413. project for GFA to write, along with a serious debugger. They could put
  3414. together a utilities package that would include these and other nice programs.
  3415.  
  3416. The debugger I am looking for would alow 'stepping' through the program in a
  3417. split window. The top half of the window would display the GFA code being
  3418. processed and the bottom half would have an area where you could typein
  3419. variables that you want to monitor. A function key could be used to bring up a
  3420. new screen where you could look at entries within an array.
  3421.  
  3422. As far as getrez is concerned, I took the advise along time ago not to use it.
  3423. In lieu of this, I have been using the WORK_OUT variables to determine the
  3424. vertical and horizontal resolution. Is this correct? These variables are
  3425. available if you open a VDI workstation (which GFA does automatically)
  3426. similiar to CBARRON's code right?
  3427.  
  3428. Eric
  3429.  ------------
  3430. Category 22,  Topic 3
  3431. Message 198       Mon Sep 09, 1991
  3432. CBARRON                      at 00:30 EDT
  3433.  
  3434. E.DAWLEY1 - As long as work_out is what is returned by the 'open virtual
  3435. workstation' already done by gfa the values of the work_out area include the
  3436. max x pixel coordinate and the max y pixel coordinate of the device.  That is
  3437. what atari wants people to use the very verisatile device independent
  3438. approach.  To get the # of bit planes an extended equiry is needed as I have
  3439. shown.
  3440.  ------------
  3441. Category 22,  Topic 3
  3442. Message 199       Mon Sep 09, 1991
  3443. J.EIDSVOOG1 [CodeHead]       at 02:31 EDT
  3444.  
  3445. Regarding an address location and lookup tables, that's exactly what the line-
  3446. A variables are.  The expression x%=CARD{L~A+2} will fetch a word value from
  3447. two byte into the line-A table.  This address will vary from TOS to TOS.  The
  3448. equivalent machine language routine would be:
  3449.  
  3450.      dc.w    $A000      ; This puts the line-A address in A0
  3451.      move.w  2(A0),x
  3452.  
  3453. Although, we've failed to get any concrete answer from the Atari officials,
  3454. there are certain line-A variables that will always be valid (such as
  3455. horizontal and vertical resolutions and who-knows what else) in my opinion. 
  3456. As for the line-A routines, it might be better to steer clear of them if you
  3457. want your software to work on future machines.  Up until now though, line-A
  3458. seems to work on all existing resolutions with one exception.
  3459.  
  3460. One of the definite limitations of line-A is caused by the variables COLBIT0-3
  3461. (line-A + 24 through 31).  Here there are four words, one for each of four
  3462. color planes.  Problems will arise (although so far I have yet to encounter
  3463. any) in TT-low res, which has 8 planes, and any other resolution greater than
  3464. four planes.
  3465.  
  3466. We've been told to use the VDI, so it's still best to get this information
  3467. from the VDI open-workstation.  Atari guarantees that anything written using
  3468. the VDI will work on future machines, no matter what kind of fancy video they
  3469. might come up with (ve haff herdt rumors).
  3470.  
  3471.      John Eidsvoog  /|\  Member of the IAAD
  3472.  CodeHead Software  \|/  Serving the Atari Community
  3473.  ------------
  3474. Category 22,  Topic 3
  3475. Message 200       Mon Sep 09, 1991
  3476. P.STONE [Xorcist]            at 03:12 EDT
  3477.  
  3478. Well,
  3479.  
  3480.  
  3481. ..... although I changed my Degas picture loading to accomodate BGET instead
  3482. of a BLOAD, I still am having strange crashes and no one has said a thing
  3483. about the X=FRE(0) calls that I inquired about...
  3484.  
  3485.  
  3486. WELL!
  3487.  
  3488. After hours of testing, X=FRE(0) has THE OPPOSITE EFFECT that it did on the
  3489. Apple computer... IT CRASHES THE ATARI!
  3490.  
  3491. 3 Bombs...
  3492.  
  3493. Any ideas why?
  3494.  
  3495. How else can one obtain the amount of MEM free 'safely'... wear a BIT COMDOM?
  3496.  
  3497. <X>
  3498.  
  3499.  ------------
  3500. Category 22,  Topic 3
  3501. Message 201       Mon Sep 09, 1991
  3502. RHFACTOR                     at 03:53 EDT
  3503.  
  3504. Doesn't a   PRINT FRE(x)  do the trick  ???
  3505.  
  3506. RHFactor
  3507.  ------------
  3508. Category 22,  Topic 3
  3509. Message 202       Mon Sep 09, 1991
  3510. J.EIDSVOOG1 [CodeHead]       at 16:08 EDT
  3511.  
  3512. Xorcist,
  3513.  
  3514. If X=FRE(0) is crashing your computer, then you've got some strange stuff
  3515. installed.  I'd advise removing your resident programs and accessories and
  3516. trying again.  It shouldn't be crashing.
  3517.  
  3518. John
  3519.  ------------
  3520. Category 22,  Topic 3
  3521. Message 203       Mon Sep 09, 1991
  3522. D.A.BRUMLEVE [kidprgs]       at 18:49 EDT
  3523.  
  3524.  I haven't had any trouble with free%=FRE(0)...I use it in every redundant
  3525.  loop and have since version 1.x of GFA.  I'd look elsewhere in the code
  3526.  if you continue to have trouble even on a cold-booted machine.
  3527.  ------------
  3528. Category 22,  Topic 3
  3529. Message 204       Tue Sep 10, 1991
  3530. P.STONE [Xorcist]            at 01:08 EDT
  3531.  
  3532. Hmmm... I have a mouse accellorator (the one that comes with Dr. T's) as well
  3533. as the Dr. T's new GEM file handling interceptor...
  3534.  
  3535. I really have nothing strange going on but I will try a cold boot...
  3536.  
  3537. When I removed the fre(0)'s, all has gone well.
  3538.  
  3539. It's strange, but it has something to do with loading Degas pictures, scanning
  3540. and getting input from INP(3) (MIDI), as well as sending MIDI, and then doing
  3541. a simple PRINT FRE(0)...
  3542.  
  3543. Even with DA's, a FRE(0) should work...
  3544.  
  3545. <X>
  3546.  
  3547.  ------------
  3548. Category 22,  Topic 3
  3549. Message 205       Thu Sep 12, 1991
  3550. E.SLICK [Eric]               at 22:48 EDT
  3551.  
  3552.   Does anyone have a short solution to the following?
  3553.  
  3554. Determine n number of x/y coordinates around the screen for any given radius
  3555.  
  3556. For example:
  3557.  
  3558. I want to determine 7 equidistant x,y coordinates around the perimeter of a
  3559. circle with a radius of 30.
  3560.  
  3561. Thanks,
  3562.  
  3563. Eric S.
  3564.  ------------
  3565. Category 22,  Topic 3
  3566. Message 206       Fri Sep 13, 1991
  3567. CBARRON                      at 02:05 EDT
  3568.  
  3569.   tpi=3.1415928*2:rem two *pi
  3570.   for i=0 to 6
  3571.         theta=tpi*i/7
  3572.         x(i)=r*cos(theta)
  3573.         y(i)=r*sin(theta)
  3574.   next i
  3575.   for graphics i think the is a quick sine and cosine using table lookup and
  3576. less accuracy. but the above pairs x(i),y(i) are a solution.  Trig identities
  3577. can reduce the computation.
  3578.  
  3579.  ------------
  3580. Category 22,  Topic 3
  3581. Message 207       Fri Sep 13, 1991
  3582. PRINCETON-U                  at 20:38 EDT
  3583.  
  3584. I have a question about the proper way to execute TSR's from a GFA program
  3585. using EXEC. What I have been doing to run external programs is using
  3586.  
  3587. RESERVE -(FRE(0)-32768) EXEC 0,filename$,cmd$,env$ RESERVE
  3588.  
  3589. But when using that to run a TSR, the TSR runs, but I get a ERROR WHILE
  3590. RESERVE upon returning to my GFA program. Can someone help?
  3591.  ------------
  3592. Category 22,  Topic 3
  3593. Message 208       Sat Sep 14, 1991
  3594. E.DAWLEY1                    at 13:15 EDT
  3595.  
  3596. As Ive mentioned before, FRE(0) will always return 16384 when your program is
  3597. frist run under GFA. Now if you changed your RESERVE command to  -
  3598. (FRE(0)+32768) it makes more senese. You might check how much is Free after
  3599. you do your version of the reserve command. Since by your formula you are
  3600. reserving a -(-16384), im not sure what GFA is doing....maybe nothing.
  3601.  
  3602. Eric
  3603.  ------------
  3604. Category 22,  Topic 3
  3605. Message 209       Sat Sep 14, 1991
  3606. E.SLICK [Eric]               at 23:30 EDT
  3607.  
  3608. CBARRON,
  3609.  
  3610. Thanks for the routine. I hate to admit it but my math is pretty thin beyond
  3611. percentages. :(
  3612.  
  3613. Eric S.
  3614.  ------------
  3615. Category 22,  Topic 3
  3616. Message 210       Sun Sep 15, 1991
  3617. D.FEENEY                     at 11:12 EDT
  3618.  
  3619. I am beginning to work with random access files and I have created a need to
  3620. do something beyond the scope of the manual. I have created a file consisting
  3621. of several records, each with several fields.  What I would like to do is to
  3622. go to a record and read only one field and then later replace that field with
  3623. a new value. Page 177 of the 3.5 manual isn't any help.  Any ideas?   Thanks
  3624.  ------------
  3625. Category 22,  Topic 3
  3626. Message 211       Sun Sep 15, 1991
  3627. J.NESS [Jim]                 at 17:24 EDT
  3628.  
  3629. D.FEENEY -
  3630.  
  3631. If page 177 of the manual is no help, how about pages 178 and 179, which show
  3632. examples?
  3633.  
  3634. You have to open a file in random access mode, telling GFA how long each
  3635. record is, in bytes.
  3636.  
  3637. Then, you use one or more FIELD commands to break each record into data
  3638. fields, or variables.
  3639.  
  3640. Once GFA knows how long each record is, and what variables exist within each
  3641. record, you just have to read in a record, and the variables automatically are
  3642. filled with data from that record.
  3643.  
  3644. You can store the data from the field you need into another variable, if
  3645. necessary.  Later, you can put that variable back into the field variable, and
  3646. store the record back into the file.
  3647.  
  3648. In "pidgeon," you:
  3649.  
  3650.  OPEN "r"             [open the file]
  3651.  FIELD                [declare the various fields within each record]
  3652.  GET                  [load a record from disk, filling your variables]
  3653.  this=that            [store a copy of your variable]
  3654.  stuff
  3655.  stuff
  3656.  stuff
  3657.  that=this            [put your value back into your variable]
  3658.  PUT                  [store to disk at appropriate location]
  3659.  
  3660.  
  3661. If you need more detail, let me know, but this is the basic (pun intended)
  3662. outline of what you have to do.
  3663.  
  3664.                                   -JN
  3665.  
  3666.  ------------
  3667. Category 22,  Topic 3
  3668. Message 212       Mon Sep 16, 1991
  3669. PRINCETON-U                  at 19:17 EDT
  3670.  
  3671. E.DAWLEY1, MALLOC(-1) returns 16384, not FRE(0). And besides, it's not the
  3672. amount of memory I'm reserving that's causing the problem. The TSR programs
  3673. ARE executing... it's the RESERVE by itself, which is the only way that I know
  3674. to return the RESERVE'ed memory that is causing the problem. All NON-TSR
  3675. programs execute and terminate and the memory that was RESERVED before the
  3676. EXEC call is returned. No problems. It's only when the program being EXEC'ed
  3677. is a TSR. THEN I get an ERROR WHILE RESERVE after the TSR has terminated.
  3678.  ------------
  3679. Category 22,  Topic 3
  3680. Message 213       Tue Sep 17, 1991
  3681. A.WESTON [Alan]              at 20:03 EDT
  3682.  
  3683.  
  3684.  ------------
  3685. Category 22,  Topic 3
  3686. Message 214       Wed Sep 18, 1991
  3687. J.KLEISER                    at 01:30 EDT
  3688.  
  3689.  Dear Nathan:
  3690.  *h
  3691.  I hope someone can help with this:
  3692.  I have a problem that I don't remember seeing discussed here.  I have an
  3693.  old GFA Basic 2.0 program that I'm trying to compile in GFA 3.5e.  I've
  3694.  loaded it as a .LST file into the GFA 3.5e interpreter, where it runs
  3695.  fine.  I've saved it as, say, TRYIT.GFA, the GFA 3.5 tokenized Basic
  3696.  file.  Then I compiled it (without any options; and no errors shown):
  3697.  TRYIT.PRG won't run.  I get a "Pointer (*x) Error" (Error #64).  It
  3698.  seems connected with a programming structure from GFA 2.0 with which I'm
  3699.  not familiar: 
  3700.  ..  
  3701.  ...  
  3702.  @solvitnow(*aa) 
  3703.  ..
  3704.  ...  
  3705.  PROCEDURE solvitnow(a%) 
  3706.  v=..  
  3707.  ss=.. 
  3708.  ...
  3709.  *tt=t%     <== HERE'S WHERE GFA 3.5 CHOKES...  
  3710.  RETURN
  3711.  
  3712.  I don't see what this structure is supposed to be doing, though I'm sure
  3713.  it has something to do with the address of the variable tt.  I want to
  3714.  replace it with a GFA 3.5 structure, but the books/manuals with 3.5
  3715.  don't mention this older structure.
  3716.  
  3717.  Anyone know what this is and what simple procedure structure would
  3718.  replace it? (Running speed is not important here.)  
  3719.  
  3720.  -=Jim=-
  3721.  ------------
  3722. Category 22,  Topic 3
  3723. Message 215       Wed Sep 18, 1991
  3724. H.SARBER [RANGERST]          at 21:12 EDT
  3725.  
  3726.      Can someone give me the screen sizes from 520ST to TT in pixels?  I know
  3727. what low, med., and high rez are for the ST, but the newer resolutions are
  3728. unknown.  I'm taking a suggestion from J.SIEBEN and attempting to write a flow
  3729. charter for the ST.  I would like it to be compatible with ALL ST's and not
  3730. just what I have (which is a 2.5 meg mutant 520ST)
  3731.  
  3732.      Secondly, has anyone managed to EXEC a program from an accessory?  I've
  3733. allocated as much as 1/2 meg for the program to reside in and gotten it to
  3734. work, but only ONCE.  The second time, boom goes the bombs.  I haven't seen
  3735. this many bombs since I first started programming.  Sheesh!
  3736.  
  3737.      Harry
  3738.  
  3739.  ------------
  3740. Category 22,  Topic 3
  3741. Message 216       Wed Sep 18, 1991
  3742. T2.LTD [Rick Taylor]         at 22:13 EDT
  3743.  
  3744.  Jim,
  3745.  
  3746.    Your hunch is right -- the asterisk is used by GFA Basic (and other
  3747.  languages such as C) as a pointer symbol.  However, the line of code
  3748.  that "chokes" GFA 3.5 would do the same to any previous version, I'm
  3749.  sure.  The "*tt = t%" should be reversed to read "t% = *tt" in order
  3750.  to compile (or even run).
  3751.  
  3752.    If you want to change a variable that is sent to a procedure as a
  3753.  parameter, a clean way to do this in the 3.x series is:
  3754.  
  3755.    my_age% = 35
  3756.    @fountain_of_youth (my_age%)      ! Roll back the years...
  3757.    PRINT my_number%                  ! Voila! I'm 29 again.
  3758.    '
  3759.    PROCEDURE fountain_of_youth (VAR n%)
  3760.      n% = 29
  3761.    RETURN
  3762.  
  3763.    When you type "VAR" in the parameter list of a procedure, all parms
  3764.  that follow that word can be changed within the procedure (that is
  3765.  they will return to the calling code with the new value).  It's a lot
  3766.  easier than using the asterisk method.
  3767.  --Rick
  3768.  ------------
  3769. Category 22,  Topic 3
  3770. Message 217       Wed Sep 18, 1991
  3771. J.SIEBEN [J.SIEBEN]          at 23:05 EDT
  3772.  
  3773. Harry,
  3774.  
  3775. Glad to see your going with it...full speed ahead right<grin>
  3776.  
  3777.  ------------
  3778. Category 22,  Topic 3
  3779. Message 218       Thu Sep 19, 1991
  3780. J.EIDSVOOG1 [CodeHead]       at 10:43 EDT
  3781.  
  3782. Harry,
  3783.  
  3784. As I recommended only last week in this topic, and others have mentioned
  3785. numerous times, please do not make your program resolution specific.  A list
  3786. of screen sizes from 520ST to TT will restrict your program's use to just
  3787. those resolutions.  Why limit yourself and others?
  3788.  
  3789. Open a workstation and get the screen size from the information returned by
  3790. GEM, or get the screen size from line_a...please!
  3791.  
  3792. John
  3793.  ------------
  3794. Category 22,  Topic 3
  3795. Message 219       Thu Sep 19, 1991
  3796. G.T.GRAY [Gary Gray]         at 19:16 EDT
  3797.  
  3798. Please everybody write VDI compliant code. There are so many video hardware
  3799. thingees coming to market, many replace the standard VDI resolution with their
  3800. own drivers, if you want your software to work at 1024x768 and 256 colors you
  3801. gotta follow the rules. You cant assume anything about what video is ruuning
  3802. anymore. The Germans, the Americans, the Canadians, and the Brits all got
  3803. video board coming at us with more different display modes than you can shake
  3804. a stick at. Open a workstation and get the info.
  3805.  
  3806. From somebody struggling with a high rez card
  3807.  
  3808. Thanks Gary Gray Megabyte Plus
  3809.  ------------
  3810. Category 22,  Topic 3
  3811. Message 220       Thu Sep 19, 1991
  3812. J.H.CARROLL [Jon]            at 23:04 EDT
  3813.  
  3814. I've got a couple of questions before I upgrade my GFA BASIC from 3.07 to 3.5
  3815. or 3.5.
  3816.  
  3817. Will 3.5 run in resolutions greater than 640X400-- the interpreter I mean. 
  3818. Will V3.6 (That's the TT one right?) run on an ST.  I'd imagine V3.6 has no
  3819. trouble running in expanded resolutions right?
  3820.  
  3821. Jon
  3822.  
  3823.  ------------
  3824. Category 22,  Topic 3
  3825. Message 221       Thu Sep 19, 1991
  3826. H.SARBER [RANGERST]          at 23:23 EDT
  3827.  
  3828.      John,
  3829.  
  3830.      I took your recommendations from previous messages and I already
  3831. incorporate them into my present programs.  The reason I ask about the present
  3832. resolutions is to get a baseline to go by.  The flow chart program WILL be
  3833. upwards compatible to other resolutions.  Since I only have a 520 to go by I'd
  3834. like to know what others are available to determine how monumental this
  3835. program might develope into.
  3836.  
  3837.      Harry
  3838.  
  3839.  ------------
  3840. Category 22,  Topic 3
  3841. Message 222       Fri Sep 20, 1991
  3842. J.NESS [Jim]                 at 19:38 EDT
  3843.  
  3844. Harry -
  3845.  
  3846. As I recall, GEM can handle resolutions up to 32k x 32k pixels.  If you want
  3847. to be able to handle ANYTHING, there's your target.  Of course, a screen rez
  3848. that high would require over a meg of video mem, just for monochrome.  I don't
  3849. even want to think how much memory it would require for true color.
  3850.  
  3851.                                     -JN
  3852.  
  3853.  ------------
  3854. Category 22,  Topic 3
  3855. Message 223       Sat Sep 21, 1991
  3856. DOUG.W                       at 00:02 EDT
  3857.  
  3858. "Over a meg of video mem"??  Try 128 MB!!
  3859.  
  3860. --Doug
  3861.  
  3862.  ------------
  3863. Category 22,  Topic 3
  3864. Message 224       Sat Sep 21, 1991
  3865. J.NESS [Jim]                 at 12:54 EDT
  3866.  
  3867. Doug -
  3868.  
  3869. You're right, 128mb.  But, jeez, it IS over a meg, isn't it?
  3870.  
  3871. Heh heh.
  3872.  
  3873.                                  -JN
  3874.  
  3875.  ------------
  3876. Category 22,  Topic 3
  3877. Message 225       Sat Sep 21, 1991
  3878. E.SLICK [Eric]               at 18:38 EDT
  3879.  
  3880. Princeton-U
  3881.  
  3882. Reading your post, I remembered something that might help. Make sure you are
  3883. freeing up memory in the correct order. I'm not sure which comes before which
  3884. but if you are using MFREE and RESERVE they should be done in opposite order
  3885. from how when MALLOC and RESERVE -##### were excecuted. Otherwise you get an
  3886. error when you try to free up the reserve memory.
  3887.  
  3888. Eric S.
  3889.  ------------
  3890. Category 22,  Topic 3
  3891. Message 226       Sun Sep 22, 1991
  3892. PRINCETON-U                  at 13:22 EDT
  3893.  
  3894.  I have no other RESERVE or MALLOC's in my program. And as I said, the
  3895.  memory IS being reserved... and the TSR IS being executed and the TSR DOES
  3896.  terminate... it's when control is returned to my program and reaches the
  3897.  this line...
  3898.  
  3899.  RESERVE
  3900.  
  3901.  that I get ERRROR WHILE RESERVE. Again, this only happens when I execute
  3902.  a program that reserves a portion of memory and KEEPS it. Non-TSR programs
  3903.  execute, terminal and return control to my program and I have NO problems
  3904.  whatsoever. I even have the same amount of free memory as I had BEFORE
  3905.  I ran the program. But when I run a TSR I guess RESERVE is trying to
  3906.  return the same amount of memory that I reserved, and since the TSR
  3907.  KEPT some of that memory, I'm getting the ERROR WHILE RESERVE. But I 
  3908.  don't know of any way to return ONLY the memory that is available. Can
  3909.  ANYONE out there help??
  3910.  ------------
  3911. Category 22,  Topic 3
  3912. Message 227       Sun Sep 22, 1991
  3913. J.EIDSVOOG1 [CodeHead]       at 14:40 EDT
  3914.  
  3915. Harry,
  3916.  
  3917. I'm glad to hear that you are aiming at res-independent operation. As a reward
  3918. <grin>, and for others that are interested, here's a list of the ST/TT
  3919. resolutions (they're listed on page 29 of the CodeKeys manual for those that
  3920. have it):
  3921.  
  3922.  Screen size 32,000:
  3923.   res 0 - ST Low  320x200 - 4 planes
  3924.   res 1 - ST Med  640x200 - 2 planes
  3925.   res 2 - ST High 640x400 - 1 plane
  3926.  
  3927.  Screen size 153,600:
  3928.   res 4 - TT Med  640x480 - 4 planes
  3929.   res 6 - TT High 1280x960- 1 plane
  3930.   res 7 - TT Low  320x480 - 8 planes
  3931.  
  3932. Note that TT Low has the highest Getrez number.  It's also a very strange
  3933. looking resolution, with a greater horizontal resolution than vertical.
  3934.  
  3935. Once again, folks, use these hard numbers only for your own reference (don't
  3936. let your program know they exist <grin>).  There may actually be occasion to
  3937. use this info, though.  For instance, in CodeKeys and MultiDesk Deluxe we use
  3938. the res number to determine which default file to load, thus allowing the user
  3939. to have different setups for different resolutions.  But we also look for a
  3940. default filename of CODEBIG or MULTIBIG if the resolution is larger than
  3941. 640x480 and it's not TT High.
  3942.  
  3943.      John Eidsvoog  /|\  Member of the IAAD
  3944.  CodeHead Software  \|/  Serving the Atari Community
  3945.  ------------
  3946. Category 22,  Topic 3
  3947. Message 228       Mon Sep 23, 1991
  3948. H.SARBER [RANGERST]          at 19:56 EDT
  3949.  
  3950.      John,
  3951.      Thanks for the numbers.  I wasn't aware that a TT gobbles up so much
  3952. memory for a screen.  Since I don't have a TT I didn't even think about it.
  3953.      I'm still working on the prelims for the flow charter.  Since I'm also
  3954. trying to remodel my bathroom it may be some time before a beta version shows
  3955. up.
  3956.  
  3957.      New question.  EXEC has the ability to load a program without running it.
  3958. How do you get the program to run after you load it?
  3959.  
  3960.      Harry
  3961.  
  3962.  ------------
  3963. Category 22,  Topic 3
  3964. Message 229       Mon Sep 23, 1991
  3965. J.EIDSVOOG1 [CodeHead]       at 21:00 EDT
  3966.  
  3967. Harry,
  3968.  
  3969. GFA's documentation of the EXEC call seems a bit skimpy.  I assume that EXEC
  3970. handles thing exactly the same as GEMDOS's P_exec but I haven't tested it. 
  3971. The following information is definitely valid for the P_exec call, though.
  3972.  
  3973. P_exec "load only" (mode 3) creates a base page, loads and relocates the
  3974. program, and returns the address of the basepage (in D0).  Mode 4 is "execute
  3975. only".  In this mode the command line pointer should point to the basepage
  3976. address that you wish to execute.  Mode 5 is "create basepage".  It is
  3977. possible to use mode 5 to create a basepage, insert the address of some
  3978. executable code into the "text segment address" (8 bytes into the basepage),
  3979. and use mode 4 to execute it.  Here are some examples (untested off the top of
  3980. my head):
  3981.  
  3982.  bp%=EXEC(3,"ARC.TTP","x TEST.ARC *.*","")  ! load ARC.TTP
  3983.  ~EXEC(4,"DOESN'T_MATTER",bp%,"")           ! execute it
  3984.  
  3985.  BLOAD "MODULE.OVL",buf%        ! load a piece of pc-relative code
  3986.                                 ! into a predetermined memory buffer
  3987.  bp%=EXEC(5,"DUMMY","","")      ! create basepage
  3988.  LONG{bp%+8}=buf%               ! insert address of code
  3989.  ~EXEC(4,"YO_CATS",bp%,"")      ! just go
  3990.  
  3991. Remember that code executed this way must terminate with a P_term.
  3992.  
  3993. John
  3994.  ------------
  3995. Category 22,  Topic 3
  3996. Message 230       Mon Sep 23, 1991
  3997. R.WATSON15 [Wayne Watson]    at 21:47 EDT
  3998.  
  3999. This is just a thought but, when your RESERVE memory in GFA (and possibly
  4000. others), GFA wants all that memory free again when you try to unreserve it.
  4001. When you try to run a TSR program, it will stay in memory (Terminate and Stay
  4002. Resident) thus not freeing up memory that was originally RESERVEd. You can
  4003. duplicate this (have the same results) if you:
  4004.  
  4005.   RESERVE -10240
  4006.   A%=MALLOC(4096)
  4007.   RESERVE
  4008.  
  4009.   GFA should respond with the same alert box. TSRs are normally ran at bootup.
  4010. GFA wants all the memory you reserved back when you try to un-reserve it.
  4011.  
  4012.  ------------
  4013. Category 22,  Topic 3
  4014. Message 231       Tue Sep 24, 1991
  4015. B.BILLJONES2 [Bill Jones]    at 06:03 EDT
  4016.  
  4017.   Hi,
  4018.  
  4019.         I'm writing a program that I want to be installed as an application. 
  4020. I'm looking at the BASEPAGE to determine the file I want to manipulate, and
  4021. that works fine.  I have a configuration file that will not load into my
  4022. program after I call it as an application. This is because GEM has changed my
  4023. default directory, to the directory the file I want to work on resides.  My
  4024. resource file, however, loads in just fine, and I use IF EXIST("PROGRAM.RSC")
  4025. to find it.
  4026.  
  4027.         Is there a way to around this dilemma?  Would the directory of my
  4028. program exist somewhere in the basepage?
  4029.  
  4030. Thanks!
  4031.  
  4032.  ------------
  4033. Category 22,  Topic 3
  4034. Message 232       Tue Sep 24, 1991
  4035. J.NESS [Jim]                 at 19:06 EDT
  4036.  
  4037. Bill -
  4038.  
  4039. There are probably a couple of ways to get this info.  One is to check the DTA
  4040. of the parent's BASEPAGE.  The parent would be the desktop, and its DTA should
  4041. contain the filename/path of the program it just executed - yours.
  4042.  
  4043. Another novel way would be to use the SHEL_GET() command, which returns the
  4044. entire contents of DESKTOP.INF, as it exists in ram. This, of course, contains
  4045. the installed application info you need in one of its lines, and you should be
  4046. able to decipher your home path from that.
  4047.  
  4048. One thing I found interesting about reading out this buffer is that it gives
  4049. you the CURRENT condition of the desktop, rather than the stored condition. 
  4050. So, it shows you what directory windows are currently open, what the desktop
  4051. colors are, etc.  And, you can change these within your program, with
  4052. SHEL_PUT().
  4053.  
  4054.                                   -JN
  4055.  ------------
  4056. Category 22,  Topic 3
  4057. Message 233       Wed Sep 25, 1991
  4058. J.EIDSVOOG1 [CodeHead]       at 05:13 EDT
  4059.  
  4060. Bill,
  4061.  
  4062. In TOS 1.4 and later, your command line will contain the full path. With
  4063. earlier TOSes, there's nothing you can do other than making sure the document
  4064. is in the same directory as the program, or using something that fixes this
  4065. problem like HotWire, which will add the path for you if the program is
  4066. installed in your HotWire menu (even if you double-click from the desktop).
  4067.  
  4068. John
  4069.  ------------
  4070. Category 22,  Topic 3
  4071. Message 234       Sun Sep 29, 1991
  4072. M.ALLEN16 [Michael]          (Forwarded) 
  4073.  
  4074. O.k.  I have been experiencing a problem with GFA Basic ver 3.5E.  I have a
  4075. 1040ST with TOS 1.4.  This bug is only active in a compiled program.  If you
  4076. try and print a string longer than 80 characters then the string is never
  4077. wrapped onto the next line rather jammed into the wall.  This also happens
  4078. when you use the FORM INPUT statement.  The form input statement when used
  4079. with the AS parameter and the string loaded to more than 80 characters.  I
  4080. have contacted GFA in MASS.  to report the problem and they said they would
  4081. pass it on.  Well, whatever that means...  The only way to fix the problem
  4082. that I have found is to run Neodesk (2.0).  The problem dissappears even after
  4083. you exit NeoDesk.  I thought maybe I had a TOS bug but I don't think so.  Here
  4084. is something that is easy to type in and will show the bug, that is if the bug
  4085. is not another TOS 1.4 bug.
  4086.  
  4087. CLS
  4088.  a$=STRING$(255,"F")  'Assign String
  4089.  PRINT a$             'Print string
  4090.  ~INP(2)              'Wait for keypress
  4091.  
  4092. Any help I could get would be appreciated.  Thanks Michael Allen
  4093.                                                    (M.ALLEN16)
  4094.  ------------
  4095. Category 22,  Topic 3
  4096. Message 235       Sun Sep 29, 1991
  4097. J.NESS [Jim]                 at 21:40 EDT
  4098.  
  4099. Michael -
  4100.  
  4101. Try adding:
  4102.  
  4103. PRINT chr$(27);chr$(118)
  4104.  
  4105. to your program, before you print anything else.  Those two characters make up
  4106. the VT52 "ESC v" command, which turns on the word wrap when printing to the
  4107. standard TOS screen.
  4108.  
  4109. I have not tested this, but I am fairly confident that it will do the trick. 
  4110. It looks as though the default condition is "word wrap OFF," and that you need
  4111. to explicitely turn it on.
  4112.  
  4113. When a window has been displayed by GFA, some flag is set, and the PRINT
  4114. command changes to a GEM format, and will automatically word wrap.  The word
  4115. wrap and string print location are automatically controlled by underlying GFA
  4116. routines.
  4117.  
  4118.                                   -JN
  4119.  
  4120.  
  4121.  ------------
  4122. Category 22,  Topic 3
  4123. Message 236       Sun Sep 29, 1991
  4124. J.EIDSVOOG1 [CodeHead]       at 23:07 EDT
  4125.  
  4126. Michael,
  4127.  
  4128. I assume that your 80 character, no-wrap problem is with screen display.  It's
  4129. not a bug, it's a feature.  There are two VT-52 command strings which affect
  4130. the way characters are handled once the right edge of the screen is reached:
  4131.  
  4132.   Esc "v" - Wrap at end of line and scroll up if necessary
  4133.   Esc "w" - Overprint line end character with the next character
  4134.  
  4135. I would assume that when you run Neodesk it is configuring VT-52 with the Esc
  4136. "v" command and that's why it appears to fix your problem. To solve it in your
  4137. own code you can just add the line (before doing your printing):
  4138.  
  4139.  PRINT CHR$(27);"v";
  4140.  
  4141. There are many other useful VT-52 commands as well.  In my GFA manual, they're
  4142. on page 476.  Take a look.
  4143.  
  4144.      John Eidsvoog  /|\  Member of the IAAD
  4145.  CodeHead Software  \|/  Serving the Atari Community
  4146.  ------------
  4147. Category 22,  Topic 3
  4148. Message 237       Tue Oct 01, 1991
  4149. D.SEBERG [Ice Berg]          at 03:06 EDT
  4150.  
  4151.     I agree whole heartedly about the usefulness of the VT-52 commands, I use
  4152. them ALOT in most all of my programs.
  4153.  
  4154.     An alternate method of using the VT-52 commands is to use them in
  4155. conjunction with the OUT command.  The following lines of code are
  4156. functionally equivalent:
  4157.  
  4158.     PRINT CHR$(27);"v";
  4159.     OUT 2,27,118          ! Where 118 is the ascii value of "v"
  4160.  
  4161.     The code, to me, just seems to be a bit more organized when using the OUT
  4162. command.  It's just an alternative though, everything works the same.
  4163.  
  4164.          Dave
  4165.  
  4166.  
  4167.  ------------
  4168. Category 22,  Topic 3
  4169. Message 238       Tue Oct 01, 1991
  4170. B.BILLJONES2 [Bill Jones]    at 23:06 EDT
  4171.  
  4172.   A big thank you to Jim N. and John E. for giving me some sound ideas
  4173. cocerning Basepages and where to find some hidden directory info!
  4174.  
  4175. I'm in need of some wizzard assistance in a similar area.  I'm calling the
  4176. program as an installed application, looking at the basepage and all that.  It
  4177. works fine.  However, when I try to do directory search using FSFIRST() and
  4178. FSNEXT() starting at BASEPAGE 128, I find that it gets confused because of the
  4179. commandline being in there I guess.  I'm searching to see if there is a folder
  4180. present when I want to write one.  I'm using CHAR{BASEPAGE+149} AND 16 to see
  4181. if the folder in my search parameter is indeed there, and true. (printing the
  4182. BASEPAGE+158 to get a look at it if I want)
  4183.  
  4184. The short routine (straight out of the ANTIC manual... typos fixed) will not
  4185. work at all when calling the program as an installed application with command
  4186. line present.
  4187.  
  4188. Any suggestions?  Many thanks in advance.  Help in this area is invaluable,
  4189. and I'm just starting to actually "ask" questions instead of strickly reading
  4190. the base (though that's informative also).
  4191.  
  4192. Bill Jones
  4193.  
  4194.  
  4195.  ------------
  4196. Category 22,  Topic 3
  4197. Message 239       Wed Oct 02, 1991
  4198. J.EIDSVOOG1 [CodeHead]       at 10:04 EDT
  4199.  
  4200. Dave,
  4201.  
  4202. Yes, using OUT is another alternative.  Also, how about something like this:
  4203.  
  4204.  ! Init section
  4205.  no_wrap$=CHR$(27)+"v"
  4206.  
  4207.  ! Later
  4208.  PRINT no_wrap$;
  4209.  
  4210. You could define a number of the other VT-52 commands this way, too.
  4211.  
  4212. John
  4213.  ------------
  4214. Category 22,  Topic 3
  4215. Message 240       Wed Oct 02, 1991
  4216. J.EIDSVOOG1 [CodeHead]       at 11:36 EDT
  4217.  
  4218. Bill,
  4219.  
  4220. I'm not sure why GFA has always used the command line area in their examples
  4221. for Fsfirst/next.  Maybe it's bcause it's there and it's (seemingly)
  4222. available.  My suggestion is to just set your own DTA.  I know that I've used
  4223. "dta$=STRING$(44,0)" before, although this might be assuming that a string
  4224. will always start at an even address (if the DTA really requires this, I don't
  4225. know).  It might be safer to use "DIM dta%(11)".  This will create a long word
  4226. array.
  4227.  
  4228. After that, just set DTA to "V:dta$" or "V:dta%(0)".  You won't have any more
  4229. conflicts with your command line.
  4230.  
  4231. John
  4232.  ------------
  4233. Category 22,  Topic 3
  4234. Message 241       Wed Oct 02, 1991
  4235. B.BILLJONES2 [Bill Jones]    at 19:41 EDT
  4236.  
  4237. Atari-ST RoundTable Category 22,  Topic 3 Message 240       Wed Oct 02, 1991
  4238. J.EIDSVOOG1 [CodeHead]       at 11:36 EDT
  4239.  
  4240. Bill,
  4241.  
  4242.  
  4243. JE |After that, just set DTA to "V:dta$" or "V:dta%(0)".  You won't have any
  4244. JE |more conflicts with your command line.
  4245.  
  4246. John E
  4247.  
  4248.         Thanks again.  It never occurred to me you could do this.  It does
  4249. make sense actually "seeing" it before me.  While we're talking about the
  4250. BASEPAGE, when writing a program that accesses it should I be concerned how
  4251. other programs like HOTWIRE might possibly deal with it?  I know you are
  4252. supposed to be able to pass command lines to programs and such.
  4253.  
  4254.         Many thanks!
  4255.  
  4256.         Bill
  4257.  
  4258.  ------------
  4259. Category 22,  Topic 3
  4260. Message 243       Thu Oct 03, 1991
  4261. ELROD                        at 07:28 EDT
  4262.  
  4263. Recently I asked about making graphics in a GFA program faster. (See message
  4264. #188)
  4265.  
  4266. I have some more questions.  Someone mentioned using the BITBLT command of GFA
  4267. Basic instead of the screen GET & PUT, as it is faster.  This is great idea,
  4268. however, I can not figure out how to use the BITBLT command. The GFA manual
  4269. gives a small demo (page 359-361 in the 3.0 manual), but all I really need is
  4270. the equiv of:
  4271.  
  4272.      GET x,y,x2,y2,item$
  4273.      PUT x,y,item$
  4274.  
  4275. in using the BITBLT command.  Please let me know.
  4276.  
  4277.  ------------
  4278. Category 22,  Topic 3
  4279. Message 244       Thu Oct 03, 1991
  4280. D.SEBERG [Ice Berg]          at 23:49 EDT
  4281.  
  4282.     John,
  4283.  
  4284.     Yep!, that's another alternative and an especially good one if
  4285. readablility of the code is necessary.
  4286.  
  4287.          Dave
  4288.  
  4289.  
  4290.  ------------
  4291. Category 22,  Topic 3
  4292. Message 245       Fri Oct 04, 1991
  4293. J.EIDSVOOG1 [CodeHead]       at 02:09 EDT
  4294.  
  4295. Bill,
  4296.  
  4297. As long as your command line parsing is able to handle both full pathnames and
  4298. pathless filenames you needn't worry about any special handling for HotWire,
  4299. etc.  The correct way to do it is also the easiest way to do it.  The standard
  4300. thing for an installed application to do is load the file passed on the
  4301. command line. Shells will either pass a user defined command line or else the
  4302. filename of the document starting the application.  If you want to do more
  4303. complex things, you can create a command line syntax.  Otherwise you'll only
  4304. be concerned with a filename (or multiple filenames).  If you're trying to
  4305. open a file, don't bother doing any parsing.  Just use the name given to you,
  4306. short or long:
  4307.  
  4308.  f$=CHAR{BASEPAGE+129}
  4309.  IF f$<>""
  4310.    OPEN "I",#1,f$
  4311.    etc....
  4312.  ENDIF
  4313.  
  4314. As for HotWire's special handling, it involves adding the full path to the
  4315. command line on TOSes which did not provide it, and HotWire let's you choose
  4316. either method.
  4317.  
  4318. John
  4319.  ------------
  4320. Category 22,  Topic 3
  4321. Message 246       Sun Oct 06, 1991
  4322. JWC-OEO [Jon]                at 22:44 EDT
  4323.  
  4324.   Hello everyone,
  4325.  
  4326. I wonder if someone might be able to tell me if the location for turning the
  4327. key click on/off has changed in later versions of TOS (beyond v1.4).  SPOKE
  4328. &H484,BCLR(PEEK(&H484),0) as per the GFA BASIC 3 manual from Michtron turns
  4329. the key click off my MEGA 2/TOS 1.4... will it do the same on STE's and MEGA
  4330. STE's?
  4331.  
  4332. Also, does XBIOS 35 have the same effect on the key repeat and delay rates
  4333. with TOS>1.4 as it does with earlier versions?
  4334.  
  4335. Finally, I will be needing someone with a STE and/or a MEGA STE to do a quick
  4336. BETA test on a silly PD arcade game I am writing.  Let me know if you would be
  4337. interested.
  4338.  
  4339. Jon
  4340.  
  4341.  ------------
  4342. Category 22,  Topic 3
  4343. Message 247       Sun Oct 06, 1991
  4344. D.A.BRUMLEVE [kidprgs]       at 22:53 EDT
  4345.  
  4346.  Jon, I've tried the code on a 1040STe and it does indeed turn the
  4347.  keyclick off/on.  I have not tried it on a MegaSTe or TT; perhaps
  4348.  someone else could elaborate, but I suspect it would work fine.
  4349.  XBIOS(35...) does set the key repeat and delay rates on the 1040STe
  4350.  also.  Ask me when I feel better, and I'll be able to tell you if
  4351.  this stuff all works on the MegaSTe.  I just got a loaner from Atari
  4352.  in order to provide complete compatibility for Kidpublisher Professional,
  4353.  but I've been too sick to get much done with it yet.  I use both these
  4354.  routines in that program.
  4355.  ------------
  4356. Category 22,  Topic 3
  4357. Message 248       Mon Oct 07, 1991
  4358. T2.LTD [Rick Taylor]         at 09:42 EDT
  4359.  
  4360. Hope you get to feeling better soon, Dot!
  4361.  
  4362. --Rick
  4363.  ------------
  4364. Category 22,  Topic 3
  4365. Message 249       Mon Oct 07, 1991
  4366. J.EIDSVOOG1 [CodeHead]       at 12:47 EDT
  4367.  
  4368. Jon,
  4369.  
  4370. The variables on the $400 page have been documented by Atari since day one.  I
  4371. don't think they'll be changing them.  You should be able to rely on &484 on
  4372. all future versions of TOS.
  4373.  
  4374. Of course, they also documented line_A and have since retracted it and told us
  4375. not to use it.  Lately there's even a widespread believe that if a program is
  4376. not "VDI-compliant", it is somehow programmed incorrectly.
  4377.  
  4378. So who knows?  Maybe someday down the road, people will be saying to you, "Oh,
  4379. are you still using that 400 page stuff?  No wonder your software crashes on
  4380. the new mind-link interface".  (Just kidding, I think you're safe <grin>).
  4381.  
  4382. John
  4383.  ------------
  4384.