
 1000  *SAVE S.SWAP AND SORT
 1010         .LIST MOFF,CON
 1020  *--------------------------------
 1030         .MA S
 1040         LDX #]1
 1050         LDY #]2
 1060         JSR SWAP
 1070         .EM
 1080  *--------------------------------
 1090         .MA INC
 1100         INC PERM+]1
 1110         LDA PERM+]1
 1120         CMP #6
 1130         BCC :1
 1140         LDA #1
 1150         STA PERM+]1
 1160  :1
 1170         .EM
 1180  *--------------------------------
 1190  *      SWAP (X,Y)
 1200  *--------------------------------
 1210  SWAP   LDA BASE,X
 1220         CMP BASE,Y
 1230         BCC .1
 1240         PHA
 1250         LDA BASE,Y
 1260         STA BASE,X
 1270         PLA
 1280         STA BASE,Y
 1290  .1     RTS
 1300  *--------------------------------
 1310  *      SORT BY SWAPS
 1320  *--------------------------------
 1330  SORT
 1340         .DO 0    CHANGE TO 1 TO SELECT MCDONALD'S LIST
 1350         >S 4,5       MCDONALD'S ORDER
 1360         >S 3,5
 1370         >S 3,4
 1380         >S 1,2
 1390         >S 1,4
 1400         >S 1,3
 1410         >S 2,5
 1420         >S 2,4
 1430         >S 2,3
 1440         .ELSE
 1450         >S 1,4       MY ORDER
 1460         >S 2,5
 1470         >S 1,3
 1480         >S 3,5
 1490         >S 2,4
 1500         >S 1,2
 1510         >S 2,3
 1520         >S 3,4
 1530         >S 4,5
 1540         .FIN
 1550         RTS
 1560  *--------------------------------
 1570  BASE   .EQ $500
 1580  *--------------------------------
 1590  LOAD   LDX #5       COPY PERM LIST TO BASE ON SCREEN
 1600  .1     LDA PERM,X
 1610         STA BASE,X
 1620         STA BASE+128,X
 1630         DEX
 1640         BNE .1
 1650         RTS
 1660  *--------------------------------
 1670  PERM   .HS 000101010101
 1680  *--------------------------------
 1690  CHECK  LDX #4       CHECK IF LIST IS SORTED
 1700  .1     LDA BASE+1,X
 1710         CMP BASE,X
 1720         BCC .2 
 1730         DEX
 1740         BNE .1
 1750  .2     RTS
 1760  *--------------------------------
 1770  NEXT   >INC 5       INCREMENT PERM LIST
 1780         BCC .1       EACH BYTE RANGES FROM
 1790         >INC 4       01 TO 05
 1800         BCC .1
 1810         >INC 3
 1820         BCC .1
 1830         >INC 2
 1840         BCC .1
 1850         >INC 1
 1860         BCC .1
 1870         RTS          FINISHED
 1880  .1     JSR LOAD     COPY PERMLIST TO SCREEN
 1890         JSR SORT     SORT IT ON THE SCREEN
 1900         JSR CHECK    CHECK IF SORTED
 1910         BCS NEXT     ...SORTED, TRY NEXT SEQUENCE
 1920         RTS          ...NOT SORTED
 1930  *--------------------------------
 1940         .MA SS
 1950         LDX #]1
 1960         LDY #]2
 1970         JSR EXCHANGE
 1980         .EM
 1990  *--------------------------------
 2000  EXCHANGE
 2010         LDA PERM,X
 2020         PHA
 2030         LDA PERM,Y
 2040         STA PERM,X
 2050         PLA
 2060         STA PERM,Y
 2070         LDX #1
 2080  .1     LDA PERM,X
 2090         ORA #$C0
 2100         JSR $FDED
 2110         INX
 2120         CPX #6
 2130         BCC .1
 2140         LDA #$A0
 2150         JSR $FDED
 2160         RTS
 2170  *--------------------------------
 2180         .MA S3
 2190    >SS 1,2
 2200    >SS 1,3
 2210    >SS 1,2
 2220    >SS 1,3
 2230    >SS 1,2
 2240         .EM
 2250  *--------------------------------
 2260         .MA S4
 2270    >S3
 2280         JSR $FD8E
 2290    >SS 1,4
 2300    >S3
 2310         JSR $FD8E
 2320    >SS 2,4
 2330    >S3
 2340         JSR $FD8E
 2350    >SS 3,4
 2360    >S3
 2370         JSR $FD8E
 2380         .EM
 2390  *--------------------------------
 2400  PERMUTE
 2410         LDX #5
 2420  .1     TXA
 2430         STA PERM,X
 2440         DEX
 2450         BNE .1
 2460  *--------------------------------
 2470    >SS 1,1
 2480    >S4
 2490    >SS 1,5
 2500    >S4
 2510    >SS 1,5
 2520    >S4
 2530    >SS 1,5
 2540    >S4
 2550    >SS 1,5
 2560    >S4
 2570  *--------------------------------
 2580         RTS

