A86: Re: Re: Input (yes another input question)


[Prev][Next][Index][Thread]

A86: Re: Re: Input (yes another input question)





Do you mean ld (hl),a and ld (ix+x),a?


>
>Yeah, that's the basic idea of a hardwired string input routine.  Though
you
>have to use a pointer to the string with indirection:
>
>KeyLoop:
> ld hl,string                    ; point to string
> call GET_KEY
> ld (string),hl                  ; store to byte 0
> inc hl                             ; next byte
> call GET_KEY
> ld (string),hl                  ; store to byte 1
> inc hl                             ; next byte
> ...
> ld (hl),0                         ; if you wanted to zero-terminate it for
>_puts or whatever
>                                      ; make sure there is an INC HL after
>the last LD (string),HL though....
>
>Another way that would be more similiar to your method (yet slower) would
be
>this:
>
>KeyLoop:
> ld ix,String                 ; point to string
> call GET_KEY
> ld (string+0),a            ; save to byte 0
> call GET_KEY
> ld (string+1),a            ; save to byte 1
> ...
> ld (string+2),a            ; null terminate it (not necessary, but that's
>how to do it)
>
>The differences in this is that HL is used as a pointer in the first one.
>It advances through the string as the characters are entered.  It ends up
>pointing to the end of the string after the routine finishes.  In the
second
>one, IX is used as a base pointer (or index pointer, which is why it is an
>"index register") to the string.  It always points to the base (start) of
>the string.  Using HL has it's advantages when you are just moving through
>data in order, as in this example.  It is faster than indexing
instructions.
>Index registers are better when data must be accessed in a random (but
>predetermined) order.   Self modifying code can be used with these
>instructions to produce some very fast code, however.  But if a structure
is
>being accessed in a non-sequential order only once, it should be rearranged
>so a pointer like HL could be used.  Data should fit the program.
>
>Hope this rant helps...
>
>
>-----Original Message-----
>From: UnEven Software <uneven14@hotmail.com>
>To: assembly-86@lists.ticalc.org <assembly-86@lists.ticalc.org>
>Date: Saturday, October 03, 1998 7:21 PM
>Subject: A86: Input (yes another input question)
>
>
>>
>>After what Dux just said about using .db to input I got to thinking.  I
>>was wondering would this code work for getting a 3 char string?
>>
>>
>>
>>KeyLoop:
>> call GET_KEY
>> ld string+1,a
>> call GET_KEY
>> ld string+2,a
>> call GET_KEY
>> ld string+3,a
>>
>>Other_Code:
>> ......
>>
>>
>>
>>string:
>> .db 0,0,0
>>
>>Wouldn't that work?  Or am I just thinking in another programming
>>language?
>>
>>Just curious,
>>
>>Matt
>>
>>______________________________________________________
>>Get Your Private, Free Email at http://www.hotmail.com
>