THIS FILE IS DAMAGED (^found_chan), 1 to last_write_chan while (^found_chan); 1105 subchan = i; 1106 pvstep = addr (pvmd.subchan_table (subchan)); 1107 if pvste.write_chain ^= 0 & ^pvste.hold_output 1108 then found_chan = "1"b; 1109 end; 1110 if ^found_chan 1111 then return; 1112 1113 call write_frame (code); 1114 if code ^= 0 /* write failed, look for another frame */ 1115 then do; 1116 last_write_chan = subchan; 1117 go to retry; 1118 end; 1119 1120 end; 1121 1122 /* Subroutine to compute the longitudinal redundancy check (LRC) char for the text in a buffer */ 1123 1124 get_buffer_lrc: 1125 proc returns (bit (9)); 1126 1127 dcl lrc bit (9); 1128 dcl (nwords, nchars, btally, i) fixed bin; 1129 dcl temp bit (36) aligned; 1130 dcl p ptr; 1131 1132 dcl bwords (nwords) bit (36) aligned based; 1133 dcl bchars (nchars) bit (9) unal based; 1134 dcl temp_chars (4) bit (9) based (addr (temp)); 1135 1136 btally = buffer.tally; 1137 nwords = divide (btally, 4, 17, 0); 1138 nchars = mod (btally, 4); 1139 lrc = ""b; 1140 1141 if nwords > 0 1142 then do; /* for whole words, compute lrc word by word */ 1143 temp = ""b; 1144 p = addr (buffer.chars); 1145 do i = 1 to nwords; 1146 temp = bool (temp, p -> bwords (i), XOR); 1147 end; 1148 1149 do i = 1 to 4; /* collapse temp into single char lrc */ 1150 lrc = bool (lrc, temp_chars (i), XOR); 1151 end; 1152 end; 1153 1154 if nchars > 0 1155 then do; /* pick up leftover chars */ 1156 p = addr (buffer.chars (btally - nchars)); 1157 do i = 1 to nchars; 1158 lrc = bool (lrc, p -> bchars (i), XOR); 1159 end; 1160 end; 1161 1162 return (lrc); 1163 end; 1164 1165 /* Subroutine to write a formfeed */ 1166 1167 write_ff: 1168 proc (ff_sent); 1169 1170 dcl ff_sent bit (1); /* ON if we succeed */ 1171 dcl p ptr; 1172 dcl (hlen, tlen) fixed bin; 1173 1174 ff_sent = "0"b; 1175 pvste.eop = "0"b; 1176 if pvmd.omit_ff | (substr (pvste.name, 1, 1) = "x") 1177 then return; 1178 if (pvste.write_chain ^= 0) | pvmd.write_chan = subchan 1179 then return; /* don't clear screen during output */ 1180 1181 call tty_space_man$get_buffer ((pvste.devx), 16, OUTPUT, p); 1182 if p = null /* did not get buffer, tough luck */ 1183 then return; 1184 1185 pvste.eop = "1"b; /* so frame header will have formfeed */ 1186 call get_frame_header (hlen); 1187 pvste.eop = "0"b; 1188 substr (string (p -> buffer.chars), 1, hlen) = substr (string (frame_header), 1, hlen); 1189 1190 call get_frame_trailer; 1191 tlen = length (string (frame_trailer)); 1192 substr (string (p -> buffer.chars), hlen + 1, tlen) = string (frame_trailer); 1193 1194 p -> buffer.tally = hlen + tlen; 1195 pvste.write_chain = bin (rel (p), 18); 1196 if pvmd.write_chan = 0 1197 then call write_frame (code); 1198 1199 ff_sent = "1"b; 1200 1201 end; 1202 1203 /* Subroutine to build a frame header */ 1204 1205 get_frame_header: 1206 proc (nchars); 1207 1208 dcl nchars fixed bin; /* number of chars in frame header */ 1209 dcl adr bit (9); 1210 1211 1212 frame_header = frame_header_template; /* init invariant part of frame header */ 1213 adr = bit (pvste.station_addr, 9) | SELECT; /* get select address */ 1214 unspec (frame_header.select_msg.adr) = adr; 1215 unspec (frame_header.select_msg.lrc) = bool (COMMON_LRC, adr, XOR); 1216 /* compute LRC */ 1217 1218 if pvste.printer /* get text message address */ 1219 then adr = PRINTER; 1220 else adr = DISPLAY; 1221 unspec (frame_header.text_msg.adr) = adr; 1222 text_lrc = bool (COMMON_LRC, adr, XOR); /* factor adr into text msg lrc */ 1223 1224 if pvste.printer 1225 then do; 1226 frame_header.text_msg.sta = PRT; /* make this a transparent printer message */ 1227 text_lrc = bool (text_lrc, unspec (PRT), XOR); 1228 end; 1229 1230 nchars = length (string (frame_header)); 1231 if pvste.eop & ^pvmd.omit_ff & ^(substr (pvste.name, 1, 1) = "x") 1232 /* cursor at end of page, must clear screen */ 1233 then text_lrc = bool (text_lrc, unspec (FF), XOR);/* account for added FF */ 1234 else nchars = nchars - 2; /* remove FF from frame header */ 1235 1236 end; 1237 1238 1239 1240 /* Subroutine to build a frame trailer */ 1241 1242 get_frame_trailer: 1243 proc; 1244 1245 dcl adr bit (9); 1246 1247 1248 frame_trailer = frame_trailer_template; /* init invariant parts of frame trailer */ 1249 unspec (frame_trailer.text_msg.lrc) = text_lrc; 1250 1251 adr = bit (pvste.station_addr, 9) | POLL; /* get poll address */ 1252 unspec (frame_trailer.poll_msg.adr) = adr; 1253 unspec (frame_trailer.poll_msg.lrc) = bool (COMMON_LRC, adr, XOR); 1254 /* compute lrc */ 1255 1256 end; 1257 1258 /* Subroutine to write an output frame for a specified subchannel */ 1259 1260 write_frame: 1261 proc (code); 1262 1263 dcl code fixed bin (35); 1264 1265 1266 code = 0; 1267 pvmd.write_chan = subchan; 1268 1269 if pvste.printer 1270 then do; 1271 call duplicate_write_chain (); 1272 if pvmd.writep = null /* couldn't get the space */ 1273 then do; 1274 call tty_space_man$needs_space (pvmd.devx); 1275 /* find out when more space is available */ 1276 return; 1277 end; 1278 pvste.hold_output = "1"b; /* no more output until printer sends ACK */ 1279 end; 1280 else do; 1281 pvmd.writep = ptr (ttybp, pvste.write_chain); 1282 pvste.write_chain = 0; 1283 pvste.hold_output = pvmd.writep -> buffer.end_of_page; 1284 /* if at EOP, hold output until next input */ 1285 end; 1286 1287 pvmd.writep -> buffer.end_of_page = "0"b; 1288 call write_bchain (code); 1289 1290 end; 1291 1292 /* Subroutine to write the current write buffer chain */ 1293 1294 write_bchain: 1295 proc (code); 1296 1297 dcl code fixed bin (35); 1298 1299 1300 call channel_manager$write (pvmd.devx, pvmd.writep, code); 1301 if code ^= 0 1302 then do; 1303 if code = et_noalloc /* parent multiplexer ran out of space */ 1304 then do; 1305 code = 0; 1306 call tty_space_man$needs_space (pvmd.devx); 1307 /* find out when more space is available */ 1308 end; 1309 else do; /* abort current write frame */ 1310 subchan = pvmd.write_chan; 1311 pvstep = addr (pvmd.subchan_table (subchan)); 1312 pvste.hold_output = "0"b; 1313 call free_bchain; 1314 call free_write_chain; 1315 end; 1316 1317 return; 1318 end; 1319 1320 pvmd.send_output = "0"b; 1321 end; 1322 1323 1324 1325 /* Subroutine to free the current write buffer chain */ 1326 1327 free_bchain: 1328 proc; 1329 1330 call channel_manager$control (pvmd.devx, "abort", addr (WRITE_ABORT), 0); 1331 call tty_space_man$free_chain (pvmd.devx, OUTPUT, pvmd.writep); 1332 pvmd.writep = null; 1333 pvmd.write_chan = 0; 1334 1335 end; 1336 1337 /* Subroutine to duplicate a write buffer chain */ 1338 1339 duplicate_write_chain: 1340 proc; 1341 1342 dcl (p, newp, prev_newp, new_headp) ptr; 1343 dcl end_chain bit (1); 1344 dcl nwords fixed bin; 1345 dcl bwords (nwords) fixed bin based; 1346 1347 1348 p = ptr (ttybp, pvste.write_chain); /* get ptr to head of write chain */ 1349 prev_newp = null; 1350 end_chain = "0"b; 1351 do while (^end_chain); 1352 nwords = (bin (p -> buffer.size_code, 3) + 1) * 16; 1353 /* get number of words in buffer */ 1354 call tty_space_man$get_buffer ((pvste.devx), nwords, OUTPUT, newp); 1355 if newp = null /* failed to get buffer */ 1356 then do; 1357 if prev_newp ^= null 1358 then do; 1359 prev_newp -> buffer.next = 0; 1360 call tty_space_man$free_chain ((pvste.devx), OUTPUT, prev_newp); 1361 end; 1362 return; 1363 end; 1364 1365 newp -> bwords = p -> bwords; /* duplicate buffer */ 1366 if prev_newp = null /* this is first buffer of chain */ 1367 then new_headp = newp; 1368 else prev_newp -> buffer.next = bin (rel (newp), 18); 1369 prev_newp = newp; /* thread new buffer onto duplicate chain */ 1370 1371 if p -> buffer.next = 0 1372 then end_chain = "1"b; 1373 else p = ptr (ttybp, p -> buffer.next); 1374 end; 1375 1376 pvmd.writep = new_headp; 1377 return; 1378 1379 end; 1380 1381 /* Subroutine to free the write chain for a specified subchannel */ 1382 1383 free_write_chain: 1384 proc; 1385 1386 if pvste.write_chain ^= 0 1387 then do; 1388 call tty_space_man$free_chain ((pvste.devx), OUTPUT, ptr (addr (tty_buf$), pvste.write_chain)); 1389 pvste.write_chain = 0; 1390 end; 1391 1392 if pvste.dialed & ^pvste.hold_output & (pvmd.write_chan ^= subchan) 1393 /* solicit more output */ 1394 then call channel_manager$interrupt ((pvste.devx), SEND_OUTPUT, ""b); 1395 1396 end; 1397 1398 1399 1400 /* Subroutine to handle a mutliplexer crash */ 1401 1402 crash_mpx: 1403 proc; 1404 1405 dcl mpx_loaded bit (1); 1406 1407 mpx_loaded = pvmd.mpx_loaded; 1408 pvmd.mpx_loading, pvmd.mpx_loaded = "0"b; 1409 1410 1411 if mpx_loaded 1412 then do; 1413 if pvmd.writep ^= null 1414 then call free_bchain; 1415 do subchan = 1 to pvmd.nchan; /* clean up all the subchans */ 1416 pvstep = addr (pvmd.subchan_table (subchan)); 1417 pvste.dialed = "0"b; 1418 call free_write_chain; 1419 call channel_manager$interrupt ((pvste.devx), CRASH, ""b); 1420 end; 1421 end; 1422 1423 end; 1424 1425 1426 end; /* polled_vip_mpx */ SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0857.8 polled_vip_mpx.pl1 >spec>install>1115>polled_vip_mpx.pl1 221 1 08/10/81 1843.7 polled_vip_mpx_data.incl.pl1 >ldd>include>polled_vip_mpx_data.incl.pl1 223 2 10/20/82 0938.6 polled_vip_load_info.incl.pl1 >ldd>include>polled_vip_load_info.incl.pl1 225 3 10/20/82 0938.6 mcs_interrupt_info.incl.pl1 >ldd>include>mcs_interrupt_info.incl.pl1 227 4 11/08/82 1005.8 lct.incl.pl1 >ldd>include>lct.incl.pl1 229 5 07/21/88 2036.0 tty_buffer_block.incl.pl1 >ldd>include>tty_buffer_block.incl.pl1 231 6 03/19/81 1131.8 mcs_modes_change_list.incl.pl1 >ldd>include>mcs_modes_change_list.incl.pl1 233 7 05/06/80 0958.2 channel_manager_dcls.incl.pl1 >ldd>include>channel_manager_dcls.incl.pl1 235 8 06/18/81 0900.8 tty_space_man_dcls.incl.pl1 >ldd>include>tty_space_man_dcls.incl.pl1 237 9 03/27/82 0430.3 polled_vip_mpx_meters.incl.pl1 >ldd>include>polled_vip_mpx_meters.incl.pl1 239 10 03/27/82 0430.3 pvip_subchan_meters.incl.pl1 >ldd>include>pvip_subchan_meters.incl.pl1 241 11 06/18/81 0900.6 get_comm_meters_info.incl.pl1 >ldd>include>get_comm_meters_info.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. ACCEPT_INPUT 000062 constant fixed bin(17,0) initial dcl 3-15 set ref 781* ACK constant char(1) initial packed unaligned dcl 155 ref 815 ADR_MASK constant bit(9) initial packed unaligned dcl 155 ref 618 AWAIT_FIRST_RESPONSE constant fixed bin(17,0) initial dcl 155 ref 854 868 COMMON_LRC 006042 constant bit(9) initial packed unaligned dcl 155 ref 1215 1222 1253 CRASH 000077 constant fixed bin(17,0) initial dcl 3-12 set ref 1419* DIALUP 000067 constant fixed bin(17,0) initial dcl 3-10 set ref 1067* DISPLAY constant bit(9) initial packed unaligned dcl 155 ref 1220 ETB constant char(1) initial packed unaligned dcl 155 ref 479 ETX 006041 constant char(1) initial packed unaligned dcl 155 ref 754 ETX_XOR_ETB 006040 constant bit(9) initial packed unaligned dcl 155 ref 480 FF 006037 constant char(1) initial packed unaligned dcl 155 ref 709 1231 GET_COMM_METERS_INFO_VERSION_1 constant fixed bin(17,0) initial dcl 11-21 ref 294 HANGUP 000072 constant fixed bin(17,0) initial dcl 3-11 set ref 264* INPUT 000044 constant bit(1) initial packed unaligned dcl 8-20 set ref 638* 705* 760* NAK constant char(1) initial packed unaligned dcl 155 ref 824 NL constant char(1) initial packed unaligned dcl 155 ref 767 NUL constant char(1) initial packed unaligned dcl 155 ref 628 OUTPUT 000064 constant bit(1) initial packed unaligned dcl 8-21 set ref 396* 449* 490* 518* 1181* 1331* 1354* 1360* 1388* POLL constant bit(9) initial packed unaligned dcl 155 ref 618 1251 PRINTER constant bit(9) initial packed unaligned dcl 155 ref 1218 PRT 006036 constant char(1) initial packed unaligned dcl 155 ref 1226 1227 PVIP_SUBCHAN_METERS_VERSION_1 constant fixed bin(17,0) initial dcl 10-21 ref 298 PV_MPX_DOWN 000046 constant fixed bin(71,0) initial dcl 2-38 set ref 555* PV_MPX_MASKED 000044 constant fixed bin(71,0) initial dcl 2-39 set ref 971* PV_MPX_UP 000050 constant fixed bin(71,0) initial dcl 2-37 set ref 549* QUIT 000066 constant fixed bin(17,0) initial dcl 3-17 set ref 663* 842* 920* RESTART_CHARS 000052 constant char(4) initial packed unaligned dcl 155 ref 736 SELECT constant bit(9) initial packed unaligned dcl 155 ref 1213 SEND_OUTPUT 000075 constant fixed bin(17,0) initial dcl 3-13 set ref 590* 692* 1069* 1392* SOH constant char(1) initial packed unaligned dcl 155 ref 626 STATION_POLL constant fixed bin(17,0) initial dcl 155 ref 876 WRITE_ABORT 000064 constant bit(2) initial packed unaligned dcl 155 set ref 1330 1330 WRU_TIMEOUT 000055 constant fixed bin(17,0) initial dcl 3-20 set ref 267* XOR constant bit(4) initial packed unaligned dcl 155 ref 463 480 1146 1150 1158 1215 1222 1227 1231 1253 abort_info based structure level 1 dcl 90 addr builtin function dcl 142 ref 325 347 390 535 582 607 647 679 809 855 855 869 869 879 879 910 982 993 1035 1083 1083 1106 1144 1150 1156 1311 1330 1330 1388 1388 1416 adr 000332 automatic bit(9) packed unaligned dcl 1209 in procedure "get_frame_header" set ref 1213* 1214 1215 1218* 1220* 1221 1222 adr 1(09) 000113 automatic char(1) level 3 in structure "frame_header" packed packed unaligned dcl 52 in procedure "polled_vip_mpx" set ref 1214* adr 4(09) 000113 automatic char(1) level 3 in structure "frame_header" packed packed unaligned dcl 52 in procedure "polled_vip_mpx" set ref 1221* adr 000100 automatic bit(9) packed unaligned dcl 44 in procedure "polled_vip_mpx" set ref 617* 618 620* 631 631* 643 adr 000342 automatic bit(9) packed unaligned dcl 1245 in procedure "get_frame_trailer" set ref 1251* 1252 1253 adr 0(18) 000146 automatic fixed bin(9,0) level 2 in structure "ls_info" packed packed unsigned unaligned dcl 68 in procedure "polled_vip_mpx" set ref 803* 803 805 858 905* 905 907 adr 1(27) 000121 automatic char(1) level 3 in structure "frame_trailer" packed packed unaligned dcl 53 in procedure "polled_vip_mpx" set ref 1252* adr 0(09) based char(1) array level 3 in structure "input_frame" packed packed unaligned dcl 103 in procedure "polled_vip_mpx" set ref 617 631 arg1 0(18) 000142 automatic fixed bin(17,0) level 2 packed packed unaligned dcl 61 set ref 877* bad_output_frames 56 based fixed bin(17,0) level 3 dcl 1-8 set ref 895* 895 baud_rate 0(18) 000206 automatic fixed bin(18,0) level 2 in structure "dialup_info" packed packed unsigned unaligned dcl 3-30 in procedure "polled_vip_mpx" set ref 1065* baud_rate 2(18) based fixed bin(17,0) level 2 in structure "pvste" packed packed unaligned dcl 1-52 in procedure "polled_vip_mpx" ref 1065 bchars based bit(9) array packed unaligned dcl 1133 in procedure "get_buffer_lrc" ref 1158 bchars based char packed unaligned dcl 1080 in procedure "verify_text" set ref 1083* 1083 bin builtin function dcl 142 ref 452 469 472 497 510 523 643 680 710 723 732 766 1195 1352 1368 bit builtin function dcl 142 ref 710 732 766 1213 1251 blockp 000212 automatic pointer dcl 5-19 set ref 409* 413 414 417 418* 418 426 429 459* 464 466* 466 490* 491 497 499 707* 708 709 710 741* 744 747 748* 748 754 757 760* 761* 762 763 766 767 780 1082 1083 1083 1136 1144 1156 bmp 000102 automatic pointer dcl 45 set ref 679* 680 bool builtin function dcl 142 ref 463 480 1146 1150 1158 1215 1222 1227 1231 1253 break 0(20) based bit(1) level 3 packed packed unaligned dcl 5-28 ref 477 break_char 1(18) 000210 automatic bit(1) level 3 packed packed unaligned dcl 3-38 set ref 713* 770* break_msg based structure level 1 packed packed unaligned dcl 94 btally 000303 automatic fixed bin(17,0) dcl 1128 in procedure "get_buffer_lrc" set ref 1136* 1137 1138 1156 btally 000252 automatic fixed bin(17,0) dcl 1079 in procedure "verify_text" set ref 1082* 1083 1083 buffer based structure level 1 dcl 5-28 buffer_pad 0(09) 000206 automatic fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 3-30 set ref 1061* 1061 1062 bwords based bit(36) array dcl 1132 in procedure "get_buffer_lrc" ref 1146 bwords based fixed bin(17,0) array dcl 1345 in procedure "duplicate_write_chain" set ref 1365* 1365 chain_head 000210 automatic bit(18) level 3 packed packed unaligned dcl 3-38 set ref 606 chain_ptr 000104 automatic pointer dcl 46 set ref 392* 396* 409 452 459 chain_tail 0(18) 000210 automatic bit(18) level 3 packed packed unaligned dcl 3-38 set ref 780* channel_manager$control 000044 constant entry external dcl 7-13 ref 855 869 879 1330 channel_manager$interrupt 000046 constant entry external dcl 7-25 ref 264 267 590 663 692 781 842 920 1067 1069 1392 1419 channel_manager$write 000042 constant entry external dcl 7-10 ref 1300 chars 1 based char(1) array level 2 packed packed unaligned dcl 5-28 set ref 455 483 504 607 709* 730 730 736 754 767* 1083 1083 1144 1156 1188 1192 code parameter fixed bin(35,0) dcl 1297 in procedure "write_bchain" set ref 1294 1300* 1301 1303 1305* code parameter fixed bin(35,0) dcl 1263 in procedure "write_frame" set ref 1260 1266* 1288* code 000264 automatic fixed bin(35,0) dcl 1098 in procedure "send_next_frame" set ref 1113* 1114 code 000106 automatic fixed bin(35,0) dcl 47 in procedure "polled_vip_mpx" set ref 511* 549* 555* 571* 572 837* 855* 869* 870 879* 954* 955 971* 1196* controller_poll 52(05) based bit(1) level 3 packed packed unaligned dcl 1-8 ref 852 cur_nstation 15(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 1-8 set ref 865* 865 866 873* 877 cur_station_mask 37 based bit(1) array level 2 packed packed unaligned dcl 1-8 set ref 861 864* 872* 878 1036 current_meters 2 based structure level 2 dcl 10-7 set ref 302* devx based fixed bin(17,0) level 2 in structure "pvmd" dcl 1-8 in procedure "polled_vip_mpx" set ref 638* 705* 855* 869* 879* 1274* 1300* 1306* 1330* 1331* devx 1 based fixed bin(17,0) level 2 in structure "pvste" packed packed unaligned dcl 1-52 in procedure "polled_vip_mpx" ref 264 267 396 449 490 518 590 663 692 760 781 842 920 1067 1069 1181 1354 1360 1388 1392 1419 dialed 2(05) based bit(1) level 3 packed packed unaligned dcl 1-52 set ref 255 262* 394 590 648 810 911 1058* 1392 1417* dialup_info 000206 automatic structure level 1 dcl 3-30 in procedure "polled_vip_mpx" set ref 1060* 1067 1067 dialup_info 44 based bit(72) level 2 in structure "pvmd" dcl 1-8 in procedure "polled_vip_mpx" set ref 545* 1060 discarded_printer_frame 5 based fixed bin(35,0) level 3 dcl 1-52 set ref 832* 832 display 16 based fixed bin(8,0) array level 3 packed packed unaligned dcl 1-8 ref 644 907 display_pgofs 6 based fixed bin(35,0) level 3 dcl 1-52 set ref 915* 915 divide builtin function dcl 142 ref 1062 1137 end_chain 000404 automatic bit(1) packed unaligned dcl 1343 in procedure "duplicate_write_chain" set ref 1350* 1351 1371* end_chain 000107 automatic bit(1) packed unaligned dcl 48 in procedure "polled_vip_mpx" set ref 411* 412 414* 460* 461 464* 742* 743 744* end_frame 3(18) 000121 automatic structure level 2 packed packed unaligned dcl 53 end_of_page 0(18) based bit(1) level 3 packed packed unaligned dcl 5-28 set ref 433 434* 509* 524* 1283 1287* entries 6 based structure array level 2 dcl 6-10 set ref 325 347 eof 4(18) 000121 automatic char(1) initial level 3 packed packed unaligned dcl 53 set ref 53* eop 2(02) based bit(1) level 3 packed packed unaligned dcl 1-52 set ref 508* 670* 691* 693 922* 1055* 1057* 1175* 1185* 1187* 1231 eop_sw 000110 automatic bit(1) packed unaligned dcl 49 set ref 433* 477 509 524 error 4(03) based bit(1) level 3 packed packed unaligned dcl 6-26 set ref 352* error_counters 53 based structure level 2 dcl 1-8 error_table_$action_not_performed 000016 external static fixed bin(35,0) dcl 131 ref 1009 error_table_$bad_mode 000020 external static fixed bin(35,0) dcl 132 ref 1010 error_table_$invalid_state 000022 external static fixed bin(35,0) dcl 133 ref 1011 error_table_$noalloc 000024 external static fixed bin(35,0) dcl 134 ref 1008 error_table_$undefined_order_request 000026 external static fixed bin(35,0) dcl 135 ref 1007 error_table_$unimplemented_version 000030 external static fixed bin(35,0) dcl 136 ref 1012 et_action_not_performed 000010 internal static fixed bin(35,0) dcl 122 set ref 1009* 1030 et_bad_mode 000011 internal static fixed bin(35,0) dcl 123 set ref 353 1010* et_invalid_state 000012 internal static fixed bin(35,0) dcl 124 set ref 1011* 1038 et_noalloc 000013 internal static fixed bin(35,0) dcl 125 set ref 525 1008* 1303 et_undefined_order_request 000014 internal static fixed bin(35,0) dcl 126 set ref 310 1007* et_unimplemented_version 000015 internal static fixed bin(35,0) dcl 127 set ref 294 298 1012* etb_mode 52(11) based bit(1) level 3 packed packed unaligned dcl 1-8 ref 477 etx 2(18) 000113 automatic char(1) initial level 3 in structure "frame_header" packed packed unaligned dcl 52 in procedure "polled_vip_mpx" set ref 52* etx 3 000121 automatic char(1) initial level 3 in structure "frame_trailer" packed packed unaligned dcl 53 in procedure "polled_vip_mpx" set ref 53* etx 000121 automatic char(1) initial level 3 in structure "frame_trailer" packed packed unaligned dcl 53 in procedure "polled_vip_mpx" set ref 53* 479* fc1 2(09) 000121 automatic char(1) initial level 3 in structure "frame_trailer" packed packed unaligned dcl 53 in procedure "polled_vip_mpx" set ref 53* fc1 4(27) 000113 automatic char(1) initial level 3 in structure "frame_header" packed packed unaligned dcl 52 in procedure "polled_vip_mpx" set ref 52* fc1 0(27) based char(1) array level 3 in structure "input_frame" packed packed unaligned dcl 103 in procedure "polled_vip_mpx" set ref 661 700 fc1 1(27) 000113 automatic char(1) initial level 3 in structure "frame_header" packed packed unaligned dcl 52 in procedure "polled_vip_mpx" set ref 52* fc2 2 000113 automatic char(1) initial level 3 in structure "frame_header" packed packed unaligned dcl 52 in procedure "polled_vip_mpx" set ref 52* fc2 5 000113 automatic char(1) initial level 3 in structure "frame_header" packed packed unaligned dcl 52 in procedure "polled_vip_mpx" set ref 52* fc2 2(18) 000121 automatic char(1) initial level 3 in structure "frame_trailer" packed packed unaligned dcl 53 in procedure "polled_vip_mpx" set ref 53* ff 5(18) 000113 automatic char(1) initial level 3 packed packed unaligned dcl 52 set ref 52* ff_sent 000111 automatic bit(1) packed unaligned dcl 50 in procedure "polled_vip_mpx" set ref 655* 693* 704* 777 ff_sent parameter bit(1) packed unaligned dcl 1170 in procedure "write_ff" set ref 1167 1174* 1199* flags 0(18) based structure level 2 in structure "buffer" packed packed unaligned dcl 5-28 in procedure "polled_vip_mpx" flags 2 based structure level 2 in structure "pvste" packed packed unaligned dcl 1-52 in procedure "polled_vip_mpx" flags 52 based structure level 2 in structure "pvmd" dcl 1-8 in procedure "polled_vip_mpx" flags 1 based structure level 2 in structure "pvip_subchan_meter_struc" dcl 10-7 in procedure "polled_vip_mpx" flags 4 based structure level 2 in structure "mcle" dcl 6-26 in procedure "polled_vip_mpx" flags 1(18) 000210 automatic structure level 2 in structure "rtx_info" packed packed unaligned dcl 3-38 in procedure "polled_vip_mpx" flags 5 based structure level 2 in structure "mcl" dcl 6-10 in procedure "polled_vip_mpx" formfeed 51(09) based char(1) level 3 packed packed unaligned dcl 1-8 ref 700 formfeed_present 1(21) 000210 automatic bit(1) level 3 packed packed unaligned dcl 3-38 set ref 712* 771* found_chan 000263 automatic bit(1) packed unaligned dcl 1097 set ref 1102* 1104 1107* 1109 1110 found_text 000112 automatic bit(1) packed unaligned dcl 51 set ref 624* 625 630* 636 frame_header 000113 automatic structure level 1 dcl 52 set ref 455 1188 1212* 1230 frame_header_template 000000 constant structure level 1 dcl 181 ref 1212 frame_trailer 000121 automatic structure level 1 dcl 53 set ref 474 483 487 502 504 1061 1191 1192 1248* frame_trailer_template 000006 constant structure level 1 dcl 203 ref 1248 function_codes 51 based structure level 2 dcl 1-8 gcos_break 52(10) based bit(1) level 3 packed packed unaligned dcl 1-8 ref 677 get_comm_meters_info based structure level 1 dcl 11-8 hbound builtin function dcl 142 ref 540 798 headp 000126 automatic pointer dcl 54 set ref 449* 450 452 455 457 509 510 518 518* 606* 607 638* 680 680 705 705 705 707 723 730 730 732 734 736 741 hlen 000322 automatic fixed bin(17,0) dcl 1172 set ref 1186* 1188 1188 1192 1194 hndlquit 2(03) based bit(1) level 3 packed packed unaligned dcl 1-52 set ref 343* 348* 665 1054* hold_output 2(01) based bit(1) level 3 packed packed unaligned dcl 1-52 set ref 283 401 590 667 669* 688 690* 812 817* 836* 921* 1054* 1107 1278* 1283* 1312* 1392 i 000304 automatic fixed bin(17,0) dcl 1128 in procedure "get_buffer_lrc" set ref 1145* 1146* 1149* 1150* 1157* 1158* i 000130 automatic fixed bin(17,0) dcl 55 in procedure "polled_vip_mpx" set ref 324* 325* 346* 347* 472* 473 483 485 493 502* 504 616* 621* 625* 625* 626 628 631 633* 643* 644 722* 723 730 752* 754* 756* 758 765 767 858* 859 859 861 864 1104* 1105* in 2 based structure level 2 in structure "saved_meters" dcl 4-68 in procedure "polled_vip_mpx" in 30 based structure array level 4 in structure "lct" dcl 4-11 in procedure "polled_vip_mpx" in 26 based structure level 3 in structure "logical_chan_meters" dcl 11-17 in procedure "polled_vip_mpx" in 10 based structure level 3 in structure "lcte" dcl 4-20 in procedure "polled_vip_mpx" in 2 based structure level 3 in structure "logical_chan_meters" dcl 11-17 in procedure "polled_vip_mpx" infop 000132 automatic pointer dcl 56 set ref 273* 274 280* 281 283 285 293* 294 297 init 5 based bit(1) level 3 packed packed unaligned dcl 6-10 ref 343 input_chain 000210 automatic structure level 2 packed packed unaligned dcl 3-38 input_count 1 000210 automatic fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 3-38 set ref 711* 772* 772 input_frame based structure level 1 dcl 103 set ref 680 722 772 input_framep 000134 automatic pointer dcl 57 set ref 607* 617 626 628 631 661 679 680 700 722 772 input_frames_lost 54 based fixed bin(17,0) level 3 dcl 1-8 set ref 885* 885 input_timeouts 53 based fixed bin(17,0) level 3 dcl 1-8 set ref 849* 849 int_data 000136 automatic bit(72) dcl 58 set ref 538* 545 605 797 int_type 000140 automatic fixed bin(17,0) dcl 59 set ref 537* 540 540 542 last_write_chan 000262 automatic fixed bin(17,0) dcl 1096 set ref 1100* 1104 1104 1116* lbound builtin function dcl 142 ref 540 798 lc_info 000142 automatic structure level 1 dcl 61 set ref 855 855 869 869 879 879 lcte based structure level 1 dcl 4-20 leftover_chain_ptr 000144 automatic pointer dcl 66 set ref 426* 430* 514 521 523 length builtin function dcl 142 ref 474 487 502 680 722 772 1061 1191 1230 listen 2(04) based bit(1) level 3 packed packed unaligned dcl 1-52 set ref 254* 262* 650 load_ev_chan 42 based fixed bin(71,0) level 2 dcl 1-8 set ref 549* 555* 971* load_proc_id 40 based bit(36) level 2 dcl 1-8 set ref 549* 555* 971* lrc 000300 automatic bit(9) packed unaligned dcl 1127 in procedure "get_buffer_lrc" set ref 1139* 1150* 1150 1158* 1158 1162 lrc 2(27) 000113 automatic char(1) level 3 in structure "frame_header" packed packed unaligned dcl 52 in procedure "polled_vip_mpx" set ref 1215* lrc 3(09) 000121 automatic char(1) level 3 in structure "frame_trailer" packed packed unaligned dcl 53 in procedure "polled_vip_mpx" set ref 1253* lrc 0(09) 000121 automatic char(1) level 3 in structure "frame_trailer" packed packed unaligned dcl 53 in procedure "polled_vip_mpx" set ref 480* 480 1249* ls_info 000146 automatic structure level 1 dcl 68 set ref 797* max builtin function dcl 142 ref 1062 max_buf_size 1 000206 automatic fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 3-30 set ref 1062* 1062 max_text_len 47 based fixed bin(17,0) level 2 dcl 1-8 ref 414 422 1062 mcl based structure level 1 dcl 6-10 mcle based structure level 1 dcl 6-26 mclep 000216 automatic pointer dcl 6-24 set ref 325* 326 326 347* 348 348 348 352 mclp 000214 automatic pointer dcl 6-7 set ref 323* 324 325 342* 343 346 347 meter_ptr 000150 automatic pointer dcl 74 set ref 297* 298 298 302 303 305 meters 26 based structure array level 3 in structure "lct" dcl 4-11 in procedure "polled_vip_mpx" meters 6 based structure level 2 in structure "lcte" dcl 4-20 in procedure "polled_vip_mpx" meters 4 based structure level 2 in structure "pvste" dcl 1-52 in procedure "polled_vip_mpx" set ref 288 302 min builtin function dcl 142 ref 474 959 959 1062 mod builtin function dcl 142 ref 803 858 905 1138 mode_name based char(16) level 2 packed packed unaligned dcl 6-26 ref 326 348 mode_switch 4 based bit(1) level 3 packed packed unaligned dcl 6-26 ref 348 mpx_loaded 000422 automatic bit(1) packed unaligned dcl 1405 in procedure "crash_mpx" set ref 1407* 1411 mpx_loaded 52(03) based bit(1) level 3 in structure "pvmd" packed packed unaligned dcl 1-8 in procedure "polled_vip_mpx" set ref 548* 564 601 794 941 1028 1407 1408* mpx_loading 52(02) based bit(1) level 3 packed packed unaligned dcl 1-8 set ref 547* 1408* mpx_mode 4(02) based bit(1) level 3 packed packed unaligned dcl 6-26 set ref 326* 348 mpx_started 52(01) based bit(1) level 3 packed packed unaligned dcl 1-8 ref 255 650 msg based structure array level 2 packed packed unaligned dcl 103 set ref 679 n_entries 1 based fixed bin(17,0) level 2 dcl 6-10 ref 324 346 naks 2(09) based fixed bin(8,0) level 2 packed packed unaligned dcl 1-52 set ref 819* 828* 828 830 name 2 based char(32) level 2 in structure "pvmd" packed packed unaligned dcl 1-8 in procedure "polled_vip_mpx" set ref 928* name 0(09) based char(3) level 2 in structure "pvste" packed packed unaligned dcl 1-52 in procedure "polled_vip_mpx" ref 657 1176 1231 nchan 1 based fixed bin(17,0) level 2 dcl 1-8 ref 1104 1415 nchars 000302 automatic fixed bin(17,0) dcl 1128 in procedure "get_buffer_lrc" set ref 1138* 1154 1156 1157 nchars 000152 automatic fixed bin(17,0) dcl 75 in procedure "polled_vip_mpx" set ref 408* 413* 413 414 422 454* 455 455 457 469* 471* 471 473* 473 474* 474 483 483 483 485 487* 487 488 502 504 504 505 723* 724 726 730 730 732 736 754 757* 758 763* 763 765* 765 766 767 nchars parameter fixed bin(17,0) dcl 1208 in procedure "get_frame_header" set ref 1205 1230* 1234* 1234 new_headp 000402 automatic pointer dcl 1342 set ref 1366* 1376 newp 000376 automatic pointer dcl 1342 set ref 1354* 1355 1365 1366 1368 1369 next based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 5-28 set ref 414 418 425* 452* 464 466 497* 500* 521* 523* 680 705 705 705 708* 734 744 748 762* 1359* 1368* 1371 1373 nmsg 000153 automatic fixed bin(17,0) dcl 76 set ref 633* 661 679 680 700 722 772 nstation 15 based fixed bin(17,0) level 2 packed packed unaligned dcl 1-8 ref 873 nul 5(27) 000113 automatic char(1) initial level 3 packed packed unaligned dcl 52 set ref 52* null builtin function dcl 142 ref 298 379 397 410 430 450 491 518 521 569 740 952 1182 1272 1332 1349 1355 1357 1366 1413 nwords 000301 automatic fixed bin(17,0) dcl 1128 in procedure "get_buffer_lrc" set ref 1137* 1141 1145 nwords 000405 automatic fixed bin(17,0) dcl 1344 in procedure "duplicate_write_chain" set ref 1352* 1354* 1365 omit_ff 52(09) based bit(1) level 3 packed packed unaligned dcl 1-8 ref 1176 1231 omit_nl 52(08) based bit(1) level 3 packed packed unaligned dcl 1-8 ref 726 752 order 000154 automatic char(32) packed unaligned dcl 77 set ref 249* 252 260 267 271 278 288 291 output_frames_lost 55 based fixed bin(17,0) level 3 dcl 1-8 set ref 890* 890 output_in_fnp 1(19) 000210 automatic bit(1) level 3 packed packed unaligned dcl 3-38 set ref 776* output_in_ring_0 1(20) 000210 automatic bit(1) level 3 packed packed unaligned dcl 3-38 set ref 777* 779* output_pending 2 based bit(1) level 2 dcl 115 set ref 281* 283* 285* output_restarted 000164 automatic bit(1) packed unaligned dcl 78 set ref 656* 695* 702 726 734 output_timeouts 57 based fixed bin(17,0) level 3 dcl 1-8 set ref 900* 900 p 000306 automatic pointer dcl 1130 in procedure "get_buffer_lrc" set ref 1144* 1146 1156* 1158 p 000320 automatic pointer dcl 1171 in procedure "write_ff" set ref 1181* 1182 1188 1192 1194 1195 p 000374 automatic pointer dcl 1342 in procedure "duplicate_write_chain" set ref 1348* 1352 1365 1371 1373* 1373 parent_ptr 6 based pointer level 2 dcl 11-8 ref 297 pgof_limit_reached 7 based fixed bin(35,0) level 3 dcl 1-52 set ref 919* 919 pgofs 3 based fixed bin(8,0) level 2 packed packed unaligned dcl 1-52 set ref 583 586 586* 914* 914 916 918* 1053* pm_chain_ptr parameter pointer dcl 29 set ref 376 379* 387 392 397* 514* pm_code parameter fixed bin(35,0) dcl 30 set ref 245 250* 294* 298* 310* 318 329* 336 341* 353* 363 369* 376 381* 387 398* 404* 515* 525* 1030* 1038* pm_infop parameter pointer dcl 31 ref 245 273 280 293 pm_int_data parameter bit(72) dcl 32 ref 532 538 pm_int_type parameter fixed bin(17,0) dcl 33 ref 532 537 pm_last_write_chan parameter fixed bin(17,0) dcl 1094 ref 1091 1100 pm_mclp parameter pointer dcl 34 ref 318 323 336 342 pm_modes parameter char packed unaligned dcl 35 set ref 363 367* pm_more_input parameter bit(1) dcl 36 set ref 376 380* pm_order parameter char packed unaligned dcl 37 ref 245 249 pm_pvmdp parameter pointer dcl 38 ref 245 318 336 363 376 387 532 536 977 980 990 994 1027 pm_subchan parameter fixed bin(17,0) dcl 39 ref 245 318 336 363 376 387 977 981 1034 poll_msg 0(18) 000121 automatic structure level 2 packed packed unaligned dcl 53 prev_blockp 000166 automatic pointer dcl 79 set ref 410* 417* 424 740* 747* 761 prev_newp 000400 automatic pointer dcl 1342 set ref 1349* 1357 1359 1360* 1366 1368 1369* printer 16(09) based fixed bin(8,0) array level 3 in structure "pvmd" packed packed unaligned dcl 1-8 in procedure "polled_vip_mpx" ref 805 printer 1 based bit(1) level 3 in structure "pvip_subchan_meter_struc" packed packed unaligned dcl 10-7 in procedure "polled_vip_mpx" set ref 305* printer 2 based bit(1) level 3 in structure "pvste" packed packed unaligned dcl 1-52 in procedure "polled_vip_mpx" ref 283 305 477 1055 1065 1218 1224 1269 printer_naks 4 based fixed bin(35,0) level 3 dcl 1-52 set ref 829* 829 ptr builtin function dcl 142 ref 418 466 606 705 705 748 1281 1348 1373 1388 1388 pvip_mpx_meters based structure level 1 dcl 9-13 pvip_subchan_meter_struc based structure level 1 dcl 10-7 pvip_subchan_meters based structure level 1 dcl 10-15 set ref 288* 303 pvmd based structure level 1 dcl 1-8 pvmdp 000202 automatic pointer dcl 1-5 set ref 255 281 401 414 422 477 511 536* 545 547 548 549 549 555 555 564 568 569 576 577 582 601 638 644 647 650 661 677 700 705 726 752 779 794 805 809 837 849 849 852 855 861 864 865 865 866 869 872 872 873 873 877 878 879 885 885 890 890 895 895 900 900 907 910 928 941 949 952 959 959 971 971 980* 982 994* 1027* 1028 1035 1036 1060 1062 1104 1106 1176 1178 1196 1231 1267 1272 1274 1281 1283 1287 1300 1300 1306 1310 1311 1320 1330 1331 1331 1332 1333 1376 1392 1407 1408 1408 1413 1415 1416 pvste based structure level 1 dcl 1-52 pvstep 000204 automatic pointer dcl 1-50 set ref 254 255 255 262 262 264 267 281 283 283 288 288 302 303 305 343 348 394 396 401 401 449 477 490 508 510 518 582* 583 585 585 586 586 586 586 590 590 590 647* 648 650 650 657 663 665 667 669 670 688 690 691 692 693 760 779 781 809* 810 812 817 819 826 828 828 829 829 830 832 832 836 842 910* 911 914 914 915 915 916 918 918 919 919 920 921 922 982* 1035* 1036 1053 1053 1054 1054 1055 1055 1057 1058 1065 1065 1067 1069 1106* 1107 1107 1175 1176 1178 1181 1185 1187 1195 1213 1218 1224 1231 1231 1251 1269 1278 1281 1282 1283 1311* 1312 1348 1354 1360 1386 1388 1388 1388 1389 1392 1392 1392 1416* 1417 1419 pxss$ring_0_wakeup 000034 constant entry external dcl 148 ref 549 555 971 quit 51 based char(1) level 3 packed packed unaligned dcl 1-8 ref 661 rel builtin function dcl 142 ref 452 497 510 523 780 1195 1368 resetwrite based bit(1) level 2 packed packed unaligned dcl 90 ref 274 rtx_info 000210 automatic structure level 1 dcl 3-38 set ref 605* 781 781 saved_meters 6 based structure level 2 dcl 10-7 set ref 303* saved_meters_ptr 10 based pointer level 2 dcl 1-52 ref 288 303 saved_write_chan 000170 automatic fixed bin(17,0) dcl 80 set ref 576* 578* 580 582 select_msg 000113 automatic structure level 2 packed packed unaligned dcl 52 send_output 52 based bit(1) level 3 packed packed unaligned dcl 1-8 set ref 568* 949 1320* size_code 0(24) based fixed bin(3,0) level 2 packed packed unsigned unaligned dcl 5-28 ref 469 1352 slave 2(06) based bit(1) level 3 packed packed unaligned dcl 1-52 ref 255 650 soh 1 000113 automatic char(1) initial level 3 in structure "frame_header" packed packed unaligned dcl 52 in procedure "polled_vip_mpx" set ref 52* soh based char(1) array level 3 in structure "input_frame" packed packed unaligned dcl 103 in procedure "polled_vip_mpx" set ref 626 soh 4 000113 automatic char(1) initial level 3 in structure "frame_header" packed packed unaligned dcl 52 in procedure "polled_vip_mpx" set ref 52* soh 1(18) 000121 automatic char(1) initial level 3 in structure "frame_trailer" packed packed unaligned dcl 53 in procedure "polled_vip_mpx" set ref 53* sta 0(27) 000146 automatic char(1) level 2 in structure "ls_info" packed packed p_mpx" set ref 52* subchan 000171 automatic fixed bin(17,0) dcl 81 set ref 281 401 644* 645 647 779 805* 807 809 907* 908 910 981* 982 1034* 1035 1105* 1106 1116 1178 1267 1310* 1311 1392 1415* 1416* subchan_table 62 based structure array level 2 dcl 1-8 set ref 582 647 809 910 982 1035 1106 1311 1416 substr builtin function dcl 142 set ref 455* 455 483* 483 504* 504 643 657 730* 730 736 1176 1188* 1188 1192* 1231 syn 000113 automatic char(1) initial array level 3 in structure "frame_header" packed packed unaligned dcl 52 in procedure "polled_vip_mpx" set ref 52* 52* 52* 52* syn 0(18) 000121 automatic char(1) initial array level 3 in structure "frame_trailer" packed packed unaligned dcl 53 in procedure "polled_vip_mpx" set ref 53* 53* 53* 53* syn 3 000113 automatic char(1) initial array level 3 in structure "frame_header" packed packed unaligned dcl 52 in procedure "polled_vip_mpx" set ref 52* 52* 52* 52* syn 3(18) 000121 automatic char(1) initial array level 3 in structure "frame_trailer" packed packed unaligned dcl 53 in procedure "polled_vip_mpx" set ref 53* 53* 53* 53* syserr 000036 constant entry external dcl 149 ref 928 tailp 000172 automatic pointer dcl 82 set ref 424* 425 429* 433 434 469 472 477 483 485 493 497 499* 500 504 505 521 523 524 tally 0(27) based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 5-28 set ref 413 457* 472 485* 493* 505* 680 710* 723 732* 757 763 766* 1082 1136 1194* temp 000305 automatic bit(36) dcl 1129 set ref 1143* 1146* 1146 1150 temp_chars based bit(9) array packed unaligned dcl 1134 ref 1150 text 1(18) based char(6) level 2 packed packed unaligned dcl 94 ref 680 text_lrc 000174 automatic bit(9) packed unaligned dcl 83 set ref 463* 463 1222* 1227* 1227 1231* 1231 1249 text_msg 000121 automatic structure level 2 in structure "frame_trailer" packed packed unaligned dcl 53 in procedure "polled_vip_mpx" text_msg 3 000113 automatic structure level 2 i003477 7100 04 tra 1855,ic 003525 000027 aa 003527 7100 04 tra 1879,ic 003556 000030 aa 003526 7100 04 tra 1878,ic 003556 000031 aa 003525 7100 04 tra 1877,ic 003556 000032 aa 003524 7100 04 tra 1876,ic 003556 000033 aa 003524 7100 04 tra 1876,ic 003557 000034 aa 002761 7100 04 tra 1521,ic 003015 000035 aa 003112 7100 04 tra 1610,ic 003147 000036 aa 003315 7100 04 tra 1741,ic 003353 000037 aa 003317 7100 04 tra 1743,ic 003356 000040 aa 003321 7100 04 tra 1745,ic 003361 000041 aa 003323 7100 04 tra 1747,ic 003364 000042 aa 003325 7100 04 tra 1749,ic 003367 000043 aa 003431 7100 04 tra 1817,ic 003474 BEGIN PROCEDURE polled_vip_mpx PROLOGUE SEQUENCE 000161 aa 6 00424 4401 00 sxl0 pr6|276 STATEMENT 1 ON LINE 52 000162 aa 6 00222 4501 00 stz pr6|146 000163 aa 6 00222 0541 00 aos pr6|146 000164 aa 6 00222 7271 00 lxl7 pr6|146 000165 aa 026 117 100 400 mlr (),(pr,x7),fill(026) 000166 aa 000000 00 0000 desc9a 0,0 000167 aa 6 00115 60 0001 desc9a pr6|77(3),1 frame_header.syn 000170 aa 6 00222 0541 00 aos pr6|146 000171 aa 6 00222 7271 00 lxl7 pr6|146 000172 aa 026 117 100 400 mlr (),(pr,x7),fill(026) 000173 aa 000000 00 0000 desc9a 0,0 000174 aa 6 00115 60 0001 desc9a pr6|77(3),1 frame_header.syn 000175 aa 6 00222 0541 00 aos pr6|146 000176 aa 6 00222 7271 00 lxl7 pr6|146 000177 aa 026 117 100 400 mlr (),(pr,x7),fill(026) 000200 aa 000000 00 0000 desc9a 0,0 000201 aa 6 00115 60 0001 desc9a pr6|77(3),1 frame_header.syn 000202 aa 6 00222 0541 00 aos pr6|146 000203 aa 6 00222 7271 00 lxl7 pr6|146 000204 aa 026 117 100 400 mlr (),(pr,x7),fill(026) 000205 aa 000000 00 0000 desc9a 0,0 000206 aa 6 00115 60 0001 desc9a pr6|77(3),1 frame_header.syn 000207 aa 001000 2350 03 lda 512,du 000210 aa 6 00117 5511 40 stba pr6|79,40 frame_header.soh 000211 aa 000000 2350 07 lda 0,dl 000212 aa 6 00117 5511 10 stba pr6|79,10 frame_header.sta 000213 aa 000040 2350 07 lda 32,dl 000214 aa 6 00117 5511 04 stba pr6|79,04 frame_header.fc1 000215 aa 040000 2350 03 lda 16384,du 000216 aa 6 00120 5511 40 stba pr6|80,40 frame_header.fc2 000217 aa 000002 2350 03 lda 2,du 000220 aa 6 00120 5511 20 stba pr6|80,20 frame_header.stx 000221 aa 014000 2350 07 lda 6144,dl 000222 aa 6 00120 5511 10 stba pr6|80,10 frame_header.ff 000223 aa 000000 2350 07 lda 0,dl 000224 aa 6 00120 5511 04 stba pr6|80,04 frame_header.nul 000225 aa 6 00223 4501 00 stz pr6|147 000226 aa 6 00223 0541 00 aos pr6|147 000227 aa 6 00223 7261 00 lxl6 pr6|147 000230 aa 026 116 100 400 mlr (),(pr,x6),fill(026) 000231 aa 000000 00 0000 desc9a 0,0 000232 aa 6 00112 60 0001 desc9a pr6|74(3),1 frame_header.syn 000233 aa 6 00223 0541 00 aos pr6|147 000234 aa 6 00223 7261 00 lxl6 pr6|147 000235 aa 026 116 100 400 mlr (),(pr,x6),fill(026) 000236 aa 000000 00 0000 desc9a 0,0 000237 aa 6 00112 60 0001 desc9a pr6|74(3),1 frame_header.syn 000240 aa 6 00223 0541 00 aos pr6|147 000241 aa 6 00223 7261 00 lxl6 pr6|147 000242 aa 026 116 100 400 mlr (),(pr,x6),fill(026) 000243 aa 000000 00 0000 desc9a 0,0 000244 aa 6 00112 60 0001 desc9a pr6|74(3),1 frame_header.syn 000245 aa 6 00223 0541 00 aos pr6|147 000246 aa 6 00223 7261 00 lxl6 pr6|147 000247 aa 026 116 100 400 mlr (),(pr,x6),fill(026) 000250 aa 000000 00 0000 desc9a 0,0 000251 aa 6 00112 60 0001 desc9a pr6|74(3),1 frame_header.syn 000252 aa 001000 2350 03 lda 512,du 000253 aa 6 00114 5511 40 stba pr6|76,40 frame_header.soh 000254 aa 000000 2350 07 lda 0,dl 000255 aa 6 00114 5511 10 stba pr6|76,10 frame_header.sta 000256 aa 000040 2350 07 lda 32,dl 000257 aa 6 00114 5511 04 stba pr6|76,04 frame_header.fc1 000260 aa 040000 2350 03 lda 16384,du 000261 aa 6 00115 5511 40 stba pr6|77,40 frame_header.fc2 000262 aa 000002 2350 03 lda 2,du 000263 aa 6 00115 5511 20 stba pr6|77,20 frame_header.stx 000264 aa 003000 2350 07 lda 1536,dl 000265 aa 6 00115 5511 10 stba pr6|77,10 frame_header.etx STATEMENT 1 ON LINE 53 000266 aa 6 00224 4501 00 stz pr6|148 000267 aa 6 00224 0541 00 aos pr6|148 000270 aa 6 00224 7251 00 lxl5 pr6|148 000271 aa 026 115 100 400 mlr (),(pr,x5),fill(026) 000272 aa 000000 00 0000 desc9a 0,0 000273 aa 6 00124 20 0001 desc9a pr6|84(1),1 frame_trailer.syn 000274 aa 6 00224 0541 00 aos pr6|148 000275 aa 6 00224 7251 00 lxl5 pr6|148 000276 aa 026 115 100 400 mlr (),(pr,x5),fill(026) 000277 aa 000000 00 0000 desc9a 0,0 000300 aa 6 00124 20 0001 desc9a pr6|84(1),1 frame_trailer.syn 000301 aa 6 00224 0541 00 aos pr6|148 000302 aa 6 00224 7251 00 lxl5 pr6|148 000303 aa 026 115 100 400 mlr (),(pr,x5),fill(026) 000304 aa 000000 00 0000 desc9a 0,0 000305 aa 6 00124 20 0001 desc9a pr6|84(1),1 frame_trailer.syn 000306 aa 6 00224 0541 00 aos pr6|148 000307 aa 6 00224 7251 00 lxl5 pr6|148 000310 aa 026 115 100 400 mlr (),(pr,x5),fill(026) 000311 aa 000000 00 0000 desc9a 0,0 000312 aa 6 00124 20 0001 desc9a pr6|84(1),1 frame_trailer.syn 000313 aa 400000 2350 07 lda 131072,dl 000314 aa 6 00125 5511 10 stba pr6|85,10 frame_trailer.eof 000315 aa 6 00225 4501 00 stz pr6|149 000316 aa 6 00225 0541 00 aos pr6|149 000317 aa 6 00225 7241 00 lxl4 pr6|149 000320 aa 026 114 100 400 mlr (),(pr,x4),fill(026) 000321 aa 000000 00 0000 desc9a 0,0 000322 aa 6 00121 20 0001 desc9a pr6|81(1),1 frame_trailer.syn 000323 aa 6 00225 0541 00 aos pr6|149 000324 aa 6 00225 7241 00 lxl4 pr6|149 000325 aa 026 114 100 400 mlr (),(pr,x4),fill(026) 000326 aa 000000 00 0000 desc9a 0,0 000327 aa 6 00121 20 0001 desc9a pr6|81(1),1 frame_trailer.syn 000330 aa 6 00225 0541 00 aos pr6|149 000331 aa 6 00225 7241 00 lxl4 pr6|149 000332 aa 026 114 100 400 mlr (),(pr,x4),fill(026) 000333 aa 000000 00 0000 desc9a 0,0 000334 aa 6 00121 20 0001 desc9a pr6|81(1),1 frame_trailer.syn 000335 aa 6 00225 0541 00 aos pr6|149 000336 aa 6 00225 7241 00 lxl4 pr6|149 000337 aa 026 114 100 400 mlr (),(pr,x4),fill(026) 000340 aa 000000 00 0000 desc9a 0,0 000341 aa 6 00121 20 0001 desc9a pr6|81(1),1 frame_trailer.syn 000342 aa 001000 2350 07 lda 512,dl 000343 aa 6 00122 5511 10 stba pr6|82,10 frame_trailer.soh 000344 aa 000000 2350 07 lda 0,dl 000345 aa 6 00123 5511 40 stba pr6|83,40 frame_trailer.sta 000346 aa 000040 2350 03 lda 32,du 000347 aa 6 00123 5511 20 stba pr6|83,20 frame_trailer.fc1 000350 aa 040000 2350 07 lda 16384,dl 000351 aa 6 00123 5511 10 stba pr6|83,10 frame_trailer.fc2 000352 aa 000002 2350 07 lda 2,dl 000353 aa 6 00123 5511 04 stba pr6|83,04 frame_trailer.stx 000354 aa 003000 2350 03 lda 1536,du 000355 aa 6 00124 5511 40 stba pr6|84,40 frame_trailer.etx 000356 aa 003000 2350 03 lda 1536,du 000357 aa 6 00121 5511 40 stba pr6|81,40 frame_trailer.etx 000360 aa 6 00424 7201 00 lxl0 pr6|276 000361 aa 000000 7100 10 tra 0,0 MAIN SEQUENCE ENTRY TO polled_vip_mpx STATEMENT 1 ON LINE 14 polled_vip_mpx: proc; 000362 da 000215200000 000363 aa 000700 6270 00 eax7 448 000364 aa 7 00034 3521 20 epp2 pr7|28,* 000365 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000366 aa 000000000000 000367 aa 000000000000 000370 aa 777571 7000 04 tsx0 -135,ic 000161 STATEMENT 1 ON LINE 245 control: entry (pm_pvmdp, pm_subchan, pm_order, pm_infop, pm_code); 000371 aa 000025 7100 04 tra 21,ic 000416 ENTRY TO control STATEMENT 1 ON LINE 245 control: entry (pm_pvmdp, pm_subchan, pm_order, pm_infop, pm_code); 000372 at 000005000100 000373 tt 000073000071 000374 tt 000100000076 000375 ta 000372000000 000376 da 000220300000 000377 aa 000700 6270 00 eax7 448 000400 aa 7 00034 3521 20 epp2 pr7|28,* 000401 aa 2 01046 2721 00 tsp2 pr2|550 ext_entry_desc 000402 aa 000012000000 000403 aa 000000000000 000404 aa 6 00042 3735 20 epp7 pr6|34,* 000405 aa 7 00004 2361 20 ldq pr7|4,* 000406 aa 000002 6040 04 tmi 2,ic 000410 000407 aa 777777 3760 07 anq 262143,dl 000410 aa 0 00250 3761 00 anq pr0|168 = 000077777777 000411 aa 6 00425 7561 00 stq pr6|277 000412 aa 6 00032 3715 20 epp5 pr6|26,* 000413 aa 5 00012 3535 20 epp3 pr5|10,* 000414 aa 6 00220 2535 00 spri3 pr6|144 000415 aa 777544 7000 04 tsx0 -156,ic 000161 STATEMENT 1 ON LINE 248 call setup_subchan; 000416 aa 003262 6700 04 tsp4 1714,ic 003700 STATEMENT 1 ON LINE 249 order = pm_order; 000417 aa 6 00032 3735 20 epp7 pr6|26,* 000420 aa 7 00006 3715 20 epp5 pr7|6,* 000421 aa 6 00425 2351 00 lda pr6|277 000422 aa 040 100 100 540 mlr (pr,rl),(pr),fill(040) 000423 aa 5 00000 00 0005 desc9a pr5|0,al pm_order 000424 aa 6 00154 00 0040 desc9a pr6|108,32 order STATEMENT 1 ON LINE 250 pm_code = 0; 000425 aa 6 00220 4501 20 stz pr6|144,* pm_code STATEMENT 1 ON LINE 252 if order = "listen" /* listen for subchan to dial up */ then do; 000426 aa 040 004 106 500 cmpc (pr),(ic),fill(040) 000427 aa 6 00154 00 0040 desc9a pr6|108,32 order 000430 aa 777472 00 0006 desc9a -198,6 000120 = 154151163164 000431 aa 000020 6010 04 tnz 16,ic 000451 STATEMENT 1 ON LINE 254 pvste.listen = "1"b; 000432 aa 020000 2350 03 lda 8192,du 000433 aa 6 00204 3535 20 epp3 pr6|132,* pvstep 000434 aa 3 00002 2551 00 orsa pr3|2 pvste.listen STATEMENT 1 ON LINE 255 if pvmd.mpx_started & ^pvste.dialed & pvste.slave /* have green light for dialups */ then call signal_dialup; 000435 aa 6 00202 3515 20 epp1 pr6|130,* pvmdp 000436 aa 1 00052 2351 00 lda pr1|42 pvmd.mpx_started 000437 aa 200000 3150 03 cana 65536,du 000440 aa 000227 6000 04 tze 151,ic 000667 000441 aa 3 00002 2351 00 lda pr3|2 pvste.dialed 000442 aa 010000 3150 03 cana 4096,du 000443 aa 000224 6010 04 tnz 148,ic 000667 000444 aa 3 00002 2351 00 lda pr3|2 pvste.slave 000445 aa 004000 3150 03 cana 2048,du 000446 aa 000221 6000 04 tze 145,ic 000667 000447 aa 003266 6700 04 tsp4 1718,ic 003735 STATEMENT 1 ON LINE 258 end; 000450 aa 000217 7100 04 tra 143,ic 000667 STATEMENT 1 ON LINE 260 else if order = "hangup" /* pull the plug on this subchan */ then do; 000451 aa 040 004 106 500 cmpc (pr),(ic),fill(040) 000452 aa 6 00154 00 0040 desc9a pr6|108,32 order 000453 aa 777445 00 0006 desc9a -219,6 000116 = 150141156147 000454 aa 000031 6010 04 tnz 25,ic 000505 STATEMENT 1 ON LINE 262 pvste.listen, pvste.dialed = "0"b; 000455 aa 005360 2350 04 lda 2800,ic 006035 = 757777777777 000456 aa 6 00204 3535 20 epp3 pr6|132,* pvstep 000457 aa 3 00002 3551 00 ansa pr3|2 pvste.listen 000460 aa 005354 2350 04 lda 2796,ic 006034 = 767777777777 000461 aa 3 00002 3551 00 ansa pr3|2 pvste.dialed STATEMENT 1 ON LINE 263 call free_write_chain; 000462 aa 004522 6700 04 tsp4 2386,ic 005204 STATEMENT 1 ON LINE 264 call channel_manager$interrupt ((pvste.devx), HANGUP, ""b); 000463 aa 6 00204 3735 20 epp7 pr6|132,* pvstep 000464 aa 7 00001 2351 00 lda pr7|1 pvste.devx 000465 aa 000066 7330 00 lrs 54 000466 aa 6 00426 7561 00 stq pr6|278 000467 aa 777425 2370 04 ldaq -235,ic 000114 = 000000000000 000000000000 000470 aa 6 00430 7571 00 staq pr6|280 000471 aa 6 00426 3521 00 epp2 pr6|278 000472 aa 6 00434 2521 00 spri2 pr6|284 000473 aa 777377 3520 04 epp2 -257,ic 000072 = 000000000002 000474 aa 6 00436 2521 00 spri2 pr6|286 000475 aa 6 00430 3521 00 epp2 pr6|280 000476 aa 6 00440 2521 00 spri2 pr6|288 000477 aa 6 00432 6211 00 eax1 pr6|282 000500 aa 014000 4310 07 fld 6144,dl 000501 aa 6 00044 3701 20 epp4 pr6|36,* 000502 la 4 00046 3521 20 epp2 pr4|38,* channel_manager$interrupt 000503 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 265 end; 000504 aa 000163 7100 04 tra 115,ic 000667 STATEMENT 1 ON LINE 267 else if order = "wru" /* who are you */ then call channel_manager$interrupt ((pvste.devx), WRU_TIMEOUT, ""b); 000505 aa 040 004 106 500 cmpc (pr),(ic),fill(040) 000506 aa 6 00154 00 0040 desc9a pr6|108,32 order 000507 aa 777356 00 0003 desc9a -274,3 000063 = 167162165000 000510 aa 000023 6010 04 tnz 19,ic 000533 000511 aa 6 00204 3535 20 epp3 pr6|132,* pvstep 000512 aa 3 00001 2351 00 lda pr3|1 pvste.devx 000513 aa 000066 7330 00 lrs 54 000514 aa 6 00426 7561 00 stq pr6|278 000515 aa 777377 2370 04 ldaq -257,ic 000114 = 000000000000 000000000000 000516 aa 6 00430 7571 00 staq pr6|280 000517 aa 6 00426 3521 00 epp2 pr6|278 000520 aa 6 00434 2521 00 spri2 pr6|284 000521 aa 777334 3520 04 epp2 -292,ic 000055 = 000000000013 000522 aa 6 00436 2521 00 spri2 pr6|286 000523 aa 6 00430 3521 00 epp2 pr6|280 000524 aa 6 00440 2521 00 spri2 pr6|288 000525 aa 6 00432 6211 00 eax1 pr6|282 000526 aa 014000 4310 07 fld 6144,dl 000527 aa 6 00044 3701 20 epp4 pr6|36,* 000530 la 4 00046 3521 20 epp2 pr4|38,* channel_manager$interrupt 000531 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out 000532 aa 000135 7100 04 tra 93,ic 000667 STATEMENT 1 ON LINE 271 else if order = "abort" then do; 000533 aa 040 004 106 500 cmpc (pr),(ic),fill(040) 000534 aa 6 00154 00 0040 desc9a pr6|108,32 order 000535 aa 777357 00 0005 desc9a -273,5 000112 = 141142157162 000536 aa 000011 6010 04 tnz 9,ic 000547 STATEMENT 1 ON LINE 273 infop = pm_infop; 000537 aa 7 00010 3535 20 epp3 pr7|8,* pm_infop 000540 aa 3 00000 3535 20 epp3 pr3|0,* pm_infop 000541 aa 6 00132 2535 00 spri3 pr6|90 infop STATEMENT 1 ON LINE 274 if abort_info.resetwrite then call free_write_chain; 000542 aa 3 00000 2351 00 lda pr3|0 abort_info.resetwrite 000543 aa 400000 3150 03 cana 131072,du 000544 aa 000123 6000 04 tze 83,ic 000667 000545 aa 004437 6700 04 tsp4 2335,ic 005204 STATEMENT 1 ON LINE 276 end; 000546 aa 000121 7100 04 tra 81,ic 000667 STATEMENT 1 ON LINE 278 else if order = "write_status" then do; 000547 aa 040 004 106 500 cmpc (pr),(ic),fill(040) 000550 aa 6 00154 00 0040 desc9a pr6|108,32 order 000551 aa 777364 00 0014 desc9a -268,12 000133 = 167162151164 000552 aa 000030 6010 04 tnz 24,ic 000602 STATEMENT 1 ON LINE 280 infop = pm_infop; 000553 aa 7 00010 3535 20 epp3 pr7|8,* pm_infop 000554 aa 3 00000 3535 20 epp3 pr3|0,* pm_infop 000555 aa 6 00132 2535 00 spri3 pr6|90 infop STATEMENT 1 ON LINE 281 if (pvste.write_chain ^= 0) | (pvmd.write_chan = subchan) then write_status_info.output_pending = "1"b; 000556 aa 6 00204 3515 20 epp1 pr6|132,* pvstep 000557 aa 1 00001 2361 00 ldq pr1|1 pvste.write_chain 000560 aa 0 00374 3771 00 anaq pr0|252 = 000000000000 000000777777 000561 aa 000005 6010 04 tnz 5,ic 000566 000562 aa 6 00202 3715 20 epp5 pr6|130,* pvmdp 000563 aa 5 00014 2361 00 ldq pr5|12 pvmd.write_chan 000564 aa 6 00171 1161 00 cmpq pr6|121 subchan 000565 aa 000004 6010 04 tnz 4,ic 000571 000566 aa 400000 2350 03 lda 131072,du 000567 aa 3 00002 7551 00 sta pr3|2 write_status_info.output_pending 000570 aa 000077 7100 04 tra 63,ic 000667 STATEMENT 1 ON LINE 283 else if pvste.printer & pvste.hold_output /* write data sent, now waiting for line status */ then write_status_info.output_pending = "1"b; 000571 aa 1 00002 2351 00 lda pr1|2 pvste.hold_output 000572 aa 600000 3750 03 ana 196608,du 000573 aa 600000 1150 03 cmpa 196608,du 000574 aa 000004 6010 04 tnz 4,ic 000600 000575 aa 400000 2350 03 lda 131072,du 000576 aa 3 00002 7551 00 sta pr3|2 write_status_info.output_pending 000577 aa 000070 7100 04 tra 56,ic 000667 STATEMENT 1 ON LINE 285 else write_status_info.output_pending = "0"b; 000600 aa 3 00002 4501 00 stz pr3|2 write_status_info.output_pending STATEMENT 1 ON LINE 286 end; 000601 aa 000066 7100 04 tra 54,ic 000667 STATEMENT 1 ON LINE 288 else if order = "copy_meters" then pvste.saved_meters_ptr -> pvip_subchan_meters = pvste.meters; 000602 aa 040 004 106 500 cmpc (pr),(ic),fill(040) 000603 aa 6 00154 00 0040 desc9a pr6|108,32 order 000604 aa 777326 00 0013 desc9a -298,11 000130 = 143157160171 000605 aa 000007 6010 04 tnz 7,ic 000614 000606 aa 6 00204 3535 20 epp3 pr6|132,* pvstep 000607 aa 3 00010 3515 20 epp1 pr3|8,* pvste.saved_meters_ptr 000610 aa 000 100 100 500 mlr (pr),(pr),fill(000) 000611 aa 3 00004 00 0020 desc9a pr3|4,16 pvste.meters 000612 aa 1 00000 00 0020 desc9a pr1|0,16 pvip_subchan_meters 000613 aa 000054 7100 04 tra 44,ic 000667 STATEMENT 1 ON LINE 291 else if order = "get_meters" then do; 000614 aa 040 004 106 500 cmpc (pr),(ic),fill(040) 000615 aa 6 00154 00 0040 desc9a pr6|108,32 order 000616 aa 777311 00 0012 desc9a -311,10 000125 = 147145164137 000617 aa 000045 6010 04 tnz 37,ic 000664 STATEMENT 1 ON LINE 293 infop = pm_infop; 000620 aa 7 00010 3535 20 epp3 pr7|8,* pm_infop 000621 aa 3 00000 3535 20 epp3 pr3|0,* pm_infop 000622 aa 6 00132 2535 00 spri3 pr6|90 infop STATEMENT 1 ON LINE 294 if infop -> get_comm_meters_info.version ^= GET_COMM_METERS_INFO_VERSION_1 then pm_code = et_unimplemented_version; 000623 aa 3 00000 2361 00 ldq pr3|0 get_comm_meters_info.version 000624 aa 000001 1160 07 cmpq 1,dl 000625 aa 000005 6000 04 tze 5,ic 000632 000626 aa 6 00044 3701 20 epp4 pr6|36,* 000627 ia 4 00015 2361 00 ldq pr4|13 et_unimplemented_version 000630 aa 6 00220 7561 20 stq pr6|144,* pm_code 000631 aa 000036 7100 04 tra 30,ic 000667 STATEMENT 1 ON LINE 296 else do; STATEMENT 1 ON LINE 297 meter_ptr = infop -> get_comm_meters_info.parent_ptr; 000632 aa 3 00006 3515 20 epp1 pr3|6,* get_comm_meters_info.parent_ptr 000633 aa 6 00150 2515 00 spri1 pr6|104 meter_ptr STATEMENT 1 ON LINE 298 if meter_ptr ^= null () then if meter_ptr -> pvip_subchan_meter_struc.version ^= PVIP_SUBCHAN_METERS_VERSION_1 then pm_code = et_unimplemented_version; 000634 aa 6 00150 2371 00 ldaq pr6|104 meter_ptr 000635 aa 777253 6770 04 eraq -341,ic 000110 = 077777000043 000001000000 000636 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000637 aa 000030 6000 04 tze 24,ic 000667 000640 aa 1 00000 2361 00 ldq pr1|0 pvip_subchan_meter_struc.version 000641 aa 000001 1160 07 cmpq 1,dl 000642 aa 000005 6000 04 tze 5,ic 000647 000643 aa 6 00044 3701 20 epp4 pr6|36,* 000644 ia 4 00015 2361 00 ldq pr4|13 et_unimplemented_version 000645 aa 6 00220 7561 20 stq pr6|144,* pm_code 000646 aa 000021 7100 04 tra 17,ic 000667 STATEMENT 1 ON LINE 301 else do; STATEMENT 1 ON LINE 302 meter_ptr -> pvip_subchan_meter_struc.current_meters = pvste.meters; 000647 aa 6 00204 3715 20 epp5 pr6|132,* pvstep 000650 aa 000 100 100 500 mlr (pr),(pr),fill(000) 000651 aa 5 00004 00 0020 desc9a pr5|4,16 pvste.meters 000652 aa 1 00002 00 0020 desc9a pr1|2,16 pvip_subchan_meter_struc.current_meters STATEMENT 1 ON LINE 303 meter_ptr -> pvip_subchan_meter_struc.saved_meters = pvste.saved_meters_ptr -> pvip_subchan_meters; 000653 aa 5 00010 3535 20 epp3 pr5|8,* pvste.saved_meters_ptr 000654 aa 000 100 100 500 mlr (pr),(pr),fill(000) 000655 aa 3 00000 00 0020 desc9a pr3|0,16 pvip_subchan_meters 000656 aa 1 00006 00 0020 desc9a pr1|6,16 pvip_subchan_meter_struc.saved_meters STATEMENT 1 ON LINE 305 meter_ptr -> pvip_subchan_meter_struc.printer = pvste.printer; 000657 aa 5 00002 2351 00 lda pr5|2 pvste.printer 000660 aa 1 00001 6751 00 era pr1|1 pvip_subchan_meter_struc.printer 000661 aa 0 00002 3751 00 ana pr0|2 = 400000000000 000662 aa 1 00001 6551 00 ersa pr1|1 pvip_subchan_meter_struc.printer STATEMENT 1 ON LINE 306 end; STATEMENT 1 ON LINE 307 end; STATEMENT 1 ON LINE 308 end; 000663 aa 000004 7100 04 tra 4,ic 000667 STATEMENT 1 ON LINE 310 else pm_code = et_undefined_order_request; 000664 aa 6 00044 3701 20 epp4 pr6|36,* 000665 ia 4 00014 2361 00 ldq pr4|12 et_undefined_order_request 000666 aa 6 00220 7561 20 stq pr6|144,* pm_code STATEMENT 1 ON LINE 312 return; 000667 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO check_modes STATEMENT 1 ON LINE 318 check_modes: entry (pm_pvmdp, pm_subchan, pm_mclp, pm_code); 000670 at 000004000100 000671 tt 000073000100 000672 ta 000076000000 000673 ta 000670000000 000674 da 000226300000 000675 aa 000700 6270 00 eax7 448 000676 aa 7 00034 3521 20 epp2 pr7|28,* 000677 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000700 aa 000010000000 000701 aa 000000000000 000702 aa 6 00032 3735 20 epp7 pr6|26,* 000703 aa 7 00010 3715 20 epp5 pr7|8,* 000704 aa 6 00220 6515 00 spri5 pr6|144 000705 aa 777254 7000 04 tsx0 -340,ic 000161 STATEMENT 1 ON LINE 321 call setup_subchan; 000706 aa 002772 6700 04 tsp4 1530,ic 003700 STATEMENT 1 ON LINE 323 mclp = pm_mclp; 000707 aa 6 00032 3735 20 epp7 pr6|26,* 000710 aa 7 00006 3715 20 epp5 pr7|6,* pm_mclp 000711 aa 5 00000 3715 20 epp5 pr5|0,* pm_mclp 000712 aa 6 00214 6515 00 spri5 pr6|140 mclp STATEMENT 1 ON LINE 324 do i = 1 to mcl.n_entries; 000713 aa 5 00001 2361 00 ldq pr5|1 mcl.n_entries 000714 aa 6 00226 7561 00 stq pr6|150 000715 aa 000001 2360 07 ldq 1,dl 000716 aa 6 00130 7561 00 stq pr6|88 i 000717 aa 000000 0110 03 nop 0,du 000720 aa 6 00130 2361 00 ldq pr6|88 i 000721 aa 6 00226 1161 00 cmpq pr6|150 000722 aa 000017 6054 04 tpnz 15,ic 000741 STATEMENT 1 ON LINE 325 mclep = addr (mcl.entries (i)); 000723 aa 000005 4020 07 mpy 5,dl 000724 aa 6 00214 3735 20 epp7 pr6|140,* mclp 000725 aa 7 00001 3735 06 epp7 pr7|1,ql mcl.entries 000726 aa 6 00216 6535 00 spri7 pr6|142 mclep STATEMENT 1 ON LINE 326 mcle.mpx_mode = (mcle.mode_name = "hndlquit"); 000727 aa 040 004 106 500 cmpc (pr),(ic),fill(040) 000730 aa 7 00000 00 0020 desc9a pr7|0,16 mcle.mode_name 000731 aa 777157 00 0010 desc9a -401,8 000106 = 150156144154 000732 aa 0 00512 7001 00 tsx0 pr0|330 r_e_as 000733 aa 000002 7710 00 arl 2 000734 aa 7 00004 6751 00 era pr7|4 mcle.mpx_mode 000735 aa 100000 3750 03 ana 32768,du 000736 aa 7 00004 6551 00 ersa pr7|4 mcle.mpx_mode STATEMENT 1 ON LINE 327 end; 000737 aa 6 00130 0541 00 aos pr6|88 i 000740 aa 777760 7100 04 tra -16,ic 000720 STATEMENT 1 ON LINE 329 pm_code = 0; 000741 aa 6 00220 4501 20 stz pr6|144,* pm_code STATEMENT 1 ON LINE 330 return; 000742 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO set_modes STATEMENT 1 ON LINE 336 set_modes: entry (pm_pvmdp, pm_subchan, pm_mclp, pm_code); 000743 ta 000670000000 000744 da 000234300000 000745 aa 000700 6270 00 eax7 448 000746 aa 7 00034 3521 20 epp2 pr7|28,* 000747 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000750 aa 000010000000 000751 aa 000000000000 000752 aa 6 00032 3735 20 epp7 pr6|26,* 000753 aa 7 00010 3715 20 epp5 pr7|8,* 000754 aa 6 00220 6515 00 spri5 pr6|144 000755 aa 777204 7000 04 tsx0 -380,ic 000161 STATEMENT 1 ON LINE 339 call setup_subchan; 000756 aa 002722 6700 04 tsp4 1490,ic 003700 STATEMENT 1 ON LINE 341 pm_code = 0; 000757 aa 6 00220 4501 20 stz pr6|144,* pm_code STATEMENT 1 ON LINE 342 mclp = pm_mclp; 000760 aa 6 00032 3735 20 epp7 pr6|26,* 000761 aa 7 00006 3715 20 epp5 pr7|6,* pm_mclp 000762 aa 5 00000 3715 20 epp5 pr5|0,* pm_mclp 000763 aa 6 00214 6515 00 spri5 pr6|140 mclp STATEMENT 1 ON LINE 343 if mcl.init /* all modes off */ then pvste.hndlquit = "0"b; 000764 aa 5 00005 2351 00 lda pr5|5 mcl.init 000765 aa 400000 3150 03 cana 131072,du 000766 aa 000004 6000 04 tze 4,ic 000772 000767 aa 005044 2350 04 lda 2596,ic 006033 = 737777777777 000770 aa 6 00204 3535 20 epp3 pr6|132,* pvstep 000771 aa 3 00002 3551 00 ansa pr3|2 pvste.hndlquit STATEMENT 1 ON LINE 346 do i = 1 to mcl.n_entries; 000772 aa 5 00001 2361 00 ldq pr5|1 mcl.n_entries 000773 aa 6 00227 7561 00 stq pr6|151 000774 aa 000001 2360 07 ldq 1,dl 000775 aa 6 00130 7561 00 stq pr6|88 i 000776 aa 6 00130 2361 00 ldq pr6|88 i 000777 aa 6 00227 1161 00 cmpq pr6|151 001000 aa 000032 6054 04 tpnz 26,ic 001032 STATEMENT 1 ON LINE 347 mclep = addr (mcl.entries (i)); 001001 aa 000005 4020 07 mpy 5,dl 001002 aa 6 00214 3735 20 epp7 pr6|140,* mclp 001003 aa 7 00001 3735 06 epp7 pr7|1,ql mcl.entries 001004 aa 6 00216 6535 00 spri7 pr6|142 mclep STATEMENT 1 ON LINE 348 if mcle.mpx_mode /* this is a mode we want to set */ then if mcle.mode_name = "hndlquit" then pvste.hndlquit = mcle.mode_switch; 001005 aa 7 00004 2351 00 lda pr7|4 mcle.mpx_mode 001006 aa 100000 3150 03 cana 32768,du 001007 aa 000021 6000 04 tze 17,ic 001030 001010 aa 040 004 106 500 cmpc (pr),(ic),fill(040) 001011 aa 7 00000 00 0020 desc9a pr7|0,16 mcle.mode_name 001012 aa 777076 00 0010 desc9a -450,8 000106 = 150156144154 001013 aa 000010 6010 04 tnz 8,ic 001023 001014 aa 7 00004 2351 00 lda pr7|4 mcle.mode_switch 001015 aa 000003 7710 00 arl 3 001016 aa 6 00204 3715 20 epp5 pr6|132,* pvstep 001017 aa 5 00002 6751 00 era pr5|2 pvste.hndlquit 001020 aa 040000 3750 03 ana 16384,du 001021 aa 5 00002 6551 00 ersa pr5|2 pvste.hndlquit 001022 aa 000006 7100 04 tra 6,ic 001030 STATEMENT 1 ON LINE 351 else do; STATEMENT 1 ON LINE 352 mcle.error = "1"b; 001023 aa 040000 2350 03 lda 16384,du 001024 aa 7 00004 2551 00 orsa pr7|4 mcle.error STATEMENT 1 ON LINE 353 pm_code = et_bad_mode; 001025 aa 6 00044 3701 20 epp4 pr6|36,* 001026 ia 4 00011 2361 00 ldq pr4|9 et_bad_mode 001027 aa 6 00220 7561 20 stq pr6|144,* pm_code STATEMENT 1 ON LINE 354 end; STATEMENT 1 ON LINE 355 end; 001030 aa 6 00130 0541 00 aos pr6|88 i 001031 aa 777745 7100 04 tra -27,ic 000776 STATEMENT 1 ON LINE 357 return; 001032 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO get_modes STATEMENT 1 ON LINE 363 get_modes: entry (pm_pvmdp, pm_subchan, pm_modes, pm_code); 001033 at 000004000100 001034 tt 000073000071 001035 ta 000076000000 001036 ta 001033000000 001037 da 000242300000 001040 aa 000700 6270 00 eax7 448 001041 aa 7 00034 3521 20 epp2 pr7|28,* 001042 aa 2 01046 2721 00 tsp2 pr2|550 ext_entry_desc 001043 aa 000010000000 001044 aa 000000000000 001045 aa 6 00042 3735 20 epp7 pr6|34,* 001046 aa 7 00004 2361 20 ldq pr7|4,* 001047 aa 000002 6040 04 tmi 2,ic 001051 001050 aa 777777 3760 07 anq 262143,dl 001051 aa 0 00250 3761 00 anq pr0|168 = 000077777777 001052 aa 6 00425 7561 00 stq pr6|277 001053 aa 6 00032 3715 20 epp5 pr6|26,* 001054 aa 5 00010 3535 20 epp3 pr5|8,* 001055 aa 6 00220 2535 00 spri3 pr6|144 001056 aa 777103 7000 04 tsx0 -445,ic 000161 STATEMENT 1 ON LINE 366 call setup_subchan; 001057 aa 002621 6700 04 tsp4 1425,ic 003700 STATEMENT 1 ON LINE 367 pm_modes = ""; 001060 aa 6 00032 3735 20 epp7 pr6|26,* 001061 aa 7 00006 3715 20 epp5 pr7|6,* 001062 aa 6 00425 2351 00 lda pr6|277 001063 aa 040 140 100 400 mlr (),(pr,rl),fill(040) 001064 aa 000000 00 0000 desc9a 0,0 001065 aa 5 00000 00 0005 desc9a pr5|0,al pm_modes STATEMENT 1 ON LINE 369 pm_code = 0; 001066 aa 6 00220 4501 20 stz pr6|144,* pm_code STATEMENT 1 ON LINE 370 return; 001067 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO read STATEMENT 1 ON LINE 376 read: entry (pm_pvmdp, pm_subchan, pm_chain_ptr, pm_more_input, pm_code); 001070 at 000005000100 001071 tt 000073000100 001072 tt 000070000076 001073 ta 001070000000 001074 da 000247300000 001075 aa 000700 6270 00 eax7 448 001076 aa 7 00034 3521 20 epp2 pr7|28,* 001077 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001100 aa 000012000000 001101 aa 000000000000 001102 aa 6 00032 3735 20 epp7 pr6|26,* 001103 aa 7 00012 3715 20 epp5 pr7|10,* 001104 aa 6 00220 6515 00 spri5 pr6|144 001105 aa 777054 7000 04 tsx0 -468,ic 000161 STATEMENT 1 ON LINE 379 pm_chain_ptr = null; 001106 aa 777002 2370 04 ldaq -510,ic 000110 = 077777000043 000001000000 001107 aa 6 00032 3735 20 epp7 pr6|26,* 001110 aa 7 00006 7571 20 staq pr7|6,* pm_chain_ptr STATEMENT 1 ON LINE 380 pm_more_input = "0"b; 001111 aa 7 00010 4501 20 stz pr7|8,* pm_more_input STATEMENT 1 ON LINE 381 pm_code = 0; 001112 aa 6 00220 4501 20 stz pr6|144,* pm_code STATEMENT 1 ON LINE 382 return; 001113 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO write STATEMENT 1 ON LINE 387 write: entry (pm_pvmdp, pm_subchan, pm_chain_ptr, pm_code); 001114 ta 000670000000 001115 da 000252300000 001116 aa 000700 6270 00 eax7 448 001117 aa 7 00034 3521 20 epp2 pr7|28,* 001120 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001121 aa 000010000000 001122 aa 000000000000 001123 aa 6 00032 3735 20 epp7 pr6|26,* 001124 aa 7 00010 3715 20 epp5 pr7|8,* 001125 aa 6 00220 6515 00 spri5 pr6|144 001126 aa 777033 7000 04 tsx0 -485,ic 000161 STATEMENT 1 ON LINE 390 ttybp = addr (tty_buf$); 001127 aa 6 00044 3701 20 epp4 pr6|36,* 001130 la 4 00032 3735 20 epp7 pr4|26,* tty_buf$ 001131 aa 6 00176 6535 00 spri7 pr6|126 ttybp STATEMENT 1 ON LINE 391 call setup_subchan; 001132 aa 002546 6700 04 tsp4 1382,ic 003700 STATEMENT 1 ON LINE 392 chain_ptr = pm_chain_ptr; 001133 aa 6 00032 3735 20 epp7 pr6|26,* 001134 aa 7 00006 3715 20 epp5 pr7|6,* pm_chain_ptr 001135 aa 5 00000 3715 20 epp5 pr5|0,* pm_chain_ptr 001136 aa 6 00104 6515 00 spri5 pr6|68 chain_ptr STATEMENT 1 ON LINE 394 if ^pvste.dialed then do; 001137 aa 6 00204 3535 20 epp3 pr6|132,* pvstep 001140 aa 3 00002 2351 00 lda pr3|2 pvste.dialed 001141 aa 010000 3150 03 cana 4096,du 001142 aa 000024 6010 04 tnz 20,ic 001166 STATEMENT 1 ON LINE 396 call tty_space_man$free_chain ((pvste.devx), OUTPUT, chain_ptr); 001143 aa 3 00001 2351 00 lda pr3|1 pvste.devx 001144 aa 000066 7330 00 lrs 54 001145 aa 6 00426 7561 00 stq pr6|278 001146 aa 6 00426 3521 00 epp2 pr6|278 001147 aa 6 00434 2521 00 spri2 pr6|284 001150 aa 776714 3520 04 epp2 -564,ic 000064 = 400000000000 001151 aa 6 00436 2521 00 spri2 pr6|286 001152 aa 6 00104 3521 00 epp2 pr6|68 chain_ptr 001153 aa 6 00440 2521 00 spri2 pr6|288 001154 aa 6 00432 6211 00 eax1 pr6|282 001155 aa 014000 4310 07 fld 6144,dl 001156 aa 6 00044 3701 20 epp4 pr6|36,* 001157 la 4 00054 3521 20 epp2 pr4|44,* tty_space_man$free_chain 001160 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 397 pm_chain_ptr = null; 001161 aa 776727 2370 04 ldaq -553,ic 000110 = 077777000043 000001000000 001162 aa 6 00032 3735 20 epp7 pr6|26,* 001163 aa 7 00006 7571 20 staq pr7|6,* pm_chain_ptr STATEMENT 1 ON LINE 398 pm_code = 0; 001164 aa 6 00220 4501 20 stz pr6|144,* pm_code STATEMENT 1 ON LINE 399 return; 001165 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 400 end; STATEMENT 1 ON LINE 401 if (pvste.write_chain ^= 0) | pvste.hold_output | (pvmd.write_chan = subchan) /* can't take any output now */ then do; 001166 aa 3 00001 2361 00 ldq pr3|1 pvste.write_chain 001167 aa 0 00374 3771 00 anaq pr0|252 = 000000000000 000000777777 001170 aa 000010 6010 04 tnz 8,ic 001200 001171 aa 3 00002 2351 00 lda pr3|2 pvste.hold_output 001172 aa 200000 3150 03 cana 65536,du 001173 aa 000005 6010 04 tnz 5,ic 001200 001174 aa 6 00202 3515 20 epp1 pr6|130,* pvmdp 001175 aa 1 00014 2361 00 ldq pr1|12 pvmd.write_chan 001176 aa 6 00171 1161 00 cmpq pr6|121 subchan 001177 aa 000003 6010 04 tnz 3,ic 001202 STATEMENT 1 ON LINE 404 pm_code = 0; 001200 aa 6 00220 4501 20 stz pr6|144,* pm_code STATEMENT 1 ON LINE 405 return; 001201 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 406 end; STATEMENT 1 ON LINE 408 nchars = 0; 001202 aa 6 00152 4501 00 stz pr6|106 nchars STATEMENT 1 ON LINE 409 blockp = chain_ptr; 001203 aa 6 00212 6515 00 spri5 pr6|138 blockp STATEMENT 1 ON LINE 410 prev_blockp = null; 001204 aa 776704 2370 04 ldaq -572,ic 000110 = 077777000043 000001000000 001205 aa 6 00166 7571 00 staq pr6|118 prev_blockp STATEMENT 1 ON LINE 411 end_chain = "0"b; 001206 aa 6 00107 4501 00 stz pr6|71 end_chain STATEMENT 1 ON LINE 412 do while (^end_chain); 001207 aa 000000 0110 03 nop 0,du 001210 aa 6 00107 2351 00 lda pr6|71 end_chain 001211 aa 000026 6010 04 tnz 22,ic 001237 STATEMENT 1 ON LINE 413 nchars = nchars + buffer.tally; 001212 aa 6 00212 2361 20 ldq pr6|138,* buffer.tally 001213 aa 0 00416 3771 00 anaq pr0|270 = 000000000000 000000000777 001214 aa 6 00152 0561 00 asq pr6|106 nchars STATEMENT 1 ON LINE 414 if nchars > pvmd.max_text_len | buffer.next = 0 then end_chain = "1"b; 001215 aa 6 00212 2351 20 lda pr6|138,* buffer.next 001216 aa 000066 7730 00 lrl 54 001217 aa 6 00426 7561 00 stq pr6|278 buffer.next 001220 aa 6 00152 2361 00 ldq pr6|106 nchars 001221 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 001222 aa 7 00047 1161 00 cmpq pr7|39 pvmd.max_text_len 001223 aa 000003 6054 04 tpnz 3,ic 001226 001224 aa 6 00426 2361 00 ldq pr6|278 buffer.next 001225 aa 000004 6010 04 tnz 4,ic 001231 001226 aa 400000 2350 03 lda 131072,du 001227 aa 6 00107 7551 00 sta pr6|71 end_chain 001230 aa 777760 7100 04 tra -16,ic 001210 STATEMENT 1 ON LINE 416 else do; STATEMENT 1 ON LINE 417 prev_blockp = blockp; 001231 aa 6 00212 3715 20 epp5 pr6|138,* blockp 001232 aa 6 00166 6515 00 spri5 pr6|118 prev_blockp STATEMENT 1 ON LINE 418 blockp = ptr (ttybp, buffer.next); 001233 aa 6 00176 3521 20 epp2 pr6|126,* ttybp 001234 aa 000000 3120 06 eawp2 0,ql 001235 aa 6 00212 2521 00 spri2 pr6|138 blockp STATEMENT 1 ON LINE 419 end; STATEMENT 1 ON LINE 420 end; 001236 aa 777752 7100 04 tra -22,ic 001210 STATEMENT 1 ON LINE 422 if nchars > pvmd.max_text_len /* more than maximum text length */ then do; 001237 aa 6 00152 2361 00 ldq pr6|106 nchars 001240 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 001241 aa 7 00047 1161 00 cmpq pr7|39 pvmd.max_text_len 001242 aa 000011 6044 04 tmoz 9,ic 001253 STATEMENT 1 ON LINE 424 tailp = prev_blockp; 001243 aa 6 00166 3715 20 epp5 pr6|118,* prev_blockp 001244 aa 6 00172 6515 00 spri5 pr6|122 tailp STATEMENT 1 ON LINE 425 tailp -> buffer.next = 0; 001245 aa 000000 2350 07 lda 0,dl 001246 aa 6 00172 3535 20 epp3 pr6|122,* buffer.next 001247 aa 3 00000 5511 60 stba pr3|0,60 buffer.next STATEMENT 1 ON LINE 426 leftover_chain_ptr = blockp; 001250 aa 6 00212 3515 20 epp1 pr6|138,* blockp 001251 aa 6 00144 2515 00 spri1 pr6|100 leftover_chain_ptr STATEMENT 1 ON LINE 427 end; 001252 aa 000005 7100 04 tra 5,ic 001257 STATEMENT 1 ON LINE 428 else do; STATEMENT 1 ON LINE 429 tailp = blockp; 001253 aa 6 00212 3715 20 epp5 pr6|138,* blockp 001254 aa 6 00172 6515 00 spri5 pr6|122 tailp STATEMENT 1 ON LINE 430 leftover_chain_ptr = null; 001255 aa 776633 2370 04 ldaq -613,ic 000110 = 077777000043 000001000000 001256 aa 6 00144 7571 00 staq pr6|100 leftover_chain_ptr STATEMENT 1 ON LINE 431 end; STATEMENT 1 ON LINE 433 eop_sw = tailp -> buffer.end_of_page; 001257 aa 6 00172 2351 20 lda pr6|122,* buffer.end_of_page 001260 aa 000022 7350 00 als 18 001261 aa 0 00002 3771 00 anaq pr0|2 = 400000000000 000000000000 001262 aa 6 00110 7551 00 sta pr6|72 eop_sw STATEMENT 1 ON LINE 434 tailp -> buffer.end_of_page = "0"b; 001263 aa 004547 2350 04 lda 2407,ic 006032 = 777777377777 001264 aa 6 00172 3551 20 ansa pr6|122,* buffer.end_of_page STATEMENT 1 ON LINE 449 call tty_space_man$get_buffer ((pvste.devx), 16, OUTPUT, headp); 001265 aa 6 00204 3715 20 epp5 pr6|132,* pvstep 001266 aa 5 00001 2351 00 lda pr5|1 pvste.devx 001267 aa 000066 7330 00 lrs 54 001270 aa 6 00426 7561 00 stq pr6|278 001271 aa 000020 2360 07 ldq 16,dl 001272 aa 6 00427 7561 00 stq pr6|279 001273 aa 6 00426 3521 00 epp2 pr6|278 001274 aa 6 00444 2521 00 spri2 pr6|292 001275 aa 6 00427 3521 00 epp2 pr6|279 001276 aa 6 00446 2521 00 spri2 pr6|294 001277 aa 776565 3520 04 epp2 -651,ic 000064 = 400000000000 001300 aa 6 00450 2521 00 spri2 pr6|296 001301 aa 6 00126 3521 00 epp2 pr6|86 headp 001302 aa 6 00452 2521 00 spri2 pr6|298 001303 aa 6 00442 6211 00 eax1 pr6|290 001304 aa 020000 4310 07 fld 8192,dl 001305 aa 6 00044 3701 20 epp4 pr6|36,* 001306 la 4 00050 3521 20 epp2 pr4|40,* tty_space_man$get_buffer 001307 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 450 if headp = null then go to noalloc; 001310 aa 6 00126 2371 00 ldaq pr6|86 headp 001311 aa 776577 6770 04 eraq -641,ic 000110 = 077777000043 000001000000 001312 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001313 aa 000254 6000 04 tze 172,ic 001567 STATEMENT 1 ON LINE 452 headp -> buffer.next = bin (rel (chain_ptr), 18); 001314 aa 6 00104 6351 20 eaa pr6|68,* chain_ptr 001315 aa 000066 7730 00 lrl 54 001316 aa 000066 7370 00 lls 54 001317 aa 6 00126 3735 20 epp7 pr6|86,* buffer.next 001320 aa 7 00000 5511 60 stba pr7|0,60 buffer.next STATEMENT 1 ON LINE 454 call get_frame_header (nchars); 001321 aa 004505 3520 04 epp2 2373,ic 006026 = 000002000000 001322 aa 003135 6700 04 tsp4 1629,ic 004457 STATEMENT 1 ON LINE 455 substr (string (headp -> buffer.chars), 1, nchars) = substr (string (frame_header), 1, nchars); 001323 aa 6 00126 3735 20 epp7 pr6|86,* headp 001324 aa 6 00152 7271 00 lxl7 pr6|106 nchars 001325 aa 040 140 100 540 mlr (pr,rl),(pr,rl),fill(040) 001326 aa 6 00113 00 0017 desc9a pr6|75,x7 001327 aa 7 00001 00 0017 desc9a pr7|1,x7 STATEMENT 1 ON LINE 457 headp -> buffer.tally = nchars; 001330 aa 6 00152 2361 00 ldq pr6|106 nchars 001331 aa 7 00000 5521 04 stbq pr7|0,04 buffer.tally STATEMENT 1 ON LINE 459 blockp = chain_ptr; 001332 aa 6 00104 3715 20 epp5 pr6|68,* chain_ptr 001333 aa 6 00212 6515 00 spri5 pr6|138 blockp STATEMENT 1 ON LINE 460 end_chain = "0"b; 001334 aa 6 00107 4501 00 stz pr6|71 end_chain STATEMENT 1 ON LINE 461 do while (^end_chain); 001335 aa 000000 0110 03 nop 0,du 001336 aa 6 00107 2351 00 lda pr6|71 end_chain 001337 aa 000030 6010 04 tnz 24,ic 001367 STATEMENT 1 ON LINE 462 call verify_text; 001340 aa 002524 6700 04 tsp4 1364,ic 004064 STATEMENT 1 ON LINE 463 text_lrc = bool (get_buffer_lrc (), text_lrc, XOR); 001341 aa 004461 3520 04 epp2 2353,ic 006022 = 000002000000 001342 aa 002635 6700 04 tsp4 1437,ic 004177 001343 aa 6 00426 4501 00 stz pr6|278 001344 aa 003 100 060 500 csl (pr),(pr),fill(0),bool(move) 001345 aa 6 00174 00 0011 descb pr6|124,9 text_lrc 001346 aa 6 00426 00 0011 descb pr6|278,9 001347 aa 006 100 060 500 csl (pr),(pr),fill(0),bool(xor) 001350 aa 6 00427 00 0011 descb pr6|279,9 001351 aa 6 00426 00 0011 descb pr6|278,9 001352 aa 6 00426 2351 00 lda pr6|278 001353 aa 6 00174 7551 00 sta pr6|124 text_lrc STATEMENT 1 ON LINE 464 if buffer.next = 0 then end_chain = "1"b; 001354 aa 6 00212 2351 20 lda pr6|138,* buffer.next 001355 aa 000066 7730 00 lrl 54 001356 aa 6 00426 7561 00 stq pr6|278 buffer.next 001357 aa 000004 6010 04 tnz 4,ic 001363 001360 aa 400000 2350 03 lda 131072,du 001361 aa 6 00107 7551 00 sta pr6|71 end_chain 001362 aa 777754 7100 04 tra -20,ic 001336 STATEMENT 1 ON LINE 466 else blockp = ptr (ttybp, buffer.next); 001363 aa 6 00176 3521 20 epp2 pr6|126,* ttybp 001364 aa 000000 3120 06 eawp2 0,ql 001365 aa 6 00212 2521 00 spri2 pr6|138 blockp STATEMENT 1 ON LINE 467 end; 001366 aa 777750 7100 04 tra -24,ic 001336 STATEMENT 1 ON LINE 469 nchars = (bin (tailp -> buffer.size_code, 3) + 1) * 16; 001367 aa 6 00172 2351 20 lda pr6|122,* buffer.size_code 001370 aa 000030 7350 00 als 24 001371 aa 000105 7730 00 lrl 69 001372 aa 000001 0760 07 adq 1,dl 001373 aa 000004 7360 00 qls 4 001374 aa 6 00152 7561 00 stq pr6|106 nchars STATEMENT 1 ON LINE 471 nchars = (nchars - 1) * 4; 001375 aa 000001 1760 07 sbq 1,dl 001376 aa 000002 7360 00 qls 2 001377 aa 6 00152 7561 00 stq pr6|106 nchars STATEMENT 1 ON LINE 472 i = bin (tailp -> buffer.tally, 9); 001400 aa 6 00172 2361 20 ldq pr6|122,* buffer.tally 001401 aa 0 00416 3771 00 anaq pr0|270 = 000000000000 000000000777 001402 aa 6 00130 7561 00 stq pr6|88 i STATEMENT 1 ON LINE 473 nchars = nchars - i; 001403 aa 6 00130 3361 00 lcq pr6|88 i 001404 aa 6 00152 0561 00 asq pr6|106 nchars STATEMENT 1 ON LINE 474 nchars = min (nchars, length (string (frame_trailer))); 001405 aa 6 00152 2361 00 ldq pr6|106 nchars 001406 aa 000023 1160 07 cmpq 19,dl 001407 aa 000002 6040 04 tmi 2,ic 001411 001410 aa 000023 2360 07 ldq 19,dl 001411 aa 6 00152 7561 00 stq pr6|106 nchars STATEMENT 1 ON LINE 476 call get_frame_trailer; 001412 aa 003166 6700 04 tsp4 1654,ic 004600 STATEMENT 1 ON LINE 477 if pvmd.etb_mode & ^pvste.printer & ^(eop_sw | tailp -> buffer.break) then do; 001413 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 001414 aa 7 00052 2351 00 lda pr7|42 pvmd.etb_mode 001415 aa 000100 3150 03 cana 64,du 001416 aa 000026 6000 04 tze 22,ic 001444 001417 aa 6 00204 3715 20 epp5 pr6|132,* pvstep 001420 aa 5 00002 2351 00 lda pr5|2 pvste.printer 001421 aa 400000 3150 03 cana 131072,du 001422 aa 000022 6010 04 tnz 18,ic 001444 001423 aa 6 00110 2351 00 lda pr6|72 eop_sw 001424 aa 000020 6010 04 tnz 16,ic 001444 001425 aa 6 00172 2351 20 lda pr6|122,* buffer.break 001426 aa 100000 3150 07 cana 32768,dl 001427 aa 000015 6010 04 tnz 13,ic 001444 STATEMENT 1 ON LINE 479 frame_trailer.text_msg.etx = ETB; 001430 aa 027000 2350 03 lda 11776,du 001431 aa 6 00121 5511 40 stba pr6|81,40 frame_trailer.etx STATEMENT 1 ON LINE 480 unspec (frame_trailer.text_msg.lrc) = bool (unspec (frame_trailer.text_msg.lrc), ETX_XOR_ETB, XOR); 001432 aa 6 00426 4501 00 stz pr6|278 001433 aa 003 100 060 404 csl (ic),(pr),fill(0),bool(move) 001434 aa 004405 00 0011 descb 2309,9 006040 = 024000000000 001435 aa 6 00426 00 0011 descb pr6|278,9 001436 aa 006 100 060 500 csl (pr),(pr),fill(0),bool(xor) 001437 aa 6 00121 20 0011 descb pr6|81(9),9 001440 aa 6 00426 00 0011 descb pr6|278,9 001441 aa 6 00426 2351 00 lda pr6|278 001442 aa 000011 7710 00 arl 9 001443 aa 6 00121 5511 20 stba pr6|81,20 STATEMENT 1 ON LINE 481 end; STATEMENT 1 ON LINE 483 if nchars > 0 /* have some room in last buffer, use it */ then substr (string (tailp -> buffer.chars), i + 1, nchars) = substr (string (frame_trailer), 1, nchars); 001444 aa 6 00152 2361 00 ldq pr6|106 nchars 001445 aa 000006 6044 04 tmoz 6,ic 001453 001446 aa 6 00130 7271 00 lxl7 pr6|88 i 001447 aa 6 00172 3715 20 epp5 pr6|122,* tailp 001450 aa 040 157 100 540 mlr (pr,rl),(pr,rl,x7),fill(040) 001451 aa 6 00121 00 0006 desc9a pr6|81,ql 001452 aa 5 00001 00 0006 desc9a pr5|1,ql STATEMENT 1 ON LINE 485 tailp -> buffer.tally = i + nchars; 001453 aa 6 00130 0761 00 adq pr6|88 i 001454 aa 6 00172 3715 20 epp5 pr6|122,* buffer.tally 001455 aa 5 00000 5521 04 stbq pr5|0,04 buffer.tally STATEMENT 1 ON LINE 487 nchars = length (string (frame_trailer)) - nchars; 001456 aa 000023 2360 07 ldq 19,dl 001457 aa 6 00152 1561 00 ssq pr6|106 nchars STATEMENT 1 ON LINE 488 if nchars > 0 /* could not fit everything in last buffer */ then do; 001460 aa 6 00152 2361 00 ldq pr6|106 nchars 001461 aa 000061 6044 04 tmoz 49,ic 001542 STATEMENT 1 ON LINE 490 call tty_space_man$get_buffer ((pvste.devx), 16, OUTPUT, blockp); 001462 aa 6 00204 3715 20 epp5 pr6|132,* pvstep 001463 aa 5 00001 2351 00 lda pr5|1 pvste.devx 001464 aa 000066 7330 00 lrs 54 001465 aa 6 00426 7561 00 stq pr6|278 001466 aa 000020 2360 07 ldq 16,dl 001467 aa 6 00427 7561 00 stq pr6|279 001470 aa 6 00426 3521 00 epp2 pr6|278 001471 aa 6 00444 2521 00 spri2 pr6|292 001472 aa 6 00427 3521 00 epp2 pr6|279 001473 aa 6 00446 2521 00 spri2 pr6|294 001474 aa 776370 3520 04 epp2 -776,ic 000064 = 400000000000 001475 aa 6 00450 2521 00 spri2 pr6|296 001476 aa 6 00212 3521 00 epp2 pr6|138 blockp 001477 aa 6 00452 2521 00 spri2 pr6|298 001500 aa 6 00442 6211 00 eax1 pr6|290 001501 aa 020000 4310 07 fld 8192,dl 001502 aa 6 00044 3701 20 epp4 pr6|36,* 001503 la 4 00050 3521 20 epp2 pr4|40,* tty_space_man$get_buffer 001504 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 491 if blockp = null then do; 001505 aa 6 00212 2371 00 ldaq pr6|138 blockp 001506 aa 776402 6770 04 eraq -766,ic 000110 = 077777000043 000001000000 001507 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001510 aa 000005 6010 04 tnz 5,ic 001515 STATEMENT 1 ON LINE 493 tailp -> buffer.tally = i; 001511 aa 6 00130 2361 00 ldq pr6|88 i 001512 aa 6 00172 3735 20 epp7 pr6|122,* buffer.tally 001513 aa 7 00000 5521 04 stbq pr7|0,04 buffer.tally STATEMENT 1 ON LINE 494 go to noalloc; 001514 aa 000053 7100 04 tra 43,ic 001567 STATEMENT 1 ON LINE 495 end; STATEMENT 1 ON LINE 497 tailp -> buffer.next = bin (rel (blockp), 18); 001515 aa 6 00212 6351 20 eaa pr6|138,* blockp 001516 aa 000066 7730 00 lrl 54 001517 aa 000066 7370 00 lls 54 001520 aa 6 00172 3735 20 epp7 pr6|122,* buffer.next 001521 aa 7 00000 5511 60 stba pr7|0,60 buffer.next STATEMENT 1 ON LINE 499 tailp = blockp; 001522 aa 6 00212 3715 20 epp5 pr6|138,* blockp 001523 aa 6 00172 6515 00 spri5 pr6|122 tailp STATEMENT 1 ON LINE 500 tailp -> buffer.next = 0; 001524 aa 000000 2350 07 lda 0,dl 001525 aa 6 00172 3535 20 epp3 pr6|122,* buffer.next 001526 aa 3 00000 5511 60 stba pr3|0,60 buffer.next STATEMENT 1 ON LINE 502 i = length (string (frame_trailer)) - nchars + 1; 001527 aa 000023 2360 07 ldq 19,dl 001530 aa 6 00152 1761 00 sbq pr6|106 nchars 001531 aa 000001 0760 07 adq 1,dl 001532 aa 6 00130 7561 00 stq pr6|88 i STATEMENT 1 ON LINE 504 substr (string (tailp -> buffer.chars), 1, nchars) = substr (string (frame_trailer), i, nchars); 001533 aa 6 00172 3515 20 epp1 pr6|122,* tailp 001534 aa 6 00152 7271 00 lxl7 pr6|106 nchars 001535 aa 040 140 100 546 mlr (pr,rl,ql),(pr,rl),fill(040) 001536 aa 6 00120 60 0017 desc9a pr6|80(3),x7 001537 aa 1 00001 00 0017 desc9a pr1|1,x7 STATEMENT 1 ON LINE 505 tailp -> buffer.tally = nchars; 001540 aa 6 00152 2361 00 ldq pr6|106 nchars 001541 aa 1 00000 5521 04 stbq pr1|0,04 buffer.tally STATEMENT 1 ON LINE 506 end; STATEMENT 1 ON LINE 508 pvste.eop = "0"b; 001542 aa 004256 2350 04 lda 2222,ic 006020 = 677777777777 001543 aa 6 00204 3735 20 epp7 pr6|132,* pvstep 001544 aa 7 00002 3551 00 ansa pr7|2 pvste.eop STATEMENT 1 ON LINE 509 headp -> buffer.end_of_page = eop_sw; 001545 aa 6 00110 2351 00 lda pr6|72 eop_sw 001546 aa 000022 7710 00 arl 18 001547 aa 6 00126 6751 20 era pr6|86,* buffer.end_of_page 001550 aa 400000 3750 07 ana 131072,dl 001551 aa 6 00126 6551 20 ersa pr6|86,* buffer.end_of_page STATEMENT 1 ON LINE 510 pvste.write_chain = bin (rel (headp), 18); 001552 aa 6 00126 6351 20 eaa pr6|86,* headp 001553 aa 000066 7730 00 lrl 54 001554 aa 7 00001 5521 14 stbq pr7|1,14 pvste.write_chain STATEMENT 1 ON LINE 511 if pvmd.write_chan = 0 then call write_frame (code); 001555 aa 6 00202 3715 20 epp5 pr6|130,* pvmdp 001556 aa 5 00014 2361 00 ldq pr5|12 pvmd.write_chan 001557 aa 000003 6010 04 tnz 3,ic 001562 001560 aa 004234 3520 04 epp2 2204,ic 006014 = 000002000000 001561 aa 003050 6700 04 tsp4 1576,ic 004631 STATEMENT 1 ON LINE 514 pm_chain_ptr = leftover_chain_ptr; 001562 aa 6 00144 3735 20 epp7 pr6|100,* leftover_chain_ptr 001563 aa 6 00032 3715 20 epp5 pr6|26,* 001564 aa 5 00006 6535 20 spri7 pr5|6,* pm_chain_ptr STATEMENT 1 ON LINE 515 pm_code = 0; 001565 aa 6 00220 4501 20 stz pr6|144,* pm_code STATEMENT 1 ON LINE 516 return; 001566 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 518 noalloc: if headp ^= null then call tty_space_man$free_buffer ((pvste.devx), OUTPUT, headp); 001567 aa 6 00126 2371 00 ldaq pr6|86 headp 001570 aa 776320 6770 04 eraq -816,ic 000110 = 077777000043 000001000000 001571 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001572 aa 000020 6000 04 tze 16,ic 001612 001573 aa 6 00204 3735 20 epp7 pr6|132,* pvstep 001574 aa 7 00001 2351 00 lda pr7|1 pvste.devx 001575 aa 000066 7330 00 lrs 54 001576 aa 6 00427 7561 00 stq pr6|279 001577 aa 6 00427 3521 00 epp2 pr6|279 001600 aa 6 00434 2521 00 spri2 pr6|284 001601 aa 776263 3520 04 epp2 -845,ic 000064 = 400000000000 001602 aa 6 00436 2521 00 spri2 pr6|286 001603 aa 6 00126 3521 00 epp2 pr6|86 headp 001604 aa 6 00440 2521 00 spri2 pr6|288 001605 aa 6 00432 6211 00 eax1 pr6|282 001606 aa 014000 4310 07 fld 6144,dl 001607 aa 6 00044 3701 20 epp4 pr6|36,* 001610 la 4 00052 3521 20 epp2 pr4|42,* tty_space_man$free_buffer 001611 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 521 if leftover_chain_ptr = null then tailp -> buffer.next = 0; 001612 aa 6 00144 2371 00 ldaq pr6|100 leftover_chain_ptr 001613 aa 776275 6770 04 eraq -835,ic 000110 = 077777000043 000001000000 001614 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001615 aa 000005 6010 04 tnz 5,ic 001622 001616 aa 000000 2350 07 lda 0,dl 001617 aa 6 00172 3735 20 epp7 pr6|122,* buffer.next 001620 aa 7 00000 5511 60 stba pr7|0,60 buffer.next 001621 aa 000006 7100 04 tra 6,ic 001627 STATEMENT 1 ON LINE 523 else tailp -> buffer.next = bin (rel (leftover_chain_ptr), 18); 001622 aa 6 00144 6351 20 eaa pr6|100,* leftover_chain_ptr 001623 aa 000066 7730 00 lrl 54 001624 aa 000066 7370 00 lls 54 001625 aa 6 00172 3735 20 epp7 pr6|122,* buffer.next 001626 aa 7 00000 5511 60 stba pr7|0,60 buffer.next STATEMENT 1 ON LINE 524 tailp -> buffer.end_of_page = eop_sw; 001627 aa 6 00110 2351 00 lda pr6|72 eop_sw 001630 aa 000022 7710 00 arl 18 001631 aa 6 00172 6751 20 era pr6|122,* buffer.end_of_page 001632 aa 400000 3750 07 ana 131072,dl 001633 aa 6 00172 6551 20 ersa pr6|122,* buffer.end_of_page STATEMENT 1 ON LINE 525 pm_code = et_noalloc; 001634 aa 6 00044 3701 20 epp4 pr6|36,* 001635 ia 4 00013 2361 00 ldq pr4|11 et_noalloc 001636 aa 6 00220 7561 20 stq pr6|144,* pm_code STATEMENT 1 ON LINE 526 return; 001637 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO interrupt STATEMENT 1 ON LINE 532 interrupt: entry (pm_pvmdp, pm_int_type, pm_int_data); 001640 at 000003000100 001641 tt 000073000074 001642 ta 001640000000 001643 da 000255300000 001644 aa 000700 6270 00 eax7 448 001645 aa 7 00034 3521 20 epp2 pr7|28,* 001646 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001647 aa 000006000000 001650 aa 000000000000 001651 aa 776310 7000 04 tsx0 -824,ic 000161 STATEMENT 1 ON LINE 535 ttybp = addr (tty_buf$); 001652 aa 6 00044 3701 20 epp4 pr6|36,* 001653 la 4 00032 3735 20 epp7 pr4|26,* tty_buf$ 001654 aa 6 00176 6535 00 spri7 pr6|126 ttybp STATEMENT 1 ON LINE 536 pvmdp = pm_pvmdp; 001655 aa 6 00032 3715 20 epp5 pr6|26,* 001656 aa 5 00002 3535 20 epp3 pr5|2,* pm_pvmdp 001657 aa 3 00000 3535 20 epp3 pr3|0,* pm_pvmdp 001660 aa 6 00202 2535 00 spri3 pr6|130 pvmdp STATEMENT 1 ON LINE 537 int_type = pm_int_type; 001661 aa 5 00004 2361 20 ldq pr5|4,* pm_int_type 001662 aa 6 00140 7561 00 stq pr6|96 int_type STATEMENT 1 ON LINE 538 int_data = pm_int_data; 001663 aa 5 00006 3515 20 epp1 pr5|6,* 001664 aa 1 00000 2351 00 lda pr1|0 pm_int_data 001665 aa 1 00001 2361 00 ldq pr1|1 pm_int_data 001666 aa 6 00136 7571 00 staq pr6|94 int_data STATEMENT 1 ON LINE 540 if int_type < lbound (INTERRUPT, 1) | int_type > hbound (INTERRUPT, 1) then return; 001667 aa 6 00140 2361 00 ldq pr6|96 int_type 001670 aa 000001 1160 07 cmpq 1,dl 001671 aa 0 00631 6041 00 tmi pr0|409 return_mac 001672 aa 000021 1160 07 cmpq 17,dl 001673 aa 0 00631 6055 00 tpnz pr0|409 return_mac STATEMENT 1 ON LINE 542 go to INTERRUPT (int_type); 001674 ta 000012 7100 06 tra 10,ql STATEMENT 1 ON LINE 545 INTERRUPT (1): /* DIALUP - major channel has dialed up */ pvmd.dialup_info = int_data; 001675 aa 6 00136 2371 00 ldaq pr6|94 int_data 001676 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 001677 aa 7 00044 7551 00 sta pr7|36 pvmd.dialup_info 001700 aa 7 00045 7561 00 stq pr7|37 pvmd.dialup_info STATEMENT 1 ON LINE 547 pvmd.mpx_loading = "0"b; 001701 aa 004117 2350 04 lda 2127,ic 006020 = 677777777777 001702 aa 7 00052 3551 00 ansa pr7|42 pvmd.mpx_loading STATEMENT 1 ON LINE 548 pvmd.mpx_loaded = "1"b; 001703 aa 040000 2350 03 lda 16384,du 001704 aa 7 00052 2551 00 orsa pr7|42 pvmd.mpx_loaded STATEMENT 1 ON LINE 549 call pxss$ring_0_wakeup (pvmd.load_proc_id, pvmd.load_ev_chan, PV_MPX_UP, code); 001705 aa 7 00040 3521 00 epp2 pr7|32 pvmd.load_proc_id 001706 aa 6 00444 2521 00 spri2 pr6|292 001707 aa 7 00042 3521 00 epp2 pr7|34 pvmd.load_ev_chan 001710 aa 6 00446 2521 00 spri2 pr6|294 001711 aa 776137 3520 04 epp2 -929,ic 000050 = 000000000000 001712 aa 6 00450 2521 00 spri2 pr6|296 001713 aa 6 00106 3521 00 epp2 pr6|70 code 001714 aa 6 00452 2521 00 spri2 pr6|298 001715 aa 6 00442 6211 00 eax1 pr6|290 001716 aa 020000 4310 07 fld 8192,dl 001717 aa 6 00044 3701 20 epp4 pr6|36,* 001720 la 4 00034 3521 20 epp2 pr4|28,* pxss$ring_0_wakeup 001721 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 550 return; 001722 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 553 INTERRUPT (2): /* HANGUP - major channel has hung up */ call crash_mpx; 001723 aa 003351 6700 04 tsp4 1769,ic 005274 STATEMENT 1 ON LINE 555 call pxss$ring_0_wakeup (pvmd.load_proc_id, pvmd.load_ev_chan, PV_MPX_DOWN, code); 001724 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 001725 aa 7 00040 3521 00 epp2 pr7|32 pvmd.load_proc_id 001726 aa 6 00444 2521 00 spri2 pr6|292 001727 aa 7 00042 3521 00 epp2 pr7|34 pvmd.load_ev_chan 001730 aa 6 00446 2521 00 spri2 pr6|294 001731 aa 776115 3520 04 epp2 -947,ic 000046 = 000000000000 001732 aa 6 00450 2521 00 spri2 pr6|296 001733 aa 6 00106 3521 00 epp2 pr6|70 code 001734 aa 6 00452 2521 00 spri2 pr6|298 001735 aa 6 00442 6211 00 eax1 pr6|290 001736 aa 020000 4310 07 fld 8192,dl 001737 aa 6 00044 3701 20 epp4 pr6|36,* 001740 la 4 00034 3521 20 epp2 pr4|28,* pxss$ring_0_wakeup 001741 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 556 return; 001742 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 559 INTERRUPT (3): /* CRASH - parent multiplexer has died */ call crash_mpx; 001743 aa 003331 6700 04 tsp4 1753,ic 005274 STATEMENT 1 ON LINE 561 return; 001744 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 564 INTERRUPT (4): /* SEND OUTPUT - it's safe to write next output frame now */ if ^pvmd.mpx_loaded then return; 001745 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 001746 aa 7 00052 2351 00 lda pr7|42 pvmd.mpx_loaded 001747 aa 040000 3150 03 cana 16384,du 001750 aa 0 00631 6001 00 tze pr0|409 return_mac STATEMENT 1 ON LINE 568 pvmd.send_output = "1"b; 001751 aa 400000 2350 03 lda 131072,du 001752 aa 7 00052 2551 00 orsa pr7|42 pvmd.send_output STATEMENT 1 ON LINE 569 if pvmd.writep ^= null /* we're in the middle of writing a frame */ then do; 001753 aa 7 00012 2371 00 ldaq pr7|10 pvmd.writep 001754 aa 776134 6770 04 eraq -932,ic 000110 = 077777000043 000001000000 001755 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001756 aa 000005 6000 04 tze 5,ic 001763 STATEMENT 1 ON LINE 571 call write_bchain (code); 001757 aa 004035 3520 04 epp2 2077,ic 006014 = 000002000000 001760 aa 002733 6700 04 tsp4 1499,ic 004713 STATEMENT 1 ON LINE 572 if code = 0 then return; 001761 aa 6 00106 2361 00 ldq pr6|70 code 001762 aa 0 00631 6001 00 tze pr0|409 return_mac STATEMENT 1 ON LINE 574 end; STATEMENT 1 ON LINE 576 saved_write_chan = pvmd.write_chan; 001763 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 001764 aa 7 00014 2361 00 ldq pr7|12 pvmd.write_chan 001765 aa 6 00170 7561 00 stq pr6|120 saved_write_chan STATEMENT 1 ON LINE 577 pvmd.write_chan = 0; 001766 aa 7 00014 4501 00 stz pr7|12 pvmd.write_chan STATEMENT 1 ON LINE 578 call send_next_frame (saved_write_chan); 001767 aa 004021 3520 04 epp2 2065,ic 006010 = 000002000000 001770 aa 002113 6700 04 tsp4 1099,ic 004103 STATEMENT 1 ON LINE 580 if saved_write_chan ^= 0 /* we were waiting for output completion */ then do; 001771 aa 6 00170 2361 00 ldq pr6|120 saved_write_chan 001772 aa 000060 6000 04 tze 48,ic 002052 STATEMENT 1 ON LINE 582 pvstep = addr (pvmd.subchan_table (saved_write_chan)); 001773 aa 000012 4020 07 mpy 10,dl 001774 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 001775 aa 7 00050 3735 06 epp7 pr7|40,ql pvmd.subchan_table 001776 aa 6 00204 6535 00 spri7 pr6|132 pvstep STATEMENT 1 ON LINE 583 if pvste.pgofs > 0 /* bad status on previous write */ then do; 001777 aa 7 00003 2351 00 lda pr7|3 pvste.pgofs 002000 aa 000077 7330 00 lrs 63 002001 aa 000023 6044 04 tmoz 19,ic 002024 STATEMENT 1 ON LINE 585 pvste.writes = pvste.writes + 1; 002002 aa 7 00003 2351 00 lda pr7|3 pvste.writes 002003 aa 000011 7350 00 als 9 002004 aa 000077 7330 00 lrs 63 002005 aa 000001 0760 07 adq 1,dl 002006 aa 000066 7370 00 lls 54 002007 aa 7 00003 5511 20 stba pr7|3,20 pvste.writes STATEMENT 1 ON LINE 586 if pvste.writes > pvste.pgofs /* wrote a frame without bad status */ then pvste.pgofs, pvste.writes = 0; 002010 aa 7 00003 2351 00 lda pr7|3 pvste.pgofs 002011 aa 000077 7330 00 lrs 63 002012 aa 6 00427 7561 00 stq pr6|279 pvste.pgofs 002013 aa 7 00003 2351 00 lda pr7|3 pvste.writes 002014 aa 000011 7350 00 als 9 002015 aa 000077 7330 00 lrs 63 002016 aa 6 00427 1161 00 cmpq pr6|279 pvste.pgofs 002017 aa 000005 6044 04 tmoz 5,ic 002024 002020 aa 000000 2350 07 lda 0,dl 002021 aa 7 00003 5511 40 stba pr7|3,40 pvste.pgofs 002022 aa 000011 7710 00 arl 9 002023 aa 7 00003 5511 20 stba pr7|3,20 pvste.writes STATEMENT 1 ON LINE 588 end; STATEMENT 1 ON LINE 590 if pvste.dialed & ^pvste.hold_output /* ready for more output now */ then call channel_manager$interrupt ((pvste.devx), SEND_OUTPUT, ""b); 002024 aa 7 00002 2351 00 lda pr7|2 pvste.dialed 002025 aa 010000 3150 03 cana 4096,du 002026 aa 000024 6000 04 tze 20,ic 002052 002027 aa 7 00002 2351 00 lda pr7|2 pvste.hold_output 002030 aa 200000 3150 03 cana 65536,du 002031 aa 000021 6010 04 tnz 17,ic 002052 002032 aa 7 00001 2351 00 lda pr7|1 pvste.devx 002033 aa 000066 7330 00 lrs 54 002034 aa 6 00427 7561 00 stq pr6|279 002035 aa 776057 2370 04 ldaq -977,ic 000114 = 000000000000 000000000000 002036 aa 6 00430 7571 00 staq pr6|280 002037 aa 6 00427 3521 00 epp2 pr6|279 002040 aa 6 00434 2521 00 spri2 pr6|284 002041 aa 776034 3520 04 epp2 -996,ic 000075 = 000000000004 002042 aa 6 00436 2521 00 spri2 pr6|286 002043 aa 6 00430 3521 00 epp2 pr6|280 002044 aa 6 00440 2521 00 spri2 pr6|288 002045 aa 6 00432 6211 00 eax1 pr6|282 002046 aa 014000 4310 07 fld 6144,dl 002047 aa 6 00044 3701 20 epp4 pr6|36,* 002050 la 4 00046 3521 20 epp2 pr4|38,* channel_manager$interrupt 002051 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 592 end; STATEMENT 1 ON LINE 594 return; 002052 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 597 INTERRUPT (5): /* INPUT AVAILABLE - ignore */ return; 002053 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 601 INTERRUPT (6): /* ACCEPT INPUT - process an input frame */ if ^pvmd.mpx_loaded then return; 002054 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 002055 aa 7 00052 2351 00 lda pr7|42 pvmd.mpx_loaded 002056 aa 040000 3150 03 cana 16384,du 002057 aa 0 00631 6001 00 tze pr0|409 return_mac STATEMENT 1 ON LINE 605 unspec (rtx_info) = int_data; 002060 aa 6 00136 2371 00 ldaq pr6|94 int_data 002061 aa 6 00210 7571 00 staq pr6|136 STATEMENT 1 ON LINE 606 headp = ptr (ttybp, rtx_info.chain_head); 002062 aa 6 00210 2351 00 lda pr6|136 rtx_info.chain_head 002063 aa 0 00044 3771 00 anaq pr0|36 = 777777000000 000000000000 002064 aa 6 00176 3521 20 epp2 pr6|126,* ttybp 002065 aa 000000 3120 01 eawp2 0,au 002066 aa 6 00126 2521 00 spri2 pr6|86 headp STATEMENT 1 ON LINE 607 input_framep = addr (headp -> buffer.chars); 002067 aa 2 00001 3715 00 epp5 pr2|1 buffer.chars 002070 aa 6 00134 6515 00 spri5 pr6|92 input_framep STATEMENT 1 ON LINE 616 i = 2; 002071 aa 000002 2360 07 ldq 2,dl 002072 aa 6 00130 7561 00 stq pr6|88 i STATEMENT 1 ON LINE 617 adr = unspec (input_frame.msg (1).adr); 002073 aa 5 00000 2351 00 lda pr5|0 002074 aa 000011 7350 00 als 9 002075 aa 0 00022 3771 00 anaq pr0|18 = 777000000000 000000000000 002076 aa 6 00100 7551 00 sta pr6|64 adr STATEMENT 1 ON LINE 618 if (adr & ADR_MASK) ^= POLL /* it's not a poll msg */ then do; 002077 aa 740000 3750 03 ana 245760,du 002100 aa 040000 1150 03 cmpa 16384,du 002101 aa 000004 6000 04 tze 4,ic 002105 STATEMENT 1 ON LINE 620 adr = ""b; 002102 aa 6 00100 4501 00 stz pr6|64 adr STATEMENT 1 ON LINE 621 i = 1; 002103 aa 000001 2360 07 ldq 1,dl 002104 aa 6 00130 7561 00 stq pr6|88 i STATEMENT 1 ON LINE 622 end; STATEMENT 1 ON LINE 624 found_text = "0"b; 002105 aa 6 00112 4501 00 stz pr6|74 found_text STATEMENT 1 ON LINE 625 do i = i to 4 while (^found_text); 002106 aa 6 00130 2361 00 ldq pr6|88 i 002107 aa 6 00130 7561 00 stq pr6|88 i 002110 aa 6 00130 2361 00 ldq pr6|88 i 002111 aa 000004 1160 07 cmpq 4,dl 002112 aa 000034 6054 04 tpnz 28,ic 002146 002113 aa 6 00112 2351 00 lda pr6|74 found_text 002114 aa 000032 6010 04 tnz 26,ic 002146 STATEMENT 1 ON LINE 626 if input_frame.msg (i).soh ^= SOH /* no more good messages */ then go to discard_input; 002115 aa 000001 7360 00 qls 1 002116 aa 6 00134 3735 20 epp7 pr6|92,* input_framep 002117 aa 7 77776 2351 06 lda pr7|-2,ql input_frame.soh 002120 aa 6 00427 7561 00 stq pr6|279 002121 aa 0 00022 3771 00 anaq pr0|18 = 777000000000 000000000000 002122 aa 001000 1150 03 cmpa 512,du 002123 aa 000025 6010 04 tnz 21,ic 002150 STATEMENT 1 ON LINE 628 if input_frame.msg (i).sta = NUL /* this is a text message */ then do; 002124 aa 6 00427 7271 00 lxl7 pr6|279 002125 aa 7 77776 2351 17 lda pr7|-2,7 input_frame.sta 002126 aa 000022 7350 00 als 18 002127 aa 0 00022 3771 00 anaq pr0|18 = 777000000000 000000000000 002130 aa 000000 1150 07 cmpa 0,dl 002131 aa 000013 6010 04 tnz 11,ic 002144 STATEMENT 1 ON LINE 630 found_text = "1"b; 002132 aa 400000 2350 03 lda 131072,du 002133 aa 6 00112 7551 00 sta pr6|74 found_text STATEMENT 1 ON LINE 631 if adr = ""b then adr = unspec (input_frame.msg (i).adr); 002134 aa 6 00100 2351 00 lda pr6|64 adr 002135 aa 000005 6010 04 tnz 5,ic 002142 002136 aa 7 77776 2351 17 lda pr7|-2,7 002137 aa 000011 7350 00 als 9 002140 aa 0 00022 3771 00 anaq pr0|18 = 777000000000 000000000000 002141 aa 6 00100 7551 00 sta pr6|64 adr STATEMENT 1 ON LINE 633 nmsg = i; 002142 aa 6 00130 2361 00 ldq pr6|88 i 002143 aa 6 00153 7561 00 stq pr6|107 nmsg STATEMENT 1 ON LINE 634 end; STATEMENT 1 ON LINE 635 end; 002144 aa 6 00130 0541 00 aos pr6|88 i 002145 aa 777743 7100 04 tra -29,ic 002110 STATEMENT 1 ON LINE 636 if ^found_text then do; 002146 aa 6 00112 2351 00 lda pr6|74 found_text 002147 aa 000015 6010 04 tnz 13,ic 002164 STATEMENT 1 ON LINE 638 discard_input: call tty_space_man$free_chain (pvmd.devx, INPUT, headp); 002150 aa 6 00202 3521 20 epp2 pr6|130,* pvmd.devx 002151 aa 6 00434 2521 00 spri2 pr6|284 002152 aa 775672 3520 04 epp2 -1094,ic 000044 = 000000000000 002153 aa 6 00436 2521 00 spri2 pr6|286 002154 aa 6 00126 3521 00 epp2 pr6|86 headp 002155 aa 6 00440 2521 00 spri2 pr6|288 002156 aa 6 00432 6211 00 eax1 pr6|282 002157 aa 014000 4310 07 fld 6144,dl 002160 aa 6 00044 3701 20 epp4 pr6|36,* 002161 la 4 00054 3521 20 epp2 pr4|44,* tty_space_man$free_chain 002162 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 640 return; 002163 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 641 end; STATEMENT 1 ON LINE 643 i = bin (substr (adr, 5, 5), 5); 002164 aa 6 00100 2351 00 lda pr6|64 adr 002165 aa 000004 7350 00 als 4 002166 aa 000103 7730 00 lrl 67 002167 aa 6 00130 7561 00 stq pr6|88 i STATEMENT 1 ON LINE 644 subchan = pvmd.station_to_subchan (i).display; 002170 aa 000022 4020 07 mpy 18,dl 002171 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 002172 aa 003 100 060 506 csl (pr,ql),(pr),fill(0),bool(move) 002173 aa 7 00016 00 0011 descb pr7|14,9 pvmd.display 002174 aa 6 00056 00 0044 descb pr6|46,36 002175 aa 6 00056 2351 00 lda pr6|46 002176 aa 000077 7330 00 lrs 63 002177 aa 6 00171 7561 00 stq pr6|121 subchan STATEMENT 1 ON LINE 645 if subchan = 0 /* not configured */ then go to discard_input; 002200 aa 777750 6000 04 tze -24,ic 002150 STATEMENT 1 ON LINE 647 pvstep = addr (pvmd.subchan_table (subchan)); 002201 aa 000012 4020 07 mpy 10,dl 002202 aa 7 00050 3715 06 epp5 pr7|40,ql pvmd.subchan_table 002203 aa 6 00204 6515 00 spri5 pr6|132 pvstep STATEMENT 1 ON LINE 648 if ^pvste.dialed then do; 002204 aa 5 00002 2351 00 lda pr5|2 pvste.dialed 002205 aa 010000 3150 03 cana 4096,du 002206 aa 000014 6010 04 tnz 12,ic 002222 STATEMENT 1 ON LINE 650 if pvmd.mpx_started & pvste.listen & ^pvste.slave then call signal_dialup; 002207 aa 7 00052 2351 00 lda pr7|42 pvmd.mpx_started 002210 aa 200000 3150 03 cana 65536,du 002211 aa 777737 6000 04 tze -33,ic 002150 002212 aa 5 00002 2351 00 lda pr5|2 pvste.listen 002213 aa 020000 3150 03 cana 8192,du 002214 aa 777734 6000 04 tze -36,ic 002150 002215 aa 5 00002 2351 00 lda pr5|2 pvste.slave 002216 aa 004000 3150 03 cana 2048,du 002217 aa 777731 6010 04 tnz -39,ic 002150 002220 aa 001515 6700 04 tsp4 845,ic 003735 STATEMENT 1 ON LINE 652 go to discard_input; 002221 aa 777727 7100 04 tra -41,ic 002150 STATEMENT 1 ON LINE 653 end; STATEMENT 1 ON LINE 655 ff_sent = "0"b; 002222 aa 6 00111 4501 00 stz pr6|73 ff_sent STATEMENT 1 ON LINE 656 output_restarted = "0"b; 002223 aa 6 00164 4501 00 stz pr6|116 output_restarted STATEMENT 1 ON LINE 657 xflag = (substr (pvste.name, 1, 1) = "x"); 002224 aa 5 00000 2351 00 lda pr5|0 pvste.name 002225 aa 000011 7350 00 als 9 002226 aa 0 00022 3771 00 anaq pr0|18 = 777000000000 000000000000 002227 aa 170000 1150 03 cmpa 61440,du 002230 aa 0 00512 7001 00 tsx0 pr0|330 r_e_as 002231 aa 6 00200 7551 00 sta pr6|128 xflag STATEMENT 1 ON LINE 661 if ^xflag & (input_frame.msg (nmsg).fc1 = pvmd.quit) then do; 002232 aa 6 00153 2361 00 ldq pr6|107 nmsg 002233 aa 000001 7360 00 qls 1 002234 aa 6 00200 2351 00 lda pr6|128 xflag 002235 aa 0 00002 6751 00 era pr0|2 = 400000000000 002236 aa 6 00427 7551 00 sta pr6|279 002237 aa 6 00426 7561 00 stq pr6|278 002240 aa 000050 6000 04 tze 40,ic 002310 002241 aa 7 00051 2351 00 lda pr7|41 pvmd.quit 002242 aa 0 00022 3771 00 anaq pr0|18 = 777000000000 000000000000 002243 aa 6 00454 7551 00 sta pr6|300 pvmd.quit 002244 aa 6 00426 7271 00 lxl7 pr6|278 002245 aa 6 00134 3535 20 epp3 pr6|92,* input_framep 002246 aa 3 77776 2351 17 lda pr3|-2,7 input_frame.fc1 002247 aa 000033 7350 00 als 27 002250 aa 6 00454 1151 00 cmpa pr6|300 pvmd.quit 002251 aa 000037 6010 04 tnz 31,ic 002310 STATEMENT 1 ON LINE 663 quit: call channel_manager$interrupt ((pvste.devx), QUIT, ""b); 002252 aa 6 00204 3735 20 epp7 pr6|132,* pvstep 002253 aa 7 00001 2351 00 lda pr7|1 pvste.devx 002254 aa 000066 7330 00 lrs 54 002255 aa 6 00454 7561 00 stq pr6|300 002256 aa 775636 2370 04 ldaq -1122,ic 000114 = 000000000000 000000000000 002257 aa 6 00430 7571 00 staq pr6|280 002260 aa 6 00454 3521 00 epp2 pr6|300 002261 aa 6 00434 2521 00 spri2 pr6|284 002262 aa 775604 3520 04 epp2 -1148,ic 000066 = 000000000010 002263 aa 6 00436 2521 00 spri2 pr6|286 002264 aa 6 00430 3521 00 epp2 pr6|280 002265 aa 6 00440 2521 00 spri2 pr6|288 002266 aa 6 00432 6211 00 eax1 pr6|282 002267 aa 014000 4310 07 fld 6144,dl 002270 aa 6 00044 3701 20 epp4 pr6|36,* 002271 la 4 00046 3521 20 epp2 pr4|38,* channel_manager$interrupt 002272 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 665 if pvste.hndlquit /* discard any write data */ then do; 002273 aa 6 00204 3735 20 epp7 pr6|132,* pvstep 002274 aa 7 00002 2351 00 lda pr7|2 pvste.hndlquit 002275 aa 040000 3150 03 cana 16384,du 002276 aa 777652 6000 04 tze -86,ic 002150 STATEMENT 1 ON LINE 667 if pvste.hold_output then do; 002277 aa 7 00002 2351 00 lda pr7|2 pvste.hold_output 002300 aa 200000 3150 03 cana 65536,du 002301 aa 000005 6000 04 tze 5,ic 002306 STATEMENT 1 ON LINE 669 pvste.hold_output = "0"b; 002302 aa 003504 2350 04 lda 1860,ic 006006 = 577777777777 002303 aa 7 00002 3551 00 ansa pr7|2 pvste.hold_output STATEMENT 1 ON LINE 670 pvste.eop = "1"b; 002304 aa 100000 2350 03 lda 32768,du 002305 aa 7 00002 2551 00 orsa pr7|2 pvste.eop STATEMENT 1 ON LINE 671 end; STATEMENT 1 ON LINE 672 call free_write_chain; 002306 aa 002676 6700 04 tsp4 1470,ic 005204 STATEMENT 1 ON LINE 673 end; STATEMENT 1 ON LINE 674 go to discard_input; 002307 aa 777641 7100 04 tra -95,ic 002150 STATEMENT 1 ON LINE 675 end; STATEMENT 1 ON LINE 677 if ^xflag & pvmd.gcos_break then do; 002310 aa 6 00427 2351 00 lda pr6|279 002311 aa 000033 6000 04 tze 27,ic 002344 002312 aa 7 00052 2351 00 lda pr7|42 pvmd.gcos_break 002313 aa 000200 3150 03 cana 128,du 002314 aa 000030 6000 04 tze 24,ic 002344 STATEMENT 1 ON LINE 679 bmp = addr (input_frame.msg (nmsg)); 002315 aa 6 00426 7271 00 lxl7 pr6|278 002316 aa 6 00134 3535 20 epp3 pr6|92,* input_framep 002317 aa 3 77776 3535 17 epp3 pr3|-2,7 input_frame.msg 002320 aa 6 00102 2535 00 spri3 pr6|66 bmp STATEMENT 1 ON LINE 680 if headp -> buffer.next = 0 /* whole frame in one buffer */ then if bin (headp -> buffer.tally) = length (string (input_frame)) + 6 then if break_msg.text = "$*$BRK" /* isn't that cute */ then go to quit; 002321 aa 6 00126 2351 20 lda pr6|86,* buffer.next 002322 aa 000066 7730 00 lrl 54 002323 aa 000021 6010 04 tnz 17,ic 002344 002324 aa 6 00153 2361 00 ldq pr6|107 nmsg 002325 aa 000003 7360 00 qls 3 002326 aa 000001 0760 07 adq 1,dl 002327 aa 000011 4020 07 mpy 9,dl 002330 aa 000010 0760 07 adq 8,dl 002331 aa 000011 5060 07 div 9,dl 002332 aa 000006 0760 07 adq 6,dl 002333 aa 6 00426 7561 00 stq pr6|278 002334 aa 6 00126 2361 20 ldq pr6|86,* buffer.tally 002335 aa 0 00416 3771 00 anaq pr0|270 = 000000000000 000000000777 002336 aa 6 00426 1161 00 cmpq pr6|278 002337 aa 000005 6010 04 tnz 5,ic 002344 002340 aa 040 004 106 500 cmpc (pr),(ic),fill(040) 002341 aa 3 00001 40 0006 desc9a pr3|1(2),6 break_msg.text 002342 aa 775544 00 0006 desc9a -1180,6 000104 = 044052044102 002343 aa 777707 6000 04 tze -57,ic 002252 STATEMENT 1 ON LINE 684 end; STATEMENT 1 ON LINE 688 if pvste.hold_output /* we've been waiting for this */ then do; 002344 aa 5 00002 2351 00 lda pr5|2 pvste.hold_output 002345 aa 200000 3150 03 cana 65536,du 002346 aa 000035 6000 04 tze 29,ic 002403 STATEMENT 1 ON LINE 690 pvste.hold_output = "0"b; 002347 aa 003437 2350 04 lda 1823,ic 006006 = 577777777777 002350 aa 5 00002 3551 00 ansa pr5|2 pvste.hold_output STATEMENT 1 ON LINE 691 pvste.eop = "1"b; 002351 aa 100000 2350 03 lda 32768,du 002352 aa 5 00002 2551 00 orsa pr5|2 pvste.eop STATEMENT 1 ON LINE 692 call channel_manager$interrupt ((pvste.devx), SEND_OUTPUT, ""b); 002353 aa 5 00001 2351 00 lda pr5|1 pvste.devx 002354 aa 000066 7330 00 lrs 54 002355 aa 6 00426 7561 00 stq pr6|278 002356 aa 775536 2370 04 ldaq -1186,ic 000114 = 000000000000 000000000000 002357 aa 6 00430 7571 00 staq pr6|280 002360 aa 6 00426 3521 00 epp2 pr6|278 002361 aa 6 00434 2521 00 spri2 pr6|284 002362 aa 775513 3520 04 epp2 -1205,ic 000075 = 000000000004 002363 aa 6 00436 2521 00 spri2 pr6|286 002364 aa 6 00430 3521 00 epp2 pr6|280 002365 aa 6 00440 2521 00 spri2 pr6|288 002366 aa 6 00432 6211 00 eax1 pr6|282 002367 aa 014000 4310 07 fld 6144,dl 002370 aa 6 00044 3701 20 epp4 pr6|36,* 002371 la 4 00046 3521 20 epp2 pr4|38,* channel_manager$interrupt 002372 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 693 if pvste.eop /* still ON if no output happenned */ then call write_ff (ff_sent); 002373 aa 6 00204 3735 20 epp7 pr6|132,* pvstep 002374 aa 7 00002 2351 00 lda pr7|2 pvste.eop 002375 aa 100000 3150 03 cana 32768,du 002376 aa 000003 6000 04 tze 3,ic 002401 002377 aa 003403 3520 04 epp2 1795,ic 006002 = 000002000000 002400 aa 001730 6700 04 tsp4 984,ic 004330 STATEMENT 1 ON LINE 695 output_restarted = "1"b; 002401 aa 400000 2350 03 lda 131072,du 002402 aa 6 00164 7551 00 sta pr6|116 output_restarted STATEMENT 1 ON LINE 696 end; STATEMENT 1 ON LINE 700 if ^xflag & (input_frame.msg (nmsg).fc1 = pvmd.formfeed) then do; 002403 aa 6 00200 2351 00 lda pr6|128 xflag 002404 aa 000067 6010 04 tnz 55,ic 002473 002405 aa 6 00153 2361 00 ldq pr6|107 nmsg 002406 aa 000001 7360 00 qls 1 002407 aa 000000 6270 06 eax7 0,ql 002410 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 002411 aa 7 00051 2351 00 lda pr7|41 pvmd.formfeed 002412 aa 000011 7350 00 als 9 002413 aa 0 00022 3771 00 anaq pr0|18 = 777000000000 000000000000 002414 aa 6 00427 7551 00 sta pr6|279 pvmd.formfeed 002415 aa 6 00134 3715 20 epp5 pr6|92,* input_framep 002416 aa 5 77776 2351 17 lda pr5|-2,7 input_frame.fc1 002417 aa 000033 7350 00 als 27 002420 aa 6 00427 1151 00 cmpa pr6|279 pvmd.formfeed 002421 aa 000052 6010 04 tnz 42,ic 002473 STATEMENT 1 ON LINE 702 if output_restarted /* FF was for this purpose only */ then go to discard_input; 002422 aa 6 00164 2351 00 lda pr6|116 output_restarted 002423 aa 777525 6010 04 tnz -171,ic 002150 STATEMENT 1 ON LINE 704 call write_ff (ff_sent); 002424 aa 003356 3520 04 epp2 1774,ic 006002 = 000002000000 002425 aa 001703 6700 04 tsp4 963,ic 004330 STATEMENT 1 ON LINE 705 if headp -> buffer.next ^= 0 /* discard all but first buffer */ then call tty_space_man$free_chain (pvmd.devx, INPUT, ptr (ttybp, headp -> buffer.next)); 002426 aa 6 00126 2351 20 lda pr6|86,* buffer.next 002427 aa 000066 7730 00 lrl 54 002430 aa 000017 6000 04 tze 15,ic 002447 002431 aa 6 00176 3521 20 epp2 pr6|126,* ttybp 002432 aa 000000 3120 06 eawp2 0,ql 002433 aa 6 00430 2521 00 spri2 pr6|280 002434 aa 6 00202 3521 20 epp2 pr6|130,* pvmd.devx 002435 aa 6 00434 2521 00 spri2 pr6|284 002436 aa 775406 3520 04 epp2 -1274,ic 000044 = 000000000000 002437 aa 6 00436 2521 00 spri2 pr6|286 002440 aa 6 00430 3521 00 epp2 pr6|280 002441 aa 6 00440 2521 00 spri2 pr6|288 002442 aa 6 00432 6211 00 eax1 pr6|282 002443 aa 014000 4310 07 fld 6144,dl 002444 aa 6 00044 3701 20 epp4 pr6|36,* 002445 la 4 00054 3521 20 epp2 pr4|44,* tty_space_man$free_chain 002446 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 707 blockp = headp; 002447 aa 6 00126 3735 20 epp7 pr6|86,* headp 002450 aa 6 00212 6535 00 spri7 pr6|138 blockp STATEMENT 1 ON LINE 708 buffer.next = 0; 002451 aa 000000 2350 07 lda 0,dl 002452 aa 6 00212 3715 20 epp5 pr6|138,* buffer.next 002453 aa 5 00000 5511 60 stba pr5|0,60 buffer.next STATEMENT 1 ON LINE 709 buffer.chars (0) = FF; 002454 aa 014000 2350 03 lda 6144,du 002455 aa 6 00212 3535 20 epp3 pr6|138,* blockp 002456 aa 3 00001 5511 40 stba pr3|1,40 buffer.chars STATEMENT 1 ON LINE 710 unspec (buffer.tally) = bit (bin (1, 9), 9); 002457 aa 000001 2350 07 lda 1,dl 002460 aa 000002 6050 04 tpl 2,ic 002462 002461 aa 000000 5310 00 neg 0 002462 aa 0 00306 3771 00 anaq pr0|198 = 000000000777 777777777777 002463 aa 3 00000 5511 04 stba pr3|0,04 STATEMENT 1 ON LINE 711 rtx_info.input_count = 1; 002464 aa 000001 2350 03 lda 1,du 002465 aa 6 00211 5511 60 stba pr6|137,60 rtx_info.input_count STATEMENT 1 ON LINE 712 rtx_info.formfeed_present = "1"b; 002466 aa 040000 2350 07 lda 16384,dl 002467 aa 6 00211 2551 00 orsa pr6|137 rtx_info.formfeed_present STATEMENT 1 ON LINE 713 rtx_info.break_char = "0"b; 002470 aa 003342 2350 04 lda 1762,ic 006032 = 777777377777 002471 aa 6 00211 3551 00 ansa pr6|137 rtx_info.break_char STATEMENT 1 ON LINE 714 end; 002472 aa 000230 7100 04 tra 152,ic 002722 STATEMENT 1 ON LINE 721 else do; STATEMENT 1 ON LINE 722 i = length (string (input_frame)) - 3; 002473 aa 6 00153 2361 00 ldq pr6|107 nmsg 002474 aa 000003 7360 00 qls 3 002475 aa 000001 0760 07 adq 1,dl 002476 aa 000011 4020 07 mpy 9,dl 002477 aa 000010 0760 07 adq 8,dl 002500 aa 000011 5060 07 div 9,dl 002501 aa 000003 1760 07 sbq 3,dl 002502 aa 6 00130 7561 00 stq pr6|88 i STATEMENT 1 ON LINE 723 nchars = bin (headp -> buffer.tally, 9) - i; 002503 aa 6 00126 2361 20 ldq pr6|86,* buffer.tally 002504 aa 0 00416 3771 00 anaq pr0|270 = 000000000000 000000000777 002505 aa 6 00130 1761 00 sbq pr6|88 i 002506 aa 6 00152 7561 00 stq pr6|106 nchars STATEMENT 1 ON LINE 724 if nchars < 3 /* must be at least ETX, LRC, EOT left */ then go to discard_input; 002507 aa 000003 1160 07 cmpq 3,dl 002510 aa 777440 6040 04 tmi -224,ic 002150 STATEMENT 1 ON LINE 726 if nchars = 3 then if output_restarted | pvmd.omit_nl | xflag then go to discard_input; 002511 aa 000011 6010 04 tnz 9,ic 002522 002512 aa 6 00164 2351 00 lda pr6|116 output_restarted 002513 aa 777435 6010 04 tnz -227,ic 002150 002514 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 002515 aa 7 00052 2351 00 lda pr7|42 pvmd.omit_nl 002516 aa 001000 3150 03 cana 512,du 002517 aa 777431 6010 04 tnz -231,ic 002150 002520 aa 6 00200 2351 00 lda pr6|128 xflag 002521 aa 777427 6010 04 tnz -233,ic 002150 STATEMENT 1 ON LINE 730 substr (string (headp -> buffer.chars), 1, nchars) = substr (string (headp -> buffer.chars), i + 1, nchars); 002522 aa 6 00126 3735 20 epp7 pr6|86,* headp 002523 aa 6 00130 7271 00 lxl7 pr6|88 i 002524 aa 040 140 100 557 mlr (pr,rl,x7),(pr,rl),fill(040) 002525 aa 7 00001 00 0006 desc9a pr7|1,ql 002526 aa 7 00001 00 0006 desc9a pr7|1,ql STATEMENT 1 ON LINE 732 unspec (headp -> buffer.tally) = bit (bin (nchars, 9), 9); 002527 aa 6 00152 2351 00 lda pr6|106 nchars 002530 aa 000002 6050 04 tpl 2,ic 002532 002531 aa 000000 5310 00 neg 0 002532 aa 0 00306 3771 00 anaq pr0|198 = 000000000777 777777777777 002533 aa 7 00000 5511 04 stba pr7|0,04 STATEMENT 1 ON LINE 734 if output_restarted & (headp -> buffer.next = 0) then do; 002534 aa 6 00164 2351 00 lda pr6|116 output_restarted 002535 aa 000020 6000 04 tze 16,ic 002555 002536 aa 7 00000 2351 00 lda pr7|0 buffer.next 002537 aa 000066 7730 00 lrl 54 002540 aa 000015 6010 04 tnz 13,ic 002555 STATEMENT 1 ON LINE 736 if verify (substr (string (headp -> buffer.chars), 1, nchars - 3), RESTART_CHARS) = 0 then go to discard_input; 002541 aa 6 00152 2361 00 ldq pr6|106 nchars 002542 aa 000003 1760 07 sbq 3,dl 002543 aa 000 000 164 540 tct (pr,rl) 002544 aa 7 00001 00 0006 desc9a pr7|1,ql 002545 aa 003036 0000 04 arg 1566,ic 005601 = 777777777777 002546 aa 6 00056 0001 00 arg pr6|46 002547 aa 6 00056 2361 00 ldq pr6|46 002550 aa 0 00242 3761 00 anq pr0|162 = 000777777777 002551 aa 000002 6070 04 ttf 2,ic 002553 002552 aa 000001 3360 07 lcq 1,dl 002553 aa 000001 0760 07 adq 1,dl 002554 aa 777374 6000 04 tze -260,ic 002150 STATEMENT 1 ON LINE 738 end; STATEMENT 1 ON LINE 740 prev_blockp = null; 002555 aa 775333 2370 04 ldaq -1317,ic 000110 = 077777000043 000001000000 002556 aa 6 00166 7571 00 staq pr6|118 prev_blockp STATEMENT 1 ON LINE 741 blockp = headp; 002557 aa 6 00212 6535 00 spri7 pr6|138 blockp STATEMENT 1 ON LINE 742 end_chain = "0"b; 002560 aa 6 00107 4501 00 stz pr6|71 end_chain STATEMENT 1 ON LINE 743 do while (^end_chain); 002561 aa 000000 0110 03 nop 0,du 002562 aa 6 00107 2351 00 lda pr6|71 end_chain 002563 aa 000016 6010 04 tnz 14,ic 002601 STATEMENT 1 ON LINE 744 if buffer.next = 0 then end_chain = "1"b; 002564 aa 6 00212 2351 20 lda pr6|138,* buffer.next 002565 aa 000066 7730 00 lrl 54 002566 aa 6 00427 7561 00 stq pr6|279 buffer.next 002567 aa 000004 6010 04 tnz 4,ic 002573 002570 aa 400000 2350 03 lda 131072,du 002571 aa 6 00107 7551 00 sta pr6|71 end_chain 002572 aa 777770 7100 04 tra -8,ic 002562 STATEMENT 1 ON LINE 746 else do; STATEMENT 1 ON LINE 747 prev_blockp = blockp; 002573 aa 6 00212 3735 20 epp7 pr6|138,* blockp 002574 aa 6 00166 6535 00 spri7 pr6|118 prev_blockp STATEMENT 1 ON LINE 748 blockp = ptr (ttybp, buffer.next); 002575 aa 6 00176 3521 20 epp2 pr6|126,* ttybp 002576 aa 000000 3120 06 eawp2 0,ql 002577 aa 6 00212 2521 00 spri2 pr6|138 blockp STATEMENT 1 ON LINE 749 end; STATEMENT 1 ON LINE 750 end; 002600 aa 777762 7100 04 tra -14,ic 002562 STATEMENT 1 ON LINE 752 if pvmd.omit_nl | xflag /* we can strip last 3 chars (ETX, LRC, EOT) */ then i = 3; 002601 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 002602 aa 7 00052 2351 00 lda pr7|42 pvmd.omit_nl 002603 aa 001000 3150 03 cana 512,du 002604 aa 000003 6010 04 tnz 3,ic 002607 002605 aa 6 00200 2351 00 lda pr6|128 xflag 002606 aa 000004 6000 04 tze 4,ic 002612 002607 aa 000003 2360 07 ldq 3,dl 002610 aa 6 00130 7561 00 stq pr6|88 i 002611 aa 000014 7100 04 tra 12,ic 002625 STATEMENT 1 ON LINE 754 else if buffer.chars (nchars - 3) = ETX /* end of text msg (not ETB) */ then i = 2; 002612 aa 6 00152 7271 00 lxl7 pr6|106 nchars 002613 aa 6 00212 3715 20 epp5 pr6|138,* blockp 002614 aa 040 004 106 517 cmpc (pr,x7),(ic),fill(040) 002615 aa 5 00000 20 0001 desc9a pr5|0(1),1 buffer.chars 002616 aa 003225 00 0001 desc9a 1685,1 006041 = 003000000000 002617 aa 000004 6010 04 tnz 4,ic 002623 002620 aa 000002 2360 07 ldq 2,dl 002621 aa 6 00130 7561 00 stq pr6|88 i 002622 aa 000003 7100 04 tra 3,ic 002625 STATEMENT 1 ON LINE 756 else i = 3; 002623 aa 000003 2360 07 ldq 3,dl 002624 aa 6 00130 7561 00 stq pr6|88 i STATEMENT 1 ON LINE 757 nchars = buffer.tally; 002625 aa 6 00212 2361 20 ldq pr6|138,* buffer.tally 002626 aa 0 00416 3771 00 anaq pr0|270 = 000000000000 000000000777 002627 aa 6 00152 7561 00 stq pr6|106 nchars STATEMENT 1 ON LINE 758 if nchars <= i /* we can throw away the whole buffer */ then do; 002630 aa 6 00130 1161 00 cmpq pr6|88 i 002631 aa 000030 6054 04 tpnz 24,ic 002661 STATEMENT 1 ON LINE 760 call tty_space_man$free_buffer ((pvste.devx), INPUT, blockp); 002632 aa 6 00204 3715 20 epp5 pr6|132,* pvstep 002633 aa 5 00001 2351 00 lda pr5|1 pvste.devx 002634 aa 000066 7330 00 lrs 54 002635 aa 6 00427 7561 00 stq pr6|279 002636 aa 6 00427 3521 00 epp2 pr6|279 002637 aa 6 00434 2521 00 spri2 pr6|284 002640 aa 775204 3520 04 epp2 -1404,ic 000044 = 000000000000 002641 aa 6 00436 2521 00 spri2 pr6|286 002642 aa 6 00212 3521 00 epp2 pr6|138 blockp 002643 aa 6 00440 2521 00 spri2 pr6|288 002644 aa 6 00432 6211 00 eax1 pr6|282 002645 aa 014000 4310 07 fld 6144,dl 002646 aa 6 00044 3701 20 epp4 pr6|36,* 002647 la 4 00052 3521 20 epp2 pr4|42,* tty_space_man$free_buffer 002650 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 761 blockp = prev_blockp; 002651 aa 6 00166 3735 20 epp7 pr6|118,* prev_blockp 002652 aa 6 00212 6535 00 spri7 pr6|138 blockp STATEMENT 1 ON LINE 762 buffer.next = 0; 002653 aa 000000 2350 07 lda 0,dl 002654 aa 6 00212 3715 20 epp5 pr6|138,* buffer.next 002655 aa 5 00000 5511 60 stba pr5|0,60 buffer.next STATEMENT 1 ON LINE 763 nchars = buffer.tally + nchars; 002656 aa 6 00212 2361 20 ldq pr6|138,* buffer.tally 002657 aa 0 00416 3771 00 anaq pr0|270 = 000000000000 000000000777 002660 aa 6 00152 0561 00 asq pr6|106 nchars STATEMENT 1 ON LINE 764 end; STATEMENT 1 ON LINE 765 nchars = nchars - i; 002661 aa 6 00130 3361 00 lcq pr6|88 i 002662 aa 6 00152 0561 00 asq pr6|106 nchars STATEMENT 1 ON LINE 766 unspec (buffer.tally) = bit (bin (nchars, 9), 9); 002663 aa 6 00152 2351 00 lda pr6|106 nchars 002664 aa 000002 6050 04 tpl 2,ic 002666 002665 aa 000000 5310 00 neg 0 002666 aa 0 00306 3771 00 anaq pr0|198 = 000000000777 777777777777 002667 aa 6 00212 3735 20 epp7 pr6|138,* 002670 aa 7 00000 5511 04 stba pr7|0,04 STATEMENT 1 ON LINE 767 if i = 2 then buffer.chars (nchars - 1) = NL; 002671 aa 6 00130 2361 00 ldq pr6|88 i 002672 aa 000002 1160 07 cmpq 2,dl 002673 aa 000006 6010 04 tnz 6,ic 002701 002674 aa 6 00152 7271 00 lxl7 pr6|106 nchars 002675 aa 6 00212 3735 20 epp7 pr6|138,* blockp 002676 aa 012 117 100 400 mlr (),(pr,x7),fill(012) 002677 aa 000000 00 0000 desc9a 0,0 002700 aa 7 00000 60 0001 desc9a pr7|0(3),1 buffer.chars STATEMENT 1 ON LINE 770 rtx_info.break_char = "1"b; 002701 aa 400000 2350 07 lda 131072,dl 002702 aa 6 00211 2551 00 orsa pr6|137 rtx_info.break_char STATEMENT 1 ON LINE 771 rtx_info.formfeed_present = "0"b; 002703 aa 002675 2350 04 lda 1469,ic 005600 = 777777737777 002704 aa 6 00211 3551 00 ansa pr6|137 rtx_info.formfeed_present STATEMENT 1 ON LINE 772 rtx_info.input_count = rtx_info.input_count + 1 - length (string (input_frame)); 002705 aa 6 00153 2361 00 ldq pr6|107 nmsg 002706 aa 000003 7360 00 qls 3 002707 aa 000001 0760 07 adq 1,dl 002710 aa 000011 4020 07 mpy 9,dl 002711 aa 000010 0760 07 adq 8,dl 002712 aa 000011 5060 07 div 9,dl 002713 aa 6 00427 7561 00 stq pr6|279 002714 aa 6 00211 2351 00 lda pr6|137 rtx_info.input_count 002715 aa 000066 7730 00 lrl 54 002716 aa 000001 0760 07 adq 1,dl 002717 aa 6 00427 1761 00 sbq pr6|279 002720 aa 000066 7370 00 lls 54 002721 aa 6 00211 5511 60 stba pr6|137,60 rtx_info.input_count STATEMENT 1 ON LINE 774 end; STATEMENT 1 ON LINE 776 rtx_info.output_in_fnp = "0"b; 002722 aa 002655 2350 04 lda 1453,ic 005577 = 777777577777 002723 aa 6 00211 3551 00 ansa pr6|137 rtx_info.output_in_fnp STATEMENT 1 ON LINE 777 if ff_sent then rtx_info.output_in_ring_0 = "0"b; 002724 aa 6 00111 2351 00 lda pr6|73 ff_sent 002725 aa 400000 3150 03 cana 131072,du 002726 aa 000004 6000 04 tze 4,ic 002732 002727 aa 002647 2350 04 lda 1447,ic 005576 = 777777677777 002730 aa 6 00211 3551 00 ansa pr6|137 rtx_info.output_in_ring_0 002731 aa 000017 7100 04 tra 15,ic 002750 STATEMENT 1 ON LINE 779 else rtx_info.output_in_ring_0 = (pvste.write_chain ^= 0) | (pvmd.write_chan = subchan); 002732 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 002733 aa 7 00014 2361 00 ldq pr7|12 pvmd.write_chan 002734 aa 6 00171 1161 00 cmpq pr6|121 subchan 002735 aa 0 00512 7001 00 tsx0 pr0|330 r_e_as 002736 aa 6 00427 7551 00 sta pr6|279 002737 aa 6 00204 3715 20 epp5 pr6|132,* pvstep 002740 aa 5 00001 2361 00 ldq pr5|1 pvste.write_chain 002741 aa 0 00374 3771 00 anaq pr0|252 = 000000000000 000000777777 002742 aa 0 00515 7001 00 tsx0 pr0|333 r_ne_as 002743 aa 6 00427 2751 00 ora pr6|279 002744 aa 000024 7710 00 arl 20 002745 aa 6 00211 6751 00 era pr6|137 rtx_info.output_in_ring_0 002746 aa 100000 3750 07 ana 32768,dl 002747 aa 6 00211 6551 00 ersa pr6|137 rtx_info.output_in_ring_0 STATEMENT 1 ON LINE 780 rtx_info.chain_tail = rel (blockp); 002750 aa 6 00212 6351 20 eaa pr6|138,* blockp 002751 aa 000022 7710 00 arl 18 002752 aa 6 00210 5511 14 stba pr6|136,14 rtx_info.chain_tail STATEMENT 1 ON LINE 781 call channel_manager$interrupt ((pvste.devx), ACCEPT_INPUT, unspec (rtx_info)); 002753 aa 6 00204 3735 20 epp7 pr6|132,* pvstep 002754 aa 7 00001 2351 00 lda pr7|1 pvste.devx 002755 aa 000066 7330 00 lrs 54 002756 aa 6 00427 7561 00 stq pr6|279 002757 aa 6 00210 2371 00 ldaq pr6|136 002760 aa 6 00430 7571 00 staq pr6|280 002761 aa 6 00427 3521 00 epp2 pr6|279 002762 aa 6 00434 2521 00 spri2 pr6|284 002763 aa 775077 3520 04 epp2 -1473,ic 000062 = 000000000006 002764 aa 6 00436 2521 00 spri2 pr6|286 002765 aa 6 00430 3521 00 epp2 pr6|280 002766 aa 6 00440 2521 00 spri2 pr6|288 002767 aa 6 00432 6211 00 eax1 pr6|282 002770 aa 014000 4310 07 fld 6144,dl 002771 aa 6 00044 3701 20 epp4 pr6|36,* 002772 la 4 00046 3521 20 epp2 pr4|38,* channel_manager$interrupt 002773 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 783 return; 002774 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 786 INTERRUPT (7): /* INPUT REJECTED - ignore */ return; 002775 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 790 INTERRUPT (8): /* QUIT - ignore */ return; 002776 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 794 INTERRUPT (9): /* LINE STATUS - process fnp status message */ if ^pvmd.mpx_loaded then return; 002777 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 003000 aa 7 00052 2351 00 lda pr7|42 pvmd.mpx_loaded 003001 aa 040000 3150 03 cana 16384,du 003002 aa 0 00631 6001 00 tze pr0|409 return_mac STATEMENT 1 ON LINE 797 unspec (ls_info) = int_data; 003003 aa 6 00136 2371 00 ldaq pr6|94 int_data 003004 aa 6 00146 7571 00 staq pr6|102 STATEMENT 1 ON LINE 798 if ls_info.type < lbound (LINE_STAT, 1) | ls_info.type > hbound (LINE_STAT, 1) then return; 003005 aa 6 00146 2351 00 lda pr6|102 ls_info.type 003006 aa 000066 7330 00 lrs 54 003007 aa 000001 1160 07 cmpq 1,dl 003010 aa 0 00631 6041 00 tmi pr0|409 return_mac 003011 aa 000010 1160 07 cmpq 8,dl 003012 aa 0 00631 6055 00 tpnz pr0|409 return_mac STATEMENT 1 ON LINE 800 go to LINE_STAT (ls_info.type); 003013 aa 000000 6270 06 eax7 0,ql 003014 ta 000033 7100 17 tra 27,7 STATEMENT 1 ON LINE 803 LINE_STAT (1): /* PRINTER STATUS */ ls_info.adr = mod (ls_info.adr, 32); 003015 aa 6 00146 2351 00 lda pr6|102 ls_info.adr 003016 aa 000022 7350 00 als 18 003017 aa 000077 7730 00 lrl 63 003020 aa 003023 3520 04 epp2 1555,ic 006043 = 000000000040 003021 aa 0 00704 7001 00 tsx0 pr0|452 mdfx1 003022 aa 000055 7370 00 lls 45 003023 aa 6 00146 5511 10 stba pr6|102,10 ls_info.adr STATEMENT 1 ON LINE 805 subchan = pvmd.station_to_subchan (ls_info.adr).printer; 003024 aa 6 00146 2351 00 lda pr6|102 ls_info.adr 003025 aa 000022 7350 00 als 18 003026 aa 000077 7730 00 lrl 63 003027 aa 000022 4020 07 mpy 18,dl 003030 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 003031 aa 003 100 060 506 csl (pr,ql),(pr),fill(0),bool(move) 003032 aa 7 00016 20 0011 descb pr7|14(9),9 pvmd.printer 003033 aa 6 00056 00 0044 descb pr6|46,36 003034 aa 6 00056 2351 00 lda pr6|46 003035 aa 000077 7330 00 lrs 63 003036 aa 6 00171 7561 00 stq pr6|121 subchan STATEMENT 1 ON LINE 807 if subchan = 0 then return; 003037 aa 0 00631 6001 00 tze pr0|409 return_mac STATEMENT 1 ON LINE 809 pvstep = addr (pvmd.subchan_table (subchan)); 003040 aa 000012 4020 07 mpy 10,dl 003041 aa 7 00050 3715 06 epp5 pr7|40,ql pvmd.subchan_table 003042 aa 6 00204 6515 00 spri5 pr6|132 pvstep STATEMENT 1 ON LINE 810 if ^pvste.dialed then return; 003043 aa 5 00002 2351 00 lda pr5|2 pvste.dialed 003044 aa 010000 3150 03 cana 4096,du 003045 aa 0 00631 6001 00 tze pr0|409 return_mac STATEMENT 1 ON LINE 812 if ^pvste.hold_output /* not expecting any status */ then return; 003046 aa 5 00002 2351 00 lda pr5|2 pvste.hold_output 003047 aa 200000 3150 03 cana 65536,du 003050 aa 0 00631 6001 00 tze pr0|409 return_mac STATEMENT 1 ON LINE 815 if ls_info.sta = ACK /* last output frame successfully printed */ then do; 003051 aa 6 00146 2351 00 lda pr6|102 ls_info.sta 003052 aa 000033 7350 00 als 27 003053 aa 6 00427 7551 00 sta pr6|279 ls_info.sta 003054 aa 006000 1150 03 cmpa 3072,du 003055 aa 000010 6010 04 tnz 8,ic 003065 STATEMENT 1 ON LINE 817 ack: pvste.hold_output = "0"b; 003056 aa 002730 2350 04 lda 1496,ic 006006 = 577777777777 003057 aa 6 00204 3735 20 epp7 pr6|132,* pvstep 003060 aa 7 00002 3551 00 ansa pr7|2 pvste.hold_output STATEMENT 1 ON LINE 819 pvste.naks = 0; 003061 aa 000000 2350 03 lda 0,du 003062 aa 7 00002 5511 20 stba pr7|2,20 pvste.naks STATEMENT 1 ON LINE 820 call free_write_chain; 003063 aa 002121 6700 04 tsp4 1105,ic 005204 STATEMENT 1 ON LINE 822 end; 003064 aa 000062 7100 04 tra 50,ic 003146 STATEMENT 1 ON LINE 824 else if ls_info.sta = NAK /* error on last output frame */ then do; 003065 aa 025000 1150 03 cmpa 10752,du 003066 aa 000037 6010 04 tnz 31,ic 003125 STATEMENT 1 ON LINE 826 if pvste.write_chain = 0 then go to ack; 003067 aa 5 00001 2361 00 ldq pr5|1 pvste.write_chain 003070 aa 0 00374 3771 00 anaq pr0|252 = 000000000000 000000777777 003071 aa 777765 6000 04 tze -11,ic 003056 STATEMENT 1 ON LINE 828 pvste.naks = pvste.naks + 1; 003072 aa 5 00002 2351 00 lda pr5|2 pvste.naks 003073 aa 000011 7350 00 als 9 003074 aa 000077 7330 00 lrs 63 003075 aa 000001 0760 07 adq 1,dl 003076 aa 000066 7370 00 lls 54 003077 aa 5 00002 5511 20 stba pr5|2,20 pvste.naks STATEMENT 1 ON LINE 829 pvste.printer_naks = pvste.printer_naks + 1; 003100 aa 5 00004 2351 00 lda pr5|4 pvste.printer_naks 003101 aa 000044 7330 00 lrs 36 003102 aa 000001 0330 07 adl 1,dl 003103 aa 5 00004 7561 00 stq pr5|4 pvste.printer_naks STATEMENT 1 ON LINE 830 if pvste.naks >= 3 /* give up */ then do; 003104 aa 5 00002 2351 00 lda pr5|2 pvste.naks 003105 aa 000011 7350 00 als 9 003106 aa 000077 7330 00 lrs 63 003107 aa 000003 1160 07 cmpq 3,dl 003110 aa 000006 6040 04 tmi 6,ic 003116 STATEMENT 1 ON LINE 832 pvste.discarded_printer_frame = pvste.discarded_printer_frame + 1; 003111 aa 5 00005 2351 00 lda pr5|5 pvste.discarded_printer_frame 003112 aa 000044 7330 00 lrs 36 003113 aa 000001 0330 07 adl 1,dl 003114 aa 5 00005 7561 00 stq pr5|5 pvste.discarded_printer_frame STATEMENT 1 ON LINE 833 go to ack; 003115 aa 777741 7100 04 tra -31,ic 003056 STATEMENT 1 ON LINE 834 end; STATEMENT 1 ON LINE 836 pvste.hold_output = "0"b; 003116 aa 002670 2350 04 lda 1464,ic 006006 = 577777777777 003117 aa 5 00002 3551 00 ansa pr5|2 pvste.hold_output STATEMENT 1 ON LINE 837 if pvmd.write_chan = 0 then call write_frame (code); 003120 aa 7 00014 2361 00 ldq pr7|12 pvmd.write_chan 003121 aa 000025 6010 04 tnz 21,ic 003146 003122 aa 002672 3520 04 epp2 1466,ic 006014 = 000002000000 003123 aa 001506 6700 04 tsp4 838,ic 004631 STATEMENT 1 ON LINE 839 end; 003124 aa 000022 7100 04 tra 18,ic 003146 STATEMENT 1 ON LINE 841 else do; STATEMENT 1 ON LINE 842 call channel_manager$interrupt ((pvste.devx), QUIT, ""b); 003125 aa 5 00001 2351 00 lda pr5|1 pvste.devx 003126 aa 000066 7330 00 lrs 54 003127 aa 6 00427 7561 00 stq pr6|279 003130 aa 774764 2370 04 ldaq -1548,ic 000114 = 000000000000 000000000000 003131 aa 6 00430 7571 00 staq pr6|280 003132 aa 6 00427 3521 00 epp2 pr6|279 003133 aa 6 00434 2521 00 spri2 pr6|284 003134 aa 774732 3520 04 epp2 -1574,ic 000066 = 000000000010 003135 aa 6 00436 2521 00 spri2 pr6|286 003136 aa 6 00430 3521 00 epp2 pr6|280 003137 aa 6 00440 2521 00 spri2 pr6|288 003140 aa 6 00432 6211 00 eax1 pr6|282 003141 aa 014000 4310 07 fld 6144,dl 003142 aa 6 00044 3701 20 epp4 pr6|36,* 003143 la 4 00046 3521 20 epp2 pr4|38,* channel_manager$interrupt 003144 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 843 go to ack; 003145 aa 777711 7100 04 tra -55,ic 003056 STATEMENT 1 ON LINE 844 end; STATEMENT 1 ON LINE 846 return; 003146 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 849 LINE_STAT (2): /* INPUT TIMEOUT */ pvmd.input_timeouts = pvmd.input_timeouts + 1; 003147 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 003150 aa 7 00053 0541 00 aos pr7|43 pvmd.input_timeouts STATEMENT 1 ON LINE 852 if pvmd.controller_poll then do; 003151 aa 7 00052 2351 00 lda pr7|42 pvmd.controller_poll 003152 aa 010000 3150 03 cana 4096,du 003153 aa 000037 6000 04 tze 31,ic 003212 STATEMENT 1 ON LINE 854 lc_info.type = AWAIT_FIRST_RESPONSE; 003154 aa 000006 2350 03 lda 6,du 003155 aa 6 00142 5511 60 stba pr6|98,60 lc_info.type STATEMENT 1 ON LINE 855 call channel_manager$control (pvmd.devx, "line_control", addr (lc_info), code); 003156 aa 774744 2370 04 ldaq -1564,ic 000122 = 154151156145 137143157156 003157 aa 6 00432 7571 00 staq pr6|282 003160 aa 774744 2350 04 lda -1564,ic 000124 = 164162157154 003161 aa 6 00434 7551 00 sta pr6|284 003162 aa 6 00142 3715 00 epp5 pr6|98 lc_info 003163 aa 6 00430 6515 00 spri5 pr6|280 003164 aa 7 00000 3521 00 epp2 pr7|0 pvmd.devx 003165 aa 6 00460 2521 00 spri2 pr6|304 003166 aa 6 00432 3521 00 epp2 pr6|282 003167 aa 6 00462 2521 00 spri2 pr6|306 003170 aa 6 00430 3521 00 epp2 pr6|280 003171 aa 6 00464 2521 00 spri2 pr6|308 003172 aa 6 00106 3521 00 epp2 pr6|70 code 003173 aa 6 00466 2521 00 spri2 pr6|310 003174 aa 774677 3520 04 epp2 -1601,ic 000073 = 404000000021 003175 aa 6 00470 2521 00 spri2 pr6|312 003176 aa 774663 3520 04 epp2 -1613,ic 000061 = 524000000014 003177 aa 6 00472 2521 00 spri2 pr6|314 003200 aa 774700 3520 04 epp2 -1600,ic 000100 = 464000000000 003201 aa 6 00474 2521 00 spri2 pr6|316 003202 aa 774674 3520 04 epp2 -1604,ic 000076 = 404000000043 003203 aa 6 00476 2521 00 spri2 pr6|318 003204 aa 6 00456 6211 00 eax1 pr6|302 003205 aa 020000 4310 07 fld 8192,dl 003206 aa 6 00044 3701 20 epp4 pr6|36,* 003207 la 4 00044 3521 20 epp2 pr4|36,* channel_manager$control 003210 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 856 end; 003211 aa 000141 7100 04 tra 97,ic 003352 STATEMENT 1 ON LINE 857 else do; STATEMENT 1 ON LINE 858 i = mod (ls_info.adr, 32); 003212 aa 6 00146 2351 00 lda pr6|102 ls_info.adr 003213 aa 000022 7350 00 als 18 003214 aa 000077 7730 00 lrl 63 003215 aa 002626 3520 04 epp2 1430,ic 006043 = 000000000040 003216 aa 0 00704 7001 00 tsx0 pr0|452 mdfx1 003217 aa 6 00130 7561 00 stq pr6|88 i STATEMENT 1 ON LINE 859 if i < 0 | i > 31 then return; 003220 aa 0 00631 6041 00 tmi pr0|409 return_mac 003221 aa 000037 1160 07 cmpq 31,dl 003222 aa 0 00631 6055 00 tpnz pr0|409 return_mac STATEMENT 1 ON LINE 861 if ^pvmd.cur_station_mask (i) then return; 003223 aa 000 000 066 506 cmpb (pr,ql),(),fill(0) 003224 aa 7 00037 00 0001 descb pr7|31,1 pvmd.cur_station_mask 003225 aa 000000 00 0000 descb 0,0 003226 aa 0 00631 6001 00 tze pr0|409 return_mac STATEMENT 1 ON LINE 864 pvmd.cur_station_mask (i) = "0"b; 003227 aa 003 106 060 400 csl (),(pr,ql),fill(0),bool(move) 003230 aa 000000 00 0000 descb 0,0 003231 aa 7 00037 00 0001 descb pr7|31,1 pvmd.cur_station_mask STATEMENT 1 ON LINE 865 pvmd.cur_nstation = pvmd.cur_nstation - 1; 003232 aa 7 00015 2351 00 lda pr7|13 pvmd.cur_nstation 003233 aa 000022 7350 00 als 18 003234 aa 000066 7330 00 lrs 54 003235 aa 000001 1760 07 sbq 1,dl 003236 aa 7 00015 5521 14 stbq pr7|13,14 pvmd.cur_nstation STATEMENT 1 ON LINE 866 if pvmd.cur_nstation = 0 /* no stations left to poll */ then do; 003237 aa 000050 6010 04 tnz 40,ic 003307 STATEMENT 1 ON LINE 868 lc_info.type = AWAIT_FIRST_RESPONSE; 003240 aa 000006 2350 03 lda 6,du 003241 aa 6 00142 5511 60 stba pr6|98,60 lc_info.type STATEMENT 1 ON LINE 869 call channel_manager$control (pvmd.devx, "line_control", addr (lc_info), code); 003242 aa 774660 2370 04 ldaq -1616,ic 000122 = 154151156145 137143157156 003243 aa 6 00432 7571 00 staq pr6|282 003244 aa 774660 2350 04 lda -1616,ic 000124 = 164162157154 003245 aa 6 00434 7551 00 sta pr6|284 003246 aa 6 00142 3715 00 epp5 pr6|98 lc_info 003247 aa 6 00430 6515 00 spri5 pr6|280 003250 aa 7 00000 3521 00 epp2 pr7|0 pvmd.devx 003251 aa 6 00460 2521 00 spri2 pr6|304 003252 aa 6 00432 3521 00 epp2 pr6|282 003253 aa 6 00462 2521 00 spri2 pr6|306 003254 aa 6 00430 3521 00 epp2 pr6|280 003255 aa 6 00464 2521 00 spri2 pr6|308 003256 aa 6 00106 3521 00 epp2 pr6|70 code 003257 aa 6 00466 2521 00 spri2 pr6|310 003260 aa 774613 3520 04 epp2 -1653,ic 000073 = 404000000021 003261 aa 6 00470 2521 00 spri2 pr6|312 003262 aa 774577 3520 04 epp2 -1665,ic 000061 = 524000000014 003263 aa 6 00472 2521 00 spri2 pr6|314 003264 aa 774614 3520 04 epp2 -1652,ic 000100 = 464000000000 003265 aa 6 00474 2521 00 spri2 pr6|316 003266 aa 774610 3520 04 epp2 -1656,ic 000076 = 404000000043 003267 aa 6 00476 2521 00 spri2 pr6|318 003270 aa 6 00456 6211 00 eax1 pr6|302 003271 aa 020000 4310 07 fld 8192,dl 003272 aa 6 00044 3701 20 epp4 pr6|36,* 003273 la 4 00044 3521 20 epp2 pr4|36,* channel_manager$control 003274 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 870 if code ^= 0 then return; 003275 aa 6 00106 2361 00 ldq pr6|70 code 003276 aa 0 00631 6011 00 tnz pr0|409 return_mac STATEMENT 1 ON LINE 872 pvmd.cur_station_mask = pvmd.station_mask; 003277 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 003300 aa 7 00036 2351 00 lda pr7|30 pvmd.station_mask 003301 aa 6 00455 7551 00 sta pr6|301 003302 aa 6 00455 2351 00 lda pr6|301 003303 aa 7 00037 7551 00 sta pr7|31 pvmd.cur_station_mask STATEMENT 1 ON LINE 873 pvmd.cur_nstation = pvmd.nstation; 003304 aa 7 00015 2351 00 lda pr7|13 pvmd.nstation 003305 aa 000022 7710 00 arl 18 003306 aa 7 00015 5511 14 stba pr7|13,14 pvmd.cur_nstation STATEMENT 1 ON LINE 874 end; STATEMENT 1 ON LINE 876 lc_info.type = STATION_POLL; 003307 aa 000001 2350 03 lda 1,du 003310 aa 6 00142 5511 60 stba pr6|98,60 lc_info.type STATEMENT 1 ON LINE 877 lc_info.arg1 = pvmd.cur_nstation; 003311 aa 7 00015 2351 00 lda pr7|13 pvmd.cur_nstation 003312 aa 6 00142 5511 14 stba pr6|98,14 lc_info.arg1 STATEMENT 1 ON LINE 878 lc_info.station_mask = pvmd.cur_station_mask; 003313 aa 7 00037 2351 00 lda pr7|31 pvmd.cur_station_mask 003314 aa 6 00455 7551 00 sta pr6|301 003315 aa 6 00455 2351 00 lda pr6|301 003316 aa 6 00143 7551 00 sta pr6|99 lc_info.station_mask STATEMENT 1 ON LINE 879 call channel_manager$control (pvmd.devx, "line_control", addr (lc_info), code); 003317 aa 774603 2370 04 ldaq -1661,ic 000122 = 154151156145 137143157156 003320 aa 6 00432 7571 00 staq pr6|282 003321 aa 774603 2350 04 lda -1661,ic 000124 = 164162157154 003322 aa 6 00434 7551 00 sta pr6|284 003323 aa 6 00142 3715 00 epp5 pr6|98 lc_info 003324 aa 6 00430 6515 00 spri5 pr6|280 003325 aa 7 00000 3521 00 epp2 pr7|0 pvmd.devx 003326 aa 6 00460 2521 00 spri2 pr6|304 003327 aa 6 00432 3521 00 epp2 pr6|282 003330 aa 6 00462 2521 00 spri2 pr6|306 003331 aa 6 00430 3521 00 epp2 pr6|280 003332 aa 6 00464 2521 00 spri2 pr6|308 003333 aa 6 00106 3521 00 epp2 pr6|70 code 003334 aa 6 00466 2521 00 spri2 pr6|310 003335 aa 774536 3520 04 epp2 -1698,ic 000073 = 404000000021 003336 aa 6 00470 2521 00 spri2 pr6|312 003337 aa 774522 3520 04 epp2 -1710,ic 000061 = 524000000014 003340 aa 6 00472 2521 00 spri2 pr6|314 003341 aa 774537 3520 04 epp2 -1697,ic 000100 = 464000000000 003342 aa 6 00474 2521 00 spri2 pr6|316 003343 aa 774533 3520 04 epp2 -1701,ic 000076 = 404000000043 003344 aa 6 00476 2521 00 spri2 pr6|318 003345 aa 6 00456 6211 00 eax1 pr6|302 003346 aa 020000 4310 07 fld 8192,dl 003347 aa 6 00044 3701 20 epp4 pr6|36,* 003350 la 4 00044 3521 20 epp2 pr4|36,* channel_manager$control 003351 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 880 end; STATEMENT 1 ON LINE 882 return; 003352 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 885 LINE_STAT (3): /* INPUT LOST */ pvmd.input_frames_lost = pvmd.input_frames_lost + 1; 003353 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 003354 aa 7 00054 0541 00 aos pr7|44 pvmd.input_frames_lost STATEMENT 1 ON LINE 887 return; 003355 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 890 LINE_STAT (4): /* OUTPUT LOST */ pvmd.output_frames_lost = pvmd.output_frames_lost + 1; 003356 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 003357 aa 7 00055 0541 00 aos pr7|45 pvmd.output_frames_lost STATEMENT 1 ON LINE 892 return; 003360 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 895 LINE_STAT (5): /* BAD OUTPUT FRAME */ pvmd.bad_output_frames = pvmd.bad_output_frames + 1; 003361 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 003362 aa 7 00056 0541 00 aos pr7|46 pvmd.bad_output_frames STATEMENT 1 ON LINE 897 return; 003363 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 900 LINE_STAT (6): /* OUTPUT TIMEOUT */ pvmd.output_timeouts = pvmd.output_timeouts + 1; 003364 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 003365 aa 7 00057 0541 00 aos pr7|47 pvmd.output_timeouts STATEMENT 1 ON LINE 902 return; 003366 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 905 LINE_STAT (7): /* DISPLAY STATUS */ ls_info.adr = mod (ls_info.adr, 32); 003367 aa 6 00146 2351 00 lda pr6|102 ls_info.adr 003370 aa 000022 7350 00 als 18 003371 aa 000077 7730 00 lrl 63 003372 aa 002451 3520 04 epp2 1321,ic 006043 = 000000000040 003373 aa 0 00704 7001 00 tsx0 pr0|452 mdfx1 003374 aa 000055 7370 00 lls 45 003375 aa 6 00146 5511 10 stba pr6|102,10 ls_info.adr STATEMENT 1 ON LINE 907 subchan = pvmd.station_to_subchan (ls_info.adr).display; 003376 aa 6 00146 2351 00 lda pr6|102 ls_info.adr 003377 aa 000022 7350 00 als 18 003400 aa 000077 7730 00 lrl 63 003401 aa 000022 4020 07 mpy 18,dl 003402 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 003403 aa 003 100 060 506 csl (pr,ql),(pr),fill(0),bool(move) 003404 aa 7 00016 00 0011 descb pr7|14,9 pvmd.display 003405 aa 6 00056 00 0044 descb pr6|46,36 003406 aa 6 00056 2351 00 lda pr6|46 003407 aa 000077 7330 00 lrs 63 003410 aa 6 00171 7561 00 stq pr6|121 subchan STATEMENT 1 ON LINE 908 if subchan = 0 then return; 003411 aa 0 00631 6001 00 tze pr0|409 return_mac STATEMENT 1 ON LINE 910 pvstep = addr (pvmd.subchan_table (subchan)); 003412 aa 000012 4020 07 mpy 10,dl 003413 aa 7 00050 3715 06 epp5 pr7|40,ql pvmd.subchan_table 003414 aa 6 00204 6515 00 spri5 pr6|132 pvstep STATEMENT 1 ON LINE 911 if ^pvste.dialed then return; 003415 aa 5 00002 2351 00 lda pr5|2 pvste.dialed 003416 aa 010000 3150 03 cana 4096,du 003417 aa 0 00631 6001 00 tze pr0|409 return_mac STATEMENT 1 ON LINE 914 pvste.pgofs = pvste.pgofs + 1; 003420 aa 5 00003 2351 00 lda pr5|3 pvste.pgofs 003421 aa 000077 7330 00 lrs 63 003422 aa 000001 0760 07 adq 1,dl 003423 aa 000077 7370 00 lls 63 003424 aa 5 00003 5511 40 stba pr5|3,40 pvste.pgofs STATEMENT 1 ON LINE 915 pvste.display_pgofs = pvste.display_pgofs + 1; 003425 aa 5 00006 2351 00 lda pr5|6 pvste.display_pgofs 003426 aa 000044 7330 00 lrs 36 003427 aa 000001 0330 07 adl 1,dl 003430 aa 5 00006 7561 00 stq pr5|6 pvste.display_pgofs STATEMENT 1 ON LINE 916 if pvste.pgofs >= 3 /* better put a stop to this */ then do; 003431 aa 5 00003 2351 00 lda pr5|3 pvste.pgofs 003432 aa 000077 7330 00 lrs 63 003433 aa 000003 1160 07 cmpq 3,dl 003434 aa 000037 6040 04 tmi 31,ic 003473 STATEMENT 1 ON LINE 918 pvste.pgofs, pvste.writes = 0; 003435 aa 000000 2350 07 lda 0,dl 003436 aa 5 00003 5511 40 stba pr5|3,40 pvste.pgofs 003437 aa 000011 7710 00 arl 9 003440 aa 5 00003 5511 20 stba pr5|3,20 pvste.writes STATEMENT 1 ON LINE 919 pvste.pgof_limit_reached = pvste.pgof_limit_reached + 1; 003441 aa 5 00007 2351 00 lda pr5|7 pvste.pgof_limit_reached 003442 aa 000044 7330 00 lrs 36 003443 aa 000001 0330 07 adl 1,dl 003444 aa 5 00007 7561 00 stq pr5|7 pvste.pgof_limit_reached STATEMENT 1 ON LINE 920 call channel_manager$interrupt ((pvste.devx), QUIT, ""b); 003445 aa 5 00001 2351 00 lda pr5|1 pvste.devx 003446 aa 000066 7330 00 lrs 54 003447 aa 6 00455 7561 00 stq pr6|301 003450 aa 774444 2370 04 ldaq -1756,ic 000114 = 000000000000 000000000000 003451 aa 6 00430 7571 00 staq pr6|280 003452 aa 6 00455 3521 00 epp2 pr6|301 003453 aa 6 00434 2521 00 spri2 pr6|284 003454 aa 774412 3520 04 epp2 -1782,ic 000066 = 000000000010 003455 aa 6 00436 2521 00 spri2 pr6|286 003456 aa 6 00430 3521 00 epp2 pr6|280 003457 aa 6 00440 2521 00 spri2 pr6|288 003460 aa 6 00432 6211 00 eax1 pr6|282 003461 aa 014000 4310 07 fld 6144,dl 003462 aa 6 00044 3701 20 epp4 pr6|36,* 003463 la 4 00046 3521 20 epp2 pr4|38,* channel_manager$interrupt 003464 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 921 pvste.hold_output = "0"b; 003465 aa 002321 2350 04 lda 1233,ic 006006 = 577777777777 003466 aa 6 00204 3735 20 epp7 pr6|132,* pvstep 003467 aa 7 00002 3551 00 ansa pr7|2 pvste.hold_output STATEMENT 1 ON LINE 922 pvste.eop = "1"b; 003470 aa 100000 2350 03 lda 32768,du 003471 aa 7 00002 2551 00 orsa pr7|2 pvste.eop STATEMENT 1 ON LINE 923 call free_write_chain; 003472 aa 001512 6700 04 tsp4 842,ic 005204 STATEMENT 1 ON LINE 924 end; STATEMENT 1 ON LINE 925 return; 003473 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 928 LINE_STAT(8): /* BUILD MESSAGE FAILURE, fnp will hang up channel */ call syserr(0, "Too many errors while trying to build a message, channel ^a will be hung up.", pvmd.name); 003474 aa 6 00455 4501 00 stz pr6|301 003475 aa 000 100 100 404 mlr (ic),(pr),fill(000) 003476 aa 774441 00 0114 desc9a -1759,76 000136 = 124157157040 003477 aa 6 00500 00 0114 desc9a pr6|320,76 003500 aa 6 00455 3521 00 epp2 pr6|301 003501 aa 6 00460 2521 00 spri2 pr6|304 003502 aa 6 00500 3521 00 epp2 pr6|320 003503 aa 6 00462 2521 00 spri2 pr6|306 003504 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 003505 aa 7 00002 3521 00 epp2 pr7|2 pvmd.name 003506 aa 6 00464 2521 00 spri2 pr6|308 003507 aa 774351 3520 04 epp2 -1815,ic 000060 = 404000000005 003510 aa 6 00466 2521 00 spri2 pr6|310 003511 aa 774346 3520 04 epp2 -1818,ic 000057 = 524000000114 003512 aa 6 00470 2521 00 spri2 pr6|312 003513 aa 774343 3520 04 epp2 -1821,ic 000056 = 526000000040 003514 aa 6 00472 2521 00 spri2 pr6|314 003515 aa 6 00456 6211 00 eax1 pr6|302 003516 aa 014000 4310 07 fld 6144,dl 003517 aa 6 00044 3701 20 epp4 pr6|36,* 003520 la 4 00036 3521 20 epp2 pr4|30,* syserr 003521 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 930 return; 003522 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 933 INTERRUPT (10): /* DIAL STATUS - ignore */ return; 003523 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 937 INTERRUPT (11): /* WRU TIMEOUT - ignore */ return; 003524 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 941 INTERRUPT (12): /* SPACE AVAILABLE - some buffer space was freed that we need */ if ^pvmd.mpx_loaded then return; 003525 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 003526 aa 7 00052 2351 00 lda pr7|42 pvmd.mpx_loaded 003527 aa 040000 3150 03 cana 16384,du 003530 aa 0 00631 6001 00 tze pr0|409 return_mac STATEMENT 1 ON LINE 949 if ^pvmd.send_output then return; 003531 aa 7 00052 2351 00 lda pr7|42 pvmd.send_output 003532 aa 400000 3150 03 cana 131072,du 003533 aa 0 00631 6001 00 tze pr0|409 return_mac STATEMENT 1 ON LINE 952 if pvmd.writep ^= null /* we have a frame waiting to be written */ then do; 003534 aa 7 00012 2371 00 ldaq pr7|10 pvmd.writep 003535 aa 774353 6770 04 eraq -1813,ic 000110 = 077777000043 000001000000 003536 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 003537 aa 000005 6000 04 tze 5,ic 003544 STATEMENT 1 ON LINE 954 call write_bchain (code); 003540 aa 002254 3520 04 epp2 1196,ic 006014 = 000002000000 003541 aa 001152 6700 04 tsp4 618,ic 004713 STATEMENT 1 ON LINE 955 if code = 0 then return; 003542 aa 6 00106 2361 00 ldq pr6|70 code 003543 aa 0 00631 6001 00 tze pr0|409 return_mac STATEMENT 1 ON LINE 957 end; STATEMENT 1 ON LINE 959 call send_next_frame (min (pvmd.write_chan - 1, 0)); 003544 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 003545 aa 7 00014 2361 00 ldq pr7|12 pvmd.write_chan 003546 aa 000001 1760 07 sbq 1,dl 003547 aa 000000 1160 07 cmpq 0,dl 003550 aa 000002 6040 04 tmi 2,ic 003552 003551 aa 000000 2360 07 ldq 0,dl 003552 aa 6 00455 7561 00 stq pr6|301 003553 aa 002017 3520 04 epp2 1039,ic 005572 = 000002000000 003554 aa 000327 6700 04 tsp4 215,ic 004103 STATEMENT 1 ON LINE 961 return; 003555 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 963 INTERRUPT (13): INTERRUPT (14): INTERRUPT (15): INTERRUPT (16): /* various interrupts not used by this multiplexer */ return; 003556 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 969 INTERRUPT (17): /* MASKED - treat like HANGUP but use different wakeup message */ call crash_mpx; 003557 aa 001515 6700 04 tsp4 845,ic 005274 STATEMENT 1 ON LINE 971 call pxss$ring_0_wakeup (pvmd.load_proc_id, pvmd.load_ev_chan, PV_MPX_MASKED, code); 003560 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 003561 aa 7 00040 3521 00 epp2 pr7|32 pvmd.load_proc_id 003562 aa 6 00444 2521 00 spri2 pr6|292 003563 aa 7 00042 3521 00 epp2 pr7|34 pvmd.load_ev_chan 003564 aa 6 00446 2521 00 spri2 pr6|294 003565 aa 774257 3520 04 epp2 -1873,ic 000044 = 000000000000 003566 aa 6 00450 2521 00 spri2 pr6|296 003567 aa 6 00106 3521 00 epp2 pr6|70 code 003570 aa 6 00452 2521 00 spri2 pr6|298 003571 aa 6 00442 6211 00 eax1 pr6|290 003572 aa 020000 4310 07 fld 8192,dl 003573 aa 6 00044 3701 20 epp4 pr6|36,* 003574 la 4 00034 3521 20 epp2 pr4|28,* pxss$ring_0_wakeup 003575 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 972 return; 003576 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO dialup STATEMENT 1 ON LINE 977 dialup: entry (pm_pvmdp, pm_subchan); 003577 at 000002000100 003600 ta 000073000000 003601 ta 003577000000 003602 da 000262300000 003603 aa 000700 6270 00 eax7 448 003604 aa 7 00034 3521 20 epp2 pr7|28,* 003605 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 003606 aa 000004000000 003607 aa 000000000000 003610 aa 774351 7000 04 tsx0 -1815,ic 000161 STATEMENT 1 ON LINE 980 pvmdp = pm_pvmdp; 003611 aa 6 00032 3735 20 epp7 pr6|26,* 003612 aa 7 00002 3715 20 epp5 pr7|2,* pm_pvmdp 003613 aa 5 00000 3715 20 epp5 pr5|0,* pm_pvmdp 003614 aa 6 00202 6515 00 spri5 pr6|130 pvmdp STATEMENT 1 ON LINE 981 subchan = pm_subchan; 003615 aa 7 00004 2361 20 ldq pr7|4,* pm_subchan 003616 aa 6 00171 7561 00 stq pr6|121 subchan STATEMENT 1 ON LINE 982 pvstep = addr (pvmd.subchan_table (subchan)); 003617 aa 000012 4020 07 mpy 10,dl 003620 aa 5 00050 3535 06 epp3 pr5|40,ql pvmd.subchan_table 003621 aa 6 00204 2535 00 spri3 pr6|132 pvstep STATEMENT 1 ON LINE 984 call signal_dialup; 003622 aa 000113 6700 04 tsp4 75,ic 003735 STATEMENT 1 ON LINE 985 return; 003623 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO crash STATEMENT 1 ON LINE 990 crash: entry (pm_pvmdp); 003624 at 000001000100 003625 ta 003624000000 003626 da 000267300000 003627 aa 000700 6270 00 eax7 448 003630 aa 7 00034 3521 20 epp2 pr7|28,* 003631 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 003632 aa 000002000000 003633 aa 000000000000 003634 aa 774325 7000 04 tsx0 -1835,ic 000161 STATEMENT 1 ON LINE 993 ttybp = addr (tty_buf$); 003635 aa 6 00044 3701 20 epp4 pr6|36,* 003636 la 4 00032 3735 20 epp7 pr4|26,* tty_buf$ 003637 aa 6 00176 6535 00 spri7 pr6|126 ttybp STATEMENT 1 ON LINE 994 pvmdp = pm_pvmdp; 003640 aa 6 00032 3715 20 epp5 pr6|26,* 003641 aa 5 00002 3535 20 epp3 pr5|2,* pm_pvmdp 003642 aa 3 00000 3535 20 epp3 pr3|0,* pm_pvmdp 003643 aa 6 00202 2535 00 spri3 pr6|130 pvmdp STATEMENT 1 ON LINE 996 call crash_mpx; 003644 aa 001430 6700 04 tsp4 792,ic 005274 STATEMENT 1 ON LINE 997 return; 003645 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO system_init STATEMENT 1 ON LINE 1002 system_init: entry; 003646 da 000275200000 003647 aa 000700 6270 00 eax7 448 003650 aa 7 00034 3521 20 epp2 pr7|28,* 003651 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 003652 aa 000000000000 003653 aa 000000000000 003654 aa 774305 7000 04 tsx0 -1851,ic 000161 STATEMENT 1 ON LINE 1007 et_undefined_order_request = error_table_$undefined_order_request; 003655 aa 6 00044 3701 20 epp4 pr6|36,* 003656 la 4 00026 2361 20 ldq pr4|22,* error_table_$undefined_order_request 003657 ia 4 00014 7561 00 stq pr4|12 et_undefined_order_request STATEMENT 1 ON LINE 1008 et_noalloc = error_table_$noalloc; 003660 la 4 00024 2361 20 ldq pr4|20,* error_table_$noalloc 003661 ia 4 00013 7561 00 stq pr4|11 et_noalloc STATEMENT 1 ON LINE 1009 et_action_not_performed = error_table_$action_not_performed; 003662 la 4 00016 2361 20 ldq pr4|14,* error_table_$action_not_performed 003663 ia 4 00010 7561 00 stq pr4|8 et_action_not_performed STATEMENT 1 ON LINE 1010 et_bad_mode = error_table_$bad_mode; 003664 la 4 00020 2361 20 ldq pr4|16,* error_table_$bad_mode 003665 ia 4 00011 7561 00 stq pr4|9 et_bad_mode STATEMENT 1 ON LINE 1011 et_invalid_state = error_table_$invalid_state; 003666 la 4 00022 2361 20 ldq pr4|18,* error_table_$invalid_state 003667 ia 4 00012 7561 00 stq pr4|10 et_invalid_state STATEMENT 1 ON LINE 1012 et_unimplemented_version = error_table_$unimplemented_version; 003670 la 4 00030 2361 20 ldq pr4|24,* error_table_$unimplemented_version 003671 ia 4 00015 7561 00 stq pr4|13 et_unimplemented_version STATEMENT 1 ON LINE 1014 call wire_proc$wire_me; 003672 aa 6 00056 6211 00 eax1 pr6|46 003673 aa 000000 4310 07 fld 0,dl 003674 la 4 00040 3521 20 epp2 pr4|32,* wire_proc$wire_me 003675 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 1016 return; 003676 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1019 ERROR_EXIT: return; 003677 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1426 end; BEGIN PROCEDURE setup_subchan ENTRY TO setup_subchan STATEMENT 1 ON LINE 1024 setup_subchan: proc; 003700 aa 6 00230 6501 00 spri4 pr6|152 STATEMENT 1 ON LINE 1027 pvmdp = pm_pvmdp; 003701 aa 6 00032 3735 20 epp7 pr6|26,* 003702 aa 7 00002 3715 20 epp5 pr7|2,* pm_pvmdp 003703 aa 5 00000 3715 20 epp5 pr5|0,* pm_pvmdp 003704 aa 6 00202 6515 00 spri5 pr6|130 pvmdp STATEMENT 1 ON LINE 1028 if ^pvmd.mpx_loaded then do; 003705 aa 5 00052 2351 00 lda pr5|42 pvmd.mpx_loaded 003706 aa 040000 3150 03 cana 16384,du 003707 aa 000005 6010 04 tnz 5,ic 003714 STATEMENT 1 ON LINE 1030 pm_code = et_action_not_performed; 003710 aa 6 00044 3701 20 epp4 pr6|36,* 003711 ia 4 00010 2361 00 ldq pr4|8 et_action_not_performed 003712 aa 6 00220 7561 20 stq pr6|144,* pm_code STATEMENT 1 ON LINE 1031 go to ERROR_EXIT; 003713 aa 777764 7100 04 tra -12,ic 003677 STATEMENT 1 ON LINE 1032 end; STATEMENT 1 ON LINE 1034 subchan = pm_subchan; 003714 aa 7 00004 2361 20 ldq pr7|4,* pm_subchan 003715 aa 6 00171 7561 00 stq pr6|121 subchan STATEMENT 1 ON LINE 1035 pvstep = addr (pvmd.subchan_table (subchan)); 003716 aa 000012 4020 07 mpy 10,dl 003717 aa 5 00050 3535 06 epp3 pr5|40,ql pvmd.subchan_table 003720 aa 6 00204 2535 00 spri3 pr6|132 pvstep STATEMENT 1 ON LINE 1036 if ^pvmd.cur_station_mask (pvste.station_addr) then do; 003721 aa 3 00000 2351 00 lda pr3|0 pvste.station_addr 003722 aa 000077 7730 00 lrl 63 003723 aa 6 00523 7561 00 stq pr6|339 003724 aa 000 000 066 506 cmpb (pr,ql),(),fill(0) 003725 aa 5 00037 00 0001 descb pr5|31,1 pvmd.cur_station_mask 003726 aa 000000 00 0000 descb 0,0 003727 aa 000005 6010 04 tnz 5,ic 003734 STATEMENT 1 ON LINE 1038 pm_code = et_invalid_state; 003730 aa 6 00044 3701 20 epp4 pr6|36,* 003731 ia 4 00012 2361 00 ldq pr4|10 et_invalid_state 003732 aa 6 00220 7561 20 stq pr6|144,* pm_code STATEMENT 1 ON LINE 1039 go to ERROR_EXIT; 003733 aa 777744 7100 04 tra -28,ic 003677 STATEMENT 1 ON LINE 1040 end; STATEMENT 1 ON LINE 1042 end; 003734 aa 6 00230 6101 00 rtcd pr6|152 END PROCEDURE setup_subchan BEGIN PROCEDURE signal_dialup ENTRY TO signal_dialup STATEMENT 1 ON LINE 1050 signal_dialup: proc; 003735 aa 6 00236 6501 00 spri4 pr6|158 STATEMENT 1 ON LINE 1053 pvste.pgofs, pvste.writes = 0; 003736 aa 000000 2350 07 lda 0,dl 003737 aa 6 00204 3735 20 epp7 pr6|132,* pvstep 003740 aa 7 00003 5511 40 stba pr7|3,40 pvste.pgofs 003741 aa 000011 7710 00 arl 9 003742 aa 7 00003 5511 20 stba pr7|3,20 pvste.writes STATEMENT 1 ON LINE 1054 pvste.hold_output, pvste.hndlquit = "0"b; 003743 aa 002043 2350 04 lda 1059,ic 006006 = 577777777777 003744 aa 7 00002 3551 00 ansa pr7|2 pvste.hold_output 003745 aa 002066 2350 04 lda 1078,ic 006033 = 737777777777 003746 aa 7 00002 3551 00 ansa pr7|2 pvste.hndlquit STATEMENT 1 ON LINE 1055 if pvste.printer then pvste.eop = "0"b; 003747 aa 7 00002 2351 00 lda pr7|2 pvste.printer 003750 aa 400000 3150 03 cana 131072,du 003751 aa 000004 6000 04 tze 4,ic 003755 003752 aa 002046 2350 04 lda 1062,ic 006020 = 677777777777 003753 aa 7 00002 3551 00 ansa pr7|2 pvste.eop 003754 aa 000003 7100 04 tra 3,ic 003757 STATEMENT 1 ON LINE 1057 else pvste.eop = "1"b; 003755 aa 100000 2350 03 lda 32768,du 003756 aa 7 00002 2551 00 orsa pr7|2 pvste.eop STATEMENT 1 ON LINE 1058 pvste.dialed = "1"b; 003757 aa 010000 2350 03 lda 4096,du 003760 aa 7 00002 2551 00 orsa pr7|2 pvste.dialed STATEMENT 1 ON LINE 1060 unspec (dialup_info) = pvmd.dialup_info; 003761 aa 6 00202 3715 20 epp5 pr6|130,* pvmdp 003762 aa 5 00044 2351 00 lda pr5|36 pvmd.dialup_info 003763 aa 5 00045 2361 00 ldq pr5|37 pvmd.dialup_info 003764 aa 6 00206 7571 00 staq pr6|134 STATEMENT 1 ON LINE 1061 dialup_info.buffer_pad = dialup_info.buffer_pad + length (string (frame_trailer)); 003765 aa 6 00206 2351 00 lda pr6|134 dialup_info.buffer_pad 003766 aa 000011 7350 00 als 9 003767 aa 000077 7730 00 lrl 63 003770 aa 000023 0760 07 adq 19,dl 003771 aa 000066 7370 00 lls 54 003772 aa 6 00206 5511 20 stba pr6|134,20 dialup_info.buffer_pad STATEMENT 1 ON LINE 1062 dialup_info.max_buf_size = min (dialup_info.max_buf_size, max (16, divide (pvmd.max_text_len + dialup_info.buffer_pad + 4, 64, 17, 0) * 16)); 003773 aa 6 00206 2351 00 lda pr6|134 dialup_info.buffer_pad 003774 aa 000011 7350 00 als 9 003775 aa 000077 7730 00 lrl 63 003776 aa 5 00047 0761 00 adq pr5|39 pvmd.max_text_len 003777 aa 000004 0760 07 adq 4,dl 004000 aa 000100 5060 07 div 64,dl 004001 aa 000004 7360 00 qls 4 004002 aa 000020 1160 07 cmpq 16,dl 004003 aa 000002 6050 04 tpl 2,ic 004005 004004 aa 000020 2360 07 ldq 16,dl 004005 aa 6 00524 7561 00 stq pr6|340 004006 aa 6 00207 2351 00 lda pr6|135 dialup_info.max_buf_size 004007 aa 000077 7730 00 lrl 63 004010 aa 6 00524 1161 00 cmpq pr6|340 004011 aa 000002 6040 04 tmi 2,ic 004013 004012 aa 6 00524 2361 00 ldq pr6|340 004013 aa 000077 7370 00 lls 63 004014 aa 6 00207 5511 40 stba pr6|135,40 dialup_info.max_buf_size STATEMENT 1 ON LINE 1065 if pvste.printer /* make sure printer delays come out right */ then dialup_info.baud_rate = pvste.baud_rate; 004015 aa 7 00002 2351 00 lda pr7|2 pvste.printer 004016 aa 400000 3150 03 cana 131072,du 004017 aa 000003 6000 04 tze 3,ic 004022 004020 aa 7 00002 2351 00 lda pr7|2 pvste.baud_rate 004021 aa 6 00206 5511 14 stba pr6|134,14 dialup_info.baud_rate STATEMENT 1 ON LINE 1067 call channel_manager$interrupt ((pvste.devx), DIALUP, unspec (dialup_info)); 004022 aa 7 00001 2351 00 lda pr7|1 pvste.devx 004023 aa 000066 7330 00 lrs 54 004024 aa 6 00524 7561 00 stq pr6|340 004025 aa 6 00206 2371 00 ldaq pr6|134 004026 aa 6 00526 7571 00 staq pr6|342 004027 aa 6 00524 3521 00 epp2 pr6|340 004030 aa 6 00532 2521 00 spri2 pr6|346 004031 aa 774036 3520 04 epp2 -2018,ic 000067 = 000000000001 004032 aa 6 00534 2521 00 spri2 pr6|348 004033 aa 6 00526 3521 00 epp2 pr6|342 004034 aa 6 00536 2521 00 spri2 pr6|350 004035 aa 6 00530 6211 00 eax1 pr6|344 004036 aa 014000 4310 07 fld 6144,dl 004037 aa 6 00044 3701 20 epp4 pr6|36,* 004040 la 4 00046 3521 20 epp2 pr4|38,* channel_manager$interrupt 004041 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 1069 call channel_manager$interrupt ((pvste.devx), SEND_OUTPUT, ""b); 004042 aa 6 00204 3735 20 epp7 pr6|132,* pvstep 004043 aa 7 00001 2351 00 lda pr7|1 pvste.devx 004044 aa 000066 7330 00 lrs 54 004045 aa 6 00524 7561 00 stq pr6|340 004046 aa 774046 2370 04 ldaq -2010,ic 000114 = 000000000000 000000000000 004047 aa 6 00526 7571 00 staq pr6|342 004050 aa 6 00524 3521 00 epp2 pr6|340 004051 aa 6 00532 2521 00 spri2 pr6|346 004052 aa 774023 3520 04 epp2 -2029,ic 000075 = 000000000004 004053 aa 6 00534 2521 00 spri2 pr6|348 004054 aa 6 00526 3521 00 epp2 pr6|342 004055 aa 6 00536 2521 00 spri2 pr6|350 004056 aa 6 00530 6211 00 eax1 pr6|344 004057 aa 014000 4310 07 fld 6144,dl 004060 aa 6 00044 3701 20 epp4 pr6|36,* 004061 la 4 00046 3521 20 epp2 pr4|38,* channel_manager$interrupt 004062 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 1072 end; 004063 aa 6 00236 6101 00 rtcd pr6|158 END PROCEDURE signal_dialup BEGIN PROCEDURE verify_text ENTRY TO verify_text STATEMENT 1 ON LINE 1076 verify_text: proc; 004064 aa 6 00244 6501 00 spri4 pr6|164 STATEMENT 1 ON LINE 1082 btally = buffer.tally; 004065 aa 6 00212 2361 20 ldq pr6|138,* buffer.tally 004066 aa 0 00416 3771 00 anaq pr0|270 = 000000000000 000000000777 004067 aa 6 00252 7561 00 stq pr6|170 btally STATEMENT 1 ON LINE 1083 bchars = translate (bchars, "", ""); 004070 aa 0 00551 7001 00 tsx0 pr0|361 alloc_char_temp 004071 aa 6 00212 3735 20 epp7 pr6|138,* blockp 004072 aa 040 140 160 540 mvt (pr,rl),(pr,rl),fill(040) 004073 aa 7 00001 00 0006 desc9a pr7|1,ql bchars 004074 aa 2 00000 00 0006 desc9a pr2|0,ql 004075 aa 001300 0000 04 arg 704,ic 005372 = 000000000000 004076 aa 040 140 100 540 mlr (pr,rl),(pr,rl),fill(040) 004077 aa 2 00000 00 0006 desc9a pr2|0,ql 004100 aa 7 00001 00 0006 desc9a pr7|1,ql bchars STATEMENT 1 ON LINE 1085 end; 004101 aa 0 01014 7001 00 tsx0 pr0|524 shorten_stack 004102 aa 6 00244 6101 00 rtcd pr6|164 END PROCEDURE verify_text BEGIN PROCEDURE send_next_frame ENTRY TO send_next_frame STATEMENT 1 ON LINE 1091 send_next_frame: proc (pm_last_write_chan); 004103 aa 6 00254 6501 00 spri4 pr6|172 004104 aa 6 00256 2521 00 spri2 pr6|174 STATEMENT 1 ON LINE 1100 last_write_chan = pm_last_write_chan; 004105 aa 2 00002 2361 20 ldq pr2|2,* pm_last_write_chan 004106 aa 6 00262 7561 00 stq pr6|178 last_write_chan STATEMENT 1 ON LINE 1102 retry: found_chan = "0"b; 004107 aa 6 00263 4501 00 stz pr6|179 found_chan STATEMENT 1 ON LINE 1104 do i = last_write_chan + 1 to pvmd.nchan while (^found_chan), 1 to last_write_chan while (^found_chan); 004110 aa 000034 3520 04 epp2 28,ic 004144 = 600130054100 004111 aa 6 00266 2521 00 spri2 pr6|182 004112 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 004113 aa 7 00001 2361 00 ldq pr7|1 pvmd.nchan 004114 aa 6 00270 7561 00 stq pr6|184 004115 aa 6 00262 2361 00 ldq pr6|178 last_write_chan 004116 aa 000001 0760 07 adq 1,dl 004117 aa 6 00130 7561 00 stq pr6|88 i 004120 aa 6 00130 2361 00 ldq pr6|88 i 004121 aa 6 00270 1161 00 cmpq pr6|184 004122 aa 000024 6054 04 tpnz 20,ic 004146 004123 aa 6 00263 2351 00 lda pr6|179 found_chan 004124 aa 000022 6010 04 tnz 18,ic 004146 STATEMENT 1 ON LINE 1105 subchan = i; 004125 aa 6 00130 2361 00 ldq pr6|88 i 004126 aa 6 00171 7561 00 stq pr6|121 subchan STATEMENT 1 ON LINE 1106 pvstep = addr (pvmd.subchan_table (subchan)); 004127 aa 000012 4020 07 mpy 10,dl 004130 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 004131 aa 7 00050 3735 06 epp7 pr7|40,ql pvmd.subchan_table 004132 aa 6 00204 6535 00 spri7 pr6|132 pvstep STATEMENT 1 ON LINE 1107 if pvste.write_chain ^= 0 & ^pvste.hold_output then found_chan = "1"b; 004133 aa 7 00001 2361 00 ldq pr7|1 pvste.write_chain 004134 aa 0 00374 3771 00 anaq pr0|252 = 000000000000 000000777777 004135 aa 000006 6000 04 tze 6,ic 004143 004136 aa 7 00002 2351 00 lda pr7|2 pvste.hold_output 004137 aa 200000 3150 03 cana 65536,du 004140 aa 000003 6010 04 tnz 3,ic 004143 004141 aa 400000 2350 03 lda 131072,du 004142 aa 6 00263 7551 00 sta pr6|179 found_chan STATEMENT 1 ON LINE 1109 end; 004143 aa 6 00266 7101 20 tra pr6|182,* 004144 aa 6 00130 0541 00 aos pr6|88 i 004145 aa 777753 7100 04 tra -21,ic 004120 004146 aa 000014 3520 04 epp2 12,ic 004162 = 600130054100 004147 aa 6 00266 2521 00 spri2 pr6|182 004150 aa 6 00262 2361 00 ldq pr6|178 last_write_chan 004151 aa 6 00271 7561 00 stq pr6|185 004152 aa 000001 2360 07 ldq 1,dl 004153 aa 6 00130 7561 00 stq pr6|88 i 004154 aa 6 00130 2361 00 ldq pr6|88 i 004155 aa 6 00271 1161 00 cmpq pr6|185 004156 aa 000006 6054 04 tpnz 6,ic 004164 004157 aa 6 00263 2351 00 lda pr6|179 found_chan 004160 aa 000004 6010 04 tnz 4,ic 004164 004161 aa 777744 7100 04 tra -28,ic 004125 004162 aa 6 00130 0541 00 aos pr6|88 i 004163 aa 777771 7100 04 tra -7,ic 004154 STATEMENT 1 ON LINE 1110 if ^found_chan then return; 004164 aa 6 00263 2351 00 lda pr6|179 found_chan 004165 aa 000002 6010 04 tnz 2,ic 004167 004166 aa 6 00254 6101 00 rtcd pr6|172 STATEMENT 1 ON LINE 1113 call write_frame (code); 004167 aa 001177 3520 04 epp2 639,ic 005366 = 000002000000 004170 aa 000441 6700 04 tsp4 289,ic 004631 STATEMENT 1 ON LINE 1114 if code ^= 0 /* write failed, look for another frame */ then do; 004171 aa 6 00264 2361 00 ldq pr6|180 code 004172 aa 000004 6000 04 tze 4,ic 004176 STATEMENT 1 ON LINE 1116 last_write_chan = subchan; 004173 aa 6 00171 2361 00 ldq pr6|121 subchan 004174 aa 6 00262 7561 00 stq pr6|178 last_write_chan STATEMENT 1 ON LINE 1117 go to retry; 004175 aa 777712 7100 04 tra -54,ic 004107 STATEMENT 1 ON LINE 1118 end; STATEMENT 1 ON LINE 1120 end; 004176 aa 6 00254 6101 00 rtcd pr6|172 END PROCEDURE send_next_frame BEGIN PROCEDURE get_buffer_lrc ENTRY TO get_buffer_lrc STATEMENT 1 ON LINE 1124 get_buffer_lrc: proc returns (bit (9)); 004177 aa 6 00272 6501 00 spri4 pr6|186 004200 aa 6 00274 2521 00 spri2 pr6|188 STATEMENT 1 ON LINE 1136 btally = buffer.tally; 004201 aa 6 00212 2361 20 ldq pr6|138,* buffer.tally 004202 aa 0 00416 3771 00 anaq pr0|270 = 000000000000 000000000777 004203 aa 6 00303 7561 00 stq pr6|195 btally STATEMENT 1 ON LINE 1137 nwords = divide (btally, 4, 17, 0); 004204 aa 000004 5060 07 div 4,dl 004205 aa 6 00301 7561 00 stq pr6|193 nwords STATEMENT 1 ON LINE 1138 nchars = mod (btally, 4); 004206 aa 6 00303 2361 00 ldq pr6|195 btally 004207 aa 773666 3520 04 epp2 -2122,ic 000075 = 000000000004 004210 aa 0 00704 7001 00 tsx0 pr0|452 mdfx1 004211 aa 6 00302 7561 00 stq pr6|194 nchars STATEMENT 1 ON LINE 1139 lrc = ""b; 004212 aa 6 00300 4501 00 stz pr6|192 lrc STATEMENT 1 ON LINE 1141 if nwords > 0 then do; 004213 aa 6 00301 2361 00 ldq pr6|193 nwords 004214 aa 000051 6044 04 tmoz 41,ic 004265 STATEMENT 1 ON LINE 1143 temp = ""b; 004215 aa 6 00305 4501 00 stz pr6|197 temp STATEMENT 1 ON LINE 1144 p = addr (buffer.chars); 004216 aa 6 00212 3735 20 epp7 pr6|138,* blockp 004217 aa 7 00001 3735 00 epp7 pr7|1 buffer.chars 004220 aa 6 00306 6535 00 spri7 pr6|198 p STATEMENT 1 ON LINE 1145 do i = 1 to nwords; 004221 aa 6 00310 7561 00 stq pr6|200 004222 aa 000001 2360 07 ldq 1,dl 004223 aa 6 00304 7561 00 stq pr6|196 i 004224 aa 6 00304 2361 00 ldq pr6|196 i 004225 aa 6 00310 1161 00 cmpq pr6|200 004226 aa 000015 6054 04 tpnz 13,ic 004243 STATEMENT 1 ON LINE 1146 temp = bool (temp, p -> bwords (i), XOR); 004227 aa 6 00306 3735 20 epp7 pr6|198,* p 004230 aa 7 77777 3735 06 epp7 pr7|-1,ql bwords 004231 aa 003 100 060 500 csl (pr),(pr),fill(0),bool(move) 004232 aa 7 00000 00 0044 descb pr7|0,36 bwords 004233 aa 6 00540 00 0044 descb pr6|352,36 004234 aa 006 100 060 500 csl (pr),(pr),fill(0),bool(xor) 004235 aa 6 00305 00 0044 descb pr6|197,36 temp 004236 aa 6 00540 00 0044 descb pr6|352,36 004237 aa 6 00540 2351 00 lda pr6|352 004240 aa 6 00305 7551 00 sta pr6|197 temp STATEMENT 1 ON LINE 1147 end; 004241 aa 6 00304 0541 00 aos pr6|196 i 004242 aa 777762 7100 04 tra -14,ic 004224 STATEMENT 1 ON LINE 1149 do i = 1 to 4; 004243 aa 000001 2360 07 ldq 1,dl 004244 aa 6 00304 7561 00 stq pr6|196 i 004245 aa 000000 0110 03 nop 0,du 004246 aa 6 00304 2361 00 ldq pr6|196 i 004247 aa 000004 1160 07 cmpq 4,dl 004250 aa 000015 6054 04 tpnz 13,ic 004265 STATEMENT 1 ON LINE 1150 lrc = bool (lrc, temp_chars (i), XOR); 004251 aa 000011 4020 07 mpy 9,dl 004252 aa 6 00540 4501 00 stz pr6|352 004253 aa 003 100 060 506 csl (pr,ql),(pr),fill(0),bool(move) 004254 aa 6 00304 60 0011 descb pr6|196(27),9 temp_chars 004255 aa 6 00540 00 0011 descb pr6|352,9 004256 aa 006 100 060 500 csl (pr),(pr),fill(0),bool(xor) 004257 aa 6 00300 00 0011 descb pr6|192,9 lrc 004260 aa 6 00540 00 0011 descb pr6|352,9 004261 aa 6 00540 2351 00 lda pr6|352 004262 aa 6 00300 7551 00 sta pr6|192 lrc STATEMENT 1 ON LINE 1151 end; 004263 aa 6 00304 0541 00 aos pr6|196 i 004264 aa 777762 7100 04 tra -14,ic 004246 STATEMENT 1 ON LINE 1152 end; STATEMENT 1 ON LINE 1154 if nchars > 0 then do; 004265 aa 6 00302 2361 00 ldq pr6|194 nchars 004266 aa 000034 6044 04 tmoz 28,ic 004322 STATEMENT 1 ON LINE 1156 p = addr (buffer.chars (btally - nchars)); 004267 aa 6 00303 2361 00 ldq pr6|195 btally 004270 aa 6 00302 1761 00 sbq pr6|194 nchars 004271 aa 6 00212 3735 20 epp7 pr6|138,* blockp 004272 aa 7 00001 3521 00 epp2 pr7|1 buffer.chars 004273 aa 2 00000 5005 06 a9bd pr2|0,ql 004274 aa 6 00306 2521 00 spri2 pr6|198 p STATEMENT 1 ON LINE 1157 do i = 1 to nchars; 004275 aa 6 00302 2361 00 ldq pr6|194 nchars 004276 aa 6 00311 7561 00 stq pr6|201 004277 aa 000001 2360 07 ldq 1,dl 004300 aa 6 00304 7561 00 stq pr6|196 i 004301 aa 000000 0110 03 nop 0,du 004302 aa 6 00304 2361 00 ldq pr6|196 i 004303 aa 6 00311 1161 00 cmpq pr6|201 004304 aa 000016 6054 04 tpnz 14,ic 004322 STATEMENT 1 ON LINE 1158 lrc = bool (lrc, p -> bchars (i), XOR); 004305 aa 000011 4020 07 mpy 9,dl 004306 aa 6 00540 4501 00 stz pr6|352 004307 aa 6 00306 3735 20 epp7 pr6|198,* p 004310 aa 003 100 060 506 csl (pr,ql),(pr),fill(0),bool(move) 004311 aa 7 77777 60 0011 descb pr7|-1(27),9 bchars 004312 aa 6 00540 00 0011 descb pr6|352,9 004313 aa 006 100 060 500 csl (pr),(pr),fill(0),bool(xor) 004314 aa 6 00300 00 0011 descb pr6|192,9 lrc 004315 aa 6 00540 00 0011 descb pr6|352,9 004316 aa 6 00540 2351 00 lda pr6|352 004317 aa 6 00300 7551 00 sta pr6|192 lrc STATEMENT 1 ON LINE 1159 end; 004320 aa 6 00304 0541 00 aos pr6|196 i 004321 aa 777761 7100 04 tra -15,ic 004302 STATEMENT 1 ON LINE 1160 end; STATEMENT 1 ON LINE 1162 return (lrc); 004322 aa 6 00274 3735 20 epp7 pr6|188,* 004323 aa 7 00002 3715 20 epp5 pr7|2,* 004324 aa 003 100 060 500 csl (pr),(pr),fill(0),bool(move) 004325 aa 6 00300 00 0011 descb pr6|192,9 lrc 004326 aa 5 00000 00 0011 descb pr5|0,9 004327 aa 6 00272 6101 00 rtcd pr6|186 STATEMENT 1 ON LINE 1163 end; END PROCEDURE get_buffer_lrc BEGIN PROCEDURE write_ff ENTRY TO write_ff STATEMENT 1 ON LINE 1167 write_ff: proc (ff_sent); 004330 aa 6 00312 6501 00 spri4 pr6|202 004331 aa 6 00314 2521 00 spri2 pr6|204 STATEMENT 1 ON LINE 1174 ff_sent = "0"b; 004332 aa 2 00002 3735 20 epp7 pr2|2,* 004333 aa 003 100 060 400 csl (),(pr),fill(0),bool(move) 004334 aa 000000 00 0000 descb 0,0 004335 aa 7 00000 00 0001 descb pr7|0,1 ff_sent STATEMENT 1 ON LINE 1175 pvste.eop = "0"b; 004336 aa 001462 2350 04 lda 818,ic 006020 = 677777777777 004337 aa 6 00204 3715 20 epp5 pr6|132,* pvstep 004340 aa 5 00002 3551 00 ansa pr5|2 pvste.eop STATEMENT 1 ON LINE 1176 if pvmd.omit_ff | (substr (pvste.name, 1, 1) = "x") then return; 004341 aa 6 00202 3535 20 epp3 pr6|130,* pvmdp 004342 aa 3 00052 2351 00 lda pr3|42 pvmd.omit_ff 004343 aa 000400 3150 03 cana 256,du 004344 aa 000006 6010 04 tnz 6,ic 004352 004345 aa 5 00000 2351 00 lda pr5|0 pvste.name 004346 aa 000011 7350 00 als 9 004347 aa 0 00022 3771 00 anaq pr0|18 = 777000000000 000000000000 004350 aa 170000 1150 03 cmpa 61440,du 004351 aa 000002 6010 04 tnz 2,ic 004353 004352 aa 6 00312 6101 00 rtcd pr6|202 STATEMENT 1 ON LINE 1178 if (pvste.write_chain ^= 0) | pvmd.write_chan = subchan then return; 004353 aa 5 00001 2361 00 ldq pr5|1 pvste.write_chain 004354 aa 0 00374 3771 00 anaq pr0|252 = 000000000000 000000777777 004355 aa 000004 6010 04 tnz 4,ic 004361 004356 aa 3 00014 2361 00 ldq pr3|12 pvmd.write_chan 004357 aa 6 00171 1161 00 cmpq pr6|121 subchan 004360 aa 000002 6010 04 tnz 2,ic 004362 004361 aa 6 00312 6101 00 rtcd pr6|202 STATEMENT 1 ON LINE 1181 call tty_space_man$get_buffer ((pvste.devx), 16, OUTPUT, p); 004362 aa 5 00001 2351 00 lda pr5|1 pvste.devx 004363 aa 000066 7330 00 lrs 54 004364 aa 6 00541 7561 00 stq pr6|353 004365 aa 000020 2360 07 ldq 16,dl 004366 aa 6 00542 7561 00 stq pr6|354 004367 aa 6 00541 3521 00 epp2 pr6|353 004370 aa 6 00546 2521 00 spri2 pr6|358 004371 aa 6 00542 3521 00 epp2 pr6|354 004372 aa 6 00550 2521 00 spri2 pr6|360 004373 aa 773471 3520 04 epp2 -2247,ic 000064 = 400000000000 004374 aa 6 00552 2521 00 spri2 pr6|362 004375 aa 6 00320 3521 00 epp2 pr6|208 p 004376 aa 6 00554 2521 00 spri2 pr6|364 004377 aa 6 00544 6211 00 eax1 pr6|356 004400 aa 020000 4310 07 fld 8192,dl 004401 aa 6 00044 3701 20 epp4 pr6|36,* 004402 la 4 00050 3521 20 epp2 pr4|40,* tty_space_man$get_buffer 004403 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 1182 if p = null /* did not get buffer, tough luck */ then return; 004404 aa 6 00320 2371 00 ldaq pr6|208 p 004405 aa 773503 6770 04 eraq -2237,ic 000110 = 077777000043 000001000000 004406 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 004407 aa 000002 6010 04 tnz 2,ic 004411 004410 aa 6 00312 6101 00 rtcd pr6|202 STATEMENT 1 ON LINE 1185 pvste.eop = "1"b; 004411 aa 100000 2350 03 lda 32768,du 004412 aa 6 00204 3735 20 epp7 pr6|132,* pvstep 004413 aa 7 00002 2551 00 orsa pr7|2 pvste.eop STATEMENT 1 ON LINE 1186 call get_frame_header (hlen); 004414 aa 000746 3520 04 epp2 486,ic 005362 = 000002000000 004415 aa 000042 6700 04 tsp4 34,ic 004457 STATEMENT 1 ON LINE 1187 pvste.eop = "0"b; 004416 aa 001402 2350 04 lda 770,ic 006020 = 677777777777 004417 aa 6 00204 3735 20 epp7 pr6|132,* pvstep 004420 aa 7 00002 3551 00 ansa pr7|2 pvste.eop STATEMENT 1 ON LINE 1188 substr (string (p -> buffer.chars), 1, hlen) = substr (string (frame_header), 1, hlen); 004421 aa 6 00320 3715 20 epp5 pr6|208,* p 004422 aa 6 00322 7271 00 lxl7 pr6|210 hlen 004423 aa 040 140 100 540 mlr (pr,rl),(pr,rl),fill(040) 004424 aa 6 00113 00 0017 desc9a pr6|75,x7 004425 aa 5 00001 00 0017 desc9a pr5|1,x7 STATEMENT 1 ON LINE 1190 call get_frame_trailer; 004426 aa 000152 6700 04 tsp4 106,ic 004600 STATEMENT 1 ON LINE 1191 tlen = length (string (frame_trailer)); 004427 aa 000023 2360 07 ldq 19,dl 004430 aa 6 00323 7561 00 stq pr6|211 tlen STATEMENT 1 ON LINE 1192 substr (string (p -> buffer.chars), hlen + 1, tlen) = string (frame_trailer); 004431 aa 6 00322 7271 00 lxl7 pr6|210 hlen 004432 aa 6 00320 3735 20 epp7 pr6|208,* p 004433 aa 040 157 100 500 mlr (pr),(pr,rl,x7),fill(040) 004434 aa 6 00121 00 0023 desc9a pr6|81,19 004435 aa 7 00001 00 0006 desc9a pr7|1,ql STATEMENT 1 ON LINE 1194 p -> buffer.tally = hlen + tlen; 004436 aa 6 00322 0761 00 adq pr6|210 hlen 004437 aa 7 00000 5521 04 stbq pr7|0,04 buffer.tally STATEMENT 1 ON LINE 1195 pvste.write_chain = bin (rel (p), 18); 004440 aa 7 00000 6351 00 eaa pr7|0 p 004441 aa 000066 7730 00 lrl 54 004442 aa 6 00204 3715 20 epp5 pr6|132,* pvstep 004443 aa 5 00001 5521 14 stbq pr5|1,14 pvste.write_chain STATEMENT 1 ON LINE 1196 if pvmd.write_chan = 0 then call write_frame (code); 004444 aa 6 00202 3535 20 epp3 pr6|130,* pvmdp 004445 aa 3 00014 2361 00 ldq pr3|12 pvmd.write_chan 004446 aa 000003 6010 04 tnz 3,ic 004451 004447 aa 001345 3520 04 epp2 741,ic 006014 = 000002000000 004450 aa 000161 6700 04 tsp4 113,ic 004631 STATEMENT 1 ON LINE 1199 ff_sent = "1"b; 004451 aa 6 00314 3735 20 epp7 pr6|204,* 004452 aa 7 00002 3715 20 epp5 pr7|2,* 004453 aa 403 100 060 400 csl (),(pr),fill(1),bool(move) 004454 aa 000000 00 0000 descb 0,0 004455 aa 5 00000 00 0001 descb pr5|0,1 ff_sent STATEMENT 1 ON LINE 1201 end; 004456 aa 6 00312 6101 00 rtcd pr6|202 END PROCEDURE write_ff BEGIN PROCEDURE get_frame_header ENTRY TO get_frame_header STATEMENT 1 ON LINE 1205 get_frame_header: proc (nchars); 004457 aa 6 00324 6501 00 spri4 pr6|212 004460 aa 6 00326 2521 00 spri2 pr6|214 STATEMENT 1 ON LINE 1212 frame_header = frame_header_template; 004461 aa 000 100 100 404 mlr (ic),(pr),fill(000) 004462 aa 773317 00 0030 desc9a -2353,24 000000 = 026026026026 004463 aa 6 00113 00 0030 desc9a pr6|75,24 frame_header STATEMENT 1 ON LINE 1213 adr = bit (pvste.station_addr, 9) | SELECT; 004464 aa 6 00204 2351 20 lda pr6|132,* pvste.station_addr 004465 aa 000077 7730 00 lrl 63 004466 aa 000077 7370 00 lls 63 004467 aa 100000 2750 03 ora 32768,du 004470 aa 6 00332 7551 00 sta pr6|218 adr STATEMENT 1 ON LINE 1214 unspec (frame_header.select_msg.adr) = adr; 004471 aa 000011 7710 00 arl 9 004472 aa 6 00114 5511 20 stba pr6|76,20 STATEMENT 1 ON LINE 1215 unspec (frame_header.select_msg.lrc) = bool (COMMON_LRC, adr, XOR); 004473 aa 6 00556 4501 00 stz pr6|366 004474 aa 003 100 060 500 csl (pr),(pr),fill(0),bool(move) 004475 aa 6 00332 00 0011 descb pr6|218,9 adr 004476 aa 6 00556 00 0011 descb pr6|366,9 004477 aa 006 100 060 404 csl (ic),(pr),fill(0),bool(xor) 004500 aa 001343 00 0011 descb 739,9 006042 = 001000000000 004501 aa 6 00556 00 0011 descb pr6|366,9 004502 aa 6 00556 2351 00 lda pr6|366 004503 aa 000033 7710 00 arl 27 004504 aa 6 00115 5511 04 stba pr6|77,04 STATEMENT 1 ON LINE 1218 if pvste.printer /* get text message address */ then adr = PRINTER; 004505 aa 6 00204 3735 20 epp7 pr6|132,* pvstep 004506 aa 7 00002 2351 00 lda pr7|2 pvste.printer 004507 aa 0 00002 3771 00 anaq pr0|2 = 400000000000 000000000000 004510 aa 6 00556 7551 00 sta pr6|366 pvste.printer 004511 aa 000004 6000 04 tze 4,ic 004515 004512 aa 150000 2350 03 lda 53248,du 004513 aa 6 00332 7551 00 sta pr6|218 adr 004514 aa 000003 7100 04 tra 3,ic 004517 STATEMENT 1 ON LINE 1220 else adr = DISPLAY; 004515 aa 140000 2350 03 lda 49152,du 004516 aa 6 00332 7551 00 sta pr6|218 adr STATEMENT 1 ON LINE 1221 unspec (frame_header.text_msg.adr) = adr; 004517 aa 000011 7710 00 arl 9 004520 aa 6 00117 5511 20 stba pr6|79,20 STATEMENT 1 ON LINE 1222 text_lrc = bool (COMMON_LRC, adr, XOR); 004521 aa 6 00174 4501 00 stz pr6|124 text_lrc 004522 aa 003 100 060 500 csl (pr),(pr),fill(0),bool(move) 004523 aa 6 00332 00 0011 descb pr6|218,9 adr 004524 aa 6 00174 00 0011 descb pr6|124,9 text_lrc 004525 aa 006 100 060 404 csl (ic),(pr),fill(0),bool(xor) 004526 aa 001315 00 0011 descb 717,9 006042 = 001000000000 004527 aa 6 00174 00 0011 descb pr6|124,9 text_lrc STATEMENT 1 ON LINE 1224 if pvste.printer then do; 004530 aa 6 00556 2351 00 lda pr6|366 pvste.printer 004531 aa 000014 6000 04 tze 12,ic 004545 STATEMENT 1 ON LINE 1226 frame_header.text_msg.sta = PRT; 004532 aa 032000 2350 07 lda 13312,dl 004533 aa 6 00117 5511 10 stba pr6|79,10 frame_header.sta STATEMENT 1 ON LINE 1227 text_lrc = bool (text_lrc, unspec (PRT), XOR); 004534 aa 6 00556 4501 00 stz pr6|366 004535 aa 003 100 060 404 csl (ic),(pr),fill(0),bool(move) 004536 aa 001301 00 0011 descb 705,9 006036 = 032000000000 004537 aa 6 00556 00 0011 descb pr6|366,9 004540 aa 006 100 060 500 csl (pr),(pr),fill(0),bool(xor) 004541 aa 6 00174 00 0011 descb pr6|124,9 text_lrc 004542 aa 6 00556 00 0011 descb pr6|366,9 004543 aa 6 00556 2351 00 lda pr6|366 004544 aa 6 00174 7551 00 sta pr6|124 text_lrc STATEMENT 1 ON LINE 1228 end; STATEMENT 1 ON LINE 1230 nchars = length (string (frame_header)); 004545 aa 000030 2360 07 ldq 24,dl 004546 aa 2 00002 7561 20 stq pr2|2,* nchars STATEMENT 1 ON LINE 1231 if pvste.eop & ^pvmd.omit_ff & ^(substr (pvste.name, 1, 1) = "x") /* cursor at end of page, must clear screen */ then text_lrc = bool (text_lrc, unspec (FF), XOR); 004547 aa 7 00002 2351 00 lda pr7|2 pvste.eop 004550 aa 100000 3150 03 cana 32768,du 004551 aa 000024 6000 04 tze 20,ic 004575 004552 aa 6 00202 3715 20 epp5 pr6|130,* pvmdp 004553 aa 5 00052 2351 00 lda pr5|42 pvmd.omit_ff 004554 aa 000400 3150 03 cana 256,du 004555 aa 000020 6010 04 tnz 16,ic 004575 004556 aa 7 00000 2351 00 lda pr7|0 pvste.name 004557 aa 000011 7350 00 als 9 004560 aa 0 00022 3771 00 anaq pr0|18 = 777000000000 000000000000 004561 aa 170000 1150 03 cmpa 61440,du 004562 aa 000013 6000 04 tze 11,ic 004575 004563 aa 6 00556 4501 00 stz pr6|366 004564 aa 003 100 060 404 csl (ic),(pr),fill(0),bool(move) 004565 aa 001253 00 0011 descb 683,9 006037 = 014000000000 004566 aa 6 00556 00 0011 descb pr6|366,9 004567 aa 006 100 060 500 csl (pr),(pr),fill(0),bool(xor) 004570 aa 6 00174 00 0011 descb pr6|124,9 text_lrc 004571 aa 6 00556 00 0011 descb pr6|366,9 004572 aa 6 00556 2351 00 lda pr6|366 004573 aa 6 00174 7551 00 sta pr6|124 text_lrc 004574 aa 000003 7100 04 tra 3,ic 004577 STATEMENT 1 ON LINE 1234 else nchars = nchars - 2; 004575 aa 000002 3360 07 lcq 2,dl 004576 aa 2 00002 0561 20 asq pr2|2,* nchars STATEMENT 1 ON LINE 1236 end; 004577 aa 6 00324 6101 00 rtcd pr6|212 END PROCEDURE get_frame_header BEGIN PROCEDURE get_frame_trailer ENTRY TO get_frame_trailer STATEMENT 1 ON LINE 1242 get_frame_trailer: proc; 004600 aa 6 00334 6501 00 spri4 pr6|220 STATEMENT 1 ON LINE 1248 frame_trailer = frame_trailer_template; 004601 aa 000 100 100 404 mlr (ic),(pr),fill(000) 004602 aa 773205 00 0024 desc9a -2427,20 000006 = 003000026026 004603 aa 6 00121 00 0024 desc9a pr6|81,20 frame_trailer STATEMENT 1 ON LINE 1249 unspec (frame_trailer.text_msg.lrc) = text_lrc; 004604 aa 6 00174 2351 00 lda pr6|124 text_lrc 004605 aa 000011 7710 00 arl 9 004606 aa 6 00121 5511 20 stba pr6|81,20 STATEMENT 1 ON LINE 1251 adr = bit (pvste.station_addr, 9) | POLL; 004607 aa 6 00204 2351 20 lda pr6|132,* pvste.station_addr 004610 aa 000077 7730 00 lrl 63 004611 aa 000077 7370 00 lls 63 004612 aa 040000 2750 03 ora 16384,du 004613 aa 6 00342 7551 00 sta pr6|226 adr STATEMENT 1 ON LINE 1252 unspec (frame_trailer.poll_msg.adr) = adr; 004614 aa 000033 7710 00 arl 27 004615 aa 6 00122 5511 04 stba pr6|82,04 STATEMENT 1 ON LINE 1253 unspec (frame_trailer.poll_msg.lrc) = bool (COMMON_LRC, adr, XOR); 004616 aa 6 00557 4501 00 stz pr6|367 004617 aa 003 100 060 500 csl (pr),(pr),fill(0),bool(move) 004620 aa 6 00342 00 0011 descb pr6|226,9 adr 004621 aa 6 00557 00 0011 descb pr6|367,9 004622 aa 006 100 060 404 csl (ic),(pr),fill(0),bool(xor) 004623 aa 001220 00 0011 descb 656,9 006042 = 001000000000 004624 aa 6 00557 00 0011 descb pr6|367,9 004625 aa 6 00557 2351 00 lda pr6|367 004626 aa 000011 7710 00 arl 9 004627 aa 6 00124 5511 20 stba pr6|84,20 STATEMENT 1 ON LINE 1256 end; 004630 aa 6 00334 6101 00 rtcd pr6|220 END PROCEDURE get_frame_trailer BEGIN PROCEDURE write_frame ENTRY TO write_frame STATEMENT 1 ON LINE 1260 write_frame: proc (code); 004631 aa 6 00344 6501 00 spri4 pr6|228 004632 aa 6 00346 2521 00 spri2 pr6|230 STATEMENT 1 ON LINE 1266 code = 0; 004633 aa 2 00002 4501 20 stz pr2|2,* code STATEMENT 1 ON LINE 1267 pvmd.write_chan = subchan; 004634 aa 6 00171 2361 00 ldq pr6|121 subchan 004635 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 004636 aa 7 00014 7561 00 stq pr7|12 pvmd.write_chan STATEMENT 1 ON LINE 1269 if pvste.printer then do; 004637 aa 6 00204 3715 20 epp5 pr6|132,* pvstep 004640 aa 5 00002 2351 00 lda pr5|2 pvste.printer 004641 aa 400000 3150 03 cana 131072,du 004642 aa 000023 6000 04 tze 19,ic 004665 STATEMENT 1 ON LINE 1271 call duplicate_write_chain (); 004643 aa 000200 6700 04 tsp4 128,ic 005043 STATEMENT 1 ON LINE 1272 if pvmd.writep = null /* couldn't get the space */ then do; 004644 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 004645 aa 7 00012 2371 00 ldaq pr7|10 pvmd.writep 004646 aa 773242 6770 04 eraq -2398,ic 000110 = 077777000043 000001000000 004647 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 004650 aa 000011 6010 04 tnz 9,ic 004661 STATEMENT 1 ON LINE 1274 call tty_space_man$needs_space (pvmd.devx); 004651 aa 7 00000 3521 00 epp2 pr7|0 pvmd.devx 004652 aa 6 00562 2521 00 spri2 pr6|370 004653 aa 6 00560 6211 00 eax1 pr6|368 004654 aa 004000 4310 07 fld 2048,dl 004655 aa 6 00044 3701 20 epp4 pr6|36,* 004656 la 4 00056 3521 20 epp2 pr4|46,* tty_space_man$needs_space 004657 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 1276 return; 004660 aa 6 00344 6101 00 rtcd pr6|228 STATEMENT 1 ON LINE 1277 end; STATEMENT 1 ON LINE 1278 pvste.hold_output = "1"b; 004661 aa 200000 2350 03 lda 65536,du 004662 aa 6 00204 3715 20 epp5 pr6|132,* pvstep 004663 aa 5 00002 2551 00 orsa pr5|2 pvste.hold_output STATEMENT 1 ON LINE 1279 end; 004664 aa 000015 7100 04 tra 13,ic 004701 STATEMENT 1 ON LINE 1280 else do; STATEMENT 1 ON LINE 1281 pvmd.writep = ptr (ttybp, pvste.write_chain); 004665 aa 5 00001 2361 00 ldq pr5|1 pvste.write_chain 004666 aa 0 00374 3771 00 anaq pr0|252 = 000000000000 000000777777 004667 aa 6 00176 3515 20 epp1 pr6|126,* ttybp 004670 aa 000000 3114 06 eawp1 0,ql 004671 aa 7 00012 2515 00 spri1 pr7|10 pvmd.writep STATEMENT 1 ON LINE 1282 pvste.write_chain = 0; 004672 aa 000000 2350 03 lda 0,du 004673 aa 5 00001 5511 14 stba pr5|1,14 pvste.write_chain STATEMENT 1 ON LINE 1283 pvste.hold_output = pvmd.writep -> buffer.end_of_page; 004674 aa 1 00000 2351 00 lda pr1|0 buffer.end_of_page 004675 aa 000021 7350 00 als 17 004676 aa 5 00002 6751 00 era pr5|2 pvste.hold_output 004677 aa 200000 3750 03 ana 65536,du 004700 aa 5 00002 6551 00 ersa pr5|2 pvste.hold_output STATEMENT 1 ON LINE 1285 end; STATEMENT 1 ON LINE 1287 pvmd.writep -> buffer.end_of_page = "0"b; 004701 aa 001131 2350 04 lda 601,ic 006032 = 777777377777 004702 aa 7 00012 3551 20 ansa pr7|10,* buffer.end_of_page STATEMENT 1 ON LINE 1288 call write_bchain (code); 004703 aa 6 00346 3535 20 epp3 pr6|230,* 004704 aa 3 00002 3521 20 epp2 pr3|2,* code 004705 aa 6 00566 2521 00 spri2 pr6|374 004706 aa 6 00564 3521 00 epp2 pr6|372 004707 aa 004000 4310 07 fld 2048,dl 004710 aa 2 00000 7571 00 staq pr2|0 004711 aa 000002 6700 04 tsp4 2,ic 004713 STATEMENT 1 ON LINE 1290 end; 004712 aa 6 00344 6101 00 rtcd pr6|228 END PROCEDURE write_frame BEGIN PROCEDURE write_bchain ENTRY TO write_bchain STATEMENT 1 ON LINE 1294 write_bchain: proc (code); 004713 aa 6 00352 6501 00 spri4 pr6|234 004714 aa 6 00354 2521 00 spri2 pr6|236 STATEMENT 1 ON LINE 1300 call channel_manager$write (pvmd.devx, pvmd.writep, code); 004715 aa 6 00202 3521 20 epp2 pr6|130,* pvmd.devx 004716 aa 6 00574 2521 00 spri2 pr6|380 004717 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 004720 aa 7 00012 3521 00 epp2 pr7|10 pvmd.writep 004721 aa 6 00576 2521 00 spri2 pr6|382 004722 aa 6 00354 3715 20 epp5 pr6|236,* 004723 aa 5 00002 3521 20 epp2 pr5|2,* code 004724 aa 6 00600 2521 00 spri2 pr6|384 004725 aa 6 00572 6211 00 eax1 pr6|378 004726 aa 014000 4310 07 fld 6144,dl 004727 aa 6 00044 3701 20 epp4 pr6|36,* 004730 la 4 00042 3521 20 epp2 pr4|34,* channel_manager$write 004731 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 1301 if code ^= 0 then do; 004732 aa 6 00354 3735 20 epp7 pr6|236,* 004733 aa 7 00002 2361 20 ldq pr7|2,* code 004734 aa 000027 6000 04 tze 23,ic 004763 STATEMENT 1 ON LINE 1303 if code = et_noalloc /* parent multiplexer ran out of space */ then do; 004735 aa 6 00044 3701 20 epp4 pr6|36,* 004736 ia 4 00013 1161 00 cmpq pr4|11 et_noalloc 004737 aa 000011 6010 04 tnz 9,ic 004750 STATEMENT 1 ON LINE 1305 code = 0; 004740 aa 7 00002 4501 20 stz pr7|2,* code STATEMENT 1 ON LINE 1306 call tty_space_man$needs_space (pvmd.devx); 004741 aa 6 00202 3521 20 epp2 pr6|130,* pvmd.devx 004742 aa 6 00574 2521 00 spri2 pr6|380 004743 aa 6 00572 6211 00 eax1 pr6|378 004744 aa 004000 4310 07 fld 2048,dl 004745 la 4 00056 3521 20 epp2 pr4|46,* tty_space_man$needs_space 004746 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 1308 end; 004747 aa 000013 7100 04 tra 11,ic 004762 STATEMENT 1 ON LINE 1309 else do; STATEMENT 1 ON LINE 1310 subchan = pvmd.write_chan; 004750 aa 6 00202 3715 20 epp5 pr6|130,* pvmdp 004751 aa 5 00014 2361 00 ldq pr5|12 pvmd.write_chan 004752 aa 6 00171 7561 00 stq pr6|121 subchan STATEMENT 1 ON LINE 1311 pvstep = addr (pvmd.subchan_table (subchan)); 004753 aa 000012 4020 07 mpy 10,dl 004754 aa 5 00050 3535 06 epp3 pr5|40,ql pvmd.subchan_table 004755 aa 6 00204 2535 00 spri3 pr6|132 pvstep STATEMENT 1 ON LINE 1312 pvste.hold_output = "0"b; 004756 aa 001030 2350 04 lda 536,ic 006006 = 577777777777 004757 aa 3 00002 3551 00 ansa pr3|2 pvste.hold_output STATEMENT 1 ON LINE 1313 call free_bchain; 004760 aa 000007 6700 04 tsp4 7,ic 004767 STATEMENT 1 ON LINE 1314 call free_write_chain; 004761 aa 000223 6700 04 tsp4 147,ic 005204 STATEMENT 1 ON LINE 1315 end; STATEMENT 1 ON LINE 1317 return; 004762 aa 6 00352 6101 00 rtcd pr6|234 STATEMENT 1 ON LINE 1318 end; STATEMENT 1 ON LINE 1320 pvmd.send_output = "0"b; 004763 aa 000375 2350 04 lda 253,ic 005360 = 377777777777 004764 aa 6 00202 3715 20 epp5 pr6|130,* pvmdp 004765 aa 5 00052 3551 00 ansa pr5|42 pvmd.send_output STATEMENT 1 ON LINE 1321 end; 004766 aa 6 00352 6101 00 rtcd pr6|234 END PROCEDURE write_bchain BEGIN PROCEDURE free_bchain ENTRY TO free_bchain STATEMENT 1 ON LINE 1327 free_bchain: proc; 004767 aa 6 00360 6501 00 spri4 pr6|240 STATEMENT 1 ON LINE 1330 call channel_manager$control (pvmd.devx, "abort", addr (WRITE_ABORT), 0); 004770 aa 773122 2370 04 ldaq -2478,ic 000112 = 141142157162 164000000000 004771 aa 6 00602 7571 00 staq pr6|386 004772 aa 773072 3734 04 epp7 -2502,ic 000064 = 400000000000 004773 aa 6 00604 6535 00 spri7 pr6|388 004774 aa 6 00606 4501 00 stz pr6|390 004775 aa 6 00202 3521 20 epp2 pr6|130,* pvmd.devx 004776 aa 6 00612 2521 00 spri2 pr6|394 004777 aa 6 00602 3521 00 epp2 pr6|386 005000 aa 6 00614 2521 00 spri2 pr6|396 005001 aa 6 00604 3521 00 epp2 pr6|388 005002 aa 6 00616 2521 00 spri2 pr6|398 005003 aa 6 00606 3521 00 epp2 pr6|390 005004 aa 6 00620 2521 00 spri2 pr6|400 005005 aa 773066 3520 04 epp2 -2506,ic 000073 = 404000000021 005006 aa 6 00622 2521 00 spri2 pr6|402 005007 aa 773044 3520 04 epp2 -2524,ic 000053 = 524000000005 005010 aa 6 00624 2521 00 spri2 pr6|404 005011 aa 773067 3520 04 epp2 -2505,ic 000100 = 464000000000 005012 aa 6 00626 2521 00 spri2 pr6|406 005013 aa 773063 3520 04 epp2 -2509,ic 000076 = 404000000043 005014 aa 6 00630 2521 00 spri2 pr6|408 005015 aa 6 00610 6211 00 eax1 pr6|392 005016 aa 020000 4310 07 fld 8192,dl 005017 aa 6 00044 3701 20 epp4 pr6|36,* 005020 la 4 00044 3521 20 epp2 pr4|36,* channel_manager$control 005021 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 1331 call tty_space_man$free_chain (pvmd.devx, OUTPUT, pvmd.writep); 005022 aa 6 00202 3521 20 epp2 pr6|130,* pvmd.devx 005023 aa 6 00612 2521 00 spri2 pr6|394 005024 aa 773040 3520 04 epp2 -2528,ic 000064 = 400000000000 005025 aa 6 00614 2521 00 spri2 pr6|396 005026 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 005027 aa 7 00012 3521 00 epp2 pr7|10 pvmd.writep 005030 aa 6 00616 2521 00 spri2 pr6|398 005031 aa 6 00610 6211 00 eax1 pr6|392 005032 aa 014000 4310 07 fld 6144,dl 005033 aa 6 00044 3701 20 epp4 pr6|36,* 005034 la 4 00054 3521 20 epp2 pr4|44,* tty_space_man$free_chain 005035 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 1332 pvmd.writep = null; 005036 aa 773052 2370 04 ldaq -2518,ic 000110 = 077777000043 000001000000 005037 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 005040 aa 7 00012 7571 00 staq pr7|10 pvmd.writep STATEMENT 1 ON LINE 1333 pvmd.write_chan = 0; 005041 aa 7 00014 4501 00 stz pr7|12 pvmd.write_chan STATEMENT 1 ON LINE 1335 end; 005042 aa 6 00360 6101 00 rtcd pr6|240 END PROCEDURE free_bchain BEGIN PROCEDURE duplicate_write_chain ENTRY TO duplicate_write_chain STATEMENT 1 ON LINE 1339 duplicate_write_chain: proc; 005043 aa 6 00366 6501 00 spri4 pr6|246 STATEMENT 1 ON LINE 1348 p = ptr (ttybp, pvste.write_chain); 005044 aa 6 00204 3735 20 epp7 pr6|132,* pvstep 005045 aa 7 00001 2361 00 ldq pr7|1 pvste.write_chain 005046 aa 0 00374 3771 00 anaq pr0|252 = 000000000000 000000777777 005047 aa 6 00176 3521 20 epp2 pr6|126,* ttybp 005050 aa 000000 3120 06 eawp2 0,ql 005051 aa 6 00374 2521 00 spri2 pr6|252 p STATEMENT 1 ON LINE 1349 prev_newp = null; 005052 aa 773036 2370 04 ldaq -2530,ic 000110 = 077777000043 000001000000 005053 aa 6 00400 7571 00 staq pr6|256 prev_newp STATEMENT 1 ON LINE 1350 end_chain = "0"b; 005054 aa 6 00404 4501 00 stz pr6|260 end_chain STATEMENT 1 ON LINE 1351 do while (^end_chain); 005055 aa 000000 0110 03 nop 0,du 005056 aa 6 00404 2351 00 lda pr6|260 end_chain 005057 aa 000121 6010 04 tnz 81,ic 005200 STATEMENT 1 ON LINE 1352 nwords = (bin (p -> buffer.size_code, 3) + 1) * 16; 005060 aa 6 00374 2351 20 lda pr6|252,* buffer.size_code 005061 aa 000030 7350 00 als 24 005062 aa 000105 7730 00 lrl 69 005063 aa 000001 0760 07 adq 1,dl 005064 aa 000004 7360 00 qls 4 005065 aa 6 00405 7561 00 stq pr6|261 nwords STATEMENT 1 ON LINE 1354 call tty_space_man$get_buffer ((pvste.devx), nwords, OUTPUT, newp); 005066 aa 6 00204 3735 20 epp7 pr6|132,* pvstep 005067 aa 7 00001 2351 00 lda pr7|1 pvste.devx 005070 aa 000066 7330 00 lrs 54 005071 aa 6 00632 7561 00 stq pr6|410 005072 aa 6 00632 3521 00 epp2 pr6|410 005073 aa 6 00636 2521 00 spri2 pr6|414 005074 aa 6 00405 3521 00 epp2 pr6|261 nwords 005075 aa 6 00640 2521 00 spri2 pr6|416 005076 aa 772766 3520 04 epp2 -2570,ic 000064 = 400000000000 005077 aa 6 00642 2521 00 spri2 pr6|418 005100 aa 6 00376 3521 00 epp2 pr6|254 newp 005101 aa 6 00644 2521 00 spri2 pr6|420 005102 aa 6 00634 6211 00 eax1 pr6|412 005103 aa 020000 4310 07 fld 8192,dl 005104 aa 6 00044 3701 20 epp4 pr6|36,* 005105 la 4 00050 3521 20 epp2 pr4|40,* tty_space_man$get_buffer 005106 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 1355 if newp = null /* failed to get buffer */ then do; 005107 aa 6 00376 2371 00 ldaq pr6|254 newp 005110 aa 773000 6770 04 eraq -2560,ic 000110 = 077777000043 000001000000 005111 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 005112 aa 000030 6010 04 tnz 24,ic 005142 STATEMENT 1 ON LINE 1357 if prev_newp ^= null then do; 005113 aa 6 00400 2371 00 ldaq pr6|256 prev_newp 005114 aa 772774 6770 04 eraq -2564,ic 000110 = 077777000043 000001000000 005115 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 005116 aa 000023 6000 04 tze 19,ic 005141 STATEMENT 1 ON LINE 1359 prev_newp -> buffer.next = 0; 005117 aa 000000 2350 07 lda 0,dl 005120 aa 6 00400 3735 20 epp7 pr6|256,* buffer.next 005121 aa 7 00000 5511 60 stba pr7|0,60 buffer.next STATEMENT 1 ON LINE 1360 call tty_space_man$free_chain ((pvste.devx), OUTPUT, prev_newp); 005122 aa 6 00204 3715 20 epp5 pr6|132,* pvstep 005123 aa 5 00001 2351 00 lda pr5|1 pvste.devx 005124 aa 000066 7330 00 lrs 54 005125 aa 6 00632 7561 00 stq pr6|410 005126 aa 6 00632 3521 00 epp2 pr6|410 005127 aa 6 00636 2521 00 spri2 pr6|414 005130 aa 772734 3520 04 epp2 -2596,ic 000064 = 400000000000 005131 aa 6 00640 2521 00 spri2 pr6|416 005132 aa 6 00400 3521 00 epp2 pr6|256 prev_newp 005133 aa 6 00642 2521 00 spri2 pr6|418 005134 aa 6 00634 6211 00 eax1 pr6|412 005135 aa 014000 4310 07 fld 6144,dl 005136 aa 6 00044 3701 20 epp4 pr6|36,* 005137 la 4 00054 3521 20 epp2 pr4|44,* tty_space_man$free_chain 005140 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 1361 end; STATEMENT 1 ON LINE 1362 return; 005141 aa 6 00366 6101 00 rtcd pr6|246 STATEMENT 1 ON LINE 1363 end; STATEMENT 1 ON LINE 1365 newp -> bwords = p -> bwords; 005142 aa 6 00405 2361 00 ldq pr6|261 nwords 005143 aa 000002 7360 00 qls 2 005144 aa 6 00376 3735 20 epp7 pr6|254,* newp 005145 aa 6 00374 3715 20 epp5 pr6|252,* p 005146 aa 000 140 100 540 mlr (pr,rl),(pr,rl),fill(000) 005147 aa 5 00000 00 0006 desc9a pr5|0,ql bwords 005150 aa 7 00000 00 0006 desc9a pr7|0,ql bwords STATEMENT 1 ON LINE 1366 if prev_newp = null /* this is first buffer of chain */ then new_headp = newp; 005151 aa 6 00400 2371 00 ldaq pr6|256 prev_newp 005152 aa 772736 6770 04 eraq -2594,ic 000110 = 077777000043 000001000000 005153 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 005154 aa 000003 6010 04 tnz 3,ic 005157 005155 aa 6 00402 6535 00 spri7 pr6|258 new_headp 005156 aa 000006 7100 04 tra 6,ic 005164 STATEMENT 1 ON LINE 1368 else prev_newp -> buffer.next = bin (rel (newp), 18); 005157 aa 7 00000 6351 00 eaa pr7|0 newp 005160 aa 000066 7730 00 lrl 54 005161 aa 000066 7370 00 lls 54 005162 aa 6 00400 3535 20 epp3 pr6|256,* buffer.next 005163 aa 3 00000 5511 60 stba pr3|0,60 buffer.next STATEMENT 1 ON LINE 1369 prev_newp = newp; 005164 aa 6 00400 6535 00 spri7 pr6|256 prev_newp STATEMENT 1 ON LINE 1371 if p -> buffer.next = 0 then end_chain = "1"b; 005165 aa 5 00000 2351 00 lda pr5|0 buffer.next 005166 aa 000066 7730 00 lrl 54 005167 aa 6 00632 7561 00 stq pr6|410 buffer.next 005170 aa 000004 6010 04 tnz 4,ic 005174 005171 aa 400000 2350 03 lda 131072,du 005172 aa 6 00404 7551 00 sta pr6|260 end_chain 005173 aa 777663 7100 04 tra -77,ic 005056 STATEMENT 1 ON LINE 1373 else p = ptr (ttybp, p -> buffer.next); 005174 aa 6 00176 3521 20 epp2 pr6|126,* ttybp 005175 aa 000000 3120 06 eawp2 0,ql 005176 aa 6 00374 2521 00 spri2 pr6|252 p STATEMENT 1 ON LINE 1374 end; 005177 aa 777657 7100 04 tra -81,ic 005056 STATEMENT 1 ON LINE 1376 pvmd.writep = new_headp; 005200 aa 6 00402 3735 20 epp7 pr6|258,* new_headp 005201 aa 6 00202 3715 20 epp5 pr6|130,* pvmdp 005202 aa 5 00012 6535 00 spri7 pr5|10 pvmd.writep STATEMENT 1 ON LINE 1377 return; 005203 aa 6 00366 6101 00 rtcd pr6|246 STATEMENT 1 ON LINE 1379 end; END PROCEDURE duplicate_write_chain BEGIN PROCEDURE free_write_chain ENTRY TO free_write_chain STATEMENT 1 ON LINE 1383 free_write_chain: proc; 005204 aa 6 00406 6501 00 spri4 pr6|262 STATEMENT 1 ON LINE 1386 if pvste.write_chain ^= 0 then do; 005205 aa 6 00204 3735 20 epp7 pr6|132,* pvstep 005206 aa 7 00001 2361 00 ldq pr7|1 pvste.write_chain 005207 aa 0 00374 3771 00 anaq pr0|252 = 000000000000 000000777777 005210 aa 000031 6000 04 tze 25,ic 005241 STATEMENT 1 ON LINE 1388 call tty_space_man$free_chain ((pvste.devx), OUTPUT, ptr (addr (tty_buf$), pvste.write_chain)); 005211 aa 7 00001 2351 00 lda pr7|1 pvste.devx 005212 aa 6 00647 7561 00 stq pr6|423 pvste.write_chain 005213 aa 000066 7330 00 lrs 54 005214 aa 6 00646 7561 00 stq pr6|422 005215 aa 6 00044 3701 20 epp4 pr6|36,* 005216 la 4 00032 3715 20 epp5 pr4|26,* tty_buf$ 005217 aa 6 00647 2361 00 ldq pr6|423 pvste.write_chain 005220 aa 5 00000 3521 00 epp2 pr5|0 005221 aa 000000 3120 06 eawp2 0,ql 005222 aa 6 00650 2521 00 spri2 pr6|424 005223 aa 6 00646 3521 00 epp2 pr6|422 005224 aa 6 00654 2521 00 spri2 pr6|428 005225 aa 772637 3520 04 epp2 -2657,ic 000064 = 400000000000 005226 aa 6 00656 2521 00 spri2 pr6|430 005227 aa 6 00650 3521 00 epp2 pr6|424 005230 aa 6 00660 2521 00 spri2 pr6|432 005231 aa 6 00652 6211 00 eax1 pr6|426 005232 aa 014000 4310 07 fld 6144,dl 005233 la 4 00054 3521 20 epp2 pr4|44,* tty_space_man$free_chain 005234 aa 6 00662 6515 00 spri5 pr6|434 005235 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 1389 pvste.write_chain = 0; 005236 aa 000000 2350 03 lda 0,du 005237 aa 6 00204 3735 20 epp7 pr6|132,* pvstep 005240 aa 7 00001 5511 14 stba pr7|1,14 pvste.write_chain STATEMENT 1 ON LINE 1390 end; STATEMENT 1 ON LINE 1392 if pvste.dialed & ^pvste.hold_output & (pvmd.write_chan ^= subchan) /* solicit more output */ then call channel_manager$interrupt ((pvste.devx), SEND_OUTPUT, ""b); 005241 aa 7 00002 2351 00 lda pr7|2 pvste.dialed 005242 aa 010000 3150 03 cana 4096,du 005243 aa 000030 6000 04 tze 24,ic 005273 005244 aa 7 00002 2351 00 lda pr7|2 pvste.hold_output 005245 aa 200000 3150 03 cana 65536,du 005246 aa 000025 6010 04 tnz 21,ic 005273 005247 aa 6 00202 3715 20 epp5 pr6|130,* pvmdp 005250 aa 5 00014 2361 00 ldq pr5|12 pvmd.write_chan 005251 aa 6 00171 1161 00 cmpq pr6|121 subchan 005252 aa 000021 6000 04 tze 17,ic 005273 005253 aa 7 00001 2351 00 lda pr7|1 pvste.devx 005254 aa 000066 7330 00 lrs 54 005255 aa 6 00646 7561 00 stq pr6|422 005256 aa 772636 2370 04 ldaq -2658,ic 000114 = 000000000000 000000000000 005257 aa 6 00650 7571 00 staq pr6|424 005260 aa 6 00646 3521 00 epp2 pr6|422 005261 aa 6 00654 2521 00 spri2 pr6|428 005262 aa 772613 3520 04 epp2 -2677,ic 000075 = 000000000004 005263 aa 6 00656 2521 00 spri2 pr6|430 005264 aa 6 00650 3521 00 epp2 pr6|424 005265 aa 6 00660 2521 00 spri2 pr6|432 005266 aa 6 00652 6211 00 eax1 pr6|426 005267 aa 014000 4310 07 fld 6144,dl 005270 aa 6 00044 3701 20 epp4 pr6|36,* 005271 la 4 00046 3521 20 epp2 pr4|38,* channel_manager$interrupt 005272 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 1396 end; 005273 aa 6 00406 6101 00 rtcd pr6|262 END PROCEDURE free_write_chain BEGIN PROCEDURE crash_mpx ENTRY TO crash_mpx STATEMENT 1 ON LINE 1402 crash_mpx: proc; 005274 aa 6 00414 6501 00 spri4 pr6|268 STATEMENT 1 ON LINE 1407 mpx_loaded = pvmd.mpx_loaded; 005275 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 005276 aa 7 00052 2351 00 lda pr7|42 pvmd.mpx_loaded 005277 aa 000003 7350 00 als 3 005300 aa 0 00002 3771 00 anaq pr0|2 = 400000000000 000000000000 005301 aa 6 00422 7551 00 sta pr6|274 mpx_loaded STATEMENT 1 ON LINE 1408 pvmd.mpx_loading, pvmd.mpx_loaded = "0"b; 005302 aa 000516 2350 04 lda 334,ic 006020 = 677777777777 005303 aa 7 00052 3551 00 ansa pr7|42 pvmd.mpx_loading 005304 aa 000527 2350 04 lda 343,ic 006033 = 737777777777 005305 aa 7 00052 3551 00 ansa pr7|42 pvmd.mpx_loaded STATEMENT 1 ON LINE 1411 if mpx_loaded then do; 005306 aa 6 00422 2351 00 lda pr6|274 mpx_loaded 005307 aa 000050 6000 04 tze 40,ic 005357 STATEMENT 1 ON LINE 1413 if pvmd.writep ^= null then call free_bchain; 005310 aa 7 00012 2371 00 ldaq pr7|10 pvmd.writep 005311 aa 772577 6770 04 eraq -2689,ic 000110 = 077777000043 000001000000 005312 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 005313 aa 000002 6000 04 tze 2,ic 005315 005314 aa 777453 6700 04 tsp4 -213,ic 004767 STATEMENT 1 ON LINE 1415 do subchan = 1 to pvmd.nchan; 005315 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 005316 aa 7 00001 2361 00 ldq pr7|1 pvmd.nchan 005317 aa 6 00423 7561 00 stq pr6|275 005320 aa 000001 2360 07 ldq 1,dl 005321 aa 6 00171 7561 00 stq pr6|121 subchan 005322 aa 6 00171 2361 00 ldq pr6|121 subchan 005323 aa 6 00423 1161 00 cmpq pr6|275 005324 aa 000033 6054 04 tpnz 27,ic 005357 STATEMENT 1 ON LINE 1416 pvstep = addr (pvmd.subchan_table (subchan)); 005325 aa 000012 4020 07 mpy 10,dl 005326 aa 6 00202 3735 20 epp7 pr6|130,* pvmdp 005327 aa 7 00050 3735 06 epp7 pr7|40,ql pvmd.subchan_table 005330 aa 6 00204 6535 00 spri7 pr6|132 pvstep STATEMENT 1 ON LINE 1417 pvste.dialed = "0"b; 005331 aa 000503 2350 04 lda 323,ic 006034 = 767777777777 005332 aa 7 00002 3551 00 ansa pr7|2 pvste.dialed STATEMENT 1 ON LINE 1418 call free_write_chain; 005333 aa 777651 6700 04 tsp4 -87,ic 005204 STATEMENT 1 ON LINE 1419 call channel_manager$interrupt ((pvste.devx), CRASH, ""b); 005334 aa 6 00204 3735 20 epp7 pr6|132,* pvstep 005335 aa 7 00001 2351 00 lda pr7|1 pvste.devx 005336 aa 000066 7330 00 lrs 54 005337 aa 6 00664 7561 00 stq pr6|436 005340 aa 772554 2370 04 ldaq -2708,ic 000114 = 000000000000 000000000000 005341 aa 6 00666 7571 00 staq pr6|438 005342 aa 6 00664 3521 00 epp2 pr6|436 005343 aa 6 00672 2521 00 spri2 pr6|442 005344 aa 772533 3520 04 epp2 -2725,ic 000077 = 000000000003 005345 aa 6 00674 2521 00 spri2 pr6|444 005346 aa 6 00666 3521 00 epp2 pr6|438 005347 aa 6 00676 2521 00 spri2 pr6|446 005350 aa 6 00670 6211 00 eax1 pr6|440 005351 aa 014000 4310 07 fld 6144,dl 005352 aa 6 00044 3701 20 epp4 pr6|36,* 005353 la 4 00046 3521 20 epp2 pr4|38,* channel_manager$interrupt 005354 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 1420 end; 005355 aa 6 00171 0541 00 aos pr6|121 subchan 005356 aa 777744 7100 04 tra -28,ic 005322 STATEMENT 1 ON LINE 1421 end; STATEMENT 1 ON LINE 1423 end; 005357 aa 6 00414 6101 00 rtcd pr6|268 END PROCEDURE crash_mpx END PROCEDURE polled_vip_mpx ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved