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