Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Halifax

Pages: 1 ... 66 67 [68] 69 70 ... 90
1006
Other Calculators / Killerplayer's ASM tutorials
« on: November 27, 2006, 10:13:00 am »
Ok this is Volume 1 Lesson 1 of my EAZYASM tutorials. First off disregard all references to downloading something in the article and just download the things you need from up here. But you NEED to download Assembler, tasm80,tab, ti83plus.inc, and makefile no matter what and put those all in the same directory. And if you are programming for ion then you need ion.inc and if you are programming for mirage then you need mirage.inc

http://www.freewebs.com/omnimaga/assembler.exe

http://www.freewebs.com/omnimaga/ion.inc

http://www.freewebs.com/omnimaga/mirage.inc

http://www.freewebs.com/omnimaga/Tasm80.tab

http://www.freewebs.com/omnimaga/ti83plus.inc

Ok this is Killerplayer's tutorial and it is going to give it to you and I don't care what you think about how I do it. I will do whatever the **** I want and you have to just go with it and trust me ok?. Ok. Now on to the tutorial.

----------------------
Things you should know
----------------------

All code will be put between **************** that
e.g

************************
Assembly code goes here
************************

ok

All explanations of important stuff is put between =====================
e.g

==========================
Important stuff goes here
==========================

and that is all you need to know because the rest is just me explaining things you should know.

All chapters are put in ----------------- that

To the Assembly tutorial

-------------
UNDERSTANDING
-------------

Ok breath a sigh of relief because I am not going to make you setup your own Assembly environment I am going to give it to you. No it is not tasm because TASM sucks and SPASM rocks. The link is below and all you need to do is download and extract it to some place on your computer where you want to use it. To assemble something you right click on the .bat file and switch everything that says "test" with the name of yor sourcefile.

E.g

If I wrote all the code in myprog.z80 I would open up the .bat file and replace everything that says test with myprog and then save and exit. Next I would double click the .bat file and it will bring up a DOS window that tells if you have errors or not.

The screen will look like the if you have named your sourcefile test.z80

=====================================================
assembler test.z80 test.bin
Spencer's Assembler, June 2006
Pass 1 ...
Done.
Pass 2 ...
Done.

wabbit test.bin test.8xp
Picture comes up with credits

test.8xp (xxxx bytes) was successfully generated!
pause
Press any key to continue . . .
=======================================================

This screen will only appear if your source code has compiled correctly.

Ok so that is all you need to know about compiling. On to the next chapter

------------------------------------
Am I developing for a shell or TI-OS
------------------------------------

Ok just some little info is someone says something about "nostub" programming than that means the same as programming for the TI-OS.

Now ask yourself do you want to program for a shell or for the TI-OS

If you are programming for MirageOS or Ion download this.



That include ion.inc and mirageos.inc so you can develop for a shell and also it has ti83plus.inc and you need that if you want to use "bcall()" talked about later.

If you are programming for TI-OS then just delete mirage.inc and ion.inc in the previous link and vola.

now you can't just use ion.inc and expect your program to turn up in MirageOS or Ion because you need a header to make sure the shell sees the program.

Ion header needed
=============================
.nolist
#include ion.inc
#include ti83plus.inc
.list
   .org progstart-2
   .db $BB,$6D
   ret
   jr nc,start_program
   .db "Test",0
start_program:
   your program goes here
.end
END
==============================

Ok so you probaly don't understand that well I am going to break that down so you can understand it by commenting the source. Commenting the source is when you put a ; and then type your comment or explanation after it. You can only put a comment after a ; because that makes the compiler ignore what you write after it. Usually comments are to help you remember what you are doing if you have taken a break.

Ion header revised
==============================
.nolist      ;This tells the compiler not to compile this
#include ion.inc    ;This is needed for Ion programming
#include ti83plus.inc    ;This is need for TI-OS programming and Ion programming
.list    ;This tells the compiler to compile now
   .org progstart - 2    ;this tells the compiler to start at this address
   .db $BB,$6D    ;This is the Asm token "AsmPrgm" and is needed always
   ret    ;this makes Ion detect your program
   jr nc,start_program    ;this tells ion at which label to start at
   .db "Test",0    ; THis is the name that is displayed in Ion
start_program:    ;this is the label where you told Ion to start at
   your program goes here
.end ; tells compiler to stop compiling
END ; ends your program
================================

Ok so you will need to use that if you are programming for Ion. Next we will see what header we use for MirageOS

!!Note that Ion programs are also detect but MOS!!

