{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: MOPOUT85)}}
====== MOPOUT85 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:ALTLEN|ALTLEN]], [[george:macro:ALTLENG|ALTLENG]], [[george:macro:BBREAKIN|BBREAKIN]], [[george:macro:BXGE|BXGE]], [[george:macro:BXL|BXL]], [[george:macro:CHANG|CHANG]], [[george:macro:DCA|DCA]], [[george:macro:DLCA|DLCA]], [[george:macro:FINDLCA|FINDLCA]], [[george:macro:FREECORE|FREECORE]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GLPERI|GLPERI]], [[george:macro:HUNT2|HUNT2]], [[george:macro:HUNTW|HUNTW]], [[george:macro:ISITJOB|ISITJOB]], [[george:macro:LOCKC|LOCKC]], [[george:macro:LONGOFF|LONGOFF]], [[george:macro:LONGSET|LONGSET]], [[george:macro:LONGSTOP|LONGSTOP]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MFREEW|MFREEW]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:MHUNTX|MHUNTX]], [[george:macro:MONOUTX|MONOUTX]], [[george:macro:MOPWAIT|MOPWAIT]], [[george:macro:OUTBLOCN|OUTBLOCN]], [[george:macro:OUTMON|OUTMON]], [[george:macro:OUTNULL|OUTNULL]], [[george:macro:OUTPARC|OUTPARC]], [[george:macro:PHOTO|PHOTO]], [[george:macro:READYOFF|READYOFF]], [[george:macro:READYON|READYON]], [[george:macro:RESTART|RESTART]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:SMOPWAIT|SMOPWAIT]], [[george:macro:TESTMOVE|TESTMOVE]], [[george:macro:UP|UP]]
22FL #SEG MOPOUT8 [G CONSTANTINIDES
22^= #LIS K0MOPOUT>K0MULTIPLX>K0ALLGEO>K0GREATGEO
23DW 8HMOPOUT8
23YG # ENTRY POINTS
24D6 SEGENTRY K1MOPOUT,Z1MOPOUT
24XQ SEGENTRY K2MOPOUT,Z2MOPOUT
25CB SEGENTRY K3MOPOUT,Z3MOPOUT
25X2 MENDAREA 50,K100MOPOUT
26BL [
26W= [THIS SEGMENT OUTPUTS DATA FROM A GMON/AOUT BLOCK TO A MULTIPLEXOR
27*W [TERMINAL. IT USES MODE #11 FOR NORMAL OUTPUT, AND MODE #13 FOR
27TG ["READY" OUTPUT.
28*6 [
28SQ TABLE BRN XE3 [NORMAL TRANSFER.
29#B BRN XE4 [BREAK-IN OCCURRED
29S2 BRN ZB4 [MESSAGE ENDED 'CANCEL'
2=?L BRN ZB5 [MESSAGE TIMED OUT
2=R= #SKI K6MULTIPLX>99-99
2?=W (
2?QG #DEF ZMAX=0?-TABLE+1
2#=6 TNUM +ZMAX [NUMBER OF TABLE ENTRIES
2#PQ #FRE ZMAX
2*9B )
2*P2 MONAOUT
2B8L #HAL GMON+AOUT,0
2BN= [
2C7W MXORBBC
2CMG #HAL AMXOR+BBC,0
2D76 [
2DBY ...ZMIN 60+3/FONINTP
2DLQ XMASK +1.1
2F6B XSHIFT #74
2FL2 NLMSK #20000
2G5L XCANCEL 6HCANCEL
2G9H ...ZJMOPWT +JMOPWTLI
2G*D ... +JMOPWTJO
2GF* ... +JMOPWTIN
2GK= ZJTIMEOUT +JTIMEOUT [TIMED OUT 'TIME'
2H4W ZJTOREST +JTOREST [RESTARTED AT 'TIME'
2HJG ZJTOCLOSE +JTOCLOSE [CLOSED DOWN AT 'TIME'
2J46 TIME +ATIME [READY MESSAGE
2JHQ #DEF ZZS=AMOPOUT-A1+6 [LENGTH OF THE 3 NEWLINES BLOCK
2K3B [
2KH2 [THIS SUBROUTINE CONVERTS THE CARD IMAGE FORMAT MESSAGE HELD IN A
2L2L [SPECIFIED BLOCK INTO DATA SUITABLE FOR TRANSMISSION TO A MOP CONSOLE.
2LG= [
2L^W [THE OUTPUT IS PUT INTO AN AMXOR/AOUT BLOCK (OR BLOCKS). LINES OF OUTPUT
2MFG [ARE TRUNCATED TO THE LAST NON-SPACE CHARACTER. IF THE LAST CHARACTER
2M^6 [IN THE LINE IS NOT A SPACE, AND THE NEXT INPUT CHAR. IS A SPACE, THE
2NDQ [LINE IS OUTPUT WITHOUT EDITING, OTHERWISE A SEARCH IS MADE BACKWARDS,
2NYB [THROUGH UP TO 8 CHARACTERS, FOR A SPACE: IF ONE IS FOUND THE LINE IS
2PD2 [TRUNCATED TO THE LAST NON-SPACE CHARACTER BEFORE THIS, AND THE REST
2PXL [OF THE LINE (UP TO 7 CHARS.) IS PREFIXED TO THE NEXT LINE. IF THE
2QC= [MESSAGE IS TOO LONG FOR 1 MULTIPLEXOR TRANSFER IT IS TRUNCATED TO THE
2QWW [LAST NEWLINE, IF POSSIBLE, AND THE REST OF THE MESSAGE IS PUT INTO
2RBG [ANOTHER BLOCK (OR BLOCKS). THIS IS SO THAT START-UP CHARACTERS (KER
2RW6 [-CHUNGS ETC.) COME AT THE START OF A LINE,RATHER THAN HALF WAY THROUGH.
2S*Q [
2STB [ON ENTRY
2T*2 [X3 POINTS TO THE LINE CONTROL BLOCK (AMXOR/ALCB)
2TSL [X4 CONTAINS THE SUBROUTINE LINK ADDRESS
2W#= [AWORK1 CONTAINS THE TYPE OF THE BLOCK CONTAINING THE INPUT MESSAGE.
2WRW [AWORK2 CONTAINS A COUNT OF THE NO. OF CHARS. IN THE INPUT MESSAGE.
2X?G [ACOMMUNE1 CONTAINS A COUNT OF THE NO. OF CHARS. IN THE TERMINATOR.
2XR6 [ACOMMUNE2 CONTAINS THE START ADDRESS OF THE TERMINATOR, RELATIVE TO THE
2Y=Q [ START OF THE LINE CONTROL BLOCK (CAN BE A CHARACTER ADDRESS).
2YQB [ACOMMUNE3 CONTAINS AN INDICATION OF THE TYPE OF MESSAGE WHICH IS BEING
2^=2 [ CONVERTED: B12=1 - NEWLINE SUPPRESSION REQUIRED AT END OF MESSAGE.
2^PL [ B18=1-"CUT OFF DC1 MARKER"
329= [ B19=1 - OBJECT PROGRAM OUTPUT
32NW [ B20=1 - "FORCED TYPING" CATEGORY MESSAGE.
338G [ B21=1 - "BROADCAST" MESSAGE.
33N6 [ B22=1 - "BROKEN IN" MESSAGE.
347Q [ B23=1 - "READY" CATEGORY MESSAGE.
34MB [ ALL OTHER BITS MUST BE ZERO.
3572 [ACOMMUNE5 CONTAINS THE ADDRESS OF THE INPUT BLOCK
35LL [
366= [ACOMMUNE7 IS NOT USED BY THE SUBROUTINE, BUT ALL OTHER ACOMMUNE WORDS,
36KW [ALL ACCUMULATORS AND ALL THE AWORK WORDS ARE USED WITH MONOTONOUS
375G [REGULARITY.
37K6 [ON EXIT X1=FX1 AND X2=FX2, AND THEY ARE ASSUMED TO HAVE THESE VALUES
384Q [ON ENTRY AS WELL.
38JB [
38PJ ...ZLNOF LONGOFF
38WQ ... EXIT 3 0
3942 XCONV SBX 4 1
39HL STOZ AWORK3(2) [ZERO IF NO NL YET IN THIS TRANSFER.
3=3= STO 4 AWORK4(2) [SUBROUTINE LINK.
3=GW LDEX 6 CHARS(3) [NO. OF PRINT POSNS. ON CONSOLE.
3?2G LDX 4 ACOMMUNE1(2) [NO. OF CHARS. IN TERMINATOR.
3?G6 BXL 6 AWORK2(2),XLR1 [J. IF < NO. OF CHS. TO BE CONVERTED.
3?^Q LDX 6 AWORK2(2) [OTHERWISE GET CONVERSION COUNT.
3#FB NGS 4 AWORK2(2) [SET -VE TO SHOW LAST LINE OF OUTPUT.
3#^2 XLR1 STOZ ACOMMUNE8(2) [RELATIVE POINTER TO NEXT INPUT CHAR.
3*DL SMO IDENTM(3) [AMOP ADDRESS.
3*Y= LDX 7 AWORK1 [MAX. TRANSFER LENGTH FOR THIS DEVICE
3BCW BXGE 4 GNOCHS(3),TERM1 [J. IF TERM. LONGER THAN NL/DC3/EOM.
3BXG LDX 4 GNOCHS(3) [OTHERWISE GET LENGTH OF DEFAULT TERM
3CC6 TERM1 LDX 5 7
3CWQ DCH 4 ACOMMUNE3(2) [SAVE LENGTH OF LONGER TERMINATOR.
3DBB ADN 5 AMOPOUT-A1*4+3 [ADD ON ENOUGH FOR RED TAPE & ROUND.
3DW2 SBX 7 4 [TRANSFER LENGTH LESS MAX. TERMINATOR
3F*L LDX 4 GDELE(3)
3FT= SBX 7 4 [AT START OF MESSAGE
3G#W XNAU1
3GSG SRL 5 2 [ROUND TO WORDS.
3H#6 PHOTO 4
3HRQ SETUPCOR 5,1,AMXOR,AOUT [GET OUTPUT BLOCK.
3J?B TESTMOVE 4,NMV1
3JR2 MHUNTX 3,AWORK1(2) [FIND THE INPUT BLOCK.
3K=L STO 3 ACOMMUNE5(2) [SAVE ITS ADDRESS.
3KQ= MHUNTW 3,AMXOR,ALCB
3L9W NMV1 STO 1 ACOMMUNE6(2) [SAVE ADDRESS OF OUTPUT BLOCK.
3LPG LDX 4 ACOMMUNE3(2) [GET CONVERSION TYPE.
3M96 STO 7 AMOPCHS(1) [SAVE TRANSFER LENGTH LESS TERMINATOR
3MNQ STO 3 ACOMMUNE4(2) [SAVE ADDRESS OF LCB.
3N8B ADN 1 AMOPOUT [SET UP PLACER.
3NN2 ANDN 4 #14 [MASK OUT "BROADCAST" & "FORCED TYPE"
3P7L STO 1 ACOMMUNE9(2) [SAVE PLACER.
3PM= BZE 4 NBBC [J. IF NOT BROADCAST OR FORCED TYPE,
3Q6W LDCH 5 CHARS(3) [OTHERWISE OUTPUT PRELIMINARY NEWLINE
3QLG LDN 0 GNLBUFF(3)
3R66 SMO 5
3RKQ MVCH 0 0
3S5B SBX 7 5
3SK2 STO 1 ACOMMUNE9(2) [SAVE POINTER & CT. AFTER NL.
3T4L STO 7 AWORK3(2)
3TJ= NBBC BZE 6 NDINP [J. IF NO INPUT TO CONVERT.
3W3W LDX 3 ACOMMUNE5(2) [GET ADDRESS OF INPUT BLOCK.
3WHG NEXT1 ADX 3 ACOMMUNE8(2) [SET UP GETTER.
3X36 NEXT2 LDCH 0 A1+2(3) [GET NEXT CHAR.
3XGQ SMO FX1
3Y2B TXL 0 XSHIFT [J. IF NOT SHIFT CHAR.
3YG2 BCS NSHIF
3Y^L SBN 7 2 [UPDATE TRANSFER REMAINDER COUNT.
3^F= BNG 7 NDTR1 [J. IF TOO MUCH FOR THIS TRANSFER.
3^YW LDN 5 #76 [INSERT DELTA SHIFT.
42DG SBN 0 #10 [RESET DATA CHAR.
42Y6 DCH 5 0(1)
43CQ BCHX 1 XNORM [STEP PLACER & J.
43XB NSHIF SBN 7 1 [UPDATE TRANSFER REMAINDER COUNT.
44C2 BNG 7 NDTR2 [J. IF TOO MUCH FOR THIS TRANSFER.
44WL XNORM DCH 0 0(1) [INSERT CHAR.
45B= BCHX 3 £ [STEP GETTER.
45TW BCHX 1 £ [STEP PLACER.
46*G BCT 6 NEXT2 [J. IF MORE WILL FIT ONTO THIS LINE.
46T6 STO 3 ACOMMUNE8(2) [SAVE GETTER.
47#Q #
47SB LDEX 0 ACOMMUNE3(2) [GET TYPE OF THE MESSAGE WORD
48#2 ANDN 0 #20 [J IF OBJ.PROG OUTPUT BIT SET
48RL LDN 4 8 [COUNT OF NON-SPACE CHS TO BACKCHECK
49?= LDX 2 FX1
49QW BNZ 0 TSPAC
4==G SMO FX2
4=Q6 LDXC 5 AWORK2
4?9Q BCS TSPAC [J IF CONVERSION FINISHED
4?PB #
4#92 LDCH 0 A1+2(3) [GET NEXT CHAR.
4#NL SBN 0 #20
4*8= BZE 0 TSPAC [J. IF SPACE FOUND.
4*MW PLOOP SBX 3 XMASK(2) [STEP BACK GETTER 1 CHARACTER POSN.
4B7G TXL 3 CACT
4BM6 ADN 3 0
4C6Q LDCH 0 A1+2(3) [GET THIS CHAR.
4CLB SBN 0 #20
4D62 BZE 0 QLOOP [J. IF SPACE.
4DKL SBN 0 #74-#20 [WAS IT A SHIFT CHAR.
4F5= TXL 0 GSIGN
4FJW ADN 6 1 [COUNT OF OUTPUT CHARS. TO BE REMOVED
4G4G BCT 4 PLOOP [J. IF STILL NO SPACE FOUND & CT. OK.
4GJ6 LDX 2 FX2
4H3Q LDX 3 ACOMMUNE8(2) [LOAD GETTER
4HHB BRN SETNL [GIVE UP TRYING & INSERT NL IN MID-WD
4J32 QLOOP ADN 6 1 [STEP OUTPUT REDUCTION COUNT.
4JGL TSPAC SBX 3 XMASK(2) [STEP GETTER 1 CHAR. POSN. BACK.
4K2= TXL 3 CACT
4KFW ADN 3 0
4K^G LDCH 0 A1+2(3) [GET THIS CHAR.
4LF6 SBN 0 #20
4LYQ BZE 0 QLOOP [TRY AGAIN IF SPACE.
4MDB LDX 2 FX2
4MY2 LDX 3 ACOMMUNE8(2) [LOAD GETTER
4NCL #
4NX= SBN 4 8 [MINUS NO OF NON-SPACE CHARS.FOUND
4PBW SLC 3 2 [CONVERT TO CHARACTER COUNT
4PWG ADX 3 4
4QB6 LDX 0 ACOMMUNE9(2) [RELATIVISE PLACER
4QTQ SLC 0 2 [CHARS
4R*B SLC 1 2 [CHS PTR
4RT2 SBX 1 0
4S#L SBX 1 6 [MINUS CONTENT OF REDUCTION COUNT
4SS= BNZ 1 XAR [J IF SOMETHING HERE
4T?W LDN 1 4 [ALL SPACES OUTPUT,
4TRG SBN 6 4 [4 AT THE MOST
4W?6 BPZ 6 XAQ
4WQQ ADN 6 4
4X=B LDX 1 6
4XQ2 STOZ 6
4Y9L XAQ LDXC 5 AWORK2(2)
4YP= BCC XAR
4^8W LDX 0 ACOMMUNE9(2)
4^NG SLC 0 2
5286 ADX 1 0
52MQ SRC 1 2
537B BRN NDINP [END OF MESSAGE
53M2 XAR ADX 7 6 [COUNT OF CHARS LEFT TO FILL TRANSFER
546L #
54L= BPZ 1 SPALL
555W LDX 7 AWORK3(2) [RESET REMAINDER CT.
55KG LDN 1 0 [RESET PLACER.
5656 BNZ 7 SPALL
56JQ SMO ACOMMUNE6(2) [REMEMBRANCE NOT VALID IF NO NL YET.
574B LDX 7 AMOPCHS
57J2 SPALL LDX 0 ACOMMUNE9(2)
583L SLC 0 2
58H= ADX 1 0
592W SRC 1 2 [RECONSTITUTE PLACER.
59GG SRC 3 2
5=26 LDXC 0 AWORK2(2)
5=FQ BCS NDINP
5=^B SETNL SBX 3 ACOMMUNE5(2) [RESET GETTER REMEMBRANCE
5?F2 STO 3 ACOMMUNE8(2)
5?YL LDX 3 ACOMMUNE4(2) [LCB ADDRESS.
5#D= LDEX 6 CHARS(3) [NO. OF PRINT POSNS.
5#XW LDN 0 GNLBUFF(3) [POINTER TO START OF NL SEQUENCE.
5*CG ADX 4 6 [PRINT POSNS. LESS NON-SP. CHS. OVER.
5*X6 LDCH 5 CHARS(3) [LENGTH OF NL SEQUENCE.
5BBQ SBS 4 AWORK2(2) [REDUCE CT. OF CHARS. LEFT TO CONVERT
5BWB SMO 5
5CB2 MVCH 0 0 [INSERT NL.
5CTL SBX 7 5 [UPDATE TRANSFER REMAINDER COUNT.
5D*= BXL 6 AWORK2(2),XLR2 [RESET PRINT POSN. CT. FOR NEXT LINE.
5DSW LDX 6 AWORK2(2)
5F#G NGS 5 AWORK2(2) [SET -VE. TO SHOW FINISHED.
5FS6 XLR2 BNG 7 NDTWO [J. IF NL FILLS UP TRANSFER.
5G?Q STO 1 ACOMMUNE9(2) [SAVE POINTER & CT. AFTER NL.
5GRB STO 7 AWORK3(2)
5H?2 LDX 3 ACOMMUNE5(2) [INPUT BLOCK ADDRESS.
5HQL BRN NEXT1 [J. BACK FOR NEXT LINE.
5J== NDTR1 ADN 7 1 [RECONSTITUTE REMAINDER CT.
5JPW NDTR2 LDX 4 AWORK3(2)
5K9G SBX 3 ACOMMUNE5(2) [RELATIVISE GETTER.
5KP6 ADN 7 1 [RECONSTITUTE REMAINDER CT. (AGAIN).
5L8Q BZE 4 NONL [J. IF NO NL YET, THIS TRANSFER.
5LNB SBX 4 7 [COUNT OF CHS. OUTPUT SINCE LAST NL.
5M82 BZE 4 NDONE [J. IF NONE.
5MML LDX 1 ACOMMUNE6(2) [OUTPUT BLOCK ADDRESS.
5N7= LDX 5 ALOGLEN(1) [SAVE LENGTH, TO SAVE WORKING OUT.
5NLW ADN 1 AMOPOUT [POINTER TO START OF OUTPUT BUFFER.
5P6G STO 3 ACOMMUNE8(2) [SAVE GETTER.
5PL6 SBS 1 ACOMMUNE9(2) [RELATIVISE PLACER REMEMBRANCE.
5RJL PHOTO 7
5T3G SETUPCOR 5,1,AMXOR,AOUT [GET ANOTHER OUTPUT BLOCK.
5TH6 LDX 3 ACOMMUNE6(2) [ERSTWHILE ADDRESS OF OLD OUTPUT BLK.
5W2Q TESTMOVE 7,NMV2 [J. IF STILL VALID.
5WGB MHUNTW 3,AMXOR,ALCB [OTHERWISE RESET ALL THE POINTERS.
5X22 STO 3 ACOMMUNE4(2)
5XFL MHUNTX 3,AWORK1(2)
5X^= STO 3 ACOMMUNE5(2)
5YDW HUNT2 3,AMXOR,AOUT,1
5YYG NMV2 LDX 7 AMOPCHS(3) [MAX. TRANSFER LENGTH LESS TERMINATOR
5^D6 LDX 5 ACOMMUNE9(2) [RELATIVE PLACER IN OLD OUTPUT BLOCK.
5^XQ STO 7 AMOPCHS(1) [SAVE FOR NEXT TIME.
62CB LDX 0 5 [OLD REL. PLACER AT LAST NL.
62X2 STO 1 ACOMMUNE6(2) [NEW OUTPUT BLOCK ADDRESS.
63BL ADN 0 AMOPOUT
63W= SLC 5 2 [TURN INTO CHARACTER COUNT.
64*W STOZ AWORK3(2) [CLEAR TO INDICATE NO NL YET, THIS TR
64TG ADN 5 3 [ADD ON 3 FOR EOM SEQUENCE.
65*6 SBX 7 4 [REDUCE CT. BY CHS. ALREADY CONVERTED
65SQ STO 5 AMOPCHS(3) [SET CT. OF CHS. TO OUTPUT IN OLD BLK
66#B ADN 1 AMOPOUT [SET UP NEW BLOCK'S PLACER.
66S2 ADX 0 3 [MAKE PLACER ABSOLUTE.
67?L STO 1 ACOMMUNE9(2) [RESET NL ADDRESS REMEMBRANCE.
67R= LDX 5 0 [KEEP PTR. TO CH. AFTER LAST NL.
68=W SMO 4 [OLD PLACER BECOMES GETTER, TO MOVE
68QG MVCH 0 0 [PARTLY CONVERTED LINE INTO NEW BLOCK
68RK ...[ NOW SHORTEN OLD BLOCK TO SIZEREQD
68SN ... STO 1 ACOMMUNE4(2) [SAVE X1
68TR ... LDX 4 AMOPCHS(3)
68WW ... ADN 4 AMOPOUT-A1*4+3
68X^ ... SRL 4 2 [CALCULATE SIZE
68^4 ... ALTLENG 3,4
6927 ... MHUNTW 2,AMXOR,ALCB [NOW RESET AC4 WITH ALCB ADDR.
693= ... SMO FX2
694* ... LDX 1 ACOMMUNE4
695D ...[ AND RESET X1
696H ... SMO FX2
697L ... STO 2 ACOMMUNE4
698P ... LDX 2 FX2
69=6 SMO ACOMMUNE4(2) [PUT EOM CHARS. DIRECTLY AFTER LAST
69PQ LDN 4 GEOM [NL IN OLD BLOCK (OVERWRITING OLD CHS
6=9B LDEX 0 ACOMMUNE3(2) [GET CONVERSION TYPE BITS.
6=P2 MVCH 4 3
6?8L SRC 0 1 [REFORMAT TYPE WD.
6?N= STO 0 AMOPTY(3) [SET TYPE WD. IN OLD BLOCK.
6#7W LDX 3 ACOMMUNE5(2) [ADDRESS OF INPUT BLOCK.
6#MG BRN NEXT1 [BACK INTO THE FRAY!
6*76 NDONE STO 3 ACOMMUNE8(2) [SAVE RELATIVISED GETTER.
6*LQ NDTWO STOZ AWORK3(2) [CLEAR NL INDICATOR FOR NEXT TRANSFER
6B6B LDEX 5 ACOMMUNE3(2) [GET CONVERSION TYPE BITS.
6BL2 BRN PTEOM
6C5L NONL LDEX 5 ACOMMUNE3(2) [GET CONVERSION TYPE BITS.
6CK= STO 3 ACOMMUNE8(2) [SAVE RELATIVISED GETTER.
6D4W ORX 5 GSIGN [SET THE "NEW LINE SUPPRESSED" BIT.
6DJG PTEOM SMO ACOMMUNE4(2) [SET UP GETTER FOR EOM SEQUENCE.
6F46 LDN 0 GEOM
6FHQ SRC 5 1 [REFORMAT CONVERSION TYPE WORD.
6G3B LDX 2 ACOMMUNE6(2) [GET ADDRESS OF START OF OUTPUT BLOCK
6GH2 MVCH 0 3 [MOVE IN THE EOM CHARS.
6H2L SBN 1 AMOPOUT(2) [POSN. OF LAST CH. WRT. BUFFER START.
6HG= LDX 7 AMOPCHS(2)
6H^W SLC 1 2 [TURN INTO CT. OF CHS. TO OUTPUT.
6JFG STO 5 AMOPTY(2) [STORE CONVERSION TYPE.
6J^6 STO 1 AMOPCHS(2) [STORE OUTPUT COUNT.
6KDQ LDX 4 ALOGLEN(2) [GET LENGTH, TO SAVE WORKING OUT.
6KYB PHOTO 5
6LD2 SETUPCOR 4,1,AMXOR,AOUT [GET ANOTHER OUTPUT BLOCK.
6LXL STO 1 ACOMMUNE6(2) [SAVE ADDRESS OF NEW OUTPUT BLOCK.
6MC= STO 7 AMOPCHS(1) [SAVE FOR NEXT TIME.
6MWW LDX 3 ACOMMUNE5(2) [WAS ADDRESS OF INPUT BLOCK.
6NBG ADN 1 AMOPOUT
6NW6 STO 1 ACOMMUNE9(2) [SAVE LAST NL ADDRESS REMEMBRANCE.
6P*Q TESTMOVE 5,NEXT1 [J. BACK TO CONVERSION IF NO MOVEMENT
6PTB MHUNTW 3,AMXOR,ALCB [OTHERWISE RESET THE POINTERS.
6Q*2 STO 3 ACOMMUNE4(2)
6QSL MHUNTX 3,AWORK1(2)
6R#= STO 3 ACOMMUNE5(2)
6RRW BRN NEXT1
6S?G NDINP LDX 0 ACOMMUNE2(2) [REL. ADDRESS OF START OF TERMINATOR.
6SR6 LDX 3 ACOMMUNE6(2) [OUTPUT BLOCK ADDRESS
6T=Q ADX 0 ACOMMUNE4(2) [MAKE TERMINATOR ADDRESS ABSOLUTE.
6TQB LDX 4 ACOMMUNE3(2) [GET CONVERSION TYPE.
6W=2 SMO ACOMMUNE1(2) [LENGTH OF TERMINATOR.
6WPL MVCH 0 0 [MOVE IN TERMINATOR.
6X9= LDEX 5 4 [MASK OUT STABLE CONVERSION TYPE BITS
6XNW SBN 1 AMOPOUT(3) [PLACER REL. TO START OF BUFFER.
6Y8G ANDN 4 #4000 [CHECK NL SUPPRESSION BIT.
6YN6 SLC 1 2 [COUNT OF CHARS. IN BUFFER.
6^7Q LDN 0 #40 [COMMAND ERROR?
6^MB ANDX 0 5
7272 BZE 0 XNAUTO [NO
72LL LDX 0 BIT11 [CANCEL DC1 MARKER
736= SMO ACOMMUNE4(2) [PTR TO LCB
73KW ORS 0 GWAIT
745G XNAUTO
74K6 BZE 4 NLNS [J. IF NO NL SUPPRESSION.
754Q ORX 5 GSIGN [OTHERWISE INSERT MARKER.
75JB NLNS STO 1 AMOPCHS(3) [STORE NO. OF CHARS. IN THIS TRANSFER
7642 SRC 5 1 [REFORMAT CONVERSION TYPE WORD.
76HL SBX 1 ACOMMUNE1(2) [COUNT, LESS LENGTH OF ACTUAL TERM.
773= LDCH 4 ACOMMUNE3(2) [LENGTH OF MAX. TERMINATOR.
77GW STO 5 AMOPTY(3) [SAVE OUPUT TYPE.
782G ADN 4 AMOPOUT-A1*4+3(1) [ADD RED TAPE + 3 FOR ROUNDING.
78G6 SRL 4 2 [ROUND TO WORDS.
78^Q ALTLEN 3,4 [LEAVES ROOM FOR NEW TERM. IF NECC.
79FB SMO AWORK4(2) [WELL, WOULD YOU BELEIVE IT?!!
79^2 EXIT 1 0
7=DL [
7=Y= [THIS SUBROUTINE COPIES RECORD FROM THE OUTPUT BLOCK (AMXOR/AOUT)
7?CW [TO THE BUFFER IN THE LINE CONTROL BLOCK (AMXOR/ALCB)
7?XG [THE LINE CONTROL BLOCK (AMXOR/ALCB) IS THEN LOCKED DOWN
7#C6 [ON ENTRY
7#WQ [X3 POINTS TO THE LINE CONTROL BLOCK (AMXOR/ALCB)
7*BB [X7 CONTAINS THE SUBROUTINE LINK ADDRESS
7*W2 [ON EXIT
7B*L [X2 POINTS TO THE MPX ACTIVITY BLOCK (AMOP)
7BT= [X3 POINTS TO THE LOCKED DOWN LINE CONTROL BLOCK (AMXOR/ALCB)
7C#W [X4 CONTAINS THE ADDRESS OF THE BUFFER
7CSG [
7D#6 XCOP LDX 0 GWAIT(3)
7DRQ ANDN 0 #4000
7F?B BZE 0 XCOPC [J. IF NOT DOUBLE BREAK IN
7FR2 XCOP3 LDX 2 3
7G=L XCOPA LDX 2 BPTR(2)
7GQ= LDX 0 ATYPE(2)
7H9W BXGE 0 CACT,XCOP2A [J IF NEXT ACTIVITY REACHED
7HPG SRL 0 12
7J96 SBN 0 AMXOR+AOUT
7JNQ BNZ 0 XCOPA [J. IF NOT AOUT BLOCK
7K8B LDX 0 AMOPTY(2)
7KN2 ANDN 0 7
7L7L BNZ 0 XCOPE [J TO OUTPUT THIS BLOCK
7LM= XCOPB FREECORE 2
7M6W BRN XCOP3 [BACK FOR MORE TO FREE
7MLG XCOPC LDX 2 3
7N66 X1H LDX 2 BPTR(2)
7NKQ LDX 0 ATYPE(2)
7P5B BXGE 0 CACT,XCOP2A [J IF NO OUTPUT
7PK2 SRL 0 12
7Q4L SBN 0 AMXOR+AOUT
7QJ= BNZ 0 X1H
7R3W XCOPE LDN 4 AMOPOUT(2)
7RHG #
7S36 LDX 5 AMOPCHS(2) [NO OF CHS IN TRANSFER
7SGQ STO 2 1
7T2B BRN XNRE1 [DC3 FOR EVERY OUTPUT
7TG2 XNRED LDN 5 BUFFER(3)
7T^L BRN XNRE2
7WF= XNRE1 LDX 0 GDELE(3) [NOT READY
7WYW LDX 2 5 [CHAR COUNT
7XDG BZE 0 XNRED [NO AUTMOP
7XY6 LDX 0 GDELE+1(3) [MOVE INTO BUFFER DC3 AND DEL
7YCQ STO 0 BUFFER(3)
7YXB LDX 0 GDELE+2(3)
7^C2 STO 0 BUFFER+1(3)
7^WL LDN 5 BUFFER+2(3)
82B= XNRE2 MVCH 4 0(2)
82TW ADX 2 GDELE(3) [DC3 CHAR COUNT
83*G LDX 4 2
83T6 LDN 5 BUFFER(3)
84#Q LDXC 0 AMOPTY(1)
84SB BCC XNRE4 [J IF NOT READY
85#2 LDX 0 GWAIT(3)
85RL ANDX 0 BIT11 [CANCEL DC1 MARKER SET?
86?= BZE 0 XNRE4 [NO
86QW SBN 4 2
87=G LDX 2 4
87Q6 SBN 2 1 [PTR TO LAST CH -2
889Q SRC 2 2
88PB ADX 2 5
8992 LDN 0 #77 [CANCEL DC1
89NL DCH 0 0(2)
8=8= XNRE4 LDX 0 AMOPTY(1)
8=MW ANDN 0 2
8?7G BZE 0 XCOP1 [J IF NO BROADCAST
8?M6 LDX 2 4
8#6Q SBN 2 2
8#LB SRC 2 2 [PUT CANCEL
8*62 ADX 2 5
8*KL LDN 0 #10
8B5= DCH 0 0(2)
8BJW #
8C4G XCOP1 SBX 7 FX1 [RELATIVISE LINK
8CJ6 LOCKC 3,REFIND [LOCK LCB
8D3Q ADX 7 FX1
8DHB CALL 1 REFIND
8F32 LDX 3 2
8FGL LDX 2 IDENTM(3) [OBTAIN THE AMOP ADDRESS.
8G2= LDX 5 GUNITNO(3)
8GFW FINDLCA ,5
8G^G SLL 5 15
8HF6 DCA ,STO,5,MODE
8HYQ DLCA 1,DLA,4,COUNT
8JDB LDN 4 GREP1(3)
8JY2 DLCA 1,STO,4,CREP
8KCL LDN 4 BUFFER(3)
8KX= DLCA 1,STO,4,CTSA
8LBW XCOP2 EXIT 7 1 [SOME OUTPUT
8LWG XCOP2A
8MB6 EXIT 7 0 [NO OUTPUT DUE TO DOUBLE BREAKIN
8MTQ REFIND [LOCKC
8N*B MHUNTW 2,AMXOR,ALCB
8NT2 EXIT 1 0
8P#L [
8PS= XP0 LDN 0 #11
8Q?W STO 0 GLASTM(3)
8QRG XPX DLCA 1,DLA,0,MODE
8R?6 GLPERI
8RQQ LDX 0 JTIME
8S=B STO 0 GTIM(3)
8SQ2 EXIT 5 0
8T9L REJ GEOERR 1,REJECTED [TRANSFER REJECTED
8TP= [
8W8W [THIS SUBROUTINE PERFORMS THE 'MOPWAIT' MACRO
8WNG [ON ENTRY
8X86 [X7 CONTAINS THE SUBROUTINE LINK ADDRESS
8XMQ [ON EXIT
8Y7B [X1 = FX1
8YM2 [X2 = FX2
8^6L [X3 POINTS TO THE LINE CONTROL BLOCK (AMXOR/ALCB)
8^L= [
925W XM0 SBX 7 FX1 [RELATIVISE THE LINK ADDRESS
92KG MOPWAIT ,XE66 [GO UP IF INOPERABLE
9356 XMMX MHUNTW 3,AMXOR,ALCB [FIND THE AMXOR/ALCB BLOCK.
93JQ ADX 7 1 [DATUMISE THE LINK ADDRESS.
944B EXIT 7 1 [EXIT TO THE CALLING ROUTINE
94J2 XE66 SBN 7 1 [EXIT 0 IF INOP
953L BRN XMMX
95H= [
962W [
96GG [THIS SUBROUTINE IS COMPLICATED BECAUSE XCONV DOESN'T LEAVE US ANYWHERE
9726 [TO KEEP OUR LINK. IT IS THEREFORE DIVIDED INTO TWO PARTS, WITH A CALL
97FQ [ON XCONV IN THE MIDDLE.
97^B [THE FIRST PART (SBBC1) LOOKS FOR A BROADCAST MESSAGE BLOCK. IF THERE
98F2 [IS NONE IT EXITS BEYOND THE CALL ON THE SECOND PART.
98YL [IF A BLOCK IS FOUND IT SETS IT UP FOR CONVERSION, THEN EXITS TO THE
99D= [CALL ON THE CONVERSION ROUTINE.
99XW [THE SECOND PART (SBBC2) SENDS THE BROADCAST MESSAGE TO THE MONITORING
9=CG [FILE, THEN FREES THE BLOCK AND RE-ENTERS THE FIRST PART.
9=X6 [
9?BQ SBBC2 SBN 4 2(1) [STEP BACK AND RELATIVISE LINK.
9?WB MHUNTW 3,AMXOR,BBC [SEND MESSAGE TO THE MONITORING FILE
9#B2 LDX 5 ACOMMUNE7(2) [SAVE CHAR. COUNT FROM MOPOUT MACRO.
9#TL LDN 6 #2000 [BBC CATEGORY BIT
9**= OUTMON A1(3),A1+2,6,AMXOR,BBC
9*SW STO 5 ACOMMUNE7(2) [RESET MOPOUT MACRO'S COUNT.
9B#G MFREEW AMXOR,BBC [FREE THE BROADCAST MESSAGE BLOCK.
9BS6 ADX 4 1 [RESET LINK AND RE-ENTER FIRST PART.
9C?Q SBBC1 HUNTW 1,AMXOR,BBC [LOOK FOR A BROADCAST BLOCK.
9CRB BNG 1 SBBC3 [J. OUT IF NONE.
9D?2 MHUNTW 3,AMXOR,ALCB [FIND THE LINE CONTROL BLOCK.
9DQL LDX 6 GNOCHS(3) [USE NORMAL NL SEQUENCE AS TERMINATOR
9F== LDX 0 A1(1) [CT. OF CHARACTERS IN MESSAGE.
9FPW LDN 5 GNLBUFF
9G9G STO 1 ACOMMUNE5(2) [SAVE ADDRESS OF INPUT BLOCK.
9GP6 STO 6 ACOMMUNE1(2) [SET TERMINATOR LENGTH.
9H8Q LDX 1 FX1
9HNB LDN 6 6 ["BROADCAST" "DON'T DISCARD" BITS.
9J82 LDX 7 MXORBBC(1) [SET BLOCK TYPE.
9JML STO 5 ACOMMUNE2(2) [SET TERMINATOR START ADDRESS.
9K7= STO 6 ACOMMUNE3(2)
9KLW STO 7 AWORK1(2)
9L6G STO 0 AWORK2(2)
9LL6 EXIT 4 0 [EXIT TO DO THE CONVERSION.
9M5Q SBBC3 LDCT 0 #10 [UNSET BBC MARKER
9MKB ANDX 0 CLONG1(2)
9N52 ERS 0 CLONG1(2)
9NJL EXIT 4 2 [EXIT BEYOND 3RD. CALL WHEN FINISHED.
9P4= [
9PHW [
9Q3G [
9QH6 [
9R2Q [
9RGB [
9S22 [THIS ENTRY POINT EXPECTS ACOMMUNE7 OF THE ACTIVITY BLOCK TO HOLD THE
9SFL [NUMBER OF CHS. IN THE OUTPUT MESSAGE, WHICH IS IN A GMON/AOUT BLOCK.
9S^= [INITIALLY A SEARCH IS MADE FOR BROADCAST MESSAGES, AND THESE ARE
9TDW [CONVERTED TO LINE FORMAT BEFORE NORMAL OUTPUT IS DEALT WITH.
9TYG [
9WD6 Z1MOPOUT [MOPOUT MACRO ENTRY
9WXQ LDN 6 0 [SET MARKER - NO BROADCAST.
9XCB CALL 4 SBBC1 [FIND AND CONVERT ANY BROADCAST BLOCK
9XX2 CALL 4 XCONV
9YBL CALL 4 SBBC2
9YW= HUNTW 1,GMON,AOUT [FIND THE NORMAL MESSAGE BLOCK.
9^*W BNG 1 XE3B [J. IF ENTERED FOR BROADCAST ONLY.
9^TG MHUNTW 3,AMXOR,ALCB [FIND THE LINE CONTROL BLOCK.
=2*6 STO 1 ACOMMUNE5(2) [SAVE ITS ADDRESS.
=2SQ LDX 4 A1+1(1) [GET THE CATEGORY WORD.
=3#B LDX 5 ACOMMUNE7(2) [GET THE NO. OF CHARS. TO CONVERT.
=3S2 BNG 5 XE3B [J IF BROADCAST ONLY
=4?L LDX 1 FX1
=4R= SLL 4 1
=5=W LDX 0 MONAOUT(1) [SET BLOCK TYPE.
=5QG STO 5 AWORK2(2)
=6=6 STO 0 AWORK1(2)
=6PQ #
=79B LDX 6 4
=7P2 ANDN 6 #40 [MARKER IN GWAIT B11 IF COMERROR
=88L BZE 6 RRA [CATEGORY MESSAGE,OTHERWISE J
=8N= LDCT 0 1
=97W SRL 0 3
=9MG ORS 0 GWAIT(3)
==76 RRA LDX 6 4
==LQ ANDN 6 4 [MARK OBJ PROG CATEGORY
=?6B SLL 6 2
=?L2 RCU BPZ 4 XE7 [BRANCH IF NOT READY CATEGORY
=#5L LDX 0 AREADY(3)
=#K= LDN 5 AREADY+1
=*4W ORN 6 1 ["READY CATEGORY BIT"
=*JG STO 0 ACOMMUNE1(2) [AND "READY" SEQUENCE TERMINATOR
=B46 STO 5 ACOMMUNE2(2)
=BHQ STO 6 ACOMMUNE3(2)
=C3B CALL 4 XCONV [DO THE CONVERSION.
=CH2 MHUNTW 3,AMXOR,ALCB [FIND THE LINE CONTROL BLOCK.
=D2L READYOFF [CLEAR BREAK-IN MARKER
=DG= XE1 MOPWAIT 1,XE6 [J IF INOPERABLE
=D^W Z2MOPOUT [ENTRY TO REPEAT READY
=FFG SMOPWAIT [ENSURE THAT THE BUFFER IN FREE
=F^6 MHUNTW 3,AMXOR,ALCB [FIND THE LINE CONTROL BLOCK.
=GDQ #
=GYB #
=HD2 BBREAKIN 3,XE4 [IF BREAKIN FREE READY BLOCK
=HXL CALL 7 XCOP [COPY OUTPUT INTO THE LCB BUFFER
=JC= BRN XE5A [NO OUTPUT
=JWW XE2 DLCA 1,STO,4,CTSA2
=KBG LDN 0 GREP2(3)
=KW6 DLCA 1,STO,0,CREP2
=L*Q LDX 6 AWORK1(2)
=LTB DLCA 1,DLA,6,COUNT2
=M*2 LDN 0 2 [SPLIT MODE #13 INTO 2 AND #11
=MSL DLCA 1,DLA,0,MODE2
=N#= LDN 0 #11
=NRW LDN 5 #13
=P?G STO 5 GLASTM(3)
=PR6 CALL 5 XPX
=Q=Q PHOTO 7 [PHOTOGRAPH THE CORE IMASE
=QQB MOPWAIT 1,XE6 [WAIT FOR INPUT
=R=2 TESTMOVE 7,XE2A [BRANCH IF NO MOVEMENT IN CORE
=RPL MHUNTW 3,AMXOR,ALCB [FIND THE LINE CONTROL BLOCK.
=S9= XE2A LDEX 7 GWAIT(3) [GET INPUT TRANSFER TYPE BITS.
=SNW #SKI K6MULTIPLX>99-99
=T8G (
=TN6 BXL 7 TNUM(1),XE2B [J. IF INPUT TYPE WITHIN RANGE.
=W7Q GEOERR 1,MOPBITS
=WMB XE2B
=X72 )
=XLL ERS 7 GWAIT(3) [OTHERWISE CLEAR INPUT TYPE
=Y6= BBREAKIN 3,XE4 [J. IF BROKEN IN DURING WAIT.
=YKW SMO 7
=^5G BRN TABLE [J. ACCORDING TO INPUT TYPE.
=^K6 [
?24Q [THIS SECTION DEALS WITH THE 'READY' INPUT
?2JB [
?342 XE3 LDEX 5 GREP2(3) [OBTAIN THE REMAINDER COUNT.
?3HL SBX 6 5 [NUMBER OF CHARS. INPUT.
?43= LDX 5 6
?4GW ADN 5 11 [ADD ON 2WDS. RED TAPE & ROUND UP
?52G PHOTO 4
?5G6 SRL 5 2 [CONVERT TO WORDS.
?5^Q LDX 0 BIT11
?6FB ANDX 0 GWAIT(3) [UNSET IF CUT DC1 MARKER SET
?6^2 ERS 0 GWAIT(3)
?7DL MFREEW AMXOR,AOUT [FREE THE OLD OUTPUT BLOCK.
?7Y= SETUPCOR 5,1,FILE,FRB
?8CW TESTMOVE 4,XE3A
?8XG MHUNTW 3,AMXOR,ALCB
?9C6 XE3A BBREAKIN 3,XE5 [J. IF BROKEN IN WHILE GETTING CORE.
?9WQ STO 6 A1(1) [SET COUNT OF CHARACTERS INPUT.
?=BB LDN 0 BUFFER(3) [MOVE IN THE INPUT.
?=W2 ADN 1 A1+2
??*L SMO 5
??T= MOVE 0 -2
?##W CHANG [GET INPUT INTO A READLINE BLOCK.
?#SG LDN 6 0 [SET MARKER - NO BROADCAST.
?*#6 CALL 4 SBBC1
?*RQ CALL 4 XCONV
?B?B CALL 4 SBBC2
?BR2 XE3B BNZ 6 XE10 [J. TO OUTPUT IF BROADCAST SWITCH SET
?C=L UP [FINISH
?CQ= [
?D9W [THIS SECTION DEALS WITH 'BREAK-IN'
?DPG [
?F96 XE4 HUNTW 1,AMXOR,AOUT [FREE THE OLD OUTXUT BLOCK
?FNQ BNG 1 XE5A [NONE
?G8B XE5 FREECORE 1 [OR IT COULD BE A SPARE FILE/FRB.
?GN2 XE5A READYON [SET THE 'READY' MACRO BREAK-IN BIT
?H7L XE6 UP [FINISH
?HM= [
?J6W [THIS SECTION DEALS WITH MESSAGES TO BE OUTPUT
?JLG [
?K66 XE7 SLC 4 6
?KKQ BPZ 4 XE7A [J. IF NOT "FORCED TYPE" CATEGORY.
?L5B #
?LK2 ORN 6 #10 [OTHERWISE SET BIT
?M4L #
?MJ= XE7A ANDN 4 2 [J. IF NOT "BROKEN IN" MESSAGE.
?N3W BZE 4 XE8
?NHG ORN 6 2 [SET "BROKEN IN" REMEMBRANCE.
?P36 XE8 LDX 0 NLMSK(1)
?PGQ LDN 5 GNLBUFF
?Q2B ANDX 0 GWAIT(3)
?QG2 LDX 4 GNOCHS(3)
?Q^L BZE 0 XE9 [J. IF NO NEW LINE SUPPRESSION NEEDED
?RF= ORN 6 #4000 [SET "NEW LINE SUPPRESSION" BIT.
?RYW ERS 0 GWAIT(3) [UNSET NEW LINE SUPPRESSION BIT.
?SDG LDCH 0 CHARS(3) [NO 0F CHARS IN TERMINATOR WITH NEW
?SY6 SBX 4 0 [LINE CHARACTERS SUPPRESSED
?TCQ SRC 0 2
?TXB ADX 5 0 [STEP POINTER TO AFTER NL CHARS.
?WC2 XE9 STO 4 ACOMMUNE1(2) [SET THE REMAINING PARAMETERS FOR
?WWL STO 5 ACOMMUNE2(2) [THE CONVERSION ROUTINE.
?XB= STO 6 ACOMMUNE3(2)
?XTW CALL 4 XCONV [DO THE CONVERSION.
?Y*G XE10 MOPWAIT 1,XE6 [WAIT FOR THE BUFFER TO BE FREED
?YT6 Z3MOPOUT [ENTRY TO REPEAT NORMAL OUTPUT
?^#Q SMOPWAIT [ENSURE THE BUFFER IS FREE
?^SB MHUNTW 3,AMXOR,ALCB [FIND THE LNE CONTROL BLOCK.
#2#2 CALL 7 XCOP [COPY OUTPUT INTO THE LCB BUFFER
#2RL BRN XE6 [NO OUTPUT
#3?= CALL 5 XP0 [INITIATE THE TRANSFER.
#3QW UP [FINISH
#4=G [
#4Q6 [THIS SECTION DEALS WITH 'CANCEL'
#59Q [
#5PB ZB4 BBREAKIN 3,XE4 [J. IF BROKEN IN AFTER CANCELLED.
#692 CALL 7 XM0 [WAIT FOR BUFFER TO BE FREE.
#6NL BRN XE6 [J IF INOP
#78= BBREAKIN 3,XE4 [J. IF BREAK IN DURING COORDINATION.
#7MW LDN 5 XCANCEL(1) [INSERT 'CANCEL' IN BUFFER.
#87G LDN 6 BUFFER(3)
#8M6 MVCH 5 6
#96Q LDN 5 AREADY+1(3)
#9LB #
#=62 LDX 7 AREADY(3) [CANCEL HAS READY SEQUENCE WITHOUT
#=KL SBN 7 2 [DC1
#?5= SMO 7
#?JW #
##4G MVCH 5 0 [INSERT 'READY' TERMINATOR
##J6 LDN 0 #77 [OVERWRITE 76 WITH 77(DC1)
#*3Q LDX 2 6
#*HB SLC 2 2
#B32 SBN 2 1
#BGL SRC 2 2
#C2= DCH 0 0(2)
#CFW LDN 4 4 [LEAVE OUT LAST 2 CHARS OF READY
#C^G ADX 4 AREADY(3) [X4 CONTAINS NO. OF CHS.
#DF6 CALL 7 XCOP1 [SET THE LCB FOR THE OUTPUT
#DYQ NULL [XCOP1 ONLY ONE EXIT
#FDB BRN XE2 [BRANCH TO OUTPUT MESSAGE + 'READY'
#FY2 [
#GCL [THIS SECTION DEALS WITH 'TIME UP'
#GX= [
#HBW ZB5 MFREEW AMXOR,AOUT [FREE THE OLD OUTPUT BLOCK.
#HWG LDCT 0 #24 [J. IF MARKED "TO BE ABANDONED".
#J3N ...#UNS CRAMP
#J8W ... ORN 0 #40 [ALSO TEST FOR MOP OFF LIMBO
#J?G ... ORN 0 2 [TEST ABANDON FOR FINISH B22
#JB6 ANDX 0 JOBEVENTS(2)
#JTQ BNZ 0 XE5A
#K*B LDX 0 CONTEXT(2)
#KT2 ANDN 0 #2
#L#L BNZ 0 ZB7 [BRANCH IF IN 'NO USER' CONTEXT
#LS= [
#M?W [THIS SECTION DEALS WITH 'TIME UP' IN 'USER' CONTEXT
#MRG [
#N?6 ZB6 LDCT 6 #40
#NQQ ANDX 6 GWAIT(3)
#P=B BZE 6 RESTART [J. IF ALREADY RESTARTED.
#PQ2 LDX 5 ZJTIMEOUT(1)
#Q9L CALL 7 OUTM [OUTPUT TIMED OUT MESSAGE
#QP= TREST LDCH 0 JSOURCE1(2)
#R8W SBN 0 7
#RNG BZE 0 XE5A
#S86 MHUNTW 3,AMXOR,ALCB
#SMQ ANDX 6 GWAIT(3)
#T7B BNZ 6 XCOOR [J IF NOT ALREADY RESTARTED
#TM2 LDN 0 1
#W6L ANDX 0 GWAIT(3)
#WL= ERS 0 GWAIT(3)
#X5W BNZ 0 XE5A [J IF B.I. BIT SET (FOR ABANDON)
#XKG RESTART
#Y56 LDX 5 ZJTOREST(1)
#YJQ CALL 7 OUTM [OUTPUT RESTARTED MESSAGE
#^4B OUTNULL
#^J2 MONOUTX TIME(1) [OUTPUT '_ BELL' TO CONSOLE.
*23L UP [FINISH
*2=P ...XCOOR LONGSET AWAITMOP,XCOOR
*2B= ... LDX 0 ZMIN(1)
*2FR ... MPY 0 IPMOPWAIT
*2K* ...YLNST LONGSTOP TOBRK,TOTIM,,,1
*2NX ... BRN TREST
*2QX ...TOTIM LDX 1 CLONG3(2)
*2SX ... SBN 1 2
*2WX ... BNG 1 YSUP
*2YX ... BDX 1 YLNST
*32X ...YSUP LDX 1 FX1
*34X ... CALL 3 ZLNOF
*375 ... MHUNTW 3,AMXOR,ALCB
*3B8 ... LDX 5 CONTEXT(2)
*3K? ... ANDN 5 2
*3SB ... BZE 5 TOOUT
*43F ... ISITJOB TOOUT
*488 ... BCT 5 TOOUT
*4#Y ...TOBRK CALL 3 ZLNOF
*4C# ... BRN TREST
*4FQ [
*4^B [THIS SECTION DEALS WITH 'TIME UP' IN 'NO USER' CONTEXT
*5F2 [
*5YL ZB7 LDCT 0 #20
*6D= ANDX 0 GWAIT(3)
*6XW BNZ 0 ZB6 [BRANCH IF IN 'JOB' OR 'INPUT'
*7=? ... LDCT 5 #400
*7JN ...TOOUT LDCT 0 #40 [UNSET "TIMED OUT" BIT, IF IT IS SET.
*7X6 ANDX 0 GWAIT(3)
*8BQ ERS 0 GWAIT(3)
*8DF ... STO 5 AWORK1(2)
*8G8 ... PHOTO 6
*8HX ... BNG 5 ZCLSE
*8KL ... SMO 5
*8M* ... LDX 5 ZJMOPWT(1)
*8P4 ... LDN 7 ZCLSE
*8QR ... BRN OUTSB
*8SG ...ZCLSE
*8WB LDX 5 ZJTOCLOSE(1)
*9TL CALL 7 OUTM [OUTPUT CLOSED DOWN MESSAGE
*9^H ... LDCH 0 JSOURCE1(2)
*=5D ... SBN 0 7
*=9* ... BZE 0 XE5A
*=*= SETNCORE ZZS,2,AMXOR,AOUT [CORE BLOCK FOR 3 NEWLINES OUTPUT
*=SW TESTMOVE 6,ZB8 [J. IF NO CORE MOVEMENT.
*?#G MHUNTW 3,AMXOR,ALCB [RELOCATE THE LINE CONTROL BLOCK.
*?S6 ZB8 LDN 4 GNLBUFF(3) [INSERT THREE NEW LINE SEQUENCES,
*#?Q LDN 5 AMOPOUT(2) [DC3, END OF MESSAGE.
*#RB LDCH 1 CHARS(3)
**?2 MVCH 4 0(1)
**QL LDN 4 GNLBUFF(3)
*B== MVCH 4 0(1)
*BPW LDX 0 1
*C9G LDX 1 GNOCHS(3)
*CP6 LDN 4 GNLBUFF(3)
*D8Q ADX 0 0
*DNB MVCH 4 0(1)
*F82 ADX 0 1
*FML STO 0 AMOPCHS(2) [INSERT THE NUMBER OF OUTPUT CHARS
*G7= STOZ AMOPTY(2) [CLEAR THE OUTPUT TYPE MASK.
*GLW CALL 7 XM0 [WAIT FOR BUFFER TO BE FREE
*H6G BRN XRI
*HL6 CALL 7 XCOP [COPY OUTPUT INTO THE LCB BUFFER
*J5Q BRN XRIN [NO OUTPUT
*JKB CALL 5 XP0 [INITIATE THE TRANSFER.
*K52 CALL 7 XM0 [WAIT FOR BUFFER TO BE FREE
*KJL BRN XRI
*L4= XRIN
*LHW SMO A1+FPTR(3) [NULLIFY ALINES RING POINTERS.
*M3G STOZ BPTR
*MH6 STOZ A1+BPTR(3)
*MPB ...XRI LDX 2 FX2
*MXL ... LDX 5 AWORK1(2)
*N5W ... BPZ 5 TOLIM
*N#6 ... FREECORE 3 [FREE THE LINE CONTROL BLOCK.
*NGB ACROSS LOGOUT,7 [CPA SUICIDE
*NL? ...TOLIM LDN 0 7
*NQ8 ... DCH 0 JSOURCE1(2)
*NW5 ... ACROSS MULTIPLX,4
*P22 [
*PFL [THIS SUBROUTINE OUTPUTS THE MESSAGE WHOSE ADDRESS IS IN X5 TO THE
*P^= [MONITORING FILE AND CONSOLE WITH THE TIME AS A PARAMETER
*QDW [ON ENTRY
*QYG [X5 CONTAINS ADDRESS OF MESSAGE TO BE OUTPUT
*RD6 [X7 CONTAINS THE SUBROUTINE LINK ADDRESS
*RXQ [
*SCB OUTM SBX 7 FX1 [RELATIVISE THE LINK
*SX2 OUTBLOCN 2 [CREATE 2 WORD PARAMETER BLOCK TO
*TBL [PREVENT CONFUSION WITH EARLIER PMTRS
*TW= [PREVIOUSLY CREATED GMON/ASET BLOCK.
*W*W OUTPARC TIMENOW
*WTG ...OUTSB MONOUTX 5 [OUTPUT MESSAGE
*X*6 ADX 7 1 [DATUMISE THE LINK.
*XSQ EXIT 7 0 [EXIT TO THE CALLING ROUTINE
*Y#B #END
^^^^ ...13702602000200000000