& CONDITION TEST
.ORIGIN '1000;
& LISTING & COMMENT &OCTAL & INSTRUCTION
& & ADD & OR BINARY
.INTEGER
CASE, & 100 & UNDEFINED
I, & 101 & UNDEFINED
J; & 102 & UNDEFINED
.ARRAY
A[-3] & ARRAY WORD & 103 & 41003
( -1, 0, 1 ); & 1000 & 177777
& & 1001 & 0
& & 1002 & 1
@ .PROCEDURE OUT1; &PROCEDURE WD & 104 & 1003
.BEGIN & LINK WORD & 1003 & 0
% SKS, '104; & 1004 & SKS 104
% JMP, *-1; & 1005 & JMP 1004
% OCP, '104; & 1006 & OCP 104
% OTA, 4; & 1007 & OTA 4
% JMP, *-1; & 1010 & JMP 1007
.END; & 1011 & JMP*1003
@ .PROCEDURE OUT2; &PROCEDURE WD & 105 & 1012
.BEGIN & LINK WORD & 1012 & 0
OUT1( .SWOP @ ); & 1013 & ICA
& & 1014 & JST* 104
OUT1( .SWOP @ ); & 1015 & ICA
& & 1016 & JST* 104
.END; & 1017 & JMP*1012
.CONSTANT
CRLF = '106612, & 106 & 106612
TRUE = $ T, & 107 & 120324
FALSE = $ F; & 110 & 120306
.CONDITIONAL .PROCEDURE RELATION; & 111 & 1027
.LABEL LE, GE, LT, GT, EQ, NE;
.SWITCH OPCASE = & SWITCH WD & 1020 & 141027
LE, & 1021 & 1032
GE, & 1022 & 1044
LT, & 1023 & 1057
GT, & 1024 & 1071
EQ, & 1025 & 1104
NE; & 1026 & 1117
.BEGIN & 1027 & 0
.GOTO OPCASE[ CASE]; & 1030 & LDX 100
& & 1031 & JMP*1020
LE: .IF A[I] .LE A[J] .THEN & 1032 & LDX 101
& & 1033 & LDA* 103
& & 1034 & LDX 102
& & 1035 & CAS* 103
& & 1036 & JMP 1043
& & 1037 & NOP
.EXITTRUE & 1040 & IRS 1027
& & 1041 & JMP*1027
.ELSE & JMP NEVER EXEC & 1042 & JMP 1044
.EXITFALSE; & 1043 & JMP*1027
GE: .IF A[I] .GE A[J] .THEN & 1044 & LDX 101
& & 1045 & LDA* 103
& & 1046 & LDX 102
& & 1047 & CAS* 103
& & 1050 & NOP
& & 1051 & SKP
& & 1052 & JMP 1056
.EXITTRUE & 1053 & IRS 1027
& & 1054 & JMP*1027
.ELSE & 1055 & JMP 1057
.EXITFALSE; & 1056 & JMP*1027
LT: .IF A[I] < A[J] .THEN & 1057 & LDX 101
& & 1060 & LDA* 103
& & 1061 & LDX 102
& & 1062 & CAS* 103
& & 1063 & NOP
& & 1064 & JMP 1070
.EXITTRUE & 1065 & IRS 1027
& & 1066 & JMP*1027
.ELSE & 1067 & JMP 1071
.EXITFALSE; & 1070 & JMP*1027
GT: .IF A[I] > A[J] .THEN & 1071 & LDX 101
& & 1072 & LDA* 103
& & 1073 & LDX 102
& & 1074 & CAS* 103
& & JMP *+3 & 1075 & JMP 1100
& & 1076 & NOP
& & 1077 & JMP 1103
.EXITTRUE & 1100 & IRS 1027
& & 1101 & JMP*1027
.ELSE & 1102 & JMP 1104
.EXITFALSE; & 1103 & JMP*1027
EQ: .IF A[I] = A[J] .THEN & 1104 & LDX 101
& & 1105 & LDA* 103
& & 1106 & LDX 102
& & 1107 & CAS* 103
& & 1110 & SKP
& & 1111 & SKP
& & 1112 & JMP 1116
.EXITTRUE & 1113 & IRS 1027
& & 1114 & JMP*1027
.ELSE & 1115 & JMP 1117
.EXITFALSE; & 1116 & JMP*1027
NE: .IF A[I] .NE A[J] .THEN & 1117 & LDX 101
& & 1120 & LDA* 103
& & 1121 & LDX 102
& & 1122 & CAS* 103
& & 1123 & SKP
& & 1124 & JMP 1130
.EXITTRUE & 1125 & IRS 1027
& & 1126 & JMP*1027
.ELSE & 1127 & JMP 1131
.EXITFALSE; & 1130 & JMP*1027
.END; & 1131 & JMP*1027
.BEGIN & START OF PROGRAM & NO CODE
% INH; & 1132 & INH
.FOR CASE := -6 .DO & 1133 & LDA 1165
& & 1134 & STA 100
.BEGIN
.FOR I := -3 .DO & 1135 & LDA 1166
& & 1136 & STA 101
.BEGIN
.FOR J := -3 .DO & 1137 & LDA 1166
& & 1140 & STA 102
.IF RELATION .THEN & 1141 & JST* 111
& & 1142 & JMP 1146
OUT2( TRUE ) & 1143 & LDA 107
& & 1144 & JST* 105
.ELSE & 1145 & JMP 1150
OUT2( FALSE ); & 1146 & LDA 110
& & 1147 & JST* 105
& & END J LOOP & 1150 & IRS 102
& & 1151 & JMP 1141
OUT2( CRLF ); & 1152 & LDA 106
& & 1153 & JST* 105
.END; & 1154 & IRS 101
& & 1155 & JMP 1137
OUT2( CRLF ); & 1156 & LDA 106
& & 1157 & JST* 105
OUT2( CRLF ); & 1160 & LDA 106
& & 1161 & JST* 105
.END; & END CASE LOOP & 1162 & IRS 100
& & 1163 & JMP 1135
.END; & END PROGRAM & 1164 & HLT
& & CONSTANT -6 & 1165 & 177772
& & CONSTANT -3 & 1165 & 177775