MirageOS header
=================================
.nolist
#include mirage.inc
#include ti83plus.inc
.list
   .org progstart - 2
   .db $BB,$6D
   ret
   .db 1 ;This makes MirageOS recognizes you program
   .db %00000000,%00000000   ;this is the icon that is displayed by MirageOS
   .db %00000000,%00000000
   .db %00000000,%00000000
   .db %00000000,%00000000
   .db %00000000,%00000000
   .db %00000000,%00000000
   .db %00000000,%00000000
   .db %00000000,%00000000
   .db %00000000,%00000000
   .db %00000000,%00000000
   .db %00000000,%00000000
   .db %00000000,%00000000
   .db %00000000,%00000000
   .db %00000000,%00000000
   .db %00000000,%00000000
Description:
   .db "Test",0 ;This is the description displayed at the bottom of MirageOS
start_program:
   program goes here
.end
END
======================================
Ok so there rele is nothing new there except .db 1 and the icon


TI-OS programming header
======================================
.nolist
#include ti83plus.inc
.list
   .org progstart - 2
   .db $BB,$6D
start_program:
   program goes here
.end
END
=======================================

That is a very simple header right. Ok now you have headers for TI-OS and the two premiere shells for Assembly programs so let's move on now.


!!!Note: From now on if I say use Ion header and write this program that means write whatever is in the code brackets into the program goes here part and the same goes for MirageOS and TI-OS!!!

e.g

If I say

Program: Use Ion Header
************************
   ld a,5
   ld b,5
************************
Then it should look like this

============================
.nolist
#include ion.inc
#include ti83plus.inc
.list
   .org progstart-2
   .db $BB,$6D
   ret
   jr nc,start_program
   .db "Test",0
start_program:
   ld a,5
   ld b,5
.end
END
=============================

Ok now we move on

--------------------------------------
Do I really need to learn some math???
--------------------------------------

Stop your whining it isn't that hard. Haha.

Your going to need to learn some number systems named "Binary" and "Hexadecimal". I am assuming you know deciaml if you understand this number 10243.

Decimal is the everyday number system so I will not explain it to you

Binary is not so let's get to it

=====================
Binary Number: 1101

So what does that equal in our everyday system DECIMAL Killerplayer.

Simply do this

Num. value| 8 | 4 | 2 | 1|
  ________________
Bin. value| 1 | 1 | 0 | 1 |

Ok now let's imagine 1 is on and 0 is off. So that means

Num. value 1 is on
Num. value 2 is off
Num. value 4 is on
Num. value 8 is on

So now let's add up all of the on values

1+4+8 = 13 so that means binary num. 1101 = decimal num. 13

1101 = 13
13 = 1101

Now let's say your decimal number is bigger than four digits like 8 digits

Binary Number: 11010110

Num. vaule| 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
  ______________________________________
Bin. value|  1  |  1 |  0 |  1 | 0 | 1 | 1 | 0 |

Ok now add up all of the on values

11010110 = 214

Ok so if you hadn't notice the num. value multiples itself by 2 as it moves to the left so if you had a 9 digit binary number then the leftmost num. value would = 128X2 and so on.
=============================

Ok so that is it for binary numbers and you should understand that pretty readily. No it is on to hexadecimal.

===============================
Ok Hexadecimal is fairly different because it has 16 numbers hence the "Hexa" prefix.

Hexadecimal "Numbers":
1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

Ok woah Killerplayer you said it was numbers so what does A and B equal

I will explain that...

1=1,2=2,3=3,4=4,5=5,6=6,7=7,8=8,9=9,A=10,B=11,C=12,D=13,E=14,F=15

There you go.

So now let's convert a hexadecimal value to decimal

Hexadecimal Number: 1A3F

Num. value| 4096 | 256 | 16 | 1 |
   ______________________
Hex. value|   1  |  A  |  3 | F |

Ok so the num. value get's multiplied by 16 every time it moves to the left. Now the value in Hex. value position 1 is F. So we will do the following

F=15 so 15*1 = 15
3=3 so 3*16 = 48
A=10 so 10*256 = 2560
1=1 so 1*4096 = 4096

Let's add up all the sums 1A3F = 6719

Hexadecimal is as easy as Binary
====================================

In assembly if you are using a binary number you write %10010101 and if using hex write $1F3A and if you are using decimal there is no prefix.

Ok so this lesson is done let's get as far away as we can from numbers.

--------------------
The registers
--------------------

The registers are used for accessing data and all that great stuff that makes up a program

