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