Jump to content
IGNORED

Substraction with BCD maths assembler


Grevle

Recommended Posts

i know how to add the score and put on screen in assembler using the example below but

im trying to substract from score and put on screen in assembler.

i tried change "ADC" in the code to "SBC" but it doesn't work properly.

 

Can this code be modified to substract in BCD maths , Or do i need a different code alltogether ?

 

"Window" is the screen adress.

  

"its a 4 digit score, max score is 9999"

 

 

     ; EXAMPLE CODE TO ADD AMOUNT OF SCORE 

     CLC
     LDA #$25 ; AMOUNT OF SCORE TO ADD IN DECIMAL MODE
     STA POINTS    
     JSR SCOREK

 

;main code would be here just a example

 

;
==========================================================

; ADD SCORE AND PRINT ON SCREEN ROUTINE

   

SCOREK
    
    SED
    LDA SCORE+1;LOAD TWO LOW DIGITS
    ADC POINTS ;ADD POINT VALUE OF BRICK
    STA SCORE+1
    LDA #$00 ;WILL ALSO ADD CARRY BIT IF NECESSARY
    ADC SCORE
    STA SCORE
    CLD

 

; NOW PRINT NEW SCORE ON SCREEN

 

PRINTSCORE
    
    LDX #0
    LDY #35

ONE
    LDA SCORE,X
    LSR ;EACH BYTE HOLDS 2 NUMBERS
    LSR ;SHIFT UPPER NIBBLE OVER
    LSR ;AND DO IT
    LSR ;FIRST.
    ORA #16 ; TRANSLATE NUMBER INTO INTERNAL CHARACTER
    STA  WINDOW-3,Y ;STORE HIGHER DIGIT OF PAIR IN TEXT AREA
    INY ; NEXT
    LDA SCORE ,X
    AND #$0F ; NOW DO LOWER NIBBLE
    ORA #16 ; MAKE A CHR
    STA  WINDOW-3,Y ;STORE LOWER DIGIT OF PAIR IN TEXT AREA
    INY
    INX
    CPX #2 ; DONE BOTH BYTES? (ALL 4 SCORE DIGITS)
    BNE ONE
    
    RTS

       

    
     

Edited by Grevle
Link to comment
Share on other sites

You need to do something like this:-

 

; EXAMPLE CODE TO SUBTRACT AMOUNT OF SCORE 

     LDA #$25 ; AMOUNT OF SCORE TO ADD IN DECIMAL MODE
     STA POINTS    
     JSR SUBTRACT

.

.

.

 

 

    SUBTRACT

    SED

    SEC    ; MUST SET CARRY FLAG BEFORE A SUBTRACT
    LDA SCORE+1;LOAD TWO LOW DIGITS
    SBC POINTS ;SUBTRACT POINT VALUE OF BRICK
    STA SCORE+1

    LDA SCORE
    SBC #$00 ;WILL ALSO SUBTRACT CARRY BIT IF NECESSARY
    STA SCORE
    CLD

    RTS

  • Like 3
Link to comment
Share on other sites

3 hours ago, TGB1718 said:

You need to do something like this:

Yes That was it !. Works flawless now. 😄. Thanks a lot 👍

 

 

 

3 hours ago, TGB1718 said:

; EXAMPLE CODE TO SUBTRACT AMOUNT OF SCORE 

     LDA #$25 ; AMOUNT OF SCORE TO ADD IN DECIMAL MODE
     STA POINTS    
     JSR SUBTRACT

.

.

.

 

 

    SUBTRACT

    SED

    SEC    ; MUST SET CARRY FLAG BEFORE A SUBTRACT
    LDA SCORE+1;LOAD TWO LOW DIGITS
    SBC POINTS ;SUBTRACT POINT VALUE OF BRICK
    STA SCORE+1

    LDA SCORE
    SBC #$00 ;WILL ALSO SUBTRACT CARRY BIT IF NECESSARY
    STA SCORE
    CLD

    RTS

 

Edited by Grevle
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...