<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://wikiti.brandonw.net/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wikiti.brandonw.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sigma</id>
		<title>WikiTI - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wikiti.brandonw.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sigma"/>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Special:Contributions/Sigma"/>
		<updated>2026-04-05T18:58:17Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.23.5</generator>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Programming_under_Unix-like_operating_systems</id>
		<title>Programming under Unix-like operating systems</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Programming_under_Unix-like_operating_systems"/>
				<updated>2007-12-31T22:57:10Z</updated>
		
		<summary type="html">&lt;p&gt;Sigma: /* WLA DX */  ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here are the different tools at your disposal:&lt;br /&gt;
&lt;br /&gt;
= General Overviews =&lt;br /&gt;
&lt;br /&gt;
==Emulators==&lt;br /&gt;
* [http://lpg.ticalc.org/prj_tilem/ TilEm]&lt;br /&gt;
* VirtualTI through wine&lt;br /&gt;
* [[PindurTI]] through Wine&lt;br /&gt;
* [[PindurTI]] in non-interactive mode (with or without [http://kvince83.tengun.net/maxboard/viewtopic.php?t=2466 PTI frontend])&lt;br /&gt;
&lt;br /&gt;
==Syntax highlighting==&lt;br /&gt;
Several editors have native or extensional support for editing Z80 assembly code with syntax highlighting:&lt;br /&gt;
* 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 .&lt;br /&gt;
* SciTE and Emacs both have native modes for assembly code.  For Emacs, one must make sure to turn on Font Lock mode as well.&lt;br /&gt;
* The [http://www.revsoft.org/phpBB2/viewforum.php?f=25 Z80 Assembly IDE] has simple syntax highlighting built-in.&lt;br /&gt;
* Users of Vim and WLA DX can use [http://sigma.unitedti.org/files/misc/z80.vim.bz2 this syntax file].&lt;br /&gt;
&lt;br /&gt;
== Assembling ==&lt;br /&gt;
&lt;br /&gt;
=== SPASM ===&lt;br /&gt;
&lt;br /&gt;
'''Author''': Spencer Putt&lt;br /&gt;
&lt;br /&gt;
'''Home Page''': [http://www.revsoft.org/phpBB2/viewforum.php?f=21 http://www.revsoft.org/phpBB2/viewforum.php?f=21]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 assembler foo.asm foo.bin&lt;br /&gt;
 wabbit foo.bin foo.8xp&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SPASM and Wabbitemu are included in [http://www.ticalc.org/archives/files/fileinfo/390/39009.html Z80 Assembly IDE 1.32] by burntfuse&lt;br /&gt;
&lt;br /&gt;
=== tpasm ===&lt;br /&gt;
&lt;br /&gt;
'''Author''': Todd Squires&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://www.sqrt.com/ http://www.sqrt.com/]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 tpasm foo.asm -o intel foo.hex -l foo.lst&lt;br /&gt;
 objcopy -I ihex foo.hex -O binary foo.bin&lt;br /&gt;
&lt;br /&gt;
=== ASxxxx ===&lt;br /&gt;
&lt;br /&gt;
'''Author''': Alan R. Baldwin&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://shop-pdp.kent.edu/ashtml/asxxxx.htm http://shop-pdp.kent.edu/ashtml/asxxxx.htm]&lt;br /&gt;
&lt;br /&gt;
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.)&lt;br /&gt;
&lt;br /&gt;
To assemble and link a simple program you might do something like&lt;br /&gt;
&lt;br /&gt;
 asz80 -plogff foo.asm&lt;br /&gt;
 aslink -u -b _CODE=0x9D95 -i foo.ihx foo.rel&lt;br /&gt;
 objcopy -I ihex foo.ihx -O binary foo.bin&lt;br /&gt;
&lt;br /&gt;
Note that the syntax is rather different from that of most Z80 assemblers.  The important differences are&lt;br /&gt;
* Immediate values are marked with #.&lt;br /&gt;
* Indexed memory access is written as N(ix) rather than (ix+N).&lt;br /&gt;
* Constants are written differently: 0xAA, 0hAA, or $$AA for hexadecimal; 0o252, 0q252, or $&amp;amp;252 for octal; 0b10101010 or $%10101010 for binary.&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
 ld hl,#str_hello&lt;br /&gt;
 add a,3(ix)&lt;br /&gt;
 xor #0x0f&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== TASM ===&lt;br /&gt;
&lt;br /&gt;
'''Author''': Thomas N. Anderson&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://home.comcast.net/~tasm/ http://home.comcast.net/~tasm/]&lt;br /&gt;
&lt;br /&gt;
TASM is a shareware assembler which also supports a variety of processors.&lt;br /&gt;
&lt;br /&gt;
There are several ways that you can use tasm under Linux:&lt;br /&gt;
* The TASM 3.1 for Linux shareware release is still in the wild.  To use this you will need to enable &amp;quot;a.out&amp;quot; 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].&lt;br /&gt;
* You can use TASM 3.2 for Windows with [http://www.winehq.com Wine].&lt;br /&gt;
* You can pay the $40 and compile it yourself on the platform of your choice.&lt;br /&gt;
&lt;br /&gt;
=== Brass ===&lt;br /&gt;
'''Author''': benryves&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://benryves.com/bin/brass/ http://benryves.com/bin/brass/]&lt;br /&gt;
&lt;br /&gt;
Brass runs under Linux thanks to Mono.&lt;br /&gt;
&lt;br /&gt;
=== Zasm ===&lt;br /&gt;
'''Author''': Steven Deprez&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://lpg.ticalc.org/prj_zasm/index.html http://lpg.ticalc.org/prj_zasm/index.html]&lt;br /&gt;
&lt;br /&gt;
Zasm is an open source assembler that is almost fully compatible with Tasm and ZDS.&lt;br /&gt;
&lt;br /&gt;
=== WLA DX ===&lt;br /&gt;
'''Author''': Ville Helin&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://www.villehelin.com/wla.html http://www.villehelin.com/wla.html]&lt;br /&gt;
&lt;br /&gt;
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.).&lt;br /&gt;
&lt;br /&gt;
WLA DX has had an influence in the development of Brass.&lt;br /&gt;
&lt;br /&gt;
=== Pasmo ===&lt;br /&gt;
'''Author''': Juli&amp;amp;aacute;n Albo&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://www.arrakis.es/~ninsesabe/pasmo/ http://www.arrakis.es/~ninsesabe/pasmo/]&lt;br /&gt;
&lt;br /&gt;
Pasmo is another standalone Z80 cross-assembler with basic macro support, but without the ability to generate&lt;br /&gt;
relocatable object files.  It is licensed under the GNU GPL, and exists as the package &amp;lt;tt&amp;gt;pasmo&amp;lt;/tt&amp;gt; in the Debian pool.&lt;br /&gt;
&lt;br /&gt;
=== z80asm ===&lt;br /&gt;
'''Author''': Bas Wijnen&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://savannah.nongnu.org/projects/z80asm/ http://savannah.nongnu.org/projects/z80asm/]&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;tt&amp;gt;z80asm&amp;lt;/tt&amp;gt; in the Debian pool.&lt;br /&gt;
&lt;br /&gt;
=== GNU as ===&lt;br /&gt;
'''Author''': the GNU binutils team&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://www.gnu.org/software/binutils/ http://www.gnu.org/software/binutils/]&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;tt&amp;gt;--target=z80-unknown-coff&amp;lt;/tt&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
==Sending programs to the calc==&lt;br /&gt;
* [http://www.ticalc.org/archives/files/fileinfo/374/37480.html TiLP-II] (requires [http://www.ticalc.org/archives/files/fileinfo/374/37479.html tilibs])&lt;br /&gt;
* [http://www.ticalc.org/archives/files/fileinfo/75/7588.html titranz] : commandline tool, only works for TI-83/TI-83+&lt;br /&gt;
&lt;br /&gt;
= FreeBSD =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Development&lt;br /&gt;
{| width=&amp;quot;75%&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot;&lt;br /&gt;
|- align=&amp;quot;left&amp;quot;&lt;br /&gt;
!Port !! Current Version !! Location&lt;br /&gt;
|-&lt;br /&gt;
|tpasm || 1.2_1 || devel/tpasm&lt;br /&gt;
|-&lt;br /&gt;
|z80asm || 1.6_1 || devel/z80asm&lt;br /&gt;
|-&lt;br /&gt;
|z80-asm || 0.1_1 || devel/z80-asm&lt;br /&gt;
|-&lt;br /&gt;
|TI-GCC || 0.96.b8 || devel/tigcc&lt;br /&gt;
|-&lt;br /&gt;
|libtifiles2 || 1.0.1 || devel/libtifiles2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Communications&lt;br /&gt;
{| width=&amp;quot;75%&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot;&lt;br /&gt;
|- align=&amp;quot;left&amp;quot;&lt;br /&gt;
!Port !! Current Version !! Location&lt;br /&gt;
|-&lt;br /&gt;
|TiLP-II || 1.01 || comms/tilp2&lt;br /&gt;
|-&lt;br /&gt;
|libticables2 || 1.0.2 || comms/libticables2&lt;br /&gt;
|-&lt;br /&gt;
|libticalcs2 || 1.0.1 || comms/libticalcs2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Converters&lt;br /&gt;
{| width=&amp;quot;75%&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot;&lt;br /&gt;
|- align=&amp;quot;left&amp;quot;&lt;br /&gt;
!Port !! Current Version !! Location&lt;br /&gt;
|-&lt;br /&gt;
|libticonv || 1.0.0 || converters/libticonv&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Emulation&lt;br /&gt;
{| width=&amp;quot;75%&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot;&lt;br /&gt;
|- align=&amp;quot;left&amp;quot;&lt;br /&gt;
!Port !! Current Version !! Location&lt;br /&gt;
|-&lt;br /&gt;
| TIEmu 2 || 2.08 || emulators/tiemu2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Mac OS X =&lt;br /&gt;
(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.)&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
Brass works in Mono. Wabbitspasm compiles and works properly. ZDS works in Darwine.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
= Other Unixes =&lt;br /&gt;
&amp;lt;!--Replace with specific distributions as appropriate --&amp;gt;&lt;br /&gt;
This section is a stub. Please add it it.&lt;/div&gt;</summary>
		<author><name>Sigma</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Programming_under_Unix-like_operating_systems</id>
		<title>Programming under Unix-like operating systems</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Programming_under_Unix-like_operating_systems"/>
				<updated>2007-12-31T22:55:03Z</updated>
		
		<summary type="html">&lt;p&gt;Sigma: /* WLA DX */  It's been resurrected.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here are the different tools at your disposal:&lt;br /&gt;
&lt;br /&gt;
= General Overviews =&lt;br /&gt;
&lt;br /&gt;
==Emulators==&lt;br /&gt;
* [http://lpg.ticalc.org/prj_tilem/ TilEm]&lt;br /&gt;
* VirtualTI through wine&lt;br /&gt;
* [[PindurTI]] through Wine&lt;br /&gt;
* [[PindurTI]] in non-interactive mode (with or without [http://kvince83.tengun.net/maxboard/viewtopic.php?t=2466 PTI frontend])&lt;br /&gt;
&lt;br /&gt;
==Syntax highlighting==&lt;br /&gt;
Several editors have native or extensional support for editing Z80 assembly code with syntax highlighting:&lt;br /&gt;
* 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 .&lt;br /&gt;
* SciTE and Emacs both have native modes for assembly code.  For Emacs, one must make sure to turn on Font Lock mode as well.&lt;br /&gt;
* The [http://www.revsoft.org/phpBB2/viewforum.php?f=25 Z80 Assembly IDE] has simple syntax highlighting built-in.&lt;br /&gt;
* Users of Vim and WLA DX can use [http://sigma.unitedti.org/files/misc/z80.vim.bz2 this syntax file].&lt;br /&gt;
&lt;br /&gt;
== Assembling ==&lt;br /&gt;
&lt;br /&gt;
=== SPASM ===&lt;br /&gt;
&lt;br /&gt;
'''Author''': Spencer Putt&lt;br /&gt;
&lt;br /&gt;
'''Home Page''': [http://www.revsoft.org/phpBB2/viewforum.php?f=21 http://www.revsoft.org/phpBB2/viewforum.php?f=21]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 assembler foo.asm foo.bin&lt;br /&gt;
 wabbit foo.bin foo.8xp&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SPASM and Wabbitemu are included in [http://www.ticalc.org/archives/files/fileinfo/390/39009.html Z80 Assembly IDE 1.32] by burntfuse&lt;br /&gt;
&lt;br /&gt;
=== tpasm ===&lt;br /&gt;
&lt;br /&gt;
'''Author''': Todd Squires&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://www.sqrt.com/ http://www.sqrt.com/]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 tpasm foo.asm -o intel foo.hex -l foo.lst&lt;br /&gt;
 objcopy -I ihex foo.hex -O binary foo.bin&lt;br /&gt;
&lt;br /&gt;
=== ASxxxx ===&lt;br /&gt;
&lt;br /&gt;
'''Author''': Alan R. Baldwin&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://shop-pdp.kent.edu/ashtml/asxxxx.htm http://shop-pdp.kent.edu/ashtml/asxxxx.htm]&lt;br /&gt;
&lt;br /&gt;
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.)&lt;br /&gt;
&lt;br /&gt;
To assemble and link a simple program you might do something like&lt;br /&gt;
&lt;br /&gt;
 asz80 -plogff foo.asm&lt;br /&gt;
 aslink -u -b _CODE=0x9D95 -i foo.ihx foo.rel&lt;br /&gt;
 objcopy -I ihex foo.ihx -O binary foo.bin&lt;br /&gt;
&lt;br /&gt;
Note that the syntax is rather different from that of most Z80 assemblers.  The important differences are&lt;br /&gt;
* Immediate values are marked with #.&lt;br /&gt;
* Indexed memory access is written as N(ix) rather than (ix+N).&lt;br /&gt;
* Constants are written differently: 0xAA, 0hAA, or $$AA for hexadecimal; 0o252, 0q252, or $&amp;amp;252 for octal; 0b10101010 or $%10101010 for binary.&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
 ld hl,#str_hello&lt;br /&gt;
 add a,3(ix)&lt;br /&gt;
 xor #0x0f&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== TASM ===&lt;br /&gt;
&lt;br /&gt;
'''Author''': Thomas N. Anderson&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://home.comcast.net/~tasm/ http://home.comcast.net/~tasm/]&lt;br /&gt;
&lt;br /&gt;
TASM is a shareware assembler which also supports a variety of processors.&lt;br /&gt;
&lt;br /&gt;
There are several ways that you can use tasm under Linux:&lt;br /&gt;
* The TASM 3.1 for Linux shareware release is still in the wild.  To use this you will need to enable &amp;quot;a.out&amp;quot; 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].&lt;br /&gt;
* You can use TASM 3.2 for Windows with [http://www.winehq.com Wine].&lt;br /&gt;
* You can pay the $40 and compile it yourself on the platform of your choice.&lt;br /&gt;
&lt;br /&gt;
=== Brass ===&lt;br /&gt;
'''Author''': benryves&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://benryves.com/bin/brass/ http://benryves.com/bin/brass/]&lt;br /&gt;
&lt;br /&gt;
Brass runs under Linux thanks to Mono.&lt;br /&gt;
&lt;br /&gt;
=== Zasm ===&lt;br /&gt;
'''Author''': Steven Deprez&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://lpg.ticalc.org/prj_zasm/index.html http://lpg.ticalc.org/prj_zasm/index.html]&lt;br /&gt;
&lt;br /&gt;
Zasm is an open source assembler that is almost fully compatible with Tasm and ZDS.&lt;br /&gt;
&lt;br /&gt;
=== WLA DX ===&lt;br /&gt;
'''Author''': Ville Helin&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://www.villehelin.com/wla.html]&lt;br /&gt;
&lt;br /&gt;
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.).&lt;br /&gt;
&lt;br /&gt;
WLA DX has had an influence in the development of Brass.&lt;br /&gt;
&lt;br /&gt;
=== Pasmo ===&lt;br /&gt;
'''Author''': Juli&amp;amp;aacute;n Albo&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://www.arrakis.es/~ninsesabe/pasmo/ http://www.arrakis.es/~ninsesabe/pasmo/]&lt;br /&gt;
&lt;br /&gt;
Pasmo is another standalone Z80 cross-assembler with basic macro support, but without the ability to generate&lt;br /&gt;
relocatable object files.  It is licensed under the GNU GPL, and exists as the package &amp;lt;tt&amp;gt;pasmo&amp;lt;/tt&amp;gt; in the Debian pool.&lt;br /&gt;
&lt;br /&gt;
=== z80asm ===&lt;br /&gt;
'''Author''': Bas Wijnen&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://savannah.nongnu.org/projects/z80asm/ http://savannah.nongnu.org/projects/z80asm/]&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;tt&amp;gt;z80asm&amp;lt;/tt&amp;gt; in the Debian pool.&lt;br /&gt;
&lt;br /&gt;
=== GNU as ===&lt;br /&gt;
'''Author''': the GNU binutils team&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://www.gnu.org/software/binutils/ http://www.gnu.org/software/binutils/]&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;tt&amp;gt;--target=z80-unknown-coff&amp;lt;/tt&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
==Sending programs to the calc==&lt;br /&gt;
* [http://www.ticalc.org/archives/files/fileinfo/374/37480.html TiLP-II] (requires [http://www.ticalc.org/archives/files/fileinfo/374/37479.html tilibs])&lt;br /&gt;
* [http://www.ticalc.org/archives/files/fileinfo/75/7588.html titranz] : commandline tool, only works for TI-83/TI-83+&lt;br /&gt;
&lt;br /&gt;
= FreeBSD =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Development&lt;br /&gt;
{| width=&amp;quot;75%&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot;&lt;br /&gt;
|- align=&amp;quot;left&amp;quot;&lt;br /&gt;
!Port !! Current Version !! Location&lt;br /&gt;
|-&lt;br /&gt;
|tpasm || 1.2_1 || devel/tpasm&lt;br /&gt;
|-&lt;br /&gt;
|z80asm || 1.6_1 || devel/z80asm&lt;br /&gt;
|-&lt;br /&gt;
|z80-asm || 0.1_1 || devel/z80-asm&lt;br /&gt;
|-&lt;br /&gt;
|TI-GCC || 0.96.b8 || devel/tigcc&lt;br /&gt;
|-&lt;br /&gt;
|libtifiles2 || 1.0.1 || devel/libtifiles2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Communications&lt;br /&gt;
{| width=&amp;quot;75%&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot;&lt;br /&gt;
|- align=&amp;quot;left&amp;quot;&lt;br /&gt;
!Port !! Current Version !! Location&lt;br /&gt;
|-&lt;br /&gt;
|TiLP-II || 1.01 || comms/tilp2&lt;br /&gt;
|-&lt;br /&gt;
|libticables2 || 1.0.2 || comms/libticables2&lt;br /&gt;
|-&lt;br /&gt;
|libticalcs2 || 1.0.1 || comms/libticalcs2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Converters&lt;br /&gt;
{| width=&amp;quot;75%&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot;&lt;br /&gt;
|- align=&amp;quot;left&amp;quot;&lt;br /&gt;
!Port !! Current Version !! Location&lt;br /&gt;
|-&lt;br /&gt;
|libticonv || 1.0.0 || converters/libticonv&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Emulation&lt;br /&gt;
{| width=&amp;quot;75%&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot;&lt;br /&gt;
|- align=&amp;quot;left&amp;quot;&lt;br /&gt;
!Port !! Current Version !! Location&lt;br /&gt;
|-&lt;br /&gt;
| TIEmu 2 || 2.08 || emulators/tiemu2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Mac OS X =&lt;br /&gt;
(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.)&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
Brass works in Mono. Wabbitspasm compiles and works properly. ZDS works in Darwine.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
= Other Unixes =&lt;br /&gt;
&amp;lt;!--Replace with specific distributions as appropriate --&amp;gt;&lt;br /&gt;
This section is a stub. Please add it it.&lt;/div&gt;</summary>
		<author><name>Sigma</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Programming_under_Unix-like_operating_systems</id>
		<title>Programming under Unix-like operating systems</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Programming_under_Unix-like_operating_systems"/>
				<updated>2007-12-31T22:50:08Z</updated>
		
		<summary type="html">&lt;p&gt;Sigma: /* FreeBSD */  Add z80asm&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here are the different tools at your disposal:&lt;br /&gt;
&lt;br /&gt;
= General Overviews =&lt;br /&gt;
&lt;br /&gt;
==Emulators==&lt;br /&gt;
* [http://lpg.ticalc.org/prj_tilem/ TilEm]&lt;br /&gt;
* VirtualTI through wine&lt;br /&gt;
* [[PindurTI]] through Wine&lt;br /&gt;
* [[PindurTI]] in non-interactive mode (with or without [http://kvince83.tengun.net/maxboard/viewtopic.php?t=2466 PTI frontend])&lt;br /&gt;
&lt;br /&gt;
==Syntax highlighting==&lt;br /&gt;
Several editors have native or extensional support for editing Z80 assembly code with syntax highlighting:&lt;br /&gt;
* 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 .&lt;br /&gt;
* SciTE and Emacs both have native modes for assembly code.  For Emacs, one must make sure to turn on Font Lock mode as well.&lt;br /&gt;
* The [http://www.revsoft.org/phpBB2/viewforum.php?f=25 Z80 Assembly IDE] has simple syntax highlighting built-in.&lt;br /&gt;
* Users of Vim and WLA DX can use [http://sigma.unitedti.org/files/misc/z80.vim.bz2 this syntax file].&lt;br /&gt;
&lt;br /&gt;
== Assembling ==&lt;br /&gt;
&lt;br /&gt;
=== SPASM ===&lt;br /&gt;
&lt;br /&gt;
'''Author''': Spencer Putt&lt;br /&gt;
&lt;br /&gt;
'''Home Page''': [http://www.revsoft.org/phpBB2/viewforum.php?f=21 http://www.revsoft.org/phpBB2/viewforum.php?f=21]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 assembler foo.asm foo.bin&lt;br /&gt;
 wabbit foo.bin foo.8xp&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SPASM and Wabbitemu are included in [http://www.ticalc.org/archives/files/fileinfo/390/39009.html Z80 Assembly IDE 1.32] by burntfuse&lt;br /&gt;
&lt;br /&gt;
=== tpasm ===&lt;br /&gt;
&lt;br /&gt;
'''Author''': Todd Squires&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://www.sqrt.com/ http://www.sqrt.com/]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 tpasm foo.asm -o intel foo.hex -l foo.lst&lt;br /&gt;
 objcopy -I ihex foo.hex -O binary foo.bin&lt;br /&gt;
&lt;br /&gt;
=== ASxxxx ===&lt;br /&gt;
&lt;br /&gt;
'''Author''': Alan R. Baldwin&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://shop-pdp.kent.edu/ashtml/asxxxx.htm http://shop-pdp.kent.edu/ashtml/asxxxx.htm]&lt;br /&gt;
&lt;br /&gt;
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.)&lt;br /&gt;
&lt;br /&gt;
To assemble and link a simple program you might do something like&lt;br /&gt;
&lt;br /&gt;
 asz80 -plogff foo.asm&lt;br /&gt;
 aslink -u -b _CODE=0x9D95 -i foo.ihx foo.rel&lt;br /&gt;
 objcopy -I ihex foo.ihx -O binary foo.bin&lt;br /&gt;
&lt;br /&gt;
Note that the syntax is rather different from that of most Z80 assemblers.  The important differences are&lt;br /&gt;
* Immediate values are marked with #.&lt;br /&gt;
* Indexed memory access is written as N(ix) rather than (ix+N).&lt;br /&gt;
* Constants are written differently: 0xAA, 0hAA, or $$AA for hexadecimal; 0o252, 0q252, or $&amp;amp;252 for octal; 0b10101010 or $%10101010 for binary.&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
 ld hl,#str_hello&lt;br /&gt;
 add a,3(ix)&lt;br /&gt;
 xor #0x0f&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== TASM ===&lt;br /&gt;
&lt;br /&gt;
'''Author''': Thomas N. Anderson&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://home.comcast.net/~tasm/ http://home.comcast.net/~tasm/]&lt;br /&gt;
&lt;br /&gt;
TASM is a shareware assembler which also supports a variety of processors.&lt;br /&gt;
&lt;br /&gt;
There are several ways that you can use tasm under Linux:&lt;br /&gt;
* The TASM 3.1 for Linux shareware release is still in the wild.  To use this you will need to enable &amp;quot;a.out&amp;quot; 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].&lt;br /&gt;
* You can use TASM 3.2 for Windows with [http://www.winehq.com Wine].&lt;br /&gt;
* You can pay the $40 and compile it yourself on the platform of your choice.&lt;br /&gt;
&lt;br /&gt;
=== Brass ===&lt;br /&gt;
'''Author''': benryves&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://benryves.com/bin/brass/ http://benryves.com/bin/brass/]&lt;br /&gt;
&lt;br /&gt;
Brass runs under Linux thanks to Mono.&lt;br /&gt;
&lt;br /&gt;
=== Zasm ===&lt;br /&gt;
'''Author''': Steven Deprez&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://lpg.ticalc.org/prj_zasm/index.html http://lpg.ticalc.org/prj_zasm/index.html]&lt;br /&gt;
&lt;br /&gt;
Zasm is an open source assembler that is almost fully compatible with Tasm and ZDS.&lt;br /&gt;
&lt;br /&gt;
=== WLA DX ===&lt;br /&gt;
'''Author''': Ville Helin&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://users.tkk.fi/~vhelin/wla.html http://users.tkk.fi/~vhelin/wla.html]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
WLA DX has had an influence in the development of Brass.&lt;br /&gt;
&lt;br /&gt;
=== Pasmo ===&lt;br /&gt;
'''Author''': Juli&amp;amp;aacute;n Albo&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://www.arrakis.es/~ninsesabe/pasmo/ http://www.arrakis.es/~ninsesabe/pasmo/]&lt;br /&gt;
&lt;br /&gt;
Pasmo is another standalone Z80 cross-assembler with basic macro support, but without the ability to generate&lt;br /&gt;
relocatable object files.  It is licensed under the GNU GPL, and exists as the package &amp;lt;tt&amp;gt;pasmo&amp;lt;/tt&amp;gt; in the Debian pool.&lt;br /&gt;
&lt;br /&gt;
=== z80asm ===&lt;br /&gt;
'''Author''': Bas Wijnen&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://savannah.nongnu.org/projects/z80asm/ http://savannah.nongnu.org/projects/z80asm/]&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;tt&amp;gt;z80asm&amp;lt;/tt&amp;gt; in the Debian pool.&lt;br /&gt;
&lt;br /&gt;
=== GNU as ===&lt;br /&gt;
'''Author''': the GNU binutils team&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://www.gnu.org/software/binutils/ http://www.gnu.org/software/binutils/]&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;tt&amp;gt;--target=z80-unknown-coff&amp;lt;/tt&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
==Sending programs to the calc==&lt;br /&gt;
* [http://www.ticalc.org/archives/files/fileinfo/374/37480.html TiLP-II] (requires [http://www.ticalc.org/archives/files/fileinfo/374/37479.html tilibs])&lt;br /&gt;
* [http://www.ticalc.org/archives/files/fileinfo/75/7588.html titranz] : commandline tool, only works for TI-83/TI-83+&lt;br /&gt;
&lt;br /&gt;
= FreeBSD =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Development&lt;br /&gt;
{| width=&amp;quot;75%&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot;&lt;br /&gt;
|- align=&amp;quot;left&amp;quot;&lt;br /&gt;
!Port !! Current Version !! Location&lt;br /&gt;
|-&lt;br /&gt;
|tpasm || 1.2_1 || devel/tpasm&lt;br /&gt;
|-&lt;br /&gt;
|z80asm || 1.6_1 || devel/z80asm&lt;br /&gt;
|-&lt;br /&gt;
|z80-asm || 0.1_1 || devel/z80-asm&lt;br /&gt;
|-&lt;br /&gt;
|TI-GCC || 0.96.b8 || devel/tigcc&lt;br /&gt;
|-&lt;br /&gt;
|libtifiles2 || 1.0.1 || devel/libtifiles2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Communications&lt;br /&gt;
{| width=&amp;quot;75%&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot;&lt;br /&gt;
|- align=&amp;quot;left&amp;quot;&lt;br /&gt;
!Port !! Current Version !! Location&lt;br /&gt;
|-&lt;br /&gt;
|TiLP-II || 1.01 || comms/tilp2&lt;br /&gt;
|-&lt;br /&gt;
|libticables2 || 1.0.2 || comms/libticables2&lt;br /&gt;
|-&lt;br /&gt;
|libticalcs2 || 1.0.1 || comms/libticalcs2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Converters&lt;br /&gt;
{| width=&amp;quot;75%&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot;&lt;br /&gt;
|- align=&amp;quot;left&amp;quot;&lt;br /&gt;
!Port !! Current Version !! Location&lt;br /&gt;
|-&lt;br /&gt;
|libticonv || 1.0.0 || converters/libticonv&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Emulation&lt;br /&gt;
{| width=&amp;quot;75%&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot;&lt;br /&gt;
|- align=&amp;quot;left&amp;quot;&lt;br /&gt;
!Port !! Current Version !! Location&lt;br /&gt;
|-&lt;br /&gt;
| TIEmu 2 || 2.08 || emulators/tiemu2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Mac OS X =&lt;br /&gt;
(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.)&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
Brass works in Mono. Wabbitspasm compiles and works properly. ZDS works in Darwine.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
= Other Unixes =&lt;br /&gt;
&amp;lt;!--Replace with specific distributions as appropriate --&amp;gt;&lt;br /&gt;
This section is a stub. Please add it it.&lt;/div&gt;</summary>
		<author><name>Sigma</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Programming_under_Unix-like_operating_systems</id>
		<title>Programming under Unix-like operating systems</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Programming_under_Unix-like_operating_systems"/>
				<updated>2006-08-06T10:10:39Z</updated>
		
		<summary type="html">&lt;p&gt;Sigma: Other Unixes placeholder&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here are the different tools at your disposal:&lt;br /&gt;
&lt;br /&gt;
= General Overviews =&lt;br /&gt;
&lt;br /&gt;
==Emulators==&lt;br /&gt;
* TilEm [http://lpg.ticalc.org/prj_tilem/]&lt;br /&gt;
* VTI (with Wine)&lt;br /&gt;
&lt;br /&gt;
==Syntax highlighting==&lt;br /&gt;
Several editors have native or extensional support for editing Z80 assembly code with syntax highlighting:&lt;br /&gt;
* Kwrite and Kate can be made to syntax-highlight Z80 assembly with [http://guillaume.h.ifrance.com/ti83/z80assembler.xml the appropriate definition file].  The file can be placed in /usr/share/apps/katepart/syntax to install it.&lt;br /&gt;
* SciTE and Emacs both have native modes for assembly code.  For Emacs, one must make sure to turn on Font Lock mode as well.&lt;br /&gt;
* The [http://www.revsoft.org/phpBB2/viewforum.php?f=25 Z80 Assembly IDE] has simple syntax highlighting built-in.&lt;br /&gt;
* Users of Vim and WLA DX can use [http://sigma.unitedti.org/files/misc/z80.vim.bz2 this syntax file].&lt;br /&gt;
&lt;br /&gt;
== Assembling ==&lt;br /&gt;
&lt;br /&gt;
=== SPASM ===&lt;br /&gt;
&lt;br /&gt;
'''Author''': Spencer Putt&lt;br /&gt;
&lt;br /&gt;
'''Home Page''': [http://www.revsoft.org/phpBB2/viewforum.php?f=21 http://www.revsoft.org/phpBB2/viewforum.php?f=21]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 assembler foo.asm foo.bin&lt;br /&gt;
 wabbit foo.bin foo.8xp&lt;br /&gt;
&lt;br /&gt;
=== tpasm ===&lt;br /&gt;
&lt;br /&gt;
'''Author''': Todd Squires&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://www.sqrt.com/ http://www.sqrt.com/]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 tpasm foo.asm -o intel foo.hex -l foo.lst&lt;br /&gt;
 objcopy -I ihex foo.hex -O binary foo.bin&lt;br /&gt;
&lt;br /&gt;
=== ASxxxx ===&lt;br /&gt;
&lt;br /&gt;
'''Author''': Alan R. Baldwin&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://shop-pdp.kent.edu/ashtml/asxxxx.htm http://shop-pdp.kent.edu/ashtml/asxxxx.htm]&lt;br /&gt;
&lt;br /&gt;
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.)&lt;br /&gt;
&lt;br /&gt;
To assemble and link a simple program you might do something like&lt;br /&gt;
&lt;br /&gt;
 asz80 -plogff foo.asm&lt;br /&gt;
 aslink -u -b _CODE=0x9D95 -i foo.ihx foo.rel&lt;br /&gt;
 objcopy -I ihex foo.ihx -O binary foo.bin&lt;br /&gt;
&lt;br /&gt;
Note that the syntax is rather different from that of most Z80 assemblers.  The important differences are&lt;br /&gt;
* Immediate values are marked with #.&lt;br /&gt;
* Indexed memory access is written as N(ix) rather than (ix+N).&lt;br /&gt;
* Constants are written differently: 0xAA, 0hAA, or $$AA for hexadecimal; 0o252, 0q252, or $&amp;amp;252 for octal; 0b10101010 or $%10101010 for binary.&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
 ld hl,#str_hello&lt;br /&gt;
 add a,3(ix)&lt;br /&gt;
 xor #0x0f&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== TASM ===&lt;br /&gt;
&lt;br /&gt;
'''Author''': Thomas N. Anderson&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://home.comcast.net/~tasm/ http://home.comcast.net/~tasm/]&lt;br /&gt;
&lt;br /&gt;
TASM is a shareware assembler which also supports a variety of processors.&lt;br /&gt;
&lt;br /&gt;
There are several ways that you can use tasm under Linux:&lt;br /&gt;
* The TASM 3.1 for Linux shareware release is still in the wild.  To use this you will need to enable &amp;quot;a.out&amp;quot; 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].&lt;br /&gt;
* You can use TASM 3.2 for Windows with [http://www.winehq.com Wine].&lt;br /&gt;
* You can pay the $40 and compile it yourself on the platform of your choice.&lt;br /&gt;
&lt;br /&gt;
=== Brass ===&lt;br /&gt;
'''Author''': benryves&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://benryves.com/bin/brass/ http://benryves.com/bin/brass/]&lt;br /&gt;
&lt;br /&gt;
Brass runs under Linux thanks to Mono.&lt;br /&gt;
&lt;br /&gt;
=== WLA DX ===&lt;br /&gt;
'''Author''': Ville Helin&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://users.tkk.fi/~vhelin/wla.html http://users.tkk.fi/~vhelin/wla.html]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
WLA DX has had an influence in the development of Brass.&lt;br /&gt;
&lt;br /&gt;
=== Pasmo ===&lt;br /&gt;
'''Author''': Juli&amp;amp;aacute;n Albo&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://www.arrakis.es/~ninsesabe/pasmo/ http://www.arrakis.es/~ninsesabe/pasmo/]&lt;br /&gt;
&lt;br /&gt;
Pasmo is another standalone Z80 cross-assembler with basic macro support, but without the ability to generate&lt;br /&gt;
relocatable object files.  It is licensed under the GNU GPL, and exists as the package &amp;lt;tt&amp;gt;pasmo&amp;lt;/tt&amp;gt; in the Debian pool.&lt;br /&gt;
&lt;br /&gt;
=== z80asm ===&lt;br /&gt;
'''Author''': Bas Wijnen&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://savannah.nongnu.org/projects/z80asm/ http://savannah.nongnu.org/projects/z80asm/]&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;tt&amp;gt;z80asm&amp;lt;/tt&amp;gt; in the Debian pool.&lt;br /&gt;
&lt;br /&gt;
=== GNU as ===&lt;br /&gt;
'''Author''': the GNU binutils team&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://www.gnu.org/software/binutils/ http://www.gnu.org/software/binutils/]&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;tt&amp;gt;--target=z80-unknown-coff&amp;lt;/tt&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
==Sending programs to the calc==&lt;br /&gt;
* TILP&lt;br /&gt;
* titranz : commandline tool, only works for TI-83/TI-83+&lt;br /&gt;
&lt;br /&gt;
= FreeBSD =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Development&lt;br /&gt;
{| width=&amp;quot;75%&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot;&lt;br /&gt;
|- align=&amp;quot;left&amp;quot;&lt;br /&gt;
!Port !! Current Version !! Location&lt;br /&gt;
|-&lt;br /&gt;
|tpasm || 1.2_1 || /devel/tpasm&lt;br /&gt;
|-&lt;br /&gt;
|z80asm || 0.1_1 || /devel/z80-asm&lt;br /&gt;
|-&lt;br /&gt;
|TI-GCC || 0.96.b6_1 || /devel/tigcc&lt;br /&gt;
|-&lt;br /&gt;
|libticalcs || 4.5.9_1 || /devel/libticalcs&lt;br /&gt;
|-&lt;br /&gt;
|libtifiles || 0.6.5_1 || /devel/libtifiles&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Communications&lt;br /&gt;
{| width=&amp;quot;75%&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot;&lt;br /&gt;
|- align=&amp;quot;left&amp;quot;&lt;br /&gt;
!Port !! Current Version !! Location&lt;br /&gt;
|-&lt;br /&gt;
|TiLP || 6.79_1 || /comms/tilp&lt;br /&gt;
|-&lt;br /&gt;
|libticables || 3.9.7_1 || /comms/libticables&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Emulation&lt;br /&gt;
{| width=&amp;quot;75%&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot;&lt;br /&gt;
|- align=&amp;quot;left&amp;quot;&lt;br /&gt;
!Port !! Current Version !! Location&lt;br /&gt;
|-&lt;br /&gt;
| TIEmu 2 || 2.04 || /emulators/tiemu2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Other Unixes =&lt;br /&gt;
&amp;lt;!--Replace with specific distributions as appropriate --&amp;gt;&lt;br /&gt;
{{Sectstub}}&lt;/div&gt;</summary>
		<author><name>Sigma</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Programming_under_Linux</id>
		<title>Programming under Linux</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Programming_under_Linux"/>
				<updated>2006-08-06T10:02:20Z</updated>
		
		<summary type="html">&lt;p&gt;Sigma: Programming under Linux moved to Programming under Unix-like operating systems: No longer just about Linux&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[Programming under Unix-like operating systems]]&lt;/div&gt;</summary>
		<author><name>Sigma</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Programming_under_Unix-like_operating_systems</id>
		<title>Programming under Unix-like operating systems</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Programming_under_Unix-like_operating_systems"/>
				<updated>2006-08-06T10:02:16Z</updated>
		
		<summary type="html">&lt;p&gt;Sigma: Programming under Linux moved to Programming under Unix-like operating systems&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here are the different tools at your disposal:&lt;br /&gt;
&lt;br /&gt;
= General Overviews =&lt;br /&gt;
&lt;br /&gt;
==Emulators==&lt;br /&gt;
* TilEm [http://lpg.ticalc.org/prj_tilem/]&lt;br /&gt;
* VTI (with Wine)&lt;br /&gt;
&lt;br /&gt;
==Syntax highlighting==&lt;br /&gt;
Several editors have native or extensional support for editing Z80 assembly code with syntax highlighting:&lt;br /&gt;
* Kwrite and Kate can be made to syntax-highlight Z80 assembly with [http://guillaume.h.ifrance.com/ti83/z80assembler.xml the appropriate definition file].  The file can be placed in /usr/share/apps/katepart/syntax to install it.&lt;br /&gt;
* SciTE and Emacs both have native modes for assembly code.  For Emacs, one must make sure to turn on Font Lock mode as well.&lt;br /&gt;
* The [http://www.revsoft.org/phpBB2/viewforum.php?f=25 Z80 Assembly IDE] has simple syntax highlighting built-in.&lt;br /&gt;
* Users of Vim and WLA DX can use [http://sigma.unitedti.org/files/misc/z80.vim.bz2 this syntax file].&lt;br /&gt;
&lt;br /&gt;
== Assembling ==&lt;br /&gt;
&lt;br /&gt;
=== SPASM ===&lt;br /&gt;
&lt;br /&gt;
'''Author''': Spencer Putt&lt;br /&gt;
&lt;br /&gt;
'''Home Page''': [http://www.revsoft.org/phpBB2/viewforum.php?f=21 http://www.revsoft.org/phpBB2/viewforum.php?f=21]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 assembler foo.asm foo.bin&lt;br /&gt;
 wabbit foo.bin foo.8xp&lt;br /&gt;
&lt;br /&gt;
=== tpasm ===&lt;br /&gt;
&lt;br /&gt;
'''Author''': Todd Squires&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://www.sqrt.com/ http://www.sqrt.com/]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 tpasm foo.asm -o intel foo.hex -l foo.lst&lt;br /&gt;
 objcopy -I ihex foo.hex -O binary foo.bin&lt;br /&gt;
&lt;br /&gt;
=== ASxxxx ===&lt;br /&gt;
&lt;br /&gt;
'''Author''': Alan R. Baldwin&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://shop-pdp.kent.edu/ashtml/asxxxx.htm http://shop-pdp.kent.edu/ashtml/asxxxx.htm]&lt;br /&gt;
&lt;br /&gt;
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.)&lt;br /&gt;
&lt;br /&gt;
To assemble and link a simple program you might do something like&lt;br /&gt;
&lt;br /&gt;
 asz80 -plogff foo.asm&lt;br /&gt;
 aslink -u -b _CODE=0x9D95 -i foo.ihx foo.rel&lt;br /&gt;
 objcopy -I ihex foo.ihx -O binary foo.bin&lt;br /&gt;
&lt;br /&gt;
Note that the syntax is rather different from that of most Z80 assemblers.  The important differences are&lt;br /&gt;
* Immediate values are marked with #.&lt;br /&gt;
* Indexed memory access is written as N(ix) rather than (ix+N).&lt;br /&gt;
* Constants are written differently: 0xAA, 0hAA, or $$AA for hexadecimal; 0o252, 0q252, or $&amp;amp;252 for octal; 0b10101010 or $%10101010 for binary.&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
 ld hl,#str_hello&lt;br /&gt;
 add a,3(ix)&lt;br /&gt;
 xor #0x0f&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== TASM ===&lt;br /&gt;
&lt;br /&gt;
'''Author''': Thomas N. Anderson&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://home.comcast.net/~tasm/ http://home.comcast.net/~tasm/]&lt;br /&gt;
&lt;br /&gt;
TASM is a shareware assembler which also supports a variety of processors.&lt;br /&gt;
&lt;br /&gt;
There are several ways that you can use tasm under Linux:&lt;br /&gt;
* The TASM 3.1 for Linux shareware release is still in the wild.  To use this you will need to enable &amp;quot;a.out&amp;quot; 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].&lt;br /&gt;
* You can use TASM 3.2 for Windows with [http://www.winehq.com Wine].&lt;br /&gt;
* You can pay the $40 and compile it yourself on the platform of your choice.&lt;br /&gt;
&lt;br /&gt;
=== Brass ===&lt;br /&gt;
'''Author''': benryves&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://benryves.com/bin/brass/ http://benryves.com/bin/brass/]&lt;br /&gt;
&lt;br /&gt;
Brass runs under Linux thanks to Mono.&lt;br /&gt;
&lt;br /&gt;
=== WLA DX ===&lt;br /&gt;
'''Author''': Ville Helin&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://users.tkk.fi/~vhelin/wla.html http://users.tkk.fi/~vhelin/wla.html]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
WLA DX has had an influence in the development of Brass.&lt;br /&gt;
&lt;br /&gt;
=== Pasmo ===&lt;br /&gt;
'''Author''': Juli&amp;amp;aacute;n Albo&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://www.arrakis.es/~ninsesabe/pasmo/ http://www.arrakis.es/~ninsesabe/pasmo/]&lt;br /&gt;
&lt;br /&gt;
Pasmo is another standalone Z80 cross-assembler with basic macro support, but without the ability to generate&lt;br /&gt;
relocatable object files.  It is licensed under the GNU GPL, and exists as the package &amp;lt;tt&amp;gt;pasmo&amp;lt;/tt&amp;gt; in the Debian pool.&lt;br /&gt;
&lt;br /&gt;
=== z80asm ===&lt;br /&gt;
'''Author''': Bas Wijnen&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://savannah.nongnu.org/projects/z80asm/ http://savannah.nongnu.org/projects/z80asm/]&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;tt&amp;gt;z80asm&amp;lt;/tt&amp;gt; in the Debian pool.&lt;br /&gt;
&lt;br /&gt;
=== GNU as ===&lt;br /&gt;
'''Author''': the GNU binutils team&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://www.gnu.org/software/binutils/ http://www.gnu.org/software/binutils/]&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;tt&amp;gt;--target=z80-unknown-coff&amp;lt;/tt&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
==Sending programs to the calc==&lt;br /&gt;
* TILP&lt;br /&gt;
* titranz : commandline tool, only works for TI-83/TI-83+&lt;br /&gt;
&lt;br /&gt;
= FreeBSD =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Development&lt;br /&gt;
{| width=&amp;quot;75%&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot;&lt;br /&gt;
|- align=&amp;quot;left&amp;quot;&lt;br /&gt;
!Port !! Current Version !! Location&lt;br /&gt;
|-&lt;br /&gt;
|tpasm || 1.2_1 || /devel/tpasm&lt;br /&gt;
|-&lt;br /&gt;
|z80asm || 0.1_1 || /devel/z80-asm&lt;br /&gt;
|-&lt;br /&gt;
|TI-GCC || 0.96.b6_1 || /devel/tigcc&lt;br /&gt;
|-&lt;br /&gt;
|libticalcs || 4.5.9_1 || /devel/libticalcs&lt;br /&gt;
|-&lt;br /&gt;
|libtifiles || 0.6.5_1 || /devel/libtifiles&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Communications&lt;br /&gt;
{| width=&amp;quot;75%&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot;&lt;br /&gt;
|- align=&amp;quot;left&amp;quot;&lt;br /&gt;
!Port !! Current Version !! Location&lt;br /&gt;
|-&lt;br /&gt;
|TiLP || 6.79_1 || /comms/tilp&lt;br /&gt;
|-&lt;br /&gt;
|libticables || 3.9.7_1 || /comms/libticables&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Emulation&lt;br /&gt;
{| width=&amp;quot;75%&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot;&lt;br /&gt;
|- align=&amp;quot;left&amp;quot;&lt;br /&gt;
!Port !! Current Version !! Location&lt;br /&gt;
|-&lt;br /&gt;
| TIEmu 2 || 2.04 || /emulators/tiemu2&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sigma</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Programming_under_Unix-like_operating_systems</id>
		<title>Programming under Unix-like operating systems</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Programming_under_Unix-like_operating_systems"/>
				<updated>2006-08-06T09:59:33Z</updated>
		
		<summary type="html">&lt;p&gt;Sigma: FreeBSD&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here are the different tools at your disposal:&lt;br /&gt;
&lt;br /&gt;
= General Overviews =&lt;br /&gt;
&lt;br /&gt;
==Emulators==&lt;br /&gt;
* TilEm [http://lpg.ticalc.org/prj_tilem/]&lt;br /&gt;
* VTI (with Wine)&lt;br /&gt;
&lt;br /&gt;
==Syntax highlighting==&lt;br /&gt;
Several editors have native or extensional support for editing Z80 assembly code with syntax highlighting:&lt;br /&gt;
* Kwrite and Kate can be made to syntax-highlight Z80 assembly with [http://guillaume.h.ifrance.com/ti83/z80assembler.xml the appropriate definition file].  The file can be placed in /usr/share/apps/katepart/syntax to install it.&lt;br /&gt;
* SciTE and Emacs both have native modes for assembly code.  For Emacs, one must make sure to turn on Font Lock mode as well.&lt;br /&gt;
* The [http://www.revsoft.org/phpBB2/viewforum.php?f=25 Z80 Assembly IDE] has simple syntax highlighting built-in.&lt;br /&gt;
* Users of Vim and WLA DX can use [http://sigma.unitedti.org/files/misc/z80.vim.bz2 this syntax file].&lt;br /&gt;
&lt;br /&gt;
== Assembling ==&lt;br /&gt;
&lt;br /&gt;
=== SPASM ===&lt;br /&gt;
&lt;br /&gt;
'''Author''': Spencer Putt&lt;br /&gt;
&lt;br /&gt;
'''Home Page''': [http://www.revsoft.org/phpBB2/viewforum.php?f=21 http://www.revsoft.org/phpBB2/viewforum.php?f=21]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 assembler foo.asm foo.bin&lt;br /&gt;
 wabbit foo.bin foo.8xp&lt;br /&gt;
&lt;br /&gt;
=== tpasm ===&lt;br /&gt;
&lt;br /&gt;
'''Author''': Todd Squires&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://www.sqrt.com/ http://www.sqrt.com/]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 tpasm foo.asm -o intel foo.hex -l foo.lst&lt;br /&gt;
 objcopy -I ihex foo.hex -O binary foo.bin&lt;br /&gt;
&lt;br /&gt;
=== ASxxxx ===&lt;br /&gt;
&lt;br /&gt;
'''Author''': Alan R. Baldwin&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://shop-pdp.kent.edu/ashtml/asxxxx.htm http://shop-pdp.kent.edu/ashtml/asxxxx.htm]&lt;br /&gt;
&lt;br /&gt;
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.)&lt;br /&gt;
&lt;br /&gt;
To assemble and link a simple program you might do something like&lt;br /&gt;
&lt;br /&gt;
 asz80 -plogff foo.asm&lt;br /&gt;
 aslink -u -b _CODE=0x9D95 -i foo.ihx foo.rel&lt;br /&gt;
 objcopy -I ihex foo.ihx -O binary foo.bin&lt;br /&gt;
&lt;br /&gt;
Note that the syntax is rather different from that of most Z80 assemblers.  The important differences are&lt;br /&gt;
* Immediate values are marked with #.&lt;br /&gt;
* Indexed memory access is written as N(ix) rather than (ix+N).&lt;br /&gt;
* Constants are written differently: 0xAA, 0hAA, or $$AA for hexadecimal; 0o252, 0q252, or $&amp;amp;252 for octal; 0b10101010 or $%10101010 for binary.&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
 ld hl,#str_hello&lt;br /&gt;
 add a,3(ix)&lt;br /&gt;
 xor #0x0f&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== TASM ===&lt;br /&gt;
&lt;br /&gt;
'''Author''': Thomas N. Anderson&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://home.comcast.net/~tasm/ http://home.comcast.net/~tasm/]&lt;br /&gt;
&lt;br /&gt;
TASM is a shareware assembler which also supports a variety of processors.&lt;br /&gt;
&lt;br /&gt;
There are several ways that you can use tasm under Linux:&lt;br /&gt;
* The TASM 3.1 for Linux shareware release is still in the wild.  To use this you will need to enable &amp;quot;a.out&amp;quot; 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].&lt;br /&gt;
* You can use TASM 3.2 for Windows with [http://www.winehq.com Wine].&lt;br /&gt;
* You can pay the $40 and compile it yourself on the platform of your choice.&lt;br /&gt;
&lt;br /&gt;
=== Brass ===&lt;br /&gt;
'''Author''': benryves&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://benryves.com/bin/brass/ http://benryves.com/bin/brass/]&lt;br /&gt;
&lt;br /&gt;
Brass runs under Linux thanks to Mono.&lt;br /&gt;
&lt;br /&gt;
=== WLA DX ===&lt;br /&gt;
'''Author''': Ville Helin&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://users.tkk.fi/~vhelin/wla.html http://users.tkk.fi/~vhelin/wla.html]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
WLA DX has had an influence in the development of Brass.&lt;br /&gt;
&lt;br /&gt;
=== Pasmo ===&lt;br /&gt;
'''Author''': Juli&amp;amp;aacute;n Albo&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://www.arrakis.es/~ninsesabe/pasmo/ http://www.arrakis.es/~ninsesabe/pasmo/]&lt;br /&gt;
&lt;br /&gt;
Pasmo is another standalone Z80 cross-assembler with basic macro support, but without the ability to generate&lt;br /&gt;
relocatable object files.  It is licensed under the GNU GPL, and exists as the package &amp;lt;tt&amp;gt;pasmo&amp;lt;/tt&amp;gt; in the Debian pool.&lt;br /&gt;
&lt;br /&gt;
=== z80asm ===&lt;br /&gt;
'''Author''': Bas Wijnen&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://savannah.nongnu.org/projects/z80asm/ http://savannah.nongnu.org/projects/z80asm/]&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;tt&amp;gt;z80asm&amp;lt;/tt&amp;gt; in the Debian pool.&lt;br /&gt;
&lt;br /&gt;
=== GNU as ===&lt;br /&gt;
'''Author''': the GNU binutils team&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://www.gnu.org/software/binutils/ http://www.gnu.org/software/binutils/]&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;tt&amp;gt;--target=z80-unknown-coff&amp;lt;/tt&amp;gt;.  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.&lt;br /&gt;
&lt;br /&gt;
==Sending programs to the calc==&lt;br /&gt;
* TILP&lt;br /&gt;
* titranz : commandline tool, only works for TI-83/TI-83+&lt;br /&gt;
&lt;br /&gt;
= FreeBSD =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* Development&lt;br /&gt;
{| width=&amp;quot;75%&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot;&lt;br /&gt;
|- align=&amp;quot;left&amp;quot;&lt;br /&gt;
!Port !! Current Version !! Location&lt;br /&gt;
|-&lt;br /&gt;
|tpasm || 1.2_1 || /devel/tpasm&lt;br /&gt;
|-&lt;br /&gt;
|z80asm || 0.1_1 || /devel/z80-asm&lt;br /&gt;
|-&lt;br /&gt;
|TI-GCC || 0.96.b6_1 || /devel/tigcc&lt;br /&gt;
|-&lt;br /&gt;
|libticalcs || 4.5.9_1 || /devel/libticalcs&lt;br /&gt;
|-&lt;br /&gt;
|libtifiles || 0.6.5_1 || /devel/libtifiles&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Communications&lt;br /&gt;
{| width=&amp;quot;75%&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot;&lt;br /&gt;
|- align=&amp;quot;left&amp;quot;&lt;br /&gt;
!Port !! Current Version !! Location&lt;br /&gt;
|-&lt;br /&gt;
|TiLP || 6.79_1 || /comms/tilp&lt;br /&gt;
|-&lt;br /&gt;
|libticables || 3.9.7_1 || /comms/libticables&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Emulation&lt;br /&gt;
{| width=&amp;quot;75%&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot;&lt;br /&gt;
|- align=&amp;quot;left&amp;quot;&lt;br /&gt;
!Port !! Current Version !! Location&lt;br /&gt;
|-&lt;br /&gt;
| TIEmu 2 || 2.04 || /emulators/tiemu2&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sigma</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Programming_under_Unix-like_operating_systems</id>
		<title>Programming under Unix-like operating systems</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Programming_under_Unix-like_operating_systems"/>
				<updated>2006-07-23T01:46:06Z</updated>
		
		<summary type="html">&lt;p&gt;Sigma: Information regarding WLA DX&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here are the different tools at your disposal:&lt;br /&gt;
&lt;br /&gt;
==Emulators==&lt;br /&gt;
* TilEm [http://lpg.ticalc.org/prj_tilem/]&lt;br /&gt;
* VTI (with Wine)&lt;br /&gt;
&lt;br /&gt;
==Syntax coloring==&lt;br /&gt;
* there is a file that enables syntax highlighting for z80 asm for Kwrite and Kate [http://guillaume.h.ifrance.com/ti83/z80assembler.xml here]. You have to put it in  /usr/share/apps/katepart/syntax.&lt;br /&gt;
* some editors have an &amp;quot;assembler&amp;quot; syntax coloring that fits quite well (like scite). &lt;br /&gt;
* Z80 Assembly IDE (Latest version and forums are [http://www.revsoft.org/phpBB2/viewforum.php?f=25 here]) has simple syntax coloring.&lt;br /&gt;
* there exists a [http://sigma.unitedti.org/files/misc/z80.vim.bz2 syntax file] for users of Vim and WLA DX.&lt;br /&gt;
 &lt;br /&gt;
== Assembling ==&lt;br /&gt;
&lt;br /&gt;
=== SPASM ===&lt;br /&gt;
&lt;br /&gt;
'''Author''': Spencer Putt&lt;br /&gt;
&lt;br /&gt;
'''Home Page''': [http://www.revsoft.org/phpBB2/viewforum.php?f=21 http://www.revsoft.org/phpBB2/viewforum.php?f=21]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 assembler foo.asm foo.bin&lt;br /&gt;
 wabbit foo.bin foo.8xp&lt;br /&gt;
&lt;br /&gt;
=== tpasm ===&lt;br /&gt;
&lt;br /&gt;
'''Author''': Todd Squires&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://www.sqrt.com/ http://www.sqrt.com/]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 tpasm foo.asm -o intel foo.hex -l foo.lst&lt;br /&gt;
 objcopy -I ihex foo.hex -O binary foo.bin&lt;br /&gt;
&lt;br /&gt;
=== ASxxxx ===&lt;br /&gt;
&lt;br /&gt;
'''Author''': Alan R. Baldwin&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://shop-pdp.kent.edu/ashtml/asxxxx.htm http://shop-pdp.kent.edu/ashtml/asxxxx.htm]&lt;br /&gt;
&lt;br /&gt;
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.)&lt;br /&gt;
&lt;br /&gt;
To assemble and link a simple program you might do something like&lt;br /&gt;
&lt;br /&gt;
 asz80 -plogff foo.asm&lt;br /&gt;
 aslink -u -b _CODE=0x9D95 -i foo.ihx foo.rel&lt;br /&gt;
 objcopy -I ihex foo.ihx -O binary foo.bin&lt;br /&gt;
&lt;br /&gt;
Note that the syntax is rather different from that of most Z80 assemblers.  The important differences are&lt;br /&gt;
* Immediate values are marked with #.&lt;br /&gt;
* Indexed memory access is written as N(ix) rather than (ix+N).&lt;br /&gt;
* Constants are written differently: 0xAA, 0hAA, or $$AA for hexadecimal; 0o252, 0q252, or $&amp;amp;252 for octal; 0b10101010 or $%10101010 for binary.&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
 ld hl,#str_hello&lt;br /&gt;
 add a,3(ix)&lt;br /&gt;
 xor #0x0f&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== TASM ===&lt;br /&gt;
&lt;br /&gt;
'''Author''': Thomas N. Anderson&lt;br /&gt;
&lt;br /&gt;
'''Home page''': [http://home.comcast.net/~tasm/ http://home.comcast.net/~tasm/]&lt;br /&gt;
&lt;br /&gt;
TASM is a shareware assembler which also supports a variety of processors.&lt;br /&gt;
&lt;br /&gt;
There are several ways that you can use tasm under Linux:&lt;br /&gt;
* The TASM 3.1 for Linux shareware release is still in the wild.  To use this you will need to enable &amp;quot;a.out&amp;quot; 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].&lt;br /&gt;
* You can use TASM 3.2 for Windows with [http://www.winehq.com Wine].&lt;br /&gt;
* You can pay the $40 and compile it yourself on the platform of your choice.&lt;br /&gt;
&lt;br /&gt;
=== Brass ===&lt;br /&gt;
'''Author''': benryves&lt;br /&gt;
&lt;br /&gt;
'''Home page''' [http://benryves.com/bin/brass/ http://benryves.com/bin/brass/]&lt;br /&gt;
&lt;br /&gt;
Brass runs under Linux thanks to Mono.&lt;br /&gt;
&lt;br /&gt;
=== WLA DX ===&lt;br /&gt;
'''Author''': Ville Helin&lt;br /&gt;
&lt;br /&gt;
'''Home page''' [http://users.tkk.fi/~vhelin/wla.html http://users.tkk.fi/~vhelin/wla.html]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
WLA DX has had an influence in the development of Brass.&lt;br /&gt;
&lt;br /&gt;
==Sending programs to the calc==&lt;br /&gt;
* TILP&lt;br /&gt;
* titranz : commandline tool, only works for TI-83/TI-83+&lt;/div&gt;</summary>
		<author><name>Sigma</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Talk:83Plus:Ports:05</id>
		<title>Talk:83Plus:Ports:05</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Talk:83Plus:Ports:05"/>
				<updated>2005-07-18T23:25:01Z</updated>
		
		<summary type="html">&lt;p&gt;Sigma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I'm not sure how I feel about calling this &amp;quot;RAM Paging port&amp;quot;, because all of 05,06, and 07 can be used to page in RAM.  Personally I think that if we designate 0000-3FFF as bank0, 4000-7FFF as bank1, 8000-BFFF as bank2, and C000-FFFF as bank3 it will be the clearest.  Then we can say port 5 controls bank3, port 6 controls bank1, and port 7 controls bank2.  --[[User:Dan Englender|Dan Englender]] 09:46, 28 Mar 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
:Well, does it even make sense to assign a bank number to 0000h~3FFFh, since that's permanently set as ROM Page 0? Also another option would be to just call them by the address block they effect (or at least the first address)? Eg, bankC000, bank4000, bank8000? --[[User:Aquanight|Aquanight]] 15:47, 30 Mar 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
::I've heard them be called the 0000, 4000, 8000, and C000 banks before, so that would seem to be a good choice. I would go with this one...and at least these names can't result in any possible confusion at all. Simple and elegent. --[[User:JasonM|JasonM]] right now&lt;br /&gt;
&lt;br /&gt;
I don't see why not to assign a bacnk number to 0000-3FFF.  Just because the data in there isn't changing doesn't mean it's not useful to talk about it.  Memory is logically split into these four different segments, so it's useful to have names for all of them.  --[[User:Dan Englender|Dan Englender]] 08:32, 31 Mar 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Should it be pointed out somewhere that only when the port is 0 (RAM page 0 selected) that execution is forbidden above address C000h? --[[User:Aquanight|Aquanight]] 15:10, 2 May 2005 (PDT)&lt;br /&gt;
:Isn't all execution prevented on ram page 0 regardless of where it is? --[[User:AndyJ|AndyJ]] 15:13, 2 May 2005 (PDT)&lt;br /&gt;
::Yes, but for people that might be semi-new to assembly it might be a good idea to point out *somewhere* that the execution limit is tied to the RAM page, and not the logical memory. Putting it here would seem to make the most sense :) . That or maybe somewhere in 83Plus:OS or something? --[[User:Aquanight|Aquanight]] 23:08, 3 May 2005 (PDT)&lt;br /&gt;
:::Well, it's a hardware thing, not an OS thing, so no it doesn't go there. It would go here. :) Someone fix that sometime, it's way too late for me to. :P --[[User:AndyJ|AndyJ]] 23:09, 3 May 2005 (PDT)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Added info about TI-83 Plus. Didn't know exactly how to separate BE with higher models given how radically different the behaviour of the port is, so I did what seemed logical and marked the page as non-standard. Also, the table could be better. [[User:Sigma|Sigma]] 16:25, 18 Jul 2005 (PDT)&lt;/div&gt;</summary>
		<author><name>Sigma</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Ports:05</id>
		<title>83Plus:Ports:05</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Ports:05"/>
				<updated>2005-07-18T23:22:01Z</updated>
		
		<summary type="html">&lt;p&gt;Sigma: Added TI-83 Plus Info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:Ports:By_Address|05 - RAM Page]] [[Category:83Plus:Ports:By_Name|RAM Page]] [[Category:83Plus:Ports:By_Name|83Plus:Ports:By_Name]]&lt;br /&gt;
&lt;br /&gt;
{{wikify}}&lt;br /&gt;
&lt;br /&gt;
== Synopsis (TI-83 Plus S.E. and TI-84 Plus Family) ==&lt;br /&gt;
'''Port Number:''' 05h&lt;br /&gt;
&lt;br /&gt;
'''Function:''' RAM Paging Port&lt;br /&gt;
&lt;br /&gt;
This port can be used to control what RAM page is paged into the C000h-FFFFh memory bank. Note that it can only page RAM pages, not flash pages.&lt;br /&gt;
&lt;br /&gt;
=== Read Values ===&lt;br /&gt;
Returns the current RAM pages.&lt;br /&gt;
&lt;br /&gt;
=== Write Values ===&lt;br /&gt;
Sets the current RAM page, by giving a value in 00h-07h, inclusive. When you work with the other paging ports, RAM pages are given in 80h-87h, but this port does not need bit 7 to be set. You cannot set the upper four bits.&lt;br /&gt;
&lt;br /&gt;
== Synopsis (TI-83 Plus) ==&lt;br /&gt;
'''Port Number:''' 05h&lt;br /&gt;
&lt;br /&gt;
'''Function:''' Port 16h Configuration Port&lt;br /&gt;
&lt;br /&gt;
This port configures which memory pages are locked or unlocked (i.e. whether or not the PC register is allowed to point within the page) by port 16h. Only bits 0..2 are considered, the rest have no effect.&lt;br /&gt;
&lt;br /&gt;
=== Read Values ===&lt;br /&gt;
Nothing of value.&lt;br /&gt;
&lt;br /&gt;
=== Write Values ===&lt;br /&gt;
Writing a set bit to 16h protects the page; writing a clear bit unprotects the page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; style=&amp;quot;text-align: center&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th colspan=3&amp;gt;Port 05h Bit&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th colspan=8&amp;gt;Port 16h Bit&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;2&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;1&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;0&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;7&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;6&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;5&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;4&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;3&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;2&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;1&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;0&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM 0F&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM 0E&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM 0D&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM 0C&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM 0B&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM 0A&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM 09&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM 08&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM 17&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM 16&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM 15&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM 14&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM 13&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM 12&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM 11&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM 10&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;X&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;X&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;X&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;X&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM 1B&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM 1A&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM 19&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM 18&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;X&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;X&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM 01&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;X&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;X&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;X&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;X&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM 00&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
At least on my TI-84+, if you output a value with bit 3 set, reading from the port will return a value with bit 3 set. This would imply that you can use RAM pages 08h-0Fh, but these RAM pages do not exist--this bit is simply ignored (only bits 0-2 actually determine what RAM page is active.)&lt;br /&gt;
&lt;br /&gt;
== Credits and Contributions ==&lt;br /&gt;
* '''Michael Vincent:''' Initial documentation.&lt;br /&gt;
* '''Tijl Coosemans (sp? and correct mundane name?):''' Documenting TI-83 Plus functionality [http://www.kalimero.be/83phwinfo.txt here].&lt;/div&gt;</summary>
		<author><name>Sigma</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Ports:00</id>
		<title>83Plus:Ports:00</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Ports:00"/>
				<updated>2005-05-27T22:12:28Z</updated>
		
		<summary type="html">&lt;p&gt;Sigma: Got rid of first person&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:Ports:By_Address|00 - Link]] [[Category:83Plus:Ports:By_Name|Link]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Port Number:''' 00h&lt;br /&gt;
&lt;br /&gt;
'''Function:''' Link&lt;br /&gt;
&lt;br /&gt;
This port controls the calculator's serial link port (the standard link port present on the 83+, 83+ SE, 84+ and 84+ SE - do not confuse this with the 84+/84+SE's USB link port).&lt;br /&gt;
&lt;br /&gt;
=== Read Values ===&lt;br /&gt;
* Bit 0 and 1: The low 2 bits indicate the state of the link port's two lines. A 1 bit indicates a high line, and a 0 bit indicates a low line. When idle (no transfer in progress, no cable plugged in, etc), both lines are usually high (1). When a cable is connected on both ends, a line reads high if and only if both ends have set the line high. The line will read low if either calculator sets it low.&lt;br /&gt;
* Bit 5 and 6: Bits 5 and 6 indicate which lines are pulled low by the calculator (unlike bits 0 and 1 they are not influenced by the other calculator). A 1 bit indicates your calculator is holding the line low. A 0 bit indicates your calculator is not holding the line low. (When both calculators have a 0 bit here, the corresponding line will read 1.) In other words, these bits reflect bits 0 and 1 from the most recent write to this port.&lt;br /&gt;
* Bit 2: Unknown.&lt;br /&gt;
&lt;br /&gt;
=== Write Values ===&lt;br /&gt;
* Bit 0 and 1: The low 2 bits indicate what state the lines should be put into. A 1 bit will pull the line low. A 0 bit will stop holding the line low (allowing it to go high if the other calculator is not holding it low).&lt;br /&gt;
* Bit 2: The complete meaning of this bit is unknown. What is known is that any change of this bit causes both lines to be released, writing with this bit set causes bit 2 to read 1, and the next write causes it to read 0 and both lines are released.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
&lt;br /&gt;
=== Bit 2 ===&lt;br /&gt;
As mentioned bit 2's effect is unknown. An example of it's behavior follows:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Start, read 03.&lt;br /&gt;
Write 02, read 01.&lt;br /&gt;
Write 07, read 07.&lt;br /&gt;
Write 07, read 03.&lt;br /&gt;
Write 07, read 07.&lt;br /&gt;
Write 00, read 03.&lt;br /&gt;
Write 09, read 07.&lt;br /&gt;
Write 01, read 03.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ti-OS interference ===&lt;br /&gt;
One thing to keep in mind when writing link port related software is that the Ti-OS checks for silent transfers in the background. When two calculators are connected and one pulls a line low, the other calculator will respond by pulling the other line low to acknowledge that it has received a bit. This phenomenon is known to cause severe headaches for programmers who attempt to write synchronization routines :). It's unclear if this is only when the other calculator is in the homescreen, or if it is part of the default interrupt routine at $0038.&lt;br /&gt;
&lt;br /&gt;
=== Data transfer ===&lt;br /&gt;
Transferring an entire byte requires you to implement some form of protocol. Examples include TI's official linking protocol, and [http://www.ticalc.org/archives/files/fileinfo/277/27718.html Michael Vincent's TachyonLink protocol].&lt;br /&gt;
&lt;br /&gt;
Other useful information on linking in general:&lt;br /&gt;
*  [http://www.ticalc.org/archives/files/fileinfo/247/24750.html TI Link Protocol &amp;amp; File Format Guide]&amp;lt;br&amp;gt;&lt;br /&gt;
*  [http://www.ticalc.org/archives/files/fileinfo/294/29418.html Ti-83 Link Port Tutorial]&lt;br /&gt;
*  [http://www.ticalc.org/archives/files/fileinfo/242/24244.html All about the Ti-86 link port]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
=== Sending/Setting ===&lt;br /&gt;
&amp;lt;pre&amp;gt;ld a,0     ; Set both lines high&lt;br /&gt;
out (0),a&lt;br /&gt;
&lt;br /&gt;
ld a,2     ; Set tip high, ring low&lt;br /&gt;
out (0),a&lt;br /&gt;
&lt;br /&gt;
ld a,1     ; Set tip low, ring high&lt;br /&gt;
out (0),a&lt;br /&gt;
&lt;br /&gt;
ld a,3     ; Set both low&lt;br /&gt;
out (0),a&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Receiving/Reading ===&lt;br /&gt;
&amp;lt;pre&amp;gt;in a,(0)        ; Get the link port value&lt;br /&gt;
&lt;br /&gt;
bit 0,a         ; Check tip&lt;br /&gt;
jr z,tip_low&lt;br /&gt;
jr nz,tip_high&lt;br /&gt;
&lt;br /&gt;
bit 1,a         ; Check ring&lt;br /&gt;
jr z,ring_low&lt;br /&gt;
jr nz,ring_high&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sigma</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Talk:Contributing</id>
		<title>Talk:Contributing</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Talk:Contributing"/>
				<updated>2005-04-28T21:30:25Z</updated>
		
		<summary type="html">&lt;p&gt;Sigma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Should romcalls be put into only the most specific category, or should they appear in the parent category as well?--[[User:Dwedit|Dwedit]] 13:28, 28 Mar 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
They should be placed into both.  We want a list of *all* bcalls/romcalls, but it's also nice to be able to browse by more specific type.  So, for example, you would have something like this (pasted from the template) -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[[Category:83Plus:BCALLs:By Name|ProveTheRiemannHypothesis]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and also&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[[Category:83Plus:BCALLs:By Name|Utility|ProveTheRiemannHypothesis]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And then a third category listing for the by address listing.&lt;br /&gt;
--[[User:Dan Englender|Dan Englender]] 14:22, 28 Mar 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
That'd be &amp;lt;nowiki&amp;gt;[[Category:83Plus:BCALLs:By Name:Utility|ProveTheRiemannHypothesis]]&amp;lt;/nowiki&amp;gt;... *runs off to check the template*&lt;br /&gt;
&lt;br /&gt;
--[[User:AndyJ|AndyJ]] 15:56, 28 Mar 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Ick, I did goof that up... I fixed it. --[[User:AndyJ|AndyJ]] 15:57, 28 Mar 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Would it be a good idea to use this nomenclature when talking about the calculator's memory?&lt;br /&gt;
*&amp;quot;page&amp;quot; - 256 bytes of memory, usu. in the address range ??00..??FF.&lt;br /&gt;
*&amp;quot;(memory) slot&amp;quot; - A division of logical memory used for memory banks (the TI-83 has four slots).&lt;br /&gt;
*&amp;quot;(memory) bank&amp;quot; - An amount of physical memory that can be mapped in/out of logical memory through a memory slot.&lt;br /&gt;
&lt;br /&gt;
There is also no standard for how code should be formatted. There are three articles in Z80 Routines, and all of them use a different assembler's syntax (bub_font: ZMASM, fastcopy: TASM, and itoa (arguably the finest of them all :-): WLA).&lt;br /&gt;
--[[User:Sigma|Sigma]] 14:30, 28 Apr 2005 (PDT)&lt;/div&gt;</summary>
		<author><name>Sigma</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Z80_Routines:Other:DispA</id>
		<title>Z80 Routines:Other:DispA</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Z80_Routines:Other:DispA"/>
				<updated>2005-04-03T23:22:19Z</updated>
		
		<summary type="html">&lt;p&gt;Sigma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Z80 Routines:Other|itoa]]&lt;br /&gt;
[[Category:Z80 Routines|itoa]]&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
; ITOA&lt;br /&gt;
; --------------------------------------------------------------&lt;br /&gt;
; Converts a signed integer value to a zero-terminated ASCII&lt;br /&gt;
; string representative of that value (using radix 10).&lt;br /&gt;
; --------------------------------------------------------------&lt;br /&gt;
; INPUTS:&lt;br /&gt;
;     HL     Value to convert (two's complement integer).&lt;br /&gt;
;     DE     Base address of string destination. (pointer).&lt;br /&gt;
; --------------------------------------------------------------&lt;br /&gt;
; OUTPUTS:&lt;br /&gt;
;     None&lt;br /&gt;
; --------------------------------------------------------------&lt;br /&gt;
; REGISTERS/MEMORY DESTROYED&lt;br /&gt;
; AF HL&lt;br /&gt;
; --------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
itoa:&lt;br /&gt;
   push    de&lt;br /&gt;
   push    bc&lt;br /&gt;
&lt;br /&gt;
; Detect sign of HL.&lt;br /&gt;
    bit    7, h&lt;br /&gt;
    jr     z, _DoConvert&lt;br /&gt;
&lt;br /&gt;
; HL is negative. Output '-' to string and negate HL.&lt;br /&gt;
    ld     a, '-'&lt;br /&gt;
    ld     (de), a&lt;br /&gt;
    inc    de&lt;br /&gt;
&lt;br /&gt;
; Negate HL (using two's complement)&lt;br /&gt;
    xor    a&lt;br /&gt;
    sub    l&lt;br /&gt;
    ld     l, a&lt;br /&gt;
    ld     a, 0     ; Note that XOR A or SUB A would disturb CF&lt;br /&gt;
    sbc    a, h&lt;br /&gt;
    ld     h, a&lt;br /&gt;
&lt;br /&gt;
; Convert HL to digit characters&lt;br /&gt;
_DoConvert:&lt;br /&gt;
    ld     b, 0     ; B will count character length of number&lt;br /&gt;
-   ld     a, 10&lt;br /&gt;
    call   DivHLByA ; HL = HL / A, A = remainder&lt;br /&gt;
    push   af&lt;br /&gt;
    inc    b&lt;br /&gt;
    ld     a, h&lt;br /&gt;
    or     l&lt;br /&gt;
    jr     nz, -&lt;br /&gt;
&lt;br /&gt;
; Retrieve digits from stack&lt;br /&gt;
-   pop    af&lt;br /&gt;
    or     $30&lt;br /&gt;
    ld     (de), a&lt;br /&gt;
    inc    de&lt;br /&gt;
    djnz   -&lt;br /&gt;
&lt;br /&gt;
; Terminate string with NULL&lt;br /&gt;
    xor    a&lt;br /&gt;
    ld     (de), a&lt;br /&gt;
&lt;br /&gt;
    pop    bc&lt;br /&gt;
    pop    de&lt;br /&gt;
    ret&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Comments===&lt;br /&gt;
*This routine uses the common [[Wikipedia:Numeral_systems#Change_of_radix|positive-integer radix conversion algorithm]] of repeatedly dividing a value by the desired radix (base case: the value is zero) and saving the remainders of each division.&lt;br /&gt;
*As this algorithm gives the digits in reverse order, they are pushed onto the hardware stack so that subsequently popping them yields the correct order.&lt;br /&gt;
*Note that the output string will not be fixed-width.&lt;/div&gt;</summary>
		<author><name>Sigma</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Z80_Routines:Other:DispA</id>
		<title>Z80 Routines:Other:DispA</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Z80_Routines:Other:DispA"/>
				<updated>2005-04-03T22:59:38Z</updated>
		
		<summary type="html">&lt;p&gt;Sigma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Z80 Routines:Other|itoa]]&lt;br /&gt;
[[Category:Z80 Routines|itoa]]&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
; ITOA&lt;br /&gt;
; --------------------------------------------------------------&lt;br /&gt;
; Converts a signed integer value to a zero-terminated ASCII&lt;br /&gt;
; string representative of that value (using radix 10).&lt;br /&gt;
; --------------------------------------------------------------&lt;br /&gt;
; INPUTS:&lt;br /&gt;
;     HL     Value to convert (two's complement integer).&lt;br /&gt;
;     DE     Base address of string destination. (pointer).&lt;br /&gt;
; --------------------------------------------------------------&lt;br /&gt;
; OUTPUTS:&lt;br /&gt;
;     None&lt;br /&gt;
; --------------------------------------------------------------&lt;br /&gt;
; REGISTERS/MEMORY DESTROYED&lt;br /&gt;
; AF HL&lt;br /&gt;
; --------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
itoa:&lt;br /&gt;
   push    de&lt;br /&gt;
   push    bc&lt;br /&gt;
&lt;br /&gt;
; Detect sign of HL.&lt;br /&gt;
    bit    7, h&lt;br /&gt;
    jr     z, _DoConvert&lt;br /&gt;
&lt;br /&gt;
; HL is negative. Output '-' to string and negate HL.&lt;br /&gt;
    ld     a, '-'&lt;br /&gt;
    ld     (de), a&lt;br /&gt;
    inc    de&lt;br /&gt;
&lt;br /&gt;
; Negate HL (using two's complement)&lt;br /&gt;
    xor    a&lt;br /&gt;
    sub    l&lt;br /&gt;
    ld     l, a&lt;br /&gt;
    ld     a, 0     ; Note that XOR A or SUB A would disturb CF&lt;br /&gt;
    sbc    a, h&lt;br /&gt;
    ld     h, a&lt;br /&gt;
&lt;br /&gt;
; Convert HL to digit characters&lt;br /&gt;
_DoConvert:&lt;br /&gt;
    ld     b, 0     ; B will count character length of number&lt;br /&gt;
-   ld     a, 10&lt;br /&gt;
    call   DivHLByA ; HL = HL / A, A = remainder&lt;br /&gt;
    push   af&lt;br /&gt;
    inc    b&lt;br /&gt;
    ld     a, h&lt;br /&gt;
    or     l&lt;br /&gt;
    jr     nz, -&lt;br /&gt;
&lt;br /&gt;
; Retrieve digits from stack&lt;br /&gt;
-   pop    af&lt;br /&gt;
    or     $30&lt;br /&gt;
    ld     (de), a&lt;br /&gt;
    inc    de&lt;br /&gt;
    djnz   -&lt;br /&gt;
&lt;br /&gt;
; Terminate string with NULL&lt;br /&gt;
    xor    a&lt;br /&gt;
    ld     (de), a&lt;br /&gt;
&lt;br /&gt;
    pop    bc&lt;br /&gt;
    pop    de&lt;br /&gt;
    ret&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Comments===&lt;br /&gt;
This routine uses the common radix conversion algorithm of repeatedly dividing a value by the desired radix (base case: the value is zero) and saving the remainders of each division.&lt;/div&gt;</summary>
		<author><name>Sigma</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Z80_Routines:Other:DispA</id>
		<title>Z80 Routines:Other:DispA</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Z80_Routines:Other:DispA"/>
				<updated>2005-04-03T22:55:41Z</updated>
		
		<summary type="html">&lt;p&gt;Sigma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Z80 Routines:Other|itoa]]&lt;br /&gt;
[[Category:Z80 Routines|itoa]]&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
; ITOA&lt;br /&gt;
; --------------------------------------------------------------&lt;br /&gt;
; Converts a signed integer value to a zero-terminated ASCII&lt;br /&gt;
; string representative of that value (using radix 10).&lt;br /&gt;
; --------------------------------------------------------------&lt;br /&gt;
; INPUTS:&lt;br /&gt;
;     HL     Value to convert (two's complement integer).&lt;br /&gt;
;     DE     Base address of string destination. (pointer).&lt;br /&gt;
; --------------------------------------------------------------&lt;br /&gt;
; OUTPUTS:&lt;br /&gt;
;     None&lt;br /&gt;
; --------------------------------------------------------------&lt;br /&gt;
; REGISTERS/MEMORY DESTROYED&lt;br /&gt;
; AF HL&lt;br /&gt;
; --------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
itoa:&lt;br /&gt;
   push    de&lt;br /&gt;
   push    bc&lt;br /&gt;
&lt;br /&gt;
; Detect sign of HL.&lt;br /&gt;
    bit    7, h&lt;br /&gt;
    jr     z, _DoConvert&lt;br /&gt;
&lt;br /&gt;
; HL is negative. Output '-' to string and negate HL.&lt;br /&gt;
    ld     a, '-'&lt;br /&gt;
    ld     (de), a&lt;br /&gt;
    inc    de&lt;br /&gt;
&lt;br /&gt;
; Negate HL (using two's complement)&lt;br /&gt;
    xor    a&lt;br /&gt;
    sub    l&lt;br /&gt;
    ld     l, a&lt;br /&gt;
    ld     a, 0     ; Note that XOR A or SUB A would disturb CF&lt;br /&gt;
    sbc    a, h&lt;br /&gt;
    ld     h, a&lt;br /&gt;
&lt;br /&gt;
; Convert HL to digit characters&lt;br /&gt;
_DoConvert:&lt;br /&gt;
    ld     b, 0     ; B will count character length of number&lt;br /&gt;
-   ld     a, 10&lt;br /&gt;
    call   DivHLByA ; HL = HL / A, A = remainder&lt;br /&gt;
    push   af&lt;br /&gt;
    inc    b&lt;br /&gt;
    ld     a, h&lt;br /&gt;
    or     l&lt;br /&gt;
    jr     nz, -&lt;br /&gt;
&lt;br /&gt;
; Retrieve digits from stack&lt;br /&gt;
-   pop    af&lt;br /&gt;
    or     $30&lt;br /&gt;
    ld     (de), a&lt;br /&gt;
    inc    de&lt;br /&gt;
    djnz   -&lt;br /&gt;
&lt;br /&gt;
; Terminate string with NULL&lt;br /&gt;
    xor    a&lt;br /&gt;
    ld     (de), a&lt;br /&gt;
&lt;br /&gt;
    pop    bc&lt;br /&gt;
    pop    de&lt;br /&gt;
    ret&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sigma</name></author>	</entry>

	</feed>