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

Pages: 1 ... 3 4 [5] 6 7 ... 20
61
News / Re: TI-84 Plus C: new photos reveal more than 3MB archive space
« on: November 13, 2012, 09:59:39 pm »
With all those pixels, they couldn't have used a less ugly font?

That would require a massive rewrite of their math engine and variable handlers, and even the variable formats, basically anything that accesses user RAM.
They already did so once (the TI-86) and if it were done intelligently, it wouldn't need to be significantly slower.  Whether TI would be willing to go to the extra effort is another question.

Basically, if AsmPrgm:210080:36E1:23:36E5:23:36C9:CD0080:EF0745:C9 crashes instead of spitting out a number, we're screwed and won't be able to do anything until getting our hands on the hardware ourselves.
I think you underestimate this community. ;)

62
Bad news?  Not necessarily.  Maybe it means they've taken the opportunity to fix all the problems with the old 83+/84+ OSes that were necessary for maintaining backwards compatibility.

...okay, granted, this is TI we're talking about. :P

Anyway, reverse-engineering the new platform is all part of the fun.  I'm rather looking forward to it.

63
News / Re: A new z80 calc... in color?
« on: November 12, 2012, 03:47:09 pm »
I'm curious about the LCD.  Is it supposed to use a color palette or individually-controlled RGB pixels?  I'm a little skeptical that you could get good performance either way - and I'm even more skeptical that TI could pull it off (these are the same people who brought us MathPrint.)

64
They do use the same CPU, but the I/O ports work differently, and the RAM and ROM layout is different.  Very simple assembly programs can be made to work on more than one model, and in theory shells could have been written to make this easier, but in general it's just simpler to build separate 82/83/83+ versions of the same program than to try to make one program work on both.

65
ASM / Re: Conversion from 83+ to 83
« on: June 14, 2012, 11:13:20 pm »
But in the general case, determining what is a label and what is a constant is not something any automated disassembler can do.  (For one thing, determining all the possible code paths reduces to the halting problem.  For another thing, when you start getting into seriously optimized code, like some that I've written, the distinction between "constant" and "label" becomes somewhat fuzzy, as optimizations can imply constraints on your labels that can't even be expressed in standard assembly language.)  But for even a moderately complex assembly program, I wouldn't trust any automated disassembler to understand everything - it requires human eyes to figure out exactly what the program is doing.

That said, if you know the code is produced by a compiler that doesn't use any outlandish optimizations (and more to the point, if you know beforehand exactly what programming techniques that compiler uses) - then some heuristics able to recognize those techniques might be sufficient.  (Note that I'm assuming the programmer has used "pure" Axe, or Axe with a well-defined set of simple assembly libraries - in other words, that the programmer has not made any assumptions that depend on the implementation of the Axe compiler or the target machine.)  I don't know enough about Axe to say how hard it would really be, but I would be somewhat surprised if there were any existing disassembler able to do that in general.

OK, this is getting a bit off-topic; sorry.  In conclusion: disassembly is hard.

66
ASM / Re: A question
« on: June 13, 2012, 03:37:30 pm »
It's been a while since I looked at the parser hook, but I think the simple answer is "no" and the more complicated answer is "maybe, if you wanted to do a lot of work."  I don't think the parser hook is called to handle the "prgm" token, which means that the OS will parse the program name as usual, decide that the program is archived, and throw an error.

You could, however, use the parser hook to completely replace the OS's BASIC parser with one of your own, which could support executing archived programs and whatever else.  As I say, it would be a lot of work.

67
ASM / Re: 83+/84+ Free Ram Areas
« on: June 13, 2012, 03:31:24 pm »
Runer112: cmdShadow is used for MirageOS internal storage.  If you overwrite that area, it will break both the MirageOS GUI and some of the MirageOS library routines.  The same is true of some parts of statVars, I don't remember which exactly.  And you can expect the same is true of other shells.

The other thing about cmdShadow is that it is used for Ion's program loader (and, of course, the Ion libraries) so you absolutely must not overwrite that area in an Ion program.

Also, thepenguin77, you didn't mention that appData can be overwritten when APD occurs.

68
News / Re: TI-84 Plus emulator released for the TI-84 Plus
« on: June 11, 2012, 11:43:49 pm »
True, but it would likely be very slow.  Although perhaps it could be improved a bit by using dynamic translation.

(And of course, strictly speaking, it's not possible to emulate the same model of calculator that the emulator is running on.  Some parts of RAM and/or Flash - the emulator's code and internal state, as well as the files that you don't want the emulated program to be able to modify - must either be somehow inaccessible to the emulated calc, or immutable.)

69
ASM / Re: Conversion from 83+ to 83
« on: June 11, 2012, 10:23:42 pm »
'flags' (the usual value of IY) is 8567h.  As far as I know, it's true that all of the TI-83's flags are located at the same bit/offset on the 83+, but the converse is not true.  I can't easily check this at the moment, but I think that 23h (35 decimal, aka asm_Flag3) is the end of the system flags on the 83.  So you will want to be certain your program is not using any flags beyond that point; if the program is relying on those flags, then it may need to be substantially modified.  Two popular 83+ flags that the 83 doesn't support are bufferOnly (draw only to plotSScreen, not the LCD) and fracDrawLFont (use the large font for _VPutMap.)

As far as RAM areas go: first of all, what shell/loader are you using?  I highly recommend that you use Venus, if you're not doing so already.  If you are using Venus, then you can use cmdShadow (128 bytes at 9157h) for temporary storage.  You can also use textShadow if you take some precautions - clear the appTextSave flag while your program is running, and set it again and call _ClrWindow when your program exits.

If you are using Ion or another "traditional" 83 shell, then the rules are slightly different - you can use textShadow if you like, but absolutely not cmdShadow.

You can use statVars (858Fh, somewhere around 500 bytes but I don't remember exactly) for temporary storage, but if you're using Venus you will need to call _DelRes when your program exits (Ion does this for you, I think.)

If you are not already using saveSScreen, that would make a good alternative to appBackUpScreen.  But if you are already using saveSScreen and plotSScreen and you really need a third 768-byte buffer, you'll need to make one yourself.  The quick and easy way is just to stick an extra 768 bytes of zeroes into your program; the less greedy way would be to dynamically allocate it in free memory.  (Free memory starts at (FPS), (930Dh).  You can use _EnoughMem - see the 83+ SDK docs - to check whether there's enough memory available.)

70
News / Re: Release of TilEm2
« on: June 09, 2012, 11:58:42 pm »
Hm but it's a 84 plus rom?
 EDIT:
Silly me, I didnt know that the calc screen was white when turned off. Works now!

I replied to your post on Cemetech, but I want to emphasize this: apparently, the TiLP USB ROM dumper has a bug, in that it reports a ROM size of 2 MB for both the 84+ BE and SE.

So if you have an 84+ BE, and dump your ROM using TiLP 1.16 and a direct USB cable, it will produce a ROM file that is twice the size it's supposed to be.  Although this may appear to work if you select "TI-84 Plus Silver Edition" as the calculator model, it will have some serious problems sooner or later (anything involving Flash won't work.)

