{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: LISTTPCP867)}}
====== LISTTPCP867 ======
(George Source)
**Macros used:** [[george:macro:ALTLEN|ALTLEN]], [[george:macro:COOR1|COOR1]], [[george:macro:DCA|DCA]], [[george:macro:DISENGPER|DISENGPER]], [[george:macro:DOWN|DOWN]], [[george:macro:ENGPER|ENGPER]], [[george:macro:FREECORE|FREECORE]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GPERI|GPERI]], [[george:macro:JUNBUSY|JUNBUSY]], [[george:macro:LFBBS|LFBBS]], [[george:macro:LFBBUS|LFBBUS]], [[george:macro:LFBITCLR|LFBITCLR]], [[george:macro:LFBITSET|LFBITSET]], [[george:macro:LFEND|LFEND]], [[george:macro:LOCKC|LOCKC]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:OUTPER|OUTPER]], [[george:macro:PHOTO|PHOTO]], [[george:macro:SETENTRY|SETENTRY]], [[george:macro:SETUPCORE|SETUPCORE]], [[george:macro:STEP|STEP]], [[george:macro:STEPAGAIN|STEPAGAIN]], [[george:macro:TESTMOVE|TESTMOVE]], [[george:macro:TRACE|TRACE]], [[george:macro:UNLOCK|UNLOCK]]
22FL #OPT K0LISTTPCP=0
22PD ...#OPT JMIXEDTP=0
22^= #LIS K0LISTTPCP>K0LISTFILE>K0ALLGEO>K0GREATGEO>K0COMMAND
23DW #SEG LISTTPCP
23YG 8HLISTTPCP
248# ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1983
24D6 SETENTRY LISTTPCP,POINT,1
25CB [THIS SEGMENT IS ENTERED FROM LISTINTC TO IMPLEMENT CENTRAL
25X2 [CARD PUNCH OR TAPE PUNCH FILE LISTINGS
26BL [
26W= [
27*W [***********************************************************************
27TG [DATA AREA
28*6 NUMCA +10000 [CARD MAXIMUM LINE NUMBER
28SQ XCONT 4H - [CONTINUATION LINE MARK-OUTPUT AT
29#B [END OF EACH LINE(EXCEPT LAST) OF
29S2 [MULTILINE RECORD
2=R= XFULLREC +2000
2?=W [MAX NUMBER OF CHARACTERS IN RECORD
2?QG TPLEN +128 [
2#=6 NEWRUN #76327620 [NEWLINE AND
2#PQ RUN #76207620 [RUNOUTS FOR TP
2*9B SMLP +7036875 [MAGIC CONVERSION NUMBER
2*P2 [
2B8L [***********************************************************************
2BN= [SUBROUTINE AREA
2C7W [
2CMG [THIS SUBROUTINE TIDIES UP WHEN A LISTING IS TO END
2D76 [
2DLQ TIDYUP
2F6B LFBBUS K,2,NOADATA [J IF NO CONVERSION BLOCK
2FL2 MHUNTW 1,ADATA,ACONV
2G5L FREECORE 1
2GK= LFBITCLR K,2 [CLEAR CONVERSION FLAG
2H4W NOADATA
2HJG ... MHUNTW 1,GOUT,INFOLIST
2J46 LDX 4 GREST(1)
2JHQ FREECORE 1
2K3B EXIT 3 0
2KH2 [
2L2L [THIS SUBROUTINE IS USED BY THE LOCK MACRO TO SET X2=FX2
2LG= [
2L^W SLOCKC
2MFG LDX 2 FX2
2M^6 EXIT 1 0
2NDQ [
2NYB [THIS SUBROUTINE CONVERTS THE BINARY NUMBER IN X5 TO DECIMAL
2PD2 [CHARACTERS STORING THE RESULT IN THE LOCATION WHOSE ADDRESS IS IN X2
2PXL [
2QC= SEQUENCE
2QWW MODE 1 [ZERO SUPPRESS
2RBG SCBD CBD 4 0(2)
2RW6 BCHX 2 £
2S*Q BCT 3 SCBD
2STB MODE 0 [DON'T SUPPRESS ZEROES
2T*2 CBD 4 0(2) [FOR LAST CHARACTER
2TSL BCHX 2 £
2W#= DCH 1 0(2)
2WRW LDX 1 FX1
2X?G LDX 2 FX2
2XR6 EXIT 0 0
2Y=Q [
2YQB [THIS SUBROUTINE PERFORMS THE PERI ON THE DEVICE AND CHECKS
2^=2 [THE REPLY FOR DISENGAGED AND INOPERABLE STATUS
2^PL [
329= PERI
32NW SBX 5 FX1
338G REP
33N6 DCA ,LDX,4,COUNT
347Q BZE 4 NOT
34MB LDX 1 FX1
3572 LOCKC 2,SLOCKC
35LL LDN 4 GZDATA+1(2) [STORE BUFFER ADDRESS
366= DCA ,STO,4,CTSA [IN CONTROL AREA
36KW GPERI ,2
375G COOR1
37K6 UNLOCK 2
384Q LDX 4 FINISH
38JB SLL 4 2
3942 BNG 4 STOP ['FINISH NOW'
39HL LDCT 4 #50
3=3= ANDX 4 CPRW1(2)
3=GW BNZ 4 NOTENG [J IF FAIL OR DISENGAGED
3?2G LDN 0 1
3?G6 ADS 0 ALFTRANS(2) [UPDATE COUNT OF TRANSFERS
3?^Q DCA ,LDX,4,COUNT
3#FB SRL 4 2
3#^2 ADS 4 ALFWORDS(2) [UPDATE COUNT OF WORDS
3*DL NOT
3*Y= ADX 5 FX1
3BCW EXIT 5 0
3BXG [
3CC6 [THIS SUBROUTINE TRANSFERS DATA FROM FILE TO BUFFER
3CWQ [
3DBB TRANSFER
3DW2 SLL 3 2
3F*L ADX 3 GZPOINT(2)
3FT= SRC 3 2
3G#W LDN 4 GZDATA+1(2)
3GSG SLL 4 2
3H#6 ADX 4 GZDUMP(2)
3HRQ SRC 4 2
3J?B LDX 2 GZTRANS(2)
3JR2 BZE 2 NODATA
3K=L SMO 2
3KQ= MVCH 3 0
3L9W NODATA
3LPG LDX 2 FX2
3M96 EXIT 0 0
3MNQ [
3N8B [THIS CODE IS USED BY THE PERI SUBROUTINE WHEN PERIPHERAL
3NN2 [FAIL OR DISENGAGED STATUS IS DETECTED
3P7L [
3PM= NOTENG
3Q6W LDCT 0 #40
3QLG ANDX 0 CPRW1(2)
3R66 BNZ 0 XERREST [J IF TRANSFER ERROR
3RKQ ENGPER SBRKIN,,STOP
3S5B BRN REP
3SK2 STOP CALL 3 TIDYUP
3T4L LDCT 0 #600
3TJ= ANDX 0 4
3W3W BNZ 0 NOTLINER
3WHG SBN 4 1 [GREST=GNUM
3X36 NOTLINER
3XGQ ANDX 4 BITS22LS
3Y2B LFEND CD,4
3YG2 XERREST
3Y^L ENGPER SBRKIN,,STOP
3^F= TRACE 5,ENGAGE
3^YW ... MHUNTW 1,GOUT,INFOLIST
42DG LDCT 4 #200
42Y6 ADX 5 FX1
43CQ ANDX 4 GREST(1)
43XB BZE 4 PERI [J IF LINE RESTART
44C2 BRN STOP [ALL RESTART=CANTDO
44WL SBRKIN
45B= CALL 3 TIDYUP
45TW LFEND TE
46*G [
46C2 [
46CG [ THE FOLL. S/R IS PART OF THE LISTFILE ENHANCEMENT TO
46D2 [ READ ERROR RESILIENCE.
46DG [ THE S/R IS CALLED IF STEP ENCOUNTERS A CORRUPT BLOCK
46F2 [ (INDICATED BY FLAG 'M' BEING SET IN THE ACTLF)
46FG [ THE DEVICE IS DISENGAGED WITH THE MESSAGE :-
46G2 [ 'PSE ENGAGE UNIT N IF COMPLETION OF CORRUPT LISTING REQUIRED '
46GG [
46H2 [
46HG SRER
46J2 SBX 5 FX1
46JG XBSY JUNBUSY ,NOTBSY [WAIT UNTIL DEVICE NOT BUSY
46K2 BRN XBSY
46KG NOTBSY
46L2 DISENGPER [THEN DISENGAGE IT
46LG OUTPER [PSE ENGAGE MESSAGE
46M2 ENGPER SBRKIN,,SCDE,5 [APP. JUMPS IF TERM OR CDE
46MG ADX 5 FX1
46N2 EXIT 5 0
46NG [
46P2 [ IF CANTDO REPLY GIVEN WE RE-SCHEDULE REQUEST FROM BEGINNING
46PG [
46Q2 SCDE
46QG CALL 3 TIDYUP [FREE BLOCKS ETC
46R2 LFEND CD
46RG [
46T6 [***********************************************************************
47#Q [MAIN BODY OF SEGMENT
47SB [***********************************************************************
48#2 [THIS IS THE ENTRY POINT FOR LISTING A FILE TO A TAPE PUNCH(X7=0)
48RL [OR A CARD PUNCH(X7=2)
49?= [
49QW POINT1
4=34 ... MHUNTW 3,GOUT,INFOLIST
4=?= [ CODE FOR RER ENHANCEMENT...B11 SET IN GMODE
4=?G [ MEANS CORR. WAS DETECTED DURING CONTEXT SEARCH
4=?Q [ IF SO WE MUST DISENGAGE DEVICE ETC...
4=#2 LDX 0 GQUAL(3)
4=#= ANDX 0 BIT11
4=#G BZE 0 NOERR [J IF NO READ ERROR
4=#Q CALL 5 SRER
4=*2 NOERR
4=Q6 LDX 0 GQUAL(3)
4?9Q STO 0 AWORK1(2)
4?PB LDCT 6 #177 [SET UP X6 WITH MAXIMUM
4#92 ANDX 6 AWORK1(2) [NUMBER OF CHARACTERS PERMITTED
4#NL SRL 6 15 [FOR ONE TRANSFER
4*8= BNZ 7 TUPT [J IF NOT PAPER TAPE
4*MW LDN 6 48
4B7G TUPT ADN 6 80
4C^# STEPAGAIN
4MDB [WE ARE NOW POSITIONED ON CORRECT RECORD
4MY2 LDX 4 FRH+1(3)
4NCL STOZ GZDUMP(2)
4NX= BNZ 7 NOTP1 [J IF NOT PT
4PBW LDN 5 #10 [INITIALISE MODE TO GRAPHIC
4PWG LDX 0 AWORK1(2) [COPY OF GMODE
4QB6 ... ANDN 0 #300
4QTQ ... BZE 0 XDMODE
4R*B ... LDN 5 4
53M2 XDMODE
546L DCA ,DSA,5,MODE
54L= NOTP1
55KG BRN STARTED
5656 START
56JQ STEP
56PX LFBBUS M,2,NOCOR3 [J IF NO READ ERROR
56RL LFBITCLR M,2
56T* CALL 5 SRER
56X4 STEPAGAIN
56YR NOCOR3
574B BZE 3 TEND [J IF EOF
57J2 STARTED
583L LDEX 5 FRH(3) [PICK UP NUMBER OF WORDS IN RECORD
58H= LDN 4 4 [INITIALISE PICKUP ADDRESS
58ND ...#UNS JMIXEDTP
58TL ...#SKI
592S ... LDN 0 #40
5982 ...#UNS JMIXEDTP
59*8 ... LDN 0 #440
59GG ANDX 0 AWORK1(2)
5=26 BZE 0 OK1 [J IF NOT BASIC PERIPHERAL FILE
5=FQ LDN 0 #700
5=^B ANDX 0 AWORK1(2)
5?F2 BZE 0 NOCONV [J IF NOT SHIFT FILE
5?GF ... BNZ 7 RU3 [J IF *CP
5?HY ... LDN 4 #7700
5?KC ... ANDX 4 FRH+1(3)
5?LW ... SRL 4 6
5?N* ...#UNS JMIXEDTP
5?PS ...(
5?R? ... ANDN 0 #400 [THESE 4 LINES
5?SQ ... BZE 0 RU1 [IMPLEMENT
5?W9 ... DCA ,DSA,4,MODE [OLD-STYLE
5?XN ... BRN NOCONV [MIXED *TP FILES
5?^7 ...RU1
5#2L ...)
5#45 ... LDN 0 #75 [IF PREVIOUS SHIFT BETA LEAVE
5#5J ... TXU 0 4 [ALONE,ELSE RESET TO ALPHA
5#73 ... SBN 0 0 [(#74) IN CASE IT WAS INVALID
5#8G ... DCH 0 GZDATA+1(2)
5#9^ ... LDN 0 1
5#?D ... STO 0 GZDUMP(2)
5##X ... BRN NOCONV
5#BB ...RU3
5#D= LFBBS K,2,OLDCONV [J IF ALREADY AN ACONV BLOCK
5#XW SETUPCORE 5,3,ADATA,ACONV [BLOCK FOR SHIFT CONVERSION
5*CG LFBITSET K,2
5*X6 PHOTO 7
5BBQ LDN 4 A1(3)
5BWB STEPAGAIN
5CB2 BRN TMOVEMENT
5CTL OLDCONV [HISTORIC CODE HERE I GUESS!
5D*= MHUNTW 3,ADATA,ACONV
5DSW LDN 4 A1(3)
5F#G PHOTO 7
5FS6 ALTLEN 3,5,ADATA,ACONV
5G?Q STEPAGAIN
5GRB TMOVEMENT [MUST WE REHUNT?
5H?2 TESTMOVE 7,NOMOVE1 [J IF NOT
5HQL MHUNTW 1,ADATA,ACONV
5J== LDN 4 A1(1)
5JPW NOMOVE1
5K9G SMO 5
5KP6 MOVE 3 0 [MOVE IN DATA
5L8Q LDN 7 1 [RESET TO INDICATE CP
5LNB LDN 1 #26 [SET MODES FOR ALLCHAR TO
5M82 LDX 0 AWORK1(2)
5MML ANDN 0 #100
5N7= BZE 0 NOTNORM
5NLW LDN 1 6
5P6G NOTNORM
5PL6 LDN 2 #10 [GRAPHIC CONVERSION
5Q5Q TRANSFOR 1,2
5QKB MHUNTW 3,ADATA,ACONV
5R52 ADN 3 A1-FRH [X3->RECORD HEADER
5RJL LDEX 5 FRH(3) [RESET LENGTH OF RECORD
5S4= NOCONV
5SHW LDN 4 8 [SET PICKUP ADDRESS
5T3G LDEX 0 FRH(3) [CHECK FOR EMPTY RECORD
5TH6 SBN 0 2
5W2Q BZE 0 OK2 [AND J IF EMPTY
5WGB LDX 0 FRH+1(3) [CALCULATE NUMBER OF CHARACTERS
5X22 SLC 0 2 [IN LAST WORD OF RECORD
5XFL ANDN 0 3
5X^= BZE 0 OK2
5YDW SBN 5 1 [ADJUST CHARACTER COUNT
5YYG BRN OK2
5^D6 OK1
5^XQ LDN 0 0 [NO ADJUSTMENT NECESSARY
62CB OK2 [CONVERT TO CHARACTERS
62X2 SLL 5 2
63BL ADX 5 0 [ADJUST IF NECESSARY
63W= SBX 5 4 [SUBTRACT PICKUP ADDRESS TO GIVE
64*W [NUMBER OF CHARACTERS OF DATA IN X5
64TG STO 5 GZLENGTH(2) [DATA LENGTH
65*6 STO 4 GZPOINT(2) [PICKUP ADDRESS
65SQ BZE 7 TOTP [J IF TO TP
66#B [
66S2 [
67?L [THIS CODE DEALS WITH PERIS TO THE CARD PUNCH
67R= [
68=W TWCP
68QG LDN 4 80 [COUNT
69=6 TXL 4 GZLENGTH(2) [IF WE ARE DEALING WITH A
69PQ BCS TOBI [MULTILINE RECORD,JUMP
6=9B LDX 4 GZLENGTH(2)
6=P2 TOBI
6?8L STO 4 GZTRANS(2) [COUNT OF CHARACTERS FOR PERI
6?N= LDX 0 ACES [NOW
6#7W STO 0 GZDATA+1(2) [SPACEFILL
6#MG LDN 0 GZDATA+1(2) [ACTLF
6*76 LDN 1 GZDATA+2(2) [DATA
6*LQ MOVE 0 19 [BUFFER
6B6B LDX 1 FX1
6BL2 CALL 0 TRANSFER [TRANSFER DATA FROM FILE TO BUFFER
6C5L LDN 0 2
6CK= ANDX 0 AWORK1(2)
6D4W BZE 0 NONUM [J IF NO SEQUENCING
6DJG ... MHUNTW 3,GOUT,INFOLIST
6F46 LDX 4 GNUM(3)
6FHQ TXL 4 NUMCA(1)
6G3B BCC NONUM [J IF LINE NO EXCEEDS MAXIMUM
6GH2 LDN 3 3
6H2L MPY 4 SMLP(1)
6HG= CBD 4 1
6H^W CBD 4 1
6JFG CBD 4 1
6J^6 LDN 1 0
6KDQ LDCT 2 384
6KYB ADN 2 GZDATA+19
6LD2 ADX 2 FX2
6LXL CALL 0 SEQUENCE
6MC= NONUM
6MWW CALL 5 PERI
6NBG ...REPT MHUNTW 3,GOUT,INFOLIST
6NW6 LDN 4 1
6P*Q ADS 4 GNUM(3)
6PTB LDX 4 GLNO(3) [TEST AND J IF LAST LINE OUTPUT
6Q*2 BNG 4 TOEND
6QSL SBN 4 1
6R#= STO 4 GLNO(3)
6RRW BZE 4 TEND [LAST LINE OUTPUT
6S?G TOEND
6SR6 LDCT 4 #200 [J IF
6T=Q ANDX 4 GREST(3) [ALL
6TQB BNZ 4 SPLIT [RESTART
6W=2 LDX 4 GNUM(3) [ELSE SET LINE NUMBER
6WPL STO 4 GREST(3) [FOR RESTART
6X9= SPLIT BRN START
6XNW [
6Y8G [THIS PART OF THE CODE DEALS WITH PERIS TO A TAPE PUNCH
6YN6 [THE AMOUNT OF SUPERVISORY COUNTROL DEPENDS ON THE TYPE OF DATA
6^7Q [IF THE DATA IS ALLCHAR WE DO NOT SUPPLY RECORD TERMINATIORS
6^MB [IF-THE DATA IS GRAPHIC OR NORMAL,THEN NULL AND THREE RUNOUTS ARE
7272 [APPENDED TO EACH RECORD
72LL [IF THE FILE IS AN OLD FASHIONED 'TAPE PUNCH FILE' THEN THERE IS NO
736= [TERMINATION OF RECORDS
73KW [IF THE RECORD CONSISTS OF EXACTLY 2000 CHARACTERS THEN IT WAS CREATED
745G [BY INPUTTING A RECORD OF EITHER A.EXACTLY 2000 CHARACTERS
74K6 [ OR B.MORE THAN 2000 CHARACTERS
754Q [IN CASE A.'INPUT'WILL HAVE CREATED A SUBSEQUENT DUMMY RECORD
75JB [SO IN EITHER CASE NO RECORD TERMINATORS ARE SUPPLIED BY US
7642 [THE FLAG 'L' IN THE ACTLF IS SET WHEN A COUNT OF 2000 IS DETECTED
76HL TOTP
76RD LDX 1 FX1
773= LDN 5 1 [NON ZERO SWITCH
77GW LDN 6 0 [INITIALISE RUNOUT MARKER
782G LDX 0 GZLENGTH(2) [RECORD LENGTH
78G6 TXU 0 XFULLREC(1) [IS IT 2000 CHARACTERS?
78^Q BCS NOT2000 [J IF NOT
79FB LFBITSET L,2 [ELSE SET FLAG
79^2 BRN TPF1 [AND TREAT AS GRAPHIC
7=DL NOT2000
7=Y= DCA ,LDEX,0,MODE
7?CW SBN 0 #10
7?XG BZE 0 TPF1 [J IF GRAPHIC
7#C6 LDX 0 AWORK1(2)
7#WQ SLL 0 15
7*BB BNG 0 TPF1
7*W2 SLL 0 1
7B*L BNG 0 YALCH [J IF ALLCHAR DATA
7BT= ADN 6 6 [FOR RUNOUT
7C#W YALCH ADN 6 2 [FOR NEWLINE
7CSG TPF1 LDX 0 TPLEN(1) [MAX TRANSFER COUNT
7D#6 SBX 0 GZDUMP(2) [SET UP X0 WITH MAXIMUM
7DRQ SBX 0 6 [ROOM FOR DATA
7F?B TXL 0 GZLENGTH(2) [CAN WE ACCOMODATE ALL?
7FR2 BCS XLTP [IF NOT,J
7G=L LDX 0 GZLENGTH(2) [YES WE CAN
7GQ= NGX 5 2 [RUNOUT SWITCH
7H9W BRN TRANS
7HPG XLTP ADX 0 6 [IS THERE ROOM IF WE FORGET
7J96 TXL 0 GZLENGTH(2) [NEWLINE AND RUNOUT
7JNQ BCS TRANS [J IF NOT
7K8B LDX 0 GZLENGTH(2) [ELSE TRANSFER ALL DATA
7KN2 LDN 5 0 [ALL WE NEED IS RUNOUT
7L7L TRANS
7LM= STO 0 GZTRANS(2)
7LX4 ... ADX 0 GZDUMP(2)
7M6W DCA ,STO,0,COUNT
7MLG CALL 0 TRANSFER [MOVE DATA TO BUFFER
7N66 BZE 6 NOXT [NO N/L OR R/O THIS TIME
7NKQ BPZ 5 NOXT
7P5B XGN LDN 3 NEWRUN
7PK2 ADX 3 FX1
7Q4L SMO 6
7QJ= MVCH 3 0 [MOVE IN EXTRA CHARACTERS
7R3W DCA ,ADSC,6,COUNT [IGNORE BO
7RHG BCS £
7S36 NOXT STO 5 AWORK3(2)
7SGQ CALL 5 PERI
7T2B DCA ,STOZ,,COUNT
7TG2 STOZ GZDUMP(2)
7T^L LDX 0 GZTRANS(2)
7WF= SBS 0 GZLENGTH(2)
7WYW ADS 0 GZPOINT(2)
7XDG LDX 5 AWORK3(2)
7XY6 BZE 5 XGNA
7YCQ BNG 5 XFINIS
7YXB STEPAGAIN
7^C2 BRN TPF1
7^WL XFINIS
82B= LDXC 6 6 [TEST IF WE HAVE JUST DONE 'NORMAL'
82TW STEST BCC NOGRUN [PERI FOR RUNOUT IN GRAPHIC DATA
83*G DCA ,STO,6,MODE [IF SO,RESET MODE TO GRAPHIC
83T6 BRN REPT [NEXT RECORD
84#Q NOGRUN
84SB LFBBS L,2,XFINL [J IF 2000 CHAR RECORD
85#2 DCA ,LDEX,0,MODE [IF GRAPHIC THEN WE MUST DO
85RL SBN 0 #10 [SHIFT MODE PERI FOR
86?= BNZ 0 REPT [R/O AND N/L
86QW LDN 0 4 [PREVIOUS MODE
87=G DCA ,STO,0,MODE
87Q6 LDN 6 8
889Q ORX 6 GSIGN [TEST AT STEST
88PB XGNA NGN 5 1 [SWITCH
8992 LDN 4 GZDATA+1(2) [BUFFER ADDRESS
89NL BRN XGN
8=8= [
8=MW [
8BJW TEND
8C4G CALL 3 TIDYUP
8CJ6 STO 2 AWORK1(2) [SWITCH
8D3Q DOWN LISTINTC,3 [TERMINATORS
8DHB LFEND
8F32 XGEOR
8FGL GEOERR 1,BREAK IN
8G2= [
8GFW [THIS CODE DEALS WITH MONFILE PARAMETER
8G^G [THIS CODE MAY NEVER BE USED,BUT IT IS INCLUDED IN CASE LOGANAL
8HF6 [WISHES TO LIST MONITORING FILES TO OTHER SLOW PERIPHERALS BESIDES PRINT
8HYQ [
8JDB ADN 4 4 [ALLOW FOR CATEGORY WORD
8JY2 LDX 0 FRH+1(3) [PICK UP CATEGORY WORD
8KCL ANDX 0 AWORK3(2)
8KX= BNZ 0 OK1 [J IF THIS CATEGORY TO BE LISTED
8LBW ... MHUNTW 1,GOUT,INFOLIST
8LWG LDN 0 1
8MB6 ADS 0 GNUM(1) [UPDATE CURRENT LINE NUMBER
8MTQ LDX 2 GLNO(1)
8N*B BNG 2 START [J IF LIST TO EOF
8NT2 SBS 0 GLNO(1)
8P#L BRN START [TRY NEXT RECORD
8PS= [
8Q?W [LONG RECORD PATH
8QRG [
8R?6 XFINL
8RQQ LFBITCLR L,2 [CLEAR 2000 CHAR RECORD MARKER
8S=B LFBITCLR H,2 [UNSET LONG RECORD MARKER
8SQ2 BRN REPT
8W8W #END
^^^^ ...31772643000100000000