{{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