- Planning jsTIfied 2.0: TI-84 Plus CE Emulator
- 21 Feb 2015 01:49:51 pm
- Last edited by KermMartian on 31 Mar 2015 02:24:46 pm; edited 2 times in total
The TI-84 Plus CE will be available soon, and although we don't publicly know a lot about how things like peripherals, RAM, and Flash are configured, we do know that it follows the general design of the older calculators and has an ez80 core. Therefore, jsTIfied is going to need some upgrades to support the TI-84 Plus CE, and UnknownLoner has generously offered to help implement those additions. I'm hoping that some other community members will have some time to help out, but in the meantime, this thread is for planning our necessary changes to support the TI-84 Plus CE.
In addition, I have collected a number of suggestions from Runer112 and AHelper that were posted in the jsTIfied 1.0 topic. I really appreciate both of their work in cataloging features and bugs that need to be addressed in jsTIfied as it currently stands.
Debugger Improvements
Emulation Improvements
Bugs
UI/Useability Improvements
In addition, I have collected a number of suggestions from Runer112 and AHelper that were posted in the jsTIfied 1.0 topic. I really appreciate both of their work in cataloging features and bugs that need to be addressed in jsTIfied as it currently stands.
Debugger Improvements
- Memory and disassembly viewers need to use infinite scrolling in both directions. Requiring clicking a button to scroll is not required.
- Clicking to jump to PC needs to scroll to PC, not change have the start of the list be PC.
- The list should follow the PC while stepping.
- Hitting a breakpoint should show the breakpoint to the user.
- The current IM should be shown and be changable.
- There should be a way to set the PC to the currently selected instruction.
- A stack viewer should be added
- You cannot change the pages mapped to memory, this should be allowed.
- Flag checkboxes don't change F.
- Show if interrupts are enabled and allow that to be toggled.
- Disassembly view cannot display ld (ix+nn),mm properly. DD36FE08 shows ld (ix-$-7fe),$8ef
- Hitting enter/return in the address textbox for the memory and disassembly viewer should accept the value and jump there.
- Flags checkboxes should be disabled when running.
- Either I'm doing something wrong, or you can't actually continue out of a breakpoint.
- Step out. Feel free to chat with me on IRC about how to best implement this one, as it might be tricky. May also result in an improvement of the step over logic.
- The I and R registers should be visible in the debugger (and editable).
- The "p" flag should probably be labelled "p/v" if it can fit.
- The page bank boxes should not be editable.
- There needs to be a way to view the contents of arbitrary ROM/RAM pages in both the disassembler and the memory viewer.
- Index register bit instructions are disassembled as three bytes instead of four. The offset appears to be ignored and always zero.
- The debugger seems to choke on a number of undocumented instructions, mainly duplicate instructions or instructions that do nothing. The ones I've found: do-nothings (any "invalid" ED, DD, or FD opcode; should either be disassembled as a 2-byte nop or noni \ nop), duplicates of neg, duplicates of the im variants, the unknown im (ED4E/ED6E; it might actually be im 0 or im 1, but people who don't know have called it im 0/1), and the extended hl store and load instructions. I hope they're at least emulated correctly, but I haven't checked. Might be another topic worth chatting more about to make sure everything's covered.
- The "Continue" button should be disabled when emulation is running.
- An option to auto-update the disassembly/memory view tabs (while either stepping or running) would be nice.
- Options to emulate the missing RAM pages on newer 84+/84+SE calculators and to emulate the "real" Z80 in 83+ calculators could be nice.
Emulation Improvements
- Break on invalid flash commands (catches accidental flash writes or commands that are invalid)
- Clicking buttons quickly causes the page to get selected.
- Step over fails to function as it just continues. Happens with instructions as simple as ld a, $ff.
- The emulator should start in the bootcode of the calculator.
Bugs
- Loading a ROM from a clean state does not start the CPU, you must reload the page for it to start emulating and possibly try continuing in the debugger. You can also open the debugger and step through each instruction, but it will not continue.
- Creating the ROM uses the word 'Uploaded'. This implies that you uploaded the ROM to some location. Replace with 'Created'.
- Timestamp for creating the ROM image does not use the user-set date formatting string.
- Continuing to speak of key binds, it seems like every unbound key translates to down. They should probably translate to nothing.
- Related to keys, something about the keypad hardware emulation seems inaccurate. I first noticed this with my Pokemon demo program for GrayLib for which a VARS input, which should open the grayscale tuner, is interpreted as a CLEAR input, which quits the program.
- The filename provided for some variable exports is just the extension (without the '.'). This seems to at least occur with appvars with lowercase letters in their name.
- The filename provided for application exports needs to be translated based on characters, not tokens.
- The size reported in the variable export list of applications is very wrong. Currently seems to be the page it starts on times 256 plus its number of pages.
- Refreshing the variable list with a corrupted VAT hangs the page.
- Loading a file from SourceCoder pauses the emulator and blanks the screen to white.
- However grayscale is emulated is very strange and can probably be improved. For instance, the GrayLib tuner: https://dl.dropboxusercontent.com/u/34812306/jstified_gray.gif. No, that's not your eyes. Even the fully white parts of the screen are pulsating.
- The screen cumulatively darkens with each breakpoint hit in quick succession.
UI/Useability Improvements
- Switch to jQuery for UI for simplicity
- Full-speed indicator is confusing, recommend using more universally recognized icons, such as a turtle and hare.
- Button lock. Wabbitemu allows this with a right-click menu, but perhaps a hold for something like 0.5s+ is better.
- If it's possible to distinguish right shift from left shift, it would be nice to bind right shift to CLEAR (does CLEAR even have any binding currently?).
- Logging in from the sidebar while on the jsTIfied page once redirected me to http://www.cemetech.net/forum/projects/jstified instead of the correct URL, http://www.cemetech.net/projects/jstified.
- Assembly programs should not provide an option to be exported to SourceCoder.
- The size reported in the variable export list of all variables that are not real numbers, complex numbers, or applications seems to include the 2 bytes contributed by the header size word. This doesn't seem desired.
- Attempting to load a file from SourceCoder that won't fit appears to currently do nothing. Instead, an error message (either via the browser or via the calc's OS) should probably occur.
- To go above an beyond other debuggers, I would recommend not just a port viewer, but configuration for the various peripherals in the ASIC. Rather than display the control port for the LCD, show the current row, column, and other settings. Same could be done for the timers, USB, etc.