BUBBLESORT ;## 1 # 0 ## .T MACRO V05.00 Friday 21-Oct-83 18:11 Page 1 1 68 .TITLE BUBBLESORT ;## 1 # 0 ## .TITLE BUBBLESORT 69 .GLOBL WRITED,WRITEC,READD,EXIT ;## 2 # 0 ## .GLOBL WRITED,WRITEC,READD,EXIT 70 71 ; This example SUPERMAC program will perform a simple 72 ; bubble sort. The variable COUNT indicates how many 73 ; values to sort. 74 75 ; Program declarations 76 77 000000 K: 78 000000 .BLKW 1 ;## 10 # 0 ## .BLKW 1 79 000002 OUT: 80 000002 .BLKW 1 ;## 11 # 0 ## .BLKW 1 81 000004 TMP: 82 000004 .BLKW 1 ;## 12 # 0 ## .BLKW 1 83 000006 NM: 84 000006 .BLKW 1 ;## 13 # 0 ## .BLKW 1 85 000010 COUNT: 86 000010 .BLKW 1 ;## 14 # 0 ## .BLKW 1 87 000012 FLAG: 88 000012 .BLKW 1 ;## 15 # 0 ## .BLKW 1 89 000014 NUM: 90 000014 .BLKW 100. ;## 16 # 0 ## .BLKW 100. 91 000324 040 120 114 MESS0:.ASCII/ PLEASE INPUT EACH OF YOUR VALUES FOLLOWED BY A/ 000327 105 101 123 000332 105 040 111 000335 116 120 125 000340 124 040 105 000343 101 103 110 000346 040 117 106 000351 040 131 117 000354 125 122 040 000357 126 101 114 000362 125 105 123 000365 040 106 117 000370 114 114 117 000373 127 105 104 000376 040 102 131 000401 040 101 92 000403 040 074 103 .ASCIZ/ FOR EACH OF THE NUMBERS./ <15><12><7><7> 000406 122 076 040 000411 106 117 122 000414 040 105 101 000417 103 110 040 000422 117 106 040 000425 124 110 105 000430 040 116 125 000433 115 102 105 000436 122 123 056 000441 015 012 007 000444 007 000 93 000446 040 110 117 MESS1:.ASCIZ/ HOW MANY ELEMENTS DO YOU WISH TO SORT? / <15><12><7><7> 000451 127 040 115 000454 101 116 131 000457 040 105 114 000462 105 115 105 BUBBLESORT ;## 1 # 0 ## .T MACRO V05.00 Friday 21-Oct-83 18:11 Page 1-1 000465 116 124 123 000470 040 104 117 000473 040 131 117 000476 125 040 127 000501 111 123 110 000504 040 124 117 000507 040 123 117 000512 122 124 077 000515 040 015 012 000520 007 007 000 94 000523 040 124 110 MESS2:.ASCIZ/ THE SORTED NUMBERS ARE AS FOLLOW ... / <15><12> 000526 105 040 123 000531 117 122 124 000534 105 104 040 000537 116 125 115 000542 102 105 122 000545 123 040 101 000550 122 105 040 000553 101 123 040 000556 106 117 114 000561 114 117 127 000564 040 056 056 000567 056 040 015 000572 012 000 95 .EVEN ;## 21 # 0 ## .EVEN 96 97 ; The actual program now begins 98 99 000574 BEGIN: 100 000574 PRINT MESS1 ;## 26 # 0 ## PRINT MESS1 101 000602 READLN COUNT ;## 27 # 0 ## READLN COUNT 102 000612 PRINT MESS0 ;## 28 # 0 ## PRINT MESS0 103 000620 012700 000014' mov #NUM,R0 ;## 29 # 0 ## LET R0 := #NUM 104 000624 012767 000001 177146 mov #1,K ;## 30 # 0 ## FOR K := #1 TO COUNT 105 000632 ll$1: 106 000632 READLN NM ;## 31 # 1 ## READLN NM 107 000642 016720 177140 mov NM,(R0)+ ;## 32 # 1 ## LET (R0)+ := NM 108 000646 005267 177126 inc K ;## 33 # 0 ## END 109 000652 026767 177122 177130 cmp K,COUNT 110 000660 003401 ble .+4 111 000662 000402 br .+6 112 000664 000167 177742 jmp ll$1 113 000670 ll$2: 114 ; The above code reads in the values to be sorted. 115 116 000670 005067 177116 clr FLAG ;## 36 # 0 ## LET FLAG := #0 117 000674 012703 000010' mov #COUNT,R3 ;## 37 # 0 ## LET R3 := #COUNT 118 000700 011303 mov (R3),R3 ;## 38 # 0 ## LET R3 := (R3) - #1 119 000702 005303 dec R3 120 000704 ll$3: ;## 39 # 0 ## WHILE FLAG = #0 DO 121 000704 026727 177102 000000 cmp FLAG,#0 122 000712 001404 bEQ ll$6 123 000714 000167 000000 jmp ll$5 124 000720 000167 000104 ll$5: jmp ll$4 125 000724 ll$6: 126 000724 012700 000014' mov #NUM,R0 ;## 40 # 1 ## LET R0 := #NUM 127 000730 012767 000001 177054 mov #1,FLAG ;## 41 # 1 ## LET FLAG := #1; Set up conditions, now perform sort BUBBLESORT ;## 1 # 0 ## .T MACRO V05.00 Friday 21-Oct-83 18:11 Page 1-2 128 000736 012767 000001 177034 mov #1,K ;## 42 # 1 ## FOR K := #1 TO R3 129 000744 ll$7: 130 000744 010001 mov R0,R1 ;## 43 # 2 ## LET R1 := R0 + #2 131 000746 062701 000002 add #2,R1 132 000752 021011 cmp (R0),(R1) ;## 44 # 2 ## IF (R0) > (R1) THEN 133 000754 003002 bGT ll$10 134 000756 000167 000016 jmp ll$9 135 000762 ll$10: 136 000762 011067 177016 mov (R0),TMP ;## 45 # 3 ## LET TMP := (R0) 137 000766 011110 mov (R1),(R0) ;## 46 # 3 ## LET (R0) := (R1) 138 000770 016711 177010 mov TMP,(R1) ;## 47 # 3 ## LET (R1) := TMP 139 000774 005067 177012 clr FLAG ;## 48 # 3 ## LET FLAG := #0 140 001000 ll$9: ;## 49 # 2 ## FI 141 001000 062700 000002 add #2,R0 ;## 50 # 2 ## LET R0 := R0 + #2 142 001004 005267 176770 inc K ;## 51 # 1 ## END; of the for loop 143 001010 026703 176764 cmp K,R3 144 001014 003401 ble .+4 145 001016 000402 br .+6 146 001020 000167 177720 jmp ll$7 147 001024 ll$8: 148 001024 000167 177654 jmp ll$3 ;## 52 # 0 ## END; of the while loop 149 001030 ll$4: 150 151 ; Finally, output the results 152 153 001030 PRINT MESS2 ;## 56 # 0 ## PRINT MESS2 154 001036 012701 000014' mov #NUM,R1 ;## 57 # 0 ## LET R1 := #NUM 155 001042 005203 inc R3 ;## 58 # 0 ## LET R3 := R3 + #1 156 001044 012767 000001 176726 mov #1,K ;## 59 # 0 ## FOR K := #1 TO R3 157 001052 ll$11: 158 001052 012167 176724 mov (R1)+,OUT ;## 60 # 1 ## LET OUT := (R1)+ 159 001056 WRITELN OUT ;## 61 # 1 ## WRITELN OUT 160 001066 005267 176706 inc K ;## 62 # 0 ## END 161 001072 026703 176702 cmp K,R3 162 001076 003401 ble .+4 163 001100 000402 br .+6 164 001102 000167 177744 jmp ll$11 165 001106 ll$12: 166 001106 .EXIT ;## 63 # 0 ## .EXIT 167 ;## 64 # 0 ## .END BEGIN 168 ;SUPERMAC error(s) detected: 0 169 ; 1 0 0 0 14 0 4 0 0 1 170 ; 71 0 1 49 4 1 1 7 44 12 171 ; 0 16 0 3 0 49 0 0 167 0 172 ; 0 0 0 0 17 0 0 0 56 49 173 ; 4 4 0 0 2 1 2 0 0 0 174 ; 0 0 0 0 0 0 0 0 0 0 175 ; 0 0 0 0 0 0 0 0 0 0 176 ; 0 0 0 0 0 0 177 000574' .END BEGIN BUBBLESORT ;## 1 # 0 ## .T MACRO V05.00 Friday 21-Oct-83 18:11 Page 1-3 Symbol table BEGIN 000574R LL$10 000762R LL$5 000720R MESS1 000446R READD = ****** G COUNT 000010R LL$11 001052R LL$6 000724R MESS2 000523R TMP 000004R EXIT = ****** G LL$12 001106R LL$7 000744R NM 000006R WRITEC= ****** G FLAG 000012R LL$2 000670R LL$8 001024R NUM 000014R WRITED= ****** G K 000000R LL$3 000704R LL$9 001000R OUT 000002R $NO$ = 000001 LL$1 000632R LL$4 001030R MESS0 000324R . ABS. 000000 000 (RW,I,GBL,ABS,OVR) 001110 001 (RW,I,LCL,REL,CON) Errors detected: 0 *** Assembler statistics Work file reads: 0 Work file writes: 0 Size of work file: 8951 Words ( 35 Pages) Size of core pool: 17408 Words ( 68 Pages) Operating system: RT-11 (Under RSTS/E) Elapsed time: 00:00:10.16 SORT,SORT=SORT