If anyone can help with some pointers for TI-84 Plus C SE assembler it would be much appreciated. I'm certainly not an expert in Z80 assembler, but i have dabbled a bit many years ago on a C128 in CP/M mode. In any case, I'm not having a problem with the Z80 in particular, but more on the app header, include file (possibly), and app signing. I'm just trying a simple "Hello World" program, and just can't get it to load on my 84PCSE. I do have the debugger / emulator for the 83PSE, and it works fine there. I've been scouring the web for pointers, and from what I gather things have changed in the 84PCSE to the point of requiring a new key (10F, which I have), possibly new header info (program start location?), and new a include file since all of the system entry points have changed. Every time I try and load the app on the actual calculator, I get a "USB communication error: Flash application has a bad signature (8C0C002D)" message. I can transfer other items back and forth, so I know it's not an actual communications issue.

Sorry for the ramble, but if anyone can help with a step-by-step for a simple ASM program on the newer 84CPSE it would be much appreciated.

Thanks!
AssemblyBandit made a video that shows how to create TI-84 Plus C SE assembly programs and apps. He included the links in the video description.

If you don't want to waste time with that whole video, the salient point is that the CSE uses a different key for signing apps. Whereas the earlier calcs use 0104 or 010A, you need to sign CSE apps with 010F.

http://wikiti.brandonw.net/index.php?title=84PCSE:OS:Applications
I'll check out the video, but I already have the 10F key, and did sign it with that key. I tried both TI's wappsign and rabbitsign.
You're not the first person to have this problem. I'm using Rabbitsign, and I haven't encountered any errors with it so far with the 010F key. Are you using Brass for your assembler?
Oh, missed your mention of 010F in the OP.

Did you change the key ID in the app header too?
Wikiti wrote:
Any TI-8x app will include the byte sequence 80120104; simply change this to 8012010F to specify that your application is signed with the TI-84+CSE key.
O.K., so I watched the video, and there are a few errors or fixes necessary to even get anything to assemble. In the include file, the Assembly Studio 8x does not like the .list and .nolist directives. There is also a bunch of .equ statements in the include file, which get converted to ..equ (two periods before the equ) so causes issues. If you comment out the .list and .nolist, and change all of the .equ's to equ (except in the #define directives), the only thing remaining is line 3947. That line has + 2*FPLEN at the end, and the assembler says that it is too big for the data type or something like that. I changed it to just + FPLEN + FPLEN. Oh, and it doesn't like .end at the end of the file either, so I changed that to end, which probably actually creates a label, but who cares at this point.

So, I can create an assembly program, and call that from TI-Basic with the ASM(pgrmHELLOALL) statement, since I named by assembly program HELLOALL. However, even though I get no errors when compiling the assembly app or signing it, I still get the error about the invalid signature when transferring the app to the calculator.

I'm using the 010F key that I got from multiple places, which are all the same. Perhaps I have a newer calc? It says the code is F, which matches the key, but who knows. The OS is reported as 4.0. Prod #: 0F-5-04-00, ID 0F503-7AF6B-9C87. It doesn't appear to matter whether I select Simulator Build or Signed App Build in Assembly Studio 8x either. I don't think I have a bad key, so what could be the issue?

The program I'm writing is pretty basic:


Code:
 bcall(_maybe_ClrLCDFull)        ;Clear the screen
  xor a                    ;A=0
  ld (curCol),a          ;Will start printing in left column
  ld a, 3
  ld (curRow),a          ;Will start printing on 4th row
  ld hl, SHello            ;HL points to null-terminated string in ROM
  ld de, OP1               ;DE points to a ram buffer named OP1
  bcall(_StrCopy)           ;Copy the string to ram
  ld hl, OP1               ;HL points to null-terminated string in RAM
  bcall(_PutS)              ;Print the hello string from RAM
  bcall(_GetKey)            ;Wait for a keypress
  bjump(_JForceCmdNoChar)   ;Exit the application

SHello .db "Hello World!",0       ;Null-terminated string


I had to change all of the B_CALLs to bcalls, and the same for the B_JUMP. The system routines start with an underline in the 84PCSE include file, and I guess we are not sure of the call location for ClrLCDFull so it is prefixed with _maybe. Note that this does work, so it is probably correct.

