I have been searching on ways to create a stand-alone app for my TI84+ calculator, but most solutions I found have been outdated or unhelpful in some other way. I do not know how to compile z80 assembly into a .8xk file, or a file that will be displayed on my calculator's APP menu. Basically, I just want to know the easiest way to write assembly code and compile it into an APP so that it can be run effectively. I have been looking for a few days now, so I have downloaded a plethora of software (some of it so old that I needed to install DOS-BOX just to run it). I have seen many "solutions", but feel free to post anything you think may be relevant. Any help will be appreciated.

Thanks.

-Tom
There are a few ways to do this. Most are documented here at Cemetech and some of the senior forum members will direct you.
If you want to go down the ASM route then it depends on your proficiency ofcourse, and you will need to have your code "signed" for the OS to recognise it as an App once it is installed.
There is an excellent program devised here on Cemetech called Basic Builder which will take a native code (TI-Basic) and sign it for you. However you will need the TI-SDK (from TI website) to assist with this.
It's worth perusing through the archives as there is a wealth of information here which will help.
Here's what you need:

1) Brass (an assembler). You can get it from Ben Ryves' website
2) Rabbitsign, a re-write of TI's original Wappsign program, which will take the binary from Brass and sign it to create a .8xk
3) A shell script that looks like this:
Code:
@echo off
brass.exe dcs7.asm -l dcs7.html
rabbitsign -p -t 8xk -f -g -vv dcs7.hex
Change dcs7 to anything else where appropriate.

You'll want to have the following skeleton for your .asm file (modified from dcs7.asm):

Code:
.binarymode intel                 ; TI-83+ Application

#DEFINE NOAPPHEADER
#DEFINE NOEND
#DEFINE TI83P
#DEFINE NOTOKENS
.nolist
#include 'whateverinclude.inc"
.list

.defpage 0, 16*1024, $4000          ; Page 0 definition
;Uncomment for more pages
;.defpage 1, 16*1024, $4000          ; Page 1 definition
;.defpage 2, 16*1024, $4000          ; Page 2 definition

.page 0                             ; Start page 0
Page0Start:
   ; Master Field
   .db   80h, 0Fh, 0, 0, 0, 0
   ; Signing Key ID
   .db   80h, 12h, 1, 4 ; or 15 for the TI-84+CSE
   ;revision
   .db 80h,21h,7   ; 7
   .db 80h,31h,35  ;   3 b 3
   ; Name
   .db   80h, 48h, "DoorsCS7" ;App name, change as needed
   ; 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             

ASMStart:
Hope this helps. Feel free to keep asking questions, including if you need help learning z80 ASM.
You can also use Spasm + the Wabbit toolchain from RevSoft to accomplish much of the same thing.
If using Brass there's no need for Rabbitsign, it can use TI's SDK to sign applications for you automatically. There's a tutorial here: TI Application Development in Brass.
benryves wrote:
If using Brass there's no need for Rabbitsign, it can use TI's SDK to sign applications for you automatically. There's a tutorial here: TI Application Development in Brass.
I recommended the rabbitsign instead of wappsign version because wappsign doesn't yet support the TI-84+CSE App key, whereas rabbitsign accepts arbitrary keys. Smile
Thanks guys! I've tried basic builder, but my only problem was I wanted to do things outside of TI-Basic (such as incorporating the assembly program ONBLOCK into my app without grouping programs together). And thanks KermMartian, I'll try what you recommended.

-Tom
Just to test out what Kerm suggested, I tried saving the following in a .asm file:



Code:
.binarymode ti8xapp                 ; TI-83+ Application

.variablename "App Demo"            ; Application name (shown in 'Apps' menu)

.inclabels "ti8x.lbl"               ; Label file containing equates

.deflong bjump(label)               ; Jump macro
    call BRT_JUMP0
    .dw label
.enddeflong

.deflong bcall(label)               ; Call macro
    rst rBR_CALL
    .dw label
.enddeflong

.defpage 0, 16*1024, $4000          ; Page 0 definition

.page 0                             ; Start page 0
                                    ; ← header is added in here for us
    .block 128                      ; Advance 128 bytes for header

        bcall(_ClrLCDFull)          ; Clear the screen

        xor a                       ; Reset the -
        ld (curCol),a               ; cursor column and the -
        ld (curRow),a               ; cursor row.

        ld hl,TextString            ; Copy from...
        ld de,saveSScreen           ; Copy to...

    -   ld a,(hl)                   ; Copy the string to RAM
        ld (de),a
        inc hl
        inc de
        or a
        jr nz,{-}

        ld hl,saveSScreen
        bcall(_putS)                ; Display the string

        bcall(_getKey)              ; Wait for a key

        bjump(_JForceCmdNoChar)     ; Exit

    TextString
        .asc "This simple app."
        .asc "just displays a "
        .asc "bit of text on  "
        .asc "your calculator "
        .asc "screen.",0