71
News / Re: TI-84 Plus emulator released for the TI-84 Plus
« on: June 08, 2012, 11:22:24 pm »
Yup.  I guess it's time for me to hang up my hat.  Well, it's been fun. ;)

72
News / Re: Release of TilEm2
« on: June 08, 2012, 11:20:03 pm »
Sure, why not.  The French keypad would be a nice addition for some folks, I'm sure.

73
ASM / Re: Conversion from 83+ to 83
« on: June 08, 2012, 11:09:34 pm »
squish.inc is the file you want; it was included, I believe, with TI's SQUISH/ZASMLOAD package.  You can probably find it somewhere on the web.  That file contains names for all of the TI-83 ROM calls.

There's no _BufClr on the TI-83.  There's no _SaveDisp either, but maybe you can get around that by using _SaveOScreen (which copies the LCD into saveSScreen.)

kbdGetKy = kbdScanCode + 6.  It holds the scan code most recently pressed, and is called that because it's used to implement the BASIC getKey function.  It's 8006h on the TI-83.

keyExtend = kbdScanCode + 7 (8007h on the TI-83.)  It holds the "extended" keycode returned by _GetKey (or by the menu system.)  But the TI-83 doesn't support lowercase, nor hooks, so it seems unlikely that you would ever use keyExtend in a TI-83 program.  What's the program you're trying to port?

ramStart is just the start of RAM - that's 8000h for every model - but again, I'm not sure why any program would ever use that symbol.  On the 83+, ramStart is the same as appData, which is the start of 256 bytes of more-or-less safe memory that programs can use (it's used for Flash-related stuff and also for OFFSCRPT/ONSCRPT, so it may be overwritten by _GetKey or by _Arc_Unarc or similar.)

74
News / Re: Release of TilEm2
« on: June 08, 2012, 10:37:58 pm »
the gui is still a bit blurry, though, probably because of the arbitrary resizing stuffs.
Scaling to arbitrary sizes, accurate scaling, sharp pixel graphics: pick any two.
(If you prefer sharp graphics over accuracy, then you can turn off smooth scaling in preferences.  But I think that looks awful.)

Well, I've installed this, but it doesnt seem to either like my ROM or work correct... (I dumped my ROM via TiLP)
It's just showing a blank screen.
I'm guessing this means you're using one of the calc models for which we don't yet have a skin.  (Oops, maybe we should have made that clearer.  Sorry about that.  And we should probably use other model skins as fallbacks.)  If you have a skin in TiEmu format (such as the one shmibs posted), you can select it in the preferences, or pick one of the ones installed with TilEm (they're in the share/tilem2/skins directory.)  Also, you can use the keyboard; see the KEYS file (KEYS.txt in the Windows distribution) for details.  F12 is the On key. :)

If anyone has a high-quality image of their calculator that we could use for a skin, and would be willing to release it under a free license so we can include it with TilEm, that would be fantastic.  Calculators we're currently missing skins for are TI-73, TI-83+ SE, TI-84+ SE, Nspire, and TI-85, and I wouldn't say no to a nice TI-82 STATS.fr skin to round out the collection. :)

75
ASM / Re: [Z80] Jump to a specific point in an edit buffer
« on: January 08, 2012, 02:39:04 am »
I don't think there is any routine to do exactly what you're saying.

CursorToOffset (BC 494B) will scroll the editor to a given offset; i.e., it rewinds to the start of the buffer, then moves forward by (errOffset) bytes, displaying tokens as it goes (using the large or small font depending on the API flags.)  It then calls DispEOW to display the remainder of the screen after the cursor.  BC 4CD8 does the same as CursorToOffset except without the DispEOW.

(Displaying tokens one at a time is, as far as I know, the only way the OS ever handles scrolling.)

If you want to use one of these routines, you need to set curRow/curCol to the initial cursor position beforehand (e.g., for the program editor, you'd want to start at row 1, column 0, and display a colon character), and of course winTop and winBtm need to be correct.

To move to a given position without displaying anything, you could do something like this (untested):
Code: [Select]
B_CALL BufToBtm
ld hl, (editTop)
push hl
ld bc, (errOffset)
add hl, bc

ld de, (editCursor)
sbc hl, de
add hl, de
jr c, offset_invalid

ld (editTop), hl

B_CALL BufToTop
pop hl
ld (editTop), hl

Pages: 1 ... 3 4 [5] 6 7 ... 20