-->
Text compression for AXE programs
-->
-->
Welcome,
Guest
. Please
login
or
register
.
Did you miss your
activation email
?
1 Hour
1 Day
1 Week
1 Month
Forever
Login with username, password and session length
-->
Home
About
Team
Rules
Stats
Status
Sitemap
Chat
Downloads
Forum
News
Our Projects
Major Community Projects
Recent Posts
Unread Posts
Replies
Tools
SourceCoder3
Other Things...
Omnimaga Radio
TI-83 Plus ASM File Unsquisher
Z80 Conversion Tools
IES TI File Editor
Free RAM areas
Comprehensive Getkeyr table
URL Shortener
Online Axe Tilemap Editor
Help
Contact Us
Change Request
Report Issue/Bug
Team
Articles
Members
View the memberlist
Search For Members
Buddies
Login
Register
Omnimaga
»
Forum
»
Calculator Community
»
Other Calc-Related Projects and Ideas
»
TI Z80
»
Text compression for AXE programs
« previous
next »
Print
Pages:
1
[
2
]
Go Down
Author
Topic: Text compression for AXE programs (Read 7533 times)
0 Members and 1 Guest are viewing this topic.
gtaforever00
LV1
Newcomer (Next: 20)
Posts: 10
Rating: +4/-0
Re: Text compression for AXE programs
«
Reply #15 on:
November 01, 2011, 10:31:02 pm »
Ok since the last few posts, I have decided just to start over and rebuild the algorithm from scratch.
I had to add another bit to the data to make 64 characters. The maximum compression would be around 25%. I had to add a little data, but hopefully stay in the 20's.
I have decided to use Quigibo's idea with the decoder. Thanks for idea Quigibo.
I will have rules on how to uppercase the first letter of every sentence and every single I that is part of the sentence structure. It will automatically uppercase the first word of every sentence, uppercase every singe I, and if you want a certain character uppercase then all you have to do is add a token in front of the character to make it uppercase. It adds a little more space to the data, but you get more control and more compression than using other ideas.
All the letters, numbers, and countless symbols will be usable. I may start a poll to see what would be most wanted on the special symbols. Well I think I am going to start building this beast!
«
Last Edit: November 02, 2011, 02:14:01 am by Qwerty.55
»
Logged
+1/-0 karm for this message
C0deH4cker
LV5
Advanced (Next: 300)
Posts: 258
Rating: +11/-1
Re: Text compression for AXE programs
«
Reply #16 on:
November 02, 2011, 10:36:27 am »
Good idea with the uppercase letters! cant wait to see this when its done.
Logged
gtaforever00
LV1
Newcomer (Next: 20)
Posts: 10
Rating: +4/-0
Re: Text compression for AXE programs
«
Reply #17 on:
November 03, 2011, 02:29:23 pm »
Well I finally got the compression engine made. It outputs in hex to TI-OS Str2 and the input is a string in the TI-OS Str1. On the decompression, I will probably store the decoded text in an appvar. Does that sound ok to everyone? I want to try and not use any free ram or variables, as I want this to be easily incorporated into any program. I will probably use the subroutine variables r1 - r6 and the appvar. The compression is around 20% to 25%. The more characters you have the more compression it seems to do.
Logged
Keoni29
LV11
Super Veteran (Next: 3000)
Posts: 2466
Rating: +291/-16
Re: Text compression for AXE programs
«
Reply #18 on:
November 03, 2011, 02:44:23 pm »
Cool! Lowercase supported?
Logged
If you like my work: why not
give me an internet?
gtaforever00
LV1
Newcomer (Next: 20)
Posts: 10
Rating: +4/-0
Re: Text compression for AXE programs
«
Reply #19 on:
November 04, 2011, 01:31:56 pm »
Well here is a screenshot of the current state:
Str1 is the input it is 151 bytes
Str2 is the output and is 119 bytes
Str3 is the output in hex it is 227 bytes
Instead of the Hex output, I could just use the raw output but it does not always look pretty in TI-OS but would save space in the source.
I have started on the decompression and it is going well so far. I have also thought about doing maybe a simple lzw compression on the already compressed data to compress it even more or even as the primary compression technique if it yields better results.
I will still take any suggestions you may have. I feel getting input from a group of users that would use the tool will result in a better program in the end.
Quote from: Keoni29 on November 03, 2011, 02:44:23 pm
Cool! Lowercase supported?
Yes lowercase will be supported through the decompression.
«
Last Edit: November 07, 2011, 12:35:25 pm by gtaforever00
»
Logged
gtaforever00
LV1
Newcomer (Next: 20)
Posts: 10
Rating: +4/-0
Re: Text compression for AXE programs
«
Reply #20 on:
November 05, 2011, 10:18:52 pm »
Ok here is another screenie for you all.
23% is not too bad. The decompression engine is coming along nicely. I am just working out a few bugs in the code and hopefully to finish here soon.
«
Last Edit: November 07, 2011, 12:38:57 pm by gtaforever00
»
Logged
gtaforever00
LV1
Newcomer (Next: 20)
Posts: 10
Rating: +4/-0
Re: Text compression for AXE programs
«
Reply #21 on:
November 07, 2011, 02:21:07 pm »
Ok here is every character available on the calculators:
If you want to post the top 10 symbols you would want the most and a possible token to use for its representation on calc.
I already have all letters, numbers, period, question mark, exclamation, comma, single quote, opening parenthesis, closing parenthesis, colon, and negative sign so please do not post these again.
Example:
Hex character / TI on-calc token
1. 05h (right pointing arrow) / > token
2. 3Bh (semi colon)/ i (complex) token
3. F2h (money sign) / pi symbol token
Hex (row|column)h
«
Last Edit: November 07, 2011, 02:38:54 pm by gtaforever00
»
Logged
Print
Pages:
1
[
2
]
Go Up
« previous
next »
Omnimaga
»
Forum
»
Calculator Community
»
Other Calc-Related Projects and Ideas
»
TI Z80
»
Text compression for AXE programs
\n\t\t\t\t\t\t\t\t\t
<' + '/div>\n\t\t\t\t\t\t\t\t\t
%body%<' + '/textarea>
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
Max characters: 20000; characters remaining:
...<' + '/span><' + '/span>
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t<' + '/div>\n\t\t\t\t\t\t\t\t<' + '/div>', sTemplateSubjectEdit: '
', sTemplateBodyNormal: '%body%', sTemplateSubjectNormal: '
%subject%<' + '/a>', sTemplateTopSubject: 'Topic: %subject% (Read 7533 times)', sErrorBorderStyle: '1px solid red' }); aJumpTo[aJumpTo.length] = new JumpTo({ sContainerId: "display_jump_to", sJumpToTemplate: "
Jump to:<" + "/label> %dropdown_list%", iCurBoardId: 193, iCurBoardChildLevel: 1, sCurBoardName: "TI Z80", sBoardChildLevelIndicator: "==", sBoardPrefix: "=> ", sCatSeparator: "-----------------------------", sCatPrefix: "", sGoButtonLabel: "go" }); aIconLists[aIconLists.length] = new IconList({ sBackReference: "aIconLists[" + aIconLists.length + "]", sIconIdPrefix: "msg_icon_", sScriptUrl: smf_scripturl, bShowModify: true, iBoardId: 193, iTopicId: 13727, sSessionId: "0c42a939000e94e62e84c4070f714e8e", sSessionVar: "db10df6b5df", sLabelIconList: "Message Icon", sBoxBackground: "transparent", sBoxBackgroundHover: "#ffffff", iBoxBorderWidthHover: 1, sBoxBorderColorHover: "#adadad" , sContainerBackground: "#ffffff", sContainerBorder: "1px solid #adadad", sItemBorder: "1px solid #ffffff", sItemBorderHover: "1px dotted gray", sItemBackground: "transparent", sItemBackgroundHover: "#e0e0f0" }); } function tick2() { if (typeof(document.forms.quickModForm) != "undefined") { calcCharLeft2(); setTimeout("tick2()", 1000); } else setTimeout("tick2()", 800); } function message_onkeyup() { if (typeof(document.forms.quickModForm) != "undefined" && typeof(document.forms.quickModForm.message) != "undefined") { document.forms.quickModForm.message.onkeyup = function onkeyup(event) { storeCaret(this); calcCharLeft2(); }; } else setTimeout("message_onkeyup()", 800); } message_onkeyup(); function calcCharLeft2() { var maxLength = 20000; var oldEditor = "", currentEditor = document.forms.quickModForm.message.value; if (!document.getElementById("editorLeft2")) return; if (oldEditor != currentEditor) { oldEditor = currentEditor; if (currentEditor.replace(/\r/, "").length > maxLength) document.forms.quickModForm.message.value = currentEditor.replace(/\r/, "").substring(0, maxLength); currentEditor = document.forms.quickModForm.message.value.replace(/\r/, ""); } setInnerHTML(document.getElementById("editorLeft2"), maxLength - currentEditor.length); } // ]]>-->