mli4.s 509 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. .define Mli4
  2. .sect .text
  3. .sect .rom
  4. .sect .data
  5. .sect .bss
  6. .sect .text
  7. ! This subroutine multiplies two signed fourbyte integers
  8. ! For more detail see mli.s
  9. ! The only difference is that zeropage locations are twice as big.
  10. Mli4:
  11. ldy #1
  12. sty UNSIGN
  13. jsr Pop
  14. stx ARTH
  15. sta ARTH+1
  16. jsr Pop
  17. stx ARTH+2
  18. sta ARTH+3 ! multiplier
  19. jsr Pop
  20. stx ARTH+4
  21. sta ARTH+5
  22. jsr Pop
  23. stx ARTH+6
  24. sta ARTH+7 ! multiplicand
  25. lda ARTH+3
  26. bpl 3f
  27. lda #0
  28. ldx #ARTH
  29. jsr Ngi4
  30. lda #0
  31. ldx #ARTH+4
  32. jsr Ngi4
  33. 3: jmp Mul4