1186
The Axe Parser Project / Re: Features Wishlist
« on: June 09, 2011, 12:05:11 am »
I'm glad I made those suggestions, it sounds like parsing is going to get a major upgrade.
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to. 1186
The Axe Parser Project / Re: Features Wishlist« on: June 09, 2011, 12:05:11 am »
I'm glad I made those suggestions, it sounds like parsing is going to get a major upgrade.
1187
ASM / Re: flag register question« on: June 08, 2011, 08:10:19 pm »
Yes, 16-bit operations affect the half-carry flag similarly. However instead of detecting carry at the bit 7/bit 8 boundary like you might expect a half-carry to do for a 16-bit operation, it's actually the bit 11/bit 12 boundary.
1188
The Axe Parser Project / Re: Features Wishlist« on: June 08, 2011, 07:55:41 pm »
Super bonus 1.0.0 feature?
1189
The Axe Parser Project / Re: Features Wishlist« on: June 08, 2011, 06:29:05 pm »EDIT: Also, if I use the extra page, I could conceivably do the entire thing in one pass You mean the extra RAM page? Or the swap sector? Because if you could do it with the swap sector that would be awesome because every calculator could use it. I figure you could use 1 16KB page to hold the defined constants and the remaining 3 pages to hold references waiting to be filled in. 1190
The Axe Parser Project / Re: Features Wishlist« on: June 08, 2011, 05:45:35 pm »
In response to Quigibo's responses:
1. Wait, you use 6-bit compression already? Why can I not make 4-character static pointers or labels then? Also, unless you define them to simply equal other characters, you're forgetting about the 30 GDB, Pic, and Str tokens. 2. Oops, totally forgot about the fact that it's already used for newline. Pi would be good then. 3. Yeah, I realize this could make the max symbols limit creep up quickly (See #5). But it would be a pretty nice feature nonetheless. 4. Okay, this wasn't even my idea and I didn't really care too much about seeing it implemented anyways. 5. I was actually thinking about using the swap sector myself, but for some reason decided against it. But now that I think about it again, it should definitely be possible to use that to store defines because they are, as you said, write-once data and should therefore work perfectly. And I know it's possible to use the swap sector as your own person write-once storage. That's how calc84maniac backs up all the contents of RAM before running TI-Boy, by copying it all to the swap sector. Having 64KB of define storage space would be incredible. You could scrap name compression, increase the character limit to 8, and still fit over 5,000 symbols! Nobody would ever run out! 1191
ASM / Re: Compile Time error, what is wrong?« on: June 08, 2011, 03:09:10 pm »
Hopefully these two things should correct the problems:
Also, I see two more lines that would cause problems, although you haven't discovered that they are in error yet because the assembler didn't get that far. jr nc findrestloop and jr z notprime should have a comma between the condition and the label names to separate the two arguments. 1192
The Axe Parser Project / Re: Features Wishlist« on: June 08, 2011, 12:06:35 pm »
I have a whole slew of compiler-side feature requests involving static pointers, constants, and labels (which I will henceforth collectively refer to as defines). I figure since Axe is nearing 1.0.0, compiler-side feature additions would be a decent priority. I will order them in what I believe would approximately be increasing difficulty to implement, which also happens to be increasing awesomeness.
EDIT: I just want to mention that I don't really need any of these features, so don't feel like you have to add all or even any of them. Although out of all of them, I would probably most like the third one. First, could the parsing of defines be modified to accept lowercase letters? Second, could static pointers and constants not require the first token to be a GDB, Pic, or Str token? I see this as being most easily implemented by allowing define references to be prefixed with an easily accessible token like i, which would dictate that what follows is a define and not a variable. Some sample code of old and new static pointers coexisting: Code: [Select] "appvTILEMAP"→iAPV Third, in addition to user-defined constants, could there be user-defined variables? I realize this can sort of be emulated with code like {GDB0}r, but that wouldn't qualify for variable optimizations and would be a pain to type every time you wanted to use it. The easiest way I see this being done is by chaining it with the above suggestion. You would define them as a constant but would reference them with a prefix like var (the u token) or ?. It would even have built-in de-referencing! Some sample code: Code: [Select] "appvTILEMAP"→iAPV Fourth, could unused tokens be turned into defines? When the initialization statement is reached, the token would be checked to confirm that it's not already a command or a define. It would then be added to the list of defines with the first "name" byte being an identifier that it is a token, something like 0. Then, when a reference to the token is reached and it does not match any commands, check the define array. I can also imagine an extension to this that would allow r modifiers to be tagged onto the token, setting flag bits in the first "name" byte. Instead of checking that the first "name" byte is 0 during parsing, you would check that the high six bits are 0. Finally, this feature request would probably require some overhauling of the parser, but it would be incredible: using an extra RAM page while compiling on calculators that have one. With this, you could lift the static pointer and nested conditional limits to near-unreachable levels. You could even increase the maximum length of static pointers to a much more comfortable length like 8 characters and still have more than 10 times the number of available pointers than there are currently. 1193
ASM / Re: flag register question« on: June 07, 2011, 03:45:24 pm »
Yes, you do actually have to check if a half-carry occured. So something like this would not result in the half-carry flag being set:
%00010000 + %00001000 %00011000 But this would: %00011000 + %00001000 %00100000 1194
KnightOS / Re: KnightOS« on: June 05, 2011, 10:44:52 pm »
No problem. If you need help with any other routines, just ask!
1195
The Axe Parser Project / Re: Bug Reports« on: June 05, 2011, 10:29:59 pm »
Ah. They work fine inline with just about everything else though.
Another bug that has probably been mentioned a bunch of times: drawing sprites to an arbitrary buffer reverses the X and Y coordinates. You pop them in the wrong order! 1196
The Axe Parser Project / Re: Bug Reports« on: June 05, 2011, 09:37:03 pm »
I discovered this bug a while ago but forgot about it! Good thing I rediscovered it. If you put a comment on a data line, like so:
[0123456789ABCDEF] .The mage The parser thinks the comment is an operand and produces code to load the data pointer into hl. 1197
The Axe Parser Project / Re: Features Wishlist« on: June 05, 2011, 07:10:05 pm »That's already been around since I first added the EndIf, you can always use them in for loops Actually, you can't. Is this a bug then? Also, I want to bump an old request for conditional Goto/sub(). 1198
Axe / Re: Axe Q&A« on: June 05, 2011, 06:46:26 pm »
Actually if you wanted to see if a number was 2 or 3:
Code: [Select] !If D/2-1 4 bytes smaller. But for general cases, yes, that's a good way to check if a number is in a certain range. 1199
The Axe Parser Project / Re: Features Wishlist« on: June 05, 2011, 06:24:45 pm »And just to let developers know, I already added code to allow Axioms to hijack existing routines so they can call or jump into any routine at any entry point. The other stuff is cool too. Don't ban Goto use altogether though, I actually use it sometimes to produce optimized code. 1200
News / Re: TI-Boy SE Beta pre-release« on: June 05, 2011, 06:15:03 pm »
The cartridge RAM is not just for save files. It is also used as work RAM, and without that RAM being present, the game would not operate correctly.
|
|