A86: Code question....


[Prev][Next][Index][Thread]

A86: Code question....



Can anyone tell me why this code doesn't do what it's supposed to do?  All it 
does is go straight to "Number is prime." then adds some garbage to the 
screen.......

Glen
tutorial1.cjb.net
#include "Ti86.inc"

.org _asm_exec_ram

	nop
	jp ProgStart
	.dw 0
	.dw ShellTitle

ShellTitle:
	.db "Prime86 ASM",0

ProgStart:
	call _clrLCD
	call _homeup
	ld hl,TX_STR
	call _puts
	ld hl,NUM_PRMPT
	ld de,_ioprompt
	ld bc,13
	ldir
	ld a,210
	ld (N),a
	xor a
	ld (K),a
	ld b,46

LOOP_START:
	ld a,b
	call Initial_Check
	ld a,(A)
	ld l,a
	ld h,0
	ld a,(I)
	call _divHLbyA
	cp 0
	jp COMPOSITE
	jr Initial_Check_2

Initial_Check:
	ld hl,ntilde
	ld e,a
	ld d,0
	add hl,de
	ld a,(hl)
	ld (I),a
	ret

Initial_Check_2:
	ld a,(N)
	call _setxxOP1
	call _FPSQUARE
	call _convOP1
	ld b,a
	ld a,(A)
	cp b
	jp nc,PRIME
	ld a,(A)
	call _setxxOP1
	call _SQROOT
	call _convOP1
	ld (J),a
	ld b,46

LOOP_2_START:
	ld a,b
	push bc
	ld a,(J)
	ld b,a
	call LOOP_3_START
	pop bc
	djnz LOOP_2_START

LOOP_3_START:
	ld a,(I)
	ld c,a
	ld a,(K)
	add a,c
	call _setxxOP1
	ld l,a
	ld h,0
	ld a,(A)
	call _divHLbyA
	cp 0
	jp COMPOSITE
	call SUB_B
	ret

SUB_B:
	ld a,b
	push af
	ld a,(N)
	ld b,a
	pop af
	sub b
	ld (J),a
	ret

PRIME:
	call _clrLCD
	call _homeup
	ld hl,PRIM_TEXT
	call _puts
	jp END_PROG

COMPOSITE:
	ld a,(A)
	ld b,a
	call _convOP1
	cp b
	jp PRIME
	call _clrLCD
	call _homeup
	ld hl,COMPOSITE_TEXT
	call _puts
	jp END_PROG

N:
	.db 0

K:
	.db 0

A:
	.db 0

J:
	.db 0

I:
	.db 0

TX_STR:
	.db "Prime86 ASM"
	.db "v.1 by Darkness"
	.db "Thanx STL,TL,JMO,ABK!",0

PRIM_TEXT:
	.db "Number is prime.",0

COMPOSITE_TEXT:
	.db "Number is not prime.",0


ntilde:
	.db 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,209

NUM_PRMPT:
	"Number: ",0

END_PROG:

.end

Follow-Ups: