{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: READSPEC867)}}
====== READSPEC867 ======
(George Source)
**Macros used:** [[george:macro:CAPCA|CAPCA]], [[george:macro:CHECKEXT|CHECKEXT]], [[george:macro:FADDRESS|FADDRESS]], [[george:macro:FREECORE|FREECORE]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GETWORD|GETWORD]], [[george:macro:ILLEGAL|ILLEGAL]], [[george:macro:INMOVE|INMOVE]], [[george:macro:JNCAFSDV|JNCAFSDV]], [[george:macro:LADDP|LADDP]], [[george:macro:LGEOG|LGEOG]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MFINDEXOF|MFINDEXOF]], [[george:macro:MFINDSU|MFINDSU]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:OLPFIN1|OLPFIN1]], [[george:macro:OUTPACK|OUTPACK]], [[george:macro:PAIR|PAIR]], [[george:macro:PROGBRKIN|PROGBRKIN]], [[george:macro:RELST|RELST]], [[george:macro:RUNPROG|RUNPROG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETUPCORE|SETUPCORE]], [[george:macro:SMUSEST|SMUSEST]], [[george:macro:STEPBACK|STEPBACK]], [[george:macro:SUSESTX|SUSESTX]], [[george:macro:TESTREPNOT|TESTREPNOT]], [[george:macro:TOPCA1|TOPCA1]], [[george:macro:UNPLUG|UNPLUG]], [[george:macro:WORDFIN|WORDFIN]]
22FL ...#SEG READSPEC70 [FRANK BLUNDELL
22LS ...# COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982
22S2 ...#
22^= #LIS K0READSPEC
23DW 8HREADSPEC
23YG # IMPLEMENTS MODE #1400 (READ FILE AREA SPEC)
24D6 # ON ENTRY ACTIVITY IS AOLPT
24XQ # EXEC2 CONTAINS CA ADDRESS
25CB #
25X2 #
26BL #DEF XCA=EVENT2
26W= #
27*W SEGENTRY K1READSPEC,QK1READ
27TG SEGENTRY K2READSPEC,QK2READ
28*6 #
28SQ RM1 #77777
29#B SM1 #777777
29S2 RHP PAIR PERION,1
2=?L #
2=R= #
2?=W QK1READ
2?QG STOZ AWORK3(2) [EOF FOR LATER USE
2#=6 STO 6 AWORK1(2) [SAVE ADDITIVE MODES
2#PQ LDX 7 APETADDR(2) [USED TO MARK OLPA ENTRY
2*9B LDN 4 8
2*P2 CHECKEXT XCA(2),4,XRV,7,W,RK,HLOCK1
2B8L RK [CHECK CONTROL AREA
2BN= #SKI K6READSPEC>199-199
2C7W (
2CMG SBN 5 #1400 [CHECK MODE
2D76 BZE 5 RAA
2DLQ GEOERR 1,RSPMODE
2F6B RAA
2FL2 )
2G5L LDX 3 XCA(2)
2GK= LDX 2 7 [PCA ADDRESS
2H4W ADN 3 6
2HJG FADDRESS 2,3,HLOCK1 [GET ADDRESS OF WORD CONTAINING LBN
2J46 LDX 2 FX2
2JHQ LDX 6 0(3) [X6 CONTAINS LBN
2K3B BZE 6 RD [JUMP IF LBN OUT OF RANGE
2KH2 MFINDEXOF 3,EXNUM(2) [FIND EXOF FOR THIS FILE
2L2L LDX 0 EXMODE(2)
2LG= SBN 0 #400
2L^W BNZ 0 RBA [JUMP IF NOT EOF MODE
2MFG ADX 6 FIP+10(3)
2M^6 SBN 6 1 [ADD IN EOF
2NDQ LDX 0 FIP+10(3)
2NYB SBN 0 1
2PD2 STO 0 AWORK3(2) [EOF FOR LATER USE
2PXL RBA LDEX 4 FIP+5(3)
2QC= BZE 4 RD [NO AREAS
2QWW LDN 5 0 [LOOK FOR FD CELL FOR THIS LBN
2RBG RB SMO 5
2RW6 TXL 6 FDCELLS+5(3)
2S*Q BCS RA
2STB ADN 5 6
2T*2 BCT 4 RB
2TSL RD LDCT 6 #400 [BUCKET OUT OF RANGE
2W#= ... LDN 4 6
2WRW ... LDN 5 1
2X?G BZE 7 RDA [JUMP IF WORKING IN PCA
2XR6 BRN RC [JUMP TO SET REPLY
2Y=Q RA SMO 5
2YQB LDX 4 FDCELLS(3) [SERIAL NUMBER OF UNIT HOLDING
2^=2 SUSESTX 4,RE [MARK UNIT TO BE LEFT ONLINE
2^PL RAS LDX 0 HSTUN(1)
329= SMO FX2
32NW STO 0 ACOMMUNE1 [START SORTING OUT OP REPLIES
375G LGEOG HUNIT(1),4 [GET GEOGRAPHICAL NO.
37K6 LDX 0 BSUNIT1(2) [COUNT OF SUS
38JB SRL 0 6
3942 ANDN 0 #77
39HL SBN 0 1 [JUMP IF ONLY ONE UNIT
3=3= BZE 0 RF
3=GW LDCT 0 #100 [SET SHARED HEADS BIT
3?2G ORX 4 0
3?G6 RF LDCT 0 #200
3?^Q ORX 4 0 [MOVEABLE HEADS
3#2B ...#UNS CAFSINT
3#32 ...(
3#3L ...# FOR THE CAFS INTERFACE, WE INDICATE IN EACH FILE AREA
3#4= ...# DESCRIPTION THE TYPE OF DRIVE CONTAINING THE FILE AREA
3#4W ...#
3#5G ...# THIS IS DONE IN WORD 7 OF THE ENTRY AS FOLLOWS:
3#66 ...#
3#6Q ...# BITS 12,13 = 0 NON-CAFS DRIVE
3#7B ...# = 1 CAFS 'S' DRIVE
3#82 ...# = 2 CAFS 'M' DRIVE
3#8L ...# = 3 UNDEFINED
3#9= ...#
3#9W ...#
3#=G ... JNCAFSDV HUNIT(1),SNOTCAFS [JIF FILE AREA NOT ON A CAFS DRIVE
3#?6 ...#
3#?Q ... LDCT 0 #100
3##B ... SMO HUNIT(1) [CHECK IF THE CAFS DRIVE NUMBER > 7
3#*2 ... ANDX 0 CFDRIVENO
3#*L ... SRL 0 11 [CONVERT TO APPROPRIATE PATTERN
3#B= ... ADN 0 #2000 [AS SPECIFIED ABOVE
3#BW ... ORX 4 0 [MERGE INTO REST OF REPLY
3#CG ...#
3#D6 ...SNOTCAFS
3#DQ ...)
3#FB LDX 2 FX2
3#^2 STO 4 ACOMMUNE7(2)
3*DL RJ SMO 5
3*Y= LDX 0 FDCELLS+1(3)
3BCW STO 0 ACOMMUNE2(2) [START CYLINDER
3BXG SMO 5
3CC6 ADX 0 FDCELLS+3(3)
3CWQ SBN 0 1 [END CYLINDER
3DBB [B0 SET IF NECESSARY
3DW2 STO 0 ACOMMUNE3(2)
3F*L SMO 5
3FT= LDX 0 FDCELLS+2(3)
3G#W STO 0 ACOMMUNE4(2) [STARTING BLOCK
3GSG SMO 5
3H#6 ADX 0 FDCELLS+4(3) [ENDING BLOCK
3HRQ SBN 0 1
3J?B STO 0 ACOMMUNE5(2)
3JR2 SMO 5
3K=L LDX 0 FDCELLS+5(3)
3KQ= SBX 0 AWORK3(2) [SUBTRACT EOF
3L9W STO 0 ACOMMUNE6(2) [LAST LBN+1
3LPG LDX 0 ACOMMUNE7(2)
3M96 BZE 0 RCA [JUMP IF UNIT NOT ONLINE
3MNQ SMO 5
3N8B LDX 6 FDCELLS(3) [SERIAL NUMBER
3NN2 RELST 6 [RELEASE UNIT
3P7L ...RCA LDN 4 ACOMMUNE1(2)
3PM= ... LDN 5 7
3Q6W BZE 7 RDA [JUMP IF IN PCA
3QLG RC LDX 3 XCA(2)
3R66 ADN 3 1
3RKQ ... INMOVE 7,3,4,5
3S5B LDX 1 FX1
3SK2 OLPFIN1 RHP(1)
3T4L #
3TJ= # UNIT NOT ONLINE
3W3W #
3WHG RE LDX 2 FX2
3X36 LDN 0 2
3XGQ ANDX 0 AWORK1(2) [CHECK FOR MODE #400
3Y2B BZE 0 RH [JUMP IF NOT SET
3YG2 STO 4 ACOMMUNE1(2) [SET REPLIES FOR UNIT NOT
3Y^L STOZ ACOMMUNE7(2) [ONLINE
3^F= BRN RJ [GO TO SET REST OF REPLIES
3^YW #
42DG # GET UNIT ONLINE
42Y6 #
43CQ RH LDX 5 EWCHAN(2) [GET DATA INTO ACCS
43XB SRC 5 6
44C2 ORX 5 4 [X5 B0-B5 CHANNEL B6-B23 C.S.N
44WL LDX 4 XCA(2) [C.A ADDRESS
45B= LDX 3 EXNUM(2)
45TW LDX 7 AWORK3(2) [EOF
46*G LDX 1 FX1
46T6 TOPCA1 RHP(1) [CHANGE TO PCA
47#Q UNPLUG [NOW IN PCA
47SB CAPCA [GO TO CPA
48#2 LDX 0 5
48RL ANDX 0 SM1(1)
49?= STO 0 AWORK1(2) [SERIAL NUMBER
49QW SMUSEST AWORK1(2),SCANT,SBRK
4=Q6 STO 7 AWORK3(2)
4?9Q LDN 7 0 [SET MARKER
4?PB STO 3 AWORK1(2) [EXOFILE NUMBER
4#92 ANDX 5 SM1(1) [X5 HOLDS SU SERIAL NUMBER
4#NL STO 4 AWORK2(2) [CONTROL AREA ADDRESS
4BM6 SA MFINDSU 1,5 [FIND ASTUC FOR THIS UNIT
4C6Q MFINDEXOF 3,AWORK1(2)
4F5= LADDP HUNIT(1),2
4FJW LDEX 4 FIP+5(3)
4G4G LDN 5 0
4GJ6 SB SMO 5
4H3Q TXL 6 FDCELLS+5(3)
4HHB BCS RAS
4J32 ADN 5 6
4JGL BCT 4 SB
4K2= BRN RD [JUMP TO SET LBN OUT OF RANGE
4K5X ...RDA SETUPCORE 5,3,EWDAS,GEXD
4K9J ... LDN 6 ACOMMUNE1(2)
4K*9 ... LDN 7 A1(3)
4KDW ... SMO 5
4KJH ... MOVE 6 0
4KN8 ... LDX 7 AWORK2(2) [C.A ADDRESS
4KRT ... ADN 7 1
4KXG ... LDN 6 A1
4L39 ...RDAREP
4L4* ... GETWORD 7,7,WRITE,4,5 [X3 WILL POINT TO GEORGE ADDR OF RW
4L5F ... TESTREPNOT OK,XCRV
4L6K ... MHUNTW 3,EWDAS,GEXD
4L7P ... ADX 6 3
4L8T ... TXL 4 5 [CAN MOVE BE DONE IN ONE GO?
4L=5 ... BCC RDAFIN [J IF IT CAN
4L?K ... SMO 4
4L*5 ... MOVE 6 0 [MOVE WHAT WE CAN
4LBK ... SMO 4
4LD5 ... LDN 6 A1 [UPDATE ADDRESSES
4LFK ... LDX 7 AWORK2(2)
4LH5 ... ADN 7 1
4LJK ... ADX 7 4
4LL5 ... SBX 5 4 [& NO OF WORDS WE WANT TO ACCESS
4LMT ... BRN RDAREP
4LPJ ...RDAFIN
4LR? ... SMO 5
4LSC ... MOVE 6 0 [FINAL MOVE
4LTH ... FREECORE 3
4LWP ... WORDFIN
4LYQ RUNPROG [RESTART PROGRAM
4MDB #
4MY2 #
4NCL #
4NX= #
4PBW # THIS SECTION IMPLEMENTS MODE #1100 (READ FILE SPEC)
4PWG # ENTRY AS MODE #1400
4QB6 #
4QTQ #
4R*B #
4RT2 #
4S#L QK2READ
4SS= LDX 7 APETADDR(2) [PWA ADDRESS
4T?W LDN 4 17
4TRG CHECKEXT XCA(2),4,XRV,APETADDR(2),W,QD,HLOCK1
4W?6 QD [CHECK CONTROL AREA
4WQQ STO 6 AWORK1(2)
4X=B #SKI K6READSPEC>199-199
4XQ2 (
4Y9L SBN 5 #1100
4YP= BZE 5 QAA
4^8W GEOERR 1,MODEWRNG
4^NG QAA
5286 )
52MQ LDCT 6 #400
537B ORN 6 5 [REPLY IF SCRATCH FILE
53M2 LDX 0 EXMODE(2)
546L SBN 0 #600
54L= BZE 0 QA [JUMP IF SCRATCH FILE
555W MFINDEXOF 3,EXNUM(2)
55KG SUSESTX ASUSN(3),QB
5656 LDX 0 HSTUN(1) [SERIAL NO. AND BITS 2 AND 3
56JQ STO 0 ASUSN(3)
574B LDX 1 FX1
57J2 LDX 2 FX2
583L LDX 4 XCA(2)
58H= ADN 4 1
592W LDN 5 16 [MOVE IN REPLIES
59GG LDN 6 ASUSN(3)
5=26 INMOVE 7,4,6,5
5=FQ LDX 0 SM1(1)
5=^B ANDS 0 ASUSN(3) [REMOVE BITS 2 AND 3
5?F2 RELST ASUSN(3) [RELEASE UNIT
5?YL OLPFIN1 RHP(1)
5#D= # UNIT NOT ONLINE - CHECK FOR MODE #4000,GET ONLINE
5#XW # IF NECESSARY
5*CG #
5*X6 QB LDX 1 FX1
5BBQ LDX 2 FX2
5BWB LDN 0 2
5CB2 ANDX 0 AWORK1(2)
5CTL BZE 0 QC
5D*= LDCT 6 #400
5DSW ORN 6 6
5F#G QA LDN 5 1
5FS6 LDX 4 XCA(2)
5G?Q ADN 4 1
5GRB LDN 3 6
5H?2 INMOVE 7,4,3,5
5HQL OLPFIN1 RHP(1)
5J== #
5JPW # BACK TO ANALYSIS ROUTINE
5K9G #
5KP6 #
5L8Q # GO TO CPA TO GET UNIT ONLINE,THEN BACK TO PCA TO SET REPLIES
5LNB #
5M82 QC LDX 5 EWCHAN(2)
5MML SRC 5 6
5N7= ORX 5 ASUSN(3)
5NLW LDX 3 EXNUM(2)
5P6G LDX 4 XCA(2)
5PL6 TOPCA1 RHP(1)
5Q5Q #
5QKB # NOW IN PCA
5R52 UNPLUG [UNPLUG PROGRAM
5RJL CAPCA [GO TO CPA
5S4= LDX 0 5
5SHW ANDX 0 SM1(1)
5T3G STO 0 AWORK1(2) [SERIAL NUMBER
5T?# ... STO 3 AWORK3(2) [EXOFILE NO
5TH6 SMUSEST AWORK1(2),SCANT,SBRK
5W2Q [GET UNIT ONLINE
5X22 ANDX 5 SM1(1)
5XFL MFINDSU 1,5
5X^= MFINDEXOF 3,3 [FIND ASTUC AND EXOF
5YDW LDX 0 HSTUN(1)
5YYG STO 0 ASUSN(3)
5^D6 LDX 5 4
5^XQ ADN 5 1
62=7 ... STO 5 AWORK2(2) [RW ADDRESS
62JJ ... LDN 4 ASUSN
62X2 LDN 6 16
62^D ...QGW
633W ... GETWORD 5,5,WRITE,7,6 [X5 POINTS TO GEORGE ADDR OF RW
636# ... TESTREPNOT OK,XCRV
638Q ... MFINDEXOF 3,AWORK3(2)
63?8 ... ADX 4 3 [X4 UPDATE FOR MOVE
63*L ... TXL 7 6 [[CAN MOVE BE DONE IN ONE GO?
63D4 ... BCC QWF [J IF IT CAN
63GG ... SMO 7
63JY ... MOVE 4 0 [MOVE WHAT WE CAN
63MB ... LDX 5 AWORK2(2)
63PS ... ADX 5 7
63S= ... SBX 6 7 [ADJUST NO OF WORDS REQD TO ACCESS
63WN ... SMO 7
63^6 ... LDN 4 ASUSN
643J ... BRN QGW
6462 ...QWF
648D ... SMO 6
64=W ... MOVE 4 0 [FINAL MOVE
64*W SMO FX1
64TG LDX 0 SM1
65*6 ANDS 0 ASUSN(3)
65SQ RELST ASUSN(3) [RELEASE UNIT
664J ... WORDFIN
66#B RUNPROG [RESTART PROGRAM
66S2 #
67?L #
67R= # CANTDO AND BREAKIN WHIST WAITING FOR UNIT
68=W #
68QG #
69=6 STEN +10
69PQ #
6=9B #
6=P2 XCRV GEOERR 1,RESVIOL
6?8L #
6?N= #
6#7W # BREAKIN
6#MG SBRK STEPBACK [STEP BACK ONR OF PROGRAM TO REPEAT
6*76 PROGBRKIN [REPORT BREAKIN
6*LQ #
6B6B # CANTDO
6BL2 #
6C5L SCANT LDX 3 4
6CK= SRL 5 18 [X5= CHANNEL NUMBER
6D4W ... LDCT 6 6
6DJG ... ADX 6 5 [DEVICE AND CHANNEL NO.
6F46 ...XPAR OUTPACK 6,1,PERINAME,XPAR
6LD2 XC2 LDCT 7 #440
6LXL ADN 3 1
6M=3 ... GETWORD 3,3,WRITE
6MJD ... TESTREPNOT OK,XCRV
6MWW STO 7 0(3)
6N6N ... WORDFIN
6NBG ILLEGAL PERFAIL
6NW6 #
6P*Q #
6PTB # RESERVATION VIOLATION
6Q*2 #
6QSL XRV TOPCA1 RHP(1)
6R#= UNPLUG
6RRW ILLEGAL NOCA
6S?G MENDAREA 30,K99READSPEC
6SR6 #END
^^^^ ...10177126000100000000