Login [Register]
Don't have an account? Register now to chat, post, use our tools, and much more.
Trying to delete an app causes the emulator to freeze.
elfprince13 wrote:
Trying to delete an app causes the emulator to freeze.
What calculator and OS version were you using? Can you replicate it with any other calc/OS combination?
Using an 84+SE with with OS 2.41. I added DCS7 and then tried to delete DCS6, and it froze each time I tried. Unfortunately that's the only calc/OS combination I own.
elfprince13 wrote:
Using an 84+SE with with OS 2.41. I added DCS7 and then tried to delete DCS6, and it froze each time I tried. Unfortunately that's the only calc/OS combination I own.
Yup, I was able to replicate the problem, as well as ascertain that it doesn't happen on a TI-83+ with OS 1.19. I suspect this might be related to some of the Flash issues that AHelper reported with GlassOS's installation sequence. I'll poke him about it.
Flash clearing is the very first thing GlassOS does, and that sounds like a possible cause of the lockup. You might not be reporting the flash page erase properly.
AHelper wrote:
Flash clearing is the very first thing GlassOS does, and that sounds like a possible cause of the lockup. You might not be reporting the flash page erase properly.
Can you give me any more details on that or point me at the relevant reference material? The last time we discussed GlassOS, the issue was the ldir that after a few iterations was suddenly "wrong", probably because of this (perhaps?).
Yes, the ldir was in the flash erase function. I will not have access to the built OS for a week, so I will not be much help other than to point you at the C source.
I'm still pending working on a fix for AHelper's issue; I want to get jsTIfied 1.0 out soon! I have also added another new feature on a request from geekboy: If you check the "Break on IM change" checkbox, jsTIfied will pause any time it completes an IM (interrupt mode) change instruction, such as IM 0, IM 1, or IM 2. We will be using this to poke at how the TI-BASIC interpreter behaves with interrupts.
KermMartian wrote:
I'm still pending working on a fix for AHelper's issue; I want to get jsTIfied 1.0 out soon! I have also added another new feature on a request from geekboy: If you check the "Break on IM change" checkbox, jsTIfied will pause any time it completes an IM (interrupt mode) change instruction, such as IM 0, IM 1, or IM 2. We will be using this to poke at how the TI-BASIC interpreter behaves with interrupts.


Well good news the im change breakpoint works great.

Bad news.

Code:
#include "ti83plus.inc"
#define    ProgStart    $9D95
.org   ProgStart - 2
.db    t2ByteTok, tAsmCmp                    ;main routines
    di
   ld hl,$8B00        ; sets up interupt table at $8B00
   ld de,$8B01       ; sets pointer 1 past to fill
   ld bc,$100            ; fill 267 blocks
   ld (hl),$8a         ; with $8a
   ldir

   ld de,appbackupscreen
   ld hl,interrupt
   ld bc,interruptend-interrupt
   ldir
; set interupt to jump to my interupt code

   ld a,$c3             ;load a with jp xxxx
   ld ($8A8A),a       ; load 8a8a with , jp xxxx
   ld hl,appbackupscreen      ; load hl with pointer to the interupt
   ld ($8A8B),hl      ; put it where it belongs
   
    ld      a, %00001011            ;not low power halt
    out     (03), a
   
   ld a,$8B           ; load i with pointer to interupt table
   ld i,a
   im 2                 ; set interupt mode and enable interupts
   ei
   ret
Interrupt:
 exx
 ex af,af'
 push ix
  in a,(4)
  ;rrca    ;puts bit 0 into carry to see if ON key gens interrupt. 4cc savings.
  ;jp c,GameQuit
  nop
  nop
 pop ix
 ex af,af'
 exx
 jp $0038
interruptend:



This crashes right after the EI but works fine on pindur and wabbit. I have no clue as to why it would be doing that.
Do you mean that the calculator crashes and RAM-clears or that jsTIfied does?
The calculator hangs but does not ram clear. When I run this on pindurti it works perfectly fine.
geekboy1011 wrote:
The calculator hangs but does not ram clear. When I run this on pindurti it works perfectly fine.
Do you have the pause-on-IM X feature turned on? I presume you checked that it's hung, not paused, correct? Can you use the debugger to see where it's hung?
It ends up jumping into ram somewhere and just executing nops for ever based on what I could see using the debugger actually.
geekboy1011 wrote:
It ends up jumping into ram somewhere and just executing nops for ever based on what I could see using the debugger actually.
Did you try setting a breakpoint at $8a8a to see if it at least gets there?
Here are some nice breakpoints for you:
Code:
            51EF  _fs_format
            14FD  __flashErase <-- Payload
            154D  _flashErase

