11 22FL #LIS K0SAVE>K0ALLGEO>K0COMMAND 17 22_= ...#SEG SAVE70 [OWEN N JOHN :CENT 6 23DW 8HSAVE 4 23YG # 21 24D6 # THIS SEGMENT SAVES A PROGRAM IN A LOADABLE FORM WITH ITS SUPPLEMENT 20 24XQ # REQUEST SLIP SUCH THAT THIS SAVED PROGRAM CAN BE LOADED,RESUMED OR 10 25CB # RESTORED AT A LATER DATE 4 25X2 # 16 26BL SEGENTRY K1SAVE,XK1 [COMMAND ENTRY 20 26LD ... FSHENTRY K2SAVE,WHATBK,,WHATBK [ TO DO 'WHATBACK' FOR M/C 'B' 4 26W= # 14 27*W # THIS SUBROUTINE DOES A QUICK STEP APPEND 18 27TG # IT EXPECTS X4 TO CONTAIN WORD COUNT ON ENTRY LINK X5, 4 28*6 # 8 28SQ YWRIT SBX 5 FX1 7 29#B LDX 1 4 17 29S2 STEP ,0(1),VBIN [->VBIN IF BREAK IN 17 2=?L TESTREP2 FILEFULL,ODEAR [J IF NO MORE ROOM 6 2=R= #SKI BSOL 16 2?=W TESTREP2 REFUSED,RUNOUT [J IF NO BS LEFT 9 2?QG STO 4 FRH(3) 8 2#=6 LDN 0 #41 15 2#PQ STO 0 FRH+1(3) [STORE PFCC 8 2*9B ADX 5 FX1 7 2*P2 EXIT 5 0 17 2B8L NXTP SBX 7 FX1 [FIND NEXT PARAMETER 7 2BN= SPARAPAS 10 2C7W MHUNT 2,CPB,CUNI 9 2CMG LDX 0 ANUM(2) 8 2D76 ADX 7 FX1 7 2DLQ EXIT 7 0 4 2F6B # 9 2FL2 PLOAD 4HLOAD 9 2G5L TYPE #73230000 9 2GK= TEB #73030003 9 2H4W TES #73100006 17 2HJG TURTY #74000 [MAX.RECORD SIZE 30K 19 2J46 TYPE2 #73020002 [FIRST WORD OF ENTRY BLOCK 4 2JHQ # 15 2K3B XK1 [ENTRY POINT 18 2KH2 CALL 7 NXTP [GET FILENAME PARAMETER 16 2L2L BNG 0 S1 [ERROR IF ABSENT 10 2LG= NAMETOP 2,FILE,FNAME 19 2L_W CREATEB [CREATE FILE OPENING BLOCK 17 2MFG CALL 7 NXTP [GET NEXT PARAMETER 17 2M_6 BNG 0 R5 [ASSUME DA IF MISSING 15 2N8Y ... BZE 0 R5 [ OR NULL 17 2NDQ LDCH 7 APARA(2) [TEST FOR ASTERISK 8 2NYB SBN 7 #32 15 2PD2 BNZ 7 S2 [ERROR IF NOT 15 2PXL ANDN 0 #7777 [REMOVE TYPE 8 2QC= BRN R3 4 2QWW # 16 2RBG # ROUTINE CONDENSES CHARACTERS FOLLOWING ASTERISK 7 2RW6 R2 BCHX 2 / 17 2S*Q LDCH 6 APARA(2) [LOAD NEXT CHARACTER 8 2STB SBN 6 #20 16 2T*2 BZE 6 R3 [IGNORE IF SPACE 7 2TSL SLL 7 6 7 2W#= ORX 7 6 8 2WRW R3 BCT 0 R2 8 2X?G # TEST IF *CP OR *DA 7 2XR6 LDN 5 0 13 2Y=Q SBN 7 #2340 [CP? 8 2YQB BZE 7 R6 13 2_=2 SBN 7 #61 [DA? 14 2_PL BNZ 7 S2 [ ERROR 4 329= R5 16 32NW LDN 5 1 [EDS FILE MARKER 4 338G R6 20 33N6 # NOW CHECK IF LOADED: TO ENSURE PICK UP MEANINGFUL INFORMATION 8 347Q LDX 2 FX2 16 34MB FJOCA 2 [FIND JOBBLOCK 15 3572 TESTLOAD 2,READY [J IF OOADED 17 35LL LOADNOW R9,THEND,0 [LOAG IF,LEAVING SO/ 5 366= READY 8 36KW LDX 2 FX2 17 375G MHUNTW 3,FILE,CREATE [FIND CREATE BLOCK 8 37K6 FPCACA 1,2 5 384Q #SKI G3 4 38JB ( 9 3942 LDX 4 ALIMIT(1) 19 39HL ADN 4 1024 [ALLOW EXTRA 1K FOR RED TAPE 17 3=3= SRL 4 9 [NO OF BS BLOCKS REQD 9 3=77 ... LDN 0 FILESIZE 7 3=?4 ... TXL 0 4 8 3=B_ ... BCS WOOPS 4 3=GW ) 5 3?2G #SKI G4 4 3?G6 ( 10 3?_Q HUNT2 2,BSTB,BSCB,1 16 3#FB LDX 4 AASIZE(2) [PAGES ACCESSED 18 3#_2 LDN 0 FILESIZE/2 [MAX SIZE OF FILE IN K 7 3*DL TXL 0 4 15 3*Y= BCS WOOPS [J IF TOO BIG 16 3BCW LDX 6 AMAXSIZE(2) [KEEP SIZE WORD 4 3BXG ) 8 3CC6 BNZ 5 R7 8 3CWQ LDX 0 GSIGN 16 3DBB ADN 0 #12 [SET AS GRAPHIC 9 3DFG ... STO 0 CETM(3) 4 3DJL ...[ 17 3DMQ ...[ THE FOLLOWING 'BS' WAS INSERTED AT THE REQUEST OF 16 3DQW ...[ :FILE SECTION SUPPOSEDLY IT STOPS ERRONOUS 14 3DW2 ...[ 'FILE FULL' MESSAGES WITH WORKFILES 13 3D_6 ...[ DONE 16.JAN.75 :CENT 4 3F4= ...[ 10 3F7B ... BS 3,CESERIAL 4 3F=G ...[ 12 3F*L SETMODE 4,CREATE,APPEND,EMPTY 8 3FT= BRN R8 19 3G#W # NOW FIND HOW MANY 128 WORD BUCKETS WILL BE REQUIRED AT MOST 4 3GSG R7 5 3H#6 #SKIP G4 4 3HRQ ( 16 3J?B ADN 4 1 [FIRST 8 BUCKETS 17 3JR2 SLL 4 1 [ROUND TO BS BLOCKS 4 3K=L ) 9 3KQ= STO 4 CEINF3(3) 8 3L9W LDCT 0 #406 9 3LPG STO 0 CETM(3) 15 3M96 LDN 0 1 [BUCKET SIZE 9 3MNQ STO 0 CEORG(3) 5 3MQN ...WHATBK 10 3MSL ... FSHCODE B,NOTIFMCA 4 3MWJ ...( 17 3MYG ... TRANSBEG FSHSAVEID,SAVE,2,FILE,CREATE,ACOMMUNE1 9 3N2D ... BRN WHATBDONE 5 3N4B ...NOTIFMCA 4 3N6# ...) 8 3N8B WHATBACK 0,4 6 3N=K ...WHATBDONE 10 3N#S ... FSHCODE A,NOTIFMCB 4 3NC3 ...( 9 3NF= ... TRANSFIN ,,ALIEN 5 3NHF ...NOTIFMCB 4 3NKN ...) 12 3NN2 SETMODE 4,CREATE,WRITE,EMPTY 4 3P7L R8 8 3PM= USEROPEX R9,4 18 3Q6W REPERR T1 [OPEN FILE & TEST REPLY 5 3QLG THEND 6 3R66 ENDCOM 4 3RKQ VBIN 8 3S5B CLOSEABANDON 17 3SK2 R9 COMBRKIN [BREAK IN USEROPEN 4 3T4L T1 16 3TJ= BNZ 5 N0 [BRANCH IF EDS 4 3W3W P1 7 3WHG LDN 4 3 17 3X36 CALL 5 YWRIT [X3 -> POS FOR RECORD 9 3XGQ LDX 0 PLOAD(1) 8 3Y2B STO 0 2(3) 5 3YG2 #SKI G4 4 3Y_L ( 8 3_F= # SET ALL ACCESSES 15 3_YW LDN 5 CHUSED+CHREAD+CHWRITEP+GNOMESS 9 42DG STO 5 AWORK3(2) 4 42Y6 ) 7 43CQ STOZ 5 19 43XB GETWORD 5,7,READ,AWORK1(2),,VBIN [X7 -> WORD 0 OF F/P 18 44C2 TESTREP NOCORE,ZERR [BRANCH IF NO CORE IMAGE 10 44WL TESTREP2 LOADERR,Y8 8 45B= LDN 4 18 8 45TW CALL 5 YWRIT 14 46*G Z8 FPCACA 2,FX2 [FIND PCA 9 46T6 LDX 4 ARM1(2) 7 47#Q SRL 4 3 7 47SB ANDN 4 7 8 48#2 SMO FX2 9 48RL STO 4 AWORK2 17 49?= LDX 4 ALIMIT(2) [REMEMBER CORE SIZE 5 49QW #SKI G4 4 4==G ( 8 4=Q6 SMO FX2 21 4?9Q STO 4 AWORK4 [KEEP ALIMIT HANDY FOR CHECK LATER 7 4?PB LDX 4 6 8 4#92 SLC 4 12 16 4#NL BPZ 6 UNSP [J IF NOT SPARSE 8 4*8= SBN 4 #3776 20 4*MW UNSP SLC 4 7 [X4 HAS CORE WORD FOR RES SLIP 4 4B7G ) 5 4BM6 #SKI G3 7 4C6Q SLC 4 9 17 4CLB Z7 HUNT2 2,AOBRES,0 [FIND REQUEST SLIP 8 4D62 LDN 5 A1(2) 8 4DKL LDN 6 2(3) 8 4F5= LDX 1 A1(2) 8 4FJW SRL 1 12 18 4G4G ANDN 1 #77 [LENGTH OF REQUEST SLIP 8 4GJ6 MOVE 5 16 17 4H3Q STO 4 5(3) [PRESENT CORE SIZE 18 4HHB SUM 5 0(1) [FORM CHECKSUM OF W+1 WDS 14 4J32 SBS 5 15(3) [... OF W 8 4JGL SMO FX2 9 4K2= LDX 6 AWORK2 8 4KFW LDX 1 FX1 8 4K_G LDN 0 17 10 4LF6 TXL 0 ALOGLEN(2) 15 4LYQ BCS Q1 [JUMP IF SRS 8 4MDB BZE 6 Q2 8 4MY2 Q1 LDN 4 10 8 4NCL CALL 5 YWRIT 8 4NX= STOZ 2(3) 8 4PBW LDN 4 2(3) 8 4PWG LDN 5 3(3) 7 4QB6 MOVE 4 7 9 4QTQ LDX 0 TES(1) 8 4R*B STO 0 2(3) 15 4RT2 STO 6 3(3) [STORE MODES 8 4S#L LDN 6 2(3) 14 4SS= SUM 5 7 [CHECKSUM 16 4T?W NGS 5 9(3) [STORE CHECKSUM 4 4TRG Q2 8 4W?6 LDX 2 FX2 10 4WQQ STOZ EXTPS+2(2) 7 4X=B SMO 7 18 4XQ2 LDX 4 8 [WORD 8 OF OBJECT PROGRAM 10 4Y9L STO 4 EXTPS+4(2) 16 4YP= Z6 STOZ EXTPS+3(2) [CLEAR TEMP COUNT 4 4_8W Z5 20 4_NG LDX 1 7 [ADDRESS OF WORD 0 OF O/P TO X1 10 5286 SMO EXTPS+3(2) 8 52MQ LDN 6 0(1) 14 537B SUM 5 16 [CHECKSUM 17 53M2 BNZ 5 Z2 [J IF NOT ALL ZERO 8 546L LDN 1 16 7 54L= Z3 SBN 6 1 7 555W SMO 6 8 55KG LDX 4 0(1) 7 5656 ADN 6 1 8 56JQ BNZ 4 Z2 8 574B BCT 1 Z3 8 57J2 BRN Z4 8 583L Z2 LDN 4 21 17 58H= CALL 5 YWRIT [X3 -> POS FOR RECORD 9 592W LDX 0 TYPE(1) 16 59GG STO 0 2(3) [SET TYPE WORD 15 5=26 LDX 5 6 [X5 -> RECORD 8 5=FQ LDN 6 4(3) 15 5=_B MOVE 5 16 [MOVE IT IN 8 5?F2 LDX 2 FX2 17 5?YL LDX 0 EXTPS+2(2) [DESTINATION ADDRESS 17 5#D= STO 0 3(3) [STORE DESTINATION 7 5#XW SBN 6 2 8 5*CG SUM 5 18 15 5*X6 NGS 5 20(3) [SET CHECKSUM 14 5BBQ Z4 LDN 5 16 [UPDATE 19 5BWB ADS 5 EXTPS+2(2) [UPDATE DESTINATION ADDRESS 17 5CB2 ADS 5 EXTPS+3(2) [UPDATE TEMP COUNT 16 5CTL LDX 5 EXTPS+3(2) [GET TEMP COUNT 16 5D*= TXL 5 AWORK1(2) [BRANCH IF NOT 16 5DSW BCS Z5 [END OF THIS BLK 5 5F#G #SKI G3 14 5FS6 GETWORD EXTPS+2(2),7,READ,AWORK1(2) 5 5G?Q #SKI G4 4 5GRB ( 4 5H?2 NTUS 10 5HQL LDX 0 EXTPS+2(2) 9 5J== TXL 0 AWORK4(2) 17 5JPW BCC Z4B [J IF REACHED ALIMIT 20 5K9G # WE CHECK FOR SPAS BY ASKING FOR ALL MODES OF ACCESS IN GETWORD 20 5KP6 # TILL RESVIOL REPLY,WHEN WE O/P WARNING & CHANGE TO READ AND 7 5L8Q # USED ONLY 17 5LNB # IF SPA FOUND ,WE O/P WARNING MESSAGE & ASK FOR SUBSET 7 5M82 # FROM THEN ON 15 5MML XGW GETWORDX EXTPS+2(2),7,AWORK3(2),AWORK1(2) 10 5N7= TESTRPN2 RESVIOL,NOSPA 10 5NLW VFREEW ADATA,ERREPLY 16 5P6G MONOUT HSPASV [WARNING MESSAGE 10 5PL6 LDN 5 CHUSED+GREAD 9 5Q5Q STO 5 AWORK3(2) 8 5QKB BRN XGW 5 5R52 NOSPA 4 5RJL ) 17 5S4= TESTREP2 OK,Z6 [J IF NOT FINISHED 5 5SHW #SKI G4 4 5T3G ( 19 5TH6 TESTRPN2 NOTUSED,Z4B [FINISH IF NOT NOTUSED REP 10 5W2Q ... VFREEW ADATA,ERREPLY 9 5WGB LDX 0 AWORK1(2) 16 5X22 ADS 0 EXTPS+2(2) [UPDATE DEST PTR 18 5XFL BRN NTUS [RETURN FOR ALIMIT CHECK 4 5X_= ) 4 5YDW Z4B 7 5YYG LDN 4 5 15 5_D6 CALL 5 YWRIT [GET POINTER 9 5_XQ LDX 5 TEB(1) 16 62CB STO 5 2(3) [ENTRY BLOCK TYPE 10 62X2 LDX 5 EXTPS+4(2) 9 63BL ANDX 5 BITS22LS 15 63W= STO 5 3(3) [ENTRY POINT 9 64*W ADX 5 TEB(1) 8 64TG NGS 5 4(3) 4 65*6 Y3 18 65SQ LDN 6 0 [SET TO OBTAIN FIRS ENTRY 4 66#B Y4 8 66S2 FPCACA 2,FX2 12 67?L HUNT2 3,APERI,APERIRES,2 7 67R= SMO 6 16 68=W LDX 4 A1(3) [NEXT PRB ENTRY 20 68QG BNG 4 Y7 [BRANCH IF NO MORE PERIPHERALS 20 69=6 OUTPACK 4,1,PERINAME [PERIPHERAL NAME -> OUTPUT BLOCK 8 69PQ MONOUT JSAVE 16 6=9B BDX 6 Y4 [BACK FOR NEXT. 19 6=P2 Y7 WORDFIN [MARK PROGRAM AS SWAPPABLE 4 6?8L Y8 16 6?N= CLOSE [CLOSE THE FILE 14 6#7W ENDCOM [FINISH 4 6#MG N0 16 6*76 ACROSS SAVEDA,1 [GO TO SAVE TO DA 5 6*LQ RUNOUT 8 6B6B CLOSEABANDON 7 6BB8 ... WORDFIN 8 6BL2 CALL 3 WRONG 7 6C5L +EREXQUOTA 5 6CK= -1 8 6D4W S1 CALL 3 WRONG 7 6DJG +JPARMIS 7 6F46 +JFNAME 8 6FHQ S2 CALL 3 WRONG 7 6G3B +ERRPERC 5 6GH2 -1 17 6H2L ODEAR CLOSEABANDON [LEAVE FILE AS IT WAS 18 6HG= WORDFIN [SIGNAL END OF GETWORDS 8 6H_W WOOPS CALL 3 WRONG 6 6JFG +BIGSV 5 6J_6 -1 20 6KDQ WRONG COMERRX 0(3),1(3) [O/P ERROR & RETURN TO COM PRO 16 6KYB ZERR GEOERR 1,NOIMAGE [NO CORE IMAGE 3 6L9Q ... 4 6LH6 ...[ 11 6LSG ... MENDAREA 30,K100SAVE 4 6M5W ...[ 4 6MC= #END 8 ____ ...47767313000100000000