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 - FloppusMaximus
Pages: 1 2 [3] 4 5 ... 20
31
« on: March 03, 2013, 01:28:01 am »
Cool! Is there a way to turn sound on, yet? I don't see anything in the Preferences menu.
Look under "Link Cable" (Ctrl+L). If the "connect to speakers" option isn't there it's probably because it wasn't compiled with sound support - you need SDL installed at compile time for it to work. EDIT: And i just installed from the SVN, i like the new debug features (like being able to scroll through the stack entries and the keyboard shortcut to jump to a new address), but a "skip instruction" command would still be really useful
By "skip instruction", do you mean you want to move the PC forward by one line (i.e. like "step over" without actually executing the instruction)? I suppose that wouldn't be difficult. We should probably take this to another thread; here's the previous TilEm discussion thread.
32
« on: March 03, 2013, 12:45:50 am »
TilEm 2.1 will support both sound and external/virtual link cables. It's basically finished at this point (the current version in SVN is quite stable and usable); I haven't officially released it mainly because it'll take some work to track down and compile all the libraries needed for the Windows version, and also because Lionel keeps thinking of new things to be done before releasing the new libti*. We're almost there, though.
33
« on: March 03, 2013, 12:35:31 am »
You're probably right about the LCD drivers; I know they've switched chips several times. I haven't really been following the issue, though (in fact I haven't heard much discussion about it for years, so I guess it must be fixed for most people.) If you have any detailed info about OS bugs, it'd be wonderful if you could add that info to WikiTI.
34
« on: March 02, 2013, 10:47:02 pm »
As far as I can remember there wasn't anything wrong with OS 1.17. I think, however (and this might be what you're thinking of) that OS 1.17 was released at around the same time as TI switched to a different LCD driver, which runs slightly slower than the LCD drivers used in earlier calculators, and therefore broke a lot of existing programs. So any calc that had OS 1.17 on it (especially since it was never released on the Web) was likely to have problems with some assembly programs, even though those problems had nothing to do with the OS.
35
« on: February 27, 2013, 09:21:46 pm »
Since that is 52 tiles to update per frame, would such game run at 23 FPS or would the z-adress value change slow things down considerably? Yes, scrolling the screen should be practically instantaneous, compared to the amount of time it takes to draw a sprite. The theroretical maximum fill rate (barring the discovery of any undocumented features of the LCD driver to make it faster) is around 500,000 pixels per second, or around 2000 16x16 sprites. (edit: gah, worked through it several times and still got my math wrong.) So it's definitely going to be a challenge to get good performance with decent graphics.
36
« on: February 21, 2013, 01:11:54 am »
Some existing BASIC programs will be compatible; no existing assembly programs will be (although some very simple assembly programs will simply need to be re-assembled with a new header file.) Put it this way: there was more backwards compatibility between the TI-83 and 83+ (or even, arguably, between the TI-82 and 83+) than between the 83+/84+ and 84+C.
37
« on: February 10, 2013, 11:44:02 pm »
Right, well, there isn't a fixed ABI partly because the plugin feature is new and experimental, but also because a fixed ABI would require some space to store a table of addresses. The same goes for hooks: it would be nice to have a system of hooks whereby plugins could register their interest in various sorts of events - but implementing that would take up valuable space. I'm not really familiar with CHIP-8. Are you saying you want to be able to generate CHIP-8 bytecode, or that you want to use CHIP-8 mnemonics and have them compiled into Z80 machine code? Either way it is definitely possible. Here's what needs to be done to define a new instruction type: - Choose a bytecode format. Special instructions consist of a 7-bit ID (23 of which are currently defined) and up to 62 bytes of argument data. The arguments can either be expressions or raw binary data (indicated by bit 7 of the ID byte.) - Write a routine to parse text into a bytecode instruction. - Write a routine to format a bytecode instruction as text. - Write a routine to assemble a bytecode instruction. - Optional but recommended: also patch asmto8xv and 8xvtoasm So this would require three calls to the plugin: one in ParseInstruction, one in FormatInstruction, and one in AssembleProgramInstr.
38
« on: February 08, 2013, 11:27:37 pm »
It's great that you're interested in writing a new plugin! What do you want it to do?
It's true that all the documentation is in the code. The documentation of individual routines is extensive (and where should it go but in the code?) What I haven't written, and probably should, is a high-level "introductory guide to hacking Mimas" - doing that hasn't been a priority. I am, of course, always willing to answer any questions you have.
As far as the actual process of writing a plugin - first of all, there aren't any general-purpose hooks that new plugins could attach themselves to. You could write a new plugin and build it against Mimas 0.4, but it wouldn't do anything. So to create a new plugin, you'll first need to figure out where in the app those hooks need to be added. You'll need to decide on the inputs and outputs for the plugin. Assign it a plugin ID in defs.inc. Depending on what the plugin does, it's likely that you'll want to call Mimas routines that aren't part of the current API - to do that, add them to plugapi.dat.
39
« on: February 04, 2013, 11:24:38 pm »
Did you notice? You've got MathPrint!
So a new TI-83 Plus OS in perspective?
Or is it just TI-84 hardware with a 2.53/2.55MP OS put in a case labeled TI-83 Plus?
Or maybe somebody just 'shopped the wrong OS version onto the photo? Seriously though, I'd guess it's really 84+ hardware inside (or a hybrid between the two.) I don't know how big the MathPrint code is, but I'm sure it's a lot more than the 83+ BE has to spare - plus I'd expect it to be painfully slow on a 6MHz CPU.
40
« on: February 04, 2013, 11:06:09 pm »
So, #define (as used in tasm/spasm) has two fundamentally different purposes:
- "Expression-like" macros:
#define SUM(x,y) (x + y) #define PC ($)
- "Instruction-like" macros:
#define CP_HL(reg) or a / sbc hl,reg / add hl,reg #define CRASH rst 00h
I probably won't implement the former type unless there is huge demand. But as DrDnar points out, often macros of this sort are really just constants, and an equate would do equally well. (I suppose it's also worth mentioning that since Mimas is a true multi-pass assembler, you can use equates in ways that wouldn't work in spasm or tasm.)
As far as instruction-like macros, I've thought quite a bit about them since I first started the project. There are several ways that they could be implemented:
- Call by value: arguments to a macro must be constant numeric expressions, which are evaluated before calling the macro. This would be the easiest to implement but also very limited (registers can't be used as arguments; symbols used as args can't be modified; the behavior of PC, @B, and @F would be unlike the way macros are expected to work.) Many folks would rightly say that this isn't really a macro.
- Call by reference: arguments could be either constant expressions or literal symbols. The bookkeeping gets a little bit more complicated than call-by-value; this would allow a macro to define symbols that are passed as arguments.
- Call by name: arguments could be any expression not involving a register, and would be evaluated at the point in the macro where they're used (so PC would work the way you'd expect, and arguments that aren't used wouldn't be evaluated.)
- Any of the above plus special support for registers: I could add special syntax that would let you choose a register by number. For example, CP_HL above could be written as "OR A / SBC HL,R#(reg) / ADD HL,R#(reg)", and to call it you could write "CP_HL(\BC)" (note the backslash), or equivalently write "CP_HL(8)" (8 being the internal code for BC.) (Obviously the exact syntax is up for debate.)
- Call by syntactic substitution: arguments could be any valid expression (including registers), and would essentially be pasted into the syntax tree at the appropriate location. This would require special syntax for parameter names (such as "SBC HL,{reg}") so that Mimas knows not to fully parse the instruction until compile time. This would be a PITA to implement (especially if macros defined in one source file can be called from a different file, which I think is important to support.)
- Call by textual substitution: take the text of the argument and paste it into the text of the macro, then parse the result. This is, I think, less semantically "correct" than syntactic substitution (you lose symbol scoping) and possibly also a bit slower than the other options, but is arguably closest to the way tasm does it. Like syntactic substitution, this would require special syntax for parameter names within the body of the macro.
Mostly unrelated to the above, I've also considered having macros use numbered parameters rather than named ones; e.g., you'd have to write CP_HL as "or a / sbc hl,#1 / add hl,#1" - sort of like function parameters in a shell script. This would be considerably easier to implement than named parameters, plus would offer the possibility of variadic macros - the downside would be decreased readability. In fact, the easiest way to implement this would be for all macros to be variadic, but then you lose error checking.
What do you folks think? What do you typically use macros for, and how do you intuitively expect them to work?
41
« on: January 25, 2013, 12:26:37 am »
No, Mimas is written for ZDS.
Well, it's written for tpasm, but it's more or less the same. I don't think Mimas could build a 2-page app at once due to memory limitations. It also doesn't support directly writing to flash. It's certainly possible to build and sign apps on-calc, but he seems unlikely to implement such functionality since he seems to think screwing with flash is too dangerous.
No, I would merely say that it needs to be approached with appropriate caution. A program that, one time in ten, crashes and wipes your RAM is annoying. A program that, one time in a thousand, crashes and corrupts the OS, or your archived data, is intolerable. I do hope to eventually support assembling Flash apps on the calculator - it could be implemented as a plugin, although that might be too slow. The larger problem with using Mimas to assemble Mimas would be the need for macros (which I also intend to implement in the future.) Also, I don't know how many symbols are used in Mimas - there may not be enough RAM for all of them. I do like the idea of an assembly tutorial on calc. It could certainly be done as an ebook, but maybe it could be more interactive than that? I'm imagining an app that installs itself with a key hook so that, while you're writing your program, or hacking with Calcsys, or whatever, you could press a key to pop up the tutorial, read some more, then go back to what you were doing. Something like Virtual Calc but much more lightweight.
42
« on: January 06, 2013, 02:39:58 pm »
Indeed, all of that space (up to 822Fh) is used as scratch space by the OS; there's nothing wrong with using it for your own temporary storage. But as Xeda says, many system routines will use ramCode themselves, and could be overwriting your data.
43
« on: January 06, 2013, 01:32:21 am »
tipack can create appvar files.
44
« on: January 02, 2013, 12:16:46 am »
Seeing that it's only for calculators with 32MB of memory it would be a bit unhandy to have two of TI's large OSes on it. But the possibility by itself is cool
Might it not be possible to store only one version of the OS plus a patch file? I assume that after removing all the layers of compression & encryption, the bulk of the OS is actually very similar from one version to the next, so the patch file would be much smaller than the complete OS. Of course this would make it slower to start up, but maybe not by much.
45
« on: January 01, 2013, 02:49:47 pm »
IOW, the .inf files need adjustment. Thanks for the report
It may not make a difference, but I would lean towards changing the installed filename rather than changing the inf file.
Pages: 1 2 [3] 4 5 ... 20
|