Any ideas?
Yes, I changed the header, or rather am using the header from the template provided in the video:


Code:
;Header (128 bytes)
.db 080h, 00Fh
.db 000h, 000h, 000h, 000h
.db 080h, 012h
.db 001h, 00Fh
.db 080h, 021h
.db 001h
.db 080h, 031h
.db 0A1h
.db 080h, 048h
.db "HelloApp" ;make sure this is 8 bytes
.db 080h, 081h
.db 001h
.db 080h, 090h
.db 003h, 026h, 009h, 004h
.db 01Eh, 0FFh, 02Bh, 057h
.db 002h, 00Dh, 040h, 0A1h, 06Bh, 099h, 0F6h, 059h, 0BCh, 067h
.db 0F5h, 085h, 09Ch, 009h, 06Ch, 00Fh, 0B4h, 003h, 09Bh, 0C9h
.db 003h, 032h, 02Ch, 0E0h, 003h, 020h, 0E3h, 02Ch, 0F4h, 02Dh
.db 073h, 0B4h, 027h, 0C4h, 0A0h, 072h, 054h, 0B9h, 0EAh, 07Ch
.db 03Bh, 0AAh, 016h, 0F6h, 077h, 083h, 07Ah, 0EEh, 01Ah, 0D4h
.db 042h, 04Ch, 06Bh, 08Bh, 013h, 01Fh, 0BBh, 093h, 08Bh, 0FCh
.db 019h, 01Ch, 03Ch, 0ECh, 04Dh, 0E5h, 075h
.db 080h, 07Fh
.db 000h, 000h, 000h, 000h
.db 000h, 000h, 000h, 000h
.db 000h, 000h, 000h, 000h
.db 000h, 000h, 000h, 000h
.db 000h, 000h, 000h, 000h
KermMartian wrote:
You're not the first person to have this problem. I'm using Rabbitsign, and I haven't encountered any errors with it so far with the 010F key. Are you using Brass for your assembler?


Nope, I'm using Assembly Studio 8x as in the video. I also tried ZDS, which gave me the same results. However, I don't think I was using the correct include file with that, and probably had the header all jacked up.
What are you trying to make, a program or an application? Your header also doesn't match what's in WikiTI. Though neither does AssemblyBandit's. They recently released Frogger, which comes with the source. Maybe you could try to see if you can get that to compile.
I'm using Brass, and I successfully built an App with this header yesterday (and the 010F.key key, signing with RabbitSign):
Code:
   ; Master Field
   .db   80h, 0Fh, 0, 0, 0, 0
   ; Signing Key ID
   .db   80h, 12h, 1, 15 ; or 15 for the TI-84+CSE
   ;revision
   .db 80h,21h,7   ; 7
   .db 80h,31h,35  ;   3 b 3
   ; Name
   .db   80h, 48h, "DoorsCS8"
   ; Disable TI splash screen.
   .db   80h, 90h
   ; Pages
   .db   80h, 81h, 3
   ; Date stamp.  Apparently, the calculator doesn't mind if you put
   ; nothing in this.
   .db   03h, 22h, 09h, 00h
   ; Date stamp signature.  Since nothing ever checks this, there's no
   ; reason ever to update it.  Or even have data in it.
   .db   02h, 00
   ; Final field
   .db   80h, 70h             
I will check it out when I get a chance. Work is very busy now...
freimer wrote:
I will check it out when I get a chance. Work is very busy now...
Understandable; let us know how it goes. Do you have any idea what you're going to be making in ASM, in the meantime?
You can also use the signkey directive with Brass if you dont want to edit the header template. (.signkey 010F somewhere near the beginning of your code).
tr1p1ea wrote:
You can also use the signkey directive with Brass if you dont want to edit the header template. (.signkey 010F somewhere near the beginning of your code).
My experience is that because Wappsign doesn't know the 010F key, the .signkey directive doesn't work properly, hence why I switched to Brass + Rabbitsign for my TI-84+CSE App projects. Your mileage may vary, though.
  
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 1 of 1
» 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