Re: A86: Re: [sqrt] program trouble
[Prev][Next][Index][Thread]
Re: A86: Re: [sqrt] program trouble
There are only 2 problems. They are at the end.
>here are some refinements. don't know if they'll help :)
>
>
>#include "ti86asm.inc"
>#include "asm86.h"
>#include "ti86abs.inc"
>
>_exec_basic equ 4c47h ;basic program in OP1
>
>.org _asm_exec_ram
>
> ld hl,$5a92 ;points to [sqrt]key name in memory
> rst 20h ;[sqrt]KEY -> OP1
> rst 10h ;_findsym
> call nc,_delvar ;if prog already exists, delete it
> ld hl, code_end - code_start ;prog length
> call _CREATEPROG ;make program. name already in OP1
> ld a,b ;copy bde
> ex de,hl ;to ahl
> call $4c3f ;ahl += 2
> call _SET_ABS_DEST_ADDR ;set ahl as destination
> xor a ;clear a since ahl is size
> ld hl,code_end - code_start ;size of prog
> call _SET_MM_NUM_BYTES ;set ahl as length
> ld hl,code ;hl points to code (a is already
>0)
> call _SET_ABS_SRC_ADDR ;set ahl as source
> call _mm_ldir ;24 bit ldir
> set 6,(iy+$24) ;enables program
> ret ;quit
>
>code:
>.org _asm_exec_ram-2
>code_start:
>.db $8e,$28 ;define asm token as first prog
bytes
> call $479f ;pop op1 (the calling prog push it)
> bit 4, (iy+18) ;alpha
> ret nz
> cp K_CLEAR ;don't need to call GET_KEY, this prog is with a key already in
>a
> jr nz,End
> ld hl,Setting-1 ;you need the minus 1 to point to the length for
_FINDSYM
> rst 20h
> rst 10h ;_findsym
> call nc,_exec_basic ;only if program actually exists
>End:
> cp a ;set z flag
> ret ;return
>Setting:
> .db 8,"BlitZÉNT" ;You don't need a type byte for _FINDSYM, just the length
>code_end:
>.end
>
______________
JBrett
tbarwick@esn.net
http://ww2.esn.net/~tbarwick
http://members.xoom.com/Plexus