Show Posts

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.


Messages - Runer112

Pages: 1 ... 32 33 [34] 35 36 ... 153
496
Axe / Re: Program Icons
« on: October 27, 2013, 11:38:17 pm »
As far as I know, there's no reason why Bitmap() wouldn't work in applications.

497
Axe / Re: Program Icons
« on: October 27, 2013, 10:51:52 pm »
The Doors CS and MirageOS BASIC header formats can be found here, the Doors CS assembly header format can be found here, and the MirageOS assembly header format can be found here. These formats should dictate both how to determine which header a program is using and, once identified, where in the header the icon data can be found.

The assembly header icons are stored as raw binary data and could be displayed easily enough using the Bitmap() command. You would have to copy the icons to free RAM somewhere to allow you put the width and height bytes before the icon data, though. Keep in mind that while the Doors CS icons are 16x16, the MirageOS icons are actually only 15x15.

The BASIC header icons are a bit trickier, because they're stored as hexadecimal strings rather than raw data. You would probably want to convert the hexadecimal representation into a raw bitmap representation (like for assembly icons) in free RAM somewhere, supplying the width and height bytes and then converting each hexadecimal character into a nibble of raw data (perhaps with code like (CHAR≤'9'?CHAR-'0',CHAR-'A'+10)) and using →nib{} to store each nibble or combining two nibbles manually to store each byte.

498
The Axe Parser Project / Re: Latest Updates (***DO NOT POST HERE!***)
« on: October 25, 2013, 06:12:09 pm »
Axe Parser
Omega 1.2.2



I've been quite busy with school (and generally lazy to boot), sorry it's been so long since the last update. The Axe application is bursting at the seams, so it's difficult for me to fit in new language features, but I fit in a few. The primary focus of this release is to improve stability, so a lot of the new things in this version are application usability improvements and bug fixes.

If there are any outstanding bugs, even if you've reported them before, or if you find any new bugs, please report them in the Bug Reports thread. I'd like to get Axe to be as stable as reasonably possible, and you can help.

New Features:
  • New command to call the OS keypad scanning function: getKeys (or getKeyS). A useful application is to put this in your custom interrupt so you can use getKey and getKeyr in your program like normal.
  • New command to set the LCD's z-address: ZInterval #.
  • New commands that suspend annoying things for the remainder of your program: Fullr and Fullrr. The former suspends any memory delays on non-83+ calculators and the latter suspends Horiz mode (forces a ClrHome upon execution and when your program returns). These commands will not properly restore the suspended settings if you use Returnr!
  • Added a new form of calling inData() for which you specify the length of the data to check: inData(BYTE,PTR,SIZE). No issues when searching for zero!
  • Axe no longer disables Horiz or G-T modes.
  • APD can now activate, so accidentally leaving Axe running won't drain your battery so much.
  • Error if application being compiled will be too large after the first pass instead of the second pass.
  • Using lowercase letters in the output name header will throw an error when not compiling as an application.
  • Generally more robust source file header parsing and validation, including being able to jump to errors in headers.

