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 - Xeda112358

Pages: [1] 2 3 ... 311
1
Grammer / Re: Latest Grammer Updates
« on: December 04, 2019, 12:56:13 pm »
Grammer v2.50.8.6
In this update, I focused on fonts!
  • I broke compatibility with third-party variable-width fonts (all zero of them) made for Grammer. Whereas before, Grammer had a variable font in which each char had its own height and width, now the whole font gets a height byte, and each char gets a width. This seemed a lot more reasonable-- it's a lot easier to program with it, it's a bit faster to access chars, and I could use DrDnar's Monochrome Font Editor
  • I converted both the fixed 4x6 font to an mfefont, and I totally remade the variable font as an mfefont
  • Whereas before, the variable width font was sparse (missing many chars), now it is complete!
  • Yes, huge fonts are supported, technically.

Now for bug fixes. Again, big thanks to @NonstickAtom785 and Hans Burch:
  • For <<expr>> is officially documented, and fixed, and now you can nest them.
  • For <<var>>,0,65535 no longer causes an infinite loop.
  • Rounded square roots now round in the correct direction.
  • Yet another If-related bug was fixed, this time the bug was with Then (but not with Then...Else). This bug caused the program to erroneously skip End statements if they were programmed as End:End. Ouch.
  • !If works again.
  • A page boundary bug was fixed that could cause major issues when reading variables from archive.

Some other updates:
  • Modules are no longer verified when calling a module function. Instead, they are verified when they are initialized (ex. "5MYMOD->$) and after verified, Grammer assumes that they remain correct. This reduces some overhead for module functions.

2
Grammer / Re: Grammer 2-The APP
« on: December 03, 2019, 11:08:53 pm »
Okay, I've fixed a few bugs

The following kind of code was broken:
Code: [Select]
If <condition>
Then
    <<do stuff>>
    <<While, Repeat, For, or If/Then (but not If/Then/Else)>>
End:End
If the condition evaluates false, Grammer would search for the matching End token. However, I tried to be clever, and combined it with the code for when it is If without Then, and so it seeked the end of the line (specifically the newline token, colons (":") didn't count). Unfortunately, this meant that the second End was skipped, causing an outer loop to End prematurely. Oof.

In fixing this bug, I noticed another clever optimization that I had made which was really not clever and had broken "!If" for a while! !If works now :)


An unrelated bug is with copying data from archive to RAM if it crossed a page boundary. Once again, I thought I'd be clever and I noticed that I had an "adc hl,bc" in a place where the carry flag was guaranteed reset, so I "optimized" it to "add hl,bc" to save 4cc and a byte. Whelp, it turned out that I was using "adc hl,bc" because that one affects the sign flag, whereas "add hl,bc" doesn't. Ouch.


For loops had an update, specifically fixing the previously undocumented command For <<expr>> which would loop <<constant>> number of times. Today, @NonstickAtom785 found a bug when trying to use a variable as the expression. In actuality, it was a For bug affecting any expression that started with a pointer var! I fixed this by simply checking if the token following the pointer var was a comma. If it isn't a comma, treat it as an expression, otherwise, treat it as a normal For loop.


There were some updates to modules, too: I moved the verification step. Before, every time a module command was run, the module would have its header verified (look for the 4-byte magic number, then make sure the version was compatible). Grammer now verifies when you first initialize it ("5MYMOD->$) and assumes for subsequent calls to module functions that the module is still valid. This removes some overhead, but module functions are still slow to call, and likely always will be :P

3
Grammer / Re: Grammer 2-The APP
« on: November 28, 2019, 11:36:11 am »
I use custom font routines and the text flags that Grammer uses are separate from the OS's flags. In the example, I put in DispGraphs every time I shift the screen up just so that people had a chance to actually see the font (since it doesn't fit on one screen for either font). I found that a custom font routine was much easier and faster than using the OS routines, but of course that meant I needed to make a font for it.


For the line routine, I actually went with a very different approach, but used the Axe routine as scaffolding. For Grammer, I wanted a line routine that was much more modular, so it actually takes IX as an argument that points to a plotting routine. Doing this is a bit slower than the other routine, but it doesn't need the additional clipping code (the plot routine just does nothing when OOB). It will also make it way easier to add new line drawing options in the future, like dotted lines, thick lines, etc.

Here is the line drawing routine (I only just realized that my editor got confused about the tabs from Axe's code :P) : https://github.com/Zeda/Grammer2/blob/master/src/gfx/line.z80

4
Grammer / Re: Grammer 2-The APP
« on: November 26, 2019, 07:11:12 pm »
I've been working on the built-in fonts!

As some may have noticed, the variable font was very sparsely populated, only containing some important characters. Part of the reason is that the old font format was... convoluted. Each character had its own width and height, which made it difficult to make an editor for it. I decided to go with a more sensible option, one that I had used in the past-- The fontset has a height-byte, and each char has its own width (which is allowed to be 0).

There were two advantages to this: one, it is easier to code the text routine, and two, DrDnar's Monochrome Font Editor already supports this format (Xeda's Format #2) which means I had an easy-to-use editor. So, with all of this, some motivation, and some free time, I completed the font and reworked the text routines:


I haven't have tested the Input routine with this, so I should work on that and it works, so I hope people like this ^~^
Also, if anyone wants to make their own fonts based on these, I have the "mfefont" files here:
Variable-width font (export this to Xeda Format #2)
Fixed 4x6 font (export to Xeda Format #1)

You can find the download in the GitHub project's /bin folder, or attached.

EDIT: Tested the input routine; it works ^~^
EDIT2: Oh my. Sweet. Baby. Carrots. Fonts can be BIG apparently. I tested a 16-pixel wide character and it works fine :0

EDIT3: More updates! I've gone bug hunting and I managed to fix the following:
  • The undocumented For <<constant>> can now be nested! This should be documented; it has been around for years.
  • An ooold bug report I found mentioned that For X,0,65535 would cause an infinite loop, so I fixed it!
  • Rounded square roots, via √(' were pretty broken. I had an old bug report that showed √('255 was returning 0, but that was fixed a few months ago when I totally rewrote the square root routine. But, I did botch the rounding, causing it to round up when it should have rounded down, and vice-versa. This is now fixed :)

I also overhauled the module documentation, and I realized I had to advance the module version since I broke some support with the original :(

5
I don't know of any BASIC interpreters, but you might like Axe Parser (compiled on-calc, very fast, the syntax is rather straightforward despite the constraints).

6
(We prefer you to edit your post as opposed to "double posting.")

It still seems to me like it is the software trying to write too quickly to the LCD, but that is usually fixed by ALCDFIX. Maybe TI started using a different LCD .__.

7
Hmm I'm not finding info on revision AC out of curiosity what are the numbers in that #### and how old is the calc. The #### is a date code and I'm wondering how new it is.

8
Grammer / Re: Grammer 2-The APP
« on: November 25, 2019, 11:52:06 am »
Wooh, lots of bug fixes, a few new features! Latest Release.

9
Grammer / Re: Latest Grammer Updates
« on: November 25, 2019, 11:50:01 am »
Grammer v2.50.7.6
Over the past ~2 months, a bunch of bugs have been found and fixed, thanks especially to @NonstickAtom785 and Hans Burch. I also updated the main menu and worked more on documentation. From the main menu, you can now use [*] to archive/unarchive, and the [Hook] option was replaced with [More], where you can enable/disable the token hook and lowercase.
Some of the bugs fixed are:
  • Lbl got broken in the previous update, it was fixed for this.
  • Vertical was buggy, now fixed.
  • Storing Input to an OS string was broken, now fixed. (it would send too many bytes)
  • Parsing Input with expr( was broken, it works again.
  • Archive / Unarchive were messing with some RAM that Grammer occasionally used, causing a crash. This is now fixed.
  • Fixed a bug with using " to end a string.
  • Fixed a bug with custom fonts!
  • Fixed two bugs with Else not being processed properly.

Some other updates:
  • Variable fonts are now slightly indexed for faster access. Text should display faster with it now.
  • You can exit the main menu with [On], now.
  • You can now select with [2nd] from the main menu.
  • nCr, a routine that might never be used by Grammerians, now only overflows when the final result would actually overflow (before, it could overflow during some intermediate calculations).

Compatibility-breaking updates:
  • Grayscale is now only offered in 50-50 (3-level) and 33-67 (4-level) modes. I was able to make the LCD update routines faster and smaller. From the old version, presumably nobody would want to use the (uglier) modes anyways.

10
Try running ALCDFIX and see if that helps.

11
Doodle Jump / Re: DoodleJump Discussion
« on: November 20, 2019, 01:09:32 pm »
Hmm, that is strange. Try running ALCDFIX and then try playing and let us know if that works or not.

12
TI Z80 / Re: Shuffle - Shuffle a TI List Really Fast
« on: November 19, 2019, 01:04:03 pm »
For the assembly version, you can replace the seed= with just a label, "seed:". Then the (seed) instances need (seed+1).

As for a Grammer version, assuming a 52-card deck, you can initialize once with:
Code: [Select]
π9872→Z
For K,0,51
WriteB(Z+K,K
End
Then every time you want to shuffle, assuming Z still points to the deck:
Code: [Select]
.SHUFFLE
51→K
While K>0
randInt(0,K→A
(Z+K→B
WriteB(Z+K,(Z+A
WriteB(Z+A,B
K-1→K
End
End
It's honestly a beautiful algorithm and works well. It helps that Grammer has a pretty good pseudo-random number generator (statistically fantastic, especially for only providing 16 bits at a time :P )

13
Introduce Yourself! / Re: I'm foroplus. New on this forum.
« on: November 14, 2019, 11:32:28 pm »
Welcome to Omni! Have some !peanuts !
What kind of programming do you do?

14
TI Calculators / Re: Help with ti nspire cx
« on: November 12, 2019, 06:35:36 pm »
Hmm, I'm not sure then. Maybe try posting in that thread?

15
TI Calculators / Re: Help with ti nspire cx
« on: November 12, 2019, 11:06:48 am »
What instructions?
Which OS version did it have? (How old is the calculator?)

Hopefully you aren't fricked :|

Pages: [1] 2 3 ... 311