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
>> 
>>
>