.TITLE SORTS ;SORTS STRINGS .MCALL .EXIT,.TL,.PARS,.CMPS GO: MOV #14.,R1 ;14 WORDS MOV #STRING,R2 ;POINTER TO WHERE WORD GOES MOV #TEXT,R3 ;POINTER TO TEXT ARRAY MOV #LIST,R4 LOOP1: .PARS R3,R2,#TERM,R3 ;1st ARGUMENT: STRING ADDRESS MOV R2,(R4)+ ;2nd ARG: WHERE WORD GOES ADD #20.,R2 ;3rd ARG: ADDRESS OF TERMINATORS SOB R1,LOOP1 ;4th ARG: START OF NEXT WORD ;DO BUBBLE SORT ON WORDS; SWITCHES ADDRESSES, NOT WORDS MOV #14.,R0 LOOP2: MOV #13.,R1 MOV #LIST,R4 LOOP3: .CMPS (R4)+,(R4) ;COMPARE STRINGS AT ADDRESSES BLE NOSWIT ;R4 AND R4+2 MOV (R4),R5 ;SWAP ADDRESSES MOV -2(R4),(R4) MOV R5,-2(R4) NOSWIT: SOB R1,LOOP3 SOB R0,LOOP2 MOV #14.,R0 ;TYPE RESULTS MOV #LIST,R4 LOOP4: .TL (R4)+ ;TYPE LINE MEGAMACRO SOB R0,LOOP4 .EXIT LIST: .BLKW 14. ;ADDRESSES OF WORDS TEXT: .ASCII *WHY? WHY NOT! PAINT IT RED (OR ORANGE); * .ASCIZ *TRIM WITH GREEN, BLUE, OR YELLOW.* STRING: .BLKB 14.*20. ;HOLDS 14 WORDS TERM: .ASCIZ * ,.;:!?-()* ;WORD TERMINATORS .EVEN .END GO