{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: NETOFLNE867)}}
====== NETOFLNE867 ======
(George Source)
**Macros used:** [[george:macro:ALTLEN|ALTLEN]], [[george:macro:CHANGEPER|CHANGEPER]], [[george:macro:CHECKB|CHECKB]], [[george:macro:CLOSETOP|CLOSETOP]], [[george:macro:COMBRKIN|COMBRKIN]], [[george:macro:COMERR|COMERR]], [[george:macro:COOR1|COOR1]], [[george:macro:COOR1Y|COOR1Y]], [[george:macro:DCA|DCA]], [[george:macro:DFLOAD|DFLOAD]], [[george:macro:DOWN|DOWN]], [[george:macro:ENDCOM|ENDCOM]], [[george:macro:ERROR|ERROR]], [[george:macro:ERRTEST|ERRTEST]], [[george:macro:FADDRESS|FADDRESS]], [[george:macro:FNORM|FNORM]], [[george:macro:FOUTMOVE|FOUTMOVE]], [[george:macro:FREECORE|FREECORE]], [[george:macro:FSHCODE|FSHCODE]], [[george:macro:FSHSKIP|FSHSKIP]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GETACTX|GETACTX]], [[george:macro:GPERI|GPERI]], [[george:macro:HLSXONCH|HLSXONCH]], [[george:macro:ILLEGALX|ILLEGALX]], [[george:macro:JFREZFCB|JFREZFCB]], [[george:macro:LGEOG|LGEOG]], [[george:macro:LINKSET|LINKSET]], [[george:macro:LOCKCA|LOCKCA]], [[george:macro:MFREE|MFREE]], [[george:macro:MHUNT|MHUNT]], [[george:macro:MONOUT|MONOUT]], [[george:macro:NAMETOP|NAMETOP]], [[george:macro:OLPFINX|OLPFINX]], [[george:macro:OPEN|OPEN]], [[george:macro:OUTPACK|OUTPACK]], [[george:macro:OUTPAR|OUTPAR]], [[george:macro:PAIR|PAIR]], [[george:macro:PERCON|PERCON]], [[george:macro:PICKREP2|PICKREP2]], [[george:macro:PMODES|PMODES]], [[george:macro:PUTREP2|PUTREP2]], [[george:macro:RELPERENT|RELPERENT]], [[george:macro:REPALLER|REPALLER]], [[george:macro:ROLPA|ROLPA]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SKIP|SKIP]], [[george:macro:SPARANOT|SPARANOT]], [[george:macro:TESTERR|TESTERR]], [[george:macro:TESTREP2|TESTREP2]], [[george:macro:TESTREPNOT|TESTREPNOT]], [[george:macro:TESTRPN2|TESTRPN2]], [[george:macro:TOPCA|TOPCA]], [[george:macro:TOPFCB|TOPFCB]], [[george:macro:TRACE|TRACE]], [[george:macro:UNPLUG|UNPLUG]], [[george:macro:UP|UP]], [[george:macro:VFREE|VFREE]]
22FL SEG NETOFLNE,867,SECT.FILE,,G550
22^= #LIS K0NETOFLNE
23DW #OPT G550 = 0
23YG #SKI G550&1
24D6 # FOR G3UG MEND M550 (LINE PRINTER OUTPUT DIRECT TO MAGNETIC TAPE)
24XQ SEGENTRY K1NETOFLNE,Z1NETOFLNE[ZOFFLINE(ZF)
25CB SEGENTRY K2NETOFLNE,Z2NETOFLNE[PERI HANDLING
25X2 SEGENTRY K3NETOFLNE,Z3NETOFLNE[RELEASE ENTRY
26BL SEGENTRY K4NETOFLNE,Z4NETOFLNE['ILLEGAL' ENTRY
26W= [
27*W [
27TG [ THIS SEGMENT WRITTEN BY N.E.T.R.H.A.
28*6 [
28SQ [ IT IMPLEMENTS THE ZOFFLINE COMMAND TO SPOOL
29#B [ PRINT DIRECTLY TO TAPE, AND THE OTHER LINKED
29S2 [ FUNCTIONS.
2=?L [
2=R= [ NOTE: IT WILL ONLY IMPLEMENT 2/#0 OR 2/#4 PERIS
2?=W [ THE 2/#2 AUTOWRITE WILL BE FLAGED AS ILLEGAL
2?QG [
2#=6 [
2#PQ XFIVE +5
2*9B XLP +2
2*P2 XMASK #77777771
2B8L XMASK1 #60000000
2BN= XMASK2 #60077777
2C7W XMASK3 #17777777
2CMG XMASK4 #04000000
2D76 XMASK5 #02000000
2DLQ XHASH11 #11
2F6B XHASH51 #51
2FL2 XWRITE #40
2G5L XTRA 2,4096,2,4096,2,4096
2GK= MAX1 +162
2H4W MAX2 +513
2HJG ZJYMODE +JYMODE
2J46 ZJYCHAR +JYCHAR
2JHQ ZJYCOUNT +JYCOUNT
2K3B ZJYRESVIOL +JYRESVIOL
2KH2 ZJYOUTFULL +JYOUTFULL
2L2L ZJYPERFAIL +JYPERFAIL
2LG= PAIR2 PAIR NETOFLNE,2
2L^W PAIR4 PAIR NETOFLNE,4
2MFG #
2M^6 #
2NDQ # ZOFFLINE COMMAND
2NYB #
2PD2 #
2PXL Z1NETOFLNE
2QC= # DECODE COMMAND PARAMETERS
2QWW PERCON 1 [DECODE PERIPHERAL NAME
2RBG TESTREPNOT OK,TERR [J IF ERROR
2RW6 MHUNT 3,CPAR,GPERCON [LOOK FOR REPLY BLOCK
2S*Q LDX 0 A1(3)
2STB SRL 0 15
2T*2 TXU 0 XLP(1)
2TSL BCC P1 [J IF LP
2W#= SPARANOT 1 [PASS FIRST PARAMETER
2WRW ERROR JPNAL,JNOTLP [OTHERWISE REPORT ERROR
2X?G TERR ENDCOM [TERMINATE IF ERROR
2XR6 # RELEASE ANY PREVIOUS CHANNEL
2Y=Q P1 LDX 5 A1(3) [TYPE/UNIT NO.
2YQB STO 5 AWORK4(2)
2^=2 #UNS JWPHASE4
2^PL (
329= LDCT 6 #3
32NW ADX 6 5
338G HLSXONCH XBRKIN,6,PHLSER
33N6 )
347Q RELPERENT 5 [RELEASE ANY PREVIOUS PERIPHERAL
34MB # ENTRANT DESCRIPTION PARAMETER
3572 P4 SPARANOT 2 [UNPACK ENTRANT DESCRIPTION
35LL MHUNT 3,CPB,CUNI
366= LDX 0 ANUM(3)
36KW BPZ 0 P2 [J UNLESS PARAMETER MISSING
375G COMERR JPARMIS,JFENTRANT
37K6 #UNS JWPHASE4
384Q (
38JB PHLSER
3942 COMERR ERHLSONL
39HL )
3=3= PNOTEMP
3=GW COMERR ERTEMPDIR
3?2G P2 NAMETOP 3,FILE,FNAME
3?G6 FNORM
3?^Q PICKREP2 7
3#FB MHUNT 3,FILE,FNAME
3#^2 NAMETOP 3,CPB,CUNI
3*DL PUTREP2 7
3*Y= NGN 7 1
3BCW TESTREP2 NAMEFORM,TERR
3BXG TESTRPN2 OK,TERR
3CC6 P5 MFREE CPB,CUNI
3CWQ MHUNT 3,FILE,FABSNB
3DBB LDX 0 ATYPE(3)
3DW2 ANDN 0 #200
3F*L BNZ 0 PNOTEMP
3FT= LDX 0 HDREC(3)
3G#W SBN 0 10
3GSG BNG 0 PE1
3H#6 ADN 0 4
3HRQ STO 0 HDREC(3) [INSERT REDUCED LENGTH
3J?B LDX 0 ACES
3JR2 SMO HDREC(3)
3K=L STO 0 A1+5(3)
3KQ= NGN 0 #101
3L9W ANDS 0 ATYPE(3) [REMOVE LANG CODE BIT
3LPG FSHCODE B,XFSHBOPEN
3M96 ([
3MNQ OPEN PG4,GENERAL,QUERY [OPEN DIRECTORY
3N8B XFSHBOPEN
3NN2 )[
3P7L FSHSKIP B,XFSHNBOPEN
3PM= ([
3Q6W OPEN PG4,READ,QUERY
3QLG XFSHNBOPEN
3R66 )[
3RKQ TESTREP2 OK,P6
3S5B TESTERR NAME,TERR
3SK2 TESTREP2 NOFILE,PE4
3T4L TESTREP2 VRYWRONG,PE4
3TJ= TESTREP2 NOUSER,PE4
3W3W GEOERR 1,REPLY
3WHG P6
3X36 MHUNT 2,FILE,FABSNB [THE FABSNB NEEDS TO BE SET
3XGQ LDN 0 6 [TO CONTAIN :USER.LOCALNAME ONLY
3Y2B ADS 0 A1(2) [THIS IS FOR LATER USE WHEN
3YG2 LDX 0 A1(2) [UPDATING BUDGETS
3Y^L SBN 0 10
3^F= BZE 0 P02
3^YW LDX 3 2
42DG TOPFCB 1
42Y6 ADN 1 FME1
43CQ ADN 2 A1+1
43XB MOVE 1 3
44C2 SMO A1(3)
44WL LDN 1 A1-6(3)
45B= LDN 2 A1+4(3)
45TW LDX 5 ALOGLEN(3)
46*G SBX 5 A1(3)
46T6 ADN 5 6
47#Q SMO 5
47SB MOVE 1 0 [MOVE LOCAL NAME UP FABSNB
48#2 ADN 5 4
48RL LDN 1 10
49?= STO 1 A1(3)
49QW ALTLEN 3,5,FILE,FABSNB
4==G P02
4=Q6 #UNS FTS1
4?9Q (
4?PB TOPFCB 3 [X3 POINTS TO DIRS FILE-FCB
4#92 JFREZFCB 3,PERR2 [TEST FOR FROZEN DIR & FREEZE PRIVILE
4#NL )
4*8= OWNERCHECK [CHECK OUT OWNERSHIP OF TAPE
4*MW PICKREP2 3
4B7G CLOSETOP [CLOSE DIRECTORY
4BM6 PUTREP2 3
4C6Q #UNS FTS1
4CLB (
4D62 TESTREP2 OK,P7 [OWNERSHIP OK?
4DKL REPALLER
4F5= BRN TERR
4FJW )
4G4G P7 MHUNT 3,FILE,FABSNB
4GJ6 #UNS FTS1
4H3Q VFREE FILE,ADJUNCTS
4HHB LDN 0 1
4J32 ORS 0 ATYPE(3) [NON-FILESTORE ENTRANT REQUIRED
4JGL STOZ ACOMMUNE1(2)
4K2= TRACE 2,GETONZF
4KFW DOWN GET,3 [GO DOWN TO GET A TAPE
4K^G BRN XBRKIN
4LF6 TESTREPNOT OK,PE [J IF FAILED TO GET A TAPE
4LYQ OUTPAR TIMENOW
4MDB LGEOG ,3
4MY2 P8 OUTPACK 3,1,GEOPER,P8
4NCL P9 LDX 5 AWORK4(2)
4NX= OUTPACK 5,1,PERINAME,P9
4PBW DFLOAD ,TSN,3
4PWG P10 OUTPACK 3,1,TSN,P10
4QB6 P11 MHUNT 3,FILE,FABSNB
4QTQ ADX 3 HDREC(3)
4R*B OUTPACK A1-6(3),3,LOCNAME,P11
4RT2 P12 MHUNT 3,FILE,FABSNB
4S#L ADX 3 HDREC(3)
4SS= OUTPACK A1-2(3),1,GENNUM,P12
4T?W P13 MHUNT 3,FILE,FABSNB
4TRG ADX 3 HDREC(3)
4W?6 OUTPACK A1-3(3),1,REELNUM,P13
4WQQ OUTPAR SKIP
4X=B MONOUT JPER
4XQ2 MHUNT 3,FILE,FABSNB
4Y9L FREECORE 3
4YP= LDN 3 AOLPTLEN+AZFLEN
4^8W LDCT 5 AOLPT/8 [AOLPT TYPE
4^NG GETACTX 5,3,1
5286 LDX 3 BPTR(2)
52MQ LDX 0 JOBNO(2)
537B STO 0 JOBNO(3)
53M2 LDCT 0 #400
546L STO 0 FRECHADD(3)
54L= ORS 0 GIVE(3) [SET BIT FOR ADLOT
555W LDX 0 AWORK4(2)
55KG STO 0 FTYPNO(3)
5656 STOZ AWORK1(3)
56JQ STOZ AWORK2(3)
574B STOZ AWORK3(3)
57J2 STOZ AWORK4(3)
583L LDX 1 FX1
58H= LINKSET 3,PAIR2(1)
592W CHANGEPER 3 [TRANSFER TAPE TO AOLPT
59GG LDX 5 AWORK4(2)
5=26 PUTPEREN 5,GSIGN [INSERT PERIPH. ENTRY
5=FQ ROLPA [CHAIN AOLPT IN PCA CHAIN
5=^B ENDCOM
5?F2 #
5?YL # EXECPTION CONDITIONS FOR ZOFFLINE(ZF)
5#D= #
5#XW PE TESTREP2 NOLOCN,PE1
5*CG TESTREP2 TSN,PE2
5*X6 TESTREP2 NOTAV,PE3
5BBQ TESTRPN2 ODRAWN,PQ1
5BWB ERROR BUDGODR,BUDGSPA
5CB2 BRN TERR
5CTL PQ1 TESTRPN2 INCREASE,PQ2
5D*= ERROR BUDGINC,BUDGSPA
5DSW BRN TERR
5F#G PQ2 TESTREP2 ALREADY,TERR
5FS6 TESTREP2 NAME,TERR
5G?Q TESTREP2 WRGEN,TERR
5GRB TESTREP2 VRYWRONG,TERR
5H?2 TESTREP2 TEMP,TERR
5HQL TESTREP2 NODECKS,PE5
5J== GEOERR 1,GETREP
5JPW PE1 COMERR AMTDESC,JLOCN [SERIAL NUMBER GIVEN
5K9G PE2 COMERR AMTDESC,JNTSN [LOCAL NAME NOT GIVEN
5KP6 PE3 COMERR JNPT [POOL TAPE NOT AVAILABLE
5L8Q PE4 COMERR ERNAME
5LNB PE5 COMERR ERNODECKS
5M82 PERR TESTRPN2 ILLCOMB,PERR1
5MML COMERR ERILLCOMB
5N7= PERR1 COMERR ERILLMODE
5NLW #UNS FTS1
5P6G (
5PL6 PERR2 CLOSETOP
5Q5Q ERRTEST 3,TERR,FROZEN,NOFPRIV [ERROR MESS FOR FROZEN & NO-F-PR
5QKB GEOERR 1,GLFRREP [ELSE GEORGE ERROR
5R52 )
5RJL # BREAKIN EXITS
5S4= XBRKIN COMBRKIN
5SHW # GEORGE ERRORS
5T3G PG4 GEOERR BRIEFPM,BREAKIN
5TH6 #
5W2Q #
5WGB # PERI HANDLING ROUTINE
5X22 #
5XFL #
5X^= Z2NETOFLNE
5YDW LDX 0 AWORK1(2)
5YYG BNG 0 Z2FAIL [J IF TAPE HAS FAILED
5^D6 BNZ 0 Z2RENTRY [J IF NOT FIRST ENTRY
5^XQ LDX 0 AWORK2(2)
62CB BNZ 0 Z2RENTRY [J IF NOT FIRST ENTRY
62X2 NGN 0 62
63BL LDN 5 512
63W= CALL 6 Z2WRITES [WRITE START OF DATA SENTINEL
64*W BNZ 4 Z2FAIL [J IF WRITE ERROR
64TG Z2RENTRY
65*6 LDX 7 APETADDR(2)
65SQ LDX 3 7
66#B LOCKCA 3,EVENT2(2) [CHECK CONTROL AREA
66S2 LDX 4 EVENT2(2)
67?L LDN 5 ACA1(2)
67R= LDN 6 4
68=W FOUTMOVE 3,4,5,6,HLOCK1 [MOVE OUT CONTROL AREA
68QG LDEX 0 ACA1(2) [TEST MODE
69=6 BZE 0 Z2CAD [OK IF #0
69PQ ANDX 0 XMASK(1)
6=9B BNZ 0 Z2MILL
6=P2 LDEX 0 ACA1(2)
6?8L ANDN 0 #6
6?N= ERN 0 #6
6#7W BZE 0 Z2MILL
6#MG SRL 0 2
6*76 BNZ 0 Z2MILL [ILLEGAL IF MODE #2
6*LQ Z2CAD LDCT 5 #600
6B6B ANDX 5 ACA4(2) [TEST ADDRESS
6BL2 ERX 5 XMASK1(1)
6C5L BNZ 5 Z2CADILL [ILLEGAL IF NOT CHAR 3
6CK= Z2CADOK
6D4W LDX 6 ACA3(2) [TEST COUNT
6DJG BZE 6 Z2CILL
6F46 TXL 6 MAX1(1)
6FHQ BCC Z2CILL [ILLEGAL IF > 2000
6G3B ADN 6 6
6GH2 SRL 6 2 [CONVERT COUNT TO WORDS
6H2L LDX 5 ACA4(2)
6HG= PMODES 3,7 [CHECK ADDRESS MODE
6H^W ANDN 3 #10
6JFG BNZ 3 Z2A [J IF 22AM
6J^6 ANDX 5 XMASK2(1)
6KDQ Z2A LDN 4 CHREAD [SET MODE = READ
6KYB STO 5 ACA4(2) [SAVE ADDRESS
6LD2 CHECKB 5,6,Z2RESV,7,4,Z2RESOK [CHECK RESERVATIONS
6LXL #
6MC= #
6MWW # PERI VALID - NOW PROCESS IT
6NBG #
6NW6 #
6P*Q Z2RESOK
6PTB LDX 2 7
6Q*2 SMO FX2
6QSL LDX 3 ACA4 [PROGRAM BUFFER ADDRESS
6R#= FADDRESS 2,3,HLOCK1 [ADD DATUM
6RRW LDX 2 FX2
6S?G LDCH 5 0(3) [LOAD PFCC
6SR6 TXL 5 XWRITE(1)
6T=Q BCC Z2RESOKP [J IF 'PRINT' MODE
6TQB LDN 6 1 [SET LENGTH = 1
6W=2 Z2RESOKP
6WPL ADN 6 1
6X9= ADX 6 AWORK1(2) [ADD BUFFER SIZE SO FAR
6XNW TXL 6 MAX2(1)
6Y8G BCC Z2BUFFUL [J IF BUFFER FULL
6YN6 SBX 6 AWORK1(2) [RESTORE RECORD SIZE
6^7Q BRN Z2BUFFOK [AND J TO ADD RECORD TO BUFFER
6^MB #
7272 #
72LL # BUFFER FULL - WRITE IT TO TAPE
736= #
73KW #
745G Z2BUFFUL
74K6 LDX 5 AWORK1(2)
754Q STOZ AWORK1(2) [MARK BUFFER EMPTY
75JB LDN 0 1
7642 ADS 0 AWORK2(2) [UPDATE MT BLOCK COUNT
76HL CALL 6 Z2WRITE [WRITE THE BLOCK TO TAPE
773= BNZ 4 Z2FAIL [J IF WRITE ERROR
77GW LDX 6 ACA3(2)
782G ADN 6 10
78G6 SRL 6 2 [RESET RECORD LENGTH
78^Q LDX 4 CPRW1(2)
79FB ANDX 4 XMASK5(1)
79^2 BZE 4 Z2BUFFOK [J IF NOT END OF TAPE
7=DL LDX 4 AWORK4(2)
7=Y= BZE 4 Z2EOR [J IF EOT JUST REACHED
7?CW BNG 4 Z2EOT [J IF OK TO WRITE EOR
7?XG ANDX 4 XMASK3(1)
7#C6 SBN 4 1 [DECREMENT END COUNT
7#WQ BZE 4 Z2EOT [J IF COUNT EXHAUSTED
7*BB BNG 4 Z2EOT [J IF COUNT EXHAUSTED
7*W2 DSA 4 AWORK4(2)
7B*L BRN Z2BUFFOK [J TO PROCESS PERI
7BT= Z2EOR LDCT 4 #200
7C#W ADN 4 10 [SET COUNT OF 10 MORE BLOCKS
7CSG STO 4 AWORK4(2) [SO THAT WE MAY WAIT FOR A HOF
7D#6 BRN Z2BUFFOK [J TO PROCESS PERI
7DRQ #
7F?B #
7FR2 # WRITE EOR TO FULL REEL
7G=L # AND THEN FAIL OUTPUT *LPN FILE FULL
7GQ= #
7H9W #
7HPG Z2EOT LDCT 0 #600
7J96 LDX 5 AWORK2(2)
7JNQ CALL 6 Z2WRITES [WRITE EOR LABEL
7K8B BNZ 4 Z2FAIL [J IF TAPE FAIL
7KN2 LDCT 0 #400
7L7L STO 0 AWORK1(2)
7LM= LDCT 5 #50
7M6W LDX 0 ACA1(2)
7MLG SRL 0 3
7N66 ANDN 0 #7777
7NKQ SBN 0 #3000
7P5B BZE 0 Z2REP
7PK2 LDX 5 ZJYOUTFULL(1) [OUTPUT FILE FULL
7Q4L BRN Z2ILL
7QJ= #
7R3W #
7RHG # ADD RECORD TO BUFFER
7S36 #
7SGQ #
7T2B Z2BUFFOK
7TG2 LDX 2 7
7T^L SMO FX2
7WF= LDX 3 ACA4 [PROGRAM BUFFER ADDRESS
7WYW FADDRESS 2,3,HLOCK1 [ADD DATUM
7XDG LDCH 4 0(3) [LOAD PFCC
7XY6 LDX 2 FX2
7YCQ TXU 4 XHASH51(1)
7YXB BCC Z2THROW [J IF WRITE AFTER HOF
7^C2 TXU 4 XHASH11(1)
7^WL BCS Z2NOTHROW [J IF NOT THROW TO HOF
82B= Z2THROW
82TW LDX 4 AWORK4(2)
83*G BZE 4 Z2NOEOT [J IF EOT NOT REACHED
83T6 LDCT 4 #400
84#Q STO 4 AWORK4(2) [MARK OK TO CLOSE TAPE
84SB Z2NOEOT
85#2 LDX 3 AWORK1(2)
85RL BNZ 3 Z2BUFFUL [J IF DATA IN BUFFER
86?= BNG 4 Z2EOT [J TO CLOSE TAPE
86QW Z2NOTHROW
87=G LDX 2 7
87Q6 SMO FX2
889Q LDX 3 ACA4 [PROGRAM BUFFER ADDRESS
88PB FADDRESS 2,3,HLOCK1 [ADD DATUM
8992 LDX 2 FX2
89NL LDCH 5 0(3) [LOAD PFCC
8=8= TXL 5 XWRITE(1)
8=MW BCC Z2PRINT [J IF 'PRINT' MODE
8?7G LDX 3 AWORK1(2)
8?M6 ADX 3 FX2
8#6Q LDN 6 2
8#LB STO 6 ACA5(3) [WORD COUNT = 2
8*62 ADS 6 AWORK1(2)
8*KL SLL 5 18
8B5= LDEX 4 ACA1(2)
8BJW SRL 45 6 [ADD MODE INTO WORD
8C4G LDN 4 1 [NO. CHARS = 1
8CJ6 BRN Z2ENDPERI
8D3Q Z2PRINT
8DHB LDX 3 AWORK1(2)
8F32 ADX 3 FX2
8FGL STO 6 ACA5(3) [WORD COUNT
8G2= ADS 6 AWORK1(2)
8GFW SBN 6 1 [RESET TO LENGTH OF DATA
8G^G LDX 4 ACA4(2)
8HF6 ANDX 4 XMASK3(1)
8HYQ LDN 5 ACA6(3)
8JDB FOUTMOVE 7,4,5,6,HLOCK1 [MOVE DATA INTO BUFFER
8JY2 LDX 5 ACA6(3) [LOAD PFCC
8KCL SLL 5 18
8KX= LDEX 4 ACA1(2)
8LBW SRL 45 6 [ADD MODE INTO WORD
8LWG LDX 4 ACA3(2)
8MB6 Z2ENDPERI
8MTQ SRL 45 12 [ADD CHAR. COUNT INTO WORD
8N*B STO 5 ACA6(3) [STORE LENGTH/MODE/PFCC IN RECORD
8NT2 LDN 5 0
8P#L Z2REP LINKSET FX2,PAIR2(1) [SET LINK FOR NEXT ENTRY
8PS= LDX 2 7
8Q?W SMO FX2
8QRG LDX 3 EVENT2 [ADDRESS OF CONTROL AREA
8R?6 ADN 3 1
8RQQ FADDRESS 2,3,HLOCK1
8S=B STO 5 0(3) [SET 'OK' REPLY TO OBJECT PROGRAM
8SQ2 OLPFINX 7 [SIGNAL PERI FINISHED
8T9L BRN Z2NETOFLNE [J FOR NEXT TRANSFER
8TP= #
8W8W #
8WNG # VARIOUS ILLEGAL CONDITIONS COME HERE
8X86 #
8XMQ #
8Y7B Z2FAIL
8YM2 LDCT 5 #50
8^6L LDX 0 ACA1(2)
8^L= SRL 0 3
925W ANDN 0 #7777
92KG SBN 0 #3000
9356 BZE 0 Z2REP
93JQ LDCT 5 #400
944B STO 5 AWORK1(2)
94J2 LDX 5 ZJYPERFAIL(1) [ONLINE PERI FAIL
953L BRN Z2ILL
95H= Z2MILL
962W LDX 5 ZJYMODE(1) [MODE IN ERROR
96GG BRN Z2ILL
9726 Z2CADILL
97FQ LDX 5 ZJYCHAR(1) [ILLEGAL CHAR. ADDR.
97^B BRN Z2ILL
98F2 Z2CILL
98YL LDX 5 ZJYCOUNT(1) [COUNT OUT OF RANGE
99D= BRN Z2ILL
99XW Z2RESV
9=CG LDX 5 ZJYRESVIOL(1) [RESERVATION VIOLATION
9=X6 Z2ILL LDX 4 FTYPNO(2) [TYPE/UNIT
9?BQ TOPCA PAIR4(1)
9?WB COOR1Y
9#B2 BRN Z2NETOFLNE [J FOR NEXT TRANSFER
9#TL #
9**= #
9*SW # TAPE WRITE SUBROUTINE
9B#G #
9BS6 #
9C?Q Z2WRITES [WRITE SENTINEL ENTRY
9CRB SBX 6 FX1
9D?2 STO 0 ACA5(2) [SENTINEL TYPE
9DQL STO 5 ACA6(2) [SUBSIDIARY INFORMATION
9F== STOZ ACA7(2)
9FPW LDN 4 ACA7(2)
9G9G LDN 5 ACA8(2)
9GP6 MOVE 4 17 [SET REMAINDER TO ZERO
9H8Q LDX 3 CPPTR(2)
9HNB LDN 5 5
9J82 DCA 3,STO,5,MODE
9JML GPERI ,2 [WRITE A TAPE MARK
9K7= COOR1 [WAIT FOR TRANSFER TO FINISH
9KLW LDN 5 20 [QUALIFIER BLOCK 20 WORDS LONG
9L6G BRN Z2WRS
9LL6 Z2WRITE [WRITE BLOCK ENTRY
9M5Q SBX 6 FX1
9MKB TXL 5 XFIVE(1)
9N52 BCC Z2WRITEOK [J IF BLOCK >= 5 WORDS
9NJL LDN 4 ACA5(2)
9P4= ADX 4 5
9PHW LDN 3 XTRA(1)
9Q3G MOVE 3 6 [ADD 3 NULL 2 WORD RECORDS
9QH6 ADN 5 6 [INCREMENT BLOCK LENGTH
9R2Q Z2WRITEOK
9RGB LDX 3 CPPTR(2)
9S22 Z2WRS DCA 3,STO,5,COUNT
9SFL LDN 5 1
9S^= DCA 3,STO,5,MODE
9TDW LDN 5 ACA5(2)
9TYG DCA 3,STO,5,CTSA
9WD6 GPERI ,2 [WRITE THE BLOCK
9WXQ COOR1 [WAIT FOR TRANSFER
9XCB LDX 4 CPRW1(2) [LOAD REPLY
9XX2 ANDX 4 XMASK4(1) [MASK ERROR BIT
9YBL ADX 6 FX1
9YW= EXIT 6 0
9^*W #
9^TG #
=2*6 # RELEASE ENTRY
=2SQ #
=3#B #
=3S2 Z3NETOFLNE
=4?L # *MT FAILS IN CLOSING ARE NOTED IN ACOMMUNE1 FOR OFFREL.
=4R= STOZ ACOMMUNE1(2)
=5=W LDX 5 AWORK1(2)
=5QG BNG 5 Z3NOWRITE [J IF TAPE HAS FAILED
=6=6 BZE 5 Z3BUFFEMPTY [J IF NO DATA IN BUFFER
=6PQ LDN 0 1
=79B ADS 0 AWORK2(2) [UPDATE MT BLOCK COUNT
=7P2 CALL 6 Z2WRITE [WRITE THE REMAINING BLOCK
=88L STO 4 ACOMMUNE1(2)
=8N= BNZ 4 Z3NOWRITE
=97W #
=9MG #
==76 # WRITE TRAILER LABEL AND RELEASE TAPE
==LQ #
=?6B #
=?L2 Z3BUFFEMPTY
=#5L LDCT 0 #400
=#K= LDX 5 AWORK2(2) [BLOCK COUNT
=*4W CALL 6 Z2WRITES [WRITE EOF SENTINEL
=*JG STO 4 ACOMMUNE1(2)
=B46 Z3NOWRITE
=BHQ # OFFREL WILL REWIND THE TAPE AUTONOMOUSLY AND FREE IT.
=C3B UP [RETURN TO OFFREL
=CH2 #
=D2L #
=DG= # 'ILLEGAL' ENTRY
=D^W #
=FFG #
=F^6 Z4NETOFLNE
=GDQ UNPLUG [UNPLUG THE PROGRAM FROM EXECUTIVE
=GYB OUTPACK 4,1,PERINAME
=HD2 ILLEGALX 5 [SEND THE PROGRAM 'ILLEGAL'
=HXL #END
=JC=
^^^^ ...455552450001