{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: USERTYPE83)}}
====== USERTYPE83 ======
(George Source)
**Macros used:** [[george:macro:BXE|BXE]], [[george:macro:BXU|BXU]], [[george:macro:FREEBAX|FREEBAX]], [[george:macro:GEOERR|GEOERR]], [[george:macro:HUNTW|HUNTW]], [[george:macro:JBS|JBS]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MFREEW|MFREEW]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:P|P]], [[george:macro:READ|READ]], [[george:macro:SARAH|SARAH]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETMODE|SETMODE]], [[george:macro:SETREP2|SETREP2]], [[george:macro:TRACE|TRACE]], [[george:macro:UP|UP]], [[george:macro:UPPLUS|UPPLUS]], [[george:macro:VFREEBAX|VFREEBAX]]
22FL ... SEG USERTYPE,83,MIKE PUTNAM,USEROPES
22^= [
23DW [
23YG SEGENTRY K1USERTYPE,WRIT
24D6 SEGENTRY K2USERTYPE,READ
24XQ [
25CB [
25X2 # USERTYPE CHECKS THAT THE PERIPHERAL TYPE MODE WORD OF A FILE (AS G
26BL [ IN A FILE/ENT BLOCK IS SUCH THAT THE FILE CAN BE USED FOR A PERIPH
26W= [ TYPE/MODE AS SPECIFIED IN A FILE/CREATE BLOCK. THE REPLY PERITYPE
27*W [ GIVEN WHEN FILE TYPES CLASH AND THE REPLY PERIMODE IS GIVEN
27TG [ WHEN FILE MODES CLASH. FILE TYPES FOR MK7+ ARE:
28*6 [ BASIC (#400...)
28SQ [ *MT (#405...)
29#B [ *DA (#406..., #411..., #415...)
29S2 [
2=?L [ BUT MK7- FILES MIGHT BE AROUND. SO A GOOD DEAL OF PRESENT
2=R= [ CODE CONCERNS THEM. FILE TYPES (#400... TO #404...)
2?=W [
2?QG [ THIS TABLE COULD BE COMPRESSED TO ONE QUARTER BUT REQUIRES THOUGHT ON
2#=6 [ HOW TO MAKE IT COMPREHENSIBLE AND CHANGEABLE
2#PQ [ ANOTHER PROBLEM IS COPYING DIRECTORIES. CETM DOES NOT DISTIN-
2*9B [ GUISH BETWEEN DIR & *FH; WE DO NOT WANT TO APPEND (COPY OF) DIR TO
2*P2 [ A TERMINAL FILE BECAUSE OF RECHDR DIFFERENCES. WE DO NOT ALLOW
2B8L [ COPY TO SET UP A F/CREATE BLK WITH BITS DISTINGUISHING DIRS
2BN= [ BECAUSE IN THE CREATE(MODE)/NOFILE(REPLY) CASE WE GO DIRECTLY
2C7W [ TO USERCREA & BY-PASS USERTYPE.
2CMG [ MARK8+ MEASURE IS TO HAVE ASSIGN SET UP CETM FOR *FH AS :
2D76 [
2DLQ [ *FR (#462...)
2F6B [ *FW (#463...)
2FB8 ...[ *FH (#464...)
2FL2 [
2G5L [ USEROPEN AND USERCREA WILL ZEROIZE CETM IN THESE CASES.
2GK= [ USERTYPE,MEANWHILE, ALLOWS [CETM] = 0 TO APPEND TO FILES
2H4W ...[ WITH [CETM] = 0 ONLY AND IT ALLOWS #462,#463,#464 TO ACCESS
2HJG [ ANY SERIAL FILE WHATSOEVER
2J46 [
2JHQ T0 #40000000
2K3B T3
2KH2 T4
2L2L #40300000
2LG= #40400000
2L^W T2
2MFG #40200000
2M^6 T1
2NDQ #40100000
2NYB #40000000
2PD2 T5
2PXL #40500000
2QC= T6
2QWW T13
2RBG #40600000
2RW6 #41500000
2S*Q T9
2STB #41100000
2T*2 #DEF T=T0-1
2TSL TABLE
2W#= [ CHARACTER N GIVES THE START IN THE ABOVE TABLE OF THE GROUP OF
2WRW [ PERMISSIBLE PTMS FOR FILES IF DESIRED TYPE (IN CREATE BLOCK) IS N
2X?G [ MARK7 PREVENTS *TP WRITING TO TP FILE FRIG 2ND CHAR= T0
2XR6 SARAH T0,T0,T2,T3,T
2Y=Q SARAH T4,T5,T6,T,T
2YQB SARAH T,T9,T,T,T
2^=2 SARAH T,T13,T,T,T
2^PL TABLEN
329= [ NO. OF ALLOWED PTMS IF FILE IS BEING READ
32NW #05010105
338G #02010200
33N6 #00010000
347Q #00020000
34MB TABLEN2
3572 [ NO. OF ALLOWED PTMS IF FILE IS BEING WRITTEN
35LL #01010102
366= #02010200
36KW #00010000
375G #00020000
37K6 [
384Q [
38JB WRIT
3942 [
39HL [ THIS PART SEES TO IT THAT AMORPHOUS FILES CAN BE APPENDED
3=3= [ TO BY AMORPHOUS NEW DATA AND THAT *FH CAN ACCESS ANY SERIAL
3=GW [
3?2G MHUNTW 3,FILE,CREATE
3?G6 LDX 2 CETM(3)
3?^Q BZE 2 MORPHOUS [J IF SETTING UP AMORPHOUS DATA
3#FB LDX 4 2
3#^2 SRL 4 15
3*DL SBN 4 #462
3*Y= BZE 4 YHANDLER [J IF *FR
3BCW SBN 4 1
3BMN ... BZE 4 YHANDLER [J IF *FW
3BXG ... SBN 4 1
3C7# ... BNZ 4 TC1 [J IF NOT *FH
3CC6 YHANDLER
3CWQ MHUNTW 3,FILE,ENT
3DBB JBS TX,3,BESERIAL [J IF SERIAL
3DW2 [ CETM = 0 & FILE EXISTS. THEN FILE MUST BE SERIAL (FOR *FH)
3F*L #SKI K6USEROPEN>99-99
3FT= TRACE EINF1(3),USERNSER
3G#W BRN XR [ENTRANT NOT A SERIAL FILE
3GSG MORPHOUS
3H#6 LDCT 0 #100
3HRQ LDX 1 FX2
3J?B ANDX 0 AWORK3(1)
3JR2 BNZ 0 YHANDLER [J IF WAS ORIGINALLY AN *FH
3K=L SETMODE 0,MULTEL
3KQ= ANDX 0 AWORK4(1)
3L9W BNZ 0 YHANDLER [CETM CHECK ALREADY MADE WITH MDF
3LPG MHUNTW 1,FILE,ENT
3M96 LDX 0 ETM(1)
3MNQ BZE 0 TY [J IF AMORPHOUS FILE
3N8B BRN XR
3NN2 TC1
3P7L #SKI K6USEROPEN>699-699
3PM= TRACE 2,USERCETM
3Q6W BPZ 2 TYPERONG
3QLG LDCT 0 #17 [GEORGE ERROR IF PERIPHERAL TYPE IS
3R66 [ [GREATER THAN 15
3RKQ ANDS 0 2
3S5B BZE 2 TMODE [J IF *TR - LIKE FILE
3SK2 SLC 2 7 [MAKE INTO CHAR POINTER FOR TABLES
3T4L ADX 2 FX1
3TJ= LDN 0 #7000
3W3W ANDX 0 5
3WHG SBN 0 #3000
3X36 BNG 0 TC10 [J IF INPUT MODE
3XGQ [
3Y2B [ LOAD NO.OF ALLOWED PTMS FOR WRITING TO THIS FILE
3YG2 LDCH 4 TABLEN2(2)
3Y^L BRN TC11
3^F= [
3^YW [ LOAD NO.OF ALLOWED PTMS FOR READING THIS FILE
42DG TC9
42Y6 ADX 2 FX1
43CQ TC10
43XB LDCH 4 TABLEN(2)
44C2 [
44WL [ LOAD START ADDRESS REL.TO START OF TABLE T FOR THIS FILE TYPE
45B= TC11
45TW LDCH 2 TABLE(2)
46*G #SKI K6USEROPEN
46T6 (
47#Q BNZ 2 S1
47SB GEOERR 1,TYPE
48#2 S1
48RL )
49?= MHUNTW 3,FILE,ENT
49QW ADX 2 FX1
4==G LDCT 0 #777
4=Q6 ANDX 0 ETM(3)
4?9Q [ IS THIS FILE TYPE IN THE LIST OF PERMITTED TYPES?
4?PB TM
4#92 BXE 0 T(2),TX
4#NL ADN 2 1
4*8= BCT 4 TM [J IF MORE TYPES PERMITTED
4*MW #SKI K6USEROPEN>99-99
4B7G TRACE ETM(3),USERXETM
4BM6 XR
4C6Q MFREEW FILE,ENT
4CLB MFREEW FILE,CREATE
4D62 VFREEBAX [MAY AS WELL FREE BS HERE
4DKL SETREP2 PERITYPE
4F5= UP
4FJW TX
4G4G #SKI
4GJ6 (
4H3Q HUNTW 1,BSTB,FULLB
4HHB BNG 1 TY
4J32 FREEBAX
4JGL MFREEW BSTB,EMPTYB [FREE BS FOR FILE,SINCE FILE EXISTS.
4K2= )
4KFW TY
4K^G UPPLUS 1
4LF6 TYPERONG
4LYQ GEOERR 1,TYPEMODE
4MDB [
4MY2 [
4NCL [ THIS SECTION IS MARK7 CHECK ON MODES. *TR WRITES ONLY TO TR FILES
4NX= TMODE
4PBW LDN 6 #7000
4PWG ANDX 6 5 [GET MAIN USEROPEN MODE
4QB6 SBN 6 #3000
4QTQ BNG 6 TC9 [J IF READING
4R*B LDEX 6 CETM(3) [GET MODE OF NEW RECORD
4RT2 MHUNTW 3,FILE,ENT
4S#L LDCT 0 #17
4SS= ANDX 0 ETM(3)
4T?W BNZ 0 XR [IF TYPE NOT *TR, ERROR
4TRG LDEX 0 ETM(3) [GET EXISTING FILE MODE
4W?6 SBX 0 6 [IF MODES COMPATIBLE, GO HOME
4WQQ BZE 0 TX
4X=B MFREEW FILE,ENT [OTHERWISE MODE ERROR
4XQ2 MFREEW FILE,CREATE
4Y9L HUNTW 1,BSTB,FULLB
4YP= BNG 1 XOUT
4^8W FREEBAX
4^NG MFREEW BSTB,EMPTYB
5286 XOUT
52MQ SETREP2 PERIMODE
537B UP
53M2 [
546L [
54L= [
555W # THIS SECTION CHECKS T/M FOR LISTFILE
55KG [ N.B. MT PLACE IN P AND M TABLES IS FOR MONITORING FILES
5656 P [PTR TO START OF PERIPH TYPES TABLE
56JQ #01010403
574B #03040000
57J2 N [ TABLE OF NUMBER OF TYPES
583L #03030304
58H= #04020000
592W TN1
59GG [ TABLE OF PERMISSIBLE PERIPHERAL TYPES.
5=26 #00000000 [MON FILE FOR TAPE FILES
5=FQ #02000000 [LP FOR TAPE FILES
5=^B #01000000
5?F2 #00000000 [MON FILE
5?YL #02000000
5#D= #04000000
5#XW [
5*CG [
5*X6 READ
5BBQ MHUNTW 1,FILE,ENT
5BWB LDCT 2 #477
5CB2 ANDX 2 ETM(1) [FILE TYPE
5CTL ... LDCT 7 #40 [MULTIFILE BITS
5D*= ANDX 7 EINF1(1)
5DSW MHUNTW 1,GOUT,INFO
5F#G BZE 2 OKTYPE
5FS6 LDCT 0 #77
5G?Q ANDX 0 2
5GRB SLC 0 9
5H?2 SBN 0 5 [ERROR IF TYPE > 4
5HQL BPZ 0 XT
5J== BRN OKTYPE
5JPW OLDTYPE
5K9G SRC 2 2 [CHAR PTR.
5KP6 ADX 2 FX1
5L8Q LDCH 3 P(2) [POINTER REL.TO START OF PERIPHERAL
5LNB [ TYPES TABLE TN1
5M82 BZE 3 XT
5MML LDCH 6 N(2) [NUMBER OF ALLOWABLE TYPES
5N7= NEX
5NLW SMO FX1
5P6G LDX 4 TN1-1(3) [PICK UP NEXT PERMISSIBLE TYPE
5PL6 LDCT 0 #770
5Q5Q ANDX 0 GOPTY(1) [TEST TOP CHAR ONLY
5QKB BXU 4 0,TNX [J IF NOT THE TYPE OF O/P DEVICE REQD
5R52 OKTYPE
5RJL BZE 7 OKNOST [J UNLESS A MULTIFILE.
5S4= [ TYPE OK,BUT CHECK FROM AND OR LINES NOT GIVEN FOR MULTIFILE.
5SHW LDX 0 GFLI(1) [FROM
5T3G ORX 0 GNLI(1) [ & LINES
5TH6 BZE 0 OKNOST [ NOT ALLOWED WIT MULTIFS
5W2Q MFREEW FILE,ENT
5WGB SETREP2 FRLINE
5X22 UP
5XFL OKNOST
5X^= UPPLUS 1 [OK
5YDW TNX
5YYG ADN 3 1
5^D6 BCT 6 NEX
5^XQ BRN XT
62CB XT MFREEW FILE,ENT
62X2 SETREP2 LISTTYPE
63BL UP
63W= [
64*W [
64TG [ GAP FOR USEROPEN'S SAKE
65*6 ... MENDAREA 150,K99USERTYPE
66#B #END
^^^^ ...42263303001000000000