{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: PMDR864)}} ====== PMDR864 ====== (George Source) **Macros used:** [[george:macro:DATUMADD|DATUMADD]], [[george:macro:DATUMBLK|DATUMBLK]], [[george:macro:DCA|DCA]], [[george:macro:DISENGPER|DISENGPER]], [[george:macro:FIXTRA|FIXTRA]], [[george:macro:FSHCODE|FSHCODE]], [[george:macro:FSHSKIP|FSHSKIP]], [[george:macro:GPERI|GPERI]], [[george:macro:JBUSY|JBUSY]], [[george:macro:JDISENG|JDISENG]], [[george:macro:JHLFDON|JHLFDON]], [[george:macro:LGEOG|LGEOG]], [[george:macro:LTYPE|LTYPE]], [[george:macro:MASK|MASK]], [[george:macro:MOVX|MOVX]], [[george:macro:P|P]], [[george:macro:PMBSADD|PMBSADD]], [[george:macro:PMDLGET|PMDLGET]], [[george:macro:PMSEG|PMSEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SKIP|SKIP]], [[george:macro:XY|XY]] 22FL #OPT K0PMDR=0 22^= #LIS K0PMDR>K0POST>K0ALLGEO 23DW # 23YG #SEG PMDR85 [M.C.D. MANN 24D6 # 24XQ # THIS SEGMENT CONTAINS THE 'CHAPTER CHANGING' 25CB # ROUTINES, THE CONVERSION ROUTINES, AND THE 25X2 # INPUT/OUTPUT ROUTINES USED THROUGHOUT PM 26BL # 26W= #OPT JCONO=5 [ VALIDATES CONVERSION FORMAT 27*W # [ IN BLOCK IDENTIFIER TABLE MACROS 27TG 8HPMDR 28*6 # 28SQ # 29#B # 29S2 # ENTRY POINT TABLE 2=?L # 2=R= # 2?=W SEGENTRY K1PMDR,XK1PMDR 2?QG # 2#=6 # 2#PQ # REPLACED ENTRY POINTS FOR SUBROUTINES 2*9B # 2*P2 # USED FROM SEGMENT PMREPLAC (Q.V.) 2B8L # 2BN= # 2C7W JJPMSEG 2CMG BRN XJPMSEG 2D76 JJGNO2 2DLQ BRN XJGNO2 2F6B JJGNO1 2FL2 BRN XJGNO1 2G5L JJDECN 2GK= BRN XJDECN 2H4W JJDECP 2HJG BRN XJDECP 2J46 JJDECS 2JHQ BRN XJDECS 2K3B JJDECDEC 2KH2 BRN XJDECDEC 2L2L JJOCT 2LG= BRN XJOCT 2L^W JJCHA 2MFG BRN XJCHA 2M^6 JJCON4 2NDQ BRN XJCON4 2NYB JJCON1 2PD2 BRN XJCON1 2PXL JJUP 2QC= BRN XJUP 2QWW JJPRINT 2RBG BRN XJPRINT 2RW6 JJPRINT1 2S*Q BRN XJPRINT1 2STB JJPRINT2 2T*2 BRN XJPRINT2 2TSL JJPRINTX 2W#= BRN XJPRINTX 2WRW JJSUBSREAD 2X?G BRN XJSUBSREAD 2XR6 JJBSADDSWAP 2Y=Q BRN XJBSADDSWAP 2YQB JJBSADDGEO 2^=2 BRN XJBSADDGEO 2^PL JJBSNUM 329= BRN XJBSNUM 32NW JJCTWIN 338G BRN XJCTWIN 33N6 JJSEGREAD 347Q BRN XSEGREAD 34MB JJSEGREAD2 3572 BRN XSEGREAD2 35LL # 366= # 36KW # MAIN DATA AREA 375G # 37K6 # 384Q # 1. UNIVERSALS - THESE CANNOT ALTER THEIR POSN. RELATIVE TO THE 38JB # START OF PMDR WITHOUT MENDIT'ING ALL PM SEGMENTS 3942 # I.E. ANY ADDITIONS SHOULD BE MADE AFTER EXISTING 39HL # UNIVERSALS,OR BY REPLACING ANY LOCALS USED 3=3= # TO FILL GAPS 3=GW # 3?2G # 3?G6 JDBASE [START ADDR.FOR PRINT BUFFERS AND 3?^Q [DUMPING ROUTINE 3#FB PRINTB1 [FIRST PRINT BUFFER 3#^2 #REP 31 3*DL #20202020 3*Y= PRINTB2 [SECOND PRINT BUFFER 3BCW #GAP 31 3BXG # 3CC6 # 3CWQ # THERE NOW FOLLOWS AN AREA FORMING PART OF TWO PSEUDO ACTIVITY 3DBB # BLOCKS,ANY CHANGES SHOULD BE MADE WITH GREAT CARE. 3DW2 # 3F*L PFD 3FT= XSTART +0 [BLOCK START (LP) 3G#W INONA +0 [=1 FOR NON AUTONOMOUS TRANSFER 3GSG XXSTART [BLOCK START (MT) 3H#6 IPX +0 [NON-ZERO IF F/S TRANSFER 3HRQ JBADMEND +0 [MEND CHECKSUM ERROR SWITCH 3J?B ALLPOST +1+32 3JR2 JUNITNO +0 [SET=UNIT NO. OF ALLOCATED LP 3K=L [SET -VE IF NO LP AVAILABLE 3KQ= JPMLEV +BPMLEV1 [FIXED CORE LISTING LENGTHS 3L9W +0 [SET TO [ENDFIX] BY PMWHATA 3LPG JDUMP +XJDUMP [USED BY PMDUMP FOR ENTRY INTO 3M96 [SEGMENT TABLE 3MNQ X 3N8B #REP CHAINADD-X+XSTART 3NN2 +0 3P7L YCHAD +0 [A 'CHAINADD.' 3PM= JLPGEOG +0 [LP'S GEOG. NO 3Q6W YYCHAD +0 [ANOTHER 'CHAINADD.' 3QLG JTABP [USED BY DUMPING ROUTINES 3R66 TABP +SEGTAB 3RKQ XJUMP +0 [SET TO HOLD SEGMENT ENTRY POINT 3S5B #SKI G4 3SK2 JCRUPT +1 [0 MEANS S.TAB WORD OR ENTRY IS CRUPT 3T4L APMBRKCHS +0 [SET BY PMBRKCHS IF CHAIN BREAK FOR 3TJ= [USE IN FS PM 3W3W JVARCRUPT +1 [USED BY PMCRABS 3WHG JMTGEOG +0 [GEOG NO. OF MT IF DUMPING PM 3X36 JMTREC [PART DEVICE RECORD FOR 3XGQ #GAP K53-K50 [MT(ONLY USED ON DUMPING TO MT) 3Y2B XCOMMA #34 3YG2 SPACE #20 3Y^L FLUSH 3^F= SPACEFUL #20202020 3^YW Y 42DG #REP CPPTR-Y+XSTART 42Y6 +0 43CQ JLPPTR +0 ['CPPTR' WORD FOR LP AND ITS 43XB JLPRW1 +0 [REPLY WORD 44C2 JMTPTR +0 ['CPPTR' WORD FOR MT AND ITS 44WL JMTRW1 +0 [REPLY WORD 45B= # 45TW # 46*G BLKSDMPD +0 [ COUNT OF BLOCKS WRITTEN TO MAG TAPE 46T6 SWITCH 47#Q EXCHANGE +0 [ SWITCH WORD FOR JPRINR ROUTINES 47SB JBUNCHBASE +XBUNCHBASE [ BASE FOR PMDUMPA BUNCHING ROUTINE 48#2 JBUNCHEND +XBUNCHEND [ END OF PMDUMPA ROUTINE 48RL #UNS JPMDA 49?= JDUMPBASE +JDBASE [ BASE FOR PMDUMPA OUTPUT ROUTINE 49QW #UNS JPMDA 4==G #SKI 4=Q6 JLPTOMTBASE +JDBASE [ BASE FOR PMDUMPA OUTPUT ROUTINE 4?9Q JTRA 4?PB PRINT 2:0,+0,+121,+PRINTB1.3 [LP CONTROL AREAS 4#92 2:0,+0,+121,+PRINTB2.3 4#NL #UNS JPSCF 4*8= ( 4*MW JSCFPTR +0 [PTR TO SCF DEVICE LIST 4B7G JSCFGEODMP +0 [PTR TO ICF DEVICE LIST 4BM6 ) 4C6Q JPCONREPLY 0 [CONSOLE REPLY FOR PMDUMPDA/MT 4CLB JPDLINK2 0 [LINK FOR DA PERI ROUTINE IN PMDUMP[ 4CRJ ...JSCFREC [DUMP FOR SAVED SCF DEVICE LIST 4CYQ ...#GAP K53-K50 4D62 # 4D9X ...BEGINCRAB +0 [HOLDS THE ADDRESS OF A LOCATION 4D*S ... [ON THE SWAP FILE FROM WHERE ON CRABS 4DFP ... [ARE WRITTEN BY PMCRABS SEGMENT 4DHM ...ERRORTYPE +0 4DJL ...JAFDTP +0 [POINTER TO FDTABLE 4DKL # 4F5= # 2. LOCALS 4FJW # 4G4G # 4GJ6 MESSC +10,10H CANCEL^* 4H3Q MESSD +2,4H^* 4HHB MESSB +24,24H ^*UNIT PAPER LOW^* 4J32 MESSAGE +0 [ MESSAGE ADDRESS STORE 4JGL PCCA 63:0,0,64,+JCCBUF [CA TO READ T/W INPUT 4K2= MASK #17777777 4KFW MAGIC +7036875 4K^G X512 +512 4LF6 XFLAG +0 4LYQ XCOREADD +0 4MDB XCOUNT +0 [ ORIGINAL LENGTH OF TRANSFER 4MY2 # 4NCL # 4NX= # THE FOLLOWING IS TABLE OF PM SEGMENT ADDRESSES,LENGTHS AND ENTRY 4PBW # POINTS IN THE ORDER THEY ARE TO BE CALLED TOGETHER WITH AN 4PWG # INDICATOR DETERMINING THE CIRCUMSTANCES IN WHICH THEY ARE CALLED 4QB6 # THE THIRD PARAMETER OF MACRO PMSEG: 4QTQ # IF EQUAL 1 - ROUTINE ALWAYS ENTERED 4R*B # 2 - ROUTINE ENTERED IF GIVING NORMAL PM LISTING 4RT2 # 4 - ROUTINE ENTERED WHEN ACTUALLY DUMPING TO MAG TAPE 4S#L # 8 - ROUTINE ENTERED WHEN DUMPING REQUESTED 4SS= # 16 - ROUTINE ENTERED IF GIVING MINI-PM LISTING 4T?W # 32 - ROUTINE ALWAYS ENTERED UNLESS GEOSTOP 4TRG # 4W?6 # 4WQQ SEGTAB 4X=B #SKI IPL 4XQ2 ( 4Y9L FIXTRA JPMIPL 4YP= PMSEG IPLPM,1,1 4^8W ) 4^#2 ... FSHCODE AORB 4^C6 ...( 4^G= ... PMSEG CLOSEIPB,2,1 4^KB ...) 4^NG PMSEG PMSUMA,4,1 5286 PMSEG MOPPM,1,1 52*# ...#UNS ENHOPER 52GG ... PMSEG PMJOURNL,1,1 52MQ FIXTRA JPMIPB 537B PMSEG IPBPM,1,1 53M2 PMSEG PMLP,1,32 546L PMSEG PMJOBS,1,32 54L= PMSEG PMWHATA,1,32 555W XJDUMP 55KG PMSEG PMJOBS,1,4 5656 PMSEG PMSUMA,1,2+4+8+16 56JQ PMSEG PMENDNOS,1,16 574B PMSEG PMENDITS,1,16 57J2 PMSEG PMBUFFS,1,16 583L PMSEG PMDUMP,2,4 585T ... FSHCODE AORB 5884 ...( 588R ...#SKI G3 589G ... PMSEG PMFSB,2,16 58=? ... PMSEG PMBRKCHS,1,2 58#G ... PMSEG PMFSB,1,2 58BP ... PMSEG CLOSEIPB,3,1 58DY ...) 58H= PMSEG PMACT,1,16 592W PMSEG PMCHAP,1,16 59GG PMSEG PMFILE,1,16 5=26 PMSEG PMFIXSTO,1,16 5=FQ PMSEG PMCHAINS,1,2 5=^B #SKI 76? 5?F2 PMSEG PMCHECK,1,2 5?YL PMSEG PMACT,2,2 5#D= #SKI G4 5#XW ( 5*CG PMSEG PMFOUR,1,2 5*X6 PMSEG PMCHAINS,3,2 5BBQ PMSEG PMOBJ,1,2 5BWB PMSEG PMFOUR,2,2 5CB2 ) 5CTL #SKI G3 5D*= PMSEG PMOBJIII,1,2 5DSW PMSEG PMCHAINS,2,2 5F#G PMSEG PMBDTS,1,2 5FS6 PMSEG PMFILE,2,2 5F^# ... FSHSKIP 5G6G ...( 5G8= ...#SKI G3 5G=2 ... PMSEG PMFSB,2,16 5G?Q PMSEG PMBRKCHS,1,2 5GRB PMSEG PMFSB,1,2 5H38 ...) 5H?2 PMSEG PMDUMP,3,4 5HQL PMSEG PMDUMPMT,1,128 5J== PMSEG PMDUMPDA,1,64 5JPW PMSEG CLOSEIPB,1,1 5K9G FIXTRA JPMWIND 5KP6 PMSEG PMWINDDN,1,1 5L8Q PMSEG RESTART,1,1 5LNB # 5M82 # 5MML # 5N7= # END OF DATA AREA 5NLW # 5P6G # 5PL6 # ********************************************* 5Q5Q # 5QKB # 5R52 # 5RJL # 5S4= # ENTRY POINT FROM PM BOOTSTRAP 5SHW # 5T3G # 5TH6 XK1PMDR 5W2Q LDX 1 FXPMDR 5WGB ADS 1 JBUNCHBASE(1) 5X22 ADS 1 JBUNCHEND(1) 5X4K ... FSHCODE AORB 5X78 ...( 5X9R ... LDX 0 9 5X#B ... STO 0 ERRORTYPE(1) [ PRESERVE SYSTEM ERROR TYPE 5XB^ ...) 5XF= ... LDX 2 BINDEX [TEST TO SEE IF FDTABLE SET UP 5XHH ... TXU 2 BINDEX+1 5XKS ... BCC X2 [J IF NO LEAVING JAFDTP=0 5XN5 ... LDX 2 0(2) 5XQB ... LDX 2 0(2) 5XSM ... STO 2 JAFDTP(1) [POINTS TO FDTABLE 5XWY ...X2 LDN 1 JPMREPLAC [READ PMDR AND PMFSB REPLACERS 5X^= LDN 5 FXINPRIN+1 [ INTO CORE FOLLOWING FX WORDS 5YDW CALL 7 XSEGREAD 5YYG LDN 3 JPMDRBAS 5^D6 ... LDX 1 FXPMDR 5^XQ LDN 2 JPLACEND-JPMDRBAS 62CB REPLOOPX 62X2 ... ADS 1 0(3) [ ADD FXPMDR TO PMDRB REPLACERS 63BL ADN 3 1 [ AND BUFFER ADDRESSESS 63W= BCT 2 REPLOOPX 6477 ... ADS 1 PRINT+3(1) 64D4 ... ADS 1 PRINT+7(1) 64N^ ... LDX 4 JSCFPTR(1) 64^W ... BZE 4 XJPMSEG [J IF NO SCF RUNNING,ELSE 65=R ... LDN 5 JSCFREC(1) [SAVE SCF DEVICE LIST 65HN ... MOVE 4 K53-K50 65SQ 66#B # 66S2 # 67?L # MOST OVERLAYS RETURN TO THIS POINT 67R= # TO READ DOWN NEXT OVERLAY 68=W # 68QG # 69=6 XJPMSEG 69PQ LDX 1 FXPMDR 6=9B LDX 3 TABP(1) [ LOAD POINTER 6=P2 ST SMO FXPMDR 6?8L LDX 6 0(3) [ LOAD ENTRY CONDITIONS 6?N= ANDX 6 ALLPOST(1) [ ENTER ? 6#7W ADN 3 2 [ MOVE UP POINTER 6#MG BZE 6 ST [ J IF NOT TO ENTER 6*76 LDX 5 FXPM1 [ CORE ADDRESS TO READ OVERLAY TO 6*LQ STO 3 TABP(1) [ STORE POINTER 6B6B SBN 3 2 [ GO BACK TO CURRENT ENTRY 6BL2 SMO FXPMDR 6C5L LDX 1 1(3) [ GET SECOND WORD OF ENTRY 6CK= LDN 2 0 6D4W SRL 12 12 [ SEGMENT NO. NOW IN X1 6DJG SRL 2 12 [ ENTRY POINT NOW IN X2 6F46 LDX 7 2 6FHQ CALL 6 XSEGREAD2 6G3B # ROUTINE TO READ OVERLAYS FROM PROGRAM FILE 6GH2 # 6H2L # ENTRY REQUIRMENTS:- 6HG= # 6H^W # X1 SEGMENT NUMBER 6JFG # X5 CORE ADDRESS TO READ DOWN TO 6J^6 # 6KDQ # ENTRY POINT XSEGREAD2 NEEDS 6KYB # JUMP HOLDING THE K?PM?? VALUE 6LD2 # X7 ENTRY POINT 6LXL # 6MC= # ON EXIT ALL ACCS WILL BE DESTROYED 6MWW # 6NBG # EXITS ARE AS FOLLOWS :- 6NW6 # 6P*Q # XSEGREAD INSTRUCTION AFTER CALL 6PTB # XSEGREAD2 ENTRY POINT OF NEW OVERLAY 6Q*2 # 6QSL # ENTRY POINT XSEGREAD2 ALSO UPDATES APPROPRIATE FX WO 6R#= # 6RRW XSEGREAD2 6S?G ADX 7 5 [ MAKE ENTRY POINT ABSOLUTE 6SR6 XSEGREAD 6T=Q SMO FXPMFXNT 6TQB LDX 2 0(1) [ GET D/L WORD FROM SEGMENT NUMBER 6W=2 LDN 3 0 6WPL SRL 23 15 6X9= SRL 3 2 [ D IS NOW IN X3 6XNW SLL 2 2 [ L IS NOW IN X2 6Y8G SMO FXPMDR 6YN6 STO 7 XJUMP [ SET UP EXIT 6^7Q LDN 7 1 [ READ DOWN SEGMENT 6^MB SMO FXPMDR [ USING PSEUDO PMBSADD MACRO CALL 7272 STO 7 INONA [ TO AVOID A REPLACED CALL BEFORE 72LL STOZ IPMBS [ PMREPLAC IS IN CORE 736= ... STO 2 IPMBS+2 73KW ... STO 5 IPMBS+3 745G ... STO 3 IUBSA 7642 SMO FXPMDR 76HL STOZ IPX 773= CALL 0 XJBSADDGEO 77GW NULL 782G SMO FXPMDR 78G6 LDX 7 XJUMP 78^Q BRN (7) 79FB # 79^2 # 7=DL # SUBROUTINE XBSADD 7=Y= # AND XBSNUM 7?CW # 7?XG # ON ENTRY X0 IS LINK 7#C6 # 7#WQ # ON EXIT X5 IS THE ONLY ACCUMULATOR DEFINED 7*BB # 7*W2 # 7B*L XJBSNUM 7BT= SMO FXPM1 7C#W LDX 7 JBSPTR 7CSG STO 7 JPDL 7D#6 STOZ IPMBS 7DRQ LDN 7 512 7F?B STO 7 IPMBS+2 7FR2 SMO FXPM2 7G=L LDX 7 JTRDATUM 7GQ= BRN XBSADD 7H9W XJBSADDSWAP 7HPG LDX 7 JSWAPDR 7J96 STO 7 JPDL 7JNQ LDX 7 JSWAPFD 7K37 ... SMO FXPMDR 7K*J ... ADX 7 JAFDTP 7KN2 SBN 7 A1 7L7L BRN XBSADD 7LM= XJBSADDGEO 7M6W LDX 7 GEOBSPTR 7MLG STO 7 JPDL 7N66 LTYPE 7,2 7NKQ SBN 2 9 7P5B SMO FXPMDR 7PK2 STOZ XFLAG [ PRESET FLAG 7Q4L BZE 2 XY [ J IF DRUM 7QJ= LDX 1 IUBSA 7R3W SRL 12 7 [ ROUND TO 128 WORDS 7RHG SLL 1 7 [ ROUNDED DOWN 7S36 SRL 2 17 [ REMAINDER 7SGQ BZE 2 XY [ J IF NO REMAINDER 7T2B STO 1 IUBSA [ RESET BACKING STORE ADDRESS 7TG2 LDX 1 IPMBS+2 7T^L SMO FXPMDR 7WF= STO 1 XCOUNT [ SAVE ORIGINAL COUNT 7WYW SMO FXPMDR 7XDG STO 2 XFLAG [ SET FLAG = REMAINDER 7XY6 ADS 2 IPMBS+2 [ INCREASE COUNT 7YCQ LDX 2 IPMBS+3 [ SAVE START ADDRESS IN CORE 7YXB SMO FXPMDR 7^C2 STO 2 XCOREADD 7^WL XY LDX 7 BINDEX 82B= XBSADD 82TW SMO FXPMDR 83*G STO 7 PFD 83T6 STO 0 JLINK [ STORE LINK 84#Q CALL 2 XLTCOMP 84SB XB SMO FXPMDR 85#2 LDX 0 IPX 85RL SMO FXPMDR 86?= LDX 1 PFD 86QW BNZ 0 XBSNUM [ J IF CALLED BY PMBSNUM 87=G DATUMADD IUBSA,1,IPMBS+2 87Q6 BRN XBA 889Q XBSNUM 88PB DATUMBLK IUBSA,1,IPMBS+2 8992 XBA BNZ 1 X1 [ TEST FOR VALID TRANSFER LENGTH 89NL BNZ 2 X1 8=8= ... BRN (JLINK) [ EXIT 0 IF OFF END OF FILE 8?7G X1 SBS 2 IPMBS+2 [ UPDATE REMAINING WORD TO MOVE 8?M6 STO 2 JLINK2 8#6Q XA DCA JPDL,STO,1,DTSA [ LOAD UP CONTROL AREA 8#LB LDX 1 IPMBS 8*62 DCA JPDL,DLA,1,MODE 8*KL LDX 1 IPMBS+2 8B5= BZE 2 XD2 8BJW LDX 1 2 8C4G BRN XD1 8CJ6 XD2 STOZ IPMBS+2 [ RESET IF O.K. IN ONE GO 8D3Q XD1 DCA JPDL,STO,1,COUNT 8DHB LDX 1 IPMBS+3 8F32 DCA JPDL,STO,1,CTSA 8FGL XBB LDN 1 JXSTART 8G2= GPERI JPDL,1,NC [ DO TRANSFER 8GFW LDX 0 IPMBS+2 [ ANY MORE TO DO ? 8G^G BNZ 0 XE 8HF6 SMO FXPMDR 8HYQ LDX 0 INONA 8JDB BZE 0 XK 8JY2 CALL 2 XLTCOMP 8KCL SMO FXPMDR 8KX= LDX 2 XFLAG 8LBW BZE 2 XK [ J IF SIMPLE TRANSFER 8LWG SMO FXPMDR 8MB6 LDX 7 XCOREADD [ START ADDRESS IN CORE 8MTQ LDX 6 7 8N*B ADX 6 2 [ START ADDRESS OF AREA REQUIRED 8NT2 LDX 1 FXPMDR 8P#L SMO FXPMDR 8PS= LDX 2 XCOUNT [ LENGTH TO BE MOVED 8Q?W MOVX 2 [ MOVE SO AS TO GET OUR BIT 8QRG XK LDX 0 JLINK 8R?6 EXIT 0 1 8RQQ XE CALL 2 XLTCOMP 8S=B LDX 0 JLINK2 8SQ2 ADS 0 IUBSA [ RESET B/S 8T9L ADS 0 IPMBS+3 [ RESET CORE 8TP= BRN XB [ RETURN FOR MORE 8W8W XLTCOMP 8WNG XC JBUSY JPDL,XC [ WAIT TO END OF TRANSFER 8X86 LTYPE JPDL,3 [ GET TYPE OF DEVICE IN X3 8XMQ LDX 4 JPDL+1 [ LOAD REPLY 8Y7B SLC 4 6 8YM2 ANDN 4 15 [ FORGET JUST REACHING END OF CYLDER 8^6L TXU 3 JEDS [ B/S DEVICE EDS8 ? 8^L= BCS XD 925W ANDN 4 #15 [ AMEND REPLY WORD IF EDS8 92KG XD BNZ 4 XFAIXL [ J IF TRANSFER NOT O.K. 9356 EXIT 2 0 93JQ XFAIXL 944B ANDN 4 14 94J2 LDX 3 JPDL 953L CALL 7 XJGNO2 95H= LDN 3 JPMESS1 962W BNZ 4 XG 96GG LDN 3 JPMESS 9726 XG STO 5 3(3) 97FQ CALL 7 (JCONOUT) 97^B XH JDISENG JPDL,XH [ WAIT FOR UNIT TO BE REENGAGED 98F2 LDN 1 JXSTART 98YL GPERI JPDL,1,NC [ TRY AGAIN 99D= BRN XLTCOMP 99XW # 9=CG # SUBROUTINE TO READ SUBTYPE OVERLAYS INTO CORE 9=X6 # 9?BQ # CALLED BY MACRO PMSUBSREAD 9?WB # 9#B2 XJSUBSREAD 9#TL STO 7 JLINK7 9**= PMDLGET PMSUBSA,3,1 9*SW PMDLGET PMSUBSB,,2 9B#G ADX 1 2 9BS6 PMDLGET PMSUBSC,,2 9C?Q ADX 1 2 9CRB PMBSADD GEO,0,1,0,3,,XSE 9D?2 LDX 7 JLINK7 9DQL EXIT 7 1 9F== XSE BRN (JLINK7) 9FPW # 9G9G # 9GP6 # THE FOLLFWING S/R GETS GEOG NO OF DEVICE WHOSE DEVICE RECORD 9H8Q # POINTER IS IN X3, LINK X7. 9HNB # 9J82 XJGNO2 9JML LGEOG 3,6 9K7= # 9KLW [ ROUTINE TO CONVERT 9-BIT BINARY NO. MAX VALUE 511 TO 3 DEC DIGITS 9L6G # ENTRY X6=NO. IN BINARY 9LL6 [ EXIT X5 = GEOG NO IN CHAR POS 1,2,3 PRECEDED BY SPACE 9M5Q [ X3 UNDEFINED 9MKB # X6=UNDEFINED 9N52 # X7=LINK 9NJL # 9P4= XJGNO1 9PHW LDCT 3 #200 [ PUTS SPACE CM IN 9Q3G DVS 5 JTEN 9QH6 DCH 5 3 [ PUT UNITS DIGIT IN 9R2Q DVS 5 JTEN 9RGB BNZ 6 SKIP [ TEST IF HUNS DIGIT = 0 9S22 LDN 6 #20 [ IF SO, OVERWRITE WITH SPACE 9SFL BNZ 5 SKIP [ IF HUNS DIGIT SUPPRESSED TEST TENS 9S^= LDN 5 #20 [ IF ZERO, SUPPRESS 9TDW SKIP 9TYG SLL 56 6 [ LEFT JUSTIFY HUN & TENS 1 CH.POS 9WD6 SLL 6 6 9WXQ ORX 5 6 9XCB ORX 5 3 9XX2 EXIT 7 0 9YBL # 9YW= # DECIMAL CONVERSION ROUTINES 9^*W # ENTRY X7=LINK 9^TG # X5=BINARY NO. =2*6 # JPMOD=OUTPUT MODIFIER =2SQ # EXIT X5=UNCHANGED =3#B # JPMOD=UPDATED OUTPUT MODIFIER =3S2 # X7,X3,X6=UNDEFINED =4?L # =4R= # ROUTINE TO CONVERT A BINARY NUMBER TO DECIMAL CHARS (N) =5=W # =5QG XJDECN =6=6 STO 5 JWLINK [KEEP RECORD OF BINARY NO. =6PQ XDECA LDX 3 JPMOD [OUTPUT MOD. =79B XDECB SMO FXPMDR =7P2 MPY 5 MAGIC [GET D-L NO. IN X5 AND X6 =88L STO 7 JLINKA [STORE LINK =8N= LDN 7 6 [COUNT =97W MODE 1 =9MG XDECC CBD 5 0(3) [CONVERT 6 CHARS, ZERO SUPPRESS ==76 BCHX 3 £ [AND STORE IN OUTPUT BUFFER ==LQ BCT 7 XDECC =?6B MODE 0 [CONVERT 7TH CHAR. AND =?L2 CBD 5 0(3) [STORE IN OUTPUT BUFFER =#5L BCHX 3 £ =#K= STO 3 JPMOD [STORE UPDATED OUTPUT MOD. =*4W LDX 5 JWLINK [RE-SET X5 WITH BINARY NO. =*JG BRN (JLINKA) [EXIT =B46 # =BHQ # ROUTINE TO CONVERT A BINARY NO. TO DECIMAL CHARECTERS (N.N) =C3B # =CH2 XJDECP =D2L STO 7 JLINKB =DG= STO 5 JWLINK [KEEP RECORD OF BINARY NO. =D^W SMO FXPMDR =FFG ANDX 5 MASK [MASK OUT BITS 0 & 1 =F^6 CALL 7 XDECA [CONVERT TO DEC. CHARS =GDQ LDN 7 #36 =GYB DCH 7 0(3) [DEPOSIT '.' CHAR. IN OUTPUT BUFFER =HD2 BCHX 3 £ =HXL LDX 7 5 =JC= SRL 7 22 [DEPOSIT CHAR. BITS OF BINARY NO. AS =JWW DCH 7 0(3) [CHARACTER IN OUTPUT AREA =KBG BCHX 3 £ =KW6 STO 3 JPMOD [UPDATE OUTPUT MOD. =L*Q BRN (JLINKB) [EXIT =LTB # =M*2 # ROUTINE TO CONVERT BINARY NO. TO DECIMAL CHARACTERS (+ OR - N) =MSL # =N#= XJDECS =NRW STO 5 JWLINK =P?G STO 7 JLINKB [STORE LINK =PR6 LDX 3 JPMOD [UPDATE OUTPUT MOD. TO CATER FOR =Q=Q BCHX 3 £ [ '+(-)'SIGN =QQB SMO FXPMDR =R=2 LDX 5 MAGIC =RPL LDXC 6 JWLINK =S9= BCC POS =SNW ... BZE 6 SPECL =T8G NGX 6 JWLINK =TN6 POS MPY 5 6 =W7Q SPECL CALL 7 XDECB+2 =WMB XDECE SLC 3 2 =X72 SBN 3 1 =XLL SRC 3 2 [BACKSPACE OUTPUT MOD. =Y6= LDCH 7 0(3) =YKW SBN 7 #20 [TEST AND J IF =^5G BNZ 7 XDECE [NOT SPACE CHAR. =^K6 LDN 7 #33 ['+' ?24Q BPZ 5 XDECF ?2JB LDN 7 #35 ['-' ?342 XDECF DCH 7 0(3) [DEPOSIT '+(-)' CHAR. IN OUTPUT BUF. ?3HL BRN (JLINKB) ?43= # ?4GW # ROUTINE TO CONVERT BINARY NO. TO DECIMAL CHARS. (N/N) ?52G # WHEN USING THIS ROUTINE THE OUTPUT MODIFIER (JPMOD) ?5G6 # MUST BE POSITIONED TWO CHARACTERS PLACES PAST WHERE ?5^Q # THE PUTOUT AREA IS TO START ?6FB # ?6^2 XJDECDEC ?7DL STO 7 JLINKB ?7Y= STO 5 JLINK5 ?8CW ANDN 5 #7777 [GET BITS 12-23 OF WORD ?8XG CALL 7 XDECA [CONVERT BITTOM BITS ?9C6 SBN 3 3 ?9WQ BCHX 3 £ [BACKSPACE OUTPUT MODIFIER ?=BB LDX 5 JLINK5 ?=W2 SRL 5 12 [GET BITS 0-11 OF WORD ??*L SMO FXPMDR ??T= MPY 5 MAGIC [GET D-L NIUMBER IN X5 AND X6 ?##W MODE 1 [ZERO SUPPRESSION ?#SG CBD 5 0(3) [FORGET FIRST SPACE ?*#6 LDN 7 5 ?*RQ XDD CBD 5 0(3) [CONVERT ALL BUT ONE CHARACTER ?B?B BCHX 3 £ ?BR2 BCT 7 XDD ?C=L MODE 0 [CHANGE MODE FOR LAST CHARACTER ?CQ= CBD 5 0(3) [CONVERT LAST CHARACTER ?D9W BCHX 3 £ ?DPG LDN 7 #37 ?F96 DCH 7 0(3) [DUMP '/' INTO NUMBER ?FNQ LDX 5 JLINK5 ?G8B BRN (JLINKB) ?GN2 # ?H7L # ROUTINE TO CONVERT BINARY NO. TO OCTAL CHARS. ?HM= # ENTRY X7=LINK ?J6W # X5=BINARY NO. ?JLG # JPMOD=OUTPUT MOD. ?K66 # EXIT X5=UNCHANGED ?KKQ # X3,JPMOD=UPDATED OUTPUT MOD. ?L5B # X7,X6=UNDEFINED ?LK2 # ?M4L XJOCT ?MJ= STO 7 JLINKA ?N3W STO 5 JWLINK ?NHG LDX 3 JPMOD [GET OUTPUT MOD. ?P36 LDN 7 9 [COUNT ?PGQ LDN 6 #23 [GET '#' CHAR. ?Q2B OCT DCH 6 0(3) [DEPOSIT CHAR. ?QG2 BCHX 3 £ ?Q^L STOZ 6 ?RF= SLC 56 3 [GET NEXT OCTAL CHAR. ?RYW BCT 7 OCT [J UNTIL ALL CHARS. DEPOSITED ?SDG LDX 5 JWLINK ?SY6 STO 3 JPMOD [UPDATE OUTPUT MOD. ?TCQ BRN (JLINKA) [EXIT ?TXB # ?WC2 # ROUTINE TO CONVERT BINARY NO. TO CHARACTERS ?WWL # ENTRY X7=LINK ?XB= # X5=BINARY NUMBER ?XTW # JPMOD=OUTPUT MOD. ?Y*G # EXIT X5=UNCHANGED ?YT6 # X6,JPMOD=UPDATED OUTPUT MOD. ?^#Q # X7=UNDEFINED ?^SB # #2#2 XJCHA STO 7 JLINKA #2RL LDN 6 5 #3?= LDX 7 JPMOD [OUTPUT MOD. #3QW MVCH 6 4 #4=G STO 7 JPMOD [UPDATE OUTPUT MOD. #4Q6 BRN (JLINKA) #59Q # #5PB # #692 # ROUTINE TO CONVERT A BINARY NO. TO DECIMAL(N.N),OCTAL,CHARS. AND #6NL # INSTRUCTION FORMATS #78= # ENTRY X7=LINK #7MW # X5=BINARY NO. #87G # JPMOD=OUTPUT MOD. #8M6 # EXIT X1,X5=UNCHANGED #96Q # JPMOD=UPDATED OUTPUT MOD. #9LB # ALL OTHER ACCS UNDEFINED #=62 # #=KL XJCON4 #?5= STO 7 JLINKC #?JW STO 5 JWLINK ##4G LDN 4 1 ##J6 CALL 7 XJDECP [CONVERT TO DEC (N.N) #*3Q ADS 4 JPMOD [UPDATE OUTPUT MOD. #*HB CALL 7 XJCHA [CONVERT TO CHARS. #B32 ADS 4 JPMOD #BGL CALL 7 XJOCT [CONVERT TO OCTAL #C2= ADX 4 JPMOD [GET OUTPUT MOD. #CFW XCON STO 1 JLINKB #C^G ... LDN 6 K1PMINPRIN #DF6 LDX 1 FXINPRIN #DYQ SMO 1 #FDB CALL 0 (6) [CONVERT TO INSTRUCTION FORMAT #FY2 LDX 1 JLINKB #GCL LDX 5 JWLINK #GX= BRN (JLINKC) #HBW # #HWG # ROUTINE TO CONVERT BINARY NO. TO INSTRUCTION FORMAT #JB6 # ENTRY/EXIT AS FOR JCON4 #JTQ # #K*B XJCON1 #KT2 STO 7 JLINKC #L#L LDX 4 JPMOD #LS= STO 5 JWLINK #M?W BRN XCON #MRG # #N?6 # ROUTINE TO UPDATE PRINT BUFFER MODIFIER BY GIVEN NUMBER OF #NQQ # CHARACTER POSITIONS #P=B # ENTRY JPMOD=OUTPUT MOD. #PQ2 # WORD FOLLOWING CALL ORDER=NO.OF CHAR. POS. TO UPDATE #Q9L # EXIT X7=LINK #QP= # X6,JPMOD=UPDATED OUTPUT MOD. #R8W # #RNG XJUP #S86 LDX 6 JPMOD #SMQ SLC 6 2 #T7B SMO 7 #TM2 ADX 6 0 #W6L SRC 6 2 #WL= STO 6 JPMOD #X5W EXIT 7 1 #XKG # #Y56 # LINE PRINTER OUTPUT ROUTINES #YJQ # ENTRY X7=LINK #^4B # EXIT X7,X3,X5,X6=UNDEFINED #^J2 # JOZ,JPMOD=START ADDR. OF CURRENT PRINT BUFFER *23L # *2H= # ROUTINE TO THROW TO TOP OF FORM AND PRINT A LINE *32W # *3GG XJPRINT *426 LDN 6 #51 [PFCC *4FQ BRN P *4^B # *5F2 # ROUTINE TO THROW A LINE AND PRINT A LINE *5YL # *6D= XJPRINT1 *6XW LDN 6 #41 [PFCC *7CG BRN P *7X6 # *8BQ # ROUTINE TO THROW TWO LINES AND PRINT A LINE *8WB # *9B2 XJPRINT2 *9TL LDN 6 #42 [PFCC *=*= P STO 7 JLINKB [STORE LINK *=SW STO 0 JLINK0 [STORE X0 *?#G STO 1 JLINK1 [STORE X1 *?S6 SMO FXPMDR *#?Q LDX 1 SWITCH [POINTER TO CURRENT LP PCA *#RB SMO FXPMDR **?2 LDX 3 PRINT+3(1) [GET ADDR. OF CURRENT LP BUFFER **QL SMO FXPMDR *B== LDX 5 JBUNCHBASE *BPW BRN (5) *C9G XBUNCHBASE *CP6 STO 6 0(3) [STORE PFCC *D8Q ERN 1 4 [POINTER TO OUTPUT BUFFER *DNB STOZ 3 *F82 P1 SMO FXPMDR *FML LDX 5 JLPRW1 [LOOP IF PREVIOUS TRANSFER *G7= BNG 5 P1 [STILL IN PROGRESS *GLW SLC 5 5 *H6G BPZ 5 P4 [J IF LP ALLOCATED *HL6 BNZ 3 P5 [J IF MESSAGE ALREADY OUTPUT *J5Q ...P9 LDN 3 JPMESS [SET UP 'UNIT NN FIX' MESSAGE *JKB P7 CALL 0 PTWOUT *K52 P5 SMO FXPMDR *KJL LDN 3 XSTART [GET BLOCK START FOR LP *L4= GPERI ,3,NC [REPEAT PREVIOUS TRANSFER *LHW BRN P1 *M3G P4 SRC 5 2 *MH6 BPZ 5 P8 [J IF LAST TRANSFER OK *MKP ...#UNS AR1 *MN# ...( *MQX ... LDX 6 JLPPTR *MTG ... JHLFDON 6,P9 [J IF HALFDONEBIT SET *MY5 ...) *N2Q LDN 3 JPMESS1 [SET UP 'UNIT NN FAIL' MESSAGE *NGB BRN P7 *P22 P8 SRC 5 1 *PFL SMO FXPMDR *P^= LDX 6 JLPPTR *QDW BPZ 5 P2 [J IF NO PAPER LOW INDICATED *QYG SMO FXPMDR *RD6 LDN 3 MESSB *RXQ CALL 0 PTWOUT [OUTPUT 'PAPERLOW' MESSAGE *SCB SMO FXPMDR *SX2 LDX 6 JLPPTR *TBL DISENGPER 6 [DISENGAGE LP *TW= P6 JDISENG 6,P6 [LOOP TILL PRINTER OPERABLE *W*W P2 SMO FXPMDR *WTG LDX 1 SWITCH *X*6 SMO FXPMDR *XSQ LDX 5 PRINT+3(1) *Y#B DCA 6,STO,5,CTSA [SET UP CURRENT TRANSFER START ADDR *YS2 SMO FXPMDR *^?L LDN 3 XSTART *^R= GPERI ,3,NC [INITIATE TRANSFER B2=W ERN 1 4 [SET POINTER TO OTHER BUFFER - NOW B2QG SMO FXPMDR B3=6 STO 1 SWITCH [CURRENT BUFFER B3PQ SMO FXPMDR B49B LDX 1 PRINT+3(1) B4P2 XBUNCHEND B58L LDX 0 JLINK0 [RESET X0 B5N= P3 SMO FXPMDR B67W LDX 6 SPACEFUL B6MG STO 6 0(1) [SPACEFIL CURRENT BUFFER B776 LDN 5 0(1) B7LQ LDN 6 1(1) B86B MOVE 5 30 B8L2 STO 1 JOZ [STORE START ADDR. B95L STO 1 JPMOD [OF CURRENT BUFFER B9K= BCHX 1 £ [STEP POINTER B=4W STO 1 JLPMOD [AND STORE. B=JG LDX 1 JLINK1 [RESET X1 B?46 BRN (JLINKB) B?HQ # B#3B # ROUTINE TO SPACEFIL BUFFER AND RESET MODIFIERS WITHOUT PRINTING B#H2 # B*2L XJPRINTX B*G= STO 7 JLINKB B*^W STO 1 JLINK1 BBFG LDX 1 JOZ BB^6 BRN P3 BCDQ # BCYB # ROUTINE TO OUTPUT PRINTER MESSAGES ON OPERATOR CONSOLE BDD2 # ENTRY X3=START ADDR. OF MESSAGE BDXL # X6=LP UNIT NO. BFC= # EXIT X0=LINK BFWW # X3,X5,X6,X7=UNDEFINED BGBG # BGW6 PTWOUT BH*Q SMO FXPMDR BHTB STO 3 MESSAGE BJ*2 SMO FXPMDR BJSL LDX 3 JLPPTR BK#= CALL 7 XJGNO2 BKRW SMO FXPMDR BL?G LDX 3 MESSAGE BLR6 STO 5 3(3) BM=Q CALL 7 (JCONOUT) BMQB EXIT 0 0 BN=2 # BNPL # THERE FOLLOWS A S/R REQ'D UNDER NI TO READ I/P FROM CONSOLE T/W BP9= # IT IS CALLED WHEN IT IS FOUND THAT ENGAGE BUTTON BIT FOR T/W IS BPNW # SET. NB CALLING ROUTINE UNSETS THIS BIT. BQ8G # LINK X7, EXIT CALL+2 NOT OK TRANSFER BQN6 # CALL+1 OK TRANSFER WITH RW IN X6 BR7Q # BRMB XJCTWIN BS72 STO 7 JLINK7 [STORE LINK BSLL SMO FXPMDR BT6= LDX 5 PCCA BTKW LDX 3 JCTWPTR [GET T/W DEVICE REC PTR BW5G DCA 3,DLA,5,MODE [SET UP MODE, BWK6 SMO FXPMDR BX4Q LDX 5 PCCA+2 BXJB DCA 3,STO,5,COUNT [COUNT AND BY42 SMO FXPMDR BYHL LDX 5 PCCA+3 B^3= DCA 3,STO,5,CTSA [TRANSFER START ADDRESS. B^GW LDN 3 JCTWPTR-CPPTR C22G GPERI ,3,NC [INITIATE TRANSFER C2G6 TWIN1 LDX 6 JCTWRW1 [CHECK REPLY. C2^Q BNG 6 TWIN1 [LOOP STILL IN PROGRESS C3FB SLC 6 4 [ CHECK TRF BIT C3^2 BNG 6 TWIN2 [J TFR NOT OK C4DL SMO FXPMDR C4Y= LDN 3 MESSD C5CW CALL 7 (JCONOUT) [OUTPUT NL C5XG SRC 6 4 [ RESTORE REPLY WORD C6C6 SMO FXPMDR C6WQ STO 6 JPCONREPLY [SAVE REPLY FOR LATER USE C7BB LDX 7 JLINK7 C7W2 EXIT 7 1 [EXIT OK C8*L # C8T= # C9#W TWIN2 SMO FXPMDR C9SG LDN 3 MESSC C=#6 CALL 7 (JCONOUT) [OUTPUT CANCEL MESSAGE C=RQ BRN (JLINK7) [EXIT NOT OK C??B # C?R2 # C#=L # C#Q= #END ^^^^ ...431241270008