https://wikiti.brandonw.net/api.php?action=feedcontributions&user=AndyJ&feedformat=atom
WikiTI - User contributions [en]
2024-03-29T08:14:37Z
User contributions
MediaWiki 1.23.5
https://wikiti.brandonw.net/index.php?title=WikiTI_Home
WikiTI Home
2009-02-08T15:43:38Z
<p>AndyJ: Removed older news and trimmed no longer relevant recent news</p>
<hr />
<div>Welcome to WikiTI, a Wiki for programmers and hardware hackers of Texas Instruments's graphing calculators. WikiTI's goal is to serve as a central place for the discussion and exploration of the undocumented features of the TI-OS and hardware. To browse our documentation, you can click the "Calculator Documentation" link to the left.<br />
<br />
Any programmer or hacker is free to contribute any [[Calculator_Documentation|documentation]] of the TI-OS, even if the information is incomplete or possibly wrong. For more information, see our page on [[Contributing]]. Not sure where to start contributing? Check out the list of [[Special:Wantedpages|Wanted Pages]] that are linked to but don't yet exist, the list of [[:Category:Stubs|stub pages]] that need filled out, the list of [[:Category:Missing Information|pages with missing information]], and the list of [[:Category:Wikify|pages that need to be formatted]].<br />
<br />
== News ==<br />
<br />
* '''January 31, 2009 - ([[User:Brandonw|Brandon Wilson]]):''' I have moved WikiTI to my own host so that it could be upgraded with the latest version of MediaWiki, which should hopefully stop all the spam. Editing for registered users has finally been re-enabled, so get to it!<br />
* '''September 23, 2008 - ([[User:AndyJ|Andy Janata]]):''' I have promoted [[User:Brandonw|Brandon]] and [[User:FloppusMaximus|FloppusMaximus]] to sysops.<br />
* '''March 13, 2006 - ([[User:Dan Englender|Dan Englender]]):''' To help reduce spam, you must now [[Special:Confirmemail|confirm your email]] address once before editing any pages. You should only have to do this once. If you have any problems with this feature please email wikiti AT mail DOT denglend DOT net. Sorry for any inconvenience.<br />
<font size=-2>[[Old_News|(Old News)]]</font><br />
== Contacting the WikiTI Administration ==<br />
If you wish to contact the maintainers of WikiTI, for any reason, on IRC, please join #WikiTI on EFnet. If you do not have an IRC client, [http://chat.efnet.info/ use this]. You can find email addresses and IM names on each [[Special:Listadmins|administrator's]] User page (soon), or just leave a message on their Talk page.<br />
<br />
== Disclaimer ==<br />
WikiTI is not in any way affiliated with Texas Instruments Inc, or any of its subsidiaries, including the educational products division. No guarantee to accuracy is made of the information herein. Use at your own risk. [[Disclaimer|(Full Disclaimer)]]</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=Old_News
Old News
2009-02-08T15:42:44Z
<p>AndyJ: Copied latest news</p>
<hr />
<div>{{wikify}}<br />
<font size=-2>[[WikiTI_Home|(New News)]]</font><br />
* '''January 31, 2009 - ([[User:Brandonw|Brandon Wilson]]):''' I have moved WikiTI to my own host so that it could be upgraded with the latest version of MediaWiki, which should hopefully stop all the spam. Editing for registered users has finally been re-enabled, so get to it!<br />
* '''October 29, 2008 - ([[User:AndyJ|Andy Janata]]):''' In a further attempt to curb spam, I changed some more settings and now only admins can create pages (at least, I think that's what I did. Pretty sure it worked, but not 100%). Yes, it is rather extreme, but it's the only surefire way to stop all the new spam pages. A new host (with PHP5) would be prefered. I may go ahead and host it on my own site if no other solution can be found soon. In the mean time, if you would like to request a page be made, please drop a line on [[Talk:WikiTI Home|the home page's talk page]].<br />
* '''September 23, 2008 - ([[User:AndyJ|Andy Janata]]):''' Sorry for the long delay in updates. I have upgraded MediaWiki to the latest version that runs on PHP4. This, unfortunately, is already over a year old. Hopefully this will cut down on the spam a bit. If you find anything broken because up this update, please contact me at (ajanata) [AT] 'gmail' {FULLSTOP} &lt;com&gt;.<br />
:*I have promoted [[User:Brandonw|Brandon]] and [[User:FloppusMaximus|FloppusMaximus]] to sysops.<br />
:*Everybody must confirm their email address (if they haven't done so already) to edit pages, for real this time. This may have worked in the past, but it was quite clearly not workign when I was testing.<br />
:*New users may not create new pages, even after verifying their email address, for 4 days. If this is too much a nuisance, I can reduce the time, but I do not wish to eliminate it at this time.<br />
* '''March 13, 2006 - ([[User:Dan Englender|Dan Englender]]):''' To help reduce spam, you must now [[Special:Confirmemail|confirm your email]] address once before editing any pages. You should only have to do this once. If you have any problems with this feature please email wikiti AT mail DOT denglend DOT net. Sorry for any inconvenience.<br />
* '''March 13, 2006 - ([[User:Dan Englender|Dan Englender]]):''' WikiTI has been upgraded from MediaWiki 1.4.0 to 1.5.7 for security concerns and new features. If you find anything that doesn't work like it used to, please make a note on the discussion page and bear with us as we try to fix everything.<br />
* '''February 23, 2006 - ([[User:AndyJ|Andy Janata]]):''' You are now required to log in to edit any pages. Hopefully this will put an end to the spam.<br />
* '''April 12, 2005 - ([[User:Dan Englender|Dan Englender]]):''' There are now more than '''100''' [[:Category:83Plus:BCALLs:By Name|TI-83 Plus BCALLs]] in the database! Help this impressive number grow by [[Contributing|adding some more]]! <br />
* '''April 4, 2005 - 22:02 GMT ([[User:JasonM|JasonM]]):''' Caching disabled. <br />
* '''April 4, 2005 - 21:45 GMT ([[User:JasonM|JasonM]]):''' Category listings are now case-insensitive.</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=User_talk:AndyJ
User talk:AndyJ
2009-02-01T17:25:46Z
<p>AndyJ: /* Thank You */</p>
<hr />
<div>==Thank You==<br />
Thank you for noting that my edit was not minor. I'm sorry, I tend to think that if something is "unimportant" or that probably "no one will care" about it, that it should be marked as minor, but this is not the first time that something I've contributed as minor is later marked as major. Regardless of whether this is the first time you've done this for me, thank you and I'm sorry for not knowing well the difference between a major and minor contribution to WikiTI. -[[User:Saibot84|Saibot84]] 16:24, 1 September 2006 (PDT)<br />
:I know this is over two years late, but I suppose I should explain the reasoning. There is an option to hide minor edits from the recent changes list, and adding that much text to a page clearly isn't a minor change, so everybody should know about it. I simply re-saved the page with that blurb to get that effect. Wikipedia has a similar policy. [[User:AndyJ|Andy Janata]] 17:25, 1 February 2009 (UTC)</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=User:AndyJ
User:AndyJ
2009-02-01T17:23:26Z
<p>AndyJ: updated contact-ish info, long outdated</p>
<hr />
<div>Hi. I'm Andy Janata and it was partly my idea to get this started (you can blame [[User:JasonM|JMan]] for the original idea, though ;)).<br />
<br />
Anyway, I'm on of the [[Special:Listadmins|admins]] here. If you want to contact me for feedback about WikiTI, or for any other reason whatsoever, you can do the following:<br />
* Chat with Andy_J on EfNet in #CalcGames or #WikiTI<br />
* E-mail ajanata gmail.com<br />
* Use AIM and send a message to AkronAndyZip (note that I won't respond right away until you make your intentions clear; I probably won't outright block you)<br />
<br />
Thank you, and happy wikiing!</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=User_talk:Deathgleaner
User talk:Deathgleaner
2009-01-05T04:12:36Z
<p>AndyJ: </p>
<hr />
<div>This site sucks. It tries censoring everything by blocking creation of new pages, which is pure bull. I wish this site was deleted. And I don't care if I'm blocked, cause this site sucks.<br />
:If you would read the home page, you'll see that we have creation of new pages limited to administrators due to the insane amount of spam we've been the target of. We are unable to upgrade to any newer of a version of MediaWiki due to the fact that the server currently running the wiki only has PHP4, and newer versions of MediaWiki require PHP5. We've been attempting to migrate to a new host but all of the people that are required to be present to do such a move haven't been in the same place as of yet. [[User:AndyJ|Andy Janata]] 20:12, 4 January 2009 (PST)</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=Talk:83Plus:BCALLs:4492
Talk:83Plus:BCALLs:4492
2008-11-25T05:04:43Z
<p>AndyJ: </p>
<hr />
<div>it destroys DE? lawl [[User:Darkstone knight|Darkstone knight]] 03:26, 12 November 2008 (PST)<br />
:Probably by putting 9 (or -9 more likely) into de and then doing 16-bit math. Kinda silly not to save de, but kind of silly to use a bcall for this too... [[User:AndyJ|Andy Janata]] 21:04, 24 November 2008 (PST)</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=Old_News
Old News
2008-10-29T05:06:54Z
<p>AndyJ: new news</p>
<hr />
<div>{{wikify}}<br />
<font size=-2>[[WikiTI_Home|(New News)]]</font><br />
* '''October 29, 2008 - ([[User:AndyJ|Andy Janata]]):''' In a further attempt to curb spam, I changed some more settings and now only admins can create pages (at least, I think that's what I did. Pretty sure it worked, but not 100%). Yes, it is rather extreme, but it's the only surefire way to stop all the new spam pages. A new host (with PHP5) would be prefered. I may go ahead and host it on my own site if no other solution can be found soon. In the mean time, if you would like to request a page be made, please drop a line on [[Talk:WikiTI Home|the home page's talk page]].<br />
* '''September 23, 2008 - ([[User:AndyJ|Andy Janata]]):''' Sorry for the long delay in updates. I have upgraded MediaWiki to the latest version that runs on PHP4. This, unfortunately, is already over a year old. Hopefully this will cut down on the spam a bit. If you find anything broken because up this update, please contact me at (ajanata) [AT] 'gmail' {FULLSTOP} &lt;com&gt;.<br />
:*I have promoted [[User:Brandonw|Brandon]] and [[User:FloppusMaximus|FloppusMaximus]] to sysops.<br />
:*Everybody must confirm their email address (if they haven't done so already) to edit pages, for real this time. This may have worked in the past, but it was quite clearly not workign when I was testing.<br />
:*New users may not create new pages, even after verifying their email address, for 4 days. If this is too much a nuisance, I can reduce the time, but I do not wish to eliminate it at this time.<br />
* '''March 13, 2006 - ([[User:Dan Englender|Dan Englender]]):''' To help reduce spam, you must now [[Special:Confirmemail|confirm your email]] address once before editing any pages. You should only have to do this once. If you have any problems with this feature please email wikiti AT mail DOT denglend DOT net. Sorry for any inconvenience.<br />
* '''March 13, 2006 - ([[User:Dan Englender|Dan Englender]]):''' WikiTI has been upgraded from MediaWiki 1.4.0 to 1.5.7 for security concerns and new features. If you find anything that doesn't work like it used to, please make a note on the discussion page and bear with us as we try to fix everything.<br />
* '''February 23, 2006 - ([[User:AndyJ|Andy Janata]]):''' You are now required to log in to edit any pages. Hopefully this will put an end to the spam.<br />
* '''April 12, 2005 - ([[User:Dan Englender|Dan Englender]]):''' There are now more than '''100''' [[:Category:83Plus:BCALLs:By Name|TI-83 Plus BCALLs]] in the database! Help this impressive number grow by [[Contributing|adding some more]]! <br />
* '''April 4, 2005 - 22:02 GMT ([[User:JasonM|JasonM]]):''' Caching disabled. <br />
* '''April 4, 2005 - 21:45 GMT ([[User:JasonM|JasonM]]):''' Category listings are now case-insensitive.</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=WikiTI_Home
WikiTI Home
2008-10-29T05:06:34Z
<p>AndyJ: only sysops can make new pages</p>
<hr />
<div>Welcome to WikiTI, a Wiki for programmers and hardware hackers of Texas Instruments's graphing calculators. WikiTI’s goal is to serve as a central place for the discussion and exploration of the undocumented features of the TI-OS and hardware. To browse our documentation, you can click the "Calculator Documentation" link to the left.<br />
<br />
Any programmer or hacker is free to contribute any [[Calculator_Documentation|documentation]] of the TI-OS, even if the information is incomplete or possibly wrong. For more information, see our page on [[Contributing]]. Not sure where to start contributing? Check out the list of [[Special:Wantedpages|Wanted Pages]] that are linked to but don't yet exist, the list of [[:Category:Stubs|stub pages]] that need filled out, the list of [[:Category:Missing Information|pages with missing information]], and the list of [[:Category:Wikify|pages that need to be formatted]].<br />
<br />
== News ==<br />
<br />
* '''October 29, 2008 - ([[User:AndyJ|Andy Janata]]):''' In a further attempt to curb spam, I changed some more settings and now only admins can create pages (at least, I think that's what I did. Pretty sure it worked, but not 100%). Yes, it is rather extreme, but it's the only surefire way to stop all the new spam pages. A new host (with PHP5) would be prefered. I may go ahead and host it on my own site if no other solution can be found soon. In the mean time, if you would like to request a page be made, please drop a line on [[Talk:WikiTI Home|the home page's talk page]].<br />
* '''September 23, 2008 - ([[User:AndyJ|Andy Janata]]):''' Sorry for the long delay in updates. I have upgraded MediaWiki to the latest version that runs on PHP4. This, unfortunately, is already over a year old. Hopefully this will cut down on the spam a bit. If you find anything broken because up this update, please contact me at (ajanata) [AT] 'gmail' {FULLSTOP} &lt;com&gt;.<br />
:*I have promoted [[User:Brandonw|Brandon]] and [[User:FloppusMaximus|FloppusMaximus]] to sysops.<br />
:*Everybody must confirm their email address (if they haven't done so already) to edit pages, for real this time. This may have worked in the past, but it was quite clearly not workign when I was testing.<br />
:*New users may not create new pages, even after verifying their email address, for 4 days. If this is too much a nuisance, I can reduce the time, but I do not wish to eliminate it at this time.<br />
* '''March 13, 2006 - ([[User:Dan Englender|Dan Englender]]):''' To help reduce spam, you must now [[Special:Confirmemail|confirm your email]] address once before editing any pages. You should only have to do this once. If you have any problems with this feature please email wikiti AT mail DOT denglend DOT net. Sorry for any inconvenience.<br />
* '''March 13, 2006 - ([[User:Dan Englender|Dan Englender]]):''' WikiTI has been upgraded from MediaWiki 1.4.0 to 1.5.7 for security concerns and new features. If you find anything that doesn't work like it used to, please make a note on the discussion page and bear with us as we try to fix everything.<br />
<font size=-2>[[Old_News|(Old News)]]</font><br />
== Contacting the WikiTI Administration ==<br />
If you wish to contact the maintainers of WikiTI, for any reason, on IRC, please join #WikiTI on EFnet. If you do not have an IRC client, [http://chat.efnet.info/ use this]. You can find email addresses and IM names on each [[Special:Listadmins|administrator's]] User page (soon), or just leave a message on their Talk page.<br />
<br />
== Disclaimer ==<br />
WikiTI is not in any way affiliated with Texas Instruments Inc, or any of its subsidiaries, including the educational products division. No guarantee to accuracy is made of the information herein. Use at your own risk. [[Disclaimer|(Full Disclaimer)]]</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=WikiTI_Home
WikiTI Home
2008-09-23T06:05:32Z
<p>AndyJ: format chat</p>
<hr />
<div>Welcome to WikiTI, a Wiki for programmers and hardware hackers of Texas Instruments's graphing calculators. WikiTI’s goal is to serve as a central place for the discussion and exploration of the undocumented features of the TI-OS and hardware. To browse our documentation, you can click the "Calculator Documentation" link to the left.<br />
<br />
Any programmer or hacker is free to contribute any [[Calculator_Documentation|documentation]] of the TI-OS, even if the information is incomplete or possibly wrong. For more information, see our page on [[Contributing]]. Not sure where to start contributing? Check out the list of [[Special:Wantedpages|Wanted Pages]] that are linked to but don't yet exist, the list of [[:Category:Stubs|stub pages]] that need filled out, the list of [[:Category:Missing Information|pages with missing information]], and the list of [[:Category:Wikify|pages that need to be formatted]].<br />
<br />
== News ==<br />
<br />
* '''September 23, 2008 - ([[User:AndyJ|Andy Janata]]):''' Sorry for the long delay in updates. I have upgraded MediaWiki to the latest version that runs on PHP4. This, unfortunately, is already over a year old. Hopefully this will cut down on the spam a bit. If you find anything broken because up this update, please contact me at (ajanata) [AT] 'gmail' {FULLSTOP} &lt;com&gt;.<br />
:*I have promoted [[User:Brandonw|Brandon]] and [[User:FloppusMaximus|FloppusMaximus]] to sysops.<br />
:*Everybody must confirm their email address (if they haven't done so already) to edit pages, for real this time. This may have worked in the past, but it was quite clearly not workign when I was testing.<br />
:*New users may not create new pages, even after verifying their email address, for 4 days. If this is too much a nuisance, I can reduce the time, but I do not wish to eliminate it at this time.<br />
* '''March 13, 2006 - ([[User:Dan Englender|Dan Englender]]):''' To help reduce spam, you must now [[Special:Confirmemail|confirm your email]] address once before editing any pages. You should only have to do this once. If you have any problems with this feature please email wikiti AT mail DOT denglend DOT net. Sorry for any inconvenience.<br />
* '''March 13, 2006 - ([[User:Dan Englender|Dan Englender]]):''' WikiTI has been upgraded from MediaWiki 1.4.0 to 1.5.7 for security concerns and new features. If you find anything that doesn't work like it used to, please make a note on the discussion page and bear with us as we try to fix everything.<br />
<font size=-2>[[Old_News|(Old News)]]</font><br />
== Contacting the WikiTI Administration ==<br />
If you wish to contact the maintainers of WikiTI, for any reason, on IRC, please join #WikiTI on EFnet. If you do not have an IRC client, [http://chat.efnet.info/ use this]. You can find email addresses and IM names on each [[Special:Listadmins|administrator's]] User page (soon), or just leave a message on their Talk page.<br />
<br />
== Disclaimer ==<br />
WikiTI is not in any way affiliated with Texas Instruments Inc, or any of its subsidiaries, including the educational products division. No guarantee to accuracy is made of the information herein. Use at your own risk. [[Disclaimer|(Full Disclaimer)]]</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=Old_News
Old News
2008-09-23T06:05:18Z
<p>AndyJ: more updates today</p>
<hr />
<div>{{wikify}}<br />
<font size=-2>[[WikiTI_Home|(New News)]]</font><br />
* '''September 23, 2008 - ([[User:AndyJ|Andy Janata]]):''' Sorry for the long delay in updates. I have upgraded MediaWiki to the latest version that runs on PHP4. This, unfortunately, is already over a year old. Hopefully this will cut down on the spam a bit. If you find anything broken because up this update, please contact me at (ajanata) [AT] 'gmail' {FULLSTOP} &lt;com&gt;.<br />
:*I have promoted [[User:Brandonw|Brandon]] and [[User:FloppusMaximus|FloppusMaximus]] to sysops.<br />
:*Everybody must confirm their email address (if they haven't done so already) to edit pages, for real this time. This may have worked in the past, but it was quite clearly not workign when I was testing.<br />
:*New users may not create new pages, even after verifying their email address, for 4 days. If this is too much a nuisance, I can reduce the time, but I do not wish to eliminate it at this time.<br />
* '''March 13, 2006 - ([[User:Dan Englender|Dan Englender]]):''' To help reduce spam, you must now [[Special:Confirmemail|confirm your email]] address once before editing any pages. You should only have to do this once. If you have any problems with this feature please email wikiti AT mail DOT denglend DOT net. Sorry for any inconvenience.<br />
* '''March 13, 2006 - ([[User:Dan Englender|Dan Englender]]):''' WikiTI has been upgraded from MediaWiki 1.4.0 to 1.5.7 for security concerns and new features. If you find anything that doesn't work like it used to, please make a note on the discussion page and bear with us as we try to fix everything.<br />
* '''February 23, 2006 - ([[User:AndyJ|Andy Janata]]):''' You are now required to log in to edit any pages. Hopefully this will put an end to the spam.<br />
* '''April 12, 2005 - ([[User:Dan Englender|Dan Englender]]):''' There are now more than '''100''' [[:Category:83Plus:BCALLs:By Name|TI-83 Plus BCALLs]] in the database! Help this impressive number grow by [[Contributing|adding some more]]! <br />
* '''April 4, 2005 - 22:02 GMT ([[User:JasonM|JasonM]]):''' Caching disabled. <br />
* '''April 4, 2005 - 21:45 GMT ([[User:JasonM|JasonM]]):''' Category listings are now case-insensitive.</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=WikiTI_Home
WikiTI Home
2008-09-23T06:04:57Z
<p>AndyJ: more updates today</p>
<hr />
<div>Welcome to WikiTI, a Wiki for programmers and hardware hackers of Texas Instruments's graphing calculators. WikiTI’s goal is to serve as a central place for the discussion and exploration of the undocumented features of the TI-OS and hardware. To browse our documentation, you can click the "Calculator Documentation" link to the left.<br />
<br />
Any programmer or hacker is free to contribute any [[Calculator_Documentation|documentation]] of the TI-OS, even if the information is incomplete or possibly wrong. For more information, see our page on [[Contributing]]. Not sure where to start contributing? Check out the list of [[Special:Wantedpages|Wanted Pages]] that are linked to but don't yet exist, the list of [[:Category:Stubs|stub pages]] that need filled out, the list of [[:Category:Missing Information|pages with missing information]], and the list of [[:Category:Wikify|pages that need to be formatted]].<br />
<br />
== News ==<br />
<br />
* '''September 23, 2008 - ([[User:AndyJ|Andy Janata]]):''' Sorry for the long delay in updates. I have upgraded MediaWiki to the latest version that runs on PHP4. This, unfortunately, is already over a year old. Hopefully this will cut down on the spam a bit. If you find anything broken because up this update, please contact me at (ajanata) [AT] 'gmail' {FULLSTOP} &lt;com&gt;. Also, I have promoted [[User:Brandonw|Brandon]] and [[User:FloppusMaximus|FloppusMaximus]] to sysops.<br />
:*Everybody must confirm their email address (if they haven't done so already) to edit pages, for real this time. This may have worked in the past, but it was quite clearly not workign when I was testing.<br />
:*New users may not create new pages, even after verifying their email address, for 4 days. If this is too much a nuisance, I can reduce the time, but I do not wish to eliminate it at this time.<br />
* '''March 13, 2006 - ([[User:Dan Englender|Dan Englender]]):''' To help reduce spam, you must now [[Special:Confirmemail|confirm your email]] address once before editing any pages. You should only have to do this once. If you have any problems with this feature please email wikiti AT mail DOT denglend DOT net. Sorry for any inconvenience.<br />
* '''March 13, 2006 - ([[User:Dan Englender|Dan Englender]]):''' WikiTI has been upgraded from MediaWiki 1.4.0 to 1.5.7 for security concerns and new features. If you find anything that doesn't work like it used to, please make a note on the discussion page and bear with us as we try to fix everything.<br />
<font size=-2>[[Old_News|(Old News)]]</font><br />
== Contacting the WikiTI Administration ==<br />
If you wish to contact the maintainers of WikiTI, for any reason, on IRC, please join #WikiTI on EFnet. If you do not have an IRC client, [http://chat.efnet.info/ use this]. You can find email addresses and IM names on each [[Special:Listadmins|administrator's]] User page (soon), or just leave a message on their Talk page.<br />
<br />
== Disclaimer ==<br />
WikiTI is not in any way affiliated with Texas Instruments Inc, or any of its subsidiaries, including the educational products division. No guarantee to accuracy is made of the information herein. Use at your own risk. [[Disclaimer|(Full Disclaimer)]]</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=Old_News
Old News
2008-09-23T05:51:48Z
<p>AndyJ: copied all of the news here</p>
<hr />
<div>{{wikify}}<br />
<font size=-2>[[WikiTI_Home|(New News)]]</font><br />
* '''September 23, 2008 - ([[User:AndyJ|Andy Janata]]):''' Sorry for the long delay in updates. I have upgraded MediaWiki to the latest version that runs on PHP4. This, unfortunately, is already over a year old. Hopefully this will cut down on the spam a bit. If you find anything broken because up this update, please contact me at (ajanata) [AT] 'gmail' {FULLSTOP} &lt;com&gt;. Also, I have promoted [[User:Brandonw|Brandon]] and [[User:FloppusMaximus|FloppusMaximus]] to sysops.<br />
* '''March 13, 2006 - ([[User:Dan Englender|Dan Englender]]):''' To help reduce spam, you must now [[Special:Confirmemail|confirm your email]] address once before editing any pages. You should only have to do this once. If you have any problems with this feature please email wikiti AT mail DOT denglend DOT net. Sorry for any inconvenience.<br />
* '''March 13, 2006 - ([[User:Dan Englender|Dan Englender]]):''' WikiTI has been upgraded from MediaWiki 1.4.0 to 1.5.7 for security concerns and new features. If you find anything that doesn't work like it used to, please make a note on the discussion page and bear with us as we try to fix everything.<br />
* '''February 23, 2006 - ([[User:AndyJ|Andy Janata]]):''' You are now required to log in to edit any pages. Hopefully this will put an end to the spam.<br />
* '''April 12, 2005 - ([[User:Dan Englender|Dan Englender]]):''' There are now more than '''100''' [[:Category:83Plus:BCALLs:By Name|TI-83 Plus BCALLs]] in the database! Help this impressive number grow by [[Contributing|adding some more]]! <br />
* '''April 4, 2005 - 22:02 GMT ([[User:JasonM|JasonM]]):''' Caching disabled. <br />
* '''April 4, 2005 - 21:45 GMT ([[User:JasonM|JasonM]]):''' Category listings are now case-insensitive.</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=WikiTI_Home
WikiTI Home
2008-09-23T05:51:34Z
<p>AndyJ: mediawiki upgrade</p>
<hr />
<div>Welcome to WikiTI, a Wiki for programmers and hardware hackers of Texas Instruments's graphing calculators. WikiTI’s goal is to serve as a central place for the discussion and exploration of the undocumented features of the TI-OS and hardware. To browse our documentation, you can click the "Calculator Documentation" link to the left.<br />
<br />
Any programmer or hacker is free to contribute any [[Calculator_Documentation|documentation]] of the TI-OS, even if the information is incomplete or possibly wrong. For more information, see our page on [[Contributing]]. Not sure where to start contributing? Check out the list of [[Special:Wantedpages|Wanted Pages]] that are linked to but don't yet exist, the list of [[:Category:Stubs|stub pages]] that need filled out, the list of [[:Category:Missing Information|pages with missing information]], and the list of [[:Category:Wikify|pages that need to be formatted]].<br />
<br />
== News ==<br />
<br />
* '''September 23, 2008 - ([[User:AndyJ|Andy Janata]]):''' Sorry for the long delay in updates. I have upgraded MediaWiki to the latest version that runs on PHP4. This, unfortunately, is already over a year old. Hopefully this will cut down on the spam a bit. If you find anything broken because up this update, please contact me at (ajanata) [AT] 'gmail' {FULLSTOP} &lt;com&gt;. Also, I have promoted [[User:Brandonw|Brandon]] and [[User:FloppusMaximus|FloppusMaximus]] to sysops.<br />
* '''March 13, 2006 - ([[User:Dan Englender|Dan Englender]]):''' To help reduce spam, you must now [[Special:Confirmemail|confirm your email]] address once before editing any pages. You should only have to do this once. If you have any problems with this feature please email wikiti AT mail DOT denglend DOT net. Sorry for any inconvenience.<br />
* '''March 13, 2006 - ([[User:Dan Englender|Dan Englender]]):''' WikiTI has been upgraded from MediaWiki 1.4.0 to 1.5.7 for security concerns and new features. If you find anything that doesn't work like it used to, please make a note on the discussion page and bear with us as we try to fix everything.<br />
<font size=-2>[[Old_News|(Old News)]]</font><br />
== Contacting the WikiTI Administration ==<br />
If you wish to contact the maintainers of WikiTI, for any reason, on IRC, please join #WikiTI on EFnet. If you do not have an IRC client, [http://chat.efnet.info/ use this]. You can find email addresses and IM names on each [[Special:Listadmins|administrator's]] User page (soon), or just leave a message on their Talk page.<br />
<br />
== Disclaimer ==<br />
WikiTI is not in any way affiliated with Texas Instruments Inc, or any of its subsidiaries, including the educational products division. No guarantee to accuracy is made of the information herein. Use at your own risk. [[Disclaimer|(Full Disclaimer)]]</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=83Plus:OS:Dialog_context
83Plus:OS:Dialog context
2008-04-18T16:18:45Z
<p>AndyJ: punctuation</p>
<hr />
<div>[[Category:83Plus:OS_Information|Dialog context]]<br />
This Documentation is for use with the [[:Category:83Plus:BCALLs:By_Name:Dialog|Dialog BCALLS]].<br />
<br />
== General Info ==<br />
To start this context, load a menu structure* to ramCode/[[83Plus:RAM:8000|appData]], BCALL [[83Plus:BCALLs:4C06|DialogInit]] and then BCALL [[83Plus:BCALLs:4C03|StartDialog]].<br />
You choose whether the run indicator is displayed and whether contexts are allowed (appAllowContext,(iy+appFlags)).<br />
It is imperative that (cxCurApp) be one of the allowed values (use 58h=kExtApps).<br />
<br />
If kSolveRoot (SOLVE EDITOR), kStatEd (list editor), or kInfStat (inferential statistic editor) are pressed, the entire screen is redrawn and then the parser callback is called with A=1.<br />
<br />
If [UP], [DOWN], or [ENTER] are pressed, any entered number is parsed*.<br />
<br />
If [2nd]+[QUIT] is pressed, whatever has been entered will be parsed* (no errors thrown nor anything displayed) to OP1, the previous context vectors are restored, SP is restored from (spSave), and the run indicator is turned off.<br />
<br />
<br />
<br />
== Parsing the number ==<br />
ParseInp is called on the data entered, and OP1 is checked to make sure it is REAL (error thrown if not (and this may return to the edit)).<br />
A=0 is passed to the parser callback. B (8006h) is the index into a prompt structure (probably bID = 3). It is expected to return a value in A. Return zero to display the current line (string and number).<br />
It also copies the number in OP1 to the spot bNumIndex points to. If 0,(iy+2Eh) is set, the rest of the line is not erased (then NewLine).<br />
<br />
<br />
<br />
== Menu structure ==<br />
Load as many of these structures, one after the other (zero-terminated), to ramCode/[[83Plus:RAM:8000|appData]] in the order you want it displayed.<br />
Store the length-indexed strings in RAM as well (right after this structure, in ramCode/[[83Plus:RAM:8000|appData]]).<br />
<br />
bID can be from 1-6:<br />
bID = 1: display string (cannot select).<br />
bID = 2: display highlightable choices (as in the MODE context). A byte table at 8009h has to do with what is selected here.<br />
bID = 3: display prompt string and number.<br />
bID = 4: display highlightable string.<br />
bID = 5: display menu number (ex. "1:") and prompt string.<br />
bID = 6: hidden, skip displaying this entry.<br />
<br />
=== Prompt structure when bID = 1 ===<br />
DB bID ;<br />
DB bNumChoices ;probably always 1<br />
DB bUnknown ;<br />
DW wStringOffset ;offset from start of ramCode<br />
<br />
=== Prompt structure when bID = 2 ===<br />
DB bID ;<br />
DB bNumChoices ;<br />
DB bUnknown ;I think this is the number of rows to skip for next item, or something<br />
DW wStringOffset ;offset from start of ramCode /<br />
DB bColumn ;column to display string (this is probably ignored) \ There are bNumChoices of these.<br />
<br />
=== Prompt structure when bID = 3 ===<br />
DB bID ;<br />
DB bNumChoices ;probably always 1<br />
DB bNumIndex ;<br />
DW wStringOffset ;offset from start of ramCode<br />
<br />
=== Prompt structure when bID = 4 ===<br />
DB bID ;<br />
DB bNumChoices ;probably always 1<br />
DB bUnknown ;<br />
DW wStringOffset ;offset from start of ramCode<br />
<br />
=== Prompt structure when bID = 5 ===<br />
DB bID ;<br />
DB bNumEntries ;probably always 1<br />
DB bMenuItemNum ;1 for "1:", 2 for "2:", etc.<br />
DW wStringOffset ;offset from start of ramCode<br />
<br />
=== Prompt structure when bID = 6 ===<br />
DB bID ;<br />
DB bNumChoices ;<br />
DB bUnknown ;<br />
DW wStringOffset ;offset from start of ramCode < There are bNumChoices of these.<br />
<br />
8038h: bNumIndex above is an offset into a list of floating-point numbers:<br />
DB 00h,80h,00h,00h,00h,00h,00h,00h,00h<br />
== Examples ==<br />
=== Example Code ===<br />
hookBackup equ appBackUpScreen<br />
.db 0BBh,6Dh<br />
ld hl,rawKeyHookPtr<br />
ld de,hookBackup<br />
ld bc,4<br />
ldir<br />
ld a,(flags+34h)<br />
ld (de),a<br />
ld a,(cxCurApp)<br />
push af<br />
ld a,58h<br />
ld (cxCurApp),a<br />
ld hl,structStart<br />
ld de,ramCode<br />
ld bc,structEnd-structStart<br />
ldir<br />
ld hl,dialogCallback<br />
in a,(6)<br />
bcall(_DialogInit)<br />
bcall(_runIndicOff)<br />
bcall(_StartDialog)<br />
bcall(_cursorOff)<br />
bcall(_clrLCDFull)<br />
res appCurWord,(iy+appFlags)<br />
bcall(_ClrTxtShd)<br />
ld hl,cmdShadow<br />
ld de,cmdShadow+1<br />
ld (hl),' '<br />
ld bc,127<br />
ldir<br />
pop af<br />
ld (cxCurApp),a<br />
ld hl,hookBackup<br />
ld de,rawKeyHookPtr<br />
ld bc,4<br />
ldir<br />
ld a,(hl)<br />
ld (flags+34h),a<br />
xor a<br />
bcall(_GetDialogNumOP1)<br />
ld hl,0<br />
ld (penCol),hl<br />
ld a,9<br />
bcall(_DispOP1a)<br />
dialogCallback:<br />
xor a<br />
ret<br />
structStart:<br />
;put your dialog data here<br />
structEnd:<br />
=== Example Table ===<br />
structStart:<br />
.db 1<br />
.db 1<br />
.db 1<br />
.dw sOptions-structStart<br />
.db 5<br />
.db 1<br />
.db 1<br />
.dw sItem1-structStart<br />
.db 5<br />
.db 1<br />
.db 2<br />
.dw sItem2-structStart<br />
.db 2<br />
.db 3<br />
.db 1<br />
.dw sSelect-structStart<br />
.dw sOpt1-structStart<br />
.dw sOpt2-structStart<br />
.db 3<br />
.db 1<br />
.db 0<br />
.dw sNum-structStart<br />
.db 4<br />
.db 1<br />
.db 1<br />
.dw sDone-structStart<br />
.db 0<br />
sOptions:<br />
.db 7,"OPTIONS"<br />
sItem1: .db 5,"Item1"<br />
sItem2: .db 5,"Item2"<br />
sSelect:<br />
.db 6,"Opts: "<br />
sOpt1: .db 4,"Opt1"<br />
sOpt2: .db 4,"Opt2"<br />
sNum: .db 4,"Num="<br />
sDone: .db 4,"Done"<br />
structEnd:<br />
<br />
== Credits ==<br />
* Thanks to BrandonW for finding out all this info on the dialog BCALLs and the for the example code, though apparently Detached Solutions knew it all along.</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=83Plus:OS:Dialog_context
83Plus:OS:Dialog context
2008-04-18T16:18:22Z
<p>AndyJ: /* Credits */ capitalization</p>
<hr />
<div>[[Category:83Plus:OS_Information|Dialog context]]<br />
This Documentation is for use with the [[:Category:83Plus:BCALLs:By_Name:Dialog|Dialog BCALLS]]<br />
<br />
== General Info ==<br />
To start this context, load a menu structure* to ramCode/[[83Plus:RAM:8000|appData]], BCALL [[83Plus:BCALLs:4C06|DialogInit]] and then BCALL [[83Plus:BCALLs:4C03|StartDialog]].<br />
You choose whether the run indicator is displayed and whether contexts are allowed (appAllowContext,(iy+appFlags)).<br />
It is imperative that (cxCurApp) be one of the allowed values (use 58h=kExtApps).<br />
<br />
If kSolveRoot (SOLVE EDITOR), kStatEd (list editor), or kInfStat (inferential statistic editor) are pressed, the entire screen is redrawn and then the parser callback is called with A=1.<br />
<br />
If [UP], [DOWN], or [ENTER] are pressed, any entered number is parsed*.<br />
<br />
If [2nd]+[QUIT] is pressed, whatever has been entered will be parsed* (no errors thrown nor anything displayed) to OP1, the previous context vectors are restored, SP is restored from (spSave), and the run indicator is turned off.<br />
<br />
<br />
<br />
== Parsing the number ==<br />
ParseInp is called on the data entered, and OP1 is checked to make sure it is REAL (error thrown if not (and this may return to the edit)).<br />
A=0 is passed to the parser callback. B (8006h) is the index into a prompt structure (probably bID = 3). It is expected to return a value in A. Return zero to display the current line (string and number).<br />
It also copies the number in OP1 to the spot bNumIndex points to. If 0,(iy+2Eh) is set, the rest of the line is not erased (then NewLine).<br />
<br />
<br />
<br />
== Menu structure ==<br />
Load as many of these structures, one after the other (zero-terminated), to ramCode/[[83Plus:RAM:8000|appData]] in the order you want it displayed.<br />
Store the length-indexed strings in RAM as well (right after this structure, in ramCode/[[83Plus:RAM:8000|appData]]).<br />
<br />
bID can be from 1-6:<br />
bID = 1: display string (cannot select).<br />
bID = 2: display highlightable choices (as in the MODE context). A byte table at 8009h has to do with what is selected here.<br />
bID = 3: display prompt string and number.<br />
bID = 4: display highlightable string.<br />
bID = 5: display menu number (ex. "1:") and prompt string.<br />
bID = 6: hidden, skip displaying this entry.<br />
<br />
=== Prompt structure when bID = 1 ===<br />
DB bID ;<br />
DB bNumChoices ;probably always 1<br />
DB bUnknown ;<br />
DW wStringOffset ;offset from start of ramCode<br />
<br />
=== Prompt structure when bID = 2 ===<br />
DB bID ;<br />
DB bNumChoices ;<br />
DB bUnknown ;I think this is the number of rows to skip for next item, or something<br />
DW wStringOffset ;offset from start of ramCode /<br />
DB bColumn ;column to display string (this is probably ignored) \ There are bNumChoices of these.<br />
<br />
=== Prompt structure when bID = 3 ===<br />
DB bID ;<br />
DB bNumChoices ;probably always 1<br />
DB bNumIndex ;<br />
DW wStringOffset ;offset from start of ramCode<br />
<br />
=== Prompt structure when bID = 4 ===<br />
DB bID ;<br />
DB bNumChoices ;probably always 1<br />
DB bUnknown ;<br />
DW wStringOffset ;offset from start of ramCode<br />
<br />
=== Prompt structure when bID = 5 ===<br />
DB bID ;<br />
DB bNumEntries ;probably always 1<br />
DB bMenuItemNum ;1 for "1:", 2 for "2:", etc.<br />
DW wStringOffset ;offset from start of ramCode<br />
<br />
=== Prompt structure when bID = 6 ===<br />
DB bID ;<br />
DB bNumChoices ;<br />
DB bUnknown ;<br />
DW wStringOffset ;offset from start of ramCode < There are bNumChoices of these.<br />
<br />
8038h: bNumIndex above is an offset into a list of floating-point numbers:<br />
DB 00h,80h,00h,00h,00h,00h,00h,00h,00h<br />
== Examples ==<br />
=== Example Code ===<br />
hookBackup equ appBackUpScreen<br />
.db 0BBh,6Dh<br />
ld hl,rawKeyHookPtr<br />
ld de,hookBackup<br />
ld bc,4<br />
ldir<br />
ld a,(flags+34h)<br />
ld (de),a<br />
ld a,(cxCurApp)<br />
push af<br />
ld a,58h<br />
ld (cxCurApp),a<br />
ld hl,structStart<br />
ld de,ramCode<br />
ld bc,structEnd-structStart<br />
ldir<br />
ld hl,dialogCallback<br />
in a,(6)<br />
bcall(_DialogInit)<br />
bcall(_runIndicOff)<br />
bcall(_StartDialog)<br />
bcall(_cursorOff)<br />
bcall(_clrLCDFull)<br />
res appCurWord,(iy+appFlags)<br />
bcall(_ClrTxtShd)<br />
ld hl,cmdShadow<br />
ld de,cmdShadow+1<br />
ld (hl),' '<br />
ld bc,127<br />
ldir<br />
pop af<br />
ld (cxCurApp),a<br />
ld hl,hookBackup<br />
ld de,rawKeyHookPtr<br />
ld bc,4<br />
ldir<br />
ld a,(hl)<br />
ld (flags+34h),a<br />
xor a<br />
bcall(_GetDialogNumOP1)<br />
ld hl,0<br />
ld (penCol),hl<br />
ld a,9<br />
bcall(_DispOP1a)<br />
dialogCallback:<br />
xor a<br />
ret<br />
structStart:<br />
;put your dialog data here<br />
structEnd:<br />
=== Example Table ===<br />
structStart:<br />
.db 1<br />
.db 1<br />
.db 1<br />
.dw sOptions-structStart<br />
.db 5<br />
.db 1<br />
.db 1<br />
.dw sItem1-structStart<br />
.db 5<br />
.db 1<br />
.db 2<br />
.dw sItem2-structStart<br />
.db 2<br />
.db 3<br />
.db 1<br />
.dw sSelect-structStart<br />
.dw sOpt1-structStart<br />
.dw sOpt2-structStart<br />
.db 3<br />
.db 1<br />
.db 0<br />
.dw sNum-structStart<br />
.db 4<br />
.db 1<br />
.db 1<br />
.dw sDone-structStart<br />
.db 0<br />
sOptions:<br />
.db 7,"OPTIONS"<br />
sItem1: .db 5,"Item1"<br />
sItem2: .db 5,"Item2"<br />
sSelect:<br />
.db 6,"Opts: "<br />
sOpt1: .db 4,"Opt1"<br />
sOpt2: .db 4,"Opt2"<br />
sNum: .db 4,"Num="<br />
sDone: .db 4,"Done"<br />
structEnd:<br />
<br />
== Credits ==<br />
* Thanks to BrandonW for finding out all this info on the dialog BCALLs and the for the example code, though apparently Detached Solutions knew it all along.</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=83Plus:OS:Dialog_context
83Plus:OS:Dialog context
2008-04-18T16:17:41Z
<p>AndyJ: /* Prompt structure when bID = 5 */ formatting</p>
<hr />
<div>[[Category:83Plus:OS_Information|Dialog context]]<br />
This Documentation is for use with the [[:Category:83Plus:BCALLs:By_Name:Dialog|Dialog BCALLS]]<br />
<br />
== General Info ==<br />
To start this context, load a menu structure* to ramCode/[[83Plus:RAM:8000|appData]], BCALL [[83Plus:BCALLs:4C06|DialogInit]] and then BCALL [[83Plus:BCALLs:4C03|StartDialog]].<br />
You choose whether the run indicator is displayed and whether contexts are allowed (appAllowContext,(iy+appFlags)).<br />
It is imperative that (cxCurApp) be one of the allowed values (use 58h=kExtApps).<br />
<br />
If kSolveRoot (SOLVE EDITOR), kStatEd (list editor), or kInfStat (inferential statistic editor) are pressed, the entire screen is redrawn and then the parser callback is called with A=1.<br />
<br />
If [UP], [DOWN], or [ENTER] are pressed, any entered number is parsed*.<br />
<br />
If [2nd]+[QUIT] is pressed, whatever has been entered will be parsed* (no errors thrown nor anything displayed) to OP1, the previous context vectors are restored, SP is restored from (spSave), and the run indicator is turned off.<br />
<br />
<br />
<br />
== Parsing the number ==<br />
ParseInp is called on the data entered, and OP1 is checked to make sure it is REAL (error thrown if not (and this may return to the edit)).<br />
A=0 is passed to the parser callback. B (8006h) is the index into a prompt structure (probably bID = 3). It is expected to return a value in A. Return zero to display the current line (string and number).<br />
It also copies the number in OP1 to the spot bNumIndex points to. If 0,(iy+2Eh) is set, the rest of the line is not erased (then NewLine).<br />
<br />
<br />
<br />
== Menu structure ==<br />
Load as many of these structures, one after the other (zero-terminated), to ramCode/[[83Plus:RAM:8000|appData]] in the order you want it displayed.<br />
Store the length-indexed strings in RAM as well (right after this structure, in ramCode/[[83Plus:RAM:8000|appData]]).<br />
<br />
bID can be from 1-6:<br />
bID = 1: display string (cannot select).<br />
bID = 2: display highlightable choices (as in the MODE context). A byte table at 8009h has to do with what is selected here.<br />
bID = 3: display prompt string and number.<br />
bID = 4: display highlightable string.<br />
bID = 5: display menu number (ex. "1:") and prompt string.<br />
bID = 6: hidden, skip displaying this entry.<br />
<br />
=== Prompt structure when bID = 1 ===<br />
DB bID ;<br />
DB bNumChoices ;probably always 1<br />
DB bUnknown ;<br />
DW wStringOffset ;offset from start of ramCode<br />
<br />
=== Prompt structure when bID = 2 ===<br />
DB bID ;<br />
DB bNumChoices ;<br />
DB bUnknown ;I think this is the number of rows to skip for next item, or something<br />
DW wStringOffset ;offset from start of ramCode /<br />
DB bColumn ;column to display string (this is probably ignored) \ There are bNumChoices of these.<br />
<br />
=== Prompt structure when bID = 3 ===<br />
DB bID ;<br />
DB bNumChoices ;probably always 1<br />
DB bNumIndex ;<br />
DW wStringOffset ;offset from start of ramCode<br />
<br />
=== Prompt structure when bID = 4 ===<br />
DB bID ;<br />
DB bNumChoices ;probably always 1<br />
DB bUnknown ;<br />
DW wStringOffset ;offset from start of ramCode<br />
<br />
=== Prompt structure when bID = 5 ===<br />
DB bID ;<br />
DB bNumEntries ;probably always 1<br />
DB bMenuItemNum ;1 for "1:", 2 for "2:", etc.<br />
DW wStringOffset ;offset from start of ramCode<br />
<br />
=== Prompt structure when bID = 6 ===<br />
DB bID ;<br />
DB bNumChoices ;<br />
DB bUnknown ;<br />
DW wStringOffset ;offset from start of ramCode < There are bNumChoices of these.<br />
<br />
8038h: bNumIndex above is an offset into a list of floating-point numbers:<br />
DB 00h,80h,00h,00h,00h,00h,00h,00h,00h<br />
== Examples ==<br />
=== Example Code ===<br />
hookBackup equ appBackUpScreen<br />
.db 0BBh,6Dh<br />
ld hl,rawKeyHookPtr<br />
ld de,hookBackup<br />
ld bc,4<br />
ldir<br />
ld a,(flags+34h)<br />
ld (de),a<br />
ld a,(cxCurApp)<br />
push af<br />
ld a,58h<br />
ld (cxCurApp),a<br />
ld hl,structStart<br />
ld de,ramCode<br />
ld bc,structEnd-structStart<br />
ldir<br />
ld hl,dialogCallback<br />
in a,(6)<br />
bcall(_DialogInit)<br />
bcall(_runIndicOff)<br />
bcall(_StartDialog)<br />
bcall(_cursorOff)<br />
bcall(_clrLCDFull)<br />
res appCurWord,(iy+appFlags)<br />
bcall(_ClrTxtShd)<br />
ld hl,cmdShadow<br />
ld de,cmdShadow+1<br />
ld (hl),' '<br />
ld bc,127<br />
ldir<br />
pop af<br />
ld (cxCurApp),a<br />
ld hl,hookBackup<br />
ld de,rawKeyHookPtr<br />
ld bc,4<br />
ldir<br />
ld a,(hl)<br />
ld (flags+34h),a<br />
xor a<br />
bcall(_GetDialogNumOP1)<br />
ld hl,0<br />
ld (penCol),hl<br />
ld a,9<br />
bcall(_DispOP1a)<br />
dialogCallback:<br />
xor a<br />
ret<br />
structStart:<br />
;put your dialog data here<br />
structEnd:<br />
=== Example Table ===<br />
structStart:<br />
.db 1<br />
.db 1<br />
.db 1<br />
.dw sOptions-structStart<br />
.db 5<br />
.db 1<br />
.db 1<br />
.dw sItem1-structStart<br />
.db 5<br />
.db 1<br />
.db 2<br />
.dw sItem2-structStart<br />
.db 2<br />
.db 3<br />
.db 1<br />
.dw sSelect-structStart<br />
.dw sOpt1-structStart<br />
.dw sOpt2-structStart<br />
.db 3<br />
.db 1<br />
.db 0<br />
.dw sNum-structStart<br />
.db 4<br />
.db 1<br />
.db 1<br />
.dw sDone-structStart<br />
.db 0<br />
sOptions:<br />
.db 7,"OPTIONS"<br />
sItem1: .db 5,"Item1"<br />
sItem2: .db 5,"Item2"<br />
sSelect:<br />
.db 6,"Opts: "<br />
sOpt1: .db 4,"Opt1"<br />
sOpt2: .db 4,"Opt2"<br />
sNum: .db 4,"Num="<br />
sDone: .db 4,"Done"<br />
structEnd:<br />
<br />
== Credits ==<br />
* Thanks to BrandonW for finding out all this info on the dialog BCALLs and the for the example code, though apparently Detached solutions knew it all along.</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=83Plus:OS:Dialog_context
83Plus:OS:Dialog context
2008-04-18T16:17:25Z
<p>AndyJ: /* Prompt structure when bID = 2 */ formatting</p>
<hr />
<div>[[Category:83Plus:OS_Information|Dialog context]]<br />
This Documentation is for use with the [[:Category:83Plus:BCALLs:By_Name:Dialog|Dialog BCALLS]]<br />
<br />
== General Info ==<br />
To start this context, load a menu structure* to ramCode/[[83Plus:RAM:8000|appData]], BCALL [[83Plus:BCALLs:4C06|DialogInit]] and then BCALL [[83Plus:BCALLs:4C03|StartDialog]].<br />
You choose whether the run indicator is displayed and whether contexts are allowed (appAllowContext,(iy+appFlags)).<br />
It is imperative that (cxCurApp) be one of the allowed values (use 58h=kExtApps).<br />
<br />
If kSolveRoot (SOLVE EDITOR), kStatEd (list editor), or kInfStat (inferential statistic editor) are pressed, the entire screen is redrawn and then the parser callback is called with A=1.<br />
<br />
If [UP], [DOWN], or [ENTER] are pressed, any entered number is parsed*.<br />
<br />
If [2nd]+[QUIT] is pressed, whatever has been entered will be parsed* (no errors thrown nor anything displayed) to OP1, the previous context vectors are restored, SP is restored from (spSave), and the run indicator is turned off.<br />
<br />
<br />
<br />
== Parsing the number ==<br />
ParseInp is called on the data entered, and OP1 is checked to make sure it is REAL (error thrown if not (and this may return to the edit)).<br />
A=0 is passed to the parser callback. B (8006h) is the index into a prompt structure (probably bID = 3). It is expected to return a value in A. Return zero to display the current line (string and number).<br />
It also copies the number in OP1 to the spot bNumIndex points to. If 0,(iy+2Eh) is set, the rest of the line is not erased (then NewLine).<br />
<br />
<br />
<br />
== Menu structure ==<br />
Load as many of these structures, one after the other (zero-terminated), to ramCode/[[83Plus:RAM:8000|appData]] in the order you want it displayed.<br />
Store the length-indexed strings in RAM as well (right after this structure, in ramCode/[[83Plus:RAM:8000|appData]]).<br />
<br />
bID can be from 1-6:<br />
bID = 1: display string (cannot select).<br />
bID = 2: display highlightable choices (as in the MODE context). A byte table at 8009h has to do with what is selected here.<br />
bID = 3: display prompt string and number.<br />
bID = 4: display highlightable string.<br />
bID = 5: display menu number (ex. "1:") and prompt string.<br />
bID = 6: hidden, skip displaying this entry.<br />
<br />
=== Prompt structure when bID = 1 ===<br />
DB bID ;<br />
DB bNumChoices ;probably always 1<br />
DB bUnknown ;<br />
DW wStringOffset ;offset from start of ramCode<br />
<br />
=== Prompt structure when bID = 2 ===<br />
DB bID ;<br />
DB bNumChoices ;<br />
DB bUnknown ;I think this is the number of rows to skip for next item, or something<br />
DW wStringOffset ;offset from start of ramCode /<br />
DB bColumn ;column to display string (this is probably ignored) \ There are bNumChoices of these.<br />
<br />
=== Prompt structure when bID = 3 ===<br />
DB bID ;<br />
DB bNumChoices ;probably always 1<br />
DB bNumIndex ;<br />
DW wStringOffset ;offset from start of ramCode<br />
<br />
=== Prompt structure when bID = 4 ===<br />
DB bID ;<br />
DB bNumChoices ;probably always 1<br />
DB bUnknown ;<br />
DW wStringOffset ;offset from start of ramCode<br />
<br />
=== Prompt structure when bID = 5 ===<br />
DB bID ;<br />
DB bNumEntries ;probably always 1<br />
DB bMenuItemNum ;1 for "1:", 2 for "2:", etc.<br />
DW wStringOffset ;offset from start of ramCode<br />
<br />
=== Prompt structure when bID = 6 ===<br />
DB bID ;<br />
DB bNumChoices ;<br />
DB bUnknown ;<br />
DW wStringOffset ;offset from start of ramCode < There are bNumChoices of these.<br />
<br />
8038h: bNumIndex above is an offset into a list of floating-point numbers:<br />
DB 00h,80h,00h,00h,00h,00h,00h,00h,00h<br />
== Examples ==<br />
=== Example Code ===<br />
hookBackup equ appBackUpScreen<br />
.db 0BBh,6Dh<br />
ld hl,rawKeyHookPtr<br />
ld de,hookBackup<br />
ld bc,4<br />
ldir<br />
ld a,(flags+34h)<br />
ld (de),a<br />
ld a,(cxCurApp)<br />
push af<br />
ld a,58h<br />
ld (cxCurApp),a<br />
ld hl,structStart<br />
ld de,ramCode<br />
ld bc,structEnd-structStart<br />
ldir<br />
ld hl,dialogCallback<br />
in a,(6)<br />
bcall(_DialogInit)<br />
bcall(_runIndicOff)<br />
bcall(_StartDialog)<br />
bcall(_cursorOff)<br />
bcall(_clrLCDFull)<br />
res appCurWord,(iy+appFlags)<br />
bcall(_ClrTxtShd)<br />
ld hl,cmdShadow<br />
ld de,cmdShadow+1<br />
ld (hl),' '<br />
ld bc,127<br />
ldir<br />
pop af<br />
ld (cxCurApp),a<br />
ld hl,hookBackup<br />
ld de,rawKeyHookPtr<br />
ld bc,4<br />
ldir<br />
ld a,(hl)<br />
ld (flags+34h),a<br />
xor a<br />
bcall(_GetDialogNumOP1)<br />
ld hl,0<br />
ld (penCol),hl<br />
ld a,9<br />
bcall(_DispOP1a)<br />
dialogCallback:<br />
xor a<br />
ret<br />
structStart:<br />
;put your dialog data here<br />
structEnd:<br />
=== Example Table ===<br />
structStart:<br />
.db 1<br />
.db 1<br />
.db 1<br />
.dw sOptions-structStart<br />
.db 5<br />
.db 1<br />
.db 1<br />
.dw sItem1-structStart<br />
.db 5<br />
.db 1<br />
.db 2<br />
.dw sItem2-structStart<br />
.db 2<br />
.db 3<br />
.db 1<br />
.dw sSelect-structStart<br />
.dw sOpt1-structStart<br />
.dw sOpt2-structStart<br />
.db 3<br />
.db 1<br />
.db 0<br />
.dw sNum-structStart<br />
.db 4<br />
.db 1<br />
.db 1<br />
.dw sDone-structStart<br />
.db 0<br />
sOptions:<br />
.db 7,"OPTIONS"<br />
sItem1: .db 5,"Item1"<br />
sItem2: .db 5,"Item2"<br />
sSelect:<br />
.db 6,"Opts: "<br />
sOpt1: .db 4,"Opt1"<br />
sOpt2: .db 4,"Opt2"<br />
sNum: .db 4,"Num="<br />
sDone: .db 4,"Done"<br />
structEnd:<br />
<br />
== Credits ==<br />
* Thanks to BrandonW for finding out all this info on the dialog BCALLs and the for the example code, though apparently Detached solutions knew it all along.</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4027
83Plus:BCALLs:4027
2008-04-18T16:14:52Z
<p>AndyJ: formatting and punctuation</p>
<hr />
<div>[[Category:83Plus:BCALLs:By Name|JForceCmdNoChar]]<br />
[[Category:83Plus:BCALLs:By Name:Utility|JForceCmdNoChar]]<br />
[[Category:83Plus:BCALLs:By Address|4027 - JForceCmdNoChar]]<br />
<br />
<br />
== Synopsis ==<br />
'''Official Name:''' JForceCmdNoChar<br />
<br />
'''BCALL Address:''' 4027<br />
<br />
Use "BJUMP", not "BCALL".<br />
<br />
Exits App and returns to OS.<br />
<br />
=== Inputs ===<br />
* None<br />
=== Outputs ===<br />
* None<br />
=== Destroys ===<br />
* All (but it doesn't matter)<br />
<br />
== Comments ==<br />
This is the proper way to exit an app<br />
<br />
== Example ==<br />
BJUMP JForceCmdNoChar</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=Talk:83Plus:BCALLs:51CD
Talk:83Plus:BCALLs:51CD
2008-01-02T17:59:01Z
<p>AndyJ: unsigned and formatting</p>
<hr />
<div>So... I'm not really sure why it bothers with the input paramter in A. When would you want less than the full number displayed? Who knows ...<br />
Also, someone can feel absolutely free to come up with a better name and rename this. {{unsigned|Dan Englender|03:23, 20 May 2005}}<br />
:I guess this parameter is used when there is more then 1MB of free archive on a TI84SE. I wonder why they added this bcall in 2.30... (TI83+(SE) was also displaying the free archive) {{unsigned|Igrek|09:15, 28 December 2007}}</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=Beginners
Beginners
2007-12-14T21:41:35Z
<p>AndyJ: /* Include files */ grammar</p>
<hr />
<div>Starting with assembly programming can be quite a pain. You need to find yourself an assembler, preferably a nice emulator, and lots of documentation. While this wiki provides you with a lot of documentation, and many [[TI websites|websites]] and [[:Category:Teams|teams]] can provide you with links to good tutorials, people keep asking the community how to get started. I hope this will answer their questions once and for all :)<br />
<br />
== Emulating ==<br />
<br />
=== Getting a ROM dump ===<br />
<br />
Getting a ROM dump is the essential first step of running a calculator emulator. Because the calculator operating system is intellectual property of Texas Instruments, it is illegal to distribute ROM images, but you can extract your own ROM image from your own calculator under "Fair use" regulations.<br />
<br />
To download your own ROM image from your calculator to your PC you need some software. Your options are:<br />
* [http://www.ticalc.org/archives/files/fileinfo/373/37341.html Rom8x]<br />
* Uhm... need to find some more ;)<br />
<br />
Ticalc.org has an excellent howto page on getting a ROM image [http://www.ticalc.org/programming/emulators/romdump.html here]. Or, you could do a Google search on something like TI83.rom, and see what comes up.<br />
<br />
Of course, if you want to develop an operating system yourself (if you're working on [[Vera]] for example) you don't need a ROM image.<br />
<br />
=== Choice of Emulator ===<br />
<br />
The second step is selecting an [[:Category:Emulators|emulator]] that suits you:<br />
<br />
* [[:Emulators:Virtual TI|Virtual TI]] - Long time favourite, but mostly because it was the only one<br />
* [[:Emulators:PindurTI|PindurTI]] - Very basic emulator with very good hardware emulation and animated screenshotting<br />
* [[:Emulators:Wabbitemu|WabbitEmu]] - The newest breed, with a very nice GUI and a port to MAC, Linux is on the way<br />
<br />
There are a few more, but these are the most popular. Virtual TI's emulation is quite poor compared to the others, but the others are still under development. It's usually best to have a few around so that in case you run into something unexpected you can get a second opinion from another emulator.<br />
<br />
Please read the respective README's on how to get your ROM image running in these emulators.<br />
<br />
== Assembler ==<br />
<br />
An assembler -- sometimes referred to as "compiler", though formally it is no such thing -- can assemble your source code into binaries for the Z80 processor that runs our calculators.<br />
<br />
=== Choice of assembler ===<br />
<br />
Once again, you'll have to make a choice. A few years ago, things were simple; there was TASM and nothing else, so you'd use TASM. These days we have TASM, Brass and Spasm (and probably a few others), all with subtle little differences and improvements, but the latter two are clearly superior to the old TASM. Brass is written in C# for .NET, and can run under Linux using Mono. Spasm was written in C, and will compile on most systems with the GNU toolchain.<br />
<br />
* Brass [http://kvince83.tengun.net/maxboard/viewforum.php?f=25 subforum], [http://benryves.com/bin/brass/ website] and [http://benryves.com/bin/brass/Brass.exe latest download]<br />
* Spasm [http://www.revsoft.org/phpBB2/viewforum.php?f=21 subforum] and [http://www.revsoft.org/wabbitspasm.zip latest download]<br />
<br />
=== Assembling source to binaries ===<br />
<br />
The syntax for assembling input.asm to either output.8xp or output.83p is:<br />
<br />
Brass.exe input.asm output.8?p<br />
<br />
or<br />
<br />
wabbitspasm input.asm output.8?p<br />
<br />
Both modern assemblers can output files in TI calculator specific formats, which TASM can not. Some versions of Spasm will do this automatically based on the output file extension, and in the case of Brass you can [http://benryves.com/bin/brass/directives/binarymode.htm specify] your output format in your source code:<br />
<br />
.binarymode TI8X<br />
<br />
=== Include files ===<br />
<br />
Include files contain predefined memory locations, locations of TI-OS calls and macros to make your life easier. Strictly speaking you don't need any, but without them you'll have to type in every address by hand (and either memorize them or look them up each time).<br />
<br />
Depending on which calculator model and which shell you want to develop for (Ion, MirageOS, Venus, etc.), you'll need to get some include files. For the sake of demonstration (and because most other shells can run them) we'll be choosing Ion for now. Developing for Ion also has the advantage that your applications can be compiled for Ti-83 and Ti-83+ (and relatives) without changing the source. Go [http://www.ticalc.org/archives/files/fileinfo/130/13058.html here] and download the zip file, which contains ion.inc. You'll also need the shell itself for testing.<br />
<br />
=== Hello World ===<br />
<br />
Save this file as hello.asm in the same directory as your assembler, for ease of testing:<br />
<br />
<pre>#define TI83P ; If you want to compile for Ti-83+ family calcs<br />
;#define TI83 ; If you want to compile for Ti-83, don't uncomment both!<br />
<br />
#include "ion.inc"<br />
<br />
; ====<br />
; Start of Ion header<br />
<br />
#ifdef TI83P<br />
.binarymode TI8X ; only required if you use Brass<br />
.org progstart-2<br />
.db $BB,$6D<br />
#else<br />
.binarymode TI83 ; only required if you use Brass<br />
.org progstart<br />
#endif<br />
ret<br />
jr nc,main<br />
title:<br />
.db "Hello World Test",0<br />
<br />
; End of Ion header<br />
; ====<br />
<br />
main:<br />
; Program execution starts here:<br />
bcall(_homeup)<br />
ld hl,string<br />
bcall(_puts)<br />
bcall(_getkey)<br />
ret<br />
<br />
string:<br />
.db "Hello world!",0<br />
</pre><br />
<br />
Open a console, cd to your directory and issue:<br />
<br />
<your assembler> hello.asm hello.8xp<br />
<br />
Now load hello.8xp into your emulator and try to run it with Ion.</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=Beginners
Beginners
2007-12-14T21:40:56Z
<p>AndyJ: /* Assembling source to binaries */</p>
<hr />
<div>Starting with assembly programming can be quite a pain. You need to find yourself an assembler, preferably a nice emulator, and lots of documentation. While this wiki provides you with a lot of documentation, and many [[TI websites|websites]] and [[:Category:Teams|teams]] can provide you with links to good tutorials, people keep asking the community how to get started. I hope this will answer their questions once and for all :)<br />
<br />
== Emulating ==<br />
<br />
=== Getting a ROM dump ===<br />
<br />
Getting a ROM dump is the essential first step of running a calculator emulator. Because the calculator operating system is intellectual property of Texas Instruments, it is illegal to distribute ROM images, but you can extract your own ROM image from your own calculator under "Fair use" regulations.<br />
<br />
To download your own ROM image from your calculator to your PC you need some software. Your options are:<br />
* [http://www.ticalc.org/archives/files/fileinfo/373/37341.html Rom8x]<br />
* Uhm... need to find some more ;)<br />
<br />
Ticalc.org has an excellent howto page on getting a ROM image [http://www.ticalc.org/programming/emulators/romdump.html here]. Or, you could do a Google search on something like TI83.rom, and see what comes up.<br />
<br />
Of course, if you want to develop an operating system yourself (if you're working on [[Vera]] for example) you don't need a ROM image.<br />
<br />
=== Choice of Emulator ===<br />
<br />
The second step is selecting an [[:Category:Emulators|emulator]] that suits you:<br />
<br />
* [[:Emulators:Virtual TI|Virtual TI]] - Long time favourite, but mostly because it was the only one<br />
* [[:Emulators:PindurTI|PindurTI]] - Very basic emulator with very good hardware emulation and animated screenshotting<br />
* [[:Emulators:Wabbitemu|WabbitEmu]] - The newest breed, with a very nice GUI and a port to MAC, Linux is on the way<br />
<br />
There are a few more, but these are the most popular. Virtual TI's emulation is quite poor compared to the others, but the others are still under development. It's usually best to have a few around so that in case you run into something unexpected you can get a second opinion from another emulator.<br />
<br />
Please read the respective README's on how to get your ROM image running in these emulators.<br />
<br />
== Assembler ==<br />
<br />
An assembler -- sometimes referred to as "compiler", though formally it is no such thing -- can assemble your source code into binaries for the Z80 processor that runs our calculators.<br />
<br />
=== Choice of assembler ===<br />
<br />
Once again, you'll have to make a choice. A few years ago, things were simple; there was TASM and nothing else, so you'd use TASM. These days we have TASM, Brass and Spasm (and probably a few others), all with subtle little differences and improvements, but the latter two are clearly superior to the old TASM. Brass is written in C# for .NET, and can run under Linux using Mono. Spasm was written in C, and will compile on most systems with the GNU toolchain.<br />
<br />
* Brass [http://kvince83.tengun.net/maxboard/viewforum.php?f=25 subforum], [http://benryves.com/bin/brass/ website] and [http://benryves.com/bin/brass/Brass.exe latest download]<br />
* Spasm [http://www.revsoft.org/phpBB2/viewforum.php?f=21 subforum] and [http://www.revsoft.org/wabbitspasm.zip latest download]<br />
<br />
=== Assembling source to binaries ===<br />
<br />
The syntax for assembling input.asm to either output.8xp or output.83p is:<br />
<br />
Brass.exe input.asm output.8?p<br />
<br />
or<br />
<br />
wabbitspasm input.asm output.8?p<br />
<br />
Both modern assemblers can output files in TI calculator specific formats, which TASM can not. Some versions of Spasm will do this automatically based on the output file extension, and in the case of Brass you can [http://benryves.com/bin/brass/directives/binarymode.htm specify] your output format in your source code:<br />
<br />
.binarymode TI8X<br />
<br />
=== Include files ===<br />
<br />
Include files contain predefined memory locations, locations of TI OS calls and macro's to make your life easier. Strictly speaking you don't need any, but without them you'll have to type in every address by hand (and either memorize them or look them up each time).<br />
<br />
Depending on which calculator model and which shell you want to develop for (Ion, MirageOS, Venus, etc) you'll need to get some include files. For the sake of demonstration (and because most other shells can run them) we'll be choosing Ion for now. Developing for Ion also has the advantage that your applications can be compiled for Ti-83 and Ti-83+ (and relatives) without changing the source. Go [http://www.ticalc.org/archives/files/fileinfo/130/13058.html here] and download the zip file, which contains ion.inc. You'll also need the shell itself for testing.<br />
<br />
=== Hello World ===<br />
<br />
Save this file as hello.asm in the same directory as your assembler, for ease of testing:<br />
<br />
<pre>#define TI83P ; If you want to compile for Ti-83+ family calcs<br />
;#define TI83 ; If you want to compile for Ti-83, don't uncomment both!<br />
<br />
#include "ion.inc"<br />
<br />
; ====<br />
; Start of Ion header<br />
<br />
#ifdef TI83P<br />
.binarymode TI8X ; only required if you use Brass<br />
.org progstart-2<br />
.db $BB,$6D<br />
#else<br />
.binarymode TI83 ; only required if you use Brass<br />
.org progstart<br />
#endif<br />
ret<br />
jr nc,main<br />
title:<br />
.db "Hello World Test",0<br />
<br />
; End of Ion header<br />
; ====<br />
<br />
main:<br />
; Program execution starts here:<br />
bcall(_homeup)<br />
ld hl,string<br />
bcall(_puts)<br />
bcall(_getkey)<br />
ret<br />
<br />
string:<br />
.db "Hello world!",0<br />
</pre><br />
<br />
Open a console, cd to your directory and issue:<br />
<br />
<your assembler> hello.asm hello.8xp<br />
<br />
Now load hello.8xp into your emulator and try to run it with Ion.</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=Beginners
Beginners
2007-12-14T21:40:09Z
<p>AndyJ: /* Choice of assembler */ spasm should compile with the gnu toolchain anywhere</p>
<hr />
<div>Starting with assembly programming can be quite a pain. You need to find yourself an assembler, preferably a nice emulator, and lots of documentation. While this wiki provides you with a lot of documentation, and many [[TI websites|websites]] and [[:Category:Teams|teams]] can provide you with links to good tutorials, people keep asking the community how to get started. I hope this will answer their questions once and for all :)<br />
<br />
== Emulating ==<br />
<br />
=== Getting a ROM dump ===<br />
<br />
Getting a ROM dump is the essential first step of running a calculator emulator. Because the calculator operating system is intellectual property of Texas Instruments, it is illegal to distribute ROM images, but you can extract your own ROM image from your own calculator under "Fair use" regulations.<br />
<br />
To download your own ROM image from your calculator to your PC you need some software. Your options are:<br />
* [http://www.ticalc.org/archives/files/fileinfo/373/37341.html Rom8x]<br />
* Uhm... need to find some more ;)<br />
<br />
Ticalc.org has an excellent howto page on getting a ROM image [http://www.ticalc.org/programming/emulators/romdump.html here]. Or, you could do a Google search on something like TI83.rom, and see what comes up.<br />
<br />
Of course, if you want to develop an operating system yourself (if you're working on [[Vera]] for example) you don't need a ROM image.<br />
<br />
=== Choice of Emulator ===<br />
<br />
The second step is selecting an [[:Category:Emulators|emulator]] that suits you:<br />
<br />
* [[:Emulators:Virtual TI|Virtual TI]] - Long time favourite, but mostly because it was the only one<br />
* [[:Emulators:PindurTI|PindurTI]] - Very basic emulator with very good hardware emulation and animated screenshotting<br />
* [[:Emulators:Wabbitemu|WabbitEmu]] - The newest breed, with a very nice GUI and a port to MAC, Linux is on the way<br />
<br />
There are a few more, but these are the most popular. Virtual TI's emulation is quite poor compared to the others, but the others are still under development. It's usually best to have a few around so that in case you run into something unexpected you can get a second opinion from another emulator.<br />
<br />
Please read the respective README's on how to get your ROM image running in these emulators.<br />
<br />
== Assembler ==<br />
<br />
An assembler -- sometimes referred to as "compiler", though formally it is no such thing -- can assemble your source code into binaries for the Z80 processor that runs our calculators.<br />
<br />
=== Choice of assembler ===<br />
<br />
Once again, you'll have to make a choice. A few years ago, things were simple; there was TASM and nothing else, so you'd use TASM. These days we have TASM, Brass and Spasm (and probably a few others), all with subtle little differences and improvements, but the latter two are clearly superior to the old TASM. Brass is written in C# for .NET, and can run under Linux using Mono. Spasm was written in C, and will compile on most systems with the GNU toolchain.<br />
<br />
* Brass [http://kvince83.tengun.net/maxboard/viewforum.php?f=25 subforum], [http://benryves.com/bin/brass/ website] and [http://benryves.com/bin/brass/Brass.exe latest download]<br />
* Spasm [http://www.revsoft.org/phpBB2/viewforum.php?f=21 subforum] and [http://www.revsoft.org/wabbitspasm.zip latest download]<br />
<br />
=== Assembling source to binaries ===<br />
<br />
The syntax for assembling input.asm to either output.8xp or output.83p is:<br />
<br />
Brass.exe input.asm output.8?p<br />
<br />
or<br />
<br />
wabbitspasm input.asm output.8?p<br />
<br />
Both modern assemblers can output files in TI calculator specific formats, which TASM can not. Spasm will do this automatically(?), and in the case of Brass you can [http://benryves.com/bin/brass/directives/binarymode.htm specify] your output format in your source code:<br />
<br />
.binarymode TI8X<br />
<br />
=== Include files ===<br />
<br />
Include files contain predefined memory locations, locations of TI OS calls and macro's to make your life easier. Strictly speaking you don't need any, but without them you'll have to type in every address by hand (and either memorize them or look them up each time).<br />
<br />
Depending on which calculator model and which shell you want to develop for (Ion, MirageOS, Venus, etc) you'll need to get some include files. For the sake of demonstration (and because most other shells can run them) we'll be choosing Ion for now. Developing for Ion also has the advantage that your applications can be compiled for Ti-83 and Ti-83+ (and relatives) without changing the source. Go [http://www.ticalc.org/archives/files/fileinfo/130/13058.html here] and download the zip file, which contains ion.inc. You'll also need the shell itself for testing.<br />
<br />
=== Hello World ===<br />
<br />
Save this file as hello.asm in the same directory as your assembler, for ease of testing:<br />
<br />
<pre>#define TI83P ; If you want to compile for Ti-83+ family calcs<br />
;#define TI83 ; If you want to compile for Ti-83, don't uncomment both!<br />
<br />
#include "ion.inc"<br />
<br />
; ====<br />
; Start of Ion header<br />
<br />
#ifdef TI83P<br />
.binarymode TI8X ; only required if you use Brass<br />
.org progstart-2<br />
.db $BB,$6D<br />
#else<br />
.binarymode TI83 ; only required if you use Brass<br />
.org progstart<br />
#endif<br />
ret<br />
jr nc,main<br />
title:<br />
.db "Hello World Test",0<br />
<br />
; End of Ion header<br />
; ====<br />
<br />
main:<br />
; Program execution starts here:<br />
bcall(_homeup)<br />
ld hl,string<br />
bcall(_puts)<br />
bcall(_getkey)<br />
ret<br />
<br />
string:<br />
.db "Hello world!",0<br />
</pre><br />
<br />
Open a console, cd to your directory and issue:<br />
<br />
<your assembler> hello.asm hello.8xp<br />
<br />
Now load hello.8xp into your emulator and try to run it with Ion.</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=Calculator_Documentation
Calculator Documentation
2007-12-14T21:38:19Z
<p>AndyJ: /* TI Community */ grammar</p>
<hr />
<div>== TI-83 (Regular) ==<br />
<br />
* [[:Category:83:ROMCalls:By_Name|ROMCalls (System Entrypoints)]]<br />
* [[:Category:83:Flags:By_Name|Flags]]<br />
* [[:Category:83:OS_Information|General OS Documentation]]<br />
* [[:Category:83:Ports:By_Address|Ports]]<br />
* [[:Category:83:RAM:By_Name|RAM Areas]]<br />
<br />
== TI-83 Plus Family ==<br />
<br />
* [[:Category:83Plus:BCALLs:By_Name|B_CALLs (System Entrypoints)]]<br />
* [[:Category:83Plus:Flags:By_Name|Flags]]<br />
* [[:Category:83Plus:OS_Information|General OS Documentation]]<br />
* [[:Category:83Plus:Hooks:By_Name|Hooks]]<br />
* [[:Category:83Plus:Ports:By_Address|Ports]]<br />
* [[:Category:83Plus:RAM:By_Name|RAM Areas]]<br />
* [[:Category:83Plus:Software|Software Documentation]]<br />
* [[:Category:83Plus:Basic|TI-83+ Basic]]<br />
<br />
== M68K Family ==<br />
<br />
* [[:Category:68k:Ports:By_Address|Ports]]<br />
<br />
== Z80 programming ==<br />
* [[Meta-tutorial]]<br />
* [[:Category:Z80_Routines|Z80 Routines]]<br />
* [[Z80 Instruction Set]]<br />
* [[Good programming practices]]<br />
* [[Programming under Unix-like operating systems]]<br />
<br />
== Software ==<br />
* [[Notable programs]]<br />
* [[:Category:Emulators|Emulators]]<br />
* [[83Plus:OS:TIOS Alternatives|TIOS Alternatives]]<br />
* [[Experiments]]<br />
<br />
== Linking ==<br />
* [[Link cables]]<br />
<br />
== TI Community ==<br />
<br />
* [[Beginners|Beginners' manual]]<br />
* [[History of the TI Z80 community]]<br />
* [[:Category:Teams|Programming Teams]]<br />
* [[TI websites]]<br />
<br />
== Contributing ==<br />
<br />
Please read our page on [[Contributing]] before you start contributing to WikiTI.</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:42F1
83Plus:BCALLs:42F1
2007-08-19T23:15:01Z
<p>AndyJ: that whole "please confirm" thing was getting on my nerves :)</p>
<hr />
<div>[[Category:83Plus:BCALLs:By Name:Variable|ChkFindSym]] [[Category:83Plus:BCALLs:By Name|ChkFindSym]] [[Category:83Plus:BCALLs:By Address|42F1 - ChkFindSym]]<br />
== Synopsis ==<br />
'''Official Name:''' ChkFindSym<br />
<br />
'''BCALL Address:''' 42F1<br />
<br />
Recalls various pointers and information for a symbol in the VAT.<br />
<br />
=== Inputs ===<br />
* [[83Plus:RAM:8478|OP1]] = Name of variable (with proper initial defining byte, see example)<br />
<br />
=== Outputs ===<br />
* HL = VAT pointer<br />
* DE = Data location (if in archive, will be address when page is put into [[83Plus:Ports:06|bank A]])<br />
* B = Flash Page, or 0 if in RAM<br />
* C = Length of Variable Name<br />
* A = 'unknown'<br />
* carry flag is set if the variable is not found in the VAT<br />
<br />
=== Registers Destroyed ===<br />
'All'<br />
<br />
<br />
== Example ==<br />
<nowiki><br />
ld hl,varname<br />
B_CALL Mov9toOp1<br />
B_CALL ChkFindSym<br />
jr c,notfound ;carry flag is set if the VAT entry is not found<br />
ex de,hl ;put data pointer into hl <br />
xor a <br />
cp b ;see if b is 0, and the program is in the ram<br />
jr z,unarchived ;if so, jump to unarchived <br />
<br />
;do something to get it into RAM<br />
<br />
unarchived:<br />
<br />
;do something once it is in RAM<br />
<br />
varName:<br />
.db AppVarObj, "APPVAR",0<br />
</nowiki></div>
AndyJ
https://wikiti.brandonw.net/index.php?title=Talk:83Plus:BCALLs:80AB
Talk:83Plus:BCALLs:80AB
2007-08-15T14:53:36Z
<p>AndyJ: </p>
<hr />
<div>== Finding an app's name ==<br />
<br />
One, the page states "NZ set if not found". That is ... confusing, to say the least. Does it mean Z is reset if not found, or something else?<br />
<br />
Two, it took me some experimenting to figure out how to find an app's name. The examples are somewhat misleading as to what values you provide when searching an app. Here's the code I use to find an app's name given its basepage:<br />
<br />
<pre><br />
; a is the app's basepage<br />
push af<br />
ld hl,$4000<br />
ld de,$8040 ; app name field<br />
bcall(_FindAppHeaderSubField)<br />
; technically the name could not be found but that will not happen<br />
pop af<br />
; a:hl points to the name<br />
</pre><br />
[[User:AndyJ|Andy Janata]] 15:15, 14 August 2007 (PDT)<br />
<br />
:Yeah, I don't know what I was thinking when I said 8000 for the address. Sorry about that. As for Z/NZ... yeah, maybe better notation is in order. By "NZ is set" I mean that the zero flag is cleared; thus, the NZ condition is true. Most if not all of the field search routines will return with the zero flag set (Z) if they find the given field, or cleared (NZ) if they don't.<br />
:Incidentally, yes, I would say it's safe to assume that every app has a name. And it's probably safe to use this routine (or FindOSHeaderSubField) to search app headers, because that's what the OS does, but it's not 100% foolproof in the case that the field you're looking for doesn't exist. This is because it doesn't actually stop at the program image field -- rather, when it gets to that field, it skips 70h bytes (because of the bug in [[83Plus:BCALLs:805A|GetFieldSize]]) and continues on its way.<br />
:[[User:FloppusMaximus|FloppusMaximus]] 18:23, 14 August 2007 (PDT)<br />
::Actually, in my quest to try to get it to work, I changed my equate to point to GetApp... When I noticed that was the case, I changed the text of the equate as well. Changed above to reflect that. [[User:AndyJ|Andy Janata]] 07:53, 15 August 2007 (PDT)</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:80AB
83Plus:BCALLs:80AB
2007-08-15T00:20:19Z
<p>AndyJ: /* Inputs */ 8000 -> 4000 and app name example</p>
<hr />
<div>[[Category:83Plus:BCALLs:By_Name:Other|FindAppHeaderSubField]] [[Category:83Plus:BCALLs:By_Name|FindAppHeaderSubField]] [[Category:83Plus:BCALLs:By_Address|80AB - FindAppHeaderSubField]]<br />
== Synopsis ==<br />
'''Unofficial Name:''' FindAppHeaderSubField<br />
<br />
'''BCALL Address:''' 80AB<br />
<br />
Search for a subfield of the given app header.<br />
<br />
=== Inputs ===<br />
* AHL = address of the first type byte of the field whose contents you want to search (4000h if you want to search an installed app header)<br />
* DE = field to search for (e.g. 8010 to search for the key ID or 8040 for app name)<br />
<br />
=== Outputs ===<br />
* HL = address of the first type byte of the first matching field<br />
* NZ set if not found.<br />
<br />
=== Destroys ===<br />
* AF<br />
* [[83Plus:RAM:8478|OP1]], [[83Plus:RAM:8100|ramCode]]<br />
<br />
== Comments ==<br />
This routine is almost identical to [[83Plus:BCALLs:8075|FindOSHeaderSubfield]]; the difference is that it will allow you to search starting at a zero byte (i.e., a deleted app header.) The OS uses this routine to search for data in Flash Apps (which may or may not have been deleted already.)</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=Talk:83Plus:BCALLs:80AB
Talk:83Plus:BCALLs:80AB
2007-08-14T22:15:41Z
<p>AndyJ: Finding an app's name</p>
<hr />
<div>== Finding an app's name ==<br />
<br />
One, the page states "NZ set if not found". That is ... confusing, to say the least. Does it mean Z is reset if not found, or something else?<br />
<br />
Two, it took me some experimenting to figure out how to find an app's name. The examples are somewhat misleading as to what values you provide when searching an app. Here's the code I use to find an app's name given its basepage:<br />
<br />
<pre><br />
; a is the app's basepage<br />
push af<br />
ld hl,$4000<br />
ld de,$8040 ; app name field<br />
bcall(_FindOSHeaderSubField)<br />
; technically the name could not be found but that will not happen<br />
pop af<br />
; a:hl points to the name<br />
</pre><br />
[[User:AndyJ|Andy Janata]] 15:15, 14 August 2007 (PDT)</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=83Plus:Hooks:9BB8
83Plus:Hooks:9BB8
2007-08-14T20:00:42Z
<p>AndyJ: /* Using the Hook */ your -> you're</p>
<hr />
<div>[[Category:83Plus:Hooks:By_Name|Help Hook]] [[Category:83Plus:Hooks:By_Address|9BB8 - Help Hook]]<br />
== Synopsis ==<br />
'''Name:''' Help Hook ''(has been incorrectly called the Mode hook)''<br />
<br />
'''Hook Pointer Block Address:''' [[83Plus:RAM:9BB8|9BB8]]<br />
<br />
'''Hook Enable BCALL:''' [[83Plus:BCALLs:504A|504A]]<br />
<br />
'''Hook Disable BCALL:''' [[83Plus:BCALLs:504D|504D]]<br />
<br />
'''Hook Call BCALL:''' ''(Unknown)''<br />
<br />
'''Hook Active Flag:''' [[83Plus:Flags:36#Bit_4|4, (iy + 36h)]]<br />
<br />
This hook is primarily a Raw Key hook that is triggered in only some parts of the operating system. There seems to be no pattern or logic behind what is and isn't passed to this hook; if you find any pattern, please describe it to us!<br />
<br />
== Using the Hook ==<br />
A tells us where in the OS the key was pressed, and B contains the keycode. You can't cancel the keypress through the flags you return (or at least in some situations), but I think returning with B being zero should be safe.<br />
<br />
* '''A = 00h:''' The key was pressed in the catalog. '''Note:''' The catalog enables Alpha lock by default, so if you're looking for up / down, you might also need to check for kalphaup / kalphadown.<br />
* '''A = 01h:''' The key in B was pressed when a menu is visible. For some odd reason, this event isn't fired if the key will simply display another menu; for example, if you're viewing the MATH menu, and you press the VARS key, you're not notified of that keypress at all. C contains the number of menu choices visible; this value cannot be higher than 7.<br />
* '''A = 02h:''' This event is fired in response to several events (listed below) related to the link menu. '''Note:''' The Var Send / Recieve menus pass events with A = 1 (they act as normal menu, despite the fact it's a context). So if you press down to go to All-, that's passed with A = 1.<br />
** It's fired after the user presses 2nd+Link, and the menu is drawn. B = 41h (klinkio, cxlinkio)<br />
** It's fired after the user has pressed enter to go to the variable selection menu (note: the enter is passed with A = 1) but before it's actually displayed. B represents what was selected:<br />
*** All+, B = 10h (kselall)<br />
*** All-, B = 11h (kunselall)<br />
*** Prgm, List, B = 1Fh (kvsendtype)<br />
*** Lists to TI82, B = 12h, (kltoti82)<br />
*** Backup, B = 13h, (kbackup)<br />
*** SendID, B = 1Bh, (ksendid)<br />
*** SendOS, B = 1Ch, (ksendsw)<br />
** The user has selected "quit" on an ERROR:XMIT prompt. B = 15h (klnkquit) in this case. An A = 01h event is also triggered for the selection (since it's a menu.)<br />
** I haven't tested this, but it may occur in a duplicate variable menu with B = 17h (krename), 18h (koverw), 19h (komit)<br />
** A key was pressed where the user is selecting the files to send. Pressing right here will pass the key as A = 02h, but realize that the Link / Transmit menu is a standard menu, and things in A = 01h apply. Also, pressing left on the Link / Transmit menu (to get back to the select menu) will cause the left key to get passed with both A = 01h and A = 02h. 2nd+Quit isn't passed in this case.<br />
** The user selected the Transmit item. B = 16h (ktrans)<br />
* '''A = 03h:''' The key in B was pressed while the user is in a mode selection screen; this includes the Mode screen, 2nd+Format screen, and the options on the Table Setup screen. The OS also passes the keypress that opened the context, at least for the Mode, 2nd+Format. For some reason, it is also called when you enter one of the Stat editors (with B = 56h, cxinfstat). Note that it's called AFTER the context has been shown.<br />
* '''A = 04h:''' This message is triggered whenever a keypress occurs in one of several conditions.<br />
** The cursor was on the Plot indicators on the top of the Y= editor. Keys that open menus aren't passed.<br />
** On any keypress in the plot configuration screen, except when you're editing the Xlist or Ylist items.<br />
** Your entering the stat plot editor context, with B = 55h (cxstatplot).<br />
* '''A = 05h:''' An error menu has just been displayed. B appears to always be 3Eh in this case.<br />
* '''A = 06h:''' This is called whenever a key is pressed in a Memory Management / Del screen, the ones with the list of the files. 2nd+Quit isn't passed.<br />
<br />
== Comments ==<br />
This hook has been referred to as the Mode hook, but the only app to use it (Catalog Help) has nothing to do with the Mode screen.</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:42F1
83Plus:BCALLs:42F1
2007-08-02T21:05:02Z
<p>AndyJ: /* Outputs */ fixed typo</p>
<hr />
<div>[[Category:83Plus:BCALLs:By Name:Variable|ChkFindSym]] [[Category:83Plus:BCALLs:By Name|ChkFindSym]] [[Category:83Plus:BCALLs:By Address|42F1 - ChkFindSym]]<br />
== Synopsis ==<br />
'''Official Name:''' ChkFindSym<br />
<br />
'''BCALL Address:''' 42F1<br />
<br />
Recalls various pointers and information for a symbol in the VAT.<br />
<br />
=== Inputs ===<br />
* [[83Plus:RAM:8478|OP1]] = Name of variable (with proper initial defining byte, see example)<br />
<br />
=== Outputs ===<br />
* HL = VAT pointer<br />
* DE = Data location (to the best of my knowledge, please confirm this)<br />
* B = Flash Page, or 0 if in RAM<br />
* C = Length of Variable Name<br />
* A = 'unknown'<br />
* carry flag is set if the variable is not found in the VAT<br />
<br />
=== Registers Destroyed ===<br />
'All'<br />
<br />
<br />
== Example ==<br />
<nowiki><br />
ld hl,varname<br />
B_CALL Mov9toOp1<br />
B_CALL ChkFindSym<br />
jr c,notfound ;carry flag is set if the VAT entry is not found<br />
ex de,hl ;put data pointer into hl <br />
xor a <br />
cp b ;see if b is 0, and the program is in the ram<br />
jr z,unarchived ;if so, jump to unarchived <br />
<br />
;do something to get it into RAM<br />
<br />
unarchived:<br />
<br />
;do something once it is in RAM<br />
<br />
varName:<br />
.db AppVarObj, "APPVAR",0<br />
</nowiki></div>
AndyJ
https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:42FD
83Plus:BCALLs:42FD
2007-07-21T21:28:04Z
<p>AndyJ: /* Example */ somewhat more useful example</p>
<hr />
<div>[[Category:83Plus:BCALLs:By_Name:Memory|EnoughMem]] [[Category:83Plus:BCALLs:By_Name|EnoughMem]] [[Category:83Plus:BCALLs:By_Address|42FD - EnoughMem]]<br />
== Synopsis ==<br />
'''Official Name:''' EnoughMem<br />
<br />
'''BCALL Address:''' 42FD<br />
<br />
Checks if a given amount of RAM is available. This routine will also attempt to free RAM that is taken by temporary variables that have been marked dirty but not yet deleted.<br />
<br />
=== Inputs ===<br />
* HL = amount of RAM to check for being available<br />
<br />
=== Outputs ===<br />
* DE = amount of RAM to check for being available<br />
* Carry set if there is insufficient RAM available<br />
<br />
=== Destroys ===<br />
* All<br />
<br />
== Remarks ==<br />
No error is generated.<br />
<br />
== Example ==<br />
<nowiki>ld hl,9<br />
B_CALL EnoughMem<br />
jr c,NotEnoughMem</nowiki></div>
AndyJ
https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:42FD
83Plus:BCALLs:42FD
2007-07-21T21:25:28Z
<p>AndyJ: /* Synopsis */ imputed -> given. flows better, plus imputed isn't right, and inputed/inputted seems to be debatable</p>
<hr />
<div>[[Category:83Plus:BCALLs:By_Name:Memory|EnoughMem]] [[Category:83Plus:BCALLs:By_Name|EnoughMem]] [[Category:83Plus:BCALLs:By_Address|42FD - EnoughMem]]<br />
== Synopsis ==<br />
'''Official Name:''' EnoughMem<br />
<br />
'''BCALL Address:''' 42FD<br />
<br />
Checks if a given amount of RAM is available. This routine will also attempt to free RAM that is taken by temporary variables that have been marked dirty but not yet deleted.<br />
<br />
=== Inputs ===<br />
* HL = amount of RAM to check for being available<br />
<br />
=== Outputs ===<br />
* DE = amount of RAM to check for being available<br />
* Carry set if there is insufficient RAM available<br />
<br />
=== Destroys ===<br />
* All<br />
<br />
== Remarks ==<br />
No error is generated.<br />
<br />
== Example ==<br />
<nowiki>B_CALL EnoughMem</nowiki></div>
AndyJ
https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:401E
83Plus:BCALLs:401E
2007-07-21T20:59:53Z
<p>AndyJ: it's -> its, link to AppInit, minor formatting change</p>
<hr />
<div>[[Category:83Plus:BCALLs:By Name:Monitor|Mon]] [[Category:83Plus:BCALLs:By Name|Mon]] [[Category:83Plus:BCALLs:By Address|401E - Mon]]<br />
== Synopsis ==<br />
'''Official Name:''' Mon<br />
<br />
'''BCALL Address:''' 401E<br />
<br />
Starts the system monitor. The system monitor will take over the system, and<br />
report events to the application via the monitor vectors. The application must<br />
set its own monitor vectors with [[83Plus:BCALLs:404B|AppInit]] before calling Mon. Control of the<br />
application will never be returned from Mon.<br />
<br />
=== Inputs ===<br />
* [[83Plus:Flags:28|AppAllowContext, (IY + APIFlg)]] = 1 to allow Mon to pass context keys, like kYequ to the cxMain routine.<br />
* [[83Plus:Flags:0C|CurLock, (IY + curFlags)]] = 1 to lock the cursor off<br />
<br />
=== Outputs ===<br />
* none<br />
<br />
=== Registers Destroyed ===<br />
* ??<br />
<br />
== Comments ==<br />
The system NEVER returns from this B_CALL. The programmer should find alternative methods of regaining control and exiting such as hooks, cxMain, etc.</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=Talk:WikiTI_Home
Talk:WikiTI Home
2007-07-21T19:11:47Z
<p>AndyJ: /* Wiki update */</p>
<hr />
<div>= Discussion =<br />
What do you think about this wiki?<br />
<br />
== More! ==<br />
<br />
I think it needs information on more calculators than just the Ti-83+ series, and general assembly information (like a good cathegorized tutorial overview for instance) wouldn't hurt either, I think :)<br />
<br />
Timendus<br />
<br />
== I hope we can do that soon ==<br />
<br />
Just, we don't want to waste time getting it all set up for that and have no one use it. If we see a lot of people milling around here, contributing, then by all means, we'll expand. But one thing we '''DON'T''' want to do is mirror 28 Days. We can link TO it, but we don't want it actually here.<br />
<br />
--[[User:AndyJ|AndyJ]] 06:50, 27 Mar 2005 (PST)<br />
<br />
== Categories ==<br />
<br />
On many pages, there is now a sizable blank space at the top due to several lines of category links. What, if anything, should we do about this? [[User:FloppusMaximus|FloppusMaximus]] 19:06, 29 Mar 2005 (PST)<br />
<br />
== Move them? ==<br />
<br />
Move the Category links to the bottom should do it. :) That, or put them all on one line.<br />
<br />
--[[User:AndyJ|AndyJ]] 19:07, 29 Mar 2005 (PST)<br />
<br />
:Yeah, that sounds like a good idea. :) [[User:FloppusMaximus|FloppusMaximus]] 20:18, 29 Mar 2005 (PST)<br />
<br />
:: I think I officially qualify as a robot now. You can tell I was getting tired towards the end, as I missed the minor-edit button a few times... sorry about that... [[User:FloppusMaximus|FloppusMaximus]] 21:28, 29 Mar 2005 (PST)<br />
:: Actually, I was going to just mod the php code to fix this bug....keeping the category tags on the top might be a good idea actually. (JasonM)<br />
:::That might still be a good idea. [[User:FloppusMaximus|FloppusMaximus]] 13:18, 3 Apr 2005 (PDT)<br />
<br />
== Caching ==<br />
<br />
Is it just me, or are there some serious caching problems here?<br />
[[User:FloppusMaximus|FloppusMaximus]] 21:32, 1 Apr 2005 (PST)<br />
<br />
: In particular? --[[User:Dan Englender|Dan Englender]] 21:42, 1 Apr 2005 (PST)<br />
<br />
:: Ya, the wiki seems to have weird caching problems, especially since it appears the reload the page every time, even if it doesn't get changes. I don't know what's up. --[[User:AndyJ|AndyJ]] 22:35, 1 Apr 2005 (PST)<br />
<br />
::: Considering the dynamic nature of a wiki (a page could be edited, at pretty much any time), I wouldn't mind not having it cached. (Though I would personally disable browser caching altogether if firefox would let me... :P ) --[[User:Aquanight|Aquanight]] 22:44, 1 Apr 2005 (PST)<br />
<br />
:::: Er... I think I see what you mean... stuff is getting cached when it shouldn't be. (I could've sworn I told firefox to only use 0 KB (aka none) for cache and it's still caching ... argh.) --[[User:Aquanight|Aquanight]] 22:46, 1 Apr 2005 (PST)<br />
<br />
::::: I've disabled caching myself as well. Perhaps we should just disable caching altogether? (JasonM)<br />
<br />
::::::Caching has been disabled. (JasonM)<br />
<br />
::: I found a "Disable Caching" option in Misc. Preferences, if that helps. [[User:Gambit|Gambit]] 00:28, 2 Apr 2005 (PST)<br />
<br />
== On Other Calculators ==<br />
<br />
Just a random idea I had -- a lot of the ROM calls, RAM addresses, and ports are very similar, if not identical, between the 83 and 83+, and more generally, between all of the Z80 calculators. For some of them -- [[83Plus:RAM:86D8]] and [[83:RAM:8253]], for instance -- it may be possible to combine the two into a single page, though I'm not sure that would be a good idea, given the potential for confusion. So here's what I propose instead:<br />
* For simple things like penRow, we can just have two copies of the page, as there isn't very much to keep synchronized.<br />
* For more detailed pages such as GetKey, have a brief description with a link -- "This routine waits for the user to press a key and returns it. It is equivalent to [[83Plus:BCALLs:4972|GetKey]] on the TI-83 Plus." -- on one page, and the more detailed description on the other. Not a redirect in this case; I'm talking about a distinct page, which would point out the different call points and RAM addresses; in the case of GetKey, for instance, the address of keyExtend is different and should be noted.<br />
* In either case, on ''both'' pages, add a new section "On Other Calculators" near the bottom, with appropriate links. This section serves two purposes: First, it's simply useful information to have available, both for people trying to write cross-platform code, and for those of us who are interested in researching the OS. Secondly, it would serve as a reminder to editors that there are multiple pages that may need to be updated.<br />
* It's also important to maintain the distinction between routines/variables/ports that are ''identical'' as opposed to those which merely have related functions. For example, the widely used GetK routine on the 83 isn't known -- to my knowledge -- on the 73, but GetCSC serves as an adequate substitute in many situations. This is something that belongs in "See Also," not in this section.<br />
* Some templates might be in order here.<br />
<br />
[[User:FloppusMaximus|FloppusMaximus]] 18:41, 24 May 2005 (PDT)<br />
<br />
:It's not a bad idea. The only problem is that it makes a lot more work for people who just want to make a simple addition to the wiki. There's already a fairly high initial barrier (figuring out the templates and categories) to overcome for someone who wants to stroll along and add something to the wiki. For you and I it wouldn't be a big deal, but I'm worried it's going to dissuade a random person who floats by from adding ErrMemory to 83 Plus, because then 83 (and 86 or 73, if someone decides to start them) will have to be added/changed as well. --[[User:Dan Englender|Dan Englender]] 10:01, 25 May 2005 (PDT)<br />
:It might also be cool to hack up the interlanguage features so we can have the nifty language link-box similar to what exists on wikipedia. --[[User:Dan Englender|Dan Englender]] 12:57, 27 March 2006 (PST)<br />
<br />
== Wanted Pages ==<br />
I decided it was too minor to post as news on the main page, but I modified the [[Special:wantedpages|Wanted Pages]] page so that the threshold is 1 link instead of 2 links. A *lot* more wanted pages show up now, though there is some junk in the list now too (like fake links from templates). I figure wanted pages are as good a place as any to start adding, so I'm going to try to make a dent in the list. Anyone who would like to help is welcome to do so :) --[[User:Dan Englender|Dan Englender]] 10:06, 25 May 2005 (PDT)<br />
<br />
== Not "hardware" specific documents ==<br />
<br />
I was so free to edit the artilce over Emulator(s). I also created an article regarding PindurTI. <br />
<br />
As I already stated on the MaxCoderz board (http://joepnet.com/hosted/maxcoderz/phpBB2/viewtopic.php?t=1521), I think WikiTI has a lot of potential to collect information about the TI community aswell. Thinks like PindurTI, GrayScale and maybe even information about all the Zelda attempts. In my opinion, people can benefit from that information. --[[User:Kv83|Vincent Junemann]] 15:00, 21 February 2006 (CET)<br />
:Hehe... Zelda attempts? We really do need a page for that ;) [[User:TD-Linux|TD-Linux]] 09:24, 19 October 2006 (PDT)<br />
<br />
== Required logon ==<br />
<br />
If the spam is being done by bots, perhaps instead of requiring a log-on, we can require either a log-on or a captcha? I realize there's additional coding involved, but we've had a fair number of useful contributions by non-logged in contributors, and it would be a shame to scare them off by prospects of account creation or the fact that we can track their activities, or what have you. --[[User:Dan Englender|Dan Englender]] 13:55, 23 Feb 2006 (PST)<br />
:Agreed, if we can either find a mod for that or code one ourselves. Of course, maybe even a simple "check this box" thing would work if the bots are programmed just to hit mediawiki and not check for stuff... And if a botrunner ever finds it and fixes their bots, we can either just change it or go to a captcha... However, I think most of the legit anon edits were by people who have an account but just didn't notice they weren't logged in at the time. [[User:AndyJ|Andy Janata]] 18:40, 23 Feb 2006 (PST)<br />
<br />
== Wiki update ==<br />
<br />
Whats this undefined link I see on a lot of the pages?--[[User:Jim e|Jim e]] 06:07, 14 March 2006 (PST)<br />
:Example? --[[User:Dan Englender|Dan Englender]] 06:12, 14 March 2006 (PST)<br />
<br />
::This page has it right under the contents.--[[User:Jim e|Jim e]] 06:18, 14 March 2006 (PST)<br />
:::I'm not seeing it. Screen grab? (Also, try clearing your browser's cache in case something's not playing nice between this and the old wiki) --[[User:Dan Englender|Dan Englender]] 06:21, 14 March 2006 (PST)<br />
<br />
::::....It's gone now. I guess it was a fluke, but I did get an image before it disappeared, just to prove i'm not crazy. Pic<br />
:::::I removed the link to that pic since your domain expired and it was snagged by nice search spammy people. [[User:AndyJ|Andy Janata]] 12:11, 21 July 2007 (PDT)<br />
<br />
== Motivation Idea ==<br />
<br />
Here's an idea that might spark more interest in WikiTI...<br />
<br />
Usually, this stuff occurs on the subconscious level, but what if it was brought out from these depths? We have this inquisitive.. knowledge.. accumulate thing... and so what if there was a page (or maybe a set of them) that had a list of questions about the unknowns of the TI-OS? This idea came from this quote:<br />
<br />
<nowiki>In mathematics the art of asking questions is more valuable than solving problems. ~ Georg Cantor</nowiki><br />
<br />
All questions would be welcome (not sure about programming help oriented ones though), but maybe not all questions would be answerable, and maybe some questions would be better off not being answered. Other users will fill in the blanks and try to answer the question (because of generosity/competition/whatever). Concurrently, some users might think that some Q&A sections fit well together and then they will merge these into a wiki page. It might also be possible for someone to write a wiki page as an answer to a question!<br />
<br />
The point of such a page as this is to 'encourage hacking' in its traditional sense, as it were. As a side effect, it ''might possibly'' help us all (new and old alike) with our hesitancy in editing a page. Furthermore, I think that this idea will only work if there is a continual asking of questions; otherwise, it will lag and eventually '''fail'''. Hence, the [[Wikipedia:WP:BB|Be Bold]] slogan of Wikipedia.<br />
<br />
For example:<br />
What are the specific differences between GarbageCollect-ing and "Defragmenting..."?<br />
<br />
[[User:Brandonw|Brandonw]] and I talked about this on IRC:<br />
<nowiki><BrandonW> It's a good idea, but I'm not so sure about it working on WikiTI.<br />
<BrandonW> Maybe the question is elsewhere and the answer can be posted on WikiTI.<br />
<BrandonW> The answer to every question can be a WikiTI link.<br />
<BrandonW> That makes WikiTI bigger with more information and people get their questions answered.<br />
<Gambit_> hmm, asked where? Is there a central location somewhere where these would be asked?<br />
<Gambit_> WikiTI subforum in DS, perhaps?<br />
<BrandonW> It could be hosted anywhere...someplace new.<br />
<Gambit_> hm<br />
<BrandonW> Perhaps.</nowiki><br />
<br />
Good or bad? Thoughts? --[[User:Gambit|Gambit]] 23:55, 10 February 2007 (PST)<br />
<br />
: It's a good idea, but I'd rather see a broader page about general requests/wanted pages for the wiki, not just TI-OS related ones. [[User:Guillaumeh|Guillaumeh]] 03:55, 18 February 2007 (PST)<br />
<br />
== WikiTI Favicon ==<br />
<br />
I was going through WikiTI when I noticed that it lacked a favicon. I don't know what you guys think about favicons, but I think they are an important part of a website's identity. With that thought in mind, I created a favicon for WikiTI. I placed the favicon on a [http://www.freewebs.com/tibasicdev/wikitifavicon.html sample page] available on my site so you guys can see it. I wanted to hear what you guys thought of it, if you had any improvements, and if you would use it. Thanks. --[[User:Burr|Burr]] 12:17, 17 February 2007 (PST)</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=Talk:Notable_programs
Talk:Notable programs
2007-07-21T19:08:16Z
<p>AndyJ: anwer</p>
<hr />
<div>== Screenshots ==<br />
<br />
Is it possible to upload files on this wiki, for the screenshots ? [[User:Guillaumeh|Guillaumeh]] 12:06, 21 July 2007 (PDT)<br />
:[[Special:Upload]] -- but it's disabled. I can see if we can figure out how to turn that on. [[User:AndyJ|Andy Janata]] 12:08, 21 July 2007 (PDT)</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=Category_talk:Emulators
Category talk:Emulators
2007-07-04T00:51:17Z
<p>AndyJ: /* special:undelete */ Emulators is a redirect.</p>
<hr />
<div>==Previous Edit History==<br />
<br />
The edit history from the previous non-category page is as follows:<br />
<br />
<nowiki>(cur) (last) 15:32, 21 February 2006 Dan Englender m (Just causing trouble...)<br />
(cur) (last) 09:49, 21 February 2006 Kv83 (Major Edit)<br />
(cur) (last) 13:06, 7 January 2006 Guillaumeh</nowiki><br />
<br />
[[User:AndyJ|Andy Janata]] 18:49, 23 March 2006 (PST)<br />
<br />
== special:undelete ==<br />
<br />
I have no idea why it lists undelete as a subcategory of this category. I'll try to look at the code at some point and fix it though. --[[User:Dan Englender|Dan Englender]] 17:02, 26 March 2006 (PST)<br />
:It was at one time undeleted, I think... I have no idea why it does that either, perhaps we should file a bug... [[User:AndyJ|Andy Janata]] 19:15, 26 March 2006 (PST)<br />
::I'm wary of filing a bug report because we've made changes to the category php code. At least until we figure out what's causing the problem. --[[User:Dan Englender|Dan Englender]] 19:51, 26 March 2006 (PST)<br />
<br />
<br />
* I was wondering why there is an Emulators category and Emulators page, when both pages have the same content? Couldn't you just get rid of the page and use the category? I think that would make sense. --[[User:Burr|Burr]] 13:40, 3 July 2007 (PDT)<br />
**[http://wikiti.denglend.net/index.php?title=Emulators&redirect=no Emulators] is a redirect to this category. [[User:AndyJ|Andy Janata]] 17:51, 3 July 2007 (PDT)</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=Talk:83Plus:BCALLs:44F2
Talk:83Plus:BCALLs:44F2
2007-06-14T22:28:23Z
<p>AndyJ: gah, duh, you call something that doesn't ret</p>
<hr />
<div></div>
AndyJ
https://wikiti.brandonw.net/index.php?title=Talk:83Plus:BCALLs:44F2
Talk:83Plus:BCALLs:44F2
2007-06-14T22:27:14Z
<p>AndyJ: </p>
<hr />
<div>== Return address optional? ==<br />
Push a return address before the below code if you want to regain control.<br />
What exactly happens if you DON'T push a return address? All Hell breaks loose? It somehow decides to go back to the homescreen? --[[User:AndyJ|Andy Janata]] 15:27, 14 June 2007 (PDT)</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:455E
83Plus:BCALLs:455E
2007-06-07T22:36:59Z
<p>AndyJ: /* Destroys */ HL is preserved: I made a VPutS which doesn't have to save HL on every VPutMap call</p>
<hr />
<div>== Synopsis ==<br />
'''Official Name:''' VPutMap<br />
<br />
'''BCALL Address:''' 455E<br />
<br />
Displays a character on screen in the small variable-width font at the current cursor location.<br />
<br />
=== Inputs ===<br />
* A = TI-ASCII code of character to display<br />
<br />
=== Outputs ===<br />
* character at coordinate ([[83Plus:RAM:86D8|penRow]], [[83Plus:RAM:86D7|penCol]])<br />
<br />
=== Destroys ===<br />
* A, DE, IX<br />
<br />
== Comments ==<br />
This B_CALL outputs the character stored in A at the current cursor location. Unlike its large-font equivalent [[83Plus:BCALLs:4501|PutMap]], it updates the cursor, and the coordinates are measured in pixels instead of characters and lines.<br />
<br />
== Example ==<br />
Shows &Eacute; in the upper-left hand corner of the screen:<br />
<nowiki>ld a, LcapEAcute<br />
ld hl, $0000<br />
ld (penCol),hl<br />
B_CALL VPutMap</nowiki><br />
<br />
[[Category:83Plus:BCALLs:By Name|VPutMap]]<br />
[[Category:83Plus:BCALLs:By Name:Text|VPutMap]]<br />
[[Category:83Plus:BCALLs:By Address|455E - VPutMap]]</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=Category:Z80_Routines
Category:Z80 Routines
2007-06-05T19:15:51Z
<p>AndyJ: completely remove the "here" from "here" links</p>
<hr />
<div>[[Category:Calculator Documentation|General Z80 Calculator Routines]]<br />
This Category contains routines that can be used on many Z80-based calculators. Please consult each example for which calculators they apply to.<br />
<br />
----<br />
<br />
When you paste code, there is a simple step you can do to format the code properly. Start the first line of code with &lt;nowiki&gt;, and put a space in front of the &lt;. On the last line of your code, end it with &lt;/nowiki&gt;. This allows for code to be formatted like this (click edit on this page to see how it's done):<br />
<br />
<nowiki>cp 10<br />
ccf<br />
adc a, 30h<br />
daa</nowiki><br />
<br />
<br />
Also, there are a bunch of routines on the [http://www.detachedsolutions.com/forum/viewtopic.php?t=1154 DS forums] and at [http://map.tni.nl/sources/external/z80bits.html Z80 bits].</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=83Plus:Flags:33
83Plus:Flags:33
2007-06-01T19:24:05Z
<p>AndyJ: /* Bit 4 */ missing period</p>
<hr />
<div>[[Category:83Plus:Flags:By Address|33]]<br />
[[Category:83Plus:Flags:By Name|scriptFlag, rclFlag2, backGroundLink]]<br />
== Synopsis ==<br />
'''Flag Byte:''' 33h<br />
<br />
'''Known Names:''' scriptFlag, rclFlag2, backGroundLink<br />
<br />
== Bit Overview ==<br />
<br />
=== Bit 0 ===<br />
'''Official Name:''' alt_On<br />
<br />
You must also set [[83Plus:Flags:08|APDWarmStart,(iy+APDFlags)]] to run ONSCRPT.<br />
<br />
=== Bit 1 ===<br />
'''Official Name:''' alt_Off<br />
<br />
If this bit is set, the calculator will search for and run OFFSCRPT when it is turned off.<br />
<br />
=== Bit 2 ===<br />
'''Official Name:''' useRclQueueEnd<br />
<br />
If this bit is set, the recall queue is in "external" mode. In this mode, data is read from an external RAM area, as opposed to "internal" recall mode, in which data is read directly from the buffer gap. See [[83Plus:OS:Recall_Queue|OS Recall Queue]] for more information.<br />
<br />
=== Bit 3 ===<br />
'''Official Name:''' ignoreBPLink<br />
<br />
If this flag is set, the [[83Plus:Hooks:9B78|Link Activity Hook]] is disabled.<br />
If this flag is reset, the [[83Plus:Hooks:9B78|Link Activity Hook]] is enabled or disabled depending on the Active Flag (bit 4).<br />
<br />
=== Bit 4 ===<br />
'''Official Name:''' bPLinkOn<br />
<br />
If this flag is reset, the [[83Plus:Hooks:9B78|Link Activity Hook]] is disabled.<br />
If this flag is set, the [[83Plus:Hooks:9B78|Link Activity Hook]] is enabled or disabled depending on the Override Flag (bit 3).<br />
<br />
=== Bit 5 ===<br />
{{Unknown-flag}}<br />
<br />
=== Bit 6 ===<br />
'''Unofficial Name:''' noTempDelete<br />
<br />
If this flag is set, the OS will not delete temporary programs on the homescreen. The OS will reset this flag immediately after checking it.<br />
If this flag is reset, the OS will delete temporary programs when the homescreen regains control.<br />
<br />
=== Bit 7 ===<br />
{{Unknown-flag}}</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=Programming_under_Unix-like_operating_systems
Programming under Unix-like operating systems
2007-05-23T19:20:16Z
<p>AndyJ: /* Mac OS X */ PindurTI again</p>
<hr />
<div>Here are the different tools at your disposal:<br />
<br />
= General Overviews =<br />
<br />
==Emulators==<br />
* TilEm [http://lpg.ticalc.org/prj_tilem/]<br />
* VTI (with Wine)<br />
<br />
==Syntax highlighting==<br />
Several editors have native or extensional support for editing Z80 assembly code with syntax highlighting:<br />
* Kwrite and Kate can be made to syntax-highlight Z80 assembly with [http://www.ticalc.org/archives/files/fileinfo/391/39178.html the appropriate definition file]. The file must be placed in /usr/share/apps/katepart/syntax .<br />
* SciTE and Emacs both have native modes for assembly code. For Emacs, one must make sure to turn on Font Lock mode as well.<br />
* The [http://www.revsoft.org/phpBB2/viewforum.php?f=25 Z80 Assembly IDE] has simple syntax highlighting built-in.<br />
* Users of Vim and WLA DX can use [http://sigma.unitedti.org/files/misc/z80.vim.bz2 this syntax file].<br />
<br />
== Assembling ==<br />
<br />
=== SPASM ===<br />
<br />
'''Author''': Spencer Putt<br />
<br />
'''Home Page''': [http://www.revsoft.org/phpBB2/viewforum.php?f=21 http://www.revsoft.org/phpBB2/viewforum.php?f=21]<br />
<br />
SPASM is a portable Z80 assembler released under the GPL. Its distinguishing features are extremely fast assembly and powerful macro support. The output is only available in binary form, however with the use of [http://www.revsoft.org/phpBB2/viewforum.php?f=23 Wabbitsign], written by James Montelongo and Spencer Putt, it can easily be converted to any desired program type.<br />
<br />
assembler foo.asm foo.bin<br />
wabbit foo.bin foo.8xp<br />
<br />
=== tpasm ===<br />
<br />
'''Author''': Todd Squires<br />
<br />
'''Home page''': [http://www.sqrt.com/ http://www.sqrt.com/]<br />
<br />
tpasm is a Free (GPL) assembler which supports the Z80 as well as the 6805, 6809, 68HC11, 6502, Sunplus, 8051, PIC, and AVR. It uses syntax very similar to ZMASM.<br />
<br />
tpasm 1.2 does not support binary file output, but you can use ''objcopy'' (from the GNU binutils package) to convert its Intel Hex output into binary; e.g.<br />
<br />
tpasm foo.asm -o intel foo.hex -l foo.lst<br />
objcopy -I ihex foo.hex -O binary foo.bin<br />
<br />
=== ASxxxx ===<br />
<br />
'''Author''': Alan R. Baldwin<br />
<br />
'''Home page''': [http://shop-pdp.kent.edu/ashtml/asxxxx.htm http://shop-pdp.kent.edu/ashtml/asxxxx.htm]<br />
<br />
ASxxxx is a freeware assembler which supports the Z80 along with a large variety of other processors. It more closely resembles a modern PC assembler than a typical Z80 assembler, as it assembles each file into a relocatable object format which can then be linked with other files to produce the complete program. The linking is done by a separate program called ASlink (included with the package.)<br />
<br />
To assemble and link a simple program you might do something like<br />
<br />
asz80 -plogff foo.asm<br />
aslink -u -b _CODE=0x9D95 -i foo.ihx foo.rel<br />
objcopy -I ihex foo.ihx -O binary foo.bin<br />
<br />
Note that the syntax is rather different from that of most Z80 assemblers. The important differences are<br />
* Immediate values are marked with #.<br />
* Indexed memory access is written as N(ix) rather than (ix+N).<br />
* Constants are written differently: 0xAA, 0hAA, or $$AA for hexadecimal; 0o252, 0q252, or $&252 for octal; 0b10101010 or $%10101010 for binary.<br />
<br />
For example,<br />
ld hl,#str_hello<br />
add a,3(ix)<br />
xor #0x0f<br />
<br />
There is also a modified version of ASxxxx distributed with the [http://sdcc.sf.net/ Small Device C Compiler]. This version is, if anything, more confusing to use due to the poorly-documented changes made by the SDCC team.<br />
<br />
=== TASM ===<br />
<br />
'''Author''': Thomas N. Anderson<br />
<br />
'''Home page''': [http://home.comcast.net/~tasm/ http://home.comcast.net/~tasm/]<br />
<br />
TASM is a shareware assembler which also supports a variety of processors.<br />
<br />
There are several ways that you can use tasm under Linux:<br />
* The TASM 3.1 for Linux shareware release is still in the wild. To use this you will need to enable "a.out" support in your kernel (it may be available as the module ''binfmt_aout''.) You will also need to obtain the ancient Linux libc version 4 (''not'' glibc) which can be found [http://ftp.linux.org.uk/pub/linux/libc/ here].<br />
* You can use TASM 3.2 for Windows with [http://www.winehq.com Wine].<br />
* You can pay the $40 and compile it yourself on the platform of your choice.<br />
<br />
=== Brass ===<br />
'''Author''': benryves<br />
<br />
'''Home page''': [http://benryves.com/bin/brass/ http://benryves.com/bin/brass/]<br />
<br />
Brass runs under Linux thanks to Mono.<br />
<br />
=== Zasm ===<br />
'''Author''': Steven Deprez<br />
<br />
'''Home page''': [http://lpg.ticalc.org/prj_zasm/index.html http://lpg.ticalc.org/prj_zasm/index.html]<br />
<br />
Zasm is an open source assembler that is almost fully compatible with Tasm and ZDS.<br />
<br />
=== WLA DX ===<br />
'''Author''': Ville Helin<br />
<br />
'''Home page''': [http://users.tkk.fi/~vhelin/wla.html http://users.tkk.fi/~vhelin/wla.html]<br />
<br />
WLA DX is another open-source (GNU GPL) cross-assembler with a primary focus on targeting video game consoles. It is a high-powered assembler with a wide variety of features such as, e.g. separate compilation, POSIX-like file I/O, and code sectioning. However it is cumbersome when assembling small projects, and semantics are unorthodox compared to other assemblers. (~ is the XOR operator, macro arguments are passed by value, etc.) Furthermore, development appears to have ceased since January 2006.<br />
<br />
WLA DX has had an influence in the development of Brass.<br />
<br />
=== Pasmo ===<br />
'''Author''': Juli&aacute;n Albo<br />
<br />
'''Home page''': [http://www.arrakis.es/~ninsesabe/pasmo/ http://www.arrakis.es/~ninsesabe/pasmo/]<br />
<br />
Pasmo is another standalone Z80 cross-assembler with basic macro support, but without the ability to generate<br />
relocatable object files. It is licensed under the GNU GPL, and exists as the package <tt>pasmo</tt> in the Debian pool.<br />
<br />
=== z80asm ===<br />
'''Author''': Bas Wijnen<br />
<br />
'''Home page''': [http://savannah.nongnu.org/projects/z80asm/ http://savannah.nongnu.org/projects/z80asm/]<br />
<br />
z80asm is a standalone Z80 cross-assembler similar in nature to Pasmo, in that it has macro support but cannot generate relocatable object files. It too is licensed under the GNU GPL (version 2 or later), and exists as the package <tt>z80asm</tt> in the Debian pool.<br />
<br />
=== GNU as ===<br />
'''Author''': the GNU binutils team<br />
<br />
'''Home page''': [http://www.gnu.org/software/binutils/ http://www.gnu.org/software/binutils/]<br />
<br />
Starting from version 2.17, the GNU assembler, part of the binutils package, is capable of cross-assembling Z80 code when configured for it at compile-time, such as with <tt>--target=z80-unknown-coff</tt>. binutils includes a powerful assembler and linker both, along with various utilities for handling object files, such as objcopy and objdump; for Z80, COFF is used for relocatable objects, with raw binary and Intel hex formats also supported. While this is probably one of the more powerful tools in the list for Z80 development, it also requires more work to start with, as the traditional way to get a cross-assembling binutils is to compile it oneself. Being a GNU package, binutils is naturally licensed under the GNU GPL (version 2 or later). Prepackaged binary versions of binutils are very common, but usually do not have cross-assembling capability.<br />
<br />
==Sending programs to the calc==<br />
* [http://www.ticalc.org/archives/files/fileinfo/374/37480.html TiLP-II] (requires [http://www.ticalc.org/archives/files/fileinfo/374/37479.html tilibs])<br />
* [http://www.ticalc.org/archives/files/fileinfo/75/7588.html titranz] : commandline tool, only works for TI-83/TI-83+<br />
<br />
= FreeBSD =<br />
Much of the aforementioned software should compile independently without problem or with minor tweaking under FreeBSD, but it is best to utilize the ports collection whenever possible. Unfortunately, the current state of calculator-related software in the FreeBSD Ports Collection is lacking in variety.<br />
<br />
* Development<br />
{| width="75%" class="wikitable" style="margin: 1em auto 1em auto"<br />
|- align="left"<br />
!Port !! Current Version !! Location<br />
|-<br />
|tpasm || 1.2_1 || /devel/tpasm<br />
|-<br />
|z80asm || 0.1_1 || /devel/z80-asm<br />
|-<br />
|TI-GCC || 0.96.b8 || /devel/tigcc<br />
|-<br />
|libtifiles2 || 1.0.1 || /devel/libtifiles2<br />
|}<br />
<br />
* Communications<br />
{| width="75%" class="wikitable" style="margin: 1em auto 1em auto"<br />
|- align="left"<br />
!Port !! Current Version !! Location<br />
|-<br />
|TiLP-II || 1.01 || /comms/tilp2<br />
|-<br />
|libticables2 || 1.0.2 || /comms/libticables2<br />
|-<br />
|libticalcs2 || 1.0.1 || /comms/libticalcs2<br />
|}<br />
<br />
* Converters<br />
{| width="75%" class="wikitable" style="margin: 1em auto 1em auto"<br />
|- align="left"<br />
!Port !! Current Version !! Location<br />
|-<br />
|libticonv || 1.0.0 || /converters/libticonv<br />
|}<br />
<br />
* Emulation<br />
{| width="75%" class="wikitable" style="margin: 1em auto 1em auto"<br />
|- align="left"<br />
!Port !! Current Version !! Location<br />
|-<br />
| TIEmu 2 || 2.08 || /emulators/tiemu2<br />
|}<br />
<br />
= Mac OS X =<br />
(Note that all of these assesments were made on a MacBook running 10.4.9 Intel. Mileage may vary on other versions and of course the Darwine stuff won't work on PPC.)<br />
<br />
TiLP-II is known to compile and work properly with SilverLink and Direct USB cables with the 83+, 84+SE, and 89Ti, so there is no reason to believe it will not work with the other calculators. TI Connect X works well enough on Intel Macs even though it is not officially supported, however it seems to be more strict with the format of .8xk files than TiLP or TI Connect (Windows).<br />
<br />
Brass works in Mono. Wabbitspasm compiles and works properly. ZDS works in Darwine.<br />
<br />
TilEm compiles but seems to have some issues with multiple ROM versions. It is unclear to me if this is a problem with the build or TilEm itself. PindurTI is somewhat usable in Darwine: You must use the send.exe utility to send the ROM image, then it will emulate properly. However, it makes extensive use of the F-keys, including the Exposé ones. Remapping the Exposé keys is the only solution. TI FLASH Debugger runs in Darwine but the calculator windows are unskinned: You must either use the keyboard or click blindly in the window. The display output is fine, and other debugger windows appear to function properly. VirtualTI (2.5) should run OK after putting the ROM files somewhere Darwine knows about (I was lazy).<br />
<br />
= Other Unixes =<br />
<!--Replace with specific distributions as appropriate --><br />
This section is a stub. Please add it it.</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=Programming_under_Unix-like_operating_systems
Programming under Unix-like operating systems
2007-05-23T15:17:15Z
<p>AndyJ: /* Mac OS X */ PindurTI</p>
<hr />
<div>Here are the different tools at your disposal:<br />
<br />
= General Overviews =<br />
<br />
==Emulators==<br />
* TilEm [http://lpg.ticalc.org/prj_tilem/]<br />
* VTI (with Wine)<br />
<br />
==Syntax highlighting==<br />
Several editors have native or extensional support for editing Z80 assembly code with syntax highlighting:<br />
* Kwrite and Kate can be made to syntax-highlight Z80 assembly with [http://www.ticalc.org/archives/files/fileinfo/391/39178.html the appropriate definition file]. The file must be placed in /usr/share/apps/katepart/syntax .<br />
* SciTE and Emacs both have native modes for assembly code. For Emacs, one must make sure to turn on Font Lock mode as well.<br />
* The [http://www.revsoft.org/phpBB2/viewforum.php?f=25 Z80 Assembly IDE] has simple syntax highlighting built-in.<br />
* Users of Vim and WLA DX can use [http://sigma.unitedti.org/files/misc/z80.vim.bz2 this syntax file].<br />
<br />
== Assembling ==<br />
<br />
=== SPASM ===<br />
<br />
'''Author''': Spencer Putt<br />
<br />
'''Home Page''': [http://www.revsoft.org/phpBB2/viewforum.php?f=21 http://www.revsoft.org/phpBB2/viewforum.php?f=21]<br />
<br />
SPASM is a portable Z80 assembler released under the GPL. Its distinguishing features are extremely fast assembly and powerful macro support. The output is only available in binary form, however with the use of [http://www.revsoft.org/phpBB2/viewforum.php?f=23 Wabbitsign], written by James Montelongo and Spencer Putt, it can easily be converted to any desired program type.<br />
<br />
assembler foo.asm foo.bin<br />
wabbit foo.bin foo.8xp<br />
<br />
=== tpasm ===<br />
<br />
'''Author''': Todd Squires<br />
<br />
'''Home page''': [http://www.sqrt.com/ http://www.sqrt.com/]<br />
<br />
tpasm is a Free (GPL) assembler which supports the Z80 as well as the 6805, 6809, 68HC11, 6502, Sunplus, 8051, PIC, and AVR. It uses syntax very similar to ZMASM.<br />
<br />
tpasm 1.2 does not support binary file output, but you can use ''objcopy'' (from the GNU binutils package) to convert its Intel Hex output into binary; e.g.<br />
<br />
tpasm foo.asm -o intel foo.hex -l foo.lst<br />
objcopy -I ihex foo.hex -O binary foo.bin<br />
<br />
=== ASxxxx ===<br />
<br />
'''Author''': Alan R. Baldwin<br />
<br />
'''Home page''': [http://shop-pdp.kent.edu/ashtml/asxxxx.htm http://shop-pdp.kent.edu/ashtml/asxxxx.htm]<br />
<br />
ASxxxx is a freeware assembler which supports the Z80 along with a large variety of other processors. It more closely resembles a modern PC assembler than a typical Z80 assembler, as it assembles each file into a relocatable object format which can then be linked with other files to produce the complete program. The linking is done by a separate program called ASlink (included with the package.)<br />
<br />
To assemble and link a simple program you might do something like<br />
<br />
asz80 -plogff foo.asm<br />
aslink -u -b _CODE=0x9D95 -i foo.ihx foo.rel<br />
objcopy -I ihex foo.ihx -O binary foo.bin<br />
<br />
Note that the syntax is rather different from that of most Z80 assemblers. The important differences are<br />
* Immediate values are marked with #.<br />
* Indexed memory access is written as N(ix) rather than (ix+N).<br />
* Constants are written differently: 0xAA, 0hAA, or $$AA for hexadecimal; 0o252, 0q252, or $&252 for octal; 0b10101010 or $%10101010 for binary.<br />
<br />
For example,<br />
ld hl,#str_hello<br />
add a,3(ix)<br />
xor #0x0f<br />
<br />
There is also a modified version of ASxxxx distributed with the [http://sdcc.sf.net/ Small Device C Compiler]. This version is, if anything, more confusing to use due to the poorly-documented changes made by the SDCC team.<br />
<br />
=== TASM ===<br />
<br />
'''Author''': Thomas N. Anderson<br />
<br />
'''Home page''': [http://home.comcast.net/~tasm/ http://home.comcast.net/~tasm/]<br />
<br />
TASM is a shareware assembler which also supports a variety of processors.<br />
<br />
There are several ways that you can use tasm under Linux:<br />
* The TASM 3.1 for Linux shareware release is still in the wild. To use this you will need to enable "a.out" support in your kernel (it may be available as the module ''binfmt_aout''.) You will also need to obtain the ancient Linux libc version 4 (''not'' glibc) which can be found [http://ftp.linux.org.uk/pub/linux/libc/ here].<br />
* You can use TASM 3.2 for Windows with [http://www.winehq.com Wine].<br />
* You can pay the $40 and compile it yourself on the platform of your choice.<br />
<br />
=== Brass ===<br />
'''Author''': benryves<br />
<br />
'''Home page''': [http://benryves.com/bin/brass/ http://benryves.com/bin/brass/]<br />
<br />
Brass runs under Linux thanks to Mono.<br />
<br />
=== Zasm ===<br />
'''Author''': Steven Deprez<br />
<br />
'''Home page''': [http://lpg.ticalc.org/prj_zasm/index.html http://lpg.ticalc.org/prj_zasm/index.html]<br />
<br />
Zasm is an open source assembler that is almost fully compatible with Tasm and ZDS.<br />
<br />
=== WLA DX ===<br />
'''Author''': Ville Helin<br />
<br />
'''Home page''': [http://users.tkk.fi/~vhelin/wla.html http://users.tkk.fi/~vhelin/wla.html]<br />
<br />
WLA DX is another open-source (GNU GPL) cross-assembler with a primary focus on targeting video game consoles. It is a high-powered assembler with a wide variety of features such as, e.g. separate compilation, POSIX-like file I/O, and code sectioning. However it is cumbersome when assembling small projects, and semantics are unorthodox compared to other assemblers. (~ is the XOR operator, macro arguments are passed by value, etc.) Furthermore, development appears to have ceased since January 2006.<br />
<br />
WLA DX has had an influence in the development of Brass.<br />
<br />
=== Pasmo ===<br />
'''Author''': Juli&aacute;n Albo<br />
<br />
'''Home page''': [http://www.arrakis.es/~ninsesabe/pasmo/ http://www.arrakis.es/~ninsesabe/pasmo/]<br />
<br />
Pasmo is another standalone Z80 cross-assembler with basic macro support, but without the ability to generate<br />
relocatable object files. It is licensed under the GNU GPL, and exists as the package <tt>pasmo</tt> in the Debian pool.<br />
<br />
=== z80asm ===<br />
'''Author''': Bas Wijnen<br />
<br />
'''Home page''': [http://savannah.nongnu.org/projects/z80asm/ http://savannah.nongnu.org/projects/z80asm/]<br />
<br />
z80asm is a standalone Z80 cross-assembler similar in nature to Pasmo, in that it has macro support but cannot generate relocatable object files. It too is licensed under the GNU GPL (version 2 or later), and exists as the package <tt>z80asm</tt> in the Debian pool.<br />
<br />
=== GNU as ===<br />
'''Author''': the GNU binutils team<br />
<br />
'''Home page''': [http://www.gnu.org/software/binutils/ http://www.gnu.org/software/binutils/]<br />
<br />
Starting from version 2.17, the GNU assembler, part of the binutils package, is capable of cross-assembling Z80 code when configured for it at compile-time, such as with <tt>--target=z80-unknown-coff</tt>. binutils includes a powerful assembler and linker both, along with various utilities for handling object files, such as objcopy and objdump; for Z80, COFF is used for relocatable objects, with raw binary and Intel hex formats also supported. While this is probably one of the more powerful tools in the list for Z80 development, it also requires more work to start with, as the traditional way to get a cross-assembling binutils is to compile it oneself. Being a GNU package, binutils is naturally licensed under the GNU GPL (version 2 or later). Prepackaged binary versions of binutils are very common, but usually do not have cross-assembling capability.<br />
<br />
==Sending programs to the calc==<br />
* [http://www.ticalc.org/archives/files/fileinfo/374/37480.html TiLP-II] (requires [http://www.ticalc.org/archives/files/fileinfo/374/37479.html tilibs])<br />
* [http://www.ticalc.org/archives/files/fileinfo/75/7588.html titranz] : commandline tool, only works for TI-83/TI-83+<br />
<br />
= FreeBSD =<br />
Much of the aforementioned software should compile independently without problem or with minor tweaking under FreeBSD, but it is best to utilize the ports collection whenever possible. Unfortunately, the current state of calculator-related software in the FreeBSD Ports Collection is lacking in variety.<br />
<br />
* Development<br />
{| width="75%" class="wikitable" style="margin: 1em auto 1em auto"<br />
|- align="left"<br />
!Port !! Current Version !! Location<br />
|-<br />
|tpasm || 1.2_1 || /devel/tpasm<br />
|-<br />
|z80asm || 0.1_1 || /devel/z80-asm<br />
|-<br />
|TI-GCC || 0.96.b8 || /devel/tigcc<br />
|-<br />
|libtifiles2 || 1.0.1 || /devel/libtifiles2<br />
|}<br />
<br />
* Communications<br />
{| width="75%" class="wikitable" style="margin: 1em auto 1em auto"<br />
|- align="left"<br />
!Port !! Current Version !! Location<br />
|-<br />
|TiLP-II || 1.01 || /comms/tilp2<br />
|-<br />
|libticables2 || 1.0.2 || /comms/libticables2<br />
|-<br />
|libticalcs2 || 1.0.1 || /comms/libticalcs2<br />
|}<br />
<br />
* Converters<br />
{| width="75%" class="wikitable" style="margin: 1em auto 1em auto"<br />
|- align="left"<br />
!Port !! Current Version !! Location<br />
|-<br />
|libticonv || 1.0.0 || /converters/libticonv<br />
|}<br />
<br />
* Emulation<br />
{| width="75%" class="wikitable" style="margin: 1em auto 1em auto"<br />
|- align="left"<br />
!Port !! Current Version !! Location<br />
|-<br />
| TIEmu 2 || 2.08 || /emulators/tiemu2<br />
|}<br />
<br />
= Mac OS X =<br />
(Note that all of these assesments were made on a MacBook running 10.4.9 Intel. Mileage may vary on other versions and of course the Darwine stuff won't work on PPC.)<br />
<br />
TiLP-II is known to compile and work properly with SilverLink and Direct USB cables with the 83+, 84+SE, and 89Ti, so there is no reason to believe it will not work with the other calculators. TI Connect X works well enough on Intel Macs even though it is not officially supported, however it seems to be more strict with the format of .8xk files than TiLP or TI Connect (Windows).<br />
<br />
Brass works in Mono. Wabbitspasm compiles and works properly. ZDS works in Darwine.<br />
<br />
TilEm compiles but seems to have some issues with multiple ROM versions. It is unclear to me if this is a problem with the build or TilEm itself. PindurTI is somewhat usable in Darwine: You must use the send.exe utility to send the ROM image, then it will emulate properly. However, it makes extensive use of the F-keys, including the Exposé ones. Remapping the Exposé keys is the only solution. Also, the debugger is fairly useless because the widgets don't show anything (might be related to Wine refusing to see freetype on my system). TI FLASH Debugger runs in Darwine but the calculator windows are unskinned: You must either use the keyboard or click blindly in the window. The display output is fine, and other debugger windows appear to function properly. VirtualTI (2.5) should run OK after putting the ROM files somewhere Darwine knows about (I was lazy).<br />
<br />
= Other Unixes =<br />
<!--Replace with specific distributions as appropriate --><br />
This section is a stub. Please add it it.</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=Programming_under_Unix-like_operating_systems
Programming under Unix-like operating systems
2007-05-23T02:20:52Z
<p>AndyJ: /* Mac OS X */</p>
<hr />
<div>Here are the different tools at your disposal:<br />
<br />
= General Overviews =<br />
<br />
==Emulators==<br />
* TilEm [http://lpg.ticalc.org/prj_tilem/]<br />
* VTI (with Wine)<br />
<br />
==Syntax highlighting==<br />
Several editors have native or extensional support for editing Z80 assembly code with syntax highlighting:<br />
* Kwrite and Kate can be made to syntax-highlight Z80 assembly with [http://www.ticalc.org/archives/files/fileinfo/391/39178.html the appropriate definition file]. The file must be placed in /usr/share/apps/katepart/syntax .<br />
* SciTE and Emacs both have native modes for assembly code. For Emacs, one must make sure to turn on Font Lock mode as well.<br />
* The [http://www.revsoft.org/phpBB2/viewforum.php?f=25 Z80 Assembly IDE] has simple syntax highlighting built-in.<br />
* Users of Vim and WLA DX can use [http://sigma.unitedti.org/files/misc/z80.vim.bz2 this syntax file].<br />
<br />
== Assembling ==<br />
<br />
=== SPASM ===<br />
<br />
'''Author''': Spencer Putt<br />
<br />
'''Home Page''': [http://www.revsoft.org/phpBB2/viewforum.php?f=21 http://www.revsoft.org/phpBB2/viewforum.php?f=21]<br />
<br />
SPASM is a portable Z80 assembler released under the GPL. Its distinguishing features are extremely fast assembly and powerful macro support. The output is only available in binary form, however with the use of [http://www.revsoft.org/phpBB2/viewforum.php?f=23 Wabbitsign], written by James Montelongo and Spencer Putt, it can easily be converted to any desired program type.<br />
<br />
assembler foo.asm foo.bin<br />
wabbit foo.bin foo.8xp<br />
<br />
=== tpasm ===<br />
<br />
'''Author''': Todd Squires<br />
<br />
'''Home page''': [http://www.sqrt.com/ http://www.sqrt.com/]<br />
<br />
tpasm is a Free (GPL) assembler which supports the Z80 as well as the 6805, 6809, 68HC11, 6502, Sunplus, 8051, PIC, and AVR. It uses syntax very similar to ZMASM.<br />
<br />
tpasm 1.2 does not support binary file output, but you can use ''objcopy'' (from the GNU binutils package) to convert its Intel Hex output into binary; e.g.<br />
<br />
tpasm foo.asm -o intel foo.hex -l foo.lst<br />
objcopy -I ihex foo.hex -O binary foo.bin<br />
<br />
=== ASxxxx ===<br />
<br />
'''Author''': Alan R. Baldwin<br />
<br />
'''Home page''': [http://shop-pdp.kent.edu/ashtml/asxxxx.htm http://shop-pdp.kent.edu/ashtml/asxxxx.htm]<br />
<br />
ASxxxx is a freeware assembler which supports the Z80 along with a large variety of other processors. It more closely resembles a modern PC assembler than a typical Z80 assembler, as it assembles each file into a relocatable object format which can then be linked with other files to produce the complete program. The linking is done by a separate program called ASlink (included with the package.)<br />
<br />
To assemble and link a simple program you might do something like<br />
<br />
asz80 -plogff foo.asm<br />
aslink -u -b _CODE=0x9D95 -i foo.ihx foo.rel<br />
objcopy -I ihex foo.ihx -O binary foo.bin<br />
<br />
Note that the syntax is rather different from that of most Z80 assemblers. The important differences are<br />
* Immediate values are marked with #.<br />
* Indexed memory access is written as N(ix) rather than (ix+N).<br />
* Constants are written differently: 0xAA, 0hAA, or $$AA for hexadecimal; 0o252, 0q252, or $&252 for octal; 0b10101010 or $%10101010 for binary.<br />
<br />
For example,<br />
ld hl,#str_hello<br />
add a,3(ix)<br />
xor #0x0f<br />
<br />
There is also a modified version of ASxxxx distributed with the [http://sdcc.sf.net/ Small Device C Compiler]. This version is, if anything, more confusing to use due to the poorly-documented changes made by the SDCC team.<br />
<br />
=== TASM ===<br />
<br />
'''Author''': Thomas N. Anderson<br />
<br />
'''Home page''': [http://home.comcast.net/~tasm/ http://home.comcast.net/~tasm/]<br />
<br />
TASM is a shareware assembler which also supports a variety of processors.<br />
<br />
There are several ways that you can use tasm under Linux:<br />
* The TASM 3.1 for Linux shareware release is still in the wild. To use this you will need to enable "a.out" support in your kernel (it may be available as the module ''binfmt_aout''.) You will also need to obtain the ancient Linux libc version 4 (''not'' glibc) which can be found [http://ftp.linux.org.uk/pub/linux/libc/ here].<br />
* You can use TASM 3.2 for Windows with [http://www.winehq.com Wine].<br />
* You can pay the $40 and compile it yourself on the platform of your choice.<br />
<br />
=== Brass ===<br />
'''Author''': benryves<br />
<br />
'''Home page''': [http://benryves.com/bin/brass/ http://benryves.com/bin/brass/]<br />
<br />
Brass runs under Linux thanks to Mono.<br />
<br />
=== Zasm ===<br />
'''Author''': Steven Deprez<br />
<br />
'''Home page''': [http://lpg.ticalc.org/prj_zasm/index.html http://lpg.ticalc.org/prj_zasm/index.html]<br />
<br />
Zasm is an open source assembler that is almost fully compatible with Tasm and ZDS.<br />
<br />
=== WLA DX ===<br />
'''Author''': Ville Helin<br />
<br />
'''Home page''': [http://users.tkk.fi/~vhelin/wla.html http://users.tkk.fi/~vhelin/wla.html]<br />
<br />
WLA DX is another open-source (GNU GPL) cross-assembler with a primary focus on targeting video game consoles. It is a high-powered assembler with a wide variety of features such as, e.g. separate compilation, POSIX-like file I/O, and code sectioning. However it is cumbersome when assembling small projects, and semantics are unorthodox compared to other assemblers. (~ is the XOR operator, macro arguments are passed by value, etc.) Furthermore, development appears to have ceased since January 2006.<br />
<br />
WLA DX has had an influence in the development of Brass.<br />
<br />
=== Pasmo ===<br />
'''Author''': Juli&aacute;n Albo<br />
<br />
'''Home page''': [http://www.arrakis.es/~ninsesabe/pasmo/ http://www.arrakis.es/~ninsesabe/pasmo/]<br />
<br />
Pasmo is another standalone Z80 cross-assembler with basic macro support, but without the ability to generate<br />
relocatable object files. It is licensed under the GNU GPL, and exists as the package <tt>pasmo</tt> in the Debian pool.<br />
<br />
=== z80asm ===<br />
'''Author''': Bas Wijnen<br />
<br />
'''Home page''': [http://savannah.nongnu.org/projects/z80asm/ http://savannah.nongnu.org/projects/z80asm/]<br />
<br />
z80asm is a standalone Z80 cross-assembler similar in nature to Pasmo, in that it has macro support but cannot generate relocatable object files. It too is licensed under the GNU GPL (version 2 or later), and exists as the package <tt>z80asm</tt> in the Debian pool.<br />
<br />
=== GNU as ===<br />
'''Author''': the GNU binutils team<br />
<br />
'''Home page''': [http://www.gnu.org/software/binutils/ http://www.gnu.org/software/binutils/]<br />
<br />
Starting from version 2.17, the GNU assembler, part of the binutils package, is capable of cross-assembling Z80 code when configured for it at compile-time, such as with <tt>--target=z80-unknown-coff</tt>. binutils includes a powerful assembler and linker both, along with various utilities for handling object files, such as objcopy and objdump; for Z80, COFF is used for relocatable objects, with raw binary and Intel hex formats also supported. While this is probably one of the more powerful tools in the list for Z80 development, it also requires more work to start with, as the traditional way to get a cross-assembling binutils is to compile it oneself. Being a GNU package, binutils is naturally licensed under the GNU GPL (version 2 or later). Prepackaged binary versions of binutils are very common, but usually do not have cross-assembling capability.<br />
<br />
==Sending programs to the calc==<br />
* [http://www.ticalc.org/archives/files/fileinfo/374/37480.html TiLP-II] (requires [http://www.ticalc.org/archives/files/fileinfo/374/37479.html tilibs])<br />
* [http://www.ticalc.org/archives/files/fileinfo/75/7588.html titranz] : commandline tool, only works for TI-83/TI-83+<br />
<br />
= FreeBSD =<br />
Much of the aforementioned software should compile independently without problem or with minor tweaking under FreeBSD, but it is best to utilize the ports collection whenever possible. Unfortunately, the current state of calculator-related software in the FreeBSD Ports Collection is lacking in variety.<br />
<br />
* Development<br />
{| width="75%" class="wikitable" style="margin: 1em auto 1em auto"<br />
|- align="left"<br />
!Port !! Current Version !! Location<br />
|-<br />
|tpasm || 1.2_1 || /devel/tpasm<br />
|-<br />
|z80asm || 0.1_1 || /devel/z80-asm<br />
|-<br />
|TI-GCC || 0.96.b8 || /devel/tigcc<br />
|-<br />
|libtifiles2 || 1.0.1 || /devel/libtifiles2<br />
|}<br />
<br />
* Communications<br />
{| width="75%" class="wikitable" style="margin: 1em auto 1em auto"<br />
|- align="left"<br />
!Port !! Current Version !! Location<br />
|-<br />
|TiLP-II || 1.01 || /comms/tilp2<br />
|-<br />
|libticables2 || 1.0.2 || /comms/libticables2<br />
|-<br />
|libticalcs2 || 1.0.1 || /comms/libticalcs2<br />
|}<br />
<br />
* Converters<br />
{| width="75%" class="wikitable" style="margin: 1em auto 1em auto"<br />
|- align="left"<br />
!Port !! Current Version !! Location<br />
|-<br />
|libticonv || 1.0.0 || /converters/libticonv<br />
|}<br />
<br />
* Emulation<br />
{| width="75%" class="wikitable" style="margin: 1em auto 1em auto"<br />
|- align="left"<br />
!Port !! Current Version !! Location<br />
|-<br />
| TIEmu 2 || 2.08 || /emulators/tiemu2<br />
|}<br />
<br />
= Mac OS X =<br />
(Note that all of these assesments were made on a MacBook running 10.4.9 Intel. Mileage may vary on other versions and of course the Darwine stuff won't work on PPC.)<br />
<br />
TiLP-II is known to compile and work properly with SilverLink and Direct USB cables with the 83+, 84+SE, and 89Ti, so there is no reason to believe it will not work with the other calculators. TI Connect X works well enough on Intel Macs even though it is not officially supported, however it seems to be more strict with the format of .8xk files than TiLP or TI Connect (Windows).<br />
<br />
Brass works in Mono. Wabbitspasm compiles and works properly. ZDS works in Darwine.<br />
<br />
TilEm compiles but seems to have some issues with multiple ROM versions. It is unclear to me if this is a problem with the build or TilEm itself. PindurTI is unusable in Darwine: You are unable to drop the ROM image onto its window. TI FLASH Debugger runs in Darwine but the calculator windows are unskinned: You must either use the keyboard or click blindly in the window. The display output is fine, and other debugger windows appear to function properly. VirtualTI (2.5) should run OK after putting the ROM files somewhere Darwine knows about (I was lazy).<br />
<br />
= Other Unixes =<br />
<!--Replace with specific distributions as appropriate --><br />
This section is a stub. Please add it it.</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=Programming_under_Unix-like_operating_systems
Programming under Unix-like operating systems
2007-05-23T02:19:37Z
<p>AndyJ: Mac OS X</p>
<hr />
<div>Here are the different tools at your disposal:<br />
<br />
= General Overviews =<br />
<br />
==Emulators==<br />
* TilEm [http://lpg.ticalc.org/prj_tilem/]<br />
* VTI (with Wine)<br />
<br />
==Syntax highlighting==<br />
Several editors have native or extensional support for editing Z80 assembly code with syntax highlighting:<br />
* Kwrite and Kate can be made to syntax-highlight Z80 assembly with [http://www.ticalc.org/archives/files/fileinfo/391/39178.html the appropriate definition file]. The file must be placed in /usr/share/apps/katepart/syntax .<br />
* SciTE and Emacs both have native modes for assembly code. For Emacs, one must make sure to turn on Font Lock mode as well.<br />
* The [http://www.revsoft.org/phpBB2/viewforum.php?f=25 Z80 Assembly IDE] has simple syntax highlighting built-in.<br />
* Users of Vim and WLA DX can use [http://sigma.unitedti.org/files/misc/z80.vim.bz2 this syntax file].<br />
<br />
== Assembling ==<br />
<br />
=== SPASM ===<br />
<br />
'''Author''': Spencer Putt<br />
<br />
'''Home Page''': [http://www.revsoft.org/phpBB2/viewforum.php?f=21 http://www.revsoft.org/phpBB2/viewforum.php?f=21]<br />
<br />
SPASM is a portable Z80 assembler released under the GPL. Its distinguishing features are extremely fast assembly and powerful macro support. The output is only available in binary form, however with the use of [http://www.revsoft.org/phpBB2/viewforum.php?f=23 Wabbitsign], written by James Montelongo and Spencer Putt, it can easily be converted to any desired program type.<br />
<br />
assembler foo.asm foo.bin<br />
wabbit foo.bin foo.8xp<br />
<br />
=== tpasm ===<br />
<br />
'''Author''': Todd Squires<br />
<br />
'''Home page''': [http://www.sqrt.com/ http://www.sqrt.com/]<br />
<br />
tpasm is a Free (GPL) assembler which supports the Z80 as well as the 6805, 6809, 68HC11, 6502, Sunplus, 8051, PIC, and AVR. It uses syntax very similar to ZMASM.<br />
<br />
tpasm 1.2 does not support binary file output, but you can use ''objcopy'' (from the GNU binutils package) to convert its Intel Hex output into binary; e.g.<br />
<br />
tpasm foo.asm -o intel foo.hex -l foo.lst<br />
objcopy -I ihex foo.hex -O binary foo.bin<br />
<br />
=== ASxxxx ===<br />
<br />
'''Author''': Alan R. Baldwin<br />
<br />
'''Home page''': [http://shop-pdp.kent.edu/ashtml/asxxxx.htm http://shop-pdp.kent.edu/ashtml/asxxxx.htm]<br />
<br />
ASxxxx is a freeware assembler which supports the Z80 along with a large variety of other processors. It more closely resembles a modern PC assembler than a typical Z80 assembler, as it assembles each file into a relocatable object format which can then be linked with other files to produce the complete program. The linking is done by a separate program called ASlink (included with the package.)<br />
<br />
To assemble and link a simple program you might do something like<br />
<br />
asz80 -plogff foo.asm<br />
aslink -u -b _CODE=0x9D95 -i foo.ihx foo.rel<br />
objcopy -I ihex foo.ihx -O binary foo.bin<br />
<br />
Note that the syntax is rather different from that of most Z80 assemblers. The important differences are<br />
* Immediate values are marked with #.<br />
* Indexed memory access is written as N(ix) rather than (ix+N).<br />
* Constants are written differently: 0xAA, 0hAA, or $$AA for hexadecimal; 0o252, 0q252, or $&252 for octal; 0b10101010 or $%10101010 for binary.<br />
<br />
For example,<br />
ld hl,#str_hello<br />
add a,3(ix)<br />
xor #0x0f<br />
<br />
There is also a modified version of ASxxxx distributed with the [http://sdcc.sf.net/ Small Device C Compiler]. This version is, if anything, more confusing to use due to the poorly-documented changes made by the SDCC team.<br />
<br />
=== TASM ===<br />
<br />
'''Author''': Thomas N. Anderson<br />
<br />
'''Home page''': [http://home.comcast.net/~tasm/ http://home.comcast.net/~tasm/]<br />
<br />
TASM is a shareware assembler which also supports a variety of processors.<br />
<br />
There are several ways that you can use tasm under Linux:<br />
* The TASM 3.1 for Linux shareware release is still in the wild. To use this you will need to enable "a.out" support in your kernel (it may be available as the module ''binfmt_aout''.) You will also need to obtain the ancient Linux libc version 4 (''not'' glibc) which can be found [http://ftp.linux.org.uk/pub/linux/libc/ here].<br />
* You can use TASM 3.2 for Windows with [http://www.winehq.com Wine].<br />
* You can pay the $40 and compile it yourself on the platform of your choice.<br />
<br />
=== Brass ===<br />
'''Author''': benryves<br />
<br />
'''Home page''': [http://benryves.com/bin/brass/ http://benryves.com/bin/brass/]<br />
<br />
Brass runs under Linux thanks to Mono.<br />
<br />
=== Zasm ===<br />
'''Author''': Steven Deprez<br />
<br />
'''Home page''': [http://lpg.ticalc.org/prj_zasm/index.html http://lpg.ticalc.org/prj_zasm/index.html]<br />
<br />
Zasm is an open source assembler that is almost fully compatible with Tasm and ZDS.<br />
<br />
=== WLA DX ===<br />
'''Author''': Ville Helin<br />
<br />
'''Home page''': [http://users.tkk.fi/~vhelin/wla.html http://users.tkk.fi/~vhelin/wla.html]<br />
<br />
WLA DX is another open-source (GNU GPL) cross-assembler with a primary focus on targeting video game consoles. It is a high-powered assembler with a wide variety of features such as, e.g. separate compilation, POSIX-like file I/O, and code sectioning. However it is cumbersome when assembling small projects, and semantics are unorthodox compared to other assemblers. (~ is the XOR operator, macro arguments are passed by value, etc.) Furthermore, development appears to have ceased since January 2006.<br />
<br />
WLA DX has had an influence in the development of Brass.<br />
<br />
=== Pasmo ===<br />
'''Author''': Juli&aacute;n Albo<br />
<br />
'''Home page''': [http://www.arrakis.es/~ninsesabe/pasmo/ http://www.arrakis.es/~ninsesabe/pasmo/]<br />
<br />
Pasmo is another standalone Z80 cross-assembler with basic macro support, but without the ability to generate<br />
relocatable object files. It is licensed under the GNU GPL, and exists as the package <tt>pasmo</tt> in the Debian pool.<br />
<br />
=== z80asm ===<br />
'''Author''': Bas Wijnen<br />
<br />
'''Home page''': [http://savannah.nongnu.org/projects/z80asm/ http://savannah.nongnu.org/projects/z80asm/]<br />
<br />
z80asm is a standalone Z80 cross-assembler similar in nature to Pasmo, in that it has macro support but cannot generate relocatable object files. It too is licensed under the GNU GPL (version 2 or later), and exists as the package <tt>z80asm</tt> in the Debian pool.<br />
<br />
=== GNU as ===<br />
'''Author''': the GNU binutils team<br />
<br />
'''Home page''': [http://www.gnu.org/software/binutils/ http://www.gnu.org/software/binutils/]<br />
<br />
Starting from version 2.17, the GNU assembler, part of the binutils package, is capable of cross-assembling Z80 code when configured for it at compile-time, such as with <tt>--target=z80-unknown-coff</tt>. binutils includes a powerful assembler and linker both, along with various utilities for handling object files, such as objcopy and objdump; for Z80, COFF is used for relocatable objects, with raw binary and Intel hex formats also supported. While this is probably one of the more powerful tools in the list for Z80 development, it also requires more work to start with, as the traditional way to get a cross-assembling binutils is to compile it oneself. Being a GNU package, binutils is naturally licensed under the GNU GPL (version 2 or later). Prepackaged binary versions of binutils are very common, but usually do not have cross-assembling capability.<br />
<br />
==Sending programs to the calc==<br />
* [http://www.ticalc.org/archives/files/fileinfo/374/37480.html TiLP-II] (requires [http://www.ticalc.org/archives/files/fileinfo/374/37479.html tilibs])<br />
* [http://www.ticalc.org/archives/files/fileinfo/75/7588.html titranz] : commandline tool, only works for TI-83/TI-83+<br />
<br />
= FreeBSD =<br />
Much of the aforementioned software should compile independently without problem or with minor tweaking under FreeBSD, but it is best to utilize the ports collection whenever possible. Unfortunately, the current state of calculator-related software in the FreeBSD Ports Collection is lacking in variety.<br />
<br />
* Development<br />
{| width="75%" class="wikitable" style="margin: 1em auto 1em auto"<br />
|- align="left"<br />
!Port !! Current Version !! Location<br />
|-<br />
|tpasm || 1.2_1 || /devel/tpasm<br />
|-<br />
|z80asm || 0.1_1 || /devel/z80-asm<br />
|-<br />
|TI-GCC || 0.96.b8 || /devel/tigcc<br />
|-<br />
|libtifiles2 || 1.0.1 || /devel/libtifiles2<br />
|}<br />
<br />
* Communications<br />
{| width="75%" class="wikitable" style="margin: 1em auto 1em auto"<br />
|- align="left"<br />
!Port !! Current Version !! Location<br />
|-<br />
|TiLP-II || 1.01 || /comms/tilp2<br />
|-<br />
|libticables2 || 1.0.2 || /comms/libticables2<br />
|-<br />
|libticalcs2 || 1.0.1 || /comms/libticalcs2<br />
|}<br />
<br />
* Converters<br />
{| width="75%" class="wikitable" style="margin: 1em auto 1em auto"<br />
|- align="left"<br />
!Port !! Current Version !! Location<br />
|-<br />
|libticonv || 1.0.0 || /converters/libticonv<br />
|}<br />
<br />
* Emulation<br />
{| width="75%" class="wikitable" style="margin: 1em auto 1em auto"<br />
|- align="left"<br />
!Port !! Current Version !! Location<br />
|-<br />
| TIEmu 2 || 2.08 || /emulators/tiemu2<br />
|}<br />
<br />
= Mac OS X =<br />
(Note that all of these assesments were made on a MacBook running 10.4.9 Intel.)<br />
<br />
TiLP-II is known to compile and work properly with SilverLink and Direct USB cables with the 83+, 84+SE, and 89Ti, so there is no reason to believe it will not work with the other calculators. TI Connect X works well enough on Intel Macs even though it is not officially supported, however it seems to be more strict with the format of .8xk files than TiLP or TI Connect (Windows).<br />
<br />
Brass works in Mono. Wabbitspasm compiles and works properly. ZDS works in Darwine.<br />
<br />
TilEm compiles but seems to have some issues with multiple ROM versions. It is unclear to me if this is a problem with the build or TilEm itself. PindurTI is unusable in Darwine: You are unable to drop the ROM image onto its window. TI FLASH Debugger runs in Darwine but the calculator windows are unskinned: You must either use the keyboard or click blindly in the window. The display output is fine, and other debugger windows appear to function properly. VirtualTI (2.5) should run OK after putting the ROM files somewhere Darwine knows about (I was lazy).<br />
<br />
= Other Unixes =<br />
<!--Replace with specific distributions as appropriate --><br />
This section is a stub. Please add it it.</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:509E
83Plus:BCALLs:509E
2007-05-23T02:10:36Z
<p>AndyJ: HLMinus9 is in Math, so I guess HLMinus5 should be too.</p>
<hr />
<div>[[Category:83Plus:BCALLs:By Name:Utterly Useless|HLMinus5]] [[Category:83Plus:BCALLs:By Name:Math|HLMinus5]] [[Category:83Plus:BCALLs:By Name|HLMinus5]] [[Category:83Plus:BCALLs:By Address|509E - HLMinus5]]<br />
<br />
== Synopsis ==<br />
'''Unofficial Name:''' HLMinus5<br />
<br />
'''BCALL Address:''' 509E<br />
<br />
Decreases HL by 5.<br />
<br />
=== Inputs ===<br />
* HL: value to decrease by 5<br />
<br />
=== Outputs ===<br />
* HL is decreased by 5<br />
<br />
=== Destroys ===<br />
''None''<br />
<br />
== Comments ==<br />
I worry about TI sometimes.<br />
<br />
This could have its uses, like getting to the page byte of a variable's VAT entry given the beginning. I guess.</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4492
83Plus:BCALLs:4492
2007-05-23T02:09:50Z
<p>AndyJ: HLMinus5 is Utterly Useless; no reason HLMinus9 shouldn't be.</p>
<hr />
<div>[[Category:83Plus:BCALLs:By Name:Utterly Useless|HLMinus9]][[Category:83Plus:BCALLs:By Name:Math:Integer|HLMinus9]] [[Category:83Plus:BCALLs:By Name:Math|HLMinus9]] [[Category:83Plus:BCALLs:By Name|HLMinus9]] [[Category:83Plus:BCALLs:By Address|4492 - HLMinus9]]<br />
== Synopsis ==<br />
'''Official Name:''' HLMinus9<br />
<br />
'''BCALL Address:''' 4492<br />
<br />
Subtracts nine from HL.<br />
<br />
=== Inputs ===<br />
* HL: number<br />
<br />
=== Outputs ===<br />
* HL: number - 9<br />
<br />
=== Registers Destroyed ===<br />
* DE<br />
<br />
== Comments ==<br />
Yes, that's all.</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=User_talk:Dan_Englender
User talk:Dan Englender
2007-05-20T20:42:07Z
<p>AndyJ: /* 83Plus:RAM:9D76 */ unsigned</p>
<hr />
<div>Hi, I'm Dan.<br />
<br />
== Page 0 Calls -> Maybe we could create a new section? ==<br />
<br />
Hi Dan,<br />
<br />
<br />
<br />
I made a page about page 0 calls. (like CALL 2EEE)<br />
<br />
Maybe you could create a new section for it?<br />
<br />
It seems to be a source of much functions.<br />
<br />
Thanks for your time.<br />
<br />
<br />
<br />
Sernin van de Krol<br />
<br />
---[[User:84plusfreak|84plusfreak]] 09:01, 7 Jun 2005 (PDT)<br />
: Discussion moved [[Talk:83Plus:OS:Page_0_Calls|here]] --[[User:Dan Englender|Dan Englender]] 15:15, 7 Jun 2005 (PDT)<br />
<br />
== USB Mouse ==<br />
<br />
Can I have that App? And the instructions for connecting the mouse? ---[[User:84plusfreak|84plusfreak]] 05:22, 28 Jun 2005 (PDT)<br />
<br />
:The app as currently written is not very useful for anything other than a mouse demo or reading standard descriptors. Source will be up soon though, once I clean it up and start working on a driver layer. As for connecting the mouse, you just need to get some sort of adaptor or cable with a mini-A plug on one end, and a standard A female on the other end. I'm using the Gold-X Quick Connect 5 in 1 set, but I think there are other options on the market too. --[[User:Dan Englender|Dan Englender]] 13:49, 28 Jun 2005 (PDT)<br />
<br />
:: Wal*mart has a universal cable for $15. --[[User:AndyJ|AndyJ]] 14:54, 28 Jun 2005 (PDT)<br />
<br />
::: I live in The Netherlands, so the Wal*mart is a little bit too far away. ;-) --[[User:84plusfreak|84plusfreak]] 06:20, 2 Nov 2005 (PST)<br />
<br />
To whoever felt to need to add my last name to my user page: *shrug*<br />
:yeah... User pages should only be edited by the user to whom it belongs.... [[User:AndyJ|Andy Janata]] 18:02, 31 Oct 2005 (PST)<br />
<br />
== 84 Plus and 84 Plus Silver Edition ==<br />
How come there is no designated page for these two? I see that there is some information on it though. This should be fixed.<br />
<br />
== Press-to-Test == <br />
how can I request information on this? {{unsigned|Misterdan|16:15, 10 January 2007 }}<br />
<br />
== TestGuard 2.0 ==<br />
information on this should also be supplied {{unsigned|Misterdan|16:19, 10 January 2007}}<br />
: Well if you create a page for the topics and put a missing info or stub templates that'll at least get it on the appropriate pages. But people mainly add information about what they're interested in researching, so if you can find someone interested in researching press-to-test or testguard you're more likely to get some information. --[[User:Dan Englender|Dan Englender]] 20:51, 10 January 2007 (PST)<br />
<br />
== 83Plus:RAM:9D76 ==<br />
<br />
Hi Dan,<br />
<br />
I made a little mistake in thinking it was a fixed address, it is not.<br />
It moves around a lot, but I saw it at this location several times.<br />
<br />
It looked interesting, so I tried to do some research on it - which failed because it moved.<br />
<br />
so, well, best delete that page.<br />
<br />
{{unsigned|Harold|09:56, 26 April 2007 UTC}}</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=83Plus:Ports:03
83Plus:Ports:03
2007-05-19T16:55:04Z
<p>AndyJ: it's -> its possesive, link to wikipedia as interwiki link</p>
<hr />
<div>[[Category:83Plus:Ports:By_Address|03 - Interrupt Mask]] [[Category:83Plus:Ports:By_Name|Interrupt Mask]]<br />
== Synopsis ==<br />
'''Port Number:''' 03h<br />
<br />
'''Function:''' Interrupt Masking Port<br />
<br />
This port controls what devices will be allowed to trigger interrupts. When an interrupt is triggered, it should be cleared by reseting the corresponding bit. Otherwise, it will continuously call the interrupt code once interrupts are reenabled with ei.<br />
<br />
=== Read Values ===<br />
* Bit 0: Set if pressing the ON key will generate an interrupt.<br />
* Bit 1: Set if the first hardware timer will generate an interrupt (range: 108Hz-512Hz).<br />
* Bit 2: Set if the second hardware timer will generate an interrupt (range: 216Hz-1024Hz).<br />
* Bit 4: Set if the linkport will generate an interrupt.<br />
<br />
=== Write Values ===<br />
* Bit 0: Set 1 to enable the ON key. Set 0 acknowledge the interrupt request and/or to disable it.<br />
* Bit 1: Set 1 to enable the first hardware timer. Set 0 acknowledge the interrupt request and/or to disable it.<br />
* Bit 2: Set 1 to enable the second hardware timer. Set 0 acknowledge the interrupt request and/or to disable it.<br />
* Bit 3: Set 0 to put the calculator in low power mode if and only if the Z80 cpu enters the halt state (during the executing of a halt instruction). Set 1 to keep the calculator powered.<br />
* Bit 4: Set 1 to enable the linkport interrupt. Set 0 acknowledge the interrupt request and/or to disable it. (Does not completely disable the linkport.)<br />
<br />
== Comments ==<br />
* For normal operation, write 0B (00001011) to this port. This will allow the first timer to generate interrupts, and the on key.<br />
* In low power mode it is known that at least the lcd driver enters standby mode and that the timer hardware has been disabled.<br />
<br />
== Example ==<br />
===Soft Powerdown===<br />
This example shows how to do a soft powerdown (similar to the auto powerdown) on the calculator.<br />
This may or may not wipe the LCD screen, so you should first copy its contents to a buffer like saveSScreen and then copy it back afterwards.<br />
<nowiki> push af<br />
ld a, 11h ;Enable linkport, ON key. Disable timer.<br />
;Set low power mode.<br />
out (3), a<br />
halt ;Enter low power mode (disabling various devices)<br />
;and wait for an interrupt (either ON key or<br />
;link activity) which will enable all hardware<br />
;devices again.<br />
ld a, 0Bh ;Enable ON key, timer. Disable linkport.<br />
;Keep calculator powered.<br />
out (3), a<br />
pop af</nowiki><br />
<br />
===Simple Interrupt===<br />
This example will show how to set up the first timer for an interrupt and its use in the [[wikipedia:Interrupt_handler|ISR]]. It will also show beyond just port 3 usage since this port requires more complex interaction for its typical use. <br />
<nowiki>Install_ISR:<br />
<br />
;Disableing interrupts prior to installation.<br />
;This is in case an im 2 interrupt is already running.<br />
;(MirageOS would present such a case.)<br />
;<br />
di<br />
<br />
;A 257 byte vector table(located in StatVars) is <br />
;filled with the same byte. This byte will determine <br />
;the location of the interrupt code's start.<br />
;If the table is filled with $XY then the code must be<br />
;located at $XYXY.<br />
;<br />
ld hl,$8B00<br />
ld (hl),$8A<br />
ld de,$8B01<br />
ld bc,257<br />
ldir<br />
<br />
;The interrupt code is copied to a safe code buffer(StatVars).<br />
;If the interrupt code is to large, you may alternatively<br />
;place jp instruction in this code buffer that jumps to your<br />
;interrupt code. Interrupt code should be located in ram. While<br />
;nothing physically prevents use of bank4000 area, it is <br />
;commonly swapped out and so at the very least precautions<br />
;would be required to use that area.<br />
;<br />
ld hl,Interupt_Start<br />
ld de,$8A8A<br />
ld bc,Interupt_End-Interupt_Start<br />
ldir<br />
<br />
;You must designate what hardware will generate an interrupt.<br />
;For safety, acknowledging any waiting requests may<br />
;also be done.<br />
;<br />
ld a,%00001000 ;Acknowledge and disable<br />
out (3),a<br />
ld a,%00001010 ;Set 1st timer active<br />
out (3),a<br />
ld a,%00000110 ;Slowest frequency, ~110hz<br />
out (4),a<br />
<br />
;i is the higher byte of the address that points to the<br />
;vector table. The lower byte, for all practicality,<br />
;should be considered random.<br />
;<br />
ld a,$8B<br />
ld i,a<br />
im 2<br />
ei<br />
ret<br />
<br />
<br />
;This small function simply ends the installed interrupt.<br />
;This should be done prior to exit, or when it is not safe<br />
;to have a custom interrupt running.<br />
;<br />
Kill_ISR:<br />
di<br />
im 1<br />
ret<br />
<br />
<br />
Interupt_Start:<br />
exx<br />
ex af,af'<br />
<br />
;<- Interrupt Code Here<br />
;This code should be small and brief.<br />
;Assuming, that the interrupt is occurring 110 times a second, this <br />
;code would have to execute in (CPU_Speed / Frequency) tstates<br />
;ex: 6000000hz / 110hz = ~54545 tstates<br />
;<br />
;Failure to execute in that time would result in missing an <br />
;interrupt request, in other words you would skip interrupts.<br />
;<br />
;However using less than that amount of time, but near to it<br />
;would result in leaving little time for the main code's execution.<br />
;For example, if the timer generates interrupts every 54545 tstates,<br />
;and your interrupt code executes in 54000 tstates, you would leave<br />
;only 545 tstates for your main programs execution in that time slice.<br />
;The interrupt would take up 99% of the cpu time.<br />
;(This would be a likely issue in gray scale applications.)<br />
;<br />
<br />
ld a,%00001000 ;Acknowledge and disable<br />
out (3),a<br />
ld a,%00001010 ;Set 1st timer active<br />
out (3),a<br />
ld a,%00000110 ;Slowest frequency, ~110hz<br />
out (4),a<br />
ex af,af'<br />
exx<br />
ei<br />
ret<br />
Interupt_End:</nowiki><br />
<br />
<br />
<br />
== Credits and Contributions ==<br />
*'''Michael Vincent''': For documenting [http://www.michaelv.org/programs/calcs/ports/port3.html here] on the interrupt bits.<br />
*'''James Montelongo''': For documenting the interrupt bits.</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=Talk:Z80_Good_Programming_Practices
Talk:Z80 Good Programming Practices
2006-12-28T04:01:34Z
<p>AndyJ: </p>
<hr />
<div>To be honest this article is questionable in its function, as "good practices" is relative per situation. The examples given are bad examples when to do what is suggested. Further there isn't much substance here and it's poorly defined what would belong here. A programming guide would be a better idea than this. --[[User:Jim e|Jim e]] 12:20, 20 September 2006 (PDT)<br />
:Well I agree that the title may be misleading, but I think that for the most part the content would be ok for a sort of "programming tips" section of a larger programming guide. In any case, feel free to add/change as you see fit. --[[User:Dan Englender|Dan Englender]] 12:56, 20 September 2006 (PDT)<br />
::Yeah, some of the stuff (like the section on lookup tables) should say when it's more efficient to use it and when it's not (with only a few options and sequential numbers, dec a / jp z,X / dec a / jp z,Y... would be more efficient), but the idea is good. --[[User:Burntfuse|burntfuse]] 11:30, 24 September 2006 (PDT)<br />
<br />
::I took out the ix think because it was VERY wrong, I don't know why I didn't notice it before. Opcodes were used that didn't exist, the situation for ix usage was poor and less optimized. Now without that there is only the LUT thing, I still think this page is pointless.--[[User:Jim e|Jim e]] 00:29, 27 December 2006 (PST)<br />
:::Anyone want to be in charge of making an AfD system? >_> <_< -[[User:AndyJ|Andy Janata]] 20:01, 27 December 2006 (PST)</div>
AndyJ
https://wikiti.brandonw.net/index.php?title=Talk:83Plus:BCALLs:4F54
Talk:83Plus:BCALLs:4F54
2006-12-24T18:32:57Z
<p>AndyJ: </p>
<hr />
<div>== Why not ROM page 0? ==<br />
<br />
The very first opcodes of this bcall are <tt>or a \ ret z</tt>. Unless my memory fails miserably, this means it won't work on ROM page 0. -[[User:AndyJ|Andy Janata]] 10:32, 24 December 2006 (PST)</div>
AndyJ