El Fubu

Welcome to a low in KB page (Except for Video Thumbnails)

Sony HitBit 55/75P dead VRAM diagnosis - 2017-02-25 10:48:47

Hey!

Recently I bought a broken 75P just for fun (and well, it was cheap :)). It had a video problem which, after reading a couple of msx.org posts (Hit-bit With Broken Graphics and 75P black screen mainly), I believed it was a problem of VRAM as Grauw pointed.

That was a clever way to debug it. Watching how Basic characters are output, you can see which bit is broken in the ASCII chart. Why can you point to which bank is failing if a bit fails?

MSX2Cas - 2016-09-08 07:10:55

Very cool application for the phone. You can easily load .cas files on the phone and play them :).

asMSX bugfix 1: Ifs on .megarom - 2016-09-03 12:49:45

Hello!

Finally some improvements on asMSX. At the start of this project JamQue told me that he had issues using ifs when the “.megarom” clause is active. The issue correction can be seen here in Github.

The problem was that when generating a byte (for example, an LD instruction) it checks if it is able to generate it if the condition established for this level allows it.

Original:

guardar_byte(b)
{
if ((!conditional_level)||(conditional[conditional_level]))
if (type!=MEGAROM)
{
 ...some code...
}
if (type==MEGAROM)
{
 ...some code...
}

The first if will only affect the if(type!=MEGAROM) as it doesn’t provide brackets to define a block, therefore it will get only the next sentence. Also instead of doing if(type==MEGAROM) I just did an else.

Learning Bison and Flex: The calculator - 2016-08-20 18:28:25

Hello everynyan,

I’m learning how Bison and Flex work with an O’Reilly book and there can be found an example on how to build a calculator (which has an error on the code, probably there are more in the book, that’s why it has that kind of critics, but it works.).

I ended up making an extension on it just to test my forgotten grammar skills. The code is the following:

Understanding asMSX Volume 2: lex.l - 2016-08-19 23:27:42

Welcome back to the mystery machine!

Today, the spooky lex.l. As we saw in the previous post this file is full with constants, but to be more precise this is the file where you tell how to treat every string found. In fact, constants are not defined in this file but in dura.y,

For example:

  • “ld              return MNEMO_LD”: Whenever you find a string that’s which characters ld, treat is as a token with value  MNEMO_LD (Mnemotechnic for Load instruction).
  • “0x[0-9a-f]+ yylval.val=(int)strtol(yytext,NULL,16);return NUMERO;”: Whenever you find 0x followed by 1 or more characters from the set {0-9a-f} (hence, hex), transform them to a long int (as strol can treat hex values directly) and then to an int and set it to the yylvval, which is the flex’s return value, and return that this token is a number.

So as you have seen, at least in this case, Flex is the one that is in charge of understanding the meaning of each token as defined in this file.

Understanding asMSX Volume 1: Understanding the structure of the code - 2016-08-16 23:00:08

Hello!

Welcome to another trip into another dark cave. Today we meet asMSX, an assembler for MSX’s Z80 made by Pitpan and bought and released with GPL license by cjv99 (Thanks!).

Motivation

It’s known that this assembler has some bugs, e.g. skipping IFDEFs when using MegaROM so there is an interest on knowing the internals of the code in order to fix this kind of bugs. My goal is not directly fixing bugs of this code but to provide more information about the code so all the people from the community may get themselves the code and fix it if there are any new bugs.