{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: LOAD60)}}
====== LOAD60 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:ALTLEND|ALTLEND]], [[george:macro:BXGE|BXGE]], [[george:macro:CHECKA|CHECKA]], [[george:macro:CHECKB|CHECKB]], [[george:macro:CLEAR|CLEAR]], [[george:macro:COOR1|COOR1]], [[george:macro:DCA|DCA]], [[george:macro:FADDRESS|FADDRESS]], [[george:macro:FINMOVE|FINMOVE]], [[george:macro:FPCACA|FPCACA]], [[george:macro:FSUM|FSUM]], [[george:macro:GPERI|GPERI]], [[george:macro:HUNT2|HUNT2]], [[george:macro:LOCKC|LOCKC]], [[george:macro:MAGREAD|MAGREAD]], [[george:macro:MAGSTEP|MAGSTEP]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MFREEW|MFREEW]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:NAME|NAME]], [[george:macro:READAGAIN|READAGAIN]], [[george:macro:REPEAT|REPEAT]], [[george:macro:RESTART|RESTART]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:STEPAGAIN|STEPAGAIN]], [[george:macro:T|T]], [[george:macro:TRACE|TRACE]], [[george:macro:UNLOCK|UNLOCK]], [[george:macro:VFREEW|VFREEW]], [[george:macro:VSKIP|VSKIP]]
22FL SEG LOAD,60,RUTH PORTER
22^= #
23DW #
23YG SEGENTRY K1LOAD,XENT1
24D6 SEGENTRY K2LOAD,XENT2
24XQ #
25CB #DEF T=0
25X2 #DEF XLDEXA=EXTPS+4
26BL #DEF YCOUNT=EXTPS [HOLDS BLOCK COUNT
26W= #DEF WCHECKSUM=AWORK1
27*W #SKIP G4
27TG #DEF XQUOTA=AWORK2 [HOLDS INDIC OF PAGES TO BE LOCKED
28*6 [IN CORE
28SQ #
29#B N7 7
29S2 N513 513
2=?L #SKI G4
2=R= XMODE #40000 [ADDITIVE MODE FOR PERI INTO OBJ PROG
2?=W #
2?QG # NAMES OF ERROR MASSAGES
2#=6 WRBLK +JWRBLK
2#PQ NOENT +JNOENT
2*9B RINFF +JINFF
2*P2 WERRES +GRESLL
2B8L RCHER +JCHER
2BN= #
2C7W #
2CMG #
2D76 # S/R TO TEST REPLY WORD AFTER MT PERI. DOESNOT COORDINATE
2DLQ [ LINK X6
2F6B [ X2 PTS TO ACT BLOCK
2FL2 RESTARTMT
2G5L # A0,2 ARE IMPOSSIBLE.B3 IS A TAPE FAILURE. B4 IS A TAPE MARK - WRONG FO
2GK= # IGNORE B1 - LONG BLOCK
2H4W LDCT 0 #560
2HJG ANDX 0 CPRW1(2)
2J46 BNZ 0 XREADFAIL
2JHQ EXIT 6 0
2K3B #
2KH2 #
2L2L #
2LG= # ENTRY FROM LDSTART IF 2ND BLOCK WAS NOTR/S - MT ONLY
2L^W XENT2
2MFG #SKIP G4
2M^6 STOZ XQUOTA(2) [INIT'LOCKED PAGES'INDICATOR
2NDQ MHUNTW 3,FILE,FRB
2NYB BRN OFFMTRED1
2PD2 #
2PXL #
2QC= #
2QWW XENT1
2RBG #SKIP G4
2RW6 STOZ XQUOTA(2) [INIT'LOCKED PAGES'INDICATOR
2S*Q #
2STB #
2T*2 #
2TSL NEXTREC
2W#= LDX 2 FX2
2WRW #
2X?G # THE BLOCK COUNT IS UPDATED IMMEDIATELY BEFORE READING THE NEXT SPECIFI
2XR6 LDN 0 1
2Y=Q ADS 0 YCOUNT(2) [UPDATE COUNT
2YQB # FIRST SELECT ROUTINE FIR READING SPECIFIER BLK ACC TO TYPE OF FILE HOL
2^=2 # PROGRAM
2^PL LDCT 0 #420
329= ANDX 0 XLDEXA(2)
32NW BNG 0 ONLINE [ONLINE PERIPHERAL
338G BNZ 0 OFFMT [MAG TAPE
33N6 VSKIP ,1
347Q BZE 3 XEOF [JUMP IF EOF
34MB SBN 3 1
3572 BZE 3 XEOF [JUMP IF EOF
35LL ADN 3 1
366= LDEX 0 0(3) [REC HEADER
36KW SBN 0 2
375G BZE 0 XSPACES [ERROR IF BLANK CARDS
37K6 ADN 3 2 [X3 -> TO START OF REC
384Q BRN TESTSPEC
38JB OFFMT
3942 VFREEW FILE,FRB
39HL LDN 7 20 [MAX REC SIZE
3=3= MAGREAD XEOF,XTM,OFFMTRED,7
3=GW OFFMTRED
3?2G MHUNTW 3,FILE,FRRB
3?G6 NAME 3,FILE,FRB [MAKE THIS CASE LOOK LIKE REST
3?^Q OFFMTRED1
3#FB ADN 3 A1 [X3 -> TO START OF REC
3#^2 BRN TESTSPEC
3*DL ONLINE
3*Y= REPEAT
3BCW CALL 1 ZFRB
3BXG LOCKC 2,ZFRB
3CC6 MHUNTW 3,FILE,FRB
3CWQ LDN 0 A1(3)
3DBB DCA ,STO,0,CTSA
3DW2 LOCKC FX2,ZCPA
3F*L GPERI ,2
3FT= COOR1
3G#W UNLOCK 2
3GSG MHUNTW 3,FILE,FRB
3H#6 UNLOCK 3 [BUFFER
3HRQ LDCT 0 #20
3J?B ANDX 0 XLDEXA(2)
3JR2 BZE 0 REST [SLOW PERIPHERAL
3K=L CALL 6 RESTARTMT
3KQ= BRN READOK
3L9W REST
3LPG RESTART XBRKIN,XCANTDO,REPEAT
3M96 MHUNTW 3,FILE,FRB
3MNQ READOK
3N8B ADN 3 A1 [X3 -> TO START OF REC
3NN2 TESTSPEC
3P7L # COMMON ROUTINE FOR CHECKING SPEC BLK AND BRANCHING TOROUTINE APPROPRIA
3PM= # TO BLK TYPE
3Q6W LDCH 0 0(3) [BLOCK SPECIFIER
3QLG SBN 0 #73
3R66 BNZ 0 XLEFTBRACK
3RKQ LDX 5 0(3)
3S5B LDCH 6 5 [BLOCK TYPE
3SK2 #SKI T
3T4L TRACE 6,TYPE
3TJ= BXGE 6 N7(1),XBLOCKTYPE
3W3W SRL 5 12
3WHG ANDN 5 #77 [REC LENGTH IN X5
3X36 LDX 0 3
3XGQ SMO 5
3Y2B SUM 7 0
3YG2 BNZ 7 XCHECKSUM [CHECKSUM ERROR IN SPECEFIER BLOCK
3Y^L SMO 6
3^F= BRN TABTYP
3^YW TABTYP
42DG BRN TYPE0
42Y6 BRN XTYPE1
43CQ BRN TYPE2
43XB BRN TYPE3
44C2 BRN TYPE4
44WL BRN TYPE5
45B= BRN TYPE6
45TW TYPE0
46*G LDX 0 5
46T6 SBN 0 4
47#Q BNG 0 XRECSIZE [<4
47SB SBN 0 17
48#2 BPZ 0 XRECSIZE [>20
48RL SBN 5 3 [NO OF WDS OF DATA
49?= LDX 4 1(3) [PROGRAM ADDRES
49QW ADN 3 2 [START OF DATA
4==G FPCACA 2
4=Q6 CHECKA 4,5,XRESV,2,W,WCOOR,,2
4?9Q MOVE
4?PB FINMOVE 2,4,3,5,HLOCK1,2
4#92 #SKIP G3
4#NL BRN NEXTREC
4*8= #SKIP G4
4*MW (
4B7G BRN XLOCK
4BM6 WCOOR
4C6Q LDCT 3 #420
4CLB ANDX 3 XLDEXA(2)
4D62 BNZ 3 WCOOR1 [NOT SLOW OFFLINE PERIPH
4DKL STEPAGAIN
4F5= ADN 3 4
4FJW BRN WCOORX
4G4G WCOOR1
4GJ6 MHUNTW 3,FILE,FRB
4H3Q ADN 3 A1+2
4HHB WCOORX
4J32 FPCACA 2
4JGL BRN MOVE
4K2= )
4KFW TYPE2
4K^G TYPE3
4LF6 TYPE4
4LYQ SBN 5 2
4MDB BNG 5 XRECSIZE [<2
4MY2 SBN 5 3
4NCL BPZ 5 XRECSIZE [>5
4NX= LDCT 0 #420
4PBW ANDX 0 XLDEXA(2)
4PWG BNZ 0 YENTRY [NOT STOW OFFLINE PERIPH
4QB6 READAGAIN
4QTQ MHUNTW 3,FILE,FRB
4R*B LDN 2 A1+2(3)
4RT2 ADN 3 A1
4S#L MOVE 2 4
4SS= YENTRY
4T?W ACROSS LOADFIN,1
4TRG TYPE5
4W?6 SBN 5 5
4WQQ BNZ 5 XRECSIZE
4X=B LDCT 0 #20
4XQ2 ANDX 0 XLDEXA(2)
4Y9L BZE 0 XTYPE5 [ILLEGAL IF NOT MT
4YP= LDX 4 1(3) [PROGRAM ADDRE2S
4^8W LDX 5 2(3) [LENGTH OF DATA
4^NG BXGE 5 N513(1),XDATASIZE [ERROR IF MORE THAN 512 WDS
5286 LDX 0 3(3) [CHECKSUM OF TYPE 5 DATA
52MQ STO 0 WCHECKSUM(2)
537B FPCACA 2
53M2 CHECKA 4,5,XRESV,2,W,WCOORA,,2
546L YCHECKED
54L= SMO FX2
555W LDXC 0 XLDEXA
55KG BCS ONMT [ONLINE
5656 # MAGSTEP READS PROGRAM DIRECTLY INTO OP AREA
56JQ MAGSTEP XEOF,XTM,XLONGBLK,5,4
574B XLONGBLK
57J2 BRN TCHS
583L ONMT
58H= # IF ONLINE,PERI DIRECTLY INTO OP AREA
592W LDX 3 4 [REMEMBER O.P. ADDR
59GG #SKIP G4
5=26 LDX 6 ASEGTAB(2) [SEG TABLE ADDRESS
5=FQ #SKIP G3
5=^B FADDRESS 2,4,HLOCK1
5?F2 LDX 2 FX2
5?YL DCA ,STO,5,COUNT
5#D= DCA ,STO,4,CTSA
5#XW #SKI G4
5*CG (
5*X6 LDX 4 XMODE(1)
5BBQ DCA ,ORS,4,MODE [ADDITIVE MODE FOR PERI
5BWB DCA ,STO,6,SEGTAB [SEG TABLE ADDRESS
5CB2 )
5CTL LOCKC 2,ZCPA [LOCK CPA
5D*= #SKIP G4 [IN GEORGE 4 IT IS NECESSARY TO USE
5DSW (
5F#G ORX 7 GSIGN [THE SPECIAL PERI INTO AN OBJ PROG
5FS6 LDX 0 6 [SEG TABLE ADDRESS
5G?Q )
5GRB GPERI ,2
5H?2 #SKI G4
5HQL DCA ,ERS,4,MODE [CLEAR ADDITIVE MODE BIT
5J== COOR1
5JPW UNLOCK 2
5K9G CALL 6 RESTARTMT
5KP6 LDN 0 20
5L8Q DCA ,STO,0,COUNT
5LNB LDX 4 3 [O.P. ADDR
5M82 TCHS
5MML # COMMON ROUTINE TO CHECKSUM AND CLEAR UP AFTER TYPE 5 DATA TRANSFER
5N7= FPCACA 2
5NLW FSUM 2,3,4,5,HLOCK1,2
5P6G SMO FX2
5PL6 ADX 3 WCHECKSUM
5Q5Q BNZ 3 XCHECKSUM
5QKB #SKIP G4
5R52 (
5RJL #
5S4= # THIS SECTION ENSURES THAT GEORGE HAS A SENSIBLE SELECTION
5SHW # OF PAGES IN CORE AT THE END OF A LOAD OR CONT.
5T3G # THIS IS DONE BY LOCKING THE FIRST PAGES LOADED INTO CORE
5TH6 #
5W2Q XLOCK
5WGB SMO FX2
5X22 LDX 7 XQUOTA [PICK UP IND OF PAGES TO LOCK
5XFL BNG 7 ZLK9 [J IF ENOUGH PAGES LOCKED
5X^= BNZ 7 ZLK4 [J IF SOME PAGES LOCKED
5YDW LDX 7 HLOCK1+1(2)
5YYG BZE 7 ZLK9 [PAGE 0 IS ALWAYS LOCKED ANYWAY
5^D6 HUNT2 3,BSTB,BSCB,2
5^XQ LDX 0 AMAXSIZE(3)
62CB BPZ 0 ZLK2
62X2 TXL 7 BIT11 [FOR A SPARSE PROG WE DO NOT
63BL BCS ZLK9 [LOCK PAGES BELOW 4K
63W= ZLK2
64*W STO 7 HLOCK2+1(2) [START OF AREA TO BE KEPT IN CORE
64TG LDX 7 AQUOTA(3)
65*6 SLL 7 10 [SET X7 TO INDICATE NO OF PAGES TO
65SQ SBN 7 3584 [BE KEPT IN CORE - QUOTA-3.SET B14
66#B LDN 0 CHREAD+CHWRITE
66S2 STO 0 HLOCK2(2) [SET PERM IN 2ND HLOCK AREA
67?L BNG 7 ZLK8
67R= ZLK4 LDX 3 HLOCK2+1(2) [START OF AREA ALREADY LOCKED
68=W LDX 4 HLOCK2(2) [LENGTH
68QG ANDX 4 B2T13
69=6 ADX 3 4 [END OF AREA
69PQ TXL 3 HLOCK1+1(2) [J UNLESS THE AREA JUST READ BELONGS
6=9B BCS ZLK8
6=P2 LDX 0 HLOCK1(2) [TO A PAGE WHICH FOLLOWS ON IMMEDIATE
6?8L ANDX 0 B2T13 [LY AFTER THE AREA ALREADY LOCKED
6?N= ADX 0 HLOCK1+1(2)
6#7W TXL 3 0
6#MG BCC ZLK8
6*76 SBX 3 4 [LOCK PAGE FOLLOWING THOSE ALREADY
6*LQ ADN 4 1024 [LOCKED
6B6B # EXTEND PERM LOCKED AREA-CANNOT USE CHECKEXT,IT ASSUMES LENGTH OF
6BL2 # AREA LOCKED IS GREATER THAN ZERO
6C5L CLEAR 2,0,HLOCK2,2
6CK= CHECKB 3,4,(GEOERR),2,W,(GEOERR),HLOCK2,2
6D4W SBN 7 1024
6DJG ZLK7 BPZ 7 ZLK4 [REPEAT IF FURTHER PAGES TO BE LOCKED
6F46 ZLK8 SMO FX2
6FHQ STO 7 XQUOTA
6G3B ZLK9 CLEAR 2,0,HLOCK1,2
6GH2 )
6H2L BRN NEXTREC
6HG= WCOORA
6H^W FPCACA 2
6JFG BRN YCHECKED
6J^6 TYPE6
6KDQ LDCT 0 #200
6KYB ANDX 0 XLDEXA(2)
6LD2 BNZ 0 XBLOCKTYPE [ILLEGAL FOR CONT
6LXL SBN 5 8
6MC= BNZ 5 XRECSIZE
6MWW FPCACA 3,2
6NBG HUNT2 3,AOBRES,0
6NW6 LDX 0 ALOGLEN(3)
6P*Q SBN 0 24
6PTB BZE 0 X2SRS
6Q*2 ALTLEND 3,24
6QSL FPCACA 1,2
6R#= HUNT2 3,AOBRES,0,1
6R*^ ... LDCT 0 #020
6RCN ... ANDX 0 XLDEXA(2)
6RFC ... BNZ 0 ZT61
6RH6 ... READAGAIN [SERIAL ACCESS LOAD FILE
6RJT ... MHUNTW 2,FILE,FRB
6RLJ ... ADN 2 A1+2
6RN? ... BRN ZT62
6RQ2 ...ZT61
6RRW MHUNTW 2,FILE,FRB
6S?G ADN 2 A1
6SH# ...ZT62
6SR6 ADN 3 A1+16
6T=Q MOVE 2 8
6TQB BRN NEXTREC
6W=2 #
6WPL #
6X9= # SUBROUTINE TO LOCATE CPA IN X2
6XNW ZCPA
6Y8G LDX 2 FX2
6YN6 EXIT 1 0
6^7Q # SUBROUTINE TO LOCATE FILE/FRB
6^MB ZFRB
7272 MHUNTW 2,FILE,FRB
72LL EXIT 1 0
736= #
73KW #
745G #
74K6 XBRKIN [NOT POS BECAUSE BRKIN INHIBITED
754Q XCANTDO
75JB MFREEW FILE,FRB
7642 BRN RERROR1
76HL #
773= #
77GW # ALL ERROR CONDITIONS BRANCH HERE TO PICK UP LABEL OF NAME OF APPROPRIT
782G # (OR INAPPROPRIATE) ERROR MESSAGE
78G6 X2RS
78^Q X2SRS
79FB XBLOCKTYPE
79^2 XTYPE1
7=DL XTYPE5
7=Y= LDN 1 WRBLK
7?CW BRN RERROR
7?XG XEOF
7#C6 LDN 1 NOENT
7#WQ BRN RERROR
7*BB XREADFAIL
7*W2 XSPACES
7B*L XTM
7BT= XLEFTBRACK
7C#W XRECSIZE
7CSG XDATASIZE
7D#6 LDN 1 RINFF
7DRQ BRN RERROR
7F?B XRESV
7FR2 LDN 1 WERRES
7G=L BRN RERROR
7GQ= XCHECKSUM
7H9W LDN 1 RCHER
7HPG RERROR
7J96 SMO FX1
7JNQ LDX 5 0(1) [NAME OF ERROR
7K8B RERROR1
7KN2 ACROSS LOADERR,2 [REPORT ERROR AND CLEAR UP
7L7L MENDAREA 40,K99LOAD
7LM= #END
^^^^ ...40255163000200000000