From aa7744345ba871dbee244acb6c64b7e6878bdd90 Mon Sep 17 00:00:00 2001 From: Syndamia Date: Fri, 1 Aug 2025 12:48:02 +0300 Subject: feat(isprime): Move most print logic from main to isprimex_yn --- isprime/isprime.oph.s | 30 ++++++++++++++---------------- isprime/kernal.oph.s | 5 +++++ 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/isprime/isprime.oph.s b/isprime/isprime.oph.s index 262e8f7..30730de 100644 --- a/isprime/isprime.oph.s +++ b/isprime/isprime.oph.s @@ -14,29 +14,27 @@ main: `lowercase ldx #check_first ; x = check_first -* jsr printx ; do print x - lda #32 ; print " " - jsr putchar - jsr isprimex_cli ; print isprime(x) - lda #13 ; print "\n" - jsr putchar - +* jsr isprimex_yn ; do print isprime(x) inx ; ++x - txa ; while (x <= check_last) - cmp #check_last + cpx #check_last ; while (x <= check_last) bcc - beq - _end: rts .scend -isprimex_cli: - jsr isprimex ; a = isprime(number) - beq + ; if (a != 0) - `print yes ; print "Yes" - rts ; return -* `print no ; else print "No" - rts ; return +; prints "$x Yes\n" when x is prime and "$x No\n" otherwise +isprimex_yn: + jsr printx ; print x + `printchar 32 ; print " " + jsr isprimex ; a = isprime(number) + beq + ; if (a != 0) + `print yes ; print "Yes" + `printchar 13 ; print "\n" + rts ; return +* `print no ; else print "No" + `printchar 13 ; print "\n" + rts ; return max: .byte 0 diff --git a/isprime/kernal.oph.s b/isprime/kernal.oph.s index 8d4a69e..2082d6b 100644 --- a/isprime/kernal.oph.s +++ b/isprime/kernal.oph.s @@ -14,6 +14,11 @@ tax .macend +.macro printchar + lda #_1 + jsr putchar +.macend + ; print value (byte) at address as a number .macro printm lda _1 -- cgit v1.3.1-23-gd82d