@Acagliano, as I said in my above post, if someone wrote one of those "Axiom" things, they would indeed have access. Smile You could also do it with inline ASM, but I guess that would defeat the purpose of using Axe.
i guess. i would love to help with it, but that would require a knowledge of asm, which i have none. lol.
ACagliano wrote:
i guess. i would love to help with it, but that would require a knowledge of asm, which i have none. 0x5.
Haha, no worries. If you know where to find someone who understand Axioms who can teach me how to create them, I'd appreciate that, though. Smile I remember being very confused when I tried to read the documentation on them; perhaps I need to re-read them.
Perhaps you may want to talk to Quigibo himself. Or DJ.
ACagliano wrote:
Perhaps you may want to talk to Quigibo himself. Or DJ.
I don't think DJ has written any Axioms, unfortunately, since he isn't a particular fan of ASM. Smile Otherwise he would indeed be the one to whom to speak. I pinged Quigibo about another Axe issue; if I hear back from him, I'll see what he has to say about Axioms.
I indeed didn't, since I don't do ASM (at least, not yet). I need to get back into programming...

On-topic, this project sounds interesting. I think Iambian was working on something similar a while ago but I don't know what happened to it. It would certainly make games like ROL2 much easier to install. Would it support hacked picture variables, too?
DJ Omnimaga wrote:
I indeed didn't, since I don't do ASM (at least, not yet). I need to get back into programming...

On-topic, this project sounds interesting. I think Iambian was working on something similar a while ago but I don't know what happened to it. It would certainly make games like ROL2 much easier to install. Would it support hacked picture variables, too?
I would assume it would support arbitrary variable names, since it would be operating outside the confines of the OS's name-checking routines, so short answer, yes. I'd be interested in hearing about this project of Iambian's; I'll have to point him to this thread the next time I see him on IRC so he can tell us about it.
There was a topic about it on United-TI somewhere. I'm not sure where it is, though. Their site runs incredibly slow so I don't really feel like browsing it much lately. D:

I know he tried making a ROL3 installer, though.
DJ Omnimaga wrote:
There was a topic about it on United-TI somewhere. I'm not sure where it is, though. Their site runs incredibly slow so I don't really feel like browsing it much lately. D:

I know he tried making a ROL3 installer, though.
Sounds nifty. Smile Yeah, I'm quite sad about United-TI these days. Sad
Well, a bit of a progress update:
I found out how to store strings into Ans in Axe, so I can begin working on my unpacker, which will have a mix of Axe and ASM. Also, WabbitEmu is really buggy, does anyone have an older version?
souvik1997 wrote:
Well, a bit of a progress update:
I found out how to store strings into Ans in Axe, so I can begin working on my unpacker, which will have a mix of Axe and ASM. Also, WabbitEmu is really buggy, does anyone have an older version?
I have an older version; I guess I need to email it to you and Sonlen now. I'll also re-poke Buckeye; this is getting a bit unfortunate.

Edit: Posted on behalf of Iambian!

