Re: A86: Problem with variables
[Prev][Next][Index][Thread]
Re: A86: Problem with variables
rst x = restart the processor at location x
-----Original Message-----
From: Andy Johnson <the_laser@juno.com>
To: assembly-86@lists.ticalc.org <assembly-86@lists.ticalc.org>
Date: Thursday, January 15, 1998 6:26 PM
Subject: Re: A86: Problem with variables
>
>Thanks for your help. I fixed my error by realizing the 6 needed to go
>in c, not b to work. I only called _delvar once and it seems to work
>just fine.
>
>What is rst?? I'm assuming it's an instruction, but how does it work,
>and what other numbers are valid arguments?
>---
>Andy Johnson
>I think therefore I am, I think
>
>On Thu, 15 Jan 1998 16:46:07 +0000 jima@hTSO01.Cin.IX.NET writes:
>>
>>> This bit of code dosen't work and I can't figure out why. Can
>>anybody
>>> help? The calc freezes in place when the variable exists, and turns
>>off
>>> then freezes when it dosent.
>>>
>>> #include "asm86.h"
>>> #include "ti86asm.inc"
>>> #include "ti86math.inc"
>>> #include "ti86ops.inc"
>>> #include "ti86abs.inc"
>>>
>>> org _asm_exec_ram
>>>
>>> _delvar equ 475Fh
>>> _FINDSYM equ 46CBh
>>>
>>> main:
>> > call _OP1SET0 ; OP1 = 0
>> > ld hl,progname ; Source = progname
>> > ld de,_OP1+1 ; Dest = OP1+1
>> > ld b,6 ; copy 6 bytes
>> > ldir ; copy
>> > call _FINDSYM ; carry flag set if var
>> > dosen't exist, registers
>>
>>There's a simpler way.. Just do this instead of what I indented:
>>
>> ld hl,progname ;point hl to progname
>> rst 20h ;copies (hl) to OP1 but shorter than what you did
>> call _FINDSYM
>>
>>
>>Everything else looks fine.. Also, I tried a similar thing like this
>>but for some reason you had to call _delvar twice for it to work.
>>Anyway, try that
>>
>>> ; set correctly for _delvar
>>> jr c,dosentexist ; if so, quit without doing
>>> anything
>>> call _delvar ; if not, delete it
>>>
>>> dosentexist:
>>> ret ; return to system
>>>
>>> progname:
>>> .db 05h,"ABCDE"
>>>
>>> end
>>
>>
>