--- ASM ---
;all.c:1804: void _flashErase(byte page)
;   ---------------------------------
; Function _flashErase
; ---------------------------------
__flashErase_start::
__flashErase:
   push   ix
   ld   ix,#0
   add   ix,sp
;all.c:1809: char oldpage = Port_Mem_B1;
   in   a,(_Port_Mem_B1)
   ld   c,a
;all.c:1812: if(page > 0x67)
   ld   a,#0x67
   sub   a,4 (ix)
;all.c:1813: return;
   jr   C,00106$
;all.c:1816: Port_Mem_B1 = 0x02;
   ld   a,#0x02
   out   (_Port_Mem_B1),a
;all.c:1817: *f1 = 0xAA;
   ld   hl,#0x6AAA
   ld   (hl),#0xAA
;all.c:1818: Port_Mem_B1 = 0x01;
   ld   a,#0x01
   out   (_Port_Mem_B1),a
;all.c:1819: *f2 = 0x55;
   ld   hl,#0x5555
   ld   (hl),#0x55
;all.c:1820: Port_Mem_B1 = 0x02;
   ld   a,#0x02
   out   (_Port_Mem_B1),a
;all.c:1821: *f1 = 0x80;
;all.c:1822: *f1 = 0xAA;
   ld   hl,#0x6AAA
   ld   (hl),#0x80
   ld   (hl),#0xAA
;all.c:1823: Port_Mem_B1 = 0x01;
   ld   a,#0x01
   out   (_Port_Mem_B1),a
;all.c:1824: *f2 = 0x55;
   ld   hl,#0x5555
   ld   (hl),#0x55
;all.c:1825: Port_Mem_B1 = page;
   ld   a,4 (ix)
   out   (_Port_Mem_B1),a
;all.c:1826: *spot = 0x30;
   ld   hl,#0x4444
   ld   (hl),#0x30
;all.c:1828: while(*spot != 0xFF)
00103$:
   ld   hl,#0x4444
   ld   l,(hl)
   ld   a,l
   inc   a
   jr   NZ,00103$
;all.c:1830: Port_Mem_B1 = oldpage;
   ld   a,c
   out   (_Port_Mem_B1),a
00106$:
   pop   ix
   ret
__flashErase_end::
;all.c:1840: void flashErase(unsigned char page) __naked
;   ---------------------------------
; Function flashErase
; ---------------------------------
_flashErase_start::
_flashErase:
;all.c:1862: __endasm;
   di
   ld   hl,#__flashErase_start
   ld   bc,#(__flashErase_end-__flashErase_start)
   ld   de,#0xf000
   ldir
   pop   bc
   pop   hl
   push   hl
   push   bc
   push   hl
   call   #0xF000
   pop   hl
   ei
   ret
_flashErase_end::
It appears to me that the ldir function is in fact fine, and that the __flashErase payload is successfully making its way from $14FD to $F000. However, something goes awry after that.
Just bumping progress
  • PC button on hex viewer changes disassembly view instead
  • Page 20 erases page 0, due to ti83+ hardware stuff. This could possibly fix TIOS dieing when defragmenting.

  • TI-84+ and TI-84+SE / TI-83+SE Flash layouts repaired. Need to make sure all protected pages are marked as such for the TI-84+SE layout.
  • PC button on hex viewer fixed.
KermMartian wrote:
elfprince13 wrote:
Using an 84+SE with with OS 2.41. I added DCS7 and then tried to delete DCS6, and it froze each time I tried. Unfortunately that's the only calc/OS combination I own.
Yup, I was able to replicate the problem, as well as ascertain that it doesn't happen on a TI-83+ with OS 1.19. I suspect this might be related to some of the Flash issues that AHelper reported with GlassOS's installation sequence. I'll poke him about it.
And indeed it is replicable. I had an incorrect Flash map for the higher pages on non-TI-83+ calculators. Please verify that this is fixed.
Using Chrome, I was attempting to load an 83+ and 83+SE rom image, but jstified kept telling me no rom was loaded, but it worked perfectly with my 84+SE rom image. Any ideas?
  
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
Page 3 of 6
» All times are GMT - 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