Changed:
  • Renamed sign{} to signed{} and renamed stdDev() to strGet() for clarity.
  • Optimized direct key input slightly. ***If your calculator has had key port (delay) problems related to getKey(#), please test that direct key input works.***
  • [Jacobly] Greatly optimized the speed of high-order and fixed-point multiplication.
  • [Jacobly] Optimized circle drawing slightly.
  • Changed the default varaible location again, this time into smallEditRam. The previous location conflicted with MathPrint.
  • Reorganized the command list slightly.
  • Fixed sometimes getting stuck in an infinite key wait loop after an error.
  • Improved the error dumper with more debugging information for me!
  • FIXED THE SEEMINGLY RANDOM COMPILING FROM ARCHIVE ERRORS THAT HAVE PLAGUED AXE SINCE 1.0.0! Big thanks to shmibs for helping me debug this!
  • Fixed some parsing issues with For()r.
  • Fixed 3-argument HLine() and VLine().
  • Fixed inverted circle drawing.
  • Fixed ?Hex and archived value reads in programs compiled for Axe Fusion.
  • Fixed an error with the use of special OS variable names, like Pic2, in strings.
  • Fixed an obscure bug caused by putting r2-r6 immediately before a function call.
  • Fixed error scrolling with zStart crashing for archived source programs that span multiple archive pages.
  • Fixed 8-character names immediately throwing an error when trying to compile applications.
  • Fixed multiple bugs with application writing, including not recognizing when there was no space for the application.
  • Fixed an error being thrown when compiling a program whose target already exists in archive after a fresh garbage collect. Thanks to thepenguin77 for helping me debug this!
  • Fixed other bugs I forgot about.

499
ASM / Re: Help with a very peculiar flash-related Axe bug
« on: October 23, 2013, 11:27:59 pm »
Oh, perhaps I should have clarified that. It returns, but with nz, meaning that the write was unsuccessful.

EDIT: I just noticed, I don't see any logic in that code to clip de from $8011 to $4011, but the register values (and the fact that the code works the other 99.99999% of the time) mean that it must have that logic.

EDIT 2: I'm an idiot, Axe handles masking de to the range $4000-$7FFF itself.

EDIT 3: Issue solved! Basically TI sucks and one of their B_CALLs is buggy.

EDIT 4: Issue re-solved! Basically I suck and I was just derping out this whole time. I still have no idea what convinced past me to make the code relocation change that caused this bug in the first place...

500
ASM / [SOLVED] Help with a very peculiar flash-related Axe bug
« on: October 23, 2013, 07:01:50 pm »
Foreword: the solution to this issue probably has to deal with something like OS flash modification procedures or the certificate, so expect to need to know about these things.
* Runer112 looks at BrandonW, DrDnar, and thepenguin77


Here's the issue I'm experiencing with Axe. I'll start with a high-level description. Since at least Axe 1.2.1, I have experienced a very peculiar bug. On the few occasions when I've sent a new development version of Axe to my calculator, the very first compile would result in a seemingly random compilation error occurring almost instantly. This error would never occur again for the same version of Axe, as far as I can tell. I've tried replacing it with the old version of Axe and re-upgrading it, I've tried clearing RAM, and I've tried sending new "dummy" upgraded versions of Axe that have one small thing changed to make the application slightly different. None of these seem to replicate the bug. The bug also doesn't seem to ever occur in wabbitemu.

I'm fairly certain this is not a fluke. This exact scenario of me making a ton of changes and sending the new version of Axe to my calculator months after the last build was sent has happened at least three times so far; once with an older version (perhaps 1.2.1, or an early 1.2.2 build?), and twice with sending the most recent 1.2.2 to two of my calculators. I have one calcultor left still with Axe 1.2.1 on it. I predict that sending Axe 1.2.2 to this calculator will replicate the bug one more time, but I'm saving it to add more debugging tools as necessary to a build of Axe 1.2.2 to hopefully pin down this bug.

Now, for some lower-level details. The error occurs due to a failed B_CALL(_WriteAByteSafe), oddly on what I believe is the second call to that routine with the fresh version of Axe. The write is to the first page of the swap sector, which should have been erased by a B_CALL(_FindSwapSector) \ B_CALL(_EraseFlashPage). In the register dump that follows, the swap sector perhaps unusually starts on page $0C, but I don't think that's part of the issue. From what little I remember of the dump I got from my first calculator, which I didn't save, I believe everything was the same except the swap sector started on page $08.

Anyways, here are the known input and output register values from B_CALL(_WriteAByteSafe) that I got from the existing debug dumper in Axe 1.2.2 when the error occurred on the second of the two calculators I sent it to:
  • INPUT: af=$0C80, bc=$4701, de=$4011, hl=$8686    (note: the value of b is not officially known, but that's what it ideally should  have been)
  • OUTPUT: af=$1F08, bc=$0000, de=$4011, hl=$8478


If anyone already has any ideas as to what the problem is, or ideas of what to add to a debug version of Axe to hopefully replicate and better debug the issue on my third calculator or your calculator, I would appreciate them. If not and I can't solve the issue myself, I'll just write this off as a minor bug since it only happens once per Axe upgrade anyways.

501
The Axe Parser Project / Re: Bug Reports
« on: October 22, 2013, 11:47:35 am »
If you guys ever get compilation errors that you think are bugs, press STAT! Then post the error dump here, as it carries a lot of really useful debugging information for me.

502
TI Z80 / Re: zStart - an app that runs on ram clears
« on: October 21, 2013, 06:52:42 pm »
* Runer112 bumps this

*snip*

  • Regarding the shortcut to enable MathPrint not working unless it has already been enabled once: ... can you do something sneaky to always let MathPrint load up on RAM clears, but after it has been enabled, immediately switch to Classic mode if that default is set?

Also, another thought popped into my mind. You know how a while ago I mentioned that Omnicalc's quick apps menu doesn't register a context change until after any executed app returns to the OS? That may be a hard Omnicalc issue to fix, but I realized there are other issues with Omnicalc that might be (perhaps more easily) fixable. For instance, enforcing that parentheses assistant, the entries menu, and RAM recovery are disabled when MathPrint mode is enabled, and returning them to their original settings when Classic mode is enabled. It also may or may not be feasible to kill the partial line clear functionality when MathPrint mode is enabled. (I got the impression that you try to keep your key hook fast by only having ON+___ shortcuts so you can abort if ON is not pressed, but this check would need to occur before that)

503
TI Z80 / Re: [2013 Contest][Axe] Siege
« on: October 21, 2013, 04:51:22 pm »
Oh! That is quite helpful, so ?? = AND and ? = OR.   Right?

Other way around. :P

504
The Axe Parser Project / Re: Features Wishlist
« on: October 19, 2013, 01:37:17 pm »
Running external apps and programs is tricky and should really involve stuff like error handlers when done properly. Considering DrDnar's axiom exists and does most of that already, and that the Axe application's 2 pages are pretty much completely full, I don't think this is something I'd consider adding to Axe at the moment.

505
The Axe Parser Project / Re: Features Wishlist
« on: October 19, 2013, 01:22:49 pm »
Possible: yes. Easy to implement: I'm not so sure... I'll look into it, though.

506
TI Z80 / Re: run for contest
« on: October 17, 2013, 01:23:39 am »
It's spelled Runer, gosh, why can nobody get it right!

But I'm guessing this project is in Axe. As for what the game actually entails, we'll have to wait to hear more it seems.

507
Math and Science / Re: Portal Physics
« on: October 13, 2013, 07:12:53 pm »
I thought it was an established rule that portals can't exist on moving surfaces?

But disregarding that, I believe option A would occur, because portals are simply spacial links and do not impart any kinetic energy on objects passing through. Perhaps this slightly modified scenario will help demonstrate this:



If you were standing next to the blue portal looking in, as the orange portal fell, it would appear as if the cube had velocity. However, it would also appear as if the ground below it had velocity. As the orange portal fell until cube was about halfway through the portal, suddenly the portal would stop moving due to hitting the raised ground around the cube. What would happen?

I think we can safely rule out the cube being spontaneously sliced in half, with the half that didn't go through the portal staying still and the half that did go through the portal flying off with the same velocity that the orange portal had before stopping. I also believe that it wouldn't really make much sense for the cube to fly off with half the velocity, as from the perspective on the orange portal's side, the cube would appear to be sucked away by nothing. It seems to me that the only logical outcome in this scenario is that the cube stays right where it was, and I believe this should be the case no matter what percentage of the cube goes through the portal.

508
Primarily due to the entirely different screen, but also other internal technical reasons, any flash applications or assembly/Axe programs designed for the regular 83+/84+ calculators will not work on the 84+CSE. Unfortunate, I know.

New programs and games are starting to be developed for the 84+CSE, though, and a few have been released. If you're looking for assembly games, perhaps you'll find something you like here or here?

509
Axe / Re: help with my Axiom
« on: October 09, 2013, 09:26:21 am »
It seems like that should work... Make sure that your Axiom is an appvar and not a program, as token replacements won't work for the latter. You can convert Axioms in program form into appvar form by either manually editing the type byte on-calc with a hex editor like Calcsys, or simply including the Axiom in an Axe program and compiling it.

If that's not the source of the problem, what happens if you manually insert .db $7F \ .org $-1 where the REP_NEXT should be? I'm wondering if it's possible that your assembler is parsing it as the REP_NEXT(x) macro instead, which works slightly differently. I think my assembler (SPASM) had problems with that, which I temporarily fixed by renaming REP_NEXT(x) to OFS_NEXT(x) next in the include file, since what it really does is replace the next value plus the given offset x.

If that doesn't work, I don't have any immediately clear suggestions. In that case, could you possibly post or privately send me the full code of the Axiom so I can try to debug it?

510
Computer Programming / Re: MatLab
« on: October 08, 2013, 05:26:44 pm »
* Runer112 points at the date of the last post before noobnonin's, indicating that this is most likely a dead thread

Pages: 1 ... 32 33 [34] 35 36 ... 153