;Z-80 Highest Factor Program
;Donn Stewart
;2/22/03
.org 0800h ;Start of RAM--load program here.
strt in a,(0) ;Get number to factor from input port 0
ld (original_number),a ;Store it
ld (test_factor),a ;Use it as the initial test_factor
loop1 ld a,(test_factor) ;Main loop of program
dec a ;Make new test_factor by decrementing
jr z,end ;If zero, quit (all done)
ld (test_factor),a ;If not, store and test
ld b,a ;Put test_factor in reg b
ld a,(original_number);Put original_number in reg a
loop2 sub b ;Test by subtracting repeatedly
jr z,end ;Exact factor--zero result
jr nc,loop2 ;Result non-negative, keep trying
jr loop1 ;Result negative, not a factor
end ld a,b ;Display factor, or zero if prime
out (0),a
jr strt ;Start over
original_number .byte 00h
test_factor .byte 00h
.end