ASMB,R,L,C * NAME: ME.SB * SOURCE: 92067-18450 * RELOC: 92067-16125 * PGMR: R.D. * * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. 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 ME.SB,8 92067-16125 REV.1903 790510 ENT ME.SB EXT .ENTR PARAMETER FETCH ROUTINE EXT $SMD# OFFSET TO DIRECTORY ENTRY # IN SCB EXT $SMID OFFSET TO USER ID IN SESSION CONTROL BLOCK EXT CLOSE FMP FILE CLOSE ROUTINE EXT CREAT FMP FILE CREATE ROUTINE EXT I.BUF INTERNAL (FMGR) DCB EXT ISMVE MOVE WORDS FROM SESSION CONTROL BLOCK EXT LOCF FMP FILE LOCATION ROUTINE EXT N.OPL FMGR 10-WORD SUBPARAMETER ARRAY EXT O.BUF INTERNAL (FMGR) DCB EXT OPEN FMP FILE OPEN ROUTINE EXT OPEN. INTERNAL FMGR OPEN ROUTINE EXT OPENF FMP OPEN FOR TYPE 0 FILES EXT OVRD. SESSION OVERRIDE OPTION WORD EXT POSNT FMP FILE POSITION ROUTINE EXT PURGE FMP FILE PURGE ROUTINE EXT READF FMP FILE READ ROUTINE EXT RNRQ EXEC REQUEST FOR RESOURCE NO. EXT SESSN DETERMINES IF IN SESSION EXT WRITF FMP WRITF EXT XLUEX EXTENDED LU EXEC CALL * A EQU 0 B EQU 1 * * GET INPUT STRING AND PARSE IT * IBUFR NOP PARM 1 (TYPE,NAMR) IPURG NOP OPTION WORD TO PURGE MESSAGE FILE IERR NOP ERROR RETURN WORD ME.SB NOP SUBROUTINE ENTRY POINT * JSB .ENTR DEF IBUFR * LDA IBUFR,I CHECK FIRST PARAMETER (LIST DEVICE) SZA NOT SUPPLIED? JMP ME.1 CHECK IF ASCII OR NUMERIC STA RDERR INITIALIZE FOR READ ERROR STA CLEAN INA DEFAULT LIST TO 1 STA INAM SAVE IT JMP ME.5 ME.1 LDB ADIBF,I ADDRESS OF PARAMETER ARRAY INB CPA D3 ASCII? JMP ME.2 YES CPA D1 NUMERIC? JMP ME.4 YES LDA D56 ERROR - BAD PARAMETER STA IERR,I RETURN ERROR JMP ME.SB,I RETURN ME.2 CMA,INA SET -3 AS COUNTER STA CTR SAVE IT LDA ADINM POINTER TO INAM STA TEMP ME.3 LDA B,I GET 1ST 2 CHARACTERS OF NAMR STA TEMP,I SAVE IT ISZ TEMP INB BUMP SOURCE ADDRESS ISZ CTR INCREMENT COUNTER JMP ME.3 MOVE NEXT 2 CHARACTERS OF NAMR JMP ME.5 ME.4 LDA B,I GET LU STA INAM SAVE IT * ME.5 JSB SESSN IN SESSION DEF *+2 DEF XEQT CURRENTLY EXECUTING PROGRAM SEZ,RSS SKIP IF NON-SESSION JMP L2 IN SESSION LDA D45 NON-SESSION STA IERR,I ERROR - SESSION COMMAND ONLY JMP ME.SB,I L2 STB ADSCB SAVE SCB ADDRESS * JSB ISMVE MOVE USER ID FROM SCB DEF RTN44 DEF ADSCB SCB ADDRESS DEF $SMID OFFSET TO USER ID IN SCB DEF USRID USER ID RETURNED HERE DEF D1 1 WORD TO BE MOVED RTN44 EQU * * LDA SECU STA NOPL LDA OVRD. GET SESSION OVERRIDE FLAG STA TEMP SAVE IT'S CURRENT STATE IOR M2000 SET TO ALLOW SYS DISC WRITE STA OVRD. SAVE IT JSB OPEN. OPEN ACCOUNT FILE DEF RTN4 DEF I.BUF ACCOUNT FILE DCB DEF ACCT ACCOUNT FILE = +@CCT! DEF NOPL DEF IOPTN OPTION WORD RTN4 EQU * LDA TEMP STA OVRD. RESET OVERRIDE FLAG * * READ ACCOUNT FILE HEADER * JSB READF DEF RTN5 DEF I.BUF DCB OF ACCOUNT FILE DEF JERR ERROR RETURN WORD DEF IBUF BUFFER LOCATION DEF D128 ONE RECORD LENGTH DEF LEN NUMBER OF WORDS READ RTN5 EQU * * * LDA DFIBF GET LOCATION OF BUFFER ADA D24 OFFSET TO RESOURCE NUMBER LDA A,I STA RESNO * JSB RNRQ LOCK ACCT FILE RESOURCE NBR DEF RTN40 DEF D1 REQUEST TO SET LOCAL RN DEF RESNO ACCT FILE RESOURCE NUMBER DEF ISTAT STATUS RETURN WORD RTN40 EQU * * JSB READF RE-READ ACCOUNT FILE HEADER DEF RTN7 DEF I.BUF ACCOUNT FILE DCB DEF JERR ERROR RETURN WORD DEF IBUF DEF D128 DEF LEN NUMBER OF WORDS READ DEF D1 ACCOUNT FILE RECORD 1 RTN7 EQU * * LDA DFIBF START OF BUFFER IBUF STA B ADA D4 LDA A,I RECORD # OF DIRECTORY STA DIRNO ADB D25 LDA B,I LU # OF MSG FILES STA LUNO. * * FIND USER'S DIRECTORY ENTRY * JSB ISMVE GET DIRECTORY ENTRY # FROM SCB DEF RTN55 DEF ADSCB SESSION CONTROL BLOCK ADDRESS DEF $SMD# OFFSET TO DIRECTORY ENTRY # IN SCB DEF DNUM DIRECTORY ENTRY # RETURN WORD DEF D1 1 WORD TO BE MOVED RTN55 EQU * * LDA DNUM GET DIRECTORY ENTRY # CLB COMPUTE ACCT FILE RECORD # WITH THIS ENTRY DIV D8 ADA DIRNO ADD RECORD # OF START OF DIRECTORY STA DNUM SAVE RECORD NUMBER CONTAINING DIRECTORY ENTRY BLF COMPUTE OFFSET INTO RECORD IN WORDS STB TEMP TEMPORARY SAVE JSB READF READ RECORD CONTAINING DIRECTORY ENTRY DEF RTN56 DEF I.BUF ACCOUNT FILE DCB DEF JERR ERROR RETURN WORD DEF IBUF RETURN BUFFER DEF D128 DEF LEN NUMBER OF WORDS ACTUALLY READ DEF DNUM ACCOUNT FILE RECORD NUMBER RTN56 EQU * * LDA DFIBF ADDRESS OF START OF IBUF ADA TEMP OFFSET TO START OF DIRECTORY ENTRY ADA D14 OFFSET TO USER ENTRY RECORD NUMBER LDA A,I CLB SET OFFSET TO 0 SSA SIGNED MEANS ACCT IN 2ND HALF OF RECD LDB D64 YES, ACCOUNT IS IN 2ND 64 WORDS STB OFFST NO ACCOUNT IS IN 1ST 64 WORDS AND M7777 REMOVE SIGN BIT STA USACT USER ACCOUNT RECORD # * * * NOW READ IN USER ACCOUNT ENTRY * JSB READF READ IN USER ACCOUNT FILE DEF RTN12 DEF I.BUF DEF JERR DEF UBUF BUFFER FOR USER ACCOUNT DEF D128 WHILE RECORD IS READ DEF LEN DEF USACT RTN12 EQU * * * CHECK TO SEE IF MAIL IS WAITING IF SO THEN OPEN MESSAGE FILE * OTHERWISE REPORT NO MAIL IS WAITING * LDA ADBUF ADDR OF BUFFER CONTAINING ACCOUNT ADA D20 OFFSET TO CARTRIDGE WORD ADA OFFST ADD IN OFFSET LDB A,I SSB JMP DOWN1 LDA D2044 PRINT NO MESSAGES WAITING ERROR STA JERR JMP ERROR DOWN1 ADA DM4 MAIL IS WAITING, GET MESSAGE LDB A,I FILE NAME STB NAME STORE NAME IN THREE WORD ARRAY INA LDB A,I STB NAME+1 INA LDB A,I STB NAME+2 PUT 3RD CHAR. AWAY * * OPEN MESSAGE FILE * JSB OPEN OPEN USER MESSAGE FILE DEF RTN13 DEF O.BUF MESSAGE FILE DCB DEF JERR DEF NAME DEF IOPTN DEF SECU DEF LUNO. RTN13 EQU * * LDA JERR CPA DM6 JMP RMOV SSA JMP ERR2 * * OPEN OR CREATE LIST FILE * JSB OPENF OPEN LIST FILE DEF RTN43 DEF UDCB LIST FILE DCB DEF JERR ERROR RETURN WORD DEF INAM NAMR OF LIST FILE OR DEVICE DEF ZERO EXCLUSIVE OPEN DEF N.OPL DEF N.OPL+1 RTN43 EQU * * LDA JERR CHECK FOR OPEN ERROR SSA,RSS JMP LAB15 CPA DM6 RSS IF NOT FOUND, CREATE IT JMP ERROR ELSE REAL ERROR LDA N.OPL+3 GET LIST FILE SIZE SZA,RSS SPECIFIED? LDA DM1 USE -1 STA N.OPL+3 LDA N.OPL+2 GET LIST FILE TYPE SZA,RSS SPECIFIED? LDA D4 USE TYPE 4 STA N.OPL+2 JSB CREAT CREAT USER'S LIST FILE DEF RTN32 DEF UDCB USER'S FILE DCB DEF JERR DEF INAM FILE NAME DEF N.OPL+3 DEF N.OPL+2 TYPE DEF N.OPL SECURITY CODE DEF N.OPL+1 CRN RTN32 EQU * * LDA JERR SSA JMP ERROR ANY OTHER TYPE OF ERROR * * TRANSFER MESSAGE FILE TO USER'S FILE * LAB15 JSB LOCF GET LU # OF LIST DEVICE DEF RTN19 DEF UDCB LIST FILE DCB DEF JERR ERROR RETURN WORD DEF TEMP DUMMY DEF TEMP DUMMY DEF TEMP DUMMY DEF TEMP DUMMY DEF LU LU # RETURNED HERE DEF TYPE FILE TYPE RTN19 EQU * * LDA TYPE GET FILE TYPE SZA TYPE 0? JMP LAB18 NO, SO SET LP FLAG TO 0 * JSB XLUEX EXTENDED LU EXEC CALL DEF *+4 DEF D13 DEVICE STATUS REQUEST DEF LU LU # - CONTROL WORD DEF IEQT5 STATUS RETURN WORD * LDA IEQT5 GET STATUS WORD AND M3740 CHECK FOR LINE PRINTER CMA ADA M5000 LAB18 CLB SET LINE PRINTER FLAG TO 0 SSA IF POSITIVE, NOT LINE PRINTER INB LINE PRINTER, PAD BLANK ON WRITE STB LU SAVE LINE PRINTER FLAG * LAB19 JSB READF DEF RTN20 DEF O.BUF MESSAGE FILE DCB DEF KERR ERROR RETURN WORD DEF UBUF BUFFER DEF D128 DEF LEN NUMBER OF WORDS READ RTN20 EQU * * LDA LEN NUMBER OF WORDS READ CPA DM1 END OF FILE? JMP LAB16 YES, CLOSE MESSAGE FILE * LDA KERR SSA ERROR OR END OF FILE? JMP LAB16 YES, CLOSE MESSAGE FILE * LDA LU GET LINE PRINTER FLAG STA B ADA LEN BUMP LENGTH BY 1 IF LINE PRINTER STA LEN SAVE WORDS TO BE WRITTEN CMB,INB ADB ADBUF SET WRITE BUFFER TO IBUF-1 IF LP STB TEMP * JSB WRITF NO WRITE FROM MESSAGE FILE DEF RTN21 DEF UDCB USER MESSAGE FILE DEF KERR DEF TEMP,I BUFFER TO BE WRITTEN (UBUF-1 IF LP) DEF LEN NUMBER OF WORDS TO BE WRITTEN RTN21 EQU * * LDA KERR CHECK FOR WRITE ERROR SZA,RSS JMP LAB19 READ NEXT RECORD * LAB16 JSB CLOSE CLOSE MESSAGE FILE DEF RTN75 DEF O.BUF DEF JERR RTN75 EQU * * LDA KERR CPA DM12 END OF FILE? JMP CLERR YES SZA CHECK FOR READ ERROR STA RDERR READ ERROR CLERR LDA JERR SZA JMP ERR2 * STA ITRUN INITIALIZE TRUNCATION WORD LDA IPURG,I GET PURGE REQUEST CPA D1 IF 1, THEN RSS PURGE THE MESSAGE FILE JMP LAB66 DON'T PURGE MESSAGE FILE * LDA OVRD. GET SESSION OVERRIDE FLAG STA TEMP SAVE IT'S CURRENT VALUE IOR M2000 SET TO ALLOW WRITE ON SYS DISC STA OVRD. JSB PURGE PURGE USER'S MESSAGE FILE DEF RTN65 DEF O.BUF MESSAGE FILE DCB DEF JERR ERROR RETURN WORD DEF NAME NAME OF MESSAGE FILE DEF SECU RTN65 EQU * LDA TEMP RESET OVERRIDE FLAG STA OVRD. JMP RMOV2 * * REMOVE MAIL WAITING BIT * RMOV LDA IPURG,I GET PURGE REQUEST CPA D1 IF 1, THEN REMOVE MSG WAITING BIT RSS JMP ERROR NOT 1, SO JUST REPORT MSG FILE NOT FOUND ISZ CLEAN RMOV2 JSB READF READ IN USER ACCOUNT RECORD DEF RTN34 DEF I.BUF ACCOUNT FILE DCB DEF JERR ERROR RETURN WORD DEF IBUF DEF D128 DEF LEN NUMBER OF WORDS READ DEF USACT USER ACCT FILE RECORD NUMBER RTN34 EQU * * LDB DFIBF 1ST WORD OF ACCOUNT ENTRY ADB OFFST OFFSET TO USER'S ACCT (0 OR 64) ADB D20 OFFSET TO MAIL WAITING WORD CLA CLEAR MESSAGE WAITING BIT STA B,I * JSB POSNT POSITION TO USER'S ACCOUNT RECORD DEF RTN39 DEF I.BUF ACCOUNT FILE DCB DEF JERR ERROR RETURN WORD DEF USACT RECORD NUMBER OF USER'S ACCOUNT DEF D1 FLAG TO POSNT RTN39 EQU * * JSB WRITF WRITE RECORD BACK IN ACCOUNT FILE DEF RTN41 DEF I.BUF DEF JERR DEF IBUF DEF D128 RTN41 EQU * * LAB66 JSB RNRQ DEF RTN42 DEF D4 DEF RESNO DEF ISTAT RTN42 EQU * LDA CLEAN SZA JMP OPERR * * CHECK TO SEE IF TRUNCATION IS NEEDED * LDA N.OPL+3 CHECK TO SEE IF SIZE WAS SPECIFIED CPA DM1 IF -1, CLOSE WITH TRUNCATE RSS JMP LAB88 * * CALCULATE THE NUMBER OF BLOCKS TO TRUNCATE * JSB LOCF FIND POSITION OF EOF DEF RTN22 DEF UDCB DEF JERR DEF IREC RECORD NUMBER DEF IRB NEXT BLOCK DEF IOFF OFFSET WITHIN BLOCK DEF JSEC SECTOR RTN22 EQU * * LDA JSEC GET NUMBER OF SECTORS CLB DIV D2 DIVIDE BY 2 (2 SECTORS/BLOCK) LDB IRB NUMBER OF BLOCKS CMB,INB ADA B SUBTRACT BLOCKS ADA DM1 SUBTRACT 1 STA ITRUN NUMBER OF BLOCKS TO TRUNCATE * CLA ERROR RETURN WORD JMP ERR2 OPERR LDA DM6 RSS ERROR LDA JERR ERR2 STA IERR,I SZA,RSS JMP LAB88 * JSB RNRQ CLEAR ACCT FILE RN LOCK DEF RTN45 DEF D4 CLEAR RN REQUEST CODE DEF RESNO ACCT FILE RESOURCE NUMBER DEF ISTAT STATUS RETURN WORD RTN45 EQU * * LAB88 JSB CLOSE CLOSE USER'S FILE DEF RTN23 DEF UDCB DEF JERR DEF ITRUN RTN23 EQU * * JSB CLOSE CLOSE MESSAGE FILE DEF RTN24 DEF O.BUF DEF JERR RTN24 EQU * * JSB CLOSE CLOSE ACCOUNT FILE DEF RTN25 DEF I.BUF RTN25 EQU * LDA RDERR SZA STA IERR,I * * JMP ME.SB,I RETURN XEQT EQU 1717B ACCT ASC 3,+@CCT! ADACT BSS 1 ADBUF DEF UBUF ADIBF DEF IBUFR ADINM DEF INAM ADSCB BSS 1 CLEAN BSS 1 CTR BSS 1 DM12 DEC -12 DM6 DEC -6 DM4 DEC -4 DM1 DEC -1 ZERO DEC 0 D1 DEC 1 D2 DEC 2 D3 DEC 3 D4 DEC 4 D8 DEC 8 D13 DEC 13 D14 DEC 14 D20 DEC 20 D24 DEC 24 D25 DEC 25 D45 DEC 45 D56 DEC 56 D64 DEC 64 D128 DEC 128 D2044 DEC 2044 NO MESSAGES WAITING ERROR (SEVERITY SET) DIRNO BSS 1 DFIBF DEF IBUF DNUM BSS 1 IBUF BSS 128 IEQT5 BSS 1 INAM BSS 3 IOFF BSS 1 IRB BSS 1 IREC BSS 1 ISTAT BSS 1 IOPTN DEC 1 ITRUN BSS 1 JERR BSS 1 JSEC BSS 1 KERR BSS 1 LEN BSS 1 LU BSS 2 LUNO. BSS 1 M2000 OCT 20000 M3740 OCT 37400 M5000 OCT 5000 M7777 OCT 77777 NAME BSS 3 NOPL BSS 2 OFFST BSS 1 RDERR BSS 1 RESNO BSS 1 SECU DEC -31178 TEMP BSS 1 TYPE BSS 1 * * UBUF0 MUST DIRECTLY PRECEDE UBUF * UBUF0 ASC 1, UBUF BSS 128 UDCB BSS 144 USACT BSS 1 USRID BSS 1 END