22FL #SEG MONRESUM [R H TERRY 22^= #OPT K0MONRESUM=0 23DW #LIS K0MONRESUM>K0ALLGEO 23YG #OPT K6MONRESUM=K6ALLGEO 24D6 # 24XQ # THIS SEGMENT IMPLEMENTS THE MONRESUME COMMAND.THE FIRST PARAMETER IS 25CB # ANALYSED AND A FLAG SET ACCORDING AS THIS IS STOP OR GO (OR NULL). WE 25X2 # THEN LOOK UP THE CURRENT O/P INSTRUCTION, AND IF IT IS AN EXTRACODE 26BL # WHICH COULD HAVE GENERATED AN 'OPEN PERI' TYPE MONITOR EVENT,A 26W= # PROGRAM EVENT IS SIMULATED BY SETTING THE EVENT WORDS OF THE APET OR 27*W # AOLPT ACTIVITY AND FPUT-ING IT ON THE LIST. 27TG # AWORK1 IS USED AS FOLLOWS: 28*6 # B23 PARAM IS STOP B22 C/I IS SMOED B21 C/I IS PERI 28SQ # B20 22AM DATA MODE B19 PCA TO BE FPUT B18 C/I IS OBEY(MK6 ONLY 29#B # IN MK6 AWORK2-4 ARE SET UP TO CONTAIN OUR FUTURE EVENT WORDS 29S2 # IN MK6.5 VENT1-6 OF THE DATA BLOCK ARE SET UP TO CONTAIN OUR FUTURE 2=?L # EVENT WORDS 2=R= # 2?=W 8HMONRESUM 2?QG # 2#=6 # THE ONLY ENTRY POINT 2#PQ # 2*9B SEGENTRY K1MONRESUM,ZEP1 2*P2 # 2B8L # DATA WORDS IN AN ADATA/CSTORE WORK BLOCK 2BN= # 2C7W #DEF VENT1=A1 2CMG #DEF VENT2=VENT1+1 2D76 #DEF VENT3=VENT2+1 2DLQ #DEF VENT4=VENT3+1 2F6B #DEF VENT5=VENT4+1 2FL2 #DEF VENT6=VENT5+1 2G5L #DEF PREMOD=VENT6+1 2GK= #DEF ZINST=PREMOD+1 2H4W #DEF WORK1=ZINST+1 2HJG #DEF START=WORK1+1 2J46 #DEF ZLEN=START+10-A1 [DATA BLOCK LOGICAL LENGTH 2JHQ # 2K3B #DEF VENTSZ=2*G4+4 [SIZE OF AN AOLPT'S EVENT AREA 2KH2 # 2L2L XSTOP 4HSTOP 2LG= XGO 4HGO 2L^W SMOBIT #10000000 [B2 OF O/P WD 9 SET IF LAST INSTRUCTN 2MFG [ WAS SMO-ED 2MP# ...XMDAMSK #77700077 2M^6 XFMSK #07740000 2NDQ XTHOU +1000 2NYB ZERR1 +APFERR [PARAMETER FORMAT ERROR:%C 2P88 ...ZERR1A +JMAXPAR 2PD2 ZERR3 +JMONILL [ILLEGAL CHANGES TO CORE IMAGE SINCE 2PXL [ MONITOR EVENT 2QC= #SKI G3 2QWW XLINK PAIR OPCA,1 2RBG #SKI G4 2RW6 XLINK PAIR PAGETURN,2 2S*Q PERI PERI 0 0 [ADMISSABLE O/P CURRENT INSTRUCTIONS 2STB XCODS 2T*2 ALLOT 0 0 2TSL REL 0 0 2W#= DIS 0 0 2WRW CONT 0 0 2X?G #DEF NXCODS=0?-XCODS [NO OF ENTRIES IN XCODS TABLE 2XR6 OBEY OBEY 0 2Y=Q SMO SMO 0 2YQB ZEP1 [ENTRY POINT 2^=2 STOZ AWORK1(2) [UNSET ALL SWITCHES 2^PL PARAPASS 329= MHUNT 3,CPB,CUNI 32NW LDX 0 ANUM(3) 338G BZE 0 STGO 33N6 BNG 0 STGO [IF NO PARAMETER, 'GO' ASSUMED 347Q SBN 0 5 34MB BPZ 0 XERR1 [ERROR IF 1ST PARAM HAS >4 CHARS 3572 LDX 0 APARA(3) 35LL BXU 0 XSTOP(1),NOTST 366= LDN 7 1 36KW ORS 7 AWORK1(2) [IF 'STOP' SET B23 OF SWITCH WORD 375G BRN STGO 37K6 NOTST BXU 0 XGO(1),XERR1 [IF NOT 'GO' ERROR 384Q STGO FREECORE 3 [FREE UNI BLOCK 389Y ... FJOCA 3,2 38C6 ... JBS XERR3A,3,JBLOAD [ERROR IF NOT LOADED 38JB PARAFREE [FREE MULTI BLOCKS FOR PARPARAM 3942 ... PAPARAM XERR1,XERR1A [SET UP O/P PARAMS 39HL FPCACA 1,2 3=3= LDX 0 ALMT(1) [GET MODE OF CURRENT MEMBER 3=GW ANDN 0 #10 3?2G ORS 0 AWORK1(2) [B20 OF AWORK1 SET IF 22AM 3?G6 SETNCORE ZLEN,3,ADATA,CSTORE [WORK BLOCK TO HOLD WDS 0-9 OF O/P 3?^Q LDN 5 0 [FIRST O/P WORD WANTED 3#FB RET LDN 6 10 [NO OF O/P WORDS WANTED 3#^2 SBX 6 5 3*DL CALL 7 ZGETWORD 3*Y= BRN XGEO 3BCW BXL 4 6,NOTAL [J IF NOT ACCESS TO ALL WDS REQUESTED 3BXG LDX 4 6 [ OTHERWISE SET NO GOT=NO REQUESTED 3CC6 LDN 6 0 [ AND FLAG NO MORE GETWORDS NEEDED 3CWQ NOTAL LDX 2 3 3DBB MHUNTW 3,ADATA,CSTORE [FIND DATA BLOCK 3DW2 LDX 7 3 [ AND REMEMBER ITS ADDRESS 3F*L ADN 3 START 3FT= ADX 3 5 [X3-> NEXT POSITION IN DATA BLOCK 3G#W SMO 4 3GSG MOVE 2 0 [MOVE THIS BATCH OF WORDS ACROSS 3H#6 ADX 5 4 3HRQ BNZ 6 RET [DO A FURTHER GETWORD IF REQUIRED 3J?B LDX 2 FX2 3JR2 LDX 3 7 [RESTORE DATA BLOCK ADDR 3K=L LDX 6 START+8(3) [O/P WORD 8 3KQ= LDX 7 START+9(3) [O/P WORD 9 3L9W SMO 6 3LPG LDN 5 0 [GET ONR (B2-23) 3M96 SBN 5 1 [NOW X5 IS O/P ADDR OF MONITORED XCOD 3MNQ ANDX 7 SMOBIT(1) 3N8B BZE 7 NOSMO [J IF LAST O/P INSTR NOT SMO-ED 3NN2 LDN 0 2 3P7L ORS 0 AWORK1(2) [ OTHERWISE SET 'SMO-ED' BIT 3PM= SBN 5 1 3Q6W LDN 6 2 3QLG CALL 7 ZGETWORD [ AND TRY TO ACCESS WDS [8]-2 & [8]-1 3R66 BRN XERR3 3RKQ MHUNTW 2,ADATA,CSTORE 3S5B LDX 0 0(3) 3SK2 STO 0 PREMOD(2) [STORE PREMODIFYING INSTRUCTION 3T4L ADN 5 1 3TJ= SBN 4 1 3W3W BZE 4 NOSMO [J IF C/I INACCESSIBLE THIS GETWORD 3WHG LDX 0 1(3) 3X36 STO 0 ZINST(2) [ ELSE STORE CURRENT INSTRUCTION 3XGQ BRN XANAL 3Y2B NOSMO LDN 6 1 [ACCESS CURRENT INSTRUCTION 3YG2 CALL 7 ZGETWORD 3Y^L BRN XERR3 3^F= MHUNTW 2,ADATA,CSTORE 3^YW LDX 0 0(3) 42DG STO 0 ZINST(2) [STORE CURRENT INSTRUCTION 42Y6 XANAL [NOW ZINST CONTAINS CURRENT O/P INSTRUCTION,AND IF THIS 43CQ [WAS PREMODIFIED, PREVIOUS INSTRUCTION IS IN PREMOD 43XB LDX 2 FX2 44C2 STOZ AWORK4(2) [CLEAR CONCEPTUAL 'SMO' REGISTER 44WL LDX 0 AWORK1(2) 45B= ANDN 0 2 45TW BZE 0 N117 [J IF CURRENT INSTR NOT PREMODIFIED 46*G MHUNTW 3,ADATA,CSTORE 46T6 LDX 6 PREMOD(3) [GET PREMODIFYING INSTRUCTION 47#Q LDX 0 6 47SB ANDX 0 XFMSK(1) 48#2 BXU 0 OBEY(1),N023A [J IF PREMOD INSTR NOT OBEY 48RL CALL 7 ZOBEY [ ELSE GET INSTR AT END OF OBEY CHAIN 49?= LDX 0 6 49QW ANDX 0 XFMSK(1) 4==G N023A BXU 0 SMO(1),XERR3 [ERROR IF PREMOD INSTR NOT SMO OR 4=Q6 [ OBEY -> SMO 4?9Q LDX 5 6 4?PB CALL 7 OPERAND [GET OPERAND OF SMO 4#92 LDN 6 1 4#NL CALL 7 ZGETWORD [GET WORD ADDRESSED BY SMO 4*8= BRN XERR3 4*MW LDX 0 0(3) 4B7G STO 0 AWORK4(2) [ AND SET OUR 'SMO' REGISTER 4BM6 N117 MHUNTW 3,ADATA,CSTORE 4C6Q LDX 6 ZINST(3) [GET CURRENT INSTRUCTION 4CLB LDX 0 6 4D62 ANDX 0 XFMSK(1) 4DKL BXU 0 OBEY(1),N023B [J IF CURRENT INSTRUCTION NOT OBEY 4F5= CALL 7 ZOBEY [ ELSE GET INSTR AT END OF OBEY CHAIN 4FJW LDX 0 6 4G4G ANDX 0 XFMSK(1) 4GJ6 N023B BXE 0 PERI(1),YPERI [J IF MONITORED INSTR IS PERI 4H3Q LDN 7 NXCODS 4HHB TXCOD BXE 0 XCODS(1),XFND [TEST IF MNTRD O/P INSTR COULD HAVE 4J32 ADN 1 1 [ CAUSED AN 'OPEN PERI' TYPE MONEVENT 4JGL BCT 7 TXCOD 4K2= BRN XERR3 [ERROR IF NOT 4KFW YPERI LDN 0 4 4K^G ORS 0 AWORK1(2) [IF MNTRD INSTR WAS PERI,SET B21 4LF6 XFND LDX 1 FX1 4LYQ MHUNTW 3,ADATA,CSTORE 4MDB STO 6 VENT5(3) [DUMP COPY OF MONITORED INSTRUCTION 4MY2 LDX 5 6 4NCL CALL 7 OPERAND 4NX= MHUNT 3,ADATA,CSTORE 4PBW STO 5 VENT2(3) [DUMP OPERAND (+ ALL MODIFICATION) OF 4PWG [ MONITORED INSTRUCTION 4QB6 STOZ VENT6(3) [INDICATES 'E/CODE NOT IMPLD BY EXEC' 4QTQ LDX 0 AWORK1(2) 4R*B ANDN 0 4 4RT2 BNZ 0 T157 [J IF PERI 4S#L SRL 6 21 [ISOLATE ACCUMULATOR FIELD OF INSTR 4SS= ANDN 5 256 4T?W BZE 5 XUNO [J IF ACC FIELD IS UNIT NO 4TRG SMO 6 4W?6 LDX 6 START(3) 4WQQ ANDN 6 #77 [ ELSE GET UNIT NO FROM B18-23 OF ACC 4X=B XUNO STO 6 VENT3(3) [REMEMBER UNIT NO FOR EVENT3 4XQ2 WORDFIN [CLEAR UP AFTER GETWORDS 4Y9L BRN N157 [ AND J TO SET PCA EVENT WORDS 4YP= T157 LDN 6 1 4^8W CALL 7 ZGETWORD [GET 1ST WORD OF PERI CONTROL AREA 4^NG BRN XERR3 [USER ERROR IF OUT OF RESERVATIONS 5286 LDX 4 0(3) [TYPE/MODE WORD OF PERI CONTROL AREA 52MQ #SKI K6MONRESUM>699-699 537B TRACE 4,PERICA 53M2 WORDFIN 546L MHUNTW 3,ADATA,CSTORE [FIND DATA BLOCK 54L= LDCT 6 #700 555W ANDX 6 VENT5(3) [ISOLATE ACC FIELD OF PERI INSTRN 55KG BNG 4 UNO1 [J IF ACC SPECD IN PERI CONTAINS 5656 [ UNIT NUMBER 56JQ SLC 6 3 [SET UNIT NO IN B9-23 574B BRN SETTP 57J2 UNO1 SLC 6 3 583L SMO 6 58H= LDX 6 START(3) [GET SPECIFIED ACCUMULATOR 59GG SETTP STO 4 VENT4(3) [EVENT4-1ST WD OF PERI CONTROL AREA 5=26 STO 6 VENT3(3) [EVENT3-X OR REPLACED X IN PERI 5=FQ LDCT 0 #377 5=^B ANDX 0 4 [ISOLATE TYPE FROM TYPE/MODE WORD 5?5? ... SEGENTRY K90MONRESUM [MEND POINT FOR MANYDA 5?98 ... ANDN 6 #77 [ONLY WANT UNIT NO 5?F2 ORX 6 0 [SET TYPE IN B0-8 OF X6[ 5?YL [ MAKE TYPE 13 LOOK LIKE TYPE 6 5#D= LDX 0 6 5#XW SRL 0 15 5*CG SBN 0 13 5*X6 BNZ 0 NOTFDS 5BBQ ANDX 6 BSP16 5BWB LDCT 0 6 5CB2 ORX 6 0 5CTL NOTFDS 5CYQ ... ADN 0 13-6 5D3W ... BZE 0 TYPE6 [FOR MANYDA SPECIAL 5D72 ... ANDX 6 XMDAMSK(1) 5D=6 ...TYPE6 5D*= FPCACA 3,2 5DSW HUNT2 3,APERI,APERIRES 5F#G FPERENTA 3,6,NOENT [IF PRL ALLOCATED,X3-> ENTRY ELSE 5FS6 [ IF UNALLOCATED J TO NOENT 5G?Q LDX 0 1(3) 5GRB BNG 0 OFFLN [J IF PERIPHERAL MARKED OFF-LINE 5H?2 NOENT 5HQL N157 LDN 0 #20 5J== ORS 0 AWORK1(2) [SET 'PCA TO BE FPUT' BIT 5JPW OFFLN 5JX4 ...#SKI JWPHASE4 5K4= ... HLSINFORM XBRK,RESUME,JOBNO(2) 5K9G VFREE APED,ANEVENT [NOW ALL CHECKS ARE OVER, FREE ANY 5KP6 VFREE APED,ADELETE [ PROGRAM EVENT BLOCK 5L8Q MHUNTW 3,ADATA,CSTORE 5LNB LDX 0 AWORK1(2) 5M82 STO 0 WORK1(3) [SAVE AWORK1 ACROSS PCAPLUG 5MML PCAPLUG XBRK [PLUG IN O/P,CONTROL -> PCA 5N7= FJOPCA 3,2 5NLW LDX 4 APROGTIME(3) [RESET PROGRAM TIMER IF IT HAS EXPIRE 5P6G BNG 4 RMORE 5PL6 BNZ 4 RNMOR 5Q5Q LDX 4 APROGTIME+1(3) 5QKB BNZ 4 RNMOR 5R52 RMORE LDX 4 IPROGTIME 5RJL MPY 4 XTHOU(1) 5S4= STO 4 APROGTIME(3) 5SHW STO 5 APROGTIME+1(3) 5T3G RNMOR FCAPCA 3,2 5TH6 HUNT2 3,ADATA,CSTORE 5W2Q CHAIN 3,2 [RECHAIN DATA BLOCK AFTER PCA 5WGB LDX 0 WORK1(3) 5X22 STO 0 AWORK1(2) [RESTORE OUR OLD AWORK1 5XFL #SKI K6MONRESUM>699-699 5X^= TRACE VENT5(3),EV5 5YDW MELPTR 2 [GET PNTR TO CURRENT MEMBER ELEMENT 5YYG STO 2 VENT1(3) [REMEMBER FOR EVENT1 5^D6 LDX 2 FX2 5^XQ LDX 0 AWORK1(2) 62CB ANDN 0 1 62X2 ORN 0 2 63BL SRC 0 2 [SET B0:'MONRESUME TAKING PLACE' 63W= ORS 0 AMON(2) [ & IF PARAM WAS STOP,B1 OF AMON 64*W LDX 0 AWORK1(2) 64TG ANDN 0 #20 65*6 BNZ 0 OPCA [J IF PCA IS TO DEALWITH THE EVENT 65SQ #SKI G4 66#B ( 66S2 # 67?L # IN G4 WE MUST ALSO SET EVENT5 TO THE ABSOLUTE ADDRESS OF THE CONTROL 67R= # AREA, AND IF THE 1ST 4 WORDS 6F THIS CROSS A PAGE BOUNDARY, EVENT6 IS 68=W # SET TO THE ABSOLUTE ADDRESS OF THE START OF THE NEW PAGE 68QG # 69=6 LDN 7 4 [CHECKA CONTROL AREA PAGES INTO CORE 69PQ CHECKA VENT2(3),7,(GEOERR),,W,XCOOR 6=9B XCOOR MHUNTW 3,ADATA,CSTORE 6=P2 LDX 4 VENT2(3) 6?8L CALL 7 ZADDRESS [X4:= ABSOLUTE ADDR OF 1ST WD OF C/A 6?N= STO 4 VENT5(3) [REMEMBER THIS FOR EVENT5 6#7W STOZ VENT6(3) [EVENT6 ZERO UNLESS C/A CROSSES BNDY 6#MG LDX 4 VENT2(3) [START O6 CONTROL AREA 6*76 ADN 4 3 6*LQ LDX 0 4 6B6B ANDN 0 #1777 6BL2 BXGE 0 JTHREE,XCLEAR [J IF 1ST 4 C/A WDS DONT CROSS BNDY 6C5L ERX 4 0 [X4:= O/P ADDR OF 1ST WD IN NEW PAGE 6D4W CALL 7 ZADDRESS [X4:= ABS ADDR OF 1ST WD IN NEW PAGE 6DJG STO 4 VENT6(3) [REMEMBER THIS FOR EVENT6 6F46 XCLEAR 6FHQ CLEAR FX2,0 [CLEAR LOCKD6WN ENTRIES FOR C/A PAGES 6G3B ) 6GH2 MHUNTW 1,APERI,APERIRES 6H2L FPERENTA 1,6,XMISS 6HG= SMO 1(1) 6H^W LDN 5 EVENT1-CHAINADD [ADDR OF EVENT1 OF AOLPT 6JFG LDN 4 VENT1(3) 6J^6 MOVE 4 VENTSZ [MOVE IN EVENT WORDS TO AOLPT 6KDQ FREECORE 3 [FREE DATA BLOCK 6KYB LINKSET 2,XLINK(1) [SET LINK IN PCA 6LD2 #SKI K6MONRESUM>699-699 6LXL TRACE ATYPE(2),AOLPT 6MC= LDX 2 5 6MWW SBN 2 EVENT1 6NBG FPUT [PUT AOLPT ON LIST 6NW6 COOR1X [GO TO SLEEP 6P*Q OPCA LDN 5 EVENT1(2) 6PTB LDN 4 VENT1(3) 6Q*2 MOVE 4 6 [MOVE 6 EVENT WORDS TO PCA EVENT AREA 6QSL FREECORE 3 [FREE DATA BLOCK 6R#= #SKI K6MONRESUM>699-699 6RRW TRACE ATYPE(2),PCA 6S?G ACROSS OPCA,1 [GENERATE PSEUDO O/P EVENT 6SR6 # 6T=Q # ERROR EXITS 6TQB XERR1 LDN 1 ZERR1 6W=2 BRN XMESS 6W*X ...XERR1A 6WFS ... LDN 1 ZERR1A 6WKP ... BRN XMESS 6WPL XERR3 WORDFIN 6X9= XERR3A 6XNW LDN 1 ZERR3 6Y8G XMESS SMO FX1 6YN6 LDX 4 0(1) 6^7Q COMERRX 4 6^MB XBRK COMBRKIN [BROKEN IN BEFORE MONRESUME 7272 XMISS GEOERR 1,MONRESU1 [ENTRY IN PERIRES NOT FOUND 72LL XGEO GEOERR 1,MONRESU2 [NO CORE IMAGE OR WD 8 OUT OF RESERVN 736= # 73KW # SUBROUTINES 745G # 74K6 ZGETWORD [JUST THE GETWORD MACRO 754Q SBX 7 FX1 75JB GETWORD 5,3,READ,4,6 7642 ADX 7 FX1 76HL TESTREPNOT OK,XGET1 [REPLY WILL BE RESVIOL IF NOT OK 773= EXIT 7 1 77GW XGET1 EXIT 7 0 782G # 78G6 OPERAND [X5:=OPERAND OF INSTRN IN X5(IF NEC. MODIFIED).ON ENTRY 78^Q [X2=FX2,AWORK4=PREMODIFICATION.ON EXIT X0,X3,GEN6 DESTRD, 79FB [AND AWORK4=0 79^2 LDX 0 5 7=DL SRL 0 12 7=Y= ANDN 0 3 7?CW ANDN 5 #7777 7?XG BZE 0 OPER1 [J IF INSTR NOT MODIFIED 7#C6 STO 0 GEN6 7#WQ MHUNTW 3,ADATA,CSTORE 7*BB SMO GEN6 7*W2 ADX 5 START(3) [ OTHERWISE ADD IN CNTS OF MODIF. AC. 7B*L OPER1 ADX 5 AWORK4(2) [ADD IN PREMODIFICATION 7BT= STOZ AWORK4(2) 7C#W LDX 0 AWORK1(2) 7CSG ANDN 0 #10 7D#6 BZE 0 OPER2 [J IF 15AM 7DRQ LDX 0 BITS22LS [#17777777 FOR 22AM 7F?B OPER2 ORX 0 BSP16 [#00077777 FOR 15AM 7FR2 ANDX 5 0 [TAKE ADDR MODULO 15/22 BITS(15/22AM) 7G=L EXIT 7 0 7GQ= # 7H9W ZOBEY [ENTER WITH X6=OBEY INSTR;AWORK4=PREMODIFICATION 7HPG [EXIT WITH X6=INSTR ENDING OBEY CHAIN,X1=FX1,X2=FX2,ALL 7J96 [OTHER ACCS & AWORK2 & AWORK3 DESTROYED,AWORK4=0. 7JNQ LDX 2 FX2 7K8B SBX 7 FX1 7KN2 STO 7 AWORK2(2) [DUMP LINK 7L7L LDN 0 32 [SET UPPER BOUND ON COUNT OF OBEYS 7LM= OB2 STO 0 AWORK3(2) 7M6W LDX 5 6 7MLG CALL 7 OPERAND [OPERAND OF CURRENT OBEY TO X5 7N66 LDN 6 1 7NKQ CALL 7 ZGETWORD 7P5B BRN XERR3 [USER ERROR IF OUT OF RESERVATIONS 7PK2 LDX 6 0(3) [WORD REFERENCED BY CURRENT OBEY 7Q4L LDX 0 6 7QJ= ANDX 0 XFMSK(1) 7R3W BXU 0 OBEY(1),OB1 [EXIT IF WORD NOT AN OBEY 7RHG LDX 0 AWORK3(2) 7S36 BCT 0 OB2 7SGQ BRN XERR3 [ERROR IF OBEY CHAIN > 32 DEEP 7T2B OB1 LDX 7 AWORK2(2) 7TG2 ADX 7 FX1 7T^L EXIT 7 0 7WF= # 7WYW #SKI G4 7XDG ( 7XY6 ZADDRESS [JUST THE FADDRESS MACRO. ON ENTRY X4=O/P ADDRESS AND 7YCQ [HLOCK1(2)-> CORRESPONDING HLOCK ENTRY$ ON EXIT X4= 7YXB [CORRESPONDING GEORGE ADDRESS ,X0 DESTROYED,OTHERS UNCHGD 7^C2 [LINK IS X7 7^WL FADDRESS FX2,4,HLOCK1,2 82B= EXIT 7 0 82TW ) 83*G # 83T6 MENDAREA 25 84#Q #END ^^^^ ...36030123000700000000