þþ) X; STRSORT.SRCX;%X; *******************************%X; * SORT ROUTINE *%X; * *%X; * A=USR(A,B,C,D,E) *%X; * *%X; * A=ADR OF ROUTINE * %X; * B=ADR OF STRING * %X; * C=RECORD LENGTH * %X; * D=DEPTH OF SORT * %X; * E=# OF RECORDS *%X; * *%X; *******************************X;PX; X; EQUATES X; -------#X;(„SADRË;; ADR OF RECORD2"…HSADR;; ADR OF DATA STRINGF„RLEN;; RECORD LENGTHP„DEEP;; DEPTH OF SEARCHZ„TEMP;; TEMP DATA BUFFERd„NREC;; # OF RECORDSn …SSADRÍ;; ADR OF 2ND RECORDxƒFLG;; SWITCHED FLAG‚X;ŒX; INITIALIZE‘X; ----------–X; 7;; # OF ARGUMENTSª7;; GET STRING ADR HI´ P…HSADR¾7;; GET STRING ADR LOÈ P…HSADRú7;; IGNORE HI BYTE7;; GET RECORD LENGTH P„RLEN7;; IGNORE HI BYTE"7;; GET DEPTH OF SORT, P„DEEP67;; IGNORE HI BYTE@7;; GET # RECORDSJ P„NRECLX;MX; MAIN PROGRAMNX; ------------OX;T …STARTYQ…HSADR;; BEGINNING^P„SADR;; OF DATA STRINGc P…SSADRh Q…HSADRr P„SADR|,†O„RLEN;; CALCULATE ADR OF P…SSADR;; NEXT HIGHEST RECORDš D†START2¤ #…SSADR® †START2³Q>;; INITIALIZE FLAG¸PƒFLGÂ$>;; RECORD COUNTÌ …NCMPRÑ%>;; POINT TO 1ST CHARÖ„CMPRÛ Q@„SADR7;; COMPARE CHARACTERSàR@…SSADR7;; IN EACH RECORDêD„NEXT;; IN RIGHT ORDERôH†SWITCH;; IN WRONG ORDERþ3;; EQUAL, SO NEXT CHAR)„DEEP;; REACHED SORT „EQUA&OF S¡¡¡NG AALIG>>>NNNPPP+++LOLOLFLA