ASMB,R,B,L,C,N $EX30 NON-EAU VERSION HED CORE RESIDENT EFMP MODULE NAM $EX30,0,0 7905 * **************************************************** 7905 * * 7905 * REV. 6-11-75 * 79A5 * USE Z OPTION FOR EAU VERSION * USE N OPTION FOR NON EAU VERSION * * 7905 **************************************************** 7905 * ENT $EX30,EFCON EXT $BUF EXT $MDLD EXT $DISC EXT $IRT EXT $SYIO,$WAIT EXT $CLER EXT DEF04 EXT DEF31,DEF32,DEF33 ENT ENDTS,AINVC,SRCDR ENT FLNGH,NOTRB,NSUWA,WPTRB,NXOTL,NXTFP ENT OPNTB,STSWA,TRBUF,TRBSZ,ARQP1,DPNO ENT A$BUF,END$B,NOPAS,FTRBE,PN ENT OPNT1,PAKSC,OPNSZ,OPNTE,PNEAD,APN00 ENT DESIZ,TRKIO,SECIO,CNAME,NOSEC ENT VALSU ENT ERROR ENT MOVCT,NXPTL,EBIAS,GTNXE,GSC,GNS ENT MASUB A EQU 0 B EQU 1 . EQU 53B @ EQU 100B L7BT EQU 73B L8BT EQU 74B H8BT EQU 75B UMLWA EQU @+0 JBINS EQU @+1 JBINC EQU @+2 SYSBF EQU @+15B SECTR EQU @+16B XIRT EQU @+37B DISCO EQU @+54B SYSSC EQU @+55B SCCNT EQU @+56B UDNTS EQU @+57B SYNTS EQU @+60B NEXT SYST. DISC TRACK/SECT. CUDSC EQU @+61B CRFLG EQU @+62B CURRENT DISC REQ. FLAG, 0=S,1=UD CUDLA EQU @+63B EXMOD EQU @+145B UMFWA EQU @+154B TEMP EQU @+205B EOJFL EQU @+223B XFLG EQU @+230B SKP $EX30 EQU * NOP DUMMY CCA STA EFRUN SET EFMP RUNNING * * RESOLVE ADDRESS OF $BUF * LDA A$BUF RSS LDA 0,I RAL,CLE,SLA,ERA JMP *-2 STA A$BUF ADDR OF $BUF ADA D127 STA END$B ADDRESS OF $BUF+127 * LDA EOJFL END-OF-JOB FLAG SZA START OF NEW JOB? JMP OLDJO NO, OLD "JOB" CLA STA VALSU REINITIALIZE VALID SETUP FLAG STA NSUWA NO. SECT. USED IN WORK LDA ADABR ADDR. OF ABORT ROUTINE STA EOJFL SET FOR DOS-M OLDJO EQU * * MOVE ARGS INTO EFMP BUFFER ARG1 LDA ARQCN ADDR. OF SOURCE LDB MD10 STB MOVCT LDB AARGC ADDR. OF DESTINATION JSB MOVE MOVE ARRAY LDA UDNTS STA .UDNT LDA CUDSC STA .CUDS LDA ARG2,I EFMP FUNCTION NO. OCT 0 OCT 107001 SZA,RSS TOO SMALL? JSB ER1 YES SSA JSB ER1 CMA,INA ADA MAXFN (-) MAX. NO. OF FUNCTIONS SSA TOO BIG? JSB ER1 YES LDB ARG2,I EFMP FUNCTION NO. ADB AERWD POINTER TO ERROR TABLE LDA ARGCT COUNT OF NO. OF PARAMETERS CPA B,I VALID COUNT? RSS YES JSB ER20 LDA AMODN ADDR. OF MODULE NO. ADA ARG2,I LDA A,I PICK UP MODULE NO. LDB AFNTB ADDR. OF FUNCTION TABLE ADB ARG2,I CALCULATE FUNCTION NO. LDB B,I PICK UP CORE ADDR CPA D30 CORE RES. LOCATION ? JMP B,I YES SPC 1 STB TEMP SAVE FOR EXEC JMP $MDLD MODULE LOAD IN EXEC SPC 1 EFCON EQU * EFMP CONTINUATION FROM MODULES CLA SPC 3 ERROR EQU * STA EADDR+1 SAVE ERROR NO. STB EADDR LDA ARGRT RETURN ADDR. ADA MD1 LDA A,I ADDR. OF ERROR WORD CLB,INB NO. WDS. TO CHECK JSB CKCLM CHECK CORE LIMITS JMP ERERR ERROR 9 STA B SAVE EFFECTIVE ADDR. OF ERROR LOC. LDA EADDR+1 ERROR NO. STA B,I ERERR EQU * JSB RLEXM RELEASE EXEC MODULE LDA EADDR+1 ERROR NO. SZA,RSS ANY ERRORS ? JMP DOSUM NO, DO CHECK SUM LDB ARG2,I CPB D1 DEFINE WITH ERROR ? JMP NOSUM YES, IGNORE CHECK SUM CPA D12 BUFFER ERROR? JMP *+3 YES, IGNORE CK. SUM DOSUM EQU * JSB CKSUM CALC. CK. SUM STA VALSU SAVE FOR NEXT ENTRY NOSUM EQU * CLA STA EFRUN RESET EFMP RUNNING FLAG LDA ARGRT STA XIRT LDB EADDR LDA EADDR+1 OCT 0 OCT 107002 FOR DEBUGGING JMP $IRT SPC 1 RLEXM NOP RELEASE EXEC MODS. LDA .UDNT STA UDNTS LDA .CUDS STA CUDSC LDA L8BT STA CUDLA LDA EXMOD EXEC MOD. CURRENTLY RUNNING CPA MD31 CMA,INA CPA MD32 CMA,INA CPA MD33 CMA,INA STA EXMOD RESTORE IT JMP RLEXM,I RETURN .UDNT OCT 0 TEMP. .CUDS OCT 0 TEMP. EADDR OCT 0,0 MD31 DEC -31 MD32 DEC -32 MD33 DEC -33 SPC 3 SKP CKVSU NOP CHECK IF VALID SETUP LDA VALSU VALUE SETUP FLAG SZA,RSS VALID? JSB ER12 NO JSB CKSUM CALC. CK. SUM CPA VALSU SAME AS PREVIOUS EXIT? JMP CKVSU,I YES, VALID. RETURN CLA STA VALSU JSB ER12 * JMP CKVSU,I NOT NEEDED VALSU OCT 0 VALID SETUP FLAG SPC 1 ADABR DEF ABORT ABORT NOP ABORT CLEAN UP AND EOJ JSB $CLER CLEAR ALL I/O JSB IMAG1 GO TO IMAGE ROUTINE 1 LDA EFRUN SZA,RSS EFMP INTERRUPTED? JMP NOERR NO JSB $SYIO DEC 2 OCT 1 DEF MS10 ABS LM10 DEF *+2 JMP $WAIT JMP ABNO NOERR EQU * NO ERROR LDA UDNTS STA .UDNT LDA CUDSC STA .CUDS LDA VALSU VALID SETUP SZA,RSS VALID? JMP ABNO NO JSB CKSUM CALC. CK.SUM CPA VALSU SAME AS PREVIOUS? JSB POST YES, CLEAN UP BUFFERS ABNO EQU * CLA STA EFRUN SET EFMP NOT RUNNING STA EOJFL RESET FLAG FOR DOS-M TO CALL EFMP JSB RLEXM RELEASE EXEC. MOD. JMP ABORT,I RETURN TO DOS-M SPC 1 MS10 ASC 24,EFMP INTERRUPTED BEFORE PREVIOUS CALL COMPLETE. LM10 EQU *-MS10 * IF IMAGE IS PRESENT, THE SUBROUTINE IMAG1 POSTS THE RUN TABLE * TO DISC TO PRESERVE THE INTEGRITY OF AN OPEN DATA BASE ON AN * ABORT. IF DBPUT/DBDEL OR DBOPN(MODE=5) WAS EXECUTING AT ABORT, * THE FOLLOWING MESSAGE APPEARS ON THE SYSTEM CONSOLE: * "CRITICAL IMAGE FUNCTION INTERRUPTED" * "DATA BASE IS UNRELIABLE" *IF EFMP WAS EXECUTING, THE FOLLOWING MESSAGE IS PRINTED : * "DATA BASE IS UNRELIABLE" *OTHERWISE, THE FOLLOWING MESSAGE IS PRINTED : * "DATA BASE IS INTACT" * IF EFMP WAS NOT EXECUTING, AND DBUPD WAS EXECUTING, * THE FOLLOWING MESSAGE IS PRINTED: * "LAST DBUPD NOT COMPLETED" * DBZ EQU 53B BASE OF ZERO FOR EQUATES TRKSC EQU DBZ+1 TRACK/SECTOR OF RUN TABLE ACSUB EQU DBZ+2 ACTIVITY FLAG AND SUBCHANNEL # DBSTA EQU DBZ+3 DATA BASE STATUS ("LB" IF OPEN) DSETC EQU DBZ+6 DATA SET COUNT DBSTB EQU DBZ+8 ADDRESS OF DATA SET TABLE B377 EQU 74B 377B MASK DBF EQU 171B $DISC A-REG BUFFER LOCATION DBUF DEF DBF PTHCT BSS 1 # OF PATHS IN CURRENT SET SETCT BSS 1 NEGATIVE OF SET COUNT BUFAD BSS 1 ADDRESS OF FREEHE,FREECT BUF-$BUF DSET BSS 1 CURRENT DSCB ADDRESS ACFLG BSS 1 ACTIVITY(1=PUT,DEL,OPEN(MODE=5) * 2=UPDATE 0=OTHER BUF1 BSS 1 AIRUN BSS 1 SIZE OCT 0 79A5 TEMPX DEF BUF1 RUNOF DEC 1025 D16 DEC 16 SUB BSS 1 MESA ASC 18,CRITICAL IMAGE FUNCTION INTERRUPTED LMESA EQU *-MESA MESB ASC 12,DATA BASE IS UNRELIABLE LMESB EQU *-MESB MESC ASC 10,DATA BASE IS INTACT LMESC EQU *-MESC MESD ASC 12,LAST DBUPD NOT COMPLETED LMESD EQU *-MESD IMAG1 NOP CLA LDA UMFWA ADA RUNOF STA AIRUN SET AIRUN TO ADDRESS OF RUN TABL ADA DBSTA LDB 0,I CPB =ALB IMAGE RUNNING (STATUS = "LB"?) JMP *+2 JMP IMAG1,I NO, RETURN P+1 LDB AIRUN ACFLG = IMAGE ACTIVITY NUMBER ADB ACSUB LDA 1,I AND H8BT ALF,ALF STA ACFLG JSB SETUP SET UP NEG. DATA SET CT,BUF ADDR FREE1 STA DSET ADA D6 LDB 0,I STORE FREECT AND FREEHD INTO BUF STB BUFAD,I FOR EACH DATA SET ISZ BUFAD ISZ 0 LDB 0,I STB BUFAD,I ISZ BUFAD JSB DSCB GET ADDRESS OF NEXT DSCB ISZ SETCT JMP FREE1 LDB AIRUN CALCULATE RUN TABLE SIZE 79A5 CMB,INB 79A5 ADB A 79A5 STB SIZE 79A5 LDB AIRUN READ IN RUN TABLE ADB TRKSC LDA 1,I STA BUF1 INB LDA 1,I AND B377 LDB 0 STB SUB SAVE DESIRED SUBCHANNEL JSB CKDRI SET SUBCHANNEL FOR RUN TABLE LDA DBUF PREPARE $DISC BUFFER LDB BUF1 STB 0,I INA LDB AIRUN STB 0,I INA LDB SIZE STB 0,I LDA DBUF CLB,INB JSB $DISC LDA AIRUN IMAGE RUNNING ? DOUBLE CHECK ADA DBSTA (STATUS = "LB" IN RUN TABLE ON LDB 0,I DISC?) CPB =ALB JMP *+2 JMP IMAG1,I NO, RETURN P+1 CLA,INA IF DBPUT/DBDEL OR DBOPN(MODE CPA ACFLG =5) RUNNING AT TIME OF INTERRUPT JMP *+2 PRINT:"CRITICAL IMAGE FUNCTION JMP OKMES INTERRUPTED" JSB $SYIO DEC 2 OCT 1 DEF MESA ABS LMESA DEF *+2 JMP $WAIT ERMES JSB $SYIO DEC 2 OCT 1 DEF MESB ABS LMESB DEF *+2 JMP $WAIT JMP RESFR OKMES LDA EFRUN IF IMAGE IS RUNNING, EFMP SZA NOT RUNNING, AND DBPUT/DBDEL JMP ERMES NOT RUNNING, GENERATE MESSAGE: JSB $SYIO "DATA BASE IS INTACT" DEC 2 OCT 1 DEF MESC ABS LMESC DEF *+2 JMP $WAIT CLA,INA IF DBUPD RUNNING AT TIME OF INA INTERRUPT,PRINT:"LAST DBUPD CPA ACFLG NOT COMPLETED" JMP *+2 JMP RESFR JSB $SYIO DEC 2 OCT 1 DEF MESD ABS LMESD DEF *+2 JMP $WAIT RESFR JSB SETUP SET UP NEG. DATA SET CT,BUFAD FREE2 STA DSET ADA D6 LDB BUFAD,I RESTORE FREECT AND FREEHD FROM STB 0,I BUF INTO RUN TABLE FOR EACH ISZ BUFAD DATA SET ISZ 0 LDB BUFAD,I STB 0,I ISZ BUFAD JSB DSCB GET ADDRESS OF NEXT DSCB ISZ SETCT JMP FREE2 LDB SUB RESTORE DESIRED SUBCHANNEL JSB CKDRI SET SUBCHANNEL FOR RUN TABLE LDA DBUF PREPARE $DISC BUFFER LDB BUF1 STB 0,I INA LDB AIRUN STB 0,I INA LDB SIZE STB 0,I LDA DBUF LDB D2 JSB $DISC JMP IMAG1,I SETUP NOP SETUP PREPARES FOR SAVING AND LDB AIRUN RESTORING FREECT AND FREEHD. ADB DSETC SETS DSETC TO NEG DATA SET CT, LDA 1,I BUFAD TO ADDRESS OF $BUF, CMA,INA A-REG TO ADDR OF DATA SET TABLE STA SETCT LDA A$BUF STA BUFAD LDB AIRUN ADB DBSTB CCA ADA AIRUN ADA 1,I JMP SETUP,I DSCB NOP DSCB CALCULATES THE ADDRESS OF LDB DSET THE NEXT DATA SET CONTROL BLOCK ADB D3 IN THE RUN TABLE. RETURNS IT LDA 1,I IN THE A-REG. AND B377 ALS STA PTHCT LDA 1,I ALF,ALF AND B377 ADA DSET ADA PTHCT ADA D16 JMP DSCB,I SPC 3 MASUB NOP MAIN SUBROUTINE STA MSA STB MSB LDA MASUB,I PICK UP SUB INDEX ADA ASUBT ADDR. OF SUB. TABLE LDA A,I PICK UP ADDR. OF DESIRED SUB. LDB MASUB ADB MD2 LDB B,I PICK UP RETURN ADDR. STB A,I PACK RETURN ADDR. INA POINT TO 2ND LOC. IN SUB. DESIR. STA MACAL LDA MSA LDB MSB JMP MACAL,I CALL SUBROUTINE MSA OCT 0 A-REG. MSB OCT 0 B-REG MACAL OCT 0 CALL LOCATION +1 FOR DESIRED SUB ASUBT DEF SUBTB-1 SUBTB EQU * DEF MOVE 1 DEF POST 2 DEF POSTW 3 DEF CKVSU 4 DEF NAM0? 5 DEF CRPN0 6 DEF CKPN 7 DEF SVPNS 8 DEF CKNAP 9 DEF SETD1 10 DEF SETD2 11 DEF GETDE 12 DEF REPNS 13 DEF CNVDA 14 DEF CNPND 15 DEF MVPNT 16 DEF GETPN 17 DEF CKOPN 18 DEF SRCDR 19 DEF GTNPN 20 DEF CKDSP 21 DEF CKCLM 22 DEF CMPAR 23 DEF CKPNT 24 DEF PKDIR 25 DEF T.STS 26 DEF STT.S 27 DEF STZ 28 DEF GRTXX 29 DEF GWTXX 30 DEF CKSPC 31 DEF STPNO 32 DEF SFSTS 33 DEF PRETS 34 DEF PRWIO 35 DEF MPY 36 DEF DIV 37 SPC 3 ER1 EQU * OCT 0 LDA D1 JSB ERR ER12 EQU * OCT 0 LDA D12 JSB ERR ER15 EQU * OCT 0 LDA D15 JSB ERR ER17 EQU * OCT 0 LDA D17 JSB ERR ER20 EQU * OCT 0 LDA D20 JSB ERR ER23 EQU * OCT 0 LDA D23 JSB ERR ER24 EQU * OCT 0 LDA D24 JSB ERR ER27 EQU * OCT 0 LDA D27 JSB ERR ER28 EQU * OCT 0 LDA D28 JSB ERR ERR NOP LDB ERR ADB MD3 LDB B,I PICK UP LOC OF ERROR JMP ERROR HED CONSTANTS AND VARIABLES FNTBS EQU * EFMP FUNCTION TABLE START DEF DEF31 FUNC. NO. 1 DEF DEF31 FUNC. NO. 2 DEF DEF31 FUNC. NO. 3 DEF DEF31 FUNC. NO. 4 DEF DEF31 FUNC. NO. 5 DEF DEF32 FUNC. NO. 6 DEF DEF31 FUNC. NO. 7 DEF DEF32 FUNC NO. 8 DEF DEF32 FUNC. NO. 9 DEF DEF32 FUNC. NO. 10 DEF DEF33 FUNC. NO. 11 DEF DEF33 FUNC. NO. 12 DEF DEF32 FUNC. NO. 13 DEF AFN14 FUNCTION NO. 14 FNTBE EQU * EFMP FUNCTION TABLE END MAXFN ABS FNTBE-FNTBS MAX. FUNCTION NO. SPC 1 MODNS EQU * MODULE NUMBERS TABLE START DEC 31 FUNCTION NO. 1 DEC 31 FUNCTION NO. 2 DEC 31 FUNCTION NO. 3 DEC 31 FUNCTION NO. 4 DEC 31 FUNCTION NO. 5 DEC 32 FUNCTION NO. 6 DEC 31 FUNCTION NO. 7 DEC 32 FUNCTION NO. 8 DEC 32 FUNCTION NO. 9 DEC 32 FUNCTION NO. 10 DEC 33 FUNCTION NO. 11 DEC 33 FUNCTION NO. 12 DEC 32 FUNCTION NO. 13 DEC 30 FUNCTION NO. 14 ERWDS EQU * ERROR WORD POSITION IN EXEC CALL DEC 8 FUNCTION 1 DEC 8 FUNCTION 2 DEC 6 FUNCTION 3 DEC 8 FUNCTION 4 DEC 5 FUNCTION 5 DEC 6 FUNCTION 6 DEC 5 FUNCTION 7 DEC 6 FUNCTION 8 DEC 6 FUNCTION 9 DEC 8 FUNCTION 10 DEC 4 FUNCTION 11 DEC 5 FUNCTION 12 DEC 6 FUNCTION 13 DEC 3 FUNCTION 14 SPC 1 ARQCN ABS 224B AARGC DEF ARGCT ARQP1 DEF ARG1 AERWD DEF ERWDS-1 AFNTB DEF FNTBS-1,I AMODN DEF MODNS-1 MD24 DEC -24 79A5 MD16 DEC -16 MD12 DEC -12 MD10 EQU .-10 MD9 EQU .-9 MD8 EQU .-8 MD6 EQU .-6 MD5 EQU .-5 MD4 EQU .-4 MD3 EQU .-3 MD2 EQU .-2 MD1 EQU .-1 D1 EQU .+1 D2 EQU .+2 D3 EQU .+3 D4 EQU .+4 D5 EQU .+5 D6 EQU .+6 D7 EQU .+7 D8 EQU .+8 D9 EQU .+9 D10 EQU .+10 B12 EQU D10 D11 DEC 11 B13 EQU D11 D14 DEC 14 D12 DEC 12 D15 DEC 15 D17 DEC 17 D20 DEC 20 D23 DEC 23 D24 DEC 24 D27 DEC 27 D28 DEC 28 D30 DEC 30 D100 DEC 100 D127 DEC 127 D128 DEC 128 D200 DEC 200 D999 DEC 999 MB60 OCT -60 END$B NOP ADDRESS OF $BUF+127 ENDTS OCT 144000 END T/S +1 MXWPE DEC 9 AINVC DEF INVCH INVCH OCT 177400 INVALID CHAR OCT 177400 INVALID CHAR OCT 177400 INVALID CHAR WPOTE DEC 16 WORDS/OPEN TABLE ENTRY FLNGH OCT 0 TOTAL FILE LENGTH OF DOS-M FILE NOTRB OCT 0 TEMP. RECORD BUFFER VALUES NSUWA OCT 0 NO. SECT. USED IN WORK AREA WPTRB OCT 0 WORDS/TRB NXPTL OCT 0 NEXT AVAIL PACK NO. ENTRY IN OPEN TABLE FTRBE OCT 0 ADDR OF FIRST TRB ENTRY IN OPEN TABLE NXOTL OCT 0 NEXT O.T. LOCATION NXTFP OCT 0 NEXT FILE POSITION IN DIRECTORY OPNSZ OCT 0 SIZE OF OPENED TABLE OPNTE OCT 0 ADDR. OF OPEN TABLE END OPNTB OCT 0,0 ADDR. OF OPENED TABLE START OPNT1 EQU OPNTB+1 STSWA OCT 0 STARTING T/S OF WORK AREA TRBUF OCT 0 ADDR. OF TEMP. RECORD BUFFER TRBSZ OCT 0 SIZE OF TEMP. RECORD BUFFER SPC 1 ARGCT OCT 0 ARGRT OCT 0 ARG1 OCT 0 ARG2 OCT 0 ARG3 OCT 0 ARG4 OCT 0 ARG5 OCT 0 ARG6 OCT 0 ARG7 OCT 0 ARG8 OCT 0 EFRUN OCT 0 EFMP RUNNING FLAG HED POST FUNCTION * * POST FUNCTION * AFN14 DEF FUN14 FUN14 EQU * JSB CKVSU CHECK IF VALID DEFINE PREVIOUSLY JSB POST JMP EFCON RETURN TO USER SPC 3 * * POST ALL TRB * POST NOP POST ALL TRB'S LDA NOTRB NO. OF TRB'S CMA,INA STA POSTI POST INDEX LDB FTRBE GET ADDR OF FIRST TRB POSTM EQU * POST MORE JSB POSTW POST WRITE LDB POSTP POINTER TO THIS TRB VECTOR ADB D3 BIAS TO NEXT TRB VECTOR ISZ POSTI FINISHED W/ TRB VECTORS JMP POSTM NO, POST MORE JMP POST,I RETURN SPC 3 POSTW NOP POST WRITE STB POSTP POST POINTER INB STB POSTP+2 SAVE POINTER TO "MBW" FLAG