ASMB,R,B,L,C,X $EX31 7905 HED EFMP EXEC MODULE NAM $EX31,1,0 7905 ENT $EX31 EXT ERROR, EFCON EXT FTRBE,NXPTL,PNEAD,APN00,DESIZ,DPNO EXT A$BUF EXT NOTRB,NSUWA,WPTRB,NXOTL,NXTFP EXT OPNTB,STSWA,TRBUF,TRBSZ,ARQP1,DPNO EXT OPNT1,PAKSC,TRKIO,SECIO,CNAME,NOSEC EXT OPNSZ,OPNTE,MOVCT,GNS,GSC EXT VALSU EXT MASUB **************************************************** 7905 * * 7905 * REV 4-21-75 * 7905 * * 7905 **************************************************** 7905 SPC 3 $EX31 EQU * NOP DUMMY LDB MD8 STB MOVCT INITIALIZE NO. WORDS TO MOVE LDA ARQP1 ADDR. OF SOURCE LDB AARG1 ADDR. OF DESTINATION JSB MOVE MOVE THE ARRAY LDA ARG2,I ADA AJMPT ADDR. OF JUMP TABLE JMP A,I EXECUTE PROPER FUNCTION AJMPT DEF JMPTB-1,I JMPTB EQU * JUMP TABLE DEF FUN01 FUNCTION 1 DEF FUN02 FUNCTION 2 DEF FUN03 FUNCTION 3 DEF FUN04 DEF FUN05 DEF EFCON DEF FUN07 HED DEFINE FUNCTION * * DEFINE FUNCTION * FUN01 EQU * FUNCTION 1 CLA INVALID SETUP SO FAR STA VALSU VALUE SETUP FLAG LDA ARG3 OPNTB LDB ARG4,I OPNSZ SZB,RSS VALID SIZE TABLE? JSB ER23 NO SSB JSB ER23 CMB ADB D128 SSB,RSS .GE.? JSB ER23 NO LDB ARG4,I OPNSZ JSB CKCLM CHECK CORE LIMIT JSB ER9 OUT-OF-BOUNDS STA OPNTB SAVE POINTER TO OPEND TABLE STA NXPTL NEXT AVAILABLE PACK NO. ENTRY STB OPNSZ SAVE SIZE OF OPENED TABLE ADA B ADA MD1 CALCULATE END ADDR. STA OPNTE END OF OPEN TABLE LDA ARG6 GET ADDR OF NO. OF PACK NO.'S INA LDA A,I GET NO. OF PACK NO.'S SSA NEGATIVE ? JSB ER23 YES LDB D4 JSB MPY CALC. SIZE OF PACK NO. AREA ADA OPNTB START OF TRB ENTRY STA FTRBE SAVE START OF TRB ENTRY SZB OVERFLOW ? JSB ER23 YES LDA ARG6,I NOTRB SZA,RSS JSB ER19 SSA JSB ER19 STA NOTRB NO. OF TEMP. RECD. BUFFERS LDB D3 JSB MPY CALC. NO. WDS. USED ON OPNTB ADA FTRBE START OF OPEN TABLE STA NXOTL NEXT OPEN TABLE LOC. STA OPNT1 START OF OPENED TABLE ADA WPOTE ADD ENOUGH FOR 1 OPEN ENTRY SZB OVERFLOW? JSB ER23 YES CMA,INA ADA OPNTE END OF OPEN TABLE SSA ENOUGH ROOM JSB ER23 NO LDA D128 WDS/SECT. LDB ARG7,I TRBSZ SZB,RSS JSB ER23 SSB JSB ER23 CPB D1 JSB ER23 STB TRBSZ SAVE TEMP. RCD. BUFF. SIZE JSB MPY CONVERT SECTORS TO WORDS SZB JSB ER23 SSA JSB ER23 STA WPTRB WORDS IN 1 TRB LDB NOTRB JSB MPY CALC. TOTAL WDS. IN TRB SZB JSB ER23 SSA JSB ER23 STA TWTRB TOTAL WORDS IN TRB'S LDB A LDA ARG5 POINTER TO TRB JSB CKCLM CHECK CORE LIMITS JSB ER9 OUT-OF-BOUNDS STA TRBUF CMA,INA ADA OPNTE END OF OPEN TABLE SSA TRBUF .GT. OPNTE JMP TRBOK YES, NO OVERLAP LDA TRBUF ADDR. OF TRB ADA TWTRB CALC. END OF TRB CMA,INA +1 ADA OPNTB START OF OPEN TABLE SSA END OF TRBUF .LT. OPNTB JSB ER23 NO, THEN OVERLAP TRBOK EQU * LDA NOTRB NO. TRB LDB D3 JSB MPY CALC. NO. WDS. USED IN OPNTB CMA,INA LDB FTRBE GET START OF FIRST TRB ENTRY JSB STZ ZERO OUT TRB ENTRY AREA LDA NOTRB CMA,INA STA DEFIN SET UP INDEX LDA TRBUF START OF TRB LDB FTRBE GET START OF FIRST TRB ENTRY STA B,I SET UP POINTER TO EACH TRB ADB D3 BIAS FOR NEXT POINTER ADA WPTRB NO. WDS/TRB ISZ DEFIN FINISHED W/ ALL OF TRB POINTERS JMP *-4 NO CCA VALID SETUP STA VALSU VALID SETUP FLAG JMP EFCON RETURN TO MAIN DEFIN OCT 0 TEMP STORAGE HED CREATE FUNCTION * * CREATE FUNCTION * FUN02 EQU * FUNCTION 2 JSB CKVSU CHECK IF VALID DEFINE PREVIOUSLY JSB CKNAP CHECK NAME AND PACK NO. SZA,RSS PN000 ? JMP SSUBC YES SSA TRY ALL PACKS ? JMP CGTPN YES CLA,INA SEARCH FOR EXISTING ENTRY LDB ARG4,I GET SPECIFIC PACK NO. JSB CKPNT PACK NO. IN OPEN TABLE ? RSS NO. JMP SEDIR YES CGTPN EQU * LDA ADPNE GET ADDR OF DUMMY PACK NO. ENTRY STA PNEAD STORE ADDR LDA ARG4,I GET PACK NO. JSB GETPN PACK NO. FOUND ? JSB ER6 NO INPNE EQU * STB SVAEN SAVE ENTRY ADDR JSB SVPNS SAVE PACK NO. SEARCH ENVIRONMENT LDB SVAEN RESTORE ENTRY ADDR ADB D3 INCREMENT TO T/S START FIELD LDA B,I GET START T/S OF EFMP AREA LDB PNEAD ADDR OF PACK NO. ENTRY STA B,I STORE STARTING T/S SEDIR EQU * JSB SETD1 SET UP FOR EFMP SEARCH JSB SRCDR SEARCH DIRECTORY RSS FILE NAME NOT FOUND JSB ER2 DUPLICATE FILE NAME STB NXTFP SAVE NEXT FILE LOC. JSB REQS? CALCULATE SECTORS NEEDED JSB CKSPC ENOUGH SPACE ? JMP MORPK NO LDA MXWPE EFMP ENTRY DIRECTORY SIZE JSB CKDSP ENOUGH DIRECTORY/FILE SPACE ? RSS NO JMP EFCON YES SZA,RSS NO FILE SPACE JMP MORPK YES LDA ARG4,I GET PACK NO. SSA,RSS TRY ALL PACKS ? JSB ER24 NO JMP NXTPN CONTINUE SEARCH MORPK EQU * LDA ARG4,I GET PACK NO. SSA,RSS TRY ALL PACKS ? JSB ER4 NO NXTPN EQU * JSB REPNS RESTORE PACK NO. SEARCH ENVIRONMENT JSB GTNPN CONTINUE PACK SEARCH JSB ER14 NO PACK AVAILABLE JMP INPNE PACK FOUND SPC 1 SSUBC EQU * CLA,INA SEARCH FOR ACTIVE ENTRY INDICATRO LDB ARG4,I GET PACK NO. JSB CKPNT PACK NO. IN OPEN TABLE ? JMP NENTF NO CLA ENTRY FOUND SWITCH STA PNESW STORE SWITCH JMP COPTE NENTF EQU * CLA SEARCH FOR AVAILABLE ENTRY INDICATOR JSB CKPNT PACK NO. ENTRY AVAILABLE ? JSB ER16 NO CLA,INA NEW ENTRY USED SWITCH STA PNESW STORE SWITCH LDA SYSSC GET SYSTEM SUBCHANNEL STA PAKSC STORE IT JSB SETD2 SET UP FOR DOS-M SEARCH LDB APN00 GET PACK NO. JSB SRCDR SEARCH FOR PN000 RSS PN000 NOT FOUND JMP BPNE GO BUILD PACK NO. ENTRY JSB CRPN0 CREATE PN000 JMP COPTE BPNE EQU * ADB D3 INCREMENT TO STARTING T/S FIELD LDA B,I GET STARTING T/S STB SVAEN SAVE DIRECTORY ENTRY ADDR LDB PNEAD GET PACK NO. ENTRY ADDR STA B,I STORE STARTING T/S IN PACK NO. ENTRY STA STSWA STORE STARTING T/S LDB SVAEN RESTORE DIRECTORY ENTRY ADDR INB INCREMENT TO SIZE FIELD LDA B,I GET SIZE FO PN000 LDB PNEAD GET ADDR OF PACK NO. ENTRY INB INCREMENT TO SIZE FIELD IN PACK NO. ENTRY STA B,I STORE PN000 SIZE IN PACK NO. ENTRY INB INCREMENT TO DIRECTORY SIZE FIELD LDA SECTR GET DIRECTORY SIZE ADA MD1 STA B,I STORE DIRECTORY SIZE IN PACK NO. ENTRY INB INCREMENT TO LSA FIELD CLA LSA IS ZERO STA B,I STORE LSA IN PACK NO. ENTRY STA NSUWA STORE LSA COPTE EQU * JSB REQS? CALCULATE SECTORS NEEDED JSB CKSPC IS SUFFICIENT SPACE AVAILABLE ? JSB ER17 NO LDB ARG3 GET ADDR OF FILE NAME JSB CKOPN CHECK IF OPEN RSS NOT OPEN JSB ER2 DUPLICATE NAME LDA B NEXT OPEN TABLE LOCATION CPA OPNTE END OF O.T.? JSB ER18 YES CMA,INA ADA OPNTE CALC. NO. WDS. LEFT IN O.T INA ADA MWPOT (-) WORDS PER OPEN TABLE ENTRY SSA O.T FULL JSB ER18 YES, NO OPEN BUFFER SPACE AVAIL. LDA MXWPE GET ENTRY SIZE STA DESIZ STORE ENTRY SIZE STB NXTFP ADDR OF DIRECTORY ENTRY JSB PKDIR PACK DIRECTORY LDB NXTFP GET START OF OPEN TABLE ENTRY CLA ADB D6 INCREMENT TO SECURITY FIELD STA B,I SECURITY CODE ADB D4 STA B,I PACK NO. INB INA STA B,I TRB NO. INB LDA SYSSC SYST. SUB CH. STA B,I SUB. CH. INB CLA STA B,I T/S CURRENTLY IN CORE INA INITL. TO RECD. NO. 1 INB STA B,I NEXT RECD. BEING PROCESSED CLA INB STA B,I "HRA" IN CORE INB STB NXOTL SAVE NEXT OPEN TABLE LOCATION LDA NXTFP GET ADDR OF NEXT FILE POSITION JSB STPNO STORE PACK NO. OFFSET LDA NXTFP GET ADDR OF FILE ENTRY JSB SFSTS STORE STARTING T/S LDB PNEAD GET PACK NO. ENTRY ADB D3 INCREMENT TO LAST SECTOR ALLOCATED LDA B,I GET THE NEW LSA STA NSUWA STORE NEW LSA LDA PNESW GET PACK NO. ENTRY USED SWITCH SZA,RSS NEW ENTRY USED ? JMP EFCON NO LDA NXPTL UPDATE NEXT ENTRY AVAILABLE ADDR ADA D4 STA NXPTL JMP EFCON HED MISC. CREATE ROUTINES SPC 3 * REQS? - CALC. NO. OF SECTORS IN A FILE * ENTER: * ARG5,I = FILE LENGTH (IN RECORDS) * ARG6,I = RECORD LENGTH (IN WORDS) * EXIT: * A = NO. OF SECTORS * NOSEC = NO. OF SECTORS * REQS? NOP CALC. REQ. NO. OF SECTORS LDA ARG5,I FILE LENGTH (IN RECORDS) SZA,RSS JSB ER23 INVALID FILE LENGTH SSA JSB ER23 INVALID FILE LENGTH LDB ARG6,I RECORD LENGTH (IN WORDS) SZB,RSS JSB ER5 INVALID RECORD LENGTH SSB JSB ER5 INVALID RECORD LENGTH RBL SSB JSB ER5 CMB,INB ADB WPTRB WDS/TRB SSB .GT. ONE-HALF TRB JSB ER26 YES LDB ARG6,I JSB MPY CALC. FILE LENGTH IN WORDS JSB DIV CALC. FILE LENGTH IN SECTORS DEF D128 SOC OVERFLOW? JSB ER23 YES, INVALID ARGUEMENTS SZB PART OF ADDITIONAL SECTOR USED? INA YES STA NOSEC SAVE NO. OF SECTORS JMP REQS?,I RETURN HED DESTROY FUNCTION * * DESTROY * FUN03 EQU * JSB CKVSU CHECK IF VALID DEFINE PREVIOUSLY JSB CKNAP CHECK NAME AND PACK NO. SZA,RSS PN000 ? JMP SYSTP YES SSA TRY ALL PACKS ? JMP STDPN YES LDB ARG3 GET ADDR OF FILE NAME JSB CKOPN FILE OPEN ? RSS NO JMP RDSEC YES SRPNT EQU * CLA,INA PACK NO. ENTRY ACTIVE SWITCH LDB ARG4,I PACK NO. JSB CKPNT PACK NO. IN OPEN TABLE RSS NO JMP SNDIR SEARCH NEXT DIRECTORY STDPN EQU * LDA ADPNE GET ADDR OF DUMMY PACK NO. ENTRY STA PNEAD STORE ADDR LDA ARG4,I GET PACK NO. JSB GETPN PACK NO. AVAILABLE ? JSB ER6 NO INTP1 EQU * STB SVAEN SAVE ENTRY ADDR JSB SVPNS SAVE PACK NO. SEARCH ENVIRONMENT LDB SVAEN RESTORE ENTRY ADDR ADB D3 INCREMENT TO STARTING T/S FIELD LDA B,I GET STARTING T/S LDB PNEAD GET ADDR OF PACK NO. ENTRY STA B,I STORE STARTING T/S SNDIR EQU * JSB SETD1 SET UP FOR EFMP SEARCH JSB SRCDR FILE IN DIRECTORY ? RSS NO JMP DSENT YES LDA ARG4,I GET PACK NO. SSA,RSS TRY ALL PACKS ? JSB ER3 NO JSB REPNS RESTORE PACK NO. SEARCH ENVIRONMENT JSB GTNPN CONTINUE SEARCH JSB ER6 NO PACK NO. AVAILABLE JMP INTP1 SEARCH DIRECTORY RDSEC EQU * ADB D10 INCREMENT TO PACK NO. FIELD LDA ARG4,I GET PACK NO. CPA B,I PACK NO.'S EQUAL ? RSS YES JMP SRPNT NO ADB D2 GET FILE SUBCHANNEL LDA B,I STA PAKSC SAVE SUBCHANNEL ADB MD12 BACK UP TO START OF ENTRY JSB GETDE GET DIRECTORY ENTRY LDB CNAME GET CURRENT ENTRY ADDR DSENT EQU * STB FILPO FILE POSITION ADB D6 LDA B,I PICK UP SECURITY CODE CPA ARG5,I VALID? RSS YES JSB ER7 LDB FILPO FILE POSITION LDA INVCH INVALID CHAR. STA B,I INB STA B,I INB STA B,I CLA,INA WRITE SWITCH LDB PAKSC GET SUBCHANNEL JSB PRWIO WRITE DIRECTORY ENTRY LDB ARG3 GET ADDR OF FILE NAME JSB CKOPN FILE OPEN ? JMP EFCON NO LDA DPNO GET PACK NO. ADB D10 INCREMENT TO OPEN TABLE PACK NO. CPA B,I PACK NO.'S EQUAL ? RSS YES JMP EFCON NO ADB MD8 BACK UP TO PACK NO. OFFSET FIELD LDA B,I GET PACK NO. OFFSET STA SVPNO SAVE OFFSET ADB MD2 BACK UP TO START OF OPEN TABLE ENTRY JSB MOVOT LDA SVPNO GET PACK NO. OFFSET JSB MVPNT UPDATE PACK NO. ENTRY TABLE JMP EFCON RETURN SYSTP EQU * SYSTEM PACK LDB ARG3 GET ADDR OF FILE NAME JSB CKOPN CHECK IF FILE OPENED JSB ER3 NAME NOT IN WORK AREA STB FILPO SAVE FILE POSITION ADB D10 INCREMENT TO PACK NO LDA B,I GET PACK NO. SZA PN000 ? JSB ER15 NO JSB POST POST ALL TRB'S JSB RPWKA REPACK WORK AREA JMP EFCON RETURN TO MAIN SPC 1 * * REPACK DISC * RPWKA NOP REPACK WORK AREA LDA STSWA STARTING T/S IN WORK AREA JSB T.STS CONV. TO SECTORS ADA NSUWA NO. SECT. USED IN WORK AREA JSB STT.S CONV. TO T/S LDB SYSSC SYSTEM SUB CH. STB DISSC DESIRED SUB CH. LDB FILPO FILE POSITION JSB RPDIS REPACK DISC JMP UDNSU UPDATE NO. SECT. USED IN WK AREA STA FILPO+1 SAVE SUB LENGTH MOVED LDB FILPO FILE POSITION IN OPEN TABLE STB FILSE CURRENT FILE POSITION IN O.T. ADB D3 LDA B,I T/S OF FILE TO BE DELETED JSB T.STS CONV. TO SECTORS STA FILSE+1 MINOT EQU * MORE IN O.T. LDB FILSE CURRENT FILE POSITION IN O.T. ADB WPOTE WORDS PER O.T. ENTRY LDA B CMA ADA NXOTL NEXT O.T. LOC. SSA .GE.? (FINISHED?) JMP UDNSU+1 FINISHED,UPDATE NO. SECT. USED STB FILSE NEW FILE POSITION ADB D10 LDA B,I PACK NO. SZA FILE IN WORK AREA? JMP MINOT NO ADB MD7 LDA B,I T/S IN WORK AREA JSB T.STS CONV. TO SECT. CMA ADA FILSE+1 STARTING T/S OF ORIGINAL FILE SSA,RSS THIS AREA .GE. AREA MOVED? JMP MINOT NO LDA B,I OLD T/S JSB T.STS CONV. TO SECTORS ADA FILPO+1 SUB. LENGTH MOVED JSB STT.S CONV. BACK TO T/S STA B,I NEW T/S FOR START OF FILE INFO. JMP MINOT MORE IN OPEN TABLE UDNSU EQU * UPDATE NO. SEC. USED IN WK AREA STA FILPO+1 SAVE SUB LENGTH MOVED LDB FILPO FILE POSITION IN O.T. ADB D2 INCREMENT TO PACK NO. OFFSET FIELD LDA B,I GET PACK NO. OFFSET STA SVPNO SAVE PACK NO. OFFSET ADB MD2 BACK UP TO START OF ENTRY JSB MOVOT MOVE SUBSEQUENT O.T. ENTRIES LDA SVPNO GET PACK NO. OFFSET JSB MVPNT UPDATE PACK NO. TABLE LDA NSUWA NO. SECT. USED IN WORK AREA ADA FILPO+1 SUB. LENGTH MOVED STA NSUWA CLA,INA SEARCH FOR ACTIVE ENTRY CLB PACK NO. OF 0 JSB CKPNT PACK NO. ENTRY FOUND ? JMP RPWKA,I NO LDA NSUWA GET NEW LSA LDB PNEAD GET ADDR OF PACK NO. ENTRY ADB D3 INCREMENT TO LSA FIELD STA B,I STORE NEW LSA IN PACK NO. ENTRY JMP RPWKA,I RETURN ADPNE DEF DPNE ADDR OF DUMMY PACK NO. ENTRY DPNE BSS 4 DUMMY PACK NO. ENTRY SVPNO BSS 1 SAVE FOR OFFSET SVAEN BSS 1 SAVE FOR ENTRY ADDR FILPO OCT 0,0 FILE POSITION FILSE OCT 0,0 FILE SECTOR HED OPEN FUNCTION * * OPEN FUNCTION * FUN04 EQU * JSB CKVSU CHECK IF VALID DEFINE PREVIOUSLY JSB CKNAP CHECK NAME AND PACK NO. SZA PN000 ? RSS NO JMP OTMFL YES LDB ARG3 GET FILE NAME JSB CKOPN FILE OPEN ? RSS NO JSB ER25 YES LDA NXOTL GET NEXT OPEN TABLE ENTRY ADA WPOTE ADD SIZE OF ENTRY ADA MD1 CMA,INA ADA OPNTE ROOM FOR NEW ENTRY ? SSA YES JSB ER18 NO LDB ARG4,I GET PACK NO. SSB,RSS TRY ALL PACKS ? JMP SOPNT NO LDA ADPNE GET ADDR OF DUMMY PACK NO. ENTRY STA PNEAD STORE ADDR JMP GFSPN SOPNT EQU * CLA,INA SEARCH FOR ACTIVE ENTRY LDB ARG4,I GET PACK NO. JSB CKPNT PACK NO. IN TABLE RSS NO JMP SPNE1 YES CLA SEARCH FOR AVAILABLE ENTRY JSB CKPNT ENTRY AVAILABLE ? JSB ER16 NO CLA NEW ENTRY SWITCH STA PNESW STORE SWITCH GFSPN EQU * LDA ARG4,I GET PACK NO. JSB GETPN PACK NO. AVAILABLE ?