2013/06/16

Bugs in X-BASIC for iOS V2.1 and its workaround

Some bugs are found in X-BASIC for iOS V2.1.
  1. vpriority() is not effective
  2. tBackgroundAlpha()/gBackgroundAlpha()/kBackgroundAlpha() are not effective immediately.
  3. When you exit the BASIC program after using gTransform() with valid transformation argument, the screen size is wrong the next time it run.
  4. In the input statement, character in the input does not appear.
  5. When you set initial value to dim float by {}, error occurs.
  6. In the function with array argument, an error occurs when you pass the array to the child function.
  7. Element number check of the second or later dimension of the array was incorrect.
  8. The source line pointed by the run-time errors is incorrect.
  9. The error message which occurred in external function is not display.
I will resolve all bugs in V2.2 except the last five. Workaround for the time being is as follows:
  1. After vpriority() call, you may call this function. So it will be reflected immediately.
    func allPageUpdate(page;int)
      print " ";:// modify this line to no problem to display text
      apage(GPAGE0):line(0,0,0,0,0)
      apage(GPAGE1):line(0,0,0,0,0)
      apage(GPAGE2):line(0,0,0,0,0)
      apage(GPAGE3):line(0,0,0,0,0)
      apage(page)
    endfunc
    Example : vpriority(page,GPAGE0,GPAGE1,GPAGE2,TPAGE):allPageUpdate(page)
  2. After the function call, you may call the functions which draw each screen.
    For example, tBackgroundAlpha():print " ".
  3. At program end, you must call gTransform() for releasing transformation.
  4. There is no workaround of input statement bug. Please wait V2.2.
  5. Please assign by (element No.)=float value one by one.
  6. There is no workaround of this bug. Please wait V2.3.
  7. Please check your self.
  8. In most cases, run-time error is pointing to the next line that occurred. If the line is comment line, it points further next line.
  9. There is no workaround of this bug. Please wait V2.3.



In addition, the following is a specification:
  • When you use dimension argument in internal function, you can not use enum constant to the size specified.
    Example : func f(masu(WW,WW);int):// error occur
This is due to the following reasons:
  1. The internal function's name and argument are registered within preprocess of compile.
  2. The enum constant is determined within compile process.
  3. Therefore, in preprocess, the enum constant is not referable.
This is very difficult to solve. I made a comparison between the frequency of use and the effort of implementation and debugging. As a result, I decided this to "limit as a specification". Sorry, please understand.

No comments:

Post a Comment