e.g in BASIC you have vars like the whole alphabet among others but in ASM you have "virtually" 8 registers that you can use.

===============
8 bit registers

A, B, C, D, E, F, H, L, and IX

A is like the multipurpose register that is used for almost everything
B is usually used as an 8 bit counter
C is used for interfracing with hardware ports
F is used for flags
D is multipurpose
E is multipurpose
H is multipurpose
L is multipurpose

16 bit registers

AF, BC, DE, HL, IX

HL is like register A's brother in that it is it's 16 bit counterpart
BC is like register B's brother because it is used as a 16 bit counter
DE holds the memory address of a location e.g. DEstitnation
IX is acceptable anywhere HL is but it is bigger and slower and should only be used when HL is tied up

If you store something in HL you will mess it up if you store something in L or H because 16 bit registers are just 8 bit registers are combined so jsut remember that.
==================

Person: Well how do you get stuff into those registers Killerplayer?
Me: Just use a simple function duh!!
Person: Well I didn't know that you *******
Me: Oh yeah sorry I forgot to explain it let me tell you

There is a little function and possibly the most used in any ASM program and that is

LD

Now for all you BASIC people out there you are familiar with load

====================
5->J in basic is like
source->variable
so in ASM it is
ld a,5
or
ld variable,source
====================

Ok so what are all the functions load can do

loads or ld's functions(imm8 = immediate 8 bit value imm16 = immediate 16 bit value)
====================
ld a,a
ld a,b
ld a,c
ld a,d
ld a,e
ld a,h
ld a,l
ld a,(BC)
ld a,(DE)
ld a,(HL)
ld a,(imm16)
ld a,imm8
ld b,a
ld b,b
ld b,c
ld b,d
ld b,e
ld b,h
ld b,l
ld b,(HL)
ld b,imm8
register C does everything register B does
register D does everything register B does
register E does everything register B does
register H does everything register B does
register L does everything register B does
ld bc,(imm16)
ld bc,imm16
register DE does everything register BC does
register HL does everything register HL does
ld (bc),a
ld (de),a
ld (hl),a
ld (hl),b
ld (hl),c
ld (hl),d
ld (hl),e
ld (hl),h
ld (hl),l
ld (hl),imm8
ld (imm16),a
ld (imm16),bc
ld (imm16),de
ld (imm16),hl
=========================

That is all the things that load could ever do on the TI z80 processor

You don't know what the () means but that doesn't matter right now

examples of what load can d
===========================
ld a,2 store 2 into register a
ld d,b store value in register b to register d
ld ($9240),a store value of register a to memory location
===========================


There is one thing that ld can not do and that is load 16 bit registers into 16 bit registers, but there is a way to do this. Let's say we want to load hl into de. We can't do ld de,hl. We have to do the following.

=========
ld d,h
ld e,l
=========

Ok so what values can these registers hold do they have any limits. Well yes they actually do have some limits 8bit registers can only hold values -255 to 255 and 16bit registers hold values -65536 to 65536.
!!Note registers F and AF cannot be used for ld  or any instructions except a few!!

Ok so we are done with registers right now







ld d,h
ld e,l
=========

Ok so these registers have limits though.

8bit registers can hold values -256 to 256
16bit registers can hold values -65536 to 65536

Now we are done with registers basically

------------------------
Negative Numbers in ASM
------------------------

Negative Numbers are not as hard as some people may lead you to believe.

Let's imagine negative numbers in real life.

-5 = -5 right

well in ASM 0 = 0 and 0 = 256.

So let's say that we store -5 into register A then register A is actually holding

256 - 5 = 251

what happens if you put -5 into hl

65536 - 5 = 65531

so 65531 will be in register HL then

So you will need to know this. When you assemble your programs and compare numbers you can check for -5 by typing -5 but if you display the number on screen in your code and you run the program it will show 251 not -10

Ok well that is the end of Volume 1, Lesson 1 Thanks for checking out my tutorial if you have any questions then just post them. Volume 1, Lesson 2 coming soon



http://www.freewebs.com/omnimaga/make.bat

1007
Other Calc-Related Projects and Ideas / Reign of Ejaran Main
« on: November 27, 2006, 07:48:00 am »
I may be able to use those but I was actually looking for some 16x16 sprites but thanks

1008
Other Calc-Related Projects and Ideas / Reign of Ejaran Main
« on: November 27, 2006, 05:29:00 am »
This one is going find except the walking routine I have the tilemappnig routine working I just don't have tiles. It just shows black white and black bordered squares but that is fine for testing purposes.

1009
News / Vuurrobin RPG update and Spencer's Zelda progress
« on: November 27, 2006, 05:06:00 am »
Yeah I was reading that on revsoft.org. I think Spencer was like a gift from the programming heavens cause that is like amazing.

1010
News / Feb 29th 2006 Omnimaga IRC logs discovered
« on: November 26, 2006, 04:27:00 pm »
O ok nvm and I think the bot post is from Demon because it mentions him and FMR and Nakamuru numerous times

1011
News / Feb 29th 2006 Omnimaga IRC logs discovered
« on: November 26, 2006, 03:27:00 pm »
@rivereye: Atreyu is the name of a band http://www.myspace.com/atreyu but I don't know it may me something in another language

1012
News / Feb 29th 2006 Omnimaga IRC logs discovered
« on: November 26, 2006, 11:27:00 am »
hmm Atreyu(numbers go here) do you actually know of the band

1013
TI Z80 / Profound Darkness
« on: November 25, 2006, 05:04:00 pm »
its not progressing because the matrix detection is beating the crap out of me and I am experimenting with many things in ASM so it is hard to dedicate time to all things but this is not dead it is just a car stalled waiting to start cause I have other projects like ROE and Galactic and TexasGL(3D graphics library hehe)

1014
Other Calc-Related Projects and Ideas / Pyro-Sprite Sprite and Image Editor
« on: November 25, 2006, 05:01:00 pm »
hmm ok cool demon I will be on later to help you and also xlibman people who threatened to do that are ******** because that is like being on Polyphonic digital and then saying that you are going to go to ubisoft o well I will be here til this place shuts down

OMNIMAGA FOREVER

1015
Other Calc-Related Projects and Ideas / Pyro-Sprite Sprite and Image Editor
« on: November 25, 2006, 02:00:00 pm »
Sure I could teach Demon in a private one on one session or something of a sort on mIRC or somewhere else but yes if he wants to then all he needs to do is ask me by putting a post up or sending me a pm because I want to see more people in omnimaga get into ASM

1016
Other Calc-Related Projects and Ideas / Pyro-Sprite Sprite and Image Editor
« on: November 25, 2006, 10:42:00 am »
I think you should give this program some features like Paint and have it like magnify the sprite by 3x and show a thumbnail true size realtime sprite on the right so then paint users can easily adapt and make it quicker when developing on calculator

1017
Other Calc-Related Projects and Ideas / Battle
« on: November 24, 2006, 12:22:00 pm »
No I have done this before in AI and it wasn't deadly slow if you are just using random AI then you can have like a A+(matrix check=(1 or 2)) something like that and it worked fine for me

1018
TI Z80 / Galactic:New Age
« on: November 19, 2006, 11:39:00 am »
Ok this is an update for Galactic that has greyscale sprites and is on my calc even faster.

Important Sttuf:
-Archive all your stuff you need because the quit routnie doesn't work anymore and I can't fix it but I will so for now just pull the batteries that is what I do :)smile.gif
-Don't run this on an emulator but if you do could you take a SS and post it because I couldn't get mines to load the file

Controls:
Up shoots
Left and Right move
My testing environment:
-Real TI-84+
-MOS 1.2
-OS 2.22
-Galactic was placed in RAM

So please post anything you find with it so far and tell me what features later on you will want to see in the game

Download http://www.freewebs.com/omnimaga/template.8xp

1019
TI-BASIC / New Tricks For Pure Basic Coders.
« on: November 17, 2006, 09:38:00 am »
Woah that's pretty sweet and awesome find. These are the kind of advances we need

For the brick wall you could set those -10's to 0's so that half the screen is bricks and that is like a background to a room or something

Another thing is yes I noticed this grayscale bug before and it is like wierd cause if you put that stuff you said for grayscale into the graphing screen and graph it then you'll notice on the last line of vertical pixels that it will be flickerless grayscale which is very wierd

1020
Other Calc-Related Projects and Ideas / Reign of Ejaran Main
« on: November 16, 2006, 03:44:00 pm »
ok now back to the game

Update:
I have finished a tilemapping engine which isn't deadly fast and I am planning on improving. It is just a little something I made in the past 1 1/2 weeks. The engine is bloody hard to make though with the walking and I have been working on that a lot but I can't get it to work uhhhhh frustrating anyways what do you guys want smooth scrolling or once end of map reached switch to appropiate map??

Pages: 1 ... 66 67 [68] 69 70 ... 90