/* 8 bit multiply and divide routines. Three 8 bit locations ACC, AUX and EXT must be set up, preferably on zero page. MULTIPLY ROUTINE ACC*AUX -> ACC,EXT (low,hi) 16 bit result */ acc equ $80 aux equ acc+2 ext equ aux+2 .proc mul8 LDA #0 LDY #$09 CLC LOOP ROR @ ROR ACC BCC MUL2 CLC ;DEC AUX above to remove CLC ADC AUX MUL2 DEY BNE LOOP STA EXT RTS .endp /* DIVIDE ROUTINE ACC/AUX -> ACC, remainder in EXT */ .proc div8 LDA #0 LDY #$08 LOOP ASL ACC ROL @ CMP AUX BCC DIV2 SBC AUX INC ACC DIV2 DEY BNE LOOP STA EXT RTS .endp