USERTYPE83

(George Source)

Macros used: BXE, BXU, FREEBAX, GEOERR, HUNTW, JBS, MENDAREA, MFREEW, MHUNTW, P, READ, SARAH, SEG, SEGENTRY, SETMODE, SETREP2, TRACE, UP, UPPLUS, VFREEBAX

USERTYPE83.txt
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