{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: LISTLOOP867)}}
====== LISTLOOP867 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:ALTLEN|ALTLEN]], [[george:macro:ALTLEND|ALTLEND]], [[george:macro:CLHLFDON|CLHLFDON]], [[george:macro:COOR1|COOR1]], [[george:macro:DCA|DCA]], [[george:macro:DEMAND|DEMAND]], [[george:macro:DISENGPER|DISENGPER]], [[george:macro:DOWN|DOWN]], [[george:macro:ENGPER|ENGPER]], [[george:macro:FI|FI]], [[george:macro:FILEMOVE|FILEMOVE]], [[george:macro:FREECORE|FREECORE]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GEOPACK|GEOPACK]], [[george:macro:GPERI|GPERI]], [[george:macro:HUNTW|HUNTW]], [[george:macro:IF|IF]], [[george:macro:JBUSY|JBUSY]], [[george:macro:JNHLFDON|JNHLFDON]], [[george:macro:JUNBUSY|JUNBUSY]], [[george:macro:KEEPREP|KEEPREP]], [[george:macro:LADDP|LADDP]], [[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:LONGSET|LONGSET]], [[george:macro:LPUNSET|LPUNSET]], [[george:macro:MHUNT|MHUNT]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:NAME|NAME]], [[george:macro:OUTPER|OUTPER]], [[george:macro:PHOTO|PHOTO]], [[george:macro:REWIND|REWIND]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETUPCORE|SETUPCORE]], [[george:macro:STEP|STEP]], [[george:macro:STEPAGAIN|STEPAGAIN]], [[george:macro:TESTMOVE|TESTMOVE]], [[george:macro:THEN|THEN]], [[george:macro:UNLOCK|UNLOCK]]
22FL #OPT K0LISTLOOP=0
22PD ...#OPT ENHPLOW=0
22^= #OPT AERRSIM=0
23DW ...#OPT HATP=0
23YG ...#OPT ATPOLTR=0
24D6 ...#OPT ATPOLTRP2=0
25CB #LIS K0LISTLOOP>K0LISTFILE>K0ALLGEO>K0GREATGEO>K0COMMAND
25X2 #SEG LISTLOOP
26BL 8HLISTLOOP
26LD ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1983
26W= SEGENTRY K1LISTLOOP,POINT1
27TG [
28*6 [CENTRAL LINE PRINTER CODE
28SQ [THIS SEGMENT CONTAINS THE INNER LOOP OF LISTFILE WHICH READS RECORDS
29#B [FROM THE SPECIFIED FILE DOES ANY SIMPLE CONVERSION NECESSARY AND
29S2 [OUTPUTS THE RECORD ON THE SPECIFIED PRINTER
2=?L [EXTRA CODE SHOULD NOT BE INSERTED IN THE MAIN PATH WITHOUT
2=R= [CAREFUL CONSIDERATION OF THE OVERHEAD.
2?=W [THE CONVERSION IMPLEMENTED IS AS FOLLOWS:
2?QG [IF A SHIFT FILE IS LISTED
2#=6 [DATA IS FIRST CONVERTED TO GRAPHIC,UNLESS 'SPECIAL' WAS
2#PQ [ONE OF THE COMMAND PARAMETERS,WHEN NO CONVERSION IS DONE.
2*9B [THE DATA IS CONVERTED ONE RECORD AT A TIME BY DECANTING
2*P2 [THE RECORD FROM THE USAGE BLOCK INTO AN ADATA/ACONV BLOCK
2B8L [AND USING THE TRANSFORM MACRO.THE FLAG K IS USED TO SHOW
2BN= [THE PRESENCE OF AN ADATA/ACONV BLOCK TO AVOID THE HUNT
2C7W [OVERHEAD FOR THE NORMAL,NO-CONVERSION PATH.
2CMG [
2D76 [IF THE RECORD IS LONGER THAN CAN BE ACOMODATED IN ONE TRANSFER
2DLQ [THEN THE RECORD IS SPREAD
2F6B [OVER MANY TRANSFERS WITH SUITABLE CONTINUATION LINES FOR LP OUTPUT.
2FL2 [THE FLAG H IS SET TO INDICATE THAT THE CURRENT TRANSFER IS ONE
2G5L [OF THE SUBSEQUENT COMPONENTS OF A MULTI-TRANSFER RECORD.
2GK= [
2H4W [THE BUFFER FOR A TRANSFER IS CONTAINED IN THE ACTLF AND STARTS
2HJG [AT THE IDENTIFIER GZDATA.WHILE THE TRANSFER IS IN PROGRESS THE
2J46 [ACTLF MUST REMAIN LOCKED [SO THAT EXECUTIVE CAN FIND IT] AND OFF
2JHQ [THE LIST OR THE QUEUE (ACHIEVED BY COOR1).WHEN THE TRANSFER HAS
2K3B [FINISHED EXECUTIVE RESTARTS THE ACTLF.
2KH2 [
2L2L [DATA MANIPULATION IS CONTROLLED BY INFORMATION CONTAINED IN
2LG= [THE FOLLOWING LOCATIONS IN THE ACTLF
2L^W [
2MFG [ GZPOINT CONTAINS A POINTER RELATIVE TO THE START OF THE
2M^6 [ RECORD,INDICATING HOW MUCH DATA HAS ALREADY BEEN TRANSFER
2NDQ [
2NYB [ GZDUMP CONTAINS THE DUMP ADDRESS RELATIVE TO THE START
2PD2 [ OF THE BUFFER.
2PGK ...#UNS ANIP
2PK8 ...(
2PMR ...[ ALSO, JUST BEFORE THE PERI,CONTAINS THE NUMBER OF
2PQB ...[ CHARS FOR CURRENT TRANSFER
2PS^ ...)
2PXL [
2QC= [ GZTRANS CONTAINS THE NUMBER OF CHARACTERS OF DATA FOR
2QWW [ CURRENT TRANSFER.
2RBG [
2RW6 [ GZLENGTH CONTAINS THE NUMBER OF CHARACTERS OF DATA IN
2S*Q [ THE CURRENT RECORD
2STB [
2T*2 [
2TSL [***********************************************************************
2W#= [DATA AREA
2WRW [ ----------------------------------------
2X?G [
2XR6 TLP2 +2
2Y=Q SM #07777777 [EQUAL MASK
2YQB TLP +1 [LP COMPARISON WORD
2^=2 SMLP +7036875 [LP MAGIC CONVERSION NUMBER
2^PL NUMLP +8000000 [LP MAXIMUM LINE NUMBER
329= TCA +0.3 [LP BUFFER MODIFIER
32NW XCONT 4H - [CONTINUATION LINE MARK-OUTPUT AT END OF
338G [EACH LINE OF A MULTILINE RECORD
33N6 [
347Q SETUPBIT #10000000
34MB PAGELEN +66
3572 [
35LL [***********************************************************************
366= [SUBROUTINE AREA
36KW TIDYUP
375G [THIS S/R TIDIES UP WHEN A LISTING IS TO END
37K6 LFBBUS K,2,NOADATA [J IF NO CONVERSION BLOCK
384Q MHUNTW 1,ADATA,ACONV
38JB FREECORE 1
3942 LFBITCLR K,2 [CLEAR CONVERSION FLAG
39HL NOADATA
3=3= ... MHUNTW 1,GOUT,INFOLIST
3=GW LDX 4 GREST(1)
3?2G LDX 0 AWORK4(2)
3?G6 BPZ 0 NLSU [J IF NOT CURRENTLY LISTING SETUP
3?^Q STOZ GREST(1)
3#FB STOZ GNUM(1)
3#^2 EXIT 3 0
3*DL NLSU FREECORE 1
3*H9 ...#SKI ENHPLOW
3*KS ...(
3*NC ... LFBITCLR U,2 [CLEAR ANY PAPER LOW BITS SET
3*R2 ... LFBITCLR V,2
3*TK ...)
3*Y= LDX 0 SETUPBIT(1)
3BCW ANDX 0 AWORK2(2)
3BXG BZE 0 NSUA [J IF NO SETUP FILE AT ALL
3CC6 ... MHUNTW 1,GOUT,INFOSET
3CWQ FREECORE 1
3DBB NSUA EXIT 3 1
3DW2 [
3F*L SLOCKC
3FT= [THIS S/R IS USED BY THE LOCK MACRO TO SET X2=FX2
3G#W LDX 2 FX2
3GSG EXIT 1 0
3H#6 [THIS IS A SUBROUTINE FOR CONVERTING THE BINARY NUMBER IN X5 TO DECIMAL
3HRQ [CHARACTERS STORING THE RESULT IN THE LOCATION WHOSE ADDRESS IS IN X2
3J?B [
3JR2 SEQUENCE
3K=L MODE 1
3KQ= SCBD CBD 4 0(2)
3L9W BCHX 2 £
3LPG BCT 3 SCBD
3M96 MODE 0 [DON'T SUPPRESS ZEROES FOR LAST
3MNQ CBD 4 0(2) [CHARACTER
3N8B BCHX 2 £
3NN2 DCH 1 0(2)
3P7L LDX 1 FX1
3PM= LDX 2 FX2
3Q6W EXIT 0 0
3QLG [
3R66 [THIS ROUTINE PERFORMS THE PERI ON THE DEVICE AND CHECKS THE REPLY FOR
3RKQ [DISENGAGED AND INOPERABLE STATES
3S5B [
3S6C ...#UNS ANIP
3S7D ...(
3S8F ...[ ENTRY FROM SRER SUBROUTINE (CORRUPT FILE) IF NIP ACTLF
3S9G ...PERI4 KEEPREP 0,CORRUPT
3S=H ...[ ENTRY TO GIVE CHANGED REPLY
3S?J ...PERI5 ORX 0 GSIGN
3S#K ... STO 0 GZDUMP(2)
3S*L ... SBX 5 FX1
3SBM ...XLPS DOWN LISTPREP,4
3SCN ... LDX 0 GZDUMP(2)
3SDP ... BNG 0 NOT
3SFQ ... BRN XNIP [NORMAL ENTRY - ADD TO ALFTRANS ETC
3SGR ...[
3SHS ...)
3SK2 PERI SBX 5 FX1 [ADJUST LINK
3SLC ...#UNS ANIP
3SMS ...(
3SP9 ...[ IF NIP ACTLF GO DOWN TO LISTPREP TO DO PERI
3SQL ... LDX 2 FX2
3SS3 ... LDX 4 GZDUMP(2)
3STD ... BZE 4 NOT [ZERO CHAR COUNT - DO NOT PRINT
3SWT ... LDX 0 CPPTR(2)
3SY= ... BZE 0 XLPS
3S^M ... DCA ,STO,4,COUNT [STORE CHAR COUNT IN CONTROL AREA
3T34 ...)
3T4L REP DCA ,LDX,4,COUNT
3TJ= BZE 4 NOT
3W3W LDX 1 FX1
3WHG LDX 4 TCA(1)
3X36 LOCKC 2,SLOCKC
3XGQ ADN 4 GZDATA(2)
3Y2B DCA ,STO,4,CTSA
43CQ GPERI ,2
43XB COOR1
44C2 UNLOCK 2
45TW LDX 4 FINISH
46*G SLL 4 2
46T6 BNG 4 SCANTY [ 'FINISH NOW'
47#Q LDCT 4 #50
47SB ANDX 4 CPRW1(2)
48#2 BNZ 4 NOTENG [J IF FAIL OR DISENGAGED
48F8 ...#UNS ANIP
48LB ...XNIP
48RL LDN 0 1
49?= ADS 0 ALFTRANS(2)
49BB ...#UNS ANIP
49FG ... LDX 4 GZDUMP(2)
49JL ...#UNS ANIP
49MQ ...#SKI
49QW DCA ,LDX,4,COUNT
4==G SRL 4 2
4=Q6 ADS 4 ALFWORDS(2)
4?9Q NOT ADX 5 FX1
4?PB EXIT 5 0 [EXIT
4#92 #
4#NL # THE FOLLOWING DEALS WITH RESTARTS
4*8= #
4*MW [ MULTIPAGE RESTARTS
4B7G [ IF GLEN=0 THEN NO MULTIPAGE RESTART IS REQUIRED
4BM6 [ GLEN=IPAGE-1 AND IS SET UP IN LISTPREP. IPAGE IS MAX NUMBER OF PAGES
4C6Q [ THAT CAN BE REPEATED
4CLB [ GNEXT IS A POINTER TO THE NEXT GREST TO BE SET
4D62 [ IF GREST+1=0 THEN NO MULTIPAGE RESTART IS REQUIRED AS ONLY ONE PAGE
4DKL [ HAS BEEN LISTED.
4F5= [ ALPSETUP IS SET EQUAL TO IPAGE BEFORE THE REQUEST
4FJW [ AFTER THE PAGES COMMAND ALPSETUP IS EQUAL TO THE NUMBER-1
4G4G [
4GJ6 PAGEREST
4H3Q SBX 3 FX1
4HHB ... MHUNTW 1,GOUT,INFOLIST
4J32 LDXC 4 GREST(1)
4JGL BCC PAGES1 [J NOT PAGE RESTART
4JHX ...#SKI ENHPLOW
4JK8 ...(
4JLF ... LFBBUS U,2,SUSU [J IF PAPER LOW NOT BEEN FOUND
4JMQ ... LFBITCLR U,2 [OTHERWISE CLEAR PAPER LOW BITS
4JP3 ... LFBITCLR V,2 [AND OUTPUT RELOAD MESSAGE BEFORE
4JQ# ... LDCT 6 #100 [IF NO PLOW REPLY ON LAST TRANSFER
4JRK ... ANDX 6 CPRW1(2) [THEN ASSUME OPERATORS HAVE BEATEN
4JSW ... BZE 6 SUSU [US TO IT
4JW7 ... DOWN LISTNEXT,10 [CONTINUING RESTART ACTION
4JXD ...SUSU
4JYP ...)
4K2= LDX 6 GLEN(1)
4KFW BZE 6 PAGES1 [J IPAGE=1
4K^G LDX 5 GREST+1(1)
4LF6 BZE 5 PAGES1 [J ONLY 1 PAGE LISTED
4LYQ LDX 6 GLEN(1)
4MDB ADN 6 1 [THIS LISTFILE (FOR PAGES COMMAND)
4MY2 STO 6 ACOMMUNE6(2) [THEN PUT IT IN ACOMMUNE6
4PBW GEOPACK 1
4PWG LONGSET #104,XGEOER,1
4RT2 OUTPER
4S#L DEMAND ,JPAGES,PAGES2,XGEOER,REE,1
4SS= [PLEASE GIVE PAGES FOR ERROR RESTART ON UNIT %A
4T?W PCD
4TRG ... MHUNTW 1,GOUT,INFOLIST
4W?6 LDX 5 GNEXT(1)
4WQQ LDX 6 ACOMMUNE6(2) [SET X6=NO OF PAGES FOR ERROR RESTART
4X=B SBN 6 1 [MINUS 1
4XQ2 SBX 5 6
4Y9L BPZ 5 OK
4YP= ADX 5 GLEN(1)
4^8W ADN 5 1
4^NG OK SMO 5 [PICK UP CORRECT RESTART LINE NUMBER
5286 LDX 5 GREST(1)
52MQ BNZ 5 YOK [NO OF PAGES GIVEN MIGHT BE