home *** CD-ROM | disk | FTP | other *** search
/ RBBS in a Box Volume 1 #3.1 / RBBSIABOX31.cdr / basw / bascom9.fix < prev    next >
Text File  |  1985-03-05  |  27KB  |  606 lines

  1.                  B A S I C   C O M P I L E R  P A T C H E S
  2.  
  3.          **********************************************************
  4.          ***   This information was derived from the IBM PCSS   ***
  5.          ***             system in BOCA RATON, FL               ***
  6.          ***                                                    ***
  7.          ***  Origional file from the  Charlotte, NC  PC-BBS    ***
  8.          ***     1200/300  N/8/1        (704) 365-4311          ***
  9.          **********************************************************
  10.  
  11. UPDATED TO INCLUDE PATCHES 8 AND 9 FROM A MORE RECENT PRINTED `SCRIPT'.
  12.     2/1/84  JEFF BARTON
  13.  
  14. These  patches  are  provided  to fix the following known bugs with the IBM
  15. Basic Compiler.
  16.  
  17. 1.  The  use  of CHAIN with COMMON from a large program to a small program,
  18. both with large data areas can cause an "Out of MEMORY Error"
  19.  
  20. 2.  The  use  of  INPUT# with quotes strings of length 1 may produce random
  21. results.
  22.  
  23. 3.   When using array calculations such as:
  24.                  T(J,L)=G(J)*E(L)+T(J+1,T)
  25.      an internal error may result.
  26.  
  27. 4. MOD does not return the correct value under certain conditions.
  28.  
  29. 5.  When  using  several  LEFT$, RIGHT$ or MID$'s in string calculations, a
  30. "string formula too complex" error is received.
  31.  
  32. 6. COMMUNICATION Buffers are destroyed when CHAINing to another program.
  33.  
  34. 7.   BLOAD may fail with an "input past end".
  35.  
  36.          APPLY THESE PATCHES USING DOS 1.1 ONLY!!!
  37.          -----------------------------------------
  38.  
  39. Sept 1, 1983
  40.      Following  is  the complete set of Basic Compiler Patches. for version
  41. 1.0. These will be updated as needed, the date will be in the first line of
  42. the  text.  Before starting, boot up DOS 1.1 on your machine. These patches
  43. can  not  be  installed properly with any other version of DOS. Use DOS 1.1
  44. throughout  the  procedure.  If you are fast, it will take you about 1/2 to
  45. 3/4  hour to install these patches. Be certain that you are using a back-up
  46. diskette, not the originals. We all make mistakes, and it is MUCH easier to
  47. start  over  with another diskette than to try to reconstruct damaged data.
  48. When  you  are done, be sure to note on the label that these diskettes have
  49. been patched, and the date the patch was installed.
  50.  
  51.     NOTE:  Patches  8  and  9  have been added since Sept. '83. Patch 6 and
  52. parts of other patches are superceded by these additions.
  53.     8.  Patched  BASRUN.EXE  can  produce  errors  with  the  REST and LSET
  54. commands.  Patch 8 also allows compiled programs to work with the DOS PRINT
  55. command and CHAIN to COM FILES.
  56.     9.  Patch  9  allows  the compiler to correctly detect duplicate COMMON
  57. definition of arrays at compile time.   J.B.
  58.  
  59.         ============================================================
  60. UPDATE PROCEDURE
  61.      The  following  is  a  "script"  of the procedure to update your BASIC
  62. Compiler  Library  and  Basic diskettes. Follow it carefully. If you make a
  63. mistake don't panic, just start again.
  64.  
  65.      First,  you will make an exact copy of your BASIC Compiler Library and
  66. Basic  diskettes  using  the  DOS  DISKCOPY  command.  You  need  two blank
  67. formatted diskettes. Put your DOS diskette in Drive A and a blank formatted
  68. diskette  in  Drive B. ALL YOUR INPUTS ARE IN <>'s, as in <DISKCOPY A: B:>.
  69. Do NOT type the <>'s.
  70.          A><DISKCOPY A: B:><enter>
  71. This command will send the following messages to the screen:
  72.          Insert source diskette in drive A:
  73.          Insert target diskette in drive B:
  74.          Strike any key when ready
  75. You  must  insert the MASTER copy of the BASIC Compiler Library diskette in
  76. drive  A.  Anything  else  will NOT work. This is your source diskette. You
  77. must  insert  the BLANK FORMATTED diskette in drive B. (This is your target
  78. diskette.) Press the enter key to start the disk copy.
  79. The following message will appear on the screen:
  80.          Copy another (Y/N)?<Y>
  81.  
  82. The following message will appear on the screen:
  83.          Insert source diskette in drive A:
  84.          Insert target diskette in drive B:
  85.          Strike any key when ready
  86. Remove  your  Master Library diskette from drive A and your copy from drive
  87. B.  Label  your  copy  "BASIC  COMPILER  LIBRARY DISKETTE - UPDATED WORKING
  88. COPY".  Insert  your  Basic  Compiler  Basic  diskette in drive A, and your
  89. second  formatted blank diskette in drive B. Strike the return key to start
  90. the copy.
  91. The following message will appear on the screen:
  92.          Copy another (Y/N)?<N>
  93. Remove  your Master Basic diskette from drive A and your copy from drive B.
  94. Label  your  copy  "BASIC  COMPILER BASIC DISKETTE - UPDATED WORKING COPY".
  95. Place your DOS diskette back in drive A.
  96.         ========== USING DEBUG TO UPDATE YOUR DISKETTE =============
  97.      The  DEBUG  prompt  is "-". Everything that you type will be after the
  98. "-"  or  after the ".". Immediately after entering the hex digits following
  99. the "." prompts, you must press the space bar to move to the next byte. The
  100. places  that  you  must  press the ENTER key are indicated by <enter>. Note
  101. that  the  "xxxx" in the data displayed will be filled with the appropriate
  102. memory address.
  103.         ************************************************************
  104.         ******  *  *  *  *  *  *  *  1  *  *  *  *  *  *  *  *******
  105.         ************************************************************
  106.         ==================== PROBLEM DESCRIPTION ===================
  107.      The use of CHAIN with COMMON when CHAINing from a large program with a
  108. large  data  area  to a small program with a large data area may produce an
  109. incorrect 'Out of memory' error.
  110.         ====================== PROBLEM SOLUTION ====================
  111. UPDATING BASRUN.EXE
  112.      The following procedure will update the file BASRUN.EXE. Remember that
  113. the  DOS  diskette  should  be  in  drive A and the diskette labeled "BASIC
  114. COMPILER  LIBRARY  -  UPDATED WORKING COPY" should be in drive B. If at any
  115. time  you  do  not  see  the  data exactly as it appears on this procedure,
  116. (ignore  (cont'd)s) you did something wrong and you should start again. You
  117. can  start again by typing Q followed by ENTER. This returns you to DOS. Be
  118. certain  that  you  are on drive B:; you should see a B> prompt. If you see
  119. anything else then type B: to switch to your B: drive.
  120.  
  121. B><A:DEBUG BASRUN.EXE><enter>
  122. -<R><enter>
  123. AX=0000 BX=0000 CX=79AA DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
  124. DS=04B5 ES=04B5 SS=04C5 CS=057B IP=0000 NV UP DI PL NZ NA PO NC
  125. 057B:0000  1E           PUSH    DS
  126. -<Q><enter>
  127. B><RENAME BASRUN.EXE BASRUN.TMP><enter>
  128.  
  129.      In  the  listing  above, notice that the value of CS=057B. This is the
  130. value  that  will be used in the next step. Since CS=057B, the command that
  131. is used with Debug is:
  132.      E57B:0CF1
  133.  
  134. The  value  of  the CS register is always used with this command, it is not
  135. NECESSARILY going to be 057B.
  136.  
  137. B><A:DEBUG BASRUN.TMP><enter>
  138. -<E57B:0CF1><enter>
  139. xxxx:0CF1 3B.<72> C1.<09> 77.<3B> 03.<C1> E9.<77> CA.<05> FB.<E9>
  140. xxxx:0CF8 A3.<CA> 7A.<FB> 07.<00> 0B.<00> FF.<A3> 74.<7A> 38.<07>
  141. -<W><enter>
  142. Writing 7C00 bytes
  143. -<Q><enter>
  144.  
  145.     NOTE:  If the above process fails to to produce the sequence shown, try
  146. the  DEBUG  command:  -<E1951><enter>.  If the contents of address 1951 are
  147. reported to be 3B, proceed with the rest of the patch. I could not find the
  148. sequence of original data by following the above instructions, but a search
  149. for the sequence produced results at address 1951. J.B.
  150.  
  151.      Leave  your  Working  Library  diskette  in  drive B, and your DOS 1.1
  152. diskette in drive A: for the following update installation. CONTINUE TO #2
  153.  
  154.         ************************************************************
  155.         ******  *  *  *  *  *  *  *  2  *  *  *  *  *  *  *  *******
  156.         ************************************************************
  157. See Basic Compiler Patches #1 for setup procedure.
  158.         ==================== PROBLEM DESCRIPTION ===================
  159.      The  use  of  the INPUT# statement with quoted strings of length 1 may
  160. produce random results.
  161.         ====================== PROBLEM SOLUTION ====================
  162.      Use the procedure described below to update your IBM Personal Computer
  163. BASIC Compiler.
  164.  
  165. UPDATING BASRUN.EXE
  166.  
  167. B><A:DEBUG BASRUN.TMP><enter>
  168. -<E6236><enter>
  169. xxxx:6236  3C.<B1> 22.<FF>
  170. xxxx:6238 75.<3C> 10.<22> 80.<75> FA.<10> 2C.<80> 75.<FA> 0B.<2C> E8.<75>
  171. xxxx:6240 7E.<0B> 00.<E8> BA.<7C> 22.<00> 22.<BA> E8.<22> 48.<22> D4.<E8>
  172. xxxx:6248  72.<46> 40.<D4> B1.<72> FF.<3E>
  173. -<W><enter>
  174. Writing 7C00 bytes
  175. -<Q><enter>
  176. B><RENAME BASRUN.TMP BASRUN.EXE><enter>
  177.  
  178. UPDATING BASCOM.LIB:
  179.  
  180.      The following procedure will update the file BASCOM.LIB. Remember that
  181. the  DOS diskette should be in drive A and the disk labeled "BASIC COMPILER
  182. LIBRARY DISKETTE - UPDATED WORKING COPY" should be in drive B.
  183.      If  at  any time you do not see the data exactly as it appears on this
  184. procedure,  you  did  something  wrong  and you should start again. You can
  185. start again by typing Q followed by ENTER. This returns you to DOS.
  186.  
  187. B><A:DEBUG BASCOM.LIB><enter>
  188. -<ECBD7><ENTER>
  189. -xxxx:CBD7  3C.<B1>
  190. -xxxx:CBD8 22.<FF> 75.<3C> 10.<22> 80.<75> FA.<10> 2C.<80> 75.<FA> 0B.<2C>
  191. -xxxx:CBE0 E8.<75> 00.<0B> 00.<E8> BA.<00> 22.<00> 22.<BA> E8.<22> 00.<22>
  192. -xxxx:CBE8  00.<E8> 72.<00> 40.<00> B1.<72> FF.<3E>
  193. -<ECCA1><enter>
  194. xxxx:CCA1  39.<3B>
  195. -<ECCA8><enter>
  196. -xxxx:CCA8  3F.<41>
  197. -<W><enter>
  198. Writing 19600 bytes
  199. -<Q><enter>
  200. B>
  201.  
  202.      You  are  now  back  in  DOS. You should compile and run the following
  203. program to verify that you applied the update correctly. Be sure to compile
  204. and  run  the  program using the diskette labeled "BASIC COMPILER LIBRARY -
  205. UPDATED  WORKING  COPY"  to  verify  that  the  updates  to both files work
  206. properly.
  207.  
  208. 10 OPEN "TSTPROG" FOR OUTPUT AS #1
  209. 20 FOR I=1 TO 10
  210. 30 WRITE #1,I,"A","BB","CCC","DDDD"
  211. 40 NEXT I
  212. 50 CLOSE
  213. 60 OPEN "TSTPROG" FOR INPUT AS #1
  214. 70 IF EOF(1) THEN END
  215. 80 INPUT #1,J,A$,B$,C$,D$
  216. 90 PRINT J;A$;B$;C$;D$
  217. 100 GOTO 70
  218.  
  219. This program should print :
  220.       1 ABBCCCDDDD
  221.       2 ABBCCCDDDD
  222.       3 ABBCCCDDDD
  223.       4 ABBCCCDDDD
  224.       5 ABBCCCDDDD
  225.       6 ABBCCCDDDD
  226.       7 ABBCCCDDDD
  227.       8 ABBCCCDDDD
  228.       9 ABBCCCDDDD
  229.      10 ABBCCCDDDD
  230.  
  231. Continue to #3
  232.  
  233.         ************************************************************
  234.         ******  *  *  *  *  *  *  *  3  *  *  *  *  *  *  *  *******
  235.         ************************************************************
  236. See Basic Compiler Patches #1 for setup procedure.
  237.         ==================== PROBLEM DESCRIPTION ===================
  238. When using arrays and making calculations such as :
  239.           T(J,L)=G(J)*E(L)+T(J+1,I)
  240. the compiler may give an Internal Error or the calculation may be performed
  241. incorrectly.  Use  the  following  procedure  to  update BASCOM.COM on your
  242. "BASIC COMPILER BASIC - UPDATED WORKING COPY" diskette.
  243.         ===================== PROBLEM SOLUTION =====================
  244.      The  following  is a "script" of the procedure to patch your diskette.
  245. Follow  it  carefully. If you should make a mistake don't panic. Just start
  246. again.  All  user  inputs are in <>'s. Do NOT type the <>'s. Make sure your
  247. DOS  1.1  diskette  is in drive A and your diskette labeled "BASIC COMPILER
  248. BASIC - UPDATED WORKING COPY" is in drive B.
  249.  
  250.      Just a reminder: The DEBUG prompt is "-". All the things that you type
  251. are  after  the  "-"  prompt  or  after  the  "." prompt. Immediately after
  252. entering the hex digits following the "." prompts, you must press the space
  253. bar  to  move  to  the  next byte. When you are entering data after the "-"
  254. prompts  or  entering  the last set of hex digits on a line, you must press
  255. the  ENTER  key.  Note  that  the "xxxx" in the data displayed line will be
  256. filled with the appropriate memory address.
  257.  
  258. A><DEBUG>
  259. -<NB:BASCOM.COM>
  260. -<L>
  261. -<D8AB3 L1>
  262. xxxx:8AB3 0C
  263.  
  264.      If  you do not see the above line of data after the "D3AB3 L1" command
  265. then  you  did  something  wrong  and you should start again. You can start
  266. again by typing Q followed by ENTER. This returns you to DOS.
  267.  
  268. -<E8AB3>
  269. 04B5:8AB3 0C.<1F>
  270. -<W>
  271. Writing A280 bytes
  272. -<Q>
  273.  
  274.      You  are  now  back  in DOS. Run the program below to be sure that you
  275. have updated your diskette correctly.
  276.  
  277. 10 DEFINT D,F,N
  278. 20 DSD=0
  279. 30 FOR N=0 TO 7
  280. 40 FSEC=FSEC+1
  281. 50 NEXT
  282. 60 PRINT "The result is ";512*(1-DSD)*FSEC,"The result should be 4096"
  283.  
  284. CONTINUE TO #4
  285.  
  286.         ************************************************************
  287.         ******  *  *  *  *  *  *  *  4  *  *  *  *  *  *  *  *******
  288.         ************************************************************
  289. See Basic Compiler Patches #1 for setup procedure.
  290.         ==================== PROBLEM DESCRIPTION ===================
  291. MOD does not return the correct value under the following conditions:
  292.  
  293. (1) Using a binary noncommutative operator such as MOD, IMP,
  294.     or \ (integer division with the backslash)
  295. (2) The left operand is simpler than the right operand
  296. (3) The result is required in the BX register
  297.  
  298. The following example shows the problem:
  299.  
  300.      10 A=3: B=4: C=10
  301.      20 PRINT "C MOD (A + B) = "; C MOD (A + B)
  302.  
  303.      RUN
  304.  
  305.      C MOD (A + B) = 7
  306.  
  307. In  this  example  the  result  of  the  operation  will  always be (A + B)
  308. regardless of what the true result should be. So in general the problem is:
  309.  
  310.              A MOD (B + C) = (B + C)
  311.         ====================== PROBLEM SOLUTION ====================
  312.      Use  the procedure described below to update your IBM diskette labeled
  313. "BASIC COMPILER BASIC - UPDATED WORKING COPY".
  314.  
  315. UPDATING BASCOM.COM
  316.      The following procedure will update the file BASCOM.COM. Remember that
  317. the  DOS  1.1 diskette should be in drive A and the diskette labeled "BASIC
  318. COMPILER BASIC - UPDATED WORKING COPY" should be in drive B. If at any time
  319. you  do  not  see the data exactly as it appears on this procedure, you did
  320. something wrong and you should start again. You can start again by typing Q
  321. followed by ENTER. This returns you to DOS.
  322.  
  323. B><A:DEBUG BASCOM.COM><enter>
  324. -<E7450><enter>
  325.  
  326. xxxx:7450  F6.<86> 87.<47> 02.<02> 00.<24> 08.<08> <enter>
  327.  
  328. -<W><enter>
  329. Writing A280 bytes
  330. -<Q><enter>
  331.  
  332. CONTINUE TO #5
  333.  
  334.         ************************************************************
  335.         ******  *  *  *  *  *  *  *  5  *  *  *  *  *  *  *  *******
  336.         ************************************************************
  337. See Basic Compiler Patches #1 for setup procedure.
  338.         ==================== PROBLEM DESCRIPTION ===================
  339.      When  using several LEFT$, RIGHT$, or MID$'s in string calculations, a
  340. "string formula too complex" error is received. The error occurs when using
  341. a  null  string.  Use  the  procedure  described  below  to update your IBM
  342. Personal Computer BASIC Compiler version 1.0.
  343.         ===================== PROBLEM SOLUTION =====================
  344.      The  following  is a "script" of the procedure to update your diskette
  345. labeled  "BASIC  COMPILER  LIBRARY  - UPDATED WORKING COPY". This procedure
  346. will  be  used to update BASCOM.LIB and BASRUN.EXE. Follow it carefully. If
  347. you  make  a  mistake  don't  panic,  just  start  again. Remove your BASIC
  348. diskette  from  drive B and insert your LIBRARY diskette. Be sure that your
  349. DOS 1.1 diskette is still in drive A.
  350.  
  351.      Just  a reminder: If at any time you do not see the data exactly as it
  352. appears  on  this  procedure,  you did something wrong and you should start
  353. again. You can type Q followed by ENTER to return to DOS and start again.
  354.      The  DEBUG  Search  Command  (-S) appears to ensure the procedure will
  355. will  be  inserted  in the correct place. Use the spacebar to move from one
  356. field  to  the  next  when you make no entry into that field. The following
  357. procedure will update the file BASCOM.LIB.
  358.  
  359. B><A:DEBUG BASCOM.LIB><enter>
  360. -<S1000:0 FFFF C0 01 02 02><enter>
  361. 1000:****                 <-----use this address (****) next
  362. -<E1000:****><enter>
  363. 1000:****  C0.<C8>
  364. -<S1000:**** FFFF BB 00 00 C3 21><enter>
  365. 1000:$$$$                 <-----use this address ($$$$) next
  366. -<E1000:$$$$><enter>
  367. 1000:$$$$ BB.<53> 00.<BB> 00. C3.<00>
  368.  
  369. 1000:xxxx 21.<B1>
  370. -<S1000:$$$$  FFFF  C1  16  01  01  CF><enter>
  371. 1000:@@@@                 <-----use this address (@@@@) next
  372. -<E1000:@@@@><enter>
  373. 1000:@@@@  C1.<C2>  16.    01.    01.   CF.<CE>
  374. -<S1000:@@@@  FFFF 8A  02  00 00 74><enter>
  375. 1000:####                 <-----use this address (####) next
  376. 1000:xxxx
  377. 1000:xxxx ...
  378. -<E1000:####>             <-----from above
  379. 1000:#### 8A.<A0> 02.<0C> 00.<00> 00.<01> 74.<C0>
  380. 1000:xxxx 20.<01> 4D.<5B> 4A.<E8> 5A.<00> 20.<00> 4D.<BB> 4A.<00> 5A.<00>
  381. 1000:xxxx 20.<C3> 4D.<D1> 4A.<9C> 5A.<0B> 20.<00> 4D.<84> 4A.<02> 5A.<06>
  382. 1000:xxxx 20.<01> 4D.<04> 4A.<C4> 5A.<05> 20.<16> 4D.<01> 4A.<01> 5A.<E7>
  383. 1000:xxxx 20.<8A> 4D.<02> 4A.<00> 5A.<00> 20.<74>
  384. -<W><enter
  385. Writing 19600 bytes
  386. -<Q><enter>
  387.  
  388. UPDATING BASRUN.EXE
  389.     NOTE:  The following procedure will update the file BASRUN.EXE, BUT the
  390. patch  will be undone by the procedure in patch 8. It is suggested that you
  391. omit  these  steps. If you do try them, but do not get the sequences shown,
  392. try the first patch at 567A and the second at 56FD with DEBUG commands:
  393. -<E567A><enter> and -<E56FD><enter>. Note that these are the addresses used
  394. in patch 8 and the data is restored to the condition before this patch.J.B.
  395.  
  396. B><A:DEBUG BASRUN.EXE><enter>
  397. -<R><enter>
  398. AX=0000 BX=0000 CX=79AA DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
  399. DS=04B5 EX=04B5 SS=04C5 CS=XXXX IP=0000 NV UP DI PL NZ NA C PO NC
  400. 047B:0000 1E            PUSH    DS
  401. -<Q><enter>
  402.      In the listing above, notice that the value of CS=XXXX. Whatever value
  403. is  in  CS  will  be  used  in  the next step. For example, if the value of
  404. CS=05A1, then the first command that is used with DEBUG is <E05A1:4A1A>
  405. B><RENAME BASRUN.EXE BASRUN.TMP><enter>
  406. B><A:DEBUG BASRUN.TMP><enter>
  407. -<EXXXX:4A1A><enter>
  408. xxxx:4A1A  BB.<E9>  C6.<80><enter>
  409. -<EXXXX:4A9D><enter>
  410. XXXX:4A9D  XX.<E8>  XX.<7A>  XX.<E5>
  411. XXXX:4AA0  XX.<BB>  XX.<C6>  XX.<00>  XX.<C3>
  412. -<W>
  413. Writing 7C00 bytes
  414. -<Q>
  415.  
  416. CONTINUE TO #6
  417.  
  418.         ************************************************************
  419.         ******  *  *  *  *  *  *  *  6  *  *  *  *  *  *  *  *******
  420.         ************************************************************
  421. See Basic Compiler Patches #1  for setup procedure.
  422.         ==================== PROBLEM DESCRIPTION ===================
  423.      It is possible for COMM buffers to be destroyed when chaining. If your
  424. program opens data files and COMM files and then chains to another program,
  425. the  COMM  file will be closed. Use the procedure described below to update
  426. your  IBM  PC  Basic Compiler. Also note that the integrity of COMM buffers
  427. can  be  guaranteed  only  if they are opened before any other files in the
  428. program.
  429.     NOTE:  Before  you  do  this  extensive  patch,  see  patch 8. The same
  430. addresses  are  referenced and the data is restored to the condition before
  431. this patch. It is suggested that this patch be skipped. J.B.
  432.         ====================== PROBLEM SOLUTION ====================
  433.      The  following  procedure  will be used to update your "Basic Compiler
  434. Library - Updated Working Copy" diskette. If you make a mistake, just start
  435. again.  The  DOS  diskette  should  be  in drive A: and the "Basic Compiler
  436. Library - Updated Working Copy" diskette in drive B:
  437.  
  438. B><A:DEBUG BASRUN.TMP><enter>
  439. -<E1BE6><enter>
  440. xxxx:1BE6 52.<2C> 1C.<3B><enter>
  441. -<E2120><enter>
  442. xxxx:2120 8E.<E8> 1E.<00> 10.<36> 05.<90><enter>
  443. -<E5714><enter>
  444. xxxx:5714 8B.<50> F3.<98> 58.<D1> 5B.<E0>
  445. xxxx:5718 5A.<93> 59.<2E> E8.<8C> 5D.<9F> E5.<B8> CB.<48> 51.<93> 52.<58>
  446. xxxx:5720 53.<E9> 50.<17> E8.<E1> 10.<2E> 00.<8E> 91.<9D>8 F3.<A8> A4.<48>
  447. xxxx:5728 91.<C3><enter>
  448. -<W><enter>
  449. Writing 7C00 bytes
  450. -<Q><enter>
  451.  
  452. CONTINUE TO #7
  453.  
  454.         ************************************************************
  455.         ******  *  *  *  *  *  *  *  7  *  *  *  *  *  *  *  *******
  456.         ************************************************************
  457. See Basic Compiler Patches #1 for setup procedure.
  458.         ==================== PROBLEM DESCRIPTION ===================
  459.      BLOAD  may  fail  with  an  "Input Past End" error if the screen being
  460. loaded contains a 1A at a sector boundary.
  461.         ====================== PROBLEM SOLUTION ====================
  462.      Use  the following procedure to update your IBM Basic Compiler version
  463. 1.0. Insert your diskette labeled "Basic Compiler Library - Updated Working
  464. Copy" in drive B:, and your DOS diskette in drive A:
  465.  
  466. B><A:DEBUG BASRUN.TMP><enter>
  467. -<E4A69><enter>
  468. xxxx:4A69 04.<D7><enter>
  469. -<W><enter>
  470. Writing 7C00 bytes
  471.  
  472. -<Q><enter>
  473.  
  474. B><RENAME BASRUN.TMP BASRUN.EXE><enter>
  475.  
  476.      With  your  "Basic  Compiler  Library - Updated Working Copy" diskette
  477. still  in  drive B: use the following directions for using DEBUG to install
  478. the patch. Again, if you make a mistake, type Q and start over again.
  479.  
  480. B><A:><enter>
  481. A><DEBUG><enter>
  482. -<LDS:100 1 7A 1><enter>
  483. -<EDS:15E><enter>
  484. xxxx:015E 04.<D7><enter>
  485. -<WDS:100 1 7A 1><enter>
  486. -<Q><enter>
  487. A>
  488.  
  489.         ************************************************************
  490.         ******  *  *  *  *  *  *  *  8  *  *  *  *  *  *  *  *******
  491.         ************************************************************
  492. See Basic Compiler Patches #1 for setup procedure.
  493.         ==================== PROBLEM DESCRIPTION ===================
  494.     The use of LSET or RSET with a copy of BASRUN.EXE that has been patched
  495. can  produce errors. This procedure is also needed to correct BASRUN.EXE so
  496. compiled programs can work with the DOS PRINT command and to allow programs
  497. to CHAIN to .COM files.
  498.         ====================== PROBLEM SOLUTION ====================
  499.     First,  make  an  exact  copy  of your patched BASRUN.EXE using the DOS
  500. DISKCOPY  program.  You  need  a  blank  formatted  diskette.  Put your DOS
  501. diskette  in  drive  A and the blank formatted diskette in drive B. Use the
  502. DOS  DISKCOPY  command [described in the DOS manual] to make a copy of your
  503. diskette. When you are done, you should put your DOS diskette back in drive
  504. A and the copy you just made in drive B.
  505.     The  DEBUG  prompt  is  "-".  Everything  you  enter  will  be  in  <>.
  506. Immediately  after the "." prompts, you must press the space bar to move to
  507. the  next byte. The enter or return key is indicated by <enter>. The xxxx's
  508. will  be  filled  with  the proper address by DEBUG. If you have a problem,
  509. type  a  Q  at  the  dash prompt. This will return you to DOS where you can
  510. start over.
  511.  
  512. SECTION 1
  513.     The  first  section  of this update will replace existing bytes in your
  514. patched  BASRUN.EXE with the original bytes. This section is only needed if
  515. you  are  updating  a patched version. If you are using an original version
  516. and skipped patches 5 (BASRUN.EXE section) and 6, you can skip this section
  517. and  go  on  to  section  2. If the bytes indicated by "xx" are the same as
  518. those  you  need  to  enter,  you can hit the space bar to move to the next
  519. byte.  You only need to change those bytes that differ from those indicated
  520. in this procedure. Type B:<enter> to get to your B drive.
  521.  
  522. B> <RENAME BASRUN.EXE BASRUN.TMP><enter>
  523. B> <A:DEBUG BASRUN.TMP><enter>
  524. -<E1BE5><enter>
  525. xxxx:1BE5 xx.<E8> xx.<52> xx.<1C><enter>
  526. -<E2120><enter>
  527. xxxx:2120 xx.<8E> xx.<1E> xx.<10> xx.<05><enter>
  528. -<E2C34><enter>
  529. xxxx:2C34 xx.<8E> xx.<1E> xx.<10><enter>
  530. -<E567A><enter>
  531. xxxx:567A xx.<BB> xx.<C6><enter>
  532. -<E56FD><enter>
  533. xxxx:56FD xx.<51> xx.<52> xx.<53>
  534. xxxx:5700 xx.<50> xx.<E8> xx.<31> xx.<00> xx.<50> xx.<D1> xx.<E9> xx.<B8>
  535. xxxx:5708 xx.<20> xx.<20> xx.<F3> xx.<AB> xx.<73> xx.<01> xx.<AA> xx.<59>
  536. xxxx:5710 xx.<F3> xx.<A4> xx.<8B> xx.<FA> xx.<8B> xx.<F3> xx.<58> xx.<5B>
  537. xxxx:5718 xx.<5A> xx.<59> xx.<E8> xx.<5D> xx.<E5> xx.<CB> xx.<51> xx.<52>
  538. xxxx:5720 xx.<53> xx.<50> xx.<E8> xx.<10> xx.<00> xx.<91> xx.<F3> xx.<A4>
  539. xxxx:5728 xx.<91> xx.<D1> xx.<E9> xx.<B8> xx.<20> xx.<20><enter>
  540.  
  541. SECTION 2.
  542.     This section of the update correctly patches the following items:
  543.          1. LEFT$, RIGHT$, MID$ of null strings can give an incorrect error
  544. message - String Formula Too Complex.
  545.          2.  CHAINing  closes communication files. You must open COMM files
  546. before opening any other files in the BASIC program.
  547.          3. BASIC compiled programs do not work with DOS PRINT utility.
  548.          4. RSET and LSET problems with previously patched BASRUN.EXE.
  549.     This  section  can  be used to apply the three patches to a new copy of
  550. BASRUN.EXE  or  to  an existing patched copy after section 1 above has been
  551. applied. With DEBUG running and loaded with BASRUN.TMP as above:
  552.  
  553. -<E0102><enter>
  554. xxxx:0102 AA.<FF><enter>
  555. -<E1BE5><enter>
  556. xxxx:1BE5 E8.<E8> 52.<DA> 1C.<60><enter>
  557. -<E2120><enter>
  558. xxxx:2120 8E.<E8> 1E.<AE> 10.<5B> 05.<90><enter>
  559. -<E2C34><enter>
  560. xxxx:2C34 8E.<E9> 1E.<7A> 10.<50><enter>
  561. -<E567A><enter>
  562. xxxx:567A BB.<E9> C6.<2D> 00.<26><enter>
  563. -<E7CAA><enter>
  564. xxxx:7CAA 00.<E8> 00.<CD> 00.<BF> 00.<BB> 00.<C6> 00.<00>
  565. xxxx:7CB0 00.<C3> 00.<9C> 00.<FF> 00.<1E> 00.<12> 00.<05> 00.<8E> 00.<1E>
  566. xxxx:7CB8 00.<10> 00.<05> 00.<E9> 00.<7B> 00.<AF> 00.<00> 00.<00> 00.<00>
  567. xxxx:7CC0 00.<00> 00.<00> 00.<50> 00.<98> 00.<D1> 00.<E0> 00.<93> 00.<2E>
  568. xxxx:7CC8 00.<8C> 00.<9F> 00.<66> 00.<6E> 00.<93> 00.<58> 00.<E9> 00.<69>
  569. xxxx:7CD0 00.<BB> 00.<2E> 00.<8E> 00.<9D> 00.<56> 00.<6E> 00.<C3><enter>
  570. -<W><enter>
  571. Writing 7C00 bytes
  572. -<Q><enter>
  573.  
  574. B> RENAME BASRUN.TMP BASRUN.EXE<enter>
  575.  
  576. Be sure to note on the disk label that patch 8 has been installed.
  577.  
  578.         ************************************************************
  579.         ******  *  *  *  *  *  *  *  9  *  *  *  *  *  *  *  *******
  580.         ************************************************************
  581. See Basic Compiler Patches #1 for setup procedure.
  582.         ==================== PROBLEM DESCRIPTION ===================
  583.     When  a  program  has  duplicate  COMMON  definitions  for  arrays, the
  584. compiler does not detect the error correctly. The compiler should give a CD
  585. error at compile time.
  586.         ====================== PROBLEM SOLUTION ====================
  587.     With your DOS diskette in drive A and the "Updated Working Copy" of the
  588. BASIC  compiler  diskette  in  drive  B:  type <B:><enter> to get to your B
  589. drive.
  590.  
  591. B> <A:DEBUG BASCOM.COM><enter>
  592. -<E3FD><enter>
  593. xxxx:03FD 00.<E8> 00.<97> 00.<18>
  594. xxxx:0400 00.<E8> 00.<A7> 00.<18> 00.<E9> 00.<56> 00.<18><enter>
  595. -<E1C92><enter>
  596. xxxx:1C92 E8.<E9> 15.<68> 00.<E7><enter>
  597. -<W><enter>
  598. Writing xxxx bytes
  599. -<Q><enter>
  600.  
  601. Be sure to note on the diskette label that patch 9 has been installed.
  602.  
  603.         ************************************************************
  604.         ******  *  *  *     T  H  E     E  N  D     *  *  *  *******
  605.         ************************************************************
  606.