{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: LISTMOP867)}}
====== LISTMOP867 ======
(George Source)
**Macros used:** [[george:macro:ABANDCOM|ABANDCOM]], [[george:macro:ALTLEN|ALTLEN]], [[george:macro:BITDEFS|BITDEFS]], [[george:macro:BS|BS]], [[george:macro:BXE|BXE]], [[george:macro:BXL|BXL]], [[george:macro:CATMASK|CATMASK]], [[george:macro:CLOSE|CLOSE]], [[george:macro:ENDCOM|ENDCOM]], [[george:macro:FREECORE|FREECORE]], [[george:macro:JBC|JBC]], [[george:macro:JBS|JBS]], [[george:macro:MFREE|MFREE]], [[george:macro:MFREEW|MFREEW]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:OPEN|OPEN]], [[george:macro:OUTMON|OUTMON]], [[george:macro:OUTMONX|OUTMONX]], [[george:macro:PHOTO|PHOTO]], [[george:macro:PROPAGANDA|PROPAGANDA]], [[george:macro:READY|READY]], [[george:macro:RV|RV]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:STEP|STEP]], [[george:macro:STEPAGAIN|STEPAGAIN]], [[george:macro:TESTMOVE|TESTMOVE]], [[george:macro:TESTRPN2|TESTRPN2]], [[george:macro:TOPFCB|TOPFCB]], [[george:macro:TRF|TRF]], [[george:macro:UP|UP]]
22FL #OPT K0LISTMOP=0
22^= #LIS K0LISTMOP>K0LISTFILE>K0COMMAND>K0GREATGEO>K0ALLGEO
234B ... SEG LISTMOP,,,,G501,G502,G503
237G ...[
23=L ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982
23*Q ...[ THIS EXCLUDES CODE UNDER #SKI G501
23DW ...[ AND UNDER #SKI G502
23J2 ...[ AND UNDER #SKI G503
23M6 ...[
23Q= ...#OPT G501 = 0
23TB ...#OPT G502 = 0
23YG ...#SKI G502&1
243L ...# WITH UGUG EDIT M502 (SHIFT AND GRAPHICS OUTPUT ON MOP)
246Q ...#OPT G503 = 0
249W ...#SKI G503&1
24*2 ...# WITH UGUG EDIT M503 (PAGING AND FRAMING ON MOP LISTFILES)
24D6 #
24XQ #
25CB # THIS ENTRY POINT LISTS A FILE TO THE MONITORING FILE
25M8 # AND/OR A MOP TERMINAL
25X2 #
26BL SEGENTRY K1LISTMOP,Z1LISTMOP
26W= #
27*W #
27TG #
28*6 #
28SQ # THIS ENTRY POINT IS CALLED FROM K8IPBMOPB JUST BEFORE THE 'CLOSED DOWN
29#B # MESSAGE IS SENT TO A VDU, PROVIDED THE PROPAGANDA RESTORE TIME MAC
29S2 # HAS BEEN INVOKED.
2=?L # IT OPENS (IF AVAILABLE) A FILE CONTAINING PROPAGANDA TO BE OUTPUT
2=R= # TO THE IDLE DISPLAY, AND USES THE NORMAL MOP CONSOLE LISTFILE CODE
2?=W # TO OUTPUT THE CONTENTS OF THE FILE TO THE SCREEN.
2?QG #
2#=6 SEGENTRY K2LISTMOP,Z2LISTMOP
2#PQ #
2*9B #
2*P2 #
2B8L
2BN= SEGENTRY K60LISTMOP [ USED BY PROPAGANDA MACRO TO RESET
2C3^ PROPAGANDA
2CCN 10,24HOPERATORS PROPAGANDA [ THE USERNAME AND FILENAME
2CRC 1,0,4H [ OTHER DETAILS
2D76 #
2DLQ PCONVERT
2F6B +7036875
2FL2 PCATEGORY
2G5L CATMASK LS [ GATEGORY FOR OUTPUT
2GK= #
2H4W #
2HJG #
2J46 #
2J?Y Z2LISTMOP
2JHQ LDN 0 1
2JRJ STO 0 AWORK1(2) [ ENTRY POINT SWITCH
2K3B SETNCORE 10,2,FILE,FABSNB [ OPEN PROPAGANDA FILE.
2KH2 ADN 1 PROPAGANDA
2L2L ADN 2 A1
2LG= MOVE 1 10
2L^W OPEN XBRK,READ,NOWAIT,QUERY,REPLY [ J. TO END IF BREAK IN.
2MFG TESTRPN2 OK,NOTOK [ J. IF NO FILE, IN USE, OFFLINE, ETC
2M^6 MFREEW FILE,FABSNB [ NO LONGER NEEDED.
2NDQ TOPFCB 3 [ GET FILE CONTROL BLOCK.
2NYB JBS NOTOX,3,BFDIR [ CHECK FILE IS LISTABLE, I.E. SERIAL
2PD2 JBC NOTOX,3,BFSER [ AND NOT A DIRECTORY.
2PK8 STEP
2PQB BZE 3 NOTOX [ AND IS NOT EMPTY
2PXL #
2QC= # NOW WE'VE OPENED THE FILE ALL WE HAVE TO DO IS LISTFILE THE CONTENTS.
2QWW #
2RBG MHUNTW 3,AMXOR,ADCB [ MUST BE ONE OR WE WOULDN'T BE HERE.
2RW6 LDEX 4 ICHARS(3) [ GET DISPLAY SCREEN WIDTH.
2S9T STO 4 AWORK1(2)
2SKJ SETNCORE GHEAD-A1,3,GOUT,INFO [ SET UP/INITIALISE PARAMETER BLOCK.
2S^? STOZ GFLI(3) [ START OUTPUT FROM LINE 0.
2T*2 LDN 0 16 [ OUTPUT 16 LINES MAX. SO WE DON'T GE
2TSL STO 0 GNLI(3) [ INVOLVED WITH CTRL+3 PROBLEMS.
2W#= STOZ GFTY(3)
2WJ4 STOZ GMODE(3)
STOZ GCOUNT(3)
2WRW BS 3,BLFBASIC [ BASIC FILE : NOT NUMBERING OR SPECI
2XR6 #
2Y=Q BRN XCOMMON
2YQB #
2^=2 Z1LISTMOP
2^PL STOZ AWORK1(2) [ ZERO IF K1 (NORMAL) ENTRY POINT.
329= XCOMMON
32NW LDX 6 ALOGLEN(2)
338G STO 6 EXTPS(2)
33N6 ... ADN 6 ALFMOPLEN+1
347Q ALTLEN FX2,6 [ EXTEND ACT. BL. FOR OUTPUT LINE
34MB MHUNTW 1,GOUT,INFO
34X8 JBS ZERROR,1,BLFFRTOER
34Y3 ...#SKI G503&1
34YW ... STOZ GSUSE(1) [ LINES OUTPUT IN THIS FRAME
34^P ...#SKI G502&1
352J ...(
353C ... BITDEFS 4,17,RECBETA [ BETA SHIFT WHEN RED TAPE IN X4
354= ... TRF 1,FLFXTRAPICT,2,G502SHIFTF
3555 ...# COPIES SHIFT,NOLF,NOBC BITS FROM GMODE TO CPAT FOR IPBMOP TO SEE
355Y ...)
3572 JBS XAMORPH,1,BLFBASIC
35LL BS 1,BLFSPECIAL
366= XAMORPH
36KW LDN 0 1
375G SBS 0 GFLI(1) [ DECREASE GFLI BY 1 FOR LINE NUMBER
37K6 STEPAGAIN
384Q BZE 3 ZERROR [ J IF ERROR FOUND BY CENTRAL ROUTINE
38JB BRN START2
3942 START
39HL STEP
3=3= BZE 3 OUT [ J IF END OF FILE
3=GW START2
3=S= MHUNTW 1,GOUT,INFO
3?5L LDEX 7 0(3)
3?C2 JBC STARTNS,1,BLFSPECIAL
3?NB ADN 7 1
3?^Q STARTNS
3#?6 JBC STARTNN,1,BLFNUMBER
3#JG ADN 7 2
3#TW STARTNN
3*7= SBN 7 1 [ BUFFER LENGTH REQUIRED
3*DL [
3*Y= [ INCREASE LENGTH OF CPAT AS NECESSARY
3BCW [ DECREASE LENGTH IF
3BXG ...[ BUFFER > ALFMOPLEN*2 AND BUFFER > REQUIRED LENGTH + ALFMOPLEN
3CC6 [
3F*L LDX 4 ALOGLEN(2)
3FT= SBX 4 EXTPS(2) [ LENGTH OF BUFFER
3G6L BXL 4 7,XINC [ J IF INCREASE REQUIRED
3GD2 BXE 4 7,OKLEN [ J IF OK
3GQY ... SBN 4 ALFMOPLEN*2+1
3H5W ... BNG 4 OKLEN [ J IF < ALFMOPLEN*2
3HDS ... ADN 4 ALFMOPLEN
3HRQ SBX 4 7
3J7F ... BNG 4 OKLEN [ J IF < REQUIRED LENGTH + ALFMOPLEN
3JH8 XINC
3JR2 LDX 4 7
3KQ= ADX 4 EXTPS(2) [ X4 CONTAINS NEW LENGTH REQD.
3L9W PHOTO 5
3LPG ALTLEN FX2,4
3M96 TESTMOVE 5,OKLEN1 [ J IF NO BLOCKS MOVED
3MNQ STEPAGAIN
3N8B OKLEN1
3NN2 MHUNTW 1,GOUT,INFO
3P7L OKLEN
3PM= SBN 7 1 [ DATA LENGTH
3Q6W JBS NPFCC,1,BLFSPECIAL
3QLG LDX 4 1(3) [ OTHERWISE CHECK IF PRINTING REQD.
3QRN ...#SKI G502&1
3QYW ... TRF ,RECBETA,2,G502BETA [ SET ALPHA/BETA BIT FOR IPBMOP
3R66 ANDN 4 #40 [ AND
3RKQ BNZ 4 NPFCC [ J IF SO
3S5B JBC RNONU,1,BLFNUMBER
3SK2 LDN 0 7 [ ELSE PUT 7 INTO CHARACTER
3T4L SMO EXTPS(2) [ COUNT AND J
3TJ= STO 0 A1(2)
3W3W BRN NMV
3WHG RNONU
3X36 SMO EXTPS(2)
3XGQ STOZ A1(2) [ ZEROISE COUNT FOR NULL RECORD
3Y2B BRN NMV
3YG2 NPFCC
3YH8 ...#SKI G503&1
3YJB ...(
3YKJ ... [ VDU PAGING CODE ACL0057
3YLQ ... JBC XACL5,1,BLFXTRASTOP [ CONTEXT STOP NOT SET
3YMY ... LDX 4 2(3) [ CHECK CONTEXT FIRST WORD
3YP6 ... TXU 4 GHEAD(1)
3YQ# ... BCS XACL5 [ J NO MATCH
3YRG ... CALL 4 READY [ PAUSE
3YSN ... STEPAGAIN
3YTW ... MHUNTW 1,GOUT,INFO
3YX4 ...XACL5
3YY= ...)
3Y^L LDX 4 0(3) [ NO. OF WDS. IN RECORD
3^F= SBN 4 3
3^YW BNG 4 NCHANGE [ J IF ZERO RECORD
42DG BZE 4 NCHANGE [ OR SINGLE WORD RECORD
42Y6 LDX 5 4
43CQ TSPACES
43XB SMO 4
44C2 LDX 0 2(3) [ GET NEXT WD. STARTING FROM END
44WL TXU 0 ACES
45B= BCS NSPACES [ J IF NOT SPACES
45TW BCT 4 TSPACES
46*G ADN 4 1 [ OUTPUT 1 WD. IF ALL SPACES
46T6 NSPACES
47#Q TXU 5 4
47SB BCC NCHANGE [ J IF NO SPACES REMOVED
48#2 SBX 5 4 [ NO. OF WDS. TRUNCATED IN X5
48RL SBX 7 5 [ SUB. THIS FROM TOTAL
49?= LDX 5 7
49QW BRN T1
4==G NCHANGE
4=Q6 LDX 5 7
4?9Q ADN 4 1
4?PB BZE 4 T1
4#92 JBC T1,1,BLFBASIC
4#NL LDCT 4 #600 [ ISOLATE CHARACTER BITS.
4*8= ANDX 4 1(3)
4*MW BZE 4 T1 [ J IF NO ODD CHS.
4B7G SBN 5 1
4BM6 ORX 5 4
4C6Q T1
4CLB SLC 5 2
4D62 LDX 0 AWORK1(2) [ J. UNLESS K2 ENTRY.
4DKL BZE 0 T2
4F5= BXL 5 AWORK1(2),T2 [ IN WHICH CASE TRUNCATE RECORDS TO
4FJW LDX 5 AWORK1(2) [ DISPLAY WIDTH, TO STOP CONTINUATION
4G4G T2
4GJ6 SMO EXTPS(2)
4H3Q STO 5 A1(2) [ STORE NO. CHS. IN RECORD
4HHB JBS SPEC,1,BLFSPECIAL
4J32 ADN 3 1
4JGL SPEC
4K2= ADN 3 1
4KFW SMO EXTPS(2)
4K^G LDN 4 A1+1(2)
4LF6 JBC XDONE,1,BLFNUMBER
4LYQ ADN 4 2 [ LEAVE GAP FOR NUMBER
4MDB SBN 7 2
4MY2 XDONE
4NCL BZE 7 NMV [ J IF NO WDS. TO MOVE
4NX= SMO 7
4PBW MOVE 3 0 [ MOVE MESSAGE TO ACT. BL.
4PWG NMV
4QB6 LDN 4 1
4QTQ ADS 4 GFLI(1) [ INCREASE LINE COUNT
4R*B SBS 4 GNLI(1) [ UPDATE NO. OF LINES LEFT
4RT2 LDX 4 GFLI(1)
4S#L LDX 7 GNLI(1) [ NO. OF LINES LEFT ( -VE IF LIST TO
4SS= JBC NNUM,1,BLFNUMBER
4WQQ LDX 1 FX1
4X=B LDN 3 6
4XQ2 MPY 4 PCONVERT(1)
4Y9L SMO EXTPS(2)
4YP= LDN 2 A1+1(2)
4^8W LDN 1 #20
4^NG MODE 1
5286 NCBD
52MQ CBD 4 0(2) [ CONVERT LINE NO. TO DEC.
537B BCHX 2 £
53M2 BCT 3 NCBD
546L MODE 0 [ SWITCH OFF ZERO SUPPRESSION
54L= CBD 4 0(2) [ FOR LAST CHARACTER
555W BCHX 2 £
55KG DCH 1 0(2)
5656 LDX 2 FX2
56JQ NNUM
574B LDX 4 EXTPS(2)
57J2 TESTBRKI XBI
583L ADX 2 4 [ X2 PTS. TO COUNT WD. - A1
58H= ADN 4 A1+1 [ X4 PTS. TO START OF MESSAGE AREA
592W OUTMONX A1(2),4,PCATEGORY(1)
59GG BZE 7 OUT [ J IF NO MORE LINES REQUIRED
59HN ...#SKI G503&1
59JW ...(
59L4 ... JBC START,2,CXTMOP [ AVOID HUNT IF NOT MOP
59M= ... MHUNTW 1,GOUT,INFO
59ND ... LDN 7 1
59PL ... ADS 7 GSUSE(1) [ LINES DISPLAYED ON THIS PAGE
59QS ... LDX 0 GCOUNT(1)
59S2 ... TXU 0 GSUSE(1)
59T8 ... BCS START [ PAGE NOT FILLED
59WB ... STOZ GSUSE(1)
59XJ ... CALL 4 READY
59YQ ...)
5=26 BRN START
5=FQ #
5=G# ...#SKI G503&1
5=GW ...(
5=HD ...READY
5=J2 ... SBX 4 FX1
5=JJ ... READY XBI
5=K6 ... MHUNTW 1,FILE,FRB
5=KN ... LDEX 0 A1(1)
5=L= ... SBN 0 2
5=LS ... BZE 0 NOREP
5=MB ...#SKI G501&G502&1
5=MY ...(
5=NG ... JBC TESTC,2,G501SHIFT
5=P4 ... LDCH 0 A1+2(1) [ IF POSSIBILITY OF SHIFT INPUT,
5=PL ... ERN 0 #75 [ ALLOW BIG OR LITTLE 'C'
5=Q8 ... BNZ 0 TESTC
5=QQ ... BCHX 1 £
5=R# ...)
5=RW ...TESTC LDCH 0 A1+2(1)
5=SD ... ERN 0 #43 [ UNLESS 'C',
5=T2 ... BNZ 0 OUT [ ASSUME 'QUIT', 'STOP' OR W.H.Y.
5=TJ ...#SKI G501&G502&1
5=W6 ... LDN 1 0(1) [ CLEAR CHARACTER BITS
5=WN ...NOREP FREECORE 1
5=X= ... SMO FX1
5=XS ... EXIT 4 0 [ CONTINUE IF NULL OR 'C' REPLY
5=YB ...)
5=^B #
5?F2 XBI
5?YL LDCT 0 #400 [ MARK THAT BREAK IN HAS OCURRED.
5#D= ORS 0 AWORK1(2)
5#XW OUT
5*CG LDX 4 EXTPS(2)
5*X6 ALTLEN FX2,4
5BBQ MFREEW GOUT,INFO
5BWB NOTOX
5CB2 CLOSE
5CTL LDXC 0 AWORK1(2) [ J. IF NOT BROKEN IN.
5D*= BCC X1FIN
5DSW BNZ 0 XBRK [ J. IF K2 ENTRY.
5F#G ABANDCOM
5FS6 #
5G?Q X1FIN
5GRB BNZ 0 X2FIN [ J. IF K2 ENTRY.
5H?2 ENDCOM
5HQL #
5J== #
5JPW #
5K9G ZERROR
5KP6 [
5L8Q [ ERROR FOUND BY CENTRAL ROUTINES
5LNB [ LIST ERROR LINE
5M82 [
5MCS LDX 1 FX1
5MML MHUNTW 3,ADATA,HEADING
5N3* LDX 4 HEADCNT(3)
5NC4 SBN 4 1 [ PFCC
5NQR OUTMON 4,HEADDATA,PCATEGORY(1),ADATA,HEADING
5P6G MFREEW ADATA,HEADING
5PL6 BRN OUT
5Q5Q [
5QKB NOTOK
5R52 [
5RJL [ FAILED TO OPEN PROPAGANDA FILE
5S4= [
5SHW TESTRPN2 MAG,NOTOK1 [ J. OUT UNLESS FILE IS OFFLINE.
5T3G RV
5TH6 NOTOK1
5W2Q MFREE FILE,FABSNB
5WGB XBRK
5X22 X2FIN
5XFL UP [ RETURN TO IPBMOPB.
5X^= #
5YDW #
5YYG #END
5^D6 #
^^^^ ...462776340003