{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: LOADERMT867)}}
====== LOADERMT867 ======
(George Source)
**Macros used:** [[george:macro:DCA|DCA]], [[george:macro:DISENGPER|DISENGPER]], [[george:macro:FINDPEREC|FINDPEREC]], [[george:macro:GELL|GELL]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GPERI|GPERI]], [[george:macro:JBUSY|JBUSY]], [[george:macro:JDISENG|JDISENG]], [[george:macro:JENV|JENV]], [[george:macro:JENVNOT|JENVNOT]], [[george:macro:JWRONG|JWRONG]], [[george:macro:LGEOG|LGEOG]], [[george:macro:LTYPE|LTYPE]], [[george:macro:OR|OR]], [[george:macro:RESET|RESET]], [[george:macro:SMODE|SMODE]]
23DW #SKI AGONY
23YG #BASE MTLOADER 0
24XQ #
25CB ...#SEG LOADERMT86 [M. DRUKKER
25F^ ...# ########################################################
25JJ ...#
25M7 ...# (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982
25PQ ...#
25S* ...# #########################################################
25X2 #LIS K0LOADERMT>K0LOADER>K0ALLGEO
26BL #
26W= #
27*W # BASICALLY THE MT LOADER/ALLOCATOR CONSISTS OF A
27TG # COMMAND-EXECUTE-COMMAND LOOP.
28*6 #
28SQ # FACILITIES ARE AVAILABLE FOR:
29#B #
29S2 # 1 ALLOCATING FILES ON EDS, EDS30, FDS, HSD & SLOW DRUM.
2=?L # 2 DELETING FILES ON HSD OR SLOW DRUM.
2=R= # 3 CLEARING DRUM SYSTEMS OF EITHER TYPE.
2?=W # 4 DESCRIBING FILESTORE RESIDENCES, GIVING THE
2?QG # SAME EFFECT AS THE FSFILE GIN MACRO.
2#=6 # 5 ACCEPTING INPUT COMMANDS FROM T/R & C/R AS
2#PQ # WELL AS CONSOLE.
2*9B # 6 LOADING GEORGE FROM MT TO ANY BS FILE.
2*P2 #
2B8L # WHEN A COMMAND IS ISSUED TO PERFORM NO.6 THE
2BN= # LOADER/ALLOCATOR TRANSFERS GEORGE FROM THE MT
2C7W # FROM WHICH WE CAME TO THE NAMED BS FILE, BRINGS
2CMG # DOWN THE NORMAL LOADER & THEN LEAVING CORE LOOKING
2D76 # AS IF GELL HAD LOADED LOADER, ENTERS IT
2DLQ #
2FL2 #
2G5L # *** DATA AREAS ***
2GK= #
2H4W ...XCOPRICL 20H (C) COPR ICL 1982
2J46 TYPCON #77
2JHQ SPACES 4H
2K3B #
2KH2 # CONTROL AREAS FOR MT
2L2L #
2LG= MTBSP +3,+0,+0
2L^W MTREV +6,+0,+0
2MFG #
2M^6 JLTRAP
2NDQ TRAPFAIL +0 [-VE -> TRAPS
2NYB JLFAIL
2PD2 MTFAILMK -1 [ZEROISED ON TAPE FAIL
2PXL SLOWIN +0 [=1 IF SLOW INPUT, C/R OR T/R
2QC= SUBLINK +0
2QWW XGNUMLK +0 [FOR JLGETNUM
2RBG JLGOTIT +0 [RESULT FROM JLGETNUM
2RW6 PTSMO +0 [FOR JLPOINT
2S*Q RFIF +FSTABLEN*5
2STB THISRES +0 [RES.NO. OF LAST/THIS FS
2T*2 MENT #73030002 [ENTRY BLOCK TYPE
2TSL MASKA #37777777 [USEFUL MASK
2W#= THREE +3
2WRW OCT8 +8
2X?G OCT13 +13
2XR6 COMMA
2Y=Q OCTCO #34
2YQB JLOCT
2^=2 OCTHDC #504434 [#HD,
2^PL OCTDIFF #36200 [#HD,-DR,
329= TEN +10
32NW SMODE +0
338G XGGX3 +0 [FOR JLGEOG
33#C ...#UNS G3 LAST CHAR IN MESSAGE BUFFER
5H?2 TR12 LDCH 7 0(1)
5HQL SBN 7 #20
5J== BNZ 7 TR11 [LAST COMMAND CHAR FOUND
5JPW SLC 1 2
5K9G SBN 1 1
5KP6 SRC 1 2 [ELSE STEP BACK A CHAR
5L8Q BRN TR12 [AND LOOK AT NEXT
5LNB TR11 SBN 1 JLMESS(2)
5M82 SLC 1 2
5MML ADN 1 1
5N7= BZE 1 TR15
5NLW BNG 1 TR15 [EMPTY LINE SO JUST LINE THROW
5P6G STO 1 JLSMESS(2)
5PL6 LDN 1 JLSMESS(2)
5Q5Q CALL 6 JLOUT [ECHO ON CONSOLE
5QKB #
5R52 TR18 LDX 0 SUBLINK(2) [RELOAD LINK
5RJL EXIT 0 0
5S4= #
5SHW # CONSOLE INPUT
5T3G #
5TH6 TR10 LDX 0 JLPSINP+1(2) [GET REPLY WORD
5W2Q SLC 0 4 [LOOK AT B4
5WGB BNG 0 TR20 [CANCEL OR TOO L.NG
5X22 #SKI AGONY7<1$1
5XFL BRN TRD3 [UNTIL MK7
5X^= # HANDLE ANY DELETE CHARACTERS
5YDW # BY SHUNTING.
5YYG LDN 3 102 [TOENSURE SPACES AT END OF LINE
5^D6 LDN 1 JLMESS(2) [FIRST CHAR OF MESSAGE
5^XQ LDCT 7 #600
62CB LDN 2 JLMESS-1(2)
62X2 ORX 2 7 [CHAR PRECEDING MESSAGE
63BL SMO G3DOL
63W= LDN 7 JLMESS
64*W TRD1 LDCH 0 0(1)
64TG SBN 0 #77
65*6 BZE 0 TRD2 [DELETE FOUND
65SQ BCHX 1 £ [STEP ON LEADING PTR
66#B BCHX 2 £ [STEP ON TRAILING PTR
66S2 BCT 3 TRD1 [MORE TO DO
67?L BRN TRD3 [FINISHED
67R= TRD2 TXU 7 1 [STILL AT BEGINNING OF LINE?
68=W BCS TRD4 [NO
68QG MVCH 1 0(3) [YES, JUST SHUNT
69=6 BCT 3 TRD1 [MORE TO DO
69PQ BRN TRD3 [FINISHED
6=9B TRD4 BCHX 1 £ [STEP ON LEADING POINTER
6=P2 MVCH 1 0(3) [EXECUTE DELETE
6?8L SLC 1 2 [STEP BACK TRAILER
6?N= SLC 2 2 [STEP BACK LEADER BY 2
6#7W SBN 1 2
6#MG SBN 2 1
6*76 SRC 1 2
6*LQ SRC 2 2
6B6B BCT 3 TRD1 [MORE TO DO
6BL2 TRD3 [FINISHED.
6C5L TR19 LDX 2 G3DOL
6C7* ...#UNS G3MESSAGE.
6MWW JLOUT
6N9? ...OUT
6NHN ...#UNS G3 PAB
6S?G OUT1 GPERI 3,1,NC [INITIATE TRANSFER
6SR6 OUT2 JBUSY 3,OUT2 [WAIT FOR TERMINATION
6T=Q LDX 4 JLPSOUT+1(2) [GET REPLY WD.
6TQB SRL 4 18
6W=2 BNZ 4 OUT1 [ERRORS, TRY AGAIN
6WPL EXIT 6 0
6WR? ...#
6WSY ...#UNS G3NEXT PARAM. LEAVES
6^MB # X1->NEXT PARAMETER IF ANY. EXIT 2 IF OK. EXIT 1 IF NO
7272 # PARAM. EXIT 0 IF INVALID PARAM.
72LL #
736= JLGETNUM
73KW LDCH 7 0(1)
745G SBN 7 #20
74K6 BNZ 7 NG5 [SOMETHING THERE
754Q EXIT 0 1 [NO PARAM
75JB NG5 STO 0 XGNUMLK(2)
7642 LDN 7 0
76HL LDN 0 0
773= NG2 CDB 7 0(1)
77GW BCS NG1
782G BCHX 1 £
78G6 BRN NG2
78^Q NG1 BNZ 7 NG3
79FB BNG 0 NG3
79^2 LDCH 7 0(1)
7=DL TXU 7 OCTCO(2)
7=Y= BCC NG4 [COMMA TERMIN
7?CW SBN 7 #20
7?XG BZE 7 NG4 [SPACE TERMIN
7#C6 NG3 LDX 0 XGNUMLK(2)
7#WQ EXIT 0 0 [BAD
7*BB NG4 BCHX 1 £
7*W2 STO 0 JLGOTIT(2)
7B*L LDX 0 XGNUMLK(2) [GOOD
7BT= EXIT 0 2
7C#W #
7CSG #
7D#6 # S/R TO POINT TO 1ST USEFUL CHAR IN COMMAND VIA X1
7DRQ # CALLED VIA X0, USES X4
7F?B #
7FR2 JLPOINTN
7G=L NGNC 4 1
7GQ= JLPOINT
7H9W LDN 4 0
7HPG STO 4 PTSMO(2)
7J96 LDN 1 JLMESS(2)
7JNQ PNT2 LDCH 4 0(1)
7K8B SBN 4 #20
7KN2 BZE 4 PNT1
7L7L BCHX 1 £
7LM= BRN PNT2
7M6W PNT1 BCHX 1 £
7MLG LDCH 4 0(1)
7N66 SBN 4 #20
7NKQ BZE 4 PNT1
7P5B LDN 4 0(1)
7PK2 SBNC 4 JLMESS+20(2)
7Q4L LDX 4 PTSMO(2)
7QJ= SMO 4
7R3W BRN £
7RHG BRN JLWRC [NO PARAMS & MANDATORY
7S36 EXIT 0 0 [NO PARAMS & OPTNL OR PARAMS & MANDTY
7SGQ EXIT 0 1 [PARAMS & OPTIONAL
7T2B #
7TG2 #
7T^L # S/R TO EXTRACT FILENAME FROM COMMAND & PUT IT IN FINAME
7WF= # CALLED VIA X0, USES X3 X4
7WYW # EXPECTS X1 -> 1ST CHAR & NO TERMINATOR
7XDG #
7XY6 JLFNAME
7YCQ CALL 6 NALPHA [CHECK FORST CHAR
7YXB LDX 3 1
7^C2 LDN 4 FINAME(2)
7^WL MVCH 3 12
82B= LDCH 6 0(3) [CHECK 13TH CHAR
82TW SBN 6 #20
83*G BNZ 6 NAMELONG [FILENAME TOO LONG
83T6 EXIT 0 0
84#Q #
84SB NALPHA
85#2 LDCH 4 0(1) [TEST FIRST CHAR ALPHABETIC
85RL SBN 4 #41 [?-A
86?= BNG 4 NAMEBAD [?Z
889Q EXIT 6 0
88PB #
8992 JLNBAD
89NL NAMEBAD
8=8= NAMELONG
8=MW LDN 1 NAMEBADM(2)
8?7G BRN JLER
8?M6 #
8#6Q #
8#LB # S/R TO EXTRACT FILENAME FROM COMMAND, PUTS IT IN FINAME
8*62 # CALLED VIA X0, USES X3 X4 X6
8*KL # EXPECTS X1 -> 1ST CHAR, & NAME TERMINATED BY COMMA.
8B5= JLFNAMEC
8BJW CALL 6 NALPHA [CHECK 1ST CHAR ALPHA
8C4G LDN 3 FINAME(2)
8CJ6 LDN 6 13 [MAX CHARS = 12
8D3Q XZ02 LDCH 4 0(1) [GET NEXT CHAR
8DHB TXU 4 OCTCO(2) [COMMA?
8F32 BCC XZ01 [YES
8FGL DCH 4 0(3) [STORE CHAR IN TABLE
8G2= BCHX 1 £ [POINT TO NEXT CHAR
8GFW BCHX 3 £ [ " " " HOLE
8G^G BCT 6 XZ02 [TOO MANY CHARS?
8HF6 BRN NAMELONG [YES
8HYQ XZ01 TXU 6 OCT13(2) [1ST CHAR = , ?
8JDB BCC NAMEBAD [YES, 1ST PARAMETER NULL
8JY2 LDN 4 #20 [PUT SPACE IN X4
8KCL XZ04 BCT 6 XZ03 [START SPACEFILLING
8KX= EXIT 0 0
8LBW XZ03 DCH 4 0(3) [PUT SPACE IN NEXT HOLE
8LWG BCHX 3 £ [POINT TO NEXT HOLE
8MB6 BRN XZ04 [GO FOR ANOTHER
8MTQ #
8N*B #
8NT2 # S/R TO TEST FOR HD OR DR AS 1ST PARAM IN DRUM COMMAND
8P#L # CALLED VIA X0, USES X4,X5,X6
8PS= # EXITS 0 IF DR, 1 IF HD
8Q?W #
8QRG JLHDDR
8R?6 LDN 5 0
8RQQ LDN 6 3
8S=B THD1 LDCH 4 0(1)
8SQ2 BCHX 1 £
8T9L SLL 5 6
8TP= ORX 5 4
8W8W BCT 6 THD1
8WNG SBX 5 OCTHDC(2)
8X86 LDN 4 #34
8XMQ ORS 4 OCTHDC(2)
8Y7B BZE 5 THD2
8YM2 ADX 5 OCTDIFF(2)
8^6L BNZ 5 JLWRC
8^L= EXIT 0 0
925W THD2 EXIT 0 1
92KG #
9356 #
93JQ # S/R TO PLACE GEOGNO IN FIX/FAIL MESSAGE
944B # CALLED VIA X0, USES X4 X5
94J2 # EXPECTS X3->DL FOR DEVICE, X1-> MESSAGE
953L #
95H= JLGEOG
962W STO 3 XGGX3(2)
96GG LGEOG 3,5
9726 LDN 4 10
97FQ DVS 4 4
97^B LDX 3 4
98F2 LDN 4 10
98YL DVS 4 4
99D= BNZ 5 XGG1
99XW LDN 5 #20
9=CG BNZ 4 XGG1
9=X6 LDN 4 #20
9?BQ XGG1 SLL 5 12
9?WB SLL 4 6
9#B2 ORX 5 3
9#TL LDCT 3 #200
9**= ORX 3 5
9*SW ORX 3 4
9B#G STO 3 3(1)
9BS6 LDX 3 XGGX3(2)
9C?Q EXIT 0 0
9CRB #
9D?2 #
9DQL #
9F== #
9FPW # * *
9G9G # ****** MAIN ENTRY POINT
9GP6 # * *
9H8Q #
9HNB K1LOADERMT [ENTRY POINT FROM GELL
9J82 BVSR £ [UNSET V
9JML X CALL 2 £ [FIND OUT WHERE YOU ARE
9K7= SBN 2 X+1
9KLW STO 2 G3DOL [FOR SAFETY
9KMC ... LDX 1 BK18X
9KMY ... BNZ 1 XOK
9KNF ... LDX 1 XK18(2)
9KP2 ... STO 1 BK18X
9KPH ...# SET UP POINTERS WITH K18X FOR START OF LOADER
9KQ4 ...XOK LDX 1 BK18X
9KQK ... ADS 1 PMENTRY(2)
9KR6 ... ADS 1 STARTCOMM(2)
9KRM ... ADS 1 POSMESS(2)
9KS8 ... ADS 1 AJLRTAB(2)
9KSP ... ADS 1 AJLRAT(2)
9KT= ... ADS 1 OPMESS(2)
9KTR ... LDX 1 AJLREST(2)
9KW# ... ADS 1 AJLBUFFX1K(2)
9KWT ... ADS 1 AJLTBUFF(2)
9KXB ... ADS 1 AJLLBUFF(2)
9KXX ... ADS 1 AJLMBUFF(2)
9KYD ... ADS 1 AJLZERBUFF(2)
9KY^ ... ADS 2 OSCA(2) [ DATUMISE SCA BUFFERS
9K^G ... ADS 2 OSCAFAC(2)
9L23 ... LDX 1 CPEXECINFO
9L2J ... ANDN 1 7
9L35 ... SBN 1 3
9L3L ... BZE 1 XECOK
9L47 ... LDN 1 WREXEC(2)
9L4N ... CALL 6 JLOUT
9L59 ...XSTOP BRN XSTOP
9L5Q ...XECOK
9L6G LDX 1 PMENTRY(2) [SET UP LOADER POST-MORTEM
9LL6 STO 1 GEN1 [ENTRY POINT
9M5Q LDX 1 PMBRN(2)
9MKB STO 1 K0
9N52 LDX 0 STARTCOMM(2)
9NJL LDN 1 GELLY(2)
9P4= MOVE 0 4 [SAVE DATA FROM GELL.
9P4C ... SMO AJLRTAB(2)
9P4J ... STOZ 0 [CLEAR OUT ME & FS BUFFERS
9P4P ... LDX 0 AJLRTAB(2)
9P4S ... LDN 1 1
9P4X ... ADS 0 1
9P53 ... MOVE 0 FSTABLEN+1*5
9P58 ... SMO AJLRAT(2)
9P5* ... STOZ 0
9P5G ... LDX 0 AJLRAT(2)
9P5K ... LDN 1 1
9P5N ... ADS 0 1
9P5S ... MOVE 0 200
9P9C ... SMO AJLZERBUFF(2)
9P?6 ... STOZ 0
9P#T ... LDX 0 AJLZERBUFF(2)
9P*^ ... LDN 1 1
9PC5 ... ADS 0 1
9PD? ... MOVE 0 0 [ZEROIZE JLZERBUFF
9PHW LDX 1 GEOBSPTR
9Q3G STO 1 JLPSMT(2)
9QH6 NLOUT LDN 1 NL(2)
9R2Q FINDPEREC 3,APFOTY,TYPCON(2),NEXTCON
9RGB ... JWRONG 3,NEXTCON [LOOK FOR A RIGHTED OPS CONSOLE
9S22 STO 3 JLPSOUT(2)
9SFL NAPS STO 3 SRDL(2)
9S^= JLTURN
9TDW TURN CALL 0 OUTIN [OUTPUT MESS & WAIT FOR COMMAND
9TYG LDX 0 JLMESS(2)
9WD6 SRL 0 12 [GET COMMAND FROM MESSAGE
9WXQ LDX 1 MTAB(2) [SEARCH FOR IT IN LIST
9XCB NEXM SMO 2
9XX2 TXU 0 MTAB(1)
9YBL ... BCC MESID [IDENTIFIED IT
9YW= BCT 1 NEXM [TRY NEXT IN LIST
9^*W JLWRC LDN 1 WRONGM(2) [NOT FOUND - COMMAND FORMAT ERROR
9^TG #SKI AGONY7
=2*6 JLER STOZ SMODE(2)
=2SQ #SKI AGONY7<1$1
=3#B JLER
=3S2 LDX 0 TRAPFAIL(2) [ATTEMPT RECOVERY AFTER
=4?L BNG 0 RECOVERY [MT/BS FAIL WHILE LOADING
=4R= RESET LDX 3 SLOWIN(2)
=5=W BZE 3 TURN [CONSOLE INPUT
=5QG DISENGPER SRDL(2) [DISENGAGE SLOW READER
=6=6 #SKI AGONY7
=6PQ (
=79B STOZ SLOWIN(2)
=7P2 LDX 3 JLPSOUT(2) [FOR NEW INPUT SOURCE
=88L BRN NAPS [& GO FOR NEXT COMMAND
=8N= )
=97W #SKI AGONY7<1$1
=9MG BRN TURN
==76 MESID
==LQ # COMMAND HAS BEEN IDENTIFIED; JUMP ACCORDINGLY
=?6B #
=?L2 STOZ JLNUMIN(2) [FOR DISC SEARCH ROUTINES
=#5L SMO 1
=#K= BRN TABJUMP-1
=*4W TABJUMP
=*JG BRN JLDA
=B46 BRN JLDA
=BHQ BRN JLDA
=C3B BRN JLDR
=CH2 BRN JLHD
=D2L BRN JLCL
=DG= BRN JLFI
=D^W BRN JLDE
=FFG BRN JLCR
=F^6 BRN JLTR
=GDQ BRN JLFS
=GYB #SKI K6LOADERMT
=HD2 (
=HXL BRN JLAL
=JC= BRN JLPR
=JWW )
=KBG BRN JLRP
=KW6 #SKI AGONY7
=L*Q BRN JLTW
=LTB #SKI AGONY7<1$1
=M*2 BRN JLWRC [UNTIL MK7
=MSL BRN JLME
=N#= BRN JLCT
=NRW BRN JLDS
=P?G BRN JLEF
=PR6 #SKI ENTWINE
=Q=Q (
=QQB BRN JLDC
=R=2 BRN JLUN
=RPL )
=S9= BRN JLCM
=SNW #SKI G4
=TN6 # FOLLOWING ARE IN CASE OF EXTRA COMMANDS MENDED IN.
=W7Q BRN JLWRC
=WMB BRN JLWRC
=X72 BRN JLWRC [NOW ONLY ROOM FOR 3
?342 #
?3HL #
?43= #
?4GW # COME HERE IF IRRECOVERABLE ERROR.
?52G CATASTROPHE
?5G6 CALL 6 OUT [OUTPUT WAITING MESSAGE
?5^Q LDN 1 STOP(2)
?66Y ... CALL 6 OUT
?6#6 ... GELL [DON'T NEED PM FOR TRANSFER FAILURES
?6FB #
?6^2 CALLGELL
?7DL CALL 6 OUT
?7Y= GELLIT [COME HERE IF WANT TO KNOW WHY
?8CW GEOERR 1,GEO LOAD
?8XG #
?9C6 # IF A TRANSFER FAILURE (MT/BS) OCCURS IN LOADING FROM MT TO BS
?9WQ # THE RELEVANT PERI ROUTINE WILL SET X1->ERROR MESSAGE & BRN TO
?=BB # JLER, WHERE TRANSFER FAILS ARE FILTERED HITHER FROM OTHER FAILS.
?=W2 # MT FAILS ARE DEEMED IRRECOVERABLE.
??*L # IN THE CASE OF BS FAILS, AN ATTEMPT IS MADE TO REPOSITION THE
??T= # TAPE SO THAT THE COMMAND CAN BE RESUBMITTED OR ANOTHER BS FILE
?##W # CAN BE USED. IF REPOSITIONING FAILS, GIVE UP.
?#SG RECOVERY
?*#6 LDX 0 MTFAILMK(2)
?*RQ BZE 0 CATASTROPHE [MT FAILS ARE IRRECOVERABLE
?B?B #SKI AGONY7<1$1
?BR2 BRN CATASTROPHE [UNTIL MK7
?C=L #
?CQ= # BS FAIL HAS OCCURRED; ATTEMPT TO REPOSITION TAPE
?D9W #
?DPG CALL 6 JLOUT [OUTPUT DISC/DRUM FAIL MESSAGE
?F96 LDX 4 JLTMCNT(2)
?FNQ LDN 6 MTREV(2)
?G8B RC1 CALL 0 JLPTAPE [SKIP BACK OVER
?GN2 BCT 4 RC1 [TAPE MARKS
?H7L LDN 6 MTBSP(2)
?HM= CALL 0 JLPTAPE [BACKSPACE OVER E/S SENTINEL FOR L/A
?J6W LDN 6 JLMHEAD(2)
?JLG CALL 0 JLPTAPE [READ E/S SENTINEL
?K66 LDN 1 POSFAIL(2) [IN CASE IT FAILS
?KKQ LDX 0 MENT(2)
?L5B TXU 0 JLMHEADA(2)
?LK2 BCS CATASTROPHE [REPOSITIONING FAILED
?M4L #
?MJ= # REPOSITIONING SUCCESSFUL, SO RESET VARIUS AREAS.
?N3W #
?NHG STO 0 MTFAILMK(2)
?P36 STOZ TRAPFAIL(2) [MT/BS FAILS TRAP
?PGQ NGN 0 512
?Q2B STO 0 JLNDADD(2) [LAST D-ADDRESS
?QG2 LDN 1 REPOSOK(2)
?Q^L BRN RESET
?RF= #
?RYW #
?SDG # VARIOUS ERROR/INFO PATHS
?SY6 #
?T7Y ...JLCM [COMMENT!
?TCQ JLXOK
?TXB LDN 1 OKMESS(2) [COMMAND HAS BEEN SUCCESSFULLY
?WC2 BRN TURN [IMPLEMENTED
?WWL JLNOFILE
?XB= LDN 1 NOFILE(2)
?XTW BRN JLER
?Y*G #
?YT6 # MT LOADER COMES HERE ON RECEIPT OF CR/TR COMMAND.
?^#Q # SWITCHES ARE SET TO GUIDE COMMANDS FROM SLOW READER
?^SB # UNTIL INVALID COMMAND IS ENCOUNTERED.
#2#2 # GEOGNO IS PLACED IN FIX & FAIL MESSAGES.
#2RL # DL POINTER OF RELEVANT DEVICE GOES TO SRDL.
#3?= # SLOWIN IS SET TO 1.
#3QW #
#4=G JLTR LDN 0 #12 [MODE - GRAPHIC STOP BY STOP CHAR
#4Q6 BRN TCR1
#59Q JLCR LDN 0 0 [MODE
#5PB TCR1 LDX 7 SLOWIN(2)
#692 BNZ 7 JLWRC [COMMAND SOURCE NOT CONSOLE
#6NL STO 0 SMODE(2)
#78= LDX 0 SPACES(2)
#7MW STO 0 SFL+3(2)
#87G STO 0 SFIX+3(2)
#8C# ... STO 0 NOPERIPH+3(2)
#8M6 LDX 3 2
#96Q CALL 0 JLPOINT
#9LB LDN 6 0
#=62 LDN 4 3
#=KL TCR5 LDCH 7 0(1)
#?5= TXL 7 TEN(2)
#?JW BCC TCR6
##4G DCH 7 SFIX+3(3)
##J6 DCH 7 SFL+3(3)
##RY ... DCH 7 NOPERIPH+3(3)
#*3Q BCHX 1 £
#*HB BCHX 3 £
#B32 MPA 6 TEN(2)
#BGL LDX 6 7
#C2= BCT 4 TCR5
#CFW LDCH 7 0(1)
#C^G TCR6 SBN 7 #20
#DF6 BNZ 7 JLWRC [NOT A NICE CHARACTER
#DYQ TCR2 FINDPEREC 3,APGEOG,6 [FIND OUT ABOUT DEVICE
#F?7 ... JENV TCR42,CME
#FKJ ... BNG 3 JLWRC
#FQR ...TCR42 BNG 3 TCR41
#FY2 #
#GCL # IS DEVICE OF SPECIFIED TYPE?
#GX= #
#HBW LTYPE 3,0
#HWG BZE 0 TCR3 [GEOGNO GIVES TR
#JB6 SBN 0 3
#JTQ BNZ 0 JLWRC [GEOGNO GIVES NEITHER CR TR
#K*B LDX 0 SMODE(2) [GEOGNO GIVES CR
#KT2 BNZ 0 JLWRC [NOT EXPECTED
#L#L BRN TCR4
#LS= TCR3 LDX 0 SMODE(2) [TR COMMAND?
#M?W SBN 0 #12
#MRG BNZ 0 JLWRC [NO.
#N?6 TCR4
#NQQ STO 3 SRDL(2)
#P=B LDN 0 1
#PQ2 STO 0 SLOWIN(2) [SET SLOW INPUT SWITCH
#Q9L BRN JLXOK
#QBS ...TCR41 LDN 1 NOPERIPH(2)
#QJ2 ... BRN JLER
#QP= #
#R8W #
#RNG #
#S86 #
#SMQ # LOADER/ALLOCATOR COMES HERE IF TW COMMAND IS RECEIVED.
#T7B # PROVIDING IT WAS ISSUED FROM O SLW READER IT CAUSES THE SOURCE OF
#TM2 # COMMANDS TO BE CHANGED TO THE OP'S CONSOLE.
#W6L # IF NECESSARY THE CURRENT SLOW READER IS DISENGAGED.
#WL= #
#X5W JLTW LDX 0 SLOWIN(2)
#XKG STOZ SMODE(2)
#Y56 LDN 1 OKMESS(2) [TO SAY 'OK'
#YJQ BRN RESET
#^4B #
#^J2 #
*23L #
*2H= #
*32W #
*3GG #
*426 # MT LOADER COMES HERE ON RECEIPT OF AN FS COMMAND.
*4FQ # THE COMMAND IS CHECKED FOR VALIDITY & THE CONTENTS
*4^B # OF ITS PARAMETERS ENTERED IN A TABLE WHICH IS COPIED
*5F2 # INTO THE SEGMENT FSTABLE WHEN G IS TRANSFERRED FROM MT
*5YL #
*6D= JLFS
*6XW CALL 0 JLPOINT
*7CG LDN 6 0
*7X6 LDN 7 0
*8BQ TFS1 CDB 6 0(1) [CONVERT LFN
*8WB BCS TFS2 [NON-NUMERIC CHAR
*9B2 BCHX 1 £
*9TL BRN TFS1
*=*= TFS2 LDCH 0 0(1)
*=SW TXU 0 OCTCO(2) [COMMA?
*?#G BCS JLWRC [NO, ERROR
*?S6 BCHX 1 £
*#?Q BNZ 6 JLWRC [HUGE LFN
*#RB SLL 67 18
**?2 BNZ 6 JLWRC [LFN>63
**QL SRL 7 18 [LFN IN X7
*B== TXL 7 THREE(2)
*BPW BCS JLWRC
*C9G LDX 5 7 [LFN IN X5
*CP6 STO 5 THISRES(2)
*D8Q LDN 6 5
*DNB MPY 5 6 [5*LFN IN X6
*F2R ... STO 6 JLRSW(2) [FRO USE AS A POINTER
*F9P ... LDX 3 AJLRTAB(2)
*FDM ... ADN 3 3
*FML SMO 6
*G7= ... STO 7 0(3) [STORE LFN
*GLW #
*H6G # GET DEVICE TYPE
*HL6 #
*J5Q LDCH 0 0(1)
*JKB SBN 0 10
*K52 BNG 0 TFS5 [NUMERIC TYPE
*KJL LDCH 0 0(1)
*L4= SLL 0 6
*LHW LDX 4 0
*M3G BCHX 1 £
*MH6 LDCH 0 0(1)
*N2Q ORX 4 0 [X4=00TT
*NGB BCHX 1 £
*P22 # SEARCH TABLE FOR DEVICE TYPE
*PFL LDN 5 5
*P^= TFS6 SMO 5
*QDW TXU 4 JLMTAB(2)
*QYG BCC TFS7 [FOUND IT
*RD6 BCT 5 TFS6 [MORE TO COMPARE
*RXQ BRN TFS8
*SCB TFS7 SMO 5
*SX2 LDX 7 JLTTAB-1(2) [GET NUMERIC EQUIVALENT
*TBL BRN TFS9
*TW= TFS5 LDN 6 0
*W*W LDN 7 0
*WTG TFS10 CDB 6 0(1) [CONVERT NUMERIC TYPE
*X*6 BCS TFS11 [NON-NUMERIC CHAR
*XSQ BCHX 1 £
*Y#B BRN TFS10
*YS2 TFS11 LDN 5 5 [FIND NUMERIC TYPE IN TABLE
*^?L TFS12 SMO 5
*^R= TXU 7 RTYT-1(2)
B2=W BCC TFS13 [FOUND IT
B2QG BCT 5 TFS12 [TRY NEXT
B3=6 BRN TFS8 [NOT KNOWN
B3PQ TFS13 SMO 5
B49B LDX 6 RTYT-1(2)
B4P2 ANDN 6 6
B58L BZE 6 TFS9
B5N= LDN 7 6 [DISC SO REPLACE BY TYPE 6
B67W TFS9 SLL 7 18
B6CN ... LDX 3 AJLRTAB(2)
B6MG ... ADN 3 3
B6X# ... SMO JLRSW(2)
B7?3 ... ORS 7 0(3) [PUT TYPE IN TABLE ENTRY
B7LQ LDCH 0 0(1)
B86B SBN 0 #34
B8L2 BNZ 0 TFS8 [NEXT CHAR NOT O COMMA
B95L BCHX 1 £
B9K= #
B=4W # EXTRACT FILENAME
B=JG #
B?46 ... LDX 3 JLRSW(2)
B#3B LDX 0 SPACES(2)
B##? ... SMO AJLRTAB(2) [SPACEFILL
B#K8 ... STO 0 0(3)
B#R6 ... ADN 3 1
B#^4 ... SMO AJLRTAB(2) [NAME IN
B*72 ... STO 0 0(3)
B*#Y ... ADN 3 1
B*GW ... SMO AJLRTAB(2) [TABLE.
B*NS ... STO 0 0(3)
B*^W TFS19 LDCH 0 0(1)
BBFG SBN 0 #20
BB^6 BNZ 0 TFS14 [NOT A SPACE
BCDQ BCHX 1 £ [STEP ON
BCYB BRN TFS19
BDD2 #
BDXL TFS14 CALL 6 NALPHA [CHECK 1ST CHAR ALPHE
BFC= LDN 4 12 [CHAR COUNT
BFWW ... LDX 3 JLRSW(2) [X3->TABLE
BGW6 TFS20 LDCH 0 0(1)
BH*Q BCHX 1 £
BHTB TXU 0 OCTCO(2)
BJ*2 BCC TFS15 [NEXT CHAR COMMA SO MORE PARAMS
BJMC ... SMO AJLRTAB(2)
BJ^S ... DCH 0 0(3) [MOVE NAME TO TABLE
BK#= BCHX 3 £
BKRW BCT 4 TFS20
BL?G LDCH 0 0(1) [IS THIS A TWELVE CHAR FILENAME
BLR6 BCHX 1 £ [...
BM=Q TXU 0 OCTCO(2) [FOLLOWED BY A COMMA?
BMQB BCC TFS15 [YES, SO SN TO FOLLOW
BN=2 SBN 0 #20
BNPL BZE 0 TFS18 [SPACE SO FINISHED
BP5* ... LDX 3 AJLRTAB(2)
BPF4 ... SMO JLRSW(2) [ELSE BAD NAME
BPSR ... STOZ 0(3) [... SO CLEAR ENTRY
BQ8G BRN NAMEBAD
BQN6 #
BR7Q # SERIAL NO. IF ANY
BRMB #
BS72 TFS15 LDN 6 0
BSLL LDN 4 7
BT6= TFS16 LDCH 0 0(1) [CONVERT A DIGIT
BTKW TXL 0 OCT8(2) [OCTAL?
BW5G BCC TFS17 [NO
BWK6 BCHX 1 £
BX4Q SLL 6 3
BXJB ORX 6 0 [MOVE IN
BY42 BCT 4 TFS16 [MORE ALLOWED
BYHL BRN TFS21 [TOO LONG!
BYRD ...TFS17 LDX 3 AJLRTAB(2)
B^3= ... ADN 3 4
B^?4 ... SMO JLRSW(2)
B^LR ... STO 6 0(3) [STORE CSN IN TABLE
C22G SBN 0 #20
C2G6 BZE 0 TFS18 [SPACE FOUND, I.E. END
C2^Q SBN 0 #14
C3FB BNZ 0 TFS21 [NOT A COMMA AFTER SN
C3^2 BCHX 1 £
C4DL ... LDX 0 JLRSW(2)
C4Y= SBN 0 15
C5CW BZE 0 TFS8 [ERROR -'SWAP'& LF3
C5XG LDCH 0 0(1)
C6C6 SBN 0 #63
C6WQ BNZ 0 TFS8 [NOT S AFTER COMMA
C7BB LDCT 0 4
C7L8 ... LDX 3 AJLRTAB(2)
C7W2 ... ADN 3 3
C85S ... SMO JLRSW(2)
C8FH ... ORS 0 0(3) [SET SWAPFILE BIT
C8T= NGN 0 16*G4
C9#W ADXC 0 THISRES(2)
C9SG LDN 7 G4
C=#6 ANDN 7 1
C=RQ BNZ 7 TFS8 [G4 ONLY SWAP RES > 15
C??B #
C?R2 TFS18
C#=L BRN JLXOK [
C#Q= #
C*5^ ...TFS8 LDX 3 AJLRTAB(2)
C*FN ... SMO JLRSW(2) [CLEAR CORRUPTED
C*TC ... STOZ 0(3) [TABLE ENTRY
CB96 BRN JLWRC [GENERAL ERROR
CBNQ #
CC4F ...TFS21 LDX 3 AJLRTAB(2)
CCD8 ... SMO JLRSW(2)
CCRX ... STOZ 0(3)
CD7L LDN 1 SERIALBAD(2) [INVALID SN.
CDM= BRN JLER
CF6W #
CFLG #
CG66 # S/R TO CHECK THAT, IF ANY FS'S HAVE BEEN ISSUED, A SWAP RESIDENCE
CGKQ # HAS BEEN DECLARED. CALLED VIA X0.
CH5B #
CHK2 JLSWAPCH
CJ4L LDN 5 0 [ANY ENTRIES SWITCH
CJJ= LDN 7 64
CK3W ... LDX 3 AJLRTAB(2) [POINT TO TABLE
CKHG SW2 LDX 6 0(3)
CL36 BZE 6 SW1 [NO ENTRY HERE
CLGQ ADN 5 1 [ELSE MARK UP AN ENTRY
CM2B LDCT 6 4
CMG2 ANDX 6 3(3) [PICK OUT SWAPFILE BIT
CM^L BNZ 6 SW3 [FOUND ONE
CNF= SW1 ADN 3 5
CNYW BCT 7 SW2
CPDG BZE 5 SWEXIT [NO FS'S, SO OK
CPY6 #
CQCQ # IF WE REACH HERE NO SWAPFILE HAS BEEN FOUND
CQXB #
CRC2 LDN 1 NOSWAP(2)
CRKY ... LDX 3 AJLRTAB(2)
CRSW ... ADN 3 15
CS3S ... LDX 6 0(3) [ENTRY FOR RES.3 ?
CSB= BNZ 6 JLER [YES
CSTW CALL 6 JLOUT [NO
CT*G SW4 LDN 1 NORES3(2)
CTT6 BRN JLER
CW#Q #
CWSB # IF WE REACH HERE A SWAPFILE HAS BEEN FOUND
CX#2 #
CXGY ...SW3 LDX 3 AJLRTAB(2)
CXPW ... ADN 3 15
CXYS ... LDX 6 0(3)
CY?= BZE 6 SW4 [NO RES.3
CYQW SWEXIT
C^=G EXIT 0 0 [RES.3 & SWAPFILE FOUND
C^Q6 #
D29Q #
D2FJ ...K99LOADERMT [ DATA AREA FOR MENDS
D2PB ...#GAP 1023-0?
D6LB #
D762 #END
^^^^ ...014264330001