
 1000   .LIF
 1010  *SAVE S.PUTNEY'S WAY
 1020  *--------------------------------
 1030  *      PUTNEY'S WAY
 1040  *--------------------------------
 1050  PUTNEY.WAY
 1060         AND #7       .....421
 1070         LSR          ......42, 1 IN CARRY
 1080         PHA          SAVE FOR LATER PLP
 1090         LDA #1       INITIAL MASK VALUE
 1100         BCC .1       NO NEED TO SHIFT 1
 1110         ASL
 1120  .1     PLP          GET 1.....42 AS NV.BDIZC
 1130         BCC .2       NO NEED TO SHIFT 2
 1140         PHP
 1150         ASL
 1160         ASL
 1170         PLP
 1180  .2     BNE .3       NO NEED TO SHIFT 4
 1190         ASL
 1200         ASL
 1210         ASL
 1220         ASL
 1230  .3     RTS
 1240  *--------------------------------
 1250  *   BRUCE LOVE'S METHODS
 1260  *--------------------------------
 1270  LOVE.1 AND #7
 1280         LSR
 1290         PHP
 1300         LSR
 1310         EOR #1
 1320         BNE .1
 1330         LDA #$10
 1340  .1     BCC .2
 1350         ASL
 1360         ASL
 1370  .2     PLP
 1380         BCC .3
 1390         ASL
 1400  .3     RTS
 1410  *--------------------------------
 1420  LOVE.2 AND #7
 1430         EOR #7
 1440         STA .1+1
 1450         LDA #1
 1460  .1     BNE .2
 1470  .2     ASL
 1480         ASL
 1490         ASL
 1500         ASL
 1510         ASL
 1520         ASL
 1530         ASL
 1540         RTS
 1550  *--------------------------------
 1560  *   MASK --> INDEX
 1570  *      19 BYTES (NOT COUNTING RTS)
 1580  *-------------------80-40-20-10-08-04-02-01
 1590  RBSC.1 LSR          40 20 10 08 04 02 01 00
 1600         CMP #4
 1610         BCC .2
 1620         BEQ .1
 1630         LSR          20 10 08 04
 1640         LSR          10 08 04 02
 1650         LSR          08 04 02 01
 1660         ADC #8       10 0C 0A 09
 1670         LSR          08 06 05 04
 1680         CMP #8
 1690         BCC .2
 1700  .1     SBC #1       07 .. .. .. 03 .. .. ..
 1710  .2     RTS          07 06 05 04 03 02 01 00
 1720  *       CYCLES:     24 23 23 23 10 07 07 07 (WITHOUT RTS)
 1730  *                   AVERAGE = 15.5 CYCLES
 1740  *--------------------------------
 1750  *   MASK --> INDEX VIA X-LOOP
 1760  *--------------------------------
 1770  RBSC.2 LDX #8
 1780  .1     DEX
 1790         ASL
 1800         BCC .1
 1810         TXA
 1820         RTS
 1830  *--------------------------------
 1840  TESTMX LDA #1
 1850  .1     PHA
 1860         JSR RBSC.1
 1870         JSR $FDDA
 1880         LDA #"-"
 1890         JSR $FDED
 1900         PLA
 1910         PHA
 1920         JSR $FDDA
 1930         JSR $FD8E
 1940         PLA
 1950         ASL
 1960         BCC .1
 1970         RTS

