https://wikiti.brandonw.net/api.php?action=feedcontributions&user=Burntfuse&feedformat=atomWikiTI - User contributions [en]2024-03-29T05:20:56ZUser contributionsMediaWiki 1.23.5https://wikiti.brandonw.net/index.php?title=Programming_under_Unix-like_operating_systemsProgramming under Unix-like operating systems2006-10-11T20:12:12Z<p>Burntfuse: Added links for TiLP and titranz</p>
<hr />
<div>Here are the different tools at your disposal:<br />
<br />
= General Overviews =<br />
<br />
==Emulators==<br />
* TilEm [http://lpg.ticalc.org/prj_tilem/]<br />
* VTI (with Wine)<br />
<br />
==Syntax highlighting==<br />
Several editors have native or extensional support for editing Z80 assembly code with syntax highlighting:<br />
* Kwrite and Kate can be made to syntax-highlight Z80 assembly with [http://www.ticalc.org/archives/files/fileinfo/391/39178.html the appropriate definition file]. The file must be placed in /usr/share/apps/katepart/syntax .<br />
* SciTE and Emacs both have native modes for assembly code. For Emacs, one must make sure to turn on Font Lock mode as well.<br />
* The [http://www.revsoft.org/phpBB2/viewforum.php?f=25 Z80 Assembly IDE] has simple syntax highlighting built-in.<br />
* Users of Vim and WLA DX can use [http://sigma.unitedti.org/files/misc/z80.vim.bz2 this syntax file].<br />
<br />
== Assembling ==<br />
<br />
=== SPASM ===<br />
<br />
'''Author''': Spencer Putt<br />
<br />
'''Home Page''': [http://www.revsoft.org/phpBB2/viewforum.php?f=21 http://www.revsoft.org/phpBB2/viewforum.php?f=21]<br />
<br />
SPASM is a portable Z80 assembler released under the GPL. Its distinguishing features are extremely fast assembly and powerful macro support. The output is only available in binary form, however with the use of [http://www.revsoft.org/phpBB2/viewforum.php?f=23 Wabbitsign], written by James Montelongo and Spencer Putt, it can easily be converted to any desired program type.<br />
<br />
assembler foo.asm foo.bin<br />
wabbit foo.bin foo.8xp<br />
<br />
=== tpasm ===<br />
<br />
'''Author''': Todd Squires<br />
<br />
'''Home page''': [http://www.sqrt.com/ http://www.sqrt.com/]<br />
<br />
tpasm is a Free (GPL) assembler which supports the Z80 as well as the 6805, 6809, 68HC11, 6502, Sunplus, 8051, PIC, and AVR. It uses syntax very similar to ZMASM.<br />
<br />
tpasm 1.2 does not support binary file output, but you can use ''objcopy'' (from the GNU binutils package) to convert its Intel Hex output into binary; e.g.<br />
<br />
tpasm foo.asm -o intel foo.hex -l foo.lst<br />
objcopy -I ihex foo.hex -O binary foo.bin<br />
<br />
=== ASxxxx ===<br />
<br />
'''Author''': Alan R. Baldwin<br />
<br />
'''Home page''': [http://shop-pdp.kent.edu/ashtml/asxxxx.htm http://shop-pdp.kent.edu/ashtml/asxxxx.htm]<br />
<br />
ASxxxx is a freeware assembler which supports the Z80 along with a large variety of other processors. It more closely resembles a modern PC assembler than a typical Z80 assembler, as it assembles each file into a relocatable object format which can then be linked with other files to produce the complete program. The linking is done by a separate program called ASlink (included with the package.)<br />
<br />
To assemble and link a simple program you might do something like<br />
<br />
asz80 -plogff foo.asm<br />
aslink -u -b _CODE=0x9D95 -i foo.ihx foo.rel<br />
objcopy -I ihex foo.ihx -O binary foo.bin<br />
<br />
Note that the syntax is rather different from that of most Z80 assemblers. The important differences are<br />
* Immediate values are marked with #.<br />
* Indexed memory access is written as N(ix) rather than (ix+N).<br />
* Constants are written differently: 0xAA, 0hAA, or $$AA for hexadecimal; 0o252, 0q252, or $&252 for octal; 0b10101010 or $%10101010 for binary.<br />
<br />
For example,<br />
ld hl,#str_hello<br />
add a,3(ix)<br />
xor #0x0f<br />
<br />
There is also a modified version of ASxxxx distributed with the [http://sdcc.sf.net/ Small Device C Compiler]. This version is, if anything, more confusing to use due to the poorly-documented changes made by the SDCC team.<br />
<br />
=== TASM ===<br />
<br />
'''Author''': Thomas N. Anderson<br />
<br />
'''Home page''': [http://home.comcast.net/~tasm/ http://home.comcast.net/~tasm/]<br />
<br />
TASM is a shareware assembler which also supports a variety of processors.<br />
<br />
There are several ways that you can use tasm under Linux:<br />
* The TASM 3.1 for Linux shareware release is still in the wild. To use this you will need to enable "a.out" support in your kernel (it may be available as the module ''binfmt_aout''.) You will also need to obtain the ancient Linux libc version 4 (''not'' glibc) which can be found [http://ftp.linux.org.uk/pub/linux/libc/ here].<br />
* You can use TASM 3.2 for Windows with [http://www.winehq.com Wine].<br />
* You can pay the $40 and compile it yourself on the platform of your choice.<br />
<br />
=== Brass ===<br />
'''Author''': benryves<br />
<br />
'''Home page''': [http://benryves.com/bin/brass/ http://benryves.com/bin/brass/]<br />
<br />
Brass runs under Linux thanks to Mono.<br />
<br />
=== Zasm ===<br />
'''Author''': Steven Deprez<br />
<br />
'''Home page''': [http://lpg.ticalc.org/prj_zasm/index.html http://lpg.ticalc.org/prj_zasm/index.html]<br />
<br />
Zasm is an open source assembler that is almost fully compatible with Tasm and ZDS.<br />
<br />
=== WLA DX ===<br />
'''Author''': Ville Helin<br />
<br />
'''Home page''': [http://users.tkk.fi/~vhelin/wla.html http://users.tkk.fi/~vhelin/wla.html]<br />
<br />
WLA DX is another open-source (GNU GPL) cross-assembler with a primary focus on targeting video game consoles. It is a high-powered assembler with a wide variety of features such as, e.g. separate compilation, POSIX-like file I/O, and code sectioning. However it is cumbersome when assembling small projects, and semantics are unorthodox compared to other assemblers. (~ is the XOR operator, macro arguments are passed by value, etc.) Furthermore, development appears to have ceased since January 2006.<br />
<br />
WLA DX has had an influence in the development of Brass.<br />
<br />
=== Pasmo ===<br />
'''Author''': Juli&aacute;n Albo<br />
<br />
'''Home page''': [http://www.arrakis.es/~ninsesabe/pasmo/ http://www.arrakis.es/~ninsesabe/pasmo/]<br />
<br />
Pasmo is another standalone Z80 cross-assembler with basic macro support, but without the ability to generate<br />
relocatable object files. It is licensed under the GNU GPL, and exists as the package <tt>pasmo</tt> in the Debian pool.<br />
<br />
=== z80asm ===<br />
'''Author''': Bas Wijnen<br />
<br />
'''Home page''': [http://savannah.nongnu.org/projects/z80asm/ http://savannah.nongnu.org/projects/z80asm/]<br />
<br />
z80asm is a standalone Z80 cross-assembler similar in nature to Pasmo, in that it has macro support but cannot generate relocatable object files. It too is licensed under the GNU GPL (version 2 or later), and exists as the package <tt>z80asm</tt> in the Debian pool.<br />
<br />
=== GNU as ===<br />
'''Author''': the GNU binutils team<br />
<br />
'''Home page''': [http://www.gnu.org/software/binutils/ http://www.gnu.org/software/binutils/]<br />
<br />
Starting from version 2.17, the GNU assembler, part of the binutils package, is capable of cross-assembling Z80 code when configured for it at compile-time, such as with <tt>--target=z80-unknown-coff</tt>. binutils includes a powerful assembler and linker both, along with various utilities for handling object files, such as objcopy and objdump; for Z80, COFF is used for relocatable objects, with raw binary and Intel hex formats also supported. While this is probably one of the more powerful tools in the list for Z80 development, it also requires more work to start with, as the traditional way to get a cross-assembling binutils is to compile it oneself. Being a GNU package, binutils is naturally licensed under the GNU GPL (version 2 or later). Prepackaged binary versions of binutils are very common, but usually do not have cross-assembling capability.<br />
<br />
==Sending programs to the calc==<br />
* [http://www.ticalc.org/archives/files/fileinfo/374/37480.html TiLP] (requires [http://www.ticalc.org/archives/files/fileinfo/374/37479.html tilibs])<br />
* [http://www.ticalc.org/archives/files/fileinfo/75/7588.html titranz] : commandline tool, only works for TI-83/TI-83+<br />
<br />
= FreeBSD =<br />
Much of the aforementioned software should compile independently without problem or with minor tweaking under FreeBSD, but it is best to utilize the ports collection whenever possible. Unfortunately, the current state of calculator-related software in the FreeBSD Ports Collection is lacking in variety.<br />
<br />
* Development<br />
{| width="75%" class="wikitable" style="margin: 1em auto 1em auto"<br />
|- align="left"<br />
!Port !! Current Version !! Location<br />
|-<br />
|tpasm || 1.2_1 || /devel/tpasm<br />
|-<br />
|z80asm || 0.1_1 || /devel/z80-asm<br />
|-<br />
|TI-GCC || 0.96.b6_1 || /devel/tigcc<br />
|-<br />
|libticalcs || 4.5.9_1 || /devel/libticalcs<br />
|-<br />
|libtifiles || 0.6.5_1 || /devel/libtifiles<br />
|}<br />
<br />
* Communications<br />
{| width="75%" class="wikitable" style="margin: 1em auto 1em auto"<br />
|- align="left"<br />
!Port !! Current Version !! Location<br />
|-<br />
|TiLP || 6.79_1 || /comms/tilp<br />
|-<br />
|libticables || 3.9.7_1 || /comms/libticables<br />
|}<br />
<br />
* Emulation<br />
{| width="75%" class="wikitable" style="margin: 1em auto 1em auto"<br />
|- align="left"<br />
!Port !! Current Version !! Location<br />
|-<br />
| TIEmu 2 || 2.04 || /emulators/tiemu2<br />
|}<br />
<br />
= Other Unixes =<br />
<!--Replace with specific distributions as appropriate --><br />
This section is a stub. Please add it it.</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=83Plus:Basic:Graphics:Text(83Plus:Basic:Graphics:Text(2006-10-07T21:34:23Z<p>Burntfuse: Cleaned up to match template</p>
<hr />
<div>[[Category:83Plus:Basic:Graphics|Text(]]<br />
<br />
== Synopsis ==<br />
'''Token size:''' 1 byte<br />
<br />
'''Syntax:''' Text([-1,]''y'',''x'',''value'')<br />
<br />
Draws text on the graph screen.<br />
<br />
== Outputs: ==<br />
<br />
''value'' will be displayed at ''x'',''y'' in the small font. If the -1 is included, the large font will be used instead. As with the other text-drawing commands, ''value'' can be a string, a list, a variable, or a matrix.<br />
<br />
== Comments ==<br />
<br />
* If the string does not fit on the screen, the extra characters will be cut off.<br />
* ''x'' and ''y'' are measured in pixels, not characters (unlike [[83Plus:Basic:Graphics:Disp|Disp]] or [[83Plus:Basic:Graphics:Output(|Output]]).<br />
* The text will also be copied to the graph buffer.<br />
<br />
== Examples ==<br />
<br />
:Text(3,4,"This is in small font.")<br />
:Text(-1,4,3,"This is in BIG font.")</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=Z80_Good_Programming_PracticesZ80 Good Programming Practices2006-09-24T18:41:29Z<p>Burntfuse: added alternative to LUTs for if few options and sequential values of a</p>
<hr />
<div>== Using IX ==<br />
<br />
If you have objects represented by adjacent chunks of data in memory, you can use IX to easily manage them.<br />
<br />
<table border="1" cellpadding="2"><br />
<tr><th>Without</th><th>With</th></tr><br />
<tr><br />
<td><br />
<nowiki><br />
ld b,10<br />
ld hl,SpritesData<br />
DisplaySpritesLoop<br />
ld b,(hl) ; coordx<br />
inc hl<br />
ld c,(hl) ; coordy<br />
inc hl<br />
ld d,(hl) ; first part of address<br />
inc hl<br />
ld e,(hl) ; end of address<br />
inc hl<br />
call DisplaySprite<br />
djnz DisplaySpritesLoop<br />
</nowiki><br />
</td><br />
<td><br />
<nowiki><br />
COORDX .equ 0<br />
COORDY .equ 1<br />
ADDR1 .equ 2<br />
ADDR2 .equ 3<br />
<br />
ld b,10<br />
ld ix,SpritesData<br />
DisplaySpritesLoop<br />
ld b,(ix+COORDX)<br />
ld c,(ix+COORDY)<br />
ld d,(ix+ADDR1)<br />
ld e,(ix+ADDR2)<br />
call DisplaySprite<br />
ld hl,4<br />
add ix,hl<br />
djnz DisplaySpritesLoop<br />
</nowiki><br />
</td><br />
</tr><br />
</table><br />
<br />
Defining constants for the offsets of each field of your "objects" makes the code more understandable. However this particular example is not the best, being that the original code is faster and smaller. Typically in sequential access using the HL register gives better performance, but if random access of different objects and different elements in an object is required throughout a particular iteration, then ix would be the better choice.<br />
<br />
<br />
<br />
== Lookup table ==<br />
<br />
If you have a place in your code where a value is tested to choose between a lot of things, like subroutines or data, it can be a good idea to use lookup tables instead of a series of tests. It makes the code more readable, concise and extensible.<br />
<br />
In terms optimisation though it should be used when the data is not sequentially ordered or when the objects being pointed to are not the same size. For example, using LUTs (Look Up Tables) to find a tile in a block of memory that is only tiles would both slower and cost more memory. Using LUTs to find a particular string would be quicker but would waste more memory than a linear search. Using LUTs as a jump table to different code blocks located through out a program would be faster and smaller compared to the alternative.<br />
<br />
However, if there aren't many jumps and many of the values of a are sequential, it would be more efficient to do something like:<br />
<nowiki><br />
ld a,(Number)<br />
or a<br />
jp z,A_is_0<br />
dec a<br />
jp z,A_is_1<br />
dec a<br />
jp z,A_is_2<br />
sub 2<br />
jp z,A_is_4<br />
dec a<br />
jp z,A_is_5<br />
</nowiki><br />
<br />
Examples:<br />
<table border="1" cellpadding="2"><br />
<tr><th>Without</th><th>With</th></tr><br />
<tr><br />
<td><br />
<nowiki><br />
ld a,(SpriteNumber)<br />
cp 1<br />
jp z,ChooseSprite1<br />
cp 2<br />
jp z,ChooseSprite2<br />
cp 3<br />
jp z,ChooseSprite3<br />
cp 4<br />
jp z,ChooseSprite4<br />
...<br />
ChooseSprite1<br />
ld hl,Sprite1<br />
jp DisplaySprite<br />
ChooseSprite2<br />
ld hl,Sprite2<br />
jp DisplaySprite<br />
ChooseSprite3<br />
ld hl,Sprite3<br />
jp DisplaySprite<br />
ChooseSprite4<br />
ld hl,Sprite4<br />
jp DisplaySprite<br />
...<br />
DisplaySprite<br />
ld bc,(coordinates)<br />
call SpriteRoutine<br />
</nowiki><br />
</td><br />
<td><br />
<nowiki><br />
ld a,(SpriteNumber)<br />
add a,a ; a*2<br />
ld h,0 <br />
ld l,a <br />
ld de,SpriteAddressLUT<br />
add hl,de<br />
ld a,(hl)<br />
inc hl<br />
ld h,(hl)<br />
ld l,a<br />
ld bc,(coordinates)<br />
call SpriteRoutine<br />
...<br />
SpriteAddressLUT<br />
.dw Sprite1<br />
.dw Sprite2<br />
.dw Sprite3<br />
.dw Sprite4<br />
</nowiki><br />
</td><br />
</tr><br />
</table><br />
<br />
And this one :<br />
<table border="1" cellpadding="2"><br />
<tr><th>Without</th><th>With</th></tr><br />
<tr><br />
<td><br />
<nowiki><br />
ld a,(MenuChoice)<br />
cp 1<br />
jp z,Choice1<br />
cp 2<br />
jp z,Choice2<br />
cp 3<br />
jp z,Choice3<br />
cp 4<br />
jp z,Choice4<br />
...<br />
</nowiki><br />
</td><br />
<td><br />
<br />
<nowiki><br />
ld a,(MenuChoice)<br />
add a,a ; a*2<br />
ld h,0<br />
ld l,a<br />
ld de,CodeBranchLUT<br />
add hl,de<br />
ld a,(hl)<br />
inc hl<br />
ld h,(hl)<br />
ld l,a<br />
jp (hl)<br />
...<br />
CodeBranchLUT<br />
.dw Choice1<br />
.dw Choice2<br />
.dw Choice3<br />
.dw Choice4<br />
</nowiki><br />
</td><br />
</tr><br />
</table><br />
{{stub}}</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=Talk:Z80_Good_Programming_PracticesTalk:Z80 Good Programming Practices2006-09-24T18:30:11Z<p>Burntfuse: </p>
<hr />
<div>To be honest this article is questionable in its function, as "good practices" is relative per situation. The examples given are bad examples when to do what is suggested. Further there isn't much substance here and it's poorly defined what would belong here. A programming guide would be a better idea than this. --[[User:Jim e|Jim e]] 12:20, 20 September 2006 (PDT)<br />
:Well I agree that the title may be misleading, but I think that for the most part the content would be ok for a sort of "programming tips" section of a larger programming guide. In any case, feel free to add/change as you see fit. --[[User:Dan Englender|Dan Englender]] 12:56, 20 September 2006 (PDT)<br />
::Yeah, some of the stuff (like the section on lookup tables) should say when it's more efficient to use it and when it's not (with only a few options and sequential numbers, dec a / jp z,X / dec a / jp z,Y... would be more efficient), but the idea is good. --[[User:Burntfuse|burntfuse]] 11:30, 24 September 2006 (PDT)</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=83Plus:Basic:Graphics:DrawInv83Plus:Basic:Graphics:DrawInv2006-09-24T18:26:12Z<p>Burntfuse: Cleaned up to match template</p>
<hr />
<div>[[Category:83Plus:Basic:Graphics|DrawInv]]<br />
<br />
== Synopsis ==<br />
'''Token size:''' ?<br />
<br />
'''Syntax:''' DrawInv ''function''<br />
<br />
Draws the inverse of a function.<br />
<br />
== Outputs: ==<br />
<br />
The inverse of ''function'' (''function'' with the X and Y values switched) is drawn on the graph screen.<br />
<br />
== Comments ==<br />
<br />
*''function'' can be either a function specified directly (such as 3X^2) or one of the graph functions (such as Y3)<br />
<br />
== Example ==<br />
<br />
Draws a parabola starting at (0,0) and moving off to the right:<br />
<br />
:DrawInv X^2<br />
<br />
== See also: ==<br />
<br />
[[83Plus:Basic:Graphics:DrawF|DrawF]]</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=83Plus:Basic:Graphics:Shade(83Plus:Basic:Graphics:Shade(2006-09-18T20:29:02Z<p>Burntfuse: Cleaned up to match template, added some info about patterns</p>
<hr />
<div>[[Category:83Plus:Basic:Graphics|Shade(]]<br />
<br />
== Synopsis ==<br />
'''Token size:''' 1 byte<br />
<br />
'''Syntax:''' Shade(''lower_equation'',''upper equation''[,left_x_limit,right_x_limit[,pattern,pixel_frequency]])<br />
<br />
Shades in an area between two equations.<br />
<br />
== Outputs: ==<br />
<br />
The area between ''lower_equation'' and ''upper_equation'' is shaded on the graph screen. The width can be specified with ''left_x_limit'' and ''right_x_limit''. ''pattern'' and ''pixel_frequency'' can also be supplied to control the pattern used for shading.<br />
<br />
Patterns are:<br />
* 1: vertical<br />
* 2: horizontal<br />
* 3: slanted (top left to bottom right)<br />
* 4: slanted (bottom left to top right)<br />
<br />
== Comments ==<br />
<br />
* If ''left_x_limit'' and ''right_x_limit'' are left out, the entire area on the screen between the equations is filled<br />
* Both equations are drawn on the graph screen along with the shading<br />
* ERR:DOMAIN if ''pattern'' isn't a valid pattern number or ''pixel_frequency'' is too large<br />
* If ''pattern'' and ''pixel_frequency'' are left out, the area will be filled with solid black<br />
<br />
== Examples ==<br />
<br />
To make a sort of Star Trek: Voyager logo:<br />
<br />
:Shade(&minus;X^2-2,&minus;X^2+7,&minus;10,10,3,2</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=83Plus:Basic:Graphics:DrawF83Plus:Basic:Graphics:DrawF2006-09-18T20:15:56Z<p>Burntfuse: Cleaned up to match template</p>
<hr />
<div>[[Category:83Plus:Basic:Graphics|DrawF]]<br />
<br />
== Synopsis ==<br />
'''Token size:''' 1 byte<br />
<br />
'''Syntax:''' DrawF ''function''<br />
<br />
Draws the graph of a function.<br />
<br />
== Outputs: ==<br />
<br />
''function'' is drawn on the graph screen.<br />
<br />
== Comments ==<br />
<br />
*Number of Y= variables doesn't matter<br />
*Input may use any variables used in Y= functions<br />
<br />
== Examples ==<br />
To draw the graph of sin(x):<br />
<nowiki><br />
ClrDraw<br />
DrawF sin(x)</nowiki><br />
<br />
To graph a function involving multiple user supplied variables:<br />
<nowiki><br />
Prompt A,B,C<br />
DrawF Alog(B)+C<br />
Pause</nowiki></div>Burntfusehttps://wikiti.brandonw.net/index.php?title=83Plus:Basic:Graphics:Vertical83Plus:Basic:Graphics:Vertical2006-09-16T23:25:30Z<p>Burntfuse: Cleaned up formatting to match template</p>
<hr />
<div>[[Category:83Plus:Basic:Graphics|Vertical]]<br />
<br />
== Synopsis ==<br />
'''Token size:''' 1 byte<br />
<br />
'''Syntax:''' Vertical ''x''<br />
<br />
Draws a vertical line.<br />
<br />
== Outputs: ==<br />
<br />
A vertical line with an x-coordinate of ''x'' is drawn across the graph screen.<br />
<br />
== Comments ==<br />
<br />
*Coordinate is defined by window settings, not by pixels<br />
*Will throw no ERR:DOMAINs<br />
*Functions, plots, and axes are not redrawn.<br />
<br />
== Examples ==<br />
Draw a vertical line at ~pi:<br />
<br />
:Vertical 3.1415956535897932384626433<br />
<br />
== See also: ==<br />
[[83Plus:Basic:Graphics:Line(|Line]]<br /><br />
[[83Plus:Basic:Graphics:Horizontal|Horizontal]]</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=83Plus:Basic:Graphics:Horizontal83Plus:Basic:Graphics:Horizontal2006-09-16T23:22:51Z<p>Burntfuse: Cleaned up formatting to match template</p>
<hr />
<div>[[Category:83Plus:Basic:Graphics|Horizontal]]<br />
<br />
== Synopsis ==<br />
'''Token size:''' 1 byte<br />
<br />
'''Syntax:''' Horizontal ''y''<br />
<br />
Draws a horizontal line.<br />
<br />
== Outputs: ==<br />
<br />
A horizontal line with a y-coordinate of ''y'' is drawn across the graph screen.<br />
<br />
== Comments ==<br />
<br />
*Coordinate is defined by window settings, not by pixels<br />
*Will throw no ERR:DOMAINs<br />
*Functions, plots, and axes are not redrawn.<br />
<br />
== Examples ==<br />
Draw a horizontal line at ~pi:<br />
<br />
:Horizontal 3.1415956535897932384626433<br />
<br />
== See also: ==<br />
[[83Plus:Basic:Graphics:Line(|Line]]<br /><br />
[[83Plus:Basic:Graphics:Vertical|Vertical]]</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=83Plus:Basic:Graphics:Line(83Plus:Basic:Graphics:Line(2006-09-16T23:20:35Z<p>Burntfuse: Cleaned up formatting to match template</p>
<hr />
<div>[[Category:83Plus:Basic:Graphics|Line(]]<br />
<br />
== Synopsis ==<br />
'''Token size:''' 1 byte<br />
<br />
'''Syntax:''' Line(''x1'',''y1'',''x2'',''y2'',[drawmode])<br />
<br />
Draws or erases a line.<br />
<br />
== Outputs: ==<br />
<br />
The line defined by (''x1'', ''y1''), (''x2'', ''y2'') is drawn to the graph screen is drawn, if drawmode is 1, or erased, if drawmode is 0. If omitted, drawmode is assumed to be 1.<br />
<br />
== Comments ==<br />
<br />
*Endpoint coordinates are those defined by window settings, not by pixels<br />
*Will throw no ERR:DOMAINs<br />
*Functions, plots, and axes are not redrawn.<br />
<br />
== Examples ==<br />
To draw a line from the top left corner of the screen to the bottom right corner, wait, then erase it:<br />
<br />
:Line(Xmin,Ymax,Xmax,Ymin)<br />
:Pause<br />
:Line(Xmin,Ymax,Xmax,Ymin,0)<br />
<br />
Draw a "unit square" centered at the origin:<br />
<br />
:Line(1,1,-1,1)<br />
:Line(-1,1,-1,-1)<br />
:Line(-1,-1,1,-1)<br />
:Line(1,-1,1,1)<br />
<br />
== See also: ==<br />
[[83Plus:Basic:Graphics:Horizontal|Horizontal]]<br /><br />
[[83Plus:Basic:Graphics:Vertical|Vertical]]</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=83Plus:Basic:Graphics:ClrDraw83Plus:Basic:Graphics:ClrDraw2006-09-16T23:14:25Z<p>Burntfuse: Cleaned up formatting to match template</p>
<hr />
<div>[[Category:83Plus:Basic:Graphics|ClrDraw]]<br />
<br />
== Synopsis ==<br />
'''Token size:''' 1 byte<br />
<br />
'''Syntax:''' ClrDraw<br />
<br />
Clears all text from the graph screen<br />
<br />
== Outputs: ==<br />
<br />
Clears graph screen and graph buffer.<br />
<br />
== Comments ==<br />
<br />
* If any functions, plots, or axes are on, they will be redrawn.<br />
<br />
== Example ==<br />
<br />
:ClrDraw<br />
:[[83Plus:Basic:Graphics:Text(|Text(]]0,0,"Hello World!!!"<br />
<br />
== See also: ==<br />
[[83Plus:Basic:Graphics:ClrHome|ClrHome]]</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=83Plus:Basic:Graphics:ClrHome83Plus:Basic:Graphics:ClrHome2006-09-16T23:12:55Z<p>Burntfuse: Cleaned up formatting to match template</p>
<hr />
<div>[[Category:83Plus:Basic:Graphics|ClrHome]]<br />
<br />
== Synopsis ==<br />
'''Token size:''' 1 byte<br />
<br />
'''Syntax:''' ClrHome<br />
<br />
Clears all text from the homescreen.<br />
<br />
== Outputs: ==<br />
<br />
Clears homescreen and text shadow.<br />
<br />
== Comments ==<br />
<br />
* This command also resets the cursor position to the top left corner of the screen.<br />
<br />
== Example ==<br />
<br />
:ClrHome<br />
:Disp "Hello World!!!"<br />
<br />
== See also: ==<br />
[[83Plus:Basic:Graphics:ClrDraw|ClrDraw]]</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=83Plus:Basic:Graphics:Output(83Plus:Basic:Graphics:Output(2006-09-16T23:05:26Z<p>Burntfuse: Cleaned up formatting to match template</p>
<hr />
<div>[[Category:83Plus:Basic:Graphics|Output]]<br />
<br />
== Synopsis ==<br />
'''Token size:''' 1 byte<br />
<br />
'''Syntax:''' Output(''row'',''col'',''value'')<br />
<br />
Displays a value or text on the homescreen, at the position specified by ''row'' and ''col''.<br />
<br />
== Outputs: ==<br />
<br />
''value'' will be displayed at (''col'', ''row''), where ''row'' is an integer value from 1-8, and ''col'' is an integer value from 1-16. <br />
<br />
''value'' can be a string, a list, a variable, or a matrix. If the contents of ''value'' doesn't fit on the current line, it will start at the beginning of the next line, unless it already is at the bottom of the screen.<br />
<br />
== Comments ==<br />
<br />
*STO (->) cannot be displayed in a string with Output.<br />
*The double quote (") cannot be displayed with Output, as it always is treated as a string deliminer.<br />
*The ending parenthesis ) isn't needed, and can be left out to save a byte.<br />
*As always when working with a string, the ending quote " isn't needed if nothing else is to follow before a newline, and can be left out to save a byte.<br />
*Does not affect where the next [[83Plus:Basic:Graphics:Disp|Disp]] command puts text<br />
<br />
== Example ==<br />
<br />
:Output(1,1,"wikiTI rocks<br />
:3->A<br />
:Output(2,1,A<br />
<br />
== See also: ==<br />
[[83Plus:Basic:Graphics:Disp|Disp]]</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=83Plus:Basic:Graphics:Disp83Plus:Basic:Graphics:Disp2006-09-16T23:01:40Z<p>Burntfuse: Cleaned up formatting to match template</p>
<hr />
<div>[[Category:83Plus:Basic:Graphics|Disp]]<br />
<br />
== Synopsis ==<br />
'''Token size:''' 1 byte<br />
<br />
'''Syntax:''' Disp ''value1'',''value2'',...<br />
<br />
Displays a sequence of values or text on the homescreen.<br />
<br />
== Outputs: ==<br />
<br />
''value1'', ''value2'', etc. will be displayed at the current value of ([[83Plus:RAM:844B|curRow]]). ([[83Plus:RAM:844B|curRow]]) is then increased. If ([[83Plus:RAM:844B|curRow]]) is 7, the screen will shift up instead up increasing ([[83Plus:RAM:844B|curRow]]).<br />
<br />
Each argument can be a string, a variable, a matrix or a list. If the value is a string, then it will be aligned to the left. If it's a variable, matrix or list, then it will be displayed aligned to the right. <br />
<br />
If a matrix or list has too many elements to show on the screen at once, (...) will be shown, but you cannot scroll through the list. Use [[83Plus:Basic:Graphics:Pause|Pause &lt;value&gt;]] if you want to be able to scroll to the list.<br />
<br />
== Comments ==<br />
<br />
*STO (->) cannot be displayed in a string with Disp.<br />
*The double quote (") cannot be displayed with Disp, as it always is treated as a string deliminer.<br />
*As always when working with a string, the ending quote " isn't needed if nothing else is to follow before a newline, and can be left out to save a byte.<br />
<br />
== Example ==<br />
<br />
:Disp "string",5,{1,2,3},<nowiki>[[3,3][3,3]]</nowiki><br />
:Disp Str1,A,L1,[A]<br />
<br />
== See also: ==<br />
[[83Plus:Basic:Graphics:Pause|Pause]]</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=Basic_TemplateBasic Template2006-09-16T22:58:17Z<p>Burntfuse: </p>
<hr />
<div>'''Note:''' Do not take the information on this template page as actual documentation!<br />
<br />
BASIC commands are organized by category (the available ones are shown on the 83+ BASIC page, but you can create a new one if completely necessary). Remember to put this at the top of the page, replacing "FunctionCategory" and "FunctionName" with the category and name of the function:<br />
<nowiki>[[Category:83Plus:Basic:FunctionCategory:FunctionName]]</nowiki><br />
<br />
Required arguments to the function should be in italics, and optional arguments should be enclosed in square brackets, with a vertical bar to show alternate options. If this sounds confusing, see the template for an example.<br />
<br />
----<br />
<br />
<br />
== Synopsis ==<br />
'''Token size:''' 3 bytes<br />
<br />
'''Syntax:''' NewFunc ''required_arg'' [optional_arg1 | optional_arg2 | arg_list_1,arg_list_2,...]<br />
<br />
Short one-line description.<br />
<br />
== Outputs: ==<br />
<br />
A more detailed description goes here, describing the results of the function.<br />
<br />
== Comments ==<br />
<br />
*Something to watch out for.<br />
*Another quick tip.<br />
<br />
== Example ==<br />
<br />
:NewFunc 1,2<br />
:NewFunc 83,"A","B"<br />
<br />
== See also: ==<br />
<br />
[[83Plus:Basic:FunctionCategory:NewFunc2|NewFunc2]]</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=Basic_TemplateBasic Template2006-09-16T22:53:56Z<p>Burntfuse: Changed 'token contents' to 'token size'</p>
<hr />
<div>'''Note:''' Do not take the information on this template page as actual documentation!<br />
<br />
BASIC commands are organized by category (the available ones are shown on the 83+ BASIC page, but you can create a new one if completely necessary). Remember to put this at the top of the page, replacing "FunctionCategory" and "FunctionName" with the category and name of the function:<br />
<nowiki>[[Category:83Plus:Basic:FunctionCategory:FunctionName]]</nowiki><br />
<br />
Required arguments to the function should be in italics, and optional arguments should be enclosed in square brackets, with a vertical bar to show alternate options. If this sounds confusing, see the template for an example.<br />
<br />
----<br />
<br />
<br />
== Synopsis ==<br />
'''Size of token:''' 3 bytes<br />
<br />
'''Syntax:''' NewFunc ''required_arg'' [optional_arg1 | optional_arg2 | arg_list_1,arg_list_2,...]<br />
<br />
Short one-line description.<br />
<br />
== Outputs: ==<br />
<br />
A more detailed description goes here, describing the results of the function.<br />
<br />
== Comments ==<br />
<br />
*Something to watch out for.<br />
*Another quick tip.<br />
<br />
== Example ==<br />
<br />
:NewFunc 1,2<br />
:NewFunc 83,"A","B"<br />
<br />
== See also: ==<br />
<br />
[[83Plus:Basic:FunctionCategory:NewFunc2|NewFunc2]]</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=Category_talk:83Plus:Basic:GraphicsCategory talk:83Plus:Basic:Graphics2006-09-13T21:26:36Z<p>Burntfuse: </p>
<hr />
<div>== Cleanup ==<br />
<br />
Maybe there should have a template for BASIC commands? All the ones in this category except DrawInv and Pen already follow one, but it might as well be official. IMHO we also need some kind of standard for the arguments. Some use []s around arguments, some use ()s, some just type them out, some are in italics... It would really help to put some kind of order to this and have a guide to reading these on the BASIC page, for example showing that [] is optional, () means it's required, etc. Anyone else have ideas on this?<br />
<br />
[[User:Burntfuse|burntfuse]]<br />
: A template sounds like a good idea to me. Many of us here aren't big BASIC programmers so we might not be experts on what exactly should go in that template, but if you create it I'd be happy to look it over. --[[User:Dan Englender|Dan Englender]] 13:04, 4 September 2006 (PDT)<br />
<br />
:: OK, I was thinking of something like what was already there for Disp (since I don't know a whole lot about BASIC either). Stupid question, but where should I put the template? [[User:Burntfuse|burntfuse]]<br />
::: [[Basic_Template]] sounds like a good place to me. By the way, ignore me if you've just chosen not to use it, but in case you hadn't discovered it yet, you can use <nowiki>~~~~</nowiki> (four tildes) to insert a signature/timestamp without having to type it out yourself. --[[User:Dan Englender|Dan Englender]] 20:17, 8 September 2006 (PDT)<br />
:::: Heh, thanks. I looked through the wiki help but could only find the three tildes. The template's up now. --[[User:Burntfuse|burntfuse]] 12:37, 9 September 2006 (PDT)<br />
::::: Looks good to me, except it's not clear to me what the "Token: 03 81 C6" part is for? Is that the actual value of the token representing that command? If so, I don't think that's anything the most TI-BASIC would need, is it? Perhaps the size of the token (as listed on at least one other BASIC page I saw) would be more useful? Thanks for helping out! --[[User:Dan Englender|Dan Englender]] 15:28, 9 September 2006 (PDT)<br />
:::::: You're right, that probably would be more useful to BASIC programmers who want to save space, while the only people who would want to know the actual values of the tokens would be assembly programmers trying to interface with BASIC or something. When I get a chance I'll start converting the existing stuff over to the new template. --[[User:Burntfuse|burntfuse]] 14:26, 13 September 2006 (PDT)</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:450A83Plus:BCALLs:450A2006-09-09T20:08:37Z<p>Burntfuse: </p>
<hr />
<div>[[Category:83Plus:BCALLs:By Name|PutS]]<br />
[[Category:83Plus:BCALLs:By Name:Text|PutS]]<br />
[[Category:83Plus:BCALLs:By Address|450A - PutS]]<br />
<br />
== Synopsis ==<br />
'''Official Name:''' PutS<br />
<br />
'''BCALL Address:''' 450A<br />
<br />
Displays a string on the screen in the large font.<br />
<br />
=== Inputs ===<br />
* ([[83Plus:RAM:844B|curRow]], [[83Plus:RAM:844C|curCol]]): Position on screen of first character<br />
* HL: Zero-terminated string<br />
<br />
=== Outputs ===<br />
* String displayed on screen<br />
* HL points to character after terminating zero of string<br />
<br />
=== Destroys ===<br />
?<br />
<br />
== Comments ==<br />
Since HL points to the character after the terminating zero of the string when the call is finished, you can put multiple strings in a row and display them all with calls to PutS. See the example.<br />
<br />
== Example ==<br />
ld hl,0<br />
ld (curRow),hl<br />
ld hl,string1<br />
BCALL(PutS)<br />
BCALL(PutS) ;hl points to string2 at this point<br />
BCALL(PutS) ;hl points to string3 at this point<br />
ret<br />
<br />
string1: .db "This is a string ",0<br />
string2: .db "This is another string ",0<br />
string3: .db "Yet another string...",0<br />
<br />
All three strings will be displayed in order, starting from the top-left corner of the screen.</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=Category_talk:83Plus:Basic:GraphicsCategory talk:83Plus:Basic:Graphics2006-09-09T19:37:51Z<p>Burntfuse: </p>
<hr />
<div>== Cleanup ==<br />
<br />
Maybe there should have a template for BASIC commands? All the ones in this category except DrawInv and Pen already follow one, but it might as well be official. IMHO we also need some kind of standard for the arguments. Some use []s around arguments, some use ()s, some just type them out, some are in italics... It would really help to put some kind of order to this and have a guide to reading these on the BASIC page, for example showing that [] is optional, () means it's required, etc. Anyone else have ideas on this?<br />
<br />
[[User:Burntfuse|burntfuse]]<br />
: A template sounds like a good idea to me. Many of us here aren't big BASIC programmers so we might not be experts on what exactly should go in that template, but if you create it I'd be happy to look it over. --[[User:Dan Englender|Dan Englender]] 13:04, 4 September 2006 (PDT)<br />
<br />
:: OK, I was thinking of something like what was already there for Disp (since I don't know a whole lot about BASIC either). Stupid question, but where should I put the template? [[User:Burntfuse|burntfuse]]<br />
::: [[Basic_Template]] sounds like a good place to me. By the way, ignore me if you've just chosen not to use it, but in case you hadn't discovered it yet, you can use <nowiki>~~~~</nowiki> (four tildes) to insert a signature/timestamp without having to type it out yourself. --[[User:Dan Englender|Dan Englender]] 20:17, 8 September 2006 (PDT)<br />
:::: Heh, thanks. I looked through the wiki help but could only find the three tildes. The template's up now. --[[User:Burntfuse|burntfuse]] 12:37, 9 September 2006 (PDT)</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=Basic_TemplateBasic Template2006-09-09T19:37:48Z<p>Burntfuse: </p>
<hr />
<div>'''Note:''' Do not take the information on this template page as actual documentation!<br />
<br />
BASIC commands are organized by category (the available ones are shown on the 83+ BASIC page, but you can create a new one if completely necessary). Remember to put this at the top of the page, replacing "FunctionCategory" and "FunctionName" with the category and name of the function:<br />
<nowiki>[[Category:83Plus:Basic:FunctionCategory:FunctionName]]</nowiki><br />
<br />
Required arguments to the function should be in italics, and optional arguments should be enclosed in square brackets, with a vertical bar to show alternate options. If this sounds confusing, see the template for an example.<br />
<br />
----<br />
<br />
<br />
== Synopsis ==<br />
'''Token:''' 03 81 C6<br />
<br />
'''Syntax:''' NewFunc ''required_arg'' [optional_arg1 | optional_arg2 | arg_list_1,arg_list_2,...]<br />
<br />
Short one-line description.<br />
<br />
== Outputs: ==<br />
<br />
A more detailed description goes here, describing the results of the function.<br />
<br />
== Comments ==<br />
<br />
*Something to watch out for.<br />
*Another quick tip.<br />
<br />
== Example ==<br />
<br />
:NewFunc 1,2<br />
:NewFunc 83,"A","B"<br />
<br />
== See also: ==<br />
<br />
[[83Plus:Basic:FunctionCategory:NewFunc2|NewFunc2]]</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=Category_talk:83Plus:Basic:GraphicsCategory talk:83Plus:Basic:Graphics2006-09-09T01:34:57Z<p>Burntfuse: </p>
<hr />
<div>== Cleanup ==<br />
<br />
Maybe there should have a template for BASIC commands? All the ones in this category except DrawInv and Pen already follow one, but it might as well be official. IMHO we also need some kind of standard for the arguments. Some use []s around arguments, some use ()s, some just type them out, some are in italics... It would really help to put some kind of order to this and have a guide to reading these on the BASIC page, for example showing that [] is optional, () means it's required, etc. Anyone else have ideas on this?<br />
<br />
[[User:Burntfuse|burntfuse]]<br />
: A template sounds like a good idea to me. Many of us here aren't big BASIC programmers so we might not be experts on what exactly should go in that template, but if you create it I'd be happy to look it over. --[[User:Dan Englender|Dan Englender]] 13:04, 4 September 2006 (PDT)<br />
<br />
:: OK, I was thinking of something like what was already there for Disp (since I don't know a whole lot about BASIC either). Stupid question, but where should I put the template? [[User:Burntfuse|burntfuse]]</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=Category_talk:83Plus:Basic:GraphicsCategory talk:83Plus:Basic:Graphics2006-09-03T15:17:18Z<p>Burntfuse: Sorry yet again, cleaned up signature</p>
<hr />
<div><br />
== Cleanup ==<br />
<br />
Maybe there should have a template for BASIC commands? All the ones in this category except DrawInv and Pen already follow one, but it might as well be official. IMHO we also need some kind of standard for the arguments. Some use []s around arguments, some use ()s, some just type them out, some are in italics... It would really help to put some kind of order to this and have a guide to reading these on the BASIC page, for example showing that [] is optional, () means it's required, etc. Anyone else have ideas on this?<br />
<br />
[[User:Burntfuse|burntfuse]]</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=Category_talk:83Plus:Basic:MathCategory talk:83Plus:Basic:Math2006-09-03T15:16:48Z<p>Burntfuse: Sorry yet again, cleaned up signature</p>
<hr />
<div>== Purpose? ==<br />
<br />
What exactly is supposed to go here? Should math-related commands like abs and sin get put as subpages of this one, and basic operators get added to the list?<br />
<br />
[[User:Burntfuse|burntfuse]]</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=Category_talk:83Plus:Basic:MathCategory talk:83Plus:Basic:Math2006-09-03T15:08:54Z<p>Burntfuse: </p>
<hr />
<div>== Purpose? ==<br />
<br />
What exactly is supposed to go here? Should math-related commands like abs and sin get put as subpages of this one, and basic operators get added to the list?<br />
<br />
[[User|Burntfuse]]</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=83Plus:Basic:Graphics:Vertical83Plus:Basic:Graphics:Vertical2006-09-03T15:01:49Z<p>Burntfuse: </p>
<hr />
<div>[[Category:83Plus:Basic:Graphics|Vertical]]<br />
<br />
== Synopsis ==<br />
'''Token size:''' 1 byte<br />
<br />
'''Syntax:''' Vertical [x]<br />
<br />
Draws a vertical line across the entire screen at X.<br />
<br />
== Outputs: ==<br />
<br />
Line drawn to the graph screen.<br />
<br />
== Comments ==<br />
<br />
*Coordinate is defined by window settings, not by pixels<br />
*Will throw no ERR:DOMAINs<br />
*Functions, plots, and axes are not redrawn.<br />
<br />
== Examples ==<br />
Draw a vertical line at ~pi:<br />
<br />
:Vertical 3.1415956535897932384626433<br />
<br />
== See also: ==</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=83Plus:Basic:Graphics:Horizontal83Plus:Basic:Graphics:Horizontal2006-09-03T15:01:05Z<p>Burntfuse: </p>
<hr />
<div>[[Category:83Plus:Basic:Graphics|Horizontal]]<br />
<br />
== Synopsis ==<br />
'''Token size:''' 1 byte<br />
<br />
'''Syntax:''' Horizontal [y]<br />
<br />
Draws a horizontal line across the entire screen at Y.<br />
<br />
== Outputs: ==<br />
<br />
Line drawn to the graph screen.<br />
<br />
== Comments ==<br />
<br />
*Coordinate is defined by window settings, not by pixels<br />
*Will throw no ERR:DOMAINs<br />
*Functions, plots, and axes are not redrawn.<br />
<br />
== Examples ==<br />
Draw a horizontal line at ~pi:<br />
<br />
:Horizontal 3.1415956535897932384626433<br />
<br />
== See also: ==</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=Category_talk:83Plus:Basic:GraphicsCategory talk:83Plus:Basic:Graphics2006-09-03T14:58:33Z<p>Burntfuse: /* Cleanup */</p>
<hr />
<div><br />
<br />
== Cleanup ==<br />
<br />
Maybe there should have a template for BASIC commands? All the ones in this category except DrawInv and Pen already follow one, but it might as well be official. IMHO we also need some kind of standard for the arguments. Some use []s around arguments, some use ()s, some just type them out, some are in italics... It would really help to put some kind of order to this and have a guide to reading these on the BASIC page, for example showing that [] is optional, () means it's required, etc. Anyone else have ideas on this?<br />
<br />
burntfuse</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=Category_talk:83Plus:Basic:GraphicsCategory talk:83Plus:Basic:Graphics2006-09-03T14:57:57Z<p>Burntfuse: Cleanup</p>
<hr />
<div><br />
<br />
== Cleanup ==<br />
<br />
Maybe there should have a template for BASIC commands? All the ones in this category except DrawInv and Pen already follow one, but it might as well be official. IMHO we also need some kind of standard for the arguments. Some use []s around arguments, some use ()s, some just type them out, some are in italics... It would really help to put some kind of order to this and have a guide to reading these on the BASIC page, for example showing that [] is optional, () means it's required, etc. Anyone else have ideas on this?</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=Category_talk:83Plus:Basic:GraphicsCategory talk:83Plus:Basic:Graphics2006-09-03T14:57:21Z<p>Burntfuse: Sorry, realized this wasn't the way to add something to the discussion page</p>
<hr />
<div></div>Burntfusehttps://wikiti.brandonw.net/index.php?title=Category_talk:83Plus:Basic:GraphicsCategory talk:83Plus:Basic:Graphics2006-09-03T14:55:33Z<p>Burntfuse: </p>
<hr />
<div>Maybe there should have a template for BASIC commands? All the ones in this category except DrawInv and Pen already follow one, but it might as well be official. IMHO we also need some kind of standard for the arguments. Some use []s around arguments, some use ()s, some just type them out, some are in italics... It would really help to put some kind of order to this and have a guide to reading these on the BASIC page, for example showing that [] is optional, () means it's required, etc. Anyone else have ideas on this?<br />
<br />
-burntfuse</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=83Plus:Basic:Graphics:Pause83Plus:Basic:Graphics:Pause2006-09-03T14:47:55Z<p>Burntfuse: </p>
<hr />
<div>[[Category:83Plus:Basic:Graphics|Pause]]<br />
{{missinfo|Number of bytes for token}}<br />
<br />
== Synopsis ==<br />
'''Token size:''' 1 byte?<br />
<br />
'''Syntax:''' Pause [string]<br />
<br />
Waits for the Enter key to be pressed, optionally displaying a string first.<br />
<br />
== Outputs: ==<br />
<br />
The program will print the string, if present, then stop until the user presses the Enter key.<br />
<br />
== Comments ==<br />
<br />
Using Pause to display a string is the equivalent of:<br />
:Disp [string]<br />
:Pause<br />
<br />
The only difference (besides saving a byte or two) is that values too long to be shown on one line can be scrolled if displayed with Pause, but not if displayed with Disp. For more information about displaying strings, see [[83Plus:Basic:Graphics:Disp|Disp]].</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=83Plus:OS:How_BCALLs_work83Plus:OS:How BCALLs work2006-09-01T21:51:48Z<p>Burntfuse: Cleaned up the wording a bit</p>
<hr />
<div>[[Category:83Plus:OS_Information|How BCALLs work]]<br />
Sorry, this article isn't very well written. It would be good if someone else could maybe look at the TI-OS code a bit and explain this better.<br />
<br />
BCALLs are the way to call TI-OS ROM routines, and also the way that the branch table works in multi-page apps. A BCALL is the RST 28h instruction, followed by a 16-bit number which is used to identify the routine it is calling.<br />
<br />
If the first bit (bit 15) of the number is set, this is what the OS does:<br />
<br />
*It resets bit 15<br />
*It adds 0x4000 to the number<br />
*It maps page 1F/3F/7F* into memory space 4000-7FFF<br />
<br />
Otherwise, if bit 15 is reset and bit 14 is set, this is what the OS does:<br />
<br />
*It resets bit 14<br />
*It adds 0x4000 to the number<br />
*It maps page 1B/3B/7B** into memory space 4000-7FFF<br />
<br />
Otherwise, if bit 15 and 14 are both reset, it is treated as a multipage app branch, which is explained in the TI developer's guide.<br />
<br />
Once the OS has mapped the appropriate page into 4000-7FFF, it uses the number as a pointer to a vector on this page. On pages 1B and 1F there are lists of vectors for the actual ROM routines. Each vector is 3 bytes - the first two bytes are a memory address and the third byte is the page that the routine is on.<br />
<br />
<br />
<br />
<nowiki>*1F for the TI-83 Plus, 3F for the TI-84 Plus and 7F for the TI-83 Plus Silver Edition & the TI-84 Plus Silver Edition.</nowiki><br><br />
<nowiki>**1B for the TI-83 Plus, 3B for the TI-84 Plus and 7B for the TI-83 Plus Silver Edition & the TI-84 Plus Silver Edition.</nowiki><br />
<br />
== See Also ==<br />
* [[83Plus:OS:ROMPage1B|ROM Page 1B]]</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:450483Plus:BCALLs:45042006-08-31T22:27:38Z<p>Burntfuse: Created from copy of PutMap</p>
<hr />
<div>== Synopsis ==<br />
'''Official Name:''' PutC<br />
<br />
'''BCALL Address:''' 4504<br />
<br />
Displays a character on screen in the large font at the current cursor location.<br />
<br />
=== Inputs ===<br />
* A = TI-ASCII code of character to display<br />
<br />
=== Outputs ===<br />
* character at coordinate ([[83Plus:RAM:844B|curRow]], [[83Plus:RAM:844C|curCol]])<br />
<br />
=== Destroys ===<br />
* none<br />
<br />
== Comments ==<br />
This B_CALL is the same as [[83Plus:BCALLs:4501|PutMap]], except that it updates the cursor.<br />
<br />
[[Category:83Plus:BCALLs:By Name|PutC]]<br />
[[Category:83Plus:BCALLs:By Name:Text|PutC]]<br />
[[Category:83Plus:BCALLs:By Address|4504 - PutC]]</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:455E83Plus:BCALLs:455E2006-08-31T22:21:38Z<p>Burntfuse: Created from copy of PutMap</p>
<hr />
<div>== Synopsis ==<br />
'''Official Name:''' VPutMap<br />
<br />
'''BCALL Address:''' 455E<br />
<br />
Displays a character on screen in the small variable-width font at the current cursor location.<br />
<br />
=== Inputs ===<br />
* A = TI-ASCII code of character to display<br />
<br />
=== Outputs ===<br />
* character at coordinate ([[83Plus:RAM:86D8|penRow]], [[83Plus:RAM:86D7|penCol]])<br />
<br />
=== Destroys ===<br />
* none<br />
<br />
== Comments ==<br />
This B_CALL outputs the character stored in A at the current cursor location. Unlike its large-font equivalent [[83Plus:BCALLs:4501|PutMap]], it updates the cursor, and the coordinates are measured in pixels instead of characters and lines.<br />
<br />
== Example ==<br />
Shows &Eacute; in the upper-left hand corner of the screen:<br />
<nowiki>ld a, LcapEAcute<br />
ld hl, $0000<br />
ld (penCol),hl<br />
B_CALL VPutMap</nowiki><br />
<br />
[[Category:83Plus:BCALLs:By Name|VPutMap]]<br />
[[Category:83Plus:BCALLs:By Name:Text|VPutMap]]<br />
[[Category:83Plus:BCALLs:By Address|455E - VPutMap]]</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=Category:83Plus:BasicCategory:83Plus:Basic2006-08-31T21:56:23Z<p>Burntfuse: </p>
<hr />
<div>BASIC is the built-in interpreted language for the TI-83 family. The syntax is similar to the PC version of BASIC, and includes very simple commands for I/O (PRINT, OUTPUT...) and flow control (IF, FOR, WHILE...). The main advantage of writing programs in BASIC is that it is a very high-level language, so programs can be written faster and more easily compared to assembly. The disadvantages are its execution speed (since programs are run by an interpreter) and power (the built-in graphics commands are extremely limited, for example), although some assembly programs, such as Xlib, can provide extra functions like sprite routines for BASIC programs to use. Programs can be created on a desktop computer with TI's Graph Link software or edited on the calculator with the built-in program editor. The manual that comes with the calculator will usually have a reference for all the BASIC commands, but there are also tutorials such as [http://www.ticalc.org/archives/files/fileinfo/290/29088.html this one] or [http://www.ticalc.org/archives/files/fileinfo/137/13770.html this one] which also teach optimization and programming tricks that the manual does not cover.<br />
<br />
{{stub}}<br />
<br />
[[Category:83Plus|Basic]]</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=Category:83Plus:BasicCategory:83Plus:Basic2006-08-31T21:53:54Z<p>Burntfuse: Added a short description</p>
<hr />
<div>BASIC is the built-in interpreted language for the TI-83 family. The syntax is similar to the PC version of BASIC, and includes very simple commands for I/O (PRINT, OUTPUT...) and flow control (IF, FOR, WHILE...). Programs can be created on a desktop computer with software like Graph Link or edited on the calculator with the built-in program editor. The manual that comes with the calculator will usually have a reference for all the BASIC commands, but there are also tutorials such as [http://www.ticalc.org/archives/files/fileinfo/290/29088.html this one] or [http://www.ticalc.org/archives/files/fileinfo/137/13770.html this one] that also teach optimization and tricks that the manual does not cover. The main advantage of writing programs in BASIC is that it is a very high-level language, so programs can be written faster and more easily compared to assembly. The disadvantages are its execution speed (since programs are run by an interpreter) and power (the built-in graphics commands are extremely limited, for example), although some assembly programs, such as Xlib, can provide extra functions like sprite routines for BASIC programs to use.<br />
<br />
{{stub}}<br />
<br />
[[Category:83Plus|Basic]]</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=3D_engines3D engines2006-08-31T21:31:02Z<p>Burntfuse: </p>
<hr />
<div>== Matthew Roberts' ==<br />
by Matthew Roberts<br />
<br />
Info<br />
<br />
[http://www.ticalc.org/archives/files/fileinfo/126/12690.html GlassCars]<br />
[http://www.ticalc.org/archives/files/fileinfo/166/16646.html Coaster]<br />
<br />
Source code not available.<br />
<br />
== Juha3D ==<br />
by Jean Carot<br />
<br />
(link lost (was on the prevous MAxcoderz forum))<br />
<br />
Source code not available.<br />
<br />
== qarnos' ==<br />
<br />
[http://kvince83.tengun.net/maxboard/viewtopic.php?t=1350&start=0]<br />
<br />
Source code available<br />
<br />
== Mach3D ==<br />
by Kevin Harness<br />
<br />
Used in [http://www.ticalc.org/archives/files/fileinfo/272/27287.html Maze 3D]<br />
<br />
Source code available<br />
<br />
{{stub}}</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=Programming_under_Unix-like_operating_systemsProgramming under Unix-like operating systems2006-07-19T00:06:35Z<p>Burntfuse: </p>
<hr />
<div>Here are the different tools at your disposal:<br />
<br />
==Emulators==<br />
* TilEm [http://lpg.ticalc.org/prj_tilem/]<br />
* VTI (with Wine)<br />
<br />
==Syntax coloring==<br />
* 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.<br />
* some editors have an "assembler" syntax coloring that fits quite well (like scite). <br />
* Z80 Assembly IDE (Latest version and forums are [http://www.revsoft.org/phpBB2/viewforum.php?f=25 here]) has simple syntax coloring.<br />
<br />
== Assembling ==<br />
<br />
=== SPASM ===<br />
<br />
'''Author''': Spencer Putt<br />
<br />
'''Home Page''': [http://www.revsoft.org/phpBB2/viewforum.php?f=21 http://www.revsoft.org/phpBB2/viewforum.php?f=21]<br />
<br />
SPASM is a portable Z80 assembler released under the GPL. Its distinguishing features are extremely fast assembly and powerful macro support. The output is only available in binary form, however with the use of [http://www.revsoft.org/phpBB2/viewforum.php?f=23 Wabbitsign], written by James Montelongo and Spencer Putt, it can easily be converted to any desired program type.<br />
<br />
assembler foo.asm foo.bin<br />
wabbit foo.bin foo.8xp<br />
<br />
=== tpasm ===<br />
<br />
'''Author''': Todd Squires<br />
<br />
'''Home page''': [http://www.sqrt.com/ http://www.sqrt.com/]<br />
<br />
tpasm is a Free (GPL) assembler which supports the Z80 as well as the 6805, 6809, 68HC11, 6502, Sunplus, 8051, PIC, and AVR. It uses syntax very similar to ZMASM.<br />
<br />
tpasm 1.2 does not support binary file output, but you can use ''objcopy'' (from the GNU binutils package) to convert its Intel Hex output into binary; e.g.<br />
<br />
tpasm foo.asm -o intel foo.hex -l foo.lst<br />
objcopy -I ihex foo.hex -O binary foo.bin<br />
<br />
=== ASxxxx ===<br />
<br />
'''Author''': Alan R. Baldwin<br />
<br />
'''Home page''': [http://shop-pdp.kent.edu/ashtml/asxxxx.htm http://shop-pdp.kent.edu/ashtml/asxxxx.htm]<br />
<br />
ASxxxx is a freeware assembler which supports the Z80 along with a large variety of other processors. It more closely resembles a modern PC assembler than a typical Z80 assembler, as it assembles each file into a relocatable object format which can then be linked with other files to produce the complete program. The linking is done by a separate program called ASlink (included with the package.)<br />
<br />
To assemble and link a simple program you might do something like<br />
<br />
asz80 -plogff foo.asm<br />
aslink -u -b _CODE=0x9D95 -i foo.ihx foo.rel<br />
objcopy -I ihex foo.ihx -O binary foo.bin<br />
<br />
Note that the syntax is rather different from that of most Z80 assemblers. The important differences are<br />
* Immediate values are marked with #.<br />
* Indexed memory access is written as N(ix) rather than (ix+N).<br />
* Constants are written differently: 0xAA, 0hAA, or $$AA for hexadecimal; 0o252, 0q252, or $&252 for octal; 0b10101010 or $%10101010 for binary.<br />
<br />
For example,<br />
ld hl,#str_hello<br />
add a,3(ix)<br />
xor #0x0f<br />
<br />
There is also a modified version of ASxxxx distributed with the [http://sdcc.sf.net/ Small Device C Compiler]. This version is, if anything, more confusing to use due to the poorly-documented changes made by the SDCC team.<br />
<br />
=== TASM ===<br />
<br />
'''Author''': Thomas N. Anderson<br />
<br />
'''Home page''': [http://home.comcast.net/~tasm/ http://home.comcast.net/~tasm/]<br />
<br />
TASM is a shareware assembler which also supports a variety of processors.<br />
<br />
There are several ways that you can use tasm under Linux:<br />
* The TASM 3.1 for Linux shareware release is still in the wild. To use this you will need to enable "a.out" support in your kernel (it may be available as the module ''binfmt_aout''.) You will also need to obtain the ancient Linux libc version 4 (''not'' glibc) which can be found [http://ftp.linux.org.uk/pub/linux/libc/ here].<br />
* You can use TASM 3.2 for Windows with [http://www.winehq.com Wine].<br />
* You can pay the $40 and compile it yourself on the platform of your choice.<br />
<br />
=== Brass ===<br />
'''Author''': benryves<br />
<br />
'''Home page''' [http://benryves.com/bin/brass/ http://benryves.com/bin/brass/]<br />
<br />
Brass runs under Linux thanks to Mono.<br />
<br />
==Sending programs to the calc==<br />
* TILP<br />
* titranz : commandline tool, only works for TI-83/TI-83+</div>Burntfusehttps://wikiti.brandonw.net/index.php?title=Programming_under_Unix-like_operating_systemsProgramming under Unix-like operating systems2006-07-19T00:04:38Z<p>Burntfuse: </p>
<hr />
<div>Here are the different tools at your disposal:<br />
<br />
==Emulators==<br />
* TilEm [http://lpg.ticalc.org/prj_tilem/]<br />
* VTI (with Wine)<br />
<br />
==Syntax coloring==<br />
* 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.<br />
* some editors have an "assembler" syntax coloring that fits quite well (like scite). <br />
* Z80 Assembly IDE (Latest version and forums are [http://www.revsoft.org/phpBB2/viewforum.php?f=25 here]) has simple syntax coloring.<br />
<br />
== Assembling ==<br />
<br />
=== SPASM ===<br />
<br />
'''Author''': Spencer Putt<br />
<br />
'''Home Page''': [http://www.revsoft.org/phpBB2/viewforum.php?f=21]<br />
<br />
SPASM is a portable Z80 assembler released under the GPL. Its distinguishing features are extremely fast assembly and powerful macro support. The output is only available in binary form, however with the use of [http://www.revsoft.org/phpBB2/viewforum.php?f=23 Wabbitsign], written by James Montelongo and Spencer Putt, it can easily be converted to any desired program type.<br />
<br />
assembler foo.asm foo.bin<br />
wabbit foo.bin foo.8xp<br />
<br />
=== tpasm ===<br />
<br />
'''Author''': Todd Squires<br />
<br />
'''Home page''': [http://www.sqrt.com/ http://www.sqrt.com/]<br />
<br />
tpasm is a Free (GPL) assembler which supports the Z80 as well as the 6805, 6809, 68HC11, 6502, Sunplus, 8051, PIC, and AVR. It uses syntax very similar to ZMASM.<br />
<br />
tpasm 1.2 does not support binary file output, but you can use ''objcopy'' (from the GNU binutils package) to convert its Intel Hex output into binary; e.g.<br />
<br />
tpasm foo.asm -o intel foo.hex -l foo.lst<br />
objcopy -I ihex foo.hex -O binary foo.bin<br />
<br />
=== ASxxxx ===<br />
<br />
'''Author''': Alan R. Baldwin<br />
<br />
'''Home page''': [http://shop-pdp.kent.edu/ashtml/asxxxx.htm http://shop-pdp.kent.edu/ashtml/asxxxx.htm]<br />
<br />
ASxxxx is a freeware assembler which supports the Z80 along with a large variety of other processors. It more closely resembles a modern PC assembler than a typical Z80 assembler, as it assembles each file into a relocatable object format which can then be linked with other files to produce the complete program. The linking is done by a separate program called ASlink (included with the package.)<br />
<br />
To assemble and link a simple program you might do something like<br />
<br />
asz80 -plogff foo.asm<br />
aslink -u -b _CODE=0x9D95 -i foo.ihx foo.rel<br />
objcopy -I ihex foo.ihx -O binary foo.bin<br />
<br />
Note that the syntax is rather different from that of most Z80 assemblers. The important differences are<br />
* Immediate values are marked with #.<br />
* Indexed memory access is written as N(ix) rather than (ix+N).<br />
* Constants are written differently: 0xAA, 0hAA, or $$AA for hexadecimal; 0o252, 0q252, or $&252 for octal; 0b10101010 or $%10101010 for binary.<br />
<br />
For example,<br />
ld hl,#str_hello<br />
add a,3(ix)<br />
xor #0x0f<br />
<br />
There is also a modified version of ASxxxx distributed with the [http://sdcc.sf.net/ Small Device C Compiler]. This version is, if anything, more confusing to use due to the poorly-documented changes made by the SDCC team.<br />
<br />
=== TASM ===<br />
<br />
'''Author''': Thomas N. Anderson<br />
<br />
'''Home page''': [http://home.comcast.net/~tasm/ http://home.comcast.net/~tasm/]<br />
<br />
TASM is a shareware assembler which also supports a variety of processors.<br />
<br />
There are several ways that you can use tasm under Linux:<br />
* The TASM 3.1 for Linux shareware release is still in the wild. To use this you will need to enable "a.out" support in your kernel (it may be available as the module ''binfmt_aout''.) You will also need to obtain the ancient Linux libc version 4 (''not'' glibc) which can be found [http://ftp.linux.org.uk/pub/linux/libc/ here].<br />
* You can use TASM 3.2 for Windows with [http://www.winehq.com Wine].<br />
* You can pay the $40 and compile it yourself on the platform of your choice.<br />
<br />
=== Brass ===<br />
'''Author''': benryves<br />
<br />
'''Home page''' [http://benryves.com/bin/brass/ http://benryves.com/bin/brass/]<br />
<br />
Brass runs under Linux thanks to Mono.<br />
<br />
==Sending programs to the calc==<br />
* TILP<br />
* titranz : commandline tool, only works for TI-83/TI-83+</div>Burntfuse