Code:
[23:02:02] <Iambian> I did the ROL3 thing just to figure out how well CIII could be used for such a purpose. I didn't find the prospect very appealing and I've since wanted to change the way of how these things worked.
[23:03:25] <Iambian> For what it was, it worked quite well. I was also thinking of writing one that involved pucrunch.
[23:04:19] <Iambian> Ah, yeah. The GETGROUP/EXTGROUP pair is absolutely HORRIBLE for something like this. I never intended it to be that way, but it complicated the program.
[23:04:59] <Iambian> Maybe I should've added another function that extracts just a name given some sort of offset.
[23:06:44] <Iambian> What I really wanted to do was to build some sort of on-computer utility that would cram a project into pucrunch-compressed files, then run a lightweight installer on-calc to do the installation.
[23:07:21] <Iambian> I've a roundabout way with what I know so far. These variables can close to 64KB long.
[23:07:45] <Iambian> And a lot of stuff can be crammed into 64KB.
[23:08:20] <Iambian> I think I should try it some time.
[23:11:00] <Iambian> Thanks for telling me about this. I never knew someone else was interested in doing something like that.
[23:12:50] <Iambian> Eh. I'm going back to work on my 2D Cellular Automata program thinger.
[23:13:06] <+KermM> Iambian, sounds good
[23:13:22] <+KermM> Iambian, I hope you'll share your thoughts and progress with us at some point, then; good luck with the 2D CA
[23:13:42] <Iambian> The assembling part would have to be done on a PC
[23:17:57] <Iambian> I was thinking of having two folders in the directory in which this program is run. one called "Flash" and the other "RAM". It's rather obvious in the context of installers what this would mean.
[23:18:43] <Iambian> This scheme would rely on a combination of batch files, a C program, and pucrunch
[23:19:59] <Iambian> And some general purpose ASM program. In order to keep as much RAM available as possible (because I do have to account for things like variables taking up 23KB or something like that), I'd stuff the program into saferam, free up the copy at $9D95, then go from there.
[23:20:47] <@saxjax> (C) [KermMartian] definitely, that would be good
[23:21:51] <Iambian> On the computer side, prior to compression, I'd have a structure that's a little simpler than a VAT entry preceding the actual data entry. One byte for data type, a 1 byte size field, the name (of variable length), size of the data field, then the data itself.
[23:22:02] <Iambian> It would be good enough to represent any possible data type the calculator can hold.
[23:22:34] <Iambian> And would provide just enough information to use a romcall to create the variable oncalc.
[23:23:34] <Iambian> Also prior to compression, the header should include information as to how much memory this archive will actually take up, so the installer can somewhat determine if the install will fit on-calc.
[23:24:08] <Iambian> It'll be somewhat off for oddities like available space in FlashROM and how much can fit on a single sector.
[23:24:31] <Iambian> So low memory conditions aren't gonna be handled well.
[23:25:27] <Iambian> I'd also modify the pucrunch decompressor so it'll output only one byte at a time, and then let the program interpret the information that is passed through.
[23:25:56] <@saxjax> (C) [KermMartian] for sure, those would be excellent ideas
[23:26:19] <Iambian> That's the sort of decompressor I'll be needing for E:SoR anyway, so I'll be killing two birds with one stone :)
[23:27:28] <Iambian> Oh. And the header should contain a file count so I can have a reasonable way to show more detailed information. Like a progress bar or something. That would be a nice addition.
[23:28:31] <Iambian> Some of these games can take quite a while to deal with, especially with the tons of subprograms that a few large BASIC games tend to have.
[23:30:25] <Iambian> The header also needs to contain the number of files in the actual project. In the event that the stream spans larger than 64KB. In that case, once it runs out on one program, it'll pick up on the next.
[23:31:33] <Iambian> I could imagine that some projects would, even in a compressed state, be larger than 64KB.
[23:32:17] <Iambian> Gotta take that into account too.
[23:33:22] <+KermM> Quite a few projects, I'd think
[23:33:30] <Iambian> This sort of scheme might not be desireable for the regular TI-83 Plus, because some games might take up ALL the calculator's memory. Which wouldn't be good if you had to fit the installer itself in memory.
[23:33:48] <Iambian> And the installation file(s)
[23:33:57] <Iambian> But it would be perfect for the newer calcs.
[23:33:58] <@saxjax> (C) *MufinMcFlufin has entered the room.
[23:34:25] <Iambian> Also, if you really wanted to... you could extend the idea further.
[23:35:28] <Iambian> If you included a checksum or hashing algorithm and embedded it into the modified VAT entries within each file, you could then determine things like whether or not the project is already installed, whether or not the install needs to be repaired...
[23:36:23] <Iambian> ... or if you really wanted to have some serious control, whether or not the project needs to be uninstalled. Cleanly, of course. So what if you wanted to play Contra one day in FFTOM the next?
[23:37:29] <Iambian> This, and a simple ASCII text interface to make it really look retro. These are my thoughts on installers for the graphing calculator.
Kerm, how is a program terminated in memory, like strings are terminated with $00?
I'm gonna be working on a concept similar to this, too! I've decided upon a format in a brief spec written while I was in class earlier today (Yes, it's a Saturday class)

Code:
-------------------------------------------------------------------------------
Documentation regarding the package file format for the data
portion of the TI-83/84+(SE) installer software.

All files that are unpacked and reside in RAM *MUST* be placed last in the
list. Otherwise, the install may fail.

The following is for the initial file.

+00 1b: number of installer files (64KB chunks)
+01 2b: number of files to be installed (can be quite a few!)
+03 3b: number of bytes of FlashROM the installation will take up
+06 2b: number of bytes of RAM the installation will take up
+08 1b: Install type flag (I=install only,U=allow uninstall,R=repair,A=all)
+09 3b: RESERVED
+12 --: SOF

File after this is a single pucrunch-compressed stream of up to 64KB. The
installer will FAIL horribly if you try to compress a file that's larger than
65505 bytes, but then again, such a file won't properly decompress into RAM :)

+00    1b: filetype + flags. Matches TI-OS file types, except bit 7: 0=In RAM
+01    2b: checksum. Used for comparing installed files with this one.
+03    2b: file size
+05    1b: filename length
+06    nb: filename
+07+n    : data stream

Further files that come after this will lack the specific header at the top of this spec but the installer will know to start a new decompression session.
souvik1997 wrote:
Kerm, how is a program terminated in memory, like strings are terminated with $00?
It's not. A program is prepended with the two bytes of its size word, so it's up to whatever is reading the program to realize where the program ends and not run over the last byte and keep going. Smile

Edit: @Iambian, I'm very happy to hear that! I hope you'll be making it capable of creating and unpacking into a DCS folder like Acag's and Souvik's ideas. Smile
KermMartian wrote:
souvik1997 wrote:
Kerm, how is a program terminated in memory, like strings are terminated with $00?
It's not. A program is prepended with the two bytes of its size word, so it's up to whatever is reading the program to realize where the program ends and not run over the last byte and keep going. Smile

Thanks! This makes making my unpacker much easier. Smile
It does? I'm happy to hear that, then. Smile
I have a question for all you experienced Axe programmers out there:

How do you find the bits of a number, like $FA becomes %11111010?
Well, you could use an online utility to convert base 16 to base 2, or in axe, if you are wanting bit 4 of something (4 from the LEFT, not right like it is in ASM) it would be Ae4. Where A is the number/location want the fourth bit of, and e is the small capital e. If you wanted to display the number in base 2, you would have to write your own routine, probably with the Ae4 like thing. Did that answer your question?
souvik1997 wrote:
I have a question for all you experienced Axe programmers out there:

How do you find the bits of a number, like $FA becomes %11111010?
That's not an Axe question, that's a general programming/math question. Solution:


Code:
10: Set Output = ""
20: Get A<-input number
30: Set LoopCounter = 8
40: If A>2^(LoopCounter-1)
50: Then
60: Output = Output + "1"
70: A = A - 2^(LoopCounter-1)
80: Else
90: Output = Output + "0"
100: End
110: LoopCounter = LoopCount - 1
120: If LoopCounter <> 0 Then Goto 40


Of course, this is just one of many, many ways.
Update:

I have made quite a bit of progress on the unpacker, though it is still not working yet. This unpacker will be in Axe.

@Kerm: Thanks.
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
» Goto page Previous  1, 2, 3, 4, 5, 6  Next
» View previous topic :: View next topic  
Page 5 of 6
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement