{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: FREEPER867)}}
====== FREEPER867 ======
(George Source)
**Macros used:** [[george:macro:CCOUT|CCOUT]], [[george:macro:CCSTOP|CCSTOP]], [[george:macro:CHECKXOT|CHECKXOT]], [[george:macro:CLCOUNT|CLCOUNT]], [[george:macro:CLDRM|CLDRM]], [[george:macro:CLEARJPS|CLEARJPS]], [[george:macro:CLWTBSW|CLWTBSW]], [[george:macro:DISENGPER|DISENGPER]], [[george:macro:DOWN|DOWN]], [[george:macro:FPUT|FPUT]], [[george:macro:FREECORE|FREECORE]], [[george:macro:FREEPER|FREEPER]], [[george:macro:FSHENTRY|FSHENTRY]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GEOPACK|GEOPACK]], [[george:macro:GETACT|GETACT]], [[george:macro:GSCAN|GSCAN]], [[george:macro:HUNTW|HUNTW]], [[george:macro:INFORMX|INFORMX]], [[george:macro:JANON|JANON]], [[george:macro:JENV|JENV]], [[george:macro:JENVNOT|JENVNOT]], [[george:macro:JEXOTIC|JEXOTIC]], [[george:macro:JMT|JMT]], [[george:macro:JNWTBSW|JNWTBSW]], [[george:macro:JONL|JONL]], [[george:macro:JRIGHT|JRIGHT]], [[george:macro:JWTBWR|JWTBWR]], [[george:macro:LGEOG|LGEOG]], [[george:macro:LINKSET|LINKSET]], [[george:macro:LINT|LINT]], [[george:macro:LONGON|LONGON]], [[george:macro:LTYPE|LTYPE]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:NOTBUSY|NOTBUSY]], [[george:macro:OUTPACK|OUTPACK]], [[george:macro:PAIR|PAIR]], [[george:macro:SAWCE|SAWCE]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETALLOC|SETALLOC]], [[george:macro:SETWTBWR|SETWTBWR]], [[george:macro:SWOUT|SWOUT]], [[george:macro:UP|UP]], [[george:macro:WRONG|WRONG]], [[george:macro:XWRONG|XWRONG]], [[george:macro:YWRONG|YWRONG]]
22FL #SEG FREEPER [LEN WAGSTAFF.
22PD ...# (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1983.
22^= #OPT K0FREEPER=0
23DW #OPT K6FREEPER=K6PERI
23YG #LIS K0FREEPER>K0PERI>K0GREATGEO>K0ALLGEO
24D6 #
24XQ # THIS SEGMENT IS ENTERED FROM THE FREEPER MACRO TO RELEASE THE
25CB # PERIPHERAL OWNED BY THE CALLING ACTIVITY. AN ACTLF IS SET UP
25X2 # FOR A SLOW OUTPUT DEVICE, UNLESS THE CALLING ACTIVITY ITSELF
26BL # IS AN ACTLF. THE DEVICE IS WRONGED IF MARKED WAITING TO BE SO,
26W= # AND THE APPROPRIATE MESSAGE IS SENT TO THE RELEVANT CONSOLE.
27*W #
27TG 8HFREEPER
28*6 #
28SQ #
29#B SEGENTRY K1FREEPER,X1FREEPER
29J8 FSHENTRY K2FREEPER,X2FREEPER,,X2FREEPER
29S2 #
2=?L #
2=R= XCR +3
2?=W XLP +2
2?QG XTP +1
2#=6 XCP +4
2#PQ PLINK
2*9B PAIR LISTINIT,4
2*P2 PLINKTC [TP OR CP
2B8L PAIR LISTINTC,8
2BN= XAZFREE +AZFREE
2C7W XJWRONG +JWRONG
2C*4 XJSWRJ +JSWOREJ
2CG= XJUSWO +JUNITSWO
2CJW ... +JUNITCSWO
2CMG X1FREEPER
2D76 LDN 7 0
2DLQ LDX 3 CPPTR(2) [UNTIL FOUND DIFFERENT
2F6B #SKI K6FREEPER>199$199
2FL2 ( [SKIPPED IF K6FREEPER<200
2G5L BNZ 3 PLOCAL
2GK= LDX 0 JSOURCE2(2)
2H4W BNZ 0 REMOTE [BR IF REMOTE, OTHERWISE...
2HJG GEOERR 1,LOCAL!!
2J46 PLOCAL
2JHQ )
2K3B #SKI K6FREEPER<199$199
2KH2 BZE 3 REMOTE [BR IF REMOTE
2L2L # ^ SKIPPED IF K6FREEPER >200
2LG= NOTBUSY
2L^W #SKI K6FREEPER>12$12
2MFG (
2M^6 LGEOG 3,4
2NDQ GSCAN 4,FREEPERL
2NYB )
2PD2 CLCOUNT 3,GEORGE
2PXL CLCOUNT 3,OBJECT [CLEAR DEVICE COUNTS
2QC= CLCOUNT 3,REPEAT
2QWW CLCOUNT 3,FAIL
2RBG LTYPE 3,4 [DEVICE TYPE TO X4
2RW6 CLDRM 3 [CLEAR ONLINE IN DRM MARKER
2S*Q LDN 7 1 [MARK ONLINE
2STB JONL 3,ONLINE
2T*2 LDN 7 0 [MARK NOT ONLINE
2TSL ONLINE
2W#= JWTBWR 3,XWTBWR [BR IF WAITING TO BE WRONGED
2WRW CLEARJPS 3 [CLEAR JPSTATE WORD
2X?G TXU 4 XLP(1)
2XR6 BCC XOP [BR IF LINEPRINTER
2Y=Q TXU 4 XTP(1)
2YQB BCC XOP [BR IF TAPEPUNCH
2^=2 TXU 4 XCP(1)
2^PL BCS XNOP [BR IF NOT CARDPUNCH
329= XOP
32NW LDCH 0 ATYPE(2)
338G SBN 0 ACTLF/64
33N6 BZE 0 XACTLF [BR IF ACTLF ISSUED
347Q SETALLOC 3 [MARK DEVICE ALLOCATED
34MB GETACT ACTLF,CENTRAL [GET CENTRAL ACTLF FOR DEVICE
3572 LDX 2 BPTR(2) [X2 NOW POINTS TO NEW ACTLF
35LL TXU 4 XLP(1)
366= BCC TOLP [J. IF LP
36KW LINKSET 2,PLINKTC(1) [MOVE IN LINK FOR TP
375G BRN NOTLP
37K6 TOLP LINKSET 2,PLINK(1) [MOVE IN LINK FOR LP
384Q NOTLP
38JB STO 3 CPPTR(2) [STORE D1L POINTER IN CPPTR
3942 SLL 4 18 [SET UP DEVICE TYPE FOR JSOURCE1
39HL LGEOG 3,0 [LOAD GEOG NO OF DEVICE
3=3= ADX 4 0
3=GW STO 4 JSOURCE1(2) [SET UP JSOURCE1
3?2G FPUT
3?G6 BRN XNOMESS [BR TO TIDY UP - NO MESSAGE
3?^Q #
3#FB XWTBWR [DEVICE WAITING TO BE WRONGED
3#^2 CLEARJPS 3 [CLEAR
3*DL JMT 3,XMT [JUMP IF MAGNETIC TAPE
3*Y= DISENGPE 3 [... ELSE DISENGAGE IT
3BCW JEXOTIC 3,XOTIC [BR IF EXOTIC
3BXG SBN 4 10
3CC6 BZE 4 UXZ [BR IF UNIPLEXOR...
3CWQ SBN 4 1
3DBB BZE 4 UXZ [...OR IF MULTIPLEXOR
3DW2 SBN 4 13
3F*L BNZ 4 XALDIS [BR IF NOT IPB
3FHW #SKI IDFMARK8<1$1
3FQ6 YWRONG SGOT,3
3FYB #SKI IDFMARK8
3G6L YWRONG XBRK,SGOT,3 [WRONG IPB IN IDF
3G#W BRN XALDIS
3GSG UXZ
3H2Q #SKI IDFMARK8<1$1
3H92 XWRONG SGOT,3
3HC= #SKI IDFMARK8
3HKG XWRONG XBRK,SGOT,3 [WRONG UX/MX IN IDF
3HRQ XOTIC
3J?B XALDIS
3JR2 XMT
3K=L WRONG 3 [WRONG THE DEVICE
3KB5 JNWTBSW 3,XWRONG
3KB8 ... JENVNOT XMT8,CMESTAR
3KB? ... LDX 6 XJWRONG(1)
3KBB ... GEOPACK 5,JK52C(3),COBBLERS
3KBF ... OUTPACK 5,1,GEOPER
3KBJ ... INFORMX 7,6,1
3KBM ... JMT 3,XMT1
3KBQ ... BRN XMT8
3KBT ...XMT1
3KBY ... STO 3 AWORK1(2)
3KC3 ... LFMTCL 3,5
3KC6 ... STO 5 AWORK2(2)
3KC9 ... LDX 3 5
3KC# ... LNOMTCL 3,5
3KCC ...XMT2
3KCG ... JRIGHT 3,XUP
3KCK ...XMT3
3KCN ... SBN 5 1
3KCR ... BZE 5 XMT4
3KCW ... CALL 6 ZNXTDK
3KC^ ... JANON 3,XMT3
3KD4 ... BRN XMT2
3KD7 ...XMT4
3KD= ... LDX 3 AWORK2(2)
3KD* ... LNOMTCL 3,5
3KDD ...XMT5
3KDH ... SBN 5 1
3KDL ... BZE 5 XMT6
3KDP ... CALL 6 ZNXTDK
3KDS ... CLWTBSW 3
3KDX ... BRN XMT5
3KF2 ...XMT6
3KF5 ... LDX 3 AWORK2(2)
3KF8 ... BRN XMT8
3KF? ...XMT8
3KFJ CLWTBSW 3
3KK3 SWOUT 3,XBRKN,XSWRJ
3KKC ... STOZ 4
3KKR ... JENV XSW,CME,EXCL
3KL7 ... JMT 3,XMT9
3KLH ... BRN XSW
3KLX ...XMT9
3KM? ... ADN 4 1
3KMM ...XSW
3KN3 ... SMO 4
3KNG LDX 6 XJUSWO(1)
3KR^ BRN XOUT
3KXD XSWRJ
3L2X LDX 6 XJSWRJ(1)
3L6B BRN XOUT
3L9W XACTLF [CALLING ACTIVITY IS AN ACTLF
3LPG LONGON #27 [WAKE UP FOR SLOW O/P DEVICE
3M96 BRN XNOMESS [NO MESSAGE FOR SLOW OJP DEVICE
3MNQ XNOP [NOT SLOW OUTPUT DEVICE
3N8B JMT 3,XNOMESS [NO DIS OR MESSAGE FOR MT
3NN2 DISENGPER 3 [DISENGAGE THE DEVICE
3P7L CHECKXOT 3,XNFWOREX [BR IF NOT EXOTIC
3PM= LONGON #30 [WAKE UP FOR EXOTICS
3Q6W BRN XFREE [BR TO TIDY UP - FREE MESSAGE
3QLG XNFWOREX [NOT FLAGWAVER OR EXOTIC
3R66 TXU 4 XCR(1)
3RKQ BCC XSLIP [BR IF CARDREADER
3S5B BNZ 4 XFREE [BR IF NOT TAPEREADER
3SK2 XSLIP [TR OR CR
3T4L LONGON #60 [WAKE UP FOR SLOW INPUT DEVICE
3TJ= XFREE [FREE MESSAGE REQUIRED
3W3W LDX 6 XAZFREE(1) [LOAD MESSAGE IDENTIFIER (FREE)
3WHG BRN XOUT
3X36 XWRONG [WRONGED MESSAGE REQUIRED
3XGQ LDX 6 XJWRONG(1) [WRONGED MESSAGE IDENTIFIER
3Y2B XOUT
3YG2 BNZ 3 SNOUT [USE CPPTR IF LOCAL PERIPHERAL
3Y^L GEOPACK 5 [PACK JSOURCE WORDS
3^F= BRN XINF
3^YW SNOUT
42DG GEOPACK 5,JK52C(3),COBBLERS [PACK G:OG NO
42Y6 XINF
43CQ OUTPACK 5,1,GEOPER [AND OUTPUT PERI DESC
43XB INFORMX 7,6,1 [SEND MESSAGE
44C2 XNOMESS
44WL XUP
45B= LDCH 0 ATYPE(2) [DONT CLEAR JSOURCE WORDS ...
45TW SBN 0 ACTLF/64
46*G BNZ 0 XNJSCE [BR IF NOT ACTLF
46T6 STOZ JSOURCE1(2)
47#Q STOZ JSOURCE2(2) [ZEROISE JSOURCE WORDS
47SB STOZ JSOURCE3(2)
48#2 XNJSCE
48RL STOZ CPPTR(2)
49?= STOZ CPRW1(2) [CLEAR CPPTR, CPRW1,2, AND CPRSW
49QW STOZ CPRW2(2)
4==G STOZ CPRSW(2)
4=Q6 UP [RETURN
4?9Q #
4?PB SGOT
4#92 #
4#NL # THIS LABEL IS USED IF SOME MISERABLE MOGUPPER SNATCHED A UX,MX, OR CC
4*8= # FROM THE IDF BEFORE WE GOT IN TO WRONG IT. THE DEVICE IS MARKED
4*MW # WAITING-TO-BE-WRONGED AND NO MESSAGE IS OUTPUT,THUS CONFUSING THE
4B7G # POOR OLD OPERATOR
4BM6 #
4C6Q SETWTBWR 3 [SET WAITING TO BE WRONGED
4CLB BRN XNJSCE
4D62 #
4DKL REMOTE
4F5= GSCAN JSOURCE1(2),FREEPERR,3
4FJW SAWCE PCT,XPCT [BR IF NOT FROM IPB
4G4G XIPB
4GJ6 LDX 4 JSOURCE1(2)
4H3Q ANDN 4 #7777 [IDENTIFIER IN X4
4HHB CALL 6 XHDCB [HUNT DCB ON X3
4J32 LDX 5 IWAIT(3)
4JGL ANDN 5 #1000 [MASK IN WAITING TO BE WRONGED BIT
4K2= BZE 5 XIPB3 [... AND BR IF NOT SET
4KFW LDCT 5 2
4K^G ORS 5 FOURTHWD-FPTR(2) [MARK DEVICE WRONGED
4LF6 XIPB3
4LYQ # CHECK IF INITIAL BULK OUTPUT HAS FAILED
4MDB LDEX 0 FOURTHWD-FPTR(2)
4MY2 ANDN 0 3
4NCL ERN 0 3
4NX= BNZ 0 XFDV [J IF NOT LP OR TP
4PBW LDCT 0 #20 [CHECK IF DEVICE HAS FAILED
4PWG ANDX 0 ISTATUS(3)
4QB6 BZE 0 XFDV [J IF NOT FAIL
4QTQ LDN 0 #4000
4R*B ORS 0 FOURTHWD-FPTR(2) [SET INITIAL BULK OUTPUT FAIL BIT
4RT2 #
4S#L XFDV
4SS= STOZ A1+BPTR(3) [FREE DEVICE BY ZEROISING BPTR OF
4T?W STOZ 1(2) [THE RING PAIRS
4TRG LDX 4 FOURTHWD-FPTR(2) [B23=1 IF OUTPUT DEVICE
4W?6 ANDN 4 1
4WQQ ERN 4 1 [X4=1 FOR INPUT DEVICE
4X=B BZE 4 XCLOSE [J IF OUTPUT DEVICE
4XQ2 BZE 5 XCLOSE [J IF DEVICE NOT BEING WRONGED
4Y9L CCSTOP IDENTNO(3),IADIN(3) [STOP I/P AND CLEAR ON THIS DEVICE
4YP= CALL 6 XHDCB [HUNT DCB ON Y3
4YQ? XCLOSE
4YR# # IF REQUESTED TO CLOSE THE IDENTIFIER (B18 OF IWAIT)
4YS* # AND IT IS NOT ALREADY CLOSED, SEND CRASH CLOSE
4YTB LDN 0 #40
4YWC ANDX 0 IWAIT(3)
4YXD BZE 0 XFRE [CLOSE IDENTIFIER NOT REQUESTED
4YYF SLL 0 9
4Y^G ANDX 0 FOURTHWD-FPTR(2)
4^2H BNZ 0 XFRE [ALREADY CLOSED
4^3J LDN 6 #0127 [COUNT + SPERVISORY CODE
4^4K SMO FX2
4^5L STO 6 ACOMMUNE1
4^6M CCOUT IDENTNO(3),IADIN(3) [SEND CRASH CLOSE
4^7N CALL 6 XHDCB [HUNT DCB ON X3
4^8W XFRE
4^NG FREECORE 3 [AND FREE IT
5286 XIPB4
52MQ LDX 2 FX2
537B LDN 3 0 [SET X3=0 TO MEAN REMOTE
53M2 BNZ 5 XWRONG [BR TO TIDY UP - WRONG MESSAGE
546L BNZ 4 XFREE [BR TO TIDY UP - FREE MESSAGE
54L= BRN XUP [BR TO TIDY UP - NO MESSAGE
555W #
55KG #
5656 XPCT [PCT DEVICE
56JQ DOWN PCTDIS,1
574B LDX 4 ACOMMUNE1(2) [GET INPUT DEVICE MARKER
57J2 LDX 5 ACOMMUNE2(2) [GET WRONGED MARKER
583L BRN XIPB4
58H= #
592W XHDCB
59GG # SUBROUTINE HUNTS FOR THE AMXOR/ADCB BLOCK, AND GIVES A POINTER
5=26 # TO IT IN X3. ALSO LEAVES, IN X2, A POINTER TO THE ADEVS RING
5=FQ # ELEMENT. LINK IN X6
5=^B HUNTW 3,AMXOR,ADCB
5?F2 BPZ 3 XHD1 [BRANCH IF DCB FOUND, OTHERWISE...
5?YL GEOERR 1,NO DCB
5#D= XHD1
5#XW LDX 2 A1+FPTR(3) [X2= POINTER TO ADEVS RING ELEMENT
5*CG EXIT 6 0
5*X6 #
5*XS ...ZNXTDK
5*YG ...#
5*^8 ...#
5*^W ... LINT 3,4
5B2J ... ADN 4 1
5B3= ... LDX 3 BDTP
5B3Y ... SMO 4
5B4L ... LDX 3 0(3)
5B5# ... EXIT 6 0
5B62 ...#
5B6Y XBRK GEOERR 1,BREAKIN! [BRK-IN ON IDF
5B=T XBRKN GEOERR 1,SWOUTBRK
5BBQ #
5BWB #PAGE
5CB2 MENDAREA 24,K100FREEPER
5CTL #END
^^^^ ...34331276000200000000