ASMB,R,B,L,C,X $EX32 7905 HED EFMP EXEC MODULE NAM $EX32,1,0 7905 ENT $EX32 EXT ERROR, EFCON EXT AINVC,NSUWA,FTRBE,CNAME,PNEAD,OPNTB EXT TRBSZ,ARQP1,NOPAS,EBIAS,GTNXE,DPNO,PN EXT PAKSC,MOVCT,APN00,GSC,GNS EXT MASUB,SRCDR,A$BUF **************************************************** 7905 * * 7905 * REV 4-21-75 * 7905 * * 7905 **************************************************** 7905 SPC 3 $EX32 EQU * NOP DUMMY LDB MD8 STB MOVCT NO. WORDS TO MOVE LDA ARQP1 ADDR. OF SOURCE LDB AARG1 ADDR. OF DEST. JSB MOVE MOVE THE ARGS. LDA ARG2,I FUNCTION NO. ADA AJMPT JMP A,I EXECUTE PROPER FUNCTION AJMPT DEF JMPTB-6,I JMPTB EQU * DEF FUN06 DEF EFCON DEF FUN08 FUNCTION 8 DEF FUN09 DEF FUN10 DEF EFCON DEF EFCON DEF FUN13 HED READ FUNCTION * * READ FUNCTION * FUN06 EQU * JSB CKVSU CHECK IF VALID DEFINE PREVIOUSLY JSB CKINL CHECK AND INITIALIZE PARA. AND TRB READ1 EQU * LDB RFLPO READ-FILE POSITION JSB CALAV CALCULATE ALL NECESSARY VALUES JSB CKEOF CHECK IF END-OF-FILE JSB ER21 END-OF-FILE JSB CKRNO CK. RECORD NO. IN CORE JMP READ2 DESIRED R.N. OUT OF RANGE OF TRB JSB CALMV CALC. NO. WDS. TO MOVE LDB ARG5 DESTINATION BUFFER JSB MOVE LDB RFLPO READ FILE POSITION ADB D14 LDA DESRN DESIRED R.N. INA STA B,I UPDATE N.R. TO BE PROCESSED JMP EFCON RETURN TO MAIN READ2 EQU * JSB PST1T POST IF NECESSARY JSB RDTS READ DESIRED T/S JMP READ1 SPC 3 * CALMV - CALC. MOVE ADDR. * ENTER: * VALUES FROM CALAV * EXIT: * A = POINTER TO CORRECT TRB * CALMV NOP CALC. MOVE ADDR LDA RLGTH RECORD LENGTH IN WORDS CMA,INA STA MOVCT PACK NO. OF WDS. TO MOVE LDA STRNO STARTING RECD. NO. CMA,INA ADA DESRN DESIRED RECD. NO. LDB RLGTH JSB MPY CALC. RECORD LENGTH IN WORDS OCT 0 OCT 103001 FOR DEBUGGING ADA STRPO STARTING RECORD POSITION JMP CALMV,I RETURN HED WRITE FUNCTION * * WRITE FUNCTION * FUN08 EQU * JSB CKVSU CHECK IF VALID DEFINE PREVIOUSLY CLA STA DESRN+1 INITIALIZE FLAG JSB CKINL CHECK AND INITIALIZE PARA. AND TRB WRIT1 EQU * LDB RFLPO READ-FILE POSITION JSB CALAV CALC. ALL NECESSARY VALUES JSB CKEOF CHECK IF END-OF-FILE JMP EOFWR END-OF-FILE WRITE WRIT3 EQU * JSB CKRNO CHECK RECORD NOS. IN CORE JMP RNXTS OUT-OF-RANGE, READ NEXT T/S JSB CALMV CALC. MOVE ADDR. LDB A DESTINATION LDA ARG5 SOURCE JSB MOVE "WRITE" PROPER RECORD LDB CTRBP CURRENT TRB POINTER INB CLA,INA STA B,I SET "MUST BE WRITTEN" FLAG LDB RFLPO READ FILE POSITION ADB D15 LDA DESRN DESIRED RECD. NO. CMA,INA ADA B,I HIGHEST RECD. NO. WRITTEN IN CORE SSA DESIRED .GT. HIGHEST? JMP UDHRW YES, UPDATE HRW IN CORE WRIT2 EQU * ADB MD1 LDA DESRN DESIRED R.N. INA STA B,I NEXT RECORD TO BE ACCESSED CMA,INA ADA FINRN FINAL RECD. NO. SSA NEXT .GT. FINAL(LAST RCD WRT) JSB PST1T YES, POST 1 TRB JMP EFCON RETURN TO MAIN UDHRW EQU * UPDATE HI RECD. WRITTEN IN CORE LDA DESRN DESIRED R.N. STA B,I BUMP "HRW" INTO CORE JMP WRIT2 SPC 1 EOFWR EQU * END-OF-FILE WRITE ATTEMPT LDB RFLPO READ-FILE POINTER ADB D4 LDA DESRN DESIRED R.N. CMA,INA ADA B,I FILE SIZE SSA .GT. ABSOLUTE EOF? JSB ER21 YES, END-OF-FILE ADB D11 LDA DESRN+1 SZA INSERT ZEROS PASS? JMP INSZR YES LDA B,I "HRW" IN CORE INA CPA DESRN WRITE NEXT HIGHEST RECORD? JMP WRIT3 YES * ZEROS MUST BE INSERTED IN BETWEEN RECORDS LDB DESRN REAL DESIRED R.N. STB DESRN+1 SAVE AS FLAG STA DESRN "HRW"+1 IS TEMP. DESIRED INSZR EQU * JSB CKRNO CHECK IF R.N. IN CORE JMP RNXTS NOT IN CORE, READ IT LDA DESRN "DESIRED" CMA ADA DESRN+1 REAL SSA,RSS "DESIRED" .GE. REAL? JMP INSZ1 NO LDA DESRN+1 REAL DESIRED R.N. STA DESRN RESTORE IT CLA STA DESRN+1 RESET FLAG JMP WRIT1 INSZ1 EQU * JSB CALMV CALC. MOVE ADDR. STA B LDA RLGTH RECORD LGTH. (IN WORDS) CMA,INA JSB STZ FILL 1 RECORD W/ ZEROS LDB CTRBP CURRENT TRB POINTER INB CCA STA B,I SET "MBW" FLAG LDB RFLPO READ-FILE POSITION ADB D14 ISZ B,I NEXT RECD BEING PROCESSED INB ISZ B,I "HRW" IN CORE ISZ DESRN BUMP "DESIRED" R.N. JMP WRIT1 RNXTS EQU * READ NEXT T/S JSB PST1T POST IF NECESSARY JSB RDTS READ DESIRED T/S JMP WRIT1 HED GENERAL READ/WRITE ROUTINES CKINL NOP CHECK INITIALIZATION PARAMETERS LDA ARG3 ADDR. OF F.N. JSB NAM0? CHECK IF ZERO LDB ARG3 ADDR. OF F.N. JSB CKOPN FILE OPEN? JSB ER11 NO STB RFLPO READ-FILE POSITION ADB D14 LDA ARG4,I RECORD NO. SSA,RSS BACKSPACE? JMP CKN2 NO ADA B,I NEXT RECORD TO BE PROCESSED SSA JSB ER13 SZA,RSS JSB ER13 JMP CKN1 CKN2 EQU * SZA,RSS SEQUENTIAL R/W? LDA B,I YES, GET NEXT RCD. TO BE PROCESSED CKN1 EQU * STA DESRN PACK DESIRED R.N. LDA RFLPO FILE POSITION ADA D5 LDB A,I RECORD LENGTH (IN WORDS) LDA ARG5 BUFFER AREA JSB CKCLM CHECK CORE LIMITS JSB ER9 OUT-OF-LIMITS LDB RFLPO FILE POSITION ADB D11 LDA B,I TRB NO. ADA MD1 LDB D3 JSB MPY ADA FTRBE START OF TRB ENTRIES STA CTRBP CURRENT TRB POSITION LDB CTRBP CUR. TRB POINTER ADB D2 STB CKIN1 SAVE POINTER TO FILE TEMPORARILY LDA B,I CPA RFLPO THIS TRB FOR THIS FILE? JMP CKN3 YES JSB PST1T POST IF NECESSARY LDA RFLPO STA CKIN1,I INITL. TRB FOR THIS FILE CKN3 EQU * LDB RFLPO READ-FILE POSITION JMP CKINL,I RETURN CKIN1 OCT 0 TEMP STROAGE SPC 3 * CKEOF - CHECK IF ATTEMPTED WRITE AFTER END-OF-FILE * EXIT: * P+1 = END-OF-FILE * P+2 = VALID POSITION * CKEOF NOP CHECK FOR END-OF-FILE LDB RFLPO READ-FILE POSITION. ADB D15 LDA B,I HIGHEST R.N. WRITTEN INTO CORE SZA 1ST PASS? JMP *+5 NO ADB MD7 LDA B,I HIGHEST R.N. WRITTEN ONTO DISC SZA,RSS 1ST PASS? JMP CKEOF,I YES, EOF CMA ADA DESRN DESIRED R.N. SSA IS DES. R.N. .LT. HRW? ISZ CKEOF YES, P+2 JMP CKEOF,I NO, END-OF-FILE RETURN SPC 3 * CKRNO - CHECK IF R.N. IN CORE * EXIT: * P+1 = READ NEXT T/S * P+2 = RECORD NO. IN CORE * CKRNO NOP CHECK IF R.N. IN CORE LDB RFLPO READ-FILE POSITION ADB D13 LDA B,I T/S CUR. IN CORE SZA,RSS 1ST TIME THRU? JMP CKRNO,I YES, READ NEW T/S LDA DESRN DESIRED R.N. CMA ADA STRNO "START" R.N. SSA,RSS DES. .LT. START? JMP CKRNO,I YES, READ NEXT T/S LDA DESRN DESIRED R.N. CMA,INA ADA FINRN "FINAL" R.N. SSA DES. .GT. FINAL? JMP CKRNO,I YES, READ NEXT T/S ISZ CKRNO P+2 JMP CKRNO,I RETURN SPC 3 RDTS NOP READ DESIRED T/S LDA DESRN DESIRED R.N. ADA MD1 LDB RLGTH JSB MPY JSB DIV DEF D128 SOC OVERFLOW? JSB ER23 YES, ERROR SHOULD NOT OCCUR STA B SAVE NO. SECT TO REACH R.N. LDA RFLPO READ-FILE POSITION ADA D3 LDA A,I PICK UP STARTING T/S JSB T.STS CONV. TO SECTORS ADA B DESIRED NO. SECT TO REACH R.N. JSB STT.S CONV. BACK TO T/S LDB TRBSZ NO. OF SECT/TRB STB GNS NO. SECT. FOR GENERAL R/W LDB RFLPO READ-FILE POSITION ADB D13 STA B,I UPDATE NEW T/S IN CORE ADB MD1 LDB B,I SUB. CH. NO. STB GSC SUB. CH. FOR GENERA R/W LDB CTRBP,I PICK UP POINTER TO O.T. JSB GRTXX READ T/S W/ DESIRED R.N. LDB RFLPO READ-FILE POSITION * REINITIALIZE PART OF TRIPLET BECAUSE OF POSSIBLE POSTING LDA CTRBP CUR. TRB POINTER ADA D2 STB A,I POINTER TO FILE IN O.T. JMP RDTS,I RETURN SPC 3 PST1T NOP POST 1 TRB IF NECESSARY LDB CTRBP CURRENT TRB POSITION JSB POSTW POST WRITE IF NECESSARY JMP PST1T,I RETURN DESRN OCT 0,0 DESIRED RECORD NO. RFLPO OCT 0 READ-FILE POSITION (WRITE ALSO) SKP * CALAV - CALC. ALL VALUES PERTINENT TO READ/WRITE ROUTINES * ENTER: * B = FILE POSITION IN OPEN TABLE * EXIT: * RLGTH = RECORD LENGTH (IN WORDS) * STRNO = STARTING RECORD NO. FOR CURRENT T/S * STRPO = STARTING RECORD NO. POSITION * FINRN = FINAL RECORD NO. FOR CURRENT T/S * CALAV NOP CALC. ALL VALUES FOR R/W ROUTINES STB CALPO FILE POSITION FOR THIS ROUTINE ADB D5 LDB B,I RECORD LENGTH (IN WORDS) STB RLGTH LDB CALPO FILE POSITION ADB D13 LDA B,I T/S CURRENTLY IN SZA,RSS 1ST PASS? ADB MD10 YES,BIAS BACK TO START T/S LOC LDA B,I T/S "CURRENTLY IN" JSB T.STS CONV. TO SECT. STA B LDA CALPO FILE POSITION ADA D3 LDA A,I STARTING T/S FOR THIS FILE JSB T.STS CONV. TO SECTORS CMA,INA ADA B CALC. DELTA SECTORS STA DELTS SAVE DELTA SECTORS ADA TRBSZ TRB SIZE (IN SECT.) LDB D128 JSB MPY JSB DIV DEF RLGTH SZA,RSS JSB ER26 RECORD LENGTH .GT. 1 TRB SOC OVERFLOW? LDA MAXRC MAX. RECORD NO. STA FINRN SAVE FINAL RECORD NO. LDA DELTS DELTA SECTORS LDB D128 JSB MPY JSB DIV DEF RLGTH SOC OVERFLOW? JSB ER23 YES, ERROR SHOULD NOT OCCUR INA SZB INA STA STRNO STARTING RECORD NO. CMB,INB SZB ADB RLGTH RECD. LENGTH (IN WORDS) ADB CTRBP,I CUR. TRB POSITION STB STRPO STARTING RECORD POSITION JMP CALAV,I RETURN CALPO OCT 0 FILE POSITION RLGTH OCT 0 RECORD LENGTH (IN WORDS) DELTS OCT 0 DELTA SECTORS FINRN OCT 0 FINAL RECORD NO. STRNO OCT 0 STARTING RECORD NO. STRPO OCT 0 STARTING RECORD POSITION CTRBP OCT 0 CURRENT TRB POSITION HED RESET FUNCTION * * RESET FUNCTION * FUN09 EQU * JSB CKVSU CHECK IF VALID DEFINE PREVIOUSLY LDA ARG3 ADDR OF FILE NAME JSB NAM0? CHECK NAME LDB ARG3 ADDR. OF FILE NAME JSB CKOPN OPEN? JSB ER11 NO STB REST1 SAVE OPEN TABLE ENTRY ADDR. ADB D10 INCREMENT TO PACK NO. LDA ARG4,I GET REQUESTED PACK NO. SSA,RSS PACK # = -1;SCAN ALL PACKS 7905 CPA B,I PACK NO.'S EQUAL ? RSS YES JSB ER15 NO JSB POST POST TRB LDB REST1 GET OPEN TABLE ENTRY ADDR ADB D10 INCREMENT TO PACK NO. LDA B,I GET PACK NO. SZA,RSS PN000 ? JMP CRINC YES ADB D2 INCREMENT TO SUBCHANNEL FIELD LDA B,I GET THE SUBCHANNEL STA PAKSC INITIALIZE SUBCHANNEL LDB REST1 GET OPEN TABLE ENTRY ADDR JSB GETDE READ DIRECTORY ENTRY LDB CNAME GET ADDR OF ENTRY ADB D8 BIAS TO "HRA" ON DISC LDA ARG5,I RECORD NO. STA B,I CHANGE "HRA" ON DISC JSB CNGRN CHANGE RECORD NO. CLA,INA WRITE INDICATOR LDB PAKSC SUBCHANNEL JSB PRWIO WRITE BACK DIRECTORY ENTRY JMP EFCON RETURN TO MAIN CRINC EQU * CHANGE RECORD IN CORE JSB CNGRN CHANGE RECORD NO. JMP EFCON RETURN TO MAIN SPC 1 CNGRN NOP CHANGE RECORD NO. LDA ARG5,I RESET RECORD NO. SSA VALID? JSB ER10 NO CMA,INA LDB REST1 GET ADDR OF OPEN TABLE ENTRY ADB D15 INCREMENT TO HRA IN CORE FIELD ADA B,I "HRA" SSA .LE.? JSB ER10 NO LDA ARG5,I RESET RECORD NO. STA B,I RESET RECORD ADB MD7 BIAS TO "HRA" ON DISC STA B,I CHANGE "HRA" ON DISC ADB D6 INCREMENT TO NXT RECD FIELD CMA,INA ADA B,I SSA RESET NO. < NXT RECD TO PROCESS ? JMP CNGRN,I NO SZA,RSS JMP CNGRN,I NO LDA ARG5,I GET RESET NO. INA INCREMENT FOR NEXT RECD TO PROCESS STA B,I STORE NEW NEXT RECD TO PROCESS VALUE JMP CNGRN,I REST1 OCT 0,0,0 SECT. NO. HED STATUS FUNCTION * * STATUS FUNCTION * FUN10 EQU * JSB CKVSU CHECK IF VALID DEFINE PREVIOUSLY LDA ARG3,I STATUS FUNCTION NO. SSA JSB ER23 CMA,INA ADA NOSTF NO. OF STATUS FUNCTIONS SSA .GT. MAX NO.? JSB ER23 LDA ARG3,I FUNCTION NO. SZA,RSS JSB ER23 ADA ASTAT ADDR.OF STATUS FUNCTION TABLE JMP A,I ASTAT DEF *,I DEF STAT1 DEF STAT2 DEF STAT3 DEF STAT4 DEF STAT5 DEF STAT6 DEF STAT7 NOSTF ABS *-ASTAT-1 NO. OF STATUS FUNCTIONS SPC 3 STAT1 EQU * FILE DIRECTORY INFORMATION JSB POST JSB STAPN SEARCH FOR PACK NO. JMP S1PAK SYSTEM PACK JSB SRCD2 FILE FOUND? JSB TNXTP NO STA1A EQU * STB SFILP STATUS-FILE POSITION LDA ARG7 ADDR. OF STATB LDB MXWPE MAX. WDS/ENTRY INB JSB CKCLM CHECK CORE LIMITS JSB ER9 OUT-OF- LIMITS LDA SFILP STATUS-FILE POSITION LDB MXWPE MAX. WDS/ENTRY CMB,INB STB MOVCT NO. OF WORDS TO MOVE LDB ARG7 ADDR. OF STATB INB JSB MOVE MOVE DIR. INFO. TO STATB+1 ADB MD3 CLA STA B,I CLEAR SECURITY CODE LDA ARG5,I PAKNO SSA,RSS ALL PACKS? JMP EFCON NO, RETURN TO MAIN LDA DPNO GET PACK NO. STA ARG7,I PACK STATB JMP EFCON RETURN TO MAIN S1PAK EQU * JSB TFOPN CHECK IF TEMP. FILE OPEN JMP STA1A SFILP OCT 0 STATUS-FILE POSITION SPC 1 TFOPN NOP CHECK IF TEMP. FILE OPEN LDB ARG4 ADDR OF FILE NAME JSB CKOPN CHECK IF FILE OPEN JSB ER3 NOT OPEN ADB D10 LDA B,I PACK NO. SZA SYSTEM PACK? JSB ER3 NO ADB MD10 JMP TFOPN,I RETURN SPC 3 STAT2 EQU * OPENED FILE? LDB D2 NO. WDS TO CHECK JSB CKSLM CHECK STATUS LIMITS LDB ARG4 ADDR. OF FILE NAME JSB CKOPN CHECK IF OPEN CLA,INA,RSS NOT OPEN CLA STB SFILP POINTER TO O.T. LDB ARG7 ADDR. OF STATB INB STA B,I PACK OPEN STATUS SZA STORE PACK NO. IF OPEN JMP EFCON RETURN TO MAIN LDB SFILP POINTER TO O.T. ADB D10 LDA B,I PACK NO. STA ARG7,I STORE PACK NO. JMP EFCON RETURN TO MAIN SPC 3 STAT3 EQU * SECURITY CODE CHECK LDB D2 NO. WDS. TO CHECK JSB CKSLM CHECK STATUS LIMITS JSB STAPN STATUS PACK NO. SEARCH JMP STA3A SYSTEM PACK JSB SRCD2 FILE FOUND? JSB TNXTP GET NEXT PACK NO. LDA DPNO GET THE DECIMAL VALUE OF PACK NO. STA ARG7,I PACK STATB JMP STA3B STA3A EQU * STA ARG7,I STORE PACK NO. JSB TFOPN CHECK IF TEMP. FILE OPEN STA3B EQU * LDA ARG7 ADDR. OF STATB INA LDA A,I SECURITY CODE TO BE CHECKED ADB D6 BIAS TO EXISTING S.C. CPA B,I DOES SECURITY CODE CHECK? CLA,RSS YES CLA,INA LDB ARG7 ADDR. OF STATB ADB D2 STA B,I PACK SECURITY CODE STATUS JMP EFCON RETURN TO MAIN SPC 3 STAT4 EQU * NO. SECT. LEFT IN FILE LDB D2 NO. WDS. TO CHECK JSB CKSLM CHECK STATUS LIMITS LDB ARG4 ADDR. OF FILE NAME JSB CKOPN CHECK IF OPEN JMP CKDIS CHECK IF FILE ON DISC ADB D10 LDA B,I PACK NO. SZA TEMP. FILE CURRENTLY OPEN? JMP CKDIS-1 NO, POST BEFORF CHECKING CPA ARG5,I TEMP. FILE REQUESTED? RSS YES JMP CKDIS CHECK DISC STA ARG7,I STORE PACK NO. ADB D5 LDA B,I HIGHEST RECORD ACCESSED IN CORE ADB MD11 STA4A EQU * CMA,INA ADA B,I FILE LENGTH (IN RECORDS) INB LDB B,I RECORD LENGTH (IN WORDS) JSB MPY JSB DIV DEF D128 SOC OVERFLOW? JSB ER23 YES, ERROR SHOULD NOT OCCUR LDB ARG7 ADDR. OF STATB INB STA B,I PACK NO. SECT. LEFT INTO STATB+1 JMP EFCON RETURN TO MAIN JSB POST CKDIS EQU * CHECK IF FILE ON DISC