When I tried to assemble it with Brass, I got error after error, which I have no idea how to fix. To me it seems as though I'm doing something incorrectly. Before this, I tried editing ONBLOCK (which was written in assembly for the PROGRAMS menu, which I understand uses RAM instead of ROM) to the point where it wouldn't error, and I realized that rabbitsign didn't come with an executable file, as some online tutorials say it does. I tried signing it with Wappsign, but I have an html file, not a hex file. Does anyone know what I should do?

[EDIT]

I have tried other solutions people have suggested as well with no luck.

Thanks.

-Tom
That looks vaguely like SPASM-style ASM to me. Can you help us out with the errors that Brass is spitting out? Rabbitsign does indeed come with an executable, here:
http://www.ticalc.org/archives/files/fileinfo/420/42035.html
Thanks, I think I had an older version of rabbitsign that came with mostly header files and the like. Anyway, the first error I receive is the following:

Error: Could not parse labels file: Could not find file 'C:\Users\UserName\ti8x.lbl'. [Test.asm:5]

Pass 1 complete. (433ms)

Pass 1 failed, pass 2 therefore skipped,
Errors: 1, Warnings: 0.
Build failed.

As a side note, I have not incorporated the snippet of code you posted since it seems like some of your code is repeated in the code I posted, and therefore would be redundant (correct me if I'm wrong, maybe you posted the heart of the solution).

-Tom
Alright, I was able to get Kerm's code to work with Brass (so I at least have a template), but I got the following error when I started to transfer the .8xk file (which was signed by rabbitsign.exe):

USB Communication error. Flash Application has a bad signature (8C08002D)

When I try to sign the same hex file with Wappsign, I get the following error message:

GLHD5003: Invalid Application Header.

The two shell commands I used were:

>Brass.exe Test.asm Test.hex

>rabbitsign.exe -p -t 8xk -f -g -vv Test.hex

(0104.key is in rabbitsign's directory)

I also tried:

>rabbitsign.exe -p -t 8xk -f -g Test.hex

and I got the same error message when I tried to transfer the 8xk file and when I tried signing the hex file with Wappsign.

Anybody know what I should do? Does it have anything to do with the prefixes I use with rabbitsign? (-p -t -f -g)

-Tom
Tom Smo wrote:
Anyway, the first error I receive is the following:

Error: Could not parse labels file: Could not find file 'C:\Users\UserName\ti8x.lbl'. [Test.asm:5]

Pass 1 complete. (433ms)

Pass 1 failed, pass 2 therefore skipped,
Errors: 1, Warnings: 0.
Build failed.


The relevant label files can be found here, alternatively use ti83plus.inc as usual.
Thank you for helping me with the lbl file. I was able to sign it properly and create a .8xk file, but upon transferring the App to my calculator, I received the error:

USB Communication error. Flash Application has a bad signature (8C08002D)

once again.

I tried signing it both with Wappsign and rabbitsign, and I tried using multiple keys (0104.key for the ti83+, and 010A.key and 0A.key for the TI-84+).

I have a TI-84+ (not silver edition). I researched it and it seems like other people receive the same error. Is there any way to fix this?

[EDIT]

I found the keys here:

http://db48x.net/TI-keys/keys.shtml

-Tom
So did you get this all straightened out, Tom? Are you able to produce working flash apps now?
Not quite. I keep running into the error:

USB Communication error. Flash Application has a bad signature (8C08002D)

regardless of what key I use. My only guess would be the way I sign it with rabbitsign, yet it does produces the same error with Wappsign.

Maybe you could take a look and tell me what you think?

Here is the .8xk app:

https://www.dropbox.com/s/91t424xxw5awwqv/Hello.8xk

-Tom
I've been trying to use wappsign to sign an app as well and I am coming across the same error with TI-Connect/TILP on my 84 SE.

EDIT: rabbitsign worked for me Cool no idea what your problem is, sorry buddy xD
What settings did you use for rabbitsign (for example -p). Did you use Brass for your assembler? Lastly, which key file did you use?

-Tom
I did what KermMartian said initially verbatim. I even tried changing '4' to '15' on line 21. I saved the shell script he suggested as a bat file. Nothing worked. I'm not really sure where to go from here.

-Tom
Tom Smo wrote:
I did what KermMartian said initially verbatim. I even tried changing '4' to '15' on line 21. I saved the shell script he suggested as a bat file. Nothing worked. I'm not really sure where to go from here.

-Tom
Please don't double-post unless it's 24 hours since your last post. It's 4 for the TI-83+/84+/83+SE/84+SE, and 15 for the TI-84 Plus C Silver Edition. Do you have the 0104 key? Are you getting any error message from RabbitSign?
Sorry for the double post. I do have the 0104 key, and I get no error messages from RabbitSign. My guess is I do not have certain dependencies on my computer (which has 64 bit Windows), which means I cannot send apps that I sign myself, but I can send apps that I download online. Would using something like a Windows XP emulator help?

One other thing is I am using a cable that originally came with my TI-89 for my TI84+ (I do not have the TI84+ cable). This does not seem to be a problem, though, as everything else I transfer works.

And thank you all for being patient with me. Smile

-Tom
  
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 2
» 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