{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: PM)}}
====== PM ======
(George Source)
**Macros used:** [[george:macro:DATUMADD|DATUMADD]], [[george:macro:DCA|DCA]], [[george:macro:ENTRUST|ENTRUST]], [[george:macro:FINDPEREC|FINDPEREC]], [[george:macro:FIXTRA|FIXTRA]], [[george:macro:GPERI|GPERI]], [[george:macro:JBUSY|JBUSY]], [[george:macro:JDISENG|JDISENG]], [[george:macro:JWRONG|JWRONG]], [[george:macro:LABFIX|LABFIX]], [[george:macro:LGEOG|LGEOG]], [[george:macro:LTYPE|LTYPE]]
22FL #OPT K0PM=0
22^= #LIS K0PM>K0POST>K0KERNEL>K0ALLGEO
23DW #
23YG #SEG PM [RAY BARNES AND DEK BEASLEY
24D6 #
24XQ # THE NEXT PIECE OF CODE IS THE CORE PART OF THE NI VERSION OF
25CB # THE POSTMORTEM ROUTINE, WRITTEN FOR THE MOST PART BY J BAILEY
25X2 #
26BL # THE REORGANISED VERSION HAS BECOME PURE!!!!!!
26W= #
27*W #
27TG 8HPM
28*6 #
28SQ UGH LDN 3 JNOPM
29#B CALL 7 XCONOUT
29S2 PMSTOP
2=?L BRN PMSTOP [LOOP STOP TO KILL PM
2=R= #
2?=W #
2?QG # CONSOLE TYPEWRITER OUTPUT ROUTINE
2#=6 #
2#PQ #
2*9B ... LABFIX JJCONOUT
2*P2 XCONOUT
2B8L STO 0 JX0 [ SAVE X0
2BN= STO 1 JX1 [ SAVE X1
2C7W LDX 1 JCTWPTR [ GET DEVICE RECORD OF CTW
2CMG XLOOP JBUSY 1,XLOOP
2D76 LDX 0 0(3)
2DLQ DCA 1,STO,0,COUNT
2F6B LDN 0 1(3)
2FL2 DCA 1,STO,0,CTSA
2G5L LDX 0 JPCA
2GK= DCA 1,DLA,0,MODE
2H4W LDN 1 JOSTART
2HJG GPERI JCTWPTR,1,NC
2J46 ...SNORE LDX 1 JCTWRW1
2JHQ BNG 1 SNORE
2K3B SLL 1 3
2KH2 BNG 1 XLOOP
2L2L LDX 1 JX1 [ RESET X1
2LG= LDX 0 JX0 [ RESET X0
2L^W ... EXIT 7 0
2MFG #
2M^6 #
2NDQ # BS TRANSFER IMPLEMENTATION ROUTINE
2NYB #
2PD2 TRANSF
2PXL ... LDX 4 BINDEX
2QC= DATUMADD JDUM2,4,JDUM+2 [GET BS ADDRESS
2QWW BZE 1 UGH [0 REPLY --- VERY BAD FOR PM ABANDO
2RBG DCA JGEOPTR,STO,1,DTSA [ SET UP DEVICE RECORD
2RW6 LDX 1 JGEOPTR
2S*Q LDX 0 JDUM
2STB DCA 1,DLA,0,MODE
2T*2 LDX 0 JDUM+2
2TSL DCA 1,STO,0,COUNT
2W#= LDX 0 JDUM+3
2WRW DCA 1,STO,0,CTSA
2X?G CALL 0 XBSROUT [ SET OFF TRANSFER
2XR6 BRN TRANSF [ TRY AGAIN
2Y=Q ... BZE 2 (5)
2YQB ADS 2 JDUM+3 [ RESET DETAILS
2^=2 ADS 2 JDUM2
2^PL SBS 2 JDUM+2
329= BRN TRANSF [ DO NEXT BITE
32NW XBSROUT
338G STO 0 JLINK [STORE LINK
33N6 LDN 3 JXSTART [GET BLOCK START
347Q GPERI JGEOPTR,3,NC [DO PERI
34MB PPM1 LDX 4 JGEORW1 [CHECK REPLY
3572 BNG 4 PPM1 [LOOP IF STILL BUSY
35LL SLC 4 6
366= ANDN 4 15 [FORGET END OF CYLINDER
36KW LDX 3 JGEOPTR
375G LTYPE 3,1
37K6 TXU 1 JEDS
384Q BCS PPM2
38JB ANDN 4 #15
3942 PPM2 BNZ 4 PPM3 [NOT OK?
39HL LDX 0 JLINK [RECOVER LINK
3=3= EXIT 0 1
3=GW PPM3 ANDN 4 14
3?2G LDN 3 JPMESS1 [FAIL
3?G6 BNZ 4 PPM4
3?^Q LDN 3 JPMESS [FIX
3#FB ...PPM4 CALL 0 XPGTGE [GEOGRAPHICAL NUMBER TO CHARS
3#^2 CALL 7 XCONOUT [OUTPUT ON CONSOLE
3*DL PPM6 LDX 3 JGEOPTR [GET G'S DEVICE
3*Y= JDISENG 3,PPM6 [LOOP TILL ENGAGED
3BCW BRN (JLINK)
3BXG #
3CC6 #
3CWQ # ROUTINE TO PUT NNN INTO UNIT NNN FIX OR FAIL MESSAGE
3DBB #
3DW2 #
3F*L # ENTRY POINT SPECIFYING GEORGE DEVICE
3FT= #
3G#W #
3GSG LABFIX JJPGTGE
3H#6 XPGTGE
3HRQ LDX 1 JGEOPTR
3J?B LABFIX JPG
3JR2 LGEOG 1,7
3K=L LDCT 6 #200
3KQ= STO 6 3(3)
3L9W DVS 6 JTEN
3LPG ORS 6 3(3) [DUMP UNITS DIGIT
3M96 DVS 6 JTEN
3MNQ SLL 67 6
3N8B SLL 7 6
3NN2 ORX 6 7 [GEOGRAPHICAL NO. TO CHARS
3P7L ORS 6 3(3) [DUMP HUNS & TENS DIGITS
3PM= EXIT 0 0 [EXIT
3Q6W #
3QLG #
3R66 #
3RKQ # HERE IS THE ONLY ENTRY POINT TO PM BOOTSTRAP
3S5B #
3SK2 #
3T4L #
3TJ= LABFIX JBPMCO
3W3W FIXTRA ADPPM [USED EXCLUSIVELY BY DATAPASS
3W4^ ... STO 0 JACC
3W65 ...#
3W8# ...# FOR 2960 DME DUALS WE MUST ENSURE PM NOT ABLE
3W=H ...# TO RUN CONCURRENTLY WITH EXECUTIVE SO .....
3W#Q ...#
3WB^ ... ENTRUST [ MAKE US TRUSTED
3WF8 ...#
3X36 STO 1 JACC+1
3XGQ LDN 0 2
3Y2B LDN 1 JACC+2 [STORE ACCUMULATORS
3YG2 MOVE 0 6
3Y^L LDX 0 GONRDUMP [SAVE GEORGE'S WORD 8
3^F= STO 0 JONRDUMP [IN CASE OF PM BREAK
3^YW LDN 0 BSL1
42DG LDN 1 JBSL
42Y6 MOVE 0 5 [STORE BSL1-BSL5
43CQ LDX 0 PMSTOP [STORE LOOP STOP IN K0
43XB STO 0 K0 [IN EVENT OF PM FAILURE A BRANCH
44C2 [ TO K0 IS EFFECTED
44WL #
45B= # NOW NEED TO ACCESS DEVICE LIST FOR RECORDS PERTAINING TO
45TW # CONSOLE T/W AND GEORGE'S B/S DEVICE. THESE RECORDS ARE STORED.
46*G #
46T6 LDX 3 GEOBSPTR
47#Q LDN 4 JGEOREC [MOVE G'S DEVICE RECORD
47SB MOVE 3 K53-K50 [INTO A BUFFER
48#2 STO 3 JGEOPTR [KEEP PTR
48RL LDN 6 63 [T/W IS TYPE 63
49?= FINDPEREC 3,APFOTY,6,XYZ [GET DEVICE RECORD POINTER
49QW JWRONG 3,XYZ [J IF CONSOLE IS WRONGED
4==G LDN 4 JCTWREC
4=Q6 MOVE 3 K53-K50 [MOVE TO BUFFER.
4?9Q STO 3 JCTWPTR [KEEP PTR
4?PB NGN 4 1
4#92 PM1 LDX 3 JGEOPTR
4#NL JDISENG 3,PM2 [J IF NOT ENGAGED
4*8= JBUSY 3,PM1 [LOOP IF BUSY
4*MW BRN PM3 [ELSE J OK
4B7G PM2 BZE 4 PM1 [J IF 'FIX' ALREADY O/P
4BM6 LDN 3 JPMESS [FIX MESSAGE
4C6Q CALL 0 XPGTGE [GEOGRAPHICAL NO. TO CHARS.
4CLB CALL 7 XCONOUT [FIX TO CONSOLE
4D62 LDN 4 0
4DKL BRN PM1
4F5= #
4FJW #
4G4G # WRITE AWAY FIXED CORE
4GJ6 #
4H3Q #
4HHB ...PM3 CALL 5 TRANSF
4J32 #
4JGL #
4K2= #
4KFW # READ PMFIXINT INTO CORE FOLLOWING PM BOOTSTRAP
4K^G #
4LF6 #
4LYQ LDX 1 JLPMFIXINT
4MDB STO 1 JDUM+2
4MY2 LDN 1 0
4NCL STO 1 JDUM
4NX= LDN 1 PMBSEND
4PBW STO 1 JDUM+3
4PWG STO 1 FXPMFXNT [ SET UP FX WORD FOR 'CHAPTER TABLE'
4QB6 ADX 1 JLPMFIXINT
4QTQ STO 1 FXPMDR [ PRESET BASE ADDRESS OF PMDR
4R*B LDX 1 JDPMFIXINT
4RT2 STO 1 JDUM+4
4S#L STO 1 JDUM2
4SS= ... CALL 5 TRANSF [ DO THE TRANSFER
4T?W #
4TRG #
4W?6 ...# READ PMDR INTO CORE FOLLOWING PMFIXINT
4WQQ #
4X=B SMO FXPMFXNT
4XQ2 LDX 1 JPMDR [ GET CHAPTER TABLE ENTRY FOR PMDR
4Y9L LDN 2 0
4YP= SRL 12 15
4^8W SRL 2 2 [ B/S ADDRESS
4^NG SLL 1 2 [ LENGTH
5286 STO 1 JDUM+2
52CY ... STO 2 JDUM2
52MQ STO 2 JDUM+4
537B LDX 4 FXPMDR [ BASE ADDRESS IN CORE
53M2 STO 4 JDUM+3
546L ADX 4 1
54L= STO 4 FXPM1 [ PRESET BASE ADDRESS FOR 1ST OVERLA
555W ... CALL 5 TRANSF [ DO THE TRANSFER
55KG #SKI G4
5656 (
56JQ LDX 4 K30+K402 [SET UP WORD FOR USE
574B ADN 4 1024 [BY MACRO PMCORES WHEN
57J2 STO 4 JK402 [TESTIHG CORE VIOLATIONS IN G4
583L )
5858 ...#UNS JPSCF
586Q ...(
588# ... LDX 4 JGEOPTR
589W ... SMO FXPMDR
58?D ... STO 4 JSCFGEODMP
58*2 ... LDX 4 GEOSCFPTR
58BJ ... SMO FXPMDR
58D6 ... STO 4 JSCFPTR
58FN ...)
58H= SMO FXPMDR
592W BRN K1PMDR [ ENTER PMDR
59GG FIXTRA JPMBSEND [USED BY PMSIZEUP & PMSIZE MACRO
5=26 [FOR END OF PM BOOTSTRAP
5=FQ PMBSEND
5=^B #END
^^^^ ...67227253004200000000