{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: SCEXEND867)}}
====== SCEXEND867 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:CHAREA|CHAREA]], [[george:macro:CHUCK|CHUCK]], [[george:macro:CLOSEST|CLOSEST]], [[george:macro:EXMESS|EXMESS]], [[george:macro:FREECORE|FREECORE]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GETWORD|GETWORD]], [[george:macro:HUNTW|HUNTW]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MFINDEXOF|MFINDEXOF]], [[george:macro:MFINDSU|MFINDSU]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:OPENST|OPENST]], [[george:macro:OPTMESS|OPTMESS]], [[george:macro:READSAVE|READSAVE]], [[george:macro:RUNPROG|RUNPROG]], [[george:macro:SAVEST|SAVEST]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:TESTREP|TESTREP]], [[george:macro:TESTREPNOT|TESTREPNOT]], [[george:macro:TRACE|TRACE]], [[george:macro:UNLOCKSU|UNLOCKSU]], [[george:macro:WORDFIN|WORDFIN]]
228= ...#SEG SCEXEND867
22BG ...#
22JQ ...# COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982
22R2 ...#
22^= #LIS K0SCEXEND
23DW 8HSCEXEND
23YG # THIS SEGMENT CONTINUES AND COMPLETES EXTEND OR SCRATCH,
24D6 # FROM THE POINT WHERE THE AREA UNIT IS GOT
24XQ # ENTRY IS FROM NEXT-UNIT
25CB # AREA UNIT IS ONLINE AND LOCKED
25X2 #
26BL SEGENTRY K1SCEXEND,QK1SCEXEND
26W= SEGENTRY K2SCEXEND,QK2SCEXEND
27*W SEGENTRY K3SCEXEND,QK3SCEXEND
27TG SEGENTRY K4SCEXEND,QK4SCEXEND
28*6 #
28SQ QK1SCEXEND
29#B UGOT
29S2 MHUNTW 3,EWDAS,GEXD
2=?L #SKI K6SCEX>199-199
2=R= TRACE ARUNIT(3),AREAUNIT
2?=W #SKI K6SCEX>299-299
2?QG (
2#=6 LDX 0 ARUNIT(3)
2#PQ BZE 0 UG1
2*9B SRL 0 18
2*P2 BZE 0 UG2
2B8L UG1 GEOERR 1,ARUNIT
2BN= UG2
2C7W )
2CMG MFINDEXOF 2,CEFN(3)
2D76 NGS 3 EOFCYL(3) [SET EOFCYL -VE,EOF AREA IS NOT ON
2DLQ STOZ CELLD(3) [CLEAR CELLD /THIS UNIT
2F6B LDX 0 ARUNIT(3)
2FL2 TXU 0 EOFUNIT(3)
2G5L BCS START [J IF NOT EOF UNIT
2GK= LDEX 0 FIP+5(2)
2H4W SBN 0 2
2HJG BNG 0 START [J IF NO EOF AREA
2HS# ... ADN 0 2
2J46 SLL 0 1
2JHQ LDX 1 0
2K3B SLL 1 1
2KH2 ADX 1 0
2L2L ADN 2 FDCELLS(1) [POINTER TO EOF CELL
2LG= LDX 0 3(2) [NR OF CYLINDERS
2L^W BPZ 0 WFD [J IF FULL DEPTH,TAKE END CYLINDER+1,
2MFG SLL 0 1
2M^6 SBN 0 2
2NDQ BNZ 0 START [J IF MORE THAN 1 CYLINDER WIDE,
2NYB WFD ADX 0 1(2) [ELSE TAKE START CYLINDER,
2PD2 STO 0 EOFCYL(3) [AS EOF CYLINDER
2PXL #SKI K6SCEX>299-299
2QC= TRACE 0,EOFCYL
2QWW LDX 0 2(2)
2RBG STO 0 EOFBLOCK(3) [START BLOCK=EOF BLOCK
2RW6 #
2S*Q START [START SEARCH FOR AREA
2STB # OPEN AREA UNIT,READ CONTROL HEADER AND FIRST UNAL CEL
2T*2 MHUNTW 3,EWDAS,GEXD
2TSL OPENST ARUNIT(3) [OPEN AREA UNIT FOR TRANSFERS
2W#= LDN 7 128
2WRW READSAVE 7,SC1 [READ & SAVE CONTROL HEADER
2X?G TESTREPNOT OK,XN15 [J IF FAIL
2XR6 LDX 1 ECOR(3)
2Y=Q SC1 SMO FX2
2YQB STO 1 AWORK4 [CORE ADDRESS OF CH IN AWORK4 (FOR JB
2^=2 LDN 1 10(1)
2^PL STO 1 CELLA+5(3) [COREAD OF HEAD OF UNALLOCATED CHAIN
329= STOZ CELLB+5(3) [CLEAR CELL(B)
32NW SAVEST C,CELLA+5(3) [SAVE CELL(A)= HEAD OF CHAIN
338G BRN SC2
33N6 #
347Q # NEW CELL REQUIRED FROM UNALLOCATED CHAIN
34MB NCELL
3572 MHUNTW 3,EWDAS,GEXD
35LL CHUCK C,CELLP(3) [CHUCK OLD PREVIOUS CELL (P)
366= SC2 LDX 1 CELLA+5(3) [CORE ADDRESS CELL(A)
36KW LDX 6 0(1) [WORD ADDRESS OF NEXT CELL
375G BZE 6 NOCELL [J IF NO MORE IN CHAIN
37K6 STO 1 CELLP(3) [SET CELL(P)= OLD CELL(A)
384Q LDX 0 CELLB+5(3)
38JB BZE 0 SC3 [J IF CELL(B)NOT READ
3942 #SKI K6SCEX>399-399
39HL (
3=3= TXU 6 CELLB+4(3)
3=GW BCC SC2A
3?2G GEOERR 1,CELLB?
3?G6 SC2A
3?^Q )
3#FB LDN 4 CELLB(3) [ELSE COPY DETAILS OF CELLB TO
3#^2 LDN 5 CELLA(3) [CELLA
3*DL MOVE 4 6
3*Y= STOZ CELLB+5(3) [CLEAR CELLB
3BCW BRN SC4
3BXG SC3 READSAVE 6,SC5 [READ NEXT CELL & SAVE
3CC6 TESTREPNOT OK,XN15 [J IF FAIL
3CWQ LDX 1 ECOR(3)
3DBB SC5 CALL 7 SETC [SET UP NEW CELL AS CELL(A)
3DW2 SC4 CALL 6 SCRX [CHECK IF IN USE BY SCRATCH FILE
3F*L # ELSE WE HAVE A NEW CELL(A)
3FT= # FENCE BREAK INTO AREA(A)
3G#W ACROSS EXINTWO,2 [COMES BACK TO K2SCEXEND
3GSG #
3H#6 # S/R TO SET UP CELLA FROM BS COPY OF CELL
3HRQ SETC
3J?B STO 1 CELLA+5(3) [STORE CORE ADDRESS,
3JR2 STO 6 CELLA+4(3) [BS WORD ADDRESS,
3K=L LDX 5 1(1) [(START BLOCK)
3KQ= DVS 4 EDEPF(3)
3L9W STO 5 CELLA(3) [START CYLINDER,
3LPG STO 4 CELLA+2(3) [START BLOCK,
3M96 LDXC 5 2(1)
3MNQ BCS £
3N8B SBN 5 1 [(END BLOCK)
3NN2 DVS 4 EDEPF(3)
3P7L STO 5 CELLA+1(3) [END CYLINDER,
3PM= STO 4 CELLA+3(3) [END BLOCK
3Q6W EXIT 7 0
3QLG #
3R66 # RE-ENTRY AFTER FENCE BREAKER,
3RKQ QK2SCEXEND
3S5B #
3SK2 MHUNTW 3,EWDAS,GEXD
3T4L #SKI K6SCEX>199-199
3TJ= TRACE CELLA+4(3),CELLA
3W3W #SKI K6SCEX>399-399
3WHG (
3X36 LDN 0 4
3XGQ STT1 TRACE CELLA(3)
3Y2B ADN 3 1
3YG2 BCT 0 STT1
3Y^L SBN 3 4
3^F= )
3^YW LDX 0 CELLD(3)
42DG BNZ 0 SH1 [J IF WE HAVE AN AREA SAVED
42Y6 CALL 7 SUIT [CHECK AREA IS SUITABLE
43CQ LDX 0 EOFCYL(3)
43XB BNG 0 XGOT [TAKE THIS AREA IF NOT EOF AREA,ELSE
44C2 TXL 0 CELLA(3)
44WL BCS XGOT [TAKE IT IF WE HAVE PASSED EOF AREA
45B= TXU 0 CELLA(3) [J IF NOT EOF CYLINDER,
45TW BCS SH2
46*G LDX 4 CELLA+2(3)
46T6 TXL 4 EOFBLOCK(3) [ELSE TAKE THIS AREA IF
47#Q BCC XGOT [WE HAVE PASSED EOF BLOCK
47SB SH2 LDN 4 CELLP(3) [EOF CYLINDER/BLOCK NOT YET FOUND,
48#2 LDN 5 CELLD(3) [SAVE THIS SUITABLE AREA
48RL MOVE 4 7 [IN CELLD
49?= #SKI K6SCEX>399-399
49QW TRACE CELLD(3),SAVECELL
4==G SAVEST C,CELLP(3) [SAVE CELLS A AND P
4=Q6 SAVEST C,CELLA+5(3)
4?9Q BRN NCELL
4?PB SH1 LDX 0 EOFCYL(3) [LOOKING FOR EOF AREA
4#92 TXL 0 CELLA(3)
4#NL BCS SH3 [J IF PAST EOF CYLINDER
4*8= LDX 4 CELLA+2(3)
4*MW TXL 4 EOFBLOCK(3)
4B7G TXU 0 CELLA(3) [GET NEXT AREA IF
4BM6 BCS NCELL [NOT YET UP TO EOF AREA,
4C6Q CALL 7 SUIT [ELSE CHECK AREA IS SUITABLE
4CLB CHUCK C,CELLD(3) [IF SO,CHUCK SAVED AREA
4D62 CHUCK C,CELLD+6(3)
4DKL BRN XGOT [AND USE THIS AREA (NEXT TO EOF AREA)
4F5= #
4FJW NOCELL [=D7,NO MORE CELLS IN UNALLOCATED CHAIN
4G4G MHUNTW 3,EWDAS,GEXD
4GJ6 LDX 0 CELLD(3)
4H3Q BZE 0 XN14 [J IF NO SAVED AREA,NO ROOM ON THIS
4HHB BRN SH4 [UNIT,ELSE,
4J32 #
4JGL SH3 CHUCK C,CELLP(3) [NO AREA NEXT TO EOF,SO CHUCK
4K2= SH4 CHUCK C,CELLA+5(3) [CURRENT CELLS AND
4KFW LDN 4 CELLD(3) [RESTORE SAVED AREA
4K^G LDN 5 CELLP(3)
4LF6 MOVE 4 7
4LYQ #SKI K6SCEX>399-399
4MDB TRACE CELLA+5(3),RESRCELL
4MY2 #
4NCL XGOT [WE HAVE AN AREA:-IS IT TO BE SPLIT?
4NX= #SKI K6SCEX>299-299
4PBW TRACE CELLA(3),GOTAREA
4PWG LDX 4 CELLB+5(3)
4QB6 BZE 4 XG1 [J IF NO CELL B
4QTQ CHUCK C,4 [ELSE CHUCK IT
4R*B XG1 LDX 1 CELLA+5(3)
4RT2 LDX 0 1(1)
4S#L STO 0 ARQS(3) [SAVE START BLOCK OF AREA
4SS= LDN 4 CELLA(3) [MOVE DETAILS OF AREA
4T?W LDN 5 AREQT(3) [TO AREQT
4TRG MOVE 4 4
4W?6 LDX 4 CELLA+1(3) [SET UP SOME VALUES IN CELLB:-
4WQQ ADN 4 1
4X=B SBX 4 CELLA(3)
4XQ2 STO 4 CELLB+1(3) [CELLB+1=WIDTH OF AREA
4Y9L LDX 0 CELLA+3(3)
4YP= ADN 0 1
4^8W SBX 0 CELLA+2(3)
4^NG STO 0 CELLB+2(3) [CELLB+2=DEPTH OF AREA
5286 MPY 4 0
52MQ STO 5 CELLB(3) [CELLB=SIZE OF AREA
537B MFINDSU 2,ARUNIT(3) [FIND AREA ASTUC
53M2 LDX 4 HCYL(2)
546L #SKI K6SCEX>399-399
54L= (
555W TXL 4 CELLB+1(3)
55KG BCC XG2
5656 XG3 GEOERR 1,CELLA?
56JQ XG2 LDX 5 EDEPF(3)
574B TXU 5 HBLOCK(2)
57J2 BCS XG3
583L )
58H= MPY 4 HBLOCK(2) [DEPTH*WIDTH
592W SRL 5 4 [/16
59GG STO 5 CELLB+3(3) [CELLB+3=SIZE OF AREA UNIT/16
5=26 LDX 7 HCYL(2) [X7=WIDTH OF AREA UNIT
5=FQ LDN 6 0 [SET COUNT AND MARKER=0
5=^B LDX 0 AREQT(3) [DO WE SPLIT OFF CYLINDERS?
5?F2 TXU 0 AREQT+1(3)
5?YL BCC SP1 [J IF AREA 1 CYLINDER WIDE
5#D= LDX 5 BREQ(3)
5#XW SBN 5 1 [REQUEST SIZE/DEPTH (ROUND-
5*CG DVS 4 CELLB+2(3) [ED UP) TO GET MIN NR OF
5*X6 ADN 5 1 [CYLINDERS NEEDED (X5)
5BBQ TXU 5 CELLB+1(3)
5BWB BCC TAKE [J IF NO CYLINDERS TO BE SPLIT OFF
5CB2 #SKI K6SCEX>399-399
5CTL (
5D*= TXL 5 CELLB+1(3)
5DSW BCC XG3
5F#G )
5FS6 LDX 4 CELLB+1(3)
5G?Q SBX 4 5 [NR OF CYLINDERS TO SPLIT OFF
5GRB TXL 4 5
5H?2 BCC SP2 [SPLIT IF AREA TAKEN1/16 OF UNIT
5K9G SP2 SBS 4 AREQT+1(3) [RESET END CYLINDER TO SHOW SPLIT
5KP6 LDCT 6 #200 [SET CYLINDER-SPLIT MARKER
5L8Q ADN 6 1 [AND COUNT OF 1
5LNB SBN 5 1
5M82 BNZ 5 TAKE [J UNLESS AREA NOW 1 CYLINDER WIDE
5MML #SKI K6SCEX>399-399
5N7= (
5NLW LDX 5 AREQT(3)
5P6G TXU 5 AREQT+1(3)
5PL6 BCS XG3
5Q5Q )
5QKB SP1 LDX 5 CELLB+2(3) [WIDTH
5R52 SBX 5 BREQ(3) [BLOCKS TO BE SPLIT OFF
5RJL BZE 5 TAKE [J IF AREA EXACTLY RIGHT SIZE
5S4= #SKI K6SCEX>399-399
5SHW BNG 5 XG3
5T3G TXL 5 BREQ(3) [SPLIT IF AREA SPLIT OFF IS
5TH6 BCC SP3 [NOT < AREA LEFT
5W2Q LDX 0 CELLB+3(3) [ELSE
5WGB TXL 0 5 [TAKE WHOLE AREA UNLESS
5X22 BCC TAKE [AREA SPLIT OFF>OR=1/16 OF UNIT
5XFL SP3 SBS 5 AREQT+3(3) [ADJUST END BLOCK TO SHOW SPLIT
5X^= LDCT 0 #400
5YDW ORX 6 0 [SET BLOCK-SPLIT MARKER
5YYG ADN 6 1 [ADD 1 TO COUNT OF SPLITS
5^D6 #
5^XQ TAKE [SPLIT IF NECESSARY,RECHAIN CELLS,ETC,ETC,
62CB #SKI K6SCEX>99-99
62X2 TRACE AREQT(3),AREAUSED
63BL #SKI K6SCEX>299-299
63W= (
64*W LDN 0 3
64TG TK1 TRACE AREQT+1(3)
65*6 ADN 3 1
65SQ BCT 0 TK1
66#B SBN 3 3
66S2 TRACE 6
67?L )
67R= # AS FOR MODE *1500
68=W ACROSS EXINTO,3 [RETURNS TO...
68QG #
69=6 #
69PQ QK4SCEXEND
6=9B # CONNECTED TO FILE,EXOF IS UPDATED
6=P2 #
6?8L EXMESS [OUTPUT ANY MESSAGES
6?N= MHUNTW 3,EWDAS,GEXD
6#7W LDCT 0 #40
6#MG ANDX 0 EMARK(3)
6*76 BZE 0 NOPE [J UNLESS OPENING SCRATCH FILE
6*#Y ... HUNTW 3,EWDAS,ASCOL [SET UP IF IPB DOWN FOR OL SCRATCH
6*BW ... BNG 3 NTH
6*DS ... FREECORE 3 [FREE IF PRESENT
6*GQ ...NTH
6*LQ ACROSS ANTIC,1 [GO TO CONNECT
6B6B #
6BL2 NOPE [SET REPLIES TO SUCCESFUL EXTEND
6C5L MFINDEXOF 1,CEFN(3)
6CK= LDEX 2 FIP+5(1)
6D4W SBN 2 1
6DJG #SKI K6SCEX>399-399
6F46 (
6FHQ BPZ 2 WK1
6G3B WK2 GEOERR 1,NEWAREA
6GH2 WK1
6H2L )
6HG= SLL 2 1 [GET REPLIES FROM EXOF
6H^W LDX 5 2
6JFG SLL 2 1
6J^6 ADX 2 5
6KDQ ADN 2 FBUK(1) [POINTER TO LAST WORD OF 2ND-TO-LAST
6KYB LDX 5 0(2) [FD CELL. GET LAST LBN BEFORE (+1)
6LD2 LDX 6 6(2)
6LXL SBX 6 5 [NUMBER OF BUCKETS EXTENDED BY
6MC= SBN 5 1 [LAST LBN BEFORE
6MWW LDX 0 EOPMODE(3)
6NBG SBN 0 #400
6NW6 BNZ 0 WK3 [J UNLESS OPEN IN EOF MODE
6P*Q SBX 5 FIP+10(1) [ELSE SET LBN RELATIVE
6PTB ADN 5 1 [TO END OF FILE,
6Q*2 BPZ 5 WK3
6QSL LDN 5 0 [OR ZERO IF OUT OF RANGE
6R#= WK3
6RRW LDX 7 1(2) [SERIAL NR FOR NEW AREA
6S?G #SKI K6SCEX>399-399
6SR6 (
6T=Q TXU 7 ARUNIT(3)
6TQB BCS WK2
6W=2 )
6WPL LDX 4 CNR(3) [CA ADDRESS
6X9= FREECORE 3 [FREE /GEXD
6XNW CALL 3 WORD
6Y8G STO 5 0(2) [SET REPLY WORD 1 (LAST LBN BEFORE)
6YN6 CALL 3 WORD
6^7Q STO 6 0(2) [SET REPLY WORD 2 (NR OF BUCKETS)
6^MB ADN 4 1
7272 CALL 3 WORD
72LL STO 7 0(2) [SET REPLY WORD 4 (SERIAL NR NEWAR)
736= WORDFIN
73KW RUNPROG [RESTART PROGRAM
745G # [****
74K6 #
754Q WORD [S/R TO GET ADDRESS OF OBJECT PROGRAM
75JB SBX 3 FX1 [WORD([X4]+1),IN X2,USING GETWORD
7642 ADN 4 1
76HL GETWORD 4,2,WRITE
773= #SKI K6SCEX>399-399
77GW (
782G TESTREP OK,WOK
78G6 GEOERR 1,SCEXPROG [REPLY RESVIOL OR NOCORE
78^Q WOK
79FB )
79^2 ADX 3 FX1
7=DL EXIT 3 0
7=Y= #
7?CW #
7?XG #
7#C6 #
7#WQ # S/R TO CHECK IF AREA(A) USED BY SCRATCH FILE
7*BB SCRX
7BT= SMO CELLA+5(3)
7C#W LDX 4 1 [GET START BLOCK OF CELL A
7CSG MFINDSU 1,ARUNIT(3) [FIND ASTUC
7D#6 LDX 0 CSCRATCH(1) [CHECK AREA A NOT SCRATCH
7DRQ #SKI K6SCEX>299-299
7F?B (
7FR2 BPZ 0 SU2
7G=L GEOERR 1,SCRTCHCT
7GQ= )
7H9W SU2 BZE 0 SU1 [J NO MORE SCRATCH AREAS
7HPG SBN 0 1
7J96 SMO 0
7JNQ TXU 4 HSCRATCH(1)
7K8B BCC NCELL [J IF SAME START BLOCK,AREA A IS
7KN2 BRN SU2 [SCRATCH AND NO GOOD
7LG2 ...SU1 CHAREA ARUNIT(3),4,NCELL [CHECK IF FILE IN USE IN OTHER PROCES
7QJ= EXIT 6 0 [AREA OK
7RHG #
7S36 # S/R TO CHECK IF AREA(A SUITABLE FOR EXTEND
7SGQ SUIT
7T^L CALL 6 SCRX [CHECK NOT USED BY SCRATCH FILE,
7WF= LDX 0 CELLA+1(3) [ELSE,
7WYW TXU 0 CELLA(3)
7XDG BCC SU3 [J IF ONLY 1 CYLINDER,
7XY6 SMO CELLA+5(3)
7YCQ LDX 4 2 [ELSE CHECK THAT IT IS FULL-DEPTH,
7YXB BNG 4 NCELL [NO GOOD IF NOT
7^C2 SU3 SBX 0 CELLA(3) [AREA IS SUITABLE,
7^WL ADN 0 1
82B= LDX 4 CELLA+3(3) [IS IT BIG ENOUGH?
82TW SBX 4 CELLA+2(3)
83*G ADN 4 1
83T6 MPY 0 4 [TOTAL SIZE OF AREA
84#Q TXL 1 BREQ(3)
84SB BCS SU4 [J IF TOO SMALL
86?= EXIT 7 0 [ELSE EXIT,AREA OK
86QW SU4 TXL 1 BAVAIL(3)
87=G BCS NCELL [J IF SMALLER THAN REPLY AREA
87Q6 STO 1 BAVAIL(3) [ELSE REMEMBER AS BIGGEST AREA
889Q BRN NCELL [FOUND SO FAR AND GO FOR NEXT.
88PB #
8992 #
89NL #
8=8= # AREA NOT FOUND ON CURRENT UNIT
8=MW XN14
8?7G LDN 6 #40 [REPLYBIT=NO
8?M6 LDN 5 XNM1 [MESSAGE=AREA NOT FOUND
8#6Q XN18 MHUNTW 3,EWDAS,GEXD
8#LB CLOSEST XN19 [CLOSE CURRENT UNIT
8*62 TESTREPNOT OK,XN15 [J IF FAIL
8*KL XN19 MHUNTW 3,EWDAS,GEXD
8B5= ORS 6 EMARK(3) [SET REPBIT
8BJW #SKI K6SCEX>299-299
8C4G TRACE EMARK(3),NOGOOD
8CJ6 LDX 7 ARUNIT(3)
8D3Q UNLOCKSU 7 [UNLOCK AREA UNIT
8DHB LDX 1 FX1
8F32 ADX 1 5
8FGL OPTMESS 0(1),7 [OPTIONALLY STORE MESSAGE
8G2= NUNIT
8GFW ACROSS NEXTUNIT,2 [TRY NEXT UNIT
8G^G #
8HF6 XNM1 +EWNAREA [MESSAGE,NO AREA
8HYQ # TRANSFER FAIL ON AREA UNIT
8JDB XN15
8JY2 MHUNTW 3,EWDAS,GEXD
8KCL LDN 0 #10
8KX= ORS 0 EMARK(3) [SET REPBIT=FAIL
8LBW LDX 6 HMUNIT(3)
8LWG LDX 7 ARUNIT(3)
8MB6 UNLOCKSU 7 [UNLOCK AREA UNIT
8MTQ TXU 6 7 [GO FOR NEXT UNIT IF FAIL
8N*B BCS NUNIT [NOT ON HOME UNIT
8NT2 BRN XEND [AND END
8P#L #
8PS= # ENTRY FROM EXINTO IF ERROR,MARKER IN X7
8Q?W QK3SCEXEND
8QRG BPZ 7 XN16 [J IF NOT SCAFULL
8R?6 LDN 5 XNM2 [GET MESSAGE
8RQQ LDN 6 #20 [AND REPBIT
8S=B BRN XN19 [
8SQ2 #
8T9L XNM2 +EWFULS [MESSAGE SCAFULL
8TP= #
8W8W XN16 BNZ 7 XN15 [J IF FAIL ON AREA UNIT
8WNG MHUNTW 3,EWDAS,GEXD [ELSE FAIL ON HOME UNIT
8X86 LDN 0 #10
8XMQ SMO 3
8Y7B DCH 0 EMARK [SET REPBIT FAIL (ONLY)
8YM2 UNLOCKSU HMUNIT(3) [UNLOCK HOME UNIT
8^6L XEND
8^L= ACROSS NEXTUNIT,3 [TO GENERAL ERROR ROUTINE
925W #
92KG #
9356 #
93JQ MENDAREA 30,K99SCEXEND
944B #END
^^^^ ...71770513000100000000