From ba2de2eef1f96bbd3bdfd713bd9d6aa0801e4e21 Mon Sep 17 00:00:00 2001 From: Thomas Date: Fri, 14 Apr 2017 12:45:58 +0200 Subject: [PATCH] Towards #20, control 7-SEG LED groups --- forth.asm | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/forth.asm b/forth.asm index 0c18e03..a531996 100644 --- a/forth.asm +++ b/forth.asm @@ -4959,10 +4959,14 @@ EMIT7S: CP A,#' ' JRNE 1$ - LDW Y,#LED7FIRST ; DROP DOLIT LED7FIRST + CALLR XGRPADD + EXGW X,Y + ; CALL YSTOR + ; LDW Y,#LED7FIRST ; DROP DOLIT LED7FIRST LDW (X),Y - DoLitC (LED7LAST-LED7FIRST+1) - JP ERASE + ;DoLitC (LED7LAST-LED7FIRST+1) + DoLitC HAS_LED7LEN + JP ERASE 1$: CP A,#'.' JREQ E7DOT @@ -4998,6 +5002,15 @@ E7DOT: E7END: JP DROP +; Helper routine for calculating LED group start adress +XGRPADD: + EXGW X,Y + LD A,LED7GROUP + LD XL,A + LD A,#HAS_LED7LEN + MUL X,A + ADDW X,#LED7FIRST + RET ; P7S ( c -- ) ; Insert 7-seg pattern at left side of LED display buffer, rotate buffer left @@ -5008,14 +5021,7 @@ E7END: .ascii "P7S" PUT7S: .if gt,(HAS_LED7SEG-1) - EXGW X,Y - LD A,LED7GROUP - - LD XL,A - LD A,#HAS_LED7LEN - MUL X,A - ADDW X,#LED7FIRST - + CALLR XGRPADD DEC A PUSH A 1$: LD A,(1,X)