ASMB,R,L,C HED FCLOS 91741-16010 REV 1740 770317 * (C) HEWLETT-PACKARD CO. 1977 NAM FCLOS,7 91741-16010 REV 1740 770317 SPC 1 ****************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* * * THE PRIOR WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. * ****************************************************************** SPC 2 ENT FCLOS,FRDSK,FRLAB,FWLAB,FSPAC,FPOIN,FCNTL ENT FSTMD,FRNAM,FRLAT,FLOCK,FUNLK * EXT D$RQB,D$NWD EXT .ENTR,D$INI,D$RFH,D$STW,D$PRM,D3KMS EXT D$ERR,D$WDC,D$NWD,D$ASC,D$IPM,D$SPM * * FCLOS * SOURCE: 91741-18010 * BINARY: 91741-16010 * JIM HARTSELL * AUG. 13, 1975 * A EQU 0 B EQU 1 * FCLOS NOP FCLOSE. JSB ENTRY OCT 203 * FRDSK NOP FREADSEEK. JSB ENTRY OCT 501 * FRLAB NOP FREADLABEL. JSB ENTRY OCT 1001 * FWLAB NOP FWRITELABEL. JSB ENTRY OCT 1101 * FSPAC NOP FSPACE. JSB ENTRY OCT 1302 * FPOIN NOP FPOINT. JSB ENTRY OCT 1401 * FCNTL NOP FCONTROL. JSB ENTRY OCT 1703 * FSTMD NOP FSETMODE. JSB ENTRY OCT 2002 * FRNAM NOP FRENAME. JSB ENTRY OCT 2101 * FRLAT NOP FRELATE. JSB ENTRY OCT 2202 * FLOCK NOP FLOCK. JSB ENTRY OCT 2302 * FUNLK NOP FUNLOCK. JSB ENTRY OCT 2401 * * ALL ENTRY POINTS CONVERGE HERE. * ENTRY NOP LDA ENTRY,I SAVE FUNCTION CODE. ALF,ALF RAL,RAL AND B77 STA FCN LDA ENTRY,I SAVE # OF INITIAL PARAMS. AND B77 CMA,INA STA NUM CLA CLEAR OLD PARAM ADDRESSES. STA PRAMS STA PRAMS+1 STA PRAMS+2 STA PRAMS+3 LDA ENTRY GET ADDR OF USER'S JSB + 1. ADA N2 LDA A,I STA RETRN SET UP FOR .ENTR CALL. JMP BEGIN * PRAMS NOP NOP NOP NOP * RETRN NOP COMMON ENTRY POINT. BEGIN JSB .ENTR GET ADDRESSES OF USER PARAMS. DPRAM DEF PRAMS * CLA CLEAR ERROR CODE FOR FCHEK. CLB DST D$ERR * * BUILD FRONT END OF REQUEST BUFFER. * LDA DPRAM ADDR OF 1ST PARAM TO SEND. JSB D$INI INITIALIZE BUFFER STUFFERS. * JSB D$RFH SET UP FIXED FORMAT. * LDA FCN JSB D$STW STORE FUNCTION CODE IN REQUEST. * * MOVE USER PARAMS TO REQUEST BUFFER. * LDA NUM MOVE INITIAL PARAMETERS. JSB D$PRM * * PERFORM SPECIAL HANDLING FOR CERTAIN FILE CALLS. * LDA FCN CPA B5 JMP F5 FREADSEEK. CPA B10 JMP F11 FREADLABEL. CPA B11 JMP F11 FWRITELABEL. CPA B14 JMP F5 FPOINT. CPA B21 JMP F21 FRENAME. JMP STWD * F5 LDA N2 FREADSEEK: JSB D$NWD MOVE RECNUM. JMP STWD * F11 CLA FWRITELABEL AND FREADLABEL: LDA PRAMS+2,I JSB D$STW STORE TCOUNT (+WORDS). CLA (A) CLEARED IN CASE NO PARAM. LDA PRAMS+3,I JSB D$STW STORE LABELID. * LDA DPRAM SET UP PARAMETER MASK. STA TEMP LDA N4 MAX. NUMBER OF PARAMS. STA TEMP1 CLA,RSS MSK RAL SHIFT ACCUMULATED BITS. LDB TEMP,I SEE IF PARAM GIVEN. SZB IOR B1 YES. SET THE BIT. ISZ TEMP ISZ TEMP1 JMP MSK LOOP TILL DONE. * JSB D$STW STORE MASK. LDA FCN DONE IF FREADLABEL. CPA B10 JMP STWD LDA PRAMS+1 FWRITELABEL. SZA,RSS JMP STWD NO TARGET ADDRESS. CLA CLEARED IN CASE NO PARAM. LDA PRAMS+2,I SZA,RSS JMP STWD TCOUNT IS ZERO OR NOT GIVEN. SSA ARS NEG BYTES. MAKE NEG WORDS. SSA,RSS CMA,INA POS WORDS. MAKE NEG WORDS. JSB D$NWD STORE LABEL. JMP STWD * F21 LDA PRAMS+1 FRENAME: LDB N14 SZA SKIP IF NO FILE NAME. JSB D$ASC STORE NEW FILE NAME. * STWD JSB D$WDC SET WORD COUNT. * * REQUEST BUFFER READY. SEND TO QUEX'S CLASS, * AND WAIT FOR REPLY. * JSB D3KMS SHIP REQUEST BUFFER TO QUEX. DEF *+2 DEF BIT15 NO ABORT. JMP ABERR ERROR RETURN. * * PASS ANY RETURN PARAMETERS TO USER. * STA TEMP SAVE STATUS WORD. * LDA FCN CHECK TYPE OF CALL. CPA B10 JMP FF10 CPA B17 JMP FF17 CPA B22 RSS JMP RET * LDB D$RQB FRELATE: ADB D9 LDA B,I PASS JMP RETRN,I (A) = INT-OR-DUP WORD. * FF17 LDB D$RQB FCONTROL: ADB D9 LDB B,I GET RETURN PARAMETER. LDA PRAMS+2 SZA STB A,I PASS TO CALLER. JMP RET * FF10 LDA PRAMS+1 IF NO TARGET ADDR, SZA,RSS JMP RET DON'T PASS LABEL. LDA DPRAM FREADLABEL: INA LDB D$RQB ADB D9 JSB D$IPM INITIALIZE PARAM PASSERS. * LDA D$RQB DETERMINE # WORDS IN LABEL. ADA B7 LDA A,I ADA N1 # BYTES -1 (DELETE STATUS WORD). ARS # WORDS. CMA,INA NEG. # WORDS. SZA SKIP IF NO LABEL RETURNED. JSB D$SPM PASS N-WORD PARAM. * RET LDA TEMP RESTORE STATUS WORD. * JMP RETRN,I RETURN TO USER. (A) = STATUS. * ABERR DST D$ERR STORE CODE FOR FCHEK RETRIEVAL. CLA JMP RETRN,I RETURN. SKP * * CONSTANTS AND WORKING STORAGE. * B1 OCT 1 B5 OCT 5 B7 OCT 7 B10 OCT 10 B11 OCT 11 B14 OCT 14 B17 OCT 17 B21 OCT 21 B22 OCT 22 B77 OCT 77 N1 DEC -1 N4 DEC -4 D9 DEC 9 N2 DEC -2 N14 DEC -14 BIT15 OCT 100000 TEMP NOP TEMP1 NOP FCN NOP NUM NOP * END