
 1000   .LIF
 1010  *SAVE S.INDEX --> MASK
 1020  *--------------------------------
 1030  TEST   LDY #"0"
 1040  .1     TYA
 1050         JSR $FDED
 1060         TYA
 1070         JSR TRICKY.WAY
 1080         JSR HEX
 1090         TYA
 1100         JSR TRICKIER.WAY
 1110         JSR HEX
 1120         TYA
 1130         JSR SHIFT.LOOP
 1140         JSR HEX
 1150         TYA
 1160         JSR TABLE.LOOKUP
 1170         JSR HEX
 1180         TYA
 1190         JSR SILLY.WAY
 1200         JSR HEX
 1210         TYA
 1220         JSR NOT.SO.SILLY.WAY
 1230         JSR HEX
 1240         TYA
 1250         JSR TRICKY.WAY.R
 1260         JSR HEX
 1270         TYA
 1280         JSR TRICKIER.WAY.R
 1290         JSR HEX
 1300         TYA
 1310         JSR SHIFT.LOOP.R
 1320         JSR HEX
 1330         TYA
 1340         JSR TABLE.LOOKUP.R
 1350         JSR HEX
 1360         JSR $FD8E
 1370         INY
 1380         CPY #"8"
 1390         BCC .1
 1400         RTS
 1410  *--------------------------------
 1420  HEX    PHA 
 1430         LDA #"-"
 1440         JSR $FDED
 1450         PLA
 1460         JMP $FDDA
 1470  *--------------------------------
 1480  TRICKY.WAY.R
 1490         EOR #7
 1500  TRICKY.WAY
 1510         AND #7
 1520         CMP #2
 1530         BCC .5       1+1=$02
 1540         BEQ .5       2+1+CARRY=$04
 1550         CMP #4
 1560         BCC .4       3+1+4=$08
 1570         BEQ .3       4+1+4+CARRY+6=$10
 1580         CMP #6
 1590         BCC .2       5+1+4+6+$10=$$20
 1600         BEQ .1       6+1+4+6+$10+CARRY+$1E=$40
 1610         ADC #$3F     7+1+4+6+$10+$1E+CARRY=$80
 1620  .1     ADC #$1E
 1630  .2     ADC #$10
 1640  .3     ADC #6
 1650  .4     ADC #4
 1660  .5     ADC #1
 1670         RTS
 1680  *--------------------------------
 1690  TRICKIER.WAY.R
 1700         EOR #7
 1710  TRICKIER.WAY
 1720         AND #7       00-01-02-03-04-05-06-07
 1730         SEC
 1740         ROL          01-03-05-07-09-0B-0D-0F
 1750         CMP #3
 1760         BCC .0       TURN 00 INTO 01
 1770         CMP #7
 1780         BCC .12      TURN 03 INTO 02, 05 INTO 04
 1790         ADC #6       ..-..-..-0E-10-12-14-16
 1800         CMP #$12
 1810         BCC .34      TURN 0E INTO 08, 10 INTO 10
 1820         ADC #$2B     ..-..-..-..-..-3E-40-42
 1830         CMP #$42
 1840         BCC .56      TURN 3E INTO 20, 40 INTO 40
 1850         ASL          TURN 42 INTO 84
 1860  .56    AND #$E0     MASK 3E-40-84 TO 20-40-80
 1870  .34    AND #$F8     MASK 0E-10-20-40-80 TO 08-10-20-40-80
 1880  .12    AND #$FE     MASK 03-05... TO 02-04...
 1890  .0     RTS
 1900  *--------------------------------
 1910  SHIFT.LOOP
 1920         AND #7       
 1930         TAX
 1940         LDA #1
 1950  .1     ASL
 1960         DEX
 1970         BPL .1
 1980         ROR
 1990         RTS
 2000  *--------------------------------
 2010  TABLE.LOOKUP
 2020         AND #7
 2030         TAX
 2040         LDA TABLE,X
 2050         RTS
 2060  TABLE  .HS 0102040810204080
 2070  *--------------------------------
 2080  SHIFT.LOOP.R
 2090         AND #7       
 2100         TAX
 2110         LDA #$80
 2120  .1     LSR
 2130         DEX
 2140         BPL .1
 2150         ROL
 2160         RTS
 2170  *--------------------------------
 2180  TABLE.LOOKUP.R
 2190         AND #7
 2200         TAX
 2210         LDA RTABLE,X
 2220         RTS
 2230  RTABLE .HS 8040201008040201
 2240  *--------------------------------
 2250  SILLY.WAY
 2260         AND #7
 2270         BEQ .0
 2280         CMP #1
 2290         BEQ .1
 2300         CMP #2
 2310         BEQ .2
 2320         CMP #3
 2330         BEQ .3
 2340         CMP #4
 2350         BEQ .4
 2360         CMP #5
 2370         BEQ .5
 2380         CMP #6
 2390         BEQ .6
 2400         LDA #$80
 2410         RTS
 2420  .6     LDA #$40
 2430         RTS
 2440  .5     LDA #$20
 2450         RTS
 2460  .4     LDA #$10
 2470         RTS
 2480  .3     LDA #$08
 2490         RTS
 2500  .2     LDA #$04
 2510         RTS
 2520  .1     LDA #$02
 2530         RTS
 2540  .0     LDA #$01
 2550         RTS
 2560  *--------------------------------
 2570  NOT.SO.SILLY.WAY
 2580         AND #7
 2590         BEQ .0
 2600         CMP #4
 2610         BEQ .4
 2620         BCS .60
 2630         CMP #2
 2640         BEQ .2
 2650         BCS .3
 2660         LDA #$02
 2670         RTS
 2680  .60    CMP #6
 2690         BEQ .6
 2700         BCS .7
 2710         LDA #$20
 2720         RTS
 2730  .7     LDA #$80
 2740         RTS
 2750  .6     LDA #$40
 2760         RTS
 2770  .4     LDA #$10
 2780         RTS
 2790  .3     LDA #$08
 2800         RTS
 2810  .2     LDA #$04
 2820         RTS
 2830  .0     LDA #$01
 2840         RTS

