* *``````````````````````````````* * SUBT16 :: SUBTRACT WORDS * *- -* * SUBTRACT ONE 16BIT NUMBER * * FROM ANOTHER, RETURNING THE * * RESULT IN .Y (LOW), .X (HI). * * SIGNED OR UNSIGNED. * *- -* * CLOBBERS: * * * * FLAGS: ????---- REG: AXYM * *- -* * CYCLES: ??? * * SIZE: * *- -* * USAGE: * * * * LDA #>1000 ; MINUEND * * PHA * * LDA #<1000 * * PHA * * LDA #>500 ; SUBTRAHEND * * PHA * * LDA #<500 * * PHA * * JSR SUBT16 * *- -* * ENTRY * * * * TOP OF STACK * * * * LOW BYTE OF RETURN ADDRESS * * HI BYTE OF RETURN ADDRESS * * LOW BYTE OF SUBTRAHEND * * HIGH BYTE OF SUBTRAHEND * * LOW BYTE OF MINUEND * * HIGH BYTE OF MINUEND * *- -* * EXIT * * * * TOP OF STACK * * * * LOW BYTE OF RETURN ADDRESS * * HI BYTE OF RETURN ADDRESS * * * * .Y = RESULT LOW BYTE * * .X = RESULT HIGH BYTE * * .A = LOW BYTE OF RET ADDR * * * * [RETURN] = RESULT (2 BYTES) * * [RETLEN] = 2 (RESULT LENGTH) * *,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* * SUBT16 * ** GET RETURN ADDRESS * PLA STA RETADR PLA STA RETADR+1 * ** GET PARAMETERS * PLA STA :SUBT PLA STA :SUBT+1 ; SUBTRAHEND PLA STA :MINU PLA STA :MINU+1 ; MINUEND * ** MINUEND - SUBTRAHEND * LDA :MINU SEC SBC :SUBT TAY ; LOW BYTE STY RETURN LDA :MINU+1 SBC :SUBT+1 TAX ; HIGH BYTE STX RETURN+1 LDA #2 STA RETLEN * ** RESTORE RETURN ADDRESS * LDA RETADR+1 PHA LDA RETADR PHA * RTS * ** DATA * :MINU DS 2 :SUBT DS 2 *