
 1000  *SAVE S.SQRT16
 1010  *--------------------------------
 1020         .OR $300
 1030  ARG    .BS 2
 1040  ODD    .BS 2
 1050  *--------------------------------
 1060  SQRT   LDX ARG+1    X = HI BYTE   HI
 1070         LDY ARG      Y = LO BYTE   LO
 1080         LDA #0       START ODD=0
 1090         STA ODD+1
 1100  .1     STA ODD
 1110         CLC          BORROW ON, SUBTRACT (ODD+1)
 1120         TYA          LO
 1130         SBC ODD
 1140         TAY
 1150         TXA          HI
 1160         SBC ODD+1
 1170         TAX
 1180         BCC .2       ...ODD>REMAINDER, FINISHED
 1190         LDA ODD      CARRY SET, ADD 2 TO ODD
 1200         ADC #1
 1210         BCC .1       ...NEXT
 1220         INC ODD+1
 1230         BNE .1       ...ALWAYS     ...ALWAYS
 1240  .2     LSR ODD+1    SQRT IS (ODD/2)
 1250         ROR ODD
 1260         RTS
 1270  *--------------------------------

