{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: TROBJ867)}}
====== TROBJ867 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:ALTLEN|ALTLEN]], [[george:macro:AND|AND]], [[george:macro:BACKSPACE|BACKSPACE]], [[george:macro:BXE|BXE]], [[george:macro:BXGE|BXGE]], [[george:macro:BXL|BXL]], [[george:macro:BXU|BXU]], [[george:macro:CHECKA|CHECKA]], [[george:macro:COMPQU|COMPQU]], [[george:macro:FADDRESS|FADDRESS]], [[george:macro:FDRMTEST|FDRMTEST]], [[george:macro:FI|FI]], [[george:macro:FINMVCH|FINMVCH]], [[george:macro:FOUTMOVE|FOUTMOVE]], [[george:macro:GEOERR|GEOERR]], [[george:macro:HUNT|HUNT]], [[george:macro:IF|IF]], [[george:macro:INMOP|INMOP]], [[george:macro:LOCKCA|LOCKCA]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MFREE|MFREE]], [[george:macro:MHUNT|MHUNT]], [[george:macro:NAMETOP|NAMETOP]], [[george:macro:OLPEND|OLPEND]], [[george:macro:PAIR|PAIR]], [[george:macro:PMODES|PMODES]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETUPCORE|SETUPCORE]], [[george:macro:STEP|STEP]], [[george:macro:STEPAGAIN|STEPAGAIN]], [[george:macro:TESTREP2|TESTREP2]], [[george:macro:TESTRPN2|TESTRPN2]], [[george:macro:THEN|THEN]], [[george:macro:TOPCA|TOPCA]], [[george:macro:TOPCA1|TOPCA1]], [[george:macro:TRACE|TRACE]], [[george:macro:TRANSFO1|TRANSFO1]], [[george:macro:WHICHMOP|WHICHMOP]]
229S ... SEG TROBJ,867,SECT.FILE,,G505
22FL #OPT K0TROBJ=K0OLP
22^= #OPT K6TROBJ=K6OLP
23DW #LIS K0TROBJ
23JR ...[
23NN ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982
23SK ...[ THIS EXCLUDES CODE UNDER #SKI G505
23YG ...[
244C ...#OPT G505 = 0
248# ...#SKI G505&1
24#9 ...# WITH UGUG EDIT M505 (3-SHIFT WORKING FOR MOP ONLINE)
24D6 #
24XQ # THIS SEGMENT IMPLEMENTS OFFLINE A TR PERI IF *TR IS ASSIGNED TO A
25CB # AWORK1= N/CH READ BY PREVIOUS PERI
25X2 # AWORK2= PERI MODE (NEW RECORD MODE)
25^K # AWORK3 B23 SET. LAST TRANSFERRED CH OF PREVIOUS PERI WA
2648 # DELTA. MODE IS PREVIOUS SO SUCCESSOR MUST BE
266R # FIRST CH. TRANSFERRED IN THIS PERI.
269B # B22 SET. LAST TRANSFERRED CH OF PREVIOUS PERI WA
26?^ # DELTA. MODE IS ALPHA SO SUCCESSOR MUST BE REMO
26BJ # FROM THIS PERI TRANSFER AND IF IT WAS A STOP C
26F7 # (EG N/L) THE TERMINATE STATUS MUST BE FORGO
26HQ # B4 SET. THE LOST CHARACTER(SEE B22 ABOVE) WAS A
26L* # STOP CHARACTER AND ACONV IS NOW EMPTY. MUST
26NY # CONTINUE AND GET NEXT RECORD AS TERMINATE
26RH # STATUS MUST BE FORGOTTEN.
26W= # B0 = N/L CHAR HAS BEEN INSERTED
27*W # B01=1 RECORD IS 2000 CHARS LONG
27TG # B6 SET. LAST CH OF 2000 CH RECORD IS A DELTA.
28*6 # AWORK4 B0 =1 END OF MULTIFILE HAS BEEN REACHED
28F3 # B10 SET. NLNULL PERIPHERAL NAME QUALIFIER GIVEN IN
28JY # ASSIGN COMMAND. THIS HAS NO EFFECT EXCEPT FOR
28NT # GRAPHIC PERIS.
28SQ # ACOMMUNE1= RECORD MODE
29#B # ACOMMUNE2= PERI MODE
29S2 #
2=R= SEGENTRY K1TROBJ,Z1TROBJ
2?=W MASK1 #60077777
2?QG MASK2 #60000000
2#=6 MAX +129
2##P ...#SKI G505&1
2#C# ...(
2#FX ...XCCS1 #76137632 [ FOR 'CURSOR'
2#JG ...MASKID #70000706 [ PERMANENT BITS OF IDENTIND
2#M5 ...)
2#PQ NEWLINE #76322020
2*9B XALP #74
2*P2 XBET #75
2B8L PLINK1
2BN= PAIR TROBJ,1
2C7W #
2CMG # THIS SUBROUTINE GETS LENGTH OF RECORD (CHARACTERS) IN ACONV.
2D76 # ENTRY:X0=LINK
2DLQ # X3=PTR TO RECORD
2F6B # EXIT: X0,X3=UNCHANGED
2FL2 # X4=N/CH IN RECORD
2G5L # X6=OVERVRITTEN
2GK= #
2H4W RECLEN
2HJG LDX 4 0(3) [PICK UP N/W IN RECORD
2J46 SBN 4 2 [SUBTRACT RED TAPE
2JHQ BZE 4 Q4
2K3B SLL 4 2 [MULTIPLY BY 4^NO.OF CHARS.
2KH2 LDCH 6 1(3) [PICK UP NO.OF USED CHARS.
2L2L SRL 6 4 [IN LAST WORD OF RCD.
2LG= BZE 6 Q4
2L^W SBN 4 4 [SUBTRACT 4 CHARS.
2MFG ADX 4 6 [AND ADD NO.OF CHARS.IN LAST WORD
2M^6 Q4 EXIT 0 0
2NDQ #
2NYB # THE SUBROUTINE SETS AWORK3 IF THE RECORD IS 2000 CHARS LONG
2PD2 # ENTRY:X0=N/W IN THE RECORD
2PXL # X1=LINK
2QC= # X3=PTR TO RECORD-A1
2QWW #
2RBG TEST2000
2RW6 LDCT 0 #004 [IS LAST CH A DELTA
2S*Q ANDX 0 AWORK3(2)
2STB STOZ AWORK3(2)
2T*2 ORS 0 A1+1(3) [TRANSFER BIT TO RECORD IN ACONV.
2TSL LDEX 0 A1+FRH(3)
2W#= SBN 0 502
2WRW BNZ 0 (1) [RECORD <2000 CHARS
2X?G LDCH 0 A1+1(3)
2XR6 SRL 0 4
2Y=Q BNZ 0 (1) [RECORD <2000 CHARS
2YQB LDCT 0 #600
2^=2 ORS 0 AWORK3(2) [SWITCH
2^PL LDX 0 A1+501(3)
329= ANDN 0 #77
32NW ERN 0 #76 [TEST IF LAST CH OF 2000 CH RECORD IS
338G BNZ 0 (1) [A DELTA. J IF NOT.
33N6 LDCT 0 #004
347Q ORS 0 AWORK3(2) [SET 'DELTA AT 2000' BIT_
34MB BRN (1)
3572 #
35LL Z1TROBJ
366= #SKI K6TROBJ>799-799
36KW TRACE FX2,TROBJ
375G LDX 3 APETADDR(2) [PTR TO APET
37K6 LOCKCA 3,ACAP(2)
384Q LDX 4 ACAP(2) [CA IN OBJ.PROG.
38JB LDN 5 ACA1(2) [CA IN AOLPT
3942 LDN 6 4
39HL FOUTMOVE 3,4,5,6,HLOCK1 [MOVE CA TO OLPA
3=3= STOZ ACA2(2) [ZEROISE REPLY WORD
3=GW LDX 0 AWORK4(2)
3?2G BNG 0 NORE15 [J IF END OF MULTIFILE
3?4P PMODES 4,3
3?6Y ANDN 4 #10
3?97 BNZ 4 NOTPACT [J IF NOT COMPACT MODE
3??B LDX 4 MASK1(1)
3?*K ANDS 4 ACA4(2)
3?CS NOTPACT
3?G6 LDX 3 ACA3(2) [COUNT
3?^Q BZE 3 WC1
3#2B ...#SKI G505&1
3#32 ...(
3#3L ... LDX 0 MASKID(1)
3#4= ... ANDS 0 IDENTIND(2)
3#4W ...)
3#5G ...#SKI G505&1
3#66 ...(
3#6Q ... LDN 0 #10
3#7B ... ANDX 0 ACA1(2)
3#82 ... IF 0,ZE [ SHIFT PERI
3#8L ... LDN 6 6
3#9= ... ANDX 6 IDENTIND(2)
3#9W ... AND 6,NZ [ SHIFT DEVICE
3#=G ... THEN
3#?6 ... LDN 0 #20
3#?Q ... ANDX 0 ACA1(2)
3##B ... IF 0,ZE
3#*2 ... THEN
3#*L ... LDN 6 4 [ NORMAL ON ALLCHAR DEVICE
3#B= ... FI
3#BW ... SLL 6 12
3#CG ... ORS 6 IDENTIND(2)
3#D6 ... FI
3#DQ ...)
3#FB BXGE 3 MAX(1),WC1 [CHECK 0JOBRING OF CPAT.
3YG2 LDN 0 #10
3Y^L ANDX 0 CONTEXT-JOBRING(3)
3^F= BNZ 0 XGRAMOP [J IF MOP AND ASSUME GRAPHIC FILE MOD
3^YW LDX 3 FILEBRING-JOBRING(3)
42DG LDX 3 BPTRF(3)
42Y6 ADX 3 FBACKPOINT(3)
43CQ LDX 3 BPTR(3) [X3->FCB OF JDF.
43XB LDEX 6 FETM(3) [PICK UP FILE MODE.
44C2 BRN TRANS
44WL PRESB BXL 4 ALOGLEN(2),OKBL
45B= LDX 6 2
45TW ALTLEN 6,4
46*G OKLEN STEPAGAIN [PTR.TO RECORD
46T6 MHUNT 2,ADATA,ACONV
47#Q OKBL
47SB LDN 4 A1(2)
48#2 SMO FRH(3)
48RL MOVE 3 0 [MOVE RECORD TO ACONV.
49?= LDX 3 4
49QW SBN 3 A1
4==G LDX 2 FX2
4=Q6 CALL 1 TEST2000 [TEST IF RECORD IS 2000 CHARS
4?9Q RCMOD LDX 6 FSCTM(2) [TYPE/MODE
4?PB ANDN 6 #7777
4#92 BNZ 6 TRANS [J IF TR FILE
4#NL XGRAMOP
4*8= LDN 6 #12 [CR,CP,LP FILE
4*9S ...#SKI G505&1
4*?B ...(
4*#Y ... LDX 0 IDENTIND(2)
4*BG ... SRL 0 9
4*D4 ... ANDN 0 #60 [ SHIFT DEVICE BITS
4*FL ... BZE 0 XCONV
4*H8 ... LDN 6 #20 [ ALLCHAR, START IN ALPHA
4*JQ ... ANDX 6 0 [ POSS CHANGE TO NORMAL
4*L# ...)
4*MW BRN XCONV
4B7G TRANS LDX 0 6 [RECORD MODE
4BM6 ANDN 0 #10
4C6Q BNZ 0 XCONV [J IF GRAPHIC
4CLB ORN 6 4 [ALL RECORDS IN PREVIOUS
4D62 XCONV TRANSFO1 6,7 [CONVERT THE MODE
4DKL TESTREP2 ILLMODE,MOLE [TEST IF LEGAL MODE
4F5= TESTRPN2 SHIFT,OKACA
4FJW LDN 0 4
4G4G ORS 0 ACA1(2) [CHANGE TO PREVIOUS
4GJ6 OKACA STO 7 AWORK2(2) [STORE NEW RECORD MODE
4H3Q ANDN 7 #10
4HHB MHUNT 3,ADATA,ACONV
4J32 LDX 5 3 [REMEMBER PTR TO ACONV
4JGL ADN 3 A1
4K2= CALL 0 RECLEN
4KFW BNZ 7 NLPRE [J IF RECORD IN GRAPHIC
4K^G NLCH LDX 0 AWORK3(2)
4LF6 BNG 0 NLPRE [J IF N/L HAS ALREADY BEEN INSERTED
4LYQ LDCT 0 #400 [B0=1
4MDB ORS 0 AWORK3(2) [N/L IS BEING INSERTED
4MY2 ADN 3 2 [ADD RED TAPE
4NCL SRC 4 2
4NX= ADX 3 4 [PTR TO LAST CHAR+1
4PBW SLC 4 2
4PD7 ...#SKI G505&1
4PFD ...(
4PGP ... LDCT 0 #200
4PJ2 ... ANDX 0 IDENTIND(2)
4PK? ... BZE 0 XCCS4 [ NO 'CURSOR'
4PLJ ... LDN 2 XCCS1(1)
4PMT ... MVCH 2 4
4PP6 ... ADN 4 4
4PQC ... BRN XCCS5
4PRN ...XCCS4
4PS^ ...)
4PWG SLC 3 2
4QB6 SBN 3 2 [- 2 CHRS
4QTQ SRC 3 2
4R*B LDCH 0 0(3) [TEST FOR ^*
4RT2 SBN 0 #76
4S#L BCHX 3 £
4SS= BNZ 0 NONL [J IF NOT ^
4T?W LDCH 0 0(3)
4TRG SBN 0 #32 [TEST FOR *
4W?6 BZE 0 NLPRE [J IF ^*
4WQQ NONL BCHX 3 £
4X=B LDN 2 NEWLINE(1)
4XQ2 MVCH 2 2 [INSERT ^*
4Y9L ADN 4 2 [ADD 2 CHARS
4YBS ...#SKI G505&1
4YJ2 ...XCCS5
4YP= LDX 2 FX2
4^8W LDX 3 5 [PTR TO ACONV
4^NG LDN 0 3
5286 ANDX 0 4 [N/CH IN LAST WORD
52MQ SLL 0 4
537B DCH 0 A1+1(3) [UPDATE R/T
53M2 LDX 0 4 [N/CH IN RECORD
546L ADN 0 11 [ADD RED TAPE
54L= SRL 0 2 [N/W
555W STO 0 A1(3) [UPDATE R/T
55KG NLPRE LDX 3 5 [RESTORE PTR TO ACONV
5656 LDEX 6 AWORK3(2) [SWITCH
56JQ BZE 6 NOSET [J IF IT IS NOT SET
56SJ BZE 4 NSET2 [J IF ACONV E-PTY
574B LDCH 0 A1+2(3)
57J2 SBN 0 #76 [TEST IF DELTA
57NN BZE 0 TYPE2 [J IF SO
57TB LDN 0 2 [UNSET SWITCH AS ^ AN& 00CCE00OR
5824 SBS 0 AWORK3(2) [ALREADY RE-OVE& BY TRANSFOR
586Q BRN NSET
58?D TYPE2
58H= BCHX 3 £
592W SBN 4 1 [SUBTRACT ONE CHAR
594F SEGENTRY K91TROBJ [RESTORE TIME MACRO TRTYPE1
5964 BCT 6 TYPE2 [X6 CONTAINS CURRENT STATE OF
597M [BITS 22,23 OF AWORK3.
598D NSET
599= BNZ 4 NOSET [J IF ACONV NOT EMPTY.
59=T [IE STOP CHARACTER NOT REACHED.
59?L NSET2
59#D LDCT 0 #02 [SET BIT TO INDICATE TERMINATE STATUS
59B3 ORS 0 AWORK3(2) [OF STOP CH. MUST BE LOST,
59CL [SINCE SPLIT OVER TWO PERIS.
59FC NOSET BZE 7 NOGRAPH [J IF NOT GRAPHIC.
59KJ LDX 0 4 [INDICATE NO EMBEDDED STOP CH.
59PP BRN NOST
59TW NOGRAPH
5=26 LDX 0 ACA1(2) [PERI MODE
5=FQ ANDN 0 2
5=^B BZE 0 NOST [J IF READ N CHARS
5?F2 LDX 6 3 [REMEMGR PTR TO ADATA
5?YL LDX 7 4 [NO. OF CHS IN RECORD.
5#D= BZE 7 NOSTA1
5#XW ADN 3 A1+2 [PTR TO THE RECORD
5*CG NCHAR LDCH 0 0(3) [LOAD CHAR
5*X6 SBN 0 #76
5BBQ BCHX 3 £
5BWB BZE 0 SUCT [J IF DELTA
5CB2 TNCH BCT 7 NCHAR
5CTL BRN NOSTA1 [J IF NOT A STOP CHAR
5D*= SUCT BCT 7 SUCT1
5DSW NOSTA1
5F#G LDX 0 4
5FS6 BRN NOSTA [J IF NOT A STOP CHAR
5G?Q SUCT1 LDCH 0 0(3) [LOAD SUCCESOR
5GRB BCHX 3 £
5H?2 SBN 0 20
5HQL BNZ 0 NOTC4 [J IF NOT TC4
5J== LDX 0 ACA1(2)
5JPW SBN 0 2 [TEST IF NORMAL
5K9G BZE 0 STOP [J IF TC4
5KP6 BRN TNCH
5L8Q NOTC4 SBN 0 6
5LNB BNG 0 TNCH [J IF NOT A STOP
5M82 SBN 0 4
5MML BPZ 0 TNCH [J IF NOT A STOP
5N7= STOP
5NLW SBN 3 A1+2
5P6G SLC 3 2
5PL6 SLC 6 2
5Q5Q SBX 3 6
5QKB SRC 6 2
5R52 LDX 0 4 [N/CH IN RECORD
5RJL LDX 4 3 [ASSUMED RECORD LENGTH
5S4= NOSTA LDX 3 6
5SHW NOST LDX 6 ACA3(2) [PERI COUNT
5T3G BXL 6 4,SETAW [J IF PERI COUNT100-100
8Q?W TRACE 7,TROBJWAK
8QRG CALL 5 TOPCA
8R?6 ACROSS OLPODD,1 [WAIT FOR A RECORD TO BE APPENDED
8RQQ MENDAREA 100,K99TROBJ
8S=B #END
^^^^ ...43015704000200000000