Re: A83: String output and operations
[Prev][Next][Index][Thread]
Re: A83: String output and operations
In a message dated 12/11/99 1:23:55 PM Central Standard Time,
clarinetlord@yahoo.com writes:
> How do I make system strings (Str1-Str0) in asm? I
> also want to do operations on the strings, like adding
> and extracting subsets. In other words, the equivelant
> of a basic program like this:
>
> :"E"->Str1
> :"0123456789ABCDEF"->Str2
> :Sub(Str2,4,1)+Str1->Str1
> :Disp Str1
> (Output: 3E)
>
> Is this possible to do, or is there somthing different
> I could use that would be faster smaller, etc.
>
> =====
> Cyrus Collier, clarinet lord.
> a.k.a. "The Virus"
It is better to avoid using OS Variables for stuff like this. Instead just
use byte arrays of data that represents string data for you. To do that, you
would have a Label with a ".db" statment, and your values following it, then
a terminating '0' like so...
String1:
.db "E",0
String2:
.db "0123456789ABCDEF",0
String3:
.db 0,0,0,0,0,0,0,0,0,0
I whipped up a routine for substring manipulation:
Substring_Copy:
; Input: HL -> Source String, DE -> Destination String
; B = Position in Source String to Start, C = # of Bytes to Copy
dec b
jr z, Now_Copy_String
Find_Start_Loop:
inc hl
DJNZ Find_Start_Loop
Now_Copy_String:
ld b, 0
LDIR
ld (de), 0
ret
Here is an example on how to use that...
ld hl, String2
ld de, String3
ld bc, 4*256+5
call Substring_Copy
and after that sequence, the memory at the label 'String3' will look like
this:
String3:
.db "34567",0,0,0,0,0
I suggest that you not put your destination string directly in your program
though, incase you accidentally overwrite some data later past the string.
You should put it in Ram instead, and give yourself enough room to work with
like so:
#define TempString Savesscreen+0
#define NextVar Savesscreen+25
And that will open up 25 bytes to store your string data. To display the
string, you would use the _puts or _vputs romcalls. You can learn about how
to do that in the AsmGuru tutorial set or any other tutorial out there. I
hope I could have been of help, cya...
Jason_K