228= ... SEG IPBMOP,,,,G501,G502 22BG ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LIMITED 1982 22JQ ...[ THIS EXCLUDES CODE UNDER #SKI G501 & G502 22R2 ...[ 22^= #LIS K0IPBMOP>K0IPB>K0ALLGEO>K0GREATGEO 235N ...#OPT G501 = 0 23=6 ...#SKI G501&1 23BJ ...# WITH UGUG EDIT M501 (3-SHIFT INPUT ON MOP) 23H2 ...#OPT G502 = 0 23MD ...#SKI G502&1 23RW ...# WITH UGUG EDIT M502 (SHIFT AND GRAPHICS OUTPUT ON MOP) 23YG SEGENTRY K1IPBMOP,SK1IPBMOP 24D6 # 24XQ SBI +8 25CB 8HBREAK IN 26BL SEGENTRY K50IPBMOP 27TG REMASK #170000 28SQ SHIFT #74 28^Y ...#SKI G502&1 2976 ... #76 29#B SPACE #20 29S2 SMASK #410000 2=?L VMASK #77577777 2=DS VWAIT #00200001 2=L3 VSNULL 28,#77763300,#76317420,#76067606,#77761306 2=R= #OPT IPBINOPTIME=0 2?=W SEGENTRY K51IPBMOP 2?GN WAITINOP 3+IPBINOPTIME/FONINTP[FOR LONGCOOR AFTER IDENT INOP 2?QG SEGENTRY K52IPBMOP 2?XN ZMIN 60+3/FONINTP 2?^2 ... SEGENTRY K54IPBMOP 2#2# VDUWAIT 60+3/FONINTP [FOR LONGHALT (SET FOR 1 MIN) 2#=6 ZJTIMEOUT +JTIMEOUT [TIMED OUT 'TIME' 2*9B ZJTOREST +JTOREST [RESTARTED AT 'TIME' 2*9C SEGENTRY K53IPBMOP [FOR RSM SDADDWAIT 2*9D SDADD +0 2*9F [ADDITIONAL WAIT FOR SCEDITS 2*9G # 2*9H # IF MOP DISPLAY AND THE TESTOUT MARKER IS SET,EXIT UP THE BREAK-IN 2*9J # PATH. ON ENTRY: X3->DCB BLK 2*9K # 2*9N ZLNOF LONGOFF 2*9P EXIT 3 0 2*9R VABANDON 2*9S LDXC 0 ICURSOR(3) 2*9T BCC (5) [MOP CONSOLE : EXIT 2*9W LDN 0 #200 [TEST "TESTOUT" MARKER 2*9X ANDX 0 IWAIT(3) 2*9Y ERS 0 IWAIT(3) [AND LEAVE UNSET 2*9^ BNZ 0 TOAB [ABANDON TYPE BREAK-IN 2*=2 EXIT 5 0 2*=3 # 2*=4 # IF MOP DISPLAY,UPDATE CURSOR POSITIONING COUNTS FOR NEXT UNUSED 2*=9 # LINE. ON ENTRY: X3->DCB BLK. 2*=G # 2*=R VNEWL LDXC 0 ICURSOR(3) 2*?4 BCC (7) [MOP CONSOLE : EXIT 2*?* LDCT 0 2 2*?L ORS 0 IWAIT(3) 2*?X ERS 0 IWAIT(3) [UNSET "READY" FLAG IF SET 2*#8 DEX 0 ICONTU(3) [CLEAR CT OF LINES O/P SINCE LAST T-R 2*#F LDEX 0 ICURPOS(3) [CURRENT COLUMN NO OF CURSOR 2*#Q BZE 0 (7) [COLUMN 0 : EXIT 2**3 LDCT 0 #10 2**# ADS 0 ICURPOS(3) [UPDATE CURSOR POSITIONING COUNTS FOR 2**K DEX 0 ICURPOS(3) [NEXT LINE 2**W EXIT 7 0 2*B7 # 2*BD # PREPARE AN OUTPUT MESSAGE FOR TRANSMISSION TO A VDU. 2*BP # ON ENTRY:X4=MESS BLOCK TYPE;X5=MESSAGE HEADER(B12-23);X6=RELATIVE 2*C2 # MESS ADDRESS,THE FIRST WORD OF WHICH CONTAINS THE MESS CHAR COUNT 2*C? # 2*CJ # X4=MESSAGE NO OF MESSAGE HELD IN IPBMOPB & X5= MESSAGE HEADER IF 2*CT # CALL IS FOR VEDIT. 2*D6 VEDIT 2*DC NGX 4 4 [CONVERT MESSAGE NO TO -VE FORM 2*DN STO 4 ACOMMUNE9(2) [PUT -VE MESS NO IN START OF MESS ADD 2*D^ VEDITM 2*F= SBX 7 FX1 [RELATIVISE AND 2*FH STO 7 AWORK2(2) [SAVE LINK 2*FS LDX 6 ACOMMUNE8(2) [HOLD COPY OF MESSAGE CHAR COUNT 2*G5 LDX 7 ACOMMUNE9(2) [HOLD COPY OF REL START OF MESS ADDR 2*GB VPREP LDX 4 ICURPOS(3) [HOLD COPY OF CURRENT CURSOR COUNTS 2*GM DOWN IPBMOPB,10 [PREPARE MESSAGE FOR TRANSMISSION 2*GY MHUNTW 3,AMXOR,ADCB 2*H9 TXU 4 ICURPOS(3) 2*HG BCC VUCUR [ORIGINAL CURSOR COUNTS UNCHANGED 2*HR # CURSOR COUNTS CHANGED (BY BREAK-IN) : RE-ASSEMBLE MESSAGE 2*HX STO 6 ACOMMUNE8(2) [RESET MESSAGE CHARACTER COUNT 2*J4 VDISC HUNTW 2,AMXOR,IOUT [DISCARD IOUT BLOCKS 2*J* BNG 2 VPREP 2*JL FREECORE 2 2*JX BRN VDISC 2*K8 VUCUR LDX 0 IWAIT(3) 2*KF SLL 0 1 2*KQ BPZ 0 VUOK [G3 BREAK-IN HASN'T OCCURRED 2*L3 SLL 0 6 [READY MESSAGE WILL BE DISCARDED 2*L# BNG 0 VEX [SO SKIP UPDATE 2*LK VUOK LDX 0 ACOMMUNE6(2) [UPDATE CURSOR POSITIONING COUNTS FOR 2*LW STO 0 ICURPOS(3) [START OF NEXT MESSAGE 2*M7 VEX 2*MD LDX 7 AWORK2(2) [RESET LINK 2*MP ADX 7 FX1 2*N2 EXIT 7 0 2*P2 # 2B8L # INSERT TIME INTO MESSAGE WITH ADDRESS IN X5 & OUTPUT IT TO CONSOLE 2BN= # 2C7W OUTM SBX 7 FX1 2CMG OUTPAR TIMENOW 2D76 MONOUTX 5 [OUTPUT MESSAGE 2DLQ MHUNTW 3,AMXOR,ADCB 2F6B CALL 6 QIN [TEST FOR INOPERABILITY 2FL2 ADX 7 FX1 2G5L EXIT 7 0 2GK= # 2H4W # EXIT IMMEDIATELY (UP) IF RE-ENTERED AFTER TAKING INOPERABLE ACTION 2HJG # 2J46 QIN LDCH 0 JSOURCE1(2) 2JHQ SBN 0 7 [STORED AT TINOP OR STACK 2K3B BZE 0 TOAB [SET BREAK-IN BIT AND GO UP 2KH2 EXIT 6 0 2L2L # 2LG= # RE-FIND AMXOR/IMESSG BLOCK WHEN CORE MOVES DURING ALTLENG 2L^W # 2MFG RIOT MHUNTW 2,AMXOR,IMESSG 2M^6 EXIT 1 0 2NDQ # 2NYB # RING AMXOR/IOUT BLOCK(S) BEHIND IPBOUT , WHICH IS THEN PUT ON LIST 2PD2 # NEEDS ADCB ADDRESS IN X3 ; ADDRESS OF FIRST IOUT IN X1 AT RINGR 2PXL # 2Q=3 RINGO MHUNTW 3,AMXOR,ADCB 2QJD LDN 1 0 2QWW RINGR SBX 6 FX1 [ENTRY WITH AMXOR/IOUT ADDRESS IN X1 2RBG STENT LDX 3 IADIN(3) [ADDRESS OF IPBIN ACTIVITY 2RW6 LDX 3 IPBRING(3) 2S*Q SBN 3 IPBRING [ADDRESS OF IPBOUT ACTIVITY 2STB LDX 2 ACTRING(3) 2T*2 SBN 2 ACTRING [FIND ACTIVITY AFTER IPBOUT 2TSL LDX 4 BPTR(2) [LAST BLOCK AFTER IPBOUT 2W#= BNZ 1 NHUN [X1 ALREADY POINTS TO IOUT BLOCK 2WRW HUNTW 2,AMXOR,IOUT 2X?G OLE LDX 1 2 [LATEST IOUT BLOCK ADDRESS 2XR6 OLF LDX 2 FPTR(2) 2Y=Q LDX 0 ATYPE(2) 2YQB TXL 0 CACT 2^=2 BCC NHUN [REACHED NEXT ACTIVITY : CHAIN LAST 2^PL TXU 0 ATYPE(1) 329= BCS OLF 32NW BRN OLE [LATER IOUT FOUND 338G NHUN CHAIN 1,4 33N6 LDCT 0 #100 347Q ANDX 0 IPBSW(3) [B2 SET IF IPBOUT ASLEEP 34MB BZE 0 WAKE [ALREADY ON LIST 3572 ERS 0 IPBSW(3) 35LL LDX 2 3 366= FPUT [PUT IPBOUT ON LIST 36KW WAKE MHUNTW 3,AMXOR,ADCB 36TS BZE 6 TREV [INPUT ACKNOWLEDGEMENT 376* LDXC 0 ICURSOR(3) 376L BCC NVDRO [J IF NOT VDU 376X [ NOW SET B13 IN ICONTU IF... 3778 [ EXPECT TO BE WOKEN BY IPBOUT 377F SMO 4 377Q LDX 4 FPTR 3783 SMO 4 378# LDX 4 IMOPTY 378K ANDN 4 1 378W SLL 4 10 3797 NGN 0 #2001 379D ANDS 0 ICONTU(3) 379P ORS 4 ICONTU(3) 37=2 NVDRO 37=N LDN 0 #10 37CW ORS 0 IWAIT(3) [SET "QUEUING MESSAGE" FLAG(B20) 37HB ANDX 6 BITS22LS 37K6 CALL 4 WAITO [CHECK OPERABILITIES 384Q NFOUR BRN TFR [IDENT INOP : FREE REST OF OUTPUT 38JB HUNTW 1,AMXOR,IOUT 3942 BNG 1 ROLAS [LAST OUTPUT SENT 39HL ... LDN 1 0 3=3= ... BRN STENT 3?=# ROLAS LDN 0 #10 3?G6 ERS 0 IWAIT(3) [UNSET "QUEUING MESSAGE" FLAG(B20) 3?PY ADX 6 FX1 3?^Q LDX 1 FX1 3#FB EXIT 6 0 3#LJ ...#SKI G502&1$1 3#RQ ...( 3#^2 # 3*DL # MOVE BACK AMXOR/IOUT POINTER TO PREVENT OUTPUTTING TRAILING SPACES 3*Y= # BEFORE NEWLINE ; COUNT OF TRAILING SPACES IN X7 ; CALL ON X5 3BCW # 3BXG SBACK SBX 6 7 [OUTPUT CHARACTER COUNT 3CC6 NGX 0 7 3CWQ ANDN 0 3 3DBB BZE 0 SECT [COUNT IS MULTIPLE OF 4 3DW2 SBN 3 1 3F*L SFOR BCHX 3 £ [BACK 1 WORD & FORWARD NO. OF CHARS 3FT= BCT 0 SFOR 3G#W SECT SRL 7 2 3GSG SBX 3 7 [MOVE AMXOR/IOUT POINTER BACK 3H#6 EXIT 5 0 3HHY ...) 3HRQ # 3J?B # GET AMXOR/IOUT BLOCK FOR OUTPUT ; ON ENTRY X3 POINTS TO AMXOR/ADCB 3JR2 # BLOCK ; PUT MESSAGE CHAR CT.IN X4 ; HEADER IN X5 ; CALL ON X7 3K=L # 3KQ= SETU SBX 7 FX1 3L9W SLL 5 12 [HEADER AND DISCARD MASK 3LPG ADX 5 4 3M96 ADN 4 IDATA-A1*4+3 [TOTAL COUNT OF CHARS 3MNQ SRL 4 2 3N8B ... SETUPCORE 4,2,AMXOR,IOUT 3NN2 MHUNTW 3,AMXOR,ADCB 3P7L STO 5 IPBIDE+1(2) 3PM= SLC 5 5 [B4 SET IF 'READY' OUTPUT 3Q6W ERN 5 1 3QLG ANDN 5 1 3R66 STO 5 IMOPTY(2) [WAKE ACTIVITY AFTER NON-READY OUTPUT 3R7N ... BNZ 5 SECHO 3R9= ... LDX 0 ICURSOR(3) 3R=S ... BNG 0 SECHO 3R#B ... SLL 0 1 3R*Y ... BPZ 0 SECHO 3RCG ... LDX 0 BIT11 3RF4 ...#UNS ANOECHO 3RGL ... ORS 0 IPBIDE+1(2) 3RJ8 ...SECHO 3RKQ STOZ IBSW(2) [BLOCK STATUS WORD 3S5B LDX 0 IDENTNO(3) 3SK2 STO 0 IPBIDE(2) [IDENTIFIER NUMBER 3T4L LDN 5 IDATA(2) [START OF OUTPUT DATA 3TJ= ADX 7 FX1 3W3W EXIT 7 0 3WHG ...#SKI G502&1$1 3X36 ...( 4#NL # 4*8= # CHANGE ETX ON END OF OUTPUT TO CANCEL IN CASE REINPUTTING ON TAPE 4*MW # 4B7G TOCA BCHX 1 £ 4BM6 BCHX 1 £ 4C6Q LDN 4 #10 4CLB BCHX 1 £ 4D62 SBN 1 1 4DKL DCH 4 0(1) 4F5= EXIT 0 0 4F*4 ...) 4FJW # 4G4G # CHECK IPB AND IDENTIFIER OPERABILITY ; IF OPERABLE COOR1 & EXIT+1 4GJ6 # IF INOPERABLE EXIT WITH X5<0 IFF IPB INOP ; CALL ON X4 4H3Q # 4H8X WTINT ORX 4 GSIGN 4H=L BRN TWAIT 4H#* WAITO ANDX 4 BITS22LS 4HB4 TWAIT SMO IADIN(3) 4J32 LDX 5 IPBSW 4JGL BNG 5 STACR [IPB INOPERABLE 4K2= LDX 5 ISTATUS(3) 4KFW SBX 4 FX1 4K^G BPZ 5 WSLE [IDENTIFIER OPERABLE 4LF6 LDX 0 IWAIT(3) 4LTL ... SRC 0 7 4M=6 ... BNG 0 WSLE 4MLL ... SLC 0 1 4N36 ... BNG 0 WEXA 4NCL LONGSET #36,SET,IDENTNO(3) 4NX= LDX 5 WAITINOP(1) [LENGTH OF WAIT 4PBW BZE 5 WEX 4PDD LDN 0 #1000 [NOTE INOPTIME WAIT IS NOT 4PG2 SMO A1+FPTR(3) [APPLICABLE TO AUTO-ANSWER LINES 4PHJ ANDX 0 FOURTHWD 4PK6 BNZ 0 WEX [AUTO-ANSWER LINE (B14) : SKIP WAIT 4PLN WAITINOPTIM 4PWG LONGTARRY WEX,WCK,5 [INOPTIME WAIT (BROADCASTS IGNORED) 4Q6# [IF BREAK-IN(EG AB,MP OFF),ABORT WAIT 4QB6 [IF STILL INOP AFTER WAIT,J TO WCK 4QKY BRN WOPAG [RE-OPERABLE : EXIT +1 4QTQ WCK LDX 5 CLONG3(2) [CHECK FOR END OF WAIT PERIOD 4R5J SBN 5 2 [NOTE END OF WAIT LEAVES 1 IN CLONG3 4R*B BNG 5 WEX [END OF WAIT PERIOD 4RK8 BDX 5 WAITINOPTIM [SPURIOUS RESTART : RESUME WAIT 4RT2 ...WEX 4S4S LONGOFF [CLONG1 STILL SET AFTER WAIT EXPIRES 4S7C ...WEXA 4S=2 ... SBN 4 1 4S#L BRN WIT 4S*4 WSLE 4SD5 LDX 2 FX2 [MOP DISPLAY 4SF= CALL 5 VABANDON [TEST FOR "TESTOUT" MARKER 4SF* BNG 4 SLWT [J IF TIMED OUT CONSOLE 4SFB 4SFC LDXC 0 ICURSOR(3) 4SFD BCC SLEEP 4SFF LDN 0 #2000 4SFG ANDX 0 ICONTU(3) 4SFH [ J IF BEING WOKEN BY IPBOUT 4SFJ BNZ 0 SLEEP 4SFK SMO FX1 4SFL LDX 0 VWAIT 4SFM ANDX 0 IWAIT(3) 4SFN BZE 0 SLEEP [J IF NOT READY OR OUTPUT SUSP. 4SFP ANDN 0 1 4SFQ BZE 0 TSEE 4SFR ORX 4 GSIGN 4SFS BRN SETA 4SFT TSEE 4SFW LDN 0 2 4SFX ANDX 0 CONTEXT(2) 4SFY BZE 0 SLVW [J IF USER CONTEXT 4SF^ LDCT 0 #20 4SG2 ANDX 0 IWAIT(3) 4SG3 BZE 0 SLWT [NOT JOB NOR INPUT 4SG4 SLVW ORX 4 GSIGN [MARK SO WE WAIT FOR MOPWAITTIME 4STB SLWT 4STM LONGSET IVDUWAIT,SETA 4ST^ LDN 0 #2000 4SX6 ORS 0 IWAIT(3) [ALSO TO BE WOKEN ON INOPERABILITY 4SX# BPZ 4 TOLTA [J IF NOT WAITING FOR MOPWAITTIME 4SXB 4SXD LDX 0 ZMIN(1) 4SXG MPY 0 IPMOPWAIT 4SXJ LDXC 0 ICURSOR(3) 4SXL [ J IF VDU 4SXN BCS TOLTY 4SXQ LDCT 5 #400 4SXS BRN TIPMC 4SXW TOLTA LDN 1 0 4SXY TOLTY SMO FX1 4SY2 ADX 1 VDUWAIT 4SY3 LDCT 0 #200 4SY4 ANDX 0 ICURSOR(3) 4SY5 BZE 0 TOTAR [J IF NOT SCEDITING 4SY6 SMO FX1 4SY7 ADX 1 SDADD [INCREASE WAIT TIME 4SY8 TOTAR LONGTARRY TOBRK,VTUP,1 4SY9 BRN WOPAG 4SY= TOBRK CALL 3 ZLNOF 4T2J BRN WOPAG 4T2T [ SEE IF TIME UP 4T2Y VTUP LDX 1 CLONG3(2) 4T33 SBN 1 2 4T36 BNG 1 YSUP 4T39 BDX 1 TOTAR 4T3# [ TIME UP 4T3C YSUP LDX 1 FX1 4T3G CALL 3 ZLNOF 4T3K YUPZ 4T64 MHUNTW 3,AMXOR,ADCB ["TIME UP" : CLOSE DOWN DISPLAY 4T79 CALL 7 VNEWL 4T7R BPZ 4 TIMV 4T7^ LDN 7 0 4T8B BRN TIMUP 4T9H # 4T=N SLEEP LDCT 0 #400 [INDICATE ASLEEP 4T?W ADN 0 #2000 [BE WOKEN ON INOPERABILITY 4TRG ORS 0 IWAIT(3) 4W?6 COOR1 4WQQ WOPAG MHUNTW 3,AMXOR,ADCB 4X2J CALL 5 VABANDON [IF VDU,TEST FOR "TESTOUT" MARKER 4X=B LDCT 0 #100 4XQ2 SMO A1+FPTR(3) 4Y9L ANDX 0 FOURTHWD 4YP= BNZ 0 TOAB [MOPPING OFF 4^8W WIT ADXC 4 FX1 4^NG EXIT 4 1 58H= # 592W # 59GG # ENTRY POINT FROM MONOUT , WITH OUTPUT IN A GMON/AOUT BLOCK AND 5=26 # NUMBER OF CHARACTERS IN THE OUTPUT IN ACOMMUNE7 OF THIS ACTIVITY 5=FQ # 5=^B SK1IPBMOP 5?F2 READYOFF [ZEROISE BI MARKER FOR 'READY' 5?YL LDCT 0 #10 5#D= ORS 0 CLONG1(2) [SET IF DOING A BROADCAST 5#XW ERS 0 CLONG1(2) 5*CG CALL 6 QIN [TEST FOR INOPERABILITY 5*X6 LDX 5 ACOMMUNE7(2) 5B4Y MHUNTW 3,AMXOR,ADCB 5B6W LDX 0 ICURSOR(3) 5B8S SLL 0 1 [IF IN SCREEN EDITING MODE, 5B=Q BNG 0 NOBB [IGNORE BROADCAST MESSAGES 5B#4 ...#SKI G502&1 5B*B ... JBS NOBB,2,G502NOBC [ IGNORING BROADCASTS 5BBQ HUNTW 3,AMXOR,BBC [LOOK FOR BROADCAST MESSAGE 5BWB BNG 3 NOBB 5CB2 STO 5 AWORK3(2) [PRESERVE COUNT OF ORDINARY OUTPUT 5CTL LDX 5 A1(3) [COUNT OF BROADCAST OUTPUT 5D*= BRN OBROD 5DSW NOBB HUNTW 3,GMON,AOUT 5F#G BNG 3 PUP [NO ORDINARY OUTPUT STILL WAITING 5FS6 BNG 5 PUP [BROADCAST ONLY : IGNORE GMON/AOUT 5G?Q STOZ AWORK3(2) 5GRB OBROD LDX 0 ATYPE(3) [FOR MHUNTX LATER 5H?2 LDCT 4 #212 [B1 SET IF READY MESSAGE 5HQL LDX 7 A1+1(3) [B19 SET IF COMERR MESSAGE 5J== STO 0 AWORK1(2) 5JPW ANDX 4 A1+1(3) [B5 SET IF BROKEN IN MESSAGE 5K9G ANDN 7 #20 5KP6 MHUNTW 3,AMXOR,ADCB 5L8Q LDCT 0 2 5LNB SLL 4 1 [B7 SET IF 'FORCED TYPING' 5M82 ORS 0 IWAIT(3) [INDICATE 'READY' 5MML BNG 4 REDYM [READY MESSAGE : LEAVE B8 SET 5N7= ORS 7 IWAIT(3) [INHIBIT TAPE INPUT AFTER NEXT READY 5NLW ERS 0 IWAIT(3) 5P6G REDYM STO 5 ACOMMUNE8(2) [COUNT FOR THIS OUTPUT 5PL6 TWAR SMO IADIN(3) 5Q5Q LDX 5 IPBSW 5QKB BNG 5 STACR 5QXR LDX 0 ISTATUS(3) 5R=8 SLC 0 6 5RJK BNG 0 TINOP [TAKE DEVICE INOPERABILITY ACTION 5RX2 [IMMEDIATELY (B6) 5S9C SRC 0 5 5SHW BPZ 0 NOWAR [WARNING NOT SET 5SMR SRC 0 1 5SRN BNG 0 NOWAR [DEVICE INOP : SKIP WARNING WAIT AND 5SXK [LET WAITO TAKE INOP ACTION 5T3G LDCT 0 #100 5TH6 SMO A1+FPTR(3) 5W2Q ANDX 0 FOURTHWD 5WGB BNZ 0 NOWAR [MOPPING OFF : OUTPUT MOPOFF MESSAGE 5X22 LDCT 0 #400 5XFL ADN 0 #2000 5X^= ORS 0 IWAIT(3) [INDICATE ASLEEP AND WAITING FOR 5YDW COOR1 [CONTINUE. 5YYG MHUNTW 3,AMXOR,ADCB 5^D6 BRN TWAR 5^XQ # 62CB NOWAR BPZ 4 NOTRD [NOT A READY MESSAGE 62X2 LDCT 0 #10 63BL ANDX 0 IWAIT(3) 63W= BNZ 0 TEBIL [G3 BI MARKER : TEST BI LEVEL 64*W LDX 7 IREADY(3) 64TG LDN 6 IREADY+1 65*6 LDN 0 #20 65SQ LDN 5 #4214 [HEADER FOR 'READY' 66#B ANDX 0 IWAIT(3) [B19 SET IF DC1 NOT REQUIRED 66S2 BZE 0 STORP 67?L SBN 7 2 67B9 ...#SKI G502&1 67DS ...( 67HC ... BPZ 7 STOR 67L2 ... ADN 7 2 [ DONT DELETE DC1 IF IT CANT BE THERE! 67NK ...) 67R= BRN STOR 68=W # 68QG NOTRD LDN 5 #4004 [HEADER FOR NORMAL OUTPUT 69=6 BZE 4 NBRON [NOT 'BROKEN IN' MESSAGE 69PQ LDN 5 #4000 [HEADER FOR BROKEN IN OR BROADCAST 6=9B SLL 4 4 6=P2 BPZ 4 NB [BROADCAST MESSAGE 6?8L LDN 7 #20 6?N= ORS 7 IWAIT(3) [SET B19 TO INHIBIT DC1 AFTER READY 6#7W LDCT 7 #10 6#MG ORS 7 IWAIT(3) [BROKEN IN MESS : UNSET G3 BI BIT 6*76 ERS 7 IWAIT(3) 6*BY NB LDXC 0 ICURSOR(3) 6*LQ BCS NBRON [MOP DISPLAY : B12 UNUSED 6*WJ ORS 5 IWAIT(3) [SET "NL REQUIRED BEFORE MESSAGE" BIT 6B6B NBRON LDX 7 INOCHS(3) [NO. OF CHARS IN TERMINATOR 6B?J ...#SKI G502&1 6BDQ ... JBS NLSC,2,G502NOLF 6BL2 LDX 0 IWAIT(3) 6C5L LDN 6 0 6CK= ANDX 0 BIT10 6D4W BZE 0 NONLS [NOT NEW-LINE SUPPRESSION 6D=4 LDXC 6 ICURSOR(3) 6DC= BCS NLSC [MOP DISPLAY : DON' UNSET B10 YET 6DJG ERS 0 IWAIT(3) [UNSET B10 6F46 NLSC LDCH 6 ICHARS(3) 6FHQ SBX 7 6 [NO. OF CHARS WITH NL SUPPRESSED 6G3B SRC 6 2 6GH2 NONLS ADN 6 INLBUFF 6H2L LDCT 0 #100 6HG= ANDX 0 IWAIT(3) [B2 SET IF 'TIMGD OUT' MESSAGE 6H^W BZE 0 STORP 6JFG LDN 5 #4014 [HEADER FOR TIMED OUT MESSAGE 6J^6 STOR ERS 0 IWAIT(3) 6KDQ STORP STO 6 AWORK2(2) [ADDRESS OF TERMINATOR 6KYB # 6LD2 # CONVERT MESSAGE IN GMON/AOUT BLOCK INTO LINE CODE IN AMXOR/IOUT 6LXL # BLOCK , PRECEDED BY IDENTIFIER AND HEADER ; CONSOLE WIDTH AND 6MC= # TERMINATORS HELD IN AMXOR/ADCB BLOCK . 6MWW # 6NBG LDN 0 A1+2 [INITIALISE THE PICK-UP 6NW6 STO 0 ACOMMUNE9(2) [POINTER IN GMON/AOUT OR AMXOR/BBC 6P3# LDXC 0 ICURSOR(3) 6P8G BCS VDUMESS [MOP DISPLAY 6P?6 STOZ AWORK4(2) [SET B15-23=0 : START OF LINE 6P*Q DCH 7 AWORK4(2) [LENGTH OF TERMINATOR 6PTB LDX 4 IMDNPU(3) 6Q*2 ANDN 4 #7777 [NPU SIZE IN WORDS 6QSL SLL 4 2 6R#= STO 4 ACOMMUNE7(2) [NPU SIZE : FOR USE BY TXU'S 6R## ...#SKI G502&1 6R#B ...( 6R#D ...NEXB LDN 6 0 [ FIRST TIME MARKER 6R#G ... BRN SHBEG [ TO SET UP BLOCK ETC 6R#J ...RECST LDX 6 4 6R#L ... LDEX 2 IDELE(3) 6R#N ... BZE 2 NFIR 6R#Q ... LDN 4 IDELE+1(3) 6R#S ... MVCH 4 0(2) [ INITIAL CHUG-CHUG WAKE-UP 6R#W ... SBX 6 2 6R#Y ...NFIR LDN 0 #4000 6R*2 ... ANDX 0 IWAIT(3) 6R*4 ... BZE 0 NONL 6R*6 ... ERS 0 IWAIT(3) 6R*8 ... LDCH 2 ICHARS(3) 6R*= ... LDN 4 INLBUFF(3) 6R*# ... MVCH 4 0(2) 6R*B ... SBX 6 2 6R*D ...NONL LDEX 7 ICHARS(3) 6R*G ... ADN 7 1 6R*J ... JBC ORDRX,1,G502NOLF [ IF RX WIDTH N/L'S TO BE SUPPRESSED, 6R*L ... LDX 7 BITS22LS [ IMPLEMENT BY GIVING VERY BIG WIDTH 6R*N ...ORDRX LDX 3 5 6R*Q ... LDN 4 0 [ DEFAULT TYPE = GRAPHIC 6R*S ... STOZ PREVSH 6R*W ... LDCH 0 AWORK1(1) 6R*Y ... SBN 0 GMON/64 6RB2 ... BNZ 0 NSREC [ BROADCAST - KEEP GRAPHIC 6RB4 ... JBC NSREC,1,G502SHIFT 6RB6 ... LDN 4 #74 [ SHIFT, STARTING IN ALPHA 6RB8 ... STO 4 PREVSH 6RB= ... JBC NSREC,1,G502BETA 6RB# ... LDN 4 #75 [ SHIFT, STARTING IN BETA 6RBB ...NSREC LDX 2 ACOMMUNE4(1) 6RBD ... ADN 2 A1+2 6RBG ... STO 3 NONSP 6RBJ ...# 6RBL ...# SUPER NEW CODE FOR MAIN LOOP OF IPBMOP - 6RBN ...# HANDLES SHIFT CHARACTER CONVERSION, RESET WIDTH AND NPU FILLING. 6RBQ ...# WRITTEN BY R.L.HUTCHINGS, U.I.J.P.C., JULY 1978 6RBS ...# 6RBW ...# ALL AWORK WORDS, ACOMMUNES, AND ACCUMULATORS ARE HEAVILY USED, 6RBY ...# SO WE USE GEN0-GEN6 AS BELOW: 6RC2 ...#DEF SEV4 = GEN0 [ CONSTANT #74 6RC4 ...#DEF SEV6 = GEN1 [ CONSTANT #76 6RC6 ...#DEF TWENTY = GEN2 [ CONSTANT #20 6RC8 ...#DEF PREVSH = GEN3 [ LATEST ALPHA/BETA SENT TO OUTPUT 6RC= ...# GEN4 USED AS TEMPORARY DUMP FOR X4 6RC# ...#DEF NONSP = GEN5 [ POSITION OF LAST NON-SPACE IN OUTPUT 6RCB ...#DEF RECEND = GEN6 [ ABSOLUTE CHAR ADDRESS OF END OF INPUT RECORD 6RCD ...# 6RCG ...# NORMAL CONTENTS OF ACCUMULATORS : 6RCJ ...# X0 = CURRENT CHAR (B0 SET IF IN DELTA SHIFT) 6RCL ...# X1 = FX2 6RCN ...# X2 = ABSOLUTE POSITION IN INPUT 6RCQ ...# X3 = ABSOLUTE POSITION IN OUTPUT 6RCS ...# X4 = B0 SET IF DELTA SHIFT, B18-23 = CURRENT INPUT ALPHA OR BETA 6RCW ...# X5 = 0 OR SHIFT TO BE OUTPUT BEFORE NEXT CHAR 6RCY ...# X6 = NO. OF CHARS LEFT IN N.P.U., ALLOWING FOR NL/ETX 6RD2 ...# X7 = NO. OF CHARS LEFT IN RESET WIDTH 6RD4 ...# 6RD6 ...SHCPY TXU 2 RECEND 6RD8 ... BCC REND 6RD= ... LDCH 0 0(2) [ NEXT CHAR IN RECORD 6RD# ... TXL 0 SEV4 6RDB ... BCS ORDCH [ < #74 - ORDINARY 6RDD ... BZE 4 NSHIF [ GRAPHIC OUTPUT 6RDG ... TXU 0 SEV6 6RDJ ... BCS SETAB 6RDL ... ORX 4 GSIGN [ DELTA IN SHIFT FILE - JUST REMEMBER 6RDN ... BCHX 2 SHCPY 6RDQ ...SETAB DEX 0 4 [ REMEMBER ALPHA OR BETA 6RDS ... BCHX 2 SHCPY 6RDW ...NSHIF SBN 0 #10 [ CONVERT GRAPHIC CHAR 6RDY ... LDX 4 GSIGN [ SET DELTA FLAG 6RF2 ...ORDCH BCT 7 NRXWF [ COUNT VISIBLE CHARS FOR RESET WIDTH 6RF4 ... STO 2 ACOMMUNE2(1) [ END OF 'RESET WIDTH' WIDTH 6RF6 ... LDX 2 3 6RF8 ... SLC 2 2 6RF= ... LDX 3 NONSP 6RF# ... SLC 3 2 6RFB ... SBX 2 3 [ NO. OF CHARS SINCE LAST NON-SP 6RFD ... ADX 6 2 [ - ADD TO NPU SPACE LEFT 6RFG ... SRC 3 2 6RFJ ... LDX 2 ACOMMUNE6(1) [ AMXOR/ADCB 6RFL ... LDEX 7 ICHARS(2) [ RX WIDTH VALUE 6RFN ... LDCH 5 ICHARS(2) 6RFQ ... LDN 2 INLBUFF(2) [ NEWLINE SEQUENCE 6RFS ... SBX 6 5 6RFW ... SMO 5 6RFY ... MVCH 2 0 6RG2 ... LDX 2 ACOMMUNE2(1) 6RG4 ... STO 3 ACOMMUNE3(1) [ IN CASE WE HIT END OF NPU 6RG6 ... STO 4 GEN4 6RG8 ...NRXWF TXU 4 PREVSH [ SEE IF SHIFT CHAR HAS TO BE 6RG= ... SBN 6 0 [ INSERTED IN NPU 6RG# ... BPZ 6 NPUNF [ J IF NPU NOT FULL 6RGB ... LDX 6 2 6RGD ... LDX 2 ACOMMUNE6(1) [ AMXOR/ADCB 6RGG ... LDX 0 ACOMMUNE2(1) 6RGJ ... BZE 0 NPART 6RGL ... LDX 6 0 [ GET RID OF PART LINE 6RGN ... LDX 3 ACOMMUNE3(1) 6RGQ ... LDX 4 GEN4 6RGS ... LDEX 7 ICHARS(2) 6RGW ...NPART LDX 5 INOCHS(2) 6RGY ... LDCH 0 ICHARS(2) 6RH2 ... ADN 2 INLBUFF 6RH4 ... SBX 5 0 6RH6 ... BZE 5 RU1 [ J IF ESC SEQUENCE NULL 6RH8 ... SRC 0 2 6RH= ... ADX 2 0 6RH# ... SMO 5 [ ADD ETX TO MESSAGE 6RHB ... MVCH 2 0 6RHD ...RU1 LDN 5 1 [ MUST BE LEFT NON-ZERO 6RHG ... SBX 6 ACOMMUNE4(1) [ RELATIVISE INPUT POINTER 6RHJ ...SHBLK LDX 1 ACOMMUNE1(1) [ ADDRESS OF IOUT BLOCK 6RHL ... SBN 3 IDATA(1) 6RHN ... SLC 3 2 6RHQ ... DSA 3 IPBIDE+1(1) 6RHS ... ADN 3 IDATA-A1*4+3 6RHW ... SRL 3 2 6RHY ... TXU 3 ALOGLEN(1) 6RJ2 ... BCC XALTL 6RJ4 ... ALTLEN 1,3 [ SHORTEN IOUT IF NECESSARY 6RJ6 ...XALTL LDX 2 FX2 6RJ8 ... BZE 5 NOMOR [ IF END OF DATA RECORD 6RJ= ... STO 4 ACOMMUNE3(2) 6RJ# ... LDN 5 #4004 [ MESS ABOUT READY FOR CALL SETU 6RJB ... LDX 4 ACOMMUNE7(2) [ NPU SIZE IN CHARS 6RJD ... STO 7 ACOMMUNE1(2) [ BORROWED TEMPORARILY 6RJG ...SHBEG CALL 7 SETU [ GET ADDITIONAL BLOCK FOR OVERFLOW 6RJJ ... LDN 0 SHIFT(1) [ X1 = FX1 FLEETINGLY 6RJL ... LDN 1 GEN0 6RJN ... MOVE 0 3 [ REINSTATE CONSTANTS 6RJQ ... LDX 1 FX2 [ AND GET BACK TO NORMAL 6RJS ... LDX 7 ACOMMUNE1(1) 6RJW ... STOZ ACOMMUNE2(1) [ NO NEWLINE IN NPU 6RJY ... STO 2 ACOMMUNE1(1) [ RESTORE IOUT POINTER 6RK2 ... STO 3 ACOMMUNE6(1) 6RK4 ... LDX 4 ACOMMUNE7(1) [ CALCULATE MAX. NO. OF OUTPUT CHARS, 6RK6 ... SBX 4 INOCHS(3) [ ALLOWING FOR NEWLINE ETC. AT END 6RK8 ... SBN 4 1 6RK= ... MHUNTX 2,AWORK1(1) 6RK# ... LDX 0 ACOMMUNE8(1) 6RKB ... SRC 0 2 6RKD ... ADN 0 A1+2(2) 6RKG ... STO 0 RECEND 6RKJ ... STO 2 ACOMMUNE4(1) 6RKL ... BZE 6 RECST [ FIRST TIME 6RKN ... ADX 2 6 [ INPUT POSITION RESTORED 6RKQ ... LDX 3 5 6RKS ... STO 3 NONSP 6RKW ... LDX 6 4 [ NO. OF FREE CHARS IN NPU 6RKY ... LDCH 0 0(2) 6RL2 ... LDX 4 ACOMMUNE3(1) 6RL4 ... LDN 5 #74 [ NOW RECOVER SHIFT SITUATION 6RL6 ... ANDX 5 4 [ #74 SHIFT, 0 GRAPHIC 6RL8 ... STO 5 PREVSH 6RL= ... TXU 4 GSIGN 6RL# ... BCS NPUNF 6RLB ... SBN 0 #10 [ MUST BE GRAPHIC CONVERTED TO DELTA 6RLD ...NPUNF TXU 4 PREVSH 6RLG ... BCC NOTSH [ NO SHIFT CHAR TO INSERT 6RLJ ... BPZ 4 NDELT 6RLL ... LDN 5 #76 [ DELTA 6RLN ... ORX 0 GSIGN [ NULLIFY SPACE CHECK 6RLQ ... ANDN 4 #77 [ CLEAR DELTA INDICATOR 6RLS ... BRN SHINS 6RLW ...NDELT LDX 5 4 [ CHANGE ALPHA OR BETA SETTING 6RLY ... STO 4 PREVSH 6RM2 ...SHINS DCH 5 0(3) [ INSERT SHIFT CHAR 6RM4 ... BCHX 3 £ 6RM6 ...NOTSH DCH 0 0(3) 6RM8 ... SBN 6 1 6RM= ... BCHX 3 £ 6RM# ... TXU 0 TWENTY [ TEST IF ORDINARY SPACE 6RMB ... BCC SPAC 6RMD ... STO 3 NONSP [ REMEMBER RIGHTMOST NON-SPACE 6RMG ...SPAC BCHX 2 SHCPY 6RMJ ...# 6RMK ...REND 6RML ... LDX 3 NONSP 6RMN ... LDX 2 AWORK2(1) 6RMQ ... ADX 2 ACOMMUNE6(1) 6RMS ... LDCH 5 AWORK4(1) 6RMW ... BZE 5 SHBLK 6RMY ... SMO 5 6RN2 ... MVCH 2 -1 6RN4 ... LDCH 4 0(2) 6RN6 ... LDCH 0 AWORK1(1) 6RN8 ... SBN 0 AMXOR/64 6RN= ... BNZ 0 NONBC 6RN# ... LDN 0 #13 6RNB ... TXU 4 0 6RND ... BCS NONBC [ 'ESCAPE', 6RNG ... LDN 4 #10 [ REPLACE BY 'CANCEL' 6RNJ ...NONBC DCH 4 0(3) 6RNL ... LDN 5 0 [ END-OF-RECORD MARKER 6RNN ... BCHX 3 SHBLK [ COMMON CODE TO COMPLETE IOUT BLOCK 6RNQ ...) 6RNS ...#SKI G502&1$1 6RNW ...( 6RRW NEXB CALL 7 SETU [SET UP AMXOR/IOUT BLOCK 6S?G LDX 1 FX2 6SR6 STO 2 ACOMMUNE1(1) [PRESERVE ADDRESS OF AMXOR/IOUT BLOCK 6T=Q STOZ ACOMMUNE3(1) [NEWLINE-IN-NPU INDICATOR 6TQB STO 3 ACOMMUNE6(1) [AMXOR/ADCB ADDRESS 6W=2 LDCH 6 AWORK4(1) [LENGTH OF TERMINATOR 6WPL TXL 6 INOCHS(3) [LENGTH OF NL+ETX+1 6X9= BCC NLBIG [X6 MUST START WITH GREATER OF COUNTS 6XNW LDX 6 INOCHS(3) 6Y8G NLBIG MHUNTX 2,AWORK1(1) [GMON/AOUT OR AMXOR/BBC 6YN6 STO 6 ACOMMUNE5(1) [REMEMBER INITIAL VALUE OF X6 6^7Q STO 2 ACOMMUNE4(1) 6^MB LDN 0 #4000 7272 ANDX 0 IWAIT(3) [SEND NL BEFORE BROKEN IN , TIMED OUT 72LL LDN 4 A1+2 736= ERS 0 IWAIT(3) [CLOSED DOWN OR RESTARTED MESSAGE 73KW TXU 4 ACOMMUNE9(1) 745G BCS NFIR [NOT FIRST PASS : IOUT > ONE NPU 74K6 LDN 4 IDELE+1(3) 754Q ... LDEX 3 IDELE(3) 75JB BZE 3 NFIR [NOT USING AUTOMOP 7642 MVCH 4 0(3) [DC3 + DELETES TO STOP TAPE READER... 76HL ADX 6 3 [IF PUNCHING TAPE FOR RE-INPUT 773= NFIR ADX 2 ACOMMUNE9(1) 77GW LDX 3 5 [START ADDRESS IN AMXOR/IOUT 782G LDX 4 ACOMMUNE8(1) 78G6 BNZ 0 ROKEN [IN CASE PREV. OUTPUT HAD NL SUPPRESS 78^Q BZE 4 TOSP [EMPTY MESSAGE : OUTPUT TERMINATOR 799J RESUM LDEX 5 AWORK4(1) [CURRENT POSITION ON LINE 79FB BNZ 5 SREM [NOT START OF LINE 79P8 SMO ACOMMUNE6(1) [RESET :- 79^2 LDEX 5 ICHARS [CONSOLE CARRIAGE WIDTH 7=8S SREM 7=DL SBX 4 5 [X4 CONTAINS NO OF CHARS TO CONVERT 7=Y= STO 4 ACOMMUNE8(1) [REMAINDER COUNT 7?CW BPZ 4 REM [WILL NEED A NEWLINE 7?XG ADX 5 4 7#C6 STOZ ACOMMUNE8(1) [INDICATE NO REMAINDER 7#WQ REM LDN 4 #76 7*BB DEX 5 AWORK4(1) [IN CASE OVERRUN NPU & RETURN TO NEXB 7*W2 LDN 7 0 7B*L LDX 1 FX1 7BT= # 7C#W NLOOP LDCH 0 0(2) 7CSG TXU 0 SPACE(1) 7D#6 BCS NOSP [NOT A SPACE 7DRQ ADN 7 1 [UPDATE COUNT OF TRAILING SPACES 7F?B BRN NOSH 7FR2 NOSP LDN 7 0 [NO TRAILING SPACES 7G=L TXL 0 SHIFT(1) [TEST IF < #74 7GQ= BCS NOSH 7H9W ADN 6 1 [NO : CONVERT #74 TO #7664 7HPG SMO FX2 7J96 TXU 6 ACOMMUNE7 [CONTAINS NPU SIZE IN CHARS 7JNQ BCC TEND [ONLY ROOM FOR ONE MORE CHARACTER 7K8B DCH 4 0(3) 7KN2 BCHX 3 £ 7L7L SBN 0 #10 7LM= NOSH DCH 0 0(3) 7M6W ADN 6 1 [INCREASE CT OF CONVERTED CHARS 7MLG BCHX 2 £ 7N66 BCHX 3 £ 7NKQ SBN 5 1 [DECREASE CT OF SPACE ON THIS LINE 7NTJ BZE 5 NLINE [END OF LINE 7P5B SMO FX2 7PK2 TXU 6 ACOMMUNE7 7Q4L BCC TEN [END OF TRANSFER : NPU LIMIT REACHED 7QD* BRN NLOOP [STILL ROOM ON THIS LINE 7QS4 # 7R7R NLINE 7RHG LDX 1 FX2 [END OF LINE 7RR# DEX 5 AWORK4(1) [SET B15-23=0 : END OF LINE 7S36 LDX 4 ACOMMUNE8(1) 7SGQ BZE 4 TREND [REMAINDER ZERO : END OF TRANSFER 7T2B BZE 7 ROKEN [NO TRAILING SPACES 7TG2 CALL 5 SBACK [MOVE BACK AMXOR/IOUT POINTER 7T^L ROKEN STO 2 ACOMMUNE9(1) [PRESERVE IOUT POINTER 7WF= LDX 2 ACOMMUNE6(1) [AMXOR/ADCB ADDRESS 7WYW LDCH 5 ICHARS(2) [LENGTH OF NEWLINE 7XDG ADX 6 5 7XY6 LDN 2 INLBUFF(2) 7YCQ SMO 5 [INSERT NEWLINE CHARS 7YXB MVCH 2 0 7^C2 LDN 5 0 [IN CASE JUMP TO NOWE 7^WL TXL 6 ACOMMUNE7(1) [CONTAINS NPU SIZE IN CHARS 82B= BCC NOWE [END OF NPU HERE : ADD ETX 82TW STO 3 ACOMMUNE3(1) [IN CASE END OF NPU OCCURS 83*G STO 6 ACOMMUNE2(1) [DURING NEXT LINE 83T6 LDX 2 ACOMMUNE9(1) [RESET GMON/AOUT POINTER 84#Q BRN RESUM [X4 MUST CONTAIN REMAINDER CT HERE 84SB # 85#2 # END OF NPU : ADD TERMINATOR IF ALSO END OF MESSAGE ; IF NOT , ADD 85RL # ETX TO OUTPUT , HAVING STEPPED BACK TO PREVIOUS NEWLINE IF ANY 86?= # 86QW TEND SBN 6 1 [CORRECT CHAR CT. 87=G TEN LDX 1 FX2 87Q6 LDX 4 ACOMMUNE8(1) 889Q BNZ 5 NOTEL [NOT END OF LINE 88PB BZE 4 TREND [ALSO END OF MESSAGE 8992 RESH STO 2 ACOMMUNE9(1) [RESTART POINT FOR NEXT NPU 89NL NOWE DEX 5 AWORK4(1) [ADD BACK TO REM CT. LATER 8=8= BRN TXADD 8=MW NOTEL LDX 0 ACOMMUNE3(1) 8?7G LDN 4 1 [INDICATE NOT END OF MESSAGE 8?M6 BZE 0 RESH [NO NEWLINE BEFORE IN THIS NPU 8#6Q LDX 3 0 8#LB LDX 6 ACOMMUNE2(1) [RETURN TO PREVIOUS NEWLINE 8*62 TXADD LDX 2 ACOMMUNE6(1) [ADDRESS OF ADCB 8*KL LDX 5 INOCHS(2) [LENGTH OF NL+ETX+1 8B5= LDCH 0 ICHARS(2) [LENGTH OF NL 8BJW ADN 2 INLBUFF 8C4G SBX 5 0 [ADD ETX ONLY 8CJ6 SRC 0 2 8D3Q ADX 2 0 8DHB BRN TOVE 8F32 # 8F*C ...TREND 8FMS ... BZE 7 TOSP 8G2= CALL 5 SBACK [MOVE BACK X3 8GFW TOSP LDX 2 AWORK2(1) [ENTRY IF EMPTY MESSAGE 8G^G ADX 2 ACOMMUNE6(1) [ADD ADCB ADDRESS 8HF6 LDCH 5 AWORK4(1) 8HYQ TOVE SMO 5 [APPEND TERMINATOR. 8JDB MVCH 2 0 8JY2 LDX 2 ACOMMUNE4(1) 8PS= SBS 2 ACOMMUNE9(1) 8Q?W LDX 7 5 [PRESERVE TERMINATOR LENGTH 8QRG SBX 6 ACOMMUNE5(1) [X6 INCLUDED MAX. TERMINATOR LENGTH , 8R?6 LDX 1 ACOMMUNE1(1) [START ADDRESS OF AMXOR/IOUT 8RQQ ADX 6 5 [NOT THE ACTUAL LENGTH ; GET CORRECT 8S=B DSA 6 IPBIDE+1(1) [COUNT OF CHARS 8SQ2 ADN 6 IDATA-A1*4+3 8T9L SRL 6 2 [LENGTH OF OUTPUT BLOCK 8TP= TXU 6 ALOGLEN(1) 8W8W BCC REFX [CORRECT LENGTH ALREADY 8WNG ALTLEN 1,6 8X86 BRN NOMOV 8XMQ REFX LDX 1 FX1 8Y7B LDX 2 FX2 8YM2 NOMOV BZE 4 NOMOR [REMAINDER CT. 0 : MESSAGE FINISHED 8^6L LDN 5 #4004 [HEADER AND DISCARD MASK 8^L= LDEX 0 AWORK4(2) [ADD BACK INTO REMAINDER COUNT , 925W LDX 4 ACOMMUNE7(2) [NPU SIZE IN CHARACTERS 92KG ADS 0 ACOMMUNE8(2) [CHARS REMOVED AT RESUM 9356 BRN NEXB 935X ...) 936N # 938= # CONVERT MESSAGE FOR MOP DISPLAY 939S VDUMESS 93=K MHUNTW 3,AMXOR,ADCB 93?B STOZ ACOMMUNE7(2) [INITIALISE PART MESSAGE INDICATOR 93#Y LDCT 0 2 93BG ANDX 0 IWAIT(3) 93D4 BNZ 0 VCONV [READY MESSAGE:PRESERVE HEADER IN X5 93DM ... LDN 5 #4000 93F= ...VCONV 93FT ... ANDN 5 #1777 93GD ... ORN 5 #2000 93H3 ... CALL 7 VEDITM 93HM VDAK HUNTW 2,AMXOR,IDATSG [DISCARD ANY ACTION KEY MESSAGES 93HS BNG 2 VDAKX [RECEIVED 93H^ FREECORE 2 93J6 BRN VDAK 93J? VDAKX LDX 2 FX2 93JQ # 944B # CONVERSION COMPLETE ; IF BROADCAST MESSAGE CONVERT ETX INTO CANCEL 94J2 # FOR POSSIBLE REINPUT & SEND MESSAGE TO MONITORING FILE 953L # 95H= NOMOR LDCH 0 AWORK1(2) 962W SBN 0 AMXOR/64 96GG BNZ 0 NOTBB [HAVE JUST CONVERTED GMON/AOUT 96J9 ...#SKI G502&1$1 96KY ...( 96MN LDXC 0 ICURSOR(3) 96SW BCS OBBC [MOP DISPLAY : SKIP EOM CONVERSION 9726 LDX 1 3 [DCH POINTER , NOT CHANGED SINCE TOVE 97FQ CALL 0 TOCA [CONVERT ETX INTO CANCEL 97PJ OBBC 97TF ...) 97^B MHUNTW 1,AMXOR,BBC 98F2 LDN 4 #2000 [SET BROADCAST CATEGORY BIT(13) 98YL OUTMON A1(1),A1+2,4,AMXOR,BBC 998D STOZ ACOMMUNE7(2)[ACOM7 "PART MESS INDICATOR" IS O/W BY OUTMON 99D= MFREEW AMXOR,BBC [CONVERTED BROADCAST MESSAGE BLOCK 9=X6 NOTBB MHUNTW 3,AMXOR,ADCB 9?BQ LDX 5 IWAIT(3) 9?WB SLL 5 1 9#B2 BNG 5 REVEX [REVERSION EXPECTED 9#B? # 9#BJ # IF "OUTPUT SUSPENDED" FLAG SET, 9#BT # SET UP A NULL DATA SEGMENT WITH TURNROUND(DISPLAYS ONLY) 9#C6 # 9#CC SLL 5 22 9#CN BPZ 5 NORIN ["OUTPUT SUSPENDED" FLAG NOT SET 9#C^ CALL 6 RINGO [OUTPUT BLOCKS BEFORE SUSPENDING 9#D= NSIX BRN VSUSPEND 9#DH # 9#DS # PUT DISPLAY IN TYPE MODE 9#F5 # 9#FB VTYPE 9#FG MHUNTW 3,AMXOR,ADCB 9#FM HUNTW 2,AMXOR,IDATSG [PROCESS ANY OTHER DATA FIRST 9#FY BPZ 2 PASS [DATA(ACTION KEY) FOUND 9#G9 LDX 6 IWAIT(3) 9#GG SLL 6 7 9#GR BNG 6 VRNUL [ON A READY : JUST SET DISPLAY BACK IN TYPE MODE 9#HL VSUSPEND 9#HX LDN 5 #4214 [FOR SEGMENT HEADER(EOM+TURN+DISCARD) 9#J8 LDX 4 VSNULL(1) [COUNT OF CHARS REQUIRED FOR NULL MES 9#JF CALL 7 SETU [SET UP AMXOR/IOUT BLOCK 9#JQ LDCH 6 ICURPOS(3) [CURRENT LINE NO OF CURSOR 9#K3 LDEX 0 ICONTU(3) [NO OF LINES OUTPUT SINCE LAST TURN. 9#K# SBX 6 0 [LINE NO OF START OF CONTINUOUS O/P 9#KK ERN 6 #20 [CONVERT FOR VERTICAL TAB 9#KW LDN 4 VSNULL+1(1) [MOVE IN NULL MESSAGE 9#L7 SMO VSNULL(1) 9#LD MVCH 4 0 9#LP ORS 6 IDATA(2) [SET VERTICAL TAB FOR SOM MARKER 9#M2 BCHX 3 £ [-> CHAR 1 9#M? LDCH 0 ICHARS(3) [DISPLAY LENGTH 9#MJ ANDX 3 BITS22LS 9#MT LDCH 6 ICURPOS(3) [CURRENT LINE NO OF CURSOR 9#N6 TXL 6 0 9#NC BCS VCURS [CURRENT LINE NO < DISPLAY LENGTH 9#NN LDN 6 0 [CURSOR POSITIONED ON LINE 0 9#N^ VCURS ERN 6 #3320 9#P= DSA 6 ICURSV(3) [SET VERTICAL TABULATE CODE 9#P* LDN 6 #7420 9#PD DSA 6 ICURSH(3) [SET HORIZONTAL TAB CODE FOR COL 0 9#PH LDN 4 ICURSOR+1(3) [MOVE IN CURRENT CURSOR POSITIONING 9#PS LDN 5 IDATA+4(2) [CODES TO RESET CURSOR 9#Q5 SMO ICURSOR(3) 9#QB MVCH 4 0 9#QM LDX 5 IWAIT(3) 9#QY SLC 5 1 9#R9 BNG 5 REVEX [G3 BREAK-IN : SKIP SUSPENSION 9#RG BRN NORIN 9#RR VRNUL LDN 5 #4214 [FOR SEGMENT HEADER(EOM+TURN+DISCARD) 9#S4 LDN 4 2 9#S* CALL 7 SETU [SET UP AMXOR/IOUT BLOCK 9#SL LDX 0 ISYNC(3) 9#SX STO 0 IDATA(2) [MOVE IN NULL CHAR 9#T8 # 9#TL NORIN CALL 6 RINGO [OUTPUT BLOCKS 9**= # 9*SW # OUTPUT FINISHED : TAKE APPROPRIATE ACTION IF INPUT WHEN 'READY' 9B4N # OR 'OUTPUT SUSPEND' 9B#G # 9BS6 LDX 4 IWAIT(3) 9C?Q SLC 4 1 9CRB BNG 4 TEBIL [REVERSION EXPECTED 9D?2 SRC 4 1 9DQL ANDX 4 VWAIT(1) 9F== BNZ 4 WAITI [READY OR OUTPUT SUSPENDED FLAG SET 9H8Q # 9HNB OUFIN LDCH 0 AWORK1(2) 9J82 SBN 0 AMXOR/64 9JFB BNZ 0 PUP [HAVE JUST OUTPUT GMON/AOUT BLOCK 9JQQ LDX 0 AWORK3(2) [HAVE JUST OUTPUT AMXOR/BBC BLOCK 9K46 STO 0 ACOMMUNE7(2) [RESET GMON/AOUT CHARACTER COUNT 9K*G BRN SK1IPBMOP 9KLW # 9L6G # LONG INPUT MAY OVERRUN ONE IDATSG ; CHECK OPERABILITY IF NO INPUT 9LL6 # 9M5Q WAITI HUNTW 2,AMXOR,IDATSG 9MKB BPZ 2 PASS 9N52 LDN 6 0 9N#S CALL 4 WAITO [NO INPUT : CHECK OPERABILITY 9NJL BRN TINOP [INOPERABLE 9P4= LDX 0 IWAIT(3) 9PHW SLL 0 1 9Q3G BNG 0 TEBIL [E.G. 'CONTINUE' FOLLOWED BY BREAK-IN 9QH6 BRN WAITI [OPERABLE : LOOK FOR INPUT AGAIN 9R2Q # 9RGB PASS HUNTW 1,AMXOR,IMESSG 9S22 BNG 1 NOLON [NOT SECOND PART OF LONG INPUT 9SFL LDX 5 A1(1) [COUNT OF FIRST PART 9SHT ...#SKI G501&1 9SL4 ...( 9SN? ... LDX 3 IADIN(3) 9SQG ... LDX 7 BIT9 9SSP ... ANDX 7 IPBSW(3) 9SWY ...) 9S^= LDX 3 A1(2) 9T6D ...#SKI G501&1 9T87 ...( 9T9W ... BNZ 7 V791 9T?L ... ADN 3 1 [ CATER FOR NPU REVERSION TO ALPHA 9T*B ...V791 9TC6 ...) 9TDW ADS 3 A1(1) 9TYG ANDN 3 #7777 [COUNT OF SECOND PART 9WD6 LDN 4 CPDATA-A1*4+3(3) 9WXQ ADX 4 5 9XCB LDX 6 1 9XX2 SRL 4 2 9YBL ALTLENG 6,4,RIOT [LENGTHEN AMXOR/IMESSG 9YW= MHUNTW 1,AMXOR,IDATSG 9^*W SRC 5 2 9^TG MHUNTW 2,AMXOR,IMESSG =25# ...#SKI G501&1$1 =2*6 LDN 4 CPDATA(1) =2SQ ADN 5 CPDATA(2) =2WF ...#SKI G501&1 =2Y8 ...( =2^3 ... BNZ 7 V792 =2^X ... LDCT 0 #740 =33L ... LDN 4 0 =35* ... MVCH 4 1 [ NEXT LUMP STARTS IN ALPHA =374 ... SBN 3 1 =37X ...V792 =38R ... LDN 4 CPDATA(1) =3=G ...) =3#B BZE 3 PASSA [J IF ZERO MESSAGE COUNT =3S2 MVCH 4 0(3) [APPEND SECOND PART OF MESSAGE =4?L PASSA LDX 3 2 =4R= FREECORE 1 =5=W LDX 2 3 =5QG MHUNTW 3,AMXOR,ADCB =6=6 BRN ZTES =6PQ # =79B NOLON NAME 2,AMXOR,IMESSG =7P2 LDX 1 FX1 [WILL J TO SMEND IF ONE-BLOCK MESSAGE =88L LDX 0 SMASK(1) =8N= ANDX 0 IWAIT(3) [CANCEL INOP. MESSAGE INHIBIT AND =97W ERS 0 IWAIT(3) [UNSET TP BREAK-IN BIT IN ADCB =9MG DCH 0 IBIL(3) [ZEROISE BREAK-IN ACCUMULATOR ==76 ZTES LDX 6 A1(2) ==LQ SLC 6 3 =?6B BNG 6 TRERR [B3 SET IF TRANSMISSION ERROR =?L2 SLC 6 2 =#5L BNG 6 TIMED [B5 SET IF TIMED OUT =#K= SLC 6 1 =*4W BPZ 6 ZTESA =*JG [BIT 6,CURRENT DATA STREAM CANCELLED,IS SET ONLY AFTER RE-OPERABILITY =B46 [DURING A LONG INPUT. =BHQ [THE DCP WOULD HAVE REPORTED "LINE ERROR" TO USER SO FREE IMESSG AND =C3B [WAIT FOR NEXT INPUT MESSAGE. =CH2 FREECORE 2 =D2L BRN WAITI =DG= ZTESA SRC 6 6 =D^W BNG 6 SMEND [END OF MESSAGE =FFG LDN 0 #7777 =F^6 ANDS 0 A1(2) [ISOLATE COUNT =GDQ BRN WAITI [WAIT FOR REST OF INPUT MESSAGE =GYB # =HD2 # WHOLE MESSAGE RECEIVED : CHECK WHETHER FINISHED NORMALLY =HXL # =J35 SMEND =J6J DOWN IPBMOPC,5 =J=3 BRN TESTWK [UP =J*G BRN XNBRK [J. BREAK-IN REJECTED - UPPLUS 1 =JD^ BRN VTYPE [UPPLUS 2 PUT DISPLAY INTO TYPE =JJD ... BRN UPVDMS [UPPLUS 3 CONVERT MESSAGE FOR DISPLAY =JMX BRN TREV [ UPPLUS4 CONVERT INPUT FROM LINE CO =JRB BRN OUFIN [UPPLUS 5 OUTPUT FINISH TAKE APPROPRI =JWT BRN PUP [UPPLIS 6 =JXH ...UPVDMS =JY9 ... LDX 0 ACOMMUNE1(2) =JYX ... STO 0 AWORK1(2) =J^K ... BRN VDUMESS =K2# TESTWK =K5R ... LDX 0 ACOMMUNE1(2) =K9= ANDN 0 #77 =K#P ... ERS 0 ACOMMUNE1(2) =KD8 BZE 0 PERBI [BREAK IN OK =KHM SBN 0 1 =KM6 BZE 0 NORIN [CANCEL =KQK MHUNTW 3,AMXOR,ADCB =KR5 ... LDXC 0 ICURSOR(3) =KRK ... BCS TRVT =KS5 ... LDCT 0 #200 =KSK ... ORS 0 ICURSOR(3) =KT5 ... ERS 0 ICURSOR(3) =KTK ...TRVT =KW6 LDX 0 BIT9 =L*Q ANDX 0 IWAIT(3) =LTB ERS 0 IWAIT(3) [UNSET B9 IF SET =M*2 BNZ 0 TREV [SET : NL SUPPRESSION REQUIRED =MSL LDX 4 INOCHS(3) [LENGTH OF NL+ETX+1 =N#= LDN 5 #4004 =NRW CALL 7 SETU [SET UP AMXOR/IOUT BLOCK =P?G LDX 1 INOCHS(3) =PR6 LDN 4 INLBUFF(3) =Q=Q MVCH 4 0(1) [NEWLINE + END OF MESSAGE =QF2 STOZ IMOPTY(2) [MARK NOT TO WAKE ACT AFTER OUTPUT =QM= LDX 6 FX1 =QTG LDN 7 TREV [LINK =R3Q BRN RINGO [QUEUE ACKNOWLEDGEMENT & EXIT =R=2 TREV VFREEW FILE,FRB [DISCARD INMOP'S FRB IF IT EXISTS =RFS MHUNTW 3,AMXOR,ADCB =RPL MHUNTW 1,AMXOR,IMESSG =S9= NAME 1,FILE,FRB =X72 CHAIN 1,FX2 [NEEDED IF EDITOR FINISHING OFF =X#8 LDXC 0 ICURSOR(3) =XFB BCS VINPUT [MESSAGE FROM A MOP DISPLAY =XLL CHANG [CONVERT INPUT FROM LINE CODE =Y6= PUP UP =Y=7 VINPUT [CAME FROM ZFOUR VIA TREV W/ AN ORDINARY (VDU) MESSAGE =YB4 CHANGVD [CONVERT INPUT FROM LINE CODE =YF^ BRN PUP =YKW # =^5G # TRANSMISSION ERROR ON INPUT : OUTPUT ERROR MESSAGE & REPEAT READY =^*# # IF A MOP CONSOLE, ELSE TAKE INOPERABLE ACTION. =^K6 # ?24Q TRERR MFREEW AMXOR,IMESSG ?2JB LDXC 0 ICURSOR(3) ?342 BCS TINOP [MOP DISPLAY : TAKE INOPERABLE ACTION ?3HL ... DOWN IPBMOPC,3 ?43= BRN NORIN ?4GW XNBRK [BREAK IN REJECTED ?RF= MHUNTW 3,AMXOR,ADCB ?RLD LDXC 0 ICURSOR(3) ?RRL BCS VTYPE [MOP DISPLAY : PUT BACK IN TYPE MODE ?RYW LDX 4 INOCHS(3) ?SDG LDN 5 #4004 ?SY6 CALL 7 SETU [SET UP OUTPUT BLOCK ?TCQ LDX 1 INOCHS(3) ?TXB LDN 4 INLBUFF(3) ?WC2 MVCH 4 0(1) [NEWLINE + END OF MESSAGE ?WWL BRN REPRD [REPEAT READY ?XB= # ?XTW PERBI MHUNTW 3,AMXOR,ADCB ?Y*G LDCT 0 #10 ?YT6 ORS 0 IWAIT(3) [SET G3 BI BIT ?^2# LDXC 0 ICURSOR(3) ?^7G BCS VBA [MOP DISPLAY ?^8S ... LDCT 0 #200 ?^=6 ... ORS 0 ICURSOR(3) ?^?D ... ERS 0 ICURSOR(3) ?^#Q LDCH 4 ICHARS(3) [LENGTH OF NEWLINE ?^SB ADX 4 SBI(1) [LENGTH OF BREAK-IN MESSAGE #2#2 ADX 4 INOCHS(3) [LENGTH OF NL+ETX+1 #2RL LDN 5 #4004 #3?= CALL 7 SETU [SET UP AMXOR/IOUT BLOCK #3QW LDN 4 INLBUFF(3) #4=G LDCH 1 ICHARS(3) #4Q6 MVCH 4 0(1) [NEWLINE #59Q LDX 1 FX1 #5PB LDN 4 SBI+1(1) #692 LDX 1 SBI(1) #6NL MVCH 4 0(1) [BREAK IN MESSAGE #78= LDN 4 INLBUFF(3) #7MW LDX 1 INOCHS(3) #87G MVCH 4 0(1) [NEWLINE + END OF MESSAGE #8M6 SBIM CALL 6 RINGO #96Q TOAB READYON [SET 'READY' MACRO BREAK-IN BIT #9?Y MHUNTW 3,AMXOR,ADCB #9BJ CALL 7 VNEWL [IF MOP DISPLAY,ENSURE NEXT MESS STARTS ON A N/L #9LB UP #9M9 # DISPLAY BREAK-IN ACCEPTED : REPLY "BREAK-IN" #9N4 VBA CALL 7 VNEWL #9NX LDN 4 1 [BREAK-IN MESSAGE NO #9PQ LDN 5 #4000 [FOR SEGMENT HEADER(EOM) #9QK CALL 7 VEDIT #9RD # PREPARE ANY REMAINING MESSAGE PART #9S? LDX 4 ACOMMUNE7(2) #9T6 BZE 4 SBIM [NO MESS PART REMAINING #9T^ STOZ ACOMMUNE7(2) #9WS DSA 4 ACOMMUNE8(2) [SET MESSAGE PART CHAR COUNT #9XM ANDX 4 HALFTOP #9YG STO 4 AWORK1(2) [SET MESSAGE BLOCK TYPE #9^* LDX 0 ACOMMUNE3(2) #=28 STO 0 ACOMMUNE9(2) [SET RELATIVE MESSAGE PART ADDRESS #=33 LDN 5 #4000 #=3W CALL 7 VEDITM #=4P BRN SBIM #=62 # #=KL # INPUT TIMED OUT : SET MARKER AND TEST WHETHER USER CONTEXT #?5= # IF NO USER : INHIBIT BREAK-IN WHILE CLOSED DOWN MESSAGE IS OUTPUT #?JW # ##4G TIMED FREECORE 2 ['TIMED OUT' AMXOR/IDATSG ##9N TIMV LDCT 7 #400 #### TIMUP ##J6 LDCT 0 #24 ##WG ORN 0 #40 [ALSO TEST FOR MOP OFF LIMBO #*3Q ANDX 0 JOBEVENTS(2) #*HB BNZ 0 TOAB [MARKED 'TO BE ABANDONED' #B32 LDCH 4 IWAIT(3) #BGL LDN 0 2 #C2= ANDX 0 CONTEXT(2) #C#L BPZ 7 TOCLO #CFW BNZ 0 NOUSE [NO USER CONTEXT #C^G # #D4^ USER #DT= ORN 4 #14 [TIMED OUT IN USER CONTEXT #DYQ DCH 4 IWAIT(3) #FDB LDX 5 ZJTIMEOUT(1) #FY2 CALL 7 OUTM [OUTPUT TIMED OUT MESSAGE. #GCL BRN TESTM [TEST TIMED OUT MARKER #H8L WAIT CALL 4 WTINT [CHECK OPERABILITY BEFORE COOR1 #HBW BRN TINOP [INOPERABLE #HWG TESTM LDCT 0 #40 #JB6 ANDX 0 IWAIT(3) #JTQ BNZ 0 WAIT [TIMED OUT MARKER STILL SET #K*B LDN 0 #200 #KT2 ANDX 0 IWAIT(3) [B16 SET IF MOPOFF OR JOB ABANDONED #L#L ERS 0 IWAIT(3) #LS= BNZ 0 TOAB [GIVE COMPRO BREAK-IN REPLY #M?W LDX 5 ZJTOREST(1) #MRG CALL 7 OUTM [OUTPUT RESTARTED MESSAGE #N?6 REPRD LDX 4 IREADY(3) #NQQ NODC LDN 5 #4214 #P=B CALL 7 SETU #PQ2 LDCT 0 2 #Q9L ORS 0 IWAIT(3) [INDICATE 'READY' #QCW LDN 4 IREADY+1(3) #QL6 LDX 1 IREADY(3) #QSB MVCH 4 0(1) ["READY" TERMINATOR #R2L BRN NORIN [OUTPUT READY MESSAGE #R8W # #RNG NOUSE LDX 0 4 #S86 SRC 0 2 #SMQ BNG 0 USER [JOB OR INPUT IN PROGRESS #TM2 TOCLO #W6L ACROSS IPBMOPB,8 *B== # *BPW # IDENTIFIER INOPERABLE : SET PERIPHERAL TYPE IN CPA TO MCF SO THAT *C9G # SUBSEQUENT MONOUTS GO TO K4MULTIPLX ; OUTPUT MESSAGES TO LOCAL AND *CP6 # REMOTE OPERATORS' CONSOLES *D8Q # *DNB TFR *G7= TINOP ACROSS IPBMOPB,1 *GLW STACR ACROSS IPBMOPB,3 BKRW # BL?G # REVERSION EXPECTED : FREE REVERTED BLOCKS ACCORDING TO DISCARD BLR6 # MASK , UNTIL NO MORE REVERTED BLOCKS,AND BREAK-IN LEVEL ZERO ; BM=Q # THEN CONTINUE WITH PRESENT OUTPUT , OR INPUT RECEIVED FOR 'READY' BMQB # BN=2 TEBIL BNPL REVEX DOWN IPBMOPB,2 BP9= BRN TOAB BPNW BRN TPASS BQ8G BRN OUFIN BQN6 BRN NORIN BR7Q TPASS MHUNTW 3,AMXOR,ADCB BRMB BRN WAITI [THEN "PASS" CSTW # CT*G SET SBN 0 #36 CTNK BNZ 0 WEX [SKIP INOPERABILITY WAIT IF ACT ALREADY IN A LONG CW3N [EVENT WAIT(EG #220) GO DOWN INOP PATH WITHOUT WAITING CWGY SETA LDN 5 #1000 CWK2 ORS 5 ICONTU(3) CWKN LDN 0 #2000 CWLB ORS 0 ISTATUS(3) [SET B13 TO BE WOKEN ON INOPERABLE CWM4 LDX 3 JTIME CWP6 [ DOWN TO WAIT IN COOR4 FOR CONT. OUT CWR8 [ OR LONGSTOP FOR TIMED OUT CWT= TIPMC DOWN IPBMOPC,1 CWX# BRN TOAB CW^B BRN WOPAG CX3D BRN YUPZ CX4F BRN TINOP CX#2 MENDAREA 25,K100IPBMOP CXRL #END ^^^^ ...71540172001400000000