ASMB,R,L,C HED << FILE MANAGER FOR RTE-L >> * NAME: FMGR * SOURCE: 92070-18310 * RELOC: 92070-16310 * PGMR: M.L.K. * * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * * *************************************************************** * NAM FMGR,1,90 92070-16310 REV.2014 800407 * * * GLOBAL DATA * ENT BUF.,CAM.I,CAM.O,I.BUF,O.BUF ENT CAMS.,P.TR ENT .IDAD,CUSE.,PARS. ENT TMP. ENT C.BUF,C.BUX,C.DLM ENT INT.,N.OPL,P.RAM,P.CNT,CAD.,SCR.,ECH,ECHF.,NO.RD ENT G0..,P.6,P.7,SVCOD,XPAND,.E.R ENT %IDA,%IDNM,%IDSZ,%FWBG,%SWLU,%TMP1 * * GLOBAL ENTRY POINTS * ENT FM.AB,FMGR,SEG.R,PAR.R * * EXTERNAL SUBROUTINES * EXT CLOSE,EXEC,MSS.,OPEN,RMPAR EXT $IDA,$ID#,$IDSZ,$FWBG,$SWLU,$TMP1,SAVST * * EXTERNAL VARIBLES * * NONE SUP * * LOADR COMMANDS * LOD 2,SG,7 7 SEGMENTS SKP * * FILE MANAGER GLOBAL DECLARATIONS * * * GLOBAL DCB'S AND BUFFERS * O.BUF BSS 144 GENERAL OUTPUT DCB I.BUF BSS 144 GENERAL INPUT DCB CAM.I BSS 144 COMMAND INPUT DCB CAM.O BSS 1 LOG LU BUF. BSS 129 GENERAL DISC BUFFER * * TRANSFER STACK AND POINTER * CAMS. BSS 61 TRANSFER FILE STACK (6 WORDS PER ENTRY) P.TR DEF CAMS. POINTER TO POSITION IN TRANSFER STACK * * SEGMENT CONTROL * SEG ASC 2,FMGR BEGINNING OF SEGMENT NAME CUSE. ASC 1,2 CURRENT SEGMENT (INITIALLY POINTS TO IN.IT) .IDAD NOP ID SEGMENT ADDRESS OF CURRENT SEGMENT PARS. NOP ADDRESS OF READ AND PARSE SUBROUTINE.SET BY SEG #1 PARSG ASC 1,1 SEGMENT CONTAINING THE PARSER INSEG ASC 1,2 SEGMENT CONTAINING IN.IT QUEST ASC 1,?? ERROR EXPANSION COMMAND * * LIST NAMR BUFFER (ORDERED) * TMP. NOP CHARS #1 AND #2 OF LIST NAMR TMP.2 NOP CHARS #3 AND #4 OF LIST NAMR TMP.3 NOP CHARS #5 AND #6 OF LIST NAMR SC.L NOP SECURITY CODE OF LIST NAMR CR.L NOP CARTRIDGE/LU OF LIST NAMR * * COMMAND INPUT BUFFER (ORDERED) * C.BUX ASC 1, : CONTAINS A COLON FOR ECHO C.BUF BSS 40 INPUT BUFFER C.DLM NOP POINTER TO DELIMITER FOLLOWING COMMAND * * ARRAYS SET AND USED DURING PARSING (ORDERED) * INT. OCT 1 INPUT NAMR INTERACTIVE FLAG 0=NOT INT #0 = INTERACTIVE N.OPL BSS 10 SUBPARAMETER LIST FOR 1ST TWO PARAMETERS P.RAM BSS 64 PARSED PARAMETER LIST. 4 WORDS PER PARAMETER P.CNT NOP PARAMETER COUNT CAD. NOP COMMAND ADDRESS FROM C.TAB SCR. NOP 3RD AND 4TH CHARACTERS OF COMMAND ECH NOP WORD COUNT FOR ECHO ECHF. NOP ECHO FLAG 0= NO ECHO #0 = NEEDS ECHO NO.RD NOP NO READ FLAG 0= NO READ #0 = MUST READ NEXT COMND SKP * * GLOBALS AND SEVERITY CODE (ORDERED) * G0.. BSS 40 0G THRU 9G DEC 3 10G (ALWAYS ASCII) BSS 5 1P THRU 5P P.6 NOP 6P = LAST ERROR CODE P.7 NOP 7P = USER'S COPY OF SEVERITY CODE SVCOD NOP FMGR'S COPY OF SEVERITY CODE XPAND NOP ERROR EXPANSION FLAG .E.R NOP INTERNAL GLOBAL ERROR * * SYSTEM ENTRY POINTS FOR SPL ROUTINES * %IDA DEF $IDA %IDNM DEF $ID# %IDSZ DEF $IDSZ %FWBG DEF $FWBG %SWLU DEF $SWLU %TMP1 DEF $TMP1 SKP * FMGR NOP * JSB RMPAR GET SCHEDULING PARAMETERS DEF *+2 DEF P.RAM STORE IN P.RAM TEMPORARILY JSB SAVST SAVE THE RUN STRING DEF *+1 UNTIL IN.IT * LDA INSEG GET IN.IT COMMAND ADDRESS STA CUSE. AND STORE TO LOAD SEGMENT CLA SET CAD. TO 0 TO INDICATE STA CAD. THE FIRST ROUTINE IN THE SEGMENT JMP SEG.L GO EXECUTE IN.IT SKP * * COMMAND LOOP * * 1. LOAD THE PARSE SEGMENT * 2. READ AND PARSE THE COMMAND * 3. LOAD SEGMENT IF NECESSARY * 4. EXECUTE IT * NXCMD LDA PARSG GET PARSE SEGMENT NUMBER CPA CUSE. IS THIS SEGMENT IN MEMORY? JMP PAR.R YES, * STA CUSE. NO, SAVE IN CURRENT SEGMENT SEG.L JSB EXEC LOAD THE SEGMENT DEF *+3 DEF .8 DEF SEG PAR.R JSB PARS.,I PARSE SEGMENT LOAD RETURNS HERE DEF *+1 CALL READ AND PARSE SUBROUTINE SEZ,RSS TEST E BIT FOR SEGMENT JMP EXQUT E=0, SEGMENT IN MEMORY JMP SEG.L E=1, GO LOAD SEGMENT * SEG.R ADA CAD. SEGMENT RETURN POINT. A= ADDRESS OF SEG TABLE LDA A,I GET ROUTINE ADDRESS STA CAD. STORE IN COMMAND ADDRESS * EXQUT CLA CLEAR OUT STA ER ERROR STA .E.R WORDS * JSB CAD.,I CALL ACTION ROUTINE DEF CALR DEF P.CNT DEF P.RAM DEF ER * CALR LDA ER ANY ERRORS? SZA,RSS JMP FM.AB NO * JSB MSS. YES, ISSUE ERROR DEF *+2 DEF ER * FM.AB LDA P.6 ERROR CODE SET? SZA,RSS JMP KLOSE NO, CLOSE FILES LDA XPAND TEST ERROR EXPANSION FLAG SZA,RSS IF 0, THEN DON'T EXPAND ERROR MESSAGE JMP KLOSE JUST CONTINUE LOOP LDA NO.RD GET NO READ FLAG. IS SOMEONE SZA TRANSFERING TO ANOTHER SUBROUTINE? JMP KLOSE YES, DON'T INTERFERE CLA,INA NOPE, SET COMMAND STA ECH LENGTH TO 1 CCA SET NO READ FLAG STA NO.RD TO EXECUTE COMMAND IN C.BUF LDA QUEST GET COMMAND TO EXPAND ERROR STA C.BUF AND PUT IN COMMAND BUFFER * KLOSE JSB CLOSE CLOSE DEF *+2 INPUT DEF I.BUF FILE JSB CLOSE CLOSE DEF *+2 OUTPUT DEF O.BUF FILE JMP NXCMD EXECUTE COMMAND LOOP SKP ER NOP ERROR PARAMETER PASSED TO ACTION ROUTINES .8 DEC 8 A EQU 0 B EQU 1 LEN EQU * * END FMGR