LOADERFS867

(George Source)

Macros used: DCA, FINDPEREC, GEOERR, GPERI, JBUSY, JDISENG, JENVNOT, JNCMESH, JNENVX, JWRONG, LGEOG, OFF, SHOPEN, STUBASEX

LOADERFS867.txt
22FL    #BAS  LOADFS,0  
22^=    #OPT  K0LOADERFS=0  
23DW    #SEG  LOADERFS85                   [M.C.D. MANN 
23HF ...#  ######################################################## 
23L4 ...#   
23NM ...#  (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982   
23R= ...#   
23TT ...#  #########################################################
23YG    #LIS  K0LOADER>K0LOADERFS>K0ALLGEO  
24D6    #   
24XQ    #   
25CB    #     THIS SEGMENT IS ENTERED BY LOADERI AT K1LOADERFS  :  IT   
25X2    #     IMPLEMENTS THE "FSLOAD" MACRO BY COPYING THE FILESTORE
26BL    #     AT LOAD TIME  
26W=    #   
27*W    #   
27TG    K1LOADERFS  
28*6          BRN      X2LOADERFS          [MUST BE THE FIRST WD IN THE SEGMENT 
28SQ                   8HLOADERFS   
29#B    #   
29S2    #   
2=?L    #     "ODISC1" AND "ODISC2" ARE "DISC DESCRIPTION AREAS" WHICH  
2=R=    #     ARE SET UP BY THE OSEARCHDISC ROUTINE AND CONTAIN 
2?=W    #     DESCRIPTIONS OF THE BASE AND RECIPIENT FILESTORE EXOFILES 
2?QG    #   
2#=6    #     FORMAT:   BLDISC   :  WORDS 1-17  :  FILE INDEX CELL (FIC)
2#PQ    #               BLADDR   :  WORD  18    :  WORD ADDRESS OF THE FAC  
2*9B    #               BLFAC    :  WORDS 19-23 :  FILE AREA CELL (FAC) 
2*P2    #               BLSER    :  WORD  24    :  CARTRIDGE SERIAL NUMBER  
2B8L    #               BLSTART  :  WORD  25    :  START ADDRESS OF THE UNIT
2BN=    #   
2C7W    #     FOR DETAILS OF FIC AND FAC FORMATS SEE PAGE 183.34 IN 1900 PRM
2CMG    #   
2D76    #   
2DLQ    ODISC1  
2F6B    #GAP  64
2FL2    ODISC2  
2G5L    #GAP  64
2GK=    #   
2H4W    #   
2HJG    #     DATA WORDS AND BUFFER AREAS:  
2J46    #   
2JHQ    #   
2K3B    #ALT  JLFSNAMES=0?+37?  
2KH2                   12HBASESTORE        [DEFAULT "BASE FILE" 
2L2L                   12HDASTORE60        [DEFAULT "RECIPIENT FILE"
2LG=    #ALT  JLCOPY=0?+37? 
2L^W                   -1                  [ZERO IF COPYING FILESTORE   
2MFG    #ALT  JLGENRES=0?+37?   
2M^6                   0                   [-VE IF FORBIDDING GENERAL RESTORE   
2NDQ    #   
2PD2    OSPACES        4H   
2PXL    OTYPECON       #77                 [INTERNAL TYPE OF OPERATOR'S CONSOLE 
2QC=    OLINK          0                   [LINK BACK TO LOADERI
2QWW    OINLINK        0                   [LINK FOR OINCON ROUTINE 
2RBG    OUTLINK        0                   [LINK FOR OUTCON ROUTINE 
2RW6    OPDLINK        0                   [LINK FOR OPERIDISC ROUTINE  
2S*Q    OSLINK         0                   [LINK FOR SEARCHDISC ROUTINE 
2STB    OLGX3          0                   [USED BY OLGEOG  
2T*2    OFIXFLAG       -1                  [ZERO IF WE SHOULD "FIX" DISCS   
2TSL    OFINAME        12H                 [FILENAME FOR SEARCHDISC 
2W#=    ODISCP         +ODISC1             [POINTER TO ODISC1 OR ODISC2 
2WRW    OBLKCYL1       0                   [NO OF BLOCKS/CYL IN BASE FILE   
2X?G    OBLKCYL2       0                   [NO OF BLOCKS/CYL IN RECIPIENT FILE  
2XR6    OBLOCKCOUNT    0                   [NUMBER OF BLOCKS TO BE COPIED   
2Y=Q    OPERIBLOCKS    0                   [SIZE OF COPY PERI IN BLOCKS 
2YQB    OBLOCKS        0                   [NUMBER OF BLOCKS COPIED SO FAR  
2^=2    OLSTART        0                   [USED BY SEARCHDISC  
2^PL    OLBS           0
329=    OLBSUB         0                   [SUB-TYPE OF LAST DISC SEARCHED  
338G    OWDPART        0                   [FOR CONVERSION ROUTINE OCONV
33N6    ONOBPERC       0                   [NO OF BLOCKS/CYL ON DEVICE  
347Q    ODCOUNT        -1                  [SET ZERO WHEN BOTH FILES FOUND OK   
34MB    ODISCA         0,128,+OSCA,0       [MODE/COUNT/CTSA/DTSA FOR READING SCA
3572    ODISCB         0,128,+OSCAFAC,0    [MODE/COUNT/CTSA/DTSA FOR FAC CHAIN  
35LL ...ODISCINCA      0,0,+K19+(13*1024),0 [MODE/COUNT/CTSA/DTSA FOR DISC I/P  
366= ...ODISCOUTCA     1,0,+K19+(13*1024),0 [MODE/COUNT/CTSA/DTSA FOR DISC O/P  
36KW    ODISCIN        0                   [DL POINTER FOR BASE FS DISC 
375G    ODISCOUT       0                   [DL POINTER FOR RECIPIENT FS DISC
37K6    OLAST          #37777777           [LAST FIC WORD AND GENERAL MASK  
384Q    OINBUFF        8H                  [OPERATORS' CONSOLE INPUT BUFFER 
388M ...XSYF        4HSYFL  
38#J ...OOCT8              +8   
38DF ...XSHARE         #4000000 
38JB    #   
3942    #   
39HL    #     PSEUDO-ACTIVITY BLOCK FOR PERIPHERAL TRANSFERS
3=3=    #   
3=GW    #   
3?2G    #REP  CPPTR-CHAINADD+1  
3?G6                   0
3?^Q                                       [DEVICE LIST POINTERS FOR:   
3#FB    #   
3#^2    OPCONDL        0                   [  1)   CENTRAL CONSOLE  
3*DL                   0
3*Y=    ODISCDL        0                   [  2)   ANY DISC DURING TRANSFER 
3BCW                   0
3BXG    #   
3CC6    #   
3CWQ    #     MISCELLANEOUS OPERATOR MESSAGES   
3DBB    #   
3DW2    #   
3F*L    OMCOPY         60,28H^*^*COPYING FILESTORE FROM 
3FT=    ONAME1         12H  
3G#W                   4HTO 
3GSG    ONAME2         12H  
3H#6                   4H^*^*   
3HRQ    OMNOFILE       53,40H^*^*FILENAME              NOT FOUND^*IS
3J?B                   13HIT AVAILABLE? 
3JR2    OCANCEL        8,8H  CANCEL 
3K2S ...ONOTUDAS       23,23H    UNIT 000 NOT UDAS^*
3K=L    OMFIX          18,18H    UNIT 000 FIX^* 
3KQ=    OMFAIL         42,42H   UNIT 000 FAILED : FILESTORE COPY FAILED 
3L9W    OMINCOM        37,37H^*^*FILESTORE COPY FILES INCOMPATIBLE  
3LPG    OMTOOSMALL     50,8H^*^*FILE
3M96    OMTSNAME       12H  
3MNQ                   30H  TOO SMALL FOR FILESTORE COPY
3N8B    OMNOTFULL      33,33H^*^*FILESTORE FILE NOT FULL DEPTH  
3NN2    OMNOCOPY       31,31H^*^*FILESTORE COPY SWITCHED OFF
3P7L    OMGREQUEST     31,31H^*GENERAL RESTORE REQUESTED^*^*
3PM=    OMGRSUPPRES    32,32H^*GENERAL RESTORE SUPPRESSED^*^*   
3Q6W    #SKI  G4                           [G4 ONLY MESSAGE 
3QLG    OMBIGEXEC      38,38HEXECUTIVE TOO LARGE FOR FILESTORE COPY 
3QRN ...OVME            64,32H VME USING FILENAME   
3QYW ...                       32H FILESTORE COPYING ABANDONNED ^*  
3R66    #   
3RKQ    #   
3S5B    #   
3SK2    #   
3T4L    #     MISCELLANEOUS SUBROUTINES 
3TJ=    #   
3W3W    #   
3WHG    #   
3X36    #     SUBROUTINE TO INPUT A MESSAGE FROM THE CONSOLE TO OINBUFF 
3XGQ    #     EXIT 1 - OK ;  EXIT 0 - FAILED
3Y2B    #   
3YG2    OINCON  
3Y^L          STO   0  OINLINK(2)          [SAVE LINK   
3^F=          LDX   4  OSPACES(2)          [SPACEFILL  ...  
3^YW          STO   4  OINBUFF(2)          [       ...  INPUT BUFFER
42DG          STO   4  OINBUFF+1(2) 
42Y6          LDX   3  OPCONDL(2)          [OPERATOR'S CONSOLE DL POINTER   
43CQ          LDN   4  8                   [COUNT   
43XB          DCA      3,STO,4,COUNT
44C2          LDN   4  0                   [READ MODE   
44WL          DCA      3,STO,4,MODE 
45B=          LDN   4  OINBUFF(2)          [ADDRESS OF INPUT BUFFER 
45TW          DCA      3,STO,4,CTSA 
46*G          LDN   1  OPCONDL-CPPTR(2)    [ -> PSEUDO ACTIVITY BLOCK   
46T6          GPERI    3,1,NC              [INITIATE TRANSFER   
47#Q    OIN1  JBUSY    3,OIN1              [WAIT FOR TERMINATION
47JJ ...      LDX   0  CPRW1(1) 
47SB ...      SLL   0  3
4848 ...      BNG   0  OIN2                [J IF FAILED 
48#2          LDX   0  OPCONDL+1(2)        [GET REPLY WORD  
48RL          SLC   0  4
49?=          BPZ   0  OIN3                [J IF INPUT SUCCESSFUL   
49QW          LDN   1  OCANCEL(2)          [REPLY CANCELLED OR TOO LONG 
4==G          CALL  0  OUTCON              [CANCEL MESSAGE TO CONSOLE   
4=Q6    OIN2  LDX   0  OINLINK(2)          [RESTORE LINK
4?9Q          EXIT  0  0                   [EXIT:  FAILED   
4?PB    OIN3  LDX   0  OINLINK(2)          [RESTORE LINK
4#92          EXIT  0  1                   [EXIT:  OK   
4#NL    #   
4*8=    #     SUBROUTINE TO OUTPUT A MESSAGE TO THE OPERATOR'S CONSOLE  
4*MW    #     MESSAGE POINTED TO BY X1 ON ENTRY  -  CALLED VIA X0   
4B7G    #     USES X1, X3 AND X4
4BM6    #   
4C6Q    OUTCON  
4CLB          STO   0  OUTLINK(2)          [SAVE LINK   
4CQ? ...      JENVNOT   NDME,DME
4CW8 ...      CALL   0   STOREDME   
4D25 ...NDME
4D62          LDX   3  OPCONDL(2)          [OPERATOR'S CONSOLE DL POINTER   
4DKL          LDX   4  0(1)                [COUNT   
4F5=          DCA      3,STO,4,COUNT
4FJW          LDN   4  1(1)                [CORE ADDRESS OF MESSAGE 
4G4G          DCA      3,STO,4,CTSA 
4GJ6          LDN   4  1                   [WRITE MODE  
4H3Q          DCA      3,STO,4,MODE 
4HHB          LDN   1  OPCONDL-CPPTR(2)    [ -> PSEUDO ACTIVITY BLOCK   
4J32    TC1   GPERI    3,1,NC              [INITIATE TRANSFER   
4JGL    TC2   JBUSY    3,TC2               [WAIT FOR TERMINATION
4K2=          LDX   4  OPCONDL+1(2)        [GET REPLY WORD  
4KFW          SRL   4  18   
4K^G          BNZ   4  TC1                 [FAILURE...TRY AGAIN 
4LF6          LDX   0  OUTLINK(2)          [RESTORE LINK
4LYQ          EXIT  0  0                   [TRANSFER OK 
4L^5 ...#   
4L^D ...#     ROUTINE TO STORE CONSOLE INPUT & OUTPUT   
4L^R ...#     MESSAGES FOR DME  
4M26 ...#              CALLED VIA X0 ; X1 POINTS TO MESSAGE 
4M2F ...#   
4M2S ...STOREDME
4M37 ...      LDX   4  0(1)                [COUNT IN CHARS  
4M3G ...      BZE   4  SDM9                [NO MESSAGE  
4M3T ...      ADN   4  7                   [ROUND UP & MAKE INCLUSIVE   
4M48 ...      SRL   4  2                   [FOR WORD COUNT  
4M4H ...      LDX   2   G3DOL   
4M4W ...      LDX   5  JMESSTIME(2) 
4M59 ...      BZE   5  SDM3                [NOT A VIRGIN ROUTINE
4M5J ...      STOZ     JMESSTIME(2)         [LOSE IT
4M5X ...      LDX   2  JOPMESS(2)   
4M6= ...      LDX   2  0(2)                [LOOK AT K42 AREA
4M6K ...      BNZ   2  SDM1                [CAME VIA L/A
4M6Y ...      LDX   2  G3DOL
4M7? ...      LDX   5  JPOSMESS(2)          [BUFFER ADDRESS 
4M7L ...      SMO      JOPMESS(2)   
4M7^ ...      STO   5  0                   [NEEDED FOR JOURNAL  
4M8# ...      LDX   2  5
4M8M ...      BRN      SDM4 
4M92 ...SDM2  ADX   2  5                   [MOVE UP BUFFER  
4M9* ...SDM1  LDX   5  0(2)                [VALUE OF COUNT  
4M9N ...      BNZ   5  SDM2                [MORE MESSAGES THERE 
4M=3 ...      SMO      G3DOL
4M=B ...      STO   2  JPOSMESS             [UPDATE BUFFER POINTER  
4M=P ...      BRN      SDM4 
4M?4 ...SDM3  LDX   2  JPOSMESS(2)  
4M?C ...SDM4  STO   4  0(2)                [STORE WORD COUNT
4M?Q ...      LDX   5  2
4M#5 ...      ADN   5  1                   [START OF MESSAGE
4M#D ...      LDN   4  1(1) 
4M#R ...      SMO      0(2) 
4M*6 ...      MOVE  4  0                   [FILL IN BUFFER  
4M*F ...      ADX   2  0(2)                [MOVE UP BUFFER  
4M*S ...      STOZ     0(2) 
4MB7 ...      SMO      G3DOL
4MBG ...      STO   2  JPOSMESS 
4MBT ...      LDX   2  18   
4MC8 ...SDM9  EXIT  0  0
4MDB    #   
4MY2    #   
4NCL    #     S/R TO PLACE GEOGNO IN FIX/FAIL MESSAGE   
4NX=    #           CALLED VIA X0, USES X4 X5   
4PBW    #           EXPECTS X3->DL FOR DEVICE, X1-> MESSAGE 
4PWG    #   
4QB6    OLGEOG  
4QTQ          STO   3  OLGX3(2) 
4R*B          LGEOG    3,5  
4RT2          LDN   4  10   
4S#L          DVS   4  4
4SS=          LDX   3  4
4T?W          LDN   4  10   
4TRG          DVS   4  4
4W?6          BNZ   5  XGG1 
4WQQ          LDN   5  #20  
4X=B          BNZ   4  XGG1 
4XQ2          LDN   4  #20  
4Y9L    XGG1  SLL   5  12   
4YP=          SLL   4  6
4^8W          ORX   5  3
4^NG          LDCT  3  #200 
5286          ORX   3  5
52MQ          ORX   3  4
537B          STO   3  3(1) 
53M2          LDX   3  OLGX3(2) 
546L          EXIT  0  0
54L=    #   
555W    #   
55KG    #   
5656    #     S/R TO PERFORM DISC TRANSFERS 
56JQ    #           CALLED VIA X0   
574B    #           EXPECTS X3 -> RELEVANT DL   
57J2    #                   X1 -> CA WORDS  
583L    #   
58H=    #     FAILURE CONDITIONS:   
592W    #   
59GG    #     1)    DISC OFFLINE ON ENTRY           :  IF OFIXFLAG = 0, PRINT   
5=26    #                                              "FIX" MESSAGE AND WAIT   
5=FQ    #                                              FOR RE-ENGAGEMENT,   
5=^B    #                                              ELSE EXIT 0 0
5?F2    #     2)   DISC FAIL DURING TRANSFER        :  PRINT "FAIL" MESSAGE 
5?YL    #                                              AND EXIT 0 0 
5#D=    #     3)   DISC DISENGAGED DURING TRANSFER  :  PRINT "FIX" MESSAGE AND  
5#XW    #                                              WAIT FOR RE-ENGAGEMENT   
5*CG    #   
5*X6    #     NORMAL EXIT    :    EXIT 0 1  
5BBQ    #   
5BWB    OPERIDISC   
5CB2          STO   0  OPDLINK(2)   
5CTL          STO   3  ODISCDL(2)          [DL PTR TO PSEUDO-ACT.BLK
5D*=          LDX   0  0(1) 
5DSW          DCA      3,STO,0,MODE 
5F#G          LDX   0  1(1) 
5FS6          DCA      3,STO,0,COUNT
5G?Q          LDX   0  2(1) 
5GRB          DCA      3,STO,0,CTSA 
5H?2          LDX   0  3(1) 
5HQL          DCA      3,STO,0,DTSA 
5J==    #   
5JPW    #     READY TO ATTEMPT TRANSFER 
5K9G    #   
5KP6          JDISENG  3,PD7               [J IF THE UNIT ISN'T ENGAGED 
5L8Q    PD1   LDN   1  ODISCDL-CPPTR(2)    [POINT TO PSEUDO-ACT.BLK 
5LNB          GPERI    3,1,NC              [INITIATE TRANSFER   
5M82    PD2   JBUSY    3,PD2               [WAIT FOR TERMINATION
5MCS ...      LDX   0  CPRW1(1) 
5MML ...      SLL   0  3
5MXD ...      BNG   0  PD3                 [TRANSFER FAILURE
5N7=          LDX   0  OPDLINK(2)   
5NLW          EXIT  0  1                   [NORMAL EXIT 
5P6G    PD3   LDX   1  ODISCDL+1(2)        [PICK UP THE REPLY   
5PL6          SRL   1  18   
5Q5Q          BNZ   1  PD6                 [J IF REAL FAILURE   
5QKB    PD4   LDN   1  OMFIX(2)            [IT JUST NEEDS FIXING
5R52          CALL  0  OLGEOG              [SO GET ITS UNIT NUMBER  
5RJL          CALL  0  OUTCON              [AND ASK THE OPERATORS TO FIX IT 
5S4=          LDX   3  ODISCDL(2)          [RESTORE THE DEVICE LIST POINTER 
5SHW    PD5   JDISENG  3,PD5               [WAIT FOR FIX
5T3G          BRN      PD1                 [AND TRY AGAIN   
5TH6    PD6   LDN   1  OMFAIL(2)
5W2Q          CALL  0  OLGEOG              [CONSTRUCT A FAIL MESSAGE
5WGB          CALL  0  OUTCON              [OUTPUT MESSAGE  
5X22          LDX   3  ODISCDL(2)          [RESTORE THE DEVICE LIST POINTER 
5XFL          BRN      PD8                 [EXIT : DISC FAIL SO ABORT COPY  
5X^=    PD7   LDX   0  OFIXFLAG(2)         [THE DISC ISN'T ENGAGED  
5YDW          BZE   0  PD4                 [J IF WE WANT IT FIXED   
5YYG    PD8   LDX   0  OPDLINK(2)          [ELSE JUST LOOKING FOR A FILE
5^D6          EXIT  0  0                   [SO EXIT  :  NOT FOUND   
5^XQ    #   
62CB    #   
62X2    #     S/R TO CONVERT WD-ADDR IN X1 TO HARDWARE ADDRESS IN X0.   
63BL    #           DEVICE SUBTYPE EXPECTED IN OLBSUB.  
63W=    #           NO.BLKS/CYL EXPECTED IN ONOBPERC.   
64*W    #           START CYLNO OF SU EXPECTED IN OLSTART.  
64TG    #           LEAVES WORD PART IN OWDPART.
65*6    #           CALLED VIA X6.  
65SQ    #   
66#B    OCONV LDN   0  0
66S2          SLL   01 17   
67?L          SRL   1  17   
67R=          STO   1  OWDPART(2)   
68=W          LDX   1  0
68B2 ...#   
68F6 ...#     [X1]=HARDWARE BLOCK ADDRESS   
68J= ...#   
68MB ...OCONV2  
68QG          DVS   0  ONOBPERC(2)          [/BLKSPERCYL
69=6    #   
69PQ    #     [X0]=BLKNO & [X1]=CYLNO   
6=9B    #   
6=P2    OCONV1  
6?8L          ADX   1  OLSTART(2)          [+BASE OF SU 
6?N=          SMO      OLBSUB(2)
6#7W          BRN      £                   [BRANCH TO RELEVANT ROUTINE  
6#MG    X   
6*76    #TRA  X+EDS 
6*LQ          BRN      XCEDS
6B6B    #TRA  X+EMDS
6BL2          BRN      XCEMDS   
6C5L ...#TRA  EDS>EMDS+X+1  
6F7W ...XCEDS   
6F?L ...      JNENVX   NOEMU,MEEP,7        [J IF NOT EMULATING  
6FCB ...      LDX   7  1
6FG8 ...      MPA   7  ONOBPERC(2)         [CONVERT BACK TO BLOCKS  
6FK2 ...      LDCT  1  #400 
6FMS ...      ADX   0  1
6FQL ...      EXIT  6  0
6FTD ...NOEMU   
6FY= ...      LDN   7  0
6G3B          SLL   70 21   
6GH2          SLL   7  3
6H2L          SLL   70 3
6HG=          SLL   01 20   
6H^W          SLL   0  2
6JFG          SLL   01 16   
6J^6          ORX   0  7
6KDQ          EXIT  6  0
6RRW    #   
6S?G ...#     EDS30 ADDRESSES.  
6SR6    #   
6TQB    XCEMDS  
6W=2          SLL   0  12   
6WPL          SRC   01 12   
6X9=          EXIT  6  0
6XNW    #   
6Y8G    #   
6YN6    #     S/R TO SEARCH SPECIFIED DISC (BY DL) FOR GIVEN FILE   
6^7Q    #           EXPECTS X3-> DL FOR A DISC, OLBSUB TO CONTAIN SUBTYPE OF
6^MB    #           DISC &  OFINAME TO CONTAIN NAME OF FILE TO BE FOUND.
7272    #           CALLED VIA X0. ON RETURN X3-> DL STILL. 
72LL    #           EXITS 0 IF FILE NOT FOUND ELSE EXITS 1 HAVING SET   
736=    #           X1->FAC FOR THE FILE, & HAVING FILLED IN BLDISC, BLADDR,
73KW    #              BLSER, & BLSTART IN AREA POINTED TO BY ODISCP(2) 
745G    #   
74K6    #   
754Q    OSEARCHDISC 
75JB          STO   0  OSLINK(2)           [SAVE THE LINK   
7642          LDN   4  0                   [SU 0
76HL          LDX   7  OLBSUB(2)           [SUBTYPE OF DISC TO BE SEARCHED  
773=          STUBASEX 4,6,7               [GET BASE OF SU(4)   
77GW          STO   6  OLSTART(2)          [SAVE THE BASE FOR USE BY OCONV  
782G          SMO      ODISCP(2)
78G6          STO   6  BLSTART             [AND FOR YER ACTUAL COPY 
78^Q          LDN   1  0                   [CYLNO 0 AND 
79FB          LDN   0  1                   [BLKNO 1 FOR THE SYSTEM CONTROL AREA 
79^2          CALL  6  OCONV1              [CONVERT IT TO A HARDWARE ADDRESS
7=DL          LDN   1  ODISCA(2)
7=Y=          STO   0  3(1)                [DTSA FOR READING THE SCA
7?CW          STOZ     0(1)                [SET READ MODE   
7?XG          CALL  0  OPERIDISC           [AND READ THE SYSTEM CONTROL AREA
7?YN ...      BRN       SDINOPFL
7?^? ...      LDX   0   OSCA+1(2)           [ CHECK THAT DISC IS UDAS   
7?^W ...
7#34 ...      BZE   0   SN61
7#4= ...      LDN   1   OSCA(2) 
7#5D ...      SUM   0   128                 [ CHECKSUM  
7#6L ...      BNZ   0   XERR2   
7#7S ...SN61  LDX   0   OSCA+21(2)  
7#92 ...      TXU   0   XSYF(2)                [ SYFLE? 
7#=8 ...      BCS       XERR2   
7#?B ...      LDN   0   0   
7##J ...      LDN   6   6   
7#*Q ...      LDCT  1   #400
7#BY ...      ORN   1   OSCA+22(2)  
7#D6 ...SN62  LDCH  5   0(1)                [ CSN WITH SYFLE =  
7#F# ...      TXL   5   OOCT8(2)
7#GG ...      BCC       XERR2               [ CSN IN SCA+5  ?   
7#HN ...      SLL   0   3   
7#JW ...      ADX   0   5   
7#L4 ...      BCHX  1   £   
7#M= ...      BCT   6   SN62
7#ND ...      LDX   6   OSCA+5(2)   
7#PL ...      SLL   6   6   
7#QS ...      SRL   6   6   
7#S2 ...      TXU   0   6   
7#T8 ...      BCS       XERR2   
7#WQ          LDX   0  OSCA+13(2)          [GET NUMBER OF BLOCKS PER CYLINDER   
7*BB          STO   0  ONOBPERC(2)  
7*W2          LDX   0  OSCA+5(2)           [PICK UP THE INIT'S SERIAL NUMBER
7B*L          SLL   0  6
7BT=          SRL   0  6                   [ISOLATE IT  
7C#W          SMO      ODISCP(2)
7CSG          STO   0  BLSER               [AND STORE IN ODISC1 OR ODISC2   
7D#6          LDN   1  OSCA+19(2)          [FIRST FIC   
7DRQ          LDN   5  147                 [BS ADDR OF IT, BLK 1 WD 19  
7F?B    #   
7FR2    SD5   LDX   4  0(1) 
7G=L          BNG   4  SDNO                [LAST CELL JUST GONE 
7GQ=    SD1   LDX   0  2(1) 
7H9W          LDX   6  3(1) 
7HPG          LDX   7  4(1)                [GET THE FILENAME FROM FIC   
7J96          TXU   0  OFINAME(2)   
7JNQ          TXU   6  OFINAME+1(2) 
7K8B          TXU   7  OFINAME+2(2)        [AND COMPARE WITH THAT REQUIRED  
7KN2          BCC      SD3                 [THIS IS IT  
7L7L    SD6   TXU   4  OLAST(2) 
7LM=          BCC      SDNO                [LAST CELL   
7M6W          BNZ   4  SD4                 [NEXT CELL IN DIFFERENT BLOCK
7MLG          ADN   1  17                  [UPDATE CORE AND 
7N66          ADN   5  17                  [BS ADDRESSES
7NKQ          BRN      SD5                 [TRY AGAIN   
7P5B    #   
7PK2    SD4   STO   4  1                   [X1=PTR TO NEXT FIC FOR OCONV
7Q4L          STO   4  5                   [DESTINED FOR BLADDR 
7QJ=          CALL  6  OCONV               [GET HARDWARE ADDRESS OF THE FIC 
7R3W          LDN   1  ODISCB(2)
7RHG          STO   0  3(1)                [STORE THE DTSA  
7S36          STOZ     0(1)                [SET READ MODE   
7SGQ          CALL  0  OPERIDISC           [GET THE NEXT FILE INDEX CELL
7T2B          BRN      SDINOPFL            [INOP/FAIL SO NOT FOUND  
7TG2          SMO      OWDPART(2)   
7T^L          LDN   1  OSCAFAC(2)          [POINT TO IT IN CORE 
7WF=          BRN      SD5                 [AND HAVE A LOOK AT IT   
7WYW    #   
7XDG    SD3   LDX   0  6(1)                [WE'VE FOUND THE REQUIRED FIC
7XY6          SRL   0  12   
7YCQ          BNZ   0  SD6                 [MUST HAVE GENNO=0   
7YXB          SMO      ODISCP(2)
7^C2          LDN   2  BLDISC   
7^WL          MOVE  1  17                  [MOVE FIC TO ODISC1 OR ODISC2
82B=          LDX   2  18   
82TW          SMO      ODISCP(2)
83*G          STO   5  BLADDR              [WORD ADDRESS OF FAC 
83T6          LDX   1  1(1)                [WORD ADDRESS OF FAC 
84#Q          CALL  6  OCONV               [HA ADDR -> X0   
84SB          LDN   1  ODISCB(2)
85#2          STO   0  3(1)                [STORE THE DTSA  
85RL          STOZ     0(1)                [SET READ MODE   
86?=          CALL  0  OPERIDISC           [READ DOWN BLOCK CONTAINING THE FAC  
86QW          BRN      SDINOPFL            [INOP/FAIL SO NOT FOUND  
87=G          SMO      OWDPART(2)   
87Q6          LDN   0  OSCAFAC(2)   
889Q          SMO      ODISCP(2)
88PB          LDN   1  BLFAC
8992          LDX   6  3(1)                [GET SERIAL NUMBER OF FA UNIT AND
89NL          SLL   6  6
8=8=          SRL   6  6
8=MW          BZE   6  SD7  
8?7G          SMO      ODISCP(2)           [COMPARE IT WITH THAT OF HOME UNIT   
8?M6          TXU   6  BLSER
8#6Q          BCS      SDNO                [IT'S ON ANOTHER UNIT SO IGNORE IT   
8#LB    SD7 
8*62          MOVE  0  5                   [MOVE THE FAC TO ODISC1 OR ODISC2
8*6? ...#   THIS CODE IS FOR THE FULL   
8*6J ...#    IMPLEMENTATION OF SHARE
8*6T ...      JENVNOT       NCME,CME
8*7N ...      JNCMESH       3,NCME  
8*85 ...#   THE BRN  SHOULD BE REMOVED  
8*8G ...#   WHEN (IF) FULL SHARE IS IMPLEMENTED 
8*8X ...      BRN      NCME 
8*9B ...      LDX   0   XSHARE(2)   
8*=9 ...      LDN   1   ODISCP(2)   
8*?4 ...      ADX   0   BLSER(1)
8*?X ...      LDX   1   BLADDR(1)   
8*#Q ...      SHOPEN      ,,XFAIL   
8**K ...      BRN       NCME
8*BD ...XFAIL  LDN   6   OVME+5(2)  
8*C? ...      LDN   5   OFINAME(2)  
8*D6 ...      MOVE  5   3   
8*D^ ...      LDN   1   OVME
8*FS ...      CALL  0   OUTCON  
8*GM ...      BRN       OGRFORCE
8*HG ...NCME SMO       ODISCP(2)
8*J* ...      LDN   1   BLFAC   
8*KL          LDX   0  OSLINK(2)
8B5=          EXIT  0  1                   [FILE FOUND!!
8B8B ...XERR2 LDN   1   ONOTUDAS(2)         [ FILE NOT UDAS 
8B?G ...      CALL   0   OLGEOG 
8BBL ...      CALL   0   OUTCON 
8BFQ ...      LDX   3   ODISCDL(2)  
8BJW    #   
8C4G    SDINOPFL
8CJ6    SDNO  LDX   0  OSLINK(2)
8D3Q          EXIT  0  0                   [FILE NOT FOUND...OUR COMMISERATIONS 
8DHB    #   
8F32    #   
8FGL    #     MAIN ENTRY POINT TO LOADERFS  :  THIS IS WHERE THE ACTION IS  
8G2=    #   
8GFW    #   
8G^G    X2LOADERFS  
8HF6    #   
8HYQ          CALL  2  £                   [DATUMISE THIS SEGMENT   
8JDB          SBN   2  X2LOADERFS+1 
8JY2          STO   2  18                  [AND SAVE BASE CORE DATUM IN WORD 18 
8KCL          STO   7  OLINK(2)            [SAVE THE LINK BACK TO LOADERI   
8KX=          FINDPEREC 1,APFOTY,OTYPECON(2),XCON [SEARCH FOR A CENTRAL CONSOLE 
8LBW          BPZ   1  XCONFOUND           [J IF A CONSOLE IS AVAILABLE 
8LWG          GEOERR   1,LOADNOCN          [DON'T BELEIVE IT!   
8MB6    XCONFOUND   
8MTQ          JWRONG   1,XCON              [IF CONSOLE WRONGED, TRY THE NEXT ONE
8N*B          STO   1  OPCONDL(2)          [SAVE CONSOLE'S DEVICE LIST POINTER  
8NT2          LDX   0  JLCOPY(2)           [ARE WE COPYING THE FILESTORE?   
8P#L          BNG   0  ONOFSCOPY           [J IF NOT
8PS=          ADS   2  ODISCA+2(2)         [DATUMISE POINTERS TO THE DISC   
8Q?W          ADS   2  ODISCB+2(2)         [  CONTROL AREAS TO READ FAC + FIC   
8QRG          ADS   2  ODISCP(2)           [AND THE POINTER TO FIRST FIC AREA   
8R?6    S1    LDN   6  JLFSNAMES(2) 
8RQQ          LDN   7  OFINAME(2)          [SEARCH FOR THE BASE FILESTORE FILE  
8S=B          MOVE  6  3
8SQ2    S2    LDN   0  6
8T9L          STO   0  OLBS(2)  
8TP=          LDN   0  EDS  
8W8W          STO   0  OLBSUB(2)
8WNG    S3    FINDPEREC 3,APFOTY,OLBS(2),S4 [LOOK FOR AN ONLINE DISC
8X86          BNG   3  S7                  [J IF NO MORE DISCS OF THIS TYPE 
944B    S6    CALL  0  OSEARCHDISC         [LOOK FOR THE FILE ON THIS DISC  
94J2          BRN      S4                  [THE FILE ISN'T THERE: LOOK ELSEWHERE
953L          BRN      OFOUND              [J IF FOUND ON THIS DISC 
95H=    S7    LDX   0  OLBS(2)  
962W          SBN   0  6
98YL          BNZ   0  S9                  [J IF NOT FOUND ANYWHERE 
99D=          LDN   0  26   
99XW          STO   0  OLBS(2)  
9=CG          LDN   0  EMDS 
9=X6          STO   0  OLBSUB(2)
9?BQ          BRN      S3                  [TRY EDS30 AND EDS60 
9?WB    S9    LDN   6  OFINAME(2)          [FILE NOT FOUND ANYWHERE 
9#B2          LDN   7  OMNOFILE+4(2)
9#TL          BCHX  7  £
9**=          MVCH  6  12                  [SO PUT THE FILENAME IN THE MESSAGE  
9*SW    S10   LDN   1  OMNOFILE(2)         [AND ASK THE OPERATORS   
9B#G          CALL  0  OUTCON              [IF IT'S AVAILABLE   
9BS6          CALL  0  OINCON              [GET THEIR REPLY 
9C?Q          BRN      S10                 [J IF REPLY CANCELLED OR FAILED  
9CRB          LDCH  7  OINBUFF(2)          [PICK UP FIRST CHARACTER OF REPLY
9D?2          SBN   7  #56  
9DQL          BZE   7  OGRFORCE            [REPLY "N" SO FORCE A GENERAL RESTORE
9F==          SBN   7  #71-#56  
9FPW          BNZ   7  S10                 [J IF REPLY NOT "Y" - ASK AGAIN! 
9G9G          LDX   7  ODCOUNT(2)   
9GP6          BZE   7  S11                 [LOOK AGAIN FOR THE SECOND FILE  
9H8Q          BRN      S2                  [LOOK AGAIN FOR THE FIRST FILE   
9HNB    OFOUND  
9J82          LDX   7  ODCOUNT(2)   
9JML          BZE   7  OFOUND2             [J IF BOTH FILES FOUND OK
9K7=          STO   3  ODISCIN(2)          [SAVE DL POINTER FOR FIRST FS DISC   
9KLW          LDX   7  ONOBPERC(2)         [REMEMBER NUMBER OF BLOCKS PER   
9L6G          STO   7  OBLKCYL1(2)         [CYLINDER ON THIS DEVICE 
9LL6          STOZ     ODCOUNT(2)          [SET FLAG TO SEARCH FOR SECOND FILE  
9M5Q    S11   LDN   6  JLFSNAMES+3(2)   
9MKB          LDN   7  OFINAME(2)          [SET SECOND DISC FILE NAME   
9N52          MOVE  6  3
9NJL          LDN   7  ODISC2(2)           [SET FIC AREA POINTER
9P4=          STO   7  ODISCP(2)
9PHW          BRN      S2                  [AND SEARCH FOR THE SECOND FILE  
9Q3G    ONOFSCOPY   
9QH6          LDN   1  OMNOCOPY(2)         [PRINT "FS COPY SWITCHED OFF"
9R2Q          CALL  0  OUTCON              [MESSAGE ON THE OPERATORS' CONSOLE   
9RGB          LDX   7  JLGENRES(2)         [IS A GENERAL RESTORE BEING FORCED?  
9S22          BNG   7  ONOGENRES           [J IF NOT AND SUPPRESS A GEN RES 
9SFL    #   
9S^=          BRN      OGRFORCE            [OTHERWISE FORCE A GENERAL RESTORE   
9TDW    #   
9TYG    #   
9WD6    OFOUND2 
9WXQ          STO   3  ODISCOUT(2)         [SAVE DL POINTER FOR 2ND FS DISC 
9XCB          LDX   7  ONOBPERC(2)         [REMEMBER NUMBER OF BLOCKS PER   
9XX2          STO   7  OBLKCYL2(2)         [CYLINDER ON THIS DEVICE 
9YBL          TXU   7  OBLKCYL1(2)         [ARE THE TWO FILES COMPATIBLE?   
9YW=          BCC      OSTARTCOPY          [J IF THEY ARE (EQUAL BLOCKS/CYLINDER
9^*W          LDN   1  OMINCOM(2)          [PRINT "FILES INCOMPATIBLE"  
9^TG          CALL  0  OUTCON              [MESSAGE ON THE OPERATORS' CONSOLE   
=2*6          BRN      OGRFORCE            [AND FORCE A GENERAL RESTORE 
=2SQ    #   
=3#B    #   
=3S2    #ALT  K9LOADERFS=0?+37?            [MEND AREA   
=4?L    #GAP  100   
=4R=    #   
=5=W    #   
=5QG    #END
^^^^ ...415271750001
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1