{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: FINISHB867)}}
====== FINISHB867 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:BROADCAST|BROADCAST]], [[george:macro:BXE|BXE]], [[george:macro:COMERRX|COMERRX]], [[george:macro:COOR3|COOR3]], [[george:macro:DOWN|DOWN]], [[george:macro:ENDCOM|ENDCOM]], [[george:macro:FPUT|FPUT]], [[george:macro:FSHENTRY|FSHENTRY]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GEOSTOP|GEOSTOP]], [[george:macro:INFORM|INFORM]], [[george:macro:JBUSY|JBUSY]], [[george:macro:JWRONG|JWRONG]], [[george:macro:LINKSET|LINKSET]], [[george:macro:OUTPAR|OUTPAR]], [[george:macro:RUNJSA|RUNJSA]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:TRACE|TRACE]], [[george:macro:UNQUEUE|UNQUEUE]], [[george:macro:UNSET|UNSET]]
226D ... SEG FINISHB,867,SECTION CENT
22=W ...[
22C# ...[
22HQ ...[
22N8 ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982
22SL ...[
22^= FSHENTRY K1FINISHB,RETESTCG,RETESTCG,RETESTCG
23DW FSHENTRY K2FINISHB,,TOFREEBS,TOFREEBS
23YG FSHENTRY K3FINISHB,,TOSHUTDOWN,TOSHUTDOWN
24D6 SEGENTRY K4FINISHB,SECOND
24XQ SEGENTRY K5FINISHB,QENTRY5
25CB FSHENTRY K7FINISHB,QENTRY7,,QENTRY7
25X2 FSHENTRY K8FINISHB,,QENTRY8,QENTRY8
26BL FSHENTRY K9FINISHB,,QENTRY9,QENTRY9
26W= FSHENTRY K10FINISHB,,QENTRY10,QENTRY10
2764 ... SEGENTRY K11FINISHB,QENTRY11
27*W #
27FR ...XBACTRING
27KN ... +BACT+ACTRING
27PK ...#
2F6B [
2G5L NL ENDCOM
2HJG STOPFIN
2J46 STO 1 GL1
2JHQ LDX 2 3
2K3B LDX 1 FX1
2KH2 LINKSET 2,NL+1(1) [ PUTS ENDCOM LINK IN ACTIVITY
2L2L CALL 0 UNSET
2LG= FPUT [ PUTS ACTIVITY ON ACTIVITY LIST
2L^W BRN (GL1)
2MFG [
2M^6 [ S/R TO UNSET THE 'CURRENT FINISH ACTIVITY' BIT. FIRST IT TEST THAT
2NDQ [ THE BIT IS SET.
2NYB UNSET STO 0 GL2
2PD2 LDCT 0 #20
2PXL ANDX 0 EXT+11(2)
2QC= BNZ 0 X1 [ IF ZERO, THE BIT IS UNSET
2QWW GEOERR 0,OOPS!
2RBG X1 ERS 0 EXT+11(2)
2RW6 BRN (GL2)
2S*Q [
2STB # SUBROUTINE TO FIND CPA FOR CANCEL OR SECOND FINISH
2T*2 SEEKCPA
2TSL LDN 2 BACT+ACTRING
2W#= XLOOP9
2WRW LDX 2 FPTR(2)
2X?G TXU 2 XBACTRING(1)
2XR6 BCC QEND9
2Y=Q LDX 3 2
2YQB SBN 3 ACTRING [ADJUST TO START OF BLOCK
2^=2 LDCH 0 ATYPE(3)
2^PL SBN 0 CPAT/64
329= BNZ 0 XLOOP9
32NW LDCT 0 #20
338G ANDX 0 EXT+11(3) [TEST IF FINISH
33N6 BZE 0 XLOOP9 [J IF NOT
3*Y= LDX 2 FX2 [RESET X2
3BCW EXIT 6 1
3BXG QEND9
3DBB EXIT 6 0 [EXIT 0 IF NOT FOUND
3DW2 #
3K=L #
7642 #
76HL # ENTRY POINT FOR SECOND FINISH COMMAND
773= #
77GW SECOND
782G CALL 6 SEEKCPA [FIND 1ST CPAT
78SG ... BRN XGER
78^Q #SKI K6FINISH>199-199
79FB TRACE 3,OLDFIN
79^2 LDCT 0 #20
7=DL ORS 0 EXT+11(2) [SET BIT IN NEW
7=Y= ZONG1
7?CW LDX 0 BACKCHAN(3) [CHECK IF NEED TO REMOVE
7?XG BZE 0 ZING [ACT FROM QUEUE/LIST
7#C6 LDCT 0 #200
7#WQ ANDX 0 BA1(3)
7*BB BZE 0 NOBSQ [J IF NOT ON BSA QUEUE
7*W2 COOR3 #62 [WAIT A WHILE
7B*L CALL 6 SEEKCPA
7BT= BRN TOOLATE
7C#W BRN ZONG1
7CSG NOBSQ
7D#6 LDX 2 3
7DRQ UNQUEUE
7F?B ZING CALL 1 STOPFIN [ END FIRST FINISH ACTIVITY
7P5B LDCT 0 #740
7PK2 ANDS 0 FINISH [CLEAR B4-23 OF FINISH
7WYW SOKNOLD
7XDG BZE 7 NOPAR [JOIN APPROPRIATE ROUTINE
7XY6 BNG 7 PHAST
85#2 ORS 4 FINISH [STORE TIME
85RL BRN WAIT
8MTQ #
8N*B # ENTRY POINT FOR CANCEL FINISH
8NT2 #
8P#L #
8PS= QENTRY5 [ 'CANCEL FINISH' ENTRY POINT
9726 LDX 6 FINISH
97FQ BPZ 6 NOFIN [ERROR IF NO PREVIOUS FINISH
97^B LDCT 0 #240 [TOO LATE IF EITHER BIT SET
98F2 ANDX 0 6
98YL BNZ 0 TOOLATE [J IF PAST TIME - TOO LATE
9#B2 LDCT 0 #600
9#TL ERS 0 HLSWAIT
9**= XNCLFN
9*SW LDN 5 0 [CLEAR MARKER
9B#G ZONG OUTPAR TIMENOW [ O/P TIME
9BS6 BNZ 5 OPS1 [J TO TELL OPS
9FPW BROADCAST HALLCLEAR [GIVE ALL CLEAR
9KLW BUX 5 ZONG [ROUND AGAIN
9L6G OPS1
9P4= INFORM 3,HALLCLEAR,1
9S^= CALL 6 SEEKCPA [FIND FINISH ACTIVITY
9TDW BRN XGER
9TYG #SKI K6FINISH>99-99
9WD6 TRACE 3,CANFIN
9WXQ ZANG1
9XCB LDX 0 BACKCHAN(3) [CHECK IF NEED TO
9XX2 BZE 0 ZANG [REMOVE ACT FROM QUEUE/LIST
9YBL LDCT 0 #200
9YW= ANDX 0 BA1(2)
9^*W BZE 0 NOTBS [J IF NOT ON BSTS QUEUE
9^TG COOR3 #62 [WAIT A WHILE
=2*6 CALL 6 SEEKCPA
=2SQ BRN TOOLATE
=3#B BRN ZANG1
=3S2 NOTBS
=4?L LDX 2 3
=4R= UNQUEUE
=5=W ZANG CALL 1 STOPFIN [ END THE FINISH ACTIVITY
=8N= STOZ FINISH [CLEAR FINISH WORD
=JC= RUNJSA
=JWW ENDCOM
=KBG NOPAR
=KW6 ACROSS FINISH,8
=L*Q #
=LTB PHAST
=M*2 ACROSS FINISH,9
=MSL #
=N#= WAIT
=NRW ACROSS FINISH,10
=P?G #
=Y6= #
=Y6T ...[ THIS SECTION IS ENTERED ACROSS FROM FINISH
=Y7D ...[ WHEN MACRO "FNDELE ON" IS USED.
=Y83 ...[ WAITS FOR END OF CONSOLE OUTPUT AND THEN
=Y8L ...[ TERMINATES FINISH ACTIVITY WITH A GEOSTOP
=Y99 ...QENTRY11
=Y9S ...STOP
=Y=C ... LDN 4 BCONSOUT
=Y?2 ... BXE 4 BCONSOUT,STOP20 [J IF CONS OUTPUT CHAIN EMPTY
=Y?K ...[
=Y#8 ...STOP10
=Y#R ... COOR3 #53 [WAIT FOR END OF CONS OUTPUT
=Y*B ... BRN STOP
=Y*^ ...[
=YBJ ...STOP20
=YC7 ... LDN 4 63
=YCQ ... FINDPERE 3,APFOTY,4,STOP30 [SET X3 POINTING TO DEVICE LIST FOR
=YD* ...[ CONSOLE T/W. STOP30 IS RE-ENTRY
=YDY ... JWRONG 3,STOP30 [IF WRONGED LOOK FOR NEXT ONE
=YFH ... JBUSY 3,STOP10 [IF BUSY GO TO WAIT
=YG6 ...[ ALL CONSOLE OUTPUT FINISHED
=YGP ... GEOSTOP STOP40(1)
=YH# ...STOP40 16
=YHX ... 16HCLOSING DOWN NOW
=YJG ...[
=YK5 ...[
=YKW XGER
=^5G GEOERR 1,FINWRONG
=^K6 XERFORMAT
?24Q CALL 1 ZERROR
?2JB +APFERR
?342 TOOLATE
?3HL CALL 1 ZERROR
?43= +HTOOLATE
?7DL NOFIN CALL 1 ZERROR
?7Y= +HNOFIN
?#SG ZERROR
?*#6 COMERRX 0(1)
?*RQ #
?FNQ #END
^^^^ ...550337150001