RE: A89: hello world
[Prev][Next][Index][Thread]
RE: A89: hello world
I don't know any 68k assembly--that's why I'm on the list. I figured
that maybe I could learn it here. If anyone has the time (and
patience) to possibly e-mail or ICQ) me a short code and what each
thing does, that'll help tremendously.
---Dennis Ng <onpaws@geocities.com> wrote:
>
>
> Woohoo some real code!!!
> okie... let the pro explain...
>
> > Hi, can someone please help me understand this supposedly simple
code?
> > Let me start by stating what I know or what I think I know:
> > ***any help would be greatly appreciated***
> > -thanks-
> > Steven
> >
> > line 1: This does a jump to the utility library in order to clear
> > the screen
> > line 2: This pushes 2 onto the stack
> > line 3: 2 was pushed onto the stack because of the ti rom call
> > FontSetSys:the
> > 2 sets the font to normal size (?). Is a7 used on all rom calls?
> > line 4: Because you pushed 2 onto the stack you must also pop the
> > 2 off the
> > stack: Why does this have to be done? and why can't you just
> > add.w or add.b?
>
> The stack is 32-bit. Thus, you need to move the stack value back 2
> bytes. The stack value is 32-bit, thus use addq.l or add.l
>
> > line 5: This pushes 4 onto the stack
> > line 6: This loads the address of string to the a0 register: what
is the
> > "(pc)" for?
>
> It's the way to show the "absolute" address of the string, so the rom
> call can find directly locate the string.
>
> > line 7: This pushes the address of the string to the stack: what
> > happened to
> > the 4 that was pushed to the stack?
>
> The four is still there...but now it's four bytes below... need me to
> explain stacks?
>
> okie... a little rundown on stacks...
> a7 is just a 32-bit number. there's nothing really important about the
> number. It could
> be $4440 or it could be $3300. However, the value (a7) is most
important.
> Say, for example,
> a7 = $4440, (a7) is the value at $4440. So, when you do -(a7), A7
equals to
> either
> $443E or $443C.
>
> Okie... so how does this mix in? Well, say...
> at line 5, a7 is equal to $4440.
> after line 5, a7 will equal to $443E, and ($443E)= $4, the color
> at line 7, a7 is equal to $443E.
> after line 7, a7 will equal to $443A, and ($443A)= address of the
string.
> at line 8, a7 is equal to $443A,
> after line 8, a7 is equal to $4438, and ($4438) = 0, the horizontal
> position
> at line 9, a7 is equal to $4438
> after line 9, a7 is equal to $4436, and ($4436) = 0, the vertical
> position
> okie, when calling that rom call, a7 is still equal to $4436.
> got that? this is what it looks in RAM
>
> | $4436 | $4438 | $443A | $443C | $443E | $4440 |
> 0000 0000 string address 0004
> vert. horiz. string address color
>
> > line 8: This pushes 0 onto the stack: what happened to the 4 and
> > the address
> > of the string that was previously pushed onto the stack?
> > line 9: This pushes 0 onto the stack again: why is it pushed again?
> > line 10: This does the rom call DrawStrXY which displays the
> > string: maybe i
>
>
>
> > think i know what is going on: the first thing that you need to do
to call
> > this rom call is to push the address onto the stack then you must
> > push the 2
> > coordinates onto the stack:0,0 and the rom call takes care of the
> > rest? But I
> > still don't know where the 4 comes in place.
> > line 11: It says restore the stack pointer...but where does the
> > 10 come from:
> > i only count 4 then 0 then 0 again=4...i don't know how that
> > works. Why do
> > you even have to "restore" the stack...i remember with the z80
> > you didn't HAVE
> > to pop a register back after pushing it?
>
> Okie, so what is a7 after step 10? well, it is $4436, but before we
did
> all this crap, it was $4440. So you subtract... $4440 - $4436 is
equal to
> $0A or #10.
>
> > line 12: this does a jump to the utility library which basically
> > does a loop
> > waiting for a key to be pressed.
> > line 13: returns to the shell when a key is pressed...What other
return
> > statements are there?
>
> that's it... pretty simple stuff... reply if u don't understand or
if other
> ppl don't understand. I like it when we're discussing code, not
concepts...
>
> >
> > _main:
> > ; Execution will start here, at the _main label
> > 1 jsr util::clr_scr ; clear the screen
> > 2 move.w #2,-(a7) ; use font #2 (large font)
> > 3 jsr tios::FontSetSys ; set the font
> > 4 add.l #2,a7 ; clean up the stack
> > 5 move.w #4,-(a7) ; move the first param to the
stack
> > 6 lea string(pc),a0 ; move adress of string to
the stack
> > 7 move.l a0,-(a7)
> > 8 move.w #0,-(a7) ; push position
> > 9 move.w #0,-(a7) ; push position
> > 10 jsr tios::DrawStrXY ; call the DrawStrXY ROM
function
> > 11 add.l #10,a7 ; restore the stack pointer
> > 12 jsr util::idle_loop ; library routine which waits
> > until a key
> > ; is pressed.
> > 13 rts
> >
> > string:
> > dc.b "Hello, World!",0
> > _comment:
> > dc.b "Hello World example",0
> >
> > end
> >
>
>
==
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
| Jeremy Moore |
| senoramor@yahoo.com |
| ICQ: #18766049 |
| http://fly.to/favelinks |
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
"Did somebody say McDonald's?" NO! No one said it! Sheesh!
_________________________________________________________
DO YOU YAHOO!?
Get your free @yahoo.com address at http://mail.yahoo.com