Re: A86: Re: [sqrt] program trouble
[Prev][Next][Index][Thread]
Re: A86: Re: [sqrt] program trouble
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
rst 20h
rst 10h ;_findsym
call nc,_exec_basic ;only if program actually exists
End:
cp a ;set z flag
ret ;return
Setting:
.db 18,8,"BlitZÉNT" ;add the type byte for _findsym
